packtory 0.0.8 → 0.0.10
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/artifacts/artifacts-builder.d.ts +7 -5
- package/artifacts/artifacts-builder.d.ts.map +1 -1
- package/artifacts/artifacts-builder.js +1 -47
- package/artifacts/artifacts-builder.js.map +1 -1
- package/bundle-emitter/emitter.d.ts +12 -2
- package/bundle-emitter/emitter.d.ts.map +1 -1
- package/bundle-emitter/emitter.js +2 -31
- package/bundle-emitter/emitter.js.map +1 -1
- package/bundle-emitter/extract-package-tarball.js +0 -12
- package/bundle-emitter/extract-package-tarball.js.map +1 -1
- package/bundle-emitter/publish-settings-bridge.js +133 -0
- package/bundle-emitter/publish-settings-bridge.js.map +1 -0
- package/bundle-emitter/registry-client.d.ts +13 -6
- package/bundle-emitter/registry-client.d.ts.map +1 -1
- package/bundle-emitter/registry-client.js +1 -90
- package/bundle-emitter/registry-client.js.map +1 -1
- package/bundle-emitter/repository-coherence.js +54 -0
- package/bundle-emitter/repository-coherence.js.map +1 -0
- package/bundle-emitter/repository-url-normalizer.js +2 -0
- package/bundle-emitter/repository-url-normalizer.js.map +1 -0
- package/checks/check-runner.js +1 -12
- package/checks/check-runner.js.map +1 -1
- package/checks/rule.js +5 -0
- package/checks/rule.js.map +1 -0
- package/checks/rules/max-bundle-size.js +9 -0
- package/checks/rules/max-bundle-size.js.map +1 -0
- package/checks/rules/no-dev-dependency-imports.js +9 -0
- package/checks/rules/no-dev-dependency-imports.js.map +1 -0
- package/checks/rules/no-duplicated-files.js +6 -38
- package/checks/rules/no-duplicated-files.js.map +1 -1
- package/checks/rules/no-side-effects.js +9 -0
- package/checks/rules/no-side-effects.js.map +1 -0
- package/checks/rules/no-unused-bundle-dependencies.js +9 -0
- package/checks/rules/no-unused-bundle-dependencies.js.map +1 -0
- package/checks/rules/registry.js +8 -0
- package/checks/rules/registry.js.map +1 -0
- package/checks/rules/required-files.js +10 -0
- package/checks/rules/required-files.js.map +1 -0
- package/checks/rules/unique-target-paths.js +9 -0
- package/checks/rules/unique-target-paths.js.map +1 -0
- package/common/clock.d.ts +7 -0
- package/common/clock.d.ts.map +1 -0
- package/common/clock.js +11 -0
- package/common/clock.js.map +1 -0
- package/common/code-files.js +5 -0
- package/common/code-files.js.map +1 -0
- package/config/additional-files.js +0 -4
- package/config/additional-files.js.map +1 -1
- package/config/additional-package-json-attributes-schema.js +7 -0
- package/config/additional-package-json-attributes-schema.js.map +1 -0
- package/config/automatic-versioning-settings.js +3 -0
- package/config/automatic-versioning-settings.js.map +1 -0
- package/config/checks-schema.d.ts +74 -0
- package/config/checks-schema.d.ts.map +1 -0
- package/config/checks-schema.js +27 -0
- package/config/checks-schema.js.map +1 -0
- package/config/common-package-settings-schemas.js +20 -0
- package/config/common-package-settings-schemas.js.map +1 -0
- package/config/config.d.ts +16 -704
- package/config/config.d.ts.map +1 -1
- package/config/config.js +1 -71
- package/config/config.js.map +1 -1
- package/config/dead-code-elimination-settings.d.ts +12 -0
- package/config/dead-code-elimination-settings.d.ts.map +1 -0
- package/config/dead-code-elimination-settings.js +3 -0
- package/config/dead-code-elimination-settings.js.map +1 -0
- package/config/dependency-policy.d.ts +6 -0
- package/config/dependency-policy.d.ts.map +1 -0
- package/config/dependency-policy.js +3 -0
- package/config/dependency-policy.js.map +1 -0
- package/config/main-package-json-schema.js +13 -0
- package/config/main-package-json-schema.js.map +1 -0
- package/config/manual-versioning-settings.js +3 -0
- package/config/manual-versioning-settings.js.map +1 -0
- package/config/optional-package-settings-schema.js +15 -0
- package/config/optional-package-settings-schema.js.map +1 -0
- package/config/package-config.d.ts +49 -0
- package/config/package-config.d.ts.map +1 -0
- package/config/package-config.js +1 -0
- package/config/package-config.js.map +1 -0
- package/config/package-interface.d.ts +36 -0
- package/config/package-interface.d.ts.map +1 -0
- package/config/package-interface.js +3 -0
- package/config/package-interface.js.map +1 -0
- package/config/package-json.d.ts +10 -10
- package/config/package-json.d.ts.map +1 -1
- package/config/package-json.js +0 -24
- package/config/package-json.js.map +1 -1
- package/config/package-schemas.js +10 -0
- package/config/package-schemas.js.map +1 -0
- package/config/packtory-config-schema.js +4 -0
- package/config/packtory-config-schema.js.map +1 -0
- package/config/packtory-config-without-registry-schema.js +32 -0
- package/config/packtory-config-without-registry-schema.js.map +1 -0
- package/config/per-package-settings-schema.js +22 -0
- package/config/per-package-settings-schema.js.map +1 -0
- package/config/publish-settings.d.ts +22 -0
- package/config/publish-settings.d.ts.map +1 -0
- package/config/publish-settings.js +4 -0
- package/config/publish-settings.js.map +1 -0
- package/config/publish-settings.report.js +17 -0
- package/config/publish-settings.report.js.map +1 -0
- package/config/registry-settings.d.ts +63 -1
- package/config/registry-settings.d.ts.map +1 -1
- package/config/registry-settings.js +0 -4
- package/config/registry-settings.js.map +1 -1
- package/config/registry-settings.report.js +41 -0
- package/config/registry-settings.report.js.map +1 -0
- package/config/root.d.ts +7 -0
- package/config/root.d.ts.map +1 -0
- package/config/root.js +3 -0
- package/config/root.js.map +1 -0
- package/config/sbom-settings.js +2 -0
- package/config/sbom-settings.js.map +1 -0
- package/config/validation.d.ts +2 -2
- package/config/validation.d.ts.map +1 -1
- package/config/validation.js +4 -118
- package/config/validation.js.map +1 -1
- package/config/versioning-settings.d.ts.map +1 -1
- package/config/versioning-settings.js +2 -10
- package/config/versioning-settings.js.map +1 -1
- package/dead-code-eliminator/analyzed-bundle.d.ts +29 -0
- package/dead-code-eliminator/analyzed-bundle.d.ts.map +1 -0
- package/dead-code-eliminator/analyzed-bundle.js +1 -0
- package/dead-code-eliminator/analyzed-bundle.js.map +1 -0
- package/dead-code-eliminator/cross-bundle/cross-bundle-seeds.js +126 -0
- package/dead-code-eliminator/cross-bundle/cross-bundle-seeds.js.map +1 -0
- package/dead-code-eliminator/elimination-emitter.js +53 -0
- package/dead-code-eliminator/elimination-emitter.js.map +1 -0
- package/dead-code-eliminator/eliminator.js +142 -0
- package/dead-code-eliminator/eliminator.js.map +1 -0
- package/dead-code-eliminator/load-bundle.js +53 -0
- package/dead-code-eliminator/load-bundle.js.map +1 -0
- package/dead-code-eliminator/reachability/binding-extractor.js +88 -0
- package/dead-code-eliminator/reachability/binding-extractor.js.map +1 -0
- package/dead-code-eliminator/reachability/impure-statements.js +12 -0
- package/dead-code-eliminator/reachability/impure-statements.js.map +1 -0
- package/dead-code-eliminator/reachability/reachability.js +141 -0
- package/dead-code-eliminator/reachability/reachability.js.map +1 -0
- package/dead-code-eliminator/side-effect-classifier.js +406 -0
- package/dead-code-eliminator/side-effect-classifier.js.map +1 -0
- package/dead-code-eliminator/side-effects-field.js +25 -0
- package/dead-code-eliminator/side-effects-field.js.map +1 -0
- package/dead-code-eliminator/transform/atom-translator.js +13 -0
- package/dead-code-eliminator/transform/atom-translator.js.map +1 -0
- package/dead-code-eliminator/transform/declaration-remover.js +92 -0
- package/dead-code-eliminator/transform/declaration-remover.js.map +1 -0
- package/dead-code-eliminator/transform/line-index.js +27 -0
- package/dead-code-eliminator/transform/line-index.js.map +1 -0
- package/dead-code-eliminator/transform/source-map-composer.js +68 -0
- package/dead-code-eliminator/transform/source-map-composer.js.map +1 -0
- package/dependency-scanner/dependency-graph.d.ts +1 -3
- package/dependency-scanner/dependency-graph.d.ts.map +1 -1
- package/dependency-scanner/dependency-graph.js +1 -76
- package/dependency-scanner/dependency-graph.js.map +1 -1
- package/dependency-scanner/external-dependencies.d.ts +0 -1
- package/dependency-scanner/external-dependencies.d.ts.map +1 -1
- package/dependency-scanner/external-dependencies.js +1 -17
- package/dependency-scanner/external-dependencies.js.map +1 -1
- package/dependency-scanner/scanner.d.ts +7 -7
- package/dependency-scanner/scanner.d.ts.map +1 -1
- package/dependency-scanner/scanner.js +1 -75
- package/dependency-scanner/scanner.js.map +1 -1
- package/dependency-scanner/source-file-references.js +2 -73
- package/dependency-scanner/source-file-references.js.map +1 -1
- package/dependency-scanner/source-map-file-locator.d.ts.map +1 -1
- package/dependency-scanner/source-map-file-locator.js +0 -20
- package/dependency-scanner/source-map-file-locator.js.map +1 -1
- package/dependency-scanner/typescript-file-host.d.ts +2 -0
- package/dependency-scanner/typescript-file-host.d.ts.map +1 -1
- package/dependency-scanner/typescript-file-host.js +1 -48
- package/dependency-scanner/typescript-file-host.js.map +1 -1
- package/dependency-scanner/typescript-project-analyzer.d.ts +4 -6
- package/dependency-scanner/typescript-project-analyzer.d.ts.map +1 -1
- package/dependency-scanner/typescript-project-analyzer.js +0 -64
- package/dependency-scanner/typescript-project-analyzer.js.map +1 -1
- package/directed-graph/graph.d.ts +1 -2
- package/directed-graph/graph.d.ts.map +1 -1
- package/directed-graph/graph.js +0 -194
- package/directed-graph/graph.js.map +1 -1
- package/file-manager/compare.js +1 -16
- package/file-manager/compare.js.map +1 -1
- package/file-manager/equal.js +0 -5
- package/file-manager/equal.js.map +1 -1
- package/file-manager/file-manager.d.ts +1 -1
- package/file-manager/file-manager.d.ts.map +1 -1
- package/file-manager/file-manager.js +0 -46
- package/file-manager/file-manager.js.map +1 -1
- package/file-manager/permissions.js +0 -12
- package/file-manager/permissions.js.map +1 -1
- package/linker/linked-bundle.d.ts +5 -3
- package/linker/linked-bundle.d.ts.map +1 -1
- package/linker/linker.d.ts.map +1 -1
- package/linker/linker.js +0 -22
- package/linker/linker.js.map +1 -1
- package/linker/resource-graph.js +1 -29
- package/linker/resource-graph.js.map +1 -1
- package/linker/source-modifier/import-paths.js +0 -33
- package/linker/source-modifier/import-paths.js.map +1 -1
- package/linker/substitute-bundles.js +1 -73
- package/linker/substitute-bundles.js.map +1 -1
- package/linker/substituted-resource-graph.js +1 -76
- package/linker/substituted-resource-graph.js.map +1 -1
- package/npm-oidc-id-token-resolver.js +56 -0
- package/npm-oidc-id-token-resolver.js.map +1 -0
- package/package-surface/modules.js +89 -0
- package/package-surface/modules.js.map +1 -0
- package/package-surface/public-module-usage.js +37 -0
- package/package-surface/public-module-usage.js.map +1 -0
- package/package-surface/surface.d.ts +12 -0
- package/package-surface/surface.d.ts.map +1 -0
- package/package-surface/surface.js +1 -0
- package/package-surface/surface.js.map +1 -0
- package/package.json +53 -11
- package/packages/package-processor.composition.js +127 -0
- package/packages/package-processor.composition.js.map +1 -0
- package/packages/packtory/packtory.entry-point.d.ts +10 -5
- package/packages/packtory/packtory.entry-point.d.ts.map +1 -1
- package/packages/packtory/packtory.entry-point.js +7 -43
- package/packages/packtory/packtory.entry-point.js.map +1 -1
- package/packtory/map-config.d.ts +7 -16
- package/packtory/map-config.d.ts.map +1 -1
- package/packtory/map-config.js +1 -70
- package/packtory/map-config.js.map +1 -1
- package/packtory/normalize-paths.js +0 -24
- package/packtory/normalize-paths.js.map +1 -1
- package/packtory/package-processor-build.js +3 -0
- package/packtory/package-processor-build.js.map +1 -0
- package/packtory/package-processor-publish.d.ts +18 -0
- package/packtory/package-processor-publish.d.ts.map +1 -0
- package/packtory/package-processor-publish.js +1 -0
- package/packtory/package-processor-publish.js.map +1 -0
- package/packtory/package-processor.d.ts +17 -21
- package/packtory/package-processor.d.ts.map +1 -1
- package/packtory/package-processor.js +2 -85
- package/packtory/package-processor.js.map +1 -1
- package/packtory/packtory-publish.js +66 -0
- package/packtory/packtory-publish.js.map +1 -0
- package/packtory/packtory-resolve.js +84 -0
- package/packtory/packtory-resolve.js.map +1 -0
- package/packtory/packtory-results.d.ts +47 -0
- package/packtory/packtory-results.d.ts.map +1 -0
- package/packtory/packtory-results.js +1 -0
- package/packtory/packtory-results.js.map +1 -0
- package/packtory/packtory.d.ts +16 -37
- package/packtory/packtory.d.ts.map +1 -1
- package/packtory/packtory.js +33 -114
- package/packtory/packtory.js.map +1 -1
- package/packtory/prepare-package-options.d.ts +16 -0
- package/packtory/prepare-package-options.d.ts.map +1 -0
- package/packtory/prepare-package-options.js +5 -0
- package/packtory/prepare-package-options.js.map +1 -0
- package/packtory/report-attachment.js +25 -0
- package/packtory/report-attachment.js.map +1 -0
- package/packtory/resolved-package.d.ts +17 -0
- package/packtory/resolved-package.d.ts.map +1 -0
- package/packtory/resolved-package.js +4 -0
- package/packtory/resolved-package.js.map +1 -0
- package/packtory/scheduler.d.ts.map +1 -1
- package/packtory/scheduler.js +17 -15
- package/packtory/scheduler.js.map +1 -1
- package/progress/progress-broadcaster.d.ts +128 -5
- package/progress/progress-broadcaster.d.ts.map +1 -1
- package/progress/progress-broadcaster.js +0 -16
- package/progress/progress-broadcaster.js.map +1 -1
- package/report/artifact-entry-merger.js +2 -0
- package/report/artifact-entry-merger.js.map +1 -0
- package/report/config-redactor.js +27 -0
- package/report/config-redactor.js.map +1 -0
- package/report/decorators.js +68 -0
- package/report/decorators.js.map +1 -0
- package/report/inspectors.js +1 -0
- package/report/inspectors.js.map +1 -0
- package/report/report-aggregator.d.ts +61 -0
- package/report/report-aggregator.d.ts.map +1 -0
- package/report/report-aggregator.js +2 -0
- package/report/report-aggregator.js.map +1 -0
- package/resource-resolver/content.js +1 -40
- package/resource-resolver/content.js.map +1 -1
- package/resource-resolver/resolved-bundle.d.ts +4 -2
- package/resource-resolver/resolved-bundle.d.ts.map +1 -1
- package/resource-resolver/resource-resolve-options.d.ts +12 -5
- package/resource-resolver/resource-resolve-options.d.ts.map +1 -1
- package/resource-resolver/resource-resolve-options.js +2 -0
- package/resource-resolver/resource-resolve-options.js.map +1 -0
- package/resource-resolver/resource-resolver.d.ts +1 -1
- package/resource-resolver/resource-resolver.d.ts.map +1 -1
- package/resource-resolver/resource-resolver.js +1 -64
- package/resource-resolver/resource-resolver.js.map +1 -1
- package/sbom/extract-license.js +2 -0
- package/sbom/extract-license.js.map +1 -0
- package/sbom/license-resolver.d.ts +14 -0
- package/sbom/license-resolver.d.ts.map +1 -0
- package/sbom/license-resolver.js +3 -0
- package/sbom/license-resolver.js.map +1 -0
- package/sbom/sbom-builder.js +68 -0
- package/sbom/sbom-builder.js.map +1 -0
- package/sbom/sbom-file.d.ts +19 -0
- package/sbom/sbom-file.d.ts.map +1 -0
- package/sbom/sbom-file.js +3 -0
- package/sbom/sbom-file.js.map +1 -0
- package/sbom/sbom-serializer.d.ts +6 -0
- package/sbom/sbom-serializer.d.ts.map +1 -0
- package/sbom/sbom-serializer.js +2 -0
- package/sbom/sbom-serializer.js.map +1 -0
- package/sbom/tool-version.js +44 -0
- package/sbom/tool-version.js.map +1 -0
- package/sbom.cdx.json +390 -0
- package/tar/extract-tar.js +0 -13
- package/tar/extract-tar.js.map +1 -1
- package/tar/tarball-builder.d.ts.map +1 -1
- package/tar/tarball-builder.js +10 -7
- package/tar/tarball-builder.js.map +1 -1
- package/version-manager/manager.d.ts +5 -1
- package/version-manager/manager.d.ts.map +1 -1
- package/version-manager/manager.js +1 -39
- package/version-manager/manager.js.map +1 -1
- package/version-manager/manifest/builder.js +2 -12
- package/version-manager/manifest/builder.js.map +1 -1
- package/version-manager/manifest/serialize.js +1 -55
- package/version-manager/manifest/serialize.js.map +1 -1
- package/version-manager/manifest/sort-values.js +1 -0
- package/version-manager/manifest/sort-values.js.map +1 -0
- package/version-manager/specifier-classifier.js +2 -0
- package/version-manager/specifier-classifier.js.map +1 -0
- package/version-manager/specifier-errors.js +1 -0
- package/version-manager/specifier-errors.js.map +1 -0
- package/version-manager/versioned-bundle-dependencies.js +5 -0
- package/version-manager/versioned-bundle-dependencies.js.map +1 -0
- package/version-manager/versioned-bundle-imports.d.ts +4 -0
- package/version-manager/versioned-bundle-imports.d.ts.map +1 -0
- package/version-manager/versioned-bundle-imports.js +3 -0
- package/version-manager/versioned-bundle-imports.js.map +1 -0
- package/version-manager/versioned-bundle.d.ts +16 -9
- package/version-manager/versioned-bundle.d.ts.map +1 -1
- package/version-manager/versioned-bundle.js +4 -78
- package/version-manager/versioned-bundle.js.map +1 -1
- package/config/entry-point.d.ts +0 -7
- package/config/entry-point.d.ts.map +0 -1
- package/config/entry-point.js +0 -7
- package/config/entry-point.js.map +0 -1
- package/file-manager/sort.js +0 -13
- package/file-manager/sort.js.map +0 -1
- package/list/unique-list.js +0 -5
- package/list/unique-list.js.map +0 -1
- package/version-manager/manifest/builder.d.ts +0 -5
- package/version-manager/manifest/builder.d.ts.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { addMapping, GenMapping, toEncodedMap } from '@jridgewell/gen-mapping';
|
|
2
|
+
import { eachMapping, TraceMap } from '@jridgewell/trace-mapping';
|
|
3
|
+
import { translateGeneratedOffset } from "./atom-translator.js";
|
|
4
|
+
import { buildLineIndex, lineColumnToOffset, offsetToLineColumn } from "./line-index.js";
|
|
5
|
+
function omitNull(value) {
|
|
6
|
+
if (value === null) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
function translateMapping(mapping, originalIndex, transformedIndex, atoms) {
|
|
12
|
+
if (mapping.source === null) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const oldOffset = lineColumnToOffset(originalIndex, mapping.generatedLine, mapping.generatedColumn);
|
|
16
|
+
const newOffset = translateGeneratedOffset(oldOffset, atoms);
|
|
17
|
+
if (newOffset === undefined) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
generated: offsetToLineColumn(transformedIndex, newOffset),
|
|
22
|
+
source: mapping.source,
|
|
23
|
+
original: { line: mapping.originalLine, column: mapping.originalColumn }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function appendMapping(newMap, translated) {
|
|
27
|
+
addMapping(newMap, {
|
|
28
|
+
generated: translated.generated,
|
|
29
|
+
source: translated.source,
|
|
30
|
+
original: translated.original
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function tryParseTraceMap(originalMap) {
|
|
34
|
+
try {
|
|
35
|
+
return new TraceMap(originalMap);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function buildOutputJson(traceMap, encodedMappings) {
|
|
42
|
+
return JSON.stringify({
|
|
43
|
+
version: 3,
|
|
44
|
+
file: omitNull(traceMap.file),
|
|
45
|
+
sourceRoot: traceMap.sourceRoot,
|
|
46
|
+
sources: traceMap.sources,
|
|
47
|
+
sourcesContent: traceMap.sourcesContent,
|
|
48
|
+
names: traceMap.names,
|
|
49
|
+
mappings: encodedMappings
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export function recomposeSourceMap(input) {
|
|
53
|
+
const traceMap = tryParseTraceMap(input.originalMap);
|
|
54
|
+
if (traceMap === null) {
|
|
55
|
+
return input.originalMap;
|
|
56
|
+
}
|
|
57
|
+
const originalIndex = buildLineIndex(input.originalCode);
|
|
58
|
+
const transformedIndex = buildLineIndex(input.transformedCode);
|
|
59
|
+
const mappingsBuilder = new GenMapping();
|
|
60
|
+
eachMapping(traceMap, (mapping) => {
|
|
61
|
+
const translated = translateMapping(mapping, originalIndex, transformedIndex, input.atoms);
|
|
62
|
+
if (translated !== undefined) {
|
|
63
|
+
appendMapping(mappingsBuilder, translated);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return buildOutputJson(traceMap, toEncodedMap(mappingsBuilder).mappings);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=source-map-composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-map-composer.js","sourceRoot":"","sources":["../../../../../source/dead-code-eliminator/transform/source-map-composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export type DependencyGraphNodeData = {
|
|
|
7
7
|
readonly project: TypescriptProject;
|
|
8
8
|
readonly externalDependencies: readonly string[];
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
type DependencyNode = DependencyGraphNodeData & {
|
|
11
11
|
readonly filePath: string;
|
|
12
12
|
readonly localFiles: readonly string[];
|
|
13
13
|
};
|
|
@@ -20,7 +20,6 @@ export type DependencyFiles = {
|
|
|
20
20
|
readonly localFiles: readonly LocalFile[];
|
|
21
21
|
readonly externalDependencies: ExternalDependencies;
|
|
22
22
|
};
|
|
23
|
-
export declare function mergeDependencyFiles(first: Readonly<DependencyFiles>, second: Readonly<DependencyFiles>): Readonly<DependencyFiles>;
|
|
24
23
|
type DependencyGraphVisitor = (node: Readonly<DependencyNode>) => void;
|
|
25
24
|
export type DependencyGraph = {
|
|
26
25
|
addDependency: (filePath: string, data: DependencyGraphNodeData) => void;
|
|
@@ -30,6 +29,5 @@ export type DependencyGraph = {
|
|
|
30
29
|
isKnown: (filePath: string) => boolean;
|
|
31
30
|
flatten: (startFilePath: string) => Readonly<DependencyFiles>;
|
|
32
31
|
};
|
|
33
|
-
export declare function createDependencyGraph(): DependencyGraph;
|
|
34
32
|
export {};
|
|
35
33
|
//# sourceMappingURL=dependency-graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/dependency-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/dependency-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU;AAGvC,OAAO,EAEH,KAAK,oBAAoB,EAE5B,MAAM,4BAA4B;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC;AAEzE,MAAM,MAAM,uBAAuB,GAAG;IAClC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD;AAED,KAAK,cAAc,GAAG,uBAAuB,GAAG;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;CACvD;AAgBD,KAAK,sBAAsB,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC1B,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACzE,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,aAAa,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACrE,IAAI,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC;CACjE"}
|
|
@@ -1,79 +1,4 @@
|
|
|
1
|
+
import { indexBy, unique, values } from 'remeda';
|
|
1
2
|
import { createDirectedGraph } from "../directed-graph/graph.js";
|
|
2
|
-
import { uniqueList } from "../list/unique-list.js";
|
|
3
3
|
import { mergeExternalDependencies } from "./external-dependencies.js";
|
|
4
|
-
export function mergeDependencyFiles(first, second) {
|
|
5
|
-
const mergedLocalFiles = new Map();
|
|
6
|
-
for (const localFile of [...first.localFiles, ...second.localFiles]) {
|
|
7
|
-
mergedLocalFiles.set(localFile.filePath, localFile);
|
|
8
|
-
}
|
|
9
|
-
return {
|
|
10
|
-
localFiles: Array.from(mergedLocalFiles.values()),
|
|
11
|
-
externalDependencies: mergeExternalDependencies(first.externalDependencies, second.externalDependencies)
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export function createDependencyGraph() {
|
|
15
|
-
const graph = createDirectedGraph();
|
|
16
|
-
return {
|
|
17
|
-
addDependency(filePath, data) {
|
|
18
|
-
graph.addNode(filePath, data);
|
|
19
|
-
},
|
|
20
|
-
isKnown: graph.hasNode,
|
|
21
|
-
connect(fromFilePath, toFilePath) {
|
|
22
|
-
graph.connect({ from: fromFilePath, to: toFilePath });
|
|
23
|
-
},
|
|
24
|
-
hasConnection(fromFilePath, toFilePath) {
|
|
25
|
-
return graph.hasConnection({ from: fromFilePath, to: toFilePath });
|
|
26
|
-
},
|
|
27
|
-
walk(startFilePath, visitor) {
|
|
28
|
-
graph.visitBreadthFirstSearch(startFilePath, (node) => {
|
|
29
|
-
visitor({
|
|
30
|
-
filePath: node.id,
|
|
31
|
-
sourceMapFilePath: node.data.sourceMapFilePath,
|
|
32
|
-
externalDependencies: node.data.externalDependencies,
|
|
33
|
-
localFiles: Array.from(node.adjacentNodeIds),
|
|
34
|
-
project: node.data.project
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
},
|
|
38
|
-
flatten(startFilePath) {
|
|
39
|
-
const localFiles = new Map();
|
|
40
|
-
const externalDependencies = new Map();
|
|
41
|
-
graph.visitBreadthFirstSearch(startFilePath, (node) => {
|
|
42
|
-
const directDependencies = new Set(graph.getAdjacentIds(node.id));
|
|
43
|
-
if (node.data.sourceMapFilePath.isJust) {
|
|
44
|
-
directDependencies.add(node.data.sourceMapFilePath.value);
|
|
45
|
-
localFiles.set(node.data.sourceMapFilePath.value, {
|
|
46
|
-
filePath: node.data.sourceMapFilePath.value,
|
|
47
|
-
directDependencies: new Set(),
|
|
48
|
-
project: node.data.project.getProject()
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
localFiles.set(node.id, {
|
|
52
|
-
filePath: node.id,
|
|
53
|
-
directDependencies,
|
|
54
|
-
project: node.data.project.getProject()
|
|
55
|
-
});
|
|
56
|
-
for (const externalDependencyName of node.data.externalDependencies) {
|
|
57
|
-
const externalDependency = externalDependencies.get(externalDependencyName);
|
|
58
|
-
if (externalDependency === undefined) {
|
|
59
|
-
externalDependencies.set(externalDependencyName, {
|
|
60
|
-
name: externalDependencyName,
|
|
61
|
-
referencedFrom: [node.id]
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
externalDependencies.set(externalDependencyName, {
|
|
66
|
-
name: externalDependencyName,
|
|
67
|
-
referencedFrom: uniqueList([...externalDependency.referencedFrom, node.id])
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
return {
|
|
73
|
-
localFiles: Array.from(localFiles.values()),
|
|
74
|
-
externalDependencies
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
4
|
//# sourceMappingURL=dependency-graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/dependency-graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/dependency-graph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B;AAChE,OAAO,EACH,yBAAyB,EAG5B,MAAM,4BAA4B"}
|
|
@@ -3,5 +3,4 @@ export type ExternalDependency = {
|
|
|
3
3
|
readonly referencedFrom: readonly [string, ...(readonly string[])];
|
|
4
4
|
};
|
|
5
5
|
export type ExternalDependencies = ReadonlyMap<string, ExternalDependency>;
|
|
6
|
-
export declare function mergeExternalDependencies(dependenciesA: ExternalDependencies, dependenciesB: ExternalDependencies): ReadonlyMap<string, ExternalDependency>;
|
|
7
6
|
//# sourceMappingURL=external-dependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-dependencies.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/external-dependencies.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACtE
|
|
1
|
+
{"version":3,"file":"external-dependencies.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/external-dependencies.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CACtE;AAED,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC"}
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export function mergeExternalDependencies(dependenciesA, dependenciesB) {
|
|
3
|
-
const mergedDependencies = new Map(dependenciesA.entries());
|
|
4
|
-
for (const dependencyB of dependenciesB.values()) {
|
|
5
|
-
const dependencyA = mergedDependencies.get(dependencyB.name);
|
|
6
|
-
if (dependencyA === undefined) {
|
|
7
|
-
mergedDependencies.set(dependencyB.name, dependencyB);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
mergedDependencies.set(dependencyA.name, {
|
|
11
|
-
name: dependencyA.name,
|
|
12
|
-
referencedFrom: uniqueList([...dependencyA.referencedFrom, ...dependencyB.referencedFrom])
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return mergedDependencies;
|
|
17
|
-
}
|
|
1
|
+
import { unique } from 'remeda';
|
|
18
2
|
//# sourceMappingURL=external-dependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-dependencies.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/external-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"external-dependencies.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/external-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
+
import type { MainPackageJson } from '../config/package-json.ts';
|
|
1
2
|
import type { SourceMapFileLocator } from './source-map-file-locator.ts';
|
|
2
|
-
import type {
|
|
3
|
+
import type { TypescriptProjectAnalyzer } from './typescript-project-analyzer.ts';
|
|
3
4
|
import { type DependencyGraph } from './dependency-graph.ts';
|
|
4
|
-
type
|
|
5
|
-
readonly
|
|
6
|
-
readonly
|
|
7
|
-
readonly resolveDeclarationFiles
|
|
8
|
-
readonly failOnCompileErrors?: boolean;
|
|
5
|
+
type ScanOptionsInput = {
|
|
6
|
+
readonly mainPackageJson: MainPackageJson;
|
|
7
|
+
readonly includeSourceMapFiles?: boolean;
|
|
8
|
+
readonly resolveDeclarationFiles?: boolean;
|
|
9
9
|
};
|
|
10
10
|
export type DependencyScannerDependencies = {
|
|
11
11
|
readonly sourceMapFileLocator: SourceMapFileLocator;
|
|
12
12
|
readonly typescriptProjectAnalyzer: TypescriptProjectAnalyzer;
|
|
13
13
|
};
|
|
14
14
|
export type DependencyScanner = {
|
|
15
|
-
scan: (entryPointFile: string, folder: string, options
|
|
15
|
+
scan: (entryPointFile: string, folder: string, options: ScanOptionsInput) => Promise<DependencyGraph>;
|
|
16
16
|
};
|
|
17
17
|
export declare function createDependencyScanner(dependencyScannerDependencies: Readonly<DependencyScannerDependencies>): DependencyScanner;
|
|
18
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAqB,MAAM,kCAAkC,CAAC;AACrG,OAAO,EAAuD,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQlH,KAAK,gBAAgB,GAAG;IACpB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAC9C,CAAC;AAmCF,MAAM,MAAM,6BAA6B,GAAG;IACxC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CACzG,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,6BAA6B,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GACvE,iBAAiB,CAgEnB"}
|
|
@@ -1,78 +1,4 @@
|
|
|
1
1
|
import { Maybe } from 'true-myth/maybe';
|
|
2
|
-
import {
|
|
2
|
+
import { unique } from 'remeda';
|
|
3
3
|
import { createDependencyGraph } from "./dependency-graph.js";
|
|
4
|
-
function isNodeModulesPath(filePath) {
|
|
5
|
-
return filePath.includes('/node_modules/');
|
|
6
|
-
}
|
|
7
|
-
function isLocalPath(filePath) {
|
|
8
|
-
return !isNodeModulesPath(filePath);
|
|
9
|
-
}
|
|
10
|
-
function extractModuleName(nodeModulePath) {
|
|
11
|
-
const pattern = /\/node_modules\/(?<moduleName>[^@]+?|(?:@.+?\/.+?))\//;
|
|
12
|
-
const result = pattern.exec(nodeModulePath);
|
|
13
|
-
if (result === null) {
|
|
14
|
-
throw new Error(`Couldn’t find node_modules package name for '${nodeModulePath}'`);
|
|
15
|
-
}
|
|
16
|
-
const { groups: { moduleName } = {} } = result;
|
|
17
|
-
if (moduleName === undefined) {
|
|
18
|
-
throw new Error(`Couldn’t extract module name from path ${nodeModulePath}`);
|
|
19
|
-
}
|
|
20
|
-
return moduleName;
|
|
21
|
-
}
|
|
22
|
-
function determineLocalDependencies(dependencies) {
|
|
23
|
-
return dependencies.filter(isLocalPath);
|
|
24
|
-
}
|
|
25
|
-
function determineExternalDependencies(dependencies) {
|
|
26
|
-
const modulePaths = dependencies.filter(isNodeModulesPath);
|
|
27
|
-
const moduleNames = modulePaths.map(extractModuleName);
|
|
28
|
-
const uniqueModuleNames = uniqueList(moduleNames);
|
|
29
|
-
return uniqueModuleNames;
|
|
30
|
-
}
|
|
31
|
-
export function createDependencyScanner(dependencyScannerDependencies) {
|
|
32
|
-
const { sourceMapFileLocator, typescriptProjectAnalyzer } = dependencyScannerDependencies;
|
|
33
|
-
async function getDependencyNodeData(project, sourceFilePath, referencedFilePaths, options) {
|
|
34
|
-
const sourceMapFilePath = options.includeSourceMapFiles
|
|
35
|
-
? await sourceMapFileLocator.locate(sourceFilePath)
|
|
36
|
-
: Maybe.nothing();
|
|
37
|
-
const externalDependencies = determineExternalDependencies(referencedFilePaths);
|
|
38
|
-
return {
|
|
39
|
-
sourceMapFilePath,
|
|
40
|
-
externalDependencies,
|
|
41
|
-
project
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
async function scanDependenciesOfSourceFile(project, sourceFilePath, graph, options) {
|
|
45
|
-
const referencedFilePaths = project.getReferencedSourceFilePaths(sourceFilePath);
|
|
46
|
-
const localFiles = determineLocalDependencies(referencedFilePaths);
|
|
47
|
-
const nodeData = await getDependencyNodeData(project, sourceFilePath, referencedFilePaths, options);
|
|
48
|
-
graph.addDependency(sourceFilePath, nodeData);
|
|
49
|
-
for (const localeFile of localFiles) {
|
|
50
|
-
if (!graph.isKnown(localeFile)) {
|
|
51
|
-
await scanDependenciesOfSourceFile(project, localeFile, graph, options);
|
|
52
|
-
}
|
|
53
|
-
if (!graph.hasConnection(sourceFilePath, localeFile)) {
|
|
54
|
-
graph.connect(sourceFilePath, localeFile);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
async scan(entryPointFile, folder, options = {}) {
|
|
60
|
-
const { resolveDeclarationFiles = false, includeSourceMapFiles = false, moduleResolution = 'module', failOnCompileErrors = false } = options;
|
|
61
|
-
const scanOptions = {
|
|
62
|
-
includeSourceMapFiles,
|
|
63
|
-
resolveDeclarationFiles,
|
|
64
|
-
moduleResolution,
|
|
65
|
-
failOnCompileErrors
|
|
66
|
-
};
|
|
67
|
-
const graph = createDependencyGraph();
|
|
68
|
-
const project = typescriptProjectAnalyzer.analyzeProject(folder, {
|
|
69
|
-
resolveDeclarationFiles: scanOptions.resolveDeclarationFiles,
|
|
70
|
-
failOnCompileErrors: scanOptions.failOnCompileErrors,
|
|
71
|
-
moduleResolution: scanOptions.moduleResolution
|
|
72
|
-
});
|
|
73
|
-
await scanDependenciesOfSourceFile(project, entryPointFile, graph, scanOptions);
|
|
74
|
-
return graph;
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
4
|
//# sourceMappingURL=scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ;AAI/B,OAAO,EAAE,qBAAqB,EAAsD,MAAM,uBAAuB"}
|
|
@@ -1,75 +1,4 @@
|
|
|
1
1
|
import { isBuiltin } from 'node:module';
|
|
2
|
-
import {
|
|
3
|
-
import { ts
|
|
4
|
-
function getReferencedSourceFileFromSymbol(symbol) {
|
|
5
|
-
if (symbol === undefined) {
|
|
6
|
-
return Maybe.nothing();
|
|
7
|
-
}
|
|
8
|
-
const declarations = symbol.getDeclarations();
|
|
9
|
-
return first(declarations)
|
|
10
|
-
.andThen((firstDeclaration) => {
|
|
11
|
-
return firstDeclaration;
|
|
12
|
-
})
|
|
13
|
-
.andThen((firstDeclaration) => {
|
|
14
|
-
if (firstDeclaration.getKind() !== SyntaxKind.SourceFile) {
|
|
15
|
-
return Maybe.nothing();
|
|
16
|
-
}
|
|
17
|
-
if (!ASTNode.isSourceFile(firstDeclaration)) {
|
|
18
|
-
return Maybe.nothing();
|
|
19
|
-
}
|
|
20
|
-
return Maybe.just(firstDeclaration);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function getSourceFileFromSymbol(literal, parent, grandParent) {
|
|
24
|
-
if (ASTNode.isImportTypeNode(grandParent)) {
|
|
25
|
-
return getReferencedSourceFileFromSymbol(grandParent.getSymbol());
|
|
26
|
-
}
|
|
27
|
-
if (ASTNode.isCallExpression(parent)) {
|
|
28
|
-
return getReferencedSourceFileFromSymbol(literal.getSymbol());
|
|
29
|
-
}
|
|
30
|
-
return Maybe.nothing();
|
|
31
|
-
}
|
|
32
|
-
function getSourceFileForLiteral(literal) {
|
|
33
|
-
const parent = literal.getParentOrThrow();
|
|
34
|
-
const grandParent = parent.getParent();
|
|
35
|
-
if (ASTNode.isImportDeclaration(parent) || ASTNode.isExportDeclaration(parent)) {
|
|
36
|
-
return parent.getModuleSpecifierSourceFile();
|
|
37
|
-
}
|
|
38
|
-
if (ASTNode.isImportEqualsDeclaration(grandParent)) {
|
|
39
|
-
return grandParent.getExternalModuleReferenceSourceFile();
|
|
40
|
-
}
|
|
41
|
-
return getSourceFileFromSymbol(literal, parent, grandParent).unwrapOr(undefined);
|
|
42
|
-
}
|
|
43
|
-
export function resolveSourceFileForLiteral(literal, containingSourceFile) {
|
|
44
|
-
const project = containingSourceFile.getProject();
|
|
45
|
-
const result = ts.resolveModuleName(literal.getLiteralValue(), containingSourceFile.getFilePath(), project.getCompilerOptions(), project.getModuleResolutionHost());
|
|
46
|
-
if (result.resolvedModule !== undefined) {
|
|
47
|
-
const resolvedFilePath = result.resolvedModule.resolvedFileName;
|
|
48
|
-
return project.getSourceFile(resolvedFilePath);
|
|
49
|
-
}
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
function isDefined(value) {
|
|
53
|
-
return value !== undefined;
|
|
54
|
-
}
|
|
55
|
-
export function getReferencedSourceFiles(sourceFile) {
|
|
56
|
-
const importStringLiterals = sourceFile.getImportStringLiterals();
|
|
57
|
-
return importStringLiterals
|
|
58
|
-
.map((literal) => {
|
|
59
|
-
let referencedSourceFile = getSourceFileForLiteral(literal);
|
|
60
|
-
if (referencedSourceFile === undefined) {
|
|
61
|
-
referencedSourceFile = resolveSourceFileForLiteral(literal, sourceFile);
|
|
62
|
-
}
|
|
63
|
-
if (referencedSourceFile === undefined) {
|
|
64
|
-
const importValue = literal.getLiteralValue();
|
|
65
|
-
if (isBuiltin(importValue)) {
|
|
66
|
-
return undefined;
|
|
67
|
-
}
|
|
68
|
-
const message = `Failed to resolve import "${importValue}" in file "${sourceFile.getFilePath()}"`;
|
|
69
|
-
throw new Error(message);
|
|
70
|
-
}
|
|
71
|
-
return referencedSourceFile;
|
|
72
|
-
})
|
|
73
|
-
.filter(isDefined);
|
|
74
|
-
}
|
|
2
|
+
import { isDefined } from 'remeda';
|
|
3
|
+
import { ts } from 'ts-morph';
|
|
75
4
|
//# 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,EAAE,SAAS,EAAE,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"source-file-references.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-file-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ;AAClC,OAAO,EAAE,EAAE,EAAuC,MAAM,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-map-file-locator.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-map-file-locator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,MAAM,gCAAgC,GAAG;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1D,CAAC;
|
|
1
|
+
{"version":3,"file":"source-map-file-locator.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-map-file-locator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,MAAM,gCAAgC,GAAG;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1D,CAAC;AAaF,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,QAAQ,CAAC,gCAAgC,CAAC,GACzD,oBAAoB,CAqBtB"}
|
|
@@ -1,23 +1,3 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { Maybe } from 'true-myth';
|
|
3
|
-
const sourceMappingUrlPattern = /^\/\/# sourceMappingURL=(?<url>.+)$/m;
|
|
4
|
-
export function createSourceMapFileLocator(dependencies) {
|
|
5
|
-
const { fileManager } = dependencies;
|
|
6
|
-
return {
|
|
7
|
-
async locate(sourceFile) {
|
|
8
|
-
const fileContent = await fileManager.readFile(sourceFile);
|
|
9
|
-
const result = sourceMappingUrlPattern.exec(fileContent);
|
|
10
|
-
const sourceMappingUrl = result?.groups?.url;
|
|
11
|
-
if (sourceMappingUrl !== undefined) {
|
|
12
|
-
const folder = path.dirname(sourceFile);
|
|
13
|
-
const sourceMappingFile = path.join(folder, sourceMappingUrl);
|
|
14
|
-
const { isReadable } = await fileManager.checkReadability(sourceMappingFile);
|
|
15
|
-
if (isReadable) {
|
|
16
|
-
return Maybe.just(sourceMappingFile);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return Maybe.nothing();
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
3
|
//# sourceMappingURL=source-map-file-locator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-map-file-locator.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-map-file-locator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"source-map-file-locator.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/source-map-file-locator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { FileSystemHost } from 'ts-morph';
|
|
2
|
+
import type { MainPackageJson } from '../config/package-json.ts';
|
|
2
3
|
export type FileSystemAdaptersDependencies = {
|
|
3
4
|
fileSystemHost: FileSystemHost;
|
|
4
5
|
};
|
|
5
6
|
export type FileSystemAdapters = {
|
|
6
7
|
fileSystemHostWithoutFilter: FileSystemHost;
|
|
7
8
|
fileSystemHostFilteringDeclarationFiles: FileSystemHost;
|
|
9
|
+
withVirtualPackageJson: (fileSystemHost: FileSystemHost, folder: string, mainPackageJson: MainPackageJson) => FileSystemHost;
|
|
8
10
|
};
|
|
9
11
|
export declare function createFileSystemAdapters(dependencies: FileSystemAdaptersDependencies): FileSystemAdapters;
|
|
10
12
|
//# sourceMappingURL=typescript-file-host.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-file-host.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-file-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript-file-host.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-file-host.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAejE,MAAM,MAAM,8BAA8B,GAAG;IACzC,cAAc,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,2BAA2B,EAAE,cAAc,CAAC;IAC5C,uCAAuC,EAAE,cAAc,CAAC;IACxD,sBAAsB,EAAE,CACpB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,KAC/B,cAAc,CAAC;CACvB,CAAC;AA4FF,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,8BAA8B,GAAG,kBAAkB,CAmDzG"}
|
|
@@ -1,49 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function isDeclarationFile(filePath) {
|
|
3
|
-
const lowerCasedFilePath = filePath.toLowerCase();
|
|
4
|
-
for (const declarationFileExtension of declarationFileExtensions) {
|
|
5
|
-
if (lowerCasedFilePath.endsWith(declarationFileExtension)) {
|
|
6
|
-
return true;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
function isTypesRootFolder(directoryPath) {
|
|
12
|
-
return directoryPath.endsWith('/node_modules/@types') || directoryPath.includes('/node_modules/@types/');
|
|
13
|
-
}
|
|
14
|
-
export function createFileSystemAdapters(dependencies) {
|
|
15
|
-
const { fileSystemHost } = dependencies;
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ok in this case
|
|
17
|
-
const fileSystemHostFilteringDeclarationFiles = Object.create(fileSystemHost);
|
|
18
|
-
fileSystemHostFilteringDeclarationFiles.fileExists = async (filePath) => {
|
|
19
|
-
if (isDeclarationFile(filePath)) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return fileSystemHost.fileExists(filePath);
|
|
23
|
-
};
|
|
24
|
-
fileSystemHostFilteringDeclarationFiles.fileExistsSync = (filePath) => {
|
|
25
|
-
if (isDeclarationFile(filePath)) {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
// eslint-disable-next-line node/no-sync -- we need to provide this method to match the expected interface
|
|
29
|
-
return fileSystemHost.fileExistsSync(filePath);
|
|
30
|
-
};
|
|
31
|
-
fileSystemHostFilteringDeclarationFiles.directoryExists = async (directoryPath) => {
|
|
32
|
-
if (isTypesRootFolder(directoryPath)) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
return fileSystemHost.directoryExists(directoryPath);
|
|
36
|
-
};
|
|
37
|
-
fileSystemHostFilteringDeclarationFiles.directoryExistsSync = (directoryPath) => {
|
|
38
|
-
if (isTypesRootFolder(directoryPath)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
// eslint-disable-next-line node/no-sync -- we need to provide this method to match the expected interface
|
|
42
|
-
return fileSystemHost.directoryExistsSync(directoryPath);
|
|
43
|
-
};
|
|
44
|
-
return {
|
|
45
|
-
fileSystemHostWithoutFilter: fileSystemHost,
|
|
46
|
-
fileSystemHostFilteringDeclarationFiles
|
|
47
|
-
};
|
|
48
|
-
}
|
|
1
|
+
import path from 'node:path';
|
|
49
2
|
//# sourceMappingURL=typescript-file-host.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-file-host.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-file-host.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript-file-host.js","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-file-host.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { type Project as _Project, type SourceFile } from 'ts-morph';
|
|
2
|
+
import type { MainPackageJson } from '../config/package-json.ts';
|
|
2
3
|
import type { FileSystemAdapters } from './typescript-file-host.ts';
|
|
3
|
-
export type ModuleResolution = 'common-js' | 'module';
|
|
4
4
|
export type TypescriptProjectAnalyzerDependencies = {
|
|
5
5
|
readonly Project: typeof _Project;
|
|
6
6
|
readonly fileSystemAdapters: FileSystemAdapters;
|
|
7
7
|
getReferencedSourceFiles: (sourceFile: Readonly<SourceFile>) => readonly Readonly<SourceFile>[];
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
readonly moduleResolution: ModuleResolution;
|
|
11
|
-
readonly failOnCompileErrors: boolean;
|
|
9
|
+
type AnalyzationOptions = {
|
|
12
10
|
readonly resolveDeclarationFiles: boolean;
|
|
11
|
+
readonly mainPackageJson: MainPackageJson;
|
|
13
12
|
};
|
|
14
13
|
export type TypescriptProject = {
|
|
15
14
|
getReferencedSourceFilePaths: (containingSourceFilePath: string) => readonly string[];
|
|
16
|
-
getSourceFile: (filePath: string) => SourceFile;
|
|
17
15
|
getProject: () => _Project;
|
|
18
16
|
};
|
|
19
17
|
export type TypescriptProjectAnalyzer = {
|
|
20
18
|
analyzeProject: (folder: string, options: AnalyzationOptions) => TypescriptProject;
|
|
21
19
|
};
|
|
22
|
-
export declare function getSourcePathFromSourceFile(sourceFile: Readonly<SourceFile>): string;
|
|
23
20
|
export declare function createTypescriptProjectAnalyzer(dependencies: TypescriptProjectAnalyzerDependencies): TypescriptProjectAnalyzer;
|
|
21
|
+
export {};
|
|
24
22
|
//# sourceMappingURL=typescript-project-analyzer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-project-analyzer.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,OAAO,IAAI,QAAQ,EACxB,KAAK,UAAU,EAGlB,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"typescript-project-analyzer.d.ts","sourceRoot":"","sources":["../../../../source/dependency-scanner/typescript-project-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,OAAO,IAAI,QAAQ,EACxB,KAAK,UAAU,EAGlB,MAAM,UAAU;AACjB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B;AAEnE,MAAM,MAAM,qCAAqC,GAAG;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,QAAQ,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,wBAAwB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,SAAS,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;CACnG;AAED,KAAK,kBAAkB,GAAG;IACtB,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC7C;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,4BAA4B,EAAE,CAAC,wBAAwB,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;IACtF,UAAU,EAAE,MAAM,QAAQ,CAAC;CAC9B;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,iBAAiB,CAAC;CACtF;AA+BD,wBAAgB,+BAA+B,CAC3C,YAAY,EAAE,qCAAqC,GACpD,yBAAyB"}
|