diff --git a/.github/workflows/reusable-example-apps.yml b/.github/workflows/reusable-example-apps.yml index ec2db463..8f9dc11e 100644 --- a/.github/workflows/reusable-example-apps.yml +++ b/.github/workflows/reusable-example-apps.yml @@ -125,7 +125,7 @@ jobs: pnpm run create-example-app ${{ matrix.cli-version-alias }} --tmp-dir=${{ runner.temp }} - name: Build example app - run: pnpm ci:build # includes SSR and source maps + run: pnpm run ci:build # includes SSR and source maps working-directory: ${{ env.EXAMPLE_APP_DIR }} # 👇 We can't do just `pnpm prune --prod` or `pnpm i --prod` # GitHub Actions `actions/upload-artifact` doesn't like symlinks diff --git a/.github/workflows/reusable-lint.yml b/.github/workflows/reusable-lint.yml index bcc6ec1d..77ac72af 100644 --- a/.github/workflows/reusable-lint.yml +++ b/.github/workflows/reusable-lint.yml @@ -51,3 +51,15 @@ jobs: --from ${{ github.event.pull_request.base.sha }} \ --to ${{ github.event.pull_request.head.sha }} \ --verbose + + unused: + name: Unused + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - name: Setup + uses: ./.github/actions/setup + - name: Run + run: pnpm run lint:unused diff --git a/.idea/prettier.xml b/.idea/prettier.xml index 529e8e3c..86259d25 100644 --- a/.idea/prettier.xml +++ b/.idea/prettier.xml @@ -3,6 +3,6 @@ \ No newline at end of file diff --git a/knip.jsonc b/knip.jsonc new file mode 100644 index 00000000..d921a901 --- /dev/null +++ b/knip.jsonc @@ -0,0 +1,84 @@ +{ + "$schema": "node_modules/knip/schema.json", + "workspaces": { + ".": { + "project": [], + "entry": ["dts-config.js"], + "ignore": [ + // 👇 Can't ignore "projects" being imported when shouldn't be + "jest.config.js", + // 👇 Unresolved: referenced "types". As they need to be resolved taking into account `typeRoots` + "projects/ngx-meta/e2e/tsconfig.json", + "projects/ngx-meta/src/tsconfig.lib.json", + ], + "ignoreDependencies": [ + // 👇 Unused: used in post-build shell script + "dts-bundle-generator", + // 👇 Unlisted: Needed by semantic release https://github.com/semantic-release/commit-analyzer + "conventional-changelog-conventionalcommits", + // 👇 Unresolved: Not hoisted by pnpm, but they're there. Added due to Semantic Release plugin + "@semantic-release/commit-analyzer", + "@semantic-release/github", + "@semantic-release/npm", + "@semantic-release/release-notes-generator", + // 👇 Unresolved: Not hoisted by pnpm, but it's there due to `angular-esbuild` dep + "@angular-eslint/builder", + // 👇 Unlisted: Manually hoisted by pnpm, but not specified in package.json + "@eslint/js", + // 👇 Unused: added by Angular CLI by default + "@angular/compiler", + "@angular/platform-browser-dynamic", + "@angular/router", + // actually used, but mistakenly from peer dep + // 👇 Unused: will be fixed soon when Knip tracks polyfills + "zone.js", + ], + }, + "./projects/ngx-meta/e2e": { + "project": ["**/*.ts"], + "entry": [ + //👇 Due to Cypress config not read (see below) + "cypress.config.ts", + "cypress/support/coverage.ts", + ], + // 👇 Disable reading config to avoid installing Cypress when running knip in CI/CD + "cypress": { + "config": [], + }, + "ignoreBinaries": [ + // 👇 Unlisted in CI/CD: because Cypress not installed + "cypress", + ], + "ignoreDependencies": [ + // 👇 Used in homonym shell script + "start-server-and-test", + // 👇 Seems it's needed by Cypress https://github.com/davidlj95/ngx/pull/679 + "tslib", + ], + }, + "./projects/ngx-meta/example-apps": { + "project": ["src/**/*.ts"], + "entry": ["src/create-example-app.ts"], + }, + "./projects/ngx-meta/schematics": { + "project": ["**/*.ts!", "!**/testing/**/*.ts!"], + "entry": [ + "ng-add/index.ts!", + "migrations/const-to-function-manager-providers/index.ts!", + ], + "ignore": ["external-utils/**/*.ts"], + "ignoreBinaries": ["rsync"], + }, + "./projects/ngx-meta/src": { + "project": ["**/*.ts!"], + "entry": ["all-entry-points.ts!", "index.ts!"], + "ignoreDependencies": [ + // 👇 Unused: As recommended to include in Angular Package Format v10+ + // https://angular.dev/tools/libraries/angular-package-format#tslib + "tslib", + // 👇 Referenced optional peerDep: If not using "router" entrypoint, it's fine + "@angular/router", + ], + }, + }, +} diff --git a/package.json b/package.json index f562b711..1a1bfcb9 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,9 @@ "lint:code:files//": "☝️ lint-staged can't/shouldn't use 'ng lint'", "lint:commit-message": "pnpm run commitlint-edit-msg", "lint:gh-actions": "./actionlint.sh", + "lint:unused": "pnpm run '/^lint:unused:.*$/'", + "lint:unused:development": "knip", + "lint:unused:production": "knip --production --tags=-visibleForTesting", "ngx-meta:api-documenter": "api-documenter markdown -i ./projects/ngx-meta/api-extractor -o ./projects/ngx-meta/docs/content/api", "ngx-meta:api-extractor": "api-extractor run -c ./projects/ngx-meta/src/api-extractor.json", "ngx-meta:api-extractor:local": "pnpm run ngx-meta:tsc:lib && pnpm run ngx-meta:api-extractor --local", @@ -30,7 +33,7 @@ "ngx-meta:tsc:spec": "tsc -p ./projects/ngx-meta/src/tsconfig.spec.json --listEmittedFiles", "prepare": "husky", "semantic-release:local": "./semantic-release-local.sh", - "start": "ng serve", + "start:dev": "ng serve", "test:unit": "pnpm run '/^test:unit:\\w*$/'", "test:unit:coverage": "pnpm run '/^test:unit:\\w*:coverage$/'", "test:unit:libs": "ng test --no-watch", @@ -48,7 +51,6 @@ "@angular/common": "18.2.10", "@angular/compiler": "18.2.10", "@angular/core": "18.2.10", - "@angular/forms": "18.2.10", "@angular/platform-browser": "18.2.10", "@angular/platform-browser-dynamic": "18.2.10", "@angular/router": "18.2.10", @@ -91,6 +93,7 @@ "karma-coverage": "2.2.1", "karma-jasmine": "5.1.0", "karma-jasmine-html-reporter": "2.1.0", + "knip": "5.41.1", "lint-staged": "15.2.10", "ng-mocks": "14.13.1", "ng-packagr": "18.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 215b08d9..251e5d9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,6 @@ importers: '@angular/core': specifier: 18.2.10 version: 18.2.10(rxjs@7.8.1)(zone.js@0.14.10) - '@angular/forms': - specifier: 18.2.10 - version: 18.2.10(@angular/common@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10))(@angular/platform-browser@18.2.10(@angular/animations@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10)))(rxjs@7.8.1) '@angular/platform-browser': specifier: 18.2.10 version: 18.2.10(@angular/animations@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10)))(@angular/common@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10))(rxjs@7.8.1))(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10)) @@ -68,7 +65,7 @@ importers: version: 19.5.0 '@eslint/compat': specifier: 1.2.3 - version: 1.2.3(eslint@9.14.0(jiti@1.21.0)) + version: 1.2.3(eslint@9.14.0(jiti@2.4.2)) '@jest/globals': specifier: 29.7.0 version: 29.7.0 @@ -95,7 +92,7 @@ importers: version: 22.8.7 angular-eslint: specifier: 18.4.2 - version: 18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript-eslint@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(typescript@5.4.5) + version: 18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript-eslint@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(typescript@5.4.5) conventional-changelog-conventionalcommits: specifier: 8.0.0 version: 8.0.0 @@ -104,22 +101,22 @@ importers: version: 9.5.1 eslint: specifier: 9.14.0 - version: 9.14.0(jiti@1.21.0) + version: 9.14.0(jiti@2.4.2) eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.14.0(jiti@1.21.0)) + version: 9.1.0(eslint@9.14.0(jiti@2.4.2)) eslint-plugin-cypress: specifier: 4.1.0 - version: 4.1.0(eslint@9.14.0(jiti@1.21.0)) + version: 4.1.0(eslint@9.14.0(jiti@2.4.2)) eslint-plugin-jasmine: specifier: 4.2.2 version: 4.2.2 eslint-plugin-jest: specifier: 28.9.0 - version: 28.9.0(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(jest@29.7.0(@types/node@22.8.7))(typescript@5.4.5) + version: 28.9.0(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.8.7))(typescript@5.4.5) eslint-plugin-json-files: specifier: 4.4.2 - version: 4.4.2(eslint@9.14.0(jiti@1.21.0)) + version: 4.4.2(eslint@9.14.0(jiti@2.4.2)) husky: specifier: 9.1.7 version: 9.1.7 @@ -144,6 +141,9 @@ importers: karma-jasmine-html-reporter: specifier: 2.1.0 version: 2.1.0(jasmine-core@5.4.0)(karma-jasmine@5.1.0(karma@6.4.4))(karma@6.4.4) + knip: + specifier: 5.41.1 + version: 5.41.1(@types/node@22.8.7)(typescript@5.4.5) lint-staged: specifier: 15.2.10 version: 15.2.10 @@ -170,7 +170,7 @@ importers: version: 5.4.5 typescript-eslint: specifier: 8.10.0 - version: 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + version: 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) packages: @@ -2155,6 +2155,11 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@snyk/github-codeowners@1.1.0': + resolution: {integrity: sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==} + engines: {node: '>=8.10'} + hasBin: true + '@socket.io/component-emitter@3.1.0': resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} @@ -2914,6 +2919,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -3253,6 +3262,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + easy-table@1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -4383,6 +4395,10 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} @@ -4493,6 +4509,14 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + knip@5.41.1: + resolution: {integrity: sha512-yNpCCe2REU7U3VRvMASnXSEtfEC2HmOoDW9Vp9teQ9FktJYnuagvSZD3xWq8Ru7sPABkmvbC5TVWuMzIaeADNA==} + engines: {node: '>=18.6.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4' + launch-editor@2.6.1: resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} @@ -5868,6 +5892,10 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smol-toml@1.3.1: + resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} + engines: {node: '>= 18'} + socket.io-adapter@2.5.2: resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} @@ -6052,6 +6080,13 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + + summary@2.1.0: + resolution: {integrity: sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==} + super-regex@1.0.0: resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} engines: {node: '>=18'} @@ -6648,6 +6683,15 @@ packages: engines: {node: '>=8.0.0'} hasBin: true + zod-validation-error@3.4.0: + resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.18.0 + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + zone.js@0.14.10: resolution: {integrity: sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==} @@ -6786,38 +6830,38 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-eslint/builder@18.4.2(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/builder@18.4.2(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) typescript: 5.4.5 '@angular-eslint/bundled-angular-compiler@18.4.2': {} - '@angular-eslint/eslint-plugin-template@18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/eslint-plugin-template@18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@angular-eslint/bundled-angular-compiler': 18.4.2 - '@angular-eslint/utils': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@angular-eslint/utils': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) aria-query: 5.3.2 axobject-query: 4.1.0 - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) typescript: 5.4.5 - '@angular-eslint/eslint-plugin@18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/eslint-plugin@18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@angular-eslint/bundled-angular-compiler': 18.4.2 - '@angular-eslint/utils': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - eslint: 9.14.0(jiti@1.21.0) + '@angular-eslint/utils': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + eslint: 9.14.0(jiti@2.4.2) typescript: 5.4.5 - '@angular-eslint/schematics@18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/schematics@18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@angular-devkit/core': 18.2.11(chokidar@3.6.0) '@angular-devkit/schematics': 18.2.11(chokidar@3.6.0) - '@angular-eslint/eslint-plugin': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@angular-eslint/eslint-plugin-template': 18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@angular-eslint/eslint-plugin': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@angular-eslint/eslint-plugin-template': 18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) ignore: 6.0.2 semver: 7.6.3 strip-json-comments: 3.1.1 @@ -6827,18 +6871,18 @@ snapshots: - eslint - typescript - '@angular-eslint/template-parser@18.4.2(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/template-parser@18.4.2(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@angular-eslint/bundled-angular-compiler': 18.4.2 - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) eslint-scope: 8.2.0 typescript: 5.4.5 - '@angular-eslint/utils@18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@angular-eslint/utils@18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@angular-eslint/bundled-angular-compiler': 18.4.2 - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - eslint: 9.14.0(jiti@1.21.0) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + eslint: 9.14.0(jiti@2.4.2) typescript: 5.4.5 '@angular/animations@18.2.10(@angular/core@18.2.10(rxjs@7.8.1)(zone.js@0.14.10))': @@ -7153,7 +7197,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/parser@7.24.0': dependencies: @@ -8032,18 +8076,18 @@ snapshots: '@esbuild/win32-x64@0.23.0': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0(jiti@1.21.0))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.14.0(jiti@2.4.2))': dependencies: - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.3(eslint@9.14.0(jiti@1.21.0))': + '@eslint/compat@1.2.3(eslint@9.14.0(jiti@2.4.2))': optionalDependencies: - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) '@eslint/config-array@0.18.0': dependencies: @@ -9001,6 +9045,12 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@snyk/github-codeowners@1.1.0': + dependencies: + commander: 4.1.1 + ignore: 5.3.2 + p-map: 4.0.0 + '@socket.io/component-emitter@3.1.0': {} '@tufjs/canonical-json@2.0.0': {} @@ -9175,15 +9225,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/parser': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/type-utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/type-utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) '@typescript-eslint/visitor-keys': 8.10.0 - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -9193,14 +9243,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 8.10.0 '@typescript-eslint/types': 8.10.0 '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 8.10.0 debug: 4.3.6 - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -9211,10 +9261,10 @@ snapshots: '@typescript-eslint/types': 8.10.0 '@typescript-eslint/visitor-keys': 8.10.0 - '@typescript-eslint/type-utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) debug: 4.3.6 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -9240,13 +9290,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5)': + '@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.10.0 '@typescript-eslint/types': 8.10.0 '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.4.5) - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript @@ -9440,16 +9490,16 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - angular-eslint@18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript-eslint@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(typescript@5.4.5): + angular-eslint@18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript-eslint@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(typescript@5.4.5): dependencies: - '@angular-eslint/builder': 18.4.2(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@angular-eslint/eslint-plugin': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@angular-eslint/eslint-plugin-template': 18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@angular-eslint/schematics': 18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@angular-eslint/template-parser': 18.4.2(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - eslint: 9.14.0(jiti@1.21.0) + '@angular-eslint/builder': 18.4.2(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@angular-eslint/eslint-plugin': 18.4.2(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@angular-eslint/eslint-plugin-template': 18.4.2(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@angular-eslint/schematics': 18.4.2(@angular-devkit/core@18.2.11(chokidar@3.6.0))(@angular-devkit/schematics@18.2.11(chokidar@3.6.0))(@typescript-eslint/types@8.10.0)(@typescript-eslint/utils@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@angular-eslint/template-parser': 18.4.2(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + eslint: 9.14.0(jiti@2.4.2) typescript: 5.4.5 - typescript-eslint: 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + typescript-eslint: 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) transitivePeerDependencies: - '@angular-devkit/core' - '@angular-devkit/schematics' @@ -9886,6 +9936,8 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + commander@9.5.0: optional: true @@ -10212,6 +10264,12 @@ snapshots: eastasianwidth@0.2.0: {} + easy-table@1.2.0: + dependencies: + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + ee-first@1.1.1: {} ejs@3.1.10: @@ -10368,33 +10426,33 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.0)): + eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@2.4.2)): dependencies: - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) - eslint-plugin-cypress@4.1.0(eslint@9.14.0(jiti@1.21.0)): + eslint-plugin-cypress@4.1.0(eslint@9.14.0(jiti@2.4.2)): dependencies: - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) globals: 15.12.0 eslint-plugin-jasmine@4.2.2: {} - eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(jest@29.7.0(@types/node@22.8.7))(typescript@5.4.5): + eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.8.7))(typescript@5.4.5): dependencies: - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - eslint: 9.14.0(jiti@1.21.0) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + eslint: 9.14.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) jest: 29.7.0(@types/node@22.8.7) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-json-files@4.4.2(eslint@9.14.0(jiti@1.21.0)): + eslint-plugin-json-files@4.4.2(eslint@9.14.0(jiti@2.4.2)): dependencies: ajv: 8.17.1 better-ajv-errors: 1.2.0(ajv@8.17.1) - eslint: 9.14.0(jiti@1.21.0) + eslint: 9.14.0(jiti@2.4.2) fast-glob: 3.3.2 requireindex: 1.2.0 semver: 7.6.3 @@ -10414,9 +10472,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.14.0(jiti@1.21.0): + eslint@9.14.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@1.21.0)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.14.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0 '@eslint/core': 0.7.0 @@ -10452,7 +10510,7 @@ snapshots: optionator: 0.9.3 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.0 + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -11600,6 +11658,8 @@ snapshots: jiti@1.21.0: {} + jiti@2.4.2: {} + jju@1.4.0: {} js-tokens@4.0.0: {} @@ -11724,6 +11784,27 @@ snapshots: kleur@3.0.3: {} + knip@5.41.1(@types/node@22.8.7)(typescript@5.4.5): + dependencies: + '@nodelib/fs.walk': 1.2.8 + '@snyk/github-codeowners': 1.1.0 + '@types/node': 22.8.7 + easy-table: 1.2.0 + enhanced-resolve: 5.17.1 + fast-glob: 3.3.2 + jiti: 2.4.2 + js-yaml: 4.1.0 + minimist: 1.2.8 + picocolors: 1.1.1 + picomatch: 4.0.2 + pretty-ms: 9.0.0 + smol-toml: 1.3.1 + strip-json-comments: 5.0.1 + summary: 2.1.0 + typescript: 5.4.5 + zod: 3.24.1 + zod-validation-error: 3.4.0(zod@3.24.1) + launch-editor@2.6.1: dependencies: picocolors: 1.0.1 @@ -13154,6 +13235,8 @@ snapshots: smart-buffer@4.2.0: {} + smol-toml@1.3.1: {} + socket.io-adapter@2.5.2: dependencies: ws: 8.11.0 @@ -13375,6 +13458,10 @@ snapshots: strip-json-comments@3.1.1: {} + strip-json-comments@5.0.1: {} + + summary@2.1.0: {} + super-regex@1.0.0: dependencies: function-timeout: 1.0.1 @@ -13564,11 +13651,11 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5): + typescript-eslint@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5))(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@typescript-eslint/parser': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) - '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@1.21.0))(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5))(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@typescript-eslint/parser': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) + '@typescript-eslint/utils': 8.10.0(eslint@9.14.0(jiti@2.4.2))(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: @@ -13924,4 +14011,10 @@ snapshots: optionalDependencies: commander: 9.5.0 + zod-validation-error@3.4.0(zod@3.24.1): + dependencies: + zod: 3.24.1 + + zod@3.24.1: {} + zone.js@0.14.10: {} diff --git a/projects/ngx-meta/example-apps/src/steps/setup-ssr.ts b/projects/ngx-meta/example-apps/src/steps/setup-ssr.ts index faa0b30d..205a2a37 100644 --- a/projects/ngx-meta/example-apps/src/steps/setup-ssr.ts +++ b/projects/ngx-meta/example-apps/src/steps/setup-ssr.ts @@ -4,8 +4,6 @@ import { execa, Log } from '../tools/index.js' import { writeFile } from 'fs/promises' import { join } from 'path' -export const NPMRC_FILENAME = '.npmrc' - export async function setupSsr(opts: { cliBinary: string appDir: string @@ -42,3 +40,5 @@ export async function setupSsr(opts: { cwd: opts.appDir, }) } + +const NPMRC_FILENAME = '.npmrc' diff --git a/projects/ngx-meta/example-apps/src/steps/update-ts-config-to-import-json-files-and-set-path-mappings.ts b/projects/ngx-meta/example-apps/src/steps/update-ts-config-to-import-json-files-and-set-path-mappings.ts index 018730df..ca83c57d 100644 --- a/projects/ngx-meta/example-apps/src/steps/update-ts-config-to-import-json-files-and-set-path-mappings.ts +++ b/projects/ngx-meta/example-apps/src/steps/update-ts-config-to-import-json-files-and-set-path-mappings.ts @@ -5,8 +5,6 @@ import { join } from 'path' import { writeFile } from 'fs/promises' import { jsonToString } from '../utils/index.js' -export const RELATIVE_E2E_DIR_FROM_APP_DIR = join('..', '..', '..', 'e2e') - export async function updateTsConfigToImportJsonFilesAndSetPathMappings( appDir: string, ) { @@ -37,3 +35,5 @@ export async function updateTsConfigToImportJsonFilesAndSetPathMappings( } await writeFile(configFileName, jsonToString(config.raw)) } + +const RELATIVE_E2E_DIR_FROM_APP_DIR = join('..', '..', '..', 'e2e') diff --git a/projects/ngx-meta/schematics/migrations/const-to-function-manager-providers/testing/replacements.ts b/projects/ngx-meta/schematics/migrations/const-to-function-manager-providers/testing/replacements.ts index 68206e1b..63379063 100644 --- a/projects/ngx-meta/schematics/migrations/const-to-function-manager-providers/testing/replacements.ts +++ b/projects/ngx-meta/schematics/migrations/const-to-function-manager-providers/testing/replacements.ts @@ -1,4 +1,4 @@ -export class ModuleReplacements { +class ModuleReplacements { constructor(public readonly identifierReplacements: Record) {} get oldIdentifiersLines() { diff --git a/projects/ngx-meta/schematics/utils/get-all-typescript-files.ts b/projects/ngx-meta/schematics/utils/get-all-typescript-files.ts index d494ab8d..7d6b2f50 100644 --- a/projects/ngx-meta/schematics/utils/get-all-typescript-files.ts +++ b/projects/ngx-meta/schematics/utils/get-all-typescript-files.ts @@ -22,6 +22,8 @@ export function* getAllTypescriptFiles( yield [filePath, sourceFile] } } + +/** @visibleForTesting **/ export type GetAllTypescriptFilesOptions = Partial<{ contentFilter: (content: string) => boolean }> diff --git a/projects/ngx-meta/src/core/src/resolvers/metadata-json-resolver.ts b/projects/ngx-meta/src/core/src/resolvers/metadata-json-resolver.ts index 649c2056..bc1ae844 100644 --- a/projects/ngx-meta/src/core/src/resolvers/metadata-json-resolver.ts +++ b/projects/ngx-meta/src/core/src/resolvers/metadata-json-resolver.ts @@ -42,6 +42,7 @@ export const metadataJsonResolver: _LazyInjectionToken< }, ) +/** @visibleForTesting */ export type MetadataJsonResolver = ( values: MetadataValues | undefined, resolverOptions: MetadataResolverOptions, diff --git a/projects/ngx-meta/src/core/src/utils/make-injection-token.ts b/projects/ngx-meta/src/core/src/utils/make-injection-token.ts index 1ce053b2..1ff35849 100644 --- a/projects/ngx-meta/src/core/src/utils/make-injection-token.ts +++ b/projects/ngx-meta/src/core/src/utils/make-injection-token.ts @@ -2,7 +2,9 @@ import { InjectionToken } from '@angular/core' import { _formatDevMessage } from '../messaging' import { MODULE_NAME } from '../module-name' +/** @visibleForTesting */ export const INJECTION_TOKENS = new Map>() +/** @visibleForTesting */ export const INJECTION_TOKEN_FACTORIES = new Map unknown>() /** diff --git a/projects/ngx-meta/src/routing/src/listener/router-listener.ts b/projects/ngx-meta/src/routing/src/listener/router-listener.ts index 9f9593ce..f5622bb0 100644 --- a/projects/ngx-meta/src/routing/src/listener/router-listener.ts +++ b/projects/ngx-meta/src/routing/src/listener/router-listener.ts @@ -48,4 +48,6 @@ export const routerListener = () => ngOnDestroy: () => subscription?.unsubscribe(), } }) + +/** @visibleForTesting */ export type RouterListener = { listen: () => void } & OnDestroy diff --git a/projects/ngx-meta/src/standard/src/utils/provide-standard-manager.ts b/projects/ngx-meta/src/standard/src/utils/provide-standard-manager.ts index eafa7708..96da793d 100644 --- a/projects/ngx-meta/src/standard/src/utils/provide-standard-manager.ts +++ b/projects/ngx-meta/src/standard/src/utils/provide-standard-manager.ts @@ -5,14 +5,12 @@ import { } from '@davidlj95/ngx-meta/core' import { Standard, StandardMetadata } from '../types' -export const STANDARD_KEY = 'standard' satisfies keyof StandardMetadata - export const provideStandardManager = ( key: Key, ...options: readonly _ProvideNgxMetaModuleManagerOptions[] ) => _provideNgxMetaModuleManager( key, - [STANDARD_KEY], + ['standard' satisfies keyof StandardMetadata], withOptions(...options), ) diff --git a/projects/ngx-meta/src/twitter-card/src/utils/provide-twitter-card-manager.ts b/projects/ngx-meta/src/twitter-card/src/utils/provide-twitter-card-manager.ts index f75aacb8..70b45b11 100644 --- a/projects/ngx-meta/src/twitter-card/src/utils/provide-twitter-card-manager.ts +++ b/projects/ngx-meta/src/twitter-card/src/utils/provide-twitter-card-manager.ts @@ -7,16 +7,13 @@ import { import { TwitterCard, TwitterCardMetadata } from '../types' import { withTwitterCardNameAttribute } from './with-twitter-card-name-attribute' -export const TWITTER_CARD_KEY = - 'twitterCard' satisfies keyof TwitterCardMetadata - export const provideTwitterCardManager = ( key: Key, ...options: readonly _ProvideNgxMetaModuleManagerOptions[] ) => _provideNgxMetaModuleManager( key, - [TWITTER_CARD_KEY], + ['twitterCard' satisfies keyof TwitterCardMetadata], withOptions( _withModuleManagerNameAttribute(withTwitterCardNameAttribute(key)), ...options,