@angular/cdk 20.0.0-next.2 → 20.0.0-next.4
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/dialog/index.d.ts +8 -3
- package/drag-drop/index.d.ts +2 -1
- package/fesm2022/{a11y-module-e6996d20.mjs → a11y-module-b228dc71.mjs} +29 -29
- package/fesm2022/{a11y-module-e6996d20.mjs.map → a11y-module-b228dc71.mjs.map} +1 -1
- package/fesm2022/a11y.mjs +20 -20
- package/fesm2022/accordion.mjs +12 -12
- package/fesm2022/{array-ee3b4bab.mjs → array-88e1bec3.mjs} +1 -1
- package/fesm2022/array-88e1bec3.mjs.map +1 -0
- package/fesm2022/{bidi-module-0726b65c.mjs → bidi-module-e73b8776.mjs} +9 -9
- package/fesm2022/{bidi-module-0726b65c.mjs.map → bidi-module-e73b8776.mjs.map} +1 -1
- package/fesm2022/bidi.mjs +2 -2
- package/fesm2022/{breakpoints-observer-d4584b66.mjs → breakpoints-observer-9432a91b.mjs} +9 -9
- package/fesm2022/{breakpoints-observer-d4584b66.mjs.map → breakpoints-observer-9432a91b.mjs.map} +1 -1
- package/fesm2022/cdk.mjs +1 -1
- package/fesm2022/cdk.mjs.map +1 -1
- package/fesm2022/clipboard.mjs +10 -10
- package/fesm2022/coercion.mjs +3 -3
- package/fesm2022/coercion.mjs.map +1 -1
- package/fesm2022/collections.mjs +1 -1
- package/fesm2022/{css-pixel-value-286c9a60.mjs → css-pixel-value-447bbfe8.mjs} +1 -1
- package/fesm2022/css-pixel-value-447bbfe8.mjs.map +1 -0
- package/fesm2022/dialog.mjs +32 -26
- package/fesm2022/dialog.mjs.map +1 -1
- package/fesm2022/{directionality-7ea26429.mjs → directionality-ea6ab987.mjs} +4 -4
- package/fesm2022/{directionality-7ea26429.mjs.map → directionality-ea6ab987.mjs.map} +1 -1
- package/fesm2022/drag-drop.mjs +40 -39
- package/fesm2022/drag-drop.mjs.map +1 -1
- package/fesm2022/{element-705567fe.mjs → element-08c51fcd.mjs} +1 -1
- package/fesm2022/element-08c51fcd.mjs.map +1 -0
- package/fesm2022/{focus-monitor-cebaa0d1.mjs → focus-monitor-69f9c0f9.mjs} +12 -12
- package/fesm2022/{focus-monitor-cebaa0d1.mjs.map → focus-monitor-69f9c0f9.mjs.map} +1 -1
- package/fesm2022/{id-generator-fba495fb.mjs → id-generator-ec45a122.mjs} +4 -4
- package/fesm2022/{id-generator-fba495fb.mjs.map → id-generator-ec45a122.mjs.map} +1 -1
- package/fesm2022/layout.mjs +7 -7
- package/fesm2022/listbox.mjs +14 -14
- package/fesm2022/menu.mjs +64 -62
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/{observe-content-d2a6b5a0.mjs → observe-content-459e1d12.mjs} +15 -15
- package/fesm2022/{observe-content-d2a6b5a0.mjs.map → observe-content-459e1d12.mjs.map} +1 -1
- package/fesm2022/observers/private.mjs +3 -3
- package/fesm2022/observers.mjs +2 -2
- package/fesm2022/{overlay-module-863b82c9.mjs → overlay-module-6e7b742f.mjs} +47 -45
- package/fesm2022/overlay-module-6e7b742f.mjs.map +1 -0
- package/fesm2022/overlay.mjs +15 -15
- package/fesm2022/{platform-1be098b0.mjs → platform-2be6a529.mjs} +4 -4
- package/fesm2022/{platform-1be098b0.mjs.map → platform-2be6a529.mjs.map} +1 -1
- package/fesm2022/platform.mjs +5 -5
- package/fesm2022/{portal-directives-c88fea11.mjs → portal-directives-9cd98881.mjs} +18 -18
- package/fesm2022/{portal-directives-c88fea11.mjs.map → portal-directives-9cd98881.mjs.map} +1 -1
- package/fesm2022/portal.mjs +1 -1
- package/fesm2022/private.mjs +2 -2
- package/fesm2022/{scrolling-module-aa9eeac5.mjs → scrolling-module-72941c9f.mjs} +41 -41
- package/fesm2022/{scrolling-module-aa9eeac5.mjs.map → scrolling-module-72941c9f.mjs.map} +1 -1
- package/fesm2022/scrolling.mjs +5 -5
- package/fesm2022/stepper.mjs +25 -25
- package/fesm2022/{style-loader-e14dc585.mjs → style-loader-9fc0a4d2.mjs} +4 -4
- package/fesm2022/{style-loader-e14dc585.mjs.map → style-loader-9fc0a4d2.mjs.map} +1 -1
- package/fesm2022/table.mjs +81 -81
- package/fesm2022/testing/selenium-webdriver.mjs +1 -1
- package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
- package/fesm2022/testing/testbed.mjs +1 -1
- package/fesm2022/testing/testbed.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/text-field.mjs +19 -19
- package/fesm2022/{text-filtering-b60ba8a2.mjs → text-filtering-0c6de6d6.mjs} +1 -1
- package/fesm2022/text-filtering-0c6de6d6.mjs.map +1 -0
- package/fesm2022/tree.mjs +41 -28
- package/fesm2022/tree.mjs.map +1 -1
- package/fesm2022/{unique-selection-dispatcher-1d6f91d8.mjs → unique-selection-dispatcher-d0d5176e.mjs} +4 -4
- package/fesm2022/{unique-selection-dispatcher-1d6f91d8.mjs.map → unique-selection-dispatcher-d0d5176e.mjs.map} +1 -1
- package/fesm2022/{visually-hidden-83aea4a0.mjs → visually-hidden-a6df546a.mjs} +4 -4
- package/fesm2022/{visually-hidden-83aea4a0.mjs.map → visually-hidden-a6df546a.mjs.map} +1 -1
- package/menu/index.d.ts +3 -3
- package/overlay/index.d.ts +6 -6
- package/{overlay-module.d-5d06db8a.d.ts → overlay-module.d-46197115.d.ts} +4 -2
- package/package.json +2 -4
- package/portal/index.d.ts +2 -2
- package/{portal-directives.d-d345bd53.d.ts → portal-directives.d-fefec9d6.d.ts} +1 -1
- package/schematics/index.js +1 -1
- package/schematics/index.js.map +1 -0
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/package-config.js +1 -1
- package/schematics/ng-add/package-config.js.map +1 -0
- package/schematics/ng-add/schema.js +1 -1
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-generate/drag-drop/index.js +15 -6
- package/schematics/ng-generate/drag-drop/index.js.map +1 -0
- package/schematics/ng-generate/drag-drop/schema.js +1 -1
- package/schematics/ng-generate/drag-drop/schema.js.map +1 -0
- package/schematics/ng-update/data/attribute-selectors.js +1 -1
- package/schematics/ng-update/data/attribute-selectors.js.map +1 -0
- package/schematics/ng-update/data/class-names.js +1 -1
- package/schematics/ng-update/data/class-names.js.map +1 -0
- package/schematics/ng-update/data/constructor-checks.js +1 -1
- package/schematics/ng-update/data/constructor-checks.js.map +1 -0
- package/schematics/ng-update/data/css-selectors.js +1 -1
- package/schematics/ng-update/data/css-selectors.js.map +1 -0
- package/schematics/ng-update/data/css-tokens.js +1 -1
- package/schematics/ng-update/data/css-tokens.js.map +1 -0
- package/schematics/ng-update/data/element-selectors.js +1 -1
- package/schematics/ng-update/data/element-selectors.js.map +1 -0
- package/schematics/ng-update/data/index.js +1 -1
- package/schematics/ng-update/data/index.js.map +1 -0
- package/schematics/ng-update/data/input-names.js +1 -1
- package/schematics/ng-update/data/input-names.js.map +1 -0
- package/schematics/ng-update/data/method-call-checks.js +1 -1
- package/schematics/ng-update/data/method-call-checks.js.map +1 -0
- package/schematics/ng-update/data/output-names.js +1 -1
- package/schematics/ng-update/data/output-names.js.map +1 -0
- package/schematics/ng-update/data/property-names.js +1 -1
- package/schematics/ng-update/data/property-names.js.map +1 -0
- package/schematics/ng-update/data/symbol-removal.js +1 -1
- package/schematics/ng-update/data/symbol-removal.js.map +1 -0
- package/schematics/ng-update/devkit-file-system.js +2 -3
- package/schematics/ng-update/devkit-file-system.js.map +1 -0
- package/schematics/ng-update/devkit-migration-rule.js +13 -4
- package/schematics/ng-update/devkit-migration-rule.js.map +1 -0
- package/schematics/ng-update/devkit-migration.js +1 -1
- package/schematics/ng-update/devkit-migration.js.map +1 -0
- package/schematics/ng-update/find-stylesheets.js +1 -1
- package/schematics/ng-update/find-stylesheets.js.map +1 -0
- package/schematics/ng-update/html-parsing/angular.js +1 -1
- package/schematics/ng-update/html-parsing/angular.js.map +1 -0
- package/schematics/ng-update/html-parsing/elements.js +3 -2
- package/schematics/ng-update/html-parsing/elements.js.map +1 -0
- package/schematics/ng-update/index.js +1 -1
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/migrations/attribute-selectors.js +8 -5
- package/schematics/ng-update/migrations/attribute-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/class-inheritance.js +11 -8
- package/schematics/ng-update/migrations/class-inheritance.js.map +1 -0
- package/schematics/ng-update/migrations/class-names.js +15 -12
- package/schematics/ng-update/migrations/class-names.js.map +1 -0
- package/schematics/ng-update/migrations/constructor-signature.js +10 -7
- package/schematics/ng-update/migrations/constructor-signature.js.map +1 -0
- package/schematics/ng-update/migrations/css-selectors.js +8 -5
- package/schematics/ng-update/migrations/css-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/css-tokens.js +8 -5
- package/schematics/ng-update/migrations/css-tokens.js.map +1 -0
- package/schematics/ng-update/migrations/element-selectors.js +8 -5
- package/schematics/ng-update/migrations/element-selectors.js.map +1 -0
- package/schematics/ng-update/migrations/input-names.js +8 -5
- package/schematics/ng-update/migrations/input-names.js.map +1 -0
- package/schematics/ng-update/migrations/method-call-arguments.js +8 -5
- package/schematics/ng-update/migrations/method-call-arguments.js.map +1 -0
- package/schematics/ng-update/migrations/misc-template.js +6 -3
- package/schematics/ng-update/migrations/misc-template.js.map +1 -0
- package/schematics/ng-update/migrations/output-names.js +8 -5
- package/schematics/ng-update/migrations/output-names.js.map +1 -0
- package/schematics/ng-update/migrations/property-names.js +8 -5
- package/schematics/ng-update/migrations/property-names.js.map +1 -0
- package/schematics/ng-update/migrations/symbol-removal.js +10 -6
- package/schematics/ng-update/migrations/symbol-removal.js.map +1 -0
- package/schematics/ng-update/public-api.js +1 -1
- package/schematics/ng-update/public-api.js.map +1 -0
- package/schematics/ng-update/typescript/base-types.js +1 -1
- package/schematics/ng-update/typescript/base-types.js.map +1 -0
- package/schematics/ng-update/typescript/imports.js +1 -1
- package/schematics/ng-update/typescript/imports.js.map +1 -0
- package/schematics/ng-update/typescript/literal.js +1 -1
- package/schematics/ng-update/typescript/literal.js.map +1 -0
- package/schematics/ng-update/typescript/module-specifiers.js +1 -1
- package/schematics/ng-update/typescript/module-specifiers.js.map +1 -0
- package/schematics/ng-update/upgrade-data.js +1 -1
- package/schematics/ng-update/upgrade-data.js.map +1 -0
- package/schematics/paths.js +1 -1
- package/schematics/paths.js.map +1 -0
- package/schematics/update-tool/component-resource-collector.js +3 -5
- package/schematics/update-tool/component-resource-collector.js.map +1 -0
- package/schematics/update-tool/file-system.js +1 -1
- package/schematics/update-tool/file-system.js.map +1 -0
- package/schematics/update-tool/index.js +2 -8
- package/schematics/update-tool/index.js.map +1 -0
- package/schematics/update-tool/logger.js +1 -1
- package/schematics/update-tool/logger.js.map +1 -0
- package/schematics/update-tool/migration.js +3 -10
- package/schematics/update-tool/migration.js.map +1 -0
- package/schematics/update-tool/public-api.js +1 -1
- package/schematics/update-tool/public-api.js.map +1 -0
- package/schematics/update-tool/target-version.js +1 -1
- package/schematics/update-tool/target-version.js.map +1 -0
- package/schematics/update-tool/update-recorder.js +1 -1
- package/schematics/update-tool/update-recorder.js.map +1 -0
- package/schematics/update-tool/utils/decorators.js +1 -1
- package/schematics/update-tool/utils/decorators.js.map +1 -0
- package/schematics/update-tool/utils/diagnostics.js +1 -1
- package/schematics/update-tool/utils/diagnostics.js.map +1 -0
- package/schematics/update-tool/utils/functions.js +1 -1
- package/schematics/update-tool/utils/functions.js.map +1 -0
- package/schematics/update-tool/utils/imports.js +1 -1
- package/schematics/update-tool/utils/imports.js.map +1 -0
- package/schematics/update-tool/utils/line-mappings.js +1 -1
- package/schematics/update-tool/utils/line-mappings.js.map +1 -0
- package/schematics/update-tool/utils/parse-tsconfig.js +1 -1
- package/schematics/update-tool/utils/parse-tsconfig.js.map +1 -0
- package/schematics/update-tool/utils/property-name.js +1 -1
- package/schematics/update-tool/utils/property-name.js.map +1 -0
- package/schematics/update-tool/utils/virtual-host.js +2 -3
- package/schematics/update-tool/utils/virtual-host.js.map +1 -0
- package/schematics/update-tool/version-changes.js +1 -1
- package/schematics/update-tool/version-changes.js.map +1 -0
- package/schematics/utils/ast/ng-module-imports.js +1 -1
- package/schematics/utils/ast/ng-module-imports.js.map +1 -0
- package/schematics/utils/ast.js +22 -11
- package/schematics/utils/ast.js.map +1 -0
- package/schematics/utils/build-component.js +16 -11
- package/schematics/utils/build-component.js.map +1 -0
- package/schematics/utils/get-project.js +1 -1
- package/schematics/utils/get-project.js.map +1 -0
- package/schematics/utils/html-manipulation.js +1 -1
- package/schematics/utils/html-manipulation.js.map +1 -0
- package/schematics/utils/index.js +1 -1
- package/schematics/utils/index.js.map +1 -0
- package/schematics/utils/parse5-element.js +1 -1
- package/schematics/utils/parse5-element.js.map +1 -0
- package/schematics/utils/project-index-file.js +2 -2
- package/schematics/utils/project-index-file.js.map +1 -0
- package/schematics/utils/project-main-file.js +1 -1
- package/schematics/utils/project-main-file.js.map +1 -0
- package/schematics/utils/project-style-file.js +1 -1
- package/schematics/utils/project-style-file.js.map +1 -0
- package/schematics/utils/project-targets.js +4 -3
- package/schematics/utils/project-targets.js.map +1 -0
- package/schematics/utils/project-tsconfig-paths.js +25 -13
- package/schematics/utils/project-tsconfig-paths.js.map +1 -0
- package/schematics/utils/schematic-options.js +26 -14
- package/schematics/utils/schematic-options.js.map +1 -0
- package/scrolling/index.d.ts +2 -2
- package/{scrolling-module.d-a08a462d.d.ts → scrolling-module.d-e4f8e471.d.ts} +1 -1
- package/table/index.d.ts +1 -1
- package/tree/index.d.ts +2 -0
- package/fesm2022/array-ee3b4bab.mjs.map +0 -1
- package/fesm2022/css-pixel-value-286c9a60.mjs.map +0 -1
- package/fesm2022/element-705567fe.mjs.map +0 -1
- package/fesm2022/overlay-module-863b82c9.mjs.map +0 -1
- package/fesm2022/text-filtering-b60ba8a2.mjs.map +0 -1
- package/schematics/index.mjs +0 -37
- package/schematics/ng-add/index.mjs +0 -39
- package/schematics/ng-add/package-config.mjs +0 -51
- package/schematics/ng-add/schema.mjs +0 -10
- package/schematics/ng-generate/drag-drop/index.mjs +0 -33
- package/schematics/ng-generate/drag-drop/schema.mjs +0 -10
- package/schematics/ng-update/data/attribute-selectors.mjs +0 -12
- package/schematics/ng-update/data/class-names.mjs +0 -12
- package/schematics/ng-update/data/constructor-checks.mjs +0 -17
- package/schematics/ng-update/data/css-selectors.mjs +0 -12
- package/schematics/ng-update/data/css-tokens.mjs +0 -12
- package/schematics/ng-update/data/element-selectors.mjs +0 -12
- package/schematics/ng-update/data/index.mjs +0 -35
- package/schematics/ng-update/data/input-names.mjs +0 -12
- package/schematics/ng-update/data/method-call-checks.mjs +0 -12
- package/schematics/ng-update/data/output-names.mjs +0 -12
- package/schematics/ng-update/data/property-names.mjs +0 -12
- package/schematics/ng-update/data/symbol-removal.mjs +0 -12
- package/schematics/ng-update/devkit-file-system.mjs +0 -84
- package/schematics/ng-update/devkit-migration-rule.mjs +0 -133
- package/schematics/ng-update/devkit-migration.mjs +0 -20
- package/schematics/ng-update/find-stylesheets.mjs +0 -41
- package/schematics/ng-update/html-parsing/angular.mjs +0 -51
- package/schematics/ng-update/html-parsing/elements.mjs +0 -62
- package/schematics/ng-update/index.mjs +0 -29
- package/schematics/ng-update/migrations/attribute-selectors.mjs +0 -68
- package/schematics/ng-update/migrations/class-inheritance.mjs +0 -55
- package/schematics/ng-update/migrations/class-names.mjs +0 -88
- package/schematics/ng-update/migrations/constructor-signature.mjs +0 -136
- package/schematics/ng-update/migrations/css-selectors.mjs +0 -72
- package/schematics/ng-update/migrations/css-tokens.mjs +0 -80
- package/schematics/ng-update/migrations/element-selectors.mjs +0 -63
- package/schematics/ng-update/migrations/input-names.mjs +0 -56
- package/schematics/ng-update/migrations/method-call-arguments.mjs +0 -59
- package/schematics/ng-update/migrations/misc-template.mjs +0 -22
- package/schematics/ng-update/migrations/output-names.mjs +0 -43
- package/schematics/ng-update/migrations/property-names.mjs +0 -57
- package/schematics/ng-update/migrations/symbol-removal.mjs +0 -43
- package/schematics/ng-update/public-api.mjs +0 -36
- package/schematics/ng-update/typescript/base-types.mjs +0 -23
- package/schematics/ng-update/typescript/imports.mjs +0 -53
- package/schematics/ng-update/typescript/literal.mjs +0 -32
- package/schematics/ng-update/typescript/module-specifiers.mjs +0 -35
- package/schematics/ng-update/upgrade-data.mjs +0 -40
- package/schematics/paths.mjs +0 -16
- package/schematics/schematics.externs.js +0 -0
- package/schematics/tsconfig.json +0 -29
- package/schematics/update-tool/component-resource-collector.mjs +0 -166
- package/schematics/update-tool/file-system.mjs +0 -18
- package/schematics/update-tool/index.mjs +0 -178
- package/schematics/update-tool/logger.mjs +0 -18
- package/schematics/update-tool/migration.mjs +0 -77
- package/schematics/update-tool/public-api.mjs +0 -33
- package/schematics/update-tool/target-version.mjs +0 -27
- package/schematics/update-tool/update-recorder.mjs +0 -10
- package/schematics/update-tool/update-tool.externs.js +0 -0
- package/schematics/update-tool/utils/decorators.mjs +0 -41
- package/schematics/update-tool/utils/diagnostics.mjs +0 -18
- package/schematics/update-tool/utils/functions.mjs +0 -20
- package/schematics/update-tool/utils/imports.mjs +0 -110
- package/schematics/update-tool/utils/line-mappings.mjs +0 -75
- package/schematics/update-tool/utils/parse-tsconfig.mjs +0 -45
- package/schematics/update-tool/utils/property-name.mjs +0 -27
- package/schematics/update-tool/utils/virtual-host.mjs +0 -72
- package/schematics/update-tool/version-changes.mjs +0 -38
- package/schematics/utils/ast/ng-module-imports.mjs +0 -82
- package/schematics/utils/ast.mjs +0 -68
- package/schematics/utils/build-component.mjs +0 -183
- package/schematics/utils/get-project.mjs +0 -28
- package/schematics/utils/html-manipulation.mjs +0 -91
- package/schematics/utils/index.mjs +0 -36
- package/schematics/utils/parse5-element.mjs +0 -30
- package/schematics/utils/project-index-file.mjs +0 -20
- package/schematics/utils/project-main-file.mjs +0 -25
- package/schematics/utils/project-style-file.mjs +0 -42
- package/schematics/utils/project-targets.mjs +0 -39
- package/schematics/utils/project-tsconfig-paths.mjs +0 -34
- package/schematics/utils/schematic-options.mjs +0 -77
package/schematics/tsconfig.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"declaration": true,
|
|
4
|
-
"lib": ["es2017"],
|
|
5
|
-
"module": "commonjs",
|
|
6
|
-
"moduleResolution": "node",
|
|
7
|
-
"outDir": "../../../dist/packages/cdk/schematics",
|
|
8
|
-
"noEmitOnError": false,
|
|
9
|
-
"strictNullChecks": true,
|
|
10
|
-
"noPropertyAccessFromIndexSignature": true,
|
|
11
|
-
"useUnknownInCatchVariables": true,
|
|
12
|
-
"noImplicitOverride": true,
|
|
13
|
-
"noImplicitReturns": true,
|
|
14
|
-
"noImplicitAny": true,
|
|
15
|
-
"skipDefaultLibCheck": true,
|
|
16
|
-
"noFallthroughCasesInSwitch": true,
|
|
17
|
-
"noUnusedLocals": false,
|
|
18
|
-
"noImplicitThis": true,
|
|
19
|
-
"skipLibCheck": true,
|
|
20
|
-
"strictFunctionTypes": true,
|
|
21
|
-
"sourceMap": true,
|
|
22
|
-
"target": "es2015",
|
|
23
|
-
"types": ["jasmine", "node"]
|
|
24
|
-
},
|
|
25
|
-
"exclude": ["**/files/**/*", "**/*.spec.ts", "ng-update/test-cases/**/*", "testing/**/*.ts"],
|
|
26
|
-
"bazelOptions": {
|
|
27
|
-
"suppressTsconfigOverrideWarnings": true
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.ComponentResourceCollector = void 0;
|
|
11
|
-
const path_1 = require("path");
|
|
12
|
-
const ts = require("typescript");
|
|
13
|
-
const decorators_1 = require("./utils/decorators");
|
|
14
|
-
const functions_1 = require("./utils/functions");
|
|
15
|
-
const line_mappings_1 = require("./utils/line-mappings");
|
|
16
|
-
const property_name_1 = require("./utils/property-name");
|
|
17
|
-
/**
|
|
18
|
-
* Collector that can be used to find Angular templates and stylesheets referenced within
|
|
19
|
-
* given TypeScript source files (inline or external referenced files)
|
|
20
|
-
*/
|
|
21
|
-
class ComponentResourceCollector {
|
|
22
|
-
typeChecker;
|
|
23
|
-
_fileSystem;
|
|
24
|
-
resolvedTemplates = [];
|
|
25
|
-
resolvedStylesheets = [];
|
|
26
|
-
constructor(typeChecker, _fileSystem) {
|
|
27
|
-
this.typeChecker = typeChecker;
|
|
28
|
-
this._fileSystem = _fileSystem;
|
|
29
|
-
}
|
|
30
|
-
visitNode(node) {
|
|
31
|
-
if (node.kind === ts.SyntaxKind.ClassDeclaration) {
|
|
32
|
-
this._visitClassDeclaration(node);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
_visitClassDeclaration(node) {
|
|
36
|
-
const decorators = ts.getDecorators(node);
|
|
37
|
-
if (!decorators || !decorators.length) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const ngDecorators = (0, decorators_1.getAngularDecorators)(this.typeChecker, decorators);
|
|
41
|
-
const componentDecorator = ngDecorators.find(dec => dec.name === 'Component');
|
|
42
|
-
// In case no "@Component" decorator could be found on the current class, skip.
|
|
43
|
-
if (!componentDecorator) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
const decoratorCall = componentDecorator.node.expression;
|
|
47
|
-
// In case the component decorator call is not valid, skip this class declaration.
|
|
48
|
-
if (decoratorCall.arguments.length !== 1) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const componentMetadata = (0, functions_1.unwrapExpression)(decoratorCall.arguments[0]);
|
|
52
|
-
// Ensure that the component metadata is an object literal expression.
|
|
53
|
-
if (!ts.isObjectLiteralExpression(componentMetadata)) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const sourceFile = node.getSourceFile();
|
|
57
|
-
const filePath = this._fileSystem.resolve(sourceFile.fileName);
|
|
58
|
-
const sourceFileDirPath = (0, path_1.dirname)(sourceFile.fileName);
|
|
59
|
-
// Walk through all component metadata properties and determine the referenced
|
|
60
|
-
// HTML templates (either external or inline)
|
|
61
|
-
componentMetadata.properties.forEach(property => {
|
|
62
|
-
if (!ts.isPropertyAssignment(property)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const propertyName = (0, property_name_1.getPropertyNameText)(property.name);
|
|
66
|
-
if (propertyName === 'styles') {
|
|
67
|
-
const elements = ts.isArrayLiteralExpression(property.initializer)
|
|
68
|
-
? property.initializer.elements
|
|
69
|
-
: [property.initializer];
|
|
70
|
-
elements.forEach(el => {
|
|
71
|
-
if (ts.isStringLiteralLike(el)) {
|
|
72
|
-
// Need to add an offset of one to the start because the template quotes are
|
|
73
|
-
// not part of the template content.
|
|
74
|
-
const templateStartIdx = el.getStart() + 1;
|
|
75
|
-
const content = stripBom(el.text);
|
|
76
|
-
this.resolvedStylesheets.push({
|
|
77
|
-
filePath,
|
|
78
|
-
container: node,
|
|
79
|
-
content,
|
|
80
|
-
inline: true,
|
|
81
|
-
start: templateStartIdx,
|
|
82
|
-
getCharacterAndLineOfPosition: pos => ts.getLineAndCharacterOfPosition(sourceFile, pos + templateStartIdx),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// In case there is an inline template specified, ensure that the value is statically
|
|
88
|
-
// analyzable by checking if the initializer is a string literal-like node.
|
|
89
|
-
if (propertyName === 'template' && ts.isStringLiteralLike(property.initializer)) {
|
|
90
|
-
// Need to add an offset of one to the start because the template quotes are
|
|
91
|
-
// not part of the template content.
|
|
92
|
-
const templateStartIdx = property.initializer.getStart() + 1;
|
|
93
|
-
this.resolvedTemplates.push({
|
|
94
|
-
filePath,
|
|
95
|
-
container: node,
|
|
96
|
-
content: property.initializer.text,
|
|
97
|
-
inline: true,
|
|
98
|
-
start: templateStartIdx,
|
|
99
|
-
getCharacterAndLineOfPosition: pos => ts.getLineAndCharacterOfPosition(sourceFile, pos + templateStartIdx),
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
if (propertyName === 'styleUrls' && ts.isArrayLiteralExpression(property.initializer)) {
|
|
103
|
-
property.initializer.elements.forEach(el => {
|
|
104
|
-
if (ts.isStringLiteralLike(el)) {
|
|
105
|
-
this._trackExternalStylesheet(sourceFileDirPath, el, node);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
if (propertyName === 'styleUrl' && ts.isStringLiteralLike(property.initializer)) {
|
|
110
|
-
this._trackExternalStylesheet(sourceFileDirPath, property.initializer, node);
|
|
111
|
-
}
|
|
112
|
-
if (propertyName === 'templateUrl' && ts.isStringLiteralLike(property.initializer)) {
|
|
113
|
-
const templateUrl = property.initializer.text;
|
|
114
|
-
const templatePath = this._fileSystem.resolve(sourceFileDirPath, templateUrl);
|
|
115
|
-
// In case the template does not exist in the file system, skip this
|
|
116
|
-
// external template.
|
|
117
|
-
if (!this._fileSystem.fileExists(templatePath)) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
const fileContent = stripBom(this._fileSystem.read(templatePath) || '');
|
|
121
|
-
if (fileContent) {
|
|
122
|
-
const lineStartsMap = (0, line_mappings_1.computeLineStartsMap)(fileContent);
|
|
123
|
-
this.resolvedTemplates.push({
|
|
124
|
-
filePath: templatePath,
|
|
125
|
-
container: node,
|
|
126
|
-
content: fileContent,
|
|
127
|
-
inline: false,
|
|
128
|
-
start: 0,
|
|
129
|
-
getCharacterAndLineOfPosition: p => (0, line_mappings_1.getLineAndCharacterFromPosition)(lineStartsMap, p),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
/** Resolves an external stylesheet by reading its content and computing line mappings. */
|
|
136
|
-
resolveExternalStylesheet(filePath, container) {
|
|
137
|
-
// Strip the BOM to avoid issues with the Sass compiler. See:
|
|
138
|
-
// https://github.com/angular/components/issues/24227#issuecomment-1200934258
|
|
139
|
-
const fileContent = stripBom(this._fileSystem.read(filePath) || '');
|
|
140
|
-
if (!fileContent) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
const lineStartsMap = (0, line_mappings_1.computeLineStartsMap)(fileContent);
|
|
144
|
-
return {
|
|
145
|
-
filePath: filePath,
|
|
146
|
-
container: container,
|
|
147
|
-
content: fileContent,
|
|
148
|
-
inline: false,
|
|
149
|
-
start: 0,
|
|
150
|
-
getCharacterAndLineOfPosition: pos => (0, line_mappings_1.getLineAndCharacterFromPosition)(lineStartsMap, pos),
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
_trackExternalStylesheet(sourceFileDirPath, node, container) {
|
|
154
|
-
const stylesheetPath = this._fileSystem.resolve(sourceFileDirPath, node.text);
|
|
155
|
-
const stylesheet = this.resolveExternalStylesheet(stylesheetPath, container);
|
|
156
|
-
if (stylesheet) {
|
|
157
|
-
this.resolvedStylesheets.push(stylesheet);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
exports.ComponentResourceCollector = ComponentResourceCollector;
|
|
162
|
-
/** Strips the BOM from a string. */
|
|
163
|
-
function stripBom(content) {
|
|
164
|
-
return content.replace(/\uFEFF/g, '');
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlc291cmNlLWNvbGxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtCQUE2QjtBQUM3QixpQ0FBaUM7QUFFakMsbURBQXdEO0FBQ3hELGlEQUFtRDtBQUNuRCx5REFJK0I7QUFDL0IseURBQTBEO0FBcUIxRDs7O0dBR0c7QUFDSCxNQUFhLDBCQUEwQjtJQUs1QjtJQUNDO0lBTFYsaUJBQWlCLEdBQXVCLEVBQUUsQ0FBQztJQUMzQyxtQkFBbUIsR0FBdUIsRUFBRSxDQUFDO0lBRTdDLFlBQ1MsV0FBMkIsRUFDMUIsV0FBdUI7UUFEeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO0lBQzlCLENBQUM7SUFFSixTQUFTLENBQUMsSUFBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUEyQixDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUF5QjtRQUN0RCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLGlDQUFvQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUMsSUFBSSxD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QUNMLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUiw2QkFBNkIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUEsK0NBQStCLEVBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztTQUMxRixDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QixDQUM5QixpQkFBeUIsRUFDekIsSUFBMEIsRUFDMUIsU0FBOEI7UUFFOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFN0UsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQS9LRCxnRUErS0M7QUFFRCxvQ0FBb0M7QUFDcEMsU0FBUyxRQUFRLENBQUMsT0FBZTtJQUMvQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCB7ZGlybmFtZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7RmlsZVN5c3RlbSwgV29ya3NwYWNlUGF0aH0gZnJvbSAnLi9maWxlLXN5c3RlbSc7XG5pbXBvcnQge2dldEFuZ3VsYXJEZWNvcmF0b3JzfSBmcm9tICcuL3V0aWxzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHt1bndyYXBFeHByZXNzaW9ufSBmcm9tICcuL3V0aWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQge1xuICBjb21wdXRlTGluZVN0YXJ0c01hcCxcbiAgZ2V0TGluZUFuZENoYXJhY3RlckZyb21Qb3NpdGlvbixcbiAgTGluZUFuZENoYXJhY3Rlcixcbn0gZnJvbSAnLi91dGlscy9saW5lLW1hcHBpbmdzJztcbmltcG9ydCB7Z2V0UHJvcGVydHlOYW1lVGV4dH0gZnJvbSAnLi91dGlscy9wcm9wZXJ0eS1uYW1lJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFJlc291cmNlIHtcbiAgLyoqIENsYXNzIGRlY2xhcmF0aW9uIHRoYXQgY29udGFpbnMgdGhpcyByZXNvdXJjZS4gKi9cbiAgY29udGFpbmVyOiB0cy5DbGFzc0RlY2xhcmF0aW9uIHwgbnVsbDtcbiAgLyoqIEZpbGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gdGVtcGxhdGUuICovXG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgLyoqIFN0YXJ0IG9mZnNldCBvZiB0aGUgcmVzb3VyY2UgY29udGVudCAoZS5nLiBpbiB0aGUgaW5saW5lIHNvdXJjZSBmaWxlKSAqL1xuICBzdGFydDogbnVtYmVyO1xuICAvKiogV2hldGhlciB0aGUgZ2l2ZW4gcmVzb3VyY2UgaXMgaW5saW5lIG9yIG5vdC4gKi9cbiAgaW5saW5lOiBib29sZWFuO1xuICAvKiogUGF0aCB0byB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zIHRoaXMgcmVzb3VyY2UuICovXG4gIGZpbGVQYXRoOiBXb3Jrc3BhY2VQYXRoO1xuICAvKipcbiAgICogR2V0cyB0aGUgY2hhcmFjdGVyIGFuZCBsaW5lIG9mIGEgZ2l2ZW4gcG9zaXRpb24gaW5kZXggaW4gdGhlIHJlc291cmNlLlxuICAgKiBJZiB0aGUgcmVzb3VyY2UgaXMgZGVjbGFyZWQgaW5saW5lIHdpdGhpbiBhIFR5cGVTY3JpcHQgc291cmNlIGZpbGUsIHRoZSBsaW5lIGFuZFxuICAgKiBjaGFyYWN0ZXIgYXJlIGJhc2VkIG9uIHRoZSBmdWxsIHNvdXJjZSBmaWxlIGNvbnRlbnQuXG4gICAqL1xuICBnZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbjogKHBvczogbnVtYmVyKSA9PiBMaW5lQW5kQ2hhcmFjdGVyO1xufVxuXG4vKipcbiAqIENvbGxlY3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbmQgQW5ndWxhciB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIHJlZmVyZW5jZWQgd2l0aGluXG4gKiBnaXZlbiBUeXBlU2NyaXB0IHNvdXJjZSBmaWxlcyAoaW5saW5lIG9yIGV4dGVybmFsIHJlZmVyZW5jZWQgZmlsZXMpXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRSZXNvdXJjZUNvbGxlY3RvciB7XG4gIHJlc29sdmVkVGVtcGxhdGVzOiBSZXNvbHZlZFJlc291cmNlW10gPSBbXTtcbiAgcmVzb2x2ZWRTdHlsZXNoZWV0czogUmVzb2x2ZWRSZXNvdXJjZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBwcml2YXRlIF9maWxlU3lzdGVtOiBGaWxlU3lzdGVtLFxuICApIHt9XG5cbiAgdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pIHtcbiAgICAgIHRoaXMuX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlIGFzIHRzLkNsYXNzRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IHRzLmdldERlY29yYXRvcnMobm9kZSk7XG5cbiAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmdEZWNvcmF0b3JzID0gZ2V0QW5ndWxhckRlY29yYXRvcnModGhpcy50eXBlQ2hlY2tlciwgZGVjb3JhdG9ycyk7XG4gICAgY29uc3QgY29tcG9uZW50RGVjb3JhdG9yID0gbmdEZWNvcmF0b3JzLmZpbmQoZGVjID0+IGRlYy5uYW1lID09PSAnQ29tcG9uZW50Jyk7XG5cbiAgICAvLyBJbiBjYXNlIG5vIFwiQENvbXBvbmVudFwiIGRlY29yYXRvciBjb3VsZCBiZSBmb3VuZCBvbiB0aGUgY3VycmVudCBjbGFzcywgc2tpcC5cbiAgICBpZiAoIWNvbXBvbmVudERlY29yYXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29yYXRvckNhbGwgPSBjb21wb25lbnREZWNvcmF0b3Iubm9kZS5leHByZXNzaW9uO1xuXG4gICAgLy8gSW4gY2FzZSB0aGUgY29tcG9uZW50IGRlY29yYXRvciBjYWxsIGlzIG5vdCB2YWxpZCwgc2tpcCB0aGlzIGNsYXNzIGRlY2xhcmF0aW9uLlxuICAgIGlmIChkZWNvcmF0b3JDYWxsLmFyZ3VtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRNZXRhZGF0YSA9IHVud3JhcEV4cHJlc3Npb24oZGVjb3JhdG9yQ2FsbC5hcmd1bWVudHNbMF0pO1xuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGNvbXBvbmVudCBtZXRhZGF0YSBpcyBhbiBvYmplY3QgbGl0ZXJhbCBleHByZXNzaW9uLlxuICAgIGlmICghdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihjb21wb25lbnRNZXRhZGF0YSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLl9maWxlU3lzdGVtLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSk7XG4gICAgY29uc3Qgc291cmNlRmlsZURpclBhdGggPSBkaXJuYW1lKHNvdXJjZUZpbGUuZmlsZU5hbWUpO1xuXG4gICAgLy8gV2FsayB0aHJvdWdoIGFsbCBjb21wb25lbnQgbWV0YWRhdGEgcHJvcGVydGllcyBhbmQgZGV0ZXJtaW5lIHRoZSByZWZlcmVuY2VkXG4gICAgLy8gSFRNTCB0ZW1wbGF0ZXMgKGVpdGhlciBleHRlcm5hbCBvciBpbmxpbmUpXG4gICAgY29tcG9uZW50TWV0YWRhdGEucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgIGlmICghdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lVGV4dChwcm9wZXJ0eS5uYW1lKTtcblxuICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ3N0eWxlcycpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0cy5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24ocHJvcGVydHkuaW5pdGlhbGl6ZXIpXG4gICAgICAgICAgPyBwcm9wZXJ0eS5pbml0aWFsaXplci5lbGVtZW50c1xuICAgICAgICAgIDogW3Byb3BlcnR5LmluaXRpYWxpemVyXTtcblxuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBpZiAodHMuaXNTdHJpbmdMaXRlcmFsTGlrZShlbCkpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gYWRkIGFuIG9mZnNldCBvZiBvbmUgdG8gdGhlIHN0YXJ0IGJlY2F1c2UgdGhlIHRlbXBsYXRlIHF1b3RlcyBhcmVcbiAgICAgICAgICAgIC8vIG5vdCBwYXJ0IG9mIHRoZSB0ZW1wbGF0ZSBjb250ZW50LlxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVTdGFydElkeCA9IGVsLmdldFN0YXJ0KCkgKyAxO1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0cmlwQm9tKGVsLnRleHQpO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlZFN0eWxlc2hlZXRzLnB1c2goe1xuICAgICAgICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgICAgICAgY29udGFpbmVyOiBub2RlLFxuICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICBpbmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgIHN0YXJ0OiB0ZW1wbGF0ZVN0YXJ0SWR4LFxuICAgICAgICAgICAgICBnZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbjogcG9zID0+XG4gICAgICAgICAgICAgICAgdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oc291cmNlRmlsZSwgcG9zICsgdGVtcGxhdGVTdGFydElkeCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIGlubGluZSB0ZW1wbGF0ZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpcyBzdGF0aWNhbGx5XG4gICAgICAvLyBhbmFseXphYmxlIGJ5IGNoZWNraW5nIGlmIHRoZSBpbml0aWFsaXplciBpcyBhIHN0cmluZyBsaXRlcmFsLWxpa2Ugbm9kZS5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICd0ZW1wbGF0ZScgJiYgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShwcm9wZXJ0eS5pbml0aWFsaXplcikpIHtcbiAgICAgICAgLy8gTmVlZCB0byBhZGQgYW4gb2Zmc2V0IG9mIG9uZSB0byB0aGUgc3RhcnQgYmVjYXVzZSB0aGUgdGVtcGxhdGUgcXVvdGVzIGFyZVxuICAgICAgICAvLyBub3QgcGFydCBvZiB0aGUgdGVtcGxhdGUgY29udGVudC5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVTdGFydElkeCA9IHByb3BlcnR5LmluaXRpYWxpemVyLmdldFN0YXJ0KCkgKyAxO1xuICAgICAgICB0aGlzLnJlc29sdmVkVGVtcGxhdGVzLnB1c2goe1xuICAgICAgICAgIGZpbGVQYXRoLFxuICAgICAgICAgIGNvbnRhaW5lcjogbm9kZSxcbiAgICAgICAgICBjb250ZW50OiBwcm9wZXJ0eS5pbml0aWFsaXplci50ZXh0LFxuICAgICAgICAgIGlubGluZTogdHJ1ZSxcbiAgICAgICAgICBzdGFydDogdGVtcGxhdGVTdGFydElkeCxcbiAgICAgICAgICBnZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbjogcG9zID0+XG4gICAgICAgICAgICB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihzb3VyY2VGaWxlLCBwb3MgKyB0ZW1wbGF0ZVN0YXJ0SWR4KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICdzdHlsZVVybHMnICYmIHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihwcm9wZXJ0eS5pbml0aWFsaXplcikpIHtcbiAgICAgICAgcHJvcGVydHkuaW5pdGlhbGl6ZXIuZWxlbWVudHMuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgaWYgKHRzLmlzU3RyaW5nTGl0ZXJhbExpa2UoZWwpKSB7XG4gICAgICAgICAgICB0aGlzLl90cmFja0V4dGVybmFsU3R5bGVzaGVldChzb3VyY2VGaWxlRGlyUGF0aCwgZWwsIG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICdzdHlsZVVybCcgJiYgdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShwcm9wZXJ0eS5pbml0aWFsaXplcikpIHtcbiAgICAgICAgdGhpcy5fdHJhY2tFeHRlcm5hbFN0eWxlc2hlZXQoc291cmNlRmlsZURpclBhdGgsIHByb3BlcnR5LmluaXRpYWxpemVyLCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ3RlbXBsYXRlVXJsJyAmJiB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKHByb3BlcnR5LmluaXRpYWxpemVyKSkge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZVVybCA9IHByb3BlcnR5LmluaXRpYWxpemVyLnRleHQ7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShzb3VyY2VGaWxlRGlyUGF0aCwgdGVtcGxhdGVVcmwpO1xuXG4gICAgICAgIC8vIEluIGNhc2UgdGhlIHRlbXBsYXRlIGRvZXMgbm90IGV4aXN0IGluIHRoZSBmaWxlIHN5c3RlbSwgc2tpcCB0aGlzXG4gICAgICAgIC8vIGV4dGVybmFsIHRlbXBsYXRlLlxuICAgICAgICBpZiAoIXRoaXMuX2ZpbGVTeXN0ZW0uZmlsZUV4aXN0cyh0ZW1wbGF0ZVBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBzdHJpcEJvbSh0aGlzLl9maWxlU3lzdGVtLnJlYWQodGVtcGxhdGVQYXRoKSB8fCAnJyk7XG5cbiAgICAgICAgaWYgKGZpbGVDb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgbGluZVN0YXJ0c01hcCA9IGNvbXB1dGVMaW5lU3RhcnRzTWFwKGZpbGVDb250ZW50KTtcblxuICAgICAgICAgIHRoaXMucmVzb2x2ZWRUZW1wbGF0ZXMucHVzaCh7XG4gICAgICAgICAgICBmaWxlUGF0aDogdGVtcGxhdGVQYXRoLFxuICAgICAgICAgICAgY29udGFpbmVyOiBub2RlLFxuICAgICAgICAgICAgY29udGVudDogZmlsZUNvbnRlbnQsXG4gICAgICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgICAgICBnZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbjogcCA9PiBnZXRMaW5lQW5kQ2hhcmFjdGVyRnJvbVBvc2l0aW9uKGxpbmVTdGFydHNNYXAsIHApLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVzb2x2ZXMgYW4gZXh0ZXJuYWwgc3R5bGVzaGVldCBieSByZWFkaW5nIGl0cyBjb250ZW50IGFuZCBjb21wdXRpbmcgbGluZSBtYXBwaW5ncy4gKi9cbiAgcmVzb2x2ZUV4dGVybmFsU3R5bGVzaGVldChcbiAgICBmaWxlUGF0aDogV29ya3NwYWNlUGF0aCxcbiAgICBjb250YWluZXI6IHRzLkNsYXNzRGVjbGFyYXRpb24gfCBudWxsLFxuICApOiBSZXNvbHZlZFJlc291cmNlIHwgbnVsbCB7XG4gICAgLy8gU3RyaXAgdGhlIEJPTSB0byBhdm9pZCBpc3N1ZXMgd2l0aCB0aGUgU2FzcyBjb21waWxlci4gU2VlOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzI0MjI3I2lzc3VlY29tbWVudC0xMjAwOTM0MjU4XG4gICAgY29uc3QgZmlsZUNvbnRlbnQgPSBzdHJpcEJvbSh0aGlzLl9maWxlU3lzdGVtLnJlYWQoZmlsZVBhdGgpIHx8ICcnKTtcblxuICAgIGlmICghZmlsZUNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVTdGFydHNNYXAgPSBjb21wdXRlTGluZVN0YXJ0c01hcChmaWxlQ29udGVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICBjb250ZW50OiBmaWxlQ29udGVudCxcbiAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICBzdGFydDogMCxcbiAgICAgIGdldENoYXJhY3RlckFuZExpbmVPZlBvc2l0aW9uOiBwb3MgPT4gZ2V0TGluZUFuZENoYXJhY3RlckZyb21Qb3NpdGlvbihsaW5lU3RhcnRzTWFwLCBwb3MpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF90cmFja0V4dGVybmFsU3R5bGVzaGVldChcbiAgICBzb3VyY2VGaWxlRGlyUGF0aDogc3RyaW5nLFxuICAgIG5vZGU6IHRzLlN0cmluZ0xpdGVyYWxMaWtlLFxuICAgIGNvbnRhaW5lcjogdHMuQ2xhc3NEZWNsYXJhdGlvbixcbiAgKSB7XG4gICAgY29uc3Qgc3R5bGVzaGVldFBhdGggPSB0aGlzLl9maWxlU3lzdGVtLnJlc29sdmUoc291cmNlRmlsZURpclBhdGgsIG5vZGUudGV4dCk7XG4gICAgY29uc3Qgc3R5bGVzaGVldCA9IHRoaXMucmVzb2x2ZUV4dGVybmFsU3R5bGVzaGVldChzdHlsZXNoZWV0UGF0aCwgY29udGFpbmVyKTtcblxuICAgIGlmIChzdHlsZXNoZWV0KSB7XG4gICAgICB0aGlzLnJlc29sdmVkU3R5bGVzaGVldHMucHVzaChzdHlsZXNoZWV0KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFN0cmlwcyB0aGUgQk9NIGZyb20gYSBzdHJpbmcuICovXG5mdW5jdGlvbiBzdHJpcEJvbShjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHVGRUZGL2csICcnKTtcbn1cbiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.FileSystem = void 0;
|
|
11
|
-
/**
|
|
12
|
-
* Abstraction of the file system that migrations can use to record and apply
|
|
13
|
-
* changes. This is necessary to support virtual file systems as used in the CLI devkit.
|
|
14
|
-
*/
|
|
15
|
-
class FileSystem {
|
|
16
|
-
}
|
|
17
|
-
exports.FileSystem = FileSystem;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zeXN0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXBkYXRlLXRvb2wvZmlsZS1zeXN0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBa0NIOzs7R0FHRztBQUNILE1BQXNCLFVBQVU7Q0FpQy9CO0FBakNELGdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnLi91cGRhdGUtcmVjb3JkZXInO1xuXG4vKipcbiAqIEEgd29ya3NwYWNlIHBhdGggc2VtYW50aWNhbGx5IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGBQYXRoYCB0eXBlIHByb3ZpZGVkIGJ5IHRoZVxuICogQW5ndWxhciBkZXZraXQuIFBhdGhzIGRlbm90ZWQgd2l0aCBzdWNoIGEgdHlwZSBhcmUgZ3VhcmFudGVlZCB0byBiZSByZXByZXNlbnRpbmdcbiAqIHBhdGhzIG9mIGEgZ2l2ZW4gdmlydHVhbCBmaWxlIHN5c3RlbS4gVGhpcyBtZWFucyB0aGF0IHRoZSByb290IG9mIGEgcGF0aCBjYW4gYmVcbiAqIGRpZmZlcmVudCwgYW5kIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG5lZWQgdG8gbWF0Y2ggdGhlIHJvb3QgaW4gdGhlIHJlYWwgZmlsZSBzeXN0ZW0uXG4gKlxuICogRm9yIGV4YW1wbGU6IENvbnNpZGVyIHdlIGhhdmUgYSBwcm9qZWN0IGluIGAvaG9tZS88Li4+L215LXByb2plY3RgLiBUaGVuIGEgcGF0aFxuICogbGlrZSBgL3BhY2thZ2UuanNvbmAgY291bGQgYWN0dWFsbHkgcmVmZXIgdG8gdGhlIGBwYWNrYWdlLmpzb25gIGZpbGUgaW4gYG15LXByb2plY3RgLlxuICogTm90ZSB0aGF0IGluIHRoZSByZWFsIGZpbGUgc3lzdGVtIHRoaXMgd291bGQgbm90IG1hdGNoIHRob3VnaC5cbiAqXG4gKiBPbmUgbWlnaHQgd29uZGVyIHdoeSBhbm90aGVyIHR5cGUgaGFzIGJlZW4gZGVjbGFyZWQgZm9yIHN1Y2ggcGF0aHMsIHdoZW4gdGhlcmVcbiAqIGFscmVhZHkgaXMgdGhlIGBQYXRoYCB0eXBlIHByb3ZpZGVkIGJ5IHRoZSBkZXZraXQuIFdlIGRvIHRoaXMgZm9yIGEgY291cGxlIG9mIHJlYXNvbnM6XG4gKlxuICogICAxLiBUaGUgdXBkYXRlLXRvb2wgY2Fubm90IGhhdmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBBbmd1bGFyIGRldmtpdCBhcyB0aGF0IG9uZVxuICogICAgICBpcyBub3Qgc3luY2VkIGludG8gZzMuIFdlIHdhbnQgdG8gYmUgYWJsZSB0byBydW4gbWlncmF0aW9ucyBpbiBnMyBpZiBuZWVkZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtzcGFjZVBhdGggPSBzdHJpbmcgJiB7XG4gIC8vIEJyYW5kIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSBkZXZraXQgcGF0aHMgc28gdGhhdCBleGlzdGluZyBwYXRoXG4gIC8vIHV0aWxpdGllcyBmcm9tIHRoZSBBbmd1bGFyIGRldmtpdCBjYW4gYmUgY29udmVuaWVudGx5IHVzZWQuXG4gIF9fUFJJVkFURV9ERVZLSVRfUEFUSDogdm9pZDtcbn07XG5cbi8qKiBJbnRlcmZhY2UgdGhhdCBkZXNjcmliZXMgYSBkaXJlY3RvcnkuICovXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUVudHJ5IHtcbiAgLyoqIExpc3Qgb2YgZGlyZWN0b3JpZXMgaW5zaWRlIHRoZSBkaXJlY3RvcnkuICovXG4gIGRpcmVjdG9yaWVzOiBzdHJpbmdbXTtcbiAgLyoqIExpc3Qgb2YgZmlsZXMgaW5zaWRlIHRoZSBkaXJlY3RvcnkuICovXG4gIGZpbGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gdGhhdCBtaWdyYXRpb25zIGNhbiB1c2UgdG8gcmVjb3JkIGFuZCBhcHBseVxuICogY2hhbmdlcy4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydCB2aXJ0dWFsIGZpbGUgc3lzdGVtcyBhcyB1c2VkIGluIHRoZSBDTEkgZGV2a2l0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZVN5c3RlbSB7XG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gZmlsZSBleGlzdHMuICovXG4gIGFic3RyYWN0IGZpbGVFeGlzdHMocGF0aDogV29ya3NwYWNlUGF0aCk6IGJvb2xlYW47XG4gIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGV4aXN0cy4gKi9cbiAgYWJzdHJhY3QgZGlyZWN0b3J5RXhpc3RzKHBhdGg6IFdvcmtzcGFjZVBhdGgpOiBib29sZWFuO1xuICAvKiogR2V0cyB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIGZpbGUuICovXG4gIGFic3RyYWN0IHJlYWQoZmlsZVBhdGg6IFdvcmtzcGFjZVBhdGgpOiBzdHJpbmcgfCBudWxsO1xuICAvKiogUmVhZHMgdGhlIGdpdmVuIGRpcmVjdG9yeSB0byByZXRyaWV2ZSBjaGlsZHJlbi4gKi9cbiAgYWJzdHJhY3QgcmVhZERpcmVjdG9yeShkaXJQYXRoOiBXb3Jrc3BhY2VQYXRoKTogRGlyZWN0b3J5RW50cnk7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIHVwZGF0ZSByZWNvcmRlciBmb3IgdGhlIGdpdmVuIGZpbGUuIEVkaXRzIGNhbiBiZSByZWNvcmRlZCBhbmRcbiAgICogY29tbWl0dGVkIGluIGJhdGNoZXMuIENoYW5nZXMgYXJlIG5vdCBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgYmVjYXVzZSBvdGhlcndpc2VcbiAgICogbWlncmF0aW9ucyB3b3VsZCBuZWVkIHRvIHJlLXJlYWQgZmlsZXMsIG9yIGFjY291bnQgZm9yIHNoaWZ0ZWQgZmlsZSBjb250ZW50cy5cbiAgICovXG4gIGFic3RyYWN0IGVkaXQoZmlsZVBhdGg6IFdvcmtzcGFjZVBhdGgpOiBVcGRhdGVSZWNvcmRlcjtcbiAgLyoqIEFwcGxpZXMgYWxsIGNoYW5nZXMgd2hpY2ggaGF2ZSBiZWVuIHJlY29yZGVkIGluIHVwZGF0ZSByZWNvcmRlcnMuICovXG4gIGFic3RyYWN0IGNvbW1pdEVkaXRzKCk6IHZvaWQ7XG4gIC8qKiBDcmVhdGVzIGEgbmV3IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gY29udGVudC4gKi9cbiAgYWJzdHJhY3QgY3JlYXRlKGZpbGVQYXRoOiBXb3Jrc3BhY2VQYXRoLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkO1xuICAvKiogT3ZlcndyaXRlcyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIGdpdmVuIGNvbnRlbnQuICovXG4gIGFic3RyYWN0IG92ZXJ3cml0ZShmaWxlUGF0aDogV29ya3NwYWNlUGF0aCwgY29udGVudDogc3RyaW5nKTogdm9pZDtcbiAgLyoqIERlbGV0ZXMgdGhlIGdpdmVuIGZpbGUuICovXG4gIGFic3RyYWN0IGRlbGV0ZShmaWxlUGF0aDogV29ya3NwYWNlUGF0aCk6IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXNvbHZlcyBnaXZlbiBwYXRocyB0byBhIHJlc29sdmVkIHBhdGggaW4gdGhlIGZpbGUgc3lzdGVtLiBGb3IgZXhhbXBsZSwgdGhlIGRldmtpdFxuICAgKiB0cmVlIGNvbnNpZGVycyB0aGUgYWN0dWFsIHdvcmtzcGFjZSBkaXJlY3RvcnkgYXMgZmlsZSBzeXN0ZW0gcm9vdC5cbiAgICpcbiAgICogRm9sbG93cyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIG5hdGl2ZSBwYXRoIGByZXNvbHZlYCBtZXRob2QuIGkuZS4gc2VnbWVudHNcbiAgICogYXJlIHByb2Nlc3NlZCBpbiByZXZlcnNlLiBUaGUgbGFzdCBzZWdtZW50IGlzIGNvbnNpZGVyZWQgdGhlIHRhcmdldCBhbmQgdGhlXG4gICAqIGZ1bmN0aW9uIHdpbGwgaXRlcmF0ZSBmcm9tIHRoZSB0YXJnZXQgdGhyb3VnaCBvdGhlciBzZWdtZW50cyB1bnRpbCBpdCBmaW5kcyBhblxuICAgKiBhYnNvbHV0ZSBwYXRoIHNlZ21lbnQuXG4gICAqL1xuICBhYnN0cmFjdCByZXNvbHZlKC4uLnNlZ21lbnRzOiBzdHJpbmdbXSk6IFdvcmtzcGFjZVBhdGg7XG59XG4iXX0=
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.UpdateProject = void 0;
|
|
11
|
-
const ts = require("typescript");
|
|
12
|
-
const component_resource_collector_1 = require("./component-resource-collector");
|
|
13
|
-
const logger_1 = require("./logger");
|
|
14
|
-
const parse_tsconfig_1 = require("./utils/parse-tsconfig");
|
|
15
|
-
const virtual_host_1 = require("./utils/virtual-host");
|
|
16
|
-
/**
|
|
17
|
-
* An update project that can be run against individual migrations. An update project
|
|
18
|
-
* accepts a TypeScript program and a context that is provided to all migrations. The
|
|
19
|
-
* context is usually not used by migrations, but in some cases migrations rely on
|
|
20
|
-
* specifics from the tool that performs the update (e.g. the Angular CLI). In those cases,
|
|
21
|
-
* the context can provide the necessary specifics to the migrations in a type-safe way.
|
|
22
|
-
*/
|
|
23
|
-
class UpdateProject {
|
|
24
|
-
_context;
|
|
25
|
-
_program;
|
|
26
|
-
_fileSystem;
|
|
27
|
-
_analyzedFiles;
|
|
28
|
-
_logger;
|
|
29
|
-
_typeChecker;
|
|
30
|
-
constructor(
|
|
31
|
-
/** Context provided to all migrations. */
|
|
32
|
-
_context,
|
|
33
|
-
/** TypeScript program using workspace paths. */
|
|
34
|
-
_program,
|
|
35
|
-
/** File system used for reading, writing and editing files. */
|
|
36
|
-
_fileSystem,
|
|
37
|
-
/**
|
|
38
|
-
* Set of analyzed files. Used for avoiding multiple migration runs if
|
|
39
|
-
* files overlap between targets.
|
|
40
|
-
*/
|
|
41
|
-
_analyzedFiles = new Set(),
|
|
42
|
-
/** Logger used for printing messages. */
|
|
43
|
-
_logger = logger_1.defaultLogger) {
|
|
44
|
-
this._context = _context;
|
|
45
|
-
this._program = _program;
|
|
46
|
-
this._fileSystem = _fileSystem;
|
|
47
|
-
this._analyzedFiles = _analyzedFiles;
|
|
48
|
-
this._logger = _logger;
|
|
49
|
-
this._typeChecker = this._program.getTypeChecker();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Migrates the project to the specified target version.
|
|
53
|
-
* @param migrationTypes Migrations that should be run.
|
|
54
|
-
* @param target Version the project should be updated to. Can be `null` if the set of
|
|
55
|
-
* specified migrations runs regardless of a target version.
|
|
56
|
-
* @param data Upgrade data that is passed to all migration rules.
|
|
57
|
-
* @param additionalStylesheetPaths Additional stylesheets that should be migrated, if not
|
|
58
|
-
* referenced in an Angular component. This is helpful for global stylesheets in a project.
|
|
59
|
-
* @param limitToDirectory If specified, changes will be limited to the given directory.
|
|
60
|
-
*/
|
|
61
|
-
migrate(migrationTypes, target, data, additionalStylesheetPaths, limitToDirectory) {
|
|
62
|
-
limitToDirectory &&= this._fileSystem.resolve(limitToDirectory);
|
|
63
|
-
// Create instances of the specified migrations.
|
|
64
|
-
const migrations = this._createMigrations(migrationTypes, target, data);
|
|
65
|
-
// Creates the component resource collector. The collector can visit arbitrary
|
|
66
|
-
// TypeScript nodes and will find Angular component resources. Resources include
|
|
67
|
-
// templates and stylesheets. It also captures inline stylesheets and templates.
|
|
68
|
-
const resourceCollector = new component_resource_collector_1.ComponentResourceCollector(this._typeChecker, this._fileSystem);
|
|
69
|
-
// Collect all of the TypeScript source files we want to migrate. We don't
|
|
70
|
-
// migrate type definition files, or source files from external libraries.
|
|
71
|
-
const sourceFiles = this._program.getSourceFiles().filter(f => {
|
|
72
|
-
return (!f.isDeclarationFile &&
|
|
73
|
-
(limitToDirectory == null ||
|
|
74
|
-
this._fileSystem.resolve(f.fileName).startsWith(limitToDirectory)) &&
|
|
75
|
-
!this._program.isSourceFileFromExternalLibrary(f));
|
|
76
|
-
});
|
|
77
|
-
// Helper function that visits a given TypeScript node and collects all referenced
|
|
78
|
-
// component resources (i.e. stylesheets or templates). Additionally, the helper
|
|
79
|
-
// visits the node in each instantiated migration.
|
|
80
|
-
const visitNodeAndCollectResources = (node) => {
|
|
81
|
-
migrations.forEach(r => r.visitNode(node));
|
|
82
|
-
ts.forEachChild(node, visitNodeAndCollectResources);
|
|
83
|
-
resourceCollector.visitNode(node);
|
|
84
|
-
};
|
|
85
|
-
// Walk through all source file, if it has not been visited before, and
|
|
86
|
-
// visit found nodes while collecting potential resources.
|
|
87
|
-
sourceFiles.forEach(sourceFile => {
|
|
88
|
-
const resolvedPath = this._fileSystem.resolve(sourceFile.fileName);
|
|
89
|
-
// Do not visit source files which have been checked as part of a
|
|
90
|
-
// previously migrated TypeScript project.
|
|
91
|
-
if (!this._analyzedFiles.has(resolvedPath)) {
|
|
92
|
-
visitNodeAndCollectResources(sourceFile);
|
|
93
|
-
this._analyzedFiles.add(resolvedPath);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
// Walk through all resolved templates and visit them in each instantiated
|
|
97
|
-
// migration. Note that this can only happen after source files have been
|
|
98
|
-
// visited because we find templates through the TypeScript source files.
|
|
99
|
-
resourceCollector.resolvedTemplates.forEach(template => {
|
|
100
|
-
// Do not visit the template if it has been checked before. Inline
|
|
101
|
-
// templates cannot be referenced multiple times.
|
|
102
|
-
if (template.inline || !this._analyzedFiles.has(template.filePath)) {
|
|
103
|
-
migrations.forEach(m => m.visitTemplate(template));
|
|
104
|
-
this._analyzedFiles.add(template.filePath);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
// Walk through all resolved stylesheets and visit them in each instantiated
|
|
108
|
-
// migration. Note that this can only happen after source files have been
|
|
109
|
-
// visited because we find stylesheets through the TypeScript source files.
|
|
110
|
-
resourceCollector.resolvedStylesheets.forEach(stylesheet => {
|
|
111
|
-
// Do not visit the stylesheet if it has been checked before. Inline
|
|
112
|
-
// stylesheets cannot be referenced multiple times.
|
|
113
|
-
if (stylesheet.inline || !this._analyzedFiles.has(stylesheet.filePath)) {
|
|
114
|
-
migrations.forEach(r => r.visitStylesheet(stylesheet));
|
|
115
|
-
this._analyzedFiles.add(stylesheet.filePath);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
// In some applications, developers will have global stylesheets which are not
|
|
119
|
-
// specified in any Angular component. Therefore we allow for additional stylesheets
|
|
120
|
-
// being specified. We visit them in each migration unless they have been already
|
|
121
|
-
// discovered before as actual component resource.
|
|
122
|
-
if (additionalStylesheetPaths) {
|
|
123
|
-
additionalStylesheetPaths.forEach(filePath => {
|
|
124
|
-
const resolvedPath = this._fileSystem.resolve(filePath);
|
|
125
|
-
if (limitToDirectory == null || resolvedPath.startsWith(limitToDirectory)) {
|
|
126
|
-
const stylesheet = resourceCollector.resolveExternalStylesheet(resolvedPath, null);
|
|
127
|
-
// Do not visit stylesheets which have been referenced from a component.
|
|
128
|
-
if (!this._analyzedFiles.has(resolvedPath) && stylesheet) {
|
|
129
|
-
migrations.forEach(r => r.visitStylesheet(stylesheet));
|
|
130
|
-
this._analyzedFiles.add(resolvedPath);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
// Call the "postAnalysis" method for each migration.
|
|
136
|
-
migrations.forEach(r => r.postAnalysis());
|
|
137
|
-
// Collect all failures reported by individual migrations.
|
|
138
|
-
const failures = migrations.reduce((res, m) => res.concat(m.failures), []);
|
|
139
|
-
// In case there are failures, print these to the CLI logger as warnings.
|
|
140
|
-
if (failures.length) {
|
|
141
|
-
failures.forEach(({ filePath, message, position }) => {
|
|
142
|
-
const lineAndCharacter = position ? `@${position.line + 1}:${position.character + 1}` : '';
|
|
143
|
-
this._logger.warn(`${filePath}${lineAndCharacter} - ${message}`);
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
hasFailures: !!failures.length,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Creates instances of the given migrations with the specified target
|
|
152
|
-
* version and data.
|
|
153
|
-
*/
|
|
154
|
-
_createMigrations(types, target, data) {
|
|
155
|
-
const result = [];
|
|
156
|
-
for (const ctor of types) {
|
|
157
|
-
const instance = new ctor(this._program, this._typeChecker, target, this._context, data, this._fileSystem, this._logger);
|
|
158
|
-
instance.init();
|
|
159
|
-
if (instance.enabled) {
|
|
160
|
-
result.push(instance);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return result;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Creates a program from the specified tsconfig and patches the host
|
|
167
|
-
* to read files and directories through the given file system.
|
|
168
|
-
*
|
|
169
|
-
* @throws {TsconfigParseError} If the tsconfig could not be parsed.
|
|
170
|
-
*/
|
|
171
|
-
static createProgramFromTsconfig(tsconfigPath, fs) {
|
|
172
|
-
const parsed = (0, parse_tsconfig_1.parseTsconfigFile)(fs.resolve(tsconfigPath), fs);
|
|
173
|
-
const host = (0, virtual_host_1.createFileSystemCompilerHost)(parsed.options, fs);
|
|
174
|
-
return ts.createProgram(parsed.fileNames, parsed.options, host);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
exports.UpdateProject = UpdateProject;
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXBkYXRlLXRvb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaUNBQWlDO0FBRWpDLGlGQUEwRTtBQUUxRSxxQ0FBcUQ7QUFHckQsMkRBQXlEO0FBQ3pELHVEQUFrRTtBQUVsRTs7Ozs7O0dBTUc7QUFDSCxNQUFhLGFBQWE7SUFLZDtJQUVBO0lBRUE7SUFLQTtJQUVBO0lBZk8sWUFBWSxDQUFpQjtJQUU5QztJQUNFLDBDQUEwQztJQUNsQyxRQUFpQjtJQUN6QixnREFBZ0Q7SUFDeEMsUUFBb0I7SUFDNUIsK0RBQStEO0lBQ3ZELFdBQXVCO0lBQy9COzs7T0FHRztJQUNLLGlCQUFxQyxJQUFJLEdBQUcsRUFBRTtJQUN0RCx5Q0FBeUM7SUFDakMsVUFBd0Isc0JBQWE7UUFYckMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUVqQixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRXBCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBS3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUU5QyxZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUU3QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE9BQU8sQ0FDTCxjQUE4QyxFQUM5QyxNQUE0QixFQUM1QixJQUFVLEVBQ1YseUJBQW9DLEVBQ3BDLGdCQUF5QjtRQUV6QixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWhFLGdEQUFnRDtRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztR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Q3hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFlBQTJCLEVBQUUsRUFBYztRQUMxRSxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFpQixFQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQ0FBNEIsRUFBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGO0FBckxELHNDQXFMQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Q29tcG9uZW50UmVzb3VyY2VDb2xsZWN0b3J9IGZyb20gJy4vY29tcG9uZW50LXJlc291cmNlLWNvbGxlY3Rvcic7XG5pbXBvcnQge0ZpbGVTeXN0ZW0sIFdvcmtzcGFjZVBhdGh9IGZyb20gJy4vZmlsZS1zeXN0ZW0nO1xuaW1wb3J0IHtkZWZhdWx0TG9nZ2VyLCBVcGRhdGVMb2dnZXJ9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7TWlncmF0aW9uLCBNaWdyYXRpb25DdG9yLCBNaWdyYXRpb25GYWlsdXJlfSBmcm9tICcuL21pZ3JhdGlvbic7XG5pbXBvcnQge1RhcmdldFZlcnNpb259IGZyb20gJy4vdGFyZ2V0LXZlcnNpb24nO1xuaW1wb3J0IHtwYXJzZVRzY29uZmlnRmlsZX0gZnJvbSAnLi91dGlscy9wYXJzZS10c2NvbmZpZyc7XG5pbXBvcnQge2NyZWF0ZUZpbGVTeXN0ZW1Db21waWxlckhvc3R9IGZyb20gJy4vdXRpbHMvdmlydHVhbC1ob3N0JztcblxuLyoqXG4gKiBBbiB1cGRhdGUgcHJvamVjdCB0aGF0IGNhbiBiZSBydW4gYWdhaW5zdCBpbmRpdmlkdWFsIG1pZ3JhdGlvbnMuIEFuIHVwZGF0ZSBwcm9qZWN0XG4gKiBhY2NlcHRzIGEgVHlwZVNjcmlwdCBwcm9ncmFtIGFuZCBhIGNvbnRleHQgdGhhdCBpcyBwcm92aWRlZCB0byBhbGwgbWlncmF0aW9ucy4gVGhlXG4gKiBjb250ZXh0IGlzIHVzdWFsbHkgbm90IHVzZWQgYnkgbWlncmF0aW9ucywgYnV0IGluIHNvbWUgY2FzZXMgbWlncmF0aW9ucyByZWx5IG9uXG4gKiBzcGVjaWZpY3MgZnJvbSB0aGUgdG9vbCB0aGF0IHBlcmZvcm1zIHRoZSB1cGRhdGUgKGUuZy4gdGhlIEFuZ3VsYXIgQ0xJKS4gSW4gdGhvc2UgY2FzZXMsXG4gKiB0aGUgY29udGV4dCBjYW4gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHNwZWNpZmljcyB0byB0aGUgbWlncmF0aW9ucyBpbiBhIHR5cGUtc2FmZSB3YXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBVcGRhdGVQcm9qZWN0PENvbnRleHQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBDb250ZXh0IHByb3ZpZGVkIHRvIGFsbCBtaWdyYXRpb25zLiAqL1xuICAgIHByaXZhdGUgX2NvbnRleHQ6IENvbnRleHQsXG4gICAgLyoqIFR5cGVTY3JpcHQgcHJvZ3JhbSB1c2luZyB3b3Jrc3BhY2UgcGF0aHMuICovXG4gICAgcHJpdmF0ZSBfcHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgICAvKiogRmlsZSBzeXN0ZW0gdXNlZCBmb3IgcmVhZGluZywgd3JpdGluZyBhbmQgZWRpdGluZyBmaWxlcy4gKi9cbiAgICBwcml2YXRlIF9maWxlU3lzdGVtOiBGaWxlU3lzdGVtLFxuICAgIC8qKlxuICAgICAqIFNldCBvZiBhbmFseXplZCBmaWxlcy4gVXNlZCBmb3IgYXZvaWRpbmcgbXVsdGlwbGUgbWlncmF0aW9uIHJ1bnMgaWZcbiAgICAgKiBmaWxlcyBvdmVybGFwIGJldHdlZW4gdGFyZ2V0cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9hbmFseXplZEZpbGVzOiBTZXQ8V29ya3NwYWNlUGF0aD4gPSBuZXcgU2V0KCksXG4gICAgLyoqIExvZ2dlciB1c2VkIGZvciBwcmludGluZyBtZXNzYWdlcy4gKi9cbiAgICBwcml2YXRlIF9sb2dnZXI6IFVwZGF0ZUxvZ2dlciA9IGRlZmF1bHRMb2dnZXIsXG4gICkge1xuICAgIHRoaXMuX3R5cGVDaGVja2VyID0gdGhpcy5fcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pZ3JhdGVzIHRoZSBwcm9qZWN0IHRvIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHZlcnNpb24uXG4gICAqIEBwYXJhbSBtaWdyYXRpb25UeXBlcyBNaWdyYXRpb25zIHRoYXQgc2hvdWxkIGJlIHJ1bi5cbiAgICogQHBhcmFtIHRhcmdldCBWZXJzaW9uIHRoZSBwcm9qZWN0IHNob3VsZCBiZSB1cGRhdGVkIHRvLiBDYW4gYmUgYG51bGxgIGlmIHRoZSBzZXQgb2ZcbiAgICogICBzcGVjaWZpZWQgbWlncmF0aW9ucyBydW5zIHJlZ2FyZGxlc3Mgb2YgYSB0YXJnZXQgdmVyc2lvbi5cbiAgICogQHBhcmFtIGRhdGEgVXBncmFkZSBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIGFsbCBtaWdyYXRpb24gcnVsZXMuXG4gICAqIEBwYXJhbSBhZGRpdGlvbmFsU3R5bGVzaGVldFBhdGhzIEFkZGl0aW9uYWwgc3R5bGVzaGVldHMgdGhhdCBzaG91bGQgYmUgbWlncmF0ZWQsIGlmIG5vdFxuICAgKiAgIHJlZmVyZW5jZWQgaW4gYW4gQW5ndWxhciBjb21wb25lbnQuIFRoaXMgaXMgaGVscGZ1bCBmb3IgZ2xvYmFsIHN0eWxlc2hlZXRzIGluIGEgcHJvamVjdC5cbiAgICogQHBhcmFtIGxpbWl0VG9EaXJlY3RvcnkgSWYgc3BlY2lmaWVkLCBjaGFuZ2VzIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgZ2l2ZW4gZGlyZWN0b3J5LlxuICAgKi9cbiAgbWlncmF0ZTxEYXRhPihcbiAgICBtaWdyYXRpb25UeXBlczogTWlncmF0aW9uQ3RvcjxEYXRhLCBDb250ZXh0PltdLFxuICAgIHRhcmdldDogVGFyZ2V0VmVyc2lvbiB8IG51bGwsXG4gICAgZGF0YTogRGF0YSxcbiAgICBhZGRpdGlvbmFsU3R5bGVzaGVldFBhdGhzPzogc3RyaW5nW10sXG4gICAgbGltaXRUb0RpcmVjdG9yeT86IHN0cmluZyxcbiAgKToge2hhc0ZhaWx1cmVzOiBib29sZWFufSB7XG4gICAgbGltaXRUb0RpcmVjdG9yeSAmJj0gdGhpcy5fZmlsZVN5c3RlbS5yZXNvbHZlKGxpbWl0VG9EaXJlY3RvcnkpO1xuXG4gICAgLy8gQ3JlYXRlIGluc3RhbmNlcyBvZiB0aGUgc3BlY2lmaWVkIG1pZ3JhdGlvbnMuXG4gICAgY29uc3QgbWlncmF0aW9ucyA9IHRoaXMuX2NyZWF0ZU1pZ3JhdGlvbnMobWlncmF0aW9uVHlwZXMsIHRhcmdldCwgZGF0YSk7XG4gICAgLy8gQ3JlYXRlcyB0aGUgY29tcG9uZW50IHJlc291cmNlIGNvbGxlY3Rvci4gVGhlIGNvbGxlY3RvciBjYW4gdmlzaXQgYXJiaXRyYXJ5XG4gICAgLy8gVHlwZVNjcmlwdCBub2RlcyBhbmQgd2lsbCBmaW5kIEFuZ3VsYXIgY29tcG9uZW50IHJlc291cmNlcy4gUmVzb3VyY2VzIGluY2x1ZGVcbiAgICAvLyB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzLiBJdCBhbHNvIGNhcHR1cmVzIGlubGluZSBzdHlsZXNoZWV0cyBhbmQgdGVtcGxhdGVzLlxuICAgIGNvbnN0IHJlc291cmNlQ29sbGVjdG9yID0gbmV3IENvbXBvbmVudFJlc291cmNlQ29sbGVjdG9yKHRoaXMuX3R5cGVDaGVja2VyLCB0aGlzLl9maWxlU3lzdGVtKTtcbiAgICAvLyBDb2xsZWN0IGFsbCBvZiB0aGUgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZXMgd2Ugd2FudCB0byBtaWdyYXRlLiBXZSBkb24ndFxuICAgIC8vIG1pZ3JhdGUgdHlwZSBkZWZpbml0aW9uIGZpbGVzLCBvciBzb3VyY2UgZmlsZXMgZnJvbSBleHRlcm5hbCBsaWJyYXJpZXMuXG4gICAgY29uc3Qgc291cmNlRmlsZXMgPSB0aGlzLl9wcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKGYgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgIWYuaXNEZWNsYXJhdGlvbkZpbGUgJiZcbiAgICAgICAgKGxpbWl0VG9EaXJlY3RvcnkgPT0gbnVsbCB8fFxuICAgICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShmLmZpbGVOYW1lKS5zdGFydHNXaXRoKGxpbWl0VG9EaXJlY3RvcnkpKSAmJlxuICAgICAgICAhdGhpcy5fcHJvZ3JhbS5pc1NvdXJjZUZpbGVGcm9tRXh0ZXJuYWxMaWJyYXJ5KGYpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRoYXQgdmlzaXRzIGEgZ2l2ZW4gVHlwZVNjcmlwdCBub2RlIGFuZCBjb2xsZWN0cyBhbGwgcmVmZXJlbmNlZFxuICAgIC8vIGNvbXBvbmVudCByZXNvdXJjZXMgKGkuZS4gc3R5bGVzaGVldHMgb3IgdGVtcGxhdGVzKS4gQWRkaXRpb25hbGx5LCB0aGUgaGVscGVyXG4gICAgLy8gdmlzaXRzIHRoZSBub2RlIGluIGVhY2ggaW5zdGFudGlhdGVkIG1pZ3JhdGlvbi5cbiAgICBjb25zdCB2aXNpdE5vZGVBbmRDb2xsZWN0UmVzb3VyY2VzID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIG1pZ3JhdGlvbnMuZm9yRWFjaChyID0+IHIudmlzaXROb2RlKG5vZGUpKTtcbiAgICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGVBbmRDb2xsZWN0UmVzb3VyY2VzKTtcbiAgICAgIHJlc291cmNlQ29sbGVjdG9yLnZpc2l0Tm9kZShub2RlKTtcbiAgICB9O1xuXG4gICAgLy8gV2FsayB0aHJvdWdoIGFsbCBzb3VyY2UgZmlsZSwgaWYgaXQgaGFzIG5vdCBiZWVuIHZpc2l0ZWQgYmVmb3JlLCBhbmRcbiAgICAvLyB2aXNpdCBmb3VuZCBub2RlcyB3aGlsZSBjb2xsZWN0aW5nIHBvdGVudGlhbCByZXNvdXJjZXMuXG4gICAgc291cmNlRmlsZXMuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHRoaXMuX2ZpbGVTeXN0ZW0ucmVzb2x2ZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgIC8vIERvIG5vdCB2aXNpdCBzb3VyY2UgZmlsZXMgd2hpY2ggaGF2ZSBiZWVuIGNoZWNrZWQgYXMgcGFydCBvZiBhXG4gICAgICAvLyBwcmV2aW91c2x5IG1pZ3JhdGVkIFR5cGVTY3JpcHQgcHJvamVjdC5cbiAgICAgIGlmICghdGhpcy5fYW5hbHl6ZWRGaWxlcy5oYXMocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICB2aXNpdE5vZGVBbmRDb2xsZWN0UmVzb3VyY2VzKHNvdXJjZUZpbGUpO1xuICAgICAgICB0aGlzLl9hbmFseXplZEZpbGVzLmFkZChyZXNvbHZlZFBhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV2FsayB0aHJvdWdoIGFsbCByZXNvbHZlZCB0ZW1wbGF0ZXMgYW5kIHZpc2l0IHRoZW0gaW4gZWFjaCBpbnN0YW50aWF0ZWRcbiAgICAvLyBtaWdyYXRpb24uIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBhZnRlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuXG4gICAgLy8gdmlzaXRlZCBiZWNhdXNlIHdlIGZpbmQgdGVtcGxhdGVzIHRocm91Z2ggdGhlIFR5cGVTY3JpcHQgc291cmNlIGZpbGVzLlxuICAgIHJlc291cmNlQ29sbGVjdG9yLnJlc29sdmVkVGVtcGxhdGVzLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICAgICAgLy8gRG8gbm90IHZpc2l0IHRoZSB0ZW1wbGF0ZSBpZiBpdCBoYXMgYmVlbiBjaGVja2VkIGJlZm9yZS4gSW5saW5lXG4gICAgICAvLyB0ZW1wbGF0ZXMgY2Fubm90IGJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgdGltZXMuXG4gICAgICBpZiAodGVtcGxhdGUuaW5saW5lIHx8ICF0aGlzLl9hbmFseXplZEZpbGVzLmhhcyh0ZW1wbGF0ZS5maWxlUGF0aCkpIHtcbiAgICAgICAgbWlncmF0aW9ucy5mb3JFYWNoKG0gPT4gbS52aXNpdFRlbXBsYXRlKHRlbXBsYXRlKSk7XG4gICAgICAgIHRoaXMuX2FuYWx5emVkRmlsZXMuYWRkKHRlbXBsYXRlLmZpbGVQYXRoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdhbGsgdGhyb3VnaCBhbGwgcmVzb2x2ZWQgc3R5bGVzaGVldHMgYW5kIHZpc2l0IHRoZW0gaW4gZWFjaCBpbnN0YW50aWF0ZWRcbiAgICAvLyBtaWdyYXRpb24uIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBlbiBhZnRlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuXG4gICAgLy8gdmlzaXRlZCBiZWNhdXNlIHdlIGZpbmQgc3R5bGVzaGVldHMgdGhyb3VnaCB0aGUgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZXMuXG4gICAgcmVzb3VyY2VDb2xsZWN0b3IucmVzb2x2ZWRTdHlsZXNoZWV0cy5mb3JFYWNoKHN0eWxlc2hlZXQgPT4ge1xuICAgICAgLy8gRG8gbm90IHZpc2l0IHRoZSBzdHlsZXNoZWV0IGlmIGl0IGhhcyBiZWVuIGNoZWNrZWQgYmVmb3JlLiBJbmxpbmVcbiAgICAgIC8vIHN0eWxlc2hlZXRzIGNhbm5vdCBiZSByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLlxuICAgICAgaWYgKHN0eWxlc2hlZXQuaW5saW5lIHx8ICF0aGlzLl9hbmFseXplZEZpbGVzLmhhcyhzdHlsZXNoZWV0LmZpbGVQYXRoKSkge1xuICAgICAgICBtaWdyYXRpb25zLmZvckVhY2gociA9PiByLnZpc2l0U3R5bGVzaGVldChzdHlsZXNoZWV0KSk7XG4gICAgICAgIHRoaXMuX2FuYWx5emVkRmlsZXMuYWRkKHN0eWxlc2hlZXQuZmlsZVBhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gSW4gc29tZSBhcHBsaWNhdGlvbnMsIGRldmVsb3BlcnMgd2lsbCBoYXZlIGdsb2JhbCBzdHlsZXNoZWV0cyB3aGljaCBhcmUgbm90XG4gICAgLy8gc3BlY2lmaWVkIGluIGFueSBBbmd1bGFyIGNvbXBvbmVudC4gVGhlcmVmb3JlIHdlIGFsbG93IGZvciBhZGRpdGlvbmFsIHN0eWxlc2hlZXRzXG4gICAgLy8gYmVpbmcgc3BlY2lmaWVkLiBXZSB2aXNpdCB0aGVtIGluIGVhY2ggbWlncmF0aW9uIHVubGVzcyB0aGV5IGhhdmUgYmVlbiBhbHJlYWR5XG4gICAgLy8gZGlzY292ZXJlZCBiZWZvcmUgYXMgYWN0dWFsIGNvbXBvbmVudCByZXNvdXJjZS5cbiAgICBpZiAoYWRkaXRpb25hbFN0eWxlc2hlZXRQYXRocykge1xuICAgICAgYWRkaXRpb25hbFN0eWxlc2hlZXRQYXRocy5mb3JFYWNoKGZpbGVQYXRoID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gdGhpcy5fZmlsZVN5c3RlbS5yZXNvbHZlKGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGxpbWl0VG9EaXJlY3RvcnkgPT0gbnVsbCB8fCByZXNvbHZlZFBhdGguc3RhcnRzV2l0aChsaW1pdFRvRGlyZWN0b3J5KSkge1xuICAgICAgICAgIGNvbnN0IHN0eWxlc2hlZXQgPSByZXNvdXJjZUNvbGxlY3Rvci5yZXNvbHZlRXh0ZXJuYWxTdHlsZXNoZWV0KHJlc29sdmVkUGF0aCwgbnVsbCk7XG4gICAgICAgICAgLy8gRG8gbm90IHZpc2l0IHN0eWxlc2hlZXRzIHdoaWNoIGhhdmUgYmVlbiByZWZlcmVuY2VkIGZyb20gYSBjb21wb25lbnQuXG4gICAgICAgICAgaWYgKCF0aGlzLl9hbmFseXplZEZpbGVzLmhhcyhyZXNvbHZlZFBhdGgpICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgIG1pZ3JhdGlvbnMuZm9yRWFjaChyID0+IHIudmlzaXRTdHlsZXNoZWV0KHN0eWxlc2hlZXQpKTtcbiAgICAgICAgICAgIHRoaXMuX2FuYWx5emVkRmlsZXMuYWRkKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDYWxsIHRoZSBcInBvc3RBbmFseXNpc1wiIG1ldGhvZCBmb3IgZWFjaCBtaWdyYXRpb24uXG4gICAgbWlncmF0aW9ucy5mb3JFYWNoKHIgPT4gci5wb3N0QW5hbHlzaXMoKSk7XG5cbiAgICAvLyBDb2xsZWN0IGFsbCBmYWlsdXJlcyByZXBvcnRlZCBieSBpbmRpdmlkdWFsIG1pZ3JhdGlvbnMuXG4gICAgY29uc3QgZmFpbHVyZXMgPSBtaWdyYXRpb25zLnJlZHVjZShcbiAgICAgIChyZXMsIG0pID0+IHJlcy5jb25jYXQobS5mYWlsdXJlcyksXG4gICAgICBbXSBhcyBNaWdyYXRpb25GYWlsdXJlW10sXG4gICAgKTtcblxuICAgIC8vIEluIGNhc2UgdGhlcmUgYXJlIGZhaWx1cmVzLCBwcmludCB0aGVzZSB0byB0aGUgQ0xJIGxvZ2dlciBhcyB3YXJuaW5ncy5cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICBmYWlsdXJlcy5mb3JFYWNoKCh7ZmlsZVBhdGgsIG1lc3NhZ2UsIHBvc2l0aW9ufSkgPT4ge1xuICAgICAgICBjb25zdCBsaW5lQW5kQ2hhcmFjdGVyID0gcG9zaXRpb24gPyBgQCR7cG9zaXRpb24ubGluZSArIDF9OiR7cG9zaXRpb24uY2hhcmFjdGVyICsgMX1gIDogJyc7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKGAke2ZpbGVQYXRofSR7bGluZUFuZENoYXJhY3Rlcn0gLSAke21lc3NhZ2V9YCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaGFzRmFpbHVyZXM6ICEhZmFpbHVyZXMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBpbnN0YW5jZXMgb2YgdGhlIGdpdmVuIG1pZ3JhdGlvbnMgd2l0aCB0aGUgc3BlY2lmaWVkIHRhcmdldFxuICAgKiB2ZXJzaW9uIGFuZCBkYXRhLlxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlTWlncmF0aW9uczxEYXRhPihcbiAgICB0eXBlczogTWlncmF0aW9uQ3RvcjxEYXRhLCBDb250ZXh0PltdLFxuICAgIHRhcmdldDogVGFyZ2V0VmVyc2lvbiB8IG51bGwsXG4gICAgZGF0YTogRGF0YSxcbiAgKTogTWlncmF0aW9uPERhdGEsIENvbnRleHQ+W10ge1xuICAgIGNvbnN0IHJlc3VsdDogTWlncmF0aW9uPERhdGEsIENvbnRleHQ+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGN0b3Igb2YgdHlwZXMpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IGN0b3IoXG4gICAgICAgIHRoaXMuX3Byb2dyYW0sXG4gICAgICAgIHRoaXMuX3R5cGVDaGVja2VyLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMuX2NvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIHRoaXMuX2ZpbGVTeXN0ZW0sXG4gICAgICAgIHRoaXMuX2xvZ2dlcixcbiAgICAgICk7XG4gICAgICBpbnN0YW5jZS5pbml0KCk7XG4gICAgICBpZiAoaW5zdGFuY2UuZW5hYmxlZCkge1xuICAgICAgICByZXN1bHQucHVzaChpbnN0YW5jZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHByb2dyYW0gZnJvbSB0aGUgc3BlY2lmaWVkIHRzY29uZmlnIGFuZCBwYXRjaGVzIHRoZSBob3N0XG4gICAqIHRvIHJlYWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRocm91Z2ggdGhlIGdpdmVuIGZpbGUgc3lzdGVtLlxuICAgKlxuICAgKiBAdGhyb3dzIHtUc2NvbmZpZ1BhcnNlRXJyb3J9IElmIHRoZSB0c2NvbmZpZyBjb3VsZCBub3QgYmUgcGFyc2VkLlxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVByb2dyYW1Gcm9tVHNjb25maWcodHNjb25maWdQYXRoOiBXb3Jrc3BhY2VQYXRoLCBmczogRmlsZVN5c3RlbSk6IHRzLlByb2dyYW0ge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlVHNjb25maWdGaWxlKGZzLnJlc29sdmUodHNjb25maWdQYXRoKSwgZnMpO1xuICAgIGNvbnN0IGhvc3QgPSBjcmVhdGVGaWxlU3lzdGVtQ29tcGlsZXJIb3N0KHBhcnNlZC5vcHRpb25zLCBmcyk7XG4gICAgcmV0dXJuIHRzLmNyZWF0ZVByb2dyYW0ocGFyc2VkLmZpbGVOYW1lcywgcGFyc2VkLm9wdGlvbnMsIGhvc3QpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.defaultLogger = void 0;
|
|
11
|
-
exports.defaultLogger = {
|
|
12
|
-
debug: m => console.debug(m),
|
|
13
|
-
error: m => console.error(m),
|
|
14
|
-
fatal: m => console.error(m),
|
|
15
|
-
info: m => console.info(m),
|
|
16
|
-
warn: m => console.warn(m),
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFVVSxRQUFBLGFBQWEsR0FBaUI7SUFDekMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVMb2dnZXIge1xuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBmYXRhbChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkO1xuICBpbmZvKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMb2dnZXI6IFVwZGF0ZUxvZ2dlciA9IHtcbiAgZGVidWc6IG0gPT4gY29uc29sZS5kZWJ1ZyhtKSxcbiAgZXJyb3I6IG0gPT4gY29uc29sZS5lcnJvcihtKSxcbiAgZmF0YWw6IG0gPT4gY29uc29sZS5lcnJvcihtKSxcbiAgaW5mbzogbSA9PiBjb25zb2xlLmluZm8obSksXG4gIHdhcm46IG0gPT4gY29uc29sZS53YXJuKG0pLFxufTtcbiJdfQ==
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.Migration = void 0;
|
|
11
|
-
const ts = require("typescript");
|
|
12
|
-
class Migration {
|
|
13
|
-
program;
|
|
14
|
-
typeChecker;
|
|
15
|
-
targetVersion;
|
|
16
|
-
context;
|
|
17
|
-
upgradeData;
|
|
18
|
-
fileSystem;
|
|
19
|
-
logger;
|
|
20
|
-
/** List of migration failures that need to be reported. */
|
|
21
|
-
failures = [];
|
|
22
|
-
constructor(
|
|
23
|
-
/** TypeScript program for the migration. */
|
|
24
|
-
program,
|
|
25
|
-
/** TypeChecker instance for the analysis program. */
|
|
26
|
-
typeChecker,
|
|
27
|
-
/**
|
|
28
|
-
* Version for which the migration rule should run. Null if the migration
|
|
29
|
-
* is invoked manually.
|
|
30
|
-
*/
|
|
31
|
-
targetVersion,
|
|
32
|
-
/** Context data for the migration. */
|
|
33
|
-
context,
|
|
34
|
-
/** Upgrade data passed to the migration. */
|
|
35
|
-
upgradeData,
|
|
36
|
-
/** File system that can be used for modifying files. */
|
|
37
|
-
fileSystem,
|
|
38
|
-
/** Logger that can be used to print messages as part of the migration. */
|
|
39
|
-
logger) {
|
|
40
|
-
this.program = program;
|
|
41
|
-
this.typeChecker = typeChecker;
|
|
42
|
-
this.targetVersion = targetVersion;
|
|
43
|
-
this.context = context;
|
|
44
|
-
this.upgradeData = upgradeData;
|
|
45
|
-
this.fileSystem = fileSystem;
|
|
46
|
-
this.logger = logger;
|
|
47
|
-
}
|
|
48
|
-
/** Method can be used to perform global analysis of the program. */
|
|
49
|
-
init() { }
|
|
50
|
-
/**
|
|
51
|
-
* Method that will be called once all nodes, templates and stylesheets
|
|
52
|
-
* have been visited.
|
|
53
|
-
*/
|
|
54
|
-
postAnalysis() { }
|
|
55
|
-
/**
|
|
56
|
-
* Method that will be called for each node in a given source file. Unlike tslint, this
|
|
57
|
-
* function will only retrieve TypeScript nodes that need to be casted manually. This
|
|
58
|
-
* allows us to only walk the program source files once per program and not per
|
|
59
|
-
* migration rule (significant performance boost).
|
|
60
|
-
*/
|
|
61
|
-
visitNode(node) { }
|
|
62
|
-
/** Method that will be called for each Angular template in the program. */
|
|
63
|
-
visitTemplate(template) { }
|
|
64
|
-
/** Method that will be called for each stylesheet in the program. */
|
|
65
|
-
visitStylesheet(stylesheet) { }
|
|
66
|
-
/** Creates a failure with a specified message at the given node location. */
|
|
67
|
-
createFailureAtNode(node, message) {
|
|
68
|
-
const sourceFile = node.getSourceFile();
|
|
69
|
-
this.failures.push({
|
|
70
|
-
filePath: this.fileSystem.resolve(sourceFile.fileName),
|
|
71
|
-
position: ts.getLineAndCharacterOfPosition(sourceFile, node.getStart()),
|
|
72
|
-
message: message,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
exports.Migration = Migration;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3VwZGF0ZS10b29sL21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxpQ0FBaUM7QUF1QmpDLE1BQXNCLFNBQVM7SUFTcEI7SUFFQTtJQUtBO0lBRUE7SUFFQTtJQUVBO0lBRUE7SUF2QlQsMkRBQTJEO0lBQzNELFFBQVEsR0FBdUIsRUFBRSxDQUFDO0lBS2xDO0lBQ0UsNENBQTRDO0lBQ3JDLE9BQW1CO0lBQzFCLHFEQUFxRDtJQUM5QyxXQUEyQjtJQUNsQzs7O09BR0c7SUFDSSxhQUFtQztJQUMxQyxzQ0FBc0M7SUFDL0IsT0FBZ0I7SUFDdkIsNENBQTRDO0lBQ3JDLFdBQWlCO0lBQ3hCLHdEQUF3RDtJQUNqRCxVQUFzQjtJQUM3QiwwRUFBMEU7SUFDbkUsTUFBb0I7UUFmcEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUVuQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFLM0Isa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBRW5DLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFaEIsZ0JBQVcsR0FBWCxXQUFXLENBQU07UUFFakIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixXQUFNLEdBQU4sTUFBTSxDQUFjO0lBQzFCLENBQUM7SUFFSixvRUFBb0U7SUFDcEUsSUFBSSxLQUFVLENBQUM7SUFFZjs7O09BR0c7SUFDSCxZQUFZLEtBQVUsQ0FBQztJQUV2Qjs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxJQUFhLElBQVMsQ0FBQztJQUVqQywyRUFBMkU7SUFDM0UsYUFBYSxDQUFDLFFBQTBCLElBQVMsQ0FBQztJQUVsRCxxRUFBcUU7SUFDckUsZUFBZSxDQUFDLFVBQTRCLElBQVMsQ0FBQztJQUV0RCw2RUFBNkU7SUFDbkUsbUJBQW1CLENBQUMsSUFBYSxFQUFFLE9BQWU7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RELFFBQVEsRUFBRSxFQUFFLENBQUMsNkJBQTZCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2RSxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEzREQsOEJBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7UmVzb2x2ZWRSZXNvdXJjZX0gZnJvbSAnLi9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yJztcbmltcG9ydCB7RmlsZVN5c3RlbSwgV29ya3NwYWNlUGF0aH0gZnJvbSAnLi9maWxlLXN5c3RlbSc7XG5pbXBvcnQge1VwZGF0ZUxvZ2dlcn0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtUYXJnZXRWZXJzaW9ufSBmcm9tICcuL3RhcmdldC12ZXJzaW9uJztcbmltcG9ydCB7TGluZUFuZENoYXJhY3Rlcn0gZnJvbSAnLi91dGlscy9saW5lLW1hcHBpbmdzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25GYWlsdXJlIHtcbiAgZmlsZVBhdGg6IFdvcmtzcGFjZVBhdGg7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcG9zaXRpb24/OiBMaW5lQW5kQ2hhcmFjdGVyO1xufVxuXG5leHBvcnQgdHlwZSBQb3N0TWlncmF0aW9uQWN0aW9uID0gdm9pZCB8IHtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhY2thZ2UgbWFuYWdlciBzaG91bGQgcnVuIHVwb24gbWlncmF0aW9uIGNvbXBsZXRpb24uICovXG4gIHJ1blBhY2thZ2VNYW5hZ2VyOiBib29sZWFuO1xufTtcblxuLyoqIENyZWF0ZXMgYSBjb25zdHJ1Y3RvciB0eXBlIGZvciB0aGUgc3BlY2lmaWVkIHR5cGUuICovXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUPiA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XG4vKiogR2V0cyBhIGNvbnN0cnVjdG9yIHR5cGUgZm9yIHRoZSBwYXNzZWQgbWlncmF0aW9uIGRhdGEuICovXG5leHBvcnQgdHlwZSBNaWdyYXRpb25DdG9yPERhdGEsIENvbnRleHQgPSBhbnk+ID0gQ29uc3RydWN0b3I8TWlncmF0aW9uPERhdGEsIENvbnRleHQ+PjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1pZ3JhdGlvbjxEYXRhLCBDb250ZXh0ID0gYW55PiB7XG4gIC8qKiBMaXN0IG9mIG1pZ3JhdGlvbiBmYWlsdXJlcyB0aGF0IG5lZWQgdG8gYmUgcmVwb3J0ZWQuICovXG4gIGZhaWx1cmVzOiBNaWdyYXRpb25GYWlsdXJlW10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgbWlncmF0aW9uIGlzIGVuYWJsZWQgb3Igbm90LiAqL1xuICBhYnN0cmFjdCBlbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBUeXBlU2NyaXB0IHByb2dyYW0gZm9yIHRoZSBtaWdyYXRpb24uICovXG4gICAgcHVibGljIHByb2dyYW06IHRzLlByb2dyYW0sXG4gICAgLyoqIFR5cGVDaGVja2VyIGluc3RhbmNlIGZvciB0aGUgYW5hbHlzaXMgcHJvZ3JhbS4gKi9cbiAgICBwdWJsaWMgdHlwZUNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICAgIC8qKlxuICAgICAqIFZlcnNpb24gZm9yIHdoaWNoIHRoZSBtaWdyYXRpb24gcnVsZSBzaG91bGQgcnVuLiBOdWxsIGlmIHRoZSBtaWdyYXRpb25cbiAgICAgKiBpcyBpbnZva2VkIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHB1YmxpYyB0YXJnZXRWZXJzaW9uOiBUYXJnZXRWZXJzaW9uIHwgbnVsbCxcbiAgICAvKiogQ29udGV4dCBkYXRhIGZvciB0aGUgbWlncmF0aW9uLiAqL1xuICAgIHB1YmxpYyBjb250ZXh0OiBDb250ZXh0LFxuICAgIC8qKiBVcGdyYWRlIGRhdGEgcGFzc2VkIHRvIHRoZSBtaWdyYXRpb24uICovXG4gICAgcHVibGljIHVwZ3JhZGVEYXRhOiBEYXRhLFxuICAgIC8qKiBGaWxlIHN5c3RlbSB0aGF0IGNhbiBiZSB1c2VkIGZvciBtb2RpZnlpbmcgZmlsZXMuICovXG4gICAgcHVibGljIGZpbGVTeXN0ZW06IEZpbGVTeXN0ZW0sXG4gICAgLyoqIExvZ2dlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHByaW50IG1lc3NhZ2VzIGFzIHBhcnQgb2YgdGhlIG1pZ3JhdGlvbi4gKi9cbiAgICBwdWJsaWMgbG9nZ2VyOiBVcGRhdGVMb2dnZXIsXG4gICkge31cblxuICAvKiogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gZ2xvYmFsIGFuYWx5c2lzIG9mIHRoZSBwcm9ncmFtLiAqL1xuICBpbml0KCk6IHZvaWQge31cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBhbGwgbm9kZXMsIHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHNcbiAgICogaGF2ZSBiZWVuIHZpc2l0ZWQuXG4gICAqL1xuICBwb3N0QW5hbHlzaXMoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBub2RlIGluIGEgZ2l2ZW4gc291cmNlIGZpbGUuIFVubGlrZSB0c2xpbnQsIHRoaXNcbiAgICogZnVuY3Rpb24gd2lsbCBvbmx5IHJldHJpZXZlIFR5cGVTY3JpcHQgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIGNhc3RlZCBtYW51YWxseS4gVGhpc1xuICAgKiBhbGxvd3MgdXMgdG8gb25seSB3YWxrIHRoZSBwcm9ncmFtIHNvdXJjZSBmaWxlcyBvbmNlIHBlciBwcm9ncmFtIGFuZCBub3QgcGVyXG4gICAqIG1pZ3JhdGlvbiBydWxlIChzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBib29zdCkuXG4gICAqL1xuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggQW5ndWxhciB0ZW1wbGF0ZSBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge31cblxuICAvKiogTWV0aG9kIHRoYXQgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggc3R5bGVzaGVldCBpbiB0aGUgcHJvZ3JhbS4gKi9cbiAgdmlzaXRTdHlsZXNoZWV0KHN0eWxlc2hlZXQ6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHt9XG5cbiAgLyoqIENyZWF0ZXMgYSBmYWlsdXJlIHdpdGggYSBzcGVjaWZpZWQgbWVzc2FnZSBhdCB0aGUgZ2l2ZW4gbm9kZSBsb2NhdGlvbi4gKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUZhaWx1cmVBdE5vZGUobm9kZTogdHMuTm9kZSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xuICAgIHRoaXMuZmFpbHVyZXMucHVzaCh7XG4gICAgICBmaWxlUGF0aDogdGhpcy5maWxlU3lzdGVtLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSksXG4gICAgICBwb3NpdGlvbjogdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oc291cmNlRmlsZSwgbm9kZS5nZXRTdGFydCgpKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright Google LLC All Rights Reserved.
|
|
5
|
-
*
|
|
6
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
-
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
__exportStar(require("./component-resource-collector"), exports);
|
|
25
|
-
__exportStar(require("./file-system"), exports);
|
|
26
|
-
__exportStar(require("./index"), exports);
|
|
27
|
-
__exportStar(require("./migration"), exports);
|
|
28
|
-
__exportStar(require("./target-version"), exports);
|
|
29
|
-
__exportStar(require("./utils/decorators"), exports);
|
|
30
|
-
__exportStar(require("./utils/imports"), exports);
|
|
31
|
-
__exportStar(require("./utils/property-name"), exports);
|
|
32
|
-
__exportStar(require("./version-changes"), exports);
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy91cGRhdGUtdG9vbC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxpRUFBK0M7QUFDL0MsZ0RBQThCO0FBQzlCLDBDQUF3QjtBQUN4Qiw4Q0FBNEI7QUFDNUIsbURBQWlDO0FBQ2pDLHFEQUFtQztBQUNuQyxrREFBZ0M7QUFDaEMsd0RBQXNDO0FBQ3RDLG9EQUFrQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS1zeXN0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21pZ3JhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3RhcmdldC12ZXJzaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZGVjb3JhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2ltcG9ydHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9wcm9wZXJ0eS1uYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi1jaGFuZ2VzJztcbiJdfQ==
|