diff --git a/.eslintrc.json b/.eslintrc.json index 75420eb..2e53c31 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,6 +1,6 @@ { "env": { - "es6": true, + "es2022": true, "node": true }, "parser": "@typescript-eslint/parser", @@ -17,7 +17,6 @@ "no-shadow": ["error", { "allow": ["err"] }], "handle-callback-err": "error", "prefer-arrow-callback": "error", - "curly": ["error", "multi-or-nest", "consistent"], "no-buffer-constructor": "error", "prefer-const": ["error", { "destructuring": "all" }], "eqeqeq": ["error", "always", { "null": "ignore" }], @@ -32,7 +31,6 @@ ], "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-misused-promises": "error", - "require-atomic-updates": 0, "no-prototype-builtins": 0 } } diff --git a/bin/genieacs-cwmp.ts b/bin/genieacs-cwmp.ts index af23a24..10a1fcd 100755 --- a/bin/genieacs-cwmp.ts +++ b/bin/genieacs-cwmp.ts @@ -43,7 +43,7 @@ function exitWorkerGracefully(): void { } function exitWorkerUngracefully(): void { - extensions.killAll().finally(() => { + void extensions.killAll().finally(() => { process.exit(1); }); } @@ -117,7 +117,7 @@ if (!cluster.worker) { }); process.on("SIGINT", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server .stop(false) .then(exitWorkerGracefully) @@ -126,7 +126,7 @@ if (!cluster.worker) { }); process.on("SIGTERM", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server .stop(false) .then(exitWorkerGracefully) diff --git a/bin/genieacs-ext.ts b/bin/genieacs-ext.ts index 0a35b60..6f24696 100755 --- a/bin/genieacs-ext.ts +++ b/bin/genieacs-ext.ts @@ -41,12 +41,12 @@ function errorToFault(err: Error): Fault { fault.detail["stack"] = err.stack; // Trim the stack trace const stackTrimIndex = fault.detail["stack"].match( - /\s+at\s[^\s]+\s\(.*genieacs-ext:.+\)/ + /\s+at\s[^\s]+\s\(.*genieacs-ext:.+\)/, ); if (stackTrimIndex) { fault.detail["stack"] = fault.detail["stack"].slice( 0, - stackTrimIndex.index + stackTrimIndex.index, ); } } diff --git a/bin/genieacs-fs.ts b/bin/genieacs-fs.ts index efa1d95..3bb68f3 100755 --- a/bin/genieacs-fs.ts +++ b/bin/genieacs-fs.ts @@ -106,13 +106,13 @@ if (!cluster.worker) { }); process.on("SIGINT", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); process.on("SIGTERM", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); diff --git a/bin/genieacs-nbi.ts b/bin/genieacs-nbi.ts index 4732c0f..a6844e0 100755 --- a/bin/genieacs-nbi.ts +++ b/bin/genieacs-nbi.ts @@ -43,7 +43,7 @@ function exitWorkerGracefully(): void { } function exitWorkerUngracefully(): void { - extensions.killAll().finally(() => { + void extensions.killAll().finally(() => { process.exit(1); }); } @@ -113,13 +113,13 @@ if (!cluster.worker) { }); process.on("SIGINT", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); process.on("SIGTERM", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); diff --git a/bin/genieacs-ui.ts b/bin/genieacs-ui.ts index ec66bcf..a50f173 100755 --- a/bin/genieacs-ui.ts +++ b/bin/genieacs-ui.ts @@ -43,7 +43,7 @@ function exitWorkerGracefully(): void { } function exitWorkerUngracefully(): void { - extensions.killAll().finally(() => { + void extensions.killAll().finally(() => { process.exit(1); }); } @@ -113,13 +113,13 @@ if (!cluster.worker) { }); process.on("SIGINT", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); process.on("SIGTERM", () => { - initPromise.finally(() => { + void initPromise.finally(() => { server.stop().then(exitWorkerGracefully).catch(exitWorkerUngracefully); }); }); diff --git a/build/build.ts b/build/build.ts index 973e2e3..0fbe7fb 100644 --- a/build/build.ts +++ b/build/build.ts @@ -106,7 +106,7 @@ const assetsPlugin = { setup(build) { build.onLoad({ filter: /\/build\/assets.ts$/ }, () => { const lines = Object.entries(ASSETS).map( - ([k, v]) => `export const ${k} = ${JSON.stringify(v)};` + ([k, v]) => `export const ${k} = ${JSON.stringify(v)};`, ); return { contents: lines.join("\n") }; }); @@ -194,11 +194,11 @@ async function init(): Promise { fsAsync.mkdir(path.join(OUTPUT_DIR, "public")), fsAsync.writeFile( path.join(OUTPUT_DIR, "package.json"), - JSON.stringify(packageJson, null, 2) + JSON.stringify(packageJson, null, 2), ), fsAsync.writeFile( path.join(OUTPUT_DIR, "npm-shrinkwrap.json"), - JSON.stringify(npmShrinkwrap, null, 2) + JSON.stringify(npmShrinkwrap, null, 2), ), ]); } @@ -228,9 +228,9 @@ async function copyStatic(): Promise { files.map((f) => fsAsync.copyFile( path.join(INPUT_DIR, f), - path.join(OUTPUT_DIR, filenames[f] || f) - ) - ) + path.join(OUTPUT_DIR, filenames[f] || f), + ), + ), ); } @@ -252,7 +252,7 @@ async function generateCss(): Promise { if (v.entryPoint === "ui/css/app.css") { ASSETS.APP_CSS = path.relative( path.join(OUTPUT_DIR, "public"), - path.join(INPUT_DIR, k) + path.join(INPUT_DIR, k), ); break; } @@ -315,7 +315,7 @@ async function generateFrontendJs(): Promise { if (v.entryPoint === "ui/app.ts") { ASSETS.APP_JS = path.relative( path.join(OUTPUT_DIR, "public"), - path.join(INPUT_DIR, k) + path.join(INPUT_DIR, k), ); break; } @@ -344,12 +344,12 @@ async function generateIconsSprite(): Promise { symbols.push(generateSymbol(id, data)); } const data = `${symbols.join( - "" + "", )}`; ASSETS.ICONS_SVG = `icons-${assetHash(data)}.svg`; await fsAsync.writeFile( path.join(OUTPUT_DIR, "public", ASSETS.ICONS_SVG), - data + data, ); } @@ -357,10 +357,10 @@ init() .then(() => Promise.all([ Promise.all([generateIconsSprite(), copyStatic()]).then( - generateFrontendJs + generateFrontendJs, ), generateCss(), - ]).then(generateBackendJs) + ]).then(generateBackendJs), ) .catch((err) => { process.stderr.write(err.stack + "\n"); diff --git a/build/lint.ts b/build/lint.ts new file mode 100644 index 0000000..8a0b53e --- /dev/null +++ b/build/lint.ts @@ -0,0 +1,55 @@ +import { exec } from "child_process"; +import { promisify } from "util"; + +const execPromise = promisify(exec); + +async function runEslint(): Promise { + const CMD = + "eslint 'bin/*.ts' 'lib/**/*.ts' 'ui/**/*.ts' 'test/**/*.ts' 'build/**/*.ts'"; + const env = { + ...(process.stdout.isTTY && { FORCE_COLOR: "1" }), + ...process.env, + }; + try { + const { stdout, stderr } = await execPromise(CMD, { env }); + if (stderr) throw new Error(stderr); + return stdout; + } catch (err) { + if (err.killed || err.signal || err.stderr || err.code !== 1) throw err; + return err.stdout; + } +} + +async function runTsc(): Promise { + const CMD = "tsc --noEmit"; + const env = { + ...(process.stdout.isTTY && { FORCE_COLOR: "1" }), + ...process.env, + }; + const { stdout, stderr } = await execPromise(CMD, { env }); + if (stderr) throw new Error(stderr); + return stdout; +} + +async function runPrettier(): Promise { + const CMD = "prettier --prose-wrap always --write ."; + const env = { + ...(process.stdout.isTTY && { FORCE_COLOR: "1" }), + ...process.env, + }; + const { stdout, stderr } = await execPromise(CMD, { env }); + if (stderr) throw new Error(stderr); + return stdout; +} + +async function runAll(): Promise { + const prom1 = runPrettier(); + const prom2 = runEslint(); + const prom3 = runTsc(); + + console.log(await prom1); + console.log(await prom2); + console.log(await prom3); +} + +runAll().catch(console.error); diff --git a/docs/ext-sample.js b/docs/ext-sample.js index 43dedb1..a99dd56 100644 --- a/docs/ext-sample.js +++ b/docs/ext-sample.js @@ -16,7 +16,7 @@ function latlong(args, callback) { .get("http://api.open-notify.org/iss-now.json", (res) => { if (res.statusCode !== 200) return callback( - new Error(`Request failed (status code: ${res.statusCode})`) + new Error(`Request failed (status code: ${res.statusCode})`), ); let rawData = ""; diff --git a/lib/api-functions.ts b/lib/api-functions.ts index 98fe4be..a0d2edc 100644 --- a/lib/api-functions.ts +++ b/lib/api-functions.ts @@ -57,7 +57,7 @@ import { ResourceLockedError } from "./common/errors"; export async function connectionRequest( deviceId: string, - device?: Record + device?: Record, ): Promise { if (!device) { const res = await collections.devices.findOne({ _id: deviceId }); @@ -132,25 +132,25 @@ export async function connectionRequest( "cwmp.udpConnectionRequestPort", {}, now, - evalCallback + evalCallback, ); const CONNECTION_REQUEST_TIMEOUT = +getConfig( snapshot, "cwmp.connectionRequestTimeout", {}, now, - evalCallback + evalCallback, ); const CONNECTION_REQUEST_ALLOW_BASIC_AUTH = !!getConfig( snapshot, "cwmp.connectionRequestAllowBasicAuth", {}, now, - evalCallback + evalCallback, ); let authExp: Expression = getConfigExpression( snapshot, - "cwmp.connectionRequestAuth" + "cwmp.connectionRequestAuth", ); if (authExp === undefined) { @@ -176,10 +176,10 @@ export async function connectionRequest( authExp, UDP_CONNECTION_REQUEST_PORT, debug, - deviceId + deviceId, ).then( () => true, - () => false + () => false, ); } catch (err) { // Ignore invalid address @@ -192,7 +192,7 @@ export async function connectionRequest( CONNECTION_REQUEST_ALLOW_BASIC_AUTH, CONNECTION_REQUEST_TIMEOUT, debug, - deviceId + deviceId, ); if (await udpProm) return ""; @@ -203,12 +203,12 @@ export async function connectionRequest( export async function awaitSessionStart( deviceId: string, lastInform: number, - timeout: number + timeout: number, ): Promise { const now = Date.now(); const device = await collections.devices.findOne( { _id: deviceId }, - { projection: { _lastInform: 1 } } + { projection: { _lastInform: 1 } }, ); const li = (device["_lastInform"] as Date).getTime(); if (li > lastInform) return true; @@ -222,7 +222,7 @@ export async function awaitSessionStart( export async function awaitSessionEnd( deviceId: string, - timeout: number + timeout: number, ): Promise { const now = Date.now(); const token = await getToken(`cwmp_session_${deviceId}`); @@ -317,8 +317,8 @@ function sanitizeTask(task): void { !task.provisions.every((arr) => arr.every( (s) => - s == null || ["boolean", "number", "string"].includes(typeof s) - ) + s == null || ["boolean", "number", "string"].includes(typeof s), + ), ) ) throw new Error("Invalid 'provisions' property"); @@ -395,7 +395,7 @@ export async function deleteFault(id: string): Promise { export async function deleteResource( resource: string, - id: string + id: string, ): Promise { if (resource === "devices") { await deleteDevice(id); @@ -434,7 +434,7 @@ export async function deleteResource( export async function putResource( resource: string, id: string, - data: any + data: any, ): Promise { if (resource === "presets") { await putPreset(id, data); @@ -467,7 +467,7 @@ export async function putResource( export function authLocal( snapshot: string, username: string, - password: string + password: string, ): Promise { return new Promise((resolve, reject) => { const users = getUsers(snapshot); diff --git a/lib/auth.ts b/lib/auth.ts index 75e3adc..fcab49d 100644 --- a/lib/auth.ts +++ b/lib/auth.ts @@ -63,7 +63,7 @@ export function parseAuthorizationHeader(authHeader: string): { // Inspired by https://github.com/jshttp/basic-auth const USER_PASS_REGEX = /^([^:]*):(.*)$/; const creds = USER_PASS_REGEX.exec( - Buffer.from(authHeader.slice(method.length + 1), "base64").toString() + Buffer.from(authHeader.slice(method.length + 1), "base64").toString(), ); if (!creds) throw new Error("Unable to parse auth header"); @@ -77,7 +77,7 @@ export function parseAuthorizationHeader(authHeader: string): { } export function parseWwwAuthenticateHeader( - authHeader: string + authHeader: string, ): Record { authHeader = authHeader.trim(); const method = authHeader.split(" ", 1)[0]; @@ -100,7 +100,7 @@ export function digest( qop?: string | Buffer, body?: string | Buffer, cnonce?: string | Buffer, - nc?: string | Buffer + nc?: string | Buffer, ): string { const ha1 = createHash("md5"); ha1.update(username).update(":").update(realm).update(":").update(password); @@ -141,7 +141,7 @@ export function solveDigest( uri: string | Buffer, httpMethod: string | Buffer, body: string | Buffer, - authHeader: Record + authHeader: Record, ): string { const cnonce = randomBytes(8).toString("hex"); const nc = "00000001"; @@ -163,7 +163,7 @@ export function solveDigest( qop, body, cnonce, - nc + nc, ); let authString = `Digest username="${username}"`; diff --git a/lib/cache.ts b/lib/cache.ts index 161b0b6..a619030 100644 --- a/lib/cache.ts +++ b/lib/cache.ts @@ -35,16 +35,16 @@ export async function del(key: string): Promise { export async function set( key: string, value: string, - ttl: number = MAX_CACHE_TTL + ttl: number = MAX_CACHE_TTL, ): Promise { const timestamp = new Date(); const expire = new Date( - timestamp.getTime() + CLOCK_SKEW_TOLERANCE + ttl * 1000 + timestamp.getTime() + CLOCK_SKEW_TOLERANCE + ttl * 1000, ); await collections.cache.replaceOne( { _id: key }, { value, expire, timestamp }, - { upsert: true } + { upsert: true }, ); } diff --git a/lib/cluster.ts b/lib/cluster.ts index 5ffef72..5a74465 100644 --- a/lib/cluster.ts +++ b/lib/cluster.ts @@ -92,7 +92,7 @@ function restartWorker(worker, code, signal): void { export function start( workerCount: number, servicePort: number, - serviceAddress: string + serviceAddress: string, ): void { cluster.on("listening", (worker, address) => { if ( diff --git a/lib/common/authorizer.ts b/lib/common/authorizer.ts index afc6d7e..510c771 100644 --- a/lib/common/authorizer.ts +++ b/lib/common/authorizer.ts @@ -78,7 +78,7 @@ export default class Authorizer { public getValidator( resourceType: string, - resource: unknown + resource: unknown, ): (mutationType: string, mutation?: any, args?: any) => boolean { if (this.validatorCache.has(resource)) return this.validatorCache.get(resource); @@ -99,7 +99,7 @@ export default class Authorizer { const validator = ( mutationType: string, mutation: any, - any: any + any: any, ): boolean => { if (!validators.length) return false; @@ -134,7 +134,7 @@ export default class Authorizer { const res = evaluate( validators.length > 1 ? ["OR", validators] : validators[0], valueFunction, - Date.now() + Date.now(), ); return !Array.isArray(res) && !!res; }; diff --git a/lib/common/debounce.ts b/lib/common/debounce.ts index e842320..8103c99 100644 --- a/lib/common/debounce.ts +++ b/lib/common/debounce.ts @@ -1,6 +1,6 @@ export default function debounce( func: (args: T[]) => void, - timeout: number + timeout: number, ): (arg: T) => void { let timer: ReturnType; let args: T[] = []; diff --git a/lib/common/expression/normalize.ts b/lib/common/expression/normalize.ts index 70efeea..cb41c90 100644 --- a/lib/common/expression/normalize.ts +++ b/lib/common/expression/normalize.ts @@ -32,7 +32,7 @@ class Indeterminates { public static multiply( indeterminates1: Indeterminates, - indeterminates2: Indeterminates + indeterminates2: Indeterminates, ): Indeterminates { const res = new Indeterminates(); res.sortedKeys = indeterminates1.sortedKeys.slice(); @@ -108,7 +108,7 @@ class Polynomial { const ts = terms .slice() .sort((a: Term, b: Term) => - Indeterminates.compare(a.indeterminates, b.indeterminates) + Indeterminates.compare(a.indeterminates, b.indeterminates), ); for (let i = 1; i < ts.length; ++i) { @@ -117,12 +117,12 @@ class Polynomial { if (Indeterminates.compare(t1.indeterminates, t2.indeterminates) === 0) { const numerator = BI.add( BI.mul(t1.coefficientNumerator, t2.coefficientDenominator), - BI.mul(t2.coefficientNumerator, t1.coefficientDenominator) + BI.mul(t2.coefficientNumerator, t1.coefficientDenominator), ); const denominator = BI.mul( t1.coefficientDenominator, - t2.coefficientDenominator + t2.coefficientDenominator, ); const gcd = findGcd(numerator, denominator); @@ -163,7 +163,7 @@ class Polynomial { denominator = BI.exp(TWO, BI.BigInt(frac.length)); numerator = BI.add( BI.mul(numerator, denominator), - BI.BigInt("0b" + frac) + BI.BigInt("0b" + frac), ); } @@ -204,7 +204,7 @@ class Polynomial { public add(rhs: Polynomial): Polynomial { return new Polynomial( - Polynomial.simplifyTerms(this.terms.concat(rhs.terms)) + Polynomial.simplifyTerms(this.terms.concat(rhs.terms)), ); } @@ -219,18 +219,18 @@ class Polynomial { for (const t2 of rhs.terms) { const numerator = BI.mul( t1.coefficientNumerator, - t2.coefficientNumerator + t2.coefficientNumerator, ); const denominator = BI.mul( t1.coefficientDenominator, - t2.coefficientDenominator + t2.coefficientDenominator, ); const gcd = findGcd(numerator, denominator); terms.push({ indeterminates: Indeterminates.multiply( t1.indeterminates, - t2.indeterminates + t2.indeterminates, ), coefficientNumerator: BI.div(numerator, gcd), coefficientDenominator: BI.div(denominator, gcd), @@ -339,7 +339,7 @@ function normalizeCallback(exp: Expression): Expression { const e = (r[1] as Expression[]).slice(); e[i] = t; return [and(w, r[0]), e] as [Expression, Expression]; - }) + }), ); if (!Array.isArray(w) && w) break; } @@ -373,7 +373,7 @@ function normalizeCallback(exp: Expression): Expression { } return args.reduce( (previousValue, currentValue) => previousValue.add(currentValue), - ADDITIVE_IDENTITY + ADDITIVE_IDENTITY, ) as unknown as Expression; } else if (op === "*") { const args: Polynomial[] = []; @@ -384,7 +384,7 @@ function normalizeCallback(exp: Expression): Expression { } return args.reduce( (previousValue, currentValue) => previousValue.multiply(currentValue), - MULTIPLICATIVE_IDENTITY + MULTIPLICATIVE_IDENTITY, ) as unknown as Expression; } else if (op === "-") { const args: Polynomial[] = []; @@ -394,7 +394,7 @@ function normalizeCallback(exp: Expression): Expression { args.push(p); } return args.reduce((previousValue, currentValue) => - previousValue.subtract(currentValue) + previousValue.subtract(currentValue), ) as unknown as Expression; } else if (op === "/") { const args: Polynomial[] = []; @@ -404,7 +404,7 @@ function normalizeCallback(exp: Expression): Expression { args.push(p); } return args.reduce((previousValue, currentValue) => - previousValue.divide(currentValue) + previousValue.divide(currentValue), ) as unknown as Expression; } else if (["=", "<>", ">", ">=", "<", "<="].includes(op)) { if (exp[1] == null || exp[2] == null) return null; @@ -471,7 +471,7 @@ function normalizeCallback(exp: Expression): Expression { // Restore polynomial expressions exp = exp.map((e) => - e instanceof Polynomial ? JSON.parse(e.toString()) : e + e instanceof Polynomial ? JSON.parse(e.toString()) : e, ); exp = evaluateCallback(exp); @@ -485,7 +485,7 @@ export default function normalize(expr: Expression): Expression { expr = JSON.parse(expr.toString()); } else if (Array.isArray(expr) && expr[0] === "CASE") { expr = expr.map((e) => - e instanceof Polynomial ? JSON.parse(e.toString()) : e + e instanceof Polynomial ? JSON.parse(e.toString()) : e, ); } return expr; diff --git a/lib/common/expression/parser.ts b/lib/common/expression/parser.ts index 596fd8b..876e07d 100644 --- a/lib/common/expression/parser.ts +++ b/lib/common/expression/parser.ts @@ -57,7 +57,7 @@ export function map(exp: Expression, callback: (e: Expression) => T): T { export async function mapAsync( exp: Expression, - callback: (e: Expression) => Promise + callback: (e: Expression) => Promise, ): Promise { if (!Array.isArray(exp)) return callback(exp); @@ -75,7 +75,7 @@ export async function mapAsync( function binaryLeft( operatorsParser: parsimmon.Parser, - nextParser: parsimmon.Parser + nextParser: parsimmon.Parser, ): parsimmon.Parser { return parsimmon.seqMap( nextParser, @@ -85,7 +85,7 @@ function binaryLeft( const [op, another] = ch; if (Array.isArray(acc) && op === acc[0]) return acc.concat([another]); return [op, acc, another]; - }, first) + }, first), ); } @@ -98,7 +98,7 @@ const lang = parsimmon.createLanguage({ parsimmon.string("<="), parsimmon.string("="), parsimmon.string(">"), - parsimmon.string("<") + parsimmon.string("<"), ) .skip(parsimmon.optWhitespace); }, @@ -109,7 +109,7 @@ const lang = parsimmon.createLanguage({ parsimmon .regexp(/not\s+like/i) .result("NOT LIKE") - .desc("NOT LIKE") + .desc("NOT LIKE"), ) .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)) .skip(parsimmon.optWhitespace); @@ -124,7 +124,7 @@ const lang = parsimmon.createLanguage({ parsimmon .regexp(/is\s+not\s+null/i) .result("IS NOT NULL") - .desc("IS NOT NULL") + .desc("IS NOT NULL"), ) .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)) .skip(parsimmon.optWhitespace); @@ -159,8 +159,8 @@ const lang = parsimmon.createLanguage({ parsimmon.regexp(/[a-zA-Z0-9_.*-]+/), r.Expression.wrap( parsimmon.string("{").skip(parsimmon.optWhitespace), - parsimmon.string("}") - ) + parsimmon.string("}"), + ), ) .atLeast(1) .map((x) => ["PARAM", x.length > 1 ? ["||"].concat(x) : x[0]]) @@ -194,7 +194,7 @@ const lang = parsimmon.createLanguage({ return parsimmon .alt( parsimmon.regexp(/true/i).result(true).desc("TRUE"), - parsimmon.regexp(/false/i).result(false).desc("FALSE") + parsimmon.regexp(/false/i).result(false).desc("FALSE"), ) .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)) .skip(parsimmon.optWhitespace); @@ -215,9 +215,9 @@ const lang = parsimmon.createLanguage({ .desc("function"), r.ExpressionList.wrap( parsimmon.string("(").skip(parsimmon.optWhitespace), - parsimmon.string(")").skip(parsimmon.optWhitespace) + parsimmon.string(")").skip(parsimmon.optWhitespace), ), - (f, args) => ["FUNC", f.toUpperCase()].concat(args) + (f, args) => ["FUNC", f.toUpperCase()].concat(args), ); }, WhenPair: function (r) { @@ -233,7 +233,7 @@ const lang = parsimmon.createLanguage({ .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)) .skip(parsimmon.optWhitespace) .desc("THEN") - .then(r.Expression) + .then(r.Expression), ); }, CaseStatement: function (r) { @@ -256,10 +256,10 @@ const lang = parsimmon.createLanguage({ .skip( parsimmon .regex(/end/i) - .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)) + .notFollowedBy(parsimmon.regexp(/[a-zA-Z0-9_]/)), ) .skip(parsimmon.optWhitespace), - (...arr) => arr.flat(2) + (...arr) => arr.flat(2), ); }, Value: function (r) { @@ -270,7 +270,7 @@ const lang = parsimmon.createLanguage({ r.StringValueSql, r.StringValueJs, r.FuncValue, - r.CaseStatement + r.CaseStatement, ); }, ValueExpression: function (r) { @@ -285,7 +285,7 @@ const lang = parsimmon.createLanguage({ .alt( parsimmon.string("*"), parsimmon.string("/"), - parsimmon.string("%") + parsimmon.string("%"), ) .skip(parsimmon.optWhitespace), parsimmon.alt( @@ -293,11 +293,11 @@ const lang = parsimmon.createLanguage({ r.Parameter, r.Expression.wrap( parsimmon.string("(").skip(parsimmon.optWhitespace), - parsimmon.string(")").skip(parsimmon.optWhitespace) - ) - ) - ) - ) + parsimmon.string(")").skip(parsimmon.optWhitespace), + ), + ), + ), + ), ); }, Comparison: function (r) { @@ -307,7 +307,7 @@ const lang = parsimmon.createLanguage({ r.ValueExpression, r.ComparisonOperator, r.ValueExpression, - (p, o, v) => [o, p, v] + (p, o, v) => [o, p, v], ), parsimmon.seqMap( r.ValueExpression, @@ -317,28 +317,28 @@ const lang = parsimmon.createLanguage({ .regexp(/escape/i) .result("ESCAPE") .skip(parsimmon.whitespace) - .desc("ESCAPE") + .desc("ESCAPE"), ), r.ValueExpression, - (a, b, c, d) => [b, a, c, d] + (a, b, c, d) => [b, a, c, d], ), parsimmon.seqMap( r.ValueExpression, r.LikeOperator, r.ValueExpression, - (a, b, c) => [b, a, c] - ) + (a, b, c) => [b, a, c], + ), ); }, ExpressionList: function (r) { return r.Expression.sepBy( - parsimmon.string(",").skip(parsimmon.optWhitespace) + parsimmon.string(",").skip(parsimmon.optWhitespace), ); }, Expression: function (r) { function unary( operatorsParser: parsimmon.Parser, - nextParser: parsimmon.Parser + nextParser: parsimmon.Parser, ): parsimmon.Parser { return parsimmon.seq(operatorsParser, nextParser).or(nextParser); } @@ -347,8 +347,8 @@ const lang = parsimmon.createLanguage({ r.OrOperator, binaryLeft( r.AndOperator, - unary(r.NotOperator, r.Comparison.or(r.ValueExpression)) - ) + unary(r.NotOperator, r.Comparison.or(r.ValueExpression)), + ), ).trim(parsimmon.optWhitespace); }, }); @@ -400,7 +400,7 @@ export function stringify(exp: Expression, level = 0): string { `${exp[1]}(${exp .slice(2) .map((e) => stringify(e)) - .join(", ")})` + .join(", ")})`, ); } else if (op === "PARAM") { if (typeof exp[1] === "string") { @@ -413,7 +413,7 @@ export function stringify(exp: Expression, level = 0): string { if (typeof p === "string") return p; else return `{${stringify(p)}}`; }) - .join("") + .join(""), ); } else { return wrap(`{${stringify(exp[1])}}`); @@ -425,15 +425,15 @@ export function stringify(exp: Expression, level = 0): string { return wrap( `${stringify(exp[1], opLevels[op])} ${op} ${stringify( exp[2], - opLevels[op] - )} ESCAPE ${stringify(exp[3], opLevels[op])}` + opLevels[op], + )} ESCAPE ${stringify(exp[3], opLevels[op])}`, ); } else { return wrap( `${stringify(exp[1], opLevels[op])} ${op} ${stringify( exp[2], - opLevels[op] - )}` + opLevels[op], + )}`, ); } } else if (op === "CASE") { diff --git a/lib/common/expression/synth.ts b/lib/common/expression/synth.ts index 2814434..6a850a6 100644 --- a/lib/common/expression/synth.ts +++ b/lib/common/expression/synth.ts @@ -7,7 +7,7 @@ type Minterm = number[]; export abstract class SynthContextBase< T extends { toString: () => string } = unknown, - U = unknown + U = unknown, > { public variables = new Map(); protected clauses = new Map(); @@ -88,7 +88,7 @@ export abstract class Clause { isNullable(c: Clause.IsNull): boolean { if (!this._isNullable) { this._isNullable = new Set( - [...this.getNullables()].map((n) => n.toString()) + [...this.getNullables()].map((n) => n.toString()), ); } return this._isNullable.has(c.toString()); @@ -243,14 +243,14 @@ export namespace Clause { const w = this.clauses[i].true(context); const t = this.clauses[i + 1].true(context); minterms.push( - ...complement([...cumulative, ...complement(w), ...complement(t)]) + ...complement([...cumulative, ...complement(w), ...complement(t)]), ); if (i < this.clauses.length - 2) { cumulative.push( ...complement([ ...this.clauses[i].false(context), ...this.clauses[i].null(context), - ]) + ]), ); } } @@ -263,14 +263,14 @@ export namespace Clause { const w = this.clauses[i].true(context); const t = this.clauses[i + 1].false(context); minterms.push( - ...complement([...cumulative, ...complement(w), ...complement(t)]) + ...complement([...cumulative, ...complement(w), ...complement(t)]), ); if (i < this.clauses.length - 2) { cumulative.push( ...complement([ ...this.clauses[i].false(context), ...this.clauses[i].null(context), - ]) + ]), ); } } @@ -283,13 +283,13 @@ export namespace Clause { const w = this.clauses[i].true(context); const t = this.clauses[i + 1].null(context); minterms.push( - ...complement([...cumulative, ...complement(w), ...complement(t)]) + ...complement([...cumulative, ...complement(w), ...complement(t)]), ); cumulative.push( ...complement([ ...this.clauses[i].false(context), ...this.clauses[i].null(context), - ]) + ]), ); } minterms.push(...complement([...cumulative])); @@ -313,7 +313,7 @@ export namespace Clause { minterms.push(...cases.pop().when); minterms = context.minimize( minterms, - cases.flatMap((c) => c.when) + cases.flatMap((c) => c.when), ); if (!minterms.length) continue; cases.push({ when: minterms, then }); @@ -395,7 +395,7 @@ export namespace Clause { constructor( public lhs: Clause, public op: ">" | "<" | "=", - public rhs: boolean | number | string + public rhs: boolean | number | string, ) { super(); } @@ -425,7 +425,11 @@ export namespace Clause { public readonly pattern: string[]; public readonly lhs: Clause; - constructor(lhs: Clause, public rhs: string, public esc?: string) { + constructor( + lhs: Clause, + public rhs: string, + public esc?: string, + ) { super(); const exp = lhs.expression(); let caseSensitive = true; @@ -515,7 +519,7 @@ export namespace Clause { clause = new Clause.Compare( e[1], op, - rhs as boolean | number | string + rhs as boolean | number | string, ); } } @@ -535,7 +539,7 @@ export namespace Clause { function groupBy( input: T[], - callback: (item: T) => K + callback: (item: T) => K, ): Iterable<[K, T[]]> { const groups = new Map(); for (const item of input) { @@ -567,12 +571,12 @@ export class SynthContext extends SynthContextBase { const allClauses = [...whitelist].map((v) => this.getClause(v)); const comparisons = allClauses.filter( - (c) => c instanceof Clause.Compare + (c) => c instanceof Clause.Compare, ) as Clause.Compare[]; // Comparisons for (const [, clauses] of groupBy(comparisons, (c) => - JSON.stringify(c.lhs) + JSON.stringify(c.lhs), )) { const lhs = clauses[0].lhs; const values = new Set(clauses.map((c) => c.rhs)); @@ -600,13 +604,13 @@ export class SynthContext extends SynthContextBase { for (let j = 0; j < i; j++) { const eq2 = this.getVar( - new Clause.Compare(lhs, "=", valuesSorted[j]) + new Clause.Compare(lhs, "=", valuesSorted[j]), ); const gt2 = this.getVar( - new Clause.Compare(lhs, ">", valuesSorted[j]) + new Clause.Compare(lhs, ">", valuesSorted[j]), ); const lt2 = this.getVar( - new Clause.Compare(lhs, "<", valuesSorted[j]) + new Clause.Compare(lhs, "<", valuesSorted[j]), ); // This is the minimum clauses required if all relavent vars @@ -631,7 +635,7 @@ export class SynthContext extends SynthContextBase { // LIKE const likes = allClauses.filter( - (c) => c instanceof Clause.Like + (c) => c instanceof Clause.Like, ) as Clause.Like[]; for (const [, clauses] of groupBy(likes, (c) => JSON.stringify(c.lhs))) { @@ -734,7 +738,7 @@ export class SynthContext extends SynthContextBase { for (const [k, v] of merged) { if (v === 0b1010) continue loop; const isNullVars = [...this.clauses.get(k).getNullables()].map((c) => - this.getVar(c) + this.getVar(c), ); const t = k << 2; if (v === 0b0101) { @@ -858,7 +862,7 @@ export function minimize(expr: Expression, boolean = false): Expression { export function unionDiff( expr1: Expression, - expr2: Expression + expr2: Expression, ): [Expression, Expression] { expr2 = normalize(expr2); @@ -887,7 +891,7 @@ export function unionDiff( complement([ ...complement([...expr1NullMinterms, ...expr1FalseMinterms]), ...complement(expr2Minterms), - ]) + ]), ); return [context.toExpression(union), context.toExpression(diff)]; diff --git a/lib/common/expression/util.ts b/lib/common/expression/util.ts index 45cad04..f8be54e 100644 --- a/lib/common/expression/util.ts +++ b/lib/common/expression/util.ts @@ -74,7 +74,7 @@ export function likePatternToRegExp(pat: string, esc = "", flags = ""): RegExp { function compare( a: boolean | number | string, - b: boolean | number | string + b: boolean | number | string, ): number { if (typeof a === "boolean") a = +a; if (typeof b === "boolean") b = +b; @@ -287,19 +287,19 @@ export function evaluate( exp: Expression, obj: Record | ((e: string) => Expression), now: number, - cb?: (e: Expression) => Expression + cb?: (e: Expression) => Expression, ): string | number | boolean | null; export function evaluate( exp: Expression, obj?: Record | ((e: string) => Expression), now?: number, - cb?: (e: Expression) => Expression + cb?: (e: Expression) => Expression, ): Expression; export function evaluate( exp: Expression, obj?: Record | ((e: string) => Expression), now?: number, - cb?: (e: Expression) => Expression + cb?: (e: Expression) => Expression, ): Expression { return map(exp, (e) => { if (cb) e = cb(e); @@ -327,19 +327,19 @@ export async function evaluateAsync( exp: Expression, obj: Record, now: number, - cb?: (e: Expression) => Promise + cb?: (e: Expression) => Promise, ): Promise; export async function evaluateAsync( exp: Expression, obj?: Record, now?: number, - cb?: (e: Expression) => Promise + cb?: (e: Expression) => Promise, ): Promise; export async function evaluateAsync( exp: Expression, obj?: Record, now?: number, - cb?: (e: Expression) => Promise + cb?: (e: Expression) => Promise, ): Promise { return mapAsync(exp, async (e) => { if (cb) e = await cb(e); diff --git a/lib/common/path-set.ts b/lib/common/path-set.ts index 9667917..33812d8 100644 --- a/lib/common/path-set.ts +++ b/lib/common/path-set.ts @@ -75,7 +75,7 @@ export default class PathSet { path: Path, superset = false, subset = false, - depth: number = path.length + depth: number = path.length, ): Path[] { if (path.alias) throw new Error("PathSet does not support aliased paths"); @@ -115,7 +115,7 @@ export default class PathSet { res = [...fragmentIndexSet1, ...fragmentIndexSet2]; } else { res = res.filter( - (r) => fragmentIndexSet1.has(r) || fragmentIndexSet2.has(r) + (r) => fragmentIndexSet1.has(r) || fragmentIndexSet2.has(r), ); } } diff --git a/lib/common/path.ts b/lib/common/path.ts index dc463bd..93fa113 100644 --- a/lib/common/path.ts +++ b/lib/common/path.ts @@ -57,7 +57,7 @@ export default class Path { protected static parseAliasValue( pattern: string, - index: number + index: number, ): { index: number; value: string } { let i = index; while (charCodeAt(pattern, i) === CHAR_SPACE) ++i; @@ -89,7 +89,7 @@ export default class Path { protected static parseAliasPath( pattern: string, - index: number + index: number, ): { index: number; path: Path } { let i = index; while (charCodeAt(pattern, i) === CHAR_SPACE) ++i; @@ -103,7 +103,7 @@ export default class Path { protected static parseAlias( pattern: string, - index: number + index: number, ): { index: number; alias: Alias } { const alias: Alias = []; let i = index; @@ -136,7 +136,7 @@ export default class Path { protected static parsePath( pattern: string, - index: number + index: number, ): { index: number; segments: Segments } { const segments = []; @@ -173,7 +173,7 @@ export default class Path { if (Array.isArray(s)) { alias |= 1 << i; const parts = s.map( - (al) => `${al[0].toString()}:${JSON.stringify(al[1])}` + (al) => `${al[0].toString()}:${JSON.stringify(al[1])}`, ); return `[${parts.join(",")}]`; } else if (s === "*") { diff --git a/lib/common/yaml.ts b/lib/common/yaml.ts index 2bb0e09..c32379e 100644 --- a/lib/common/yaml.ts +++ b/lib/common/yaml.ts @@ -15,7 +15,7 @@ const STRING_RESERVED = new Set([ function isPrintable(str: string): boolean { return !/[^\t\n\x20-\x7e\x85\u{a0}-\u{d7ff}\u{e000}-\u{fffd}\u{10000}-\u{10ffff}]/u.test( - str + str, ); } @@ -99,7 +99,7 @@ function stringifyString(str: string, res: string[], prefix1, prefix2): void { if (!isFolded) { res.push( `${prefix1}|${idt}${chmp}`, - ...lines.map((l) => (l ? prefix2 + l : l)) + ...lines.map((l) => (l ? prefix2 + l : l)), ); return; } @@ -129,7 +129,7 @@ function stringifyAny( obj: unknown, res: string[], prefix1 = "", - prefix2 = "" + prefix2 = "", ): void { if (obj == null) { res.push(`${prefix1}null`); @@ -183,7 +183,7 @@ function stringifyAny( entries[0][1], res, prefix1 + `${stringifyKey(entries[0][0])}: `, - prefix2 + INDENTATION + prefix2 + INDENTATION, ); prefix1 = prefix2; prefix2 = prefix2 + INDENTATION; @@ -192,7 +192,7 @@ function stringifyAny( entries[i][1], res, prefix1 + `${stringifyKey(entries[i][0])}: `, - prefix2 + prefix2, ); } } else { @@ -204,7 +204,7 @@ function stringifyAny( entries[i][1], res, prefix1 + `${stringifyKey(entries[i][0])}: `, - prefix2 + prefix2, ); } } diff --git a/lib/config.ts b/lib/config.ts index 69b55f1..633170d 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -245,7 +245,7 @@ if (fsHostname) { const FS_SSL = !!allConfig["FS_SSL_CERT"]; setConfig( "FS_URL_PREFIX", - (FS_SSL ? "https" : "http") + `://${fsHostname}:${FS_PORT}/` + (FS_SSL ? "https" : "http") + `://${fsHostname}:${FS_PORT}/`, ); } @@ -255,7 +255,7 @@ for (const [k, v] of Object.entries(options)) export function get( optionName: string, - deviceId?: string + deviceId?: string, ): string | number | boolean { if (!deviceId) return allConfig[optionName]; diff --git a/lib/connection-request.ts b/lib/connection-request.ts index 322885c..66ee63e 100644 --- a/lib/connection-request.ts +++ b/lib/connection-request.ts @@ -19,7 +19,6 @@ import * as crypto from "crypto"; import * as dgram from "dgram"; -import { URL } from "url"; import * as http from "http"; import { evaluateAsync } from "./common/expression/util"; import { Expression } from "./types"; @@ -29,7 +28,7 @@ import * as debug from "./debug"; async function extractAuth( exp: Expression, - dflt: any + dflt: any, ): Promise<[string, string, Expression]> { let username, password; const _exp = await evaluateAsync( @@ -55,7 +54,7 @@ async function extractAuth( } } return e; - } + }, ); return [username, password, _exp]; } @@ -64,7 +63,7 @@ function httpGet( url: URL, options: http.RequestOptions, _debug: boolean, - deviceId: string + deviceId: string, ): Promise<{ statusCode: number; headers: http.IncomingHttpHeaders }> { return new Promise((resolve, reject) => { const req = http @@ -94,7 +93,7 @@ export async function httpConnectionRequest( allowBasicAuth: boolean, timeout: number, _debug: boolean, - deviceId: string + deviceId: string, ): Promise { const url = new URL(address); if (url.protocol !== "http:") @@ -120,7 +119,7 @@ export async function httpConnectionRequest( Authorization: auth.basic(username || "", password || ""), }, }, - options + options, ); } else if (authHeader["method"] === "Digest") { opts = Object.assign( @@ -132,11 +131,11 @@ export async function httpConnectionRequest( url.pathname + url.search, "GET", null, - authHeader + authHeader, ), }, }, - options + options, ); } else { return "Unrecognized auth method"; @@ -171,7 +170,7 @@ export async function httpConnectionRequest( if (res.statusCode === 401 && res.headers["www-authenticate"]) { try { authHeader = auth.parseWwwAuthenticateHeader( - res.headers["www-authenticate"] + res.headers["www-authenticate"], ); } catch (err) { return "Connection request error: Error parsing www-authenticate header"; @@ -191,7 +190,7 @@ export async function udpConnectionRequest( authExp: Expression, sourcePort = 0, _debug: boolean, - deviceId: string + deviceId: string, ): Promise { const now = Date.now(); diff --git a/lib/cwmp.ts b/lib/cwmp.ts index 58d600d..4e5e33b 100644 --- a/lib/cwmp.ts +++ b/lib/cwmp.ts @@ -89,11 +89,11 @@ const stats = { async function authenticate( sessionContext: SessionContext, - body: string + body: string, ): Promise { const authExpression: Expression = localCache.getConfigExpression( sessionContext.cacheSnapshot, - "cwmp.auth" + "cwmp.auth", ); if (authExpression == null) return true; @@ -102,7 +102,7 @@ async function authenticate( if (sessionContext.httpRequest.headers["authorization"]) { try { authentication = auth.parseAuthorizationHeader( - sessionContext.httpRequest.headers["authorization"] + sessionContext.httpRequest.headers["authorization"], ); } catch (err) { return false; @@ -159,7 +159,7 @@ async function authenticate( authentication["qop"], authentication["body"], authentication["cnonce"], - authentication["nc"] + authentication["nc"], ); return expected === authentication["response"]; } @@ -168,7 +168,7 @@ async function authenticate( } } return e; - } + }, ); if (res && !Array.isArray(res)) return true; @@ -179,7 +179,7 @@ async function authenticate( async function writeResponse( sessionContext: SessionContext, res, - close = false + close = false, ): Promise { // Close connection after last request in session if (close) res.headers["Connection"] = "close"; @@ -231,7 +231,7 @@ async function writeResponse( `cwmp_session_${sessionContext.deviceId}`, sessionContext.timeout * 1000 + 15000, 0, - `cwmp_session_${sessionContext.sessionId}` + `cwmp_session_${sessionContext.sessionId}`, ); if (!lockToken) throw new Error("Failed to extend lock"); } @@ -242,14 +242,14 @@ function recordFault( sessionContext: SessionContext, fault: Fault, provisions, - channels + channels, ): void; function recordFault(sessionContext: SessionContext, fault: Fault): void; function recordFault( sessionContext: SessionContext, fault: Fault, provisions?, - channels? + channels?, ): void { if (!provisions) { provisions = sessionContext.provisions; @@ -267,7 +267,7 @@ function recordFault( : []; faults[channel] = Object.assign( { provisions: provs, timestamp: sessionContext.timestamp }, - fault + fault, ) as SessionFault; if (channel.startsWith("task_")) { const taskId = channel.slice(5); @@ -314,11 +314,11 @@ function recordFault( async function inform( sessionContext: SessionContext, - rpc: SoapMessage + rpc: SoapMessage, ): Promise<{ code: number; headers: Record; data: string }> { const acsResponse = await session.inform( sessionContext, - rpc.cpeRequest as InformRequest + rpc.cpeRequest as InformRequest, ); const res = soap.response({ @@ -332,13 +332,12 @@ async function inform( "cwmp.cookiesPath", {}, sessionContext.timestamp, - (e) => session.configContextCallback(sessionContext, e) + (e) => session.configContextCallback(sessionContext, e), ); if (cookiesPath) { - res.headers[ - "Set-Cookie" - ] = `session=${sessionContext.sessionId}; Path=${cookiesPath}`; + res.headers["Set-Cookie"] = + `session=${sessionContext.sessionId}; Path=${cookiesPath}`; } else { res.headers["Set-Cookie"] = `session=${sessionContext.sessionId}`; } @@ -349,7 +348,7 @@ async function inform( async function transferComplete(sessionContext, rpc): Promise { const { acsResponse, operation, fault } = await session.transferComplete( sessionContext, - rpc.cpeRequest + rpc.cpeRequest, ); if (!operation) { @@ -366,7 +365,7 @@ async function transferComplete(sessionContext, rpc): Promise { sessionContext, fault, operation.provisions, - operation.channels + operation.channels, ); } @@ -424,7 +423,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { "cwmp.retryDelay", {}, sessionContext.timestamp, - (e) => session.configContextCallback(sessionContext, e) + (e) => session.configContextCallback(sessionContext, e), ); if (sessionContext.faults) { @@ -452,7 +451,8 @@ async function applyPresets(sessionContext: SessionContext): Promise { const deviceEvents = {}; for (const p of deviceData.paths.find(Path.parse("Events.*"), false, true)) { const attrs = deviceData.attributes.get(p); - if (attrs?.value && attrs.value[1][0] >= sessionContext.timestamp) + const t = attrs?.value[1][0] as number; + if (t >= sessionContext.timestamp) deviceEvents[p.segments[1] as string] = true; } @@ -479,7 +479,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { if (preset.schedule?.schedule) { const r = scheduling.cron( sessionContext.timestamp, - preset.schedule.schedule + preset.schedule.schedule, ); if (!(r[0] + preset.schedule.duration > sessionContext.timestamp)) continue; @@ -487,7 +487,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { filteredPresets.push(preset); for (const k of extractParams( - evaluate(preset.precondition, null, sessionContext.timestamp) + evaluate(preset.precondition, null, sessionContext.timestamp), )) { // Mark channel in case of fault during fetching precondition sessionContext.channels[preset.channel] = 0; @@ -496,7 +496,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { for (const prov of preset.provisions) { for (const arg of prov.slice(1)) { for (const k of extractParams( - evaluate(arg, null, sessionContext.timestamp) + evaluate(arg, null, sessionContext.timestamp), )) { // Mark channel in case of fault during fetching precondition sessionContext.channels[preset.channel] = 0; @@ -538,7 +538,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { for (const p of filteredPresets) { if ( evaluate(p.precondition, {}, sessionContext.timestamp, (e) => - session.configContextCallback(sessionContext, e) + session.configContextCallback(sessionContext, e), ) ) { const provs = p.provisions.map((pp) => [ @@ -547,8 +547,8 @@ async function applyPresets(sessionContext: SessionContext): Promise { .slice(1) .map((arg) => evaluate(arg, {}, sessionContext.timestamp, (e) => - session.configContextCallback(sessionContext, e) - ) + session.configContextCallback(sessionContext, e), + ), ), ]) as [string, ...Expression[]][]; if (blackList[p.channel] === 2) { @@ -562,7 +562,7 @@ async function applyPresets(sessionContext: SessionContext): Promise { } for (const [channel, provisions] of Object.entries( - appendProvisionsToFaults + appendProvisionsToFaults, )) { if ( appendProvisions(sessionContext.faults[channel].provisions, provisions) @@ -686,7 +686,7 @@ async function nextRpc(sessionContext: SessionContext): Promise { }); const task = sessionContext.tasks.find( - (t) => !sessionContext.faults[`task_${t._id}`] + (t) => !sessionContext.faults[`task_${t._id}`], ); if (!task) return applyPresets(sessionContext); @@ -747,7 +747,7 @@ async function nextRpc(sessionContext: SessionContext): Promise { session.addProvisions( sessionContext, `task_${task._id}`, - task.provisions + task.provisions, ); break; default: @@ -784,8 +784,8 @@ async function endSession(sessionContext: SessionContext): Promise { sessionContext.deviceId, sessionContext.deviceData, sessionContext.new, - sessionContext.timestamp - ) + sessionContext.timestamp, + ), ); if (sessionContext.operationsTouched) { @@ -795,8 +795,8 @@ async function endSession(sessionContext: SessionContext): Promise { saveOperation( sessionContext.deviceId, k, - sessionContext.operations[k] - ) + sessionContext.operations[k], + ), ); } else { promises.push(deleteOperation(sessionContext.deviceId, k)); @@ -806,7 +806,7 @@ async function endSession(sessionContext: SessionContext): Promise { if (sessionContext.doneTasks?.length) { promises.push( - clearTasks(sessionContext.deviceId, sessionContext.doneTasks) + clearTasks(sessionContext.deviceId, sessionContext.doneTasks), ); } @@ -815,7 +815,7 @@ async function endSession(sessionContext: SessionContext): Promise { if (sessionContext.faults[k]) { sessionContext.faults[k].retries = sessionContext.retries[k]; promises.push( - saveFault(sessionContext.deviceId, k, sessionContext.faults[k]) + saveFault(sessionContext.deviceId, k, sessionContext.faults[k]), ); } else { promises.push(deleteFault(sessionContext.deviceId, k)); @@ -826,7 +826,7 @@ async function endSession(sessionContext: SessionContext): Promise { await Promise.all(promises); await lock.releaseLock( `cwmp_session_${sessionContext.deviceId}`, - `cwmp_session_${sessionContext.sessionId}` + `cwmp_session_${sessionContext.sessionId}`, ); if (sessionContext.new) { logger.accessInfo({ @@ -839,7 +839,7 @@ async function endSession(sessionContext: SessionContext): Promise { async function sendAcsRequest( sessionContext: SessionContext, id?: string, - acsRequest?: AcsRequest + acsRequest?: AcsRequest, ): Promise { if (!acsRequest) return writeResponse(sessionContext, soap.response(null), true); @@ -918,7 +918,7 @@ export async function onConnection(socket: Socket): Promise { await cache.set( `session_${sessionContext.sessionId}`, await session.serialize(sessionContext), - Math.ceil(timeout / 1000) + 3 + Math.ceil(timeout / 1000) + 3, ); await setTimeoutPromise(timeout + 1000, false); @@ -946,7 +946,7 @@ export async function onClientError(err: Error, socket: Socket): Promise { if (Array.isArray(e) && e[0] === "FUNC" && e[1] === "REMOTE_ADDRESS") return remoteAddress; return e; - } + }, ); if (debugEnabled) debug.clientError(remoteAddress, err); @@ -985,7 +985,7 @@ async function reportBadState(sessionContext: SessionContext): Promise { async function responseUnauthorized( sessionContext: SessionContext, - close: boolean + close: boolean, ): Promise { const resHeaders = {}; if (close) { @@ -1024,7 +1024,7 @@ async function processRequest( sessionContext: SessionContext, rpc: SoapMessage, parseWarnings: Record[], - body: string + body: string, ): Promise { for (const w of parseWarnings) { w.sessionContext = sessionContext; @@ -1042,7 +1042,7 @@ async function processRequest( "cwmp.debug", {}, sessionContext.timestamp, - (e) => session.configContextCallback(sessionContext, e) + (e) => session.configContextCallback(sessionContext, e), ); if (!sessionContext.timeout) { @@ -1051,7 +1051,7 @@ async function processRequest( "cwmp.sessionTimeout", {}, sessionContext.timestamp, - (e) => session.configContextCallback(sessionContext, e) + (e) => session.configContextCallback(sessionContext, e), ); } @@ -1061,7 +1061,7 @@ async function processRequest( debug.incomingHttpRequest( sessionContext.httpRequest, sessionContext.deviceId, - body + body, ); } @@ -1080,7 +1080,7 @@ async function processRequest( `cwmp_session_${sessionContext.deviceId}`, sessionContext.timeout * 1000 + 15000, 0, - `cwmp_session_${sessionContext.sessionId}` + `cwmp_session_${sessionContext.sessionId}`, ); if (!lockToken) { @@ -1092,14 +1092,14 @@ async function processRequest( const _body = "CPE already in session"; sessionContext.httpResponse.setHeader( "Content-Length", - Buffer.byteLength(_body) + Buffer.byteLength(_body), ); sessionContext.httpResponse.writeHead(400, { Connection: "close" }); if (sessionContext.debug) { debug.outgoingHttpResponse( sessionContext.httpResponse, sessionContext.deviceId, - _body + _body, ); } sessionContext.httpResponse.end(_body); @@ -1122,7 +1122,7 @@ async function processRequest( debug.incomingHttpRequest( sessionContext.httpRequest, sessionContext.deviceId, - body + body, ); } @@ -1180,7 +1180,7 @@ async function processRequest( const fault = await session.rpcResponse( sessionContext, rpc.id, - rpc.cpeResponse + rpc.cpeResponse, ); if (fault) { recordFault(sessionContext, fault); @@ -1242,9 +1242,8 @@ async function processRequest( if (sessionContext.state !== 1) return reportBadState(sessionContext); sessionContext.state = 2; - const { faults, operations } = await session.timeoutOperations( - sessionContext - ); + const { faults, operations } = + await session.timeoutOperations(sessionContext); for (const [i, f] of faults.entries()) { for (const [k, v] of Object.entries(operations[i].retries)) @@ -1254,7 +1253,7 @@ async function processRequest( sessionContext, f, operations[i].provisions, - operations[i].channels + operations[i].channels, ); } @@ -1264,7 +1263,7 @@ async function processRequest( export async function listener( httpRequest: IncomingMessage, - httpResponse: ServerResponse + httpResponse: ServerResponse, ): Promise { stats.concurrentRequests += 1; try { @@ -1282,7 +1281,7 @@ async function clientError( httpResponse: ServerResponse, sessionContext: SessionContext, body: string, - msg: string + msg: string, ): Promise { let debugEnabled = false; let deviceId: string = null; @@ -1303,7 +1302,7 @@ async function clientError( if (Array.isArray(e) && e[0] === "FUNC" && e[1] === "REMOTE_ADDRESS") return getRequestOrigin(httpRequest).remoteAddress; return e; - } + }, ); } @@ -1330,7 +1329,7 @@ function decodeString(buffer: Buffer, charset: string): string { async function listenerAsync( httpRequest: IncomingMessage, - httpResponse: ServerResponse + httpResponse: ServerResponse, ): Promise { stats.totalRequests += 1; @@ -1419,7 +1418,7 @@ async function listenerAsync( httpResponse, sessionContext, body.toString(), - "Invalid session" + "Invalid session", ); } } @@ -1427,7 +1426,7 @@ async function listenerAsync( let charset: string; if (httpRequest.headers["content-type"]) { const m = httpRequest.headers["content-type"].match( - /charset=['"]?([^'"\s]+)/i + /charset=['"]?([^'"\s]+)/i, ); if (m) charset = m[1].toLowerCase(); } @@ -1465,7 +1464,7 @@ async function listenerAsync( httpResponse, sessionContext, body.toString(), - msg + msg, ); } @@ -1498,7 +1497,7 @@ async function listenerAsync( httpResponse, sessionContext, bodyStr, - err.message + err.message, ); } @@ -1531,7 +1530,7 @@ async function listenerAsync( httpResponse, null, bodyStr, - "Invalid session" + "Invalid session", ); } @@ -1552,7 +1551,7 @@ async function listenerAsync( const _sessionContext = session.init( deviceId, rpc.cwmpVersion, - rpc.sessionTimeout + rpc.sessionTimeout, ); _sessionContext.cacheSnapshot = cacheSnapshot; @@ -1584,7 +1583,7 @@ async function listenerAsync( const parameters = await fetchDevice( _sessionContext.deviceId, - _sessionContext.timestamp + _sessionContext.timestamp, ); if (parameters) { diff --git a/lib/cwmp/db.ts b/lib/cwmp/db.ts index 9df0ba4..8f558e8 100644 --- a/lib/cwmp/db.ts +++ b/lib/cwmp/db.ts @@ -22,7 +22,7 @@ function compareAccessLists(list1: string[], list2: string[]): boolean { export async function fetchDevice( id: string, - timestamp: number + timestamp: number, ): Promise<[Path, number, Attributes?][]> { const res: [Path, number, Attributes?][] = [ [ @@ -44,7 +44,7 @@ export async function fetchDevice( obj, path: string, pathLength: number, - ts: number + ts: number, ): void { if (obj["_timestamp"]) obj["_timestamp"] = +obj["_timestamp"]; if (obj["_attributesTimestamp"]) @@ -243,7 +243,7 @@ export async function saveDevice( deviceId: string, deviceData: DeviceData, isNew: boolean, - sessionTimestamp: number + sessionTimestamp: number, ): Promise { const update = { $set: {}, $unset: {}, $addToSet: {}, $pull: {} }; @@ -357,7 +357,7 @@ export async function saveDevice( if (!update["$addToSet"]["_tags"]) update["$addToSet"]["_tags"] = { $each: [] }; update["$addToSet"]["_tags"]["$each"].push( - decodeTag(path.segments[1] as string) + decodeTag(path.segments[1] as string), ); } else { if (!update["$pull"]["_tags"]) { @@ -366,7 +366,7 @@ export async function saveDevice( }; } update["$pull"]["_tags"]["$in"].push( - decodeTag(path.segments[1] as string) + decodeTag(path.segments[1] as string), ); } } @@ -379,7 +379,10 @@ export async function saveDevice( if (pathStr.endsWith(INVALID_PATH_SUFFIX)) { const splits = pathStr.split("."); splits[splits.length - 1] = decodeTag( - splits[splits.length - 1].slice(0, 0 - INVALID_PATH_SUFFIX.length) + splits[splits.length - 1].slice( + 0, + 0 - INVALID_PATH_SUFFIX.length, + ), ); pathStr = splits.join("."); } @@ -401,7 +404,7 @@ export async function saveDevice( Number.isInteger(value2 as number) ) { update["$set"][path.toString() + "._value"] = new Date( - value2 as number + value2 as number, ); } else { update["$set"][path.toString() + "._value"] = value2; @@ -413,7 +416,7 @@ export async function saveDevice( if (valueTimestamp2 !== valueTimestamp1) { update["$set"][path.toString() + "._timestamp"] = new Date( - valueTimestamp2 + valueTimestamp2, ); } @@ -533,7 +536,7 @@ export async function saveDevice( update, { upsert: isNew, - } + }, ); if (!result.matchedCount && !result.upsertedCount) @@ -546,7 +549,7 @@ export async function saveDevice( } export async function getFaults( - deviceId: string + deviceId: string, ): Promise<{ [channel: string]: SessionFault }> { const res = await collections.faults .find({ _id: { $regex: `^${escapeRegExp(deviceId)}\\:` } }) @@ -573,7 +576,7 @@ export async function getFaults( export async function saveFault( deviceId: string, channel: string, - fault: SessionFault + fault: SessionFault, ): Promise { const id = `${deviceId}:${channel}`; const f: MongoTypes.Fault = { @@ -593,14 +596,14 @@ export async function saveFault( export async function deleteFault( deviceId: string, - channel: string + channel: string, ): Promise { await collections.faults.deleteOne({ _id: `${deviceId}:${channel}` }); } export async function getDueTasks( deviceId: string, - timestamp: number + timestamp: number, ): Promise<[Task[], number]> { const cur = collections.tasks .find({ device: deviceId }) @@ -664,7 +667,7 @@ export async function getDueTasks( export async function clearTasks( deviceId: string, - taskIds: string[] + taskIds: string[], ): Promise { await collections.tasks.deleteMany({ _id: { $in: taskIds.map((id) => new ObjectId(id)) }, @@ -672,7 +675,7 @@ export async function clearTasks( } export async function getOperations( - deviceId: string + deviceId: string, ): Promise<{ [commandKey: string]: Operation }> { const res = await collections.operations .find({ _id: { $regex: `^${escapeRegExp(deviceId)}\\:` } }) @@ -704,7 +707,7 @@ export async function getOperations( export async function saveOperation( deviceId: string, commandKey: string, - operation: Operation + operation: Operation, ): Promise { const id = `${deviceId}:${commandKey}`; const o: MongoTypes.Operation = { @@ -723,7 +726,7 @@ export async function saveOperation( export async function deleteOperation( deviceId: string, - commandKey: string + commandKey: string, ): Promise { await collections.operations.deleteOne({ _id: `${deviceId}:${commandKey}` }); } diff --git a/lib/cwmp/local-cache.ts b/lib/cwmp/local-cache.ts index 17c2226..9ccb0b3 100644 --- a/lib/cwmp/local-cache.ts +++ b/lib/cwmp/local-cache.ts @@ -28,7 +28,7 @@ interface Snapshot { function flattenObject>( src: T, prefix = "", - dst = {} as T + dst = {} as T, ): T { for (const k of Object.keys(src)) { const v = src[k]; @@ -99,7 +99,7 @@ async function fetchPresets(): Promise<[string, Preset[]]> { precondition = parse(preset["precondition"]); } catch (error) { precondition = convertOldPrecondition( - JSON.parse(preset["precondition"]) + JSON.parse(preset["precondition"]), ); } @@ -166,7 +166,7 @@ async function fetchPresets(): Promise<[string, Preset[]]> { default: { const exhaustiveCheck: never = c; throw new Error( - `Unknown configuration type ${exhaustiveCheck["type"]}` + `Unknown configuration type ${exhaustiveCheck["type"]}`, ); } } @@ -199,7 +199,7 @@ async function fetchProvisions(): Promise<[string, Provisions]> { .digest("hex"); provisions[r._id].script = new vm.Script( `"use strict";(function(){\n${r.script}\n})();`, - { filename: r._id, lineOffset: -1 } + { filename: r._id, lineOffset: -1 }, ); } @@ -220,7 +220,7 @@ async function fetchVirtualParameters(): Promise<[string, VirtualParameters]> { .digest("hex"); virtualParameters[r._id].script = new vm.Script( `"use strict";(function(){\n${r.script}\n})();`, - { filename: r._id, lineOffset: -1 } + { filename: r._id, lineOffset: -1 }, ); } @@ -307,7 +307,7 @@ export function getConfig( key: string, context: Record, now: number, - cb?: (e: Expression) => Expression + cb?: (e: Expression) => Expression, ): string | number | boolean | null { const snapshot = localCache.get(snapshotKey); if (!snapshot) throw new Error("Cache snapshot does not exist"); @@ -350,7 +350,7 @@ export function getConfig( export function getConfigExpression( snapshotKey: string, - key: string + key: string, ): Expression { const snapshot = localCache.get(snapshotKey); return snapshot.config[key]; diff --git a/lib/db/synth.ts b/lib/db/synth.ts index 0b69809..c2d3bc1 100644 --- a/lib/db/synth.ts +++ b/lib/db/synth.ts @@ -131,7 +131,7 @@ function roundOid(oid: string, roundUp: boolean): string { function groupBy( input: T[], - callback: (item: T) => K + callback: (item: T) => K, ): Iterable<[K, T[]]> { const groups = new Map(); for (const item of input) { @@ -155,7 +155,7 @@ abstract class MongoClause { class MongoClauseArray extends MongoClause { constructor( public readonly parameter: string, - public readonly value: string + public readonly value: string, ) { super(); } @@ -171,7 +171,7 @@ class MongoClauseCompare extends MongoClause { public readonly parameter: string, public readonly op: "$eq" | "$gt" | "$lt" | "$gte" | "$lte", public readonly value: T, - public readonly type: "" | "bool" | "number" | "string" | "date" | "oid" + public readonly type: "" | "bool" | "number" | "string" | "date" | "oid", ) { super(); } @@ -189,7 +189,10 @@ class MongoClauseCompare extends MongoClause { } class MongoClauseType extends MongoClause { - constructor(public readonly parameter: string, public readonly type: string) { + constructor( + public readonly parameter: string, + public readonly type: string, + ) { super(); } @@ -205,7 +208,7 @@ class MongoClauseLike extends MongoClause { public readonly parameter: string, pat: string, esc: string, - public readonly caseSensitive: boolean + public readonly caseSensitive: boolean, ) { super(); this.pattern = parseLikePattern(pat, esc); @@ -357,8 +360,8 @@ class MongoSynthContext extends SynthContextBase { param, "$gte", "000000000000000000000000", - "oid" - ) + "oid", + ), ); } } @@ -417,30 +420,30 @@ class MongoSynthContext extends SynthContextBase { for (const [parameter, clauses2] of groupBy(clauses, (c) => c.parameter)) { const comparisons = clauses2.filter( - (c) => c instanceof MongoClauseCompare && c.value !== null + (c) => c instanceof MongoClauseCompare && c.value !== null, ) as MongoClauseCompare[]; for (const [type, clauses3] of groupBy(comparisons, (c) => c.type)) { const isType = this.getVar(new MongoClauseType(parameter, type)); const values = new Set(clauses3.map((c) => c.value)); const valuesSorted = Array.from(values).sort((a, b) => - a > b ? 1 : -1 + a > b ? 1 : -1, ); for (const [i, v] of valuesSorted.entries()) { const eq = this.getVar( - new MongoClauseCompare(parameter, "$eq", v, type) + new MongoClauseCompare(parameter, "$eq", v, type), ); const gt = this.getVar( - new MongoClauseCompare(parameter, "$gt", v, type) + new MongoClauseCompare(parameter, "$gt", v, type), ); const lt = this.getVar( - new MongoClauseCompare(parameter, "$lt", v, type) + new MongoClauseCompare(parameter, "$lt", v, type), ); const gte = this.getVar( - new MongoClauseCompare(parameter, "$gte", v, type) + new MongoClauseCompare(parameter, "$gte", v, type), ); const lte = this.getVar( - new MongoClauseCompare(parameter, "$lte", v, type) + new MongoClauseCompare(parameter, "$lte", v, type), ); if (type === "bool") { @@ -472,16 +475,16 @@ class MongoSynthContext extends SynthContextBase { parameter, "$gt", valuesSorted[i - 1], - type - ) + type, + ), ); const lte2 = this.getVar( new MongoClauseCompare( parameter, "$lte", valuesSorted[i - 1], - type - ) + type, + ), ); dcSet.push([(gt2 << 1) ^ 0, (gte << 1) ^ 1]); dcSet.push([(gt2 << 1) ^ 0, (lte2 << 1) ^ 0, (lt << 1) ^ 1]); @@ -493,7 +496,7 @@ class MongoSynthContext extends SynthContextBase { } const likes = clauses2.filter( - (c) => c instanceof MongoClauseLike + (c) => c instanceof MongoClauseLike, ) as MongoClauseLike[]; if (likes.length) { const isType = this.getVar(new MongoClauseType(parameter, "string")); @@ -535,11 +538,11 @@ class MongoSynthContext extends SynthContextBase { } const isNull = this.getVar( - new MongoClauseCompare(parameter, "$eq", null, "") + new MongoClauseCompare(parameter, "$eq", null, ""), ); const types = getTypes(parameter, this.collection).map((t) => - this.getVar(new MongoClauseType(parameter, t)) + this.getVar(new MongoClauseType(parameter, t)), ); dcSet.push([(isNull << 1) ^ 0, ...types.map((t) => (t << 1) ^ 0)]); @@ -621,7 +624,7 @@ class MongoSynthContext extends SynthContextBase { export function toMongoQuery( exp: Expression, - resource: string + resource: string, ): Filter | false { exp = normalize(exp); const clause = Clause.fromExpression(normalize(exp)); diff --git a/lib/debug.ts b/lib/debug.ts index 444c1eb..87d89ee 100644 --- a/lib/debug.ts +++ b/lib/debug.ts @@ -41,7 +41,7 @@ function getConnectionTimestamp(connection: Socket): Date { export function incomingHttpRequest( httpRequest: IncomingMessage, deviceId: string, - body: string + body: string, ): void { if (!DEBUG_FILE) return; const now = new Date(); @@ -70,7 +70,7 @@ export function incomingHttpRequest( export function outgoingHttpResponse( httpResponse: ServerResponse, deviceId: string, - body: string + body: string, ): void { if (!DEBUG_FILE) return; const now = new Date(); @@ -99,7 +99,7 @@ export function outgoingHttpRequest( deviceId: string, method: "GET" | "PUT" | "POST" | "DELETE", url: URL, - body: string + body: string, ): void { if (!DEBUG_FILE) return; const now = new Date(); @@ -129,7 +129,7 @@ export function outgoingHttpRequestError( deviceId: string, method: "GET" | "PUT" | "POST" | "DELETE", url: URL, - err: Error + err: Error, ): void { if (!DEBUG_FILE) return; const now = new Date(); @@ -156,7 +156,7 @@ export function outgoingHttpRequestError( export function incomingHttpResponse( httpResponse: IncomingMessage, deviceId: string, - body: string + body: string, ): void { if (!DEBUG_FILE) return; const now = new Date(); @@ -183,7 +183,7 @@ export function outgoingUdpMessage( remoteAddress: string, deviceId: string, remotePort: number, - body: string + body: string, ): void { if (!DEBUG_FILE) return; const now = new Date(); diff --git a/lib/default-provisions.ts b/lib/default-provisions.ts index 04b1d28..0b80aea 100644 --- a/lib/default-provisions.ts +++ b/lib/default-provisions.ts @@ -28,7 +28,7 @@ const MAX_DEPTH = +config.get("MAX_DEPTH"); export function refresh( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if ( (provision.length !== 2 || typeof provision[1] !== "string") && @@ -84,7 +84,7 @@ export function refresh( export function value( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if ( provision.length < 3 || @@ -127,7 +127,7 @@ export function value( export function tag( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if ( provision.length !== 3 || @@ -151,7 +151,7 @@ export function tag( export function reboot( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if (provision.length !== 1) throw new Error("Invalid arguments"); @@ -170,7 +170,7 @@ export function reboot( export function reset( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if (provision.length !== 1) throw new Error("Invalid arguments"); @@ -189,7 +189,7 @@ export function reset( export function download( sessionContext: SessionContext, provision: (string | number | boolean)[], - declarations: Declaration[] + declarations: Declaration[], ): boolean { if ( (provision.length !== 3 || @@ -234,7 +234,7 @@ export function instances( provision: (string | number | boolean)[], declarations: Declaration[], startRevision: number, - endRevision: number + endRevision: number, ): boolean { if (provision.length !== 3 || typeof provision[1] !== "string") throw new Error("Invalid arguments"); @@ -260,7 +260,7 @@ export function instances( const unpacked = device.unpack( sessionContext.deviceData, path, - startRevision + 1 + startRevision + 1, ); count = Math.max(0, unpacked.length + count); } diff --git a/lib/device.ts b/lib/device.ts index e0f79d7..f850184 100644 --- a/lib/device.ts +++ b/lib/device.ts @@ -43,7 +43,7 @@ function parseBool(v): boolean { } export function sanitizeParameterValue( - parameterValue: [string | number | boolean, string] + parameterValue: [string | number | boolean, string], ): [string | number | boolean, string] { if (parameterValue[0] != null) { switch (parameterValue[1]) { @@ -87,7 +87,7 @@ export function sanitizeParameterValue( export function getAliasDeclarations( path: Path, timestamp: number, - attrGet = null + attrGet = null, ): Declaration[] { const stripped = path.stripAlias(); let decs: Declaration[] = [ @@ -109,7 +109,7 @@ export function getAliasDeclarations( decs = decs.concat( getAliasDeclarations(parent.concat(p), timestamp, { value: timestamp, - }) + }), ); } } @@ -122,7 +122,7 @@ export function getAliasDeclarations( export function unpack( deviceData: DeviceData, path: Path, - revision?: number + revision?: number, ): Path[] { let allMatches = [] as Path[]; if (!path.alias) { @@ -194,7 +194,7 @@ export function clear( path: Path, timestamp: number, attributes: AttributeTimestamps, - changeFlags = 0 + changeFlags = 0, ): void { const changeTrackers = {}; @@ -212,7 +212,7 @@ export function clear( path, true, true, - descendantsTimestamp ? 99 : path.length + descendantsTimestamp ? 99 : path.length, )) { const tracker = deviceData.trackers.get(p); for (const k in tracker) changeTrackers[k] |= tracker[k]; @@ -274,7 +274,7 @@ export function set( path: Path, timestamp: number, attributes: Attributes, - toClear?: Clear[] + toClear?: Clear[], ): Clear[] { path = deviceData.paths.add(path); @@ -315,7 +315,7 @@ export function set( else if ( !compareEquality( attributes[attrName][1], - currentAttributes[attrName][1] + currentAttributes[attrName][1], ) ) changeFlags |= CHANGE_FLAGS[attrName]; @@ -334,7 +334,7 @@ export function set( path.slice(0, path.length - 1), timestamp, { object: [timestamp, 1] }, - toClear + toClear, ); } } @@ -377,7 +377,7 @@ export function track( deviceData: DeviceData, path: Path, marker: string, - attributes?: string[] + attributes?: string[], ): void { path = deviceData.paths.add(path); let f = 1; @@ -396,7 +396,7 @@ export function track( export function clearTrackers( deviceData: DeviceData, - tracker: string | string[] + tracker: string | string[], ): void { if (Array.isArray(tracker)) { for (const v of deviceData.trackers.values()) diff --git a/lib/extensions.ts b/lib/extensions.ts index 95f4d9c..cdba512 100644 --- a/lib/extensions.ts +++ b/lib/extensions.ts @@ -123,6 +123,6 @@ export async function killAll(): Promise { Object.entries(processes).map(([k, p]) => { delete processes[k]; return kill(p); - }) + }), ); } diff --git a/lib/fs.ts b/lib/fs.ts index b773dc7..3a1bec9 100644 --- a/lib/fs.ts +++ b/lib/fs.ts @@ -30,7 +30,7 @@ const getFile = memoize( async ( etag: string, size: number, - filename: string + filename: string, ): Promise> => { const chunks: Buffer[] = []; // Using for-await over the download stream can throw ERR_STREAM_PREMATURE_CLOSE @@ -41,7 +41,7 @@ const getFile = memoize( new PassThrough(), (err) => { if (err) throw err; - } + }, ); for await (const chunk of downloadStream) chunks.push(chunk); // Node 12-14 don't throw error when stream is closed prematurely. @@ -49,13 +49,13 @@ const getFile = memoize( if (size !== chunks.reduce((a, b) => a + b.length, 0)) throw new Error("File size mismatch"); return chunks; - } + }, ); async function* partialContent( chunks: Iterable, start: number, - end: number + end: number, ): AsyncIterable { let bytesToSkip = start; let bytesToRead = end - start; @@ -100,7 +100,7 @@ function matchEtag(etag: string, header: string): boolean { export async function listener( request: IncomingMessage, - response: ServerResponse + response: ServerResponse, ): Promise { if (request.method !== "GET" && request.method !== "HEAD") { response.writeHead(405, { Allow: "GET, HEAD" }); diff --git a/lib/gpn-heuristic.ts b/lib/gpn-heuristic.ts index 34313b1..1f4d680 100644 --- a/lib/gpn-heuristic.ts +++ b/lib/gpn-heuristic.ts @@ -31,7 +31,7 @@ const UNDISCOVERED_DEPTH = 7; // point has been discovered. export function estimateGpnCount( gpnPatterns: [Path, number][], - depth = 0 + depth = 0, ): number { const children: { [segment: string]: [Path, number][] } = {}; const wildcardChildren: [Path, number][] = []; diff --git a/lib/local-cache.ts b/lib/local-cache.ts index 640cf6c..4b87129 100644 --- a/lib/local-cache.ts +++ b/lib/local-cache.ts @@ -31,7 +31,7 @@ export class LocalCache { constructor( private cacheKey: string, - private callback: () => Promise<[string, T]> + private callback: () => Promise<[string, T]>, ) {} async getRevision(): Promise { diff --git a/lib/lock.ts b/lib/lock.ts index 10dafb2..afdd964 100644 --- a/lib/lock.ts +++ b/lib/lock.ts @@ -6,7 +6,7 @@ export async function acquireLock( lockName: string, ttl: number, timeout = 0, - token = Math.random().toString(36).slice(2) + token = Math.random().toString(36).slice(2), ): Promise { try { const now = Date.now(); @@ -18,7 +18,7 @@ export async function acquireLock( }, $currentDate: { timestamp: true }, }, - { upsert: true, returnDocument: "after" } + { upsert: true, returnDocument: "after" }, ); if (Math.abs(r.value.timestamp.getTime() - now) > CLOCK_SKEW_TOLERANCE) throw new Error("Database clock skew too great"); @@ -35,7 +35,7 @@ export async function acquireLock( export async function releaseLock( lockName: string, - token: string + token: string, ): Promise { const res = await collections.locks.deleteOne({ _id: lockName, diff --git a/lib/logger.ts b/lib/logger.ts index f812bf3..092dc01 100644 --- a/lib/logger.ts +++ b/lib/logger.ts @@ -156,13 +156,13 @@ export function close(): void { } export function flatten( - details: Record + details: Record, ): Record { if (details.sessionContext) { const sessionContext = details.sessionContext as SessionContext; details.deviceId = sessionContext.deviceId; details.remoteAddress = getRequestOrigin( - sessionContext.httpRequest + sessionContext.httpRequest, ).remoteAddress; delete details.sessionContext; } @@ -220,7 +220,7 @@ export function flatten( // For genieacs-ui if (details.context) { details.remoteAddress = getRequestOrigin( - details.context["req"] + details.context["req"], ).remoteAddress; if (details.context["state"].user) details.user = details.context["state"].user.username; @@ -235,7 +235,7 @@ export function flatten( function formatJson( details: Record, - systemd: boolean + systemd: boolean, ): string { if (systemd) { let severity = ""; @@ -251,7 +251,7 @@ function formatJson( function formatSimple( details: Record, - systemd: boolean + systemd: boolean, ): string { const skip = { user: true, diff --git a/lib/nbi.ts b/lib/nbi.ts index 0065d05..b930e62 100644 --- a/lib/nbi.ts +++ b/lib/nbi.ts @@ -65,14 +65,14 @@ async function getBody(request: IncomingMessage): Promise { export async function listener( request: IncomingMessage, - response: ServerResponse + response: ServerResponse, ): Promise { response.setHeader("GenieACS-Version", VERSION); const origin = getRequestOrigin(request); const url = new URL( request.url, - (origin.encrypted ? "https://" : "http://") + origin.host + (origin.encrypted ? "https://" : "http://") + origin.host, ); const body = await getBody(request).catch(() => null); @@ -83,7 +83,7 @@ export async function listener( Object.assign({}, Object.fromEntries(url.searchParams), { remoteAddress: origin.remoteAddress, message: `${request.method} ${url.pathname}`, - }) + }), ); return handler(request, response, url, body); } @@ -92,7 +92,7 @@ async function handler( request: IncomingMessage, response: ServerResponse, url: URL, - body: Buffer + body: Buffer, ): Promise { if (PRESETS_REGEX.test(url.pathname)) { const presetName = decodeURIComponent(PRESETS_REGEX.exec(url.pathname)[1]); @@ -150,7 +150,7 @@ async function handler( } } else if (PROVISIONS_REGEX.test(url.pathname)) { const provisionName = decodeURIComponent( - PROVISIONS_REGEX.exec(url.pathname)[1] + PROVISIONS_REGEX.exec(url.pathname)[1], ); if (request.method === "PUT") { const object = { @@ -183,7 +183,7 @@ async function handler( } } else if (VIRTUAL_PARAMETERS_REGEX.test(url.pathname)) { const virtualParameterName = decodeURIComponent( - VIRTUAL_PARAMETERS_REGEX.exec(url.pathname)[1] + VIRTUAL_PARAMETERS_REGEX.exec(url.pathname)[1], ); if (request.method === "PUT") { const object = { @@ -202,7 +202,7 @@ async function handler( await collections.virtualParameters.replaceOne( { _id: virtualParameterName }, object, - { upsert: true } + { upsert: true }, ); await cache.del("cwmp-local-cache-hash"); response.writeHead(200); @@ -225,7 +225,7 @@ async function handler( if (request.method === "POST") { const updateRes = await collections.devices.updateOne( { _id: deviceId }, - { $addToSet: { _tags: tag } } + { $addToSet: { _tags: tag } }, ); if (!updateRes.matchedCount) { @@ -239,7 +239,7 @@ async function handler( } else if (request.method === "DELETE") { const updateRes = await collections.devices.updateOne( { _id: deviceId }, - { $pull: { _tags: tag } } + { $pull: { _tags: tag } }, ); if (!updateRes.matchedCount) { @@ -277,7 +277,7 @@ async function handler( } else if (DEVICE_TASKS_REGEX.test(url.pathname)) { if (request.method === "POST") { const deviceId = decodeURIComponent( - DEVICE_TASKS_REGEX.exec(url.pathname)[1] + DEVICE_TASKS_REGEX.exec(url.pathname)[1], ); const conReq = url.searchParams.has("connection_request"); @@ -314,7 +314,7 @@ async function handler( } else { const status = await apiFunctions.connectionRequest( deviceId, - flattenDevice(dev) + flattenDevice(dev), ); if (status) { response.writeHead(504, status); @@ -394,7 +394,7 @@ async function handler( } } return exp; - } + }, ) as number; } @@ -403,14 +403,14 @@ async function handler( const sessionStarted = await apiFunctions.awaitSessionStart( deviceId, lastInform, - onlineThreshold + onlineThreshold, ); if (!sessionStarted) { status = "Task queued but not processed"; } else { const sessionEnded = await apiFunctions.awaitSessionEnd( deviceId, - 120000 + 120000, ); if (!sessionEnded) { status = "Task queued but not processed"; @@ -445,7 +445,7 @@ async function handler( if (request.method === "DELETE") { const task = await collections.tasks.findOne( { _id: new ObjectId(taskId) }, - { projection: { device: 1 } } + { projection: { device: 1 } }, ); if (!task) { @@ -481,7 +481,7 @@ async function handler( if (request.method === "POST") { const task = await collections.tasks.findOne( { _id: new ObjectId(taskId) }, - { projection: { device: 1 } } + { projection: { device: 1 } }, ); const deviceId = task.device; @@ -530,7 +530,7 @@ async function handler( filename, { metadata: metadata, - } + }, ); uploadStream.on("error", reject); @@ -589,7 +589,7 @@ async function handler( } const deviceId = decodeURIComponent( - DELETE_DEVICE_REGEX.exec(url.pathname)[1] + DELETE_DEVICE_REGEX.exec(url.pathname)[1], ); try { diff --git a/lib/ping.ts b/lib/ping.ts index be78bb3..7a2270c 100644 --- a/lib/ping.ts +++ b/lib/ping.ts @@ -88,7 +88,7 @@ export function parsePing(osPlatform: string, stdout: string): PingResult { export function ping( host: string, - callback: (err: Error, res?: PingResult, stdout?: string) => void + callback: (err: Error, res?: PingResult, stdout?: string) => void, ): void { // Validate input to prevent possible remote code execution // Credit to Alex Hordijk for reporting this vulnerability diff --git a/lib/query.ts b/lib/query.ts index da95583..d9055fd 100644 --- a/lib/query.ts +++ b/lib/query.ts @@ -118,7 +118,7 @@ function permute(param, val): any[] { } export function expand( - query: Record + query: Record, ): Record { const newQuery = {}; for (const [k, v] of Object.entries(query)) { @@ -147,7 +147,7 @@ export function expand( export function sanitizeQueryTypes( query: Record, - types: Record unknown> + types: Record unknown>, ): Record { for (const [k, v] of Object.entries(query)) { if (k[0] === "$") { diff --git a/lib/sandbox.ts b/lib/sandbox.ts index 316faf1..5aceb20 100644 --- a/lib/sandbox.ts +++ b/lib/sandbox.ts @@ -62,7 +62,7 @@ function runExtension(sessionContext, key, extCall): Promise { resolve(fault); }) .catch(reject); - })) + })), ); } @@ -78,7 +78,7 @@ class SandboxDate { number?, number?, number?, - number? + number?, ] ) { if (argumentList.length) return new Date(...argumentList); @@ -143,7 +143,7 @@ class ParameterWrapper { unpacked = device.unpack( state.sessionContext.deviceData, path, - state.revision + state.revision, ); } @@ -151,7 +151,7 @@ class ParameterWrapper { const attr = state.sessionContext.deviceData.attributes.get( unpacked[0], - state.revision + state.revision, )[attrName]; if (!attr) return UNDEFINED; @@ -170,7 +170,7 @@ class ParameterWrapper { unpacked = device.unpack( state.sessionContext.deviceData, path, - state.revision + state.revision, ); } @@ -189,7 +189,7 @@ class ParameterWrapper { unpacked = device.unpack( state.sessionContext.deviceData, path, - state.revision + state.revision, ); } @@ -207,7 +207,7 @@ class ParameterWrapper { unpacked = device.unpack( state.sessionContext.deviceData, path, - state.revision + state.revision, ); } @@ -220,7 +220,7 @@ class ParameterWrapper { function declare( path: string, timestamps: { [attr: string]: number }, - values: { [attr: string]: any } + values: { [attr: string]: any }, ): ParameterWrapper { state.uncommitted = true; if (!timestamps) timestamps = {}; @@ -286,7 +286,7 @@ function commit(): void { throw COMMIT; } else if (state.revision > state.maxRevision + 1) { throw new Error( - "Declare function should not be called from within a try/catch block" + "Declare function should not be called from within a try/catch block", ); } } @@ -351,12 +351,12 @@ function errorToFault(err: Error): Fault { fault.detail["stack"] = err.stack; // Trim the stack trace at the self-executing anonymous wrapper function const stackTrimIndex = fault.detail["stack"].match( - /\s+at\s[^\s]+\s+at\s[^\s]+\s\(vm\.js.+\)/ + /\s+at\s[^\s]+\s+at\s[^\s]+\s\(vm\.js.+\)/, ); if (stackTrimIndex) { fault.detail["stack"] = fault.detail["stack"].slice( 0, - stackTrimIndex.index + stackTrimIndex.index, ); } } @@ -370,7 +370,7 @@ export async function run( sessionContext: SessionContext, startRevision: number, maxRevision: number, - extCounter = 0 + extCounter = 0, ): Promise { state = { sessionContext: sessionContext, @@ -415,7 +415,7 @@ export async function run( await Promise.all( Object.entries(_state.extensions).map(async ([k, v]) => { fault = (await runExtension(_state.sessionContext, k, v)) || fault; - }) + }), ); if (fault) { @@ -435,7 +435,7 @@ export async function run( sessionContext, startRevision, maxRevision, - extCounter - _state.extCounter + extCounter - _state.extCounter, ); } diff --git a/lib/scheduling.ts b/lib/scheduling.ts index 4715855..b2f994c 100644 --- a/lib/scheduling.ts +++ b/lib/scheduling.ts @@ -37,7 +37,7 @@ export function variance(deviceId: string, vrnc: number): number { export function interval( timestamp: number, intrvl: number, - offset = 0 + offset = 0, ): number { return Math.trunc((timestamp + offset) / intrvl) * intrvl - offset; } @@ -52,7 +52,7 @@ export function parseCron(cronExp: string): any { export function cron( timestamp: number, schedule: unknown, - offset = 0 + offset = 0, ): number[] { // TODO later.js doesn't throw erorr if expression is invalid! const ret = [0, 0]; diff --git a/lib/server.ts b/lib/server.ts index 667a4bd..25b5ad2 100644 --- a/lib/server.ts +++ b/lib/server.ts @@ -80,7 +80,7 @@ type Promisify any> = ( export function start( options: ServerOptions, - _listener: Promisify + _listener: Promisify, ): void { listener = (req, res) => { if (stopping) res.setHeader("Connection", "close"); diff --git a/lib/session.ts b/lib/session.ts index eac565e..78dd740 100644 --- a/lib/session.ts +++ b/lib/session.ts @@ -85,7 +85,7 @@ function initDeviceData(): DeviceData { export function init( deviceId: string, cwmpVersion: string, - timeout: number + timeout: number, ): SessionContext { const timestamp = Date.now(); const sessionContext: SessionContext = { @@ -120,7 +120,7 @@ function generateRpcId(sessionContext: SessionContext): string { export function configContextCallback( sessionContext: SessionContext, - exp: Expression + exp: Expression, ): Expression { if (!Array.isArray(exp)) return exp; if (exp[0] === "PARAM" && typeof exp[1] === "string") { @@ -148,7 +148,7 @@ export function configContextCallback( export async function inform( sessionContext: SessionContext, - rpcReq: InformRequest + rpcReq: InformRequest, ): Promise { const timestamp = sessionContext.timestamp + sessionContext.iteration + 1; const params: [Path, number, Attributes][] = [ @@ -262,7 +262,7 @@ export async function inform( p[0], p[1], p[2], - toClear + toClear, ); } } @@ -277,7 +277,7 @@ export async function inform( export async function transferComplete( sessionContext: SessionContext, - rpcReq: TransferCompleteRequest + rpcReq: TransferCompleteRequest, ): Promise<{ acsResponse: AcsResponse; operation: Operation; fault: Fault }> { const revision = (sessionContext.revisions[sessionContext.revisions.length - 1] || 0) + 1; @@ -323,69 +323,69 @@ export async function transferComplete( let p; p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.LastDownload`) + Path.parse(`Downloads.${instance}.LastDownload`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [operation.timestamp, "xsd:dateTime"]] }, - toClear + toClear, ); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.LastFileType`) + Path.parse(`Downloads.${instance}.LastFileType`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [operation.args.fileType, "xsd:string"]] }, - toClear + toClear, ); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.LastFileName`) + Path.parse(`Downloads.${instance}.LastFileName`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [operation.args.fileName, "xsd:string"]] }, - toClear + toClear, ); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.LastTargetFileName`) + Path.parse(`Downloads.${instance}.LastTargetFileName`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [operation.args.targetFileName, "xsd:string"]] }, - toClear + toClear, ); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.StartTime`) + Path.parse(`Downloads.${instance}.StartTime`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [+rpcReq.startTime, "xsd:dateTime"]] }, - toClear + toClear, ); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.CompleteTime`) + Path.parse(`Downloads.${instance}.CompleteTime`), ); toClear = device.set( sessionContext.deviceData, p, timestamp, { value: [timestamp, [+rpcReq.completeTime, "xsd:dateTime"]] }, - toClear + toClear, ); if (toClear) { @@ -402,20 +402,20 @@ export async function transferComplete( function revertDownloadParameters( sessionContext: SessionContext, - instance + instance, ): void { const timestamp = sessionContext.timestamp + sessionContext.iteration + 1; let p; p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.LastDownload`) + Path.parse(`Downloads.${instance}.LastDownload`), ); const lastDownload = sessionContext.deviceData.attributes.get(p); p = sessionContext.deviceData.paths.add( - Path.parse(`Downloads.${instance}.Download`) + Path.parse(`Downloads.${instance}.Download`), ); const toClear = device.set(sessionContext.deviceData, p, timestamp, { @@ -429,7 +429,7 @@ function revertDownloadParameters( } export async function timeoutOperations( - sessionContext: SessionContext + sessionContext: SessionContext, ): Promise<{ faults: Fault[]; operations: Operation[] }> { const revision = (sessionContext.revisions[sessionContext.revisions.length - 1] || 0) + 1; @@ -439,7 +439,7 @@ export async function timeoutOperations( const operations = []; for (const [commandKey, operation] of Object.entries( - sessionContext.operations + sessionContext.operations, )) { if (operation.name !== "Download") throw new Error(`Unknown operation name ${operation.name}`); @@ -450,7 +450,7 @@ export async function timeoutOperations( "cwmp.downloadTimeout", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ) * 1000; if (sessionContext.timestamp < operation.timestamp + DOWNLOAD_TIMEOUT) @@ -467,7 +467,7 @@ export async function timeoutOperations( "cwmp.downloadSuccessOnTimeout", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); if (SUCCESS_ON_TIMEOUT) { @@ -505,7 +505,7 @@ export async function timeoutOperations( export function addProvisions( sessionContext: SessionContext, channel: string, - provisions: [string, ...Expression[]][] + provisions: [string, ...Expression[]][], ): void { // Multiply by two because every iteration is two // phases: read and update @@ -515,7 +515,7 @@ export function addProvisions( "cwmp.maxCommitIterations", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ) * 2; delete sessionContext.syncState; @@ -570,7 +570,7 @@ export function clearProvisions(sessionContext: SessionContext): void { "cwmp.maxCommitIterations", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ) * 2; if (sessionContext.revisions[sessionContext.revisions.length - 1] > 0) { @@ -599,7 +599,7 @@ async function runProvisions( sessionContext: SessionContext, provisions: any[][], startRevision: number, - endRevision: number + endRevision: number, ): Promise { const allProvisions = localCache.getProvisions(sessionContext.cacheSnapshot); @@ -616,7 +616,7 @@ async function runProvisions( provision, dec, startRevision, - endRevision + endRevision, ); } catch (err) { fault = { @@ -645,9 +645,9 @@ async function runProvisions( { args: provision.slice(1) }, sessionContext, startRevision, - endRevision + endRevision, ); - }) + }), ); let done = true; @@ -678,10 +678,10 @@ async function runVirtualParameters( sessionContext: SessionContext, provisions: any[][], startRevision: number, - endRevision: number + endRevision: number, ): Promise { const allVirtualParameters = localCache.getVirtualParameters( - sessionContext.cacheSnapshot + sessionContext.cacheSnapshot, ); const res = await Promise.all( @@ -695,7 +695,7 @@ async function runVirtualParameters( globals, sessionContext, startRevision, - endRevision + endRevision, ); if (r.done && !r.fault) { @@ -758,7 +758,7 @@ async function runVirtualParameters( r.returnValue = ret; } return r; - }) + }), ); let done = true; @@ -793,7 +793,7 @@ async function runVirtualParameters( function runDeclarations( sessionContext: SessionContext, - declarations: Declaration[] + declarations: Declaration[], ): VirtualParameterDeclaration[] { if (!sessionContext.syncState) { sessionContext.syncState = { @@ -827,7 +827,7 @@ function runDeclarations( const allDeclareAttributeValues = new Map(); const allVirtualParameters = localCache.getVirtualParameters( - sessionContext.cacheSnapshot + sessionContext.cacheSnapshot, ); function mergeAttributeTimestamps(p: Path, attrs: AttributeTimestamps): void { @@ -845,7 +845,7 @@ function runDeclarations( function mergeAttributeValues( p: Path, attrs: AttributeValues, - defer: boolean + defer: boolean, ): void { let cur = allDeclareAttributeValues.get(p); if (!cur) { @@ -872,7 +872,7 @@ function runDeclarations( sessionContext.deviceData.paths.add(Path.parse("VirtualParameters.*")); for (const k of Object.keys(allVirtualParameters)) { sessionContext.deviceData.paths.add( - Path.parse(`VirtualParameters.${k}`) + Path.parse(`VirtualParameters.${k}`), ); } } @@ -887,13 +887,13 @@ function runDeclarations( if (path.alias) { const aliasDecs = device.getAliasDeclarations( path, - declaration.pathGet || 1 + declaration.pathGet || 1, ); for (const ad of aliasDecs) { const p = sessionContext.deviceData.paths.add(ad.path); allDeclareTimestamps.set( p, - Math.max(ad.pathGet || 1, allDeclareTimestamps.get(p) || 0) + Math.max(ad.pathGet || 1, allDeclareTimestamps.get(p) || 0), ); let attrTrackers; if (ad.attrGet) { @@ -905,7 +905,7 @@ function runDeclarations( sessionContext.deviceData, p, "prerequisite", - attrTrackers + attrTrackers, ); } @@ -913,7 +913,7 @@ function runDeclarations( for (const u of unpacked) { allDeclareTimestamps.set( u, - Math.max(declaration.pathGet || 1, allDeclareTimestamps.get(u) || 0) + Math.max(declaration.pathGet || 1, allDeclareTimestamps.get(u) || 0), ); if (declaration.attrGet) mergeAttributeTimestamps(u, declaration.attrGet); @@ -922,7 +922,7 @@ function runDeclarations( path = sessionContext.deviceData.paths.add(path); allDeclareTimestamps.set( path, - Math.max(declaration.pathGet || 1, allDeclareTimestamps.get(path) || 0) + Math.max(declaration.pathGet || 1, allDeclareTimestamps.get(path) || 0), ); if (declaration.attrGet) mergeAttributeTimestamps(path, declaration.attrGet); @@ -982,17 +982,17 @@ function runDeclarations( keys, minInstances, maxInstances, - declaration.defer + declaration.defer, ); } else { const parentsUnpacked = device.unpack( sessionContext.deviceData, - parent + parent, ); for (const par of parentsUnpacked) { const up = device.unpack( sessionContext.deviceData, - par.concat(path.slice(-1)) + par.concat(path.slice(-1)), ); // Ensure writable attr is available @@ -1006,7 +1006,7 @@ function runDeclarations( keys, minInstances, maxInstances, - declaration.defer + declaration.defer, ); } } @@ -1017,13 +1017,13 @@ function runDeclarations( sessionContext, allDeclareTimestamps, allDeclareAttributeTimestamps, - allDeclareAttributeValues + allDeclareAttributeValues, ); } export async function rpcRequest( sessionContext: SessionContext, - _declarations: Declaration[] + _declarations: Declaration[], ): Promise<{ fault: Fault; rpcId: string; rpc: AcsRequest }> { if (sessionContext.rpcRequest != null) { return { @@ -1050,7 +1050,7 @@ export async function rpcRequest( sessionContext.deviceData.timestamps.revision = revision; sessionContext.deviceData.attributes.revision = revision; - let run, provisions; + let run: typeof runProvisions, provisions; if (inception === 0) { run = runProvisions; provisions = sessionContext.provisions; @@ -1069,7 +1069,7 @@ export async function rpcRequest( sessionContext, provisions, sessionContext.revisions[inception - 1] || 0, - sessionContext.revisions[inception] + sessionContext.revisions[inception], ); if (fault) { @@ -1164,7 +1164,7 @@ export async function rpcRequest( "cwmp.maxCommitIterations", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ) * 2; if (sessionContext.iteration >= MAX_ITERATIONS * (sessionContext.cycle + 1)) { @@ -1199,14 +1199,14 @@ export async function rpcRequest( let vpd = runDeclarations( sessionContext, - sessionContext.declarations[inception] + sessionContext.declarations[inception], ); const timestamp = sessionContext.timestamp + sessionContext.iteration; let toClear; const allVirtualParameters = localCache.getVirtualParameters( - sessionContext.cacheSnapshot + sessionContext.cacheSnapshot, ); vpd = vpd.filter((declaration) => { @@ -1220,7 +1220,7 @@ export async function rpcRequest( declaration[0], timestamp, { object: [timestamp, 1], writable: [timestamp, 0] }, - toClear + toClear, ); } @@ -1235,7 +1235,7 @@ export async function rpcRequest( { object: [timestamp, 0], }, - toClear + toClear, ); } toClear = device.set( @@ -1243,7 +1243,7 @@ export async function rpcRequest( declaration[0], timestamp, null, - toClear + toClear, ); return false; } else if ( @@ -1257,7 +1257,7 @@ export async function rpcRequest( declaration[0], timestamp, { object: [timestamp, 0] }, - toClear + toClear, ); } @@ -1269,7 +1269,7 @@ export async function rpcRequest( for (const p of sessionContext.deviceData.paths.find( declaration[0], false, - true + true, )) { if (sessionContext.deviceData.attributes.has(p)) { if (!toClear) toClear = []; @@ -1295,7 +1295,7 @@ export async function rpcRequest( let provisions = generateGetVirtualParameterProvisions( sessionContext, - sessionContext.syncState.virtualParameterDeclarations[inception] + sessionContext.syncState.virtualParameterDeclarations[inception], ); if (!provisions) { @@ -1325,7 +1325,7 @@ export async function rpcRequest( writable: [timestamp, 1], value: [timestamp, [true, "xsd:boolean"]], }, - toClear + toClear, ); } else if (c && !v) { toClear = device.set( @@ -1333,7 +1333,7 @@ export async function rpcRequest( p, timestamp, null, - toClear + toClear, ); } } @@ -1346,7 +1346,7 @@ export async function rpcRequest( for (const p of sessionContext.deviceData.paths.find( Path.parse("Downloads.*"), false, - true + true, )) { if ( +p.segments[1] > index && @@ -1363,7 +1363,7 @@ export async function rpcRequest( Path.parse("Downloads"), timestamp, { object: [timestamp, 1], writable: [timestamp, 1] }, - toClear + toClear, ); toClear = device.set( @@ -1371,7 +1371,7 @@ export async function rpcRequest( Path.parse(`Downloads.${index}`), timestamp, { object: [timestamp, 1], writable: [timestamp, 1] }, - toClear + toClear, ); const params = { @@ -1412,7 +1412,7 @@ export async function rpcRequest( v.value as [string | number | boolean, string], ], }, - toClear + toClear, ); } @@ -1421,7 +1421,7 @@ export async function rpcRequest( Path.parse(`Downloads.${index}.*`), timestamp, null, - toClear + toClear, ); } @@ -1433,7 +1433,7 @@ export async function rpcRequest( instance, timestamp, null, - toClear + toClear, ); for (const p of sessionContext.syncState.downloadsValues.keys()) { if (p.segments[1] === instance.segments[1]) @@ -1454,7 +1454,7 @@ export async function rpcRequest( p, timestamp, { value: [timestamp, val] }, - toClear + toClear, ); } } @@ -1471,7 +1471,7 @@ export async function rpcRequest( provisions = generateSetVirtualParameterProvisions( sessionContext, - sessionContext.syncState.virtualParameterDeclarations[inception] + sessionContext.syncState.virtualParameterDeclarations[inception], ); if (!provisions) sessionContext.rpcRequest = generateSetRpcRequest(sessionContext); @@ -1526,7 +1526,7 @@ export async function rpcRequest( Path.parse(`VirtualParameters.${vparams[i][0]}`), timestamp, vpu, - toClear + toClear, ); } @@ -1539,7 +1539,7 @@ export async function rpcRequest( } function generateGetRpcRequest( - sessionContext: SessionContext + sessionContext: SessionContext, ): GetParameterNames | GetParameterValues | GetParameterAttributes { const syncState = sessionContext.syncState; if (!syncState) return null; @@ -1550,7 +1550,7 @@ function generateGetRpcRequest( path, false, true, - 99 + 99, )) { if ( syncState.refreshAttributes.value.has(p) || @@ -1580,7 +1580,7 @@ function generateGetRpcRequest( path, false, true, - 99 + 99, )) { if ( syncState.refreshAttributes.value.has(p) || @@ -1618,11 +1618,11 @@ function generateGetRpcRequest( "cwmp.gpnNextLevel", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) - ); + (e) => configContextCallback(sessionContext, e), + ) as number; const paths = Array.from(syncState.gpn.keys()).sort( - (a, b) => b.length - a.length + (a, b) => b.length - a.length, ); let path = paths.pop(); @@ -1633,7 +1633,7 @@ function generateGetRpcRequest( "cwmp.skipRootGpn", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); if (SKIP_ROOT_GPN) path = paths.pop(); @@ -1657,7 +1657,7 @@ function generateGetRpcRequest( path, true, false, - 99 + 99, )) { const v = syncState.gpnPatterns.get(p); if (v) patterns.push([p, (v >> path.length) << path.length]); @@ -1674,7 +1674,7 @@ function generateGetRpcRequest( path, false, true, - 99 + 99, )) syncState.gpn.delete(p); } @@ -1693,8 +1693,8 @@ function generateGetRpcRequest( "cwmp.gpvBatchSize", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) - ); + (e) => configContextCallback(sessionContext, e), + ) as number; const parameterNames: string[] = []; for (const path of syncState.refreshAttributes.value) { @@ -1724,8 +1724,8 @@ function generateGetRpcRequest( "cwmp.gpvBatchSize", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) - ); + (e) => configContextCallback(sessionContext, e), + ) as number; const parameterNames: string[] = []; for (const path of syncState.refreshAttributes.notification) { @@ -1768,7 +1768,7 @@ function compareAccessLists(list1: string[], list2: string[]): boolean { } function generateSetRpcRequest( - sessionContext: SessionContext + sessionContext: SessionContext, ): ( | SetParameterValues | SetParameterAttributes @@ -1788,7 +1788,7 @@ function generateSetRpcRequest( "cwmp.skipWritableCheck", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); const canWrite = (attrs: Attributes): boolean => @@ -1831,15 +1831,15 @@ function generateSetRpcRequest( "cwmp.gpvBatchSize", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) - ); + (e) => configContextCallback(sessionContext, e), + ) as number; const DATETIME_MILLISECONDS = !!localCache.getConfig( sessionContext.cacheSnapshot, "cwmp.datetimeMilliseconds", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); const BOOLEAN_LITERAL = !!localCache.getConfig( @@ -1847,7 +1847,7 @@ function generateSetRpcRequest( "cwmp.booleanLiteral", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); const parameterValues: [string, string | number | boolean, string][] = []; @@ -1920,17 +1920,18 @@ function generateSetRpcRequest( for (const [p, t] of syncState.downloadsDownload) { if (!(t > 0 && t <= sessionContext.timestamp)) continue; const attrs = deviceData.attributes.get(p); - if (!(t <= attrs?.value?.[1]?.[0])) { + const t2 = attrs?.value?.[1]?.[0] as number; + if (!(t <= t2)) { const fileTypeAttrs = deviceData.attributes.get( - deviceData.paths.get(p.slice(0, -1).concat(Path.parse("FileType"))) + deviceData.paths.get(p.slice(0, -1).concat(Path.parse("FileType"))), ); const fileNameAttrs = deviceData.attributes.get( - deviceData.paths.get(p.slice(0, -1).concat(Path.parse("FileName"))) + deviceData.paths.get(p.slice(0, -1).concat(Path.parse("FileName"))), ); const targetFileNameAttrs = deviceData.attributes.get( deviceData.paths.get( - p.slice(0, -1).concat(Path.parse("TargetFileName")) - ) + p.slice(0, -1).concat(Path.parse("TargetFileName")), + ), ); return { @@ -1948,7 +1949,8 @@ function generateSetRpcRequest( if (syncState.reboot > 0 && syncState.reboot <= sessionContext.timestamp) { const p = sessionContext.deviceData.paths.get(Path.parse("Reboot")); const attrs = p ? sessionContext.deviceData.attributes.get(p) : null; - if (!(attrs?.value?.[1][0] >= syncState.reboot)) { + const t = attrs?.value?.[1][0] as number; + if (!(t >= syncState.reboot)) { delete syncState.reboot; return { name: "Reboot" }; } @@ -1961,7 +1963,8 @@ function generateSetRpcRequest( ) { const p = sessionContext.deviceData.paths.get(Path.parse("FactoryReset")); const attrs = p ? sessionContext.deviceData.attributes.get(p) : null; - if (!(attrs?.value?.[1][0] >= syncState.factoryReset)) { + const t = attrs?.value?.[1][0] as number; + if (!(t >= syncState.factoryReset)) { delete syncState.factoryReset; return { name: "FactoryReset" }; } @@ -1972,13 +1975,13 @@ function generateSetRpcRequest( function generateGetVirtualParameterProvisions( sessionContext: SessionContext, - virtualParameterDeclarations: VirtualParameterDeclaration[] + virtualParameterDeclarations: VirtualParameterDeclaration[], ): [ string, AttributeTimestamps, AttributeValues, AttributeTimestamps, - AttributeValues + AttributeValues, ][] { let provisions; if (virtualParameterDeclarations) { @@ -2018,13 +2021,13 @@ function generateGetVirtualParameterProvisions( function generateSetVirtualParameterProvisions( sessionContext: SessionContext, - virtualParameterDeclarations: VirtualParameterDeclaration[] + virtualParameterDeclarations: VirtualParameterDeclaration[], ): [ string, AttributeTimestamps, AttributeValues, AttributeTimestamps, - AttributeValues + AttributeValues, ][] { let provisions; if (virtualParameterDeclarations) { @@ -2040,7 +2043,7 @@ function generateSetVirtualParameterProvisions( ) { const val = declaration[2].value.slice() as [ string | number | boolean, - string + string, ]; if (val[1] == null) val[1] = attrs.value[1][1]; @@ -2075,7 +2078,7 @@ function processDeclarations( sessionContext: SessionContext, allDeclareTimestamps, allDeclareAttributeTimestamps: Map, - allDeclareAttributeValues: Map + allDeclareAttributeValues: Map, ): VirtualParameterDeclaration[] { const deviceData = sessionContext.deviceData; const syncState = sessionContext.syncState; @@ -2083,7 +2086,7 @@ function processDeclarations( const root = sessionContext.deviceData.paths.add(Path.parse("")); const paths = deviceData.paths.find(root, false, true, 99); paths.sort((a, b): number => - a.wildcard === b.wildcard ? a.length - b.length : a.wildcard - b.wildcard + a.wildcard === b.wildcard ? a.length - b.length : a.wildcard - b.wildcard, ); const virtualParameterDeclarations = [] as VirtualParameterDeclaration[]; @@ -2092,7 +2095,7 @@ function processDeclarations( leafParam: Path, leafIsObject: number, leafTimestamp: number, - _paths: Path[] + _paths: Path[], ): void { const currentPath = _paths[0]; const children = new Map(); @@ -2125,11 +2128,11 @@ function processDeclarations( currentTimestamp = Math.max( currentTimestamp, - deviceData.timestamps.get(path) || 0 + deviceData.timestamps.get(path) || 0, ); declareTimestamp = Math.max( declareTimestamp, - allDeclareTimestamps.get(path) || 0 + allDeclareTimestamps.get(path) || 0, ); if (currentPath.wildcard === 0) { @@ -2138,12 +2141,12 @@ function processDeclarations( if (declareAttributeTimestamps) { declareAttributeTimestamps = Object.assign( {}, - declareAttributeTimestamps + declareAttributeTimestamps, ); for (const [k, v] of Object.entries(attrs)) { declareAttributeTimestamps[k] = Math.max( v, - declareAttributeTimestamps[k] || 0 + declareAttributeTimestamps[k] || 0, ); } } else { @@ -2195,7 +2198,7 @@ function processDeclarations( device.sanitizeParameterValue([ declareAttributeValues.value[0], "xsd:boolean", - ])[0] as boolean + ])[0] as boolean, ); } @@ -2214,12 +2217,12 @@ function processDeclarations( if (currentPath.segments[2] === "Download") { syncState.downloadsDownload.set( currentPath, - declareAttributeValues.value[0] + declareAttributeValues.value[0], ); } else { syncState.downloadsValues.set( currentPath, - declareAttributeValues.value[0] + declareAttributeValues.value[0], ); } } @@ -2232,7 +2235,7 @@ function processDeclarations( if (currentPath.wildcard === 0) { if (declareAttributeTimestamps) { for (const [attrName, attrTimestamp] of Object.entries( - declareAttributeTimestamps + declareAttributeTimestamps, )) { if ( !( @@ -2270,14 +2273,14 @@ function processDeclarations( const f = 1 << leafParam.length; syncState.gpnPatterns.set( leafParam, - f | syncState.gpnPatterns.get(leafParam) + f | syncState.gpnPatterns.get(leafParam), ); } else { const f = ((1 << currentPath.length) - 1) ^ ((1 << leafParam.length) - 1); syncState.gpnPatterns.set( currentPath, - f | syncState.gpnPatterns.get(currentPath) + f | syncState.gpnPatterns.get(currentPath), ); } } else { @@ -2288,7 +2291,7 @@ function processDeclarations( ((1 << leafParam.length) - 1); syncState.gpnPatterns.set( currentPath, - f | syncState.gpnPatterns.get(currentPath) + f | syncState.gpnPatterns.get(currentPath), ); } } @@ -2297,7 +2300,7 @@ function processDeclarations( if (currentAttributes) { if (declareAttributeTimestamps) { for (const [attrName, attrTimestamp] of Object.entries( - declareAttributeTimestamps + declareAttributeTimestamps, )) { if ( !( @@ -2386,7 +2389,7 @@ function processInstances( keys: Record, minInstances: number, maxInstances: number, - defer: boolean + defer: boolean, ): void { parent = sessionContext.deviceData.paths.add(parent); let instancesToCreate: InstanceSet, instancesToDelete: Set; @@ -2443,7 +2446,7 @@ function processInstances( export async function rpcResponse( sessionContext: SessionContext, id: string, - _rpcRes: CpeResponse + _rpcRes: CpeResponse, ): Promise { function invalidResponse(message: string): Fault { return { @@ -2512,7 +2515,7 @@ export async function rpcResponse( "cwmp.datetimeMilliseconds", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); const BOOLEAN_LITERAL = !!localCache.getConfig( @@ -2520,7 +2523,7 @@ export async function rpcResponse( "cwmp.booleanLiteral", {}, sessionContext.timestamp, - (e) => configContextCallback(sessionContext, e) + (e) => configContextCallback(sessionContext, e), ); const r: SetParameterValues = { @@ -2565,7 +2568,7 @@ export async function rpcResponse( object: [timestamp, 0], value: [timestamp, [value, type]], }, - toClear + toClear, ); } @@ -2584,7 +2587,7 @@ export async function rpcResponse( object: [timestamp, 0], value: [timestamp, ["", "xsd:string"]], }, - toClear + toClear, ); } } @@ -2611,7 +2614,7 @@ export async function rpcResponse( notification: [timestamp, notification], accessList: [timestamp, accessList], }, - toClear + toClear, ); } @@ -2630,7 +2633,7 @@ export async function rpcResponse( notification: [timestamp, 0], accessList: [timestamp, []], }, - toClear + toClear, ); } } @@ -2715,7 +2718,7 @@ export async function rpcResponse( object: [timestamp, object ? 1 : 0], writable: [timestamp, writable ? 1 : 0], }, - toClear + toClear, ); } @@ -2725,7 +2728,7 @@ export async function rpcResponse( path, timestamp, null, - toClear + toClear, ); } } else if (rpcRes.name === "SetParameterValuesResponse") { @@ -2744,7 +2747,7 @@ export async function rpcResponse( p.slice(1) as [string | number | boolean, string], ], }, - toClear + toClear, ); } } else if (rpcRes.name === "SetParameterAttributesResponse") { @@ -2774,7 +2777,7 @@ export async function rpcResponse( Path.parse(p[0]), timestamp + 1, attrs, - toClear + toClear, ); } } else if (rpcRes.name === "AddObjectResponse") { @@ -2786,7 +2789,7 @@ export async function rpcResponse( Path.parse(rpcReq.objectName + rpcRes.instanceNumber), timestamp + 1, { object: [timestamp + 1, 1] }, - toClear + toClear, ); } else if (rpcRes.name === "DeleteObjectResponse") { if (rpcReq.name !== "DeleteObject") @@ -2797,7 +2800,7 @@ export async function rpcResponse( Path.parse(rpcReq.objectName.slice(0, -1)), timestamp + 1, null, - toClear + toClear, ); } else if (rpcRes.name === "RebootResponse") { if (rpcReq.name !== "Reboot") @@ -2808,7 +2811,7 @@ export async function rpcResponse( Path.parse("Reboot"), timestamp + 1, { value: [timestamp + 1, [sessionContext.timestamp, "xsd:dateTime"]] }, - toClear + toClear, ); } else if (rpcRes.name === "FactoryResetResponse") { if (rpcReq.name !== "FactoryReset") @@ -2819,7 +2822,7 @@ export async function rpcResponse( Path.parse("FactoryReset"), timestamp + 1, { value: [timestamp + 1, [sessionContext.timestamp, "xsd:dateTime"]] }, - toClear + toClear, ); } else if (rpcRes.name === "DownloadResponse") { if (rpcReq.name !== "Download") @@ -2830,7 +2833,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.Download`), timestamp + 1, { value: [timestamp + 1, [sessionContext.timestamp, "xsd:dateTime"]] }, - toClear + toClear, ); if (rpcRes.status === 0) { @@ -2841,7 +2844,7 @@ export async function rpcResponse( { value: [timestamp + 1, [sessionContext.timestamp, "xsd:dateTime"]], }, - toClear + toClear, ); toClear = device.set( @@ -2849,7 +2852,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.LastFileType`), timestamp + 1, { value: [timestamp + 1, [rpcReq.fileType, "xsd:string"]] }, - toClear + toClear, ); toClear = device.set( @@ -2857,7 +2860,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.LastFileName`), timestamp + 1, { value: [timestamp + 1, [rpcReq.fileType, "xsd:string"]] }, - toClear + toClear, ); toClear = device.set( @@ -2865,7 +2868,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.LastTargetFileName`), timestamp + 1, { value: [timestamp + 1, [rpcReq.fileType, "xsd:string"]] }, - toClear + toClear, ); toClear = device.set( @@ -2873,7 +2876,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.StartTime`), timestamp + 1, { value: [timestamp + 1, [+rpcRes.startTime, "xsd:dateTime"]] }, - toClear + toClear, ); toClear = device.set( @@ -2881,7 +2884,7 @@ export async function rpcResponse( Path.parse(`Downloads.${rpcReq.instance}.CompleteTime`), timestamp + 1, { value: [timestamp + 1, [+rpcRes.completeTime, "xsd:dateTime"]] }, - toClear + toClear, ); } else { const operation = { @@ -2923,7 +2926,7 @@ export async function rpcResponse( export async function rpcFault( sessionContext: SessionContext, id: string, - faultResponse: CpeFault + faultResponse: CpeFault, ): Promise { const rpcReq = sessionContext.rpcRequest; delete sessionContext.syncState; @@ -2947,7 +2950,7 @@ export async function rpcFault( } } else if (rpcReq.name === "GetParameterValues") { toClear = rpcReq.parameterNames.map( - (p) => [Path.parse(p.replace(/\.$/, "")), timestamp] as Clear + (p) => [Path.parse(p.replace(/\.$/, "")), timestamp] as Clear, ); } else if (rpcReq.name === "SetParameterValues") { toClear = ( @@ -2959,11 +2962,11 @@ export async function rpcFault( toClear = [[Path.parse(rpcReq.objectName.replace(/\.$/, "")), timestamp]]; } else if (rpcReq.name === "GetParameterAttributes") { toClear = rpcReq.parameterNames.map( - (p) => [Path.parse(p.replace(/\.$/, "")), timestamp] as Clear + (p) => [Path.parse(p.replace(/\.$/, "")), timestamp] as Clear, ); } else if (rpcReq.name === "SetParameterAttributes") { toClear = (rpcReq.parameterList as [string, number, string[]][]).map( - (p) => [Path.parse(p[0].replace(/\.$/, "")), timestamp] as Clear + (p) => [Path.parse(p[0].replace(/\.$/, "")), timestamp] as Clear, ); } @@ -2984,7 +2987,7 @@ export async function rpcFault( } export async function deserialize( - sessionContextString: string + sessionContextString: string, ): Promise { const sessionContext = JSON.parse(sessionContextString) as SessionContext; @@ -3011,7 +3014,7 @@ export async function deserialize( } export async function serialize( - sessionContext: SessionContext + sessionContext: SessionContext, ): Promise { const deviceData = []; @@ -3019,7 +3022,7 @@ export async function serialize( Path.parse(""), false, false, - 99 + 99, )) { const e = [ path.toString(), diff --git a/lib/soap.ts b/lib/soap.ts index 7894dc1..f36579c 100644 --- a/lib/soap.ts +++ b/lib/soap.ts @@ -158,7 +158,7 @@ const getValueType = memoize((str: string) => { }); function parameterValueList( - xml: Element + xml: Element, ): [Path, string | number | boolean, string][] { return xml.children .map<[Path, string | number | boolean, string]>((e) => { @@ -291,7 +291,7 @@ function GetParameterNamesResponse(xml): GetParameterNamesResponse { return { name: "GetParameterNamesResponse", parameterList: parameterInfoList( - xml.children.find((n) => n.localName === "ParameterList") + xml.children.find((n) => n.localName === "ParameterList"), ), }; } @@ -308,7 +308,7 @@ function GetParameterValuesResponse(xml: Element): GetParameterValuesResponse { return { name: "GetParameterValuesResponse", parameterList: parameterValueList( - xml.children.find((n) => n.localName === "ParameterList") + xml.children.find((n) => n.localName === "ParameterList"), ), }; } @@ -322,12 +322,12 @@ function GetParameterAttributes(methodRequest): string { } function GetParameterAttributesResponse( - xml: Element + xml: Element, ): GetParameterAttributesResponse { return { name: "GetParameterAttributesResponse", parameterList: parameterAttributeList( - xml.children.find((n) => n.localName === "ParameterList") + xml.children.find((n) => n.localName === "ParameterList"), ), }; } @@ -509,19 +509,19 @@ function Download(methodRequest): string { }${methodRequest.fileType}${ methodRequest.url }${encodeEntities( - methodRequest.username || "" + methodRequest.username || "", )}${encodeEntities( - methodRequest.password || "" + methodRequest.password || "", )}${ methodRequest.fileSize || "0" }${encodeEntities( - methodRequest.targetFileName || "" + methodRequest.targetFileName || "", )}${ methodRequest.delaySeconds || "0" }${encodeEntities( - methodRequest.successUrl || "" + methodRequest.successUrl || "", )}${encodeEntities( - methodRequest.failureUrl || "" + methodRequest.failureUrl || "", )}`; } @@ -732,13 +732,13 @@ function RequestDownloadResponse(): string { function AcsFault(f: CpeFault): string { return `${encodeEntities( - f.faultCode + f.faultCode, )}${encodeEntities( - f.faultString + f.faultString, )}${encodeEntities( - f.detail.faultCode + f.detail.faultCode, )}${encodeEntities( - f.detail.faultString + f.detail.faultString, )}`; } @@ -839,7 +839,7 @@ function fault(xml: Element): CpeFault { export function request( body: string, - warn: Record[] + warn: Record[], ): SoapMessage { warnings = warn; @@ -897,7 +897,7 @@ export function request( const attrs = memoizedParseAttrs(e.attrs); const attr = namespace ? attrs.find( - (s) => s.namespace === "xmlns" && s.localName === namespace + (s) => s.namespace === "xmlns" && s.localName === namespace, ) : attrs.find((s) => s.name === "xmlns"); @@ -1030,7 +1030,7 @@ export function response(rpc: { throw new Error( `Unknown method response type ${ (rpc.acsResponse as AcsResponse).name - }` + }`, ); } } else if (rpc.acsRequest) { @@ -1067,7 +1067,7 @@ export function response(rpc: { break; default: throw new Error( - `Unknown method request ${(rpc.acsRequest as AcsRequest).name}` + `Unknown method request ${(rpc.acsRequest as AcsRequest).name}`, ); } } else if (rpc.acsFault) { diff --git a/lib/types.ts b/lib/types.ts index 415e204..90e32ee 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -97,7 +97,7 @@ export type VirtualParameterDeclaration = [ value?: [string | number | boolean, string?]; notification?: number; accessList?: string[]; - }? + }?, ]; export interface SyncState { @@ -139,7 +139,7 @@ export interface SessionContext { AttributeTimestamps, AttributeValues, AttributeTimestamps, - AttributeValues + AttributeValues, ][][]; revisions: number[]; rpcCount: number; @@ -455,7 +455,7 @@ export type Clear = [ notification?: number; accessList?: number; }?, - number? + number?, ]; export interface Preset { diff --git a/lib/ui.ts b/lib/ui.ts index 43dafe8..109af29 100644 --- a/lib/ui.ts +++ b/lib/ui.ts @@ -54,10 +54,10 @@ const getAuthorizer = memoize( const roles: string[] = JSON.parse(rolesStr); const allPermissions = localCache.getPermissions(snapshot); const permissionSets: PermissionSet[] = roles.map((r) => - Object.values(allPermissions[r] || {}) + Object.values(allPermissions[r] || {}), ); return new Authorizer(permissionSets); - } + }, ); koa.on("error", (err, ctx) => { @@ -90,7 +90,7 @@ koa.use( return true; }, - }) + }), ); koa.use(async (ctx, next) => { @@ -110,7 +110,7 @@ koa.use(async (ctx, next) => { ctx.state.authorizer = getAuthorizer( ctx.state.configSnapshot, - JSON.stringify(roles) + JSON.stringify(roles), ); return next(); @@ -245,7 +245,7 @@ router.get("/", async (ctx) => { window.configSnapshot = ${JSON.stringify(ctx.state.configSnapshot)}; window.genieacsVersion = ${JSON.stringify(VERSION)}; window.username = ${JSON.stringify( - ctx.state.user ? ctx.state.user.username : "" + ctx.state.user ? ctx.state.user.username : "", )}; window.permissionSets = ${JSON.stringify(permissionSets)}; @@ -269,7 +269,7 @@ koa.use( [constants.BROTLI_PARAM_QUALITY]: 5, }, }, - }) + }), ); koa.use(router.routes()); diff --git a/lib/ui/api.ts b/lib/ui/api.ts index 954bba6..59442e5 100644 --- a/lib/ui/api.ts +++ b/lib/ui/api.ts @@ -104,12 +104,12 @@ router.get(`/devices/:id.csv`, async (ctx) => { ctx.attachment( `device-${ctx.params.id}-${new Date() .toISOString() - .replace(/[:.]/g, "")}.csv` + .replace(/[:.]/g, "")}.csv`, ); ctx.body = new PassThrough(); ctx.body.write( - "Parameter,Object,Object timestamp,Writable,Writable timestamp,Value,Value type,Value timestamp,Notification,Notification timestamp,Access list,Access list timestamp\n" + "Parameter,Object,Object timestamp,Writable,Writable timestamp,Value,Value type,Value timestamp,Notification,Notification timestamp,Access list,Access list timestamp\n", ); for (const k of Object.keys(device).sort()) { @@ -259,7 +259,7 @@ for (const [resource, flags] of Object.entries(resources)) { } const columns: Record = JSON.parse( - singleParam(ctx.request.query.columns) + singleParam(ctx.request.query.columns), ); const now = Date.now(); @@ -282,11 +282,11 @@ for (const [resource, flags] of Object.entries(resources)) { ctx.body = new PassThrough(); ctx.type = "text/csv"; ctx.attachment( - `${resource}-${new Date(now).toISOString().replace(/[:.]/g, "")}.csv` + `${resource}-${new Date(now).toISOString().replace(/[:.]/g, "")}.csv`, ); ctx.body.write( - Object.keys(columns).map((k) => `"${k.replace(/"/, '""')}"`) + "\n" + Object.keys(columns).map((k) => `"${k.replace(/"/, '""')}"`) + "\n", ); for await (const obj of db.query(resource, filter, options)) { const arr = Object.values(columns).map((exp) => { @@ -633,7 +633,7 @@ router.post("/devices/:id/tasks", async (ctx) => { } } return exp; - } + }, ) as number; const lastInform = device["Events.Inform"].value[0] as number; @@ -643,7 +643,7 @@ router.post("/devices/:id/tasks", async (ctx) => { const sessionStarted = await apiFunctions.awaitSessionStart( deviceId, lastInform, - onlineThreshold + onlineThreshold, ); if (!sessionStarted) { status = "No contact from CPE"; @@ -655,7 +655,7 @@ router.post("/devices/:id/tasks", async (ctx) => { if (!status) { const promises = statuses.map((t) => - collections.faults.count({ _id: `${deviceId}:task_${t._id}` }) + collections.faults.count({ _id: `${deviceId}:task_${t._id}` }), ); const res = await Promise.all(promises); @@ -746,7 +746,7 @@ router.put("/users/:id/password", async (ctx) => { !(await apiFunctions.authLocal( ctx.state.configSnapshot, username, - ctx.request.body.authPassword + ctx.request.body.authPassword, )) ) { logUnauthorizedWarning(log); diff --git a/lib/ui/db.ts b/lib/ui/db.ts index c8ab83d..cf9e9cb 100644 --- a/lib/ui/db.ts +++ b/lib/ui/db.ts @@ -30,7 +30,7 @@ import { Script } from "vm"; import { Readable } from "stream"; function processDeviceProjection( - projection: Record + projection: Record, ): Record { if (!projection) return projection; const p = {}; @@ -58,7 +58,7 @@ function processDeviceProjection( } function processDeviceSort( - sort: Record + sort: Record, ): Record { if (!sort) return sort; const s = {}; @@ -93,7 +93,7 @@ interface FlatAttributes { accessListTimestamp?: number; } -interface FlatDevice { +export interface FlatDevice { [param: string]: FlatAttributes; } @@ -102,7 +102,7 @@ export function flattenDevice(device: Record): FlatDevice { input, root: string, output: FlatDevice, - timestamp: number + timestamp: number, ): void { for (const [name, tree] of Object.entries(input)) { if (!root) { @@ -272,7 +272,7 @@ function flattenTask(task: unknown): Task { } function flattenPreset( - preset: Record + preset: Record, ): Record { const p = Object.assign({}, preset); if (p.precondition) { @@ -281,7 +281,7 @@ function flattenPreset( parse(p.precondition as string); } catch (error) { p.precondition = convertOldPrecondition( - JSON.parse(p.precondition as string) + JSON.parse(p.precondition as string), ); p.precondition = (p.precondition as string).length ? stringify(p.precondition as Expression) @@ -377,7 +377,7 @@ interface QueryOptions { export async function* query( resource: string, filter: Expression, - options?: QueryOptions + options?: QueryOptions, ): AsyncGenerator { options = options || {}; filter = evaluate(filter, null, Date.now()); @@ -407,7 +407,7 @@ export async function* query( .reduce( (obj, [k, v]) => Object.assign(obj, { [k]: Math.min(Math.max(v, -1), 1) }), - {} + {}, ); if (resource === "devices") s = processDeviceSort(s); @@ -435,7 +435,7 @@ export function count(resource: string, filter: Expression): Promise { export async function updateDeviceTags( deviceId: string, - tags: Record + tags: Record, ): Promise { const add = []; const pull = []; @@ -455,7 +455,7 @@ export async function updateDeviceTags( export async function putPreset( id: string, - object: Record + object: Record, ): Promise { const p = preProcessPreset(object); await collections.presets.replaceOne({ _id: id }, p, { upsert: true }); @@ -467,7 +467,7 @@ export async function deletePreset(id: string): Promise { export async function putProvision( id: string, - object: { script: string } + object: { script: string }, ): Promise { if (!object.script) object.script = ""; try { @@ -478,7 +478,7 @@ export async function putProvision( } catch (err) { if (err.stack?.startsWith(`${id}:`)) { return Promise.reject( - new Error(`${err.name} at ${err.stack.split("\n", 1)[0]}`) + new Error(`${err.name} at ${err.stack.split("\n", 1)[0]}`), ); } return Promise.reject(err); @@ -494,7 +494,7 @@ export async function deleteProvision(id: string): Promise { export async function putVirtualParameter( id: string, - object: { script: string } + object: { script: string }, ): Promise { if (!object.script) object.script = ""; try { @@ -505,7 +505,7 @@ export async function putVirtualParameter( } catch (err) { if (err.stack?.startsWith(`${id}:`)) { return Promise.reject( - new Error(`${err.name} at ${err.stack.split("\n", 1)[0]}`) + new Error(`${err.name} at ${err.stack.split("\n", 1)[0]}`), ); } return Promise.reject(err); @@ -521,7 +521,7 @@ export async function deleteVirtualParameter(id: string): Promise { export async function putConfig( id: string, - object: WithoutId + object: WithoutId, ): Promise { await collections.config.replaceOne({ _id: id }, object, { upsert: true }); } @@ -532,7 +532,7 @@ export async function deleteConfig(id: string): Promise { export async function putPermission( id: string, - object: WithoutId + object: WithoutId, ): Promise { await collections.permissions.replaceOne({ _id: id }, object, { upsert: true, @@ -545,13 +545,13 @@ export async function deletePermission(id: string): Promise { export async function putUser( id: string, - object: Partial> + object: Partial>, ): Promise { // update instead of replace to keep the password if not set by user await collections.users.updateOne( { _id: id }, { $set: object }, - { upsert: true } + { upsert: true }, ); } @@ -566,7 +566,7 @@ export function downloadFile(filename: string): Readable { export function putFile( filename: string, metadata: Record, - contentStream: Readable + contentStream: Readable, ): Promise { return new Promise((resolve, reject) => { const uploadStream = filesBucket.openUploadStreamWithId( @@ -574,7 +574,7 @@ export function putFile( filename, { metadata: metadata, - } + }, ); let readableEnded = false; diff --git a/lib/ui/local-cache.ts b/lib/ui/local-cache.ts index efd8d8d..2f7f271 100644 --- a/lib/ui/local-cache.ts +++ b/lib/ui/local-cache.ts @@ -125,7 +125,7 @@ export function getConfig( key: string, context: Record, now: number, - cb?: (e: Expression) => Expression + cb?: (e: Expression) => Expression, ): string | number | boolean | null { const snapshot = localCache.get(revision); if (!snapshot) throw new Error("Cache snapshot does not exist"); diff --git a/lib/util.ts b/lib/util.ts index ee9b46a..5756514 100644 --- a/lib/util.ts +++ b/lib/util.ts @@ -20,7 +20,7 @@ import { EventEmitter } from "events"; export function generateDeviceId( - deviceIdStruct: Record + deviceIdStruct: Record, ): string { // Escapes everything except alphanumerics and underscore function esc(str): string { @@ -54,7 +54,7 @@ export function encodeTag(tag: string): string { return encodeURIComponent(tag) .replace( /[!~*'().]/g, - (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase() + (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase(), ) .replace(/0x(?=[0-9A-Z]{2})/g, "0%78") .replace(/%/g, "0x"); @@ -67,7 +67,7 @@ export function decodeTag(tag: string): string { export function once( emitter: EventEmitter, event: string, - timeout: number + timeout: number, ): Promise { return new Promise((resolve, reject) => { const timer = setTimeout(() => { diff --git a/lib/versioned-map.ts b/lib/versioned-map.ts index a4ad95b..362fabc 100644 --- a/lib/versioned-map.ts +++ b/lib/versioned-map.ts @@ -138,7 +138,7 @@ export default class VersionedMap { const del = revisionsObj.delete || 0; const mutations = Object.keys(revisionsObj).reduce( (acc, cur) => (cur === "delete" ? acc : acc | (1 << +cur)), - del + del, ); const revisions = []; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index b4d1efb..eb49d2f 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -32,34 +32,43 @@ "genieacs-ui.ts": "bin/genieacs-ui.ts" }, "devDependencies": { - "@types/codemirror": "^5.60.5", + "@types/codemirror": "^5.60.15", "@types/jsonwebtoken": "^8.5.8", "@types/koa": "^2.13.5", "@types/koa-compress": "^4.0.3", "@types/koa-router": "^7.4.4", "@types/koa-static": "^4.0.2", - "@types/mithril": "^2.0.11", - "@types/node": "^18.7.9", - "@types/parsimmon": "^1.10.6", - "@types/seedrandom": "^3.0.2", - "@typescript-eslint/eslint-plugin": "^5.33.1", - "@typescript-eslint/parser": "^5.33.1", + "@types/mithril": "^2.2.6", + "@types/node": "^20.10.4", + "@types/parsimmon": "^1.10.9", + "@types/seedrandom": "^3.0.8", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "ava": "^3.15.0", - "codemirror": "^5.65.8", + "codemirror": "^5.65.16", "esbuild": "^0.19.9", - "eslint": "^8.22.0", - "eslint-config-prettier": "^8.5.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", "mithril": "^2.2.2", - "prettier": "^2.7.1", + "prettier": "^3.1.1", "sql.js": "^1.7.0", "svgo": "^2.8.0", - "typescript": "^4.7.4", + "typescript": "^5.3.3", "yaml": "^1.10.2" }, "engines": { "node": ">=12.13.0" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@aws-crypto/crc32": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", @@ -71,6 +80,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-crypto/ie11-detection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", @@ -80,6 +95,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", @@ -96,6 +117,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", @@ -107,6 +134,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", @@ -116,6 +149,12 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-crypto/util": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", @@ -127,200 +166,153 @@ "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.379.1.tgz", - "integrity": "sha512-aONC8IyC54OMcdoRCqI+Fw4VIIlonWmFdLDyZPfGoqwYpe/Vqz7DPF7s/ohqiZBSpEt2SzZeKHEpmkBPR8fpkw==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.474.0.tgz", + "integrity": "sha512-vdO5eiJI8VnIKku/RNkj49MR4PnRFtSkIFGFRRuMIx64TiduHaA7cJfj43Kpw68/Gq1HS4fuoj/Y41xm0QZKdg==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.379.1", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/client-sts": "3.474.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/client-sso": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.379.1.tgz", - "integrity": "sha512-2N16TPnRcq+seNP8VY/Zq7kfnrUOrJMbVNpyDZWGe5Qglua3n8v/FzxmXFNI87MiSODq8IHtiXhggWhefCd+TA==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.474.0.tgz", + "integrity": "sha512-6toUmQUIHkDM/P2/nyLEO/mcWOIPByTlegqX9VCHhYh9Fs5MDT2nit7I6fZzBjZjB5oVTwKjbzgxae9cE3bhqw==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.379.1.tgz", - "integrity": "sha512-B6hZ2ysPyvafCMf6gls1jHI/IUviVZ4+TURpNfUBqThg/hZ1IMxc4BLkXca6VlgzYR+bWU8GKiClS9fFH6mu0g==", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, - "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/client-sts": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.379.1.tgz", - "integrity": "sha512-gEnKuk9bYjThvmxCgOgCn1qa+rRX8IgIRE2+xhbWhlpDanozhkDq9aMB5moX4tBNYQEmi1LtGD+JOvOoZRnToQ==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.474.0.tgz", + "integrity": "sha512-qPPMbrDVAUJgYiFWVewFG7dg0VyMfuGNNK4IC1nZr0eXejUTbdm8cio6IZ8OkWtK+A+L+wx1vX5686WYVgQ0dQ==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-sdk-sts": "3.379.1", - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.1.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, @@ -328,403 +320,366 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true + "node_modules/@aws-sdk/core": { + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.474.0.tgz", + "integrity": "sha512-eVRdeB+AoTNSzfc4viHfr0jfkHujSlf4ToExJtTuxS1wlgmIyyxRNrVKxbf0K78YK/TXRsRlJPoS5QCD5h1S2w==", + "optional": true, + "dependencies": { + "@smithy/core": "^1.1.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.379.1.tgz", - "integrity": "sha512-29X4nxo+47TeENgCpaTeMaK66cn7Uv7Fo4HPvGoevtWljqMqlSSNwQgmvpvqkQWGNtG6Ma/7GXkPMBuoqpwC8g==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.474.0.tgz", + "integrity": "sha512-YD0AHBSXlGXv5cU7BZ0oXWUNCnhW4pyun/M9XsDlU9ptdJDyYa860bsfM6JCs3TwMqMOc+OXOzJMJdsibmR9Pg==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-cognito-identity": "3.474.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.378.0.tgz", - "integrity": "sha512-B2OVdO9kBClDwGgWTBLAQwFV8qYTYGyVujg++1FZFSFMt8ORFdZ5fNpErvJtiSjYiOOQMzyBeSNhKyYNXCiJjQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", + "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.468.0.tgz", + "integrity": "sha512-pUF+gmeCr4F1De69qEsWgnNeF7xzlLcjiGcbpO6u9k6NQdRR7Xr3wTQnQt1+3MgoIdbgoXpCfQYNZ4LfX6B/sA==", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.468.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/util-stream": "^2.0.23", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.379.1.tgz", - "integrity": "sha512-YhEsJIskzCFwIIKiMN9GSHQkgWwj/b7rq0ofhsXsCRimFtdVkmMlB9veE6vtFAuXpX/WOGWdlWek1az0V22uuw==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.474.0.tgz", + "integrity": "sha512-3Y2fHI4ZCNjdOO47Vh/xBgLXOrKm3KwBkYkBKKT2g02FUGNT8NLjJg8WBo3D4RQX2h34qx4mtW5nTY6YcGP80Q==", "optional": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.379.1.tgz", - "integrity": "sha512-39Y4OHKn6a8lY8YJhSLLw08aZytWxfvSjM4ObIEnE6hjLl8gsL9vROKKITsh3q6iGQ1EDSWMWZL50aOh3LJUIg==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.474.0.tgz", + "integrity": "sha512-3OVVVGnb8Ru5hWeeHkg76YZT5mrufweIiWr6ge5zn7FYxc7WkyqIJ0XehqUqG5VQfaYhqh7uq/zmk8OE2B04lQ==", "optional": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-ini": "3.379.1", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.474.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.378.0.tgz", - "integrity": "sha512-KFTIy7u+wXj3eDua4rgS0tODzMnXtXhAm1RxzCW9FL5JLBBrd82ymCj1Dp72217Sw5Do6NjCnDTTNkCHZMA77w==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", + "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.379.1.tgz", - "integrity": "sha512-PhGtu1+JbUntYP/5CSfazQhWsjUBiksEuhg9fLhYl5OAgZVjVygbgoNVUz/gM7gZJSEMsasTazkn7yZVzO/k7w==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.474.0.tgz", + "integrity": "sha512-ik4rzhQtcRLSHB/MLQfi/dSpILxPd3zITb79DIEnqT3gpZRNjoARkZ3Hi68pujkU2530NYf8NcFwLCWoV1hS7Q==", "optional": true, "dependencies": { - "@aws-sdk/client-sso": "3.379.1", - "@aws-sdk/token-providers": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-sso": "3.474.0", + "@aws-sdk/token-providers": "3.470.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.378.0.tgz", - "integrity": "sha512-GWjydOszhc4xDF8xuPtBvboglXQr0gwCW1oHAvmLcOT38+Hd6qnKywnMSeoXYRPgoKfF9TkWQgW1jxplzCG0UA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", + "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.379.1.tgz", - "integrity": "sha512-srPdRQmavvWAwtrlYqo5GaIhIH0bhMl0knzxIDUf81aBfitNKACWwnbML7TpL/dWSPH2b7ciOBWneK1o1GKNLg==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.474.0.tgz", + "integrity": "sha512-n4NG2Y1kgt6cTT7QZhGgTAbzw83tTDoKSNAcHDzLNKRmtEAf3aSX/lBMrBAovsrDWr6FF8saKEHfEv1XhP8ewA==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.379.1", - "@aws-sdk/client-sso": "3.379.1", - "@aws-sdk/client-sts": "3.379.1", - "@aws-sdk/credential-provider-cognito-identity": "3.379.1", - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-ini": "3.379.1", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-cognito-identity": "3.474.0", + "@aws-sdk/client-sso": "3.474.0", + "@aws-sdk/client-sts": "3.474.0", + "@aws-sdk/credential-provider-cognito-identity": "3.474.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-http": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.379.1.tgz", - "integrity": "sha512-LI4KpAFWNWVr2aH2vRVblr0Y8tvDz23lj8LOmbDmCrzd5M21nxuocI/8nEAQj55LiTIf9Zs+dHCdsyegnFXdrA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", + "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.378.0.tgz", - "integrity": "sha512-l1DyaDLm3KeBMNMuANI3scWh8Xvu248x+vw6Z7ExWOhGXFmQ1MW7YvASg/SdxWkhlF9HmkkTif1LdMB22x6QDA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", + "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.378.0.tgz", - "integrity": "sha512-mUMfHAz0oGNIWiTZHTVJb+I515Hqs2zx1j36Le4MMiiaMkPW1SRUF1FIwGuc1wh6E8jB5q+XfEMriDjRi4TZRA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", + "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.379.1.tgz", - "integrity": "sha512-SK3gSyT0XbLiY12+AjLFYL9YngxOXHnZF3Z33Cdd4a+AUYrVBV7JBEEGD1Nlwrcmko+3XgaKlmgUaR5s91MYvg==", - "optional": true, - "dependencies": { - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.379.1.tgz", - "integrity": "sha512-kBk2ZUvR84EM4fICjr8K+Ykpf8SI1UzzPp2/UVYZ0X+4H/ZCjfSqohGRwHykMqeplne9qHSL7/rGJs1H3l3gPg==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", + "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^2.0.1", + "@smithy/protocol-http": "^3.0.11", "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-middleware": "^2.0.0", + "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-signing/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.379.1.tgz", - "integrity": "sha512-4zIGeAIuutcRieAvovs82uBNhJBHuxfxaAUqrKiw49xUBG7xeNVUl+DYPSpbALbEIy4ujfwWCBOOWVCt6dyUZg==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.470.0.tgz", + "integrity": "sha512-s0YRGgf4fT5KwwTefpoNUQfB5JghzXyvmPfY1QuFEMeVQNxv0OPuydzo3rY2oXPkZjkulKDtpm5jzIHwut75hA==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz", + "integrity": "sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.379.1.tgz", - "integrity": "sha512-NlYPkArJ7A/txCrjqqkje+4hsv7pSOqm+Qdx3BUIOc7PRYrBVs/XwThxUkGceSntVXoNlO8g9DFL0NY53/wb8Q==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.470.0.tgz", + "integrity": "sha512-rzxnJxEUJiV69Cxsf0AHXTqJqTACITwcSH/PL4lWP4uvtzdrzSi3KA3u2aWHWpOcdE6+JFvdICscsbBSo3/TOg==", "optional": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/protocol-http": "^3.0.11", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/types": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz", - "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.378.0.tgz", - "integrity": "sha512-NU5C2l2xAXxpyB5nT0fIhahLPlJoJdzHWw4uC53KH9b4PrjHtgvgCN8beIsD3QxyfgeoM4A5J9Auo6WurfRnLw==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.470.0.tgz", + "integrity": "sha512-6N6VvPCmu+89p5Ez/+gLf+X620iQ9JpIs8p8ECZiCodirzFOe8NC1O2S7eov7YiG9IHSuodqn/0qNq+v+oLe0A==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", + "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", + "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -733,39 +688,27 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.378.0.tgz", - "integrity": "sha512-FSCpagzftK1W+m7Ar6lpX7/Gr9y5P56nhFYz8U4EYQ4PkufS6czWX9YW+/FA5OYV0vlQ/SvPqMnzoHIPUNhZrQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", + "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.378.0.tgz", - "integrity": "sha512-IdwVJV0E96MkJeFte4dlWqvB+oiqCiZ5lOlheY3W9NynTuuX0GGYNC8Y9yIsV8Oava1+ujpJq0ww6qXdYxmO4A==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", + "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", "optional": true, "dependencies": { - "@aws-sdk/types": "3.378.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { @@ -780,12 +723,6 @@ } } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", @@ -795,41 +732,107 @@ "tslib": "^2.3.1" } }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -862,6 +865,21 @@ "node": ">=4" } }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -893,9 +911,9 @@ } }, "node_modules/@breejs/later": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.1.0.tgz", - "integrity": "sha512-QgGnZ9b7o4k0Ai1ZbTJWwZpZcFK9d+Gb+DyNt4UT9x6IEIs5HVu0iIlmgzGqN+t9MoJSpSPo9S/Mm51UtHr3JA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.2.0.tgz", + "integrity": "sha512-EVMD0SgJtOuFeg0lAVbCwa+qeTKILb87jqvLyUtQswGD9+ce2nB52Y5zbTF1Hc0MDFfbydcMcxb47jSdhikVHA==", "engines": { "node": ">= 10" } @@ -1273,56 +1291,104 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "engines": { + "node": ">=12.22" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", + "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1368,141 +1434,118 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.1.tgz", - "integrity": "sha512-0s7XjIbsTwZyUW9OwXQ8J6x1UiA1TNCh60Vaw56nHahL7kUZsLhmTlWiaxfLkFtO2Utkj8YewcpHTYpxaTzO+w==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.15.tgz", + "integrity": "sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/config-resolver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.1.tgz", - "integrity": "sha512-l83Pm7hV+8CBQOCmBRopWDtF+CURUJol7NsuPYvimiDhkC2F8Ba9T1imSFE+pD1UIJ9jlsDPAnZfPJT5cjnuEw==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.21.tgz", + "integrity": "sha512-rlLIGT+BeqjnA6C2FWumPRJS1UW07iU5ZxDHtFuyam4W65gIaOFMjkB90ofKCIh+0mLVQrQFrl/VLtQT/6FWTA==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true + "node_modules/@smithy/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.1.0.tgz", + "integrity": "sha512-k1zaT5S4K0bG67Q5TmPZ6PdWNQBTMQErChuDvTi+NTx21kKDt+/4YRidsK6nDbHizN6fn1bafUxrougZdKrpxA==", + "optional": true, + "dependencies": { + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.1.tgz", - "integrity": "sha512-8VxriuRINNEfVZjEFKBY75y9ZWAx73DZ5K/u+3LmB6r8WR2h3NaFxFKMlwlq0uzNdGhD1ouKBn9XWEGYHKiPLw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.4.tgz", + "integrity": "sha512-cwPJN1fa1YOQzhBlTXRavABEYRRchci1X79QRwzaNLySnIMJfztyv1Zkst0iZPLMnpn8+CnHu3wOHS11J5Dr3A==", "optional": true, "dependencies": { - "@smithy/node-config-provider": "^2.0.1", - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/property-provider": "^2.0.16", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/eventstream-codec": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.1.tgz", - "integrity": "sha512-/IiNB7gQM2y2ZC/GAWOWDa8+iXfhr1g9Xe5979cQEOdCWDISvrAiv18cn3OtIQUhbYOR3gm7QtCpkq1to2takQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.15.tgz", + "integrity": "sha512-crjvz3j1gGPwA0us6cwS7+5gAn35CTmqu/oIxVbYJo2Qm/sGAye6zGJnMDk3BKhWZw5kcU1G4MxciTkuBpOZPg==", "optional": true, "dependencies": { "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-hex-encoding": "^2.0.0", "tslib": "^2.5.0" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.1.tgz", - "integrity": "sha512-/SoU/ClazgcdOxgE4zA7RX8euiELwpsrKCSvulVQvu9zpmqJRyEJn8ZTWYFV17/eHOBdHTs9kqodhNhsNT+cUw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.1.tgz", + "integrity": "sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ==", "optional": true, "dependencies": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/querystring-builder": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/util-base64": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/querystring-builder": "^2.0.15", + "@smithy/types": "^2.7.0", + "@smithy/util-base64": "^2.0.1", "tslib": "^2.5.0" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/hash-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.1.tgz", - "integrity": "sha512-oTKYimQdF4psX54ZonpcIE+MXjMUWFxLCNosjPkJPFQ9whRX0K/PFX/+JZGRQh3zO9RlEOEUIbhy9NO+Wha6hw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.17.tgz", + "integrity": "sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/invalid-dependency": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.1.tgz", - "integrity": "sha512-2q/Eb0AE662zwyMV+z+TL7deBwcHCgaZZGc0RItamBE8kak3MzCi/EZCNoFWoBfxgQ4jfR12wm8KKsSXhJzJtQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.15.tgz", + "integrity": "sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" } }, - "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/is-array-buffer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", @@ -1515,65 +1558,51 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/is-array-buffer/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/middleware-content-length": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.1.tgz", - "integrity": "sha512-IZhRSk5GkVBcrKaqPXddBS2uKhaqwBgaSgbBb1OJyGsKe7SxRFbclWS0LqOR9fKUkDl+3lL8E2ffpo6EQg0igw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.17.tgz", + "integrity": "sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w==", "optional": true, "dependencies": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.1.tgz", - "integrity": "sha512-uz/KI1MBd9WHrrkVFZO4L4Wyv24raf0oR4EsOYEeG5jPJO5U+C7MZGLcMxX8gWERDn1sycBDqmGv8fjUMLxT6w==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.3.tgz", + "integrity": "sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ==", "optional": true, "dependencies": { - "@smithy/middleware-serde": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-middleware": "^2.0.0", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/shared-ini-file-loader": "^2.2.7", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/middleware-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.1.tgz", - "integrity": "sha512-NKHF4i0gjSyjO6C0ZyjEpNqzGgIu7s8HOK6oT/1Jqws2Q1GynR1xV8XTUs1gKXeaNRzbzKQRewHHmfPwZjOtHA==", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.24.tgz", + "integrity": "sha512-q2SvHTYu96N7lYrn3VSuX3vRpxXHR/Cig6MJpGWxd0BWodUQUWlKvXpWQZA+lTaFJU7tUvpKhRd4p4MU3PbeJg==", "optional": true, "dependencies": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/service-error-classification": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-middleware": "^2.0.0", - "@smithy/util-retry": "^2.0.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", + "@smithy/service-error-classification": "^2.0.8", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -1581,137 +1610,96 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/middleware-serde": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.1.tgz", - "integrity": "sha512-uKxPaC6ItH9ZXdpdqNtf8sda7GcU4SPMp0tomq/5lUg9oiMa/Q7+kD35MUrpKaX3IVXVrwEtkjCU9dogZ/RAUA==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.15.tgz", + "integrity": "sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/middleware-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.0.tgz", - "integrity": "sha512-31XC1xNF65nlbc16yuh3wwTudmqs6qy4EseQUGF8A/p2m/5wdd/cnXJqpniy/XvXVwkHPz/GwV36HqzHtIKATQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.9.tgz", + "integrity": "sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA==", "optional": true, "dependencies": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/node-config-provider": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.1.tgz", - "integrity": "sha512-Zoel4CPkKRTQ2XxmozZUfqBYqjPKL53/SvTDhJHj+VBSiJy6MXRav1iDCyFPS92t40Uh+Yi+Km5Ch3hQ+c/zSA==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.8.tgz", + "integrity": "sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ==", "optional": true, "dependencies": { - "@smithy/property-provider": "^2.0.1", - "@smithy/shared-ini-file-loader": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/property-provider": "^2.0.16", + "@smithy/shared-ini-file-loader": "^2.2.7", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/node-http-handler": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.1.tgz", - "integrity": "sha512-Zv3fxk3p9tsmPT2CKMsbuwbbxnq2gzLDIulxv+yI6aE+02WPYorObbbe9gh7SW3weadMODL1vTfOoJ9yFypDzg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.1.tgz", + "integrity": "sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw==", "optional": true, "dependencies": { - "@smithy/abort-controller": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/querystring-builder": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/abort-controller": "^2.0.15", + "@smithy/protocol-http": "^3.0.11", + "@smithy/querystring-builder": "^2.0.15", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/property-provider": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.1.tgz", - "integrity": "sha512-pmJRyY9SF6sutWIktIhe+bUdSQDxv/qZ4mYr3/u+u45riTPN7nmRxPo+e4sjWVoM0caKFjRSlj3tf5teRFy0Vg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.16.tgz", + "integrity": "sha512-28Ky0LlOqtEjwg5CdHmwwaDRHcTWfPRzkT6HrhwOSRS2RryAvuDfJrZpM+BMcrdeCyEg1mbcgIMoqTla+rdL8Q==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/protocol-http": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.1.tgz", - "integrity": "sha512-mrkMAp0wtaDEIkgRObWYxI1Kun1tm6Iu6rK+X4utb6Ah7Uc3Kk4VIWwK/rBHdYGReiLIrxFCB1rq4a2gyZnSgg==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.11.tgz", + "integrity": "sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/querystring-builder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.1.tgz", - "integrity": "sha512-bp+93WFzx1FojVEIeFPtG0A1pKsFdCUcZvVdZdRlmNooOUrz9Mm9bneRd8hDwAQ37pxiZkCOxopSXXRQN10mYw==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.15.tgz", + "integrity": "sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-uri-escape": "^2.0.0", "tslib": "^2.5.0" }, @@ -1719,109 +1707,82 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/querystring-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.1.tgz", - "integrity": "sha512-h+e7k1z+IvI2sSbUBG9Aq46JsgLl4UqIUl6aigAlRBj+P6ocNXpM6Yn1vMBw5ijtXeZbYpd1YvCxwDgdw3jhmg==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.15.tgz", + "integrity": "sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/service-error-classification": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.0.tgz", - "integrity": "sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.8.tgz", + "integrity": "sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg==", "optional": true, + "dependencies": { + "@smithy/types": "^2.7.0" + }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.1.tgz", - "integrity": "sha512-a463YiZrPGvM+F336rIF8pLfQsHAdCRAn/BiI/EWzg5xLoxbC7GSxIgliDDXrOu0z8gT3nhVsif85eU6jyct3A==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.7.tgz", + "integrity": "sha512-0Qt5CuiogIuvQIfK+be7oVHcPsayLgfLJGkPlbgdbl0lD28nUKu4p11L+UG3SAEsqc9UsazO+nErPXw7+IgDpQ==", "optional": true, "dependencies": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/signature-v4": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.1.tgz", - "integrity": "sha512-jztv5Mirca42ilxmMDjzLdXcoAmRhZskGafGL49sRo5u7swEZcToEFrq6vtX5YMbSyTVrE9Teog5EFexY5Ff2Q==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.18.tgz", + "integrity": "sha512-SJRAj9jT/l9ocm8D0GojMbnA1sp7I4JeStOQ4lEXI8A5eHE73vbjlzlqIFB7cLvIgau0oUl4cGVpF9IGCrvjlw==", "optional": true, "dependencies": { - "@smithy/eventstream-codec": "^2.0.1", + "@smithy/eventstream-codec": "^2.0.15", "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/smithy-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.1.tgz", - "integrity": "sha512-LHC5m6tYpEu1iNbONfvMbwtErboyTZJfEIPoD78Ei5MVr36vZQCaCla5mvo36+q/a2NAk2//fA5Rx3I1Kf7+lQ==", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.18.tgz", + "integrity": "sha512-7FqdbaJiVaHJDD9IfDhmzhSDbpjyx+ZsfdYuOpDJF09rl8qlIAIlZNoSaflKrQ3cEXZN2YxGPaNWGhbYimyIRQ==", "optional": true, "dependencies": { - "@smithy/middleware-stack": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-stream": "^2.0.1", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/types": "^2.7.0", + "@smithy/util-stream": "^2.0.23", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.0.2.tgz", - "integrity": "sha512-wcymEjIXQ9+NEfE5Yt5TInAqe1o4n+Nh+rh00AwoazppmUt8tdo6URhc5gkDcOYrcvlDVAZE7uG69nDpEGUKxw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", + "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -1830,33 +1791,21 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/url-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.1.tgz", - "integrity": "sha512-NpHVOAwddo+OyyIoujDL9zGL96piHWrTNXqltWmBvlUoWgt1HPyBuKs6oHjioyFnNZXUqveTOkEEq0U5w6Uv8A==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.15.tgz", + "integrity": "sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA==", "optional": true, "dependencies": { - "@smithy/querystring-parser": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/querystring-parser": "^2.0.15", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" } }, - "node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.0.tgz", - "integrity": "sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", + "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", "optional": true, "dependencies": { "@smithy/util-buffer-from": "^2.0.0", @@ -1866,31 +1815,19 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", - "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", + "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", "optional": true, "dependencies": { "tslib": "^2.5.0" } }, - "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-body-length-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.0.0.tgz", - "integrity": "sha512-ZV7Z/WHTMxHJe/xL/56qZwSUcl63/5aaPAGjkfynJm4poILjdD4GmFI+V+YWabh2WJIjwTKZ5PNsuvPQKt93Mg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", + "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -1899,12 +1836,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-buffer-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", @@ -1918,12 +1849,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-config-provider": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", @@ -1936,20 +1861,15 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.1.tgz", - "integrity": "sha512-w72Qwsb+IaEYEFtYICn0Do42eFju78hTaBzzJfT107lFOPdbjWjKnFutV+6GL/nZd5HWXY7ccAKka++C3NrjHw==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.22.tgz", + "integrity": "sha512-qcF20IHHH96FlktvBRICDXDhLPtpVmtksHmqNGtotb9B0DYWXsC6jWXrkhrrwF7tH26nj+npVTqh9isiFV1gdA==", "optional": true, "dependencies": { - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/property-provider": "^2.0.16", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", "bowser": "^2.11.0", "tslib": "^2.5.0" }, @@ -1957,34 +1877,37 @@ "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.1.tgz", - "integrity": "sha512-dNF45caelEBambo0SgkzQ0v76m4YM+aFKZNTtSafy7P5dVF8TbjZuR2UX1A5gJABD9XK6lzN+v/9Yfzj/EDgGg==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.29.tgz", + "integrity": "sha512-+uG/15VoUh6JV2fdY9CM++vnSuMQ1VKZ6BdnkUM7R++C/vLjnlg+ToiSR1FqKZbMmKBXmsr8c/TsDWMAYvxbxQ==", "optional": true, "dependencies": { - "@smithy/config-resolver": "^2.0.1", - "@smithy/credential-provider-imds": "^2.0.1", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/config-resolver": "^2.0.21", + "@smithy/credential-provider-imds": "^2.1.4", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/property-provider": "^2.0.16", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true + "node_modules/@smithy/util-endpoints": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.7.tgz", + "integrity": "sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA==", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/@smithy/util-hex-encoding": { "version": "2.0.0", @@ -1998,74 +1921,52 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-middleware": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.0.tgz", - "integrity": "sha512-eCWX4ECuDHn1wuyyDdGdUWnT4OGyIzV0LN1xRttBFMPI9Ff/4heSHVxneyiMtOB//zpXWCha1/SWHJOZstG7kA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.8.tgz", + "integrity": "sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw==", "optional": true, "dependencies": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-retry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.0.tgz", - "integrity": "sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.8.tgz", + "integrity": "sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg==", "optional": true, "dependencies": { - "@smithy/service-error-classification": "^2.0.0", + "@smithy/service-error-classification": "^2.0.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.1.tgz", - "integrity": "sha512-2a0IOtwIKC46EEo7E7cxDN8u2jwOiYYJqcFKA6rd5rdXqKakHT2Gc+AqHWngr0IEHUfW92zX12wRQKwyoqZf2Q==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.23.tgz", + "integrity": "sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ==", "optional": true, "dependencies": { - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/util-base64": "^2.0.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/types": "^2.7.0", + "@smithy/util-base64": "^2.0.1", "@smithy/util-buffer-from": "^2.0.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-uri-escape": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", @@ -2078,16 +1979,10 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@smithy/util-utf8": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", - "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", + "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", "optional": true, "dependencies": { "@smithy/util-buffer-from": "^2.0.0", @@ -2097,12 +1992,6 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -2125,18 +2014,18 @@ } }, "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -2144,33 +2033,33 @@ } }, "node_modules/@types/codemirror": { - "version": "5.60.5", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", - "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", "dev": true, "dependencies": { "@types/tern": "*" } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", + "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", "dev": true }, "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.10.tgz", + "integrity": "sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==", "dev": true, "dependencies": { "@types/connect": "*", @@ -2180,71 +2069,72 @@ } }, "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", + "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", "dev": true }, "node_modules/@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/jsonwebtoken": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", - "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", "dev": true }, "node_modules/@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "version": "2.13.12", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.12.tgz", + "integrity": "sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==", "dev": true, "dependencies": { "@types/accepts": "*", @@ -2258,18 +2148,18 @@ } }, "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", "dev": true, "dependencies": { "@types/koa": "*" } }, "node_modules/@types/koa-compress": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-4.0.3.tgz", - "integrity": "sha512-nJSII/tOSvYCwk3yDEBJLHd8ctkt5CQFZ0j8ZBnHZ2x0hg24z9H1i38lWXA/5z0Ix0uitMW1jov+kVbQI1aNPQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-4.0.6.tgz", + "integrity": "sha512-jJzlsQTeIXRfQzY7y2Dl/syqOxvEaNJzFTJ8ZGaDFWvqgMmCXplfCGjPfHQgU7xYNKq/mCdN3YWus1YOldfIwg==", "dev": true, "dependencies": { "@types/koa": "*", @@ -2277,27 +2167,27 @@ } }, "node_modules/@types/koa-router": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.4.tgz", - "integrity": "sha512-3dHlZ6CkhgcWeF6wafEUvyyqjWYfKmev3vy1PtOmr0mBc3wpXPU5E8fBBd4YQo5bRpHPfmwC5yDaX7s4jhIN6A==", + "version": "7.4.8", + "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.8.tgz", + "integrity": "sha512-SkWlv4F9f+l3WqYNQHnWjYnyTxYthqt8W9az2RTdQW7Ay8bc00iRZcrb8MC75iEfPqnGcg2csEl8tTG1NQPD4A==", "dev": true, "dependencies": { "@types/koa": "*" } }, "node_modules/@types/koa-send": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.3.tgz", - "integrity": "sha512-daaTqPZlgjIJycSTNjKpHYuKhXYP30atFc1pBcy6HHqB9+vcymDgYTguPdx9tO4HMOqNyz6bz/zqpxt5eLR+VA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.6.tgz", + "integrity": "sha512-vgnNGoOJkx7FrF0Jl6rbK1f8bBecqAchKpXtKuXzqIEdXTDO6dsSTjr+eZ5m7ltSjH4K/E7auNJEQCAd0McUPA==", "dev": true, "dependencies": { "@types/koa": "*" } }, "node_modules/@types/koa-static": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.2.tgz", - "integrity": "sha512-ns/zHg+K6XVPMuohjpOlpkR1WLa4VJ9czgUP9bxkCDn0JZBtUWbD/wKDZzPGDclkQK1bpAEScufCHOy8cbfL0w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.4.tgz", + "integrity": "sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A==", "dev": true, "dependencies": { "@types/koa": "*", @@ -2305,75 +2195,95 @@ } }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "node_modules/@types/mithril": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.11.tgz", - "integrity": "sha512-2tYTImXc7RzWkPpgcbnSKpV46DQI4Bm8CfgmkrIbst8MJlX6d8hdgy2yQCEf5NZYLGNyK4xbzb4rr8VPmk0iXQ==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.2.6.tgz", + "integrity": "sha512-cU142pS/rDHpE0NlC2XJpejD2ihzMQ+jI7R0cOLCVWRQJFxwD9CUxJGdRmWu9DrGLr52G2QjMRCfXs+ew4LD2Q==", "dev": true }, "node_modules/@types/node": { - "version": "18.7.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz", - "integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ==" + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/parsimmon": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.6.tgz", - "integrity": "sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA==", + "version": "1.10.9", + "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.9.tgz", + "integrity": "sha512-O2M2x1w+m7gWLen8i5DOy6tWRnbRcsW6Pke3j3HAsJUrPb4g0MgjksIUm2aqUtCYxy7Qjr3CzjjwQBzhiGn46A==", "dev": true }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/seedrandom": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.2.tgz", - "integrity": "sha512-YPLqEOo0/X8JU3rdiq+RgUKtQhQtrppE766y7vMTu8dGML7TVtZNiiiaC/hhU9Zqw9UYopXxhuWWENclMVBwKQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.8.tgz", + "integrity": "sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==", "dev": true }, - "node_modules/@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "node_modules/@types/tern": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", - "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", "dev": true, "dependencies": { "@types/estree": "*" } }, "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", @@ -2385,31 +2295,33 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz", - "integrity": "sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", + "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/type-utils": "5.33.1", - "@typescript-eslint/utils": "5.33.1", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/type-utils": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2418,25 +2330,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz", - "integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2445,16 +2358,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz", - "integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2462,24 +2375,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz", - "integrity": "sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", + "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.33.1", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/utils": "6.14.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -2488,12 +2402,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz", - "integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2501,21 +2415,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz", - "integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -2528,46 +2442,53 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.1.tgz", - "integrity": "sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", + "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz", - "integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.14.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -2581,9 +2502,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2602,9 +2523,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2669,9 +2590,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -3007,6 +2928,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, "node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -3016,22 +2952,14 @@ "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3089,24 +3017,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3194,9 +3104,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "engines": { "node": ">=6" @@ -3286,24 +3196,27 @@ } }, "node_modules/codemirror": { - "version": "5.65.8", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.8.tgz", - "integrity": "sha512-TNGkSkkoAsmZSf6W6g35LMVQJBHKasc2CKwhr/fTxSYun7cn6J+CbtyNjV/MYlFVkNTsqZoviegyCZimWhoMMA==", + "version": "5.65.16", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", + "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==", "dev": true }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/commander": { @@ -3385,41 +3298,19 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/convert-to-spaces": { "version": "1.0.2", @@ -3601,12 +3492,15 @@ "dev": true }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -3615,6 +3509,19 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/del": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", @@ -3904,50 +3811,49 @@ } }, "node_modules/eslint": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", - "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -3960,9 +3866,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -3972,58 +3878,9 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -4031,15 +3888,21 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/glob-parent": { @@ -4055,14 +3918,14 @@ } }, "node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4090,9 +3953,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -4101,15 +3964,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -4122,7 +3976,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -4131,15 +3985,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4156,15 +4001,15 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -4212,9 +4057,9 @@ } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -4285,12 +4130,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -4298,9 +4144,9 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/fresh": { @@ -4318,9 +4164,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -4332,15 +4178,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-caller-file": { "version": "2.0.5", @@ -4352,13 +4195,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4409,9 +4253,9 @@ } }, "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "dependencies": { "ini": "2.0.0" @@ -4424,9 +4268,9 @@ } }, "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4458,6 +4302,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -4490,28 +4345,17 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4521,6 +4365,28 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -4555,6 +4421,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -4574,9 +4451,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-errors": { @@ -4633,9 +4510,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -4712,9 +4589,9 @@ } }, "node_modules/inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", "engines": { "node": ">= 0.8.0" } @@ -4749,17 +4626,17 @@ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "engines": { "node": ">= 10" } }, "node_modules/irregular-plurals": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", - "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", "dev": true, "engines": { "node": ">=8" @@ -4796,12 +4673,12 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5003,9 +4880,9 @@ } }, "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "node_modules/json-parse-better-errors": { @@ -5054,9 +4931,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -5092,18 +4969,18 @@ } }, "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "node_modules/koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -5134,12 +5011,13 @@ } }, "node_modules/koa-bodyparser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz", - "integrity": "sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", "dependencies": { "co-body": "^6.0.0", - "copy-to": "^2.0.1" + "copy-to": "^2.0.1", + "type-is": "^1.6.18" }, "engines": { "node": ">=8.0.0" @@ -5151,26 +5029,17 @@ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" }, "node_modules/koa-compress": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.0.tgz", - "integrity": "sha512-G3Ppo9jrUwlchp6qdoRgQNMiGZtM0TAHkxRZQ7EoVvIG8E47J4nAsMJxXHAUQ+0oc7t0MDxSdONWTFcbzX7/Bg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.1.tgz", + "integrity": "sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==", "dependencies": { - "bytes": "^3.0.0", - "compressible": "^2.0.0", - "http-errors": "^1.8.0", - "koa-is-json": "^1.0.0", - "statuses": "^2.0.1" + "bytes": "^3.1.2", + "compressible": "^2.0.18", + "http-errors": "^1.8.1", + "koa-is-json": "^1.0.0" }, "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/koa-compress/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + "node": ">= 12" } }, "node_modules/koa-convert": { @@ -5191,11 +5060,11 @@ "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==" }, "node_modules/koa-jwt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/koa-jwt/-/koa-jwt-4.0.3.tgz", - "integrity": "sha512-NCdkEZ9cTNLdfxlwlJOFpKIjIZAXgo3zNZjvAVXRVyFkgGFxn7areoqmIfu/tqel4V7j5a7c6b0ago8IoZJUyg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/koa-jwt/-/koa-jwt-4.0.4.tgz", + "integrity": "sha512-Tid9BQfpVtUG/8YZV38a+hDKll0pfVhfl7A/2cNaYThS1cxMFXylZzfARqHQqvNhHy9qM+qkxd4/z6EaIV4SAQ==", "dependencies": { - "jsonwebtoken": "^8.5.1", + "jsonwebtoken": "^9.0.0", "koa-unless": "^1.0.7", "p-any": "^2.1.0" }, @@ -5203,11 +5072,33 @@ "node": ">= 8" } }, - "node_modules/koa-router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", - "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", + "node_modules/koa-jwt/node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/koa-router": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "dependencies": { + "debug": "^4.3.4", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", "methods": "^1.1.2", @@ -5425,7 +5316,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5449,9 +5339,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -5609,10 +5499,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mithril": { "version": "2.2.2", @@ -5627,12 +5520,12 @@ } }, "node_modules/mongodb": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.16.0.tgz", - "integrity": "sha512-0EB113Fsucaq1wsY0dOhi1fmZOwFtLOtteQkiqOXGklvWMnSH3g2QS53f0KTP+/6qOkuoXE2JksubSZNmxeI+g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", "dependencies": { "bson": "^4.7.2", - "mongodb-connection-string-url": "^2.5.4", + "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" }, "engines": { @@ -5640,7 +5533,7 @@ }, "optionalDependencies": { "@aws-sdk/credential-providers": "^3.186.0", - "saslprep": "^1.0.3" + "@mongodb-js/saslprep": "^1.1.0" } }, "node_modules/mongodb-connection-string-url": { @@ -5684,9 +5577,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -5701,6 +5594,15 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5714,9 +5616,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5771,17 +5673,17 @@ "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -5978,9 +5880,9 @@ } }, "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6278,15 +6180,15 @@ } }, "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -6318,9 +6220,9 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -6338,9 +6240,9 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dependencies": { "side-channel": "^1.0.4" }, @@ -6372,9 +6274,9 @@ ] }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -6492,9 +6394,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -6517,18 +6419,6 @@ "node": ">=8.10.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/registry-auth-token": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", @@ -6563,12 +6453,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -6724,37 +6614,38 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6778,9 +6669,9 @@ } }, "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6813,6 +6704,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -6896,24 +6801,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -6965,9 +6852,9 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -6991,9 +6878,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/sprintf-js": { @@ -7003,9 +6890,9 @@ "dev": true }, "node_modules/sql.js": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.7.0.tgz", - "integrity": "sha512-qAfft3xkSgHqmmfNugWTp/59PsqIw8gbeao5TZmpmzQQsAJ49de3iDDKuxVixidYs6dkHNksY8m27v2dZNn2jw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.9.0.tgz", + "integrity": "sha512-+QMN8NU5KJxofT+lEaSLYdhh+Pdq7ZYS6X5bSbpmD+4SKFf+qBmr+coKT07LZ+keUNh1sf3Nz9dQwD8WNI2i/Q==", "dev": true }, "node_modules/stable": { @@ -7016,9 +6903,9 @@ "dev": true }, "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -7053,26 +6940,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -7282,11 +7149,23 @@ "node": ">=0.10.0" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "devOptional": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "node_modules/tsscmp": { "version": "1.0.6", @@ -7296,21 +7175,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7357,18 +7221,23 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -7453,12 +7322,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7542,15 +7405,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -7583,24 +7437,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -7640,8 +7476,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", @@ -7701,6 +7536,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@aws-crypto/crc32": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", @@ -7710,6 +7551,14 @@ "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-crypto/ie11-detection": { @@ -7719,6 +7568,14 @@ "optional": true, "requires": { "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-crypto/sha256-browser": { @@ -7735,6 +7592,14 @@ "@aws-sdk/util-locate-window": "^3.0.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-crypto/sha256-js": { @@ -7746,6 +7611,14 @@ "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-crypto/supports-web-crypto": { @@ -7755,6 +7628,14 @@ "optional": true, "requires": { "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-crypto/util": { @@ -7766,636 +7647,485 @@ "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "optional": true + } } }, "@aws-sdk/client-cognito-identity": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.379.1.tgz", - "integrity": "sha512-aONC8IyC54OMcdoRCqI+Fw4VIIlonWmFdLDyZPfGoqwYpe/Vqz7DPF7s/ohqiZBSpEt2SzZeKHEpmkBPR8fpkw==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.474.0.tgz", + "integrity": "sha512-vdO5eiJI8VnIKku/RNkj49MR4PnRFtSkIFGFRRuMIx64TiduHaA7cJfj43Kpw68/Gq1HS4fuoj/Y41xm0QZKdg==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.379.1", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/client-sts": "3.474.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/client-sso": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.379.1.tgz", - "integrity": "sha512-2N16TPnRcq+seNP8VY/Zq7kfnrUOrJMbVNpyDZWGe5Qglua3n8v/FzxmXFNI87MiSODq8IHtiXhggWhefCd+TA==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.474.0.tgz", + "integrity": "sha512-6toUmQUIHkDM/P2/nyLEO/mcWOIPByTlegqX9VCHhYh9Fs5MDT2nit7I6fZzBjZjB5oVTwKjbzgxae9cE3bhqw==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } - } - }, - "@aws-sdk/client-sso-oidc": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.379.1.tgz", - "integrity": "sha512-B6hZ2ysPyvafCMf6gls1jHI/IUviVZ4+TURpNfUBqThg/hZ1IMxc4BLkXca6VlgzYR+bWU8GKiClS9fFH6mu0g==", - "optional": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/client-sts": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.379.1.tgz", - "integrity": "sha512-gEnKuk9bYjThvmxCgOgCn1qa+rRX8IgIRE2+xhbWhlpDanozhkDq9aMB5moX4tBNYQEmi1LtGD+JOvOoZRnToQ==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.474.0.tgz", + "integrity": "sha512-qPPMbrDVAUJgYiFWVewFG7dg0VyMfuGNNK4IC1nZr0eXejUTbdm8cio6IZ8OkWtK+A+L+wx1vX5686WYVgQ0dQ==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/middleware-host-header": "3.379.1", - "@aws-sdk/middleware-logger": "3.378.0", - "@aws-sdk/middleware-recursion-detection": "3.378.0", - "@aws-sdk/middleware-sdk-sts": "3.379.1", - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/middleware-user-agent": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@aws-sdk/util-user-agent-browser": "3.378.0", - "@aws-sdk/util-user-agent-node": "3.378.0", - "@smithy/config-resolver": "^2.0.1", - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/hash-node": "^2.0.1", - "@smithy/invalid-dependency": "^2.0.1", - "@smithy/middleware-content-length": "^2.0.1", - "@smithy/middleware-endpoint": "^2.0.1", - "@smithy/middleware-retry": "^2.0.1", - "@smithy/middleware-serde": "^2.0.1", - "@smithy/middleware-stack": "^2.0.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/smithy-client": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-base64": "^2.0.0", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.0.0", - "@smithy/util-defaults-mode-browser": "^2.0.1", - "@smithy/util-defaults-mode-node": "^2.0.1", - "@smithy/util-retry": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@aws-sdk/core": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.1.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } + } + }, + "@aws-sdk/core": { + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.474.0.tgz", + "integrity": "sha512-eVRdeB+AoTNSzfc4viHfr0jfkHujSlf4ToExJtTuxS1wlgmIyyxRNrVKxbf0K78YK/TXRsRlJPoS5QCD5h1S2w==", + "optional": true, + "requires": { + "@smithy/core": "^1.1.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.379.1.tgz", - "integrity": "sha512-29X4nxo+47TeENgCpaTeMaK66cn7Uv7Fo4HPvGoevtWljqMqlSSNwQgmvpvqkQWGNtG6Ma/7GXkPMBuoqpwC8g==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.474.0.tgz", + "integrity": "sha512-YD0AHBSXlGXv5cU7BZ0oXWUNCnhW4pyun/M9XsDlU9ptdJDyYa860bsfM6JCs3TwMqMOc+OXOzJMJdsibmR9Pg==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-cognito-identity": "3.474.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-env": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.378.0.tgz", - "integrity": "sha512-B2OVdO9kBClDwGgWTBLAQwFV8qYTYGyVujg++1FZFSFMt8ORFdZ5fNpErvJtiSjYiOOQMzyBeSNhKyYNXCiJjQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", + "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + } + }, + "@aws-sdk/credential-provider-http": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.468.0.tgz", + "integrity": "sha512-pUF+gmeCr4F1De69qEsWgnNeF7xzlLcjiGcbpO6u9k6NQdRR7Xr3wTQnQt1+3MgoIdbgoXpCfQYNZ4LfX6B/sA==", + "optional": true, + "requires": { + "@aws-sdk/types": "3.468.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/util-stream": "^2.0.23", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-ini": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.379.1.tgz", - "integrity": "sha512-YhEsJIskzCFwIIKiMN9GSHQkgWwj/b7rq0ofhsXsCRimFtdVkmMlB9veE6vtFAuXpX/WOGWdlWek1az0V22uuw==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.474.0.tgz", + "integrity": "sha512-3Y2fHI4ZCNjdOO47Vh/xBgLXOrKm3KwBkYkBKKT2g02FUGNT8NLjJg8WBo3D4RQX2h34qx4mtW5nTY6YcGP80Q==", "optional": true, "requires": { - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-node": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.379.1.tgz", - "integrity": "sha512-39Y4OHKn6a8lY8YJhSLLw08aZytWxfvSjM4ObIEnE6hjLl8gsL9vROKKITsh3q6iGQ1EDSWMWZL50aOh3LJUIg==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.474.0.tgz", + "integrity": "sha512-3OVVVGnb8Ru5hWeeHkg76YZT5mrufweIiWr6ge5zn7FYxc7WkyqIJ0XehqUqG5VQfaYhqh7uq/zmk8OE2B04lQ==", "optional": true, "requires": { - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-ini": "3.379.1", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.474.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-process": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.378.0.tgz", - "integrity": "sha512-KFTIy7u+wXj3eDua4rgS0tODzMnXtXhAm1RxzCW9FL5JLBBrd82ymCj1Dp72217Sw5Do6NjCnDTTNkCHZMA77w==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", + "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-sso": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.379.1.tgz", - "integrity": "sha512-PhGtu1+JbUntYP/5CSfazQhWsjUBiksEuhg9fLhYl5OAgZVjVygbgoNVUz/gM7gZJSEMsasTazkn7yZVzO/k7w==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.474.0.tgz", + "integrity": "sha512-ik4rzhQtcRLSHB/MLQfi/dSpILxPd3zITb79DIEnqT3gpZRNjoARkZ3Hi68pujkU2530NYf8NcFwLCWoV1hS7Q==", "optional": true, "requires": { - "@aws-sdk/client-sso": "3.379.1", - "@aws-sdk/token-providers": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-sso": "3.474.0", + "@aws-sdk/token-providers": "3.470.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.378.0.tgz", - "integrity": "sha512-GWjydOszhc4xDF8xuPtBvboglXQr0gwCW1oHAvmLcOT38+Hd6qnKywnMSeoXYRPgoKfF9TkWQgW1jxplzCG0UA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", + "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/credential-providers": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.379.1.tgz", - "integrity": "sha512-srPdRQmavvWAwtrlYqo5GaIhIH0bhMl0knzxIDUf81aBfitNKACWwnbML7TpL/dWSPH2b7ciOBWneK1o1GKNLg==", + "version": "3.474.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.474.0.tgz", + "integrity": "sha512-n4NG2Y1kgt6cTT7QZhGgTAbzw83tTDoKSNAcHDzLNKRmtEAf3aSX/lBMrBAovsrDWr6FF8saKEHfEv1XhP8ewA==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.379.1", - "@aws-sdk/client-sso": "3.379.1", - "@aws-sdk/client-sts": "3.379.1", - "@aws-sdk/credential-provider-cognito-identity": "3.379.1", - "@aws-sdk/credential-provider-env": "3.378.0", - "@aws-sdk/credential-provider-ini": "3.379.1", - "@aws-sdk/credential-provider-node": "3.379.1", - "@aws-sdk/credential-provider-process": "3.378.0", - "@aws-sdk/credential-provider-sso": "3.379.1", - "@aws-sdk/credential-provider-web-identity": "3.378.0", - "@aws-sdk/types": "3.378.0", + "@aws-sdk/client-cognito-identity": "3.474.0", + "@aws-sdk/client-sso": "3.474.0", + "@aws-sdk/client-sts": "3.474.0", + "@aws-sdk/credential-provider-cognito-identity": "3.474.0", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-http": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.474.0", + "@aws-sdk/credential-provider-node": "3.474.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.474.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/middleware-host-header": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.379.1.tgz", - "integrity": "sha512-LI4KpAFWNWVr2aH2vRVblr0Y8tvDz23lj8LOmbDmCrzd5M21nxuocI/8nEAQj55LiTIf9Zs+dHCdsyegnFXdrA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", + "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/middleware-logger": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.378.0.tgz", - "integrity": "sha512-l1DyaDLm3KeBMNMuANI3scWh8Xvu248x+vw6Z7ExWOhGXFmQ1MW7YvASg/SdxWkhlF9HmkkTif1LdMB22x6QDA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", + "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.378.0.tgz", - "integrity": "sha512-mUMfHAz0oGNIWiTZHTVJb+I515Hqs2zx1j36Le4MMiiaMkPW1SRUF1FIwGuc1wh6E8jB5q+XfEMriDjRi4TZRA==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", + "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } - } - }, - "@aws-sdk/middleware-sdk-sts": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.379.1.tgz", - "integrity": "sha512-SK3gSyT0XbLiY12+AjLFYL9YngxOXHnZF3Z33Cdd4a+AUYrVBV7JBEEGD1Nlwrcmko+3XgaKlmgUaR5s91MYvg==", - "optional": true, - "requires": { - "@aws-sdk/middleware-signing": "3.379.1", - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", - "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/middleware-signing": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.379.1.tgz", - "integrity": "sha512-kBk2ZUvR84EM4fICjr8K+Ykpf8SI1UzzPp2/UVYZ0X+4H/ZCjfSqohGRwHykMqeplne9qHSL7/rGJs1H3l3gPg==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", + "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^2.0.1", + "@smithy/protocol-http": "^3.0.11", "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-middleware": "^2.0.0", + "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/middleware-user-agent": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.379.1.tgz", - "integrity": "sha512-4zIGeAIuutcRieAvovs82uBNhJBHuxfxaAUqrKiw49xUBG7xeNVUl+DYPSpbALbEIy4ujfwWCBOOWVCt6dyUZg==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.470.0.tgz", + "integrity": "sha512-s0YRGgf4fT5KwwTefpoNUQfB5JghzXyvmPfY1QuFEMeVQNxv0OPuydzo3rY2oXPkZjkulKDtpm5jzIHwut75hA==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@aws-sdk/util-endpoints": "3.378.0", - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + } + }, + "@aws-sdk/region-config-resolver": { + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz", + "integrity": "sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/token-providers": { - "version": "3.379.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.379.1.tgz", - "integrity": "sha512-NlYPkArJ7A/txCrjqqkje+4hsv7pSOqm+Qdx3BUIOc7PRYrBVs/XwThxUkGceSntVXoNlO8g9DFL0NY53/wb8Q==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.470.0.tgz", + "integrity": "sha512-rzxnJxEUJiV69Cxsf0AHXTqJqTACITwcSH/PL4lWP4uvtzdrzSi3KA3u2aWHWpOcdE6+JFvdICscsbBSo3/TOg==", "optional": true, "requires": { - "@aws-sdk/client-sso-oidc": "3.379.1", - "@aws-sdk/types": "3.378.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.470.0", + "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.470.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/protocol-http": "^3.0.11", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/types": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.378.0.tgz", - "integrity": "sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/util-endpoints": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.378.0.tgz", - "integrity": "sha512-NU5C2l2xAXxpyB5nT0fIhahLPlJoJdzHWw4uC53KH9b4PrjHtgvgCN8beIsD3QxyfgeoM4A5J9Auo6WurfRnLw==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.470.0.tgz", + "integrity": "sha512-6N6VvPCmu+89p5Ez/+gLf+X620iQ9JpIs8p8ECZiCodirzFOe8NC1O2S7eov7YiG9IHSuodqn/0qNq+v+oLe0A==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", + "@aws-sdk/types": "3.468.0", + "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "version": "3.465.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz", + "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==", "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.378.0.tgz", - "integrity": "sha512-FSCpagzftK1W+m7Ar6lpX7/Gr9y5P56nhFYz8U4EYQ4PkufS6czWX9YW+/FA5OYV0vlQ/SvPqMnzoHIPUNhZrQ==", + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", + "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/types": "^2.7.0", "bowser": "^2.11.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/util-user-agent-node": { - "version": "3.378.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.378.0.tgz", - "integrity": "sha512-IdwVJV0E96MkJeFte4dlWqvB+oiqCiZ5lOlheY3W9NynTuuX0GGYNC8Y9yIsV8Oava1+ujpJq0ww6qXdYxmO4A==", + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", + "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", "optional": true, "requires": { - "@aws-sdk/types": "3.378.0", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@aws-sdk/types": "3.468.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@aws-sdk/util-utf8-browser": { @@ -8405,39 +8135,90 @@ "optional": true, "requires": { "tslib": "^2.3.1" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -8461,6 +8242,21 @@ "supports-color": "^5.3.0" } }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -8485,9 +8281,9 @@ } }, "@breejs/later": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.1.0.tgz", - "integrity": "sha512-QgGnZ9b7o4k0Ai1ZbTJWwZpZcFK9d+Gb+DyNt4UT9x6IEIs5HVu0iIlmgzGqN+t9MoJSpSPo9S/Mm51UtHr3JA==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@breejs/later/-/later-4.2.0.tgz", + "integrity": "sha512-EVMD0SgJtOuFeg0lAVbCwa+qeTKILb87jqvLyUtQswGD9+ce2nB52Y5zbTF1Hc0MDFfbydcMcxb47jSdhikVHA==" }, "@concordance/react": { "version": "2.0.0", @@ -8660,16 +8456,31 @@ "dev": true, "optional": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -8677,29 +8488,44 @@ "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true + }, "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "@mongodb-js/saslprep": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", + "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8733,141 +8559,101 @@ "dev": true }, "@smithy/abort-controller": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.1.tgz", - "integrity": "sha512-0s7XjIbsTwZyUW9OwXQ8J6x1UiA1TNCh60Vaw56nHahL7kUZsLhmTlWiaxfLkFtO2Utkj8YewcpHTYpxaTzO+w==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.15.tgz", + "integrity": "sha512-JkS36PIS3/UCbq/MaozzV7jECeL+BTt4R75bwY8i+4RASys4xOyUS1HsRyUNSqUXFP4QyCz5aNnh3ltuaxv+pw==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/config-resolver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.1.tgz", - "integrity": "sha512-l83Pm7hV+8CBQOCmBRopWDtF+CURUJol7NsuPYvimiDhkC2F8Ba9T1imSFE+pD1UIJ9jlsDPAnZfPJT5cjnuEw==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.21.tgz", + "integrity": "sha512-rlLIGT+BeqjnA6C2FWumPRJS1UW07iU5ZxDHtFuyam4W65gIaOFMjkB90ofKCIh+0mLVQrQFrl/VLtQT/6FWTA==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", + "tslib": "^2.5.0" + } + }, + "@smithy/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.1.0.tgz", + "integrity": "sha512-k1zaT5S4K0bG67Q5TmPZ6PdWNQBTMQErChuDvTi+NTx21kKDt+/4YRidsK6nDbHizN6fn1bafUxrougZdKrpxA==", + "optional": true, + "requires": { + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/credential-provider-imds": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.0.1.tgz", - "integrity": "sha512-8VxriuRINNEfVZjEFKBY75y9ZWAx73DZ5K/u+3LmB6r8WR2h3NaFxFKMlwlq0uzNdGhD1ouKBn9XWEGYHKiPLw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.4.tgz", + "integrity": "sha512-cwPJN1fa1YOQzhBlTXRavABEYRRchci1X79QRwzaNLySnIMJfztyv1Zkst0iZPLMnpn8+CnHu3wOHS11J5Dr3A==", "optional": true, "requires": { - "@smithy/node-config-provider": "^2.0.1", - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/property-provider": "^2.0.16", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/eventstream-codec": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.1.tgz", - "integrity": "sha512-/IiNB7gQM2y2ZC/GAWOWDa8+iXfhr1g9Xe5979cQEOdCWDISvrAiv18cn3OtIQUhbYOR3gm7QtCpkq1to2takQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.15.tgz", + "integrity": "sha512-crjvz3j1gGPwA0us6cwS7+5gAn35CTmqu/oIxVbYJo2Qm/sGAye6zGJnMDk3BKhWZw5kcU1G4MxciTkuBpOZPg==", "optional": true, "requires": { "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-hex-encoding": "^2.0.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/fetch-http-handler": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.0.1.tgz", - "integrity": "sha512-/SoU/ClazgcdOxgE4zA7RX8euiELwpsrKCSvulVQvu9zpmqJRyEJn8ZTWYFV17/eHOBdHTs9kqodhNhsNT+cUw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.3.1.tgz", + "integrity": "sha512-6MNk16fqb8EwcYY8O8WxB3ArFkLZ2XppsSNo1h7SQcFdDDwIumiJeO6wRzm7iB68xvsOQzsdQKbdtTieS3hfSQ==", "optional": true, "requires": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/querystring-builder": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/util-base64": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/querystring-builder": "^2.0.15", + "@smithy/types": "^2.7.0", + "@smithy/util-base64": "^2.0.1", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/hash-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.1.tgz", - "integrity": "sha512-oTKYimQdF4psX54ZonpcIE+MXjMUWFxLCNosjPkJPFQ9whRX0K/PFX/+JZGRQh3zO9RlEOEUIbhy9NO+Wha6hw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.17.tgz", + "integrity": "sha512-Il6WuBcI1nD+e2DM7tTADMf01wEPGK8PAhz4D+YmDUVaoBqlA+CaH2uDJhiySifmuKBZj748IfygXty81znKhw==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/invalid-dependency": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.1.tgz", - "integrity": "sha512-2q/Eb0AE662zwyMV+z+TL7deBwcHCgaZZGc0RItamBE8kak3MzCi/EZCNoFWoBfxgQ4jfR12wm8KKsSXhJzJtQ==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.15.tgz", + "integrity": "sha512-dlEKBFFwVfzA5QroHlBS94NpgYjXhwN/bFfun+7w3rgxNvVy79SK0w05iGc7UAeC5t+D7gBxrzdnD6hreZnDVQ==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/is-array-buffer": { @@ -8877,382 +8663,230 @@ "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/middleware-content-length": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.1.tgz", - "integrity": "sha512-IZhRSk5GkVBcrKaqPXddBS2uKhaqwBgaSgbBb1OJyGsKe7SxRFbclWS0LqOR9fKUkDl+3lL8E2ffpo6EQg0igw==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.17.tgz", + "integrity": "sha512-OyadvMcKC7lFXTNBa8/foEv7jOaqshQZkjWS9coEXPRZnNnihU/Ls+8ZuJwGNCOrN2WxXZFmDWhegbnM4vak8w==", "optional": true, "requires": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/middleware-endpoint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.0.1.tgz", - "integrity": "sha512-uz/KI1MBd9WHrrkVFZO4L4Wyv24raf0oR4EsOYEeG5jPJO5U+C7MZGLcMxX8gWERDn1sycBDqmGv8fjUMLxT6w==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.3.tgz", + "integrity": "sha512-nYfxuq0S/xoAjdLbyn1ixeVB6cyH9wYCMtbbOCpcCRYR5u2mMtqUtVjjPAZ/DIdlK3qe0tpB0Q76szFGNuz+kQ==", "optional": true, "requires": { - "@smithy/middleware-serde": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/url-parser": "^2.0.1", - "@smithy/util-middleware": "^2.0.0", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/shared-ini-file-loader": "^2.2.7", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/middleware-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.1.tgz", - "integrity": "sha512-NKHF4i0gjSyjO6C0ZyjEpNqzGgIu7s8HOK6oT/1Jqws2Q1GynR1xV8XTUs1gKXeaNRzbzKQRewHHmfPwZjOtHA==", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.24.tgz", + "integrity": "sha512-q2SvHTYu96N7lYrn3VSuX3vRpxXHR/Cig6MJpGWxd0BWodUQUWlKvXpWQZA+lTaFJU7tUvpKhRd4p4MU3PbeJg==", "optional": true, "requires": { - "@smithy/protocol-http": "^2.0.1", - "@smithy/service-error-classification": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-middleware": "^2.0.0", - "@smithy/util-retry": "^2.0.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", + "@smithy/service-error-classification": "^2.0.8", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", + "@smithy/util-retry": "^2.0.8", "tslib": "^2.5.0", "uuid": "^8.3.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/middleware-serde": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.1.tgz", - "integrity": "sha512-uKxPaC6ItH9ZXdpdqNtf8sda7GcU4SPMp0tomq/5lUg9oiMa/Q7+kD35MUrpKaX3IVXVrwEtkjCU9dogZ/RAUA==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.15.tgz", + "integrity": "sha512-FOZRFk/zN4AT4wzGuBY+39XWe+ZnCFd0gZtyw3f9Okn2CJPixl9GyWe98TIaljeZdqWkgrzGyPre20AcW2UMHQ==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/middleware-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.0.tgz", - "integrity": "sha512-31XC1xNF65nlbc16yuh3wwTudmqs6qy4EseQUGF8A/p2m/5wdd/cnXJqpniy/XvXVwkHPz/GwV36HqzHtIKATQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.9.tgz", + "integrity": "sha512-bCB5dUtGQ5wh7QNL2ELxmDc6g7ih7jWU3Kx6MYH1h4mZbv9xL3WyhKHojRltThCB1arLPyTUFDi+x6fB/oabtA==", "optional": true, "requires": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/node-config-provider": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.0.1.tgz", - "integrity": "sha512-Zoel4CPkKRTQ2XxmozZUfqBYqjPKL53/SvTDhJHj+VBSiJy6MXRav1iDCyFPS92t40Uh+Yi+Km5Ch3hQ+c/zSA==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.8.tgz", + "integrity": "sha512-+w26OKakaBUGp+UG+dxYZtFb5fs3tgHg3/QrRrmUZj+rl3cIuw840vFUXX35cVPTUCQIiTqmz7CpVF7+hdINdQ==", "optional": true, "requires": { - "@smithy/property-provider": "^2.0.1", - "@smithy/shared-ini-file-loader": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/property-provider": "^2.0.16", + "@smithy/shared-ini-file-loader": "^2.2.7", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/node-http-handler": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.0.1.tgz", - "integrity": "sha512-Zv3fxk3p9tsmPT2CKMsbuwbbxnq2gzLDIulxv+yI6aE+02WPYorObbbe9gh7SW3weadMODL1vTfOoJ9yFypDzg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.2.1.tgz", + "integrity": "sha512-8iAKQrC8+VFHPAT8pg4/j6hlsTQh+NKOWlctJBrYtQa4ExcxX7aSg3vdQ2XLoYwJotFUurg/NLqFCmZaPRrogw==", "optional": true, "requires": { - "@smithy/abort-controller": "^2.0.1", - "@smithy/protocol-http": "^2.0.1", - "@smithy/querystring-builder": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/abort-controller": "^2.0.15", + "@smithy/protocol-http": "^3.0.11", + "@smithy/querystring-builder": "^2.0.15", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/property-provider": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.1.tgz", - "integrity": "sha512-pmJRyY9SF6sutWIktIhe+bUdSQDxv/qZ4mYr3/u+u45riTPN7nmRxPo+e4sjWVoM0caKFjRSlj3tf5teRFy0Vg==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.16.tgz", + "integrity": "sha512-28Ky0LlOqtEjwg5CdHmwwaDRHcTWfPRzkT6HrhwOSRS2RryAvuDfJrZpM+BMcrdeCyEg1mbcgIMoqTla+rdL8Q==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/protocol-http": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.1.tgz", - "integrity": "sha512-mrkMAp0wtaDEIkgRObWYxI1Kun1tm6Iu6rK+X4utb6Ah7Uc3Kk4VIWwK/rBHdYGReiLIrxFCB1rq4a2gyZnSgg==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.11.tgz", + "integrity": "sha512-3ziB8fHuXIRamV/akp/sqiWmNPR6X+9SB8Xxnozzj+Nq7hSpyKdFHd1FLpBkgfGFUTzzcBJQlDZPSyxzmdcx5A==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/querystring-builder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.1.tgz", - "integrity": "sha512-bp+93WFzx1FojVEIeFPtG0A1pKsFdCUcZvVdZdRlmNooOUrz9Mm9bneRd8hDwAQ37pxiZkCOxopSXXRQN10mYw==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.15.tgz", + "integrity": "sha512-e1q85aT6HutvouOdN+dMsN0jcdshp50PSCvxDvo6aIM57LqeXimjfONUEgfqQ4IFpYWAtVixptyIRE5frMp/2A==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-uri-escape": "^2.0.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/querystring-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.1.tgz", - "integrity": "sha512-h+e7k1z+IvI2sSbUBG9Aq46JsgLl4UqIUl6aigAlRBj+P6ocNXpM6Yn1vMBw5ijtXeZbYpd1YvCxwDgdw3jhmg==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.15.tgz", + "integrity": "sha512-jbBvoK3cc81Cj1c1TH1qMYxNQKHrYQ2DoTntN9FBbtUWcGhc+T4FP6kCKYwRLXyU4AajwGIZstvNAmIEgUUNTQ==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/service-error-classification": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.0.tgz", - "integrity": "sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw==", - "optional": true - }, - "@smithy/shared-ini-file-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.0.1.tgz", - "integrity": "sha512-a463YiZrPGvM+F336rIF8pLfQsHAdCRAn/BiI/EWzg5xLoxbC7GSxIgliDDXrOu0z8gT3nhVsif85eU6jyct3A==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.8.tgz", + "integrity": "sha512-jCw9+005im8tsfYvwwSc4TTvd29kXRFkH9peQBg5R/4DD03ieGm6v6Hpv9nIAh98GwgYg1KrztcINC1s4o7/hg==", "optional": true, "requires": { - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0" + } + }, + "@smithy/shared-ini-file-loader": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.7.tgz", + "integrity": "sha512-0Qt5CuiogIuvQIfK+be7oVHcPsayLgfLJGkPlbgdbl0lD28nUKu4p11L+UG3SAEsqc9UsazO+nErPXw7+IgDpQ==", + "optional": true, + "requires": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/signature-v4": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.1.tgz", - "integrity": "sha512-jztv5Mirca42ilxmMDjzLdXcoAmRhZskGafGL49sRo5u7swEZcToEFrq6vtX5YMbSyTVrE9Teog5EFexY5Ff2Q==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.18.tgz", + "integrity": "sha512-SJRAj9jT/l9ocm8D0GojMbnA1sp7I4JeStOQ4lEXI8A5eHE73vbjlzlqIFB7cLvIgau0oUl4cGVpF9IGCrvjlw==", "optional": true, "requires": { - "@smithy/eventstream-codec": "^2.0.1", + "@smithy/eventstream-codec": "^2.0.15", "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.0.2", + "@smithy/types": "^2.7.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/smithy-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.0.1.tgz", - "integrity": "sha512-LHC5m6tYpEu1iNbONfvMbwtErboyTZJfEIPoD78Ei5MVr36vZQCaCla5mvo36+q/a2NAk2//fA5Rx3I1Kf7+lQ==", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.18.tgz", + "integrity": "sha512-7FqdbaJiVaHJDD9IfDhmzhSDbpjyx+ZsfdYuOpDJF09rl8qlIAIlZNoSaflKrQ3cEXZN2YxGPaNWGhbYimyIRQ==", "optional": true, "requires": { - "@smithy/middleware-stack": "^2.0.0", - "@smithy/types": "^2.0.2", - "@smithy/util-stream": "^2.0.1", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/types": "^2.7.0", + "@smithy/util-stream": "^2.0.23", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.0.2.tgz", - "integrity": "sha512-wcymEjIXQ9+NEfE5Yt5TInAqe1o4n+Nh+rh00AwoazppmUt8tdo6URhc5gkDcOYrcvlDVAZE7uG69nDpEGUKxw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.7.0.tgz", + "integrity": "sha512-1OIFyhK+vOkMbu4aN2HZz/MomREkrAC/HqY5mlJMUJfGrPRwijJDTeiN8Rnj9zUaB8ogXAfIOtZrrgqZ4w7Wnw==", "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/url-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.1.tgz", - "integrity": "sha512-NpHVOAwddo+OyyIoujDL9zGL96piHWrTNXqltWmBvlUoWgt1HPyBuKs6oHjioyFnNZXUqveTOkEEq0U5w6Uv8A==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.15.tgz", + "integrity": "sha512-sADUncUj9rNbOTrdDGm4EXlUs0eQ9dyEo+V74PJoULY4jSQxS+9gwEgsPYyiu8PUOv16JC/MpHonOgqP/IEDZA==", "optional": true, "requires": { - "@smithy/querystring-parser": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/querystring-parser": "^2.0.15", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-base64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.0.tgz", - "integrity": "sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", + "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", "optional": true, "requires": { "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-body-length-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", - "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.1.tgz", + "integrity": "sha512-NXYp3ttgUlwkaug4bjBzJ5+yIbUbUx8VsSLuHZROQpoik+gRkIBeEG9MPVYfvPNpuXb/puqodeeUXcKFe7BLOQ==", "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-body-length-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.0.0.tgz", - "integrity": "sha512-ZV7Z/WHTMxHJe/xL/56qZwSUcl63/5aaPAGjkfynJm4poILjdD4GmFI+V+YWabh2WJIjwTKZ5PNsuvPQKt93Mg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", + "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-buffer-from": { @@ -9263,14 +8897,6 @@ "requires": { "@smithy/is-array-buffer": "^2.0.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-config-provider": { @@ -9280,56 +8906,45 @@ "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-defaults-mode-browser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.1.tgz", - "integrity": "sha512-w72Qwsb+IaEYEFtYICn0Do42eFju78hTaBzzJfT107lFOPdbjWjKnFutV+6GL/nZd5HWXY7ccAKka++C3NrjHw==", + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.22.tgz", + "integrity": "sha512-qcF20IHHH96FlktvBRICDXDhLPtpVmtksHmqNGtotb9B0DYWXsC6jWXrkhrrwF7tH26nj+npVTqh9isiFV1gdA==", "optional": true, "requires": { - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/property-provider": "^2.0.16", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", "bowser": "^2.11.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-defaults-mode-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.1.tgz", - "integrity": "sha512-dNF45caelEBambo0SgkzQ0v76m4YM+aFKZNTtSafy7P5dVF8TbjZuR2UX1A5gJABD9XK6lzN+v/9Yfzj/EDgGg==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.29.tgz", + "integrity": "sha512-+uG/15VoUh6JV2fdY9CM++vnSuMQ1VKZ6BdnkUM7R++C/vLjnlg+ToiSR1FqKZbMmKBXmsr8c/TsDWMAYvxbxQ==", "optional": true, "requires": { - "@smithy/config-resolver": "^2.0.1", - "@smithy/credential-provider-imds": "^2.0.1", - "@smithy/node-config-provider": "^2.0.1", - "@smithy/property-provider": "^2.0.1", - "@smithy/types": "^2.0.2", + "@smithy/config-resolver": "^2.0.21", + "@smithy/credential-provider-imds": "^2.1.4", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/property-provider": "^2.0.16", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + } + }, + "@smithy/util-endpoints": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.7.tgz", + "integrity": "sha512-Q2gEind3jxoLk6hdKWyESMU7LnXz8aamVwM+VeVjOYzYT1PalGlY/ETa48hv2YpV4+YV604y93YngyzzzQ4IIA==", + "optional": true, + "requires": { + "@smithy/node-config-provider": "^2.1.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-hex-encoding": { @@ -9339,73 +8954,43 @@ "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-middleware": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.0.tgz", - "integrity": "sha512-eCWX4ECuDHn1wuyyDdGdUWnT4OGyIzV0LN1xRttBFMPI9Ff/4heSHVxneyiMtOB//zpXWCha1/SWHJOZstG7kA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.8.tgz", + "integrity": "sha512-qkvqQjM8fRGGA8P2ydWylMhenCDP8VlkPn8kiNuFEaFz9xnUKC2irfqsBSJrfrOB9Qt6pQsI58r3zvvumhFMkw==", "optional": true, "requires": { + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-retry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.0.tgz", - "integrity": "sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.8.tgz", + "integrity": "sha512-cQTPnVaVFMjjS6cb44WV2yXtHVyXDC5icKyIbejMarJEApYeJWpBU3LINTxHqp/tyLI+MZOUdosr2mZ3sdziNg==", "optional": true, "requires": { - "@smithy/service-error-classification": "^2.0.0", + "@smithy/service-error-classification": "^2.0.8", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.1.tgz", - "integrity": "sha512-2a0IOtwIKC46EEo7E7cxDN8u2jwOiYYJqcFKA6rd5rdXqKakHT2Gc+AqHWngr0IEHUfW92zX12wRQKwyoqZf2Q==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.23.tgz", + "integrity": "sha512-OJMWq99LAZJUzUwTk+00plyxX3ESktBaGPhqNIEVab+53gLULiWN9B/8bRABLg0K6R6Xg4t80uRdhk3B/LZqMQ==", "optional": true, "requires": { - "@smithy/fetch-http-handler": "^2.0.1", - "@smithy/node-http-handler": "^2.0.1", - "@smithy/types": "^2.0.2", - "@smithy/util-base64": "^2.0.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/types": "^2.7.0", + "@smithy/util-base64": "^2.0.1", "@smithy/util-buffer-from": "^2.0.0", "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-uri-escape": { @@ -9415,32 +9000,16 @@ "optional": true, "requires": { "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@smithy/util-utf8": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.0.tgz", - "integrity": "sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", + "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", "optional": true, "requires": { "@smithy/util-buffer-from": "^2.0.0", "tslib": "^2.5.0" - }, - "dependencies": { - "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "optional": true - } } }, "@szmarczak/http-timer": { @@ -9459,18 +9028,18 @@ "dev": true }, "@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "dev": true, "requires": { "@types/node": "*" } }, "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "requires": { "@types/connect": "*", @@ -9478,33 +9047,33 @@ } }, "@types/codemirror": { - "version": "5.60.5", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz", - "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", "dev": true, "requires": { "@types/tern": "*" } }, "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "requires": { "@types/node": "*" } }, "@types/content-disposition": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", - "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", + "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", "dev": true }, "@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.10.tgz", + "integrity": "sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==", "dev": true, "requires": { "@types/connect": "*", @@ -9514,71 +9083,72 @@ } }, "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", + "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", "dev": true }, "@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/jsonwebtoken": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", - "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "requires": { "@types/node": "*" } }, "@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", "dev": true }, "@types/koa": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", - "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "version": "2.13.12", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.12.tgz", + "integrity": "sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==", "dev": true, "requires": { "@types/accepts": "*", @@ -9592,18 +9162,18 @@ } }, "@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", "dev": true, "requires": { "@types/koa": "*" } }, "@types/koa-compress": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-4.0.3.tgz", - "integrity": "sha512-nJSII/tOSvYCwk3yDEBJLHd8ctkt5CQFZ0j8ZBnHZ2x0hg24z9H1i38lWXA/5z0Ix0uitMW1jov+kVbQI1aNPQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/koa-compress/-/koa-compress-4.0.6.tgz", + "integrity": "sha512-jJzlsQTeIXRfQzY7y2Dl/syqOxvEaNJzFTJ8ZGaDFWvqgMmCXplfCGjPfHQgU7xYNKq/mCdN3YWus1YOldfIwg==", "dev": true, "requires": { "@types/koa": "*", @@ -9611,27 +9181,27 @@ } }, "@types/koa-router": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.4.tgz", - "integrity": "sha512-3dHlZ6CkhgcWeF6wafEUvyyqjWYfKmev3vy1PtOmr0mBc3wpXPU5E8fBBd4YQo5bRpHPfmwC5yDaX7s4jhIN6A==", + "version": "7.4.8", + "resolved": "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.8.tgz", + "integrity": "sha512-SkWlv4F9f+l3WqYNQHnWjYnyTxYthqt8W9az2RTdQW7Ay8bc00iRZcrb8MC75iEfPqnGcg2csEl8tTG1NQPD4A==", "dev": true, "requires": { "@types/koa": "*" } }, "@types/koa-send": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.3.tgz", - "integrity": "sha512-daaTqPZlgjIJycSTNjKpHYuKhXYP30atFc1pBcy6HHqB9+vcymDgYTguPdx9tO4HMOqNyz6bz/zqpxt5eLR+VA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.6.tgz", + "integrity": "sha512-vgnNGoOJkx7FrF0Jl6rbK1f8bBecqAchKpXtKuXzqIEdXTDO6dsSTjr+eZ5m7ltSjH4K/E7auNJEQCAd0McUPA==", "dev": true, "requires": { "@types/koa": "*" } }, "@types/koa-static": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.2.tgz", - "integrity": "sha512-ns/zHg+K6XVPMuohjpOlpkR1WLa4VJ9czgUP9bxkCDn0JZBtUWbD/wKDZzPGDclkQK1bpAEScufCHOy8cbfL0w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.4.tgz", + "integrity": "sha512-j1AUzzl7eJYEk9g01hNTlhmipFh8RFbOQmaMNLvLcNNAkPw0bdTs3XTa3V045XFlrWN0QYnblbDJv2RzawTn6A==", "dev": true, "requires": { "@types/koa": "*", @@ -9639,75 +9209,95 @@ } }, "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "@types/mithril": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.11.tgz", - "integrity": "sha512-2tYTImXc7RzWkPpgcbnSKpV46DQI4Bm8CfgmkrIbst8MJlX6d8hdgy2yQCEf5NZYLGNyK4xbzb4rr8VPmk0iXQ==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.2.6.tgz", + "integrity": "sha512-cU142pS/rDHpE0NlC2XJpejD2ihzMQ+jI7R0cOLCVWRQJFxwD9CUxJGdRmWu9DrGLr52G2QjMRCfXs+ew4LD2Q==", "dev": true }, "@types/node": { - "version": "18.7.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz", - "integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ==" + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "@types/parsimmon": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.6.tgz", - "integrity": "sha512-FwAQwMRbkhx0J6YELkwIpciVzCcgEqXEbIrIn3a2P5d3kGEHQ3wVhlN3YdVepYP+bZzCYO6OjmD4o9TGOZ40rA==", + "version": "1.10.9", + "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.9.tgz", + "integrity": "sha512-O2M2x1w+m7gWLen8i5DOy6tWRnbRcsW6Pke3j3HAsJUrPb4g0MgjksIUm2aqUtCYxy7Qjr3CzjjwQBzhiGn46A==", "dev": true }, "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "dev": true }, "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "@types/seedrandom": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.2.tgz", - "integrity": "sha512-YPLqEOo0/X8JU3rdiq+RgUKtQhQtrppE766y7vMTu8dGML7TVtZNiiiaC/hhU9Zqw9UYopXxhuWWENclMVBwKQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.8.tgz", + "integrity": "sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==", "dev": true }, - "@types/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "requires": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "@types/tern": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", - "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", "dev": true, "requires": { "@types/estree": "*" } }, "@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "@types/whatwg-url": { "version": "8.2.2", @@ -9719,100 +9309,111 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz", - "integrity": "sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", + "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/type-utils": "5.33.1", - "@typescript-eslint/utils": "5.33.1", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/type-utils": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/parser": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz", - "integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz", - "integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" } }, "@typescript-eslint/type-utils": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz", - "integrity": "sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", + "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.33.1", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/utils": "6.14.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz", - "integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz", - "integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/utils": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.33.1.tgz", - "integrity": "sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", + "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz", - "integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.14.0", + "eslint-visitor-keys": "^3.4.1" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -9823,9 +9424,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true }, "acorn-jsx": { @@ -9836,9 +9437,9 @@ "requires": {} }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true }, "aggregate-error": { @@ -9884,9 +9485,9 @@ "dev": true }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -10140,27 +9741,37 @@ "pump": "^3.0.0" } }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true } } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { @@ -10193,21 +9804,6 @@ "requires": { "color-convert": "^2.0.1" } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true } } }, @@ -10272,9 +9868,9 @@ } }, "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true }, "cli-truncate": { @@ -10339,24 +9935,24 @@ } }, "codemirror": { - "version": "5.65.8", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.8.tgz", - "integrity": "sha512-TNGkSkkoAsmZSf6W6g35LMVQJBHKasc2CKwhr/fTxSYun7cn6J+CbtyNjV/MYlFVkNTsqZoviegyCZimWhoMMA==", + "version": "5.65.16", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", + "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==", "dev": true }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "commander": { @@ -10421,28 +10017,18 @@ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "convert-to-spaces": { "version": "1.0.2", @@ -10579,9 +10165,9 @@ "dev": true }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "requires": { "clone": "^1.0.2" @@ -10593,6 +10179,16 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "del": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", @@ -10808,68 +10404,51 @@ "dev": true }, "eslint": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", - "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -10882,54 +10461,37 @@ } }, "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "requires": {} }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } + "estraverse": "^5.2.0" } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" } }, "espresso-iisojs": { @@ -10944,20 +10506,12 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -10967,20 +10521,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -10996,15 +10542,15 @@ "dev": true }, "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -11036,9 +10582,9 @@ } }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -11090,19 +10636,20 @@ } }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "fresh": { @@ -11117,22 +10664,16 @@ "dev": true }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-caller-file": { "version": "2.0.5", @@ -11141,13 +10682,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stream": { @@ -11183,18 +10725,18 @@ } }, "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "requires": { "ini": "2.0.0" } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -11214,6 +10756,14 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -11242,31 +10792,36 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -11286,6 +10841,14 @@ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -11302,9 +10865,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-errors": { @@ -11340,9 +10903,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, "ignore-by-default": { @@ -11389,9 +10952,9 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflation": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", - "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==" }, "inflight": { "version": "1.0.6", @@ -11420,14 +10983,14 @@ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" }, "irregular-plurals": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", - "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", "dev": true }, "is-arrayish": { @@ -11455,12 +11018,12 @@ } }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-error": { @@ -11602,9 +11165,9 @@ } }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, "json-parse-better-errors": { @@ -11649,9 +11212,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -11683,18 +11246,18 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "requires": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", "requires": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -11722,12 +11285,13 @@ } }, "koa-bodyparser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz", - "integrity": "sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", "requires": { "co-body": "^6.0.0", - "copy-to": "^2.0.1" + "copy-to": "^2.0.1", + "type-is": "^1.6.18" } }, "koa-compose": { @@ -11736,22 +11300,14 @@ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" }, "koa-compress": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.0.tgz", - "integrity": "sha512-G3Ppo9jrUwlchp6qdoRgQNMiGZtM0TAHkxRZQ7EoVvIG8E47J4nAsMJxXHAUQ+0oc7t0MDxSdONWTFcbzX7/Bg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.1.tgz", + "integrity": "sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==", "requires": { - "bytes": "^3.0.0", - "compressible": "^2.0.0", - "http-errors": "^1.8.0", - "koa-is-json": "^1.0.0", - "statuses": "^2.0.1" - }, - "dependencies": { - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - } + "bytes": "^3.1.2", + "compressible": "^2.0.18", + "http-errors": "^1.8.1", + "koa-is-json": "^1.0.0" } }, "koa-convert": { @@ -11769,20 +11325,40 @@ "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==" }, "koa-jwt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/koa-jwt/-/koa-jwt-4.0.3.tgz", - "integrity": "sha512-NCdkEZ9cTNLdfxlwlJOFpKIjIZAXgo3zNZjvAVXRVyFkgGFxn7areoqmIfu/tqel4V7j5a7c6b0ago8IoZJUyg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/koa-jwt/-/koa-jwt-4.0.4.tgz", + "integrity": "sha512-Tid9BQfpVtUG/8YZV38a+hDKll0pfVhfl7A/2cNaYThS1cxMFXylZzfARqHQqvNhHy9qM+qkxd4/z6EaIV4SAQ==", "requires": { - "jsonwebtoken": "^8.5.1", + "jsonwebtoken": "^9.0.0", "koa-unless": "^1.0.7", "p-any": "^2.1.0" + }, + "dependencies": { + "jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + } + } } }, "koa-router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", - "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", "requires": { + "debug": "^4.3.4", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", "methods": "^1.1.2", @@ -11964,7 +11540,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -11979,9 +11554,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -12096,9 +11671,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "mithril": { @@ -12111,14 +11686,14 @@ } }, "mongodb": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.16.0.tgz", - "integrity": "sha512-0EB113Fsucaq1wsY0dOhi1fmZOwFtLOtteQkiqOXGklvWMnSH3g2QS53f0KTP+/6qOkuoXE2JksubSZNmxeI+g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", "requires": { "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0", "bson": "^4.7.2", - "mongodb-connection-string-url": "^2.5.4", - "saslprep": "^1.0.3", + "mongodb-connection-string-url": "^2.6.0", "socks": "^2.7.1" } }, @@ -12160,9 +11735,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -12173,6 +11748,12 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -12183,9 +11764,9 @@ } }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "on-finished": { "version": "2.4.1", @@ -12227,17 +11808,17 @@ "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ora": { @@ -12373,9 +11954,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -12592,9 +12173,9 @@ "dev": true }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true }, "pretty-ms": { @@ -12617,9 +12198,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, "pupa": { "version": "2.1.1", @@ -12631,9 +12212,9 @@ } }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "requires": { "side-channel": "^1.0.4" } @@ -12645,9 +12226,9 @@ "dev": true }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -12741,9 +12322,9 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -12760,12 +12341,6 @@ "picomatch": "^2.2.1" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "registry-auth-token": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", @@ -12791,12 +12366,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -12905,34 +12480,24 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, "seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -12947,9 +12512,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -12971,6 +12536,17 @@ } } }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -13032,21 +12608,6 @@ "requires": { "color-convert": "^2.0.1" } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true } } }, @@ -13090,9 +12651,9 @@ } }, "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -13116,9 +12677,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "sprintf-js": { @@ -13128,9 +12689,9 @@ "dev": true }, "sql.js": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.7.0.tgz", - "integrity": "sha512-qAfft3xkSgHqmmfNugWTp/59PsqIw8gbeao5TZmpmzQQsAJ49de3iDDKuxVixidYs6dkHNksY8m27v2dZNn2jw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.9.0.tgz", + "integrity": "sha512-+QMN8NU5KJxofT+lEaSLYdhh+Pdq7ZYS6X5bSbpmD+4SKFf+qBmr+coKT07LZ+keUNh1sf3Nz9dQwD8WNI2i/Q==", "dev": true }, "stable": { @@ -13140,9 +12701,9 @@ "dev": true }, "stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -13168,14 +12729,6 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "string-width": { @@ -13332,26 +12885,24 @@ "integrity": "sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg==", "dev": true }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "devOptional": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13386,11 +12937,16 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -13457,12 +13013,6 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "optional": true }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -13525,12 +13075,6 @@ "string-width": "^4.0.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -13550,21 +13094,6 @@ "requires": { "color-convert": "^2.0.1" } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true } } }, @@ -13601,8 +13130,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 787f456..cdcbd6b 100644 --- a/package.json +++ b/package.json @@ -35,28 +35,28 @@ "seedrandom": "^3.0.5" }, "devDependencies": { - "@types/codemirror": "^5.60.5", + "@types/codemirror": "^5.60.15", "@types/jsonwebtoken": "^8.5.8", "@types/koa": "^2.13.5", "@types/koa-compress": "^4.0.3", "@types/koa-router": "^7.4.4", "@types/koa-static": "^4.0.2", - "@types/mithril": "^2.0.11", - "@types/node": "^18.7.9", - "@types/parsimmon": "^1.10.6", - "@types/seedrandom": "^3.0.2", - "@typescript-eslint/eslint-plugin": "^5.33.1", - "@typescript-eslint/parser": "^5.33.1", + "@types/mithril": "^2.2.6", + "@types/node": "^20.10.4", + "@types/parsimmon": "^1.10.9", + "@types/seedrandom": "^3.0.8", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "ava": "^3.15.0", - "codemirror": "^5.65.8", + "codemirror": "^5.65.16", "esbuild": "^0.19.9", - "eslint": "^8.22.0", - "eslint-config-prettier": "^8.5.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", "mithril": "^2.2.2", - "prettier": "^2.7.1", + "prettier": "^3.1.1", "sql.js": "^1.7.0", "svgo": "^2.8.0", - "typescript": "^4.7.4", + "typescript": "^5.3.3", "yaml": "^1.10.2" }, "engines": { @@ -64,10 +64,7 @@ }, "scripts": { "test": "esbuild --log-level=warning --bundle --platform=node --target=node12 --packages=external --outdir=test test/*.ts && ava --verbose --color && rm test/*.js", - "lint-eslint": "eslint --fix \"bin/*.ts\" \"lib/**/*.ts\" \"ui/**/*.ts\" \"test/**/*.ts\" \"build/**/*.ts\"", - "lint-prettier": "prettier --prose-wrap always --write .", - "lint-tsc": "tsc --noEmit", - "lint": "npm run lint-eslint && npm run lint-prettier && npm run lint-tsc", + "lint": "esbuild build/lint.ts --bundle --platform=node --target=node16 --packages=external | node", "build": "esbuild build/build.ts --bundle --platform=node --target=node12 --packages=external | node" } } diff --git a/test/auth.ts b/test/auth.ts index 627b900..09bdf00 100644 --- a/test/auth.ts +++ b/test/auth.ts @@ -27,7 +27,7 @@ ava("digest", (t) => { uri, method, body, - wwwAuthHeader + wwwAuthHeader, ); const authHeader = auth.parseAuthorizationHeader(solution); t.is( @@ -42,8 +42,8 @@ ava("digest", (t) => { authHeader["qop"], body, authHeader["cnonce"], - authHeader["nc"] - ) + authHeader["nc"], + ), ); } }); diff --git a/test/db.ts b/test/db.ts index 374bb51..a92329f 100644 --- a/test/db.ts +++ b/test/db.ts @@ -55,7 +55,7 @@ ava("convertOldPrecondition", (t) => { for (const test of tests) { t.is( stringify(convertOldPrecondition(test[0] as Record)), - test[1] + test[1], ); } diff --git a/test/device.ts b/test/device.ts index 9674867..ea2d200 100644 --- a/test/device.ts +++ b/test/device.ts @@ -85,7 +85,7 @@ ava("unpack", (t) => { let unpacked: Path[]; unpacked = device.unpack( deviceData, - Path.parse("a.[b:b,c:c].a.[b:b1,c:c1].a") + Path.parse("a.[b:b,c:c].a.[b:b1,c:c1].a"), ); t.is(unpacked.length, 2); t.is(unpacked[0].toString(), "a.1.a.1.a"); diff --git a/test/path-set.ts b/test/path-set.ts index 22bc3e8..0f07d18 100644 --- a/test/path-set.ts +++ b/test/path-set.ts @@ -38,31 +38,31 @@ ava("find", (t) => { t.deepEqual( pathSet.find(Path.parse(""), true, true, 1).map((p) => p.toString()), - ["a"] + ["a"], ); t.deepEqual( pathSet.find(Path.parse(""), false, false, 2).map((p) => p.toString()), - ["a", "a.*", "a.a", "*.a", "*.*"] + ["a", "a.*", "a.a", "*.a", "*.*"], ); t.deepEqual( pathSet.find(Path.parse("a.*"), false, false).map((p) => p.toString()), - ["a.*"] + ["a.*"], ); t.deepEqual( pathSet.find(Path.parse("a.*"), false, true).map((p) => p.toString()), - ["a.*", "a.a"] + ["a.*", "a.a"], ); t.deepEqual( pathSet.find(Path.parse("a.*"), true, false).map((p) => p.toString()), - ["a.*", "*.*"] + ["a.*", "*.*"], ); t.deepEqual( pathSet.find(Path.parse("a.*"), true, true).map((p) => p.toString()), - ["a.*", "a.a", "*.a", "*.*"] + ["a.*", "a.a", "*.a", "*.*"], ); }); diff --git a/test/synth.ts b/test/synth.ts index c2a2f61..ff5887a 100644 --- a/test/synth.ts +++ b/test/synth.ts @@ -21,7 +21,7 @@ test.before(async (t) => { }; db.run( - "CREATE TABLE test (id INTEGER PRIMARY KEY, string STRING, decimal DECIMAL(4,2))" + "CREATE TABLE test (id INTEGER PRIMARY KEY, string STRING, decimal DECIMAL(4,2))", ); const stmt = db.prepare("INSERT INTO test (string, decimal) VALUES (?, ?)"); @@ -72,16 +72,16 @@ test("minimize", async (t) => { STRING_VALUES.filter((s) => s), STRING_VALUES.filter((s) => s), [">", "=", "<"], - ["<>", ">="] + ["<>", ">="], )) { cases.push( - `string ${op1} "${s1}" OR string ='${s2}' OR NOT string ${op2} '${s3}'` + `string ${op1} "${s1}" OR string ='${s2}' OR NOT string ${op2} '${s3}'`, ); } for (const [s1, s2] of getPermutations( STRING_VALUES.filter((s) => s), - STRING_VALUES.filter((s) => s) + STRING_VALUES.filter((s) => s), )) cases.push(`string > "${s1}" AND string < '${s2}'`); diff --git a/test/util.ts b/test/util.ts index a704a0f..132f4af 100644 --- a/test/util.ts +++ b/test/util.ts @@ -36,6 +36,6 @@ ava("generateDeviceId", (t) => { ava("escapeRegExp", (t) => { t.is( common.escapeRegExp("\\ ^ $ * + ? . ( ) | { } [ ]"), - "\\\\ \\^ \\$ \\* \\+ \\? \\. \\( \\) \\| \\{ \\} \\[ \\]" + "\\\\ \\^ \\$ \\* \\+ \\? \\. \\( \\) \\| \\{ \\} \\[ \\]", ); }); diff --git a/test/xml-parser.ts b/test/xml-parser.ts index 2c999a1..91009b2 100644 --- a/test/xml-parser.ts +++ b/test/xml-parser.ts @@ -7,7 +7,7 @@ import { ava("parseXmlDeclaration", (t) => { const buf = Buffer.from( - '\n' + '\n', ); const attrs = parseXmlDeclaration(buf); t.deepEqual(attrs, [ @@ -29,7 +29,7 @@ ava("parseXmlDeclaration", (t) => { ava("decodeEntities", (t) => { t.is( decodeEntities("&&<>"'>§��;"), - "&&<>\"'>§𠮷;" + "&&<>\"'>§𠮷;", ); }); diff --git a/tsconfig.json b/tsconfig.json index e066790..8f55e01 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "lib": ["ES2022", "dom"], "module": "ES2022", - "moduleResolution": "node", + "moduleResolution": "bundler", "target": "ES2022", "resolveJsonModule": true, "allowSyntheticDefaultImports": true, diff --git a/ui/admin-menu.ts b/ui/admin-menu.ts index d761d02..755b312 100644 --- a/ui/admin-menu.ts +++ b/ui/admin-menu.ts @@ -31,8 +31,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["presets"] }, - m("a", { href: "#!/admin/presets" }, "Presets") - ) + m("a", { href: "#!/admin/presets" }, "Presets"), + ), ); } @@ -41,8 +41,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["provisions"] }, - m("a", { href: "#!/admin/provisions" }, "Provisions") - ) + m("a", { href: "#!/admin/provisions" }, "Provisions"), + ), ); } @@ -51,8 +51,12 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["virtualParameters"] }, - m("a", { href: "#!/admin/virtualParameters" }, "Virtual Parameters") - ) + m( + "a", + { href: "#!/admin/virtualParameters" }, + "Virtual Parameters", + ), + ), ); } @@ -61,8 +65,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["files"] }, - m("a", { href: "#!/admin/files" }, "Files") - ) + m("a", { href: "#!/admin/files" }, "Files"), + ), ); } @@ -71,8 +75,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["config"] }, - m("a", { href: "#!/admin/config" }, "Config") - ) + m("a", { href: "#!/admin/config" }, "Config"), + ), ); } @@ -81,8 +85,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["permissions"] }, - m("a", { href: "#!/admin/permissions" }, "Permissions") - ) + m("a", { href: "#!/admin/permissions" }, "Permissions"), + ), ); } @@ -91,8 +95,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["users"] }, - m("a", { href: "#!/admin/users" }, "Users") - ) + m("a", { href: "#!/admin/users" }, "Users"), + ), ); } diff --git a/ui/app.ts b/ui/app.ts index f7c9b00..632c482 100644 --- a/ui/app.ts +++ b/ui/app.ts @@ -137,7 +137,7 @@ m.route(document.body, "/overview", { "/admin/provisions": pagify("provisions", provisionsPage), "/admin/virtualParameters": pagify( "virtualParameters", - virtualParametersPage + virtualParametersPage, ), "/admin/files": pagify("files", filesPage), "/admin/config": pagify("config", configPage), diff --git a/ui/autocomplete-compnent.ts b/ui/autocomplete-compnent.ts index 8f4b7c4..b07e145 100644 --- a/ui/autocomplete-compnent.ts +++ b/ui/autocomplete-compnent.ts @@ -19,7 +19,7 @@ type AutocompleteCallback = ( value: string, - callback: (suggestions: { value: string; tip?: string }[]) => void + callback: (suggestions: { value: string; tip?: string }[]) => void, ) => void; export default class Autocomplete { @@ -180,14 +180,14 @@ export default class Autocomplete { if (selectedElement) { this.container.scrollTop = Math.min( this.container.scrollTop, - selectedElement.offsetTop + selectedElement.offsetTop, ); this.container.scrollTop = Math.max( this.container.scrollTop, selectedElement.offsetTop + selectedElement.scrollHeight - - this.container.clientHeight + this.container.clientHeight, ); } }); diff --git a/ui/change-password-component.ts b/ui/change-password-component.ts index da99852..52ce03e 100644 --- a/ui/change-password-component.ts +++ b/ui/change-password-component.ts @@ -52,7 +52,7 @@ const component: ClosureComponent = () => { oncreate: (_vnode) => { (_vnode.dom as HTMLSelectElement).focus(); }, - }) + }), ), ]; @@ -75,8 +75,8 @@ const component: ClosureComponent = () => { oninput: (e) => { vnode.state[f] = e.target.value; }, - }) - ) + }), + ), ); } @@ -85,7 +85,7 @@ const component: ClosureComponent = () => { { type: "submit", }, - "Change password" + "Change password", ) as VnodeDOM; form.push(m(".actions-bar", submit)); @@ -109,19 +109,19 @@ const component: ClosureComponent = () => { ) { notifications.push( "error", - "Password confirm doesn't match new password" + "Password confirm doesn't match new password", ); } else { (submit.dom as HTMLFormElement).disabled = true; changePassword( vnode.state["username"], vnode.state["newPassword"], - vnode.state["authPassword"] + vnode.state["authPassword"], ) .then(() => { notifications.push( "success", - "Password updated successfully" + "Password updated successfully", ); if (onPasswordChange) onPasswordChange(); (submit.dom as HTMLFormElement).disabled = false; @@ -133,7 +133,7 @@ const component: ClosureComponent = () => { } }, }, - form + form, ), ]; diff --git a/ui/code-editor-component.ts b/ui/code-editor-component.ts index 4ab455e..226f825 100644 --- a/ui/code-editor-component.ts +++ b/ui/code-editor-component.ts @@ -54,7 +54,7 @@ const component: ClosureComponent = () => { if (vnode.attrs.onSubmit) vnode.attrs.onSubmit(_vnode.dom); }, }, - } + }, ); if (vnode.attrs.onChange) { diff --git a/ui/components.ts b/ui/components.ts index 5c41e77..d236c29 100644 --- a/ui/components.ts +++ b/ui/components.ts @@ -63,10 +63,11 @@ const vnodeContext = new WeakMap(); interface MC extends Static { context: { - (ctx: Attributes, selector: string, ...children: Children[]): Vnode< - any, - any - >; + ( + ctx: Attributes, + selector: string, + ...children: Children[] + ): Vnode; ( ctx: Attributes, selector: string, @@ -150,7 +151,7 @@ export function contextifyComponent(component: ComponentTypes): ComponentTypes { title: "Click to print stack trace to console", onclick: () => console.error(err), }, - "Error!" + "Error!", ); } }; diff --git a/ui/components/all-parameters.ts b/ui/components/all-parameters.ts index 2b59b7f..4c56f59 100644 --- a/ui/components/all-parameters.ts +++ b/ui/components/all-parameters.ts @@ -17,14 +17,16 @@ * along with GenieACS. If not, see . */ -import { ClosureComponent, Component } from "mithril"; +import { ClosureComponent } from "mithril"; import { m } from "../components"; import * as taskQueue from "../task-queue"; import { parse } from "../../lib/common/expression/parser"; import memoize from "../../lib/common/memoize"; import { getIcon } from "../icons"; -import { evaluateExpression } from "../store"; +import { QueryResponse, evaluateExpression } from "../store"; import debounce from "../../lib/common/debounce"; +import { Expression } from "../../lib/types"; +import { FlatDevice } from "../../lib/ui/db"; const memoizedParse = memoize(parse); @@ -52,7 +54,13 @@ function orderKeysByDepth(device: Record): string[][] { return res; } -const component: ClosureComponent = (): Component => { +interface Attrs { + device: FlatDevice; + limit: Expression; + deviceQuery: QueryResponse; +} + +const component: ClosureComponent = () => { let queryString: string; const formQueryString = debounce((args: string[]) => { queryString = args[args.length - 1]; @@ -61,9 +69,10 @@ const component: ClosureComponent = (): Component => { return { view: (vnode) => { - const device = vnode.attrs["device"]; + const device = vnode.attrs.device; - const limit = evaluateExpression(vnode.attrs["limit"], device) || 100; + const limit = + (evaluateExpression(vnode.attrs.limit, device) as number) || 100; const search = m("input", { type: "text", @@ -108,8 +117,8 @@ const component: ClosureComponent = (): Component => { val.push( m( "parameter", - Object.assign({ device: device, parameter: memoizedParse(k) }) - ) + Object.assign({ device: device, parameter: memoizedParse(k) }), + ), ); } else if (p.object && p.writable) { if (instanceRegex.test(k)) { @@ -121,13 +130,13 @@ const component: ClosureComponent = (): Component => { onclick: () => { taskQueue.queueTask({ name: "deleteObject", - device: device["DeviceID.ID"].value[0], + device: device["DeviceID.ID"].value[0] as string, objectName: k, }); }, }, - getIcon("delete-instance") - ) + getIcon("delete-instance"), + ), ); } else { val.push( @@ -138,13 +147,13 @@ const component: ClosureComponent = (): Component => { onclick: () => { taskQueue.queueTask({ name: "addObject", - device: device["DeviceID.ID"].value[0], + device: device["DeviceID.ID"].value[0] as string, objectName: k, }); }, }, - getIcon("add-instance") - ) + getIcon("add-instance"), + ), ); } } @@ -157,38 +166,38 @@ const component: ClosureComponent = (): Component => { onclick: () => { taskQueue.queueTask({ name: "getParameterValues", - device: device["DeviceID.ID"].value[0], + device: device["DeviceID.ID"].value[0] as string, parameterNames: [k], }); }, }, - getIcon("refresh") - ) + getIcon("refresh"), + ), ); return m( "tr", attrs, m("td.left", m("long-text", { text: k })), - m("td.right", val) + m("td.right", val), ); }); return m( "loading", - { queries: [vnode.attrs["deviceQuery"]] }, + { queries: [vnode.attrs.deviceQuery] }, m( ".all-parameters", m( "a.download-csv", { href: `api/devices/${encodeURIComponent( - device["DeviceID.ID"].value[0] + device["DeviceID.ID"].value[0], )}.csv`, download: "", style: "float: right;", }, - "Download" + "Download", ), search, m( @@ -196,10 +205,10 @@ const component: ClosureComponent = (): Component => { m("table", m("tbody", rows)), m( "m", - `Displaying ${filteredKeys.length} out of ${count} parameters.` - ) - ) - ) + `Displaying ${filteredKeys.length} out of ${count} parameters.`, + ), + ), + ), ); }, }; diff --git a/ui/components/container.ts b/ui/components/container.ts index 7c7c95c..4e89536 100644 --- a/ui/components/container.ts +++ b/ui/components/container.ts @@ -17,18 +17,19 @@ * along with GenieACS. If not, see . */ -import { Attributes, ClosureComponent, Component } from "mithril"; +import { Attributes, ClosureComponent } from "mithril"; import { map } from "../../lib/common/expression/parser"; import memoize from "../../lib/common/memoize"; import { Expression } from "../../lib/types"; import { m } from "../components"; import { evaluateExpression, getTimestamp } from "../store"; +import { FlatDevice } from "../../lib/ui/db"; const evaluateAttributes = memoize( ( attrs: Record, obj: Record, - now: number // eslint-disable-line @typescript-eslint/no-unused-vars + now: number, // eslint-disable-line @typescript-eslint/no-unused-vars ): Attributes => { const res: Attributes = {}; for (const [k, v] of Object.entries(attrs)) { @@ -47,19 +48,24 @@ const evaluateAttributes = memoize( res[k] = evaluateExpression(vv, obj); } return res; - } + }, ); -const component: ClosureComponent = (): Component => { +interface Attrs { + device: FlatDevice; + filter: Expression; + components: unknown; +} + +const component: ClosureComponent = () => { return { view: (vnode) => { - const device = vnode.attrs["device"]; + const device = vnode.attrs.device; if ("filter" in vnode.attrs) { - if (!evaluateExpression(vnode.attrs["filter"], device || {})) - return null; + if (!evaluateExpression(vnode.attrs.filter, device || {})) return null; } - const children = Object.values(vnode.attrs["components"]).map((c) => { + const children = Object.values(vnode.attrs.components).map((c) => { if (Array.isArray(c)) c = evaluateExpression(c, device || {}); if (typeof c !== "object") return `${c}`; const type = evaluateExpression(c["type"], device || {}); @@ -79,7 +85,7 @@ const component: ClosureComponent = (): Component => { attrs = evaluateAttributes( el["attributes"], device || {}, - getTimestamp() + getTimestamp(), ); } diff --git a/ui/components/device-actions.ts b/ui/components/device-actions.ts index 02ed3a8..a017e5a 100644 --- a/ui/components/device-actions.ts +++ b/ui/components/device-actions.ts @@ -42,8 +42,8 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Reboot" - ) + "Reboot", + ), ); buttons.push( @@ -58,8 +58,8 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Reset" - ) + "Reset", + ), ); buttons.push( @@ -74,8 +74,8 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Push file" - ) + "Push file", + ), ); buttons.push( @@ -98,8 +98,8 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Delete" - ) + "Delete", + ), ); return m(".actions-bar", buttons); diff --git a/ui/components/device-faults.ts b/ui/components/device-faults.ts index aad01b1..a195fde 100644 --- a/ui/components/device-faults.ts +++ b/ui/components/device-faults.ts @@ -76,8 +76,8 @@ const component: ClosureComponent = (): Component => { }); }, }, - getIcon("remove") - ) + getIcon("remove"), + ), ), ]); } @@ -86,19 +86,19 @@ const component: ClosureComponent = (): Component => { if (rows.length) { tbody = m( "tbody", - rows.map((r) => m("tr", r)) + rows.map((r) => m("tr", r)), ); } else { tbody = m( "tbody", - m("tr.empty", m("td", { colspan: headers.length }, "No faults")) + m("tr.empty", m("td", { colspan: headers.length }, "No faults")), ); } return m( "loading", { queries: [faults] }, - m("table.table", thead, tbody) + m("table.table", thead, tbody), ); }, }; diff --git a/ui/components/device-link.ts b/ui/components/device-link.ts index d06a92d..0045c37 100644 --- a/ui/components/device-link.ts +++ b/ui/components/device-link.ts @@ -40,7 +40,7 @@ const component: ClosureComponent = (): Component => { return m( "a", { href: `#!/devices/${encodeURIComponent(deviceId)}` }, - children + children, ); } else { return children; diff --git a/ui/components/overview-dot.ts b/ui/components/overview-dot.ts index 46f47ac..98c0c28 100644 --- a/ui/components/overview-dot.ts +++ b/ui/components/overview-dot.ts @@ -47,7 +47,7 @@ const component: ClosureComponent = (): Component => { cy: "0.5em", r: "0.4em", fill: slice["color"], - }) + }), ); return m("span.overview-dot", dot, `${slice["label"]}`); } diff --git a/ui/components/parameter-list.ts b/ui/components/parameter-list.ts index 5ba3118..ca09af4 100644 --- a/ui/components/parameter-list.ts +++ b/ui/components/parameter-list.ts @@ -17,24 +17,35 @@ * along with GenieACS. If not, see . */ -import { ClosureComponent, Component, VnodeDOM } from "mithril"; +import { ClosureComponent, VnodeDOM } from "mithril"; import { m } from "../components"; -import { evaluateExpression } from "../store"; +import { QueryResponse, evaluateExpression } from "../store"; +import { FlatDevice } from "../../lib/ui/db"; +import { Expression } from "../../lib/types"; -const component: ClosureComponent = (): Component => { +interface Attrs { + device: FlatDevice; + parameters: Record< + string, + { type?: Expression; label: string; parameter: Expression } + >; + deviceQuery: QueryResponse; +} + +const component: ClosureComponent = () => { return { view: (vnode) => { - const device = vnode.attrs["device"]; + const device = vnode.attrs.device; - const rows = Object.values(vnode.attrs["parameters"]).map((parameter) => { - const type = evaluateExpression(parameter["type"], device); + const rows = Object.values(vnode.attrs.parameters).map((parameter) => { + const type = evaluateExpression(parameter.type, device); const p = m.context( { device: device, - parameter: parameter["parameter"], + parameter: parameter.parameter, }, (type as string) || "parameter", - parameter + parameter, ); return m( @@ -52,14 +63,14 @@ const component: ClosureComponent = (): Component => { }, }, m("th", parameter["label"]), - m("td", p) + m("td", p), ); }); return m( "loading", - { queries: [vnode.attrs["deviceQuery"]] }, - m("table.parameter-list", rows) + { queries: [vnode.attrs.deviceQuery] }, + m("table.parameter-list", rows), ); }, }; diff --git a/ui/components/parameter-table.ts b/ui/components/parameter-table.ts index 706f872..e9c7655 100644 --- a/ui/components/parameter-table.ts +++ b/ui/components/parameter-table.ts @@ -17,24 +17,35 @@ * along with GenieACS. If not, see . */ -import { ClosureComponent, Component } from "mithril"; +import { ClosureComponent } from "mithril"; import { m } from "../components"; import * as taskQueue from "../task-queue"; -import { evaluateExpression } from "../store"; +import { QueryResponse, evaluateExpression } from "../store"; import * as expressionParser from "../../lib/common/expression/parser"; import { getIcon } from "../icons"; +import { FlatDevice } from "../../lib/ui/db"; +import { Expression } from "../../lib/types"; -const component: ClosureComponent = (): Component => { +interface Attrs { + device: FlatDevice; + parameter: Expression; + label: Expression; + childParameters: Record; + filter?: Expression; + deviceQuery: QueryResponse; +} + +const component: ClosureComponent = () => { return { oninit: (vnode) => { - const obj = vnode.attrs["parameter"]; + const obj = vnode.attrs.parameter; if (!Array.isArray(obj) || obj[0] !== "PARAM") throw new Error("Object must be a parameter path"); vnode.state["object"] = obj[1]; - vnode.state["parameters"] = Object.values(vnode.attrs["childParameters"]); + vnode.state["parameters"] = Object.values(vnode.attrs.childParameters); }, view: (vnode) => { - const device = vnode.attrs["device"]; + const device = vnode.attrs.device; const object = evaluateExpression(vnode.state["object"], device); const parameters = vnode.state["parameters"]; @@ -56,7 +67,7 @@ const component: ClosureComponent = (): Component => { const rows = []; for (const i of instances) { - let filter = "filter" in vnode.attrs ? vnode.attrs["filter"] : true; + let filter = "filter" in vnode.attrs ? vnode.attrs.filter : true; filter = expressionParser.map(filter, (e) => { if (Array.isArray(e) && e[0] === "PARAM") @@ -84,8 +95,8 @@ const component: ClosureComponent = (): Component => { device: device, parameter: param, label: null, - }) - ) + }), + ), ); }); @@ -100,14 +111,14 @@ const component: ClosureComponent = (): Component => { onclick: () => { taskQueue.queueTask({ name: "deleteObject", - device: device["DeviceID.ID"].value[0], + device: device["DeviceID.ID"].value[0] as string, objectName: i, }); }, }, - getIcon("delete-instance") - ) - ) + getIcon("delete-instance"), + ), + ), ); } rows.push(m("tr", row)); @@ -115,7 +126,7 @@ const component: ClosureComponent = (): Component => { if (!rows.length) { rows.push( - m("tr.empty", m("td", { colspan: headers.length }, "No instances")) + m("tr.empty", m("td", { colspan: headers.length }, "No instances")), ); } @@ -133,29 +144,29 @@ const component: ClosureComponent = (): Component => { onclick: () => { taskQueue.queueTask({ name: "addObject", - device: device["DeviceID.ID"].value[0], + device: device["DeviceID.ID"].value[0] as string, objectName: object, }); }, }, - getIcon("add-instance") - ) - ) - ) + getIcon("add-instance"), + ), + ), + ), ); } let label; - const l = evaluateExpression(vnode.attrs["label"], device); + const l = evaluateExpression(vnode.attrs.label, device); if (l != null) label = m("h2", l); return [ label, m( "loading", - { queries: [vnode.attrs["deviceQuery"]] }, - m("table.table", thead, m("tbody", rows)) + { queries: [vnode.attrs.deviceQuery] }, + m("table.table", thead, m("tbody", rows)), ), ]; }, diff --git a/ui/components/parameter.ts b/ui/components/parameter.ts index ed96fb2..82c7d9b 100644 --- a/ui/components/parameter.ts +++ b/ui/components/parameter.ts @@ -78,7 +78,7 @@ const component: ClosureComponent = (): Component => { const { value, timestamp, parameter } = evaluateParam( vnode.attrs["parameter"], device, - store.getTimestamp() + store.getClockSkew() + store.getTimestamp() + store.getClockSkew(), ); if (value == null) return null; @@ -103,7 +103,7 @@ const component: ClosureComponent = (): Component => { }); }, }, - getIcon("edit") + getIcon("edit"), ); } @@ -124,7 +124,7 @@ const component: ClosureComponent = (): Component => { }, }, el, - edit + edit, ); }, }; diff --git a/ui/components/summon-button.ts b/ui/components/summon-button.ts index 74cb5c6..208c4e9 100644 --- a/ui/components/summon-button.ts +++ b/ui/components/summon-button.ts @@ -62,19 +62,19 @@ const component: ClosureComponent = (): Component => { if (connectionRequestStatus !== "OK") { notifications.push( "error", - `${deviceId}: ${connectionRequestStatus}` + `${deviceId}: ${connectionRequestStatus}`, ); } else if (tasks2[0].status === "stale") { notifications.push( "error", - `${deviceId}: No contact from device` + `${deviceId}: No contact from device`, ); } else if (tasks2[0].status === "fault") { notifications.push("error", `${deviceId}: Refresh faulted`); } else { notifications.push("success", `${deviceId}: Summoned`); } - } + }, ) .then(() => { e.target.disabled = false; @@ -86,7 +86,7 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Summon" + "Summon", ); }, }; diff --git a/ui/components/tags.ts b/ui/components/tags.ts index 1dd0f04..39445dd 100644 --- a/ui/components/tags.ts +++ b/ui/components/tags.ts @@ -17,20 +17,27 @@ * along with GenieACS. If not, see . */ -import { ClosureComponent, Component } from "mithril"; +import { ClosureComponent } from "mithril"; import { m } from "../components"; import * as notifications from "../notifications"; import * as store from "../store"; import { getIcon } from "../icons"; import { decodeTag } from "../../lib/util"; +import { Expression } from "../../lib/types"; +import { FlatDevice } from "../../lib/ui/db"; -const component: ClosureComponent = (): Component => { +interface Attrs { + device: FlatDevice; + writable?: Expression; +} + +const component: ClosureComponent = () => { return { view: (vnode) => { - const device = vnode.attrs["device"]; + const device = vnode.attrs.device; let writable = true; if ("writable" in vnode.attrs) - writable = !!store.evaluateExpression(vnode.attrs["writable"], device); + writable = !!store.evaluateExpression(vnode.attrs.writable, device); const tags = []; for (const p of Object.keys(device)) @@ -41,7 +48,7 @@ const component: ClosureComponent = (): Component => { if (!writable) { return m( ".tags", - tags.map((t) => m("span.tag", t)) + tags.map((t) => m("span.tag", t)), ); } @@ -56,14 +63,14 @@ const component: ClosureComponent = (): Component => { { onclick: (e) => { e.target.disabled = true; - const deviceId = device["DeviceID.ID"].value[0]; + const deviceId = device["DeviceID.ID"].value[0] as string; store .updateTags(deviceId, { [tag]: false }) .then(() => { e.target.disabled = false; notifications.push( "success", - `${deviceId}: Tags updated` + `${deviceId}: Tags updated`, ); store.setTimestamp(Date.now()); }) @@ -71,14 +78,14 @@ const component: ClosureComponent = (): Component => { e.target.disabled = false; notifications.push( "error", - `${deviceId}: ${err.message}` + `${deviceId}: ${err.message}`, ); }); }, }, - getIcon("remove") - ) - ) + getIcon("remove"), + ), + ), ), m( "span.tag.writable", @@ -88,7 +95,7 @@ const component: ClosureComponent = (): Component => { { onclick: (e) => { e.target.disabled = true; - const deviceId = device["DeviceID.ID"].value[0]; + const deviceId = device["DeviceID.ID"].value[0] as string; const tag = prompt(`Enter tag to assign to device:`); if (!tag) { e.target.disabled = false; @@ -108,9 +115,9 @@ const component: ClosureComponent = (): Component => { }); }, }, - getIcon("add") - ) - ) + getIcon("add"), + ), + ), ); }, }; diff --git a/ui/config-functions.ts b/ui/config-functions.ts index 84bb0de..8569f7e 100644 --- a/ui/config-functions.ts +++ b/ui/config-functions.ts @@ -129,7 +129,7 @@ export function structureConfig(config: Config[]): any { export function diffConfig( current: Record, - target: Record + target: Record, ): Diff { const diff = { add: [], diff --git a/ui/config-page.ts b/ui/config-page.ts index 00e14bf..4406931 100644 --- a/ui/config-page.ts +++ b/ui/config-page.ts @@ -74,7 +74,7 @@ function putActionHandler(action, _object, isNew?): Promise { .then(() => { notifications.push( "success", - `Config ${exists ? "updated" : "created"}` + `Config ${exists ? "updated" : "created"}`, ); store.setTimestamp(Date.now()); resolve(null); @@ -112,7 +112,7 @@ function escapeRegExp(str): string { export function init(): Promise> { if (!window.authorizer.hasAccess("config", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } return new Promise((resolve, reject) => { @@ -173,19 +173,19 @@ function renderTable(confsResponse, searchString): Children { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - getIcon("edit") + getIcon("edit"), ); const del = m( @@ -200,7 +200,7 @@ function renderTable(confsResponse, searchString): Children { }); }, }, - getIcon("remove") + getIcon("remove"), ); rows.push( @@ -210,9 +210,9 @@ function renderTable(confsResponse, searchString): Children { m("td.left", m("long-text", { text: conf._id })), m( "td.right", - m("span", [m("long-text", { text: `${conf.value}` }), edit, del]) - ) - ) + m("span", [m("long-text", { text: `${conf.value}` }), edit, del]), + ), + ), ); } @@ -276,19 +276,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New config" + "New config", ); const subsData = [ @@ -332,8 +332,8 @@ export const component: ClosureComponent = (): Component => { "success", `${sub.name.replace( /^[a-z]/, - sub.name[0].toUpperCase() - )} config updated` + sub.name[0].toUpperCase(), + )} config updated`, ); overlay.close(cb); } @@ -345,20 +345,20 @@ export const component: ClosureComponent = (): Component => { overlay.close(cb); }, }, - attrs - ) + attrs, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - `Edit ${sub.name}` - ) + `Edit ${sub.name}`, + ), ); } } @@ -374,10 +374,10 @@ export const component: ClosureComponent = (): Component => { m( ".parameter-list", { style: "height: 400px" }, - renderTable(confs, vnode.state["searchString"]) + renderTable(confs, vnode.state["searchString"]), ), - m(".actions-bar", [newConfig].concat(subs)) - ) + m(".actions-bar", [newConfig].concat(subs)), + ), ), ]; }, diff --git a/ui/css/app.css b/ui/css/app.css index adf0010..8ab98f9 100644 --- a/ui/css/app.css +++ b/ui/css/app.css @@ -54,7 +54,9 @@ textarea { a { color: var(--color4); cursor: pointer; - transition: background-color var(--fade), color var(--fade); + transition: + background-color var(--fade), + color var(--fade); &:visited { color: var(--color4); } @@ -122,7 +124,9 @@ body { margin-top: -1px; box-shadow: 0 0 10px #ccc; overflow: hidden; - transition: height var(--fade), opacity var(--fade); + transition: + height var(--fade), + opacity var(--fade); & > div { padding: 0.3em; @@ -228,7 +232,9 @@ body { border: 1px solid var(--color1); border-radius: 6px; box-shadow: 0 0 10px #ccc; - transition: opacity var(--fade), top var(--fade); + transition: + opacity var(--fade), + top var(--fade); &.error { background-color: hsl(var(--status-red) / 0.9); @@ -437,7 +443,9 @@ button { border: 0; color: var(--color4); border-radius: 4px; - transition: background-color var(--fade), color var(--fade); + transition: + background-color var(--fade), + color var(--fade); display: inline-block; vertical-align: middle; @@ -468,7 +476,9 @@ input { border: 1px solid var(--color1); background-color: var(--color3); border-radius: 4px; - transition: border-color var(--fade), background-color var(--fade); + transition: + border-color var(--fade), + background-color var(--fade); &.error { background-color: #efcbcf; border-color: #e6b2b7; @@ -670,7 +680,9 @@ span.tag { bottom: 0; background-color: rgba(0, 0, 0, 0.2); z-index: 100; - transition: opacity var(--fade), top var(--fade); + transition: + opacity var(--fade), + top var(--fade); display: flex; align-items: center; justify-content: center; diff --git a/ui/datalist.ts b/ui/datalist.ts index 845e91a..56ce8d6 100644 --- a/ui/datalist.ts +++ b/ui/datalist.ts @@ -38,7 +38,7 @@ export function getDatalistId(options: string[]): string { const n = m( "datalist", { id }, - options.map((o) => m("option", { value: o })) + options.map((o) => m("option", { value: o })), ); elements.set(id, n); } diff --git a/ui/device-page.ts b/ui/device-page.ts index 586b49c..b82f1e4 100644 --- a/ui/device-page.ts +++ b/ui/device-page.ts @@ -23,11 +23,11 @@ import config from "./config"; import * as store from "./store"; export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("devices", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -49,7 +49,7 @@ export const component: ClosureComponent = (): Component => { return m( "loading", { queries: [dev] }, - m("div", { style: "height: 100px;" }) + m("div", { style: "height: 100px;" }), ); } @@ -58,7 +58,7 @@ export const component: ClosureComponent = (): Component => { for (const c of Object.values(conf)) { cmps.push( - m.context({ device: dev.value[0], deviceQuery: dev }, c["type"], c) + m.context({ device: dev.value[0], deviceQuery: dev }, c["type"], c), ); } diff --git a/ui/devices-page.ts b/ui/devices-page.ts index 59a7026..034d11f 100644 --- a/ui/devices-page.ts +++ b/ui/devices-page.ts @@ -61,7 +61,7 @@ const unpackSmartQuery = memoize((query) => { }); export function init( - args: Record + args: Record, ): Promise> { return new Promise((resolve, reject) => { if (!window.authorizer.hasAccess("devices", 2)) @@ -97,8 +97,8 @@ function renderActions(selected: Set): Children { queueTask(...tasks); }, }, - "Reboot" - ) + "Reboot", + ), ); buttons.push( @@ -115,8 +115,8 @@ function renderActions(selected: Set): Children { queueTask(...tasks); }, }, - "Reset" - ) + "Reset", + ), ); buttons.push( @@ -132,8 +132,8 @@ function renderActions(selected: Set): Children { }); }, }, - "Push file" - ) + "Push file", + ), ); buttons.push( @@ -163,8 +163,8 @@ function renderActions(selected: Set): Children { if (--counter === 0) store.setTimestamp(Date.now()); }, }, - "Delete" - ) + "Delete", + ), ); buttons.push( @@ -195,8 +195,8 @@ function renderActions(selected: Set): Children { if (--counter === 0) store.setTimestamp(Date.now()); }, }, - "Tag" - ) + "Tag", + ), ); buttons.push( @@ -208,7 +208,7 @@ function renderActions(selected: Set): Children { onclick: () => { const ids = Array.from(selected); const tag = prompt( - `Enter tag to unassign from ${ids.length} devices:` + `Enter tag to unassign from ${ids.length} devices:`, ); if (!tag) return; @@ -229,8 +229,8 @@ function renderActions(selected: Set): Children { if (--counter === 0) store.setTimestamp(Date.now()); }, }, - "Untag" - ) + "Untag", + ), ); return buttons; @@ -270,7 +270,7 @@ export const component: ClosureComponent = (): Component => { const _sort = {}; for (const index of sortedAttrs) { const param = memoizedGetSortable( - attributes[Math.abs(index) - 1].parameter + attributes[Math.abs(index) - 1].parameter, ); _sort[param] = Math.sign(index); } @@ -296,7 +296,7 @@ export const component: ClosureComponent = (): Component => { return m.context( { device: device, parameter: attr.parameter }, attr.type || "parameter", - attr + attr, ); }; @@ -314,10 +314,10 @@ export const component: ClosureComponent = (): Component => { "a", { href: `#!/devices/${encodeURIComponent( - device["DeviceID.ID"].value[0] + device["DeviceID.ID"].value[0], )}`, }, - "Show" + "Show", ); }; diff --git a/ui/drawer-component.ts b/ui/drawer-component.ts index f6f9d64..7070568 100644 --- a/ui/drawer-component.ts +++ b/ui/drawer-component.ts @@ -73,7 +73,7 @@ function renderStagingSpv(task: StageTask, queueFunc, cancelFunc): Children { [ m("option", { value: "true" }, "true"), m("option", { value: "false" }, "false"), - ] + ], ); } else { const type = task.parameterValues[0][2]; @@ -134,8 +134,8 @@ function renderStagingDownload(task: StageTask): Children { m( "option", { disabled: !t, value: t, selected: (task.fileType || "") === t }, - t - ) + t, + ), ); const filesList = [""] @@ -145,16 +145,16 @@ function renderStagingDownload(task: StageTask): Children { (f) => (!f["metadata.oui"] || f["metadata.oui"] === oui) && (!f["metadata.productClass"] || - f["metadata.productClass"] === productClass) + f["metadata.productClass"] === productClass), ) - .map((f) => f._id) + .map((f) => f._id), ) .map((f) => m( "option", { disabled: !f, value: f, selected: (task.fileName || "") === f }, - f - ) + f, + ), ); return [ @@ -172,7 +172,7 @@ function renderStagingDownload(task: StageTask): Children { disabled: files.fulfilling, style: "width: 350px", }, - filesList + filesList, ), " as ", m( @@ -182,7 +182,7 @@ function renderStagingDownload(task: StageTask): Children { task.fileType = e.target.value; }, }, - typesList + typesList, ), ]; } @@ -211,12 +211,12 @@ function renderStaging(staging: Set): Child[] { const queue = m( "button.primary", { title: "Queue task", onclick: queueFunc, disabled: invalid.has(s) }, - "Queue" + "Queue", ); const cancel = m( "button", { title: "Cancel edit", onclick: cancelFunc }, - "Cancel" + "Cancel", ); elements.push(m(".staging", elms, m("div.actions", queue, cancel))); @@ -247,8 +247,8 @@ function renderQueue(queue: Set): Child[] { queueTask(t); }, }, - getIcon("retry") - ) + getIcon("retry"), + ), ); } @@ -261,8 +261,8 @@ function renderQueue(queue: Set): Child[] { deleteTask(t); }, }, - getIcon("remove") - ) + getIcon("remove"), + ), ); if (t.name === "setParameterValues") { @@ -275,56 +275,56 @@ function renderQueue(queue: Set): Child[] { mparam(t.parameterValues[0][0]), " to '", mval(t.parameterValues[0][1]), - "'" + "'", ), - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else if (t.name === "refreshObject") { details.push( m( `div.${t.status}`, m("span", "Refresh ", mparam(t.parameterName)), - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else if (t.name === "reboot") { details.push(m(`div.${t.status}`, "Reboot", m(".actions", actions))); } else if (t.name === "factoryReset") { details.push( - m(`div.${t.status}`, "Factory reset", m(".actions", actions)) + m(`div.${t.status}`, "Factory reset", m(".actions", actions)), ); } else if (t.name === "addObject") { details.push( m( `div.${t.status}`, m("span", "Add ", mparam(t.objectName)), - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else if (t.name === "deleteObject") { details.push( m( `div.${t.status}`, m("span", "Delete ", mparam(t.objectName)), - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else if (t.name === "getParameterValues") { details.push( m( `div.${t.status}`, `Refresh ${t.parameterNames.length} parameters`, - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else if (t.name === "download") { details.push( m( `div.${t.status}`, `Push file: ${t.fileName} (${t.fileType})`, - m(".actions", actions) - ) + m(".actions", actions), + ), ); } else { details.push(m(`div.${t.status}`, t.name, m(".actions", actions))); @@ -342,7 +342,7 @@ function renderNotifications(notifs): Child[] { let buttons; if (n.actions) { const btns = Object.entries(n.actions).map(([label, onclick]) => - m("button.primary", { onclick: onclick }, label) + m("button.primary", { onclick: onclick }, label), ); if (btns.length) buttons = m("div", { style: "float: right" }, btns); } @@ -366,8 +366,8 @@ function renderNotifications(notifs): Child[] { }, key: n.timestamp, }, - m("div", buttons, n.message) - ) + m("div", buttons, n.message), + ), ); } return notificationElements; @@ -401,7 +401,7 @@ const component: ClosureComponent = (): Component => { height = Math.max( height, (s.dom as HTMLDivElement).offsetTop + - (s.dom as HTMLDivElement).offsetHeight + (s.dom as HTMLDivElement).offsetHeight, ); } } else if (vnode.state["mouseIn"]) { @@ -424,7 +424,7 @@ const component: ClosureComponent = (): Component => { disabled: !statusCount.queued, onclick: () => { const tasks = Array.from(getQueue()).filter( - (t) => t["status"] === "queued" + (t) => t["status"] === "queued", ); commit( tasks, @@ -432,7 +432,7 @@ const component: ClosureComponent = (): Component => { if (err) { notifications.push( "error", - `${deviceId}: ${err.message}` + `${deviceId}: ${err.message}`, ); return; } @@ -440,7 +440,7 @@ const component: ClosureComponent = (): Component => { if (connectionRequestStatus !== "OK") { notifications.push( "error", - `${deviceId}: ${connectionRequestStatus}` + `${deviceId}: ${connectionRequestStatus}`, ); return; } @@ -449,13 +449,13 @@ const component: ClosureComponent = (): Component => { if (t.status === "stale") { notifications.push( "error", - `${deviceId}: No contact from device` + `${deviceId}: No contact from device`, ); return; } else if (t.status === "fault") { notifications.push( "error", - `${deviceId}: Task(s) faulted` + `${deviceId}: Task(s) faulted`, ); return; } @@ -463,9 +463,9 @@ const component: ClosureComponent = (): Component => { notifications.push( "success", - `${deviceId}: Task(s) committed` + `${deviceId}: Task(s) committed`, ); - } + }, ) .then(() => { store.setTimestamp(Date.now()); @@ -475,7 +475,7 @@ const component: ClosureComponent = (): Component => { }); }, }, - "Commit" + "Commit", ), m( "button", @@ -484,8 +484,8 @@ const component: ClosureComponent = (): Component => { onclick: clear, disabled: !queueElements.length, }, - "Clear" - ) + "Clear", + ), ); statusElement = m( @@ -493,24 +493,24 @@ const component: ClosureComponent = (): Component => { m( "span.queued", { class: statusCount.queued ? "active" : "" }, - `Queued: ${statusCount.queued}` + `Queued: ${statusCount.queued}`, ), m( "span.pending", { class: statusCount.pending ? "active" : "" }, - `Pending: ${statusCount.pending}` + `Pending: ${statusCount.pending}`, ), m( "span.fault", { class: statusCount.fault ? "active" : "" }, - `Fault: ${statusCount.fault}` + `Fault: ${statusCount.fault}`, ), m( "span.stale", { class: statusCount.stale ? "active" : "" }, - `Stale: ${statusCount.stale}` + `Stale: ${statusCount.stale}`, ), - actions + actions, ); drawerElement = m( @@ -545,7 +545,7 @@ const component: ClosureComponent = (): Component => { }, }, statusElement, - stagingElements.length ? stagingElements : m(".queue", queueElements) + stagingElements.length ? stagingElements : m(".queue", queueElements), ); } @@ -560,8 +560,8 @@ const component: ClosureComponent = (): Component => { onupdate: repositionNotifications, oncreate: repositionNotifications, }, - notificationElements - ) + notificationElements, + ), ); }, }; diff --git a/ui/dynamic-loader.ts b/ui/dynamic-loader.ts index 91d0c87..1068aff 100644 --- a/ui/dynamic-loader.ts +++ b/ui/dynamic-loader.ts @@ -33,7 +33,7 @@ function onError(): void { Reload: () => { window.location.reload(); }, - } + }, ); } } @@ -65,7 +65,7 @@ export function loadYaml(): Promise { return new Promise((resolve, reject) => { import("yaml") .then((module) => { - yaml = module; + yaml = module.default; resolve(); }) .catch((err) => { diff --git a/ui/faults-page.ts b/ui/faults-page.ts index 1895dc0..ceced47 100644 --- a/ui/faults-page.ts +++ b/ui/faults-page.ts @@ -66,11 +66,11 @@ const unpackSmartQuery = memoize((query) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("faults", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -131,7 +131,7 @@ export const component: ClosureComponent = (): Component => { const valueCallback = (attr, fault): Children => { if (attr.id === "device") { const deviceHref = `#!/devices/${encodeURIComponent( - fault["device"] + fault["device"], )}`; return m("a", { href: deviceHref }, fault["device"]); @@ -175,13 +175,13 @@ export const component: ClosureComponent = (): Component => { Promise.all( Array.from(selected).map((id) => - store.deleteResource("faults", id) - ) + store.deleteResource("faults", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} faults deleted` + `${res.length} faults deleted`, ); store.setTimestamp(Date.now()); }) @@ -191,7 +191,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ); }; } @@ -208,7 +208,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [faults, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/files-page.ts b/ui/files-page.ts index f59f80d..931116a 100644 --- a/ui/files-page.ts +++ b/ui/files-page.ts @@ -77,13 +77,13 @@ function upload( file: File, headers: Record, abortSignal?: AbortSignal, - progressListener?: (e: ProgressEvent) => void + progressListener?: (e: ProgressEvent) => void, ): Promise { headers = Object.assign( { "Content-Type": "application/octet-stream", }, - headers + headers, ); return store.xhrRequest({ method: "PUT", @@ -112,11 +112,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("files", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -236,7 +236,7 @@ export const component: ClosureComponent = (): Component => { file, headers, abortController.signal, - progressListener + progressListener, ); store.setTimestamp(Date.now()); notifications.push("success", "File created"); @@ -247,8 +247,8 @@ export const component: ClosureComponent = (): Component => { progress = -1; }, }, - formData - ) + formData, + ), ); cb = () => { if (progress < 0) return [null, comp]; @@ -257,7 +257,7 @@ export const component: ClosureComponent = (): Component => { "div.progress", m("div.progress-bar", { style: `width: ${Math.trunc(progress * 100)}%`, - }) + }), ), comp, ]; @@ -273,7 +273,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "New" + "New", ), m( "button.primary", @@ -290,13 +290,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("files", id) - ) + store.deleteResource("files", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} files deleted` + `${res.length} files deleted`, ); store.setTimestamp(Date.now()); }) @@ -306,7 +306,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -324,7 +324,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [files, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/filter-component.ts b/ui/filter-component.ts index 2924eaf..3db2f44 100644 --- a/ui/filter-component.ts +++ b/ui/filter-component.ts @@ -35,7 +35,7 @@ const getAutocomplete = memoize((resource) => { .map((s) => ({ value: `${s}: `, tip: smartQuery.getTip(resource, s), - })) + })), ); }); return autocomplete; diff --git a/ui/icons.ts b/ui/icons.ts index 7c133a6..e594a2c 100644 --- a/ui/icons.ts +++ b/ui/icons.ts @@ -25,6 +25,6 @@ export function getIcon(name: string): Children { return m( `svg.icon.icon-${name}`, { key: `icon-${name}` }, - m("use", { href: `${ICONS_SVG}#icon-${name}` }) + m("use", { href: `${ICONS_SVG}#icon-${name}` }), ); } diff --git a/ui/index-table-component.ts b/ui/index-table-component.ts index d28bb95..cfffe2d 100644 --- a/ui/index-table-component.ts +++ b/ui/index-table-component.ts @@ -41,7 +41,9 @@ function renderTable( downloadUrl?: string, valueCallback?: (attr: Attribute, record: Record) => Children, actionsCallback?: Children | ((sel: Set) => Children), - recordActionsCallback?: Children | ((record: Record) => Children) + recordActionsCallback?: + | Children + | ((record: Record) => Children), ): Children { const records = data || []; @@ -92,7 +94,7 @@ function renderTable( onSort(i); }, }, - symbol + symbol, ); labels.push(m("th", [label, sortable])); @@ -162,8 +164,8 @@ function renderTable( if (!selected.delete(id)) selected.add(id); }, }, - tds - ) + tds, + ), ); } @@ -184,19 +186,19 @@ function renderTable( disabled: !data.length || records.length >= Math.min(MAX_PAGE_SIZE, total), }, - "More" - ) + "More", + ), ); if (downloadUrl) { footerElements.push( - m("a.download-csv", { href: downloadUrl, download: "" }, "Download") + m("a.download-csv", { href: downloadUrl, download: "" }, "Download"), ); } const tfoot = m( "tfoot", - m("tr", m("td", { colspan: labels.length }, footerElements)) + m("tr", m("td", { colspan: labels.length }, footerElements)), ); const children = [ @@ -204,7 +206,7 @@ function renderTable( "table.table.highlight", m("thead", m("tr", labels)), m("tbody", rows), - tfoot + tfoot, ), ]; @@ -241,7 +243,7 @@ const component: ClosureComponent = (): Component => { const sortArray = new Set( Object.keys(sortAttributes) .map((x) => (parseInt(x) + 1) * sortAttributes[x]) - .filter((x) => x) + .filter((x) => x), ); for (const num of events) { if (sortArray.delete(num + 1)) sortArray.add(-(num + 1)); @@ -263,7 +265,7 @@ const component: ClosureComponent = (): Component => { downloadUrl, valueCallback, actionsCallback, - recordActionsCallback + recordActionsCallback, ); }, }; diff --git a/ui/layout.ts b/ui/layout.ts index 04aa18c..43ac4da 100644 --- a/ui/layout.ts +++ b/ui/layout.ts @@ -57,7 +57,7 @@ const component: ClosureComponent = (): Component => { m( "div.logo", m("img", { src: LOGO_SVG }), - m("span.version", "v" + VERSION) + m("span.version", "v" + VERSION), ), m(userMenu), m(menu, attrs), @@ -68,7 +68,7 @@ const component: ClosureComponent = (): Component => { sideMenu, m("#content", { class: `page-${vnode.attrs["page"]}` }, [ vnode.children, - ]) + ]), ), overlay.render(), m(datalist), diff --git a/ui/login-page.ts b/ui/login-page.ts index 930da8d..42d0f86 100644 --- a/ui/login-page.ts +++ b/ui/login-page.ts @@ -25,7 +25,7 @@ import * as overlay from "./overlay"; import changePasswordComponent from "./change-password-component"; export function init( - args: Record + args: Record, ): Promise> { return Promise.resolve(args); } @@ -53,7 +53,7 @@ export const component: ClosureComponent = (): Component => { oninput: (e) => { vnode.state["username"] = e.target.value; }, - }) + }), ), m( "p", @@ -65,7 +65,7 @@ export const component: ClosureComponent = (): Component => { oninput: (e) => { vnode.state["password"] = e.target.value; }, - }) + }), ), m( "p", @@ -87,9 +87,9 @@ export const component: ClosureComponent = (): Component => { return false; }, }, - "Login" - ) - ) + "Login", + ), + ), ), m( "a", @@ -107,7 +107,7 @@ export const component: ClosureComponent = (): Component => { overlay.open(cb); }, }, - "Change password" + "Change password", ), ]; }, diff --git a/ui/long-text-component.ts b/ui/long-text-component.ts index 4475b86..f4c2a88 100644 --- a/ui/long-text-component.ts +++ b/ui/long-text-component.ts @@ -57,7 +57,7 @@ const component: ClosureComponent = (): Component => { onupdate: (vnode2) => { if (vnode2.dom.clientWidth === vnode2.dom.scrollWidth) { (vnode2.dom as HTMLElement).classList.remove( - "long-text-overflowed" + "long-text-overflowed", ); (vnode2.dom as HTMLElement).onclick = null; } else { @@ -67,7 +67,7 @@ const component: ClosureComponent = (): Component => { class: "long-text", title: text, }, - text + text, ); }, }; diff --git a/ui/menu.ts b/ui/menu.ts index 2186fbf..f080090 100644 --- a/ui/menu.ts +++ b/ui/menu.ts @@ -30,8 +30,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["overview"] }, - m("a", { href: "#!/overview" }, "Overview") - ) + m("a", { href: "#!/overview" }, "Overview"), + ), ); } @@ -40,8 +40,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["devices"] }, - m("a", { href: "#!/devices" }, "Devices") - ) + m("a", { href: "#!/devices" }, "Devices"), + ), ); } @@ -50,8 +50,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["faults"] }, - m("a", { href: "#!/faults" }, "Faults") - ) + m("a", { href: "#!/faults" }, "Faults"), + ), ); } @@ -67,8 +67,8 @@ const component: ClosureComponent = (): Component => { m( "li", { class: active["admin"] }, - m("a", { href: "#!/admin" }, "Admin") - ) + m("a", { href: "#!/admin" }, "Admin"), + ), ); break; } diff --git a/ui/notifications.ts b/ui/notifications.ts index 1de4012..3691cbf 100644 --- a/ui/notifications.ts +++ b/ui/notifications.ts @@ -31,7 +31,7 @@ const notifications = new Set(); export function push( type: string, message: string, - actions?: { [label: string]: () => void } + actions?: { [label: string]: () => void }, ): Notification { const n: Notification = { type: type, diff --git a/ui/overlay.ts b/ui/overlay.ts index 245a9b2..591d9c6 100644 --- a/ui/overlay.ts +++ b/ui/overlay.ts @@ -27,7 +27,7 @@ let closeCallback: CloseCallback = null; export function open( callback: OverlayCallback, - closeCb: CloseCallback = null + closeCb: CloseCallback = null, ): void { overlayCallback = callback; closeCallback = closeCb; @@ -74,8 +74,8 @@ export function render(): Children { e.stopPropagation(); }, }, - overlayCallback() - ) + overlayCallback(), + ), ); } diff --git a/ui/overview-page.ts b/ui/overview-page.ts index bd5f324..404e22a 100644 --- a/ui/overview-page.ts +++ b/ui/overview-page.ts @@ -47,7 +47,7 @@ function queryCharts(charts: Record): Record { export function init(): Promise> { if (!window.authorizer.hasAccess("devices", 1)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } diff --git a/ui/permissions-page.ts b/ui/permissions-page.ts index c8f47f1..b63996f 100644 --- a/ui/permissions-page.ts +++ b/ui/permissions-page.ts @@ -129,7 +129,7 @@ function putActionHandler(action, _object, isNew): Promise { .then(() => { notifications.push( "success", - `Permission ${exists ? "updated" : "created"}` + `Permission ${exists ? "updated" : "created"}`, ); store.setTimestamp(Date.now()); resolve(null); @@ -170,11 +170,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("permissions", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } const sort = args.hasOwnProperty("sort") ? "" + args["sort"] : ""; @@ -274,13 +274,13 @@ export const component: ClosureComponent = (): Component => { base: permission, oncreate: (_vnode) => { _vnode.dom.querySelector( - "input[name='role']" + "input[name='role']", ).disabled = true; _vnode.dom.querySelector( - "select[name='access']" + "select[name='access']", ).disabled = true; _vnode.dom.querySelector( - "select[name='resource']" + "select[name='resource']", ).disabled = true; }, actionHandler: (action, object) => { @@ -305,19 +305,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "Show" + "Show", ), ]; }; @@ -356,19 +356,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New" + "New", ), m( "button.primary", @@ -378,7 +378,7 @@ export const component: ClosureComponent = (): Component => { onclick: (e) => { if ( !confirm( - `Deleting ${selected.size} permissions. Are you sure?` + `Deleting ${selected.size} permissions. Are you sure?`, ) ) return; @@ -387,13 +387,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("permissions", id) - ) + store.deleteResource("permissions", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} permissions deleted` + `${res.length} permissions deleted`, ); store.setTimestamp(Date.now()); }) @@ -403,7 +403,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -421,7 +421,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [permissions, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/pie-chart-component.ts b/ui/pie-chart-component.ts index abaf3a5..f0398b7 100644 --- a/ui/pie-chart-component.ts +++ b/ui/pie-chart-component.ts @@ -28,7 +28,7 @@ function drawChart(chartData): Children { const slices = chartData.slices; const total: number = Array.from(Object.values(chartData.slices)).reduce( (a: number, s) => a + (s["count"]["value"] || 0), - 0 + 0, ); const legend = []; const paths = []; @@ -53,10 +53,10 @@ function drawChart(chartData): Children { filter: memoizedStringify(slice["filter"]), })}`, }, - slice["count"]["value"] || 0 + slice["count"]["value"] || 0, ), ` (${(percent * 100).toFixed(2)}%)`, - ]) + ]), ); if (percent > 0) { @@ -77,7 +77,7 @@ function drawChart(chartData): Children { m("path", { d: sketch, fill: slice["color"], - }) + }), ); const percentageX = @@ -106,10 +106,10 @@ function drawChart(chartData): Children { "dominant-baseline": "middle", "text-anchor": "middle", }, - `${(percent * 100).toFixed(2)}%` + `${(percent * 100).toFixed(2)}%`, ), - ] - ) + ], + ), ); } } @@ -132,10 +132,10 @@ function drawChart(chartData): Children { xmlns: "http://www.w3.org/2000/svg", "xmlns:xlink": "http://www.w3.org/1999/xlink", }, - paths.concat(links) + paths.concat(links), ), m(".legend", legend), - ]) + ]), ); } diff --git a/ui/presets-page.ts b/ui/presets-page.ts index ef1754f..62b9a7b 100644 --- a/ui/presets-page.ts +++ b/ui/presets-page.ts @@ -100,7 +100,7 @@ function putActionHandler(action, _object, isNew): Promise { .then(() => { notifications.push( "success", - `Preset ${exists ? "updated" : "created"}` + `Preset ${exists ? "updated" : "created"}`, ); store.setTimestamp(Date.now()); resolve(null); @@ -141,11 +141,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("presets", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -248,7 +248,7 @@ export const component: ClosureComponent = (): Component => { return m( "a", { href: devicesUrl, title: preset["precondition"] }, - preset["precondition"] + preset["precondition"], ); } else if ( attr.id === "provision" && @@ -261,7 +261,7 @@ export const component: ClosureComponent = (): Component => { filter: `Q("ID", "${preset["provision"]}")`, })}`, }, - preset["provision"] + preset["provision"], ); } else { return preset[attr.id]; @@ -311,15 +311,15 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = (): Children => { if (!preset.provision) { return m( "div", { style: "margin:20px" }, - "This UI only supports presets with a single 'provision' configuration. If this preset was originally created from the old UI (genieacs-gui), you must edit it there." + "This UI only supports presets with a single 'provision' configuration. If this preset was originally created from the old UI (genieacs-gui), you must edit it there.", ); } return comp; @@ -328,11 +328,11 @@ export const component: ClosureComponent = (): Component => { cb, () => !comp.state?.["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "Show" + "Show", ), ]; }; @@ -372,19 +372,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New" + "New", ), m( "button.primary", @@ -401,13 +401,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("presets", id) - ) + store.deleteResource("presets", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} presets deleted` + `${res.length} presets deleted`, ); store.setTimestamp(Date.now()); }) @@ -417,7 +417,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -435,7 +435,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [presets, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/provisions-page.ts b/ui/provisions-page.ts index 3cdec52..681b14d 100644 --- a/ui/provisions-page.ts +++ b/ui/provisions-page.ts @@ -80,7 +80,7 @@ function putActionHandler(action, _object, isNew): Promise { .then(() => { notifications.push( "success", - `Provision ${exists ? "updated" : "created"}` + `Provision ${exists ? "updated" : "created"}`, ); store.setTimestamp(Date.now()); resolve(null); @@ -127,11 +127,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("provisions", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -237,19 +237,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "Show" + "Show", ), ]; }; @@ -289,19 +289,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New" + "New", ), m( "button.primary", @@ -311,7 +311,7 @@ export const component: ClosureComponent = (): Component => { onclick: (e) => { if ( !confirm( - `Deleting ${selected.size} provisions. Are you sure?` + `Deleting ${selected.size} provisions. Are you sure?`, ) ) return; @@ -320,13 +320,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("provisions", id) - ) + store.deleteResource("provisions", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} provisions deleted` + `${res.length} provisions deleted`, ); store.setTimestamp(Date.now()); }) @@ -336,7 +336,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -354,7 +354,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [provisions, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/put-form-component.ts b/ui/put-form-component.ts index bf88702..1a147da 100644 --- a/ui/put-form-component.ts +++ b/ui/put-form-component.ts @@ -61,11 +61,11 @@ function createField(current, attr, focus): Children { e.redraw = false; }, }, - options + options, ); } else if (attr.type === "multi") { const optionsValues = Array.from( - new Set(attr.options.concat(current.object[attr.id] || [])) + new Set(attr.options.concat(current.object[attr.id] || [])), ); const currentSelected = new Set(current.object[attr.id]); const options = optionsValues.map((op) => { @@ -216,15 +216,15 @@ const component: ClosureComponent = () => { "p", m("label", { for: attr.id }, attr.label || attr.id), m("br"), - createField(current, attr, focus) - ) + createField(current, attr, focus), + ), ); } const submit = m( "button.primary", { type: "submit" }, - "Save" + "Save", ) as VnodeDOM; const buttons = [submit]; @@ -238,13 +238,13 @@ const component: ClosureComponent = () => { onclick: (e) => { e.redraw = false; e.target.disabled = true; - actionHandler("delete", current.object).finally(() => { + void actionHandler("delete", current.object).finally(() => { e.target.disabled = false; }); }, }, - "Delete" - ) as VnodeDOM + "Delete", + ) as VnodeDOM, ); } @@ -255,7 +255,7 @@ const component: ClosureComponent = () => { "h1", `${current.isNew ? "New" : "Editing"} ${ singular[resource] || resource - }` + }`, ), m( "form", @@ -267,14 +267,14 @@ const component: ClosureComponent = () => { // e.target.onsubmit = null; (submit.dom as HTMLFormElement).disabled = true; // submit.dom.textContent = "Loading ..."; - actionHandler("save", current.object).finally(() => { + void actionHandler("save", current.object).finally(() => { // submit.dom.textContent = "Save"; // e.target.onsubmit = onsubmit; (submit.dom as HTMLFormElement).disabled = false; }); }, }, - form + form, ), ]; diff --git a/ui/smart-query.ts b/ui/smart-query.ts index 325eb53..3fa1747 100644 --- a/ui/smart-query.ts +++ b/ui/smart-query.ts @@ -63,7 +63,7 @@ for (const v of Object.values( config.ui.filters as Record< string, { label: string; parameter: string; type: string } - > + >, )) { resources.devices[v.label] = { parameter: v.parameter, @@ -114,7 +114,7 @@ function queryString(param: Expression, value: string): Expression { function queryStringCaseSensitive( param: Expression, - value: string + value: string, ): Expression { return ["LIKE", param, value]; } @@ -205,7 +205,7 @@ export function getTip(resource: string, label: string): string { break; case "timestamp": tips.push( - "Unix timestamp or string in the form YYYY-MM-DDTHH:mm:ss.sssZ" + "Unix timestamp or string in the form YYYY-MM-DDTHH:mm:ss.sssZ", ); break; case "mac": @@ -228,7 +228,7 @@ export function getTip(resource: string, label: string): string { export function unpack( resource: string, label: string, - value: string + value: string, ): Expression { if (!resources[resource]) return null; const type = resources[resource][label].type; @@ -253,7 +253,7 @@ export function unpack( if (type.includes("string-casesensitive")) { const q = queryStringCaseSensitive( resources[resource][label].parameter, - value + value, ); if (q) res.push(q); } diff --git a/ui/store.ts b/ui/store.ts index aab441f..60de2f1 100644 --- a/ui/store.ts +++ b/ui/store.ts @@ -76,7 +76,7 @@ for (const r of [ }; } -class QueryResponse { +export class QueryResponse { public get fulfilled(): number { queries.accessed.set(this, Date.now()); return queries.fulfilled.get(this) || 0; @@ -106,7 +106,7 @@ function checkConnection(): void { connectionNotification = notifications.push( "warning", "Server is unreachable", - {} + {}, ); } } else { @@ -121,7 +121,7 @@ function checkConnection(): void { if (Math.abs(skew - clockSkew) > 5000 && now2 - now1 < 1000) { clockSkew = skew; console.warn( - `System and server clocks are out of sync. Adding ${clockSkew}ms offset to any client-side time relative calculations.` + `System and server clocks are out of sync. Adding ${clockSkew}ms offset to any client-side time relative calculations.`, ); setTimestamp(now2); m.redraw(); @@ -147,7 +147,7 @@ function checkConnection(): void { Reload: () => { window.location.reload(); }, - } + }, ); } } @@ -164,7 +164,7 @@ function checkConnection(): void { Reload: () => { window.location.reload(); }, - } + }, ); } } @@ -178,14 +178,14 @@ function checkConnection(): void { setInterval(checkConnection, 3000); export async function xhrRequest( - options: { url: string } & m.RequestOptions + options: { url: string } & m.RequestOptions, ): Promise { const extract = options.extract; const deserialize = options.deserialize; options.extract = ( xhr: XMLHttpRequest, - _options?: { url: string } & m.RequestOptions + _options?: { url: string } & m.RequestOptions, ): any => { if (typeof extract === "function") return extract(xhr, _options); @@ -207,7 +207,7 @@ export async function xhrRequest( response = deserialize(xhr.responseText); } else if ( (xhr.getResponseHeader("content-type") || "").startsWith( - "application/json" + "application/json", ) ) { try { @@ -243,7 +243,11 @@ export function count(resourceType: string, filter: Expression): QueryResponse { return queryResponse; } -function limitFilter(filter, sort, bookmark): Expression { +function limitFilter( + filter: Expression, + sort: Record, + bookmark, +): Expression { const sortSort = (a, b): number => Math.abs(b[1]) - Math.abs(a[1]); const arr = Object.entries(sort).sort(sortSort).reverse(); return and( @@ -254,7 +258,7 @@ function limitFilter(filter, sort, bookmark): Expression { if (bookmark[param] == null) { return or( ["IS NOT NULL", ["PARAM", param]], - and(["IS NULL", ["PARAM", param]], cur) + and(["IS NULL", ["PARAM", param]], cur), ); } let f = null; @@ -266,7 +270,7 @@ function limitFilter(filter, sort, bookmark): Expression { f = or(f, ["<", ["PARAM", param], bookmark[param]]); return or(f, and(["=", ["PARAM", param], bookmark[param]], cur)); } - }, true as Expression) + }, true as Expression), ); } @@ -274,7 +278,7 @@ function compareFunction(sort: { [param: string]: number; }): (a: any, b: any) => number { const sortEntries = Object.entries(sort).sort( - (a, b) => Math.abs(b[1]) - Math.abs(a[1]) + (a, b) => Math.abs(b[1]) - Math.abs(a[1]), ); return (a, b) => { @@ -335,14 +339,14 @@ function inferQuery(resourceType, queryResponse): void { queries.value.set( queryResponse, - findMatches(resourceType, filter, sort, limit) + findMatches(resourceType, filter, sort, limit), ); } export function fetch( resourceType: string, filter: Expression, - options: { limit?: number; sort?: { [param: string]: number } } = {} + options: { limit?: number; sort?: { [param: string]: number } } = {}, ): QueryResponse { const filterStr = memoizedStringify(filter); const sort = Object.assign({}, options.sort); @@ -396,7 +400,7 @@ export function fulfill(accessTimestamp: number): void { throw new Error("Server is unreachable"); } else if (xhr.status !== 200) { throw new Error( - `Unexpected response status code ${xhr.status}` + `Unexpected response status code ${xhr.status}`, ); } return +xhr.getResponseHeader("x-total-count"); @@ -406,7 +410,7 @@ export function fulfill(accessTimestamp: number): void { queries.value.set(queryResponse, c); queries.fulfilled.set(queryResponse, fulfillTimestamp); queries.fulfilling.delete(queryResponse); - }) + }), ); } } @@ -463,7 +467,7 @@ export function fulfill(accessTimestamp: number): void { } else { queries.bookmark.delete(queryResponse); } - }) + }), ); } } @@ -488,7 +492,7 @@ export function fulfill(accessTimestamp: number): void { const [union, diff] = unionDiff( resources[resourceType].combinedFilter, - combinedFilter + combinedFilter, ); if (!diff) { @@ -497,7 +501,7 @@ export function fulfill(accessTimestamp: number): void { filter = memoizedEvaluate( filter, null, - fulfillTimestamp + clockSkew + fulfillTimestamp + clockSkew, ); const limit = queries.limit.get(queryResponse); const bookmark = queries.bookmark.get(queryResponse); @@ -506,7 +510,7 @@ export function fulfill(accessTimestamp: number): void { queries.value.set( queryResponse, - findMatches(resourceType, filter, sort, limit) + findMatches(resourceType, filter, sort, limit), ); queries.fulfilled.set(queryResponse, fulfillTimestamp); queries.fulfilling.delete(queryResponse); @@ -559,12 +563,12 @@ export function fulfill(accessTimestamp: number): void { queries.value.set( queryResponse, - findMatches(resourceType, filter, sort, limit) + findMatches(resourceType, filter, sort, limit), ); queries.fulfilled.set(queryResponse, fulfillTimestamp); queries.fulfilling.delete(queryResponse); } - }) + }), ); } if (updated) m.redraw(); @@ -593,7 +597,7 @@ export function getClockSkew(): number { export function postTasks( deviceId: string, - tasks: QueueTask[] + tasks: QueueTask[], ): Promise { const tasks2: Task[] = []; for (const t of tasks) { @@ -626,7 +630,7 @@ export function postTasks( export function updateTags( deviceId: string, - tags: Record + tags: Record, ): Promise { return xhrRequest({ method: "POST", @@ -637,7 +641,7 @@ export function updateTags( export function deleteResource( resourceType: string, - id: string + id: string, ): Promise { return xhrRequest({ method: "DELETE", @@ -648,7 +652,7 @@ export function deleteResource( export function putResource( resourceType: string, id: string, - object: Record + object: Record, ): Promise { for (const k in object) if (object[k] === undefined) object[k] = null; @@ -691,7 +695,7 @@ export function resourceExists(resource: string, id: string): Promise { export function evaluateExpression( exp: Expression, - obj: Record + obj: Record, ): Expression { if (!Array.isArray(exp)) return exp; return memoizedEvaluate(exp, obj, fulfillTimestamp + clockSkew); @@ -700,7 +704,7 @@ export function evaluateExpression( export function changePassword( username: string, newPassword: string, - authPassword?: string + authPassword?: string, ): Promise { const body = { newPassword }; if (authPassword) body["authPassword"] = authPassword; diff --git a/ui/task-queue.ts b/ui/task-queue.ts index da0423c..ae4b580 100644 --- a/ui/task-queue.ts +++ b/ui/task-queue.ts @@ -95,8 +95,8 @@ export function commit( deviceId: string, err: Error, conReqStatus: string, - _tasks: QueueTask[] - ) => void + _tasks: QueueTask[], + ) => void, ): Promise { const devices: { [deviceId: string]: QueueTask[] } = {}; diff --git a/ui/ui-config-component.ts b/ui/ui-config-component.ts index b0b4779..01afb1e 100644 --- a/ui/ui-config-component.ts +++ b/ui/ui-config-component.ts @@ -65,8 +65,8 @@ function putActionHandler(prefix: string[], dataYaml: string): Promise { store.putResource( "config", obj._id, - obj as unknown as Record - ) + obj as unknown as Record, + ), ); } @@ -147,7 +147,7 @@ const component: ClosureComponent = () => { .catch(vnode.attrs.onError); }, }, - [code, m(".actions-bar", [submit])] + [code, m(".actions-bar", [submit])], ), ]); }, diff --git a/ui/user-menu.ts b/ui/user-menu.ts index 8560c76..9e4ed1a 100644 --- a/ui/user-menu.ts +++ b/ui/user-menu.ts @@ -46,8 +46,8 @@ const component: ClosureComponent = (): Component => { return false; }, }, - "Log out" - ) + "Log out", + ), ); } else { return m( @@ -58,8 +58,8 @@ const component: ClosureComponent = (): Component => { href: "#!/login?" + m.buildQueryString({ continue: m.route.get() }), }, - "Log in" - ) + "Log in", + ), ); } }, diff --git a/ui/users-page.ts b/ui/users-page.ts index 77b2fbd..1b471f1 100644 --- a/ui/users-page.ts +++ b/ui/users-page.ts @@ -144,11 +144,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("users", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -267,8 +267,8 @@ export const component: ClosureComponent = (): Component => { { resource: "users", attributes: attributes, - } - ) + }, + ), ); cb = () => { @@ -293,11 +293,11 @@ export const component: ClosureComponent = (): Component => { cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "Show" + "Show", ), ]; }; @@ -346,19 +346,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New" + "New", ), m( "button.primary", @@ -375,13 +375,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("users", id) - ) + store.deleteResource("users", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} users deleted` + `${res.length} users deleted`, ); store.setTimestamp(Date.now()); }) @@ -391,7 +391,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -409,7 +409,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [users, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/virtual-parameters-page.ts b/ui/virtual-parameters-page.ts index 1642664..929a45a 100644 --- a/ui/virtual-parameters-page.ts +++ b/ui/virtual-parameters-page.ts @@ -80,7 +80,7 @@ function putActionHandler(action, _object, isNew): Promise { .then(() => { notifications.push( "success", - `Virtual parameter ${exists ? "updated" : "created"}` + `Virtual parameter ${exists ? "updated" : "created"}`, ); store.setTimestamp(Date.now()); resolve(null); @@ -127,11 +127,11 @@ const getDownloadUrl = memoize((filter) => { }); export function init( - args: Record + args: Record, ): Promise> { if (!window.authorizer.hasAccess("virtualParameters", 2)) { return Promise.reject( - new Error("You are not authorized to view this page") + new Error("You are not authorized to view this page"), ); } @@ -237,19 +237,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "Show" + "Show", ), ]; }; @@ -289,19 +289,19 @@ export const component: ClosureComponent = (): Component => { }); }, }, - formData - ) + formData, + ), ); cb = () => comp; overlay.open( cb, () => !comp.state["current"]["modified"] || - confirm("You have unsaved changes. Close anyway?") + confirm("You have unsaved changes. Close anyway?"), ); }, }, - "New" + "New", ), m( "button.primary", @@ -311,7 +311,7 @@ export const component: ClosureComponent = (): Component => { onclick: (e) => { if ( !confirm( - `Deleting ${selected.size} virtual parameters. Are you sure?` + `Deleting ${selected.size} virtual parameters. Are you sure?`, ) ) return; @@ -320,13 +320,13 @@ export const component: ClosureComponent = (): Component => { e.target.disabled = true; Promise.all( Array.from(selected).map((id) => - store.deleteResource("virtualParameters", id) - ) + store.deleteResource("virtualParameters", id), + ), ) .then((res) => { notifications.push( "success", - `${res.length} virtual parameters deleted` + `${res.length} virtual parameters deleted`, ); store.setTimestamp(Date.now()); }) @@ -336,7 +336,7 @@ export const component: ClosureComponent = (): Component => { }); }, }, - "Delete" + "Delete", ), ]; }; @@ -354,7 +354,7 @@ export const component: ClosureComponent = (): Component => { m( "loading", { queries: [virtualParameters, count] }, - m(indexTableComponent, attrs) + m(indexTableComponent, attrs), ), ]; }, diff --git a/ui/wizard-page.ts b/ui/wizard-page.ts index 5f05018..389870d 100644 --- a/ui/wizard-page.ts +++ b/ui/wizard-page.ts @@ -58,13 +58,13 @@ export const component: ClosureComponent = (vnode): Component => { m("h1", "Initialization wizard"), m( "p", - "This wizard will seed the database with a minimal initial configuration to serve as a starting point. Select what you want to initialize and click 'ABRACADABRA!'." + "This wizard will seed the database with a minimal initial configuration to serve as a starting point. Select what you want to initialize and click 'ABRACADABRA!'.", ), m("div", m("label", checkboxes[0], "Users, roles and permissions")), m("div", m("label", checkboxes[1], "Presets and provisions")), m( "div", - m("label", checkboxes[2], "Devices predefined search filters") + m("label", checkboxes[2], "Devices predefined search filters"), ), m("div", m("label", checkboxes[3], "Device details page")), m("div", m("label", checkboxes[4], "Devices listing page")), @@ -99,7 +99,7 @@ export const component: ClosureComponent = (vnode): Component => { m.route.set("/login"); window.location.reload(); }, - } + }, ); }) .catch((err) => { @@ -108,7 +108,7 @@ export const component: ClosureComponent = (vnode): Component => { }, 3000); if (opts["users"]) { alert( - "An administrator user has been created for you. Use admin/admin to log in. Don't forget to change the default password." + "An administrator user has been created for you. Use admin/admin to log in. Don't forget to change the default password.", ); } }) @@ -117,7 +117,7 @@ export const component: ClosureComponent = (vnode): Component => { }); }, }, - "ABRACADABRA!" + "ABRACADABRA!", ), ]); },