@ng-doc/builder 22.0.0-beta.2 → 22.1.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/helpers/get-playground-metadata.js +7 -1
- package/engine/builders/helpers/get-playground-metadata.js.map +1 -1
- package/engine/builders/page/demo-assets.builder.js +10 -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 +5 -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 +10 -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 +7298 -0
- package/generator/bootstrap/candidate-output-committer.d.ts +12 -0
- package/generator/bootstrap/cli.d.ts +42 -0
- package/generator/bootstrap/cli.js +7147 -0
- package/generator/bootstrap/constants.d.ts +4 -0
- package/generator/bootstrap/index.d.ts +111 -0
- package/generator/bootstrap/index.js +5034 -0
- package/generator/bootstrap/prerender-command.d.ts +31 -0
- package/generator/bootstrap/process-tree.d.ts +49 -0
- package/generator/build-metafile.json +12009 -0
- package/generator/build-provenance.json +121 -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 +131 -0
- package/generator/compiler/index.js +19009 -0
- package/generator/compiler/link.d.ts +38 -0
- package/generator/compiler/memo.d.ts +44 -0
- package/generator/compiler/plan.d.ts +116 -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/code-snippet.d.ts +20 -0
- package/generator/content/content-compiler.d.ts +122 -0
- package/generator/content/format-cache.d.ts +108 -0
- package/generator/content/highlight-cache.d.ts +115 -0
- package/generator/content/html-pipeline.d.ts +179 -0
- package/generator/content/html-pool.d.ts +245 -0
- package/generator/content/html-worker.js +2181 -0
- package/generator/content-module-ids.d.ts +8 -0
- package/generator/contracts.d.ts +1102 -0
- package/generator/contracts.js +15 -0
- package/generator/discovery/index.d.ts +79 -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 +51 -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 +80 -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 +29 -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/formatting.d.ts +27 -0
- package/generator/semantic/fragments.d.ts +37 -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 +59 -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-app.ts.nunj +37 -0
- package/generator/templates/demo-assets.ts.nunj +25 -0
- package/generator/templates/demo-routes.ts.nunj +23 -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 +7 -0
- package/generator/templates/page-header.html.nunj +5 -0
- package/generator/templates/page-wrapper.ts.nunj +69 -0
- package/generator/templates/page.ts.nunj +104 -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 +53 -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 +303 -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 +336 -0
- package/generator/vite/application-builder.schema.json +46 -0
- package/generator/vite/application.d.ts +105 -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/demo-application.d.ts +34 -0
- package/generator/vite/dev-server-builder.js +339 -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 +212 -0
- package/generator/vite/index.d.ts +13 -0
- package/generator/vite/index.js +11949 -0
- package/generator/vite/lease.d.ts +6 -0
- package/generator/vite/lifecycle.d.ts +120 -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 +465 -0
- package/generator/vite/prerender-runtime.d.ts +79 -0
- package/generator/vite/prerender.d.ts +29 -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-cache.d.ts +34 -0
- package/helpers/format-cache.js +26 -0
- package/helpers/format-cache.js.map +1 -0
- package/helpers/format-code.d.ts +2 -1
- package/helpers/format-code.js +20 -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/to-template-string.d.ts +5 -1
- package/helpers/to-template-string.js +7 -2
- package/helpers/to-template-string.js.map +1 -1
- 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/code-block-options.d.ts +5 -0
- package/interfaces/configuration.d.ts +84 -1
- package/package.json +87 -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 +11 -2
- package/parsers/parse-code-block-params.js +50 -18
- 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 +859 -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 +105 -0
- package/schematics/migrate-to-vite/setup/workspace.js +245 -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 +30 -0
- package/schematics/migrate-to-vite/testing/fixtures.js +306 -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 +24 -0
- package/schematics/vite-setup/index.js +212 -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/api/class-declaration.html.nunj +5 -3
- package/templates/context.ts.nunj +3 -0
- package/templates/demo-app.ts.nunj +37 -0
- package/templates/demo-routes.ts.nunj +23 -0
- package/templates/helpers/badge.html.nunj +1 -1
- package/templates/helpers/status.html.nunj +4 -8
- package/templates/index.ts.nunj +5 -0
- package/templates/page-wrapper.ts.nunj +30 -2
- package/templates/page.ts.nunj +33 -1
- package/templates/parts/page-tags.html.nunj +1 -1
- package/templates/playgrounds.ts.nunj +8 -9
- package/templates/routes.ts.nunj +10 -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 +303 -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,3 @@
|
|
|
1
|
+
import type { ArtifactSnapshot, PublishedGeneratorConfiguration } from '../contracts.js';
|
|
2
|
+
export declare function requirePublishedConfiguration(snapshot: ArtifactSnapshot): PublishedGeneratorConfiguration;
|
|
3
|
+
export declare function sameRuntimeConfiguration(left: PublishedGeneratorConfiguration, right: PublishedGeneratorConfiguration): boolean;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** The generated module of the demo application, in the output root (`demo-app.ts.nunj`). */
|
|
2
|
+
export declare const DEMO_APPLICATION_MODULE = "demo-app.ts";
|
|
3
|
+
/**
|
|
4
|
+
* The demo application of a generation: its generated module and the URL path of its pages.
|
|
5
|
+
* The NgDoc plugin publishes it to the application plugin (`NgDocDemoApplicationApi`).
|
|
6
|
+
*/
|
|
7
|
+
export interface NgDocDemoApplication {
|
|
8
|
+
/** The generated module (absolute), which exports the routes and the providers import. */
|
|
9
|
+
readonly module: string;
|
|
10
|
+
/** The URL path of the demo pages, relative to the base href, without slashes around it. */
|
|
11
|
+
readonly path: string;
|
|
12
|
+
/** Every demo page, relative to the base href (`<path>/<page route>/<demo name>`). */
|
|
13
|
+
readonly pages: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* What the NgDoc plugin offers the application plugin through `api.ngDocDemoApplication`.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export interface NgDocDemoApplicationApi {
|
|
20
|
+
readonly schemaVersion: 1;
|
|
21
|
+
/**
|
|
22
|
+
* The demo application of the build's generation, generating first if the build has not yet: a
|
|
23
|
+
* build adds the demo page's input before it starts, when there is one.
|
|
24
|
+
*/
|
|
25
|
+
resolve(): Promise<NgDocDemoApplication | undefined>;
|
|
26
|
+
/** The demo application of the current generation of the development server, if any. */
|
|
27
|
+
current(): Promise<NgDocDemoApplication | undefined>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Reads the demo application from a committed output root: a generation writes `demo-app.ts`
|
|
31
|
+
* only when a guide has demo pages, and that module names the URL path of the pages.
|
|
32
|
+
* @param outputRoot - The output root of the published generation.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readDemoApplication(outputRoot: string): Promise<NgDocDemoApplication | undefined>;
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
// libs/builder/generator/vite/dev-server-builder.ts
|
|
2
|
+
import { createBuilder } from "@angular-devkit/architect";
|
|
3
|
+
|
|
4
|
+
// libs/builder/generator/vite/builders.ts
|
|
5
|
+
import path2 from "node:path";
|
|
6
|
+
import { Observable } from "rxjs";
|
|
7
|
+
import { createServer as viteCreateServer } from "vite";
|
|
8
|
+
|
|
9
|
+
// libs/builder/generator/vite/production.ts
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
import { rm, writeFile } from "node:fs/promises";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { build as viteBuild } from "vite";
|
|
14
|
+
|
|
15
|
+
// libs/builder/generator/vite/angular-version.ts
|
|
16
|
+
import { createRequire } from "node:module";
|
|
17
|
+
var TRANSFORM_OPTIONS_ANGULAR = "22.2.0";
|
|
18
|
+
var VERSION = /^(\d+)\.(\d+)\.(\d+)(?:[-+][0-9A-Za-z.+-]*)?$/;
|
|
19
|
+
function parse(version) {
|
|
20
|
+
const match = VERSION.exec(version);
|
|
21
|
+
return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : void 0;
|
|
22
|
+
}
|
|
23
|
+
function usesTransformOptions([major, minor, patch]) {
|
|
24
|
+
const [lowMajor, lowMinor, lowPatch] = parse(TRANSFORM_OPTIONS_ANGULAR);
|
|
25
|
+
if (major !== lowMajor) return major > lowMajor;
|
|
26
|
+
if (minor !== lowMinor) return minor > lowMinor;
|
|
27
|
+
return patch >= lowPatch;
|
|
28
|
+
}
|
|
29
|
+
function isConsistentAngularBuild(compiler, build) {
|
|
30
|
+
const left = parse(compiler);
|
|
31
|
+
const right = parse(build);
|
|
32
|
+
if (!left || !right || left[0] !== right[0]) return false;
|
|
33
|
+
return usesTransformOptions(left) === usesTransformOptions(right);
|
|
34
|
+
}
|
|
35
|
+
function resolveVersion(name) {
|
|
36
|
+
try {
|
|
37
|
+
const manifest = createRequire(import.meta.url)(`${name}/package.json`);
|
|
38
|
+
return typeof manifest.version === "string" ? manifest.version : void 0;
|
|
39
|
+
} catch {
|
|
40
|
+
return void 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function resolveAngularCompilerVersion() {
|
|
44
|
+
return resolveVersion("@angular/compiler-cli");
|
|
45
|
+
}
|
|
46
|
+
function resolveAngularBuildVersion() {
|
|
47
|
+
return resolveVersion("@angular/build");
|
|
48
|
+
}
|
|
49
|
+
function assertConsistentAngularBuild(compiler = resolveAngularCompilerVersion(), build = resolveAngularBuildVersion()) {
|
|
50
|
+
if (compiler && build && isConsistentAngularBuild(compiler, build)) return;
|
|
51
|
+
if (!compiler || !build) {
|
|
52
|
+
const missing = !compiler ? "@angular/compiler-cli" : "@angular/build";
|
|
53
|
+
throw new Error(
|
|
54
|
+
`[NGDOC_VITE_ANGULAR_VERSION] The NgDoc Vite engine needs @angular/compiler-cli and @angular/build of the application's Angular 22, but ${missing} is not installed. Install it in the application's devDependencies: npm i -D ${missing}@22.`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
throw new Error(
|
|
58
|
+
`[NGDOC_VITE_ANGULAR_VERSION] NgDoc resolves @angular/compiler-cli ${compiler} and @angular/build ${build}, which belong to different Angular releases: the Vite engine drives @angular/build through the compiler's version, so both must be from before ${TRANSFORM_OPTIONS_ANGULAR} or both from ${TRANSFORM_OPTIONS_ANGULAR} or later. This usually means a second @angular/build was installed for NgDoc: check with \`npm ls @angular/build\`, then install the same Angular version for every @angular/* package (ng update @angular/core@22 @angular/cli@22) and reinstall, or deduplicate @angular/build (npm dedupe, an override or a resolution).`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// libs/builder/generator/vite/prerender.ts
|
|
63
|
+
import { fork } from "node:child_process";
|
|
64
|
+
import { fileURLToPath } from "node:url";
|
|
65
|
+
function prerenderError(code, message2) {
|
|
66
|
+
return new Error(`[${code}] ${message2}`);
|
|
67
|
+
}
|
|
68
|
+
function heapArguments(execArgv) {
|
|
69
|
+
return execArgv.filter(
|
|
70
|
+
(item) => /^--(?:max-old-space-size|max-semi-space-size|stack-size)=/.test(item)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
function prerenderNgDoc(options) {
|
|
74
|
+
const request = {
|
|
75
|
+
browserDir: options.browserDir,
|
|
76
|
+
serverEntry: options.serverEntry,
|
|
77
|
+
routes: [...options.routes ?? []],
|
|
78
|
+
discoverRoutes: options.discoverRoutes ?? true,
|
|
79
|
+
...options.routeTimeoutMs === void 0 ? {} : { routeTimeoutMs: options.routeTimeoutMs },
|
|
80
|
+
...options.demoServerEntry ? { demoServerEntry: options.demoServerEntry } : {}
|
|
81
|
+
};
|
|
82
|
+
if (request.routeTimeoutMs !== void 0 && (!Number.isSafeInteger(request.routeTimeoutMs) || request.routeTimeoutMs < 1)) {
|
|
83
|
+
return Promise.reject(
|
|
84
|
+
prerenderError("NGDOC_PRERENDER_OPTION", "routeTimeoutMs must be a positive integer.")
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
if (options.signal?.aborted) {
|
|
89
|
+
reject(prerenderError("NGDOC_PRERENDER_ABORTED", "Prerendering was aborted."));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const child = fork(
|
|
93
|
+
fileURLToPath(options.entryUrl ?? new URL("./prerender-entry.js", import.meta.url)),
|
|
94
|
+
[],
|
|
95
|
+
// Keep the host's heap limits (a large site renders many routes in one process), nothing else.
|
|
96
|
+
{ execArgv: heapArguments(process.execArgv), stdio: ["ignore", "inherit", "inherit", "ipc"] }
|
|
97
|
+
);
|
|
98
|
+
let reply;
|
|
99
|
+
const abort = () => child.kill("SIGKILL");
|
|
100
|
+
options.signal?.addEventListener("abort", abort, { once: true });
|
|
101
|
+
child.on("message", (message2) => {
|
|
102
|
+
reply ??= message2;
|
|
103
|
+
});
|
|
104
|
+
child.once("error", (error) => {
|
|
105
|
+
options.signal?.removeEventListener("abort", abort);
|
|
106
|
+
reject(error);
|
|
107
|
+
});
|
|
108
|
+
child.once("exit", (code, signal) => {
|
|
109
|
+
options.signal?.removeEventListener("abort", abort);
|
|
110
|
+
if (options.signal?.aborted) {
|
|
111
|
+
reject(prerenderError("NGDOC_PRERENDER_ABORTED", "Prerendering was aborted."));
|
|
112
|
+
} else if (reply?.type === "result" && code === 0) {
|
|
113
|
+
resolve(reply.report);
|
|
114
|
+
} else if (reply?.type === "error") {
|
|
115
|
+
reject(new Error(reply.message));
|
|
116
|
+
} else {
|
|
117
|
+
reject(
|
|
118
|
+
prerenderError(
|
|
119
|
+
"NGDOC_PRERENDER_EXIT",
|
|
120
|
+
`The prerender process exited without a result (code=${String(code)}, signal=${String(signal)}).`
|
|
121
|
+
)
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
child.send(request, () => {
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// libs/builder/generator/vite/vite-version.ts
|
|
131
|
+
import { version as resolvedViteVersion } from "vite";
|
|
132
|
+
var SUPPORTED_VITE_RANGE = "^8.3.0";
|
|
133
|
+
var SUPPORTED_MAJOR = 8;
|
|
134
|
+
var MINIMUM_MINOR = 3;
|
|
135
|
+
function isSupportedViteVersion(version) {
|
|
136
|
+
const match = /^(\d+)\.(\d+)\.(\d+)(-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.exec(version);
|
|
137
|
+
if (!match) return false;
|
|
138
|
+
const [major, minor, patch] = [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
139
|
+
if (major !== SUPPORTED_MAJOR || minor < MINIMUM_MINOR) return false;
|
|
140
|
+
return !(match[4] && minor === MINIMUM_MINOR && patch === 0);
|
|
141
|
+
}
|
|
142
|
+
function assertSupportedViteVersion(found = resolvedViteVersion) {
|
|
143
|
+
if (found && isSupportedViteVersion(found)) return;
|
|
144
|
+
throw new Error(
|
|
145
|
+
`[NGDOC_VITE_VERSION] The NgDoc Vite engine requires vite ${SUPPORTED_VITE_RANGE}, but vite ${found || "(unknown version)"} is running. Install a supported release in the application's devDependencies: npm i -D vite@${SUPPORTED_VITE_RANGE}. The legacy builders (@ng-doc/builder:application and dev-server) do not use Vite.`
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// libs/builder/generator/vite/production.ts
|
|
150
|
+
var defaultDependencies = {
|
|
151
|
+
build: viteBuild,
|
|
152
|
+
prerender: prerenderNgDoc
|
|
153
|
+
};
|
|
154
|
+
function generationHandoff() {
|
|
155
|
+
const handoff = { schemaVersion: 1 };
|
|
156
|
+
return { name: "@ng-doc/vite:generation-handoff", api: { ngDocGeneration: handoff } };
|
|
157
|
+
}
|
|
158
|
+
function buildError(code, message2) {
|
|
159
|
+
return new Error(`[${code}] ${message2}`);
|
|
160
|
+
}
|
|
161
|
+
function applicationProbe() {
|
|
162
|
+
let found;
|
|
163
|
+
return {
|
|
164
|
+
plugin: {
|
|
165
|
+
name: "@ng-doc/vite:build-probe",
|
|
166
|
+
configResolved(config) {
|
|
167
|
+
const matches = config.plugins.filter(
|
|
168
|
+
(plugin) => plugin.api?.ngDocApplication?.schemaVersion === 1
|
|
169
|
+
);
|
|
170
|
+
if (matches.length > 1) {
|
|
171
|
+
throw buildError(
|
|
172
|
+
"NGDOC_VITE_APPLICATION",
|
|
173
|
+
"Expected at most one createNgDocApplicationPlugin in the Vite configuration."
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
found = matches[0]?.api.ngDocApplication;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
api: () => found
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
async function buildNgDocViteApplication(options, dependencies = defaultDependencies) {
|
|
183
|
+
assertSupportedViteVersion();
|
|
184
|
+
assertConsistentAngularBuild();
|
|
185
|
+
const configFile = path.resolve(options.configFile);
|
|
186
|
+
const outputPath = path.resolve(options.outputPath);
|
|
187
|
+
const browser = path.join(outputPath, "browser");
|
|
188
|
+
const serverDirectory = path.join(outputPath, "server");
|
|
189
|
+
const serverEntry = path.join(serverDirectory, "server.mjs");
|
|
190
|
+
const mode = options.mode ?? "production";
|
|
191
|
+
const log = options.log ?? (() => {
|
|
192
|
+
});
|
|
193
|
+
const aborted = () => {
|
|
194
|
+
if (options.signal?.aborted)
|
|
195
|
+
throw buildError("NGDOC_VITE_BUILD_ABORTED", "The build was aborted.");
|
|
196
|
+
};
|
|
197
|
+
const timed = async (label, step) => {
|
|
198
|
+
const started = Date.now();
|
|
199
|
+
const value = await step();
|
|
200
|
+
log(`${label} in ${((Date.now() - started) / 1e3).toFixed(1)} s`);
|
|
201
|
+
return value;
|
|
202
|
+
};
|
|
203
|
+
let ssr = options.ssr;
|
|
204
|
+
const noServer = () => buildError(
|
|
205
|
+
"NGDOC_VITE_SERVER_ENTRY",
|
|
206
|
+
"Prerendering needs the server bundle: build it (ssr) from createNgDocApplicationPlugin with a server entry."
|
|
207
|
+
);
|
|
208
|
+
if (!options.skipBuild && options.prerender === true && options.ssr === false) throw noServer();
|
|
209
|
+
if (!options.skipBuild) {
|
|
210
|
+
const probe = applicationProbe();
|
|
211
|
+
const generation = generationHandoff();
|
|
212
|
+
await timed(
|
|
213
|
+
`Built the browser bundle into ${browser}`,
|
|
214
|
+
() => dependencies.build({
|
|
215
|
+
configFile,
|
|
216
|
+
mode,
|
|
217
|
+
plugins: [probe.plugin, generation],
|
|
218
|
+
build: { outDir: browser, emptyOutDir: true }
|
|
219
|
+
})
|
|
220
|
+
);
|
|
221
|
+
aborted();
|
|
222
|
+
const entry = probe.api()?.serverEntry;
|
|
223
|
+
ssr ??= entry !== void 0;
|
|
224
|
+
if (!ssr) {
|
|
225
|
+
await rm(serverDirectory, { recursive: true, force: true });
|
|
226
|
+
await rm(path.join(outputPath, "prerendered-routes.json"), { force: true });
|
|
227
|
+
if (options.prerender === true) throw noServer();
|
|
228
|
+
} else {
|
|
229
|
+
if (!entry) {
|
|
230
|
+
throw buildError(
|
|
231
|
+
"NGDOC_VITE_SERVER_ENTRY",
|
|
232
|
+
"The server build needs createNgDocApplicationPlugin with a server entry in the Vite configuration."
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
await timed(
|
|
236
|
+
`Built the server bundle into ${serverDirectory}`,
|
|
237
|
+
() => dependencies.build({
|
|
238
|
+
configFile,
|
|
239
|
+
mode,
|
|
240
|
+
plugins: [generation],
|
|
241
|
+
build: {
|
|
242
|
+
ssr: true,
|
|
243
|
+
outDir: serverDirectory,
|
|
244
|
+
emptyOutDir: true,
|
|
245
|
+
rolldownOptions: {
|
|
246
|
+
input: { server: entry },
|
|
247
|
+
output: {
|
|
248
|
+
format: "es",
|
|
249
|
+
entryFileNames: "[name].mjs",
|
|
250
|
+
chunkFileNames: "chunks/[name]-[hash].mjs"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
aborted();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
const prerender = options.prerender ?? (options.skipBuild ? true : ssr === true);
|
|
260
|
+
if (!prerender) return { browser, ...ssr ? { server: serverEntry } : {} };
|
|
261
|
+
const demoServerEntry = path.join(serverDirectory, "demo-server.mjs");
|
|
262
|
+
const report = await timed(
|
|
263
|
+
"Prerendered the routes",
|
|
264
|
+
() => dependencies.prerender({
|
|
265
|
+
browserDir: browser,
|
|
266
|
+
serverEntry,
|
|
267
|
+
...existsSync(demoServerEntry) && existsSync(path.join(browser, "ng-doc-demo.html")) ? { demoServerEntry } : {},
|
|
268
|
+
routes: options.routes ?? [],
|
|
269
|
+
discoverRoutes: options.discoverRoutes ?? true,
|
|
270
|
+
...options.routeTimeoutMs === void 0 ? {} : { routeTimeoutMs: options.routeTimeoutMs },
|
|
271
|
+
...options.signal ? { signal: options.signal } : {}
|
|
272
|
+
})
|
|
273
|
+
);
|
|
274
|
+
await writeFile(
|
|
275
|
+
path.join(outputPath, "prerendered-routes.json"),
|
|
276
|
+
`${JSON.stringify({ routes: report.routes, excluded: report.excluded }, null, 2)}
|
|
277
|
+
`
|
|
278
|
+
);
|
|
279
|
+
log(`Prerendered ${report.routes.length} route(s) into ${browser}`);
|
|
280
|
+
for (const { route, message: message2 } of report.warnings ?? []) log(`Warning: ${route}: ${message2}`);
|
|
281
|
+
if (report.errors.length) {
|
|
282
|
+
log(`The application logged ${report.errors.length} error(s) while prerendering:`);
|
|
283
|
+
for (const { route, message: message2 } of report.errors.slice(0, 10)) log(` ${route}: ${message2}`);
|
|
284
|
+
}
|
|
285
|
+
return { browser, server: serverEntry, prerendered: report };
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// libs/builder/generator/vite/builders.ts
|
|
289
|
+
var defaultDependencies2 = {
|
|
290
|
+
build: (options) => buildNgDocViteApplication(options),
|
|
291
|
+
createServer: viteCreateServer
|
|
292
|
+
};
|
|
293
|
+
function message(error) {
|
|
294
|
+
return error instanceof Error ? error.message : String(error);
|
|
295
|
+
}
|
|
296
|
+
function runViteDevServerBuilder(options, context, dependencies = defaultDependencies2) {
|
|
297
|
+
return new Observable((subscriber) => {
|
|
298
|
+
let server;
|
|
299
|
+
let stopped = false;
|
|
300
|
+
const close = () => server?.close().catch((error) => context.logger.error(message(error)));
|
|
301
|
+
void (async () => {
|
|
302
|
+
try {
|
|
303
|
+
server = await dependencies.createServer({
|
|
304
|
+
configFile: path2.resolve(context.workspaceRoot, options.configFile),
|
|
305
|
+
mode: options.mode ?? "development",
|
|
306
|
+
server: {
|
|
307
|
+
...options.host === void 0 ? {} : { host: options.host },
|
|
308
|
+
...options.port === void 0 ? {} : { port: options.port }
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
if (stopped) {
|
|
312
|
+
await close();
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
await server.listen();
|
|
316
|
+
server.printUrls();
|
|
317
|
+
const baseUrl = server.resolvedUrls?.local[0];
|
|
318
|
+
subscriber.next({ success: true, ...baseUrl ? { baseUrl } : {} });
|
|
319
|
+
} catch (error) {
|
|
320
|
+
context.logger.error(message(error));
|
|
321
|
+
await close();
|
|
322
|
+
subscriber.next({ success: false, error: message(error) });
|
|
323
|
+
subscriber.complete();
|
|
324
|
+
}
|
|
325
|
+
})();
|
|
326
|
+
return () => {
|
|
327
|
+
stopped = true;
|
|
328
|
+
void close();
|
|
329
|
+
};
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// libs/builder/generator/vite/dev-server-builder.ts
|
|
334
|
+
var dev_server_builder_default = createBuilder(
|
|
335
|
+
(options, context) => runViteDevServerBuilder(options, context)
|
|
336
|
+
);
|
|
337
|
+
export {
|
|
338
|
+
dev_server_builder_default as default
|
|
339
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"title": "NgDoc Vite development server",
|
|
4
|
+
"description": "Serves an Angular application with the Vite development server and the NgDoc Vite engine.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"configFile": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "The Vite configuration file, relative to the workspace root."
|
|
10
|
+
},
|
|
11
|
+
"mode": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "The Vite mode.",
|
|
14
|
+
"default": "development"
|
|
15
|
+
},
|
|
16
|
+
"host": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "The host to listen on. Defaults to the Vite configuration's server.host."
|
|
19
|
+
},
|
|
20
|
+
"port": {
|
|
21
|
+
"type": "number",
|
|
22
|
+
"description": "The port to listen on. Defaults to the Vite configuration's server.port."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": ["configFile"],
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { HtmlTagDescriptor, ViteDevServer } from 'vite';
|
|
2
|
+
/** Timings of the development style gate, in milliseconds. */
|
|
3
|
+
export interface NgDocDevStyleGateTimings {
|
|
4
|
+
/** How long one style sheet may hide content before the gate stops waiting for it. */
|
|
5
|
+
readonly sheet: number;
|
|
6
|
+
/** How long the page must add no component style sheet before the initial load is over. */
|
|
7
|
+
readonly quiet: number;
|
|
8
|
+
/** How long after the script starts the initial load is over, whatever happens. */
|
|
9
|
+
readonly limit: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Returns the inline script that keeps the first paint of a development page from showing
|
|
13
|
+
* components without their styles.
|
|
14
|
+
*
|
|
15
|
+
* With live reload, Analog compiles component styles to external style sheets: Angular adds a
|
|
16
|
+
* `<link rel="stylesheet">` for a component when it first creates it, in the same task as the
|
|
17
|
+
* component's elements. A link added by a script does not block rendering, so the component
|
|
18
|
+
* paints unstyled until its sheet arrives. Production inlines the styles, and server rendering
|
|
19
|
+
* puts them in the page, so neither has the problem.
|
|
20
|
+
*
|
|
21
|
+
* Only the initial load is gated: from the start of the page until it has added no component
|
|
22
|
+
* sheet for `quiet` ms with none pending, until the reader's first input, or until `limit` ms,
|
|
23
|
+
* whichever comes first. During it, the gate hides the body until every component sheet the page
|
|
24
|
+
* adds has loaded (or failed, or waited `sheet` ms), so the first paint is styled, the way the
|
|
25
|
+
* render-blocking styles of a production page are. Angular names a component in its sheet's URL
|
|
26
|
+
* (`?ngcomp`); other sheets are ignored. After the initial load the gate hides nothing: a
|
|
27
|
+
* component created later (a dialog, the search palette) may paint unstyled for a moment in
|
|
28
|
+
* development, but the page never blanks and focus is never moved off a hidden element.
|
|
29
|
+
*
|
|
30
|
+
* It is a string, not a function's source, so no build or coverage tool can rewrite it with
|
|
31
|
+
* helpers the page does not have. The mutation observer runs before the next paint, because
|
|
32
|
+
* Angular adds the link and the elements in one task.
|
|
33
|
+
* @param timings - The timings, in milliseconds.
|
|
34
|
+
* @returns The script.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ngDocDevStyleGate(timings?: NgDocDevStyleGateTimings): string;
|
|
37
|
+
/** The development style gate with its default timings. */
|
|
38
|
+
export declare const NG_DOC_DEV_STYLE_GATE: string;
|
|
39
|
+
/**
|
|
40
|
+
* The index page tags that let the first paint of a development page look like production:
|
|
41
|
+
* the global style sheets inlined in `<head>`, and the component style gate.
|
|
42
|
+
*
|
|
43
|
+
* Vite adds a global style sheet with a script, after the application's modules have loaded, so
|
|
44
|
+
* the first paint has no global styles: no font, layout or theme background (a dark theme paints
|
|
45
|
+
* white first). Each inlined sheet is a `<style data-vite-dev-id>` with the id Vite's client
|
|
46
|
+
* uses for it: the client adopts the element, so the module's own copy replaces its text in
|
|
47
|
+
* place, and hot updates keep working, with no duplicate and no change of order. A sheet that
|
|
48
|
+
* fails to compile is left to the module, which reports the error.
|
|
49
|
+
* @param server - The development server.
|
|
50
|
+
* @param styles - The global style sheets, as absolute paths.
|
|
51
|
+
* @returns The tags to add to `<head>`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function ngDocDevStyleTags(server: ViteDevServer, styles: readonly string[]): Promise<HtmlTagDescriptor[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Reads the id and the CSS out of a style sheet module as Vite serves it in development. The
|
|
56
|
+
* page imports that same module, so transforming it here costs nothing extra; a `?direct`
|
|
57
|
+
* request would add a second module that every edit of the sheet then hot-updates, which makes
|
|
58
|
+
* the client reload the page.
|
|
59
|
+
* @param code - The module's code.
|
|
60
|
+
* @returns The sheet, or `undefined` for code in another shape.
|
|
61
|
+
*/
|
|
62
|
+
export declare function cssModuleSheet(code: string): {
|
|
63
|
+
id: string;
|
|
64
|
+
css: string;
|
|
65
|
+
} | undefined;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BuildResult, Diagnostic } from '../contracts.js';
|
|
2
|
+
export declare function diagnosticText(diagnostic: Diagnostic): string;
|
|
3
|
+
export declare function resultError(result: BuildResult, fallback: string): Error;
|
|
4
|
+
export declare function hostDiagnostic(code: string, message: string): Diagnostic;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FileChange } from '../contracts.js';
|
|
2
|
+
/**
|
|
3
|
+
* How often a recorded file outside the workspace is re-checked. These are configuration lookups
|
|
4
|
+
* (`.editorconfig`, `.prettierrc*`, `package.json` in the directories above the workspace) and
|
|
5
|
+
* rarely edited, so a change there is noticed within about a second.
|
|
6
|
+
*/
|
|
7
|
+
export declare const EXTERNAL_PROBE_INTERVAL_MS = 1000;
|
|
8
|
+
/**
|
|
9
|
+
* At most this many files outside the workspace are polled. More are handed to the native watcher
|
|
10
|
+
* as before, so a workspace whose inputs mostly live elsewhere never turns into a stat storm.
|
|
11
|
+
*/
|
|
12
|
+
export declare const MAX_EXTERNAL_PROBES = 512;
|
|
13
|
+
/** A file's probe state: its metadata signature, `missing`, or the code of a failed lookup. */
|
|
14
|
+
export declare function probeState(file: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Watches individual files outside the workspace by polling their metadata instead of attaching
|
|
17
|
+
* the shared native watcher to them. chokidar's FSEvents backend watches a missing or extension
|
|
18
|
+
* file through its directory and consolidates nearby streams upwards, so a probe such as
|
|
19
|
+
* `/.editorconfig` or `/package.json` made the Vite process subscribe to every file event on the
|
|
20
|
+
* disk (`/`, `/Users`). A poll costs one `stat` per probe per interval and sees exactly the probed
|
|
21
|
+
* path: its creation, change and removal.
|
|
22
|
+
*
|
|
23
|
+
* The baseline is taken synchronously when a path is added, before the generation that recorded
|
|
24
|
+
* it is published, so a change after that point is reported on the next poll.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ExternalProbeWatcher {
|
|
27
|
+
private readonly emit;
|
|
28
|
+
private readonly intervalMs;
|
|
29
|
+
private readonly states;
|
|
30
|
+
private timer?;
|
|
31
|
+
private polling;
|
|
32
|
+
private disposed;
|
|
33
|
+
constructor(emit: (change: FileChange) => void, intervalMs?: number);
|
|
34
|
+
get size(): number;
|
|
35
|
+
has(file: string): boolean;
|
|
36
|
+
add(files: readonly string[]): void;
|
|
37
|
+
/** One pass over every probe; exported for deterministic tests. */
|
|
38
|
+
poll(): Promise<void>;
|
|
39
|
+
dispose(): void;
|
|
40
|
+
}
|