diff --git a/.eslintrc.json b/.eslintrc.json index e4014d45..2a5819b0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -20,13 +20,7 @@ ], "ignorePatterns": ["**/node_modules/", "**/dist/", "**/build/", "**/public/"], "rules": { - "eqeqeq": [ - "error", - "always", - { - "null": "ignore" - } - ], + "eqeqeq": ["error", "always"], "no-console": ["error"], "arrow-body-style": ["error", "always"], "no-empty": [ diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 5c634d48..4091172e 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -12,6 +12,7 @@ "packages/core/js-client-isomorphic": {}, "packages/core/marine-worker": {}, "packages/core/aqua-to-js": {}, - "packages/core/interfaces": {} + "packages/core/interfaces": {}, + "packages/core/npm-aqua-compiler": {} } } diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index e3078dd0..29820cdb 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -3,5 +3,6 @@ "packages/core/marine-worker": "0.5.0", "packages/core/aqua-to-js": "0.3.4", "packages/core/js-client-isomorphic": "0.3.0", - "packages/core/interfaces": "0.9.0" + "packages/core/interfaces": "0.9.0", + "packages/core/npm-aqua-compiler": "0.0.0" } diff --git a/packages/@tests/smoke/web/src/index.ts b/packages/@tests/smoke/web/src/index.ts index ae85b30d..401e4bc0 100644 --- a/packages/@tests/smoke/web/src/index.ts +++ b/packages/@tests/smoke/web/src/index.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import assert from "node:assert"; import { dirname, join } from "path"; import { fileURLToPath } from "url"; @@ -45,6 +46,8 @@ const test = async () => { const browser = await puppeteer.launch(); const page = (await browser.pages())[0]; + assert(page); + page.on("console", (message) => { console.log(`${message.type().toUpperCase()}: ${message.text()}`); }); @@ -77,7 +80,7 @@ const test = async () => { await browser.close(); await stopServer(localServer); - if (content == null) { + if (content === null || content === undefined) { throw new Error("smoke test failed!"); } }; diff --git a/packages/core/aqua-to-js/src/common.ts b/packages/core/aqua-to-js/src/common.ts index 5a125a88..0b142e72 100644 --- a/packages/core/aqua-to-js/src/common.ts +++ b/packages/core/aqua-to-js/src/common.ts @@ -35,7 +35,7 @@ export function genTypeName( const args = item.tag === "labeledProduct" ? Object.values(item.fields) : item.items; - if (args.length === 1) { + if (args.length === 1 && "0" in args) { return genTypeName(args[0], name); } @@ -112,7 +112,7 @@ export function typeToTs(t: NonArrowType | ArrowType): string { const retType = codomain.tag === "nil" ? "void" - : codomain.items.length === 1 + : codomain.items.length === 1 && "0" in codomain.items ? typeToTs(codomain.items[0]) : typeToTs(codomain); diff --git a/packages/core/aqua-to-js/src/generate/interfaces.ts b/packages/core/aqua-to-js/src/generate/interfaces.ts index 575b9324..710863c5 100644 --- a/packages/core/aqua-to-js/src/generate/interfaces.ts +++ b/packages/core/aqua-to-js/src/generate/interfaces.ts @@ -132,7 +132,7 @@ export class TSTypeGenerator implements TypeGenerator { ]; const registerServiceArgs = - srvDef.defaultServiceId == null + srvDef.defaultServiceId === undefined ? functionOverloadsWithoutDefaultServiceId : functionOverloadsWithDefaultServiceId; diff --git a/packages/core/aqua-to-js/src/utils.ts b/packages/core/aqua-to-js/src/utils.ts index 8ce2ebca..d56cb477 100644 --- a/packages/core/aqua-to-js/src/utils.ts +++ b/packages/core/aqua-to-js/src/utils.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import assert from "assert"; import { readFile } from "fs/promises"; import { join } from "path"; @@ -86,7 +85,7 @@ export function recursiveRenameLaquaProps(obj: JSONValue): unknown { // Last part of the property separated by "_" is a correct name const refinedProperty = prop.split("_").pop(); - if (refinedProperty == null) { + if (refinedProperty === undefined) { throw new Error(`Bad property name: ${prop}.`); } @@ -95,11 +94,15 @@ export function recursiveRenameLaquaProps(obj: JSONValue): unknown { } } - assert(accessProp in obj); + const laquaProp = obj[accessProp]; + + if (laquaProp === undefined) { + return acc; + } return { ...acc, - [accessProp]: recursiveRenameLaquaProps(obj[accessProp]), + [accessProp]: recursiveRenameLaquaProps(laquaProp), }; }, {}); } diff --git a/packages/core/aqua-to-js/tsconfig.json b/packages/core/aqua-to-js/tsconfig.json index db12131a..7c35d272 100644 --- a/packages/core/aqua-to-js/tsconfig.json +++ b/packages/core/aqua-to-js/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../tsconfig.json", "compilerOptions": { - "esModuleInterop": true, "resolveJsonModule": true, "outDir": "./dist" }, diff --git a/packages/core/js-client-isomorphic/src/fetchers/node.ts b/packages/core/js-client-isomorphic/src/fetchers/node.ts index 8b9ab6b9..eaf0bca1 100644 --- a/packages/core/js-client-isomorphic/src/fetchers/node.ts +++ b/packages/core/js-client-isomorphic/src/fetchers/node.ts @@ -36,7 +36,7 @@ export const fetchResource: FetchResourceFn = async (pkg, assetPath) => { const packagePath = matches?.[0]; - if (packagePath == null) { + if (packagePath === undefined) { throw new Error(`Cannot find dependency ${name} in path ${posixPath}`); } diff --git a/packages/core/js-client/src/api.spec.ts b/packages/core/js-client/src/api.spec.ts index 6abae83b..a53dba27 100644 --- a/packages/core/js-client/src/api.spec.ts +++ b/packages/core/js-client/src/api.spec.ts @@ -18,7 +18,7 @@ import { fileURLToPath } from "url"; import { compileFromPath } from "@fluencelabs/aqua-api"; import { ServiceDef } from "@fluencelabs/interfaces"; -import { describe, expect, it } from "vitest"; +import { assert, describe, expect, it } from "vitest"; import { v5_registerService } from "./api.js"; import { callAquaFunction } from "./compilerSupport/callFunction.js"; @@ -65,8 +65,12 @@ describe("User API methods", () => { const typedServices: Record = services; + assert("demoCalc" in functions); + const { script } = functions["demoCalc"]; + assert("Calc" in typedServices); + v5_registerService([peer, "calc", calcService], { defaultServiceId: "calc", functions: typedServices["Calc"].functions, diff --git a/packages/core/js-client/src/api.ts b/packages/core/js-client/src/api.ts index 87ca6a27..309ecaed 100644 --- a/packages/core/js-client/src/api.ts +++ b/packages/core/js-client/src/api.ts @@ -26,12 +26,13 @@ import { z } from "zod"; import { CallAquaFunctionConfig } from "./compilerSupport/callFunction.js"; import { aqua2js, - SchemaValidationError, js2aqua, + SchemaValidationError, wrapJsFunction, } from "./compilerSupport/conversions.js"; import { ServiceImpl, UserServiceImpl } from "./compilerSupport/types.js"; import { FluencePeer } from "./jsPeer/FluencePeer.js"; +import { zip } from "./util/utils.js"; import { callAquaFunction, Fluence, registerService } from "./index.js"; @@ -74,51 +75,48 @@ export const v5_callFunction = async ( ); } - const argNames = Object.keys( - def.arrow.domain.tag === "nil" ? [] : def.arrow.domain.fields, - ); - - const schemaArgCount = argNames.length; - - type FunctionArg = SimpleTypes | ArrowWithoutCallbacks; - const schemaFunctionArgs: Record = def.arrow.domain.tag === "nil" ? {} : def.arrow.domain.fields; + const schemaFunctionArgEntries = Object.entries(schemaFunctionArgs); + + const schemaArgCount = schemaFunctionArgEntries.length; + + type FunctionArg = SimpleTypes | ArrowWithoutCallbacks; + // if there are more args than expected in schema (schemaArgCount) then last arg is config const config = schemaArgCount < rest.length ? rest.pop() : undefined; validateAquaConfig(config); const callArgs = Object.fromEntries( - rest.slice(0, schemaArgCount).map((arg, i) => { - const argName = argNames[i]; - const argSchema = schemaFunctionArgs[argName]; + zip(rest.slice(0, schemaArgCount), schemaFunctionArgEntries).map( + ([arg, [argName, argType]]) => { + if (argType.tag === "arrow") { + if (typeof arg !== "function") { + throw new SchemaValidationError( + [argName], + argType, + "function", + arg, + ); + } - if (argSchema.tag === "arrow") { - if (typeof arg !== "function") { + return [argName, wrapJsFunction(arg, argType)]; + } + + if (typeof arg === "function") { throw new SchemaValidationError( [argName], - argSchema, - "function", + argType, + "non-function value", arg, ); } - return [argName, wrapJsFunction(arg, argSchema)]; - } - - if (typeof arg === "function") { - throw new SchemaValidationError( - [argName], - argSchema, - "non-function value", - arg, - ); - } - - return [argName, js2aqua(arg, argSchema, { path: [def.functionName] })]; - }), + return [argName, js2aqua(arg, argType, { path: [def.functionName] })]; + }, + ), ); const returnTypeVoid = @@ -126,7 +124,8 @@ export const v5_callFunction = async ( const returnSchema = def.arrow.codomain.tag === "unlabeledProduct" && - def.arrow.codomain.items.length === 1 + def.arrow.codomain.items.length === 1 && + "0" in def.arrow.codomain.items ? def.arrow.codomain.items[0] : def.arrow.codomain; @@ -145,7 +144,7 @@ export const v5_callFunction = async ( }; const getDefaultPeer = (): FluencePeer => { - if (Fluence.defaultClient == null) { + if (Fluence.defaultClient === undefined) { throw new Error( "Could not register Aqua service because the client is not initialized. Did you forget to call Fluence.connect()?", ); @@ -155,7 +154,7 @@ const getDefaultPeer = (): FluencePeer => { }; const getDefaultServiceId = (def: ServiceDef) => { - if (def.defaultServiceId == null) { + if (def.defaultServiceId === undefined) { throw new Error("Service ID is not provided"); } @@ -204,13 +203,18 @@ export const v5_registerService = ( // Wrapping service functions, selecting only those listed in schema, to convert their args js -> aqua and backwards const wrappedServiceImpl = Object.fromEntries( - Object.keys(serviceSchema).map((schemaKey) => { + Object.entries(serviceSchema).map(([schemaKey, schemaValue]) => { + const serviceImplValue = serviceImpl[schemaKey]; + + if (serviceImplValue === undefined) { + throw new Error( + `Service function ${schemaKey} listed in Aqua schema but wasn't provided in schema implementation object or class instance. Check that your Aqua service definition matches passed service implementation`, + ); + } + return [ schemaKey, - wrapJsFunction( - serviceImpl[schemaKey].bind(serviceImpl), - serviceSchema[schemaKey], - ), + wrapJsFunction(serviceImplValue.bind(serviceImpl), schemaValue), ] as const; }), ); diff --git a/packages/core/js-client/src/clientPeer/ClientPeer.ts b/packages/core/js-client/src/clientPeer/ClientPeer.ts index 9f7ce987..5ae5f9c3 100644 --- a/packages/core/js-client/src/clientPeer/ClientPeer.ts +++ b/packages/core/js-client/src/clientPeer/ClientPeer.ts @@ -60,7 +60,7 @@ export const makeClientPeerConfig = async ( relayConfig: { peerId: keyPair.getLibp2pPeerId(), relayAddress: relayAddress, - ...(config.connectionOptions?.dialTimeoutMs != null + ...(config.connectionOptions?.dialTimeoutMs !== undefined ? { dialTimeout: config.connectionOptions.dialTimeoutMs, } diff --git a/packages/core/js-client/src/clientPeer/__test__/client.spec.ts b/packages/core/js-client/src/clientPeer/__test__/client.spec.ts index 006673ef..4da9f978 100644 --- a/packages/core/js-client/src/clientPeer/__test__/client.spec.ts +++ b/packages/core/js-client/src/clientPeer/__test__/client.spec.ts @@ -15,7 +15,7 @@ */ import { JSONValue } from "@fluencelabs/interfaces"; -import { it, describe, expect } from "vitest"; +import { it, describe, expect, assert } from "vitest"; import { ExpirationError } from "../../jsPeer/errors.js"; import { CallServiceData } from "../../jsServiceHost/interfaces.js"; @@ -103,6 +103,7 @@ describe("FluenceClient usage test suite", () => { callback: { callback: (args): undefined => { const [val] = args; + assert(val); resolve(val); }, error: (args): undefined => { diff --git a/packages/core/js-client/src/clientPeer/__test__/connection.ts b/packages/core/js-client/src/clientPeer/__test__/connection.ts index 8554564b..07e569b1 100644 --- a/packages/core/js-client/src/clientPeer/__test__/connection.ts +++ b/packages/core/js-client/src/clientPeer/__test__/connection.ts @@ -20,6 +20,6 @@ export const nodes = [ "/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR", peerId: "12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR", }, -]; +] as const; export const RELAY = nodes[0].multiaddr; diff --git a/packages/core/js-client/src/clientPeer/checkConnection.ts b/packages/core/js-client/src/clientPeer/checkConnection.ts index 387dbc42..e7d8a3df 100644 --- a/packages/core/js-client/src/clientPeer/checkConnection.ts +++ b/packages/core/js-client/src/clientPeer/checkConnection.ts @@ -86,7 +86,7 @@ export const checkConnection = async ( const [val] = args; setTimeout(() => { - resolve(val); + resolve(val ?? null); }, 0); return {}; diff --git a/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts b/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts index efd7eb61..d7735df4 100644 --- a/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts +++ b/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts @@ -76,7 +76,7 @@ const structs = [ c: [null, 2], }, }, -]; +] as const; const labeledProduct2 = { tag: "labeledProduct", @@ -167,7 +167,7 @@ const nestedStructs = [ c: [], }, }, -]; +] as const; interface ConversionTestArgs { aqua: JSONValue; diff --git a/packages/core/js-client/src/compilerSupport/conversions.ts b/packages/core/js-client/src/compilerSupport/conversions.ts index bae59f1a..b593ba65 100644 --- a/packages/core/js-client/src/compilerSupport/conversions.ts +++ b/packages/core/js-client/src/compilerSupport/conversions.ts @@ -25,6 +25,8 @@ import { UnlabeledProductType, } from "@fluencelabs/interfaces"; +import { zip } from "../util/utils.js"; + import { ServiceImpl, UserServiceImpl } from "./types.js"; export class SchemaValidationError extends Error { @@ -103,10 +105,10 @@ export function aqua2js( throw new SchemaValidationError([], schema, "array", value); } - if (value.length === 0) { - return null; - } else { + if ("0" in value) { return aqua2js(value[0], schema.type); + } else { + return null; } } else if ( schema.tag === "scalar" || @@ -127,17 +129,23 @@ export function aqua2js( throw new SchemaValidationError([], schema, "array", value); } - return value.map((y, i) => { - return aqua2js(y, schema.items[i]); + return zip(value, schema.items).map(([v, s]) => { + return aqua2js(v, s); }); } else if (["labeledProduct", "struct"].includes(schema.tag)) { - if (typeof value !== "object" || value == null || Array.isArray(value)) { + if (typeof value !== "object" || value === null || Array.isArray(value)) { throw new SchemaValidationError([], schema, "object", value); } return Object.fromEntries( Object.entries(schema.fields).map(([key, type]) => { - const val = aqua2js(value[key], type); + let v = value[key]; + + if (v === undefined) { + v = null; + } + + const val = aqua2js(v, type); return [key, val]; }), ); @@ -159,7 +167,7 @@ export function js2aqua( return value; } else if (schema.tag === "option") { // option means 'type | null' - return value == null ? [] : [js2aqua(value, schema.type, { path })]; + return value === null ? [] : [js2aqua(value, schema.type, { path })]; } else if (schema.tag === "topType") { // topType equals to 'any' return value; @@ -181,8 +189,8 @@ export function js2aqua( throw new SchemaValidationError(path, schema, "array", value); } - return value.map((y, i) => { - return js2aqua(y, schema.items[i], { path: [...path, `[${i}]`] }); + return zip(value, schema.items).map(([v, s], i) => { + return js2aqua(v, s, { path: [...path, `[${i}]`] }); }); } else if (["labeledProduct", "struct"].includes(schema.tag)) { if (typeof value !== "object" || value === null || Array.isArray(value)) { @@ -191,7 +199,13 @@ export function js2aqua( return Object.fromEntries( Object.entries(schema.fields).map(([key, type]) => { - const val = js2aqua(value[key], type, { path: [...path, key] }); + let v = value[key]; + + if (v === undefined) { + v = null; + } + + const val = js2aqua(v, type, { path: [...path, key] }); return [key, val]; }), ); @@ -222,8 +236,8 @@ export const wrapJsFunction = ( ); } - const jsArgs = args.map((arg, i) => { - return aqua2js(arg, schemaArgs[i]); + const jsArgs = zip(args, schemaArgs).map(([arg, schemaArg]) => { + return aqua2js(arg, schemaArg); }); const returnTypeVoid = @@ -231,7 +245,8 @@ export const wrapJsFunction = ( const resultSchema = schema.codomain.tag === "unlabeledProduct" && - schema.codomain.items.length === 1 + schema.codomain.items.length === 1 && + "0" in schema.codomain.items ? schema.codomain.items[0] : schema.codomain; diff --git a/packages/core/js-client/src/compilerSupport/registerService.ts b/packages/core/js-client/src/compilerSupport/registerService.ts index 1471142f..24d59c8d 100644 --- a/packages/core/js-client/src/compilerSupport/registerService.ts +++ b/packages/core/js-client/src/compilerSupport/registerService.ts @@ -28,10 +28,12 @@ interface RegisterServiceArgs { service: ServiceImpl; } +type ServiceFunctionPair = [key: string, value: ServiceImpl[string]]; + // This function iterates on plain object or class instance functions ignoring inherited functions and prototype chain. const findAllPossibleRegisteredServiceFunctions = ( service: ServiceImpl, -): Array => { +): Array => { // eslint-disable-next-line @typescript-eslint/consistent-type-assertions const prototype = Object.getPrototypeOf(service) as ServiceImpl; @@ -41,9 +43,14 @@ const findAllPossibleRegisteredServiceFunctions = ( service = prototype; } - return Object.getOwnPropertyNames(service).filter((prop) => { - return typeof service[prop] === "function" && prop !== "constructor"; - }); + return Object.getOwnPropertyNames(service) + .map((prop) => { + return [prop, service[prop]]; + }) + .filter((entry): entry is ServiceFunctionPair => { + const [prop, value] = entry; + return typeof value === "function" && prop !== "constructor"; + }); }; export const registerService = ({ @@ -55,8 +62,7 @@ export const registerService = ({ const serviceFunctions = findAllPossibleRegisteredServiceFunctions(service); - for (const serviceFunction of serviceFunctions) { - const handler = service[serviceFunction]; + for (const [serviceFunction, handler] of serviceFunctions) { const userDefinedHandler = handler.bind(service); const serviceDescription = userHandlerService( diff --git a/packages/core/js-client/src/compilerSupport/services.ts b/packages/core/js-client/src/compilerSupport/services.ts index 16ac01e7..1a619e83 100644 --- a/packages/core/js-client/src/compilerSupport/services.ts +++ b/packages/core/js-client/src/compilerSupport/services.ts @@ -79,7 +79,7 @@ export const responseService = (resolveCallback: (val: JSONValue) => void) => { const userFunctionReturn = req.args.length === 0 ? null - : req.args.length === 1 + : req.args.length === 1 && "0" in req.args ? req.args[0] : req.args; @@ -108,7 +108,10 @@ export const errorHandlingService = ( const [err] = req.args; setTimeout(() => { - rejectCallback(err); + rejectCallback( + err ?? + "Unknown error happened when executing aqua code. No error text was passed to 'errorHandlingSrv.error' function, probably because AIR code was modified or aqua compiler didn't produce the correct call", + ); }, 0); return { diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index c2a455bb..f568a86a 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -92,7 +92,7 @@ export class RelayConnection implements IConnection { this.relayAddress = multiaddr(this.config.relayAddress); const peerId = this.relayAddress.getPeerId(); - if (peerId == null) { + if (peerId === null) { throwHasNoPeerId(this.relayAddress); } @@ -125,7 +125,7 @@ export class RelayConnection implements IConnection { streamMuxers: [yamux()], connectionEncryption: [noise()], connectionManager: { - ...(this.config.dialTimeoutMs != null + ...(this.config.dialTimeoutMs !== undefined ? { dialTimeout: this.config.dialTimeoutMs, } diff --git a/packages/core/js-client/src/ephemeral/network.ts b/packages/core/js-client/src/ephemeral/network.ts index 1958e96e..3a90aecc 100644 --- a/packages/core/js-client/src/ephemeral/network.ts +++ b/packages/core/js-client/src/ephemeral/network.ts @@ -30,10 +30,12 @@ import { logger } from "../util/logger.js"; const log = logger("ephemeral"); interface EphemeralConfig { - peers: Array<{ - peerId: PeerIdB58; - sk: string; - }>; + peers: Readonly< + Array<{ + peerId: PeerIdB58; + sk: string; + }> + >; } export const defaultConfig = { @@ -119,7 +121,7 @@ export const defaultConfig = { sk: "RbgKmG6soWW9uOi7yRedm+0Qck3f3rw6MSnDP7AcBQs=", }, ], -}; +} as const; export interface IEphemeralConnection extends IConnection { readonly selfPeerId: PeerIdB58; @@ -248,17 +250,17 @@ export class EphemeralNetwork { const peers = await Promise.all(promises); - for (let i = 0; i < peers.length; i++) { - for (let j = 0; j < i; j++) { + peers.forEach((peer, i) => { + const otherPeers = peers.slice(0, i); + + otherPeers.forEach((otherPeer, j) => { if (i === j) { - continue; + return; } - peers[i].ephemeralConnection.connectToOther( - peers[j].ephemeralConnection, - ); - } - } + peer.ephemeralConnection.connectToOther(otherPeer.ephemeralConnection); + }); + }); const startPromises = peers.map((x) => { return x.start(); diff --git a/packages/core/js-client/src/index.ts b/packages/core/js-client/src/index.ts index 3584c849..699dbf25 100644 --- a/packages/core/js-client/src/index.ts +++ b/packages/core/js-client/src/index.ts @@ -111,7 +111,7 @@ export const Fluence: FluencePublicApi = { * @returns IFluenceClient instance */ getClient: function () { - if (this.defaultClient == null) { + if (this.defaultClient === undefined) { throw new Error( "Fluence client is not initialized. Call Fluence.connect() first", ); diff --git a/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts b/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts index 189de1c3..b7b5dde1 100644 --- a/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts +++ b/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts @@ -15,7 +15,7 @@ */ import { JSONValue } from "@fluencelabs/interfaces"; -import { it, describe, expect } from "vitest"; +import { it, describe, expect, assert } from "vitest"; import { handleTimeout } from "../../particle/Particle.js"; import { registerHandlersHelper, withPeer } from "../../util/testUtils.js"; @@ -39,6 +39,7 @@ describe("Basic AVM functionality in Fluence Peer tests", () => { print: { print: (args): undefined => { const [res] = args; + assert(res); resolve(res); }, }, @@ -80,6 +81,7 @@ describe("Basic AVM functionality in Fluence Peer tests", () => { registerHandlersHelper(peer, particle, { print: { print: (args): undefined => { + assert(args[0]); res.push(args[0]); if (res.length === 2) { diff --git a/packages/core/js-client/src/jsPeer/__test__/par.spec.ts b/packages/core/js-client/src/jsPeer/__test__/par.spec.ts index c02b07c7..7a85654c 100644 --- a/packages/core/js-client/src/jsPeer/__test__/par.spec.ts +++ b/packages/core/js-client/src/jsPeer/__test__/par.spec.ts @@ -14,10 +14,8 @@ * limitations under the License. */ -import assert from "assert"; - import { JSONValue } from "@fluencelabs/interfaces"; -import { describe, expect, it } from "vitest"; +import { describe, expect, it, assert } from "vitest"; import { CallServiceData, @@ -52,6 +50,7 @@ describe("FluencePeer flow tests", () => { (req: CallServiceData) => { const [timeout, message] = req.args; assert(typeof timeout === "number"); + assert(message); return new Promise((resolve) => { setTimeout(() => { @@ -77,6 +76,7 @@ describe("FluencePeer flow tests", () => { callback: { callback1: (args): undefined => { const [val] = args; + assert(val); values.push(val); if (values.length === 2) { @@ -85,6 +85,7 @@ describe("FluencePeer flow tests", () => { }, callback2: (args): undefined => { const [val] = args; + assert(val); values.push(val); if (values.length === 2) { diff --git a/packages/core/js-client/src/marine/__test__/marine-js.spec.ts b/packages/core/js-client/src/marine/__test__/marine-js.spec.ts index f5e3c3c8..753e7e0a 100644 --- a/packages/core/js-client/src/marine/__test__/marine-js.spec.ts +++ b/packages/core/js-client/src/marine/__test__/marine-js.spec.ts @@ -18,7 +18,7 @@ import * as fs from "fs"; import * as path from "path"; import * as url from "url"; -import { it, describe, expect, beforeAll } from "vitest"; +import { it, describe, expect, beforeAll, assert } from "vitest"; import { compileAqua, CompiledFnCall, withPeer } from "../../util/testUtils.js"; @@ -46,6 +46,7 @@ describe("Marine js tests", () => { await peer.registerMarineService(wasm, "greeting"); // act + assert(aqua["call"]); const res = await aqua["call"](peer, { arg: "test" }); // assert diff --git a/packages/core/js-client/src/marine/worker/index.ts b/packages/core/js-client/src/marine/worker/index.ts index 17126c3d..232b3cb9 100644 --- a/packages/core/js-client/src/marine/worker/index.ts +++ b/packages/core/js-client/src/marine/worker/index.ts @@ -43,7 +43,7 @@ export class MarineBackgroundRunner implements IMarineHost { ) {} async hasService(serviceId: string) { - if (this.workerThread == null) { + if (this.workerThread === undefined) { throw new Error("Worker is not initialized"); } @@ -51,7 +51,7 @@ export class MarineBackgroundRunner implements IMarineHost { } async removeService(serviceId: string) { - if (this.workerThread == null) { + if (this.workerThread === undefined) { throw new Error("Worker is not initialized"); } @@ -59,7 +59,7 @@ export class MarineBackgroundRunner implements IMarineHost { } async start(): Promise { - if (this.workerThread != null) { + if (this.workerThread !== undefined) { throw new Error("Worker thread already initialized"); } @@ -69,7 +69,7 @@ export class MarineBackgroundRunner implements IMarineHost { const logfn: LogFunction = (message) => { const serviceLogger = this.loggers.get(message.service); - if (serviceLogger == null) { + if (serviceLogger === undefined) { return; } @@ -86,7 +86,7 @@ export class MarineBackgroundRunner implements IMarineHost { serviceModule: ArrayBuffer | SharedArrayBuffer, serviceId: string, ): Promise { - if (this.workerThread == null) { + if (this.workerThread === undefined) { throw new Error("Worker is not initialized"); } @@ -100,7 +100,7 @@ export class MarineBackgroundRunner implements IMarineHost { args: Array | Record, callParams?: CallParameters, ): Promise { - if (this.workerThread == null) { + if (this.workerThread === undefined) { throw new Error("Worker is not initialized"); } @@ -113,7 +113,7 @@ export class MarineBackgroundRunner implements IMarineHost { } async stop(): Promise { - if (this.workerThread == null) { + if (this.workerThread === undefined) { return; } diff --git a/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts b/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts index ee931eed..5ac125c7 100644 --- a/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts +++ b/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts @@ -14,11 +14,9 @@ * limitations under the License. */ -import assert from "assert"; - import { JSONArray } from "@fluencelabs/interfaces"; import { toUint8Array } from "js-base64"; -import { describe, expect, it, test } from "vitest"; +import { describe, expect, it, test, assert } from "vitest"; import { CallServiceData } from "../../jsServiceHost/interfaces.js"; import { KeyPair } from "../../keypair/index.js"; @@ -155,7 +153,8 @@ describe("Tests for default handler", () => { }; // act - const fn = builtInServices[req.serviceId][req.fnName]; + const fn = builtInServices[req.serviceId]?.[req.fnName]; + assert(fn); const res = await fn(req); // Our test cases above depend on node error message. In node 20 error message for JSON.parse has changed. @@ -192,7 +191,8 @@ describe("Tests for default handler", () => { }; // act - const fn = builtInServices[req.serviceId][req.fnName]; + const fn = builtInServices[req.serviceId]?.[req.fnName]; + assert(fn); const res = await fn(req); // assert diff --git a/packages/core/js-client/src/services/__test__/sigService.spec.ts b/packages/core/js-client/src/services/__test__/sigService.spec.ts index ad80de14..8cbbc5a6 100644 --- a/packages/core/js-client/src/services/__test__/sigService.spec.ts +++ b/packages/core/js-client/src/services/__test__/sigService.spec.ts @@ -17,7 +17,7 @@ import * as path from "path"; import * as url from "url"; -import { it, describe, expect, beforeAll } from "vitest"; +import { it, describe, expect, beforeAll, assert } from "vitest"; import { registerService } from "../../compilerSupport/registerService.js"; import { KeyPair } from "../../keypair/index.js"; @@ -72,6 +72,7 @@ describe("Sig service test suite", () => { customSig.securityGuard = allowServiceFn("data", "provide_data"); + assert(aqua["callSig"]); const result = await aqua["callSig"](peer, { sigId: "CustomSig" }); expect(result).toHaveProperty("success", true); @@ -116,6 +117,7 @@ describe("Sig service test suite", () => { customSig.securityGuard = allowServiceFn("wrong", "wrong"); + assert(aqua["callSig"]); const result = await aqua["callSig"](peer, { sigId: "CustomSig" }); expect(result).toHaveProperty("success", false); }); @@ -137,6 +139,7 @@ describe("Sig service test suite", () => { }, }); + assert(aqua["callSig"]); const callAsSigRes = await aqua["callSig"](peer, { sigId: "sig" }); const callAsPeerIdRes = await aqua["callSig"](peer, { diff --git a/packages/core/js-client/src/services/__test__/srv.spec.ts b/packages/core/js-client/src/services/__test__/srv.spec.ts index caaa3054..0d0d5fc4 100644 --- a/packages/core/js-client/src/services/__test__/srv.spec.ts +++ b/packages/core/js-client/src/services/__test__/srv.spec.ts @@ -17,7 +17,7 @@ import * as path from "path"; import * as url from "url"; -import { it, describe, expect, beforeAll } from "vitest"; +import { it, describe, expect, beforeAll, assert } from "vitest"; import { compileAqua, CompiledFnCall, withPeer } from "../../util/testUtils.js"; import { registerNodeUtils } from "../_aqua/node-utils.js"; @@ -42,6 +42,7 @@ describe("Srv service test suite", () => { const wasm = path.join(__dirname, "../../../data_for_test/greeting.wasm"); // act + assert(aqua["happy_path"]); const res = await aqua["happy_path"](peer, { file_path: wasm }); // assert @@ -57,6 +58,7 @@ describe("Srv service test suite", () => { const wasm = path.join(__dirname, "../../../data_for_test/greeting.wasm"); // act + assert(aqua["list_services"]); const res = await aqua["list_services"](peer, { file_path: wasm }); // assert @@ -72,6 +74,8 @@ describe("Srv service test suite", () => { const wasm = path.join(__dirname, "../../../data_for_test/greeting.wasm"); // act + assert(aqua["service_removed"]); + const res = await aqua["service_removed"](peer, { file_path: wasm, }); @@ -87,6 +91,7 @@ describe("Srv service test suite", () => { registerNodeUtils(peer, "node_utils", new NodeUtils(peer)); // act + assert(aqua["file_not_found"]); const res = await aqua["file_not_found"](peer, {}); // assert @@ -102,6 +107,7 @@ describe("Srv service test suite", () => { registerNodeUtils(peer, "node_utils", new NodeUtils(peer)); // act + assert(aqua["removing_non_exiting"]); const res = await aqua["removing_non_exiting"](peer, {}); // assert diff --git a/packages/core/js-client/src/services/builtins.ts b/packages/core/js-client/src/services/builtins.ts index 0ce9929d..ed331712 100644 --- a/packages/core/js-client/src/services/builtins.ts +++ b/packages/core/js-client/src/services/builtins.ts @@ -109,7 +109,7 @@ const parseWithSchema = ( if (result.success) { return [result.data, null]; } else { - return [null, result.error.errors[0].message]; + return [null, result.error.errors[0]?.message ?? "Unknown error"]; } }; @@ -141,7 +141,7 @@ const withSchema: withSchema = (schema: T) => { return (req) => { const [value, message] = parseWithSchema(schema, req); - if (message != null) { + if (message !== null) { return error(message); } @@ -306,7 +306,7 @@ export const builtInServices: Record< }), identity: withSchema(z.array(jsonSchema).max(1))((args) => { - return success(args.length === 0 ? {} : args[0]); + return success("0" in args ? args[0] : {}); }), concat: withSchema(z.array(z.array(z.any())))((args) => { diff --git a/packages/core/js-client/src/services/securityGuard.ts b/packages/core/js-client/src/services/securityGuard.ts index 2ebac50b..443753ff 100644 --- a/packages/core/js-client/src/services/securityGuard.ts +++ b/packages/core/js-client/src/services/securityGuard.ts @@ -33,8 +33,8 @@ export const allowTetraplet = ( pred: (tetraplet: SecurityTetraplet) => boolean, ): SecurityGuard => { return (params) => { - const t = params.tetraplets[0][0]; - return pred(t); + const t = params.tetraplets[0]?.[0]; + return t !== undefined && pred(t); }; }; diff --git a/packages/core/js-client/src/util/libp2pUtils.ts b/packages/core/js-client/src/util/libp2pUtils.ts index 0ec7ab45..50d979d7 100644 --- a/packages/core/js-client/src/util/libp2pUtils.ts +++ b/packages/core/js-client/src/util/libp2pUtils.ts @@ -26,7 +26,7 @@ export function relayOptionToMultiaddr(relay: RelayOptions): Multiaddr { const peerId = ma.getPeerId(); - if (peerId == null) { + if (peerId === null) { throwHasNoPeerId(ma); } diff --git a/packages/core/js-client/src/util/utils.ts b/packages/core/js-client/src/util/utils.ts index 44ea44a5..c801eab6 100644 --- a/packages/core/js-client/src/util/utils.ts +++ b/packages/core/js-client/src/util/utils.ts @@ -33,3 +33,19 @@ export const getErrorMessage = (error: unknown) => { return String(error); }; + +export function zip(arr1: Array, arr2: Array): Array<[A, B]> { + if (arr1.length !== arr2.length) { + throw new Error(`Array length doesn't match`); + } + + const arr = new Array<[A, B]>(arr1.length); + + for (let i = 0; i < arr1.length; i++) { + // Length has been checked above + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + arr[i] = [arr1[i]!, arr2[i]!]; + } + + return arr; +} diff --git a/packages/core/marine-worker/src/index.ts b/packages/core/marine-worker/src/index.ts index 44569f8e..e94e1f47 100644 --- a/packages/core/marine-worker/src/index.ts +++ b/packages/core/marine-worker/src/index.ts @@ -74,7 +74,7 @@ const toExpose = { serviceId: string, envs?: Env, ): Promise => { - if (controlModule == null) { + if (controlModule === undefined) { throw new Error( "MarineJS is not initialized. To initialize call `init` function", ); @@ -135,7 +135,7 @@ const toExpose = { ) => { const srv = marineServices.get(serviceId); - if (srv == null) { + if (srv === undefined) { throw new Error(`service with id=${serviceId} not found`); } diff --git a/packages/core/npm-aqua-compiler/package.json b/packages/core/npm-aqua-compiler/package.json new file mode 100644 index 00000000..fcb8121a --- /dev/null +++ b/packages/core/npm-aqua-compiler/package.json @@ -0,0 +1,29 @@ +{ + "type": "module", + "name": "@fluencelabs/npm-aqua-compiler", + "version": "0.0.0", + "description": "Tool for converting npm imports to aqua compiler input", + "types": "./dist/imports.d.ts", + "exports": { + ".": "./dist/imports.js" + }, + "scripts": { + "test": "npm i --prefix ./test/transitive-deps/project && vitest run", + "build": "tsc" + }, + "files": [ + "dist" + ], + "keywords": [], + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "treeverse": "3.0.0" + }, + "devDependencies": { + "@types/npmcli__arborist": "5.6.5", + "@types/treeverse": "3.0.4", + "vitest": "0.34.6" + } +} diff --git a/packages/core/npm-aqua-compiler/src/imports.spec.ts b/packages/core/npm-aqua-compiler/src/imports.spec.ts new file mode 100644 index 00000000..9dfbc583 --- /dev/null +++ b/packages/core/npm-aqua-compiler/src/imports.spec.ts @@ -0,0 +1,115 @@ +/** + * Copyright 2023 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { join } from "path"; +import { fileURLToPath } from "url"; + +import { assert, describe, expect, it } from "vitest"; + +import { gatherImportsFromNpm } from "./imports.js"; + +describe("imports", () => { + /** + * NOTE: This test expects that `npm i` is run + * inside `./__test__/data/transitive-deps/project` folder + */ + it("should resolve transitive dependencies", async () => { + const npmProjectDirPath = "./test/transitive-deps/project"; + const aquaToCompileDirPath = "./test/transitive-deps/aqua-project"; + const globalImports = ["./.fluence/aqua"]; + + const expectedResolution: Record< + string, + Record + > = { + [aquaToCompileDirPath]: { + "": globalImports, + A: "./A", + B: "./B", + }, + "./A": { + C: "./C", + D: "./D", + }, + "./B": { + C: "./B/C", + D: "./B/D", + }, + "./C": { + D: "./C/D", + }, + "./B/C": { + D: "./B/C/D", + }, + }; + + const prefix = join( + fileURLToPath(new URL("./", import.meta.url)), + "..", + "test", + "transitive-deps", + "project", + ); + + const buildResolutionKey = (str: string) => { + return ( + "./" + + str + .slice(prefix.length) + .split("/node_modules/") + .filter(Boolean) + .join("/") + ); + }; + + const imports = await gatherImportsFromNpm({ + npmProjectDirPath, + aquaToCompileDirPath, + globalImports, + }); + + expect(Object.keys(imports).length).toBe( + Object.keys(expectedResolution).length, + ); + + Object.entries(imports).forEach(([key, value]) => { + const resolutionKey = + key === aquaToCompileDirPath ? key : buildResolutionKey(key); + + const resolutionValues = expectedResolution[resolutionKey]; + + assert(resolutionValues); + + expect(Object.keys(value).length).toBe( + Object.keys(resolutionValues).length, + ); + + for (const [dep, path] of Object.entries(value)) { + if (Array.isArray(path)) { + expect(dep).toBe(""); + expect(expectedResolution[resolutionKey]).toHaveProperty(dep, path); + + continue; + } + + expect(expectedResolution[resolutionKey]).toHaveProperty( + dep, + buildResolutionKey(path), + ); + } + }); + }); +}); diff --git a/packages/core/npm-aqua-compiler/src/imports.ts b/packages/core/npm-aqua-compiler/src/imports.ts new file mode 100644 index 00000000..f60546bb --- /dev/null +++ b/packages/core/npm-aqua-compiler/src/imports.ts @@ -0,0 +1,92 @@ +/** + * Copyright 2023 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Arborist from "@npmcli/arborist"; +import { breadth } from "treeverse"; + +export interface GatherImportsArg { + npmProjectDirPath: string; + aquaToCompileDirPath?: string; // Default: npmProjectDirPath + globalImports?: string[]; +} + +export type GatherImportsResult = Record< + string, + Record +>; + +export async function gatherImportsFromNpm({ + npmProjectDirPath, + aquaToCompileDirPath, + globalImports = [], +}: GatherImportsArg): Promise { + const arborist = new Arborist({ path: npmProjectDirPath }); + const tree = await arborist.loadActual(); + + /** + * Traverse dependency tree to construct map + * (real path of a package) -> (real paths of its immediate dependencies) + */ + const result: GatherImportsResult = {}; + + breadth({ + tree, + getChildren(node) { + const deps: Arborist.Node[] = []; + + for (const edge of node.edgesOut.values()) { + // Skip dependencies that are not installed. + + // Looks like Arborist type is incorrect here, so it's possible to have null here + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (edge.to === null) { + continue; + } + + // NOTE: Any errors in edge are ignored. + const dep = edge.to; + + // Gather dependencies to traverse them. + deps.push(dep); + + // Root node should have top-level property pointed to aqua dependency folder + if (node.isRoot) { + const aquaDepPath = aquaToCompileDirPath ?? npmProjectDirPath; + + result[aquaDepPath] = { + ...(result[aquaDepPath] ?? + (globalImports.length > 0 + ? { + "": globalImports, + } + : {})), + [dep.name]: dep.realpath, + }; + } else { + // Gather dependencies real paths. + result[node.realpath] = { + ...(result[node.realpath] ?? {}), + [dep.name]: dep.realpath, + }; + } + } + + return deps; + }, + }); + + return result; +} diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/A-0.1.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/A-0.1.0.tgz new file mode 100644 index 00000000..f47f2dbf Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/A-0.1.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/B-0.1.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/B-0.1.0.tgz new file mode 100644 index 00000000..a5d40df9 Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/B-0.1.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.1.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.1.0.tgz new file mode 100644 index 00000000..7899206c Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.1.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.2.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.2.0.tgz new file mode 100644 index 00000000..46b74bb8 Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/C-0.2.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.1.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.1.0.tgz new file mode 100644 index 00000000..f304c0ea Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.1.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.2.0.tgz b/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.2.0.tgz new file mode 100644 index 00000000..7427d45b Binary files /dev/null and b/packages/core/npm-aqua-compiler/test/transitive-deps/D-0.2.0.tgz differ diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/project/main.aqua b/packages/core/npm-aqua-compiler/test/transitive-deps/project/main.aqua new file mode 100644 index 00000000..b36fb4cd --- /dev/null +++ b/packages/core/npm-aqua-compiler/test/transitive-deps/project/main.aqua @@ -0,0 +1,8 @@ +use "B.aqua" + +func versionAC() -> string: + <- A.versionC() + +func versionBC() -> string: + <- B.versionC() + diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/project/package-lock.json b/packages/core/npm-aqua-compiler/test/transitive-deps/project/package-lock.json new file mode 100644 index 00000000..79eceb9f --- /dev/null +++ b/packages/core/npm-aqua-compiler/test/transitive-deps/project/package-lock.json @@ -0,0 +1,70 @@ +{ + "name": "project", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "project", + "version": "0.1.0", + "dependencies": { + "A": "file:../A-0.1.0.tgz", + "B": "file:../B-0.1.0.tgz" + } + }, + "node_modules/A": { + "version": "0.1.0", + "resolved": "file:../A-0.1.0.tgz", + "integrity": "sha512-H0nhbQVQxPm3VwXYiePLJ0oyHa2FxPNNPjOcTdz3YWvIoE0/dZFJ1yrqig7fkrETYEYfLuVJaN0yg1BX/HAScg==", + "dependencies": { + "C": "file:./C-0.2.0.tgz", + "D": "file:./D-0.1.0.tgz" + } + }, + "node_modules/B": { + "version": "0.1.0", + "resolved": "file:../B-0.1.0.tgz", + "integrity": "sha512-u6n6V5KlxIN/GwRQt82gZQAPwYi0OzqQ2wr8ufmygreLK3fPIfO49f13qagbGXaYiRxN9effXaPqZlMIyTygng==", + "dependencies": { + "C": "file:./C-0.1.0.tgz", + "D": "file:./D-0.2.0.tgz" + } + }, + "node_modules/B/node_modules/C": { + "version": "0.1.0", + "resolved": "file:../C-0.1.0.tgz", + "integrity": "sha512-zvzWgHLm+ptWwysP+dJItnogVSca/jvHegWmwi6NmmHFO/wTqlGrMPnC2dEkpXDJBU4X1bUjevFh0q3Xe9e0MA==", + "dependencies": { + "D": "file:./D-0.1.0.tgz" + } + }, + "node_modules/B/node_modules/C/node_modules/D": { + "version": "0.1.0", + "resolved": "file:../D-0.1.0.tgz", + "integrity": "sha512-1rlKmuyzHSGTt9tBhEBY3j7gZvMBg0LnZMogZSucmX4gww4l0+HPQwBIPjJpqOspE2ND8PcLymQoiw06xWXn0g==" + }, + "node_modules/B/node_modules/D": { + "version": "0.2.0", + "resolved": "file:../D-0.2.0.tgz", + "integrity": "sha512-7h1TUU8j60q6BZ0Wq/xDZOUf6iS0S4SgL/lgXOaiyxN76q7ld8Rx/qIxtGKmrWh65v5cjvAG5asbMEkXb6DuYQ==" + }, + "node_modules/C": { + "version": "0.2.0", + "resolved": "file:../C-0.2.0.tgz", + "integrity": "sha512-uNqb8p69kuombZsb3xI/ygeL94WHpwkGR9/GRWgdg+01iKGsRMaZgL5up0UG7D/9DW7NQBozZG8ITPQ8DLgwSQ==", + "dependencies": { + "D": "file:./D-0.2.0.tgz" + } + }, + "node_modules/C/node_modules/D": { + "version": "0.2.0", + "resolved": "file:../D-0.2.0.tgz", + "integrity": "sha512-7h1TUU8j60q6BZ0Wq/xDZOUf6iS0S4SgL/lgXOaiyxN76q7ld8Rx/qIxtGKmrWh65v5cjvAG5asbMEkXb6DuYQ==" + }, + "node_modules/D": { + "version": "0.1.0", + "resolved": "file:../D-0.1.0.tgz", + "integrity": "sha512-1rlKmuyzHSGTt9tBhEBY3j7gZvMBg0LnZMogZSucmX4gww4l0+HPQwBIPjJpqOspE2ND8PcLymQoiw06xWXn0g==" + } + } +} diff --git a/packages/core/npm-aqua-compiler/test/transitive-deps/project/package.json b/packages/core/npm-aqua-compiler/test/transitive-deps/project/package.json new file mode 100644 index 00000000..4ad85bfe --- /dev/null +++ b/packages/core/npm-aqua-compiler/test/transitive-deps/project/package.json @@ -0,0 +1,8 @@ +{ + "name": "project", + "version": "0.1.0", + "dependencies": { + "A": "file:../A-0.1.0.tgz", + "B": "file:../B-0.1.0.tgz" + } +} diff --git a/packages/core/npm-aqua-compiler/tsconfig.json b/packages/core/npm-aqua-compiler/tsconfig.json new file mode 100644 index 00000000..7c35d272 --- /dev/null +++ b/packages/core/npm-aqua-compiler/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "resolveJsonModule": true, + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "src/**/__test__"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d8f7be8..182e1b02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -319,7 +319,7 @@ importers: version: 4.4.11(@types/node@20.7.0) vite-tsconfig-paths: specifier: 4.0.3 - version: 4.0.3(typescript@5.1.6)(vite@4.4.11) + version: 4.0.3(vite@4.4.11) vitest: specifier: 0.34.6 version: 0.34.6 @@ -367,6 +367,25 @@ importers: specifier: 0.34.6 version: 0.34.6 + packages/core/npm-aqua-compiler: + dependencies: + '@npmcli/arborist': + specifier: ^7.2.1 + version: 7.2.2 + treeverse: + specifier: 3.0.0 + version: 3.0.0 + devDependencies: + '@types/npmcli__arborist': + specifier: 5.6.5 + version: 5.6.5 + '@types/treeverse': + specifier: 3.0.4 + version: 3.0.4 + vitest: + specifier: 0.34.6 + version: 0.34.6 + packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -3043,8 +3062,6 @@ packages: uint8arraylist: 2.4.3 uint8arrays: 4.0.6 wherearewe: 2.0.1 - transitivePeerDependencies: - - supports-color dev: false /@chainsafe/libp2p-yamux@6.0.1: @@ -3753,6 +3770,22 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@isaacs/string-locale-compare@1.1.0: + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + dev: false + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -4080,8 +4113,6 @@ packages: protons-runtime: 5.0.2(uint8arraylist@2.4.3) uint8arraylist: 2.4.3 uint8arrays: 4.0.6 - transitivePeerDependencies: - - supports-color dev: false /@libp2p/identify@1.0.4: @@ -4195,8 +4226,6 @@ packages: protons-runtime: 5.0.2(uint8arraylist@2.4.3) uint8arraylist: 2.4.3 uint8arrays: 4.0.6 - transitivePeerDependencies: - - supports-color dev: false /@libp2p/peer-id@4.0.1: @@ -4389,6 +4418,180 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@npm/types@1.0.2: + resolution: {integrity: sha512-KXZccTDEnWqNrrx6JjpJKU/wJvNeg9BDgjS0XhmlZab7br921HtyVbsYzJr4L+xIvjdJ20Wh9dgxgCI2a5CEQw==} + dev: true + + /@npmcli/agent@2.2.0: + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@npmcli/arborist@7.2.2: + resolution: {integrity: sha512-dIIzyhy1zS2dYPS8bdM/8qA8W2evQE9KENBxVOhFthm/2RKqf2ninRWQc8xfc5f1gsiTxTP20Y9flIfziHfSKA==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/fs': 3.1.0 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/map-workspaces': 3.0.4 + '@npmcli/metavuln-calculator': 7.0.0 + '@npmcli/name-from-folder': 2.0.0 + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.0.0 + '@npmcli/query': 3.0.1 + '@npmcli/run-script': 7.0.2 + bin-links: 4.0.3 + cacache: 18.0.1 + common-ancestor-path: 1.0.1 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + json-stringify-nice: 1.1.4 + minimatch: 9.0.3 + nopt: 7.2.0 + npm-install-checks: 6.3.0 + npm-package-arg: 11.0.1 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + npmlog: 7.0.1 + pacote: 17.0.5 + parse-conflict-json: 3.0.1 + proc-log: 3.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 1.0.2 + read-package-json-fast: 3.0.2 + semver: 7.5.4 + ssri: 10.0.5 + treeverse: 3.0.0 + walk-up-path: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: false + + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: false + + /@npmcli/git@5.0.3: + resolution: {integrity: sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.0 + lru-cache: 10.1.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: false + + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: false + + /@npmcli/map-workspaces@3.0.4: + resolution: {integrity: sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/name-from-folder': 2.0.0 + glob: 10.3.10 + minimatch: 9.0.3 + read-package-json-fast: 3.0.2 + dev: false + + /@npmcli/metavuln-calculator@7.0.0: + resolution: {integrity: sha512-Pw0tyX02VkpqlIQlG2TeiJNsdrecYeUU0ubZZa9pi3N37GCsxI+en43u4hYFdq+eSx1A9a9vwFAUyqEtKFsbHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + cacache: 18.0.1 + json-parse-even-better-errors: 3.0.1 + pacote: 17.0.5 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + - supports-color + dev: false + + /@npmcli/name-from-folder@2.0.0: + resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.3 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + dev: false + + /@npmcli/promise-spawn@7.0.0: + resolution: {integrity: sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: false + + /@npmcli/query@3.0.1: + resolution: {integrity: sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + postcss-selector-parser: 6.0.13 + dev: false + + /@npmcli/run-script@7.0.2: + resolution: {integrity: sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 7.0.0 + node-gyp: 10.0.1 + read-package-json-fast: 3.0.2 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(webpack-dev-server@4.15.1)(webpack@5.87.0): resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} engines: {node: '>= 10.13'} @@ -4572,6 +4775,39 @@ packages: resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} dev: false + /@sigstore/bundle@2.1.0: + resolution: {integrity: sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: false + + /@sigstore/protobuf-specs@0.2.1: + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /@sigstore/sign@2.2.0: + resolution: {integrity: sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@sigstore/tuf@2.2.0: + resolution: {integrity: sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /@sinclair/typebox@0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: false @@ -4807,6 +5043,19 @@ packages: resolution: {integrity: sha512-jt4jIsWKvUvuY6adJnQJlb/UR7DdjC8CjHI/OaSQruj2yX9/K6+KOvDt/vD6udqos/FUk5Op66CvYT7TBLYO5Q==} dev: true + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: false + + /@tufjs/models@2.0.0: + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + dev: false + /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: false @@ -4859,6 +5108,12 @@ packages: base-x: 3.0.9 dev: true + /@types/cacache@17.0.2: + resolution: {integrity: sha512-IrqHzVX2VRMDQQKa7CtKRnuoCLdRJiLW6hWU+w7i7+AaQ0Ii5bKwJxd5uRK4zBCyrHd3tG6G8zOm2LplxbSfQg==} + dependencies: + '@types/node': 20.7.0 + dev: true + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: @@ -4991,6 +5246,13 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true + /@types/node-fetch@2.6.9: + resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} + dependencies: + '@types/node': 20.7.0 + form-data: 4.0.0 + dev: true + /@types/node@16.18.12: resolution: {integrity: sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==} dev: false @@ -5005,6 +5267,48 @@ packages: /@types/node@20.7.0: resolution: {integrity: sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==} + /@types/npm-package-arg@6.1.4: + resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} + dev: true + + /@types/npm-registry-fetch@8.0.7: + resolution: {integrity: sha512-db9iBh7kDDg4lRT4k4XZ6IiecTEgFCID4qk+VDVPbtzU855q3KZLCn08ATr4H27ntRJVhulQ7GWjl24H42x96w==} + dependencies: + '@types/node': 20.7.0 + '@types/node-fetch': 2.6.9 + '@types/npm-package-arg': 6.1.4 + '@types/npmlog': 7.0.0 + '@types/ssri': 7.1.5 + dev: true + + /@types/npmcli__arborist@5.6.5: + resolution: {integrity: sha512-T5ouyikyoizjmfoi3DQp66YwefKksJpolZ6Wf4Nxz6c+vvBajBjYASqngE1/99eW/O5wpnv7BwdxEmZC8R3M8Q==} + dependencies: + '@npm/types': 1.0.2 + '@types/cacache': 17.0.2 + '@types/npmcli__package-json': 4.0.3 + '@types/pacote': 11.1.8 + dev: true + + /@types/npmcli__package-json@4.0.3: + resolution: {integrity: sha512-FafZwr1SnJEHlyPJeT5IRvsEjhvm3+dCNdy1OsAJZVrIKT0jNi3sFLbKRqVrHnnXEVI1rNljFGVEcuNG4PMuJw==} + dev: true + + /@types/npmlog@7.0.0: + resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} + dependencies: + '@types/node': 20.7.0 + dev: true + + /@types/pacote@11.1.8: + resolution: {integrity: sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==} + dependencies: + '@types/node': 20.7.0 + '@types/npm-registry-fetch': 8.0.7 + '@types/npmlog': 7.0.0 + '@types/ssri': 7.1.5 + dev: true + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false @@ -5092,6 +5396,12 @@ packages: '@types/node': 20.7.0 dev: false + /@types/ssri@7.1.5: + resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} + dependencies: + '@types/node': 20.7.0 + dev: true + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: false @@ -5102,6 +5412,10 @@ packages: '@types/jest': 28.1.0 dev: false + /@types/treeverse@3.0.4: + resolution: {integrity: sha512-zvBgUII0QhlbQXfOs5L8z3J+UGVWlhNAdZS8uByRkU/w3hMewRa1t9jRAr1qJUkGNcr60w6iws6h/EnrqVBj1w==} + dev: true + /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false @@ -5587,6 +5901,18 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: false + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + /abortable-iterator@5.0.1: resolution: {integrity: sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -5645,11 +5971,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} - engines: {node: '>=0.4.0'} - hasBin: true - /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -5671,6 +5992,23 @@ packages: transitivePeerDependencies: - supports-color + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: false + /ajv-formats@2.1.1(ajv@8.12.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -5754,6 +6092,11 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false @@ -5771,6 +6114,18 @@ packages: picomatch: 2.3.1 dev: false + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /are-we-there-yet@4.0.1: + resolution: {integrity: sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 4.4.2 + dev: false + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -5932,7 +6287,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} @@ -6266,6 +6620,16 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false + /bin-links@4.0.3: + resolution: {integrity: sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + cmd-shim: 6.0.2 + npm-normalize-package-bin: 3.0.1 + read-cmd-shim: 4.0.0 + write-file-atomic: 5.0.1 + dev: false + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -6466,6 +6830,13 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -6475,6 +6846,12 @@ packages: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: false + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -6496,6 +6873,24 @@ packages: engines: {node: '>=8'} dev: true + /cacache@18.0.1: + resolution: {integrity: sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.1.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -6625,6 +7020,11 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -6662,6 +7062,11 @@ packages: source-map: 0.6.1 dev: false + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: false + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -6670,6 +7075,11 @@ packages: wrap-ansi: 7.0.0 dev: false + /cmd-shim@6.0.2: + resolution: {integrity: sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -6705,6 +7115,11 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false @@ -6718,7 +7133,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6739,6 +7153,10 @@ packages: engines: {node: '>= 12'} dev: false + /common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + dev: false + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: false @@ -6790,6 +7208,10 @@ packages: resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} dev: true + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false + /constants-browserify@1.0.0: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} dev: true @@ -7336,6 +7758,9 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false /depd@1.1.2: @@ -7555,6 +7980,10 @@ packages: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false @@ -7615,6 +8044,14 @@ packages: engines: {node: '>= 0.8'} dev: false + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: false + optional: true + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -7632,6 +8069,15 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: false + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: false + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: false + /err-code@3.0.1: resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} @@ -8336,6 +8782,11 @@ packages: resolution: {integrity: sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==} dev: false + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -8384,6 +8835,10 @@ packages: jest-message-util: 27.5.1 dev: false + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: false + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -8594,6 +9049,14 @@ packages: dependencies: is-callable: 1.2.7 + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.50.0)(typescript@5.1.6)(webpack@5.87.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} @@ -8635,6 +9098,15 @@ packages: mime-types: 2.1.35 dev: false + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -8671,6 +9143,20 @@ packages: universalify: 2.0.0 dev: false + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: false + + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: false + /fs-monkey@0.3.3: resolution: {integrity: sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw==} dev: false @@ -8714,6 +9200,20 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + /gauge@5.0.1: + resolution: {integrity: sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 4.1.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -8788,6 +9288,18 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: false + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: false + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -8918,6 +9430,10 @@ packages: dependencies: has-symbols: 1.0.3 + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -8957,6 +9473,13 @@ packages: engines: {node: '>= 6.0.0'} dev: false + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.1.0 + dev: false + /hotscript@1.0.13: resolution: {integrity: sha512-C++tTF1GqkGYecL+2S1wJTfoH6APGAsbb7PAWQ3iVIwgG/EFseAfEVOKFgAFq4yK3+6j1EjUD4UQ9dRJHX/sSQ==} dev: true @@ -9029,6 +9552,10 @@ packages: entities: 2.2.0 dev: false + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: false @@ -9069,6 +9596,16 @@ packages: - supports-color dev: false + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /http-proxy-middleware@2.0.6(@types/express@4.17.17): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} @@ -9134,6 +9671,16 @@ packages: transitivePeerDependencies: - supports-color + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -9175,6 +9722,13 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + /ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: false + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -9252,6 +9806,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -9350,6 +9908,10 @@ packages: dependencies: is-extglob: 2.1.1 + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: false + /is-loopback-addr@2.0.1: resolution: {integrity: sha512-SEsepLbdWFb13B6U0tt6dYcUM0iK/U7XOC43N70Z4Qb88WpNtp+ospyNI9ddpqncs7Z7brAEsVBTQpaqSNntIw==} dev: false @@ -9498,6 +10060,11 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: false + /iso-url@1.2.1: resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} engines: {node: '>=12'} @@ -9694,6 +10261,15 @@ packages: - utf-8-validate dev: false + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + /jake@10.8.7: resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} engines: {node: '>=10'} @@ -10334,6 +10910,11 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -10348,6 +10929,10 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /json-stringify-nice@1.1.4: + resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + dev: false + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -10372,6 +10957,11 @@ packages: graceful-fs: 4.2.11 dev: false + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: false + /jsonpointer@5.0.1: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} @@ -10385,6 +10975,14 @@ packages: object.assign: 4.1.4 dev: false + /just-diff-apply@5.5.0: + resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} + dev: false + + /just-diff@6.0.2: + resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} + dev: false + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -10567,6 +11165,11 @@ packages: tslib: 2.5.3 dev: false + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: false + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -10621,6 +11224,25 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/agent': 2.2.0 + cacache: 18.0.1 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: false + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: @@ -10709,7 +11331,6 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: false /mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} @@ -10723,7 +11344,6 @@ packages: engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: false /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -10769,9 +11389,87 @@ packages: brace-expansion: 2.0.1 dev: false + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + /minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + minipass: 7.0.4 + dev: false + + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: false + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: false + + /minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: false + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: false + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: false + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: false + /mitt@3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} dev: true @@ -10786,6 +11484,12 @@ packages: dependencies: minimist: 1.2.8 + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -10903,6 +11607,25 @@ packages: engines: {node: '>= 6.13.0'} dev: false + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.5.4 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: false @@ -10948,6 +11671,24 @@ packages: vm-browserify: 1.1.2 dev: true + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -10963,6 +11704,67 @@ packages: engines: {node: '>=10'} dev: false + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: false + + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: false + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: false + + /npm-packlist@8.0.1: + resolution: {integrity: sha512-MQpL27ZrsJQ2kiAuQPpZb5LtJwydNRnI15QWXsf3WHERu4rzjRj6Zju/My2fov7tLuu3Gle/uoIX/DDZ3u4O4Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.4 + dev: false + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.5.4 + dev: false + + /npm-registry-fetch@16.1.0: + resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -10970,6 +11772,16 @@ packages: path-key: 3.1.1 dev: false + /npmlog@7.0.1: + resolution: {integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + are-we-there-yet: 4.0.1 + console-control-strings: 1.1.0 + gauge: 5.0.1 + set-blocking: 2.0.0 + dev: false + /nth-check@1.0.2: resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} dependencies: @@ -11182,6 +11994,13 @@ packages: dependencies: p-limit: 3.1.0 + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: false + /p-queue@7.4.1: resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} engines: {node: '>=12'} @@ -11213,6 +12032,34 @@ packages: engines: {node: '>=6'} dev: false + /pacote@17.0.5: + resolution: {integrity: sha512-TAE0m20zSDMnchPja9vtQjri19X3pZIyRpm2TJVeI+yU42leJBBDTRYhOcWFsPhaMxf+3iwQkFiKz16G9AEeeA==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 5.0.3 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.0 + '@npmcli/run-script': 7.0.2 + cacache: 18.0.1 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.1 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.1.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: false + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -11239,6 +12086,15 @@ packages: safe-buffer: 5.2.1 dev: true + /parse-conflict-json@3.0.1: + resolution: {integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + just-diff: 6.0.2 + just-diff-apply: 5.5.0 + dev: false + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -11291,6 +12147,14 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: false + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false @@ -12238,6 +13102,11 @@ packages: netmask: 2.0.2 dev: false + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -12245,13 +13114,37 @@ packages: /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: true /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: true + /promise-all-reject-late@1.0.1: + resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} + dev: false + + /promise-call-limit@1.0.2: + resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + dev: false + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: false + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: false + /promise@8.3.0: resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: @@ -12659,6 +13552,29 @@ packages: pify: 2.3.0 dev: false + /read-cmd-shim@4.0.0: + resolution: {integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + dev: false + + /read-package-json@7.0.0: + resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + dev: false + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -12679,6 +13595,17 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.4.2: + resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -12866,6 +13793,11 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: false + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -13153,6 +14085,10 @@ packages: - supports-color dev: false + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -13211,6 +14147,23 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /sigstore@2.1.0: + resolution: {integrity: sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 2.2.0 + '@sigstore/tuf': 2.2.0 + transitivePeerDependencies: + - supports-color + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: false @@ -13224,6 +14177,11 @@ packages: engines: {node: '>=12'} dev: false + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -13232,6 +14190,25 @@ packages: websocket-driver: 0.7.4 dev: false + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: false + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: false + /source-list-map@2.0.1: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: false @@ -13281,6 +14258,28 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: false + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: false + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: false + /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: @@ -13311,6 +14310,13 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: false + /stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -13401,6 +14407,15 @@ packages: strip-ansi: 6.0.1 dev: false + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: @@ -13699,6 +14714,18 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -13870,6 +14897,11 @@ packages: punycode: 2.3.0 dev: false + /treeverse@3.0.0: + resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /tryer@1.0.1: resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} dev: false @@ -13907,7 +14939,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.13.0 - acorn: 8.9.0 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -13952,7 +14984,7 @@ packages: resolution: {integrity: sha512-tL0w8U/pgaacOmkb9fRlYzWEUDCfVjjv9dD4wHTgZ61MjhuMt46VNWTG747NqW6vRzoWIKABVhFSOJ82FvXrfA==} dev: false - /tsconfck@2.1.1(typescript@5.1.6): + /tsconfck@2.1.1: resolution: {integrity: sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true @@ -13961,8 +14993,6 @@ packages: peerDependenciesMeta: typescript: optional: true - dependencies: - typescript: 5.1.6 dev: true /tsconfig-paths@3.14.2: @@ -13995,6 +15025,17 @@ packages: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} dev: true + /tuf-js@2.1.0: + resolution: {integrity: sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14163,6 +15204,20 @@ packages: qs: 6.11.2 dev: true + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: false + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: false + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -14287,6 +15342,20 @@ packages: source-map: 0.7.4 dev: false + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: false + + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: false + /varint@6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} @@ -14317,14 +15386,14 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.0.3(typescript@5.1.6)(vite@4.4.11): + /vite-tsconfig-paths@4.0.3(vite@4.4.11): resolution: {integrity: sha512-gRO2Q/tOkV+9kMht5tz90+IaEKvW2zCnvwJV3tp2ruPNZOTM5rF+yXorJT4ggmAMYEaJ3nyXjx5P5jY5FwiZ+A==} peerDependencies: vite: '>2.0.0-0' dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.1.1(typescript@5.1.6) + tsconfck: 2.1.1 vite: 4.4.11(@types/node@20.7.0) transitivePeerDependencies: - supports-color @@ -14486,6 +15555,10 @@ packages: xml-name-validator: 3.0.0 dev: false + /walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + dev: false + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -14772,6 +15845,14 @@ packages: dependencies: isexe: 2.0.0 + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: false + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -14781,6 +15862,12 @@ packages: stackback: 0.0.2 dev: true + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + /workbox-background-sync@6.6.0: resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} dependencies: @@ -14954,6 +16041,15 @@ packages: strip-ansi: 6.0.1 dev: false + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -14966,6 +16062,14 @@ packages: typedarray-to-buffer: 3.1.5 dev: false + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: false + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} diff --git a/tsconfig.json b/tsconfig.json index 31786ed4..cbb2c736 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,8 +7,7 @@ "module": "ESNext", "esModuleInterop": true, "declaration": true, - "moduleResolution": "nodenext", - "noUncheckedIndexedAccess": false + "moduleResolution": "nodenext" }, "files": ["reset.d.ts"] }