@ng-doc/builder 22.0.0-beta.2 → 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 +2 -2
- package/application/index.js.map +1 -1
- package/application/schema.json +1 -2
- 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/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/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/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/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/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/package.json +86 -29
- 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
|
@@ -0,0 +1,444 @@
|
|
|
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/ssr-renderer-protocol.ts
|
|
10
|
+
function record(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function tagged(value) {
|
|
14
|
+
return record(value) && value.version === SSR_RENDER_PROTOCOL_VERSION && typeof value.epoch === "string" && value.epoch.length > 0;
|
|
15
|
+
}
|
|
16
|
+
function positiveInteger(value) {
|
|
17
|
+
return Number.isSafeInteger(value) && value >= 0;
|
|
18
|
+
}
|
|
19
|
+
function hotPayload(value, childToServer = false) {
|
|
20
|
+
if (!record(value) || typeof value.type !== "string") return false;
|
|
21
|
+
if (childToServer) {
|
|
22
|
+
return value.type === "custom" && typeof value.event === "string";
|
|
23
|
+
}
|
|
24
|
+
switch (value.type) {
|
|
25
|
+
case "connected":
|
|
26
|
+
case "ping":
|
|
27
|
+
return true;
|
|
28
|
+
case "custom":
|
|
29
|
+
return typeof value.event === "string";
|
|
30
|
+
case "full-reload":
|
|
31
|
+
return (value.path === void 0 || typeof value.path === "string") && (value.triggeredBy === void 0 || typeof value.triggeredBy === "string");
|
|
32
|
+
case "prune":
|
|
33
|
+
return Array.isArray(value.paths) && value.paths.every((path) => typeof path === "string");
|
|
34
|
+
case "update":
|
|
35
|
+
return Array.isArray(value.updates) && value.updates.every(
|
|
36
|
+
(update) => record(update) && (update.type === "js-update" || update.type === "css-update") && typeof update.path === "string" && typeof update.acceptedPath === "string" && Number.isFinite(update.timestamp)
|
|
37
|
+
);
|
|
38
|
+
case "error":
|
|
39
|
+
return record(value.err) && typeof value.err.message === "string";
|
|
40
|
+
default:
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function limits(value) {
|
|
45
|
+
return record(value) && [
|
|
46
|
+
"maxActive",
|
|
47
|
+
"maxQueued",
|
|
48
|
+
"maxDepth",
|
|
49
|
+
"maxMessageBytes",
|
|
50
|
+
"requestDeadlineMs",
|
|
51
|
+
"startupDeadlineMs",
|
|
52
|
+
"fenceDeadlineMs",
|
|
53
|
+
"closeDeadlineMs"
|
|
54
|
+
].every((key) => Number.isSafeInteger(value[key]) && value[key] > 0);
|
|
55
|
+
}
|
|
56
|
+
function isParentToRendererMessage(value) {
|
|
57
|
+
if (!tagged(value) || typeof value.type !== "string") return false;
|
|
58
|
+
switch (value.type) {
|
|
59
|
+
case "start":
|
|
60
|
+
return typeof value.entry === "string" && typeof value.controlId === "string" && limits(value.limits);
|
|
61
|
+
case "hot":
|
|
62
|
+
return hotPayload(value.payload);
|
|
63
|
+
case "render":
|
|
64
|
+
if (!positiveInteger(value.id)) return false;
|
|
65
|
+
try {
|
|
66
|
+
validateRequest(value.request);
|
|
67
|
+
return true;
|
|
68
|
+
} catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
case "cancel":
|
|
72
|
+
return positiveInteger(value.id);
|
|
73
|
+
case "fence":
|
|
74
|
+
return positiveInteger(value.id) && positiveInteger(value.sequence);
|
|
75
|
+
case "close":
|
|
76
|
+
return true;
|
|
77
|
+
default:
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function messageBytes(value) {
|
|
82
|
+
try {
|
|
83
|
+
return Buffer.byteLength(JSON.stringify(value));
|
|
84
|
+
} catch {
|
|
85
|
+
return Number.POSITIVE_INFINITY;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function validateEntry(entry) {
|
|
89
|
+
if (typeof entry !== "string" || !entry || entry.includes("\0")) {
|
|
90
|
+
throw new TypeError(
|
|
91
|
+
"[NGDOC_SSR_RENDER_ENTRY] entry must be a non-empty module ID without NUL."
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function validateRequest(value, maxDepth = SSR_RENDER_MAX_JSON_DEPTH) {
|
|
96
|
+
if (!record(value) || Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
|
|
97
|
+
throw new TypeError(
|
|
98
|
+
"[NGDOC_SSR_RENDER_REQUEST] document and absolute HTTP(S) url are required."
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
const keys = Reflect.ownKeys(value);
|
|
102
|
+
if (keys.some((key) => typeof key !== "string" || !["document", "url", "data"].includes(key))) {
|
|
103
|
+
throw new TypeError("[NGDOC_SSR_RENDER_REQUEST] request contains unsupported properties.");
|
|
104
|
+
}
|
|
105
|
+
for (const key of ["document", "url", ...keys.includes("data") ? ["data"] : []]) {
|
|
106
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
107
|
+
if (!descriptor || !descriptor.enumerable || !("value" in descriptor)) {
|
|
108
|
+
throw new TypeError("[NGDOC_SSR_RENDER_REQUEST] request properties must be enumerable data.");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (typeof value.document !== "string" || typeof value.url !== "string") {
|
|
112
|
+
throw new TypeError(
|
|
113
|
+
"[NGDOC_SSR_RENDER_REQUEST] document and absolute HTTP(S) url are required."
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
let parsed;
|
|
117
|
+
try {
|
|
118
|
+
parsed = new URL(value.url);
|
|
119
|
+
} catch {
|
|
120
|
+
throw new TypeError("[NGDOC_SSR_RENDER_REQUEST] url must be absolute HTTP(S).");
|
|
121
|
+
}
|
|
122
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
123
|
+
throw new TypeError("[NGDOC_SSR_RENDER_REQUEST] url must be absolute HTTP(S).");
|
|
124
|
+
}
|
|
125
|
+
if (value.data !== void 0) validateJson(value.data, maxDepth);
|
|
126
|
+
}
|
|
127
|
+
function validateJson(value, maxDepth = SSR_RENDER_MAX_JSON_DEPTH) {
|
|
128
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
129
|
+
const visit = (item, depth) => {
|
|
130
|
+
if (depth > maxDepth)
|
|
131
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] maximum JSON depth exceeded.");
|
|
132
|
+
if (item === null || typeof item === "string" || typeof item === "boolean") return;
|
|
133
|
+
if (typeof item === "number") {
|
|
134
|
+
if (!Number.isFinite(item))
|
|
135
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] numbers must be finite.");
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (typeof item !== "object") {
|
|
139
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] data contains a non-JSON value.");
|
|
140
|
+
}
|
|
141
|
+
if (ancestors.has(item)) throw new TypeError("[NGDOC_SSR_RENDER_JSON] data contains a cycle.");
|
|
142
|
+
const prototype = Object.getPrototypeOf(item);
|
|
143
|
+
if (Array.isArray(item) && prototype !== Array.prototype || !Array.isArray(item) && prototype !== Object.prototype && prototype !== null) {
|
|
144
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] data contains an unsupported object prototype.");
|
|
145
|
+
}
|
|
146
|
+
ancestors.add(item);
|
|
147
|
+
const keys = Reflect.ownKeys(item);
|
|
148
|
+
for (const key of keys) {
|
|
149
|
+
if (typeof key !== "string") {
|
|
150
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] symbol keys are unsupported.");
|
|
151
|
+
}
|
|
152
|
+
if (Array.isArray(item) && key === "length") continue;
|
|
153
|
+
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
154
|
+
if (!descriptor || !("value" in descriptor) || !descriptor.enumerable) {
|
|
155
|
+
throw new TypeError(
|
|
156
|
+
"[NGDOC_SSR_RENDER_JSON] accessors and non-enumerable properties are unsupported."
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
if (Array.isArray(item)) {
|
|
160
|
+
if (!/^(?:0|[1-9]\d*)$/.test(key) || Number(key) >= item.length) {
|
|
161
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] named array properties are unsupported.");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
visit(descriptor.value, depth + 1);
|
|
165
|
+
}
|
|
166
|
+
if (Array.isArray(item) && keys.length !== item.length + 1) {
|
|
167
|
+
throw new TypeError("[NGDOC_SSR_RENDER_JSON] sparse arrays are unsupported.");
|
|
168
|
+
}
|
|
169
|
+
ancestors.delete(item);
|
|
170
|
+
};
|
|
171
|
+
visit(value, 0);
|
|
172
|
+
}
|
|
173
|
+
function serializeError(error) {
|
|
174
|
+
const source = error instanceof Error ? error : new Error(String(error));
|
|
175
|
+
const code = "code" in source && typeof source.code === "string" ? source.code : void 0;
|
|
176
|
+
return {
|
|
177
|
+
name: source.name.slice(0, 256),
|
|
178
|
+
message: source.message.slice(0, 64 * 1024),
|
|
179
|
+
...source.stack ? { stack: source.stack.slice(0, 256 * 1024) } : {},
|
|
180
|
+
...code ? { code } : {}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
var SSR_RENDER_PROTOCOL_VERSION, SSR_RENDER_MAX_ACTIVE, SSR_RENDER_MAX_QUEUED, SSR_RENDER_MAX_JSON_DEPTH, SSR_RENDER_MAX_MESSAGE_BYTES, SSR_RENDER_DEADLINE_MS, SSR_RENDER_CLOSE_DEADLINE_MS, SSR_RENDER_CONTROL_ID, DEFAULT_SSR_RENDER_LIMITS;
|
|
184
|
+
var init_ssr_renderer_protocol = __esm({
|
|
185
|
+
"libs/builder/generator/vite/ssr-renderer-protocol.ts"() {
|
|
186
|
+
"use strict";
|
|
187
|
+
SSR_RENDER_PROTOCOL_VERSION = 1;
|
|
188
|
+
SSR_RENDER_MAX_ACTIVE = 8;
|
|
189
|
+
SSR_RENDER_MAX_QUEUED = 32;
|
|
190
|
+
SSR_RENDER_MAX_JSON_DEPTH = 64;
|
|
191
|
+
SSR_RENDER_MAX_MESSAGE_BYTES = 16 * 1024 * 1024;
|
|
192
|
+
SSR_RENDER_DEADLINE_MS = 12e4;
|
|
193
|
+
SSR_RENDER_CLOSE_DEADLINE_MS = 5e3;
|
|
194
|
+
SSR_RENDER_CONTROL_ID = "/@ng-doc/ssr-render-control";
|
|
195
|
+
DEFAULT_SSR_RENDER_LIMITS = Object.freeze({
|
|
196
|
+
maxActive: SSR_RENDER_MAX_ACTIVE,
|
|
197
|
+
maxQueued: SSR_RENDER_MAX_QUEUED,
|
|
198
|
+
maxDepth: SSR_RENDER_MAX_JSON_DEPTH,
|
|
199
|
+
maxMessageBytes: SSR_RENDER_MAX_MESSAGE_BYTES,
|
|
200
|
+
requestDeadlineMs: SSR_RENDER_DEADLINE_MS,
|
|
201
|
+
startupDeadlineMs: SSR_RENDER_DEADLINE_MS,
|
|
202
|
+
fenceDeadlineMs: SSR_RENDER_DEADLINE_MS,
|
|
203
|
+
closeDeadlineMs: SSR_RENDER_CLOSE_DEADLINE_MS
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// libs/builder/generator/vite/ssr-renderer-runtime.ts
|
|
209
|
+
import {
|
|
210
|
+
createNodeImportMeta,
|
|
211
|
+
ModuleRunner
|
|
212
|
+
} from "vite/module-runner";
|
|
213
|
+
function deadline(promise, milliseconds, message) {
|
|
214
|
+
return new Promise((resolve, reject) => {
|
|
215
|
+
const timer = setTimeout(() => reject(new Error(message)), milliseconds);
|
|
216
|
+
timer.unref();
|
|
217
|
+
void promise.then(
|
|
218
|
+
(value) => {
|
|
219
|
+
clearTimeout(timer);
|
|
220
|
+
resolve(value);
|
|
221
|
+
},
|
|
222
|
+
(error) => {
|
|
223
|
+
clearTimeout(timer);
|
|
224
|
+
reject(error);
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function runSsrRendererRuntime(port) {
|
|
230
|
+
let epoch;
|
|
231
|
+
let entry;
|
|
232
|
+
let limits2;
|
|
233
|
+
let runner;
|
|
234
|
+
let transportHandlers;
|
|
235
|
+
let closingAdmission = false;
|
|
236
|
+
let transportClosed = false;
|
|
237
|
+
let fatal = false;
|
|
238
|
+
let closing;
|
|
239
|
+
const renders = /* @__PURE__ */ new Map();
|
|
240
|
+
const send = (message) => {
|
|
241
|
+
if (messageBytes(message) > (limits2?.maxMessageBytes ?? SSR_RENDER_MAX_MESSAGE_BYTES)) {
|
|
242
|
+
return Promise.reject(new Error("[NGDOC_SSR_RENDER_MESSAGE] Child response is oversized."));
|
|
243
|
+
}
|
|
244
|
+
return new Promise((resolve, reject) => {
|
|
245
|
+
if (!port.send) {
|
|
246
|
+
reject(new Error("[NGDOC_SSR_RENDER_IPC] Parent IPC channel is unavailable."));
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
try {
|
|
250
|
+
port.send(message, (error) => error ? reject(error) : resolve());
|
|
251
|
+
} catch (error) {
|
|
252
|
+
reject(error);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
const tagged2 = (message) => ({
|
|
257
|
+
...message,
|
|
258
|
+
version: SSR_RENDER_PROTOCOL_VERSION,
|
|
259
|
+
epoch: epoch ?? "uninitialized"
|
|
260
|
+
});
|
|
261
|
+
const fail = (error) => {
|
|
262
|
+
if (transportClosed || fatal) return;
|
|
263
|
+
fatal = true;
|
|
264
|
+
const disconnect = () => {
|
|
265
|
+
try {
|
|
266
|
+
port.disconnect?.();
|
|
267
|
+
} catch {
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
void send(tagged2({ type: "fatal", error: serializeError(error) })).then(disconnect, disconnect);
|
|
271
|
+
};
|
|
272
|
+
const start = async (message) => {
|
|
273
|
+
if (runner || epoch) throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Duplicate start message.");
|
|
274
|
+
validateEntry(message.entry);
|
|
275
|
+
if (message.controlId !== SSR_RENDER_CONTROL_ID) {
|
|
276
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Unsupported control module ID.");
|
|
277
|
+
}
|
|
278
|
+
epoch = message.epoch;
|
|
279
|
+
entry = message.entry;
|
|
280
|
+
limits2 = message.limits;
|
|
281
|
+
const transport = {
|
|
282
|
+
connect(handlers) {
|
|
283
|
+
transportHandlers = handlers;
|
|
284
|
+
},
|
|
285
|
+
disconnect() {
|
|
286
|
+
transportHandlers = void 0;
|
|
287
|
+
},
|
|
288
|
+
send(payload) {
|
|
289
|
+
return send(tagged2({ type: "transport", payload }));
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
runner = new ModuleRunner({
|
|
293
|
+
transport,
|
|
294
|
+
hmr: true,
|
|
295
|
+
createImportMeta: createNodeImportMeta,
|
|
296
|
+
sourcemapInterceptor: "node"
|
|
297
|
+
});
|
|
298
|
+
await deadline(
|
|
299
|
+
runner.import(message.controlId),
|
|
300
|
+
limits2.startupDeadlineMs,
|
|
301
|
+
"[NGDOC_SSR_RENDER_STARTUP_TIMEOUT] Control module startup deadline exceeded."
|
|
302
|
+
);
|
|
303
|
+
await send(tagged2({ type: "ready" }));
|
|
304
|
+
};
|
|
305
|
+
const render = (message) => {
|
|
306
|
+
if (!runner || !entry || !limits2) {
|
|
307
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Render received before startup.");
|
|
308
|
+
}
|
|
309
|
+
if (renders.has(message.id)) {
|
|
310
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Duplicate render request ID.");
|
|
311
|
+
}
|
|
312
|
+
validateRequest(message.request, limits2.maxDepth);
|
|
313
|
+
const controller = new AbortController();
|
|
314
|
+
const settlement = (async () => {
|
|
315
|
+
try {
|
|
316
|
+
const module = await runner.import(entry);
|
|
317
|
+
if (controller.signal.aborted || closingAdmission) {
|
|
318
|
+
throw controller.signal.reason ?? new Error("[NGDOC_SSR_RENDER_ABORTED] Render aborted.");
|
|
319
|
+
}
|
|
320
|
+
if (typeof module.render !== "function") {
|
|
321
|
+
throw new TypeError(
|
|
322
|
+
`[NGDOC_SSR_RENDER_EXPORT] ${entry} must export a named render(request, { signal }) function.`
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
const result = await module.render(message.request, { signal: controller.signal });
|
|
326
|
+
if (typeof result !== "string") {
|
|
327
|
+
throw new TypeError("[NGDOC_SSR_RENDER_RESULT] render() must resolve to an HTML string.");
|
|
328
|
+
}
|
|
329
|
+
await send(tagged2({ type: "rendered", id: message.id, html: result }));
|
|
330
|
+
} catch (error) {
|
|
331
|
+
await send(tagged2({ type: "render-error", id: message.id, error: serializeError(error) }));
|
|
332
|
+
} finally {
|
|
333
|
+
renders.delete(message.id);
|
|
334
|
+
}
|
|
335
|
+
})();
|
|
336
|
+
void settlement.catch(() => {
|
|
337
|
+
});
|
|
338
|
+
renders.set(message.id, { controller, settlement });
|
|
339
|
+
};
|
|
340
|
+
const fence = async (message) => {
|
|
341
|
+
if (!runner || !limits2) {
|
|
342
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Fence received before startup.");
|
|
343
|
+
}
|
|
344
|
+
try {
|
|
345
|
+
const control = await runner.import(SSR_RENDER_CONTROL_ID);
|
|
346
|
+
const controller = new AbortController();
|
|
347
|
+
const waiting = control.waitForNgDocSsrFence(message.sequence, controller.signal);
|
|
348
|
+
void waiting.catch(() => {
|
|
349
|
+
});
|
|
350
|
+
try {
|
|
351
|
+
await send(tagged2({ type: "fence-ready", id: message.id, sequence: message.sequence }));
|
|
352
|
+
await deadline(
|
|
353
|
+
waiting,
|
|
354
|
+
limits2.fenceDeadlineMs,
|
|
355
|
+
`[NGDOC_SSR_RENDER_FENCE_TIMEOUT] Fence ${message.sequence} deadline exceeded.`
|
|
356
|
+
);
|
|
357
|
+
} finally {
|
|
358
|
+
controller.abort(new Error("Fence waiter settled."));
|
|
359
|
+
}
|
|
360
|
+
await send(tagged2({ type: "fenced", id: message.id, sequence: message.sequence }));
|
|
361
|
+
} catch (error) {
|
|
362
|
+
await send(tagged2({ type: "fence-error", id: message.id, error: serializeError(error) }));
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
const close = () => {
|
|
366
|
+
if (closing) return closing;
|
|
367
|
+
closingAdmission = true;
|
|
368
|
+
closing = (async () => {
|
|
369
|
+
for (const operation of renders.values()) operation.controller.abort();
|
|
370
|
+
await Promise.allSettled([...renders.values()].map(({ settlement }) => settlement));
|
|
371
|
+
await runner?.close();
|
|
372
|
+
await send(tagged2({ type: "closed" }));
|
|
373
|
+
transportClosed = true;
|
|
374
|
+
port.disconnect?.();
|
|
375
|
+
})();
|
|
376
|
+
return closing;
|
|
377
|
+
};
|
|
378
|
+
const receive = async (raw) => {
|
|
379
|
+
if (transportClosed || fatal) return;
|
|
380
|
+
if (messageBytes(raw) > (limits2?.maxMessageBytes ?? SSR_RENDER_MAX_MESSAGE_BYTES)) {
|
|
381
|
+
throw new Error("[NGDOC_SSR_RENDER_MESSAGE] Parent message is oversized.");
|
|
382
|
+
}
|
|
383
|
+
if (!isParentToRendererMessage(raw)) {
|
|
384
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] Invalid parent message.");
|
|
385
|
+
}
|
|
386
|
+
if (epoch && raw.epoch !== epoch) return;
|
|
387
|
+
if (!epoch && raw.type !== "start") {
|
|
388
|
+
throw new Error("[NGDOC_SSR_RENDER_PROTOCOL] First message must start the runtime.");
|
|
389
|
+
}
|
|
390
|
+
switch (raw.type) {
|
|
391
|
+
case "start":
|
|
392
|
+
if (closingAdmission) return;
|
|
393
|
+
await start(raw);
|
|
394
|
+
return;
|
|
395
|
+
case "hot":
|
|
396
|
+
transportHandlers?.onMessage(raw.payload);
|
|
397
|
+
return;
|
|
398
|
+
case "render":
|
|
399
|
+
if (closingAdmission) {
|
|
400
|
+
await send(
|
|
401
|
+
tagged2({
|
|
402
|
+
type: "render-error",
|
|
403
|
+
id: raw.id,
|
|
404
|
+
error: serializeError(new Error("[NGDOC_SSR_RENDER_DISPOSED] Runtime is closing."))
|
|
405
|
+
})
|
|
406
|
+
);
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
render(raw);
|
|
410
|
+
return;
|
|
411
|
+
case "cancel":
|
|
412
|
+
renders.get(raw.id)?.controller.abort();
|
|
413
|
+
return;
|
|
414
|
+
case "fence":
|
|
415
|
+
if (closingAdmission) return;
|
|
416
|
+
await fence(raw);
|
|
417
|
+
return;
|
|
418
|
+
case "close":
|
|
419
|
+
await close();
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
port.on("message", (message) => {
|
|
423
|
+
void receive(message).catch(fail);
|
|
424
|
+
});
|
|
425
|
+
port.on("disconnect", () => {
|
|
426
|
+
if (!transportClosed) void close().catch(() => {
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
var init_ssr_renderer_runtime = __esm({
|
|
431
|
+
"libs/builder/generator/vite/ssr-renderer-runtime.ts"() {
|
|
432
|
+
"use strict";
|
|
433
|
+
init_ssr_renderer_protocol();
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
// libs/builder/generator/vite/ssr-renderer-entry.ts
|
|
438
|
+
var require_ssr_renderer_entry = __commonJS({
|
|
439
|
+
"libs/builder/generator/vite/ssr-renderer-entry.ts"() {
|
|
440
|
+
init_ssr_renderer_runtime();
|
|
441
|
+
runSsrRendererRuntime(process);
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
export default require_ssr_renderer_entry();
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { HotPayload } from 'vite';
|
|
2
|
+
export type NgDocSsrJsonValue = null | boolean | number | string | readonly NgDocSsrJsonValue[] | {
|
|
3
|
+
readonly [key: string]: NgDocSsrJsonValue;
|
|
4
|
+
};
|
|
5
|
+
export interface NgDocSsrRequest {
|
|
6
|
+
readonly document: string;
|
|
7
|
+
readonly url: string;
|
|
8
|
+
readonly data?: NgDocSsrJsonValue;
|
|
9
|
+
}
|
|
10
|
+
export declare const SSR_RENDER_PROTOCOL_VERSION = 1;
|
|
11
|
+
export declare const SSR_RENDER_MAX_ACTIVE = 8;
|
|
12
|
+
export declare const SSR_RENDER_MAX_QUEUED = 32;
|
|
13
|
+
export declare const SSR_RENDER_MAX_JSON_DEPTH = 64;
|
|
14
|
+
export declare const SSR_RENDER_MAX_MESSAGE_BYTES: number;
|
|
15
|
+
export declare const SSR_RENDER_DEADLINE_MS = 120000;
|
|
16
|
+
export declare const SSR_RENDER_CLOSE_DEADLINE_MS = 5000;
|
|
17
|
+
export declare const SSR_RENDER_CONTROL_ID = "/@ng-doc/ssr-render-control";
|
|
18
|
+
export declare const SSR_RENDER_CONTROL_EVENT = "ngdoc:ssr-render-fence";
|
|
19
|
+
export interface SsrRenderLimits {
|
|
20
|
+
readonly maxActive: number;
|
|
21
|
+
readonly maxQueued: number;
|
|
22
|
+
readonly maxDepth: number;
|
|
23
|
+
readonly maxMessageBytes: number;
|
|
24
|
+
readonly requestDeadlineMs: number;
|
|
25
|
+
readonly startupDeadlineMs: number;
|
|
26
|
+
readonly fenceDeadlineMs: number;
|
|
27
|
+
readonly closeDeadlineMs: number;
|
|
28
|
+
}
|
|
29
|
+
export declare const DEFAULT_SSR_RENDER_LIMITS: SsrRenderLimits;
|
|
30
|
+
export interface SerializedSsrError {
|
|
31
|
+
readonly name: string;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
readonly stack?: string;
|
|
34
|
+
readonly code?: string;
|
|
35
|
+
}
|
|
36
|
+
interface Tagged {
|
|
37
|
+
readonly version: typeof SSR_RENDER_PROTOCOL_VERSION;
|
|
38
|
+
readonly epoch: string;
|
|
39
|
+
}
|
|
40
|
+
export type ParentToRendererMessage = (Tagged & {
|
|
41
|
+
readonly type: 'start';
|
|
42
|
+
readonly entry: string;
|
|
43
|
+
readonly controlId: string;
|
|
44
|
+
readonly limits: SsrRenderLimits;
|
|
45
|
+
}) | (Tagged & {
|
|
46
|
+
readonly type: 'hot';
|
|
47
|
+
readonly payload: HotPayload;
|
|
48
|
+
}) | (Tagged & {
|
|
49
|
+
readonly type: 'render';
|
|
50
|
+
readonly id: number;
|
|
51
|
+
readonly request: NgDocSsrRequest;
|
|
52
|
+
}) | (Tagged & {
|
|
53
|
+
readonly type: 'cancel';
|
|
54
|
+
readonly id: number;
|
|
55
|
+
}) | (Tagged & {
|
|
56
|
+
readonly type: 'fence';
|
|
57
|
+
readonly id: number;
|
|
58
|
+
readonly sequence: number;
|
|
59
|
+
}) | (Tagged & {
|
|
60
|
+
readonly type: 'close';
|
|
61
|
+
});
|
|
62
|
+
export type RendererToParentMessage = (Tagged & {
|
|
63
|
+
readonly type: 'ready';
|
|
64
|
+
}) | (Tagged & {
|
|
65
|
+
readonly type: 'transport';
|
|
66
|
+
readonly payload: HotPayload;
|
|
67
|
+
}) | (Tagged & {
|
|
68
|
+
readonly type: 'rendered';
|
|
69
|
+
readonly id: number;
|
|
70
|
+
readonly html: string;
|
|
71
|
+
}) | (Tagged & {
|
|
72
|
+
readonly type: 'render-error';
|
|
73
|
+
readonly id: number;
|
|
74
|
+
readonly error: SerializedSsrError;
|
|
75
|
+
}) | (Tagged & {
|
|
76
|
+
readonly type: 'fence-ready';
|
|
77
|
+
readonly id: number;
|
|
78
|
+
readonly sequence: number;
|
|
79
|
+
}) | (Tagged & {
|
|
80
|
+
readonly type: 'fenced';
|
|
81
|
+
readonly id: number;
|
|
82
|
+
readonly sequence: number;
|
|
83
|
+
}) | (Tagged & {
|
|
84
|
+
readonly type: 'fence-error';
|
|
85
|
+
readonly id: number;
|
|
86
|
+
readonly error: SerializedSsrError;
|
|
87
|
+
}) | (Tagged & {
|
|
88
|
+
readonly type: 'closed';
|
|
89
|
+
}) | (Tagged & {
|
|
90
|
+
readonly type: 'fatal';
|
|
91
|
+
readonly error: SerializedSsrError;
|
|
92
|
+
});
|
|
93
|
+
export declare function isParentToRendererMessage(value: unknown): value is ParentToRendererMessage;
|
|
94
|
+
export declare function isRendererToParentMessage(value: unknown): value is RendererToParentMessage;
|
|
95
|
+
export declare function messageBytes(value: unknown): number;
|
|
96
|
+
export declare function validateEntry(entry: unknown): asserts entry is string;
|
|
97
|
+
export declare function validateRequest(value: unknown, maxDepth?: number): asserts value is NgDocSsrRequest;
|
|
98
|
+
export declare function validateJson(value: unknown, maxDepth?: number): void;
|
|
99
|
+
export declare function serializeError(error: unknown): SerializedSsrError;
|
|
100
|
+
export declare function reviveError(error: SerializedSsrError, prefix?: string): Error;
|
|
101
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type Plugin, type ViteDevServer } from 'vite';
|
|
2
|
+
import { type NgDocSsrRequest, type SsrRenderLimits } from './ssr-renderer-protocol.js';
|
|
3
|
+
export type { NgDocSsrJsonValue, NgDocSsrRequest } from './ssr-renderer-protocol.js';
|
|
4
|
+
export interface NgDocViteSsrRenderer {
|
|
5
|
+
render(request: NgDocSsrRequest, options?: {
|
|
6
|
+
readonly signal?: AbortSignal;
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
close(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export interface SsrRendererOwnerOptions {
|
|
11
|
+
readonly limits?: SsrRenderLimits;
|
|
12
|
+
readonly entryUrl?: URL;
|
|
13
|
+
readonly epoch?: () => string;
|
|
14
|
+
/** @internal Test port: the platform whose process supervision the owner uses. */
|
|
15
|
+
readonly platform?: NodeJS.Platform;
|
|
16
|
+
/** @internal Test port: ends a Windows process tree (`taskkill /T /F`). */
|
|
17
|
+
readonly killTree?: (pid: number) => void;
|
|
18
|
+
}
|
|
19
|
+
/** One process-isolated SSR renderer owned by one NgDoc Vite plugin. */
|
|
20
|
+
export declare class OwnedSsrRenderer implements NgDocViteSsrRenderer {
|
|
21
|
+
private readonly limits;
|
|
22
|
+
private readonly entryUrl;
|
|
23
|
+
private readonly createEpoch;
|
|
24
|
+
/**
|
|
25
|
+
* Windows has no process groups: the renderer is not detached (a detached child gets a console
|
|
26
|
+
* of its own there) and is ended together with everything it started while it is alive.
|
|
27
|
+
*/
|
|
28
|
+
private readonly windows;
|
|
29
|
+
private readonly killTree;
|
|
30
|
+
private server?;
|
|
31
|
+
private entry?;
|
|
32
|
+
private runtime?;
|
|
33
|
+
private serverTransport?;
|
|
34
|
+
private starting?;
|
|
35
|
+
private terminating?;
|
|
36
|
+
private failure?;
|
|
37
|
+
private disposed;
|
|
38
|
+
private disposal?;
|
|
39
|
+
private sequence;
|
|
40
|
+
private observedHotSequence;
|
|
41
|
+
private fencedHotSequence;
|
|
42
|
+
private fenceChain;
|
|
43
|
+
private readonly fences;
|
|
44
|
+
private readonly active;
|
|
45
|
+
private readonly queue;
|
|
46
|
+
constructor(options?: SsrRendererOwnerOptions);
|
|
47
|
+
select(entry: string): NgDocViteSsrRenderer;
|
|
48
|
+
attach(server: ViteDevServer): void;
|
|
49
|
+
controlModule(id: string): string | undefined;
|
|
50
|
+
render(request: NgDocSsrRequest, options?: {
|
|
51
|
+
readonly signal?: AbortSignal;
|
|
52
|
+
}): Promise<string>;
|
|
53
|
+
close(): Promise<void>;
|
|
54
|
+
private pump;
|
|
55
|
+
private start;
|
|
56
|
+
private abort;
|
|
57
|
+
private finish;
|
|
58
|
+
private ensureRuntime;
|
|
59
|
+
private ensureFenced;
|
|
60
|
+
private receive;
|
|
61
|
+
private send;
|
|
62
|
+
private fail;
|
|
63
|
+
private closeOwnedRuntime;
|
|
64
|
+
private terminateRuntime;
|
|
65
|
+
private kill;
|
|
66
|
+
/** Our child itself, as Node tracks it: never a probe of a pid that may have been reused. */
|
|
67
|
+
private running;
|
|
68
|
+
private groupAlive;
|
|
69
|
+
private waitForGroupExit;
|
|
70
|
+
}
|
|
71
|
+
/** Pass the complete array returned by one createNgDocVitePlugin call. */
|
|
72
|
+
export declare function getNgDocViteSsrRenderer(plugins: readonly Plugin[], options: {
|
|
73
|
+
readonly entry: string;
|
|
74
|
+
}): NgDocViteSsrRenderer;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Transforms the application's index.html. */
|
|
2
|
+
export type ThemeIndexTransformer = (content: string) => Promise<string>;
|
|
3
|
+
/**
|
|
4
|
+
* Loads the theme restore script once and returns a transformer that inlines it at the start of
|
|
5
|
+
* the document head, so the reader's theme applies before the application starts. A document that
|
|
6
|
+
* already carries the script is returned unchanged.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createThemeIndexTransformer(scriptUrl?: URL): Promise<ThemeIndexTransformer>;
|
|
9
|
+
/**
|
|
10
|
+
* The plugin's `transformIndexHtml` handler. The script is a sibling of the bundled Vite entries
|
|
11
|
+
* (the build copies it to `vite/restore-theme.js`), so the default URL resolves from every entry.
|
|
12
|
+
*/
|
|
13
|
+
export declare function transformNgDocIndex(html: string): Promise<string>;
|