@socketsecurity/lib 1.3.2 → 1.3.3
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 +9 -0
- package/dist/abort.js +1 -60
- package/dist/abort.js.map +2 -2
- package/dist/agent.js +1 -289
- package/dist/agent.js.map +2 -2
- package/dist/ansi.js +1 -60
- package/dist/ansi.js.map +2 -2
- package/dist/argv/flags.js +1 -282
- package/dist/argv/flags.js.map +2 -2
- package/dist/argv/parse.js +1 -171
- package/dist/argv/parse.js.map +2 -2
- package/dist/arrays.js +1 -85
- package/dist/arrays.js.map +2 -2
- package/dist/bin.js +1 -402
- package/dist/bin.js.map +2 -2
- package/dist/cacache.js +1 -137
- package/dist/cacache.js.map +2 -2
- package/dist/cache-with-ttl.js +1 -223
- package/dist/cache-with-ttl.js.map +2 -2
- package/dist/constants/agents.js +1 -126
- package/dist/constants/agents.js.map +2 -2
- package/dist/constants/core.js +2 -57
- package/dist/constants/core.js.map +2 -2
- package/dist/constants/encoding.js +1 -48
- package/dist/constants/encoding.js.map +2 -2
- package/dist/constants/github.js +1 -30
- package/dist/constants/github.js.map +2 -2
- package/dist/constants/licenses.js +1 -66
- package/dist/constants/licenses.js.map +2 -2
- package/dist/constants/node.js +1 -171
- package/dist/constants/node.js.map +2 -2
- package/dist/constants/packages.js +1 -128
- package/dist/constants/packages.js.map +2 -2
- package/dist/constants/paths.js +1 -150
- package/dist/constants/paths.js.map +2 -2
- package/dist/constants/platform.js +1 -41
- package/dist/constants/platform.js.map +2 -2
- package/dist/constants/process.js +1 -52
- package/dist/constants/process.js.map +2 -2
- package/dist/constants/socket.js +1 -81
- package/dist/constants/socket.js.map +2 -2
- package/dist/constants/testing.js +1 -36
- package/dist/constants/testing.js.map +2 -2
- package/dist/constants/time.js +1 -39
- package/dist/constants/time.js.map +2 -2
- package/dist/constants/typescript.js +1 -54
- package/dist/constants/typescript.js.map +2 -2
- package/dist/cover/code.js +1 -135
- package/dist/cover/code.js.map +2 -2
- package/dist/cover/formatters.js +11 -101
- package/dist/cover/formatters.js.map +2 -2
- package/dist/cover/type.js +1 -63
- package/dist/cover/type.js.map +2 -2
- package/dist/cover/types.js +1 -15
- package/dist/cover/types.js.map +2 -2
- package/dist/debug.js +2 -343
- package/dist/debug.js.map +2 -2
- package/dist/dlx-binary.js +1 -259
- package/dist/dlx-binary.js.map +2 -2
- package/dist/dlx-package.js +1 -149
- package/dist/dlx-package.js.map +2 -2
- package/dist/dlx.js +1 -166
- package/dist/dlx.js.map +2 -2
- package/dist/download-lock.js +1 -137
- package/dist/download-lock.js.map +2 -2
- package/dist/effects/pulse-frames.js +1 -64
- package/dist/effects/pulse-frames.js.map +2 -2
- package/dist/effects/text-shimmer.js +1 -174
- package/dist/effects/text-shimmer.js.map +2 -2
- package/dist/effects/types.js +1 -15
- package/dist/effects/types.js.map +2 -2
- package/dist/effects/ultra.js +1 -61
- package/dist/effects/ultra.js.map +2 -2
- package/dist/env/appdata.js +1 -28
- package/dist/env/appdata.js.map +2 -2
- package/dist/env/ci.js +1 -29
- package/dist/env/ci.js.map +2 -2
- package/dist/env/comspec.js +1 -28
- package/dist/env/comspec.js.map +2 -2
- package/dist/env/debug.js +1 -28
- package/dist/env/debug.js.map +2 -2
- package/dist/env/getters.js +1 -281
- package/dist/env/getters.js.map +2 -2
- package/dist/env/github-api-url.js +1 -28
- package/dist/env/github-api-url.js.map +2 -2
- package/dist/env/github-base-ref.js +1 -28
- package/dist/env/github-base-ref.js.map +2 -2
- package/dist/env/github-ref-name.js +1 -28
- package/dist/env/github-ref-name.js.map +2 -2
- package/dist/env/github-ref-type.js +1 -28
- package/dist/env/github-ref-type.js.map +2 -2
- package/dist/env/github-repository.js +1 -28
- package/dist/env/github-repository.js.map +2 -2
- package/dist/env/github-server-url.js +1 -28
- package/dist/env/github-server-url.js.map +2 -2
- package/dist/env/github-token.js +1 -28
- package/dist/env/github-token.js.map +2 -2
- package/dist/env/helpers.js +1 -47
- package/dist/env/helpers.js.map +2 -2
- package/dist/env/home.js +1 -28
- package/dist/env/home.js.map +2 -2
- package/dist/env/jest-worker-id.js +1 -28
- package/dist/env/jest-worker-id.js.map +2 -2
- package/dist/env/lang.js +1 -28
- package/dist/env/lang.js.map +2 -2
- package/dist/env/lc-all.js +1 -28
- package/dist/env/lc-all.js.map +2 -2
- package/dist/env/lc-messages.js +1 -28
- package/dist/env/lc-messages.js.map +2 -2
- package/dist/env/localappdata.js +1 -28
- package/dist/env/localappdata.js.map +2 -2
- package/dist/env/node-auth-token.js +1 -28
- package/dist/env/node-auth-token.js.map +2 -2
- package/dist/env/node-env.js +1 -28
- package/dist/env/node-env.js.map +2 -2
- package/dist/env/npm-config-registry.js +1 -28
- package/dist/env/npm-config-registry.js.map +2 -2
- package/dist/env/npm-config-user-agent.js +1 -28
- package/dist/env/npm-config-user-agent.js.map +2 -2
- package/dist/env/npm-lifecycle-event.js +1 -28
- package/dist/env/npm-lifecycle-event.js.map +2 -2
- package/dist/env/npm-registry.js +1 -28
- package/dist/env/npm-registry.js.map +2 -2
- package/dist/env/npm-token.js +1 -28
- package/dist/env/npm-token.js.map +2 -2
- package/dist/env/path.js +1 -28
- package/dist/env/path.js.map +2 -2
- package/dist/env/pre-commit.js +1 -29
- package/dist/env/pre-commit.js.map +2 -2
- package/dist/env/shell.js +1 -28
- package/dist/env/shell.js.map +2 -2
- package/dist/env/socket-accept-risks.js +1 -29
- package/dist/env/socket-accept-risks.js.map +2 -2
- package/dist/env/socket-api-base-url.js +1 -28
- package/dist/env/socket-api-base-url.js.map +2 -2
- package/dist/env/socket-api-proxy.js +1 -28
- package/dist/env/socket-api-proxy.js.map +2 -2
- package/dist/env/socket-api-timeout.js +1 -29
- package/dist/env/socket-api-timeout.js.map +2 -2
- package/dist/env/socket-api-token.js +1 -28
- package/dist/env/socket-api-token.js.map +2 -2
- package/dist/env/socket-cacache-dir.js +1 -28
- package/dist/env/socket-cacache-dir.js.map +2 -2
- package/dist/env/socket-cli-accept-risks.js +1 -31
- package/dist/env/socket-cli-accept-risks.js.map +2 -2
- package/dist/env/socket-cli-api-base-url.js +1 -28
- package/dist/env/socket-cli-api-base-url.js.map +2 -2
- package/dist/env/socket-cli-api-proxy.js +1 -28
- package/dist/env/socket-cli-api-proxy.js.map +2 -2
- package/dist/env/socket-cli-api-timeout.js +1 -29
- package/dist/env/socket-cli-api-timeout.js.map +2 -2
- package/dist/env/socket-cli-api-token.js +1 -28
- package/dist/env/socket-cli-api-token.js.map +2 -2
- package/dist/env/socket-cli-config.js +1 -28
- package/dist/env/socket-cli-config.js.map +2 -2
- package/dist/env/socket-cli-fix.js +1 -28
- package/dist/env/socket-cli-fix.js.map +2 -2
- package/dist/env/socket-cli-no-api-token.js +1 -31
- package/dist/env/socket-cli-no-api-token.js.map +2 -2
- package/dist/env/socket-cli-optimize.js +1 -29
- package/dist/env/socket-cli-optimize.js.map +2 -2
- package/dist/env/socket-cli-org-slug.js +1 -28
- package/dist/env/socket-cli-org-slug.js.map +2 -2
- package/dist/env/socket-cli-shadow-accept-risks.js +1 -31
- package/dist/env/socket-cli-shadow-accept-risks.js.map +2 -2
- package/dist/env/socket-cli-shadow-api-token.js +1 -28
- package/dist/env/socket-cli-shadow-api-token.js.map +2 -2
- package/dist/env/socket-cli-shadow-bin.js +1 -28
- package/dist/env/socket-cli-shadow-bin.js.map +2 -2
- package/dist/env/socket-cli-shadow-progress.js +1 -31
- package/dist/env/socket-cli-shadow-progress.js.map +2 -2
- package/dist/env/socket-cli-shadow-silent.js +1 -31
- package/dist/env/socket-cli-shadow-silent.js.map +2 -2
- package/dist/env/socket-cli-view-all-risks.js +1 -31
- package/dist/env/socket-cli-view-all-risks.js.map +2 -2
- package/dist/env/socket-config.js +1 -28
- package/dist/env/socket-config.js.map +2 -2
- package/dist/env/socket-debug.js +1 -28
- package/dist/env/socket-debug.js.map +2 -2
- package/dist/env/socket-home.js +1 -28
- package/dist/env/socket-home.js.map +2 -2
- package/dist/env/socket-no-api-token.js +1 -29
- package/dist/env/socket-no-api-token.js.map +2 -2
- package/dist/env/socket-npm-registry.js +1 -28
- package/dist/env/socket-npm-registry.js.map +2 -2
- package/dist/env/socket-org-slug.js +1 -28
- package/dist/env/socket-org-slug.js.map +2 -2
- package/dist/env/socket-registry-url.js +1 -28
- package/dist/env/socket-registry-url.js.map +2 -2
- package/dist/env/socket-view-all-risks.js +1 -29
- package/dist/env/socket-view-all-risks.js.map +2 -2
- package/dist/env/temp.js +1 -28
- package/dist/env/temp.js.map +2 -2
- package/dist/env/term.js +1 -28
- package/dist/env/term.js.map +2 -2
- package/dist/env/tmp.js +1 -28
- package/dist/env/tmp.js.map +2 -2
- package/dist/env/tmpdir.js +1 -28
- package/dist/env/tmpdir.js.map +2 -2
- package/dist/env/userprofile.js +1 -28
- package/dist/env/userprofile.js.map +2 -2
- package/dist/env/vitest.js +1 -29
- package/dist/env/vitest.js.map +2 -2
- package/dist/env/xdg-cache-home.js +1 -28
- package/dist/env/xdg-cache-home.js.map +2 -2
- package/dist/env/xdg-config-home.js +1 -28
- package/dist/env/xdg-config-home.js.map +2 -2
- package/dist/env/xdg-data-home.js +1 -28
- package/dist/env/xdg-data-home.js.map +2 -2
- package/dist/env.js +1 -61
- package/dist/env.js.map +2 -2
- package/dist/fs.js +3 -626
- package/dist/fs.js.map +2 -2
- package/dist/functions.js +1 -68
- package/dist/functions.js.map +2 -2
- package/dist/git.js +2 -320
- package/dist/git.js.map +2 -2
- package/dist/github.js +1 -201
- package/dist/github.js.map +2 -2
- package/dist/globs.js +1 -152
- package/dist/globs.js.map +2 -2
- package/dist/http-request.js +1 -313
- package/dist/http-request.js.map +2 -2
- package/dist/index.js +1 -62
- package/dist/index.js.map +2 -2
- package/dist/ipc.js +1 -232
- package/dist/ipc.js.map +2 -2
- package/dist/json.js +1 -73
- package/dist/json.js.map +2 -2
- package/dist/logger.js +1 -1254
- package/dist/logger.js.map +2 -2
- package/dist/maintained-node-versions.js +1 -35
- package/dist/maintained-node-versions.js.map +2 -2
- package/dist/memoization.js +1 -210
- package/dist/memoization.js.map +2 -2
- package/dist/objects.d.ts +0 -3
- package/dist/objects.js +1 -319
- package/dist/objects.js.map +3 -3
- package/dist/packages/editable.js +9 -356
- package/dist/packages/editable.js.map +2 -2
- package/dist/packages/exports.js +1 -162
- package/dist/packages/exports.js.map +2 -2
- package/dist/packages/isolation.js +1 -195
- package/dist/packages/isolation.js.map +2 -2
- package/dist/packages/licenses.js +1 -214
- package/dist/packages/licenses.js.map +2 -2
- package/dist/packages/manifest.js +1 -190
- package/dist/packages/manifest.js.map +2 -2
- package/dist/packages/normalize.js +1 -120
- package/dist/packages/normalize.js.map +2 -2
- package/dist/packages/operations.js +1 -304
- package/dist/packages/operations.js.map +2 -2
- package/dist/packages/paths.js +1 -53
- package/dist/packages/paths.js.map +2 -2
- package/dist/packages/provenance.js +1 -178
- package/dist/packages/provenance.js.map +2 -2
- package/dist/packages/registry.js +1 -28
- package/dist/packages/registry.js.map +2 -2
- package/dist/packages/specs.js +1 -83
- package/dist/packages/specs.js.map +2 -2
- package/dist/packages/validation.js +1 -51
- package/dist/packages/validation.js.map +2 -2
- package/dist/packages.js +1 -129
- package/dist/packages.js.map +2 -2
- package/dist/path.js +1 -448
- package/dist/path.js.map +2 -2
- package/dist/paths.js +1 -143
- package/dist/paths.js.map +2 -2
- package/dist/performance.js +15 -216
- package/dist/performance.js.map +2 -2
- package/dist/promise-queue.js +1 -109
- package/dist/promise-queue.js.map +2 -2
- package/dist/promises.js +1 -269
- package/dist/promises.js.map +2 -2
- package/dist/prompts.js +1 -58
- package/dist/prompts.js.map +2 -2
- package/dist/regexps.js +1 -30
- package/dist/regexps.js.map +2 -2
- package/dist/sea.js +1 -44
- package/dist/sea.js.map +2 -2
- package/dist/shadow.js +1 -58
- package/dist/shadow.js.map +2 -2
- package/dist/signal-exit.js +1 -248
- package/dist/signal-exit.js.map +2 -2
- package/dist/sorts.js +1 -94
- package/dist/sorts.js.map +2 -2
- package/dist/spawn.js +1 -199
- package/dist/spawn.js.map +2 -2
- package/dist/spinner.js +1 -865
- package/dist/spinner.js.map +2 -2
- package/dist/ssri.js +1 -71
- package/dist/ssri.js.map +2 -2
- package/dist/stdio/clear.js +1 -82
- package/dist/stdio/clear.js.map +2 -2
- package/dist/stdio/divider.js +3 -89
- package/dist/stdio/divider.js.map +2 -2
- package/dist/stdio/footer.js +2 -94
- package/dist/stdio/footer.js.map +2 -2
- package/dist/stdio/header.js +2 -100
- package/dist/stdio/header.js.map +2 -2
- package/dist/stdio/mask.js +5 -206
- package/dist/stdio/mask.js.map +2 -2
- package/dist/stdio/progress.js +2 -209
- package/dist/stdio/progress.js.map +2 -2
- package/dist/stdio/prompts.js +1 -88
- package/dist/stdio/prompts.js.map +2 -2
- package/dist/stdio/stderr.js +2 -89
- package/dist/stdio/stderr.js.map +2 -2
- package/dist/stdio/stdout.js +2 -103
- package/dist/stdio/stdout.js.map +2 -2
- package/dist/streams.js +1 -78
- package/dist/streams.js.map +2 -2
- package/dist/strings.js +3 -251
- package/dist/strings.js.map +2 -2
- package/dist/suppress-warnings.js +1 -98
- package/dist/suppress-warnings.js.map +2 -2
- package/dist/tables.js +3 -128
- package/dist/tables.js.map +2 -2
- package/dist/temporary-executor.js +1 -53
- package/dist/temporary-executor.js.map +2 -2
- package/dist/types.js +1 -72
- package/dist/types.js.map +2 -2
- package/dist/url.js +1 -142
- package/dist/url.js.map +2 -2
- package/dist/utils/get-ipc.js +1 -58
- package/dist/utils/get-ipc.js.map +2 -2
- package/dist/validation/json-parser.js +1 -127
- package/dist/validation/json-parser.js.map +2 -2
- package/dist/validation/types.js +1 -15
- package/dist/validation/types.js.map +2 -2
- package/dist/versions.js +1 -153
- package/dist/versions.js.map +2 -2
- package/dist/words.js +1 -50
- package/dist/words.js.map +2 -2
- package/dist/zod.js +1 -27
- package/dist/zod.js.map +2 -2
- package/package.json +1 -1
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/packages/exports.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview Package exports field utilities.\n */\n\nimport { LOOP_SENTINEL } from '#constants/core'\n\nimport { isArray } from '../arrays'\nimport { isObject, isObjectObject } from '../objects'\n\n/**\n * Find types definition for a specific subpath in package exports.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function findTypesForSubpath(\n entryExports: unknown,\n subpath: string,\n): string | undefined {\n const queue = [entryExports]\n let pos = 0\n while (pos < queue.length) {\n if (pos === LOOP_SENTINEL) {\n throw new Error(\n 'Detected infinite loop in entry exports crawl of getTypesForSubpath',\n )\n }\n const value = queue[pos++]\n if (isArray(value)) {\n for (let i = 0, { length } = value; i < length; i += 1) {\n const item = value[i]\n if (item === subpath) {\n return (value as { types?: string }).types\n }\n if (isObject(item)) {\n queue.push(item)\n }\n }\n } else if (isObject(value)) {\n const keys = Object.getOwnPropertyNames(value)\n for (let i = 0, { length } = keys; i < length; i += 1) {\n const key = keys[i] as string\n const item = value[key]\n if (item === subpath) {\n return (value as { types?: string }).types\n }\n if (isObject(item)) {\n queue.push(item)\n }\n }\n }\n }\n return undefined\n}\n\n/**\n * Get subpaths from package exports.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function getSubpaths(entryExports: unknown): string[] {\n if (!isObject(entryExports)) {\n return []\n }\n // Return the keys of the exports object (the subpaths).\n return Object.getOwnPropertyNames(entryExports).filter(key =>\n key.startsWith('.'),\n )\n}\n\n/**\n * Get file paths from package exports.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function getExportFilePaths(entryExports: unknown): string[] {\n if (!isObject(entryExports)) {\n return []\n }\n\n const paths = []\n\n // Traverse the exports object to find actual file paths.\n for (const key of Object.getOwnPropertyNames(entryExports)) {\n if (!key.startsWith('.')) {\n continue\n }\n\n const value = entryExports[key]\n\n if (typeof value === 'string') {\n // Direct path export.\n paths.push(value)\n } else if (isObject(value)) {\n // Conditional or nested export.\n for (const subKey of Object.getOwnPropertyNames(value)) {\n const subValue = value[subKey]\n if (typeof subValue === 'string') {\n paths.push(subValue)\n } else if (isArray(subValue)) {\n // Array of conditions.\n for (const item of subValue) {\n if (typeof item === 'string') {\n paths.push(item)\n } else if (isObject(item)) {\n // Nested conditional.\n for (const nestedKey of Object.getOwnPropertyNames(item)) {\n const nestedValue = item[nestedKey]\n if (typeof nestedValue === 'string') {\n paths.push(nestedValue)\n }\n }\n }\n }\n }\n }\n }\n }\n\n // Remove duplicates and filter out non-file paths.\n return [...new Set(paths)].filter(p => p.startsWith('./'))\n}\n\n/**\n * Check if package exports use conditional patterns (e.g., import/require).\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isConditionalExports(entryExports: unknown): boolean {\n if (!isObjectObject(entryExports)) {\n return false\n }\n const keys = Object.getOwnPropertyNames(entryExports)\n const { length } = keys\n if (!length) {\n return false\n }\n // Conditional entry exports do NOT contain keys starting with '.'.\n // Entry exports cannot contain some keys starting with '.' and some not.\n // The exports object MUST either be an object of package subpath keys OR\n // an object of main entry condition name keys only.\n for (let i = 0; i < length; i += 1) {\n const key = keys[i] as string\n if (key.length > 0 && key.charCodeAt(0) === 46 /*'.'*/) {\n return false\n }\n }\n return true\n}\n\n/**\n * Check if package exports use subpath patterns (keys starting with '.').\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isSubpathExports(entryExports: unknown): boolean {\n if (isObjectObject(entryExports)) {\n const keys = Object.getOwnPropertyNames(entryExports)\n for (let i = 0, { length } = keys; i < length; i += 1) {\n // Subpath entry exports contain keys starting with '.'.\n // Entry exports cannot contain some keys starting with '.' and some not.\n // The exports object MUST either be an object of package subpath keys OR\n // an object of main entry condition name keys only.\n if (keys[i]?.charCodeAt(0) === 46 /*'.'*/) {\n return true\n }\n }\n }\n return false\n}\n\n/**\n * Normalize package.json exports field to canonical format.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function resolvePackageJsonEntryExports(entryExports: unknown): unknown {\n // If conditional exports main sugar\n // https://nodejs.org/api/packages.html#exports-sugar\n if (typeof entryExports === 'string' || isArray(entryExports)) {\n return { '.': entryExports }\n }\n if (isConditionalExports(entryExports)) {\n return entryExports\n }\n return isObject(entryExports) ? entryExports : undefined\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["exports_exports", "__export", "findTypesForSubpath", "getExportFilePaths", "getSubpaths", "isConditionalExports", "isSubpathExports", "resolvePackageJsonEntryExports", "__toCommonJS", "import_core", "import_arrays", "import_objects", "entryExports", "subpath", "queue", "pos", "value", "length", "item", "keys", "i", "key", "paths", "subKey", "subValue", "nestedKey", "nestedValue", "p"]
|
|
7
7
|
}
|
|
@@ -1,197 +1,3 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var isolation_exports = {};
|
|
20
|
-
__export(isolation_exports, {
|
|
21
|
-
isolatePackage: () => isolatePackage
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(isolation_exports);
|
|
24
|
-
var import_node_fs = require("node:fs");
|
|
25
|
-
var import_platform = require("#constants/platform");
|
|
26
|
-
var import_path = require("../path");
|
|
27
|
-
var import_operations = require("./operations");
|
|
28
|
-
let _os;
|
|
29
|
-
let _path;
|
|
30
|
-
// @__NO_SIDE_EFFECTS__
|
|
31
|
-
function getOs() {
|
|
32
|
-
if (_os === void 0) {
|
|
33
|
-
_os = require("node:os");
|
|
34
|
-
}
|
|
35
|
-
return _os;
|
|
36
|
-
}
|
|
37
|
-
// @__NO_SIDE_EFFECTS__
|
|
38
|
-
function getPath() {
|
|
39
|
-
if (_path === void 0) {
|
|
40
|
-
_path = require("node:path");
|
|
41
|
-
}
|
|
42
|
-
return _path;
|
|
43
|
-
}
|
|
44
|
-
const FS_CP_OPTIONS = {
|
|
45
|
-
dereference: true,
|
|
46
|
-
errorOnExist: false,
|
|
47
|
-
filter: (src) => !src.includes("node_modules") && !src.endsWith(".DS_Store"),
|
|
48
|
-
force: true,
|
|
49
|
-
recursive: true,
|
|
50
|
-
...import_platform.WIN32 ? { maxRetries: 3, retryDelay: 100 } : {}
|
|
51
|
-
};
|
|
52
|
-
async function resolveRealPath(pathStr) {
|
|
53
|
-
const path = /* @__PURE__ */ getPath();
|
|
54
|
-
return await import_node_fs.promises.realpath(pathStr).catch(() => path.resolve(pathStr));
|
|
55
|
-
}
|
|
56
|
-
async function mergePackageJson(pkgJsonPath, originalPkgJson) {
|
|
57
|
-
const pkgJson = JSON.parse(await import_node_fs.promises.readFile(pkgJsonPath, "utf8"));
|
|
58
|
-
const mergedPkgJson = originalPkgJson ? { ...originalPkgJson, ...pkgJson } : pkgJson;
|
|
59
|
-
return mergedPkgJson;
|
|
60
|
-
}
|
|
61
|
-
async function isolatePackage(packageSpec, options) {
|
|
62
|
-
const os = /* @__PURE__ */ getOs();
|
|
63
|
-
const path = /* @__PURE__ */ getPath();
|
|
64
|
-
const opts = { __proto__: null, ...options };
|
|
65
|
-
const { imports, install, onPackageJson, sourcePath: optSourcePath } = opts;
|
|
66
|
-
let sourcePath = optSourcePath;
|
|
67
|
-
let packageName;
|
|
68
|
-
let spec;
|
|
69
|
-
if ((0, import_path.isPath)(packageSpec)) {
|
|
70
|
-
const trimmedPath = (0, import_path.trimLeadingDotSlash)(packageSpec);
|
|
71
|
-
const pathToResolve = (0, import_path.isAbsolute)(trimmedPath) ? trimmedPath : packageSpec;
|
|
72
|
-
sourcePath = path.resolve(pathToResolve);
|
|
73
|
-
if (!(0, import_node_fs.existsSync)(sourcePath)) {
|
|
74
|
-
throw new Error(`Source path does not exist: ${sourcePath}`);
|
|
75
|
-
}
|
|
76
|
-
const pkgJson = await (0, import_operations.readPackageJson)(sourcePath, { normalize: true });
|
|
77
|
-
if (!pkgJson) {
|
|
78
|
-
throw new Error(`Could not read package.json from: ${sourcePath}`);
|
|
79
|
-
}
|
|
80
|
-
packageName = pkgJson.name;
|
|
81
|
-
} else {
|
|
82
|
-
const npa = require("../external/npm-package-arg");
|
|
83
|
-
const parsed = npa(packageSpec);
|
|
84
|
-
packageName = parsed.name;
|
|
85
|
-
if (parsed.type === "directory" || parsed.type === "file") {
|
|
86
|
-
sourcePath = parsed.fetchSpec;
|
|
87
|
-
if (!sourcePath || !(0, import_node_fs.existsSync)(sourcePath)) {
|
|
88
|
-
throw new Error(`Source path does not exist: ${sourcePath}`);
|
|
89
|
-
}
|
|
90
|
-
if (!packageName) {
|
|
91
|
-
const pkgJson = await (0, import_operations.readPackageJson)(sourcePath, { normalize: true });
|
|
92
|
-
if (!pkgJson) {
|
|
93
|
-
throw new Error(`Could not read package.json from: ${sourcePath}`);
|
|
94
|
-
}
|
|
95
|
-
packageName = pkgJson.name;
|
|
96
|
-
}
|
|
97
|
-
} else {
|
|
98
|
-
spec = parsed.fetchSpec || parsed.rawSpec;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (!packageName) {
|
|
102
|
-
throw new Error(`Could not determine package name from: ${packageSpec}`);
|
|
103
|
-
}
|
|
104
|
-
const sanitizedName = packageName.replace(/[@/]/g, "-");
|
|
105
|
-
const tempDir = await import_node_fs.promises.mkdtemp(
|
|
106
|
-
path.join(os.tmpdir(), `socket-test-${sanitizedName}-`)
|
|
107
|
-
);
|
|
108
|
-
const packageTempDir = path.join(tempDir, sanitizedName);
|
|
109
|
-
await import_node_fs.promises.mkdir(packageTempDir, { recursive: true });
|
|
110
|
-
let installedPath;
|
|
111
|
-
let originalPackageJson;
|
|
112
|
-
if (spec) {
|
|
113
|
-
await import_node_fs.promises.writeFile(
|
|
114
|
-
path.join(packageTempDir, "package.json"),
|
|
115
|
-
JSON.stringify(
|
|
116
|
-
{
|
|
117
|
-
name: "test-temp",
|
|
118
|
-
private: true,
|
|
119
|
-
version: "1.0.0"
|
|
120
|
-
},
|
|
121
|
-
null,
|
|
122
|
-
2
|
|
123
|
-
)
|
|
124
|
-
);
|
|
125
|
-
if (install) {
|
|
126
|
-
await install(packageTempDir);
|
|
127
|
-
} else {
|
|
128
|
-
const { spawn } = require("../spawn");
|
|
129
|
-
const WIN322 = require("../constants/platform").WIN32;
|
|
130
|
-
const packageInstallSpec = spec.startsWith("https://") ? spec : `${packageName}@${spec}`;
|
|
131
|
-
await spawn("pnpm", ["add", packageInstallSpec], {
|
|
132
|
-
cwd: packageTempDir,
|
|
133
|
-
shell: WIN322,
|
|
134
|
-
stdio: "pipe"
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
installedPath = path.join(packageTempDir, "node_modules", packageName);
|
|
138
|
-
originalPackageJson = await (0, import_operations.readPackageJson)(installedPath, {
|
|
139
|
-
normalize: true
|
|
140
|
-
});
|
|
141
|
-
if (sourcePath) {
|
|
142
|
-
const realInstalledPath = await resolveRealPath(installedPath);
|
|
143
|
-
const realSourcePath = await resolveRealPath(sourcePath);
|
|
144
|
-
if (realSourcePath !== realInstalledPath) {
|
|
145
|
-
await import_node_fs.promises.cp(sourcePath, installedPath, FS_CP_OPTIONS);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
} else {
|
|
149
|
-
if (!sourcePath) {
|
|
150
|
-
throw new Error("sourcePath is required when no version spec provided");
|
|
151
|
-
}
|
|
152
|
-
const scopedPath = packageName.startsWith("@") ? path.join(
|
|
153
|
-
packageTempDir,
|
|
154
|
-
"node_modules",
|
|
155
|
-
packageName.split("/")[0] ?? ""
|
|
156
|
-
) : path.join(packageTempDir, "node_modules");
|
|
157
|
-
await import_node_fs.promises.mkdir(scopedPath, { recursive: true });
|
|
158
|
-
installedPath = path.join(packageTempDir, "node_modules", packageName);
|
|
159
|
-
await import_node_fs.promises.cp(sourcePath, installedPath, FS_CP_OPTIONS);
|
|
160
|
-
}
|
|
161
|
-
if (onPackageJson || originalPackageJson) {
|
|
162
|
-
const pkgJsonPath = path.join(installedPath, "package.json");
|
|
163
|
-
const mergedPkgJson = await mergePackageJson(
|
|
164
|
-
pkgJsonPath,
|
|
165
|
-
originalPackageJson
|
|
166
|
-
);
|
|
167
|
-
const finalPkgJson = onPackageJson ? await onPackageJson(mergedPkgJson) : mergedPkgJson;
|
|
168
|
-
await import_node_fs.promises.writeFile(pkgJsonPath, JSON.stringify(finalPkgJson, null, 2));
|
|
169
|
-
}
|
|
170
|
-
if (install) {
|
|
171
|
-
await install(installedPath);
|
|
172
|
-
} else {
|
|
173
|
-
const { spawn } = require("../spawn");
|
|
174
|
-
const WIN322 = require("../constants/platform").WIN32;
|
|
175
|
-
await spawn("pnpm", ["install"], {
|
|
176
|
-
cwd: installedPath,
|
|
177
|
-
shell: WIN322,
|
|
178
|
-
stdio: "pipe"
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
const exports2 = imports ? { __proto__: null } : void 0;
|
|
182
|
-
if (imports) {
|
|
183
|
-
for (const { 0: key, 1: specifier } of Object.entries(imports)) {
|
|
184
|
-
const fullPath = path.join(installedPath, specifier);
|
|
185
|
-
exports2[key] = require(fullPath);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
exports: exports2,
|
|
190
|
-
tmpdir: installedPath
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
194
|
-
0 && (module.exports = {
|
|
195
|
-
isolatePackage
|
|
196
|
-
});
|
|
2
|
+
var J=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var E=(e,n)=>{for(var p in n)J(e,p,{get:n[p],enumerable:!0})},D=(e,n,p,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let u of W(n))!$.call(e,u)&&u!==p&&J(e,u,{get:()=>n[u],enumerable:!(s=R(n,u))||s.enumerable});return e};var z=e=>D(J({},"__esModule",{value:!0}),e);var b={};E(b,{isolatePackage:()=>T});module.exports=z(b);var i=require("node:fs"),N=require("#constants/platform"),f=require("../path"),w=require("./operations");let y,_;function C(){return y===void 0&&(y=require("node:os")),y}function O(){return _===void 0&&(_=require("node:path")),_}const S={dereference:!0,errorOnExist:!1,filter:e=>!e.includes("node_modules")&&!e.endsWith(".DS_Store"),force:!0,recursive:!0,...N.WIN32?{maxRetries:3,retryDelay:100}:{}};async function v(e){const n=O();return await i.promises.realpath(e).catch(()=>n.resolve(e))}async function F(e,n){const p=JSON.parse(await i.promises.readFile(e,"utf8"));return n?{...n,...p}:p}async function T(e,n){const p=C(),s=O(),u={__proto__:null,...n},{imports:P,install:g,onPackageJson:h,sourcePath:x}=u;let o=x,a,m;if((0,f.isPath)(e)){const r=(0,f.trimLeadingDotSlash)(e),t=(0,f.isAbsolute)(r)?r:e;if(o=s.resolve(t),!(0,i.existsSync)(o))throw new Error(`Source path does not exist: ${o}`);const d=await(0,w.readPackageJson)(o,{normalize:!0});if(!d)throw new Error(`Could not read package.json from: ${o}`);a=d.name}else{const t=require("../external/npm-package-arg")(e);if(a=t.name,t.type==="directory"||t.type==="file"){if(o=t.fetchSpec,!o||!(0,i.existsSync)(o))throw new Error(`Source path does not exist: ${o}`);if(!a){const d=await(0,w.readPackageJson)(o,{normalize:!0});if(!d)throw new Error(`Could not read package.json from: ${o}`);a=d.name}}else m=t.fetchSpec||t.rawSpec}if(!a)throw new Error(`Could not determine package name from: ${e}`);const j=a.replace(/[@/]/g,"-"),q=await i.promises.mkdtemp(s.join(p.tmpdir(),`socket-test-${j}-`)),l=s.join(q,j);await i.promises.mkdir(l,{recursive:!0});let c,k;if(m){if(await i.promises.writeFile(s.join(l,"package.json"),JSON.stringify({name:"test-temp",private:!0,version:"1.0.0"},null,2)),g)await g(l);else{const{spawn:r}=require("../spawn"),t=require("../constants/platform").WIN32,d=m.startsWith("https://")?m:`${a}@${m}`;await r("pnpm",["add",d],{cwd:l,shell:t,stdio:"pipe"})}if(c=s.join(l,"node_modules",a),k=await(0,w.readPackageJson)(c,{normalize:!0}),o){const r=await v(c);await v(o)!==r&&await i.promises.cp(o,c,S)}}else{if(!o)throw new Error("sourcePath is required when no version spec provided");const r=a.startsWith("@")?s.join(l,"node_modules",a.split("/")[0]??""):s.join(l,"node_modules");await i.promises.mkdir(r,{recursive:!0}),c=s.join(l,"node_modules",a),await i.promises.cp(o,c,S)}if(h||k){const r=s.join(c,"package.json"),t=await F(r,k),d=h?await h(t):t;await i.promises.writeFile(r,JSON.stringify(d,null,2))}if(g)await g(c);else{const{spawn:r}=require("../spawn"),t=require("../constants/platform").WIN32;await r("pnpm",["install"],{cwd:c,shell:t,stdio:"pipe"})}const I=P?{__proto__:null}:void 0;if(P)for(const{0:r,1:t}of Object.entries(P)){const d=s.join(c,t);I[r]=require(d)}return{exports:I,tmpdir:c}}0&&(module.exports={isolatePackage});
|
|
197
3
|
//# sourceMappingURL=isolation.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/packages/isolation.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview Package isolation utilities for testing.\n * Provides tools to set up isolated test environments for packages.\n */\n\nimport { existsSync, promises as fs } from 'node:fs'\n\nimport { WIN32 } from '#constants/platform'\n\nimport type { PackageJson } from '../packages'\nimport { isAbsolute, isPath, trimLeadingDotSlash } from '../path'\nimport { readPackageJson } from './operations'\n\nlet _os: typeof import('node:os') | undefined\nlet _path: typeof import('node:path') | undefined\n\n/*@__NO_SIDE_EFFECTS__*/\nfunction getOs() {\n if (_os === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _os = /*@__PURE__*/ require('node:os')\n }\n return _os as typeof import('node:os')\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path as typeof import('path')\n}\n\n/**\n * Copy options for fs.cp with cross-platform retry support.\n */\nconst FS_CP_OPTIONS = {\n dereference: true,\n errorOnExist: false,\n filter: (src: string) =>\n !src.includes('node_modules') && !src.endsWith('.DS_Store'),\n force: true,\n recursive: true,\n ...(WIN32 ? { maxRetries: 3, retryDelay: 100 } : {}),\n}\n\n/**\n * Resolve a path to its real location, handling symlinks.\n */\nasync function resolveRealPath(pathStr: string): Promise<string> {\n const path = getPath()\n return await fs.realpath(pathStr).catch(() => path.resolve(pathStr))\n}\n\n/**\n * Merge and write package.json with original and new values.\n */\nasync function mergePackageJson(\n pkgJsonPath: string,\n originalPkgJson: PackageJson | undefined,\n): Promise<PackageJson> {\n const pkgJson = JSON.parse(await fs.readFile(pkgJsonPath, 'utf8'))\n const mergedPkgJson = originalPkgJson\n ? { ...originalPkgJson, ...pkgJson }\n : pkgJson\n return mergedPkgJson\n}\n\nexport type IsolatePackageOptions = {\n imports?: Record<string, string> | undefined\n install?: ((cwd: string) => Promise<void>) | undefined\n onPackageJson?:\n | ((pkgJson: PackageJson) => PackageJson | Promise<PackageJson>)\n | undefined\n sourcePath?: string | undefined\n}\n\nexport type IsolatePackageResult = {\n exports?: Record<string, unknown> | undefined\n tmpdir: string\n}\n\n/**\n * Isolates a package in a temporary test environment.\n *\n * Supports multiple input types:\n * 1. File system path (absolute or relative)\n * 2. Package name with optional version spec\n * 3. npm package spec (parsed via npm-package-arg)\n *\n * @throws {Error} When package installation or setup fails.\n */\nexport async function isolatePackage(\n packageSpec: string,\n options?: IsolatePackageOptions | undefined,\n): Promise<IsolatePackageResult> {\n const os = getOs()\n const path = getPath()\n const opts = { __proto__: null, ...options } as IsolatePackageOptions\n const { imports, install, onPackageJson, sourcePath: optSourcePath } = opts\n\n let sourcePath = optSourcePath\n let packageName: string | undefined\n let spec: string | undefined\n\n // Determine if this is a path or package spec.\n if (isPath(packageSpec)) {\n // File system path.\n // Handle edge case on Windows where path.relative() returns an absolute path\n // when paths are on different drives, and the test prepends './' to it.\n // Example: './C:\\Users\\...' should be treated as 'C:\\Users\\...'.\n const trimmedPath = trimLeadingDotSlash(packageSpec)\n const pathToResolve = isAbsolute(trimmedPath) ? trimmedPath : packageSpec\n sourcePath = path.resolve(pathToResolve)\n\n if (!existsSync(sourcePath)) {\n throw new Error(`Source path does not exist: ${sourcePath}`)\n }\n\n // Read package.json to get the name.\n const pkgJson = await readPackageJson(sourcePath, { normalize: true })\n if (!pkgJson) {\n throw new Error(`Could not read package.json from: ${sourcePath}`)\n }\n packageName = pkgJson.name as string\n } else {\n // Parse as npm package spec.\n const npa = /*@__PURE__*/ require('../external/npm-package-arg')\n const parsed = npa(packageSpec)\n\n packageName = parsed.name\n\n if (parsed.type === 'directory' || parsed.type === 'file') {\n sourcePath = parsed.fetchSpec\n if (!sourcePath || !existsSync(sourcePath)) {\n throw new Error(`Source path does not exist: ${sourcePath}`)\n }\n // If package name not provided by parser, read from package.json.\n if (!packageName) {\n const pkgJson = await readPackageJson(sourcePath, { normalize: true })\n if (!pkgJson) {\n throw new Error(`Could not read package.json from: ${sourcePath}`)\n }\n packageName = pkgJson.name as string\n }\n } else {\n // Registry package.\n spec = parsed.fetchSpec || parsed.rawSpec\n }\n }\n\n if (!packageName) {\n throw new Error(`Could not determine package name from: ${packageSpec}`)\n }\n\n // Create temp directory for this package.\n const sanitizedName = packageName.replace(/[@/]/g, '-')\n const tempDir = await fs.mkdtemp(\n path.join(os.tmpdir(), `socket-test-${sanitizedName}-`),\n )\n const packageTempDir = path.join(tempDir, sanitizedName)\n await fs.mkdir(packageTempDir, { recursive: true })\n\n let installedPath: string\n let originalPackageJson: PackageJson | undefined\n\n if (spec) {\n // Installing from registry first, then copying source on top if provided.\n await fs.writeFile(\n path.join(packageTempDir, 'package.json'),\n JSON.stringify(\n {\n name: 'test-temp',\n private: true,\n version: '1.0.0',\n },\n null,\n 2,\n ),\n )\n\n // Use custom install function or default pnpm install.\n if (install) {\n await install(packageTempDir)\n } else {\n const { spawn } = /*@__PURE__*/ require('../spawn')\n const WIN32 = require('../constants/platform').WIN32\n const packageInstallSpec = spec.startsWith('https://')\n ? spec\n : `${packageName}@${spec}`\n\n await spawn('pnpm', ['add', packageInstallSpec], {\n cwd: packageTempDir,\n shell: WIN32,\n stdio: 'pipe',\n })\n }\n\n installedPath = path.join(packageTempDir, 'node_modules', packageName)\n\n // Save original package.json before copying source.\n originalPackageJson = await readPackageJson(installedPath, {\n normalize: true,\n })\n\n // Copy source files on top if provided.\n if (sourcePath) {\n // Check if source and destination are the same (symlinked).\n const realInstalledPath = await resolveRealPath(installedPath)\n const realSourcePath = await resolveRealPath(sourcePath)\n\n if (realSourcePath !== realInstalledPath) {\n await fs.cp(sourcePath, installedPath, FS_CP_OPTIONS)\n }\n }\n } else {\n // Just copying local package, no registry install.\n if (!sourcePath) {\n throw new Error('sourcePath is required when no version spec provided')\n }\n\n const scopedPath = packageName.startsWith('@')\n ? path.join(\n packageTempDir,\n 'node_modules',\n packageName.split('/')[0] ?? '',\n )\n : path.join(packageTempDir, 'node_modules')\n\n await fs.mkdir(scopedPath, { recursive: true })\n installedPath = path.join(packageTempDir, 'node_modules', packageName)\n\n await fs.cp(sourcePath, installedPath, FS_CP_OPTIONS)\n }\n\n // Prepare package.json if callback provided or if we need to merge with original.\n if (onPackageJson || originalPackageJson) {\n const pkgJsonPath = path.join(installedPath, 'package.json')\n const mergedPkgJson = await mergePackageJson(\n pkgJsonPath,\n originalPackageJson,\n )\n\n const finalPkgJson = onPackageJson\n ? await onPackageJson(mergedPkgJson)\n : mergedPkgJson\n\n await fs.writeFile(pkgJsonPath, JSON.stringify(finalPkgJson, null, 2))\n }\n\n // Install dependencies.\n if (install) {\n await install(installedPath)\n } else {\n const { spawn } = /*@__PURE__*/ require('../spawn')\n const WIN32 = require('../constants/platform').WIN32\n await spawn('pnpm', ['install'], {\n cwd: installedPath,\n shell: WIN32,\n stdio: 'pipe',\n })\n }\n\n // Load module exports if imports provided.\n const exports: Record<string, unknown> = imports\n ? { __proto__: null }\n : (undefined as unknown as Record<string, unknown>)\n\n if (imports) {\n for (const { 0: key, 1: specifier } of Object.entries(imports)) {\n const fullPath = path.join(installedPath, specifier)\n exports[key] = require(fullPath)\n }\n }\n\n return {\n exports,\n tmpdir: installedPath,\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["fs", "WIN32", "exports"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["isolation_exports", "__export", "isolatePackage", "__toCommonJS", "import_node_fs", "import_platform", "import_path", "import_operations", "_os", "_path", "getOs", "getPath", "FS_CP_OPTIONS", "src", "resolveRealPath", "pathStr", "path", "fs", "mergePackageJson", "pkgJsonPath", "originalPkgJson", "pkgJson", "packageSpec", "options", "os", "opts", "imports", "install", "onPackageJson", "optSourcePath", "sourcePath", "packageName", "spec", "trimmedPath", "pathToResolve", "parsed", "sanitizedName", "tempDir", "packageTempDir", "installedPath", "originalPackageJson", "spawn", "WIN32", "packageInstallSpec", "realInstalledPath", "scopedPath", "mergedPkgJson", "finalPkgJson", "exports", "key", "specifier", "fullPath"]
|
|
7
7
|
}
|
|
@@ -1,216 +1,3 @@
|
|
|
1
1
|
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var licenses_exports = {};
|
|
20
|
-
__export(licenses_exports, {
|
|
21
|
-
collectIncompatibleLicenses: () => collectIncompatibleLicenses,
|
|
22
|
-
collectLicenseWarnings: () => collectLicenseWarnings,
|
|
23
|
-
createAstNode: () => createAstNode,
|
|
24
|
-
createBinaryOperationNode: () => createBinaryOperationNode,
|
|
25
|
-
createLicenseNode: () => createLicenseNode,
|
|
26
|
-
parseSpdxExp: () => parseSpdxExp,
|
|
27
|
-
resolvePackageLicenses: () => resolvePackageLicenses,
|
|
28
|
-
visitLicenses: () => visitLicenses
|
|
29
|
-
});
|
|
30
|
-
module.exports = __toCommonJS(licenses_exports);
|
|
31
|
-
var import_core = require("#constants/core");
|
|
32
|
-
var import_licenses = require("#constants/licenses");
|
|
33
|
-
var import_objects = require("../objects");
|
|
34
|
-
var import_path = require("../path");
|
|
35
|
-
const copyLeftLicenses = (0, import_licenses.getCopyLeftLicenses)();
|
|
36
|
-
const BINARY_OPERATION_NODE_TYPE = "BinaryOperation";
|
|
37
|
-
const LICENSE_NODE_TYPE = "License";
|
|
38
|
-
const fileReferenceRegExp = /^SEE LICEN[CS]E IN (.+)$/;
|
|
39
|
-
let _path;
|
|
40
|
-
// @__NO_SIDE_EFFECTS__
|
|
41
|
-
function getPath() {
|
|
42
|
-
if (_path === void 0) {
|
|
43
|
-
_path = require("node:path");
|
|
44
|
-
}
|
|
45
|
-
return _path;
|
|
46
|
-
}
|
|
47
|
-
let _spdxCorrect;
|
|
48
|
-
// @__NO_SIDE_EFFECTS__
|
|
49
|
-
function getSpdxCorrect() {
|
|
50
|
-
if (_spdxCorrect === void 0) {
|
|
51
|
-
_spdxCorrect = require("../external/spdx-correct");
|
|
52
|
-
}
|
|
53
|
-
return _spdxCorrect;
|
|
54
|
-
}
|
|
55
|
-
let _spdxExpParse;
|
|
56
|
-
// @__NO_SIDE_EFFECTS__
|
|
57
|
-
function getSpdxExpParse() {
|
|
58
|
-
if (_spdxExpParse === void 0) {
|
|
59
|
-
_spdxExpParse = require("../external/spdx-expression-parse");
|
|
60
|
-
}
|
|
61
|
-
return _spdxExpParse;
|
|
62
|
-
}
|
|
63
|
-
// @__NO_SIDE_EFFECTS__
|
|
64
|
-
function collectIncompatibleLicenses(licenseNodes) {
|
|
65
|
-
const result = [];
|
|
66
|
-
for (let i = 0, { length } = licenseNodes; i < length; i += 1) {
|
|
67
|
-
const node = licenseNodes[i];
|
|
68
|
-
if (node && copyLeftLicenses.has(node.license)) {
|
|
69
|
-
result.push(node);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
// @__NO_SIDE_EFFECTS__
|
|
75
|
-
function collectLicenseWarnings(licenseNodes) {
|
|
76
|
-
const warnings = /* @__PURE__ */ new Map();
|
|
77
|
-
for (let i = 0, { length } = licenseNodes; i < length; i += 1) {
|
|
78
|
-
const node = licenseNodes[i];
|
|
79
|
-
if (!node) {
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
const { license } = node;
|
|
83
|
-
if (license === "UNLICENSED") {
|
|
84
|
-
warnings.set("UNLICENSED", "Package is unlicensed");
|
|
85
|
-
} else if (node.inFile !== void 0) {
|
|
86
|
-
warnings.set("IN_FILE", `License terms specified in ${node.inFile}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return [...warnings.values()];
|
|
90
|
-
}
|
|
91
|
-
// @__NO_SIDE_EFFECTS__
|
|
92
|
-
function createAstNode(rawNode) {
|
|
93
|
-
return (0, import_objects.hasOwn)(rawNode, "license") ? /* @__PURE__ */ createLicenseNode(rawNode) : /* @__PURE__ */ createBinaryOperationNode(rawNode);
|
|
94
|
-
}
|
|
95
|
-
// @__NO_SIDE_EFFECTS__
|
|
96
|
-
function createBinaryOperationNode(rawNodeParam) {
|
|
97
|
-
let left;
|
|
98
|
-
let right;
|
|
99
|
-
let rawLeft = rawNodeParam.left;
|
|
100
|
-
let rawRight = rawNodeParam.right;
|
|
101
|
-
const { conjunction } = rawNodeParam;
|
|
102
|
-
return {
|
|
103
|
-
__proto__: null,
|
|
104
|
-
type: BINARY_OPERATION_NODE_TYPE,
|
|
105
|
-
get left() {
|
|
106
|
-
if (left === void 0) {
|
|
107
|
-
left = /* @__PURE__ */ createAstNode(rawLeft);
|
|
108
|
-
rawLeft = void 0;
|
|
109
|
-
}
|
|
110
|
-
return left;
|
|
111
|
-
},
|
|
112
|
-
conjunction,
|
|
113
|
-
get right() {
|
|
114
|
-
if (right === void 0) {
|
|
115
|
-
right = /* @__PURE__ */ createAstNode(rawRight);
|
|
116
|
-
rawRight = void 0;
|
|
117
|
-
}
|
|
118
|
-
return right;
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
// @__NO_SIDE_EFFECTS__
|
|
123
|
-
function createLicenseNode(rawNode) {
|
|
124
|
-
return {
|
|
125
|
-
__proto__: null,
|
|
126
|
-
...rawNode,
|
|
127
|
-
type: LICENSE_NODE_TYPE
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// @__NO_SIDE_EFFECTS__
|
|
131
|
-
function parseSpdxExp(spdxExp) {
|
|
132
|
-
const spdxExpParse = /* @__PURE__ */ getSpdxExpParse();
|
|
133
|
-
try {
|
|
134
|
-
return spdxExpParse(spdxExp);
|
|
135
|
-
} catch {
|
|
136
|
-
}
|
|
137
|
-
const spdxCorrect = /* @__PURE__ */ getSpdxCorrect();
|
|
138
|
-
const corrected = spdxCorrect(spdxExp);
|
|
139
|
-
return corrected ? spdxExpParse(corrected) : void 0;
|
|
140
|
-
}
|
|
141
|
-
// @__NO_SIDE_EFFECTS__
|
|
142
|
-
function resolvePackageLicenses(licenseFieldValue, where) {
|
|
143
|
-
if (licenseFieldValue === "UNLICENSED" || licenseFieldValue === "UNLICENCED") {
|
|
144
|
-
return [{ license: "UNLICENSED" }];
|
|
145
|
-
}
|
|
146
|
-
const match = fileReferenceRegExp.exec(licenseFieldValue);
|
|
147
|
-
if (match) {
|
|
148
|
-
const path = /* @__PURE__ */ getPath();
|
|
149
|
-
return [
|
|
150
|
-
{
|
|
151
|
-
license: licenseFieldValue,
|
|
152
|
-
inFile: (0, import_path.normalizePath)(path.relative(where, match[1] || ""))
|
|
153
|
-
}
|
|
154
|
-
];
|
|
155
|
-
}
|
|
156
|
-
const licenseNodes = [];
|
|
157
|
-
const ast = /* @__PURE__ */ parseSpdxExp(licenseFieldValue);
|
|
158
|
-
if (ast) {
|
|
159
|
-
/* @__PURE__ */ visitLicenses(ast, {
|
|
160
|
-
License(node) {
|
|
161
|
-
const { license } = node;
|
|
162
|
-
if (license.startsWith("LicenseRef") || license.startsWith("DocumentRef")) {
|
|
163
|
-
licenseNodes.length = 0;
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
licenseNodes.push(node);
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
return licenseNodes;
|
|
171
|
-
}
|
|
172
|
-
// @__NO_SIDE_EFFECTS__
|
|
173
|
-
function visitLicenses(ast, visitor) {
|
|
174
|
-
const queue = [
|
|
175
|
-
[/* @__PURE__ */ createAstNode(ast), void 0]
|
|
176
|
-
];
|
|
177
|
-
let pos = 0;
|
|
178
|
-
let { length: queueLength } = queue;
|
|
179
|
-
while (pos < queueLength) {
|
|
180
|
-
if (pos === import_core.LOOP_SENTINEL) {
|
|
181
|
-
throw new Error("Detected infinite loop in ast crawl of visitLicenses");
|
|
182
|
-
}
|
|
183
|
-
const { 0: node, 1: parent } = queue[pos++];
|
|
184
|
-
const { type } = node;
|
|
185
|
-
const visitorRecord = visitor;
|
|
186
|
-
if (typeof visitorRecord[type] === "function" && (0, import_objects.hasOwn)(visitor, type)) {
|
|
187
|
-
if (type === LICENSE_NODE_TYPE) {
|
|
188
|
-
const licenseVisitor = visitorRecord["License"];
|
|
189
|
-
if (typeof licenseVisitor === "function" && licenseVisitor(node, parent) === false) {
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
} else if (type === BINARY_OPERATION_NODE_TYPE) {
|
|
193
|
-
const binaryOpVisitor = visitorRecord["BinaryOperation"];
|
|
194
|
-
if (typeof binaryOpVisitor === "function" && binaryOpVisitor(node, parent) === false) {
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (type === BINARY_OPERATION_NODE_TYPE) {
|
|
200
|
-
queue[queueLength++] = [node.left, node];
|
|
201
|
-
queue[queueLength++] = [node.right, node];
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
206
|
-
0 && (module.exports = {
|
|
207
|
-
collectIncompatibleLicenses,
|
|
208
|
-
collectLicenseWarnings,
|
|
209
|
-
createAstNode,
|
|
210
|
-
createBinaryOperationNode,
|
|
211
|
-
createLicenseNode,
|
|
212
|
-
parseSpdxExp,
|
|
213
|
-
resolvePackageLicenses,
|
|
214
|
-
visitLicenses
|
|
215
|
-
});
|
|
2
|
+
var f=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var C=(e,n)=>{for(var t in n)f(e,t,{get:n[t],enumerable:!0})},D=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of m(n))!_.call(e,i)&&i!==t&&f(e,i,{get:()=>n[i],enumerable:!(r=A(n,i))||r.enumerable});return e};var P=e=>D(f({},"__esModule",{value:!0}),e);var j={};C(j,{collectIncompatibleLicenses:()=>q,collectLicenseWarnings:()=>U,createAstNode:()=>c,createBinaryOperationNode:()=>O,createLicenseNode:()=>h,parseSpdxExp:()=>E,resolvePackageLicenses:()=>T,visitLicenses:()=>B});module.exports=P(j);var y=require("#constants/core"),I=require("#constants/licenses"),L=require("../objects"),S=require("../path");const R=(0,I.getCopyLeftLicenses)(),x="BinaryOperation",g="License",b=/^SEE LICEN[CS]E IN (.+)$/;let l;function k(){return l===void 0&&(l=require("node:path")),l}let N;function v(){return N===void 0&&(N=require("../external/spdx-correct")),N}let u;function w(){return u===void 0&&(u=require("../external/spdx-expression-parse")),u}function q(e){const n=[];for(let t=0,{length:r}=e;t<r;t+=1){const i=e[t];i&&R.has(i.license)&&n.push(i)}return n}function U(e){const n=new Map;for(let t=0,{length:r}=e;t<r;t+=1){const i=e[t];if(!i)continue;const{license:o}=i;o==="UNLICENSED"?n.set("UNLICENSED","Package is unlicensed"):i.inFile!==void 0&&n.set("IN_FILE",`License terms specified in ${i.inFile}`)}return[...n.values()]}function c(e){return(0,L.hasOwn)(e,"license")?h(e):O(e)}function O(e){let n,t,r=e.left,i=e.right;const{conjunction:o}=e;return{__proto__:null,type:x,get left(){return n===void 0&&(n=c(r),r=void 0),n},conjunction:o,get right(){return t===void 0&&(t=c(i),i=void 0),t}}}function h(e){return{__proto__:null,...e,type:g}}function E(e){const n=w();try{return n(e)}catch{}const r=v()(e);return r?n(r):void 0}function T(e,n){if(e==="UNLICENSED"||e==="UNLICENCED")return[{license:"UNLICENSED"}];const t=b.exec(e);if(t)return[{license:e,inFile:(0,S.normalizePath)(k().relative(n,t[1]||""))}];const r=[],i=E(e);return r}function B(e,n){const t=[[c(e),void 0]];let r=0,{length:i}=t;for(;r<i;){if(r===y.LOOP_SENTINEL)throw new Error("Detected infinite loop in ast crawl of visitLicenses");const{0:o,1:s}=t[r++],{type:d}=o,p=n;if(typeof p[d]=="function"&&(0,L.hasOwn)(n,d)){if(d===g){const a=p.License;if(typeof a=="function"&&a(o,s)===!1)break}else if(d===x){const a=p.BinaryOperation;if(typeof a=="function"&&a(o,s)===!1)break}}d===x&&(t[i++]=[o.left,o],t[i++]=[o.right,o])}}0&&(module.exports={collectIncompatibleLicenses,collectLicenseWarnings,createAstNode,createBinaryOperationNode,createLicenseNode,parseSpdxExp,resolvePackageLicenses,visitLicenses});
|
|
216
3
|
//# sourceMappingURL=licenses.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/packages/licenses.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @fileoverview SPDX license parsing and analysis utilities.\n */\n\nimport { LOOP_SENTINEL } from '#constants/core'\nimport { getCopyLeftLicenses } from '#constants/licenses'\n\nconst copyLeftLicenses = getCopyLeftLicenses()\n\nimport { hasOwn } from '../objects'\nimport type { LicenseNode } from '../packages'\nimport { normalizePath } from '../path'\n\nconst BINARY_OPERATION_NODE_TYPE = 'BinaryOperation'\nconst LICENSE_NODE_TYPE = 'License'\n\nconst fileReferenceRegExp = /^SEE LICEN[CS]E IN (.+)$/\n\nlet _path: typeof import('path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path as typeof import('path')\n}\n\nlet _spdxCorrect: typeof import('spdx-correct') | undefined\n/*@__NO_SIDE_EFFECTS__*/\nfunction getSpdxCorrect() {\n if (_spdxCorrect === undefined) {\n // The 'spdx-correct' package is browser safe.\n _spdxCorrect = /*@__PURE__*/ require('../external/spdx-correct')\n }\n return _spdxCorrect as typeof import('spdx-correct')\n}\n\nlet _spdxExpParse: typeof import('spdx-expression-parse') | undefined\n/*@__NO_SIDE_EFFECTS__*/\nfunction getSpdxExpParse() {\n if (_spdxExpParse === undefined) {\n // The 'spdx-expression-parse' package is browser safe.\n _spdxExpParse = /*@__PURE__*/ require('../external/spdx-expression-parse')\n }\n return _spdxExpParse as typeof import('spdx-expression-parse')\n}\n\n// Duplicated from spdx-expression-parse - AST node types.\nexport interface SpdxLicenseNode {\n license: string\n plus?: boolean | undefined\n exception?: string | undefined\n}\n\nexport interface SpdxBinaryOperationNode {\n left: SpdxLicenseNode | SpdxBinaryOperationNode\n conjunction: 'and' | 'or'\n right: SpdxLicenseNode | SpdxBinaryOperationNode\n}\n\nexport type SpdxAstNode = SpdxLicenseNode | SpdxBinaryOperationNode\n\n// Internal AST node types with type discriminator.\nexport interface InternalLicenseNode extends SpdxLicenseNode {\n type: 'License'\n}\n\nexport interface InternalBinaryOperationNode {\n type: 'BinaryOperation'\n left: InternalLicenseNode | InternalBinaryOperationNode\n conjunction: 'and' | 'or'\n right: InternalLicenseNode | InternalBinaryOperationNode\n}\n\nexport type InternalAstNode = InternalLicenseNode | InternalBinaryOperationNode\n\nexport interface LicenseVisitor {\n License?: (\n node: InternalLicenseNode,\n parent?: InternalAstNode,\n ) => boolean | undefined\n BinaryOperation?: (\n node: InternalBinaryOperationNode,\n parent?: InternalAstNode,\n ) => boolean | undefined\n}\n\n/**\n * Collect licenses that are incompatible (copyleft).\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function collectIncompatibleLicenses(\n licenseNodes: LicenseNode[],\n): LicenseNode[] {\n const result = []\n for (let i = 0, { length } = licenseNodes; i < length; i += 1) {\n const node = licenseNodes[i]\n if (node && copyLeftLicenses.has(node.license)) {\n result.push(node)\n }\n }\n return result\n}\n\n/**\n * Collect warnings from license nodes.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function collectLicenseWarnings(licenseNodes: LicenseNode[]): string[] {\n const warnings = new Map()\n for (let i = 0, { length } = licenseNodes; i < length; i += 1) {\n const node = licenseNodes[i]\n if (!node) {\n continue\n }\n const { license } = node\n if (license === 'UNLICENSED') {\n warnings.set('UNLICENSED', 'Package is unlicensed')\n } else if (node.inFile !== undefined) {\n warnings.set('IN_FILE', `License terms specified in ${node.inFile}`)\n }\n }\n return [...warnings.values()]\n}\n\n/**\n * Create an AST node from a raw node.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createAstNode(rawNode: SpdxAstNode): InternalAstNode {\n return hasOwn(rawNode, 'license')\n ? createLicenseNode(rawNode as SpdxLicenseNode)\n : createBinaryOperationNode(rawNode as SpdxBinaryOperationNode)\n}\n\n/**\n * Create a binary operation AST node.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createBinaryOperationNode(\n rawNodeParam: SpdxBinaryOperationNode,\n): InternalBinaryOperationNode {\n let left: InternalAstNode | undefined\n let right: InternalAstNode | undefined\n let rawLeft: SpdxAstNode | undefined = rawNodeParam.left\n let rawRight: SpdxAstNode | undefined = rawNodeParam.right\n const { conjunction } = rawNodeParam\n // Clear the reference to help with memory management.\n return {\n __proto__: null,\n type: BINARY_OPERATION_NODE_TYPE as 'BinaryOperation',\n get left() {\n if (left === undefined) {\n left = createAstNode(rawLeft as SpdxAstNode)\n rawLeft = undefined\n }\n return left\n },\n conjunction,\n get right() {\n if (right === undefined) {\n right = createAstNode(rawRight as SpdxAstNode)\n rawRight = undefined\n }\n return right\n },\n } as InternalBinaryOperationNode\n}\n\n/**\n * Create a license AST node.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createLicenseNode(\n rawNode: SpdxLicenseNode,\n): InternalLicenseNode {\n return {\n __proto__: null,\n ...rawNode,\n type: LICENSE_NODE_TYPE as 'License',\n } as InternalLicenseNode\n}\n\n/**\n * Parse an SPDX license expression into an AST.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function parseSpdxExp(spdxExp: string): SpdxAstNode | undefined {\n const spdxExpParse = getSpdxExpParse()\n try {\n return spdxExpParse(spdxExp)\n } catch {}\n const spdxCorrect = getSpdxCorrect()\n const corrected = spdxCorrect(spdxExp)\n return corrected ? spdxExpParse(corrected) : undefined\n}\n\n/**\n * Parse package license field into structured license nodes.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function resolvePackageLicenses(\n licenseFieldValue: string,\n where: string,\n): LicenseNode[] {\n // Based off of validate-npm-package-license which npm, by way of normalize-package-data,\n // uses to validate license field values:\n // https://github.com/kemitchell/validate-npm-package-license.js/blob/v3.0.4/index.js#L40-L41\n if (\n licenseFieldValue === 'UNLICENSED' ||\n licenseFieldValue === 'UNLICENCED'\n ) {\n return [{ license: 'UNLICENSED' }]\n }\n // Match \"SEE LICENSE IN <relativeFilepathToLicense>\"\n // https://github.com/kemitchell/validate-npm-package-license.js/blob/v3.0.4/index.js#L48-L53\n const match = fileReferenceRegExp.exec(licenseFieldValue)\n if (match) {\n const path = getPath()\n return [\n {\n license: licenseFieldValue,\n inFile: normalizePath(path.relative(where, match[1] || '')),\n },\n ]\n }\n const licenseNodes: InternalLicenseNode[] = []\n const ast = parseSpdxExp(licenseFieldValue)\n if (ast) {\n // SPDX expressions are valid, too except if they contain \"LicenseRef\" or\n // \"DocumentRef\". If the licensing terms cannot be described with standardized\n // SPDX identifiers, then the terms should be put in a file in the package\n // and the license field should point users there, e.g. \"SEE LICENSE IN LICENSE.txt\".\n // https://github.com/kemitchell/validate-npm-package-license.js/blob/v3.0.4/index.js#L18-L24\n visitLicenses(ast, {\n License(node: InternalLicenseNode) {\n const { license } = node\n if (\n license.startsWith('LicenseRef') ||\n license.startsWith('DocumentRef')\n ) {\n licenseNodes.length = 0\n return false\n }\n licenseNodes.push(node)\n },\n })\n }\n return licenseNodes\n}\n\n/**\n * Traverse SPDX license AST and invoke visitor callbacks for each node.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function visitLicenses(ast: SpdxAstNode, visitor: LicenseVisitor): void {\n const queue: Array<[InternalAstNode, InternalAstNode | undefined]> = [\n [createAstNode(ast), undefined],\n ]\n let pos = 0\n let { length: queueLength } = queue\n while (pos < queueLength) {\n if (pos === LOOP_SENTINEL) {\n throw new Error('Detected infinite loop in ast crawl of visitLicenses')\n }\n // AST nodes can be a license node which looks like\n // {\n // license: string\n // plus?: boolean\n // exception?: string\n // }\n // or a binary operation node which looks like\n // {\n // left: License | BinaryOperation\n // conjunction: string\n // right: License | BinaryOperation\n // }\n const { 0: node, 1: parent } = queue[pos++] as [\n InternalBinaryOperationNode | InternalLicenseNode,\n InternalBinaryOperationNode | null,\n ]\n const { type } = node\n const visitorRecord = visitor as Record<string, unknown>\n if (typeof visitorRecord[type] === 'function' && hasOwn(visitor, type)) {\n if (type === LICENSE_NODE_TYPE) {\n const licenseVisitor = visitorRecord['License']\n if (\n typeof licenseVisitor === 'function' &&\n licenseVisitor(node as InternalLicenseNode, parent) === false\n ) {\n break\n }\n } else if (type === BINARY_OPERATION_NODE_TYPE) {\n const binaryOpVisitor = visitorRecord['BinaryOperation']\n if (\n typeof binaryOpVisitor === 'function' &&\n binaryOpVisitor(node as InternalBinaryOperationNode, parent) === false\n ) {\n break\n }\n }\n }\n if (type === BINARY_OPERATION_NODE_TYPE) {\n queue[queueLength++] = [node.left, node]\n queue[queueLength++] = [node.right, node]\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["licenses_exports", "__export", "collectIncompatibleLicenses", "collectLicenseWarnings", "createAstNode", "createBinaryOperationNode", "createLicenseNode", "parseSpdxExp", "resolvePackageLicenses", "visitLicenses", "__toCommonJS", "import_core", "import_licenses", "import_objects", "import_path", "copyLeftLicenses", "BINARY_OPERATION_NODE_TYPE", "LICENSE_NODE_TYPE", "fileReferenceRegExp", "_path", "getPath", "_spdxCorrect", "getSpdxCorrect", "_spdxExpParse", "getSpdxExpParse", "licenseNodes", "result", "i", "length", "node", "warnings", "license", "rawNode", "rawNodeParam", "left", "right", "rawLeft", "rawRight", "conjunction", "spdxExp", "spdxExpParse", "corrected", "licenseFieldValue", "where", "match", "ast", "visitor", "queue", "pos", "queueLength", "parent", "type", "visitorRecord", "licenseVisitor", "binaryOpVisitor"]
|
|
7
7
|
}
|