fix(eslint): rules included deprecated plugin

This commit is contained in:
Paul Makles 2022-06-12 19:38:29 +01:00
parent 56770d40df
commit c1324108e3
24 changed files with 122 additions and 61 deletions

View file

@ -38,24 +38,6 @@
{ {
"varsIgnorePattern": "^_" "varsIgnorePattern": "^_"
} }
],
"require-jsdoc": [
"error",
{
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true,
"ArrowFunctionExpression": false,
"FunctionExpression": false
},
"ignore": {
"MethodDefinition": [
"toJSON",
"hydrate"
]
}
}
] ]
} }
}, },
@ -121,6 +103,7 @@
"detect-browser": "^5.2.0", "detect-browser": "^5.2.0",
"eslint": "^7.28.0", "eslint": "^7.28.0",
"eslint-config-preact": "^1.1.4", "eslint-config-preact": "^1.1.4",
"eslint-plugin-jsdoc": "^39.3.2",
"eventemitter3": "^4.0.7", "eventemitter3": "^4.0.7",
"json-stringify-deterministic": "^1.0.2", "json-stringify-deterministic": "^1.0.2",
"localforage": "^1.9.0", "localforage": "^1.9.0",

View file

@ -1850,7 +1850,7 @@ export const emojiDictionary = {
scotland: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", scotland: "🏴󠁧󠁢󠁳󠁣󠁴󠁿",
wales: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", wales: "🏴󠁧󠁢󠁷󠁬󠁳󠁿",
...{ ...{
"1984": "custom:1984.gif", 1984: "custom:1984.gif",
KekW: "custom:KekW.png", KekW: "custom:KekW.png",
amogus: "custom:amogus.gif", amogus: "custom:amogus.gif",
awaa: "custom:awaa.png", awaa: "custom:awaa.png",

View file

@ -137,7 +137,7 @@ export default function MemberList({
server, see issue{" "} server, see issue{" "}
<a <a
href="https://github.com/revoltchat/delta/issues/128" href="https://github.com/revoltchat/delta/issues/128"
target="_blank"> target="_blank" rel="noreferrer">
#128 #128
</a>{" "} </a>{" "}
for when this will be resolved. for when this will be resolved.

View file

@ -182,7 +182,7 @@ export const GroupMemberSidebar = observer(
); );
// ! FIXME: this is temporary code until we get lazy guilds like subscriptions // ! FIXME: this is temporary code until we get lazy guilds like subscriptions
const FETCHED: Set<String> = new Set(); const FETCHED: Set<string> = new Set();
export function resetMemberSidebarFetched() { export function resetMemberSidebarFetched() {
FETCHED.clear(); FETCHED.clear();

View file

@ -68,13 +68,13 @@ export function PermissionSelect({
} }
return "Neutral"; return "Neutral";
} else { }
if (Long.fromNumber(value).and(permission).eq(permission)) { if (Long.fromNumber(value).and(permission).eq(permission)) {
return "Allow"; return "Allow";
} }
return "Neutral"; return "Neutral";
}
}, [value]); }, [value]);
function onSwitch(state: State) { function onSwitch(state: State) {

View file

@ -336,9 +336,9 @@ export const generateVariables = (theme: Theme) => {
if (colour) { if (colour) {
const [r, g, b] = colour; const [r, g, b] = colour;
return `--${key}: ${theme[key]}; --${key}-rgb: ${r}, ${g}, ${b};`; return `--${key}: ${theme[key]}; --${key}-rgb: ${r}, ${g}, ${b};`;
} else { }
return `--${key}: ${theme[key]};`; return `--${key}: ${theme[key]};`;
}
}); });
}; };

View file

@ -149,9 +149,9 @@ export default function MFAFlow({ onClose, ...props }: ModalProps<"mfa_flow">) {
if (methods!.length === 1) { if (methods!.length === 1) {
props.callback(); props.callback();
return true; return true;
} else { }
setSelected(undefined); setSelected(undefined);
}
}, },
}, },
] ]

View file

