@verdaccio/plugin-verifier 1.0.0-next-9.29 → 1.0.0-next-9.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +10 -1
- package/build/diagnostics.cjs +1 -1
- package/build/diagnostics.cjs.map +1 -1
- package/build/diagnostics.d.ts.map +1 -1
- package/build/diagnostics.js +3 -3
- package/build/diagnostics.js.map +1 -1
- package/build/sanity-checks.cjs +12 -1
- package/build/sanity-checks.cjs.map +1 -1
- package/build/sanity-checks.d.ts +2 -1
- package/build/sanity-checks.d.ts.map +1 -1
- package/build/sanity-checks.js +12 -2
- package/build/sanity-checks.js.map +1 -1
- package/build/verify-plugin.cjs +1 -2
- package/build/verify-plugin.cjs.map +1 -1
- package/build/verify-plugin.d.ts +1 -2
- package/build/verify-plugin.d.ts.map +1 -1
- package/build/verify-plugin.js +1 -2
- package/build/verify-plugin.js.map +1 -1
- package/package.json +4 -4
- package/tests/fixtures/verdaccio-async-adduser-plugin/index.js +8 -0
- package/tests/sanity-checks.spec.ts +29 -0
- package/tests/verify-plugin.spec.ts +13 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @verdaccio/plugin-verifier
|
|
2
2
|
|
|
3
|
+
## 1.0.0-next-9.30
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 31e18e8: Align user registration with the authentication plugin callback contract.
|
|
8
|
+
|
|
9
|
+
The htpasswd plugin's `adduser` method now returns `void` and reports registration
|
|
10
|
+
results and internal asynchronous errors through its callback. Registration retains
|
|
11
|
+
the checks performed after acquiring the file lock and releases the lock before
|
|
12
|
+
reporting completion, and invokes the callback exactly once even if the callback
|
|
13
|
+
itself throws.
|
|
14
|
+
|
|
15
|
+
The htpasswd and in-memory plugins now consider only stored user entries, so
|
|
16
|
+
usernames such as `constructor` or `toString` can be registered and authenticated.
|
|
17
|
+
When htpasswd reloads its file, users removed from it are now forgotten: before,
|
|
18
|
+
a user deleted from the `.htpasswd` file could keep authenticating until Verdaccio
|
|
19
|
+
restarted. If reading the `.htpasswd` file fails after its lock is taken, the lock is
|
|
20
|
+
now released instead of blocking later registrations until it goes stale. When the
|
|
21
|
+
`.htpasswd` file does not exist yet, registration creates it before taking the lock, so
|
|
22
|
+
concurrent first registrations no longer lose a user that was reported as created.
|
|
23
|
+
|
|
24
|
+
These htpasswd issues affect every published `verdaccio-htpasswd` up to
|
|
25
|
+
`14.0.0-next-9.33` (shipped by `verdaccio@9.0.0-next-9.33` and `7.0.0-next-7.29`) and
|
|
26
|
+
`13.1.3` (shipped by the stable `verdaccio@6.10.4`). This change fixes the next line;
|
|
27
|
+
the port to the stable 6.x line is pending.
|
|
28
|
+
|
|
29
|
+
Authentication reports invalid plugin group results through the error callback,
|
|
30
|
+
checking the type before the length so values such as `{ length: 0 }` are rejected.
|
|
31
|
+
The plugin verifier also rejects native `async` implementations and non-function
|
|
32
|
+
values for `adduser` and legacy `add_user`, with a diagnostic explaining the callback
|
|
33
|
+
contract. This additional validation applies to the verifier, not the production
|
|
34
|
+
plugin loader.
|
|
35
|
+
|
|
36
|
+
Plugin authors should keep registration methods callback-based, handle internal
|
|
37
|
+
asynchronous errors, and return `void`. The verifier does not invoke registration,
|
|
38
|
+
so ordinary functions that return promises still require tests in the plugin's own
|
|
39
|
+
suite. Registry configuration does not need to change.
|
|
40
|
+
- Updated dependencies [83eb46c]
|
|
41
|
+
- Updated dependencies [0cac607]
|
|
42
|
+
- Updated dependencies [b6cc475]
|
|
43
|
+
- @verdaccio/core@9.0.0-next-9.34
|
|
44
|
+
- @verdaccio/loaders@9.0.0-next-9.34
|
|
45
|
+
- @verdaccio/logger@9.0.0-next-9.34
|
|
46
|
+
|
|
3
47
|
## 1.0.0-next-9.29
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A testing tool that verifies whether a Verdaccio plugin can be properly loaded, instantiated, and passes the required sanity checks for its category.
|
|
4
4
|
|
|
5
|
-
It uses `asyncLoadPlugin` from `@verdaccio/loaders` internally — the **same loader Verdaccio uses at startup** —
|
|
5
|
+
It uses `asyncLoadPlugin` from `@verdaccio/loaders` internally — the **same loader Verdaccio uses at startup** — and adds registration contract checks for authentication plugins.
|
|
6
6
|
|
|
7
7
|
Available as both a **CLI** and a **programmatic API**.
|
|
8
8
|
|
|
@@ -34,6 +34,15 @@ When a plugin is verified, it runs through the same pipeline Verdaccio executes
|
|
|
34
34
|
|
|
35
35
|
## CLI
|
|
36
36
|
|
|
37
|
+
The default authentication check rejects native `async` implementations of optional
|
|
38
|
+
`adduser` and legacy `add_user`, as well as non-function values. Registration must
|
|
39
|
+
return `void` and report success or failure through its callback; asynchronous work
|
|
40
|
+
inside the method is allowed if it handles its errors and completes the callback.
|
|
41
|
+
The verifier never calls registration, so it cannot detect ordinary functions
|
|
42
|
+
(including transpiled async functions) that return a Promise. Test the return value
|
|
43
|
+
and callback behavior in the plugin's own tests. A custom `sanityCheck` overrides
|
|
44
|
+
these default checks. These additional checks do not change the production loader.
|
|
45
|
+
|
|
37
46
|
The CLI is built with [clipanion](https://mael.dev/clipanion/) (the same framework used by `@verdaccio/cli`).
|
|
38
47
|
|
|
39
48
|
### Usage
|
package/build/diagnostics.cjs
CHANGED
|
@@ -183,7 +183,7 @@ async function runDiagnostics(options) {
|
|
|
183
183
|
steps.push({
|
|
184
184
|
phase: "sanity-check",
|
|
185
185
|
pass: false,
|
|
186
|
-
message: `Plugin does not implement the required methods for category "${category}". Available methods: [${unique.join(", ")}]`
|
|
186
|
+
message: (!customSanityCheck && category === _verdaccio_core.PLUGIN_CATEGORY.AUTHENTICATION ? require_sanity_checks.getAuthRegistrationError(instance) : void 0) ?? `Plugin does not implement the required methods for category "${category}". Available methods: [${unique.join(", ")}]`
|
|
187
187
|
});
|
|
188
188
|
return steps;
|
|
189
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.cjs","names":[],"sources":["../src/diagnostics.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\n\nimport { getSanityCheck } from './sanity-checks';\nimport type { DiagnosticStep, VerifyPluginOptions } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier:diagnostics');\n\nconst requireModule = createRequire(import.meta.filename);\n\nfunction isValidExport(plugin: any): boolean {\n return typeof plugin === 'function' || typeof plugin?.default === 'function';\n}\n\nfunction isES6(plugin: any): boolean {\n return plugin && typeof plugin === 'object' && 'default' in plugin;\n}\n\n/**\n * Resolve the ESM entry point for a directory-based plugin.\n * import() doesn't support directory imports, so we resolve via package.json.\n */\nexport function resolveEntryPoint(dirPath: string): string {\n const pkgPath = join(dirPath, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.exports) {\n const dotExport = pkg.exports['.'];\n if (typeof dotExport === 'string') {\n return join(dirPath, dotExport);\n }\n if (dotExport?.import?.default) {\n return join(dirPath, dotExport.import.default);\n }\n if (dotExport?.import && typeof dotExport.import === 'string') {\n return join(dirPath, dotExport.import);\n }\n if (dotExport?.default) {\n return join(dirPath, dotExport.default);\n }\n }\n if (pkg.module) {\n return join(dirPath, pkg.module);\n }\n if (pkg.main) {\n return join(dirPath, pkg.main);\n }\n } catch {\n // fall through\n }\n }\n return join(dirPath, 'index.js');\n}\n\n/**\n * Try to load a module, falling back from require() to import() for ESM.\n * Handles CJS require(), ESM require() shim errors (bundlers), and\n * ERR_REQUIRE_ESM — always falls through to dynamic import() on any\n * require() failure.\n */\nasync function tryResolve(modulePath: string): Promise<{ module: any; error?: string }> {\n // Try require() first (fast path for CJS modules)\n try {\n return { module: requireModule(modulePath) };\n } catch (requireErr: any) {\n debug('require() failed for %o: %s — trying dynamic import', modulePath, requireErr.message);\n }\n\n // Fallback to dynamic import() for ESM modules\n try {\n let importPath = modulePath;\n if (existsSync(modulePath) && existsSync(join(modulePath, 'package.json'))) {\n importPath = resolveEntryPoint(modulePath);\n debug('resolved ESM entry point: %o', importPath);\n }\n const importUrl = importPath.startsWith('/') ? pathToFileURL(importPath).href : importPath;\n const mod = await import(importUrl);\n return { module: mod };\n } catch (importErr: any) {\n return { module: null, error: importErr.message };\n }\n}\n\n/**\n * Runs step-by-step diagnostics to identify exactly which phase of\n * plugin loading fails. This replicates the same resolution logic\n * as `asyncLoadPlugin` but tests each step independently.\n */\nexport async function runDiagnostics(options: VerifyPluginOptions): Promise<DiagnosticStep[]> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n } = options;\n\n const steps: DiagnosticStep[] = [];\n const isScoped = pluginPath.startsWith('@') && pluginPath.includes('/');\n const pluginName = isScoped ? pluginPath : `${prefix}-${pluginPath}`;\n\n debug('running diagnostics for %o (resolved name: %o)', pluginPath, pluginName);\n\n // --- Phase 1: Resolve ---\n let pluginModule: any = null;\n let resolvedFrom = '';\n\n // Try plugins folder first\n if (pluginsFolder) {\n const absFolder = resolve(pluginsFolder);\n const pluginDir = join(absFolder, pluginName);\n debug('checking plugins folder: %o', pluginDir);\n\n if (!existsSync(absFolder)) {\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugins folder does not exist: ${absFolder}`,\n });\n return steps;\n }\n\n if (!existsSync(pluginDir)) {\n debug('plugin directory not found: %o', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugin directory not found: ${pluginDir} — expected a folder named \"${pluginName}\" inside \"${absFolder}\"`,\n });\n return steps;\n }\n\n const result = await tryResolve(pluginDir);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginDir;\n debug('resolved from plugins folder: %o', pluginDir);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Plugin found at ${pluginDir} but has a missing dependency: ${missingDep}`\n : `Plugin found at ${pluginDir} but failed to load: ${result.error}`,\n });\n return steps;\n }\n }\n\n // Try node_modules if not found in plugins folder\n if (!pluginModule) {\n const result = await tryResolve(pluginName);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginName;\n debug('resolved from node_modules: %o', pluginName);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginName);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Package \"${pluginName}\" found but has a missing dependency: ${missingDep}`\n : `Package \"${pluginName}\" not found in node_modules — try: npm install ${pluginName}`,\n });\n return steps;\n }\n }\n\n steps.push({\n phase: 'resolve',\n pass: true,\n message: `Module resolved from ${resolvedFrom}`,\n });\n\n // --- Phase 2: Export validation ---\n if (!isValidExport(pluginModule)) {\n const exportKeys = pluginModule ? Object.keys(pluginModule).join(', ') : 'none';\n steps.push({\n phase: 'export',\n pass: false,\n message: `Module does not export a function or class (default export). Exported keys: [${exportKeys}]`,\n });\n return steps;\n }\n\n const moduleType = isES6(pluginModule) ? 'ES6 (default export)' : 'CommonJS (factory function)';\n steps.push({\n phase: 'export',\n pass: true,\n message: `Valid ${moduleType} plugin export detected`,\n });\n\n // --- Phase 3: Instantiation ---\n let instance: any;\n try {\n if (isES6(pluginModule)) {\n instance = new pluginModule.default(pluginConfig, { config: pluginConfig, logger: console });\n } else {\n instance = pluginModule(pluginConfig, { config: pluginConfig, logger: console });\n }\n } catch (err: any) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin threw during instantiation: ${err.message}`,\n });\n return steps;\n }\n\n if (!instance || (typeof instance !== 'object' && typeof instance !== 'function')) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin constructor/factory returned ${instance === null ? 'null' : typeof instance} instead of an object`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'instantiate',\n pass: true,\n message: 'Plugin instantiated successfully',\n });\n\n // --- Phase 4: Sanity check ---\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n const passed = sanityCheck(instance);\n\n if (!passed) {\n const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance) ?? {})\n .filter((m) => m !== 'constructor')\n .concat(Object.keys(instance));\n const unique = [...new Set(methods)];\n\n steps.push({\n phase: 'sanity-check',\n pass: false,\n message: `Plugin does not implement the required methods for category \"${category}\". Available methods: [${unique.join(', ')}]`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'sanity-check',\n pass: true,\n message: `Plugin passes sanity check for category \"${category}\"`,\n });\n\n return steps;\n}\n\n/**\n * When a MODULE_NOT_FOUND error is about a transitive dependency\n * (not the plugin itself), extract the missing module name.\n */\nfunction parseMissingDependency(message: string, pluginPath: string): string | null {\n const match = message.match(/Cannot find module '([^']+)'/);\n if (match && match[1] && !match[1].includes(pluginPath)) {\n return match[1];\n }\n return null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagnostics.cjs","names":[],"sources":["../src/diagnostics.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport { PLUGIN_CATEGORY, PLUGIN_PREFIX } from '@verdaccio/core';\n\nimport { getAuthRegistrationError, getSanityCheck } from './sanity-checks';\nimport type { DiagnosticStep, VerifyPluginOptions } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier:diagnostics');\n\nconst requireModule = createRequire(import.meta.filename);\n\nfunction isValidExport(plugin: any): boolean {\n return typeof plugin === 'function' || typeof plugin?.default === 'function';\n}\n\nfunction isES6(plugin: any): boolean {\n return plugin && typeof plugin === 'object' && 'default' in plugin;\n}\n\n/**\n * Resolve the ESM entry point for a directory-based plugin.\n * import() doesn't support directory imports, so we resolve via package.json.\n */\nexport function resolveEntryPoint(dirPath: string): string {\n const pkgPath = join(dirPath, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.exports) {\n const dotExport = pkg.exports['.'];\n if (typeof dotExport === 'string') {\n return join(dirPath, dotExport);\n }\n if (dotExport?.import?.default) {\n return join(dirPath, dotExport.import.default);\n }\n if (dotExport?.import && typeof dotExport.import === 'string') {\n return join(dirPath, dotExport.import);\n }\n if (dotExport?.default) {\n return join(dirPath, dotExport.default);\n }\n }\n if (pkg.module) {\n return join(dirPath, pkg.module);\n }\n if (pkg.main) {\n return join(dirPath, pkg.main);\n }\n } catch {\n // fall through\n }\n }\n return join(dirPath, 'index.js');\n}\n\n/**\n * Try to load a module, falling back from require() to import() for ESM.\n * Handles CJS require(), ESM require() shim errors (bundlers), and\n * ERR_REQUIRE_ESM — always falls through to dynamic import() on any\n * require() failure.\n */\nasync function tryResolve(modulePath: string): Promise<{ module: any; error?: string }> {\n // Try require() first (fast path for CJS modules)\n try {\n return { module: requireModule(modulePath) };\n } catch (requireErr: any) {\n debug('require() failed for %o: %s — trying dynamic import', modulePath, requireErr.message);\n }\n\n // Fallback to dynamic import() for ESM modules\n try {\n let importPath = modulePath;\n if (existsSync(modulePath) && existsSync(join(modulePath, 'package.json'))) {\n importPath = resolveEntryPoint(modulePath);\n debug('resolved ESM entry point: %o', importPath);\n }\n const importUrl = importPath.startsWith('/') ? pathToFileURL(importPath).href : importPath;\n const mod = await import(importUrl);\n return { module: mod };\n } catch (importErr: any) {\n return { module: null, error: importErr.message };\n }\n}\n\n/**\n * Runs step-by-step diagnostics to identify exactly which phase of\n * plugin loading fails. This replicates the same resolution logic\n * as `asyncLoadPlugin` but tests each step independently.\n */\nexport async function runDiagnostics(options: VerifyPluginOptions): Promise<DiagnosticStep[]> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n } = options;\n\n const steps: DiagnosticStep[] = [];\n const isScoped = pluginPath.startsWith('@') && pluginPath.includes('/');\n const pluginName = isScoped ? pluginPath : `${prefix}-${pluginPath}`;\n\n debug('running diagnostics for %o (resolved name: %o)', pluginPath, pluginName);\n\n // --- Phase 1: Resolve ---\n let pluginModule: any = null;\n let resolvedFrom = '';\n\n // Try plugins folder first\n if (pluginsFolder) {\n const absFolder = resolve(pluginsFolder);\n const pluginDir = join(absFolder, pluginName);\n debug('checking plugins folder: %o', pluginDir);\n\n if (!existsSync(absFolder)) {\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugins folder does not exist: ${absFolder}`,\n });\n return steps;\n }\n\n if (!existsSync(pluginDir)) {\n debug('plugin directory not found: %o', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugin directory not found: ${pluginDir} — expected a folder named \"${pluginName}\" inside \"${absFolder}\"`,\n });\n return steps;\n }\n\n const result = await tryResolve(pluginDir);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginDir;\n debug('resolved from plugins folder: %o', pluginDir);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Plugin found at ${pluginDir} but has a missing dependency: ${missingDep}`\n : `Plugin found at ${pluginDir} but failed to load: ${result.error}`,\n });\n return steps;\n }\n }\n\n // Try node_modules if not found in plugins folder\n if (!pluginModule) {\n const result = await tryResolve(pluginName);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginName;\n debug('resolved from node_modules: %o', pluginName);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginName);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Package \"${pluginName}\" found but has a missing dependency: ${missingDep}`\n : `Package \"${pluginName}\" not found in node_modules — try: npm install ${pluginName}`,\n });\n return steps;\n }\n }\n\n steps.push({\n phase: 'resolve',\n pass: true,\n message: `Module resolved from ${resolvedFrom}`,\n });\n\n // --- Phase 2: Export validation ---\n if (!isValidExport(pluginModule)) {\n const exportKeys = pluginModule ? Object.keys(pluginModule).join(', ') : 'none';\n steps.push({\n phase: 'export',\n pass: false,\n message: `Module does not export a function or class (default export). Exported keys: [${exportKeys}]`,\n });\n return steps;\n }\n\n const moduleType = isES6(pluginModule) ? 'ES6 (default export)' : 'CommonJS (factory function)';\n steps.push({\n phase: 'export',\n pass: true,\n message: `Valid ${moduleType} plugin export detected`,\n });\n\n // --- Phase 3: Instantiation ---\n let instance: any;\n try {\n if (isES6(pluginModule)) {\n instance = new pluginModule.default(pluginConfig, { config: pluginConfig, logger: console });\n } else {\n instance = pluginModule(pluginConfig, { config: pluginConfig, logger: console });\n }\n } catch (err: any) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin threw during instantiation: ${err.message}`,\n });\n return steps;\n }\n\n if (!instance || (typeof instance !== 'object' && typeof instance !== 'function')) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin constructor/factory returned ${instance === null ? 'null' : typeof instance} instead of an object`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'instantiate',\n pass: true,\n message: 'Plugin instantiated successfully',\n });\n\n // --- Phase 4: Sanity check ---\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n const passed = sanityCheck(instance);\n\n if (!passed) {\n const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance) ?? {})\n .filter((m) => m !== 'constructor')\n .concat(Object.keys(instance));\n const unique = [...new Set(methods)];\n\n steps.push({\n phase: 'sanity-check',\n pass: false,\n message:\n (!customSanityCheck && category === PLUGIN_CATEGORY.AUTHENTICATION\n ? getAuthRegistrationError(instance)\n : undefined) ??\n `Plugin does not implement the required methods for category \"${category}\". Available methods: [${unique.join(', ')}]`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'sanity-check',\n pass: true,\n message: `Plugin passes sanity check for category \"${category}\"`,\n });\n\n return steps;\n}\n\n/**\n * When a MODULE_NOT_FOUND error is about a transitive dependency\n * (not the plugin itself), extract the missing module name.\n */\nfunction parseMissingDependency(message: string, pluginPath: string): string | null {\n const match = message.match(/Cannot find module '([^']+)'/);\n if (match && match[1] && !match[1].includes(pluginPath)) {\n return match[1];\n }\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAcnE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+BzD;AA+BD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAcnE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+BzD;AA+BD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAwK5F"}
|
package/build/diagnostics.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getSanityCheck } from "./sanity-checks.js";
|
|
1
|
+
import { getAuthRegistrationError, getSanityCheck } from "./sanity-checks.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import buildDebug from "debug";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
|
-
import { PLUGIN_PREFIX } from "@verdaccio/core";
|
|
5
|
+
import { PLUGIN_CATEGORY, PLUGIN_PREFIX } from "@verdaccio/core";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
import { pathToFileURL } from "node:url";
|
|
8
8
|
//#region src/diagnostics.ts
|
|
@@ -181,7 +181,7 @@ async function runDiagnostics(options) {
|
|
|
181
181
|
steps.push({
|
|
182
182
|
phase: "sanity-check",
|
|
183
183
|
pass: false,
|
|
184
|
-
message: `Plugin does not implement the required methods for category "${category}". Available methods: [${unique.join(", ")}]`
|
|
184
|
+
message: (!customSanityCheck && category === PLUGIN_CATEGORY.AUTHENTICATION ? getAuthRegistrationError(instance) : void 0) ?? `Plugin does not implement the required methods for category "${category}". Available methods: [${unique.join(", ")}]`
|
|
185
185
|
});
|
|
186
186
|
return steps;
|
|
187
187
|
}
|
package/build/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","names":[],"sources":["../src/diagnostics.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\n\nimport { getSanityCheck } from './sanity-checks';\nimport type { DiagnosticStep, VerifyPluginOptions } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier:diagnostics');\n\nconst requireModule = createRequire(import.meta.filename);\n\nfunction isValidExport(plugin: any): boolean {\n return typeof plugin === 'function' || typeof plugin?.default === 'function';\n}\n\nfunction isES6(plugin: any): boolean {\n return plugin && typeof plugin === 'object' && 'default' in plugin;\n}\n\n/**\n * Resolve the ESM entry point for a directory-based plugin.\n * import() doesn't support directory imports, so we resolve via package.json.\n */\nexport function resolveEntryPoint(dirPath: string): string {\n const pkgPath = join(dirPath, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.exports) {\n const dotExport = pkg.exports['.'];\n if (typeof dotExport === 'string') {\n return join(dirPath, dotExport);\n }\n if (dotExport?.import?.default) {\n return join(dirPath, dotExport.import.default);\n }\n if (dotExport?.import && typeof dotExport.import === 'string') {\n return join(dirPath, dotExport.import);\n }\n if (dotExport?.default) {\n return join(dirPath, dotExport.default);\n }\n }\n if (pkg.module) {\n return join(dirPath, pkg.module);\n }\n if (pkg.main) {\n return join(dirPath, pkg.main);\n }\n } catch {\n // fall through\n }\n }\n return join(dirPath, 'index.js');\n}\n\n/**\n * Try to load a module, falling back from require() to import() for ESM.\n * Handles CJS require(), ESM require() shim errors (bundlers), and\n * ERR_REQUIRE_ESM — always falls through to dynamic import() on any\n * require() failure.\n */\nasync function tryResolve(modulePath: string): Promise<{ module: any; error?: string }> {\n // Try require() first (fast path for CJS modules)\n try {\n return { module: requireModule(modulePath) };\n } catch (requireErr: any) {\n debug('require() failed for %o: %s — trying dynamic import', modulePath, requireErr.message);\n }\n\n // Fallback to dynamic import() for ESM modules\n try {\n let importPath = modulePath;\n if (existsSync(modulePath) && existsSync(join(modulePath, 'package.json'))) {\n importPath = resolveEntryPoint(modulePath);\n debug('resolved ESM entry point: %o', importPath);\n }\n const importUrl = importPath.startsWith('/') ? pathToFileURL(importPath).href : importPath;\n const mod = await import(importUrl);\n return { module: mod };\n } catch (importErr: any) {\n return { module: null, error: importErr.message };\n }\n}\n\n/**\n * Runs step-by-step diagnostics to identify exactly which phase of\n * plugin loading fails. This replicates the same resolution logic\n * as `asyncLoadPlugin` but tests each step independently.\n */\nexport async function runDiagnostics(options: VerifyPluginOptions): Promise<DiagnosticStep[]> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n } = options;\n\n const steps: DiagnosticStep[] = [];\n const isScoped = pluginPath.startsWith('@') && pluginPath.includes('/');\n const pluginName = isScoped ? pluginPath : `${prefix}-${pluginPath}`;\n\n debug('running diagnostics for %o (resolved name: %o)', pluginPath, pluginName);\n\n // --- Phase 1: Resolve ---\n let pluginModule: any = null;\n let resolvedFrom = '';\n\n // Try plugins folder first\n if (pluginsFolder) {\n const absFolder = resolve(pluginsFolder);\n const pluginDir = join(absFolder, pluginName);\n debug('checking plugins folder: %o', pluginDir);\n\n if (!existsSync(absFolder)) {\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugins folder does not exist: ${absFolder}`,\n });\n return steps;\n }\n\n if (!existsSync(pluginDir)) {\n debug('plugin directory not found: %o', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugin directory not found: ${pluginDir} — expected a folder named \"${pluginName}\" inside \"${absFolder}\"`,\n });\n return steps;\n }\n\n const result = await tryResolve(pluginDir);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginDir;\n debug('resolved from plugins folder: %o', pluginDir);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Plugin found at ${pluginDir} but has a missing dependency: ${missingDep}`\n : `Plugin found at ${pluginDir} but failed to load: ${result.error}`,\n });\n return steps;\n }\n }\n\n // Try node_modules if not found in plugins folder\n if (!pluginModule) {\n const result = await tryResolve(pluginName);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginName;\n debug('resolved from node_modules: %o', pluginName);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginName);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Package \"${pluginName}\" found but has a missing dependency: ${missingDep}`\n : `Package \"${pluginName}\" not found in node_modules — try: npm install ${pluginName}`,\n });\n return steps;\n }\n }\n\n steps.push({\n phase: 'resolve',\n pass: true,\n message: `Module resolved from ${resolvedFrom}`,\n });\n\n // --- Phase 2: Export validation ---\n if (!isValidExport(pluginModule)) {\n const exportKeys = pluginModule ? Object.keys(pluginModule).join(', ') : 'none';\n steps.push({\n phase: 'export',\n pass: false,\n message: `Module does not export a function or class (default export). Exported keys: [${exportKeys}]`,\n });\n return steps;\n }\n\n const moduleType = isES6(pluginModule) ? 'ES6 (default export)' : 'CommonJS (factory function)';\n steps.push({\n phase: 'export',\n pass: true,\n message: `Valid ${moduleType} plugin export detected`,\n });\n\n // --- Phase 3: Instantiation ---\n let instance: any;\n try {\n if (isES6(pluginModule)) {\n instance = new pluginModule.default(pluginConfig, { config: pluginConfig, logger: console });\n } else {\n instance = pluginModule(pluginConfig, { config: pluginConfig, logger: console });\n }\n } catch (err: any) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin threw during instantiation: ${err.message}`,\n });\n return steps;\n }\n\n if (!instance || (typeof instance !== 'object' && typeof instance !== 'function')) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin constructor/factory returned ${instance === null ? 'null' : typeof instance} instead of an object`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'instantiate',\n pass: true,\n message: 'Plugin instantiated successfully',\n });\n\n // --- Phase 4: Sanity check ---\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n const passed = sanityCheck(instance);\n\n if (!passed) {\n const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance) ?? {})\n .filter((m) => m !== 'constructor')\n .concat(Object.keys(instance));\n const unique = [...new Set(methods)];\n\n steps.push({\n phase: 'sanity-check',\n pass: false,\n message: `Plugin does not implement the required methods for category \"${category}\". Available methods: [${unique.join(', ')}]`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'sanity-check',\n pass: true,\n message: `Plugin passes sanity check for category \"${category}\"`,\n });\n\n return steps;\n}\n\n/**\n * When a MODULE_NOT_FOUND error is about a transitive dependency\n * (not the plugin itself), extract the missing module name.\n */\nfunction parseMissingDependency(message: string, pluginPath: string): string | null {\n const match = message.match(/Cannot find module '([^']+)'/);\n if (match && match[1] && !match[1].includes(pluginPath)) {\n return match[1];\n }\n return null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","names":[],"sources":["../src/diagnostics.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport { PLUGIN_CATEGORY, PLUGIN_PREFIX } from '@verdaccio/core';\n\nimport { getAuthRegistrationError, getSanityCheck } from './sanity-checks';\nimport type { DiagnosticStep, VerifyPluginOptions } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier:diagnostics');\n\nconst requireModule = createRequire(import.meta.filename);\n\nfunction isValidExport(plugin: any): boolean {\n return typeof plugin === 'function' || typeof plugin?.default === 'function';\n}\n\nfunction isES6(plugin: any): boolean {\n return plugin && typeof plugin === 'object' && 'default' in plugin;\n}\n\n/**\n * Resolve the ESM entry point for a directory-based plugin.\n * import() doesn't support directory imports, so we resolve via package.json.\n */\nexport function resolveEntryPoint(dirPath: string): string {\n const pkgPath = join(dirPath, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.exports) {\n const dotExport = pkg.exports['.'];\n if (typeof dotExport === 'string') {\n return join(dirPath, dotExport);\n }\n if (dotExport?.import?.default) {\n return join(dirPath, dotExport.import.default);\n }\n if (dotExport?.import && typeof dotExport.import === 'string') {\n return join(dirPath, dotExport.import);\n }\n if (dotExport?.default) {\n return join(dirPath, dotExport.default);\n }\n }\n if (pkg.module) {\n return join(dirPath, pkg.module);\n }\n if (pkg.main) {\n return join(dirPath, pkg.main);\n }\n } catch {\n // fall through\n }\n }\n return join(dirPath, 'index.js');\n}\n\n/**\n * Try to load a module, falling back from require() to import() for ESM.\n * Handles CJS require(), ESM require() shim errors (bundlers), and\n * ERR_REQUIRE_ESM — always falls through to dynamic import() on any\n * require() failure.\n */\nasync function tryResolve(modulePath: string): Promise<{ module: any; error?: string }> {\n // Try require() first (fast path for CJS modules)\n try {\n return { module: requireModule(modulePath) };\n } catch (requireErr: any) {\n debug('require() failed for %o: %s — trying dynamic import', modulePath, requireErr.message);\n }\n\n // Fallback to dynamic import() for ESM modules\n try {\n let importPath = modulePath;\n if (existsSync(modulePath) && existsSync(join(modulePath, 'package.json'))) {\n importPath = resolveEntryPoint(modulePath);\n debug('resolved ESM entry point: %o', importPath);\n }\n const importUrl = importPath.startsWith('/') ? pathToFileURL(importPath).href : importPath;\n const mod = await import(importUrl);\n return { module: mod };\n } catch (importErr: any) {\n return { module: null, error: importErr.message };\n }\n}\n\n/**\n * Runs step-by-step diagnostics to identify exactly which phase of\n * plugin loading fails. This replicates the same resolution logic\n * as `asyncLoadPlugin` but tests each step independently.\n */\nexport async function runDiagnostics(options: VerifyPluginOptions): Promise<DiagnosticStep[]> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n } = options;\n\n const steps: DiagnosticStep[] = [];\n const isScoped = pluginPath.startsWith('@') && pluginPath.includes('/');\n const pluginName = isScoped ? pluginPath : `${prefix}-${pluginPath}`;\n\n debug('running diagnostics for %o (resolved name: %o)', pluginPath, pluginName);\n\n // --- Phase 1: Resolve ---\n let pluginModule: any = null;\n let resolvedFrom = '';\n\n // Try plugins folder first\n if (pluginsFolder) {\n const absFolder = resolve(pluginsFolder);\n const pluginDir = join(absFolder, pluginName);\n debug('checking plugins folder: %o', pluginDir);\n\n if (!existsSync(absFolder)) {\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugins folder does not exist: ${absFolder}`,\n });\n return steps;\n }\n\n if (!existsSync(pluginDir)) {\n debug('plugin directory not found: %o', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: `Plugin directory not found: ${pluginDir} — expected a folder named \"${pluginName}\" inside \"${absFolder}\"`,\n });\n return steps;\n }\n\n const result = await tryResolve(pluginDir);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginDir;\n debug('resolved from plugins folder: %o', pluginDir);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginDir);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Plugin found at ${pluginDir} but has a missing dependency: ${missingDep}`\n : `Plugin found at ${pluginDir} but failed to load: ${result.error}`,\n });\n return steps;\n }\n }\n\n // Try node_modules if not found in plugins folder\n if (!pluginModule) {\n const result = await tryResolve(pluginName);\n if (result.module) {\n pluginModule = result.module;\n resolvedFrom = pluginName;\n debug('resolved from node_modules: %o', pluginName);\n } else {\n const missingDep = parseMissingDependency(result.error ?? '', pluginName);\n steps.push({\n phase: 'resolve',\n pass: false,\n message: missingDep\n ? `Package \"${pluginName}\" found but has a missing dependency: ${missingDep}`\n : `Package \"${pluginName}\" not found in node_modules — try: npm install ${pluginName}`,\n });\n return steps;\n }\n }\n\n steps.push({\n phase: 'resolve',\n pass: true,\n message: `Module resolved from ${resolvedFrom}`,\n });\n\n // --- Phase 2: Export validation ---\n if (!isValidExport(pluginModule)) {\n const exportKeys = pluginModule ? Object.keys(pluginModule).join(', ') : 'none';\n steps.push({\n phase: 'export',\n pass: false,\n message: `Module does not export a function or class (default export). Exported keys: [${exportKeys}]`,\n });\n return steps;\n }\n\n const moduleType = isES6(pluginModule) ? 'ES6 (default export)' : 'CommonJS (factory function)';\n steps.push({\n phase: 'export',\n pass: true,\n message: `Valid ${moduleType} plugin export detected`,\n });\n\n // --- Phase 3: Instantiation ---\n let instance: any;\n try {\n if (isES6(pluginModule)) {\n instance = new pluginModule.default(pluginConfig, { config: pluginConfig, logger: console });\n } else {\n instance = pluginModule(pluginConfig, { config: pluginConfig, logger: console });\n }\n } catch (err: any) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin threw during instantiation: ${err.message}`,\n });\n return steps;\n }\n\n if (!instance || (typeof instance !== 'object' && typeof instance !== 'function')) {\n steps.push({\n phase: 'instantiate',\n pass: false,\n message: `Plugin constructor/factory returned ${instance === null ? 'null' : typeof instance} instead of an object`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'instantiate',\n pass: true,\n message: 'Plugin instantiated successfully',\n });\n\n // --- Phase 4: Sanity check ---\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n const passed = sanityCheck(instance);\n\n if (!passed) {\n const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(instance) ?? {})\n .filter((m) => m !== 'constructor')\n .concat(Object.keys(instance));\n const unique = [...new Set(methods)];\n\n steps.push({\n phase: 'sanity-check',\n pass: false,\n message:\n (!customSanityCheck && category === PLUGIN_CATEGORY.AUTHENTICATION\n ? getAuthRegistrationError(instance)\n : undefined) ??\n `Plugin does not implement the required methods for category \"${category}\". Available methods: [${unique.join(', ')}]`,\n });\n return steps;\n }\n\n steps.push({\n phase: 'sanity-check',\n pass: true,\n message: `Plugin passes sanity check for category \"${category}\"`,\n });\n\n return steps;\n}\n\n/**\n * When a MODULE_NOT_FOUND error is about a transitive dependency\n * (not the plugin itself), extract the missing module name.\n */\nfunction parseMissingDependency(message: string, pluginPath: string): string | null {\n const match = message.match(/Cannot find module '([^']+)'/);\n if (match && match[1] && !match[1].includes(pluginPath)) {\n return match[1];\n }\n return null;\n}\n"],"mappings":"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"}
|
package/build/sanity-checks.cjs
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
let _verdaccio_core = require("@verdaccio/core");
|
|
2
|
+
let node_util = require("node:util");
|
|
2
3
|
//#region src/sanity-checks.ts
|
|
3
|
-
|
|
4
|
+
function getAuthRegistrationError(plugin) {
|
|
5
|
+
for (const method of ["adduser", "add_user"]) {
|
|
6
|
+
const implementation = plugin?.[method];
|
|
7
|
+
if (implementation === void 0) continue;
|
|
8
|
+
if (typeof implementation !== "function" || node_util.types.isAsyncFunction(implementation) || Object.prototype.toString.call(implementation) === "[object AsyncFunction]") return `Auth plugin ${method} must be a non-async function returning void and reporting its result through the callback.`;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function authSanityCheck(plugin) {
|
|
12
|
+
return _verdaccio_core.pluginUtils.authSanityCheck(plugin) && getAuthRegistrationError(plugin) === void 0;
|
|
13
|
+
}
|
|
4
14
|
var storageSanityCheck = _verdaccio_core.pluginUtils.storageSanityCheck;
|
|
5
15
|
var middlewareSanityCheck = _verdaccio_core.pluginUtils.middlewareSanityCheck;
|
|
6
16
|
var filterSanityCheck = _verdaccio_core.pluginUtils.filterSanityCheck;
|
|
@@ -19,6 +29,7 @@ function getSanityCheck(category) {
|
|
|
19
29
|
//#endregion
|
|
20
30
|
exports.authSanityCheck = authSanityCheck;
|
|
21
31
|
exports.filterSanityCheck = filterSanityCheck;
|
|
32
|
+
exports.getAuthRegistrationError = getAuthRegistrationError;
|
|
22
33
|
exports.getSanityCheck = getSanityCheck;
|
|
23
34
|
exports.middlewareSanityCheck = middlewareSanityCheck;
|
|
24
35
|
exports.storageSanityCheck = storageSanityCheck;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-checks.cjs","names":[],"sources":["../src/sanity-checks.ts"],"sourcesContent":["import { PLUGIN_CATEGORY, pluginUtils } from '@verdaccio/core';\n\nimport type { PluginCategory } from './types';\n\n
|
|
1
|
+
{"version":3,"file":"sanity-checks.cjs","names":[],"sources":["../src/sanity-checks.ts"],"sourcesContent":["import { types } from 'node:util';\n\nimport { PLUGIN_CATEGORY, pluginUtils } from '@verdaccio/core';\n\nimport type { PluginCategory } from './types';\n\nexport function getAuthRegistrationError(plugin: any): string | undefined {\n for (const method of ['adduser', 'add_user']) {\n const implementation = plugin?.[method];\n if (implementation === undefined) continue;\n if (\n typeof implementation !== 'function' ||\n types.isAsyncFunction(implementation) ||\n Object.prototype.toString.call(implementation) === '[object AsyncFunction]'\n ) {\n return `Auth plugin ${method} must be a non-async function returning void and reporting its result through the callback.`;\n }\n }\n}\n\nexport function authSanityCheck(plugin: any): boolean {\n return pluginUtils.authSanityCheck(plugin) && getAuthRegistrationError(plugin) === undefined;\n}\n\n// Re-export the remaining sanity checks from @verdaccio/core.\nexport const storageSanityCheck = pluginUtils.storageSanityCheck;\nexport const middlewareSanityCheck = pluginUtils.middlewareSanityCheck;\nexport const filterSanityCheck = pluginUtils.filterSanityCheck;\n\n/**\n * Returns the appropriate sanity check function for the given plugin category.\n */\nexport function getSanityCheck(category: PluginCategory): (plugin: any) => boolean {\n switch (category) {\n case PLUGIN_CATEGORY.AUTHENTICATION:\n return authSanityCheck;\n case PLUGIN_CATEGORY.STORAGE:\n return storageSanityCheck;\n case PLUGIN_CATEGORY.MIDDLEWARE:\n return middlewareSanityCheck;\n case PLUGIN_CATEGORY.FILTER:\n return filterSanityCheck;\n default:\n return () => true;\n }\n}\n"],"mappings":";;;AAMA,SAAgB,yBAAyB,QAAiC;CACxE,KAAK,MAAM,UAAU,CAAC,WAAW,UAAU,GAAG;EAC5C,MAAM,iBAAiB,SAAS;EAChC,IAAI,mBAAmB,KAAA,GAAW;EAClC,IACE,OAAO,mBAAmB,cAC1B,UAAA,MAAM,gBAAgB,cAAc,KACpC,OAAO,UAAU,SAAS,KAAK,cAAc,MAAM,0BAEnD,OAAO,eAAe,OAAO;CAEjC;AACF;AAEA,SAAgB,gBAAgB,QAAsB;CACpD,OAAO,gBAAA,YAAY,gBAAgB,MAAM,KAAK,yBAAyB,MAAM,MAAM,KAAA;AACrF;AAGA,IAAa,qBAAqB,gBAAA,YAAY;AAC9C,IAAa,wBAAwB,gBAAA,YAAY;AACjD,IAAa,oBAAoB,gBAAA,YAAY;;;;AAK7C,SAAgB,eAAe,UAAoD;CACjF,QAAQ,UAAR;EACE,KAAK,gBAAA,gBAAgB,gBACnB,OAAO;EACT,KAAK,gBAAA,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAA,gBAAgB,YACnB,OAAO;EACT,KAAK,gBAAA,gBAAgB,QACnB,OAAO;EACT,SACE,aAAa;CACjB;AACF"}
|
package/build/sanity-checks.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { pluginUtils } from '@verdaccio/core';
|
|
2
2
|
import type { PluginCategory } from './types';
|
|
3
|
-
export declare
|
|
3
|
+
export declare function getAuthRegistrationError(plugin: any): string | undefined;
|
|
4
|
+
export declare function authSanityCheck(plugin: any): boolean;
|
|
4
5
|
export declare const storageSanityCheck: typeof pluginUtils.storageSanityCheck;
|
|
5
6
|
export declare const middlewareSanityCheck: typeof pluginUtils.middlewareSanityCheck;
|
|
6
7
|
export declare const filterSanityCheck: typeof pluginUtils.filterSanityCheck;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-checks.d.ts","sourceRoot":"","sources":["../src/sanity-checks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanity-checks.d.ts","sourceRoot":"","sources":["../src/sanity-checks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAYxE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAEpD;AAGD,eAAO,MAAM,kBAAkB,uCAAiC,CAAC;AACjE,eAAO,MAAM,qBAAqB,0CAAoC,CAAC;AACvE,eAAO,MAAM,iBAAiB,sCAAgC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAajF"}
|
package/build/sanity-checks.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { PLUGIN_CATEGORY, pluginUtils } from "@verdaccio/core";
|
|
2
|
+
import { types } from "node:util";
|
|
2
3
|
//#region src/sanity-checks.ts
|
|
3
|
-
|
|
4
|
+
function getAuthRegistrationError(plugin) {
|
|
5
|
+
for (const method of ["adduser", "add_user"]) {
|
|
6
|
+
const implementation = plugin?.[method];
|
|
7
|
+
if (implementation === void 0) continue;
|
|
8
|
+
if (typeof implementation !== "function" || types.isAsyncFunction(implementation) || Object.prototype.toString.call(implementation) === "[object AsyncFunction]") return `Auth plugin ${method} must be a non-async function returning void and reporting its result through the callback.`;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function authSanityCheck(plugin) {
|
|
12
|
+
return pluginUtils.authSanityCheck(plugin) && getAuthRegistrationError(plugin) === void 0;
|
|
13
|
+
}
|
|
4
14
|
var storageSanityCheck = pluginUtils.storageSanityCheck;
|
|
5
15
|
var middlewareSanityCheck = pluginUtils.middlewareSanityCheck;
|
|
6
16
|
var filterSanityCheck = pluginUtils.filterSanityCheck;
|
|
@@ -17,6 +27,6 @@ function getSanityCheck(category) {
|
|
|
17
27
|
}
|
|
18
28
|
}
|
|
19
29
|
//#endregion
|
|
20
|
-
export { authSanityCheck, filterSanityCheck, getSanityCheck, middlewareSanityCheck, storageSanityCheck };
|
|
30
|
+
export { authSanityCheck, filterSanityCheck, getAuthRegistrationError, getSanityCheck, middlewareSanityCheck, storageSanityCheck };
|
|
21
31
|
|
|
22
32
|
//# sourceMappingURL=sanity-checks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-checks.js","names":[],"sources":["../src/sanity-checks.ts"],"sourcesContent":["import { PLUGIN_CATEGORY, pluginUtils } from '@verdaccio/core';\n\nimport type { PluginCategory } from './types';\n\n
|
|
1
|
+
{"version":3,"file":"sanity-checks.js","names":[],"sources":["../src/sanity-checks.ts"],"sourcesContent":["import { types } from 'node:util';\n\nimport { PLUGIN_CATEGORY, pluginUtils } from '@verdaccio/core';\n\nimport type { PluginCategory } from './types';\n\nexport function getAuthRegistrationError(plugin: any): string | undefined {\n for (const method of ['adduser', 'add_user']) {\n const implementation = plugin?.[method];\n if (implementation === undefined) continue;\n if (\n typeof implementation !== 'function' ||\n types.isAsyncFunction(implementation) ||\n Object.prototype.toString.call(implementation) === '[object AsyncFunction]'\n ) {\n return `Auth plugin ${method} must be a non-async function returning void and reporting its result through the callback.`;\n }\n }\n}\n\nexport function authSanityCheck(plugin: any): boolean {\n return pluginUtils.authSanityCheck(plugin) && getAuthRegistrationError(plugin) === undefined;\n}\n\n// Re-export the remaining sanity checks from @verdaccio/core.\nexport const storageSanityCheck = pluginUtils.storageSanityCheck;\nexport const middlewareSanityCheck = pluginUtils.middlewareSanityCheck;\nexport const filterSanityCheck = pluginUtils.filterSanityCheck;\n\n/**\n * Returns the appropriate sanity check function for the given plugin category.\n */\nexport function getSanityCheck(category: PluginCategory): (plugin: any) => boolean {\n switch (category) {\n case PLUGIN_CATEGORY.AUTHENTICATION:\n return authSanityCheck;\n case PLUGIN_CATEGORY.STORAGE:\n return storageSanityCheck;\n case PLUGIN_CATEGORY.MIDDLEWARE:\n return middlewareSanityCheck;\n case PLUGIN_CATEGORY.FILTER:\n return filterSanityCheck;\n default:\n return () => true;\n }\n}\n"],"mappings":";;;AAMA,SAAgB,yBAAyB,QAAiC;CACxE,KAAK,MAAM,UAAU,CAAC,WAAW,UAAU,GAAG;EAC5C,MAAM,iBAAiB,SAAS;EAChC,IAAI,mBAAmB,KAAA,GAAW;EAClC,IACE,OAAO,mBAAmB,cAC1B,MAAM,gBAAgB,cAAc,KACpC,OAAO,UAAU,SAAS,KAAK,cAAc,MAAM,0BAEnD,OAAO,eAAe,OAAO;CAEjC;AACF;AAEA,SAAgB,gBAAgB,QAAsB;CACpD,OAAO,YAAY,gBAAgB,MAAM,KAAK,yBAAyB,MAAM,MAAM,KAAA;AACrF;AAGA,IAAa,qBAAqB,YAAY;AAC9C,IAAa,wBAAwB,YAAY;AACjD,IAAa,oBAAoB,YAAY;;;;AAK7C,SAAgB,eAAe,UAAoD;CACjF,QAAQ,UAAR;EACE,KAAK,gBAAgB,gBACnB,OAAO;EACT,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB,YACnB,OAAO;EACT,KAAK,gBAAgB,QACnB,OAAO;EACT,SACE,aAAa;CACjB;AACF"}
|
package/build/verify-plugin.cjs
CHANGED
|
@@ -13,8 +13,7 @@ var debug$1 = (0, debug.default)("verdaccio:plugin:verifier");
|
|
|
13
13
|
* Verifies that a plugin can be loaded by Verdaccio.
|
|
14
14
|
*
|
|
15
15
|
* Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader
|
|
16
|
-
* Verdaccio uses at startup
|
|
17
|
-
* happens in production.
|
|
16
|
+
* Verdaccio uses at startup, with additional auth registration contract checks.
|
|
18
17
|
*
|
|
19
18
|
* Steps verified:
|
|
20
19
|
* 1. Module resolution — can the plugin be found/required?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-plugin.cjs","names":[],"sources":["../src/verify-plugin.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { resolve } from 'node:path';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger, setup } from '@verdaccio/logger';\n\nimport { runDiagnostics } from './diagnostics';\nimport { getSanityCheck } from './sanity-checks';\nimport type { VerifyPluginOptions, VerifyResult } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier');\n\n/**\n * Verifies that a plugin can be loaded by Verdaccio.\n *\n * Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader\n * Verdaccio uses at startup
|
|
1
|
+
{"version":3,"file":"verify-plugin.cjs","names":[],"sources":["../src/verify-plugin.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { resolve } from 'node:path';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger, setup } from '@verdaccio/logger';\n\nimport { runDiagnostics } from './diagnostics';\nimport { getSanityCheck } from './sanity-checks';\nimport type { VerifyPluginOptions, VerifyResult } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier');\n\n/**\n * Verifies that a plugin can be loaded by Verdaccio.\n *\n * Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader\n * Verdaccio uses at startup, with additional auth registration contract checks.\n *\n * Steps verified:\n * 1. Module resolution — can the plugin be found/required?\n * 2. Export validation — does it export a function or a class (default export)?\n * 3. Instantiation — can the plugin be instantiated with a config and options?\n * 4. Sanity check — does the instance implement the required methods for its category?\n *\n * When loading fails, detailed diagnostics are included in the result\n * to pinpoint exactly which step failed and why.\n */\nexport async function verifyPlugin(options: VerifyPluginOptions): Promise<VerifyResult> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n configPath,\n } = options;\n\n debug('verifying plugin %o for category %o', pluginPath, category);\n debug('prefix: %o, pluginsFolder: %o', prefix, pluginsFolder);\n\n await setup({});\n\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n debug('using %s sanity check', customSanityCheck ? 'custom' : 'default');\n\n const config: any = {\n ...pluginConfig,\n };\n\n if (pluginsFolder) {\n config.plugins = resolve(pluginsFolder);\n debug('resolved plugins folder: %o', config.plugins);\n }\n\n if (configPath) {\n config.configPath = configPath;\n debug('config path: %o', config.configPath);\n }\n\n const pluginConfigs = { [pluginPath]: pluginConfig };\n debug('plugin config: %o', pluginConfigs);\n\n try {\n const plugins = await asyncLoadPlugin(\n pluginConfigs,\n { config, logger },\n sanityCheck,\n false,\n prefix,\n category\n );\n\n debug('plugins loaded: %o', plugins.length);\n\n if (plugins.length > 0) {\n debug('verification succeeded for %o', pluginPath);\n return {\n success: true,\n pluginName: pluginPath,\n category,\n pluginsLoaded: plugins.length,\n };\n }\n\n debug('verification failed, running diagnostics for %o', pluginPath);\n const diagnostics = await runDiagnostics(options);\n const failedStep = diagnostics.find((d) => !d.pass);\n\n return {\n success: false,\n pluginName: pluginPath,\n category,\n pluginsLoaded: 0,\n error:\n failedStep?.message ??\n `Plugin \"${pluginPath}\" could not be loaded for category \"${category}\"`,\n diagnostics,\n };\n } catch (err: any) {\n debug('verification error for %o: %o', pluginPath, err.message);\n const diagnostics = await runDiagnostics(options);\n\n return {\n success: false,\n pluginName: pluginPath,\n category,\n pluginsLoaded: 0,\n error: err.message,\n diagnostics,\n };\n }\n}\n"],"mappings":";;;;;;;;;;AAWA,IAAM,WAAA,GAAQ,MAAA,QAAA,CAAW,2BAA2B;;;;;;;;;;;;;;;;AAiBpD,eAAsB,aAAa,SAAqD;CACtF,MAAM,EACJ,YACA,UACA,eAAe,CAAC,GAChB,aAAa,mBACb,SAAS,gBAAA,eACT,eACA,eACE;CAEJ,QAAM,uCAAuC,YAAY,QAAQ;CACjE,QAAM,iCAAiC,QAAQ,aAAa;CAE5D,OAAA,GAAM,kBAAA,MAAA,CAAM,CAAC,CAAC;CAEd,MAAM,cAAc,qBAAqB,sBAAA,eAAe,QAAQ;CAChE,QAAM,yBAAyB,oBAAoB,WAAW,SAAS;CAEvE,MAAM,SAAc,EAClB,GAAG,aACL;CAEA,IAAI,eAAe;EACjB,OAAO,WAAA,GAAU,UAAA,QAAA,CAAQ,aAAa;EACtC,QAAM,+BAA+B,OAAO,OAAO;CACrD;CAEA,IAAI,YAAY;EACd,OAAO,aAAa;EACpB,QAAM,mBAAmB,OAAO,UAAU;CAC5C;CAEA,MAAM,gBAAgB,GAAG,aAAa,aAAa;CACnD,QAAM,qBAAqB,aAAa;CAExC,IAAI;EACF,MAAM,UAAU,OAAA,GAAM,mBAAA,gBAAA,CACpB,eACA;GAAE;GAAQ,QAAA,kBAAA;EAAO,GACjB,aACA,OACA,QACA,QACF;EAEA,QAAM,sBAAsB,QAAQ,MAAM;EAE1C,IAAI,QAAQ,SAAS,GAAG;GACtB,QAAM,iCAAiC,UAAU;GACjD,OAAO;IACL,SAAS;IACT,YAAY;IACZ;IACA,eAAe,QAAQ;GACzB;EACF;EAEA,QAAM,mDAAmD,UAAU;EACnE,MAAM,cAAc,MAAM,oBAAA,eAAe,OAAO;EAGhD,OAAO;GACL,SAAS;GACT,YAAY;GACZ;GACA,eAAe;GACf,OAPiB,YAAY,MAAM,MAAM,CAAC,EAAE,IAQ1C,CAAA,EAAY,WACZ,WAAW,WAAW,sCAAsC,SAAS;GACvE;EACF;CACF,SAAS,KAAU;EACjB,QAAM,iCAAiC,YAAY,IAAI,OAAO;EAC9D,MAAM,cAAc,MAAM,oBAAA,eAAe,OAAO;EAEhD,OAAO;GACL,SAAS;GACT,YAAY;GACZ;GACA,eAAe;GACf,OAAO,IAAI;GACX;EACF;CACF;AACF"}
|
package/build/verify-plugin.d.ts
CHANGED
|
@@ -3,8 +3,7 @@ import type { VerifyPluginOptions, VerifyResult } from './types';
|
|
|
3
3
|
* Verifies that a plugin can be loaded by Verdaccio.
|
|
4
4
|
*
|
|
5
5
|
* Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader
|
|
6
|
-
* Verdaccio uses at startup
|
|
7
|
-
* happens in production.
|
|
6
|
+
* Verdaccio uses at startup, with additional auth registration contract checks.
|
|
8
7
|
*
|
|
9
8
|
* Steps verified:
|
|
10
9
|
* 1. Module resolution — can the plugin be found/required?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-plugin.d.ts","sourceRoot":"","sources":["../src/verify-plugin.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIjE
|
|
1
|
+
{"version":3,"file":"verify-plugin.d.ts","sourceRoot":"","sources":["../src/verify-plugin.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIjE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqFtF"}
|
package/build/verify-plugin.js
CHANGED
|
@@ -11,8 +11,7 @@ var debug = buildDebug("verdaccio:plugin:verifier");
|
|
|
11
11
|
* Verifies that a plugin can be loaded by Verdaccio.
|
|
12
12
|
*
|
|
13
13
|
* Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader
|
|
14
|
-
* Verdaccio uses at startup
|
|
15
|
-
* happens in production.
|
|
14
|
+
* Verdaccio uses at startup, with additional auth registration contract checks.
|
|
16
15
|
*
|
|
17
16
|
* Steps verified:
|
|
18
17
|
* 1. Module resolution — can the plugin be found/required?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-plugin.js","names":[],"sources":["../src/verify-plugin.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { resolve } from 'node:path';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger, setup } from '@verdaccio/logger';\n\nimport { runDiagnostics } from './diagnostics';\nimport { getSanityCheck } from './sanity-checks';\nimport type { VerifyPluginOptions, VerifyResult } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier');\n\n/**\n * Verifies that a plugin can be loaded by Verdaccio.\n *\n * Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader\n * Verdaccio uses at startup
|
|
1
|
+
{"version":3,"file":"verify-plugin.js","names":[],"sources":["../src/verify-plugin.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport { resolve } from 'node:path';\n\nimport { PLUGIN_PREFIX } from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport { logger, setup } from '@verdaccio/logger';\n\nimport { runDiagnostics } from './diagnostics';\nimport { getSanityCheck } from './sanity-checks';\nimport type { VerifyPluginOptions, VerifyResult } from './types';\n\nconst debug = buildDebug('verdaccio:plugin:verifier');\n\n/**\n * Verifies that a plugin can be loaded by Verdaccio.\n *\n * Uses `asyncLoadPlugin` from `@verdaccio/loaders` — the same loader\n * Verdaccio uses at startup, with additional auth registration contract checks.\n *\n * Steps verified:\n * 1. Module resolution — can the plugin be found/required?\n * 2. Export validation — does it export a function or a class (default export)?\n * 3. Instantiation — can the plugin be instantiated with a config and options?\n * 4. Sanity check — does the instance implement the required methods for its category?\n *\n * When loading fails, detailed diagnostics are included in the result\n * to pinpoint exactly which step failed and why.\n */\nexport async function verifyPlugin(options: VerifyPluginOptions): Promise<VerifyResult> {\n const {\n pluginPath,\n category,\n pluginConfig = {},\n sanityCheck: customSanityCheck,\n prefix = PLUGIN_PREFIX,\n pluginsFolder,\n configPath,\n } = options;\n\n debug('verifying plugin %o for category %o', pluginPath, category);\n debug('prefix: %o, pluginsFolder: %o', prefix, pluginsFolder);\n\n await setup({});\n\n const sanityCheck = customSanityCheck ?? getSanityCheck(category);\n debug('using %s sanity check', customSanityCheck ? 'custom' : 'default');\n\n const config: any = {\n ...pluginConfig,\n };\n\n if (pluginsFolder) {\n config.plugins = resolve(pluginsFolder);\n debug('resolved plugins folder: %o', config.plugins);\n }\n\n if (configPath) {\n config.configPath = configPath;\n debug('config path: %o', config.configPath);\n }\n\n const pluginConfigs = { [pluginPath]: pluginConfig };\n debug('plugin config: %o', pluginConfigs);\n\n try {\n const plugins = await asyncLoadPlugin(\n pluginConfigs,\n { config, logger },\n sanityCheck,\n false,\n prefix,\n category\n );\n\n debug('plugins loaded: %o', plugins.length);\n\n if (plugins.length > 0) {\n debug('verification succeeded for %o', pluginPath);\n return {\n success: true,\n pluginName: pluginPath,\n category,\n pluginsLoaded: plugins.length,\n };\n }\n\n debug('verification failed, running diagnostics for %o', pluginPath);\n const diagnostics = await runDiagnostics(options);\n const failedStep = diagnostics.find((d) => !d.pass);\n\n return {\n success: false,\n pluginName: pluginPath,\n category,\n pluginsLoaded: 0,\n error:\n failedStep?.message ??\n `Plugin \"${pluginPath}\" could not be loaded for category \"${category}\"`,\n diagnostics,\n };\n } catch (err: any) {\n debug('verification error for %o: %o', pluginPath, err.message);\n const diagnostics = await runDiagnostics(options);\n\n return {\n success: false,\n pluginName: pluginPath,\n category,\n pluginsLoaded: 0,\n error: err.message,\n diagnostics,\n };\n }\n}\n"],"mappings":";;;;;;;;AAWA,IAAM,QAAQ,WAAW,2BAA2B;;;;;;;;;;;;;;;;AAiBpD,eAAsB,aAAa,SAAqD;CACtF,MAAM,EACJ,YACA,UACA,eAAe,CAAC,GAChB,aAAa,mBACb,SAAS,eACT,eACA,eACE;CAEJ,MAAM,uCAAuC,YAAY,QAAQ;CACjE,MAAM,iCAAiC,QAAQ,aAAa;CAE5D,MAAM,MAAM,CAAC,CAAC;CAEd,MAAM,cAAc,qBAAqB,eAAe,QAAQ;CAChE,MAAM,yBAAyB,oBAAoB,WAAW,SAAS;CAEvE,MAAM,SAAc,EAClB,GAAG,aACL;CAEA,IAAI,eAAe;EACjB,OAAO,UAAU,QAAQ,aAAa;EACtC,MAAM,+BAA+B,OAAO,OAAO;CACrD;CAEA,IAAI,YAAY;EACd,OAAO,aAAa;EACpB,MAAM,mBAAmB,OAAO,UAAU;CAC5C;CAEA,MAAM,gBAAgB,GAAG,aAAa,aAAa;CACnD,MAAM,qBAAqB,aAAa;CAExC,IAAI;EACF,MAAM,UAAU,MAAM,gBACpB,eACA;GAAE;GAAQ;EAAO,GACjB,aACA,OACA,QACA,QACF;EAEA,MAAM,sBAAsB,QAAQ,MAAM;EAE1C,IAAI,QAAQ,SAAS,GAAG;GACtB,MAAM,iCAAiC,UAAU;GACjD,OAAO;IACL,SAAS;IACT,YAAY;IACZ;IACA,eAAe,QAAQ;GACzB;EACF;EAEA,MAAM,mDAAmD,UAAU;EACnE,MAAM,cAAc,MAAM,eAAe,OAAO;EAGhD,OAAO;GACL,SAAS;GACT,YAAY;GACZ;GACA,eAAe;GACf,OAPiB,YAAY,MAAM,MAAM,CAAC,EAAE,IAQ1C,CAAA,EAAY,WACZ,WAAW,WAAW,sCAAsC,SAAS;GACvE;EACF;CACF,SAAS,KAAU;EACjB,MAAM,iCAAiC,YAAY,IAAI,OAAO;EAC9D,MAAM,cAAc,MAAM,eAAe,OAAO;EAEhD,OAAO;GACL,SAAS;GACT,YAAY;GACZ;GACA,eAAe;GACf,OAAO,IAAI;GACX;EACF;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdaccio/plugin-verifier",
|
|
3
|
-
"version": "1.0.0-next-9.
|
|
3
|
+
"version": "1.0.0-next-9.30",
|
|
4
4
|
"description": "Tool to verify that a Verdaccio plugin can be loaded and passes sanity checks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"node": ">=24"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@verdaccio/core": "9.0.0-next-9.
|
|
37
|
-
"@verdaccio/loaders": "9.0.0-next-9.
|
|
38
|
-
"@verdaccio/logger": "9.0.0-next-9.
|
|
36
|
+
"@verdaccio/core": "9.0.0-next-9.34",
|
|
37
|
+
"@verdaccio/loaders": "9.0.0-next-9.34",
|
|
38
|
+
"@verdaccio/logger": "9.0.0-next-9.34",
|
|
39
39
|
"clipanion": "4.0.0-rc.4",
|
|
40
40
|
"debug": "4.4.3"
|
|
41
41
|
},
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import { authSanityCheck } from '../src/sanity-checks';
|
|
4
|
+
|
|
5
|
+
describe('auth registration contract', () => {
|
|
6
|
+
const authenticate = () => {};
|
|
7
|
+
|
|
8
|
+
it('accepts an auth plugin without optional registration methods', () => {
|
|
9
|
+
expect(authSanityCheck({ authenticate })).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it.each(['adduser', 'add_user'])('accepts callback-based %s without invoking it', (method) => {
|
|
13
|
+
const register = vi.fn((_user, _password, cb) => {
|
|
14
|
+
queueMicrotask(() => cb(null, true));
|
|
15
|
+
});
|
|
16
|
+
expect(authSanityCheck({ authenticate, [method]: register })).toBe(true);
|
|
17
|
+
expect(register).not.toHaveBeenCalled();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it.each(['adduser', 'add_user'])('rejects async %s, including bound functions', (method) => {
|
|
21
|
+
const register = async () => {};
|
|
22
|
+
expect(authSanityCheck({ authenticate, [method]: register })).toBe(false);
|
|
23
|
+
expect(authSanityCheck({ authenticate, [method]: register.bind({}) })).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('rejects a Promise used as the registration method', () => {
|
|
27
|
+
expect(authSanityCheck({ authenticate, adduser: Promise.resolve() })).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
@@ -9,6 +9,19 @@ const fixturesPath = join(import.meta.dirname, 'fixtures');
|
|
|
9
9
|
|
|
10
10
|
describe('verifyPlugin', () => {
|
|
11
11
|
describe('authentication plugins', () => {
|
|
12
|
+
it('rejects async adduser with a callback-contract diagnostic', async () => {
|
|
13
|
+
const result = await verifyPlugin({
|
|
14
|
+
pluginPath: 'async-adduser-plugin',
|
|
15
|
+
category: PLUGIN_CATEGORY.AUTHENTICATION,
|
|
16
|
+
pluginsFolder: fixturesPath,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
expect(result.success).toBe(false);
|
|
20
|
+
expect(result.pluginsLoaded).toBe(0);
|
|
21
|
+
expect(result.error).toContain('adduser must be a non-async function returning void');
|
|
22
|
+
expect(result.diagnostics?.find((step) => step.phase === 'sanity-check')?.pass).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
|
|
12
25
|
it('should verify a valid auth plugin (CommonJS)', async () => {
|
|
13
26
|
const result = await verifyPlugin({
|
|
14
27
|
pluginPath: 'valid-auth-plugin',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"7.0.2","root":[[271,277]],"packageJsons":["../../../node_modules/.pnpm/@types+body-parser@1.19.6/node_modules/@types/body-parser/package.json","../../../node_modules/.pnpm/@types+connect@3.4.38/node_modules/@types/connect/package.json","../../../node_modules/.pnpm/@types+cors@2.8.19/node_modules/@types/cors/package.json","../../../node_modules/.pnpm/@types+debug@4.1.13/node_modules/@types/debug/package.json","../../../node_modules/.pnpm/@types+express-serve-static-core@5.1.3/node_modules/@types/express-serve-static-core/package.json","../../../node_modules/.pnpm/@types+express@5.0.6/node_modules/@types/express/package.json","../../../node_modules/.pnpm/@types+http-errors@2.0.5/node_modules/@types/http-errors/package.json","../../../node_modules/.pnpm/@types+jsonwebtoken@9.0.10/node_modules/@types/jsonwebtoken/package.json","../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/package.json","../../../node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/package.json","../../../node_modules/.pnpm/@types+qs@6.15.1/node_modules/@types/qs/package.json","../../../node_modules/.pnpm/@types+range-parser@1.2.7/node_modules/@types/range-parser/package.json","../../../node_modules/.pnpm/@types+send@1.2.1/node_modules/@types/send/package.json","../../../node_modules/.pnpm/@types+serve-static@2.2.0/node_modules/@types/serve-static/package.json","../../../node_modules/.pnpm/clipanion@4.0.0-rc.4_typanion@3.14.0/node_modules/clipanion/package.json","../../../node_modules/.pnpm/colorette@2.0.20/node_modules/colorette/package.json","../../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/package.json","../../../node_modules/.pnpm/express@5.2.1_supports-color@10.2.2/node_modules/express/package.json","../../../node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/package.json","../../../node_modules/.pnpm/pino-abstract-transport@3.0.0/node_modules/pino-abstract-transport/package.json","../../../node_modules/.pnpm/pino@10.3.1/node_modules/pino/package.json","../../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/package.json","../../../node_modules/.pnpm/typanion@3.14.0/node_modules/typanion/package.json","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/package.json","../../core/core/package.json","../../core/types/package.json","../../loaders/package.json","../../logger/package.json","./package.json"],"missingPackageJsons":["../../../node_modules/@types/assert/package.json","../../../node_modules/@types/assert/strict/package.json","../../../node_modules/@types/async_hooks/package.json","../../../node_modules/@types/buffer/package.json","../../../node_modules/@types/child_process/package.json","../../../node_modules/@types/cluster/package.json","../../../node_modules/@types/console/package.json","../../../node_modules/@types/constants/package.json","../../../node_modules/@types/crypto/package.json","../../../node_modules/@types/dgram/package.json","../../../node_modules/@types/diagnostics_channel/package.json","../../../node_modules/@types/dns/package.json","../../../node_modules/@types/dns/promises/package.json","../../../node_modules/@types/domain/package.json","../../../node_modules/@types/events/package.json","../../../node_modules/@types/fs/package.json","../../../node_modules/@types/fs/promises/package.json","../../../node_modules/@types/http/package.json","../../../node_modules/@types/http2/package.json","../../../node_modules/@types/https/package.json","../../../node_modules/@types/inspector/package.json","../../../node_modules/@types/inspector/promises/package.json","../../../node_modules/@types/module/package.json","../../../node_modules/@types/net/package.json","../../../node_modules/@types/node/assert/package.json","../../../node_modules/@types/node/compatibility/package.json","../../../node_modules/@types/node/dns/package.json","../../../node_modules/@types/node/fs/package.json","../../../node_modules/@types/node/readline/package.json","../../../node_modules/@types/node/stream/package.json","../../../node_modules/@types/node/timers/package.json","../../../node_modules/@types/node/web-globals/package.json","../../../node_modules/@types/os/package.json","../../../node_modules/@types/path/package.json","../../../node_modules/@types/path/posix/package.json","../../../node_modules/@types/path/win32/package.json","../../../node_modules/@types/perf_hooks/package.json","../../../node_modules/@types/pino-std-serializers/package.json","../../../node_modules/@types/process/package.json","../../../node_modules/@types/punycode/package.json","../../../node_modules/@types/querystring/package.json","../../../node_modules/@types/readline/package.json","../../../node_modules/@types/readline/promises/package.json","../../../node_modules/@types/repl/package.json","../../../node_modules/@types/stream/consumers/package.json","../../../node_modules/@types/stream/package.json","../../../node_modules/@types/stream/promises/package.json","../../../node_modules/@types/stream/web/package.json","../../../node_modules/@types/string_decoder/package.json","../../../node_modules/@types/thread-stream/package.json","../../../node_modules/@types/timers/package.json","../../../node_modules/@types/timers/promises/package.json","../../../node_modules/@types/tls/package.json","../../../node_modules/@types/trace_events/package.json","../../../node_modules/@types/tty/package.json","../../../node_modules/@types/typanion/package.json","../../../node_modules/@types/url/package.json","../../../node_modules/@types/util/package.json","../../../node_modules/@types/util/types/package.json","../../../node_modules/@types/v8/package.json","../../../node_modules/@types/vm/package.json","../../../node_modules/@types/wasi/package.json","../../../node_modules/@types/worker_threads/package.json","../../../node_modules/@types/zlib/package.json","../../../node_modules/assert/package.json","../../../node_modules/assert/strict/package.json","../../../node_modules/async_hooks/package.json","../../../node_modules/body-parser/package.json","../../../node_modules/buffer/package.json","../../../node_modules/child_process/package.json","../../../node_modules/cluster/package.json","../../../node_modules/connect/package.json","../../../node_modules/console/package.json","../../../node_modules/constants/package.json","../../../node_modules/crypto/package.json","../../../node_modules/dgram/package.json","../../../node_modules/diagnostics_channel/package.json","../../../node_modules/dns/package.json","../../../node_modules/dns/promises/package.json","../../../node_modules/domain/package.json","../../../node_modules/events/package.json","../../../node_modules/express-serve-static-core/package.json","../../../node_modules/express/package.json","../../../node_modules/fs/package.json","../../../node_modules/fs/promises/package.json","../../../node_modules/http-errors/package.json","../../../node_modules/http/package.json","../../../node_modules/http2/package.json","../../../node_modules/https/package.json","../../../node_modules/inspector/package.json","../../../node_modules/inspector/promises/package.json","../../../node_modules/module/package.json","../../../node_modules/ms/package.json","../../../node_modules/net/package.json","../../../node_modules/os/package.json","../../../node_modules/path/package.json","../../../node_modules/path/posix/package.json","../../../node_modules/path/win32/package.json","../../../node_modules/perf_hooks/package.json","../../../node_modules/pino-std-serializers/package.json","../../../node_modules/process/package.json","../../../node_modules/punycode/package.json","../../../node_modules/qs/package.json","../../../node_modules/querystring/package.json","../../../node_modules/range-parser/package.json","../../../node_modules/readline/package.json","../../../node_modules/readline/promises/package.json","../../../node_modules/repl/package.json","../../../node_modules/send/package.json","../../../node_modules/serve-static/package.json","../../../node_modules/stream/consumers/package.json","../../../node_modules/stream/package.json","../../../node_modules/stream/promises/package.json","../../../node_modules/stream/web/package.json","../../../node_modules/string_decoder/package.json","../../../node_modules/thread-stream/package.json","../../../node_modules/timers/package.json","../../../node_modules/timers/promises/package.json","../../../node_modules/tls/package.json","../../../node_modules/trace_events/package.json","../../../node_modules/tty/package.json","../../../node_modules/typanion/package.json","../../../node_modules/url/package.json","../../../node_modules/util/package.json","../../../node_modules/util/types/package.json","../../../node_modules/v8/package.json","../../../node_modules/vm/package.json","../../../node_modules/wasi/package.json","../../../node_modules/worker_threads/package.json","../../../node_modules/zlib/package.json","./node_modules/@verdaccio/core/build/package.json","./node_modules/@verdaccio/core/build/schemes/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/core/node_modules/crypto/package.json","./node_modules/@verdaccio/core/node_modules/http/package.json","./node_modules/@verdaccio/core/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/build/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/express/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/http-errors/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/build/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/build/schemes/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/express/package.json","./node_modules/@verdaccio/loaders/node_modules/http-errors/package.json","./node_modules/@verdaccio/loaders/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/ms/package.json","./node_modules/@verdaccio/logger/build/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/logger/node_modules/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/events/package.json","./node_modules/@verdaccio/logger/node_modules/http/package.json","./node_modules/@verdaccio/logger/node_modules/ms/package.json","./node_modules/@verdaccio/logger/node_modules/pino-std-serializers/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/events/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/pino-std-serializers/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/sonic-boom/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/thread-stream/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/worker_threads/package.json","./node_modules/@verdaccio/logger/node_modules/sonic-boom/types/package.json","./node_modules/@verdaccio/logger/node_modules/stream/package.json","./node_modules/@verdaccio/logger/node_modules/thread-stream/package.json","./node_modules/@verdaccio/logger/node_modules/worker_threads/package.json","./node_modules/clipanion/lib/advanced/builtins/package.json","./node_modules/clipanion/lib/advanced/options/package.json","./node_modules/clipanion/lib/advanced/package.json","./node_modules/clipanion/lib/package.json","./node_modules/crypto/package.json","./node_modules/events/package.json","./node_modules/express/package.json","./node_modules/http-errors/package.json","./node_modules/http/package.json","./node_modules/ms/package.json","./node_modules/pino-std-serializers/package.json","./node_modules/stream/package.json","./node_modules/thread-stream/package.json","./node_modules/typanion/package.json","./node_modules/worker_threads/package.json"],"fileNames":["lib.es5.d.ts","lib.es2015.d.ts","lib.es2016.d.ts","lib.es2017.d.ts","lib.es2018.d.ts","lib.es2019.d.ts","lib.es2020.d.ts","lib.es2021.d.ts","lib.es2022.d.ts","lib.es2023.d.ts","lib.es2024.d.ts","lib.es2025.d.ts","lib.esnext.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts","lib.dom.asynciterable.d.ts","lib.webworker.importscripts.d.ts","lib.scripthost.d.ts","lib.es2015.core.d.ts","lib.es2015.collection.d.ts","lib.es2015.generator.d.ts","lib.es2015.iterable.d.ts","lib.es2015.promise.d.ts","lib.es2015.proxy.d.ts","lib.es2015.reflect.d.ts","lib.es2015.symbol.d.ts","lib.es2015.symbol.wellknown.d.ts","lib.es2016.array.include.d.ts","lib.es2016.intl.d.ts","lib.es2017.arraybuffer.d.ts","lib.es2017.date.d.ts","lib.es2017.object.d.ts","lib.es2017.sharedmemory.d.ts","lib.es2017.string.d.ts","lib.es2017.intl.d.ts","lib.es2017.typedarrays.d.ts","lib.es2018.asyncgenerator.d.ts","lib.es2018.asynciterable.d.ts","lib.es2018.intl.d.ts","lib.es2018.promise.d.ts","lib.es2018.regexp.d.ts","lib.es2019.array.d.ts","lib.es2019.object.d.ts","lib.es2019.string.d.ts","lib.es2019.symbol.d.ts","lib.es2019.intl.d.ts","lib.es2020.bigint.d.ts","lib.es2020.date.d.ts","lib.es2020.promise.d.ts","lib.es2020.sharedmemory.d.ts","lib.es2020.string.d.ts","lib.es2020.symbol.wellknown.d.ts","lib.es2020.intl.d.ts","lib.es2020.number.d.ts","lib.es2021.promise.d.ts","lib.es2021.string.d.ts","lib.es2021.weakref.d.ts","lib.es2021.intl.d.ts","lib.es2022.array.d.ts","lib.es2022.error.d.ts","lib.es2022.intl.d.ts","lib.es2022.object.d.ts","lib.es2022.string.d.ts","lib.es2022.regexp.d.ts","lib.es2023.array.d.ts","lib.es2023.collection.d.ts","lib.es2023.intl.d.ts","lib.es2024.arraybuffer.d.ts","lib.es2024.collection.d.ts","lib.es2024.object.d.ts","lib.es2024.promise.d.ts","lib.es2024.regexp.d.ts","lib.es2024.sharedmemory.d.ts","lib.es2024.string.d.ts","lib.es2025.collection.d.ts","lib.es2025.float16.d.ts","lib.es2025.intl.d.ts","lib.es2025.iterator.d.ts","lib.es2025.promise.d.ts","lib.es2025.regexp.d.ts","lib.esnext.array.d.ts","lib.esnext.collection.d.ts","lib.esnext.date.d.ts","lib.esnext.decorators.d.ts","lib.esnext.disposable.d.ts","lib.esnext.error.d.ts","lib.esnext.intl.d.ts","lib.esnext.sharedmemory.d.ts","lib.esnext.temporal.d.ts","lib.esnext.typedarrays.d.ts","lib.decorators.d.ts","lib.decorators.legacy.d.ts","lib.esnext.full.d.ts","./node_modules/clipanion/lib/constants.d.ts","./node_modules/clipanion/lib/core.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","./node_modules/clipanion/lib/format.d.ts","./node_modules/clipanion/lib/errors.d.ts","./node_modules/clipanion/lib/advanced/options/utils.d.ts","./node_modules/clipanion/lib/advanced/Cli.d.ts","./node_modules/clipanion/lib/advanced/Command.d.ts","./node_modules/clipanion/lib/advanced/builtins/definitions.d.ts","./node_modules/clipanion/lib/advanced/builtins/help.d.ts","./node_modules/clipanion/lib/advanced/builtins/tokens.d.ts","./node_modules/clipanion/lib/advanced/builtins/version.d.ts","./node_modules/clipanion/lib/advanced/builtins/index.d.ts","./node_modules/clipanion/lib/advanced/options/Array.d.ts","./node_modules/clipanion/lib/advanced/options/Boolean.d.ts","./node_modules/clipanion/lib/advanced/options/Counter.d.ts","./node_modules/clipanion/lib/advanced/options/Proxy.d.ts","./node_modules/clipanion/lib/advanced/options/Rest.d.ts","./node_modules/clipanion/lib/advanced/options/String.d.ts","./node_modules/clipanion/lib/advanced/options/index.d.ts","./node_modules/clipanion/lib/advanced/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/commons.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/manifest.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/storage.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/index.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/search.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/cors/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/jsonwebtoken/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/configuration.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/types.ts","./node_modules/@verdaccio/core/build/auth-utils.d.ts","./node_modules/@verdaccio/core/build/constants.d.ts","./node_modules/@verdaccio/core/build/crypto-utils.d.ts","../../../node_modules/@types/http-errors/index.d.ts","./node_modules/@verdaccio/core/build/error-utils.d.ts","./node_modules/@verdaccio/core/build/file-utils.d.ts","./node_modules/@verdaccio/core/build/ip-utils.d.ts","./node_modules/@verdaccio/core/build/pkg-utils.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/express/index.d.ts","./node_modules/@verdaccio/core/build/plugin-utils.d.ts","./node_modules/@verdaccio/core/build/req-utils.d.ts","./node_modules/@verdaccio/core/build/search-utils.d.ts","./node_modules/@verdaccio/core/build/stream-utils.d.ts","./node_modules/@verdaccio/core/build/string-utils.d.ts","./node_modules/@verdaccio/core/build/tarball-utils.d.ts","./node_modules/@verdaccio/core/build/schemes/publish-manifest.d.ts","./node_modules/@verdaccio/core/build/schemes/unpublish-manifest.d.ts","./node_modules/@verdaccio/core/build/validation-utils.d.ts","./node_modules/@verdaccio/core/build/warning-utils.d.ts","./node_modules/@verdaccio/core/build/index.d.ts","./node_modules/@verdaccio/loaders/build/utils.d.ts","./node_modules/@verdaccio/loaders/build/plugin-async-loader.d.ts","./node_modules/@verdaccio/loaders/build/index.d.ts","./node_modules/@verdaccio/logger/build/logger.d.ts","./node_modules/@verdaccio/logger/node_modules/pino-abstract-transport/index.d.ts","./node_modules/@verdaccio/logger/node_modules/sonic-boom/types/index.d.ts","./node_modules/@verdaccio/logger/node_modules/colorette/index.d.ts","./node_modules/@verdaccio/logger/build/levels.d.ts","./node_modules/@verdaccio/logger/node_modules/pino/pino.d.ts","./node_modules/@verdaccio/logger/build/types.d.ts","./node_modules/@verdaccio/logger/build/formatter.d.ts","./node_modules/@verdaccio/logger/build/colors.d.ts","./node_modules/@verdaccio/logger/build/prettify.d.ts","./node_modules/@verdaccio/logger/build/transport.d.ts","./node_modules/@verdaccio/logger/build/utils.d.ts","./node_modules/@verdaccio/logger/build/index.d.ts","./src/types.ts","./src/sanity-checks.ts","./src/diagnostics.ts","./src/verify-plugin.ts","./src/commands/verify.ts","./src/cli.ts","./src/index.ts"],"fileInfos":[{"version":"16934abaab7026ac114da441aabea1a0","affectsGlobalScope":true,"impliedNodeFormat":1},"d4306fb2e47f74835e8674ffac07d76f","e437c5c1302869326c3bb93da85bbbcf","e4324975a566567b21d350615f1fc6ac","333b1b9a2a9ac3b8497dba5c63b5ba50","6cffacd662b6eb5fa7a36aa2ea366bfa","b4c34f9c23304dbef2d23698637ed638","e5cb86a5fc491796ecd1d2dd348d208f","feb6c6fb19cdb246a5d8acb36a6901c7","9443a7f109277ffaa79d893ed2549995","793cee405385076e27c24f409659dccd","09f69c6610266eaee1ac9e3e30df2c71","62bad718844246b8e17547f37bad6085",{"version":"aae8996e8b5684814785a42cbbefcd79","affectsGlobalScope":true,"impliedNodeFormat":1},"abad6dd56cc8caf095c165df8124d237","abad6dd56cc8caf095c165df8124d237",{"version":"2a9941db0809c9ad0e8837ed629b1dcc","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d051b93324f36bcc68d152a5ca0988cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"926204c28cd3d073865348473ae28d2e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f25e42c801b2cb3cf2b39792006a9beb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6344b55f26a4e81d9608777dbfb877dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3c0ed28e53d3695b363e256ec1c023fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4c2761daba7f17141c25baa0821ac5da","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b87656acabd63e69379ff6ffcfe52fc7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"597469522da047a5af5222cc6989f405","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1708ea4d34dc37fadadc63ca01127e80","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"55d97a8c6fbf34a30450a7b1e5f7a298","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0ee05eb59426d33e374226d8dcfa708b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e347c14030993906efcfbb88915b6a05","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b0231263857c9b6a03641acdc9280ceb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3b15c4a83b598cacb4067676e6f0abed","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b417d97b7934cef63b1889abec0bbfbf","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"09a6cf4032ebba60ce22a501e663f881","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2b056277dd138e8f5650fc04e20eaa8d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e22cc07e3f3cc242ba52fa3f8ea1fc58","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2c45da767a1bfbb220848df1bc4029e4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b44c3e0fbaf2130cdcf6ac38b120ffa1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b612fb5cf8e5d964b92063a75207632a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"02705151a5e1551b9162a9ed8ab763f7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"41025e398be9215d32e4337335da8f0b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"52684c2b1f353a5538e4f275182a54cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6dedb6a4f90d1df3a6fbe5693e44886c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ca3f36fe3562c07e0f0d71c2bebd3f6d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"409974d6129befbb8226ddd1c6558568","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4d9cfde2a1ae1b4925f1f9bc10848e5d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7e1daecc66dd564144e3bb1a0266b5fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a8e1d9bb35fd0637f2f9fd2b2a54f2ec","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4f168501772a6543182765bfd5f2fbfe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a19c80aad1b2162103496f5ba293a732","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b69afa63cd5d059851c78adb2856ee09","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ae2fc5d954e9b0f5feee3d481b953c27","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1cfd3091a071d8b6feec15277643bafe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1da2c1f258970fd3cc91184f69e91a9d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a0d87491913d843139e0c993650a3235","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4ef72aa378127e7b7abba915b0110b1e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3ec74c6a7d4463f0254db3a74cf75646","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"84c2bdfa470d075526cce6322d81b0b6","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0b3844c2b8c73e4e1ab91431411cad11","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4fc71cf4a15b8d99675a31df77f26e07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d1b49564ddaeca3df5b6dbae925d2242","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6a25be566d60ccfc2d6e8b7bfdeefa83","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8a20e27646985dfd58c57ca6566553dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9969f02ad3cdcbf4f709405cda44167f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9c9be4792a7a4f42c15ae7360bf28779","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8cf777fe00349b71ee9c4b6f3fe7fd19","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"74f96bc192530c9723f572bfff3d3078","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1df91c56b25955c56387426f378173c5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"38856f70edcd2115c355d96ec77cc09e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de8700156c1275465bcd473c28b359aa","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d47cfdb6ede40518357bb5a4cd7cd9fb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6e5773860cd9e5b15e683113f642ab47","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"30ff5fe1682f7fcd629880476ca3c2e0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bf23d7d1b40b9015b694ddc2f011752f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2cc585d42e2c548f9f24a30a1989fd33","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"713906ce9d332d2242b7f05ed9304be3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0219894bfe5042c7e1aa2d22e4a91ed0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6009ffff7e43c93318804d2d28e37fe3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"03be89b227587594fbb50509fc1c2e45","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b30df52dc24740c0bad7c55c3511df7d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ab8d3c9b5ed5c2ab8f383607eef439f0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d950ec671d0a8e07f3c1a31e94abed86","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1abef2ace5eccb02d60dd73cd5a5ee4c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f5f0a3044029d1cc081b5887eb4deb07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d57c697f1446940ec4bfe669c962e2c4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be41035d7b941482a1e1ae6a5c5dcca5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"10f7d9da7564f27f8ddf4a162b6da6d3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1d0520af549e0c3581f15173cc713ca1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d65083f97fd741cff028472563eddb79","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"da7f24f00653ebac660ac1c0821ed33d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cb5ae9e65516ea2235f0721f6aac43c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f64453cbf9671f28158677fa5c43967a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"33f317af5428801f944a478d2c1e38e5","affectsGlobalScope":true,"impliedNodeFormat":1},"2bccd8eaa1dc27e6e29feb6b1baad635","43902f9b8e574f8eb461289baa4d26e1","36c3972b64bd48c06e418b20441f3f43",{"version":"2514e9a2749c0fc18d2f478e9e1e641e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6ae4c332ecb24e76c1e47c0e21d4663d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"69ee0752d1e70c56ca160360425752a9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bf33440030f0a0fae7d1efd6c293a8d2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9af0a7e3ef1c42cd066b9f8d365cc1ba","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7b772cebc7136c34fc77954aef70519d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9eca652586205dc5b07f9ba57b1c8500","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ec5f75939754ce94652189ec7d0d3058","affectsGlobalScope":true,"impliedNodeFormat":1},"628b774b54637325e286752c79c12432","bb1f9e3091b88e9d0e93b7198c736af3","514fd35e5eb35bb2e5cbb908af0a0aa2","ed57ae88565308729f2327f26d684976","dcd932d6b0038f2e250e30dc10125b22","9508c917bd7e458745e222a82dd24ef0","fabf86f455f96b90538cc26320ab2765","14550b4cd9f433e0addd8b6d67614d23","cf0ac6aebc25cb780674653aaeee688e","35fef7bac8048f583e4ce6eaa0c2a4c0","6752dc653fc7a333027249fd851fdb62","b9ad7e689b46dfba362c1bf174e69018","8b0a2930dfabdf27c69c6bb1eeabcdc8","4513b1ed15523d247040689f37fa9db2","5c0c499eed773a750903d9497beafacd","2377da227d1bac82ff7b3f2081ddf8d3","beef985b474fefeb80d27fb2c8778371","c79fc9d9f09ae598a374ae7c0b5284a4","f2caa3cebb1e6be855519004830a6be0","8ebc9f2a77c900e710801214c5cb994c","ec617a0e0577dd6a3210c3b067ecb325","1db5d06e485bd82d6d5f6e36925a8714","24b864518967840216c779b5e5f00975","8719cd8047700bfb6046798390053823","f2840afb502c94db92dab0fb8d27812f","a7e7d08b372210c203745d3eac61a411","531183cc80535e0e94226d720e5eb038","f627eb958ca52c85e42f04dce4661f86","9a43fc665bce9012a3d5fe1b574ff4dc","13f4b4da6546a34719fd6bde15fb63dd","a589216508844bfc00e62fc2d97fda45","865aea1c3209e31b076cb6fe780e769e","12e64aaf26af0f5c8f1b263dd66e3feb","928971ebbcdf5b093ef37669b33bddf6","b744265d8ad12b7d4d5c5dc35d18d44e","eff32168b8348b822afeed9cbf61afa7","9aafd1f29b4d8861c1c6c34bf83c0721",{"version":"dd1cf1cc3aa21cd78b4869a44d98c6d9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"292c9398a407b33b1d9c9812b673387a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"45df94b3c51b898624bacc2bcd6d9eb2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7d352f71d1b1bcc12c79dd0e4597537c","affectsGlobalScope":true,"impliedNodeFormat":1},"db11b80743ed5356b81d763a708788e6","39078ea063fcaf72bd3cca7e0d13d017","f81aa09811fa65ac6f354ab0018d3c38",{"version":"282318b178d190157a4deacb14f3040a","affectsGlobalScope":true,"impliedNodeFormat":1},"aafe512c4216100fd65028f9b2afce83","54c5c3dcfdb5f7cf5fbbccfff6ead3fa",{"version":"dc14f078230582a2f8fb2138bfcf4f85","affectsGlobalScope":true,"impliedNodeFormat":1},"b2b472cd0bf0f8d5f022e00ca1c401f4","370d966b810b687a9e58851208cb3d4c","39b3089f3df8d14e0f2ddac0479872d9","cc7a57e86f908c313649aea8d90377e1","5c271f10d8a9b9a1206bc82a4fe5b84d","fbe31979333ec391d8b59e8f42236e8e","6751c8c175fac6bbe7b935582cdfdca7",{"version":"a3f111d2a29b6cdd04fc4b41aa560c86","affectsGlobalScope":true,"impliedNodeFormat":1},"5f4ac576bcdc670a8489c881b23a2b17","a500e7362abeae2d2f1fefea525dc869","02a1ccf1ef65bfbf65865ac4ce346974","d589d01c82f6793f20d2f5c838462e3d","dbe700f7f1fa52fd220c7ee2c6617ebc","579675a2c3b0f8c532a82ad9cbd5d384","b2e8f93606aeb2dee2a4cc9272c56973",{"version":"a8e5d3e42303570b1114b6cd9ef9f38a","affectsGlobalScope":true,"impliedNodeFormat":1},"0003c8459d069181cc4856724fcf2832","c9053dbbe4fa2853f2d3f73b9a2fee81","4e458316a6083cbd2bba2fd29f674dd5",{"version":"3cccee1f2c106192d18ac4e08119f872","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"057189402e597cd50262b082723f21ff","affectsGlobalScope":true,"impliedNodeFormat":1},"6b26581aa2587701d570206a0db8c9ee","88a29e2aac8082c0910733950159e1ca","10282f14d9c2a5cbf3bcf2b1c8cebeaf","0f80958d77cd6301b43c1d7904e3e4bc","3bdc645524ab0d2f6795d3a008833bd7","deb50b47eb75a5566532a763fa1324fa","6e61cd09c2e15845909de3ed59a00b37","3e4ffe5f2733e0589b2612bd86f6cec3","c8206d568b54e5ea06131963eecd576a","15878f4f50c2e562c0768eb735c2aed5",{"version":"cb8f7733bee3d973c152a75fad9f6da6","affectsGlobalScope":true,"impliedNodeFormat":1},"dd404118e8bd70aff746f7d31e46270b","a0fa4618173795c74b488178ea77f951",{"version":"6b8649a280031d9e86955db721cfad87","affectsGlobalScope":true,"impliedNodeFormat":1},"4bc8f13c472858fb74f77388c0c5d885","75ab229142dad0ca2ff14d02d52f11f9","c72d2516d1e8910caca33c4dff75fcd4","f0231f36cb7117fbe9271ff19ef0f5f4",{"version":"8a642eed2a45ac7028479b6089a04842","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e6ddb6b86dc5d86e75ba797d5324346","affectsGlobalScope":true,"impliedNodeFormat":1},"701aef085585b152042aa216b06bb4b8","e9bc5b1de50e48fa9857b64091673883","9268959cff1006c82e6abbd73824db97",{"version":"8f1c048bd5761910f5ea340fe4d792cd","affectsGlobalScope":true,"impliedNodeFormat":1},"6b1f3649b0eabeaca20c778fcc5f270c","eb567c7b5824aab578f75bbccf9f4b05","a4a64c20828c248f64ab602c65fcc898","aa8fe326a08e391ed85919ae9225b5d8","df2ef139f990dc6798403c348fa0c515","704157a030439c868268d8f88de46072","6a1054783813fcf4b46a86f5a413bac4","7320b55c7d8a1c10845e3a8716d3cccc","d439c023aff246773feabfcdb983e50a","731b2be654a4c294713f67cdd92482a4","17ce17729a326eacbd035cbc718c6426","e60ec934c3a5005f7bcf40adc389c9c0","cf2a06b489c109d7419be9da41301c32","7e25e368ee2a3a23794e7c109d89036e","7e5f04f329f6466604c2bebf9b53785b","e1fc8374904606de16044d56de04d6f6","f75dfe0f453a3bce695c04396208ceca","0799178e06fbbcfbbc1356fb1691563a","0550f001aaf6c4c8d5075d0b131a1ee6","3aa001cc534f90c57017f4247dbf623c","58e9b716b50fdc8506289bd37edd9a55","e57308a210aad8834059b2518d3ed422","02d912d2b8799c299fc1d56e7be02c46","4de8bc3326daf3f5fcca477dc9f9e90f","e262c420af7f309bad69c9fac5ad75f5","d48e8af0231295e2fe1335efaab98950","72a1e7fd9797cac786f14da64b956b9e","554be60f9313ae1bc235b4722830aea3","b344c7f362a9fb040f4e7ddfaadffe07","99e998276e02fd0e94ba159605758948","4930a435159fd70bee0be8ce6f5c1c45","911845dc5fddf58136490556f78268e7","be758af7daa305612e4db2d892b54139","9de1b139d3a9fa79e667f4d30c5b392b","f8059a9ddf1aeefd103fce9c853541b9","91d3c0401c8dd371dd462885c8426b5d","7ea1b4e11dda1cb41e3b8a05416064e8","44a579d325b24ec18433ef0f15968ffa","f58db38c7a1188d64ae29c9ff6748c46","6d6fcab6a7663b8314c5123ae0389e0a","a918e723cfac239d6a8a521275f9e03b","cd5c183c2bad150213a0cccaafe937e2",{"version":"13fc504fe4ab28ad42bce734f31e72e5","affectsGlobalScope":true,"impliedNodeFormat":1},"f100181a3e9ff7f5b23eed47dd66a1de","fbb1086d78fad2e81eefa859d53b6ffd","fa614d3a843db2f4f4f804155cf537a6","406d0e50f03efd9f1bf194e636900c24","0e48787e4182c9e5fa152df709477142","617399321fc6d3cb670fd86fd16e23fe","552f541423f4ebe60812d7a97bfad20f","d0f08f4378d53b5ff074f35ee958f415","99a5f97607bdc950e62029b9fd6c2cc8","75f88367dfa713c86689a6abb4cc83b6","7a7f77782d759e9c59f836283f32c5e7","035214f788b8788a5105f15de828c94b","9554e9c633a10b8df0037b0f55d0ade9","57f1f28b7116a08815097fc4ab8aad15","e403073cebf5bd3db988c2dd8bff7ef8","1e16eca1224df2327ca184d56fa990f8","aa733ff5876e74596a9bc959e052075e","e020135f630a65aee72cc9720d3b3f45","39cf2afa23d9b9b0cd389be526553a99","bac4e79bf597beef4670ba4172cf4601","19ea683f237d4f1a8d1fb5789ed7ff36",{"version":"84abec7188cc883a941b4ccd7fd9d289","impliedNodeFormat":99},"b054c471abb80fc8a43acab9bea000a3","8380977a7a864769d4c9d984bc964574","36ab07a0a935e1fb905248d0f525b297","9b755cebe4e5505cec0f9a6aa7866d4f","aa47ff7f1f61ab4be48e069f6b4d6ccc","d36e24d66e97cf0c76d270e1a8bc02f0","0e05a3914d64387c7a6eca13f97f3d09","115b9f5f1484f3d25821798d1644a2c8","157601ad4f7f7a4021ad53b71fd12776",{"version":"90e6601d79389924f73e179905d010ff","signature":"e547b80183f92e21189a7396c58dcbf7","impliedNodeFormat":1},{"version":"b01deb5dc72d3db32be018a6438bed8c","signature":"782cff46b4396155df88a6e685f81bdd","impliedNodeFormat":1},{"version":"fcfba4e244431eacb095b4fad52ee787","signature":"2e330db4e7778ce0ded31119464426e8","impliedNodeFormat":1},{"version":"a47941acc3cffea7c31b7f5782450718","signature":"c96b805a64adf79eafe76361bfe01a73","impliedNodeFormat":1},{"version":"1b1e1cdf2f8e232d0fbd2495d1949531","signature":"80bc89756e46afe8e231ae2a342593f4","impliedNodeFormat":1},{"version":"3c0ed70dd9a29d1995583d65b20b0319","signature":"abe7d9981d6018efb6b2b794f40a1607","impliedNodeFormat":1},{"version":"9f73306a8a7552f4e69ef205edeb060b","signature":"89c6d09d92c6a361f0cf252f3ab0868e","impliedNodeFormat":1}],"fileIdsList":[[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,241,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,217,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,236,237,238,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,239,240,242,261],[98,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[96,97,98,99,100,101,102,103,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,231,261],[98,112,116,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,109,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,104,105,108,111,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,119,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,110,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,133,134,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,108,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,133,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,106,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,127,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,119,120,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,110,112,120,121,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,111,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,107,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,116,120,121,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,116,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,110,112,115,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,109,112,119,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,112,133,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,231,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,228,229,230,232,233,234,235,244,245,246,247,248,249,252,253,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,243,254,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,250,251,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,217,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,220,224,225,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,221,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,219,220,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,219,220,222,223,226,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,256,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,255,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,262,264],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,258,261,262,265,266,267,268,269],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,259,260,261,264,265,266],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,263],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,260,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,201,203,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,202,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,203,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,205,206,207,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,199,200,202,203,208,215,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,209,210,211,212,213,214,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,200,202,261],[94,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,216,261,275],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,216,218,254,261,274],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,218,254,261,271,272],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,271,272,273,274],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,261,271],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,218,254,257,261,270,271,272,273]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationMap":true,"jsx":3,"module":200,"noImplicitAny":false,"outDir":"./build","removeComments":false,"rootDir":"./src","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":99,"allowSyntheticDefaultImports":true,"esModuleInterop":true},"referencedMap":[[91,1],[92,1],[16,1],[14,1],[15,1],[20,1],[19,1],[2,1],[21,1],[22,1],[23,1],[24,1],[25,1],[26,1],[27,1],[28,1],[3,1],[29,1],[30,1],[4,1],[31,1],[35,1],[32,1],[33,1],[34,1],[36,1],[37,1],[38,1],[5,1],[39,1],[40,1],[41,1],[42,1],[6,1],[46,1],[43,1],[44,1],[45,1],[47,1],[7,1],[48,1],[53,1],[54,1],[49,1],[50,1],[51,1],[52,1],[8,1],[58,1],[55,1],[56,1],[57,1],[59,1],[9,1],[60,1],[61,1],[62,1],[64,1],[63,1],[65,1],[66,1],[10,1],[67,1],[68,1],[69,1],[11,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[12,1],[76,1],[77,1],[78,1],[79,1],[80,1],[1,1],[81,1],[82,1],[13,1],[83,1],[84,1],[85,1],[86,1],[93,1],[87,1],[88,1],[89,1],[90,1],[18,1],[17,1],[242,2],[241,3],[218,4],[239,5],[243,6],[231,1],[217,1],[145,7],[146,8],[147,9],[98,10],[148,11],[149,12],[150,13],[96,1],[151,14],[152,15],[153,16],[154,17],[155,18],[156,19],[157,20],[158,21],[159,22],[160,23],[161,24],[99,1],[97,1],[162,25],[163,26],[164,27],[198,28],[165,29],[166,30],[167,31],[168,32],[169,33],[170,34],[171,35],[172,36],[173,37],[174,38],[175,39],[176,40],[177,41],[178,42],[179,43],[180,44],[182,45],[181,46],[183,47],[184,48],[185,49],[186,50],[187,51],[188,52],[189,53],[190,54],[191,55],[192,56],[193,57],[194,58],[195,59],[100,1],[101,1],[102,1],[103,1],[141,60],[142,1],[143,1],[144,1],[196,61],[197,62],[237,1],[238,1],[236,3],[240,63],[119,64],[129,65],[118,64],[139,66],[110,67],[109,1],[138,3],[132,68],[137,67],[112,69],[126,70],[111,71],[135,72],[107,73],[106,3],[136,74],[108,75],[113,65],[114,1],[117,65],[104,1],[140,76],[130,77],[121,78],[122,79],[124,80],[120,81],[123,82],[133,3],[115,83],[116,84],[125,85],[105,1],[128,77],[127,65],[131,1],[134,86],[228,87],[229,1],[230,1],[232,88],[233,1],[254,89],[234,1],[235,87],[244,90],[245,1],[250,1],[251,1],[246,87],[247,1],[248,1],[249,1],[252,91],[253,1],[224,3],[225,92],[219,1],[226,93],[220,1],[222,94],[221,95],[223,1],[227,96],[257,97],[256,98],[255,99],[266,1],[265,100],[270,101],[262,1],[258,87],[267,102],[268,87],[264,103],[269,1],[261,104],[259,3],[263,105],[260,3],[202,106],[203,107],[204,108],[205,108],[208,109],[206,108],[207,108],[216,110],[209,111],[210,111],[211,111],[212,1],[213,1],[214,111],[215,112],[201,113],[94,1],[95,114],[200,1],[199,1],[276,115],[275,116],[273,117],[277,118],[272,119],[271,99],[274,120]],"latestChangedDtsFile":"./build/index.d.ts"}
|
|
1
|
+
{"version":"7.0.2","root":[[271,277]],"packageJsons":["../../../node_modules/.pnpm/@types+body-parser@1.19.6/node_modules/@types/body-parser/package.json","../../../node_modules/.pnpm/@types+connect@3.4.38/node_modules/@types/connect/package.json","../../../node_modules/.pnpm/@types+cors@2.8.19/node_modules/@types/cors/package.json","../../../node_modules/.pnpm/@types+debug@4.1.13/node_modules/@types/debug/package.json","../../../node_modules/.pnpm/@types+express-serve-static-core@5.1.3/node_modules/@types/express-serve-static-core/package.json","../../../node_modules/.pnpm/@types+express@5.0.6/node_modules/@types/express/package.json","../../../node_modules/.pnpm/@types+http-errors@2.0.5/node_modules/@types/http-errors/package.json","../../../node_modules/.pnpm/@types+jsonwebtoken@9.0.10/node_modules/@types/jsonwebtoken/package.json","../../../node_modules/.pnpm/@types+ms@2.1.0/node_modules/@types/ms/package.json","../../../node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/package.json","../../../node_modules/.pnpm/@types+qs@6.15.1/node_modules/@types/qs/package.json","../../../node_modules/.pnpm/@types+range-parser@1.2.7/node_modules/@types/range-parser/package.json","../../../node_modules/.pnpm/@types+send@1.2.1/node_modules/@types/send/package.json","../../../node_modules/.pnpm/@types+serve-static@2.2.0/node_modules/@types/serve-static/package.json","../../../node_modules/.pnpm/clipanion@4.0.0-rc.4_typanion@3.14.0/node_modules/clipanion/package.json","../../../node_modules/.pnpm/colorette@2.0.20/node_modules/colorette/package.json","../../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/package.json","../../../node_modules/.pnpm/express@5.2.1_supports-color@10.2.2/node_modules/express/package.json","../../../node_modules/.pnpm/http-errors@2.0.1/node_modules/http-errors/package.json","../../../node_modules/.pnpm/pino-abstract-transport@3.0.0/node_modules/pino-abstract-transport/package.json","../../../node_modules/.pnpm/pino@10.3.1/node_modules/pino/package.json","../../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/package.json","../../../node_modules/.pnpm/typanion@3.14.0/node_modules/typanion/package.json","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/package.json","../../core/core/package.json","../../core/types/package.json","../../loaders/package.json","../../logger/package.json","./package.json"],"missingPackageJsons":["../../../node_modules/@types/assert/package.json","../../../node_modules/@types/assert/strict/package.json","../../../node_modules/@types/async_hooks/package.json","../../../node_modules/@types/buffer/package.json","../../../node_modules/@types/child_process/package.json","../../../node_modules/@types/cluster/package.json","../../../node_modules/@types/console/package.json","../../../node_modules/@types/constants/package.json","../../../node_modules/@types/crypto/package.json","../../../node_modules/@types/dgram/package.json","../../../node_modules/@types/diagnostics_channel/package.json","../../../node_modules/@types/dns/package.json","../../../node_modules/@types/dns/promises/package.json","../../../node_modules/@types/domain/package.json","../../../node_modules/@types/events/package.json","../../../node_modules/@types/fs/package.json","../../../node_modules/@types/fs/promises/package.json","../../../node_modules/@types/http/package.json","../../../node_modules/@types/http2/package.json","../../../node_modules/@types/https/package.json","../../../node_modules/@types/inspector/package.json","../../../node_modules/@types/inspector/promises/package.json","../../../node_modules/@types/module/package.json","../../../node_modules/@types/net/package.json","../../../node_modules/@types/node/assert/package.json","../../../node_modules/@types/node/compatibility/package.json","../../../node_modules/@types/node/dns/package.json","../../../node_modules/@types/node/fs/package.json","../../../node_modules/@types/node/readline/package.json","../../../node_modules/@types/node/stream/package.json","../../../node_modules/@types/node/timers/package.json","../../../node_modules/@types/node/web-globals/package.json","../../../node_modules/@types/os/package.json","../../../node_modules/@types/path/package.json","../../../node_modules/@types/path/posix/package.json","../../../node_modules/@types/path/win32/package.json","../../../node_modules/@types/perf_hooks/package.json","../../../node_modules/@types/pino-std-serializers/package.json","../../../node_modules/@types/process/package.json","../../../node_modules/@types/punycode/package.json","../../../node_modules/@types/querystring/package.json","../../../node_modules/@types/readline/package.json","../../../node_modules/@types/readline/promises/package.json","../../../node_modules/@types/repl/package.json","../../../node_modules/@types/stream/consumers/package.json","../../../node_modules/@types/stream/package.json","../../../node_modules/@types/stream/promises/package.json","../../../node_modules/@types/stream/web/package.json","../../../node_modules/@types/string_decoder/package.json","../../../node_modules/@types/thread-stream/package.json","../../../node_modules/@types/timers/package.json","../../../node_modules/@types/timers/promises/package.json","../../../node_modules/@types/tls/package.json","../../../node_modules/@types/trace_events/package.json","../../../node_modules/@types/tty/package.json","../../../node_modules/@types/typanion/package.json","../../../node_modules/@types/url/package.json","../../../node_modules/@types/util/package.json","../../../node_modules/@types/util/types/package.json","../../../node_modules/@types/v8/package.json","../../../node_modules/@types/vm/package.json","../../../node_modules/@types/wasi/package.json","../../../node_modules/@types/worker_threads/package.json","../../../node_modules/@types/zlib/package.json","../../../node_modules/assert/package.json","../../../node_modules/assert/strict/package.json","../../../node_modules/async_hooks/package.json","../../../node_modules/body-parser/package.json","../../../node_modules/buffer/package.json","../../../node_modules/child_process/package.json","../../../node_modules/cluster/package.json","../../../node_modules/connect/package.json","../../../node_modules/console/package.json","../../../node_modules/constants/package.json","../../../node_modules/crypto/package.json","../../../node_modules/dgram/package.json","../../../node_modules/diagnostics_channel/package.json","../../../node_modules/dns/package.json","../../../node_modules/dns/promises/package.json","../../../node_modules/domain/package.json","../../../node_modules/events/package.json","../../../node_modules/express-serve-static-core/package.json","../../../node_modules/express/package.json","../../../node_modules/fs/package.json","../../../node_modules/fs/promises/package.json","../../../node_modules/http-errors/package.json","../../../node_modules/http/package.json","../../../node_modules/http2/package.json","../../../node_modules/https/package.json","../../../node_modules/inspector/package.json","../../../node_modules/inspector/promises/package.json","../../../node_modules/module/package.json","../../../node_modules/ms/package.json","../../../node_modules/net/package.json","../../../node_modules/os/package.json","../../../node_modules/path/package.json","../../../node_modules/path/posix/package.json","../../../node_modules/path/win32/package.json","../../../node_modules/perf_hooks/package.json","../../../node_modules/pino-std-serializers/package.json","../../../node_modules/process/package.json","../../../node_modules/punycode/package.json","../../../node_modules/qs/package.json","../../../node_modules/querystring/package.json","../../../node_modules/range-parser/package.json","../../../node_modules/readline/package.json","../../../node_modules/readline/promises/package.json","../../../node_modules/repl/package.json","../../../node_modules/send/package.json","../../../node_modules/serve-static/package.json","../../../node_modules/stream/consumers/package.json","../../../node_modules/stream/package.json","../../../node_modules/stream/promises/package.json","../../../node_modules/stream/web/package.json","../../../node_modules/string_decoder/package.json","../../../node_modules/thread-stream/package.json","../../../node_modules/timers/package.json","../../../node_modules/timers/promises/package.json","../../../node_modules/tls/package.json","../../../node_modules/trace_events/package.json","../../../node_modules/tty/package.json","../../../node_modules/typanion/package.json","../../../node_modules/url/package.json","../../../node_modules/util/package.json","../../../node_modules/util/types/package.json","../../../node_modules/v8/package.json","../../../node_modules/vm/package.json","../../../node_modules/wasi/package.json","../../../node_modules/worker_threads/package.json","../../../node_modules/zlib/package.json","./node_modules/@verdaccio/core/build/package.json","./node_modules/@verdaccio/core/build/schemes/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/core/node_modules/crypto/package.json","./node_modules/@verdaccio/core/node_modules/http/package.json","./node_modules/@verdaccio/core/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/build/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/express/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/http-errors/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@types/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/build/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/build/schemes/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/@verdaccio/core/node_modules/ms/package.json","./node_modules/@verdaccio/loaders/node_modules/crypto/package.json","./node_modules/@verdaccio/loaders/node_modules/express/package.json","./node_modules/@verdaccio/loaders/node_modules/http-errors/package.json","./node_modules/@verdaccio/loaders/node_modules/http/package.json","./node_modules/@verdaccio/loaders/node_modules/ms/package.json","./node_modules/@verdaccio/logger/build/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/http/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/@types/ms/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/cors/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/http/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/jsonwebtoken/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/node_modules/ms/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/src/package.json","./node_modules/@verdaccio/logger/node_modules/@verdaccio/types/src/plugins/package.json","./node_modules/@verdaccio/logger/node_modules/crypto/package.json","./node_modules/@verdaccio/logger/node_modules/events/package.json","./node_modules/@verdaccio/logger/node_modules/http/package.json","./node_modules/@verdaccio/logger/node_modules/ms/package.json","./node_modules/@verdaccio/logger/node_modules/pino-std-serializers/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/events/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/pino-std-serializers/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/sonic-boom/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/thread-stream/package.json","./node_modules/@verdaccio/logger/node_modules/pino/node_modules/worker_threads/package.json","./node_modules/@verdaccio/logger/node_modules/sonic-boom/types/package.json","./node_modules/@verdaccio/logger/node_modules/stream/package.json","./node_modules/@verdaccio/logger/node_modules/thread-stream/package.json","./node_modules/@verdaccio/logger/node_modules/worker_threads/package.json","./node_modules/clipanion/lib/advanced/builtins/package.json","./node_modules/clipanion/lib/advanced/options/package.json","./node_modules/clipanion/lib/advanced/package.json","./node_modules/clipanion/lib/package.json","./node_modules/crypto/package.json","./node_modules/events/package.json","./node_modules/express/package.json","./node_modules/http-errors/package.json","./node_modules/http/package.json","./node_modules/ms/package.json","./node_modules/pino-std-serializers/package.json","./node_modules/stream/package.json","./node_modules/thread-stream/package.json","./node_modules/typanion/package.json","./node_modules/worker_threads/package.json"],"fileNames":["lib.es5.d.ts","lib.es2015.d.ts","lib.es2016.d.ts","lib.es2017.d.ts","lib.es2018.d.ts","lib.es2019.d.ts","lib.es2020.d.ts","lib.es2021.d.ts","lib.es2022.d.ts","lib.es2023.d.ts","lib.es2024.d.ts","lib.es2025.d.ts","lib.esnext.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts","lib.dom.asynciterable.d.ts","lib.webworker.importscripts.d.ts","lib.scripthost.d.ts","lib.es2015.core.d.ts","lib.es2015.collection.d.ts","lib.es2015.generator.d.ts","lib.es2015.iterable.d.ts","lib.es2015.promise.d.ts","lib.es2015.proxy.d.ts","lib.es2015.reflect.d.ts","lib.es2015.symbol.d.ts","lib.es2015.symbol.wellknown.d.ts","lib.es2016.array.include.d.ts","lib.es2016.intl.d.ts","lib.es2017.arraybuffer.d.ts","lib.es2017.date.d.ts","lib.es2017.object.d.ts","lib.es2017.sharedmemory.d.ts","lib.es2017.string.d.ts","lib.es2017.intl.d.ts","lib.es2017.typedarrays.d.ts","lib.es2018.asyncgenerator.d.ts","lib.es2018.asynciterable.d.ts","lib.es2018.intl.d.ts","lib.es2018.promise.d.ts","lib.es2018.regexp.d.ts","lib.es2019.array.d.ts","lib.es2019.object.d.ts","lib.es2019.string.d.ts","lib.es2019.symbol.d.ts","lib.es2019.intl.d.ts","lib.es2020.bigint.d.ts","lib.es2020.date.d.ts","lib.es2020.promise.d.ts","lib.es2020.sharedmemory.d.ts","lib.es2020.string.d.ts","lib.es2020.symbol.wellknown.d.ts","lib.es2020.intl.d.ts","lib.es2020.number.d.ts","lib.es2021.promise.d.ts","lib.es2021.string.d.ts","lib.es2021.weakref.d.ts","lib.es2021.intl.d.ts","lib.es2022.array.d.ts","lib.es2022.error.d.ts","lib.es2022.intl.d.ts","lib.es2022.object.d.ts","lib.es2022.string.d.ts","lib.es2022.regexp.d.ts","lib.es2023.array.d.ts","lib.es2023.collection.d.ts","lib.es2023.intl.d.ts","lib.es2024.arraybuffer.d.ts","lib.es2024.collection.d.ts","lib.es2024.object.d.ts","lib.es2024.promise.d.ts","lib.es2024.regexp.d.ts","lib.es2024.sharedmemory.d.ts","lib.es2024.string.d.ts","lib.es2025.collection.d.ts","lib.es2025.float16.d.ts","lib.es2025.intl.d.ts","lib.es2025.iterator.d.ts","lib.es2025.promise.d.ts","lib.es2025.regexp.d.ts","lib.esnext.array.d.ts","lib.esnext.collection.d.ts","lib.esnext.date.d.ts","lib.esnext.decorators.d.ts","lib.esnext.disposable.d.ts","lib.esnext.error.d.ts","lib.esnext.intl.d.ts","lib.esnext.sharedmemory.d.ts","lib.esnext.temporal.d.ts","lib.esnext.typedarrays.d.ts","lib.decorators.d.ts","lib.decorators.legacy.d.ts","lib.esnext.full.d.ts","./node_modules/clipanion/lib/constants.d.ts","./node_modules/clipanion/lib/core.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","./node_modules/clipanion/lib/format.d.ts","./node_modules/clipanion/lib/errors.d.ts","./node_modules/clipanion/lib/advanced/options/utils.d.ts","./node_modules/clipanion/lib/advanced/Cli.d.ts","./node_modules/clipanion/lib/advanced/Command.d.ts","./node_modules/clipanion/lib/advanced/builtins/definitions.d.ts","./node_modules/clipanion/lib/advanced/builtins/help.d.ts","./node_modules/clipanion/lib/advanced/builtins/tokens.d.ts","./node_modules/clipanion/lib/advanced/builtins/version.d.ts","./node_modules/clipanion/lib/advanced/builtins/index.d.ts","./node_modules/clipanion/lib/advanced/options/Array.d.ts","./node_modules/clipanion/lib/advanced/options/Boolean.d.ts","./node_modules/clipanion/lib/advanced/options/Counter.d.ts","./node_modules/clipanion/lib/advanced/options/Proxy.d.ts","./node_modules/clipanion/lib/advanced/options/Rest.d.ts","./node_modules/clipanion/lib/advanced/options/String.d.ts","./node_modules/clipanion/lib/advanced/options/index.d.ts","./node_modules/clipanion/lib/advanced/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/commons.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/manifest.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/storage.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/plugins/index.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/search.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/cors/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/node_modules/@types/jsonwebtoken/index.d.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/configuration.ts","./node_modules/@verdaccio/core/node_modules/@verdaccio/types/src/types.ts","./node_modules/@verdaccio/core/build/auth-utils.d.ts","./node_modules/@verdaccio/core/build/constants.d.ts","./node_modules/@verdaccio/core/build/crypto-utils.d.ts","../../../node_modules/@types/http-errors/index.d.ts","./node_modules/@verdaccio/core/build/error-utils.d.ts","./node_modules/@verdaccio/core/build/file-utils.d.ts","./node_modules/@verdaccio/core/build/ip-utils.d.ts","./node_modules/@verdaccio/core/build/pkg-utils.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/express/index.d.ts","./node_modules/@verdaccio/core/build/plugin-utils.d.ts","./node_modules/@verdaccio/core/build/req-utils.d.ts","./node_modules/@verdaccio/core/build/search-utils.d.ts","./node_modules/@verdaccio/core/build/stream-utils.d.ts","./node_modules/@verdaccio/core/build/string-utils.d.ts","./node_modules/@verdaccio/core/build/tarball-utils.d.ts","./node_modules/@verdaccio/core/build/schemes/publish-manifest.d.ts","./node_modules/@verdaccio/core/build/schemes/unpublish-manifest.d.ts","./node_modules/@verdaccio/core/build/validation-utils.d.ts","./node_modules/@verdaccio/core/build/warning-utils.d.ts","./node_modules/@verdaccio/core/build/index.d.ts","./node_modules/@verdaccio/loaders/build/utils.d.ts","./node_modules/@verdaccio/loaders/build/plugin-async-loader.d.ts","./node_modules/@verdaccio/loaders/build/index.d.ts","./node_modules/@verdaccio/logger/build/logger.d.ts","./node_modules/@verdaccio/logger/node_modules/pino-abstract-transport/index.d.ts","./node_modules/@verdaccio/logger/node_modules/sonic-boom/types/index.d.ts","./node_modules/@verdaccio/logger/node_modules/colorette/index.d.ts","./node_modules/@verdaccio/logger/build/levels.d.ts","./node_modules/@verdaccio/logger/node_modules/pino/pino.d.ts","./node_modules/@verdaccio/logger/build/types.d.ts","./node_modules/@verdaccio/logger/build/formatter.d.ts","./node_modules/@verdaccio/logger/build/colors.d.ts","./node_modules/@verdaccio/logger/build/prettify.d.ts","./node_modules/@verdaccio/logger/build/transport.d.ts","./node_modules/@verdaccio/logger/build/utils.d.ts","./node_modules/@verdaccio/logger/build/index.d.ts","./src/types.ts","./src/sanity-checks.ts","./src/diagnostics.ts","./src/verify-plugin.ts","./src/commands/verify.ts","./src/cli.ts","./src/index.ts"],"fileInfos":[{"version":"16934abaab7026ac114da441aabea1a0","affectsGlobalScope":true,"impliedNodeFormat":1},"d4306fb2e47f74835e8674ffac07d76f","e437c5c1302869326c3bb93da85bbbcf","e4324975a566567b21d350615f1fc6ac","333b1b9a2a9ac3b8497dba5c63b5ba50","6cffacd662b6eb5fa7a36aa2ea366bfa","b4c34f9c23304dbef2d23698637ed638","e5cb86a5fc491796ecd1d2dd348d208f","feb6c6fb19cdb246a5d8acb36a6901c7","9443a7f109277ffaa79d893ed2549995","793cee405385076e27c24f409659dccd","09f69c6610266eaee1ac9e3e30df2c71","62bad718844246b8e17547f37bad6085",{"version":"aae8996e8b5684814785a42cbbefcd79","affectsGlobalScope":true,"impliedNodeFormat":1},"abad6dd56cc8caf095c165df8124d237","abad6dd56cc8caf095c165df8124d237",{"version":"2a9941db0809c9ad0e8837ed629b1dcc","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d051b93324f36bcc68d152a5ca0988cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"926204c28cd3d073865348473ae28d2e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f25e42c801b2cb3cf2b39792006a9beb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6344b55f26a4e81d9608777dbfb877dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3c0ed28e53d3695b363e256ec1c023fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4c2761daba7f17141c25baa0821ac5da","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b87656acabd63e69379ff6ffcfe52fc7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"597469522da047a5af5222cc6989f405","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1708ea4d34dc37fadadc63ca01127e80","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"55d97a8c6fbf34a30450a7b1e5f7a298","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0ee05eb59426d33e374226d8dcfa708b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e347c14030993906efcfbb88915b6a05","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b0231263857c9b6a03641acdc9280ceb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3b15c4a83b598cacb4067676e6f0abed","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b417d97b7934cef63b1889abec0bbfbf","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"09a6cf4032ebba60ce22a501e663f881","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2b056277dd138e8f5650fc04e20eaa8d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e22cc07e3f3cc242ba52fa3f8ea1fc58","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2c45da767a1bfbb220848df1bc4029e4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b44c3e0fbaf2130cdcf6ac38b120ffa1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b612fb5cf8e5d964b92063a75207632a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"02705151a5e1551b9162a9ed8ab763f7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"41025e398be9215d32e4337335da8f0b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"52684c2b1f353a5538e4f275182a54cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6dedb6a4f90d1df3a6fbe5693e44886c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ca3f36fe3562c07e0f0d71c2bebd3f6d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"409974d6129befbb8226ddd1c6558568","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4d9cfde2a1ae1b4925f1f9bc10848e5d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7e1daecc66dd564144e3bb1a0266b5fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a8e1d9bb35fd0637f2f9fd2b2a54f2ec","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4f168501772a6543182765bfd5f2fbfe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a19c80aad1b2162103496f5ba293a732","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b69afa63cd5d059851c78adb2856ee09","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ae2fc5d954e9b0f5feee3d481b953c27","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1cfd3091a071d8b6feec15277643bafe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1da2c1f258970fd3cc91184f69e91a9d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a0d87491913d843139e0c993650a3235","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4ef72aa378127e7b7abba915b0110b1e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3ec74c6a7d4463f0254db3a74cf75646","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"84c2bdfa470d075526cce6322d81b0b6","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0b3844c2b8c73e4e1ab91431411cad11","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4fc71cf4a15b8d99675a31df77f26e07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d1b49564ddaeca3df5b6dbae925d2242","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6a25be566d60ccfc2d6e8b7bfdeefa83","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8a20e27646985dfd58c57ca6566553dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9969f02ad3cdcbf4f709405cda44167f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9c9be4792a7a4f42c15ae7360bf28779","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8cf777fe00349b71ee9c4b6f3fe7fd19","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"74f96bc192530c9723f572bfff3d3078","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1df91c56b25955c56387426f378173c5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"38856f70edcd2115c355d96ec77cc09e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de8700156c1275465bcd473c28b359aa","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d47cfdb6ede40518357bb5a4cd7cd9fb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6e5773860cd9e5b15e683113f642ab47","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"30ff5fe1682f7fcd629880476ca3c2e0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bf23d7d1b40b9015b694ddc2f011752f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2cc585d42e2c548f9f24a30a1989fd33","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"713906ce9d332d2242b7f05ed9304be3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0219894bfe5042c7e1aa2d22e4a91ed0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6009ffff7e43c93318804d2d28e37fe3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"03be89b227587594fbb50509fc1c2e45","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b30df52dc24740c0bad7c55c3511df7d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ab8d3c9b5ed5c2ab8f383607eef439f0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d950ec671d0a8e07f3c1a31e94abed86","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1abef2ace5eccb02d60dd73cd5a5ee4c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f5f0a3044029d1cc081b5887eb4deb07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d57c697f1446940ec4bfe669c962e2c4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be41035d7b941482a1e1ae6a5c5dcca5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"10f7d9da7564f27f8ddf4a162b6da6d3","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1d0520af549e0c3581f15173cc713ca1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d65083f97fd741cff028472563eddb79","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"da7f24f00653ebac660ac1c0821ed33d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cb5ae9e65516ea2235f0721f6aac43c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f64453cbf9671f28158677fa5c43967a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"33f317af5428801f944a478d2c1e38e5","affectsGlobalScope":true,"impliedNodeFormat":1},"2bccd8eaa1dc27e6e29feb6b1baad635","43902f9b8e574f8eb461289baa4d26e1","36c3972b64bd48c06e418b20441f3f43",{"version":"2514e9a2749c0fc18d2f478e9e1e641e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6ae4c332ecb24e76c1e47c0e21d4663d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"69ee0752d1e70c56ca160360425752a9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bf33440030f0a0fae7d1efd6c293a8d2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9af0a7e3ef1c42cd066b9f8d365cc1ba","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7b772cebc7136c34fc77954aef70519d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9eca652586205dc5b07f9ba57b1c8500","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ec5f75939754ce94652189ec7d0d3058","affectsGlobalScope":true,"impliedNodeFormat":1},"628b774b54637325e286752c79c12432","bb1f9e3091b88e9d0e93b7198c736af3","514fd35e5eb35bb2e5cbb908af0a0aa2","ed57ae88565308729f2327f26d684976","dcd932d6b0038f2e250e30dc10125b22","9508c917bd7e458745e222a82dd24ef0","fabf86f455f96b90538cc26320ab2765","14550b4cd9f433e0addd8b6d67614d23","cf0ac6aebc25cb780674653aaeee688e","35fef7bac8048f583e4ce6eaa0c2a4c0","6752dc653fc7a333027249fd851fdb62","b9ad7e689b46dfba362c1bf174e69018","8b0a2930dfabdf27c69c6bb1eeabcdc8","4513b1ed15523d247040689f37fa9db2","5c0c499eed773a750903d9497beafacd","2377da227d1bac82ff7b3f2081ddf8d3","beef985b474fefeb80d27fb2c8778371","c79fc9d9f09ae598a374ae7c0b5284a4","f2caa3cebb1e6be855519004830a6be0","8ebc9f2a77c900e710801214c5cb994c","ec617a0e0577dd6a3210c3b067ecb325","1db5d06e485bd82d6d5f6e36925a8714","24b864518967840216c779b5e5f00975","8719cd8047700bfb6046798390053823","f2840afb502c94db92dab0fb8d27812f","a7e7d08b372210c203745d3eac61a411","531183cc80535e0e94226d720e5eb038","f627eb958ca52c85e42f04dce4661f86","9a43fc665bce9012a3d5fe1b574ff4dc","13f4b4da6546a34719fd6bde15fb63dd","a589216508844bfc00e62fc2d97fda45","865aea1c3209e31b076cb6fe780e769e","12e64aaf26af0f5c8f1b263dd66e3feb","928971ebbcdf5b093ef37669b33bddf6","b744265d8ad12b7d4d5c5dc35d18d44e","eff32168b8348b822afeed9cbf61afa7","9aafd1f29b4d8861c1c6c34bf83c0721",{"version":"dd1cf1cc3aa21cd78b4869a44d98c6d9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"292c9398a407b33b1d9c9812b673387a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"45df94b3c51b898624bacc2bcd6d9eb2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7d352f71d1b1bcc12c79dd0e4597537c","affectsGlobalScope":true,"impliedNodeFormat":1},"db11b80743ed5356b81d763a708788e6","39078ea063fcaf72bd3cca7e0d13d017","f81aa09811fa65ac6f354ab0018d3c38",{"version":"282318b178d190157a4deacb14f3040a","affectsGlobalScope":true,"impliedNodeFormat":1},"aafe512c4216100fd65028f9b2afce83","54c5c3dcfdb5f7cf5fbbccfff6ead3fa",{"version":"dc14f078230582a2f8fb2138bfcf4f85","affectsGlobalScope":true,"impliedNodeFormat":1},"b2b472cd0bf0f8d5f022e00ca1c401f4","370d966b810b687a9e58851208cb3d4c","39b3089f3df8d14e0f2ddac0479872d9","cc7a57e86f908c313649aea8d90377e1","5c271f10d8a9b9a1206bc82a4fe5b84d","fbe31979333ec391d8b59e8f42236e8e","6751c8c175fac6bbe7b935582cdfdca7",{"version":"a3f111d2a29b6cdd04fc4b41aa560c86","affectsGlobalScope":true,"impliedNodeFormat":1},"5f4ac576bcdc670a8489c881b23a2b17","a500e7362abeae2d2f1fefea525dc869","02a1ccf1ef65bfbf65865ac4ce346974","d589d01c82f6793f20d2f5c838462e3d","dbe700f7f1fa52fd220c7ee2c6617ebc","579675a2c3b0f8c532a82ad9cbd5d384","b2e8f93606aeb2dee2a4cc9272c56973",{"version":"a8e5d3e42303570b1114b6cd9ef9f38a","affectsGlobalScope":true,"impliedNodeFormat":1},"0003c8459d069181cc4856724fcf2832","c9053dbbe4fa2853f2d3f73b9a2fee81","4e458316a6083cbd2bba2fd29f674dd5",{"version":"3cccee1f2c106192d18ac4e08119f872","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"057189402e597cd50262b082723f21ff","affectsGlobalScope":true,"impliedNodeFormat":1},"6b26581aa2587701d570206a0db8c9ee","88a29e2aac8082c0910733950159e1ca","10282f14d9c2a5cbf3bcf2b1c8cebeaf","0f80958d77cd6301b43c1d7904e3e4bc","3bdc645524ab0d2f6795d3a008833bd7","deb50b47eb75a5566532a763fa1324fa","6e61cd09c2e15845909de3ed59a00b37","3e4ffe5f2733e0589b2612bd86f6cec3","c8206d568b54e5ea06131963eecd576a","15878f4f50c2e562c0768eb735c2aed5",{"version":"cb8f7733bee3d973c152a75fad9f6da6","affectsGlobalScope":true,"impliedNodeFormat":1},"dd404118e8bd70aff746f7d31e46270b","a0fa4618173795c74b488178ea77f951",{"version":"6b8649a280031d9e86955db721cfad87","affectsGlobalScope":true,"impliedNodeFormat":1},"4bc8f13c472858fb74f77388c0c5d885","75ab229142dad0ca2ff14d02d52f11f9","c72d2516d1e8910caca33c4dff75fcd4","f0231f36cb7117fbe9271ff19ef0f5f4",{"version":"8a642eed2a45ac7028479b6089a04842","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e6ddb6b86dc5d86e75ba797d5324346","affectsGlobalScope":true,"impliedNodeFormat":1},"701aef085585b152042aa216b06bb4b8","e9bc5b1de50e48fa9857b64091673883","9268959cff1006c82e6abbd73824db97",{"version":"8f1c048bd5761910f5ea340fe4d792cd","affectsGlobalScope":true,"impliedNodeFormat":1},"6b1f3649b0eabeaca20c778fcc5f270c","eb567c7b5824aab578f75bbccf9f4b05","a4a64c20828c248f64ab602c65fcc898","aa8fe326a08e391ed85919ae9225b5d8","df2ef139f990dc6798403c348fa0c515","704157a030439c868268d8f88de46072","6a1054783813fcf4b46a86f5a413bac4","7320b55c7d8a1c10845e3a8716d3cccc","d439c023aff246773feabfcdb983e50a","731b2be654a4c294713f67cdd92482a4","17ce17729a326eacbd035cbc718c6426","e60ec934c3a5005f7bcf40adc389c9c0","cf2a06b489c109d7419be9da41301c32","7e25e368ee2a3a23794e7c109d89036e","7e5f04f329f6466604c2bebf9b53785b","e1fc8374904606de16044d56de04d6f6","f75dfe0f453a3bce695c04396208ceca","0799178e06fbbcfbbc1356fb1691563a","0550f001aaf6c4c8d5075d0b131a1ee6","3aa001cc534f90c57017f4247dbf623c","58e9b716b50fdc8506289bd37edd9a55","e57308a210aad8834059b2518d3ed422","02d912d2b8799c299fc1d56e7be02c46","4de8bc3326daf3f5fcca477dc9f9e90f","e262c420af7f309bad69c9fac5ad75f5","d48e8af0231295e2fe1335efaab98950","72a1e7fd9797cac786f14da64b956b9e","554be60f9313ae1bc235b4722830aea3","b344c7f362a9fb040f4e7ddfaadffe07","99e998276e02fd0e94ba159605758948","4930a435159fd70bee0be8ce6f5c1c45","911845dc5fddf58136490556f78268e7","be758af7daa305612e4db2d892b54139","9de1b139d3a9fa79e667f4d30c5b392b","f8059a9ddf1aeefd103fce9c853541b9","91d3c0401c8dd371dd462885c8426b5d","7ea1b4e11dda1cb41e3b8a05416064e8","44a579d325b24ec18433ef0f15968ffa","f58db38c7a1188d64ae29c9ff6748c46","6d6fcab6a7663b8314c5123ae0389e0a","a918e723cfac239d6a8a521275f9e03b","cd5c183c2bad150213a0cccaafe937e2",{"version":"13fc504fe4ab28ad42bce734f31e72e5","affectsGlobalScope":true,"impliedNodeFormat":1},"f100181a3e9ff7f5b23eed47dd66a1de","fbb1086d78fad2e81eefa859d53b6ffd","fa614d3a843db2f4f4f804155cf537a6","406d0e50f03efd9f1bf194e636900c24","0e48787e4182c9e5fa152df709477142","617399321fc6d3cb670fd86fd16e23fe","552f541423f4ebe60812d7a97bfad20f","d0f08f4378d53b5ff074f35ee958f415","99a5f97607bdc950e62029b9fd6c2cc8","75f88367dfa713c86689a6abb4cc83b6","7a7f77782d759e9c59f836283f32c5e7","035214f788b8788a5105f15de828c94b","acbdc83f7b6029e40dcd79d764266b50","57f1f28b7116a08815097fc4ab8aad15","e403073cebf5bd3db988c2dd8bff7ef8","1e16eca1224df2327ca184d56fa990f8","aa733ff5876e74596a9bc959e052075e","e020135f630a65aee72cc9720d3b3f45","39cf2afa23d9b9b0cd389be526553a99","bac4e79bf597beef4670ba4172cf4601","19ea683f237d4f1a8d1fb5789ed7ff36",{"version":"84abec7188cc883a941b4ccd7fd9d289","impliedNodeFormat":99},"b054c471abb80fc8a43acab9bea000a3","8380977a7a864769d4c9d984bc964574","36ab07a0a935e1fb905248d0f525b297","9b755cebe4e5505cec0f9a6aa7866d4f","aa47ff7f1f61ab4be48e069f6b4d6ccc","d36e24d66e97cf0c76d270e1a8bc02f0","0e05a3914d64387c7a6eca13f97f3d09","115b9f5f1484f3d25821798d1644a2c8","157601ad4f7f7a4021ad53b71fd12776",{"version":"90e6601d79389924f73e179905d010ff","signature":"e547b80183f92e21189a7396c58dcbf7","impliedNodeFormat":1},{"version":"6902463fd40eda51f7c824c2523106d5","signature":"99fe41d6c5b65b3859443b0de7737c81","impliedNodeFormat":1},{"version":"604c051450357286adb9ef6ff19abf0c","signature":"2e330db4e7778ce0ded31119464426e8","impliedNodeFormat":1},{"version":"527879b07ac93f0314db90f2e616a6fa","signature":"df334884409bd640d1e82bc6c7eba00a","impliedNodeFormat":1},{"version":"1b1e1cdf2f8e232d0fbd2495d1949531","signature":"80bc89756e46afe8e231ae2a342593f4","impliedNodeFormat":1},{"version":"3c0ed70dd9a29d1995583d65b20b0319","signature":"abe7d9981d6018efb6b2b794f40a1607","impliedNodeFormat":1},{"version":"9f73306a8a7552f4e69ef205edeb060b","signature":"89c6d09d92c6a361f0cf252f3ab0868e","impliedNodeFormat":1}],"fileIdsList":[[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,241,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,217,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,236,237,238,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,239,240,242,261],[98,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[96,97,98,99,100,101,102,103,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,140,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,231,261],[98,112,116,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,109,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,104,105,108,111,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,119,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,110,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,133,134,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,108,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,133,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,106,107,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,127,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,119,120,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,110,112,120,121,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,111,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,107,112,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,112,116,120,121,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,116,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,110,112,115,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,104,109,112,119,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,107,112,133,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,231,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,228,229,230,232,233,234,235,244,245,246,247,248,249,252,253,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,243,254,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,250,251,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,217,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,220,224,225,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,221,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,219,220,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,219,220,222,223,226,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,256,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,255,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,262,264],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,227,258,261,262,265,266,267,268,269],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,259,260,261,264,265,266],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,263],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,260,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,201,203,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,202,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,203,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,204,205,206,207,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,199,200,202,203,208,215,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,201,209,210,211,212,213,214,261],[95,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,200,202,261],[94,98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,216,261,275],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,216,218,254,261,274],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,218,254,261,271,272],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,261,271,272,273,274],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,254,261,271],[98,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,218,254,257,261,270,271,272,273]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationMap":true,"jsx":3,"module":200,"noImplicitAny":false,"outDir":"./build","removeComments":false,"rootDir":"./src","skipLibCheck":true,"strict":true,"strictNullChecks":true,"target":99,"allowSyntheticDefaultImports":true,"esModuleInterop":true},"referencedMap":[[91,1],[92,1],[16,1],[14,1],[15,1],[20,1],[19,1],[2,1],[21,1],[22,1],[23,1],[24,1],[25,1],[26,1],[27,1],[28,1],[3,1],[29,1],[30,1],[4,1],[31,1],[35,1],[32,1],[33,1],[34,1],[36,1],[37,1],[38,1],[5,1],[39,1],[40,1],[41,1],[42,1],[6,1],[46,1],[43,1],[44,1],[45,1],[47,1],[7,1],[48,1],[53,1],[54,1],[49,1],[50,1],[51,1],[52,1],[8,1],[58,1],[55,1],[56,1],[57,1],[59,1],[9,1],[60,1],[61,1],[62,1],[64,1],[63,1],[65,1],[66,1],[10,1],[67,1],[68,1],[69,1],[11,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[12,1],[76,1],[77,1],[78,1],[79,1],[80,1],[1,1],[81,1],[82,1],[13,1],[83,1],[84,1],[85,1],[86,1],[93,1],[87,1],[88,1],[89,1],[90,1],[18,1],[17,1],[242,2],[241,3],[218,4],[239,5],[243,6],[231,1],[217,1],[145,7],[146,8],[147,9],[98,10],[148,11],[149,12],[150,13],[96,1],[151,14],[152,15],[153,16],[154,17],[155,18],[156,19],[157,20],[158,21],[159,22],[160,23],[161,24],[99,1],[97,1],[162,25],[163,26],[164,27],[198,28],[165,29],[166,30],[167,31],[168,32],[169,33],[170,34],[171,35],[172,36],[173,37],[174,38],[175,39],[176,40],[177,41],[178,42],[179,43],[180,44],[182,45],[181,46],[183,47],[184,48],[185,49],[186,50],[187,51],[188,52],[189,53],[190,54],[191,55],[192,56],[193,57],[194,58],[195,59],[100,1],[101,1],[102,1],[103,1],[141,60],[142,1],[143,1],[144,1],[196,61],[197,62],[237,1],[238,1],[236,3],[240,63],[119,64],[129,65],[118,64],[139,66],[110,67],[109,1],[138,3],[132,68],[137,67],[112,69],[126,70],[111,71],[135,72],[107,73],[106,3],[136,74],[108,75],[113,65],[114,1],[117,65],[104,1],[140,76],[130,77],[121,78],[122,79],[124,80],[120,81],[123,82],[133,3],[115,83],[116,84],[125,85],[105,1],[128,77],[127,65],[131,1],[134,86],[228,87],[229,1],[230,1],[232,88],[233,1],[254,89],[234,1],[235,87],[244,90],[245,1],[250,1],[251,1],[246,87],[247,1],[248,1],[249,1],[252,91],[253,1],[224,3],[225,92],[219,1],[226,93],[220,1],[222,94],[221,95],[223,1],[227,96],[257,97],[256,98],[255,99],[266,1],[265,100],[270,101],[262,1],[258,87],[267,102],[268,87],[264,103],[269,1],[261,104],[259,3],[263,105],[260,3],[202,106],[203,107],[204,108],[205,108],[208,109],[206,108],[207,108],[216,110],[209,111],[210,111],[211,111],[212,1],[213,1],[214,111],[215,112],[201,113],[94,1],[95,114],[200,1],[199,1],[276,115],[275,116],[273,117],[277,118],[272,119],[271,99],[274,120]],"latestChangedDtsFile":"./build/index.d.ts"}
|