@ng-doc/builder 22.0.0-beta.1 → 22.0.0
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/README.md +19 -28
- package/application/index.js +7 -2
- package/application/index.js.map +1 -1
- package/application/schema.json +11 -4
- package/builders.json +23 -13
- package/classes/observable-map.d.ts +1 -0
- package/classes/observable-map.js +14 -3
- package/classes/observable-map.js.map +1 -1
- package/classes/observable-set.js +2 -1
- package/classes/observable-set.js.map +1 -1
- package/dev-server/index.js +5 -3
- package/dev-server/index.js.map +1 -1
- package/engine/build-ng-doc.js +1 -16
- package/engine/build-ng-doc.js.map +1 -1
- package/engine/builders/api-list/api-list-component.builder.js +4 -4
- package/engine/builders/api-list/api-list-component.builder.js.map +1 -1
- package/engine/builders/api-list/api-page-template.builder.js +2 -2
- package/engine/builders/api-list/api-page-template.builder.js.map +1 -1
- package/engine/builders/global/keywords.builder.d.ts +1 -4
- package/engine/builders/global/keywords.builder.js +5 -9
- package/engine/builders/global/keywords.builder.js.map +1 -1
- package/engine/builders/global/search-indexes.builder.js +1 -1
- package/engine/builders/global/search-indexes.builder.js.map +1 -1
- package/engine/builders/helpers/create-entry-metadata.js +2 -1
- package/engine/builders/helpers/create-entry-metadata.js.map +1 -1
- package/engine/builders/helpers/create-import-path.js.map +1 -1
- package/engine/builders/helpers/get-entry-relative-path.js.map +1 -1
- package/engine/builders/page/demo-assets.builder.js +8 -5
- package/engine/builders/page/demo-assets.builder.js.map +1 -1
- package/engine/builders/page/playground.builder.js +1 -0
- package/engine/builders/page/playground.builder.js.map +1 -1
- package/engine/builders/shared/content.builder.js +3 -3
- package/engine/builders/shared/content.builder.js.map +1 -1
- package/engine/builders/shared/entry.builder.js +1 -13
- package/engine/builders/shared/entry.builder.js.map +1 -1
- package/engine/builders/shared/page-component.builder.js +16 -6
- package/engine/builders/shared/page-component.builder.js.map +1 -1
- package/engine/builders/shared/page-wrapper.builder.js +8 -5
- package/engine/builders/shared/page-wrapper.builder.js.map +1 -1
- package/engine/core/operators/distinct-pending.js.map +1 -1
- package/engine/core/operators/entries-emitter.js +2 -6
- package/engine/core/operators/entries-emitter.js.map +1 -1
- package/engine/core/operators/factory.js +1 -4
- package/engine/core/operators/factory.js.map +1 -1
- package/engine/core/operators/merge-factory.js +19 -17
- package/engine/core/operators/merge-factory.js.map +1 -1
- package/engine/core/operators/when-builders-done.js.map +1 -1
- package/engine/core/stores/index.d.ts +0 -1
- package/engine/core/stores/index.js +0 -1
- package/engine/core/stores/index.js.map +1 -1
- package/engine/core/triggers/on-dependencies-change.d.ts +1 -1
- package/engine/core/triggers/on-dependencies-change.js +2 -2
- package/engine/core/triggers/on-dependencies-change.js.map +1 -1
- package/engine/core/watcher/watch.js +19 -1
- package/engine/core/watcher/watch.js.map +1 -1
- package/engine/variables.d.ts +1 -0
- package/engine/variables.js +1 -0
- package/engine/variables.js.map +1 -1
- package/generator/artifacts/index.d.ts +317 -0
- package/generator/bootstrap/bin.d.ts +18 -0
- package/generator/bootstrap/bin.js +7274 -0
- package/generator/bootstrap/candidate-output-committer.d.ts +12 -0
- package/generator/bootstrap/cli.d.ts +42 -0
- package/generator/bootstrap/cli.js +7123 -0
- package/generator/bootstrap/constants.d.ts +4 -0
- package/generator/bootstrap/index.d.ts +111 -0
- package/generator/bootstrap/index.js +5020 -0
- package/generator/bootstrap/prerender-command.d.ts +31 -0
- package/generator/bootstrap/process-tree.d.ts +49 -0
- package/generator/build-metafile.json +11701 -0
- package/generator/build-provenance.json +119 -0
- package/generator/compiler/assemble.d.ts +41 -0
- package/generator/compiler/classify.d.ts +161 -0
- package/generator/compiler/closure-store.d.ts +55 -0
- package/generator/compiler/common.d.ts +32 -0
- package/generator/compiler/describe.d.ts +21 -0
- package/generator/compiler/dry-run.d.ts +108 -0
- package/generator/compiler/fast-start.d.ts +104 -0
- package/generator/compiler/fold.d.ts +116 -0
- package/generator/compiler/index.d.ts +111 -0
- package/generator/compiler/index.js +17759 -0
- package/generator/compiler/link.d.ts +38 -0
- package/generator/compiler/memo.d.ts +44 -0
- package/generator/compiler/plan.d.ts +92 -0
- package/generator/compiler/progress.d.ts +54 -0
- package/generator/compiler/render.d.ts +27 -0
- package/generator/compiler/retention.d.ts +181 -0
- package/generator/compiler/semantic-closure.d.ts +46 -0
- package/generator/compiler/targeted.d.ts +280 -0
- package/generator/content/content-compiler.d.ts +118 -0
- package/generator/content/highlight-cache.d.ts +139 -0
- package/generator/content/html-pipeline.d.ts +170 -0
- package/generator/content/html-pool.d.ts +239 -0
- package/generator/content/html-worker.js +1598 -0
- package/generator/content-module-ids.d.ts +8 -0
- package/generator/contracts.d.ts +1063 -0
- package/generator/contracts.js +15 -0
- package/generator/discovery/index.d.ts +77 -0
- package/generator/graph/index.d.ts +211 -0
- package/generator/graph/unit-index.d.ts +216 -0
- package/generator/kernel/canonical.d.ts +57 -0
- package/generator/kernel/flags.d.ts +49 -0
- package/generator/kernel/footprint.d.ts +88 -0
- package/generator/kernel/observations.d.ts +68 -0
- package/generator/kernel/paths.d.ts +22 -0
- package/generator/kernel/runtime-identity.d.ts +11 -0
- package/generator/outputs/index.d.ts +67 -0
- package/generator/package.json +3 -0
- package/generator/progress/ci.d.ts +22 -0
- package/generator/progress/detect.d.ts +60 -0
- package/generator/progress/events.d.ts +126 -0
- package/generator/progress/format.d.ts +83 -0
- package/generator/progress/gate.d.ts +49 -0
- package/generator/progress/host.d.ts +29 -0
- package/generator/progress/lines.d.ts +42 -0
- package/generator/progress/live.d.ts +115 -0
- package/generator/progress/model.d.ts +85 -0
- package/generator/progress/reporter.d.ts +87 -0
- package/generator/progress/settings.d.ts +60 -0
- package/generator/semantic/angular.d.ts +9 -0
- package/generator/semantic/api-enumeration.d.ts +19 -0
- package/generator/semantic/api-summary.d.ts +33 -0
- package/generator/semantic/dependencies.d.ts +20 -0
- package/generator/semantic/derived-classes.d.ts +58 -0
- package/generator/semantic/documentation-cache.d.ts +23 -0
- package/generator/semantic/fragments.d.ts +28 -0
- package/generator/semantic/owned-roots.d.ts +59 -0
- package/generator/semantic/program-builder.d.ts +55 -0
- package/generator/semantic/program-index.d.ts +124 -0
- package/generator/semantic/program-inputs.d.ts +26 -0
- package/generator/semantic/program-observations.d.ts +158 -0
- package/generator/semantic/program-retention.d.ts +147 -0
- package/generator/semantic/program-state.d.ts +196 -0
- package/generator/semantic/program-verify.d.ts +22 -0
- package/generator/semantic/recorder.d.ts +89 -0
- package/generator/semantic/rendering.d.ts +34 -0
- package/generator/semantic/semantic-closure.d.ts +129 -0
- package/generator/semantic/semantic-service.d.ts +186 -0
- package/generator/semantic/type-text.d.ts +5 -0
- package/generator/session/build-session.d.ts +206 -0
- package/generator/session/input-verification.d.ts +38 -0
- package/generator/session/parcel-event-source.d.ts +22 -0
- package/generator/session/progress.d.ts +72 -0
- package/generator/session/unchanged-saves.d.ts +63 -0
- package/generator/session/watch-inputs.d.ts +6 -0
- package/generator/session/watch-signals.d.ts +10 -0
- package/generator/templates/api/base.html.nunj +26 -0
- package/generator/templates/api/class-declaration.html.nunj +57 -0
- package/generator/templates/api/details/class-declaration.html.nunj +47 -0
- package/generator/templates/api/details/enum-declaration.html.nunj +0 -0
- package/generator/templates/api/details/function-declaration.html.nunj +14 -0
- package/generator/templates/api/details/helpers/decorators.html.nunj +14 -0
- package/generator/templates/api/details/helpers/extends.html.nunj +6 -0
- package/generator/templates/api/details/helpers/selectors.html.nunj +12 -0
- package/generator/templates/api/details/helpers/type-parameters.html.nunj +14 -0
- package/generator/templates/api/details/interface-declaration.html.nunj +27 -0
- package/generator/templates/api/details/type-alias-declaration.html.nunj +14 -0
- package/generator/templates/api/details/variable-declaration.html.nunj +0 -0
- package/generator/templates/api/details.html.nunj +9 -0
- package/generator/templates/api/enum-declaration.html.nunj +12 -0
- package/generator/templates/api/function-declaration.html.nunj +35 -0
- package/generator/templates/api/interface-declaration.html.nunj +37 -0
- package/generator/templates/api/type-alias-declaration.html.nunj +16 -0
- package/generator/templates/api/variable-declaration.html.nunj +8 -0
- package/generator/templates/api-header.html.nunj +11 -0
- package/generator/templates/api-list.ts.nunj +22 -0
- package/generator/templates/api-page-content.html.nunj +1 -0
- package/generator/templates/api-scope.ts.nunj +22 -0
- package/generator/templates/category.ts.nunj +22 -0
- package/generator/templates/code.html.nunj +3 -0
- package/generator/templates/context.ts.nunj +55 -0
- package/generator/templates/demo-assets.ts.nunj +25 -0
- package/generator/templates/helpers/accessor.html.nunj +76 -0
- package/generator/templates/helpers/accessors.html.nunj +7 -0
- package/generator/templates/helpers/badge.html.nunj +4 -0
- package/generator/templates/helpers/call-signature.html.nunj +70 -0
- package/generator/templates/helpers/code.html.nunj +3 -0
- package/generator/templates/helpers/constructor.html.nunj +32 -0
- package/generator/templates/helpers/declaration-modifiers.html.nunj +45 -0
- package/generator/templates/helpers/decorators.html.nunj +11 -0
- package/generator/templates/helpers/members.html.nunj +29 -0
- package/generator/templates/helpers/method.html.nunj +89 -0
- package/generator/templates/helpers/methods.html.nunj +7 -0
- package/generator/templates/helpers/modifier.html.nunj +4 -0
- package/generator/templates/helpers/no-content.html.nunj +3 -0
- package/generator/templates/helpers/overload.html.nunj +57 -0
- package/generator/templates/helpers/parameters.html.nunj +44 -0
- package/generator/templates/helpers/properties.html.nunj +61 -0
- package/generator/templates/helpers/status.html.nunj +33 -0
- package/generator/templates/helpers/tag.html.nunj +4 -0
- package/generator/templates/helpers/type.html.nunj +11 -0
- package/generator/templates/index.ts.nunj +2 -0
- package/generator/templates/page-header.html.nunj +5 -0
- package/generator/templates/page-wrapper.ts.nunj +64 -0
- package/generator/templates/page.ts.nunj +97 -0
- package/generator/templates/parts/examples.html.nunj +11 -0
- package/generator/templates/parts/member-examples.html.nunj +12 -0
- package/generator/templates/parts/member-remarks.html.nunj +8 -0
- package/generator/templates/parts/page-tags.html.nunj +10 -0
- package/generator/templates/parts/remarks.html.nunj +10 -0
- package/generator/templates/parts/see-also.html.nunj +23 -0
- package/generator/templates/parts/usage-notes.html.nunj +8 -0
- package/generator/templates/playgrounds.ts.nunj +63 -0
- package/generator/templates/routes.ts.nunj +49 -0
- package/generator/templates/symbol/decorators.html.nunj +12 -0
- package/generator/templates/symbol/details.html.nunj +62 -0
- package/generator/templates/symbol/extended-by.html.nunj +17 -0
- package/generator/templates/symbol/header.html.nunj +22 -0
- package/generator/templates/symbol/members.html.nunj +301 -0
- package/generator/templates/symbol/page.html.nunj +76 -0
- package/generator/templates/symbol/see-also.html.nunj +16 -0
- package/generator/vite/angular/ANALOG-LICENSE +21 -0
- package/generator/vite/angular/analog-provenance.json +880 -0
- package/generator/vite/angular/index.d.ts +14 -0
- package/generator/vite/angular/index.js +7300 -0
- package/generator/vite/angular-compatibility.d.ts +6 -0
- package/generator/vite/angular-composition.d.ts +68 -0
- package/generator/vite/angular-version.d.ts +38 -0
- package/generator/vite/application-builder.js +331 -0
- package/generator/vite/application-builder.schema.json +46 -0
- package/generator/vite/application.d.ts +91 -0
- package/generator/vite/assets.d.ts +11 -0
- package/generator/vite/bounded-close.d.ts +33 -0
- package/generator/vite/component-updates.d.ts +21 -0
- package/generator/vite/configuration.d.ts +3 -0
- package/generator/vite/dev-server-builder.js +334 -0
- package/generator/vite/dev-server-builder.schema.json +27 -0
- package/generator/vite/dev-styles.d.ts +65 -0
- package/generator/vite/diagnostics.d.ts +4 -0
- package/generator/vite/external-probes.d.ts +40 -0
- package/generator/vite/host-updates.d.ts +145 -0
- package/generator/vite/index.d.ts +13 -0
- package/generator/vite/index.js +11589 -0
- package/generator/vite/lease.d.ts +6 -0
- package/generator/vite/lifecycle.d.ts +119 -0
- package/generator/vite/mime.d.ts +2 -0
- package/generator/vite/missing-paths.d.ts +44 -0
- package/generator/vite/options.d.ts +87 -0
- package/generator/vite/output-watch.d.ts +41 -0
- package/generator/vite/paths.d.ts +7 -0
- package/generator/vite/plugin.d.ts +3 -0
- package/generator/vite/prerender-entry.js +395 -0
- package/generator/vite/prerender-runtime.d.ts +66 -0
- package/generator/vite/prerender.d.ts +27 -0
- package/generator/vite/production.d.ts +66 -0
- package/generator/vite/progress.d.ts +33 -0
- package/generator/vite/restore-theme.js +13 -0
- package/generator/vite/route-inventory.d.ts +24 -0
- package/generator/vite/ssr-renderer-control.d.ts +1 -0
- package/generator/vite/ssr-renderer-entry.js +444 -0
- package/generator/vite/ssr-renderer-protocol.d.ts +101 -0
- package/generator/vite/ssr-renderer.d.ts +74 -0
- package/generator/vite/theme-index.d.ts +13 -0
- package/generator/vite/tsconfig-paths.d.ts +64 -0
- package/generator/vite/vite-event-source.d.ts +198 -0
- package/generator/vite/vite-version.d.ts +26 -0
- package/generator/vite/watch-inputs.d.ts +39 -0
- package/generator/worker/entry.d.ts +1 -0
- package/generator/worker/entry.js +614 -0
- package/generator/worker/index.d.ts +156 -0
- package/generator/worker/index.js +1030 -0
- package/generator/worker/protocol.d.ts +160 -0
- package/helpers/angular/get-component-decorator.js +6 -6
- package/helpers/angular/get-component-decorator.js.map +1 -1
- package/helpers/angular/get-directive-decorator.js +3 -3
- package/helpers/angular/get-directive-decorator.js.map +1 -1
- package/helpers/angular/get-pipe-decorator.js +3 -3
- package/helpers/angular/get-pipe-decorator.js.map +1 -1
- package/helpers/build-indexes.js +5 -2
- package/helpers/build-indexes.js.map +1 -1
- package/helpers/construct-page-keyword.js +2 -1
- package/helpers/construct-page-keyword.js.map +1 -1
- package/helpers/extract-selectors.d.ts +1 -1
- package/helpers/extract-selectors.js +5 -3
- package/helpers/extract-selectors.js.map +1 -1
- package/helpers/filter-useless-members.d.ts +1 -1
- package/helpers/format-code.d.ts +2 -1
- package/helpers/format-code.js +13 -4
- package/helpers/format-code.js.map +1 -1
- package/helpers/import-fresh-esm.js.map +1 -1
- package/helpers/index.d.ts +2 -0
- package/helpers/index.js +2 -0
- package/helpers/index.js.map +1 -1
- package/helpers/keyword-heading-title.d.ts +7 -0
- package/helpers/keyword-heading-title.js +21 -0
- package/helpers/keyword-heading-title.js.map +1 -0
- package/helpers/markdown-to-html.js +3 -3
- package/helpers/markdown-to-html.js.map +1 -1
- package/helpers/navigation-title-order.d.ts +8 -0
- package/helpers/navigation-title-order.js +15 -0
- package/helpers/navigation-title-order.js.map +1 -0
- package/helpers/playground/get-playground-inputs.js +8 -4
- package/helpers/playground/get-playground-inputs.js.map +1 -1
- package/helpers/playground/get-playground-template-inputs.js +2 -1
- package/helpers/playground/get-playground-template-inputs.js.map +1 -1
- package/helpers/presentation.d.ts +7 -7
- package/helpers/presentation.js +23 -23
- package/helpers/presentation.js.map +1 -1
- package/helpers/print.js +32 -5
- package/helpers/print.js.map +1 -1
- package/helpers/process-snippets.d.ts +1 -1
- package/helpers/process-snippets.js +3 -3
- package/helpers/process-snippets.js.map +1 -1
- package/helpers/snippets-from-asset.d.ts +1 -1
- package/helpers/snippets-from-asset.js +2 -2
- package/helpers/snippets-from-asset.js.map +1 -1
- package/helpers/sort-navigation-entities.js +2 -1
- package/helpers/sort-navigation-entities.js.map +1 -1
- package/helpers/stable-generated-id.d.ts +2 -0
- package/helpers/stable-generated-id.js +12 -0
- package/helpers/stable-generated-id.js.map +1 -0
- package/helpers/text-order.d.ts +8 -0
- package/helpers/text-order.js +26 -0
- package/helpers/text-order.js.map +1 -0
- package/helpers/typescript/member/get-inherited-parent.d.ts +1 -1
- package/helpers/typescript/member/get-inherited-parent.js +2 -2
- package/helpers/typescript/member/get-inherited-parent.js.map +1 -1
- package/helpers/typescript/node/sort-by-nodes-name.d.ts +4 -2
- package/helpers/typescript/node/sort-by-nodes-name.js +6 -3
- package/helpers/typescript/node/sort-by-nodes-name.js.map +1 -1
- package/helpers/typescript/property/get-property-assignment.js.map +1 -1
- package/interfaces/schema.d.ts +1 -0
- package/package.json +87 -30
- package/parsers/helpers/number.d.ts +1 -1
- package/parsers/helpers/number.js +2 -2
- package/parsers/helpers/number.js.map +1 -1
- package/parsers/helpers/param-value.d.ts +1 -1
- package/parsers/helpers/param-value.js +2 -2
- package/parsers/helpers/param-value.js.map +1 -1
- package/parsers/helpers/param.js +3 -3
- package/parsers/helpers/param.js.map +1 -1
- package/parsers/parse-code-block-params.d.ts +1 -1
- package/parsers/parse-code-block-params.js +22 -16
- package/parsers/parse-code-block-params.js.map +1 -1
- package/parsers/parse-snippet.js +10 -10
- package/parsers/parse-snippet.js.map +1 -1
- package/schematics/collection.json +34 -23
- package/schematics/migrate-to-vite/analyze.d.ts +76 -0
- package/schematics/migrate-to-vite/analyze.js +816 -0
- package/schematics/migrate-to-vite/analyze.js.map +1 -0
- package/schematics/migrate-to-vite/index.d.ts +9 -0
- package/schematics/migrate-to-vite/index.js +585 -0
- package/schematics/migrate-to-vite/index.js.map +1 -0
- package/schematics/migrate-to-vite/legacy-folder.d.ts +84 -0
- package/schematics/migrate-to-vite/legacy-folder.js +340 -0
- package/schematics/migrate-to-vite/legacy-folder.js.map +1 -0
- package/schematics/migrate-to-vite/report.d.ts +32 -0
- package/schematics/migrate-to-vite/report.js +97 -0
- package/schematics/migrate-to-vite/report.js.map +1 -0
- package/schematics/migrate-to-vite/schema.d.ts +13 -0
- package/schematics/migrate-to-vite/schema.js +3 -0
- package/schematics/migrate-to-vite/schema.js.map +1 -0
- package/schematics/migrate-to-vite/schema.json +31 -0
- package/schematics/migrate-to-vite/setup/dependencies.d.ts +64 -0
- package/schematics/migrate-to-vite/setup/dependencies.js +183 -0
- package/schematics/migrate-to-vite/setup/dependencies.js.map +1 -0
- package/schematics/migrate-to-vite/setup/index.d.ts +6 -0
- package/schematics/migrate-to-vite/setup/index.js +13 -0
- package/schematics/migrate-to-vite/setup/index.js.map +1 -0
- package/schematics/migrate-to-vite/setup/json-file.d.ts +51 -0
- package/schematics/migrate-to-vite/setup/json-file.js +115 -0
- package/schematics/migrate-to-vite/setup/json-file.js.map +1 -0
- package/schematics/migrate-to-vite/setup/source.d.ts +30 -0
- package/schematics/migrate-to-vite/setup/source.js +202 -0
- package/schematics/migrate-to-vite/setup/source.js.map +1 -0
- package/schematics/migrate-to-vite/setup/targets.d.ts +51 -0
- package/schematics/migrate-to-vite/setup/targets.js +48 -0
- package/schematics/migrate-to-vite/setup/targets.js.map +1 -0
- package/schematics/migrate-to-vite/setup/vite-config.d.ts +100 -0
- package/schematics/migrate-to-vite/setup/vite-config.js +175 -0
- package/schematics/migrate-to-vite/setup/vite-config.js.map +1 -0
- package/schematics/migrate-to-vite/setup/workspace.d.ts +100 -0
- package/schematics/migrate-to-vite/setup/workspace.js +225 -0
- package/schematics/migrate-to-vite/setup/workspace.js.map +1 -0
- package/schematics/migrate-to-vite/state.d.ts +65 -0
- package/schematics/migrate-to-vite/state.js +92 -0
- package/schematics/migrate-to-vite/state.js.map +1 -0
- package/schematics/migrate-to-vite/testing/fixtures.d.ts +18 -0
- package/schematics/migrate-to-vite/testing/fixtures.js +279 -0
- package/schematics/migrate-to-vite/testing/fixtures.js.map +1 -0
- package/schematics/migrate-to-vite/update-note.d.ts +6 -0
- package/schematics/migrate-to-vite/update-note.js +23 -0
- package/schematics/migrate-to-vite/update-note.js.map +1 -0
- package/schematics/migration.json +5 -0
- package/schematics/migrations/standalone-pages/index.js +7 -6
- package/schematics/migrations/standalone-pages/index.js.map +1 -1
- package/schematics/vite-setup/index.d.ts +20 -0
- package/schematics/vite-setup/index.js +206 -0
- package/schematics/vite-setup/index.js.map +1 -0
- package/schematics/vite-setup/schema.d.ts +7 -0
- package/schematics/vite-setup/schema.js +3 -0
- package/schematics/vite-setup/schema.js.map +1 -0
- package/schematics/vite-setup/schema.json +19 -0
- package/scripts/restore-theme.js +9 -2
- package/templates/context.ts.nunj +3 -0
- package/templates/helpers/badge.html.nunj +1 -1
- package/templates/helpers/status.html.nunj +4 -8
- package/templates/page-wrapper.ts.nunj +24 -1
- package/templates/page.ts.nunj +25 -0
- package/templates/parts/page-tags.html.nunj +1 -1
- package/templates/playgrounds.ts.nunj +8 -9
- package/templates/routes.ts.nunj +6 -1
- package/templates/symbol/decorators.html.nunj +12 -0
- package/templates/symbol/details.html.nunj +62 -0
- package/templates/symbol/extended-by.html.nunj +17 -0
- package/templates/symbol/header.html.nunj +22 -0
- package/templates/symbol/members.html.nunj +301 -0
- package/templates/symbol/page.html.nunj +76 -0
- package/templates/symbol/see-also.html.nunj +16 -0
- package/engine/.cache/apps/ng-doc/docs/api-documentation/auto-generation/ng-doc.page.mjs +0 -20
- package/engine/.cache/apps/ng-doc/docs/api-documentation/documenting-declarations/ng-doc.page.mjs +0 -20
- package/engine/.cache/apps/ng-doc/docs/api-documentation/rendering-api/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/icons/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/layout/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/page-processors/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/page-skeleton/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/search/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/customization/themes/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/develop/ng-doc.page.mjs +0 -36
- package/engine/.cache/apps/ng-doc/docs/getting-started/configuration/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/getting-started/installation/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/getting-started/migrations/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/getting-started/ssr/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/getting-started/what-is-ng-doc/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/ng-doc.api.mjs +0 -42
- package/engine/.cache/apps/ng-doc/docs/recipes/ignoring-file-lines/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/recipes/performance/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/writing-content/blockquotes/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/code-blocks/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/demo-and-demo-pane/ng-doc.page.mjs +0 -19
- package/engine/.cache/apps/ng-doc/docs/writing-content/images-videos-and-embeds/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/keywords/ng-doc.page.mjs +0 -17
- package/engine/.cache/apps/ng-doc/docs/writing-content/mermaid-diagrams/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/nunjucks/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/pages-and-categories/ng-doc.page.mjs +0 -18
- package/engine/.cache/apps/ng-doc/docs/writing-content/playground/ng-doc.page.mjs +0 -33
- package/engine/core/stores/entry-status.d.ts +0 -23
- package/engine/core/stores/entry-status.js +0 -36
- package/engine/core/stores/entry-status.js.map +0 -1
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
|
+
var __esm = (fn, res) => function __init() {
|
|
3
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
4
|
+
};
|
|
5
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
6
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
// libs/builder/generator/vite/mime.ts
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
function contentType(file) {
|
|
12
|
+
return TYPES[path.extname(file).toLowerCase()] ?? "application/octet-stream";
|
|
13
|
+
}
|
|
14
|
+
var TYPES;
|
|
15
|
+
var init_mime = __esm({
|
|
16
|
+
"libs/builder/generator/vite/mime.ts"() {
|
|
17
|
+
"use strict";
|
|
18
|
+
TYPES = {
|
|
19
|
+
".aac": "audio/aac",
|
|
20
|
+
".apng": "image/apng",
|
|
21
|
+
".avif": "image/avif",
|
|
22
|
+
".bmp": "image/bmp",
|
|
23
|
+
".cjs": "text/javascript; charset=utf-8",
|
|
24
|
+
".css": "text/css; charset=utf-8",
|
|
25
|
+
".csv": "text/csv; charset=utf-8",
|
|
26
|
+
".eot": "application/vnd.ms-fontobject",
|
|
27
|
+
".flac": "audio/flac",
|
|
28
|
+
".gif": "image/gif",
|
|
29
|
+
".gz": "application/gzip",
|
|
30
|
+
".htm": "text/html; charset=utf-8",
|
|
31
|
+
".html": "text/html; charset=utf-8",
|
|
32
|
+
".ico": "image/x-icon",
|
|
33
|
+
".ics": "text/calendar; charset=utf-8",
|
|
34
|
+
".jpeg": "image/jpeg",
|
|
35
|
+
".jpg": "image/jpeg",
|
|
36
|
+
".js": "text/javascript; charset=utf-8",
|
|
37
|
+
".json": "application/json; charset=utf-8",
|
|
38
|
+
".jsonld": "application/ld+json; charset=utf-8",
|
|
39
|
+
".map": "application/json; charset=utf-8",
|
|
40
|
+
".md": "text/markdown; charset=utf-8",
|
|
41
|
+
".mjs": "text/javascript; charset=utf-8",
|
|
42
|
+
".mp3": "audio/mpeg",
|
|
43
|
+
".mp4": "video/mp4",
|
|
44
|
+
".oga": "audio/ogg",
|
|
45
|
+
".ogg": "audio/ogg",
|
|
46
|
+
".ogv": "video/ogg",
|
|
47
|
+
".otf": "font/otf",
|
|
48
|
+
".pdf": "application/pdf",
|
|
49
|
+
".png": "image/png",
|
|
50
|
+
".svg": "image/svg+xml; charset=utf-8",
|
|
51
|
+
".tif": "image/tiff",
|
|
52
|
+
".tiff": "image/tiff",
|
|
53
|
+
".ttf": "font/ttf",
|
|
54
|
+
".txt": "text/plain; charset=utf-8",
|
|
55
|
+
".wasm": "application/wasm",
|
|
56
|
+
".wav": "audio/wav",
|
|
57
|
+
".weba": "audio/webm",
|
|
58
|
+
".webm": "video/webm",
|
|
59
|
+
".webmanifest": "application/manifest+json; charset=utf-8",
|
|
60
|
+
".webp": "image/webp",
|
|
61
|
+
".woff": "font/woff",
|
|
62
|
+
".woff2": "font/woff2",
|
|
63
|
+
".xml": "application/xml; charset=utf-8",
|
|
64
|
+
".zip": "application/zip"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// libs/builder/generator/vite/route-inventory.ts
|
|
70
|
+
async function enumerateRoutes(routes, { invoke }) {
|
|
71
|
+
if (!Array.isArray(routes)) {
|
|
72
|
+
throw new TypeError("routes must be an Angular Routes array");
|
|
73
|
+
}
|
|
74
|
+
if (typeof invoke !== "function") {
|
|
75
|
+
throw new TypeError("invoke must be a function");
|
|
76
|
+
}
|
|
77
|
+
const found = [];
|
|
78
|
+
const excluded = [];
|
|
79
|
+
const emitted = /* @__PURE__ */ new Set();
|
|
80
|
+
const addRoute = (path3, base, route) => {
|
|
81
|
+
const redirectTo = typeof route.redirectTo === "string" ? resolveRedirect(base, route.redirectTo) : void 0;
|
|
82
|
+
const key = `${path3}\0${redirectTo ?? ""}`;
|
|
83
|
+
if (emitted.has(key)) return;
|
|
84
|
+
emitted.add(key);
|
|
85
|
+
found.push(redirectTo === void 0 ? { path: path3 } : { path: path3, redirectTo });
|
|
86
|
+
};
|
|
87
|
+
const exclude = (path3, reason) => {
|
|
88
|
+
excluded.push({ path: path3, reason });
|
|
89
|
+
};
|
|
90
|
+
async function visit(siblings, base, ancestors) {
|
|
91
|
+
if (ancestors.has(siblings)) {
|
|
92
|
+
exclude(base, "cycle");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const branch = new Set(ancestors);
|
|
96
|
+
branch.add(siblings);
|
|
97
|
+
const claimedTerminals = /* @__PURE__ */ new Set();
|
|
98
|
+
for (const candidate of siblings) {
|
|
99
|
+
if (!candidate || typeof candidate !== "object") continue;
|
|
100
|
+
const route = candidate;
|
|
101
|
+
if (route.outlet && route.outlet !== "primary") {
|
|
102
|
+
exclude(join(base, typeof route.path === "string" ? route.path : ""), "non-primary-outlet");
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (typeof route.path !== "string") {
|
|
106
|
+
exclude(base, route.matcher ? "matcher" : "missing-path");
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const path3 = join(base, route.path);
|
|
110
|
+
if (typeof route.redirectTo === "function") {
|
|
111
|
+
exclude(path3, "function-redirect");
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (route.path === "**") {
|
|
115
|
+
exclude(path3, "wildcard");
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (route.path.split("/").some((segment) => segment.startsWith(":"))) {
|
|
119
|
+
exclude(path3, "parameter");
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (isTerminal(route)) {
|
|
123
|
+
if (claimedTerminals.has(path3)) {
|
|
124
|
+
exclude(path3, "shadowed");
|
|
125
|
+
} else {
|
|
126
|
+
addRoute(path3, base, route);
|
|
127
|
+
claimedTerminals.add(path3);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(route.children)) {
|
|
131
|
+
await visit(route.children, path3, branch);
|
|
132
|
+
}
|
|
133
|
+
if (typeof route.loadChildren === "function") {
|
|
134
|
+
const factory = route.loadChildren;
|
|
135
|
+
await visit(unwrapLazyRoutes(await invoke(factory)), path3, branch);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
await visit(routes, "/", /* @__PURE__ */ new Set());
|
|
140
|
+
found.sort(
|
|
141
|
+
(left, right) => compareText(left.path, right.path) || compareText(left.redirectTo ?? "", right.redirectTo ?? "")
|
|
142
|
+
);
|
|
143
|
+
excluded.sort(
|
|
144
|
+
(left, right) => compareText(left.path, right.path) || compareText(left.reason, right.reason)
|
|
145
|
+
);
|
|
146
|
+
return { routes: found, excluded };
|
|
147
|
+
}
|
|
148
|
+
function isTerminal(route) {
|
|
149
|
+
return typeof route.redirectTo === "string" || "component" in route || "loadComponent" in route;
|
|
150
|
+
}
|
|
151
|
+
function unwrapLazyRoutes(value) {
|
|
152
|
+
if (Array.isArray(value)) return value;
|
|
153
|
+
if (value && typeof value.subscribe === "function") {
|
|
154
|
+
throw new TypeError("loadChildren Observable results are not supported");
|
|
155
|
+
}
|
|
156
|
+
const module = value;
|
|
157
|
+
if (module && Array.isArray(module.default)) return module.default;
|
|
158
|
+
throw new TypeError(
|
|
159
|
+
"loadChildren must resolve to a Routes array or a module with a default Routes array"
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
function join(base, child) {
|
|
163
|
+
const pieces = [base, child].flatMap((part) => part.split("/")).filter(Boolean);
|
|
164
|
+
return `/${pieces.join("/")}`;
|
|
165
|
+
}
|
|
166
|
+
function resolveRedirect(base, redirectTo) {
|
|
167
|
+
return normalize(redirectTo.startsWith("/") ? redirectTo : `${base}/${redirectTo}`);
|
|
168
|
+
}
|
|
169
|
+
function normalize(path3) {
|
|
170
|
+
const pieces = [];
|
|
171
|
+
for (const segment of path3.split("/")) {
|
|
172
|
+
if (!segment || segment === ".") continue;
|
|
173
|
+
if (segment === "..") pieces.pop();
|
|
174
|
+
else pieces.push(segment);
|
|
175
|
+
}
|
|
176
|
+
return `/${pieces.join("/")}`;
|
|
177
|
+
}
|
|
178
|
+
function compareText(left, right) {
|
|
179
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
180
|
+
}
|
|
181
|
+
var init_route_inventory = __esm({
|
|
182
|
+
"libs/builder/generator/vite/route-inventory.ts"() {
|
|
183
|
+
"use strict";
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// libs/builder/generator/vite/prerender-runtime.ts
|
|
188
|
+
import { existsSync } from "node:fs";
|
|
189
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
190
|
+
import path2 from "node:path";
|
|
191
|
+
import { pathToFileURL } from "node:url";
|
|
192
|
+
import { format } from "node:util";
|
|
193
|
+
function prerenderError(code, message) {
|
|
194
|
+
return new Error(`[${code}] ${message}`);
|
|
195
|
+
}
|
|
196
|
+
function serverEntry(value) {
|
|
197
|
+
const module = value;
|
|
198
|
+
const missing = ["bootstrap", "renderApplication", "Router", "runInInjectionContext"].filter((name) => typeof module?.[name] !== "function").sort();
|
|
199
|
+
if (missing.length) {
|
|
200
|
+
throw prerenderError(
|
|
201
|
+
"NGDOC_PRERENDER_SERVER_ENTRY",
|
|
202
|
+
`The server bundle does not export ${missing.join(", ")}; build it from the server entry of createNgDocApplicationPlugin.`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
return module;
|
|
206
|
+
}
|
|
207
|
+
function documentBase(document) {
|
|
208
|
+
const href = /<base\s[^>]*href\s*=\s*["']([^"']*)["']/i.exec(document)?.[1];
|
|
209
|
+
if (!href?.startsWith("/")) return "/";
|
|
210
|
+
return href.endsWith("/") ? href : `${href}/`;
|
|
211
|
+
}
|
|
212
|
+
function routeFile(route) {
|
|
213
|
+
if (!route.startsWith("/") || /[?#\\\0]/.test(route) || route.split("/").some((segment) => segment === "." || segment === "..")) {
|
|
214
|
+
throw prerenderError("NGDOC_PRERENDER_ROUTE", `Unsupported route path: ${route}`);
|
|
215
|
+
}
|
|
216
|
+
const segments = route.split("/").filter(Boolean);
|
|
217
|
+
return [...segments, "index.html"].join("/");
|
|
218
|
+
}
|
|
219
|
+
function localFetch(browserDir, base, fallback) {
|
|
220
|
+
return async (input, init) => {
|
|
221
|
+
const target = new URL(
|
|
222
|
+
typeof input === "string" ? input : input instanceof URL ? input.href : input.url,
|
|
223
|
+
`http://${HOST}`
|
|
224
|
+
);
|
|
225
|
+
if (target.origin !== `http://${HOST}`) return fallback(input, init);
|
|
226
|
+
let relative;
|
|
227
|
+
try {
|
|
228
|
+
const pathname = decodeURIComponent(target.pathname);
|
|
229
|
+
relative = pathname.startsWith(base) ? pathname.slice(base.length) : void 0;
|
|
230
|
+
} catch {
|
|
231
|
+
relative = void 0;
|
|
232
|
+
}
|
|
233
|
+
const file = relative && !relative.includes("\\") && !relative.includes("\0") && !relative.split("/").some((segment) => segment === ".." || segment === "") ? await readFile(path2.join(browserDir, relative)).catch(() => void 0) : void 0;
|
|
234
|
+
if (!file) return new Response("Not found", { status: 404, statusText: "Not Found" });
|
|
235
|
+
return new Response(new Uint8Array(file), {
|
|
236
|
+
status: 200,
|
|
237
|
+
headers: { "content-type": contentType(relative) }
|
|
238
|
+
});
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function routeWarningsToStderr(port = process) {
|
|
242
|
+
const previous = port.listeners("warning");
|
|
243
|
+
port.removeAllListeners("warning");
|
|
244
|
+
const write = (warning) => {
|
|
245
|
+
port.stderr.write(`(node:${port.pid}) ${warning.name}: ${warning.message}
|
|
246
|
+
`);
|
|
247
|
+
};
|
|
248
|
+
port.on("warning", write);
|
|
249
|
+
return () => {
|
|
250
|
+
port.removeAllListeners("warning");
|
|
251
|
+
for (const listener of previous) port.on("warning", listener);
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function withTimeout(work, milliseconds, route) {
|
|
255
|
+
if (milliseconds === void 0) return work;
|
|
256
|
+
let timer;
|
|
257
|
+
return Promise.race([
|
|
258
|
+
work,
|
|
259
|
+
new Promise((_resolve, reject) => {
|
|
260
|
+
timer = setTimeout(
|
|
261
|
+
() => reject(
|
|
262
|
+
prerenderError(
|
|
263
|
+
"NGDOC_PRERENDER_TIMEOUT",
|
|
264
|
+
`${route} did not render within ${milliseconds} ms.`
|
|
265
|
+
)
|
|
266
|
+
),
|
|
267
|
+
milliseconds
|
|
268
|
+
);
|
|
269
|
+
})
|
|
270
|
+
]).finally(() => clearTimeout(timer));
|
|
271
|
+
}
|
|
272
|
+
async function runPrerender(request, options = {}) {
|
|
273
|
+
const importModule = options.importModule ?? ((url2) => import(url2));
|
|
274
|
+
const browserDir = path2.resolve(request.browserDir);
|
|
275
|
+
const shellFile = path2.join(browserDir, SHELL);
|
|
276
|
+
const document = await readFile(
|
|
277
|
+
existsSync(shellFile) ? shellFile : path2.join(browserDir, "index.html"),
|
|
278
|
+
"utf8"
|
|
279
|
+
);
|
|
280
|
+
const base = documentBase(document);
|
|
281
|
+
const originalFetch = globalThis.fetch;
|
|
282
|
+
globalThis.fetch = localFetch(browserDir, base, originalFetch);
|
|
283
|
+
let entry;
|
|
284
|
+
try {
|
|
285
|
+
entry = serverEntry(await importModule(pathToFileURL(path2.resolve(request.serverEntry)).href));
|
|
286
|
+
} catch (error) {
|
|
287
|
+
globalThis.fetch = originalFetch;
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
const url = (route) => new URL(`${base}${route.replace(/^\//, "")}`, `http://${HOST}`).href;
|
|
291
|
+
const render = (route, bootstrap = entry.bootstrap) => withTimeout(
|
|
292
|
+
entry.renderApplication(bootstrap, { document, url: url(route), allowedHosts: [HOST] }),
|
|
293
|
+
request.routeTimeoutMs,
|
|
294
|
+
route
|
|
295
|
+
);
|
|
296
|
+
const errors = [];
|
|
297
|
+
let current = "/";
|
|
298
|
+
const log = console.error;
|
|
299
|
+
const restoreWarnings = routeWarningsToStderr();
|
|
300
|
+
console.error = (...args) => {
|
|
301
|
+
errors.push({ route: current, message: format(...args) });
|
|
302
|
+
log.apply(console, args);
|
|
303
|
+
};
|
|
304
|
+
try {
|
|
305
|
+
return { ...await renderRoutes(), errors };
|
|
306
|
+
} finally {
|
|
307
|
+
console.error = log;
|
|
308
|
+
restoreWarnings();
|
|
309
|
+
globalThis.fetch = originalFetch;
|
|
310
|
+
}
|
|
311
|
+
async function renderRoutes() {
|
|
312
|
+
const discovered = [];
|
|
313
|
+
const excluded = [];
|
|
314
|
+
if (request.discoverRoutes) {
|
|
315
|
+
let inventory;
|
|
316
|
+
await render("/", async (context) => {
|
|
317
|
+
const application = await entry.bootstrap(context);
|
|
318
|
+
const router = application.injector.get(entry.Router);
|
|
319
|
+
inventory = await enumerateRoutes(Array.isArray(router?.config) ? router.config : [], {
|
|
320
|
+
invoke: (factory) => entry.runInInjectionContext(application.injector, factory)
|
|
321
|
+
});
|
|
322
|
+
return application;
|
|
323
|
+
});
|
|
324
|
+
discovered.push(...inventory.routes);
|
|
325
|
+
excluded.push(...inventory.excluded);
|
|
326
|
+
}
|
|
327
|
+
const byPath = /* @__PURE__ */ new Map();
|
|
328
|
+
for (const route of discovered) if (!byPath.has(route.path)) byPath.set(route.path, route);
|
|
329
|
+
for (const route of request.routes) {
|
|
330
|
+
const normalized = `/${route.split("/").filter(Boolean).join("/")}`;
|
|
331
|
+
if (!byPath.has(normalized)) byPath.set(normalized, { path: normalized });
|
|
332
|
+
}
|
|
333
|
+
const routes = [...byPath.values()].sort(
|
|
334
|
+
(left, right) => left.path < right.path ? -1 : left.path > right.path ? 1 : 0
|
|
335
|
+
);
|
|
336
|
+
for (const route of routes) routeFile(route.path);
|
|
337
|
+
await writeFile(shellFile, document);
|
|
338
|
+
const rendered = [];
|
|
339
|
+
const failures = [];
|
|
340
|
+
for (const route of routes) {
|
|
341
|
+
const file = routeFile(route.path);
|
|
342
|
+
current = route.path;
|
|
343
|
+
try {
|
|
344
|
+
const html = await render(route.path);
|
|
345
|
+
await mkdir(path2.dirname(path2.join(browserDir, file)), { recursive: true });
|
|
346
|
+
await writeFile(path2.join(browserDir, file), html);
|
|
347
|
+
rendered.push({ ...route, file });
|
|
348
|
+
} catch (error) {
|
|
349
|
+
failures.push(`${route.path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (failures.length) {
|
|
353
|
+
throw prerenderError(
|
|
354
|
+
"NGDOC_PRERENDER_FAILED",
|
|
355
|
+
`${failures.length} of ${routes.length} route(s) failed to render:
|
|
356
|
+
${failures.slice(0, 10).join("\n")}`
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
return { routes: rendered, excluded, shell: SHELL };
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
function runPrerenderChild(port, run = runPrerender) {
|
|
363
|
+
port.once("disconnect", () => port.exit(1));
|
|
364
|
+
port.once("message", (message) => {
|
|
365
|
+
const finish = (reply, code) => {
|
|
366
|
+
port.send(reply, void 0, void 0, () => port.exit(code));
|
|
367
|
+
};
|
|
368
|
+
void run(message).then(
|
|
369
|
+
(report) => finish({ type: "result", report }, 0),
|
|
370
|
+
(error) => finish(
|
|
371
|
+
{ type: "error", message: error instanceof Error ? error.message : String(error) },
|
|
372
|
+
1
|
|
373
|
+
)
|
|
374
|
+
);
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
var SHELL, HOST;
|
|
378
|
+
var init_prerender_runtime = __esm({
|
|
379
|
+
"libs/builder/generator/vite/prerender-runtime.ts"() {
|
|
380
|
+
"use strict";
|
|
381
|
+
init_mime();
|
|
382
|
+
init_route_inventory();
|
|
383
|
+
SHELL = "index.csr.html";
|
|
384
|
+
HOST = "localhost";
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// libs/builder/generator/vite/prerender-entry.ts
|
|
389
|
+
var require_prerender_entry = __commonJS({
|
|
390
|
+
"libs/builder/generator/vite/prerender-entry.ts"() {
|
|
391
|
+
init_prerender_runtime();
|
|
392
|
+
runPrerenderChild(process);
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
export default require_prerender_entry();
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type NgDocExcludedRoute, type NgDocPrerenderRoute } from './route-inventory.js';
|
|
2
|
+
/** The prerender work of one child process. Only JSON values: it crosses the IPC channel. */
|
|
3
|
+
export interface PrerenderRequest {
|
|
4
|
+
/** The browser output: its `index.html` is the document every route is rendered into. */
|
|
5
|
+
browserDir: string;
|
|
6
|
+
/** The server bundle built from the application plugin's server entry. */
|
|
7
|
+
serverEntry: string;
|
|
8
|
+
/** Routes rendered in addition to the discovered ones. */
|
|
9
|
+
routes: string[];
|
|
10
|
+
/** Enumerate the application's `Router.config` (default in the callers: true). */
|
|
11
|
+
discoverRoutes: boolean;
|
|
12
|
+
/** Fails a route that takes longer to render, in milliseconds. */
|
|
13
|
+
routeTimeoutMs?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PrerenderReport {
|
|
16
|
+
/** Every rendered route, in code-unit order, with the file written for it. */
|
|
17
|
+
routes: Array<NgDocPrerenderRoute & {
|
|
18
|
+
file: string;
|
|
19
|
+
}>;
|
|
20
|
+
/** Route candidates without a concrete URL (parameters, wildcards, ...), which were skipped. */
|
|
21
|
+
excluded: NgDocExcludedRoute[];
|
|
22
|
+
/** The client-rendered shell, kept next to the prerendered `index.html` of `/`. */
|
|
23
|
+
shell: string;
|
|
24
|
+
/** What the application logged with `console.error` while rendering a route. */
|
|
25
|
+
errors: Array<{
|
|
26
|
+
route: string;
|
|
27
|
+
message: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export interface PrerenderRuntimeOptions {
|
|
31
|
+
/** Imports the server bundle; tests replace it. */
|
|
32
|
+
importModule?: (url: string) => Promise<unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The `<base href>` of the document, which every request URL starts with.
|
|
36
|
+
*/
|
|
37
|
+
export declare function documentBase(document: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Validates a route path and returns the file it is prerendered into, relative to the browser output.
|
|
40
|
+
*/
|
|
41
|
+
export declare function routeFile(route: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* A `fetch` that answers requests for the prerender host from the browser output, as the Angular
|
|
44
|
+
* CLI prerender does: the application loads its own assets (search index, keywords, icons) over
|
|
45
|
+
* HTTP while it renders, and no server listens during a build. Other origins go to `fallback`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function localFetch(browserDir: string, base: string, fallback: typeof fetch): typeof fetch;
|
|
48
|
+
/**
|
|
49
|
+
* Sends Node's process warnings (deprecations and the like) straight to stderr until the returned
|
|
50
|
+
* function restores the previous listeners. Node prints them through `console.error`, which the
|
|
51
|
+
* prerender captures as the application's errors.
|
|
52
|
+
*/
|
|
53
|
+
export declare function routeWarningsToStderr(port?: Pick<NodeJS.Process, 'listeners' | 'removeAllListeners' | 'on' | 'pid' | 'stderr'>): () => void;
|
|
54
|
+
/**
|
|
55
|
+
* Renders every route of the application into `<browserDir>/<route>/index.html`.
|
|
56
|
+
*
|
|
57
|
+
* The routes are the application's own `Router.config` (lazy children included), plus the
|
|
58
|
+
* explicit ones. The client shell `index.html` is kept as `index.csr.html` before `/` replaces
|
|
59
|
+
* it; a later run over the same output renders into that shell again. All routes are rendered
|
|
60
|
+
* before a failure is reported, and every failed route is named.
|
|
61
|
+
*/
|
|
62
|
+
export declare function runPrerender(request: PrerenderRequest, options?: PrerenderRuntimeOptions): Promise<PrerenderReport>;
|
|
63
|
+
/**
|
|
64
|
+
* Child-process side: one request in, one report (or error) out, then exit.
|
|
65
|
+
*/
|
|
66
|
+
export declare function runPrerenderChild(port: Pick<NodeJS.Process, 'once' | 'send' | 'exit'>, run?: typeof runPrerender): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PrerenderReport } from './prerender-runtime.js';
|
|
2
|
+
export type { PrerenderReport as NgDocPrerenderReport } from './prerender-runtime.js';
|
|
3
|
+
export type { NgDocExcludedRoute, NgDocPrerenderRoute } from './route-inventory.js';
|
|
4
|
+
export interface NgDocPrerenderOptions {
|
|
5
|
+
/** The browser output of the client build (it holds `index.html`). */
|
|
6
|
+
browserDir: string;
|
|
7
|
+
/** The server bundle of the server build (`server.mjs`). */
|
|
8
|
+
serverEntry: string;
|
|
9
|
+
/** Routes rendered in addition to the discovered ones, for example parameterized pages. */
|
|
10
|
+
routes?: readonly string[];
|
|
11
|
+
/** Enumerate the application's `Router.config`, lazy children included (default true). */
|
|
12
|
+
discoverRoutes?: boolean;
|
|
13
|
+
/** Fails a route that takes longer to render, in milliseconds (default: no limit). */
|
|
14
|
+
routeTimeoutMs?: number;
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
/** The child process entry; tests replace it. */
|
|
17
|
+
entryUrl?: URL;
|
|
18
|
+
}
|
|
19
|
+
/** The V8 heap and stack limits of the host's `execArgv`, which the child keeps. */
|
|
20
|
+
export declare function heapArguments(execArgv: readonly string[]): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Prerenders every route of a built application into its browser output.
|
|
23
|
+
*
|
|
24
|
+
* Rendering runs in a child process: the server bundle carries its own Angular and zone.js,
|
|
25
|
+
* which patch the process's globals, so they never share a process with the Vite builds.
|
|
26
|
+
*/
|
|
27
|
+
export declare function prerenderNgDoc(options: NgDocPrerenderOptions): Promise<PrerenderReport>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type InlineConfig } from 'vite';
|
|
2
|
+
import type { BuildResult, PublishedGeneratorConfiguration } from '../contracts.js';
|
|
3
|
+
import { type NgDocPrerenderOptions } from './prerender.js';
|
|
4
|
+
import type { PrerenderReport } from './prerender-runtime.js';
|
|
5
|
+
export interface NgDocViteBuildOptions {
|
|
6
|
+
/** The Vite configuration file of the application (the one `vite build` would load). */
|
|
7
|
+
configFile: string;
|
|
8
|
+
/**
|
|
9
|
+
* The output directory: the client build goes to `browser/`, the server bundle to
|
|
10
|
+
* `server/server.mjs`, the prerendered route list to `prerendered-routes.json`.
|
|
11
|
+
*/
|
|
12
|
+
outputPath: string;
|
|
13
|
+
/** The Vite mode (default `production`). */
|
|
14
|
+
mode?: string;
|
|
15
|
+
/** Build the server bundle (default: when the application plugin has a `server` entry). */
|
|
16
|
+
ssr?: boolean;
|
|
17
|
+
/** Prerender every route into `browser/` (default: when the server bundle is built). */
|
|
18
|
+
prerender?: boolean;
|
|
19
|
+
/** Routes prerendered in addition to the discovered ones. */
|
|
20
|
+
routes?: readonly string[];
|
|
21
|
+
/** Enumerate the application's routes (default true). */
|
|
22
|
+
discoverRoutes?: boolean;
|
|
23
|
+
/** Skip the client and server builds and prerender an existing output. */
|
|
24
|
+
skipBuild?: boolean;
|
|
25
|
+
/** Fails a route that takes longer to render, in milliseconds (default: no limit). */
|
|
26
|
+
routeTimeoutMs?: number;
|
|
27
|
+
/** Progress lines (one per step). */
|
|
28
|
+
log?: (message: string) => void;
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}
|
|
31
|
+
export interface NgDocViteBuildResult {
|
|
32
|
+
browser: string;
|
|
33
|
+
server?: string;
|
|
34
|
+
prerendered?: PrerenderReport;
|
|
35
|
+
}
|
|
36
|
+
/** @internal Injectable host ports for tests. */
|
|
37
|
+
export interface NgDocViteBuildDependencies {
|
|
38
|
+
build(config: InlineConfig): Promise<unknown>;
|
|
39
|
+
prerender(options: NgDocPrerenderOptions): Promise<PrerenderReport>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @internal The NgDoc generation of one production pipeline, shared by its builds through a
|
|
43
|
+
* plugin's `api.ngDocGeneration` (see `buildNgDocViteApplication`). The NgDoc plugin of the first
|
|
44
|
+
* build records the result it published; the plugin of a later build of the same pipeline, with
|
|
45
|
+
* the same generator options (`key`), publishes that result again instead of generating.
|
|
46
|
+
*/
|
|
47
|
+
export interface NgDocGenerationHandoff {
|
|
48
|
+
readonly schemaVersion: 1;
|
|
49
|
+
recorded?: {
|
|
50
|
+
key: string;
|
|
51
|
+
result: Extract<BuildResult, {
|
|
52
|
+
status: 'success';
|
|
53
|
+
}>;
|
|
54
|
+
configuration: PublishedGeneratorConfiguration;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The production build of a Vite + NgDoc application, as the Angular CLI application builder
|
|
59
|
+
* lays it out: the client build, then (with a server entry) a self-contained server bundle, then
|
|
60
|
+
* every route prerendered into the client output.
|
|
61
|
+
*
|
|
62
|
+
* Each step loads `configFile` again, but NgDoc generates once: the server build publishes the
|
|
63
|
+
* browser build's generation again (`NgDocGenerationHandoff`), so both bundles are built from the
|
|
64
|
+
* same generated sources.
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildNgDocViteApplication(options: NgDocViteBuildOptions, dependencies?: NgDocViteBuildDependencies): Promise<NgDocViteBuildResult>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Logger, ResolvedConfig } from 'vite';
|
|
2
|
+
import type { GeneratorBootstrapOptions } from '../bootstrap/index.js';
|
|
3
|
+
import type { ProgressStream } from '../progress/detect.js';
|
|
4
|
+
import { type HostProgress } from '../progress/host.js';
|
|
5
|
+
import type { LiveStream } from '../progress/live.js';
|
|
6
|
+
import { type ProgressOptionSetting } from '../progress/settings.js';
|
|
7
|
+
export interface ViteProgressOptions {
|
|
8
|
+
/** The logger to write to at the time of writing: the dev server's, else the resolved config's. */
|
|
9
|
+
logger(): Logger | undefined;
|
|
10
|
+
/** The plugin option `progress`. */
|
|
11
|
+
option?: ProgressOptionSetting;
|
|
12
|
+
/** Vite `logLevel`: `warn`, `error` and `silent` turn progress off unless a setting asks for it. */
|
|
13
|
+
logLevel?: ResolvedConfig['logLevel'];
|
|
14
|
+
generator: GeneratorBootstrapOptions;
|
|
15
|
+
/** The terminal (`process.stderr`): the live line, and every line when the log level hides info. */
|
|
16
|
+
stderr?: LiveStream & ProgressStream;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* NgDoc progress in Vite: lines through the Vite logger (never with `clear`, so Vite keeps the
|
|
20
|
+
* screen and its banner follows the NgDoc summary), the live line on stderr until the dev server
|
|
21
|
+
* serves, and timestamped lines after that (`3:04:27 PM [vite] NgDoc: updated …`).
|
|
22
|
+
*
|
|
23
|
+
* - A Vite `logLevel` that hides info (`warn`, `error`, `silent`) turns progress off. A setting
|
|
24
|
+
* that asks for progress anyway (`NGDOC_PROGRESS` or the plugin option, other than `auto`) is
|
|
25
|
+
* honoured: its lines go straight to stderr, untimestamped, since the logger would drop them.
|
|
26
|
+
* - Vite's logger clears the screen for a message identical to the one before it and prints
|
|
27
|
+
* `(xN)`. An NgDoc line identical to NgDoc's previous one therefore says how often it repeated
|
|
28
|
+
* (`… (2 in a row)`), which keeps the terminal history.
|
|
29
|
+
* - A writer that throws stops progress and logs one `SESSION_PROGRESS_FAILED` warning.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createViteProgress(options: ViteProgressOptions): HostProgress | undefined;
|
|
32
|
+
/** The generator options with `progress` as the session's progress consumer. */
|
|
33
|
+
export declare function withProgress(generator: GeneratorBootstrapOptions, progress: HostProgress | undefined): GeneratorBootstrapOptions;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Restores the reader's theme before the application starts. An empty stored id is the light
|
|
2
|
+
// theme: it removes a `data-theme` that index.html sets by default.
|
|
3
|
+
const themeId = localStorage.getItem('ng-doc-theme-id');
|
|
4
|
+
|
|
5
|
+
if (themeId !== null) {
|
|
6
|
+
const documentElement = document.documentElement;
|
|
7
|
+
|
|
8
|
+
if (themeId) {
|
|
9
|
+
documentElement.setAttribute('data-theme', themeId);
|
|
10
|
+
} else {
|
|
11
|
+
documentElement.removeAttribute('data-theme');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** A concrete primary-outlet URL of the application, with its redirect target when it redirects. */
|
|
2
|
+
export interface NgDocPrerenderRoute {
|
|
3
|
+
path: string;
|
|
4
|
+
redirectTo?: string;
|
|
5
|
+
}
|
|
6
|
+
/** A route candidate that has no single concrete URL, and why. */
|
|
7
|
+
export interface NgDocExcludedRoute {
|
|
8
|
+
path: string;
|
|
9
|
+
reason: 'cycle' | 'function-redirect' | 'matcher' | 'missing-path' | 'non-primary-outlet' | 'parameter' | 'shadowed' | 'wildcard';
|
|
10
|
+
}
|
|
11
|
+
export interface NgDocRouteInventory {
|
|
12
|
+
routes: NgDocPrerenderRoute[];
|
|
13
|
+
excluded: NgDocExcludedRoute[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Enumerates the concrete primary-outlet URLs of an Angular `Router.config`.
|
|
17
|
+
*
|
|
18
|
+
* `invoke` runs a lazy `loadChildren` factory; the caller wraps it in the application's injection
|
|
19
|
+
* context, because a factory may call `inject()`. Parameterized, wildcard, matcher and
|
|
20
|
+
* function-redirect routes have no single URL and are reported as excluded, never guessed.
|
|
21
|
+
*/
|
|
22
|
+
export declare function enumerateRoutes(routes: readonly unknown[], { invoke }: {
|
|
23
|
+
invoke: (factory: () => unknown) => unknown;
|
|
24
|
+
}): Promise<NgDocRouteInventory>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function renderSsrControlModule(epoch: string): string;
|