packtory 0.0.22 → 0.0.24
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/bundle-emitter/emitter.d.ts.map +1 -1
- package/bundle-emitter/emitter.js +2 -2
- package/bundle-emitter/emitter.js.map +1 -1
- package/bundle-emitter/publish-error/auto-mode-error-matching.js +6 -7
- package/bundle-emitter/publish-error/auto-mode-error-matching.js.map +1 -1
- package/bundle-emitter/publish-error/file-mode-error-matching.js +16 -10
- package/bundle-emitter/publish-error/file-mode-error-matching.js.map +1 -1
- package/bundle-emitter/publish-error/publish-error-messages.js +15 -27
- package/bundle-emitter/publish-error/publish-error-messages.js.map +1 -1
- package/bundle-emitter/registry/metadata-auth-retry.js +5 -6
- package/bundle-emitter/registry/metadata-auth-retry.js.map +1 -1
- package/bundle-emitter/registry/oidc-token-exchange.js +6 -14
- package/bundle-emitter/registry/oidc-token-exchange.js.map +1 -1
- package/bundle-emitter/registry/package-metadata-fetcher.js +12 -17
- package/bundle-emitter/registry/package-metadata-fetcher.js.map +1 -1
- package/bundle-emitter/registry/publish-settings-bridge.js +8 -12
- package/bundle-emitter/registry/publish-settings-bridge.js.map +1 -1
- package/bundle-emitter/registry/registry-auth-config.js +22 -26
- package/bundle-emitter/registry/registry-auth-config.js.map +1 -1
- package/bundle-emitter/registry/registry-client.d.ts +1 -1
- package/bundle-emitter/registry/registry-client.d.ts.map +1 -1
- package/bundle-emitter/registry/registry-client.js +13 -6
- package/bundle-emitter/registry/registry-client.js.map +1 -1
- package/bundle-emitter/registry/registry-package-path.js +4 -0
- package/bundle-emitter/registry/registry-package-path.js.map +1 -0
- package/bundle-emitter/repository-coherence.js +17 -23
- package/bundle-emitter/repository-coherence.js.map +1 -1
- package/bundle-emitter/repository-url-normalizer.js +5 -8
- package/bundle-emitter/repository-url-normalizer.js.map +1 -1
- package/checks/rules/duplicate-messages.js +7 -10
- package/checks/rules/duplicate-messages.js.map +1 -1
- package/checks/rules/no-unused-bundle-dependencies.js +10 -13
- package/checks/rules/no-unused-bundle-dependencies.js.map +1 -1
- package/common/bundled-dependency-groups.js +28 -0
- package/common/bundled-dependency-groups.js.map +1 -0
- package/common/package-layout.js +49 -0
- package/common/package-layout.js.map +1 -0
- package/common/package-name-map.js +8 -0
- package/common/package-name-map.js.map +1 -0
- package/common/worklist.js +23 -0
- package/common/worklist.js.map +1 -0
- package/config/config.d.ts +1 -1
- package/config/config.d.ts.map +1 -1
- package/config/dependency-existence-validation.js +15 -17
- package/config/dependency-existence-validation.js.map +1 -1
- package/config/package-config.d.ts.map +1 -1
- package/config/package-config.js +2 -6
- package/config/package-config.js.map +1 -1
- package/config/publish-settings.d.ts.map +1 -1
- package/config/publish-settings.report.js +8 -7
- package/config/publish-settings.report.js.map +1 -1
- package/config/registry-settings.d.ts.map +1 -1
- package/config/root-config-validation.js +86 -81
- package/config/root-config-validation.js.map +1 -1
- package/dead-code-eliminator/cross-bundle/bundle-index.js +0 -3
- package/dead-code-eliminator/cross-bundle/bundle-index.js.map +1 -1
- package/dead-code-eliminator/cross-bundle/import-export-walker.js +4 -2
- package/dead-code-eliminator/cross-bundle/import-export-walker.js.map +1 -1
- package/dead-code-eliminator/eliminator.js.map +1 -1
- package/dead-code-eliminator/imported-expression-origin.js +28 -32
- package/dead-code-eliminator/imported-expression-origin.js.map +1 -1
- package/dead-code-eliminator/pure-expression.js +53 -64
- package/dead-code-eliminator/pure-expression.js.map +1 -1
- package/dead-code-eliminator/reachability/bfs-closure.js +31 -24
- package/dead-code-eliminator/reachability/bfs-closure.js.map +1 -1
- package/dead-code-eliminator/side-effect-classifier.js +2 -2
- package/dead-code-eliminator/side-effect-classifier.js.map +1 -1
- package/dead-code-eliminator/statement-classifiers.js +4 -5
- package/dead-code-eliminator/statement-classifiers.js.map +1 -1
- package/dead-code-eliminator/syntax-kind-sets.js +24 -65
- package/dead-code-eliminator/syntax-kind-sets.js.map +1 -1
- package/dependency-scanner/node-modules-manifest-synthesizer.js +3 -6
- package/dependency-scanner/node-modules-manifest-synthesizer.js.map +1 -1
- package/dependency-scanner/package-owned-asset-file-path.js +2 -13
- package/dependency-scanner/package-owned-asset-file-path.js.map +1 -1
- package/dependency-scanner/scanner.js +39 -29
- package/dependency-scanner/scanner.js.map +1 -1
- package/dependency-scanner/source-file-references.d.ts.map +1 -1
- package/dependency-scanner/source-file-references.js +75 -79
- package/dependency-scanner/source-file-references.js.map +1 -1
- package/dependency-scanner/typescript-project-analyzer.d.ts.map +1 -1
- package/dependency-scanner/typescript-project-analyzer.js +2 -1
- package/dependency-scanner/typescript-project-analyzer.js.map +1 -1
- package/dependency-scanner/virtual-package-json-host.js +2 -1
- package/dependency-scanner/virtual-package-json-host.js.map +1 -1
- package/directed-graph/graph.js +38 -64
- package/directed-graph/graph.js.map +1 -1
- package/file-manager/compare.js +7 -3
- package/file-manager/compare.js.map +1 -1
- package/file-manager/file-description-by-path.js +8 -0
- package/file-manager/file-description-by-path.js.map +1 -0
- package/npm-oidc-id-token-resolver.js +17 -14
- package/npm-oidc-id-token-resolver.js.map +1 -1
- package/package-surface/implicit-bin.js +9 -6
- package/package-surface/implicit-bin.js.map +1 -1
- package/package-surface/package-json-export.js +4 -3
- package/package-surface/package-json-export.js.map +1 -1
- package/package-surface/package-shape.js +4 -3
- package/package-surface/package-shape.js.map +1 -1
- package/package-surface/package-surface-index.js +136 -0
- package/package-surface/package-surface-index.js.map +1 -0
- package/package-surface/public-specifiers.js +3 -12
- package/package-surface/public-specifiers.js.map +1 -1
- package/package-surface/root-registry.js +10 -20
- package/package-surface/root-registry.js.map +1 -1
- package/package-surface/specifier-syntax.js +0 -19
- package/package-surface/specifier-syntax.js.map +1 -1
- package/package-surface/substitution-exports.js +59 -35
- package/package-surface/substitution-exports.js.map +1 -1
- package/package-surface/surface.js +0 -3
- package/package-surface/surface.js.map +1 -1
- package/package.json +16 -4
- package/packtory/options/bundle-dependency-resolution.js +6 -8
- package/packtory/options/bundle-dependency-resolution.js.map +1 -1
- package/packtory/options/version-trigger.js.map +1 -1
- package/packtory/package-processor-publish.d.ts +2 -1
- package/packtory/package-processor-publish.d.ts.map +1 -1
- package/packtory/package-processor-publish.js +19 -13
- package/packtory/package-processor-publish.js.map +1 -1
- package/packtory/packtory-pack.js +129 -141
- package/packtory/packtory-pack.js.map +1 -1
- package/packtory/packtory-release-analysis.js +8 -16
- package/packtory/packtory-release-analysis.js.map +1 -1
- package/packtory/packtory-results.d.ts +26 -11
- package/packtory/packtory-results.d.ts.map +1 -1
- package/packtory/packtory-results.js +27 -5
- package/packtory/packtory-results.js.map +1 -1
- package/packtory/packtory.js +65 -49
- package/packtory/packtory.js.map +1 -1
- package/packtory/partial-result.js +26 -0
- package/packtory/partial-result.js.map +1 -0
- package/packtory/published-release-state.d.ts +9 -0
- package/packtory/published-release-state.d.ts.map +1 -0
- package/packtory/published-release-state.js +12 -0
- package/packtory/published-release-state.js.map +1 -0
- package/packtory/release-analysis.js +74 -81
- package/packtory/release-analysis.js.map +1 -1
- package/packtory/resolved-package.js +6 -6
- package/packtory/resolved-package.js.map +1 -1
- package/packtory/scheduler.d.ts +1 -0
- package/packtory/scheduler.d.ts.map +1 -1
- package/packtory/scheduler.js +70 -52
- package/packtory/scheduler.js.map +1 -1
- package/packtory/stages/publish-stage.js +11 -6
- package/packtory/stages/publish-stage.js.map +1 -1
- package/packtory/stages/release-diff-stage.js +11 -10
- package/packtory/stages/release-diff-stage.js.map +1 -1
- package/report/aggregator/package-report-materialization.js +35 -22
- package/report/aggregator/package-report-materialization.js.map +1 -1
- package/report/config-redactor.js +5 -4
- package/report/config-redactor.js.map +1 -1
- package/report/inspectors/inspect-artifact-sizes.js +7 -3
- package/report/inspectors/inspect-artifact-sizes.js.map +1 -1
- package/report/inspectors/inspect-scan-results.js +8 -2
- package/report/inspectors/inspect-scan-results.js.map +1 -1
- package/report/preview/preview-document-diff.d.ts +6 -1
- package/report/preview/preview-document-diff.d.ts.map +1 -1
- package/report/preview/preview-document-diff.js +8 -3
- package/report/preview/preview-document-diff.js.map +1 -1
- package/report/release-diff/file-set-diff.d.ts +14 -4
- package/report/release-diff/file-set-diff.d.ts.map +1 -1
- package/report/release-diff/file-set-diff.js +28 -28
- package/report/release-diff/file-set-diff.js.map +1 -1
- package/report/release-diff/release-version-transition.js +6 -4
- package/report/release-diff/release-version-transition.js.map +1 -1
- package/resource-resolver/content.js +5 -3
- package/resource-resolver/content.js.map +1 -1
- package/sbom/license-resolver.js +3 -3
- package/sbom/license-resolver.js.map +1 -1
- package/sbom/sbom-builder.js +1 -8
- package/sbom/sbom-builder.js.map +1 -1
- package/sbom/sbom-file.d.ts.map +1 -1
- package/sbom/sbom-file.js +7 -4
- package/sbom/sbom-file.js.map +1 -1
- package/sbom/sbom-serializer.js +10 -6
- package/sbom/sbom-serializer.js.map +1 -1
- package/sbom.cdx.json +22 -5
- package/vendor-materializer/vendor-materializer.d.ts.map +1 -1
- package/vendor-materializer/vendor-materializer.js +99 -123
- package/vendor-materializer/vendor-materializer.js.map +1 -1
- package/version-manager/dependencies/bundle-dependency-grouping.js +18 -14
- package/version-manager/dependencies/bundle-dependency-grouping.js.map +1 -1
- package/version-manager/imports/versioned-bundle-imports.js +15 -12
- package/version-manager/imports/versioned-bundle-imports.js.map +1 -1
- package/version-manager/manager.d.ts.map +1 -1
- package/version-manager/manager.js +19 -24
- package/version-manager/manager.js.map +1 -1
- package/version-manager/manifest/builder.js +3 -3
- package/version-manager/manifest/builder.js.map +1 -1
- package/version-manager/optional-bundle-fields.js +2 -5
- package/version-manager/optional-bundle-fields.js.map +1 -1
- package/version-manager/representative-root.js +7 -27
- package/version-manager/representative-root.js.map +1 -1
- package/version-manager/specifier-classifier.js +13 -10
- package/version-manager/specifier-classifier.js.map +1 -1
- package/version-manager/specifier-errors.js +17 -6
- package/version-manager/specifier-errors.js.map +1 -1
- package/package-surface/explicit-specifier-build.js +0 -28
- package/package-surface/explicit-specifier-build.js.map +0 -1
- package/package-surface/explicit-specifier-resolve.js +0 -17
- package/package-surface/explicit-specifier-resolve.js.map +0 -1
- package/package-surface/implicit-specifier-build.js +0 -26
- package/package-surface/implicit-specifier-build.js.map +0 -1
- package/package-surface/implicit-specifier-resolve.js +0 -17
- package/package-surface/implicit-specifier-resolve.js.map +0 -1
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { isBuiltin } from 'node:module';
|
|
3
|
-
import { isDefined } from 'remeda';
|
|
4
3
|
import { ts } from 'ts-morph';
|
|
5
4
|
import { findPackageOwnedAssetFilePath } from "./package-owned-asset-file-path.js";
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export const moduleReferenceKind = {
|
|
6
|
+
externalPackage: 'external-package',
|
|
7
|
+
generatedManifest: 'generated-manifest',
|
|
8
|
+
localAsset: 'local-asset',
|
|
9
|
+
localCode: 'local-code'
|
|
10
|
+
};
|
|
11
|
+
const localAssetExtensions = new Set(['.json', '.wasm']);
|
|
12
|
+
const wasmExtension = '.wasm';
|
|
13
|
+
function hashImportPrefix() {
|
|
14
|
+
return '#';
|
|
8
15
|
}
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
const packagePath = nodeModulePath.slice(nodeModulePath.lastIndexOf(prefix) + prefix.length);
|
|
12
|
-
if (!packagePath.startsWith('@')) {
|
|
13
|
-
return packagePath.slice(0, `${packagePath}/`.indexOf('/'));
|
|
14
|
-
}
|
|
15
|
-
const [scope, name] = packagePath.split('/');
|
|
16
|
-
return `${scope}/${name}`;
|
|
16
|
+
function typesDependenciesFolderPath() {
|
|
17
|
+
return `${path.sep}node_modules${path.sep}@types${path.sep}`;
|
|
17
18
|
}
|
|
18
19
|
function isRelativeOrAbsoluteSpecifier(specifier) {
|
|
19
|
-
return specifier.startsWith('
|
|
20
|
+
return specifier.startsWith('.') || path.isAbsolute(specifier);
|
|
21
|
+
}
|
|
22
|
+
function isHashSpecifier(specifier) {
|
|
23
|
+
return specifier.startsWith(hashImportPrefix());
|
|
20
24
|
}
|
|
21
25
|
function packageNameFromSpecifier(specifier) {
|
|
22
26
|
if (specifier.startsWith('@')) {
|
|
@@ -29,101 +33,93 @@ function packageNameFromSpecifier(specifier) {
|
|
|
29
33
|
const separatorIndex = specifier.indexOf('/');
|
|
30
34
|
return separatorIndex === -1 ? specifier : specifier.slice(0, separatorIndex);
|
|
31
35
|
}
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
return
|
|
38
|
-
});
|
|
39
|
-
if (filePath !== undefined) {
|
|
40
|
-
return { filePath, packageName };
|
|
36
|
+
function typesPackageNameFromResolvedPath(resolvedFilePath) {
|
|
37
|
+
const normalizedPath = path.normalize(resolvedFilePath);
|
|
38
|
+
const folderPath = typesDependenciesFolderPath();
|
|
39
|
+
const folderIndex = normalizedPath.lastIndexOf(folderPath);
|
|
40
|
+
if (folderIndex === -1) {
|
|
41
|
+
return undefined;
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
const relativePath = normalizedPath.slice(folderIndex + folderPath.length);
|
|
44
|
+
const [packageName] = relativePath.split(path.sep);
|
|
45
|
+
return `@types/${packageName}`;
|
|
43
46
|
}
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return
|
|
47
|
+
function externalPackageNameForResolvedImport(importValue, resolvedFilePath, containingSourceFile) {
|
|
48
|
+
if (containingSourceFile.getFilePath().endsWith('.d.ts')) {
|
|
49
|
+
return typesPackageNameFromResolvedPath(resolvedFilePath) ?? packageNameFromSpecifier(importValue);
|
|
50
|
+
}
|
|
51
|
+
return packageNameFromSpecifier(importValue);
|
|
49
52
|
}
|
|
50
53
|
function classifyLocalReference(resolvedFilePath, packageJsonPath) {
|
|
51
54
|
if (path.resolve(resolvedFilePath) === path.resolve(packageJsonPath)) {
|
|
52
|
-
return { kind:
|
|
55
|
+
return { kind: moduleReferenceKind.generatedManifest, filePath: resolvedFilePath };
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return { kind: 'local-asset', filePath: resolvedFilePath };
|
|
57
|
+
if (localAssetExtensions.has(path.extname(resolvedFilePath))) {
|
|
58
|
+
return { kind: moduleReferenceKind.localAsset, filePath: resolvedFilePath };
|
|
57
59
|
}
|
|
58
|
-
return { kind:
|
|
60
|
+
return { kind: moduleReferenceKind.localCode, filePath: resolvedFilePath };
|
|
59
61
|
}
|
|
60
|
-
function
|
|
62
|
+
function resolvedModuleForImport(importValue, containingSourceFile) {
|
|
61
63
|
const project = containingSourceFile.getProject();
|
|
62
|
-
return ts.resolveModuleName(
|
|
64
|
+
return ts.resolveModuleName(importValue, containingSourceFile.getFilePath(), project.getCompilerOptions(), project.getModuleResolutionHost()).resolvedModule;
|
|
63
65
|
}
|
|
64
66
|
export function resolveSourceFileForLiteral(literal, containingSourceFile) {
|
|
65
67
|
const project = containingSourceFile.getProject();
|
|
66
|
-
const resolvedModule =
|
|
68
|
+
const resolvedModule = resolvedModuleForImport(literal.getLiteralValue(), containingSourceFile);
|
|
67
69
|
if (resolvedModule !== undefined) {
|
|
68
70
|
const resolvedFilePath = resolvedModule.resolvedFileName;
|
|
69
71
|
return project.getSourceFile(resolvedFilePath);
|
|
70
72
|
}
|
|
71
73
|
return undefined;
|
|
72
74
|
}
|
|
73
|
-
function
|
|
74
|
-
const resolvedModule = resolvedModuleForLiteral(literal, containingSourceFile);
|
|
75
|
-
if (resolvedModule === undefined) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
const resolvedFilePath = resolvedModule.resolvedFileName;
|
|
79
|
-
if (isNodeModulesPath(resolvedFilePath)) {
|
|
80
|
-
return {
|
|
81
|
-
kind: 'external-package',
|
|
82
|
-
packageName: extractModuleName(resolvedFilePath)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
return classifyLocalReference(resolvedFilePath, packageJsonPath);
|
|
86
|
-
}
|
|
87
|
-
function fallbackModuleReference(literal, containingSourceFile, packageJsonPath) {
|
|
88
|
-
const importValue = literal.getLiteralValue();
|
|
89
|
-
if (!importValue.endsWith('.wasm')) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
75
|
+
function resolveWasmReference(importValue, containingSourceFile, packageJsonPath) {
|
|
92
76
|
if (isRelativeOrAbsoluteSpecifier(importValue)) {
|
|
93
|
-
const
|
|
94
|
-
|
|
77
|
+
const moduleResolutionHost = containingSourceFile.getProject().getModuleResolutionHost();
|
|
78
|
+
const candidatePath = path.resolve(path.dirname(containingSourceFile.getFilePath()), importValue);
|
|
79
|
+
return moduleResolutionHost.fileExists(candidatePath)
|
|
80
|
+
? classifyLocalReference(candidatePath, packageJsonPath)
|
|
81
|
+
: undefined;
|
|
95
82
|
}
|
|
96
|
-
|
|
97
|
-
|
|
83
|
+
packageNameFromSpecifier(importValue);
|
|
84
|
+
const moduleResolutionHost = containingSourceFile.getProject().getModuleResolutionHost();
|
|
85
|
+
const resolvedFilePath = findPackageOwnedAssetFilePath(importValue, path.dirname(containingSourceFile.getFilePath()), (candidatePath) => {
|
|
86
|
+
return moduleResolutionHost.fileExists(candidatePath);
|
|
87
|
+
});
|
|
88
|
+
if (resolvedFilePath === undefined) {
|
|
98
89
|
return undefined;
|
|
99
90
|
}
|
|
100
91
|
return {
|
|
101
|
-
kind:
|
|
102
|
-
packageName:
|
|
92
|
+
kind: moduleReferenceKind.externalPackage,
|
|
93
|
+
packageName: packageNameFromSpecifier(importValue)
|
|
103
94
|
};
|
|
104
95
|
}
|
|
105
|
-
function
|
|
106
|
-
const
|
|
107
|
-
if (
|
|
108
|
-
|
|
96
|
+
function resolveModuleReferenceForImport(importValue, containingSourceFile, packageJsonPath) {
|
|
97
|
+
const resolvedModule = resolvedModuleForImport(importValue, containingSourceFile);
|
|
98
|
+
if (resolvedModule !== undefined) {
|
|
99
|
+
if (!isRelativeOrAbsoluteSpecifier(importValue) && !isHashSpecifier(importValue)) {
|
|
100
|
+
return {
|
|
101
|
+
kind: moduleReferenceKind.externalPackage,
|
|
102
|
+
packageName: externalPackageNameForResolvedImport(importValue, resolvedModule.resolvedFileName, containingSourceFile)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return classifyLocalReference(resolvedModule.resolvedFileName, packageJsonPath);
|
|
109
106
|
}
|
|
110
|
-
return
|
|
107
|
+
return importValue.endsWith(wasmExtension)
|
|
108
|
+
? resolveWasmReference(importValue, containingSourceFile, packageJsonPath)
|
|
109
|
+
: undefined;
|
|
111
110
|
}
|
|
112
111
|
export function getReferencedModules(sourceFile, packageJsonPath) {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
.
|
|
116
|
-
const referencedModule =
|
|
117
|
-
if (referencedModule
|
|
118
|
-
|
|
119
|
-
if (isBuiltin(importValue)) {
|
|
120
|
-
return undefined;
|
|
121
|
-
}
|
|
122
|
-
const message = `Failed to resolve import "${importValue}" in file "${sourceFile.getFilePath()}"`;
|
|
123
|
-
throw new Error(message);
|
|
112
|
+
const referencedModules = [];
|
|
113
|
+
for (const literal of sourceFile.getImportStringLiterals()) {
|
|
114
|
+
const importValue = literal.getLiteralValue();
|
|
115
|
+
const referencedModule = resolveModuleReferenceForImport(importValue, sourceFile, packageJsonPath);
|
|
116
|
+
if (referencedModule !== undefined) {
|
|
117
|
+
referencedModules.push(referencedModule);
|
|
124
118
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
119
|
+
else if (!isBuiltin(importValue)) {
|
|
120
|
+
throw new Error(`Failed to resolve import "${importValue}" in file "${sourceFile.getFilePath()}"`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return referencedModules;
|
|
128
124
|
}
|
|
129
125
|
//# sourceMappingURL=source-file-references.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-file-references.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-file-references.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"source-file-references.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-file-references.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-project-analyzer.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,IAAI,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"typescript-project-analyzer.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,IAAI,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B;AAClE,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,kCAAkC;AAC/G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import { packageManifestPathIn } from "../common/package-layout.js";
|
|
2
3
|
import { analyzationOptionsToCompilerOptions } from "./typescript-compiler-options.js";
|
|
3
4
|
export function getSourcePathFromSourceFile(sourceFile) {
|
|
4
5
|
return sourceFile.getFilePath();
|
|
@@ -7,7 +8,7 @@ export function createTypescriptProjectAnalyzer(dependencies) {
|
|
|
7
8
|
const { fileSystemAdapters, Project, getReferencedModules } = dependencies;
|
|
8
9
|
return {
|
|
9
10
|
analyzeProject(folder, options) {
|
|
10
|
-
const packageJsonPath =
|
|
11
|
+
const packageJsonPath = packageManifestPathIn(folder);
|
|
11
12
|
const project = new Project({
|
|
12
13
|
compilerOptions: analyzationOptionsToCompilerOptions(options),
|
|
13
14
|
fileSystem: fileSystemAdapters.withVirtualPackageJson(options.resolveDeclarationFiles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-project-analyzer.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"typescript-project-analyzer.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,mCAAmC,EAA2B,MAAM,kCAAkC,CAAC;AAqBhH,MAAM,UAAU,2BAA2B,CAAC,UAAgC;IACxE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC3C,YAAmD;IAEnD,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,YAAY,CAAC;IAE3E,OAAO;QACH,cAAc,CAAC,MAAM,EAAE,OAAO;YAC1B,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;gBACxB,eAAe,EAAE,mCAAmC,CAAC,OAAO,CAAC;gBAC7D,UAAU,EAAE,kBAAkB,CAAC,sBAAsB,CACjD,OAAO,CAAC,uBAAuB;oBAC3B,CAAC,CAAC,kBAAkB,CAAC,2BAA2B;oBAChD,CAAC,CAAC,kBAAkB,CAAC,uCAAuC,EAChE,MAAM,EACN,OAAO,CAAC,eAAe,CAC1B;aACJ,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAE9C,OAAO;gBACH,oBAAoB,CAAC,wBAAwB;oBACzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;oBAE1E,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;wBAClC,OAAO,EAAE,CAAC;oBACd,CAAC;oBAED,OAAO,oBAAoB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;gBACpE,CAAC;gBAED,UAAU;oBACN,OAAO,OAAO,CAAC;gBACnB,CAAC;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { isBoolean, isString } from 'remeda';
|
|
3
|
+
import { packageManifestAbsolutePathIn } from "../common/package-layout.js";
|
|
3
4
|
import { bindRequiredMethod, syncMethodNames } from "./host-method-binding.js";
|
|
4
5
|
const packageJsonIndentationSpaces = 2;
|
|
5
6
|
function serializeMainPackageJson(mainPackageJson) {
|
|
6
7
|
return JSON.stringify(mainPackageJson, null, packageJsonIndentationSpaces);
|
|
7
8
|
}
|
|
8
9
|
export function createVirtualPackageJsonHost(fileSystemHost, folder, mainPackageJson) {
|
|
9
|
-
const packageJsonPath =
|
|
10
|
+
const packageJsonPath = packageManifestAbsolutePathIn(folder);
|
|
10
11
|
const serializedPackageJson = serializeMainPackageJson(mainPackageJson);
|
|
11
12
|
const fileExistsSync = bindRequiredMethod(fileSystemHost, syncMethodNames.fileExists, 'a boolean', isBoolean);
|
|
12
13
|
const readFileSync = bindRequiredMethod(fileSystemHost, syncMethodNames.readFile, 'a string', isString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-package-json-host.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/virtual-package-json-host.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"virtual-package-json-host.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/virtual-package-json-host.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC,SAAS,wBAAwB,CAAC,eAAgC;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,4BAA4B,CACxC,cAA8B,EAC9B,MAAc,EACd,eAAgC;IAEhC,MAAM,eAAe,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC9G,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAExG,MAAM,qBAAqB,GAAmB;QAC1C,GAAG,cAAc;QACjB,UAAU,EAAE,KAAK,EAAE,QAAgB,EAAoB,EAAE;YACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,eAAe,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,QAAgB,EAAW,EAAE;YACxD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,eAAe,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,wGAAwG;YACxG,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,QAAiB,EAAmB,EAAE;YACrE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,eAAe,EAAE,CAAC;gBAC7C,OAAO,qBAAqB,CAAC;YACjC,CAAC;YAED,OAAO,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;QACD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAgB,EAAU,EAAE;YACrD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,eAAe,EAAE,CAAC;gBAC7C,OAAO,qBAAqB,CAAC;YACjC,CAAC;YAED,wGAAwG;YACxG,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;KACJ,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,qBAAqB,CAAC;AACjC,CAAC"}
|
package/directed-graph/graph.js
CHANGED
|
@@ -1,38 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
id: node.id,
|
|
4
|
-
data: node.data,
|
|
5
|
-
incomingEdges: node.incomingEdges,
|
|
6
|
-
adjacentNodeIds: new Set([...node.adjacentNodeIds, idToAdd])
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
function removeAdjacentNodeId(node, idToRemove) {
|
|
10
|
-
const adjacentNodeIds = new Set(node.adjacentNodeIds);
|
|
11
|
-
adjacentNodeIds.delete(idToRemove);
|
|
12
|
-
return {
|
|
13
|
-
id: node.id,
|
|
14
|
-
data: node.data,
|
|
15
|
-
incomingEdges: node.incomingEdges,
|
|
16
|
-
adjacentNodeIds
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function withAdjustedIncomingEdges(node, delta) {
|
|
20
|
-
return {
|
|
21
|
-
id: node.id,
|
|
22
|
-
data: node.data,
|
|
23
|
-
adjacentNodeIds: node.adjacentNodeIds,
|
|
24
|
-
incomingEdges: node.incomingEdges + delta
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function increaseIncomingEdges(node) {
|
|
28
|
-
return withAdjustedIncomingEdges(node, 1);
|
|
29
|
-
}
|
|
30
|
-
function decreaseIncomingEdges(node) {
|
|
31
|
-
return withAdjustedIncomingEdges(node, -1);
|
|
32
|
-
}
|
|
33
|
-
function getNonVisitedAdjacentIds(node) {
|
|
34
|
-
return Array.from(node.adjacentNodeIds);
|
|
35
|
-
}
|
|
1
|
+
/* eslint-disable max-statements, no-continue -- graph traversal utilities are intentionally imperative */
|
|
2
|
+
import { createWorklist } from "../common/worklist.js";
|
|
36
3
|
export function createDirectedGraph(dependencies = {}) {
|
|
37
4
|
const resolvedDependencies = {
|
|
38
5
|
cyclePathIncludes(visitedIds, id) {
|
|
@@ -72,13 +39,6 @@ export function createDirectedGraph(dependencies = {}) {
|
|
|
72
39
|
}
|
|
73
40
|
return newIncomingEdgesPerNode;
|
|
74
41
|
}
|
|
75
|
-
function getTraversalBudget() {
|
|
76
|
-
let edgeCount = 0;
|
|
77
|
-
for (const node of nodes.values()) {
|
|
78
|
-
edgeCount += node.adjacentNodeIds.size;
|
|
79
|
-
}
|
|
80
|
-
return nodes.size + edgeCount + 1;
|
|
81
|
-
}
|
|
82
42
|
function detectCyclesForNode(baseNode, visitedIds) {
|
|
83
43
|
if (visitedIds.length === nodes.size + 1) {
|
|
84
44
|
throw new Error('Cycle detection exceeded the maximum traversal depth');
|
|
@@ -122,26 +82,40 @@ export function createDirectedGraph(dependencies = {}) {
|
|
|
122
82
|
const cycles = detectCycles();
|
|
123
83
|
return cycles.length > 0;
|
|
124
84
|
}
|
|
85
|
+
function stepBreadthFirstSearch(head, pendingNodes, visited, visitor) {
|
|
86
|
+
if (resolvedDependencies.visitedHas(visited, head.id)) {
|
|
87
|
+
return pendingNodes.takeNext();
|
|
88
|
+
}
|
|
89
|
+
visited.add(head.id);
|
|
90
|
+
visitor(head);
|
|
91
|
+
for (const id of head.adjacentNodeIds) {
|
|
92
|
+
const adjacentNode = getNode(id);
|
|
93
|
+
pendingNodes.schedule(adjacentNode);
|
|
94
|
+
}
|
|
95
|
+
return pendingNodes.takeNext();
|
|
96
|
+
}
|
|
125
97
|
function visitBreadthFirstSearch(startId, visitor) {
|
|
126
98
|
const startNode = getNode(startId);
|
|
127
|
-
const
|
|
99
|
+
const pendingNodes = createWorklist([]);
|
|
128
100
|
const visited = new Set();
|
|
129
|
-
const traversalBudget =
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
for (const id of nonVisitedAdjacentIds) {
|
|
142
|
-
const adjacentNode = getNode(id);
|
|
143
|
-
queue.push(adjacentNode);
|
|
101
|
+
const traversalBudget = Array.from({
|
|
102
|
+
length: nodes.size +
|
|
103
|
+
Array.from(nodes.values()).reduce((edgeCount, node) => {
|
|
104
|
+
return edgeCount + node.adjacentNodeIds.size;
|
|
105
|
+
}, 0) +
|
|
106
|
+
1
|
|
107
|
+
});
|
|
108
|
+
let head = startNode;
|
|
109
|
+
const completed = traversalBudget.some(() => {
|
|
110
|
+
const next = stepBreadthFirstSearch(head, pendingNodes, visited, visitor);
|
|
111
|
+
if (next === undefined) {
|
|
112
|
+
return true;
|
|
144
113
|
}
|
|
114
|
+
head = next;
|
|
115
|
+
return false;
|
|
116
|
+
});
|
|
117
|
+
if (completed) {
|
|
118
|
+
return;
|
|
145
119
|
}
|
|
146
120
|
throw new Error('Breadth-first traversal exceeded the maximum iteration budget');
|
|
147
121
|
}
|
|
@@ -168,8 +142,8 @@ export function createDirectedGraph(dependencies = {}) {
|
|
|
168
142
|
if (fromNode.adjacentNodeIds.has(toNode.id)) {
|
|
169
143
|
throw new Error(`Edge from "${edge.from}" to "${toNode.id}" already exists`);
|
|
170
144
|
}
|
|
171
|
-
|
|
172
|
-
|
|
145
|
+
fromNode.adjacentNodeIds.add(toNode.id);
|
|
146
|
+
toNode.incomingEdges += 1;
|
|
173
147
|
}
|
|
174
148
|
function disconnect(edge) {
|
|
175
149
|
const fromNode = getNode(edge.from);
|
|
@@ -177,8 +151,8 @@ export function createDirectedGraph(dependencies = {}) {
|
|
|
177
151
|
if (!fromNode.adjacentNodeIds.has(toNode.id)) {
|
|
178
152
|
throw new Error(`Edge from "${edge.from}" to "${toNode.id}" does not exist`);
|
|
179
153
|
}
|
|
180
|
-
|
|
181
|
-
|
|
154
|
+
fromNode.adjacentNodeIds.delete(toNode.id);
|
|
155
|
+
toNode.incomingEdges -= 1;
|
|
182
156
|
}
|
|
183
157
|
function traverse(visitor) {
|
|
184
158
|
for (const [nodeId, node] of nodes) {
|
|
@@ -194,10 +168,10 @@ export function createDirectedGraph(dependencies = {}) {
|
|
|
194
168
|
const generations = [];
|
|
195
169
|
let alreadyDiscovered = new Set();
|
|
196
170
|
let incomingEdgesPerNode = getIncomingEdgesPerNode();
|
|
197
|
-
|
|
171
|
+
let exhaustedAttempts = 0;
|
|
172
|
+
const generationAttempts = Array.from({ length: nodes.size + 1 }, (_unused, index) => {
|
|
198
173
|
return index + 1;
|
|
199
174
|
});
|
|
200
|
-
let exhaustedAttempts = 0;
|
|
201
175
|
for (const attempt of generationAttempts) {
|
|
202
176
|
exhaustedAttempts = attempt;
|
|
203
177
|
const currentGeneration = collectCurrentGeneration(alreadyDiscovered, incomingEdgesPerNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../source/directed-graph/graph.ts"],"names":[],"mappings":"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"}
|
package/file-manager/compare.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { sortBy } from 'remeda';
|
|
2
2
|
import { areFileDescriptionEqual } from "./equal.js";
|
|
3
|
+
export const fileDescriptionComparisonStatus = {
|
|
4
|
+
equal: 'equal',
|
|
5
|
+
notEqual: 'not-equal'
|
|
6
|
+
};
|
|
3
7
|
export function compareFileDescriptions(fileDescriptionsA, fileDescriptionsB) {
|
|
4
8
|
if (fileDescriptionsA.length !== fileDescriptionsB.length) {
|
|
5
|
-
return { status:
|
|
9
|
+
return { status: fileDescriptionComparisonStatus.notEqual };
|
|
6
10
|
}
|
|
7
11
|
const byFilePath = (fileDescription) => {
|
|
8
12
|
return fileDescription.filePath;
|
|
@@ -12,9 +16,9 @@ export function compareFileDescriptions(fileDescriptionsA, fileDescriptionsB) {
|
|
|
12
16
|
for (const [index, fileDescriptionA] of sortedFileDescriptionsA.entries()) {
|
|
13
17
|
const fileDescriptionB = sortedFileDescriptionsB[index];
|
|
14
18
|
if (fileDescriptionB === undefined || !areFileDescriptionEqual(fileDescriptionA, fileDescriptionB)) {
|
|
15
|
-
return { status:
|
|
19
|
+
return { status: fileDescriptionComparisonStatus.notEqual };
|
|
16
20
|
}
|
|
17
21
|
}
|
|
18
|
-
return { status:
|
|
22
|
+
return { status: fileDescriptionComparisonStatus.equal };
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=compare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../source/file-manager/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../source/file-manager/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC3C,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;CACf,CAAC;AAMX,MAAM,UAAU,uBAAuB,CACnC,iBAA6C,EAC7C,iBAA6C;IAE7C,IAAI,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,+BAA+B,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,eAAgC,EAAU,EAAE;QAC5D,OAAO,eAAe,CAAC,QAAQ,CAAC;IACpC,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,uBAAuB,GAAG,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAEtE,KAAK,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;QACxE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAExD,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACjG,OAAO,EAAE,MAAM,EAAE,+BAA+B,CAAC,QAAQ,EAAE,CAAC;QAChE,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,+BAA+B,CAAC,KAAK,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-description-by-path.js","sourceRoot":"","sources":["../../../../source/file-manager/file-description-by-path.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return
|
|
1
|
+
function isRecord(value) {
|
|
2
|
+
return value instanceof Object && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
function githubActionsAudience() {
|
|
5
|
+
return 'npm:registry.npmjs.org';
|
|
6
|
+
}
|
|
7
|
+
function defaultOidcIdTokenEnvVariableName() {
|
|
8
|
+
return 'NPM_ID_TOKEN';
|
|
9
9
|
}
|
|
10
10
|
function getGitHubActionsRequestConfig(getEnvironmentVariable) {
|
|
11
11
|
const requestUrl = getEnvironmentVariable('ACTIONS_ID_TOKEN_REQUEST_URL');
|
|
@@ -16,11 +16,14 @@ function getGitHubActionsRequestConfig(getEnvironmentVariable) {
|
|
|
16
16
|
return { requestUrl, requestToken };
|
|
17
17
|
}
|
|
18
18
|
function parseGitHubActionsIdTokenResponse(body) {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
if (!isRecord(body)) {
|
|
20
|
+
throw new Error('GitHub Actions OIDC token response did not contain a usable id_token');
|
|
21
|
+
}
|
|
22
|
+
const { value } = body;
|
|
23
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
21
24
|
throw new Error('GitHub Actions OIDC token response did not contain a usable id_token');
|
|
22
25
|
}
|
|
23
|
-
return
|
|
26
|
+
return value;
|
|
24
27
|
}
|
|
25
28
|
function usesGitHubActionsProvider(auth, getEnvironmentVariable) {
|
|
26
29
|
const provider = auth.provider ?? 'auto';
|
|
@@ -32,20 +35,20 @@ export function createNpmOidcIdTokenResolver(dependencies) {
|
|
|
32
35
|
async function fetchGitHubActionsIdToken() {
|
|
33
36
|
const { requestUrl, requestToken } = getGitHubActionsRequestConfig(getEnvironmentVariable);
|
|
34
37
|
const url = new URL(requestUrl);
|
|
35
|
-
url.searchParams.set('audience', githubActionsAudience);
|
|
38
|
+
url.searchParams.set('audience', githubActionsAudience());
|
|
36
39
|
const response = await fetchImplementation(url, {
|
|
37
40
|
headers: { Authorization: `Bearer ${requestToken}` }
|
|
38
41
|
});
|
|
39
42
|
if (!response.ok) {
|
|
40
43
|
throw new Error(`GitHub Actions OIDC token request failed with status ${response.status}`);
|
|
41
44
|
}
|
|
42
|
-
return parseGitHubActionsIdTokenResponse(await
|
|
45
|
+
return parseGitHubActionsIdTokenResponse(await response.json());
|
|
43
46
|
}
|
|
44
47
|
return async (auth) => {
|
|
45
48
|
if (usesGitHubActionsProvider(auth, getEnvironmentVariable)) {
|
|
46
49
|
return fetchGitHubActionsIdToken();
|
|
47
50
|
}
|
|
48
|
-
const variableName = auth.idTokenEnvVar ?? defaultOidcIdTokenEnvVariableName;
|
|
51
|
+
const variableName = auth.idTokenEnvVar ?? defaultOidcIdTokenEnvVariableName();
|
|
49
52
|
const value = getEnvironmentVariable(variableName);
|
|
50
53
|
if (value === undefined) {
|
|
51
54
|
throw new Error(`OIDC id_token environment variable "${variableName}" is missing`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-oidc-id-token-resolver.js","sourceRoot":"","sources":["../../../source/npm-oidc-id-token-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"npm-oidc-id-token-resolver.js","sourceRoot":"","sources":["../../../source/npm-oidc-id-token-resolver.ts"],"names":[],"mappings":"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"}
|