@ -72,7 +72,7 @@ export async function uploadFile(
return res.data.id; return res.data.id;
} }
var input: HTMLInputElement; let input: HTMLInputElement;
export function grabFiles( export function grabFiles(
maxFileSize: number, maxFileSize: number,
cb: (files: File[]) => void, cb: (files: File[]) => void,

View file

@ -628,7 +628,7 @@ export default function ContextMenus() {
} }
for (let i = 0; i < actions.length; i++) { for (let i = 0; i < actions.length; i++) {
let action = actions[i]; const action = actions[i];
if (action) { if (action) {
generateAction({ generateAction({
action, action,

View file

@ -11,7 +11,7 @@ export function urlBase64ToUint8Array(base64String: string) {
export function mapToRecord<K extends symbol | string | number, V>( export function mapToRecord<K extends symbol | string | number, V>(
map: Map<K, V>, map: Map<K, V>,
) { ) {
let record = {} as Record<K, V>; const record = {} as Record<K, V>;
map.forEach((v, k) => (record[k] = v)); map.forEach((v, k) => (record[k] = v));
return record; return record;
} }

View file

@ -293,7 +293,7 @@ export default class State {
} }
} }
var state: State; let state: State;
export async function hydrateState() { export async function hydrateState() {
state = new State(); state = new State();

View file

@ -67,7 +67,7 @@ export default class Auth implements Store, Persistent<Data> {
typeof data.sessions === "object" && typeof data.sessions === "object" &&
data.sessions !== null data.sessions !== null
) { ) {
let v = data.sessions; const v = data.sessions;
Object.keys(data.sessions).forEach((id) => Object.keys(data.sessions).forEach((id) =>
this.sessions.set(id, v[id]), this.sessions.set(id, v[id]),
); );

View file

@ -203,7 +203,7 @@ export default class NotificationOptions
* @returns Whether this object is muted * @returns Whether this object is muted
*/ */
isMuted(target?: Channel | Server) { isMuted(target?: Channel | Server) {
var value: NotificationState | undefined; let value: NotificationState | undefined;
if (target instanceof Channel) { if (target instanceof Channel) {
value = this.computeForChannel(target); value = this.computeForChannel(target);
} else if (target instanceof Server) { } else if (target instanceof Server) {

View file

@ -124,7 +124,7 @@ export default class Plugins implements Store, Persistent<Data> {
* @param id Plugin Id * @param id Plugin Id
*/ */
@computed get(namespace: string, id: string) { @computed get(namespace: string, id: string) {
return this.plugins.get(namespace + "/" + id); return this.plugins.get(`${namespace }/${ id}`);
} }
/** /**
@ -133,7 +133,7 @@ export default class Plugins implements Store, Persistent<Data> {
* @returns Plugin Instance * @returns Plugin Instance
*/ */
private getInstance(plugin: Pick<Plugin, "namespace" | "id">) { private getInstance(plugin: Pick<Plugin, "namespace" | "id">) {
return this.instances.get(plugin.namespace + "/" + plugin.id); return this.instances.get(`${plugin.namespace }/${ plugin.id}`);
} }
/** /**
@ -154,12 +154,12 @@ export default class Plugins implements Store, Persistent<Data> {
if (!this.state.experiments.isEnabled("plugins")) if (!this.state.experiments.isEnabled("plugins"))
return console.error("Enable plugins in experiments!"); return console.error("Enable plugins in experiments!");
let loaded = this.getInstance(plugin); const loaded = this.getInstance(plugin);
if (loaded) { if (loaded) {
this.unload(plugin.namespace, plugin.id); this.unload(plugin.namespace, plugin.id);
} }
this.plugins.set(plugin.namespace + "/" + plugin.id, plugin); this.plugins.set(`${plugin.namespace }/${ plugin.id}`, plugin);
if (typeof plugin.enabled === "undefined" || plugin) { if (typeof plugin.enabled === "undefined" || plugin) {
this.load(plugin.namespace, plugin.id); this.load(plugin.namespace, plugin.id);
@ -173,7 +173,7 @@ export default class Plugins implements Store, Persistent<Data> {
*/ */
remove(namespace: string, id: string) { remove(namespace: string, id: string) {
this.unload(namespace, id); this.unload(namespace, id);
this.plugins.delete(namespace + "/" + id); this.plugins.delete(`${namespace }/${ id}`);
} }
/** /**
@ -182,13 +182,13 @@ export default class Plugins implements Store, Persistent<Data> {
* @param id Plugin Id * @param id Plugin Id
*/ */
load(namespace: string, id: string) { load(namespace: string, id: string) {
let plugin = this.get(namespace, id); const plugin = this.get(namespace, id);
if (!plugin) throw "Unknown plugin!"; if (!plugin) throw "Unknown plugin!";
try { try {
let ns = plugin.namespace + "/" + plugin.id; const ns = `${plugin.namespace }/${ plugin.id}`;
let instance: Instance = eval(plugin.entrypoint)(); const instance: Instance = eval(plugin.entrypoint)();
this.instances.set(ns, { this.instances.set(ns, {
...instance, ...instance,
format: plugin.format, format: plugin.format,
@ -214,11 +214,11 @@ export default class Plugins implements Store, Persistent<Data> {
* @param id Plugin Id * @param id Plugin Id
*/ */
unload(namespace: string, id: string) { unload(namespace: string, id: string) {
let plugin = this.get(namespace, id); const plugin = this.get(namespace, id);
if (!plugin) throw "Unknown plugin!"; if (!plugin) throw "Unknown plugin!";
let ns = plugin.namespace + "/" + plugin.id; const ns = `${plugin.namespace }/${ plugin.id}`;
let loaded = this.getInstance(plugin); const loaded = this.getInstance(plugin);
if (loaded) { if (loaded) {
loaded.onUnload?.(); loaded.onUnload?.();
this.plugins.set(ns, { this.plugins.set(ns, {

View file

@ -159,7 +159,7 @@ export default class Settings
@computed private pullKeys(keys: (keyof ISettings)[]) { @computed private pullKeys(keys: (keyof ISettings)[]) {
const obj: Partial<ISettings> = {}; const obj: Partial<ISettings> = {};
keys.forEach((key) => { keys.forEach((key) => {
let value = this.get(key); const value = this.get(key);
if (!value) return; if (!value) return;
(obj as any)[key] = value; (obj as any)[key] = value;
}); });

View file

@ -82,11 +82,11 @@ export default class SAudio {
getAudio(path: string) { getAudio(path: string) {
if (this.cache.has(path)) { if (this.cache.has(path)) {
return this.cache.get(path)!; return this.cache.get(path)!;
} else { }
const el = new Audio(path); const el = new Audio(path);
this.cache.set(path, el); this.cache.set(path, el);
return el; return el;
}
} }
loadCache() { loadCache() {
@ -100,7 +100,7 @@ export default class SAudio {
try { try {
audio.play(); audio.play();
} catch (err) { } catch (err) {
console.error("Hit error while playing", sound + ":", err); console.error("Hit error while playing", `${sound }:`, err);
} }
} }
} }

View file

@ -110,7 +110,7 @@ export default class STheme {
for (const key of Object.keys(variables)) { for (const key of Object.keys(variables)) {
const value = variables[key]; const value = variables[key];
if (typeof value === "string") { if (typeof value === "string") {
variables[key + "-contrast"] = getContrastingColour(value); variables[`${key }-contrast`] = getContrastingColour(value);
} }
} }

View file

@ -120,11 +120,11 @@ export default function Discover() {
useEffect(() => { useEffect(() => {
function onMessage(message: MessageEvent) { function onMessage(message: MessageEvent) {
let url = new URL(message.origin); const url = new URL(message.origin);
if (!TRUSTED_HOSTS.includes(url.host)) return; if (!TRUSTED_HOSTS.includes(url.host)) return;
try { try {
let data = JSON.parse(message.data); const data = JSON.parse(message.data);
if (data.source === "discover") { if (data.source === "discover") {
switch (data.type) { switch (data.type) {
case "init": { case "init": {

View file

@ -77,17 +77,17 @@ export default observer(() => {
<div className={styles.socials}> <div className={styles.socials}>
<a <a
href="https://github.com/revoltchat" href="https://github.com/revoltchat"
target="_blank"> target="_blank" rel="noreferrer">
<Github size={24} /> <Github size={24} />
</a> </a>
<a <a
href="https://twitter.com/revoltchat" href="https://twitter.com/revoltchat"
target="_blank"> target="_blank" rel="noreferrer">
<Twitter size={24} /> <Twitter size={24} />
</a> </a>
<a <a
href="https://mastodon.social/@revoltchat" href="https://mastodon.social/@revoltchat"
target="_blank"> target="_blank" rel="noreferrer">
<Mastodon size={24} /> <Mastodon size={24} />
</a> </a>
</div> </div>
@ -116,7 +116,7 @@ export default observer(() => {
<a <a
className={styles.attribution} className={styles.attribution}
href="https://unsplash.com/@fakurian" href="https://unsplash.com/@fakurian"
target="_blank"> target="_blank" rel="noreferrer">
<Text id="general.image_by" /> &lrm;@fakurian &rlm;· <Text id="general.image_by" /> &lrm;@fakurian &rlm;·
unsplash.com unsplash.com
</a> </a>

View file

@ -260,7 +260,7 @@ export const Form = observer(({ page, callback }: Props) => {
<a <a
href="https://developers.revolt.chat/faq/instances#what-is-a-third-party-instance" href="https://developers.revolt.chat/faq/instances#what-is-a-third-party-instance"
style={{ color: "var(--accent)" }} style={{ color: "var(--accent)" }}
target="_blank"> target="_blank" rel="noreferrer">
<Text id="general.learn_more" /> <Text id="general.learn_more" />
</a> </a>
</span> </span>

View file

@ -52,7 +52,7 @@ export function FormLogin() {
if (session.result === "MFA") { if (session.result === "MFA") {
const { allowed_methods } = session; const { allowed_methods } = session;
let mfa_response: API.MFAResponse | undefined = const mfa_response: API.MFAResponse | undefined =
await new Promise((callback) => await new Promise((callback) =>
modalController.push({ modalController.push({
type: "mfa_flow", type: "mfa_flow",

View file

@ -101,7 +101,7 @@ export default observer(({ channel }: Props) => {
filter={[ filter={[
...(channel.channel_type === "Group" ...(channel.channel_type === "Group"
? [] ? []
: ["ViewChannel" as "ViewChannel"]), : ["ViewChannel" as const]),
"ReadMessageHistory", "ReadMessageHistory",
"SendMessage", "SendMessage",
"ManageMessages", "ManageMessages",

View file

@ -11,7 +11,7 @@ cleanupOutdatedCaches();
// Generate list using scripts/locale.js // Generate list using scripts/locale.js
// prettier-ignore // prettier-ignore
var locale_keys = ["af","am","ar-dz","ar-kw","ar-ly","ar-ma","ar-sa","ar-tn","ar","az","be","bg","bi","bm","bn","bo","br","bs","ca","cs","cv","cy","da","de-at","de-ch","de","dv","el","en-au","en-ca","en-gb","en-ie","en-il","en-in","en-nz","en-sg","en-tt","en","eo","es-do","es-pr","es-us","es","et","eu","fa","fi","fo","fr-ca","fr-ch","fr","fy","ga","gd","gl","gom-latn","gu","he","hi","hr","ht","hu","hy-am","id","is","it-ch","it","ja","jv","ka","kk","km","kn","ko","ku","ky","lb","lo","lt","lv","me","mi","mk","ml","mn","mr","ms-my","ms","mt","my","nb","ne","nl-be","nl","nn","oc-lnc","pa-in","pl","pt-br","pt","ro","ru","rw","sd","se","si","sk","sl","sq","sr-cyrl","sr","ss","sv-fi","sv","sw","ta","te","tet","tg","th","tk","tl-ph","tlh","tr","tzl","tzm-latn","tzm","ug-cn","uk","ur","uz-latn","uz","vi","x-pseudo","yo","zh-cn","zh-hk","zh-tw","zh","ang","ar","az","be","bg","bn","bottom","br","ca","ca@valencia","ckb","contributors","cs","cy","da","de","de_CH","el","en","en_US","enchantment","enm","eo","es","et","eu","fa","fi","fil","fr","frm","ga","got","he","hi","hr","hu","id","it","ja","kmr","ko","la","lb","leet","li","lt","lv","mk","ml","ms","mt","nb_NO","nl","owo","peo","piglatin","pl","pr","pt_BR","pt_PT","ro","ro_MD","ru","si","sk","sl","sq","sr","sv","ta","te","th","tlh-qaak","tokipona","tr","uk","vec","vi","zh_Hans","zh_Hant"]; const locale_keys = ["af","am","ar-dz","ar-kw","ar-ly","ar-ma","ar-sa","ar-tn","ar","az","be","bg","bi","bm","bn","bo","br","bs","ca","cs","cv","cy","da","de-at","de-ch","de","dv","el","en-au","en-ca","en-gb","en-ie","en-il","en-in","en-nz","en-sg","en-tt","en","eo","es-do","es-pr","es-us","es","et","eu","fa","fi","fo","fr-ca","fr-ch","fr","fy","ga","gd","gl","gom-latn","gu","he","hi","hr","ht","hu","hy-am","id","is","it-ch","it","ja","jv","ka","kk","km","kn","ko","ku","ky","lb","lo","lt","lv","me","mi","mk","ml","mn","mr","ms-my","ms","mt","my","nb","ne","nl-be","nl","nn","oc-lnc","pa-in","pl","pt-br","pt","ro","ru","rw","sd","se","si","sk","sl","sq","sr-cyrl","sr","ss","sv-fi","sv","sw","ta","te","tet","tg","th","tk","tl-ph","tlh","tr","tzl","tzm-latn","tzm","ug-cn","uk","ur","uz-latn","uz","vi","x-pseudo","yo","zh-cn","zh-hk","zh-tw","zh","ang","ar","az","be","bg","bn","bottom","br","ca","ca@valencia","ckb","contributors","cs","cy","da","de","de_CH","el","en","en_US","enchantment","enm","eo","es","et","eu","fa","fi","fil","fr","frm","ga","got","he","hi","hr","hu","id","it","ja","kmr","ko","la","lb","leet","li","lt","lv","mk","ml","ms","mt","nb_NO","nl","owo","peo","piglatin","pl","pr","pt_BR","pt_PT","ro","ro_MD","ru","si","sk","sl","sq","sr","sv","ta","te","th","tlh-qaak","tokipona","tr","uk","vec","vi","zh_Hans","zh_Hant"];
precacheAndRoute( precacheAndRoute(
self.__WB_MANIFEST.filter((entry) => { self.__WB_MANIFEST.filter((entry) => {
@ -29,7 +29,7 @@ precacheAndRoute(
} }
for (const key of locale_keys) { for (const key of locale_keys) {
if (fn.startsWith(key + ".")) { if (fn.startsWith(`${key }.`)) {
return false; return false;
} }
} }

View file

@ -1797,6 +1797,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@es-joy/jsdoccomment@npm:~0.31.0":
version: 0.31.0
resolution: "@es-joy/jsdoccomment@npm:0.31.0"
dependencies:
comment-parser: 1.3.1
esquery: ^1.4.0
jsdoc-type-pratt-parser: ~3.1.0
checksum: 1691ff501559f45593e5f080d2c08dea4fadba5f48e526b9ff2943c050fbb40408f5e83968542e5b6bf47219c7573796d00bfe80dacfd1ba8187904cc475cefb
languageName: node
linkType: hard
"@eslint/eslintrc@npm:^0.4.3": "@eslint/eslintrc@npm:^0.4.3":
version: 0.4.3 version: 0.4.3
resolution: "@eslint/eslintrc@npm:0.4.3" resolution: "@eslint/eslintrc@npm:0.4.3"
@ -3551,6 +3562,7 @@ __metadata:
detect-browser: ^5.2.0 detect-browser: ^5.2.0
eslint: ^7.28.0 eslint: ^7.28.0
eslint-config-preact: ^1.1.4 eslint-config-preact: ^1.1.4
eslint-plugin-jsdoc: ^39.3.2
eventemitter3: ^4.0.7 eventemitter3: ^4.0.7
fs-extra: ^10.0.0 fs-extra: ^10.0.0
json-stringify-deterministic: ^1.0.2 json-stringify-deterministic: ^1.0.2
@ -3682,6 +3694,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"comment-parser@npm:1.3.1":
version: 1.3.1
resolution: "comment-parser@npm:1.3.1"
checksum: 421e6a113a3afd548500e7174ab46a2049dccf92e82bbaa3b209031b1bdf97552aabfa1ae2a120c0b62df17e1ba70e0d8b05d68504fee78e1ef974c59bcfe718
languageName: node
linkType: hard
"common-tags@npm:^1.8.0": "common-tags@npm:^1.8.0":
version: 1.8.0 version: 1.8.0
resolution: "common-tags@npm:1.8.0" resolution: "common-tags@npm:1.8.0"
@ -3815,7 +3834,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"debug@npm:4": "debug@npm:4, debug@npm:^4.3.4":
version: 4.3.4 version: 4.3.4
resolution: "debug@npm:4.3.4" resolution: "debug@npm:4.3.4"
dependencies: dependencies:
@ -4328,6 +4347,23 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint-plugin-jsdoc@npm:^39.3.2":
version: 39.3.2
resolution: "eslint-plugin-jsdoc@npm:39.3.2"
dependencies:
"@es-joy/jsdoccomment": ~0.31.0
comment-parser: 1.3.1
debug: ^4.3.4
escape-string-regexp: ^4.0.0
esquery: ^1.4.0
semver: ^7.3.7
spdx-expression-parse: ^3.0.1
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
checksum: 2fd3adb23f97c5cc8c03bd8c7338c12074e4e6d49eaee042db65317a69abd389a4c4992fbc9075fa3deabd1d89393b639683f612deac06d89950767571c03457
languageName: node
linkType: hard
"eslint-plugin-react-hooks@npm:^4.2.0": "eslint-plugin-react-hooks@npm:^4.2.0":
version: 4.2.0 version: 4.2.0
resolution: "eslint-plugin-react-hooks@npm:4.2.0" resolution: "eslint-plugin-react-hooks@npm:4.2.0"
@ -5421,6 +5457,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"jsdoc-type-pratt-parser@npm:~3.1.0":
version: 3.1.0
resolution: "jsdoc-type-pratt-parser@npm:3.1.0"
checksum: 2f437b57621f1e481918165f6cf0e48256628a9e510d8b3f88a2ab667bf2128bf8b94c628b57c43e78f555ca61983e9c282814703840dc091d2623992214a061
languageName: node
linkType: hard
"jsesc@npm:^2.5.1": "jsesc@npm:^2.5.1":
version: 2.5.2 version: 2.5.2
resolution: "jsesc@npm:2.5.2" resolution: "jsesc@npm:2.5.2"
@ -7060,6 +7103,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"semver@npm:^7.3.7":
version: 7.3.7
resolution: "semver@npm:7.3.7"
dependencies:
lru-cache: ^6.0.0
bin:
semver: bin/semver.js
checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232
languageName: node
linkType: hard
"serialize-javascript@npm:^4.0.0": "serialize-javascript@npm:^4.0.0":
version: 4.0.0 version: 4.0.0
resolution: "serialize-javascript@npm:4.0.0" resolution: "serialize-javascript@npm:4.0.0"
@ -7267,6 +7321,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"spdx-exceptions@npm:^2.1.0":
version: 2.3.0
resolution: "spdx-exceptions@npm:2.3.0"
checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0
languageName: node
linkType: hard
"spdx-expression-parse@npm:^3.0.1":
version: 3.0.1
resolution: "spdx-expression-parse@npm:3.0.1"
dependencies:
spdx-exceptions: ^2.1.0
spdx-license-ids: ^3.0.0
checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde
languageName: node
linkType: hard
"spdx-license-ids@npm:^3.0.0":
version: 3.0.11
resolution: "spdx-license-ids@npm:3.0.11"
checksum: 1da1acb090257773e60b022094050e810ae9fec874dc1461f65dc0400cd42dd830ab2df6e64fb49c2db3dce386dd0362110780e1b154db7c0bb413488836aaeb
languageName: node
linkType: hard
"sprintf-js@npm:~1.0.2": "sprintf-js@npm:~1.0.2":
version: 1.0.3 version: 1.0.3
resolution: "sprintf-js@npm:1.0.3" resolution: "sprintf-js@npm:1.0.3"