@mouryaamit/nx-polystack 0.0.0-stage → 1.0.1
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/LICENSE +21 -0
- package/README.md +77 -2
- package/USER-MANUAL.md +1968 -0
- package/dist/bin/cli.d.ts +1 -0
- package/dist/bin/cli.js +92 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/executors.json +32 -0
- package/dist/generators.json +47 -0
- package/dist/migrations.json +87 -0
- package/dist/runtime/env-secret.cjs +736 -0
- package/dist/src/cli/args.d.ts +18 -0
- package/dist/src/cli/args.js +67 -0
- package/dist/src/cli/args.js.map +1 -0
- package/dist/src/cli/commands/app.d.ts +3 -0
- package/dist/src/cli/commands/app.js +108 -0
- package/dist/src/cli/commands/app.js.map +1 -0
- package/dist/src/cli/commands/build.d.ts +8 -0
- package/dist/src/cli/commands/build.js +132 -0
- package/dist/src/cli/commands/build.js.map +1 -0
- package/dist/src/cli/commands/csp.d.ts +19 -0
- package/dist/src/cli/commands/csp.js +238 -0
- package/dist/src/cli/commands/csp.js.map +1 -0
- package/dist/src/cli/commands/encryption.d.ts +4 -0
- package/dist/src/cli/commands/encryption.js +261 -0
- package/dist/src/cli/commands/encryption.js.map +1 -0
- package/dist/src/cli/commands/env.d.ts +2 -0
- package/dist/src/cli/commands/env.js +74 -0
- package/dist/src/cli/commands/env.js.map +1 -0
- package/dist/src/cli/commands/hardening.d.ts +2 -0
- package/dist/src/cli/commands/hardening.js +176 -0
- package/dist/src/cli/commands/hardening.js.map +1 -0
- package/dist/src/cli/commands/index.d.ts +3 -0
- package/dist/src/cli/commands/index.js +45 -0
- package/dist/src/cli/commands/index.js.map +1 -0
- package/dist/src/cli/commands/infra.d.ts +25 -0
- package/dist/src/cli/commands/infra.js +85 -0
- package/dist/src/cli/commands/infra.js.map +1 -0
- package/dist/src/cli/commands/internal-migrate.d.ts +3 -0
- package/dist/src/cli/commands/internal-migrate.js +65 -0
- package/dist/src/cli/commands/internal-migrate.js.map +1 -0
- package/dist/src/cli/commands/lib.d.ts +2 -0
- package/dist/src/cli/commands/lib.js +70 -0
- package/dist/src/cli/commands/lib.js.map +1 -0
- package/dist/src/cli/commands/llm.d.ts +2 -0
- package/dist/src/cli/commands/llm.js +46 -0
- package/dist/src/cli/commands/llm.js.map +1 -0
- package/dist/src/cli/commands/migrate.d.ts +2 -0
- package/dist/src/cli/commands/migrate.js +230 -0
- package/dist/src/cli/commands/migrate.js.map +1 -0
- package/dist/src/cli/commands/new.d.ts +6 -0
- package/dist/src/cli/commands/new.js +97 -0
- package/dist/src/cli/commands/new.js.map +1 -0
- package/dist/src/cli/commands/preset.d.ts +2 -0
- package/dist/src/cli/commands/preset.js +47 -0
- package/dist/src/cli/commands/preset.js.map +1 -0
- package/dist/src/cli/commands/release.d.ts +3 -0
- package/dist/src/cli/commands/release.js +83 -0
- package/dist/src/cli/commands/release.js.map +1 -0
- package/dist/src/cli/commands/shared.d.ts +3 -0
- package/dist/src/cli/commands/shared.js +55 -0
- package/dist/src/cli/commands/shared.js.map +1 -0
- package/dist/src/cli/commands/update.d.ts +11 -0
- package/dist/src/cli/commands/update.js +120 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/context.d.ts +18 -0
- package/dist/src/cli/context.js +66 -0
- package/dist/src/cli/context.js.map +1 -0
- package/dist/src/cli/exec.d.ts +9 -0
- package/dist/src/cli/exec.js +34 -0
- package/dist/src/cli/exec.js.map +1 -0
- package/dist/src/cli/help.d.ts +1 -0
- package/dist/src/cli/help.js +291 -0
- package/dist/src/cli/help.js.map +1 -0
- package/dist/src/cli/install-source.d.ts +16 -0
- package/dist/src/cli/install-source.js +49 -0
- package/dist/src/cli/install-source.js.map +1 -0
- package/dist/src/cli/launcher.d.ts +32 -0
- package/dist/src/cli/launcher.js +168 -0
- package/dist/src/cli/launcher.js.map +1 -0
- package/dist/src/cli/migrations.d.ts +25 -0
- package/dist/src/cli/migrations.js +35 -0
- package/dist/src/cli/migrations.js.map +1 -0
- package/dist/src/cli/run-tree.d.ts +9 -0
- package/dist/src/cli/run-tree.js +32 -0
- package/dist/src/cli/run-tree.js.map +1 -0
- package/dist/src/cli/types.d.ts +18 -0
- package/dist/src/cli/types.js +12 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/cli/update-plan.d.ts +15 -0
- package/dist/src/cli/update-plan.js +40 -0
- package/dist/src/cli/update-plan.js.map +1 -0
- package/dist/src/cli/versions.d.ts +26 -0
- package/dist/src/cli/versions.js +83 -0
- package/dist/src/cli/versions.js.map +1 -0
- package/dist/src/executors/build/executor.d.ts +19 -0
- package/dist/src/executors/build/executor.js +251 -0
- package/dist/src/executors/build/executor.js.map +1 -0
- package/dist/src/executors/build/schema.d.ts +42 -0
- package/dist/src/executors/build/schema.json +104 -0
- package/dist/src/executors/capacitor/executor.d.ts +8 -0
- package/dist/src/executors/capacitor/executor.js +45 -0
- package/dist/src/executors/capacitor/executor.js.map +1 -0
- package/dist/src/executors/capacitor/schema.d.ts +10 -0
- package/dist/src/executors/capacitor/schema.json +24 -0
- package/dist/src/executors/clean/executor.d.ts +19 -0
- package/dist/src/executors/clean/executor.js +134 -0
- package/dist/src/executors/clean/executor.js.map +1 -0
- package/dist/src/executors/clean/schema.d.ts +6 -0
- package/dist/src/executors/clean/schema.json +21 -0
- package/dist/src/executors/flutter-build/executor.d.ts +8 -0
- package/dist/src/executors/flutter-build/executor.js +70 -0
- package/dist/src/executors/flutter-build/executor.js.map +1 -0
- package/dist/src/executors/flutter-build/schema.d.ts +10 -0
- package/dist/src/executors/flutter-build/schema.json +44 -0
- package/dist/src/executors/flutter-export/executor.d.ts +8 -0
- package/dist/src/executors/flutter-export/executor.js +36 -0
- package/dist/src/executors/flutter-export/executor.js.map +1 -0
- package/dist/src/executors/flutter-export/schema.d.ts +6 -0
- package/dist/src/executors/flutter-export/schema.json +28 -0
- package/dist/src/generators/app/files/angular/.eslintrc.json__template__ +28 -0
- package/dist/src/generators/app/files/angular/csp-allowlist.json__template__ +1 -0
- package/dist/src/generators/app/files/angular/server/README.md__template__ +31 -0
- package/dist/src/generators/app/files/angular/src/app/app-routing.module.ts__template__ +10 -0
- package/dist/src/generators/app/files/angular/src/app/app.component.html__template__ +4 -0
- package/dist/src/generators/app/files/angular/src/app/app.component.scss__template__ +1 -0
- package/dist/src/generators/app/files/angular/src/app/app.component.ts__template__ +9 -0
- package/dist/src/generators/app/files/angular/src/app/app.module.ts__template__ +13 -0
- package/dist/src/generators/app/files/angular/src/index.html__template__ +12 -0
- package/dist/src/generators/app/files/angular/src/main.ts__template__ +16 -0
- package/dist/src/generators/app/files/angular/src/styles.scss__template__ +1 -0
- package/dist/src/generators/app/files/angular/tsconfig.app.json__template__ +10 -0
- package/dist/src/generators/app/files/angular/tsconfig.json__template__ +25 -0
- package/dist/src/generators/app/files/angular/tsconfig.spec.json__template__ +8 -0
- package/dist/src/generators/app/files/flutter/.gitignore__template__ +10 -0
- package/dist/src/generators/app/files/flutter/analysis_options.yaml__template__ +8 -0
- package/dist/src/generators/app/files/flutter/lib/main.dart__template__ +23 -0
- package/dist/src/generators/app/files/flutter/pubspec.yaml__template__ +26 -0
- package/dist/src/generators/app/files/flutter/server/nginx.conf__template__ +35 -0
- package/dist/src/generators/app/files/ionic/.gitignore__template__ +7 -0
- package/dist/src/generators/app/files/ionic/capacitor.config.ts__template__ +19 -0
- package/dist/src/generators/app/files/ionic/package.json__template__ +14 -0
- package/dist/src/generators/app/files/ionic/src/app/app.component.html__template__ +3 -0
- package/dist/src/generators/app/files/ionic/src/app/app.component.scss__template__ +0 -0
- package/dist/src/generators/app/files/ionic/src/app/app.module.ts__template__ +16 -0
- package/dist/src/generators/app/files/ionic/src/index.html__template__ +17 -0
- package/dist/src/generators/app/files/ionic/src/styles.scss__template__ +12 -0
- package/dist/src/generators/app/generator.d.ts +15 -0
- package/dist/src/generators/app/generator.js +363 -0
- package/dist/src/generators/app/generator.js.map +1 -0
- package/dist/src/generators/app/schema.d.ts +19 -0
- package/dist/src/generators/app/schema.json +77 -0
- package/dist/src/generators/env/generator.d.ts +3 -0
- package/dist/src/generators/env/generator.js +454 -0
- package/dist/src/generators/env/generator.js.map +1 -0
- package/dist/src/generators/env/schema.d.ts +18 -0
- package/dist/src/generators/env/schema.json +47 -0
- package/dist/src/generators/infra/files/ci/commitlint/commitlint.config.js__template__ +6 -0
- package/dist/src/generators/infra/files/ci/common/tools/config/allowed-cycles.json__template__ +1 -0
- package/dist/src/generators/infra/files/ci/common/tools/scripts/check-cycles.js__template__ +201 -0
- package/dist/src/generators/infra/files/ci/github-actions/.github/workflows/ci.yml__template__ +68 -0
- package/dist/src/generators/infra/files/ci/github-actions/.github/workflows/pr-title.yml__template__ +36 -0
- package/dist/src/generators/infra/files/ci/jenkins/Jenkinsfile__template__ +45 -0
- package/dist/src/generators/infra/files/docs/.github/ISSUE_TEMPLATE/bug.yml__template__ +39 -0
- package/dist/src/generators/infra/files/docs/.github/ISSUE_TEMPLATE/config.yml__template__ +1 -0
- package/dist/src/generators/infra/files/docs/.github/ISSUE_TEMPLATE/feature.yml__template__ +23 -0
- package/dist/src/generators/infra/files/docs/.github/PULL_REQUEST_TEMPLATE.md__template__ +23 -0
- package/dist/src/generators/infra/files/docs/CODE_OF_CONDUCT.md__template__ +18 -0
- package/dist/src/generators/infra/files/docs/CONTRIBUTING.md__template__ +61 -0
- package/dist/src/generators/infra/files/docs/SECURITY.md__template__ +25 -0
- package/dist/src/generators/infra/files/quality/.husky/pre-push__template__ +2 -0
- package/dist/src/generators/infra/files/quality/.secretlintignore__template__ +7 -0
- package/dist/src/generators/infra/files/quality/.secretlintrc.json__template__ +7 -0
- package/dist/src/generators/infra/files/quality/knip.json__template__ +9 -0
- package/dist/src/generators/infra/files/upgrades/.github/workflows/dependency-upgrade.yml__template__ +80 -0
- package/dist/src/generators/infra/generator.d.ts +60 -0
- package/dist/src/generators/infra/generator.js +356 -0
- package/dist/src/generators/infra/generator.js.map +1 -0
- package/dist/src/generators/infra/options.d.ts +28 -0
- package/dist/src/generators/infra/options.js +80 -0
- package/dist/src/generators/infra/options.js.map +1 -0
- package/dist/src/generators/infra/schema.d.ts +19 -0
- package/dist/src/generators/infra/schema.json +59 -0
- package/dist/src/generators/lib/angular-lib.d.ts +27 -0
- package/dist/src/generators/lib/angular-lib.js +85 -0
- package/dist/src/generators/lib/angular-lib.js.map +1 -0
- package/dist/src/generators/lib/files/angular/component/src/index.ts__template__ +2 -0
- package/dist/src/generators/lib/files/angular/component/src/lib/__fileName__/__fileName__.component.html__template__ +1 -0
- package/dist/src/generators/lib/files/angular/component/src/lib/__fileName__/__fileName__.component.scss__template__ +3 -0
- package/dist/src/generators/lib/files/angular/component/src/lib/__fileName__/__fileName__.component.ts__template__ +9 -0
- package/dist/src/generators/lib/files/angular/component/src/lib/__fileName__.module.ts__template__ +11 -0
- package/dist/src/generators/lib/files/angular/config/.eslintrc.json__template__ +32 -0
- package/dist/src/generators/lib/files/angular/config/tsconfig.json__template__ +22 -0
- package/dist/src/generators/lib/files/angular/config/tsconfig.lib.json__template__ +12 -0
- package/dist/src/generators/lib/files/assets/README.md__template__ +13 -0
- package/dist/src/generators/lib/files/design-tokens/README.md__template__ +90 -0
- package/dist/src/generators/lib/files/design-tokens/generated/dart/pubspec.yaml__template__ +11 -0
- package/dist/src/generators/lib/files/design-tokens/src/index.ts__template__ +1 -0
- package/dist/src/generators/lib/files/design-tokens/style-dictionary.config.js__template__ +41 -0
- package/dist/src/generators/lib/files/flutter/.gitignore__template__ +7 -0
- package/dist/src/generators/lib/files/flutter/analysis_options.yaml__template__ +6 -0
- package/dist/src/generators/lib/files/flutter/lib/__snakeName__.dart__template__ +1 -0
- package/dist/src/generators/lib/files/flutter/lib/src/__snakeName__.dart__template__ +6 -0
- package/dist/src/generators/lib/files/flutter/pubspec.yaml__template__ +18 -0
- package/dist/src/generators/lib/files/flutter/test/__snakeName___test.dart__template__ +8 -0
- package/dist/src/generators/lib/files/ionic/src/index.ts__template__ +2 -0
- package/dist/src/generators/lib/files/ionic/src/lib/__fileName__/__fileName__.page.html__template__ +9 -0
- package/dist/src/generators/lib/files/ionic/src/lib/__fileName__/__fileName__.page.scss__template__ +3 -0
- package/dist/src/generators/lib/files/ionic/src/lib/__fileName__/__fileName__.page.ts__template__ +9 -0
- package/dist/src/generators/lib/files/ionic/src/lib/__fileName__.module.ts__template__ +12 -0
- package/dist/src/generators/lib/files/pii/README.md__template__ +35 -0
- package/dist/src/generators/lib/files/pii/src/index.ts__template__ +5 -0
- package/dist/src/generators/lib/files/pii/src/lib/pii-mask.directive.ts__template__ +30 -0
- package/dist/src/generators/lib/files/pii/src/lib/pii-mask.module.ts__template__ +17 -0
- package/dist/src/generators/lib/files/pii/src/lib/pii-mask.options.ts__template__ +6 -0
- package/dist/src/generators/lib/files/pii/src/lib/pii-mask.pipe.ts__template__ +14 -0
- package/dist/src/generators/lib/files/pii/src/lib/pii-mask.ts__template__ +117 -0
- package/dist/src/generators/lib/files/session/README.md__template__ +39 -0
- package/dist/src/generators/lib/files/session/src/index.ts__template__ +5 -0
- package/dist/src/generators/lib/files/session/src/lib/session-clock.ts__template__ +113 -0
- package/dist/src/generators/lib/files/session/src/lib/session-timeout.config.ts__template__ +8 -0
- package/dist/src/generators/lib/files/session/src/lib/session-timeout.module.ts__template__ +23 -0
- package/dist/src/generators/lib/files/session/src/lib/session-timeout.service.ts__template__ +289 -0
- package/dist/src/generators/lib/files/session/src/lib/session-warning/session-warning.component.html__template__ +21 -0
- package/dist/src/generators/lib/files/session/src/lib/session-warning/session-warning.component.scss__template__ +40 -0
- package/dist/src/generators/lib/files/session/src/lib/session-warning/session-warning.component.ts__template__ +105 -0
- package/dist/src/generators/lib/files/state/ngrx/README.md__template__ +33 -0
- package/dist/src/generators/lib/files/state/ngrx/src/index.ts__template__ +6 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__-state.module.ts__template__ +18 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__.actions.ts__template__ +12 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__.effects.ts__template__ +26 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__.models.ts__template__ +4 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__.reducer.ts__template__ +33 -0
- package/dist/src/generators/lib/files/state/ngrx/src/lib/__fileName__.selectors.ts__template__ +14 -0
- package/dist/src/generators/lib/files/state/simple-service/README.md__template__ +20 -0
- package/dist/src/generators/lib/files/state/simple-service/src/index.ts__template__ +2 -0
- package/dist/src/generators/lib/files/state/simple-service/src/lib/__fileName__.store.ts__template__ +58 -0
- package/dist/src/generators/lib/files/state/simple-service/src/lib/store.ts__template__ +34 -0
- package/dist/src/generators/lib/files/styles/README.md__template__ +39 -0
- package/dist/src/generators/lib/files/styles/src/_index.scss__template__ +3 -0
- package/dist/src/generators/lib/files/styles/src/mixins/_index.scss__template__ +13 -0
- package/dist/src/generators/lib/files/styles/src/themes/_index.scss__template__ +20 -0
- package/dist/src/generators/lib/files/styles/src/tokens/_index.scss__template__ +27 -0
- package/dist/src/generators/lib/files/ts/config/.eslintrc.json__template__ +10 -0
- package/dist/src/generators/lib/files/ts/config/tsconfig.json__template__ +14 -0
- package/dist/src/generators/lib/files/ts/config/tsconfig.lib.json__template__ +10 -0
- package/dist/src/generators/lib/files/ts/sample/src/index.ts__template__ +1 -0
- package/dist/src/generators/lib/files/ts/sample/src/lib/__fileName__.ts__template__ +4 -0
- package/dist/src/generators/lib/generator.d.ts +3 -0
- package/dist/src/generators/lib/generator.js +53 -0
- package/dist/src/generators/lib/generator.js.map +1 -0
- package/dist/src/generators/lib/lib-utils.d.ts +72 -0
- package/dist/src/generators/lib/lib-utils.js +170 -0
- package/dist/src/generators/lib/lib-utils.js.map +1 -0
- package/dist/src/generators/lib/schema.d.ts +31 -0
- package/dist/src/generators/lib/schema.json +63 -0
- package/dist/src/generators/lib/style-dictionary.d.ts +36 -0
- package/dist/src/generators/lib/style-dictionary.js +183 -0
- package/dist/src/generators/lib/style-dictionary.js.map +1 -0
- package/dist/src/generators/lib/types/angular.d.ts +2 -0
- package/dist/src/generators/lib/types/angular.js +20 -0
- package/dist/src/generators/lib/types/angular.js.map +1 -0
- package/dist/src/generators/lib/types/assets.d.ts +2 -0
- package/dist/src/generators/lib/types/assets.js +20 -0
- package/dist/src/generators/lib/types/assets.js.map +1 -0
- package/dist/src/generators/lib/types/design-tokens.d.ts +10 -0
- package/dist/src/generators/lib/types/design-tokens.js +78 -0
- package/dist/src/generators/lib/types/design-tokens.js.map +1 -0
- package/dist/src/generators/lib/types/flutter.d.ts +2 -0
- package/dist/src/generators/lib/types/flutter.js +28 -0
- package/dist/src/generators/lib/types/flutter.js.map +1 -0
- package/dist/src/generators/lib/types/index.d.ts +8 -0
- package/dist/src/generators/lib/types/index.js +31 -0
- package/dist/src/generators/lib/types/index.js.map +1 -0
- package/dist/src/generators/lib/types/ionic.d.ts +4 -0
- package/dist/src/generators/lib/types/ionic.js +35 -0
- package/dist/src/generators/lib/types/ionic.js.map +1 -0
- package/dist/src/generators/lib/types/pii.d.ts +3 -0
- package/dist/src/generators/lib/types/pii.js +19 -0
- package/dist/src/generators/lib/types/pii.js.map +1 -0
- package/dist/src/generators/lib/types/session.d.ts +3 -0
- package/dist/src/generators/lib/types/session.js +21 -0
- package/dist/src/generators/lib/types/session.js.map +1 -0
- package/dist/src/generators/lib/types/state.d.ts +5 -0
- package/dist/src/generators/lib/types/state.js +48 -0
- package/dist/src/generators/lib/types/state.js.map +1 -0
- package/dist/src/generators/lib/types/styles.d.ts +2 -0
- package/dist/src/generators/lib/types/styles.js +19 -0
- package/dist/src/generators/lib/types/styles.js.map +1 -0
- package/dist/src/generators/lib/types/ts.d.ts +5 -0
- package/dist/src/generators/lib/types/ts.js +30 -0
- package/dist/src/generators/lib/types/ts.js.map +1 -0
- package/dist/src/generators/llm/generator.d.ts +8 -0
- package/dist/src/generators/llm/generator.js +13 -0
- package/dist/src/generators/llm/generator.js.map +1 -0
- package/dist/src/generators/llm/schema.d.ts +4 -0
- package/dist/src/generators/llm/schema.json +16 -0
- package/dist/src/generators/migrate/adapters/angular-cli.d.ts +82 -0
- package/dist/src/generators/migrate/adapters/angular-cli.js +439 -0
- package/dist/src/generators/migrate/adapters/angular-cli.js.map +1 -0
- package/dist/src/generators/migrate/adapters/angular-workspace.d.ts +28 -0
- package/dist/src/generators/migrate/adapters/angular-workspace.js +397 -0
- package/dist/src/generators/migrate/adapters/angular-workspace.js.map +1 -0
- package/dist/src/generators/migrate/adapters/external.d.ts +23 -0
- package/dist/src/generators/migrate/adapters/external.js +230 -0
- package/dist/src/generators/migrate/adapters/external.js.map +1 -0
- package/dist/src/generators/migrate/adapters/flutter.d.ts +26 -0
- package/dist/src/generators/migrate/adapters/flutter.js +176 -0
- package/dist/src/generators/migrate/adapters/flutter.js.map +1 -0
- package/dist/src/generators/migrate/adapters/index.d.ts +34 -0
- package/dist/src/generators/migrate/adapters/index.js +136 -0
- package/dist/src/generators/migrate/adapters/index.js.map +1 -0
- package/dist/src/generators/migrate/adapters/ionic.d.ts +17 -0
- package/dist/src/generators/migrate/adapters/ionic.js +137 -0
- package/dist/src/generators/migrate/adapters/ionic.js.map +1 -0
- package/dist/src/generators/migrate/adapters/npm-workspaces.d.ts +23 -0
- package/dist/src/generators/migrate/adapters/npm-workspaces.js +734 -0
- package/dist/src/generators/migrate/adapters/npm-workspaces.js.map +1 -0
- package/dist/src/generators/migrate/adapters/nx-workspace.d.ts +47 -0
- package/dist/src/generators/migrate/adapters/nx-workspace.js +1037 -0
- package/dist/src/generators/migrate/adapters/nx-workspace.js.map +1 -0
- package/dist/src/generators/migrate/adapters/scaffold.d.ts +2 -0
- package/dist/src/generators/migrate/adapters/scaffold.js +200 -0
- package/dist/src/generators/migrate/adapters/scaffold.js.map +1 -0
- package/dist/src/generators/migrate/adapters/types.d.ts +184 -0
- package/dist/src/generators/migrate/adapters/types.js +63 -0
- package/dist/src/generators/migrate/adapters/types.js.map +1 -0
- package/dist/src/generators/migrate/angular-code-scan.d.ts +6 -0
- package/dist/src/generators/migrate/angular-code-scan.js +150 -0
- package/dist/src/generators/migrate/angular-code-scan.js.map +1 -0
- package/dist/src/generators/migrate/angular-config-files.d.ts +49 -0
- package/dist/src/generators/migrate/angular-config-files.js +158 -0
- package/dist/src/generators/migrate/angular-config-files.js.map +1 -0
- package/dist/src/generators/migrate/angular-project-json.d.ts +73 -0
- package/dist/src/generators/migrate/angular-project-json.js +352 -0
- package/dist/src/generators/migrate/angular-project-json.js.map +1 -0
- package/dist/src/generators/migrate/angular-workspace/aliases.d.ts +30 -0
- package/dist/src/generators/migrate/angular-workspace/aliases.js +73 -0
- package/dist/src/generators/migrate/angular-workspace/aliases.js.map +1 -0
- package/dist/src/generators/migrate/angular-workspace/eslint.d.ts +8 -0
- package/dist/src/generators/migrate/angular-workspace/eslint.js +38 -0
- package/dist/src/generators/migrate/angular-workspace/eslint.js.map +1 -0
- package/dist/src/generators/migrate/angular-workspace/ng-package.d.ts +4 -0
- package/dist/src/generators/migrate/angular-workspace/ng-package.js +16 -0
- package/dist/src/generators/migrate/angular-workspace/ng-package.js.map +1 -0
- package/dist/src/generators/migrate/angular-workspace/source.d.ts +15 -0
- package/dist/src/generators/migrate/angular-workspace/source.js +108 -0
- package/dist/src/generators/migrate/angular-workspace/source.js.map +1 -0
- package/dist/src/generators/migrate/angular17.d.ts +45 -0
- package/dist/src/generators/migrate/angular17.js +495 -0
- package/dist/src/generators/migrate/angular17.js.map +1 -0
- package/dist/src/generators/migrate/batch.d.ts +29 -0
- package/dist/src/generators/migrate/batch.js +211 -0
- package/dist/src/generators/migrate/batch.js.map +1 -0
- package/dist/src/generators/migrate/copy.d.ts +60 -0
- package/dist/src/generators/migrate/copy.js +224 -0
- package/dist/src/generators/migrate/copy.js.map +1 -0
- package/dist/src/generators/migrate/dependencies.d.ts +38 -0
- package/dist/src/generators/migrate/dependencies.js +196 -0
- package/dist/src/generators/migrate/dependencies.js.map +1 -0
- package/dist/src/generators/migrate/generator.d.ts +9 -0
- package/dist/src/generators/migrate/generator.js +347 -0
- package/dist/src/generators/migrate/generator.js.map +1 -0
- package/dist/src/generators/migrate/imports/rewrite.d.ts +46 -0
- package/dist/src/generators/migrate/imports/rewrite.js +382 -0
- package/dist/src/generators/migrate/imports/rewrite.js.map +1 -0
- package/dist/src/generators/migrate/ionic/capacitor-config.d.ts +24 -0
- package/dist/src/generators/migrate/ionic/capacitor-config.js +113 -0
- package/dist/src/generators/migrate/ionic/capacitor-config.js.map +1 -0
- package/dist/src/generators/migrate/ionic/packages.d.ts +34 -0
- package/dist/src/generators/migrate/ionic/packages.js +92 -0
- package/dist/src/generators/migrate/ionic/packages.js.map +1 -0
- package/dist/src/generators/migrate/ionic/shape.d.ts +32 -0
- package/dist/src/generators/migrate/ionic/shape.js +221 -0
- package/dist/src/generators/migrate/ionic/shape.js.map +1 -0
- package/dist/src/generators/migrate/ionic/skip.d.ts +3 -0
- package/dist/src/generators/migrate/ionic/skip.js +25 -0
- package/dist/src/generators/migrate/ionic/skip.js.map +1 -0
- package/dist/src/generators/migrate/names.d.ts +3 -0
- package/dist/src/generators/migrate/names.js +21 -0
- package/dist/src/generators/migrate/names.js.map +1 -0
- package/dist/src/generators/migrate/npm-deps.d.ts +28 -0
- package/dist/src/generators/migrate/npm-deps.js +63 -0
- package/dist/src/generators/migrate/npm-deps.js.map +1 -0
- package/dist/src/generators/migrate/npm-workspaces/pnpm-yaml.d.ts +10 -0
- package/dist/src/generators/migrate/npm-workspaces/pnpm-yaml.js +246 -0
- package/dist/src/generators/migrate/npm-workspaces/pnpm-yaml.js.map +1 -0
- package/dist/src/generators/migrate/npm-workspaces/source.d.ts +46 -0
- package/dist/src/generators/migrate/npm-workspaces/source.js +253 -0
- package/dist/src/generators/migrate/npm-workspaces/source.js.map +1 -0
- package/dist/src/generators/migrate/nx/build-scripts.d.ts +22 -0
- package/dist/src/generators/migrate/nx/build-scripts.js +147 -0
- package/dist/src/generators/migrate/nx/build-scripts.js.map +1 -0
- package/dist/src/generators/migrate/nx/detect.d.ts +3 -0
- package/dist/src/generators/migrate/nx/detect.js +43 -0
- package/dist/src/generators/migrate/nx/detect.js.map +1 -0
- package/dist/src/generators/migrate/nx/env-encryption.d.ts +35 -0
- package/dist/src/generators/migrate/nx/env-encryption.js +423 -0
- package/dist/src/generators/migrate/nx/env-encryption.js.map +1 -0
- package/dist/src/generators/migrate/nx/rewrite.d.ts +27 -0
- package/dist/src/generators/migrate/nx/rewrite.js +223 -0
- package/dist/src/generators/migrate/nx/rewrite.js.map +1 -0
- package/dist/src/generators/migrate/nx/selection.d.ts +25 -0
- package/dist/src/generators/migrate/nx/selection.js +173 -0
- package/dist/src/generators/migrate/nx/selection.js.map +1 -0
- package/dist/src/generators/migrate/nx/shared-folders.d.ts +58 -0
- package/dist/src/generators/migrate/nx/shared-folders.js +239 -0
- package/dist/src/generators/migrate/nx/shared-folders.js.map +1 -0
- package/dist/src/generators/migrate/nx/workspace-source.d.ts +58 -0
- package/dist/src/generators/migrate/nx/workspace-source.js +275 -0
- package/dist/src/generators/migrate/nx/workspace-source.js.map +1 -0
- package/dist/src/generators/migrate/pnpm.d.ts +42 -0
- package/dist/src/generators/migrate/pnpm.js +132 -0
- package/dist/src/generators/migrate/pnpm.js.map +1 -0
- package/dist/src/generators/migrate/report.d.ts +21 -0
- package/dist/src/generators/migrate/report.js +243 -0
- package/dist/src/generators/migrate/report.js.map +1 -0
- package/dist/src/generators/migrate/rollback/manifest.d.ts +84 -0
- package/dist/src/generators/migrate/rollback/manifest.js +162 -0
- package/dist/src/generators/migrate/rollback/manifest.js.map +1 -0
- package/dist/src/generators/migrate/rollback/recording-tree.d.ts +19 -0
- package/dist/src/generators/migrate/rollback/recording-tree.js +87 -0
- package/dist/src/generators/migrate/rollback/recording-tree.js.map +1 -0
- package/dist/src/generators/migrate/rollback/rollback.d.ts +29 -0
- package/dist/src/generators/migrate/rollback/rollback.js +271 -0
- package/dist/src/generators/migrate/rollback/rollback.js.map +1 -0
- package/dist/src/generators/migrate/schema.d.ts +41 -0
- package/dist/src/generators/migrate/schema.json +85 -0
- package/dist/src/generators/migrate/source.d.ts +26 -0
- package/dist/src/generators/migrate/source.js +70 -0
- package/dist/src/generators/migrate/source.js.map +1 -0
- package/dist/src/generators/preset/files/root/.editorconfig__template__ +15 -0
- package/dist/src/generators/preset/files/root/.eslintignore__template__ +2 -0
- package/dist/src/generators/preset/files/root/.eslintrc.json__template__ +38 -0
- package/dist/src/generators/preset/files/root/.gitattributes__template__ +12 -0
- package/dist/src/generators/preset/files/root/.gitignore__template__ +9 -0
- package/dist/src/generators/preset/files/root/.husky/commit-msg__template__ +1 -0
- package/dist/src/generators/preset/files/root/.husky/pre-commit__template__ +1 -0
- package/dist/src/generators/preset/files/root/.npmrc__template__ +4 -0
- package/dist/src/generators/preset/files/root/.nvmrc__template__ +1 -0
- package/dist/src/generators/preset/files/root/.prettierignore__template__ +6 -0
- package/dist/src/generators/preset/files/root/.prettierrc__template__ +7 -0
- package/dist/src/generators/preset/files/root/commitlint.config.js__template__ +6 -0
- package/dist/src/generators/preset/files/root/nx.json__template__ +30 -0
- package/dist/src/generators/preset/files/root/package.json__template__ +34 -0
- package/dist/src/generators/preset/files/root/tools/config/sri-cdn-allowlist.json__template__ +1 -0
- package/dist/src/generators/preset/files/root/tsconfig.base.json__template__ +18 -0
- package/dist/src/generators/preset/generator.d.ts +11 -0
- package/dist/src/generators/preset/generator.js +91 -0
- package/dist/src/generators/preset/generator.js.map +1 -0
- package/dist/src/generators/preset/schema.d.ts +20 -0
- package/dist/src/generators/preset/schema.json +86 -0
- package/dist/src/generators/shared-libs/generator.d.ts +4 -0
- package/dist/src/generators/shared-libs/generator.js +60 -0
- package/dist/src/generators/shared-libs/generator.js.map +1 -0
- package/dist/src/generators/shared-libs/schema.d.ts +6 -0
- package/dist/src/generators/shared-libs/schema.json +21 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/csp/allowlist.d.ts +64 -0
- package/dist/src/lib/csp/allowlist.js +126 -0
- package/dist/src/lib/csp/allowlist.js.map +1 -0
- package/dist/src/lib/csp/import.d.ts +52 -0
- package/dist/src/lib/csp/import.js +291 -0
- package/dist/src/lib/csp/import.js.map +1 -0
- package/dist/src/lib/csp/render.d.ts +19 -0
- package/dist/src/lib/csp/render.js +116 -0
- package/dist/src/lib/csp/render.js.map +1 -0
- package/dist/src/lib/env/derive.d.ts +38 -0
- package/dist/src/lib/env/derive.js +115 -0
- package/dist/src/lib/env/derive.js.map +1 -0
- package/dist/src/lib/env-encryption/backup.d.ts +40 -0
- package/dist/src/lib/env-encryption/backup.js +234 -0
- package/dist/src/lib/env-encryption/backup.js.map +1 -0
- package/dist/src/lib/env-encryption/config.d.ts +50 -0
- package/dist/src/lib/env-encryption/config.js +173 -0
- package/dist/src/lib/env-encryption/config.js.map +1 -0
- package/dist/src/lib/env-encryption/domains.d.ts +9 -0
- package/dist/src/lib/env-encryption/domains.js +52 -0
- package/dist/src/lib/env-encryption/domains.js.map +1 -0
- package/dist/src/lib/env-encryption/encrypt.d.ts +48 -0
- package/dist/src/lib/env-encryption/encrypt.js +407 -0
- package/dist/src/lib/env-encryption/encrypt.js.map +1 -0
- package/dist/src/lib/env-encryption/env-file.d.ts +72 -0
- package/dist/src/lib/env-encryption/env-file.js +395 -0
- package/dist/src/lib/env-encryption/env-file.js.map +1 -0
- package/dist/src/lib/env-encryption/gcm.d.ts +51 -0
- package/dist/src/lib/env-encryption/gcm.js +76 -0
- package/dist/src/lib/env-encryption/gcm.js.map +1 -0
- package/dist/src/lib/env-encryption/key-material.d.ts +53 -0
- package/dist/src/lib/env-encryption/key-material.js +148 -0
- package/dist/src/lib/env-encryption/key-material.js.map +1 -0
- package/dist/src/lib/env-encryption/placeholders.d.ts +15 -0
- package/dist/src/lib/env-encryption/placeholders.js +93 -0
- package/dist/src/lib/env-encryption/placeholders.js.map +1 -0
- package/dist/src/lib/env-encryption/prepare.d.ts +43 -0
- package/dist/src/lib/env-encryption/prepare.js +245 -0
- package/dist/src/lib/env-encryption/prepare.js.map +1 -0
- package/dist/src/lib/env-encryption/sensitive.d.ts +2 -0
- package/dist/src/lib/env-encryption/sensitive.js +180 -0
- package/dist/src/lib/env-encryption/sensitive.js.map +1 -0
- package/dist/src/lib/env-encryption/stamp.d.ts +2 -0
- package/dist/src/lib/env-encryption/stamp.js +52 -0
- package/dist/src/lib/env-encryption/stamp.js.map +1 -0
- package/dist/src/lib/env-encryption/switch-gcm.d.ts +43 -0
- package/dist/src/lib/env-encryption/switch-gcm.js +371 -0
- package/dist/src/lib/env-encryption/switch-gcm.js.map +1 -0
- package/dist/src/lib/env-encryption/workspace.d.ts +10 -0
- package/dist/src/lib/env-encryption/workspace.js +48 -0
- package/dist/src/lib/env-encryption/workspace.js.map +1 -0
- package/dist/src/lib/hardening/files.d.ts +17 -0
- package/dist/src/lib/hardening/files.js +43 -0
- package/dist/src/lib/hardening/files.js.map +1 -0
- package/dist/src/lib/hardening/integrity.d.ts +24 -0
- package/dist/src/lib/hardening/integrity.js +112 -0
- package/dist/src/lib/hardening/integrity.js.map +1 -0
- package/dist/src/lib/hardening/leak-check.d.ts +15 -0
- package/dist/src/lib/hardening/leak-check.js +100 -0
- package/dist/src/lib/hardening/leak-check.js.map +1 -0
- package/dist/src/lib/hardening/ngsw.d.ts +7 -0
- package/dist/src/lib/hardening/ngsw.js +55 -0
- package/dist/src/lib/hardening/ngsw.js.map +1 -0
- package/dist/src/lib/hardening/obfuscate.d.ts +36 -0
- package/dist/src/lib/hardening/obfuscate.js +153 -0
- package/dist/src/lib/hardening/obfuscate.js.map +1 -0
- package/dist/src/lib/hardening/options.d.ts +36 -0
- package/dist/src/lib/hardening/options.js +143 -0
- package/dist/src/lib/hardening/options.js.map +1 -0
- package/dist/src/lib/hardening/source-maps.d.ts +7 -0
- package/dist/src/lib/hardening/source-maps.js +37 -0
- package/dist/src/lib/hardening/source-maps.js.map +1 -0
- package/dist/src/lib/hardening/strip.d.ts +55 -0
- package/dist/src/lib/hardening/strip.js +178 -0
- package/dist/src/lib/hardening/strip.js.map +1 -0
- package/dist/src/lib/helpers/encrypt-env.d.ts +13 -0
- package/dist/src/lib/helpers/encrypt-env.js +33 -0
- package/dist/src/lib/helpers/encrypt-env.js.map +1 -0
- package/dist/src/lib/helpers/inject-meta.d.ts +14 -0
- package/dist/src/lib/helpers/inject-meta.js +49 -0
- package/dist/src/lib/helpers/inject-meta.js.map +1 -0
- package/dist/src/lib/helpers/inject-nonce.d.ts +7 -0
- package/dist/src/lib/helpers/inject-nonce.js +59 -0
- package/dist/src/lib/helpers/inject-nonce.js.map +1 -0
- package/dist/src/lib/helpers/inject-sri.d.ts +11 -0
- package/dist/src/lib/helpers/inject-sri.js +92 -0
- package/dist/src/lib/helpers/inject-sri.js.map +1 -0
- package/dist/src/lib/helpers/strip-exif.d.ts +9 -0
- package/dist/src/lib/helpers/strip-exif.js +52 -0
- package/dist/src/lib/helpers/strip-exif.js.map +1 -0
- package/dist/src/lib/release/plan.d.ts +45 -0
- package/dist/src/lib/release/plan.js +76 -0
- package/dist/src/lib/release/plan.js.map +1 -0
- package/dist/src/lib/release/run.d.ts +46 -0
- package/dist/src/lib/release/run.js +160 -0
- package/dist/src/lib/release/run.js.map +1 -0
- package/dist/src/lib/utils/angular-deps.d.ts +22 -0
- package/dist/src/lib/utils/angular-deps.js +108 -0
- package/dist/src/lib/utils/angular-deps.js.map +1 -0
- package/dist/src/lib/utils/angular-project.d.ts +52 -0
- package/dist/src/lib/utils/angular-project.js +168 -0
- package/dist/src/lib/utils/angular-project.js.map +1 -0
- package/dist/src/lib/utils/app-dir.d.ts +17 -0
- package/dist/src/lib/utils/app-dir.js +52 -0
- package/dist/src/lib/utils/app-dir.js.map +1 -0
- package/dist/src/lib/utils/base-href.d.ts +26 -0
- package/dist/src/lib/utils/base-href.js +60 -0
- package/dist/src/lib/utils/base-href.js.map +1 -0
- package/dist/src/lib/utils/ci-resolve.d.ts +10 -0
- package/dist/src/lib/utils/ci-resolve.js +50 -0
- package/dist/src/lib/utils/ci-resolve.js.map +1 -0
- package/dist/src/lib/utils/csp-nonce.d.ts +34 -0
- package/dist/src/lib/utils/csp-nonce.js +142 -0
- package/dist/src/lib/utils/csp-nonce.js.map +1 -0
- package/dist/src/lib/utils/dependencies.d.ts +25 -0
- package/dist/src/lib/utils/dependencies.js +71 -0
- package/dist/src/lib/utils/dependencies.js.map +1 -0
- package/dist/src/lib/utils/devkit-deps.d.ts +19 -0
- package/dist/src/lib/utils/devkit-deps.js +34 -0
- package/dist/src/lib/utils/devkit-deps.js.map +1 -0
- package/dist/src/lib/utils/env-files.d.ts +18 -0
- package/dist/src/lib/utils/env-files.js +41 -0
- package/dist/src/lib/utils/env-files.js.map +1 -0
- package/dist/src/lib/utils/filesystem.d.ts +7 -0
- package/dist/src/lib/utils/filesystem.js +20 -0
- package/dist/src/lib/utils/filesystem.js.map +1 -0
- package/dist/src/lib/utils/flutter-web.d.ts +7 -0
- package/dist/src/lib/utils/flutter-web.js +56 -0
- package/dist/src/lib/utils/flutter-web.js.map +1 -0
- package/dist/src/lib/utils/knip.d.ts +16 -0
- package/dist/src/lib/utils/knip.js +71 -0
- package/dist/src/lib/utils/knip.js.map +1 -0
- package/dist/src/lib/utils/lint-staged.d.ts +5 -0
- package/dist/src/lib/utils/lint-staged.js +34 -0
- package/dist/src/lib/utils/lint-staged.js.map +1 -0
- package/dist/src/lib/utils/llm-block.d.ts +88 -0
- package/dist/src/lib/utils/llm-block.js +457 -0
- package/dist/src/lib/utils/llm-block.js.map +1 -0
- package/dist/src/lib/utils/node-engine.d.ts +9 -0
- package/dist/src/lib/utils/node-engine.js +63 -0
- package/dist/src/lib/utils/node-engine.js.map +1 -0
- package/dist/src/lib/utils/npm-scripts.d.ts +7 -0
- package/dist/src/lib/utils/npm-scripts.js +28 -0
- package/dist/src/lib/utils/npm-scripts.js.map +1 -0
- package/dist/src/lib/utils/nx-targets.d.ts +3 -0
- package/dist/src/lib/utils/nx-targets.js +25 -0
- package/dist/src/lib/utils/nx-targets.js.map +1 -0
- package/dist/src/lib/utils/project-json-files.d.ts +23 -0
- package/dist/src/lib/utils/project-json-files.js +73 -0
- package/dist/src/lib/utils/project-json-files.js.map +1 -0
- package/dist/src/lib/utils/quality.d.ts +71 -0
- package/dist/src/lib/utils/quality.js +295 -0
- package/dist/src/lib/utils/quality.js.map +1 -0
- package/dist/src/lib/utils/serve-port.d.ts +28 -0
- package/dist/src/lib/utils/serve-port.js +73 -0
- package/dist/src/lib/utils/serve-port.js.map +1 -0
- package/dist/src/lib/utils/shared-libs.d.ts +37 -0
- package/dist/src/lib/utils/shared-libs.js +152 -0
- package/dist/src/lib/utils/shared-libs.js.map +1 -0
- package/dist/src/lib/utils/ts-paths.d.ts +3 -0
- package/dist/src/lib/utils/ts-paths.js +31 -0
- package/dist/src/lib/utils/ts-paths.js.map +1 -0
- package/dist/src/lib/utils/workspace.d.ts +3 -0
- package/dist/src/lib/utils/workspace.js +15 -0
- package/dist/src/lib/utils/workspace.js.map +1 -0
- package/dist/src/migrate-sdk.d.ts +31 -0
- package/dist/src/migrate-sdk.js +35 -0
- package/dist/src/migrate-sdk.js.map +1 -0
- package/dist/src/migrations/add-csp-nonce-import/add-csp-nonce-import.d.ts +2 -0
- package/dist/src/migrations/add-csp-nonce-import/add-csp-nonce-import.js +40 -0
- package/dist/src/migrations/add-csp-nonce-import/add-csp-nonce-import.js.map +1 -0
- package/dist/src/migrations/add-executor-peers/add-executor-peers.d.ts +6 -0
- package/dist/src/migrations/add-executor-peers/add-executor-peers.js +21 -0
- package/dist/src/migrations/add-executor-peers/add-executor-peers.js.map +1 -0
- package/dist/src/migrations/add-lib-build-dependencies/add-lib-build-dependencies.d.ts +7 -0
- package/dist/src/migrations/add-lib-build-dependencies/add-lib-build-dependencies.js +47 -0
- package/dist/src/migrations/add-lib-build-dependencies/add-lib-build-dependencies.js.map +1 -0
- package/dist/src/migrations/add-lint-dependencies/add-lint-dependencies.d.ts +6 -0
- package/dist/src/migrations/add-lint-dependencies/add-lint-dependencies.js +27 -0
- package/dist/src/migrations/add-lint-dependencies/add-lint-dependencies.js.map +1 -0
- package/dist/src/migrations/add-lint-staged-config/add-lint-staged-config.d.ts +7 -0
- package/dist/src/migrations/add-lint-staged-config/add-lint-staged-config.js +22 -0
- package/dist/src/migrations/add-lint-staged-config/add-lint-staged-config.js.map +1 -0
- package/dist/src/migrations/angular-release-target/angular-release-target.d.ts +3 -0
- package/dist/src/migrations/angular-release-target/angular-release-target.js +80 -0
- package/dist/src/migrations/angular-release-target/angular-release-target.js.map +1 -0
- package/dist/src/migrations/app-clean-and-port/app-clean-and-port.d.ts +7 -0
- package/dist/src/migrations/app-clean-and-port/app-clean-and-port.js +89 -0
- package/dist/src/migrations/app-clean-and-port/app-clean-and-port.js.map +1 -0
- package/dist/src/migrations/env-encryption-config/env-encryption-config.d.ts +7 -0
- package/dist/src/migrations/env-encryption-config/env-encryption-config.js +42 -0
- package/dist/src/migrations/env-encryption-config/env-encryption-config.js.map +1 -0
- package/dist/src/migrations/env-encryption-key-sources/env-encryption-key-sources.d.ts +3 -0
- package/dist/src/migrations/env-encryption-key-sources/env-encryption-key-sources.js +15 -0
- package/dist/src/migrations/env-encryption-key-sources/env-encryption-key-sources.js.map +1 -0
- package/dist/src/migrations/fix-lint-script/fix-lint-script.d.ts +7 -0
- package/dist/src/migrations/fix-lint-script/fix-lint-script.js +27 -0
- package/dist/src/migrations/fix-lint-script/fix-lint-script.js.map +1 -0
- package/dist/src/migrations/flutter-web-platform/flutter-web-platform.d.ts +8 -0
- package/dist/src/migrations/flutter-web-platform/flutter-web-platform.js +35 -0
- package/dist/src/migrations/flutter-web-platform/flutter-web-platform.js.map +1 -0
- package/dist/src/migrations/plugin-repo-dev/plugin-repo-dev.d.ts +9 -0
- package/dist/src/migrations/plugin-repo-dev/plugin-repo-dev.js +42 -0
- package/dist/src/migrations/plugin-repo-dev/plugin-repo-dev.js.map +1 -0
- package/dist/src/migrations/prepush-audit-warn-only/prepush-audit-warn-only.d.ts +8 -0
- package/dist/src/migrations/prepush-audit-warn-only/prepush-audit-warn-only.js +30 -0
- package/dist/src/migrations/prepush-audit-warn-only/prepush-audit-warn-only.js.map +1 -0
- package/dist/src/migrations/quality-checks/quality-checks.d.ts +7 -0
- package/dist/src/migrations/quality-checks/quality-checks.js +46 -0
- package/dist/src/migrations/quality-checks/quality-checks.js.map +1 -0
- package/dist/src/migrations/release-hardening/release-hardening.d.ts +8 -0
- package/dist/src/migrations/release-hardening/release-hardening.js +98 -0
- package/dist/src/migrations/release-hardening/release-hardening.js.map +1 -0
- package/dist/src/migrations/sharp-security-update/sharp-security-update.d.ts +10 -0
- package/dist/src/migrations/sharp-security-update/sharp-security-update.js +40 -0
- package/dist/src/migrations/sharp-security-update/sharp-security-update.js.map +1 -0
- package/migrate/package.json +5 -0
- package/package.json +120 -4
- package/runtime/csp-nonce.js +109 -0
- package/runtime/env-secret.d.ts +63 -0
- package/runtime/env-secret.mjs +698 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A small scanner for Angular environment files (`export const environment = { … };`): the
|
|
4
|
+
* top-level fields of the first object literal assigned to `environment`, and every quoted string
|
|
5
|
+
* in the file. Comments, template literals and regular expression literals are skipped, never
|
|
6
|
+
* rewritten.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.nextCode = exports.scanStructure = exports.closingBracket = exports.isCodeAt = exports.unescapeString = exports.environmentFields = exports.appendEnvironmentField = exports.scanEnvironment = exports.environmentObjectStart = exports.quotedStrings = exports.stripComments = void 0;
|
|
10
|
+
/** Characters after which a `/` starts a regular expression literal rather than a division. */
|
|
11
|
+
const REGEX_PRECEDERS = new Set(['', '(', ',', '=', ':', '[', '!', '&', '|', '?', '{', '}', ';']);
|
|
12
|
+
function previousCodeChar(text, i) {
|
|
13
|
+
let j = i - 1;
|
|
14
|
+
while (j >= 0 && /\s/.test(text[j]))
|
|
15
|
+
j--;
|
|
16
|
+
return j >= 0 ? text[j] : '';
|
|
17
|
+
}
|
|
18
|
+
/** Index after a regex literal starting at `i` (the opening `/`). */
|
|
19
|
+
function endOfRegex(text, i) {
|
|
20
|
+
let inClass = false;
|
|
21
|
+
for (let j = i + 1; j < text.length; j++) {
|
|
22
|
+
const c = text[j];
|
|
23
|
+
if (c === '\\') {
|
|
24
|
+
j++;
|
|
25
|
+
}
|
|
26
|
+
else if (c === '[')
|
|
27
|
+
inClass = true;
|
|
28
|
+
else if (c === ']')
|
|
29
|
+
inClass = false;
|
|
30
|
+
else if (c === '/' && !inClass) {
|
|
31
|
+
let k = j + 1;
|
|
32
|
+
while (k < text.length && /[a-z]/i.test(text[k]))
|
|
33
|
+
k++;
|
|
34
|
+
return k;
|
|
35
|
+
}
|
|
36
|
+
else if (c === '\n')
|
|
37
|
+
return j;
|
|
38
|
+
}
|
|
39
|
+
return text.length;
|
|
40
|
+
}
|
|
41
|
+
/** Index after a comment, string or regex literal starting at `i`, or -1 when `i` starts none. */
|
|
42
|
+
function skipNonCode(text, i) {
|
|
43
|
+
const c = text[i];
|
|
44
|
+
const n = text[i + 1];
|
|
45
|
+
if (c === '/' && n === '/') {
|
|
46
|
+
const e = text.indexOf('\n', i);
|
|
47
|
+
return e < 0 ? text.length : e;
|
|
48
|
+
}
|
|
49
|
+
if (c === '/' && n === '*') {
|
|
50
|
+
const e = text.indexOf('*/', i + 2);
|
|
51
|
+
return e < 0 ? text.length : e + 2;
|
|
52
|
+
}
|
|
53
|
+
if (c === '/' && REGEX_PRECEDERS.has(previousCodeChar(text, i)))
|
|
54
|
+
return endOfRegex(text, i);
|
|
55
|
+
if (c === "'" || c === '"' || c === '`')
|
|
56
|
+
return endOfString(text, i);
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
/** Index after the string literal (or template literal) opening at `i`. */
|
|
60
|
+
function endOfString(text, i) {
|
|
61
|
+
const q = text[i];
|
|
62
|
+
let depth = 0;
|
|
63
|
+
for (let j = i + 1; j < text.length; j++) {
|
|
64
|
+
const c = text[j];
|
|
65
|
+
if (c === '\\') {
|
|
66
|
+
j++;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (q === '`') {
|
|
70
|
+
if (depth === 0 && c === '`')
|
|
71
|
+
return j + 1;
|
|
72
|
+
if (c === '$' && text[j + 1] === '{') {
|
|
73
|
+
depth++;
|
|
74
|
+
j++;
|
|
75
|
+
}
|
|
76
|
+
else if (c === '}' && depth > 0)
|
|
77
|
+
depth--;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (c === q || c === '\n')
|
|
81
|
+
return j + 1;
|
|
82
|
+
}
|
|
83
|
+
return text.length;
|
|
84
|
+
}
|
|
85
|
+
/** `text` with comments removed (strings and regexes kept). */
|
|
86
|
+
function stripComments(text) {
|
|
87
|
+
let out = '';
|
|
88
|
+
let i = 0;
|
|
89
|
+
while (i < text.length) {
|
|
90
|
+
const s = skipNonCode(text, i);
|
|
91
|
+
if (s < 0) {
|
|
92
|
+
out += text[i++];
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const isComment = text[i] === '/' && (text[i + 1] === '/' || text[i + 1] === '*');
|
|
96
|
+
out += isComment ? ' ' : text.slice(i, s);
|
|
97
|
+
i = s;
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
exports.stripComments = stripComments;
|
|
102
|
+
/** Every single- or double-quoted string outside comments (template literals excluded). */
|
|
103
|
+
function quotedStrings(text) {
|
|
104
|
+
const out = [];
|
|
105
|
+
let i = 0;
|
|
106
|
+
while (i < text.length) {
|
|
107
|
+
const c = text[i];
|
|
108
|
+
const skip = skipNonCode(text, i);
|
|
109
|
+
if (skip < 0) {
|
|
110
|
+
i++;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (c === "'" || c === '"') {
|
|
114
|
+
out.push({ start: i, end: skip, quote: c, content: text.slice(i + 1, skip - 1) });
|
|
115
|
+
}
|
|
116
|
+
i = skip;
|
|
117
|
+
}
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
120
|
+
exports.quotedStrings = quotedStrings;
|
|
121
|
+
/** Offset of the `{` of the object assigned to `environment`, or -1. */
|
|
122
|
+
function environmentObjectStart(text) {
|
|
123
|
+
const re = /\benvironment\b\s*(?::[^=]*)?=\s*\{/g;
|
|
124
|
+
let m;
|
|
125
|
+
while ((m = re.exec(text))) {
|
|
126
|
+
// Skip matches inside comments or strings.
|
|
127
|
+
let i = 0;
|
|
128
|
+
let inside = false;
|
|
129
|
+
while (i < m.index) {
|
|
130
|
+
const s = skipNonCode(text, i);
|
|
131
|
+
if (s < 0) {
|
|
132
|
+
i++;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (s > m.index) {
|
|
136
|
+
inside = true;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
i = s;
|
|
140
|
+
}
|
|
141
|
+
if (!inside)
|
|
142
|
+
return m.index + m[0].length - 1;
|
|
143
|
+
}
|
|
144
|
+
return -1;
|
|
145
|
+
}
|
|
146
|
+
exports.environmentObjectStart = environmentObjectStart;
|
|
147
|
+
const OTHER_LITERAL = /^(true|false|null|undefined|-?(0[xXbBoO][\da-fA-F_]+|\d[\d_.eE+-]*)|\{[\s\S]*\}|\[[\s\S]*\])$/;
|
|
148
|
+
/** What may follow a value: a type assertion (`as string`, `as const`, `satisfies Foo`). */
|
|
149
|
+
const TYPE_SUFFIX = /^(as|satisfies)\s+[\w$.<>[\]|&,\s'"]+$/;
|
|
150
|
+
/** Index of the first character of `text` that is not whitespace or inside a comment. */
|
|
151
|
+
function firstCodeIndex(text) {
|
|
152
|
+
let i = 0;
|
|
153
|
+
while (i < text.length) {
|
|
154
|
+
if (/\s/.test(text[i])) {
|
|
155
|
+
i++;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (text[i] === '/' && (text[i + 1] === '/' || text[i + 1] === '*')) {
|
|
159
|
+
i = skipNonCode(text, i);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
return i;
|
|
163
|
+
}
|
|
164
|
+
return text.length;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Kind of a value. For strings, `litStart`/`litLen` locate the string literal inside the value
|
|
168
|
+
* (comments before it and a type assertion or comment after it are not part of it).
|
|
169
|
+
*/
|
|
170
|
+
function classify(value) {
|
|
171
|
+
const at = firstCodeIndex(value);
|
|
172
|
+
const q = value[at];
|
|
173
|
+
if (q === "'" || q === '"' || q === '`') {
|
|
174
|
+
const end = endOfString(value, at);
|
|
175
|
+
const literal = value.slice(at, end);
|
|
176
|
+
const closed = literal.length >= 2 && literal.endsWith(q);
|
|
177
|
+
const rest = stripComments(value.slice(end)).trim();
|
|
178
|
+
if (closed && (q !== '`' || !/\$\{/.test(literal)) && (rest === '' || TYPE_SUFFIX.test(rest))) {
|
|
179
|
+
return { kind: 'string', text: literal.slice(1, -1), litStart: at, litLen: literal.length };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const bare = stripComments(value).trim();
|
|
183
|
+
const noSuffix = bare.replace(/\s+(as|satisfies)\s+[\w$.<>[\]|&,\s]+$/, '').trim();
|
|
184
|
+
return { kind: OTHER_LITERAL.test(noSuffix) ? 'other-literal' : 'expression' };
|
|
185
|
+
}
|
|
186
|
+
/** The `environment` object: whether it exists, its top-level fields and unkeyed entries. */
|
|
187
|
+
function scanEnvironment(text) {
|
|
188
|
+
const open = environmentObjectStart(text);
|
|
189
|
+
if (open < 0)
|
|
190
|
+
return { found: false, fields: [], unkeyed: [] };
|
|
191
|
+
const fields = [];
|
|
192
|
+
const unkeyed = [];
|
|
193
|
+
let depth = 0;
|
|
194
|
+
let key;
|
|
195
|
+
let valueStart = -1;
|
|
196
|
+
let entryStart = open + 1;
|
|
197
|
+
const finish = (end) => {
|
|
198
|
+
if (key !== undefined && valueStart >= 0) {
|
|
199
|
+
const raw = text.slice(valueStart, end);
|
|
200
|
+
const lead = raw.length - raw.trimStart().length;
|
|
201
|
+
const value = raw.trim();
|
|
202
|
+
const c = classify(value);
|
|
203
|
+
const start = valueStart + lead + (c.litStart ?? 0);
|
|
204
|
+
fields.push({
|
|
205
|
+
key,
|
|
206
|
+
value,
|
|
207
|
+
kind: c.kind,
|
|
208
|
+
text: c.text,
|
|
209
|
+
start,
|
|
210
|
+
end: c.litLen !== undefined ? start + c.litLen : start + value.length,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const entry = stripComments(text.slice(entryStart, end)).trim();
|
|
215
|
+
if (entry)
|
|
216
|
+
unkeyed.push(entry.slice(0, 60));
|
|
217
|
+
}
|
|
218
|
+
key = undefined;
|
|
219
|
+
valueStart = -1;
|
|
220
|
+
};
|
|
221
|
+
let i = open;
|
|
222
|
+
while (i < text.length) {
|
|
223
|
+
const skip = skipNonCode(text, i);
|
|
224
|
+
if (skip >= 0) {
|
|
225
|
+
i = skip;
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const c = text[i];
|
|
229
|
+
if (c === '{' || c === '[' || c === '(')
|
|
230
|
+
depth++;
|
|
231
|
+
else if (c === '}' || c === ']' || c === ')') {
|
|
232
|
+
depth--;
|
|
233
|
+
if (depth === 0) {
|
|
234
|
+
finish(i);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else if (depth === 1 && c === ',') {
|
|
239
|
+
finish(i);
|
|
240
|
+
entryStart = i + 1;
|
|
241
|
+
}
|
|
242
|
+
else if (depth === 1 && c === ':' && key === undefined) {
|
|
243
|
+
const k = stripComments(text.slice(entryStart, i))
|
|
244
|
+
.trim()
|
|
245
|
+
.replace(/^(['"])(.*)\1$/, '$2');
|
|
246
|
+
if (/^[\w$-]+$/.test(k)) {
|
|
247
|
+
key = k;
|
|
248
|
+
valueStart = i + 1;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
i++;
|
|
252
|
+
}
|
|
253
|
+
return { found: true, fields, unkeyed };
|
|
254
|
+
}
|
|
255
|
+
exports.scanEnvironment = scanEnvironment;
|
|
256
|
+
/**
|
|
257
|
+
* Inserts `key: '<value>'` as the last entry of the `environment = { … }` object (value must be
|
|
258
|
+
* a quote-free token such as base64url). Throws when there is no such object.
|
|
259
|
+
*/
|
|
260
|
+
function appendEnvironmentField(text, key, value) {
|
|
261
|
+
const open = environmentObjectStart(text);
|
|
262
|
+
const close = open < 0 ? -1 : closingBracket(text, open);
|
|
263
|
+
if (close < 0) {
|
|
264
|
+
throw new Error('env encryption: aes-gcm needs `export const environment = { … }` in the env file.');
|
|
265
|
+
}
|
|
266
|
+
const body = stripComments(text.slice(open + 1, close)).trim();
|
|
267
|
+
const head = text.slice(0, close).trimEnd();
|
|
268
|
+
// A comment ends `head` (comments become spaces): start a new line so `// …` cannot swallow it.
|
|
269
|
+
const lead = stripComments(head).endsWith(' ') ? '\n' : '';
|
|
270
|
+
const sep = body === '' || body.endsWith(',') ? ' ' : ' , ';
|
|
271
|
+
return `${head}${lead}${sep}${key}: '${value}' ${text.slice(close)}`;
|
|
272
|
+
}
|
|
273
|
+
exports.appendEnvironmentField = appendEnvironmentField;
|
|
274
|
+
/** Top-level fields of the `environment` object (empty when there is none). */
|
|
275
|
+
function environmentFields(text) {
|
|
276
|
+
return scanEnvironment(text).fields;
|
|
277
|
+
}
|
|
278
|
+
exports.environmentFields = environmentFields;
|
|
279
|
+
/** The value of a JS string literal's content (escapes resolved). */
|
|
280
|
+
function unescapeString(content) {
|
|
281
|
+
return content.replace(/\\(u\{[\da-fA-F]+\}|u[\da-fA-F]{4}|x[\da-fA-F]{2}|\r\n|[\s\S])/g, (_, e) => {
|
|
282
|
+
if (e[0] === 'u' && e[1] === '{')
|
|
283
|
+
return String.fromCodePoint(parseInt(e.slice(2, -1), 16));
|
|
284
|
+
if (e[0] === 'u' || e[0] === 'x')
|
|
285
|
+
return String.fromCharCode(parseInt(e.slice(1), 16));
|
|
286
|
+
const map = {
|
|
287
|
+
n: '\n',
|
|
288
|
+
r: '\r',
|
|
289
|
+
t: '\t',
|
|
290
|
+
b: '\b',
|
|
291
|
+
f: '\f',
|
|
292
|
+
v: '\v',
|
|
293
|
+
'0': '\0',
|
|
294
|
+
'\n': '',
|
|
295
|
+
'\r\n': '',
|
|
296
|
+
};
|
|
297
|
+
return map[e] ?? e;
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
exports.unescapeString = unescapeString;
|
|
301
|
+
/** True when offset `index` of `text` is code (not inside a comment, string or regex literal). */
|
|
302
|
+
function isCodeAt(text, index) {
|
|
303
|
+
let i = 0;
|
|
304
|
+
while (i < index) {
|
|
305
|
+
const s = skipNonCode(text, i);
|
|
306
|
+
if (s < 0) {
|
|
307
|
+
i++;
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (s > index)
|
|
311
|
+
return false;
|
|
312
|
+
i = s;
|
|
313
|
+
}
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
exports.isCodeAt = isCodeAt;
|
|
317
|
+
/** Offset of the bracket closing the one at `open` (`[`, `{` or `(`), skipping non-code; -1 if none. */
|
|
318
|
+
function closingBracket(text, open) {
|
|
319
|
+
let depth = 0;
|
|
320
|
+
let i = open;
|
|
321
|
+
while (i < text.length) {
|
|
322
|
+
const s = skipNonCode(text, i);
|
|
323
|
+
if (s >= 0) {
|
|
324
|
+
i = s;
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
const c = text[i];
|
|
328
|
+
if (c === '[' || c === '{' || c === '(')
|
|
329
|
+
depth++;
|
|
330
|
+
else if (c === ']' || c === '}' || c === ')') {
|
|
331
|
+
depth--;
|
|
332
|
+
if (depth === 0)
|
|
333
|
+
return i;
|
|
334
|
+
}
|
|
335
|
+
i++;
|
|
336
|
+
}
|
|
337
|
+
return -1;
|
|
338
|
+
}
|
|
339
|
+
exports.closingBracket = closingBracket;
|
|
340
|
+
/** Strings and brackets with their nesting (one pass; comments, templates, regexes skipped). */
|
|
341
|
+
function scanStructure(text) {
|
|
342
|
+
const strings = [];
|
|
343
|
+
const brackets = new Map();
|
|
344
|
+
const stack = [];
|
|
345
|
+
const top = () => (stack.length > 0 ? stack[stack.length - 1] : -1);
|
|
346
|
+
let i = 0;
|
|
347
|
+
while (i < text.length) {
|
|
348
|
+
const c = text[i];
|
|
349
|
+
const skip = skipNonCode(text, i);
|
|
350
|
+
if (skip >= 0) {
|
|
351
|
+
if (c === "'" || c === '"') {
|
|
352
|
+
strings.push({
|
|
353
|
+
start: i,
|
|
354
|
+
end: skip,
|
|
355
|
+
quote: c,
|
|
356
|
+
content: text.slice(i + 1, skip - 1),
|
|
357
|
+
parent: top(),
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
i = skip;
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
if (c === '{' || c === '[' || c === '(') {
|
|
364
|
+
brackets.set(i, { char: c, parent: top(), close: text.length });
|
|
365
|
+
stack.push(i);
|
|
366
|
+
}
|
|
367
|
+
else if (c === '}' || c === ']' || c === ')') {
|
|
368
|
+
const open = stack.pop();
|
|
369
|
+
const b = open !== undefined ? brackets.get(open) : undefined;
|
|
370
|
+
if (b)
|
|
371
|
+
b.close = i;
|
|
372
|
+
}
|
|
373
|
+
i++;
|
|
374
|
+
}
|
|
375
|
+
return { strings, brackets };
|
|
376
|
+
}
|
|
377
|
+
exports.scanStructure = scanStructure;
|
|
378
|
+
/** The first code character at or after `index` (comments and whitespace skipped). */
|
|
379
|
+
function nextCode(text, index) {
|
|
380
|
+
let i = index;
|
|
381
|
+
while (i < text.length) {
|
|
382
|
+
if (/\s/.test(text[i])) {
|
|
383
|
+
i++;
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (text[i] === '/' && (text[i + 1] === '/' || text[i + 1] === '*')) {
|
|
387
|
+
i = skipNonCode(text, i);
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
return text.slice(i, i + 12);
|
|
391
|
+
}
|
|
392
|
+
return '';
|
|
393
|
+
}
|
|
394
|
+
exports.nextCode = nextCode;
|
|
395
|
+
//# sourceMappingURL=env-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../../../src/lib/env-encryption/env-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { KeySource } from './config';
|
|
4
|
+
/** aes-gcm values: `ENC2(<base64url iv>.<base64url ciphertext‖tag>)`. */
|
|
5
|
+
export declare const ENC2_OPEN = "ENC2(";
|
|
6
|
+
export declare const ENC2_CLOSE = ")";
|
|
7
|
+
/** Hidden env field carrying the bundle share, bundle-side factors, asset name and domain lock. */
|
|
8
|
+
export declare const PSTACK_FIELD = "__pstack";
|
|
9
|
+
export type KeySplit = 'meta-bundle' | 'meta-bundle-asset';
|
|
10
|
+
export declare const KEY_SPLITS: KeySplit[];
|
|
11
|
+
export declare const isEnc2: (v: string) => boolean;
|
|
12
|
+
export declare const b64u: (b: Buffer) => string;
|
|
13
|
+
/** XOR shares of `r`: every share alone is random; all of them XORed give `r`. */
|
|
14
|
+
export declare function xorShares(r: Buffer, count: 2 | 3): Buffer[];
|
|
15
|
+
export declare function combineShares(shares: Buffer[]): Buffer;
|
|
16
|
+
/** `<name>=<value>` lines of the selected factors, always in KEY_SOURCES order. */
|
|
17
|
+
export declare function factorText(sources: KeySource[], values: Partial<Record<KeySource, string>>): string;
|
|
18
|
+
export declare function keyInfo(envProject: string, env: string): string;
|
|
19
|
+
/** HKDF-SHA256(r ‖ factors, salt = time, info) → 32-byte AES key (same bytes as Web Crypto). */
|
|
20
|
+
export declare function deriveKey(r: Buffer, factors: string, time: string, info: string): Buffer;
|
|
21
|
+
/** AES-256-GCM, fresh 12-byte IV, AAD = the name of the property holding the value. */
|
|
22
|
+
export declare function encryptGcm(key: Buffer, plain: string, aad: string): string;
|
|
23
|
+
/** Inverse of encryptGcm (tests and tooling); throws on a malformed value or failed authentication. */
|
|
24
|
+
export declare function decryptGcm(key: Buffer, value: string, aad: string): string;
|
|
25
|
+
export interface DomainLock {
|
|
26
|
+
/** Normalised hosts (`example.com`, `*.example.com`). */
|
|
27
|
+
h: string[];
|
|
28
|
+
/** Listing `example.com` also allows `www.example.com`. */
|
|
29
|
+
w: boolean;
|
|
30
|
+
/** What a mismatch does. */
|
|
31
|
+
m: 'block' | 'warn';
|
|
32
|
+
}
|
|
33
|
+
export interface PstackField {
|
|
34
|
+
v: 2;
|
|
35
|
+
/** Env project and env: part of the HKDF info. */
|
|
36
|
+
p: string;
|
|
37
|
+
e: string;
|
|
38
|
+
/** Bundle share of the random key (base64url). */
|
|
39
|
+
b: string;
|
|
40
|
+
/** Selected key sources. */
|
|
41
|
+
s: KeySource[];
|
|
42
|
+
/** Bundle-side factor values (commit, salt, env); custom is never written. */
|
|
43
|
+
f: Partial<Record<'commit' | 'salt' | 'env', string>>;
|
|
44
|
+
/** Asset holding the third share (meta-bundle-asset). */
|
|
45
|
+
a?: string;
|
|
46
|
+
d?: DomainLock;
|
|
47
|
+
/** 1: the runtime decrypts nothing while a script on the page has no integrity attribute. */
|
|
48
|
+
ri?: 1;
|
|
49
|
+
}
|
|
50
|
+
export declare const encodePstack: (p: PstackField) => string;
|
|
51
|
+
export declare const decodePstack: (s: string) => PstackField;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodePstack = exports.encodePstack = exports.decryptGcm = exports.encryptGcm = exports.deriveKey = exports.keyInfo = exports.factorText = exports.combineShares = exports.xorShares = exports.b64u = exports.isEnc2 = exports.KEY_SPLITS = exports.PSTACK_FIELD = exports.ENC2_CLOSE = exports.ENC2_OPEN = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
/** aes-gcm values: `ENC2(<base64url iv>.<base64url ciphertext‖tag>)`. */
|
|
7
|
+
exports.ENC2_OPEN = 'ENC2(';
|
|
8
|
+
exports.ENC2_CLOSE = ')';
|
|
9
|
+
/** Hidden env field carrying the bundle share, bundle-side factors, asset name and domain lock. */
|
|
10
|
+
exports.PSTACK_FIELD = '__pstack';
|
|
11
|
+
exports.KEY_SPLITS = ['meta-bundle', 'meta-bundle-asset'];
|
|
12
|
+
const isEnc2 = (v) => v.startsWith(exports.ENC2_OPEN) && v.endsWith(exports.ENC2_CLOSE);
|
|
13
|
+
exports.isEnc2 = isEnc2;
|
|
14
|
+
const b64u = (b) => b.toString('base64url');
|
|
15
|
+
exports.b64u = b64u;
|
|
16
|
+
/** XOR shares of `r`: every share alone is random; all of them XORed give `r`. */
|
|
17
|
+
function xorShares(r, count) {
|
|
18
|
+
const shares = Array.from({ length: count - 1 }, () => (0, crypto_1.randomBytes)(r.length));
|
|
19
|
+
return [...shares, combineShares([r, ...shares])];
|
|
20
|
+
}
|
|
21
|
+
exports.xorShares = xorShares;
|
|
22
|
+
function combineShares(shares) {
|
|
23
|
+
const out = Buffer.alloc(shares[0].length);
|
|
24
|
+
if (shares.some((s) => s.length !== out.length))
|
|
25
|
+
throw new Error('env encryption: key shares differ in length.');
|
|
26
|
+
for (const s of shares)
|
|
27
|
+
for (let i = 0; i < out.length; i++)
|
|
28
|
+
out[i] ^= s[i];
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
exports.combineShares = combineShares;
|
|
32
|
+
/** `<name>=<value>` lines of the selected factors, always in KEY_SOURCES order. */
|
|
33
|
+
function factorText(sources, values) {
|
|
34
|
+
return config_1.KEY_SOURCES.filter((s) => sources.includes(s))
|
|
35
|
+
.map((s) => `${s}=${values[s] ?? ''}`)
|
|
36
|
+
.join('\n');
|
|
37
|
+
}
|
|
38
|
+
exports.factorText = factorText;
|
|
39
|
+
function keyInfo(envProject, env) {
|
|
40
|
+
if (envProject.includes('|') || env.includes('|'))
|
|
41
|
+
throw new Error(`env encryption: "|" is not allowed in the env project or env name.`);
|
|
42
|
+
return `pstack-env-v2|${envProject}|${env}`;
|
|
43
|
+
}
|
|
44
|
+
exports.keyInfo = keyInfo;
|
|
45
|
+
/** HKDF-SHA256(r ‖ factors, salt = time, info) → 32-byte AES key (same bytes as Web Crypto). */
|
|
46
|
+
function deriveKey(r, factors, time, info) {
|
|
47
|
+
return Buffer.from((0, crypto_1.hkdfSync)('sha256', Buffer.concat([r, Buffer.from(factors, 'utf8')]), Buffer.from(time, 'utf8'), Buffer.from(info, 'utf8'), 32));
|
|
48
|
+
}
|
|
49
|
+
exports.deriveKey = deriveKey;
|
|
50
|
+
/** AES-256-GCM, fresh 12-byte IV, AAD = the name of the property holding the value. */
|
|
51
|
+
function encryptGcm(key, plain, aad) {
|
|
52
|
+
const iv = (0, crypto_1.randomBytes)(12);
|
|
53
|
+
const c = (0, crypto_1.createCipheriv)('aes-256-gcm', key, iv);
|
|
54
|
+
c.setAAD(Buffer.from(aad, 'utf8'));
|
|
55
|
+
const ct = Buffer.concat([c.update(plain, 'utf8'), c.final(), c.getAuthTag()]);
|
|
56
|
+
return `${exports.ENC2_OPEN}${(0, exports.b64u)(iv)}.${(0, exports.b64u)(ct)}${exports.ENC2_CLOSE}`;
|
|
57
|
+
}
|
|
58
|
+
exports.encryptGcm = encryptGcm;
|
|
59
|
+
/** Inverse of encryptGcm (tests and tooling); throws on a malformed value or failed authentication. */
|
|
60
|
+
function decryptGcm(key, value, aad) {
|
|
61
|
+
const parts = (0, exports.isEnc2)(value) ? value.slice(exports.ENC2_OPEN.length, -exports.ENC2_CLOSE.length).split('.') : [];
|
|
62
|
+
const iv = Buffer.from(parts[0] ?? '', 'base64url');
|
|
63
|
+
const bytes = Buffer.from(parts[1] ?? '', 'base64url');
|
|
64
|
+
if (parts.length !== 2 || iv.length !== 12 || bytes.length < 16)
|
|
65
|
+
throw new Error('env encryption: malformed ENC2 value');
|
|
66
|
+
const d = (0, crypto_1.createDecipheriv)('aes-256-gcm', key, iv, { authTagLength: 16 });
|
|
67
|
+
d.setAAD(Buffer.from(aad, 'utf8'));
|
|
68
|
+
d.setAuthTag(bytes.subarray(bytes.length - 16));
|
|
69
|
+
return Buffer.concat([d.update(bytes.subarray(0, bytes.length - 16)), d.final()]).toString('utf8');
|
|
70
|
+
}
|
|
71
|
+
exports.decryptGcm = decryptGcm;
|
|
72
|
+
const encodePstack = (p) => (0, exports.b64u)(Buffer.from(JSON.stringify(p), 'utf8'));
|
|
73
|
+
exports.encodePstack = encodePstack;
|
|
74
|
+
const decodePstack = (s) => JSON.parse(Buffer.from(s, 'base64url').toString('utf8'));
|
|
75
|
+
exports.decodePstack = decodePstack;
|
|
76
|
+
//# sourceMappingURL=gcm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcm.js","sourceRoot":"","sources":["../../../../src/lib/env-encryption/gcm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { EnvEncryptionConfig, KeySource } from './config';
|
|
4
|
+
import { KeySplit } from './gcm';
|
|
5
|
+
export declare const SALT_FILE = "tools/config/env-salt";
|
|
6
|
+
export declare const ENV_KEY_VAR = "PSTACK_ENV_KEY";
|
|
7
|
+
export declare const CUSTOM_KEY_VAR = "PSTACK_CUSTOM_KEY";
|
|
8
|
+
type Vars = Record<string, string | undefined>;
|
|
9
|
+
/** A new random salt (32 bytes, base64url) for the salt file. */
|
|
10
|
+
export declare function newSalt(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Values of the selected key sources. Every other source is checked first and the salt file is
|
|
13
|
+
* created (when missing) last, so a failing check creates nothing. Never logs values.
|
|
14
|
+
*/
|
|
15
|
+
export declare function readKeyFactors(repoRoot: string, sources: KeySource[], commit: string, vars: Vars): {
|
|
16
|
+
values: Partial<Record<KeySource, string>>;
|
|
17
|
+
created: boolean;
|
|
18
|
+
};
|
|
19
|
+
export interface KeyParts {
|
|
20
|
+
/** Meta share (base64url). */
|
|
21
|
+
share: string;
|
|
22
|
+
/** Build time, ISO-8601 UTC: HKDF salt and the meta `timestamp_utc`. */
|
|
23
|
+
time: string;
|
|
24
|
+
asset?: {
|
|
25
|
+
name: string;
|
|
26
|
+
bytes: Buffer;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface KeyMaterialOptions {
|
|
30
|
+
repoRoot: string;
|
|
31
|
+
config: EnvEncryptionConfig;
|
|
32
|
+
envProject: string;
|
|
33
|
+
env: string;
|
|
34
|
+
commit: string;
|
|
35
|
+
now: Date;
|
|
36
|
+
vars: Vars;
|
|
37
|
+
keySplit: KeySplit;
|
|
38
|
+
domains?: string[];
|
|
39
|
+
includeWww?: boolean;
|
|
40
|
+
onMismatch?: 'block' | 'warn';
|
|
41
|
+
/** SRI build: the runtime refuses to decrypt when a script has no integrity attribute. */
|
|
42
|
+
requireIntegrity?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface KeyMaterial {
|
|
45
|
+
key: Buffer;
|
|
46
|
+
/** Encoded `__pstack` value. */
|
|
47
|
+
field: string;
|
|
48
|
+
parts: KeyParts;
|
|
49
|
+
saltCreated: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** A fresh per-build key: random R split into shares, factors, HKDF. */
|
|
52
|
+
export declare function buildKeyMaterial(o: KeyMaterialOptions): KeyMaterial;
|
|
53
|
+
export {};
|