@analogjs/platform 3.0.0-alpha.9 → 3.0.0-alpha.90
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/migrations/migration.json +7 -1
- package/package.json +28 -14
- package/src/index.d.ts +5 -2
- package/src/index.js +3 -1
- package/src/index.js.map +1 -1
- package/src/lib/analog-integration-plugin.d.ts +9 -0
- package/src/lib/analog-integration-plugin.js +22 -0
- package/src/lib/analog-integration-plugin.js.map +1 -0
- package/src/lib/clear-client-page-endpoint.d.ts +2 -2
- package/src/lib/clear-client-page-endpoint.js +27 -5
- package/src/lib/clear-client-page-endpoint.js.map +1 -1
- package/src/lib/content/marked/index.d.ts +5 -5
- package/src/lib/content/marked/index.js.map +1 -1
- package/src/lib/content/marked/marked-content-highlighter.d.ts +2 -2
- package/src/lib/content/marked/marked-content-highlighter.js.map +1 -1
- package/src/lib/content/marked/marked-setup.service.d.ts +8 -8
- package/src/lib/content/marked/marked-setup.service.js +7 -5
- package/src/lib/content/marked/marked-setup.service.js.map +1 -1
- package/src/lib/content/prism/angular.js.map +1 -1
- package/src/lib/content/prism/index.d.ts +1 -1
- package/src/lib/content/prism/index.js.map +1 -1
- package/src/lib/content/prism/options.d.ts +1 -1
- package/src/lib/content/prism/prism-highlighter.d.ts +5 -5
- package/src/lib/content/prism/prism-highlighter.js.map +1 -1
- package/src/lib/content/shiki/index.d.ts +3 -3
- package/src/lib/content/shiki/index.js +9 -6
- package/src/lib/content/shiki/index.js.map +1 -1
- package/src/lib/content/shiki/options.d.ts +8 -7
- package/src/lib/content/shiki/shiki-highlighter.d.ts +14 -13
- package/src/lib/content/shiki/shiki-highlighter.js +7 -4
- package/src/lib/content/shiki/shiki-highlighter.js.map +1 -1
- package/src/lib/content/utils/escape-html.d.ts +7 -0
- package/src/lib/content/utils/escape-html.js +16 -0
- package/src/lib/content/utils/escape-html.js.map +1 -0
- package/src/lib/content-plugin.d.ts +19 -19
- package/src/lib/content-plugin.js +34 -9
- package/src/lib/content-plugin.js.map +1 -1
- package/src/lib/deps-plugin.d.ts +2 -2
- package/src/lib/deps-plugin.js +24 -11
- package/src/lib/deps-plugin.js.map +1 -1
- package/src/lib/discover-library-routes.d.ts +19 -0
- package/src/lib/discover-library-routes.js +72 -0
- package/src/lib/discover-library-routes.js.map +1 -0
- package/src/lib/i18n-component-registry-plugin.d.ts +17 -0
- package/src/lib/i18n-component-registry-plugin.js +100 -0
- package/src/lib/i18n-component-registry-plugin.js.map +1 -0
- package/src/lib/i18n-extract-plugin.d.ts +33 -0
- package/src/lib/inject-server-fn-ids.d.ts +17 -0
- package/src/lib/inject-server-fn-ids.js +94 -0
- package/src/lib/inject-server-fn-ids.js.map +1 -0
- package/src/lib/json-ld-manifest-plugin.d.ts +41 -0
- package/src/lib/json-ld-manifest-plugin.js +84 -0
- package/src/lib/json-ld-manifest-plugin.js.map +1 -0
- package/src/lib/nitro/analog-nitro-plugin.d.ts +18 -0
- package/src/lib/nitro/analog-nitro-plugin.js +582 -0
- package/src/lib/nitro/analog-nitro-plugin.js.map +1 -0
- package/src/lib/nitro/angular-linker-plugin.d.ts +15 -0
- package/src/lib/nitro/angular-linker-plugin.js +64 -0
- package/src/lib/nitro/angular-linker-plugin.js.map +1 -0
- package/src/lib/nitro/build-sitemap.d.ts +23 -0
- package/src/lib/nitro/build-sitemap.js +137 -0
- package/src/lib/nitro/build-sitemap.js.map +1 -0
- package/src/lib/nitro/debug.d.ts +5 -0
- package/src/lib/nitro/debug.js +11 -0
- package/src/lib/nitro/debug.js.map +1 -0
- package/src/lib/nitro/get-content-files.d.ts +13 -0
- package/src/lib/nitro/get-content-files.js +52 -0
- package/src/lib/nitro/get-content-files.js.map +1 -0
- package/src/lib/nitro/get-page-handlers.d.ts +22 -0
- package/src/lib/nitro/get-page-handlers.js +33 -0
- package/src/lib/nitro/get-page-handlers.js.map +1 -0
- package/src/lib/nitro/i18n-prerender.d.ts +29 -0
- package/src/lib/nitro/i18n-prerender.js +61 -0
- package/src/lib/nitro/i18n-prerender.js.map +1 -0
- package/src/lib/nitro/page-endpoints-plugin.d.ts +7 -0
- package/src/lib/nitro/page-endpoints-plugin.js +72 -0
- package/src/lib/nitro/page-endpoints-plugin.js.map +1 -0
- package/src/lib/nitro/post-rendering-hook.d.ts +2 -0
- package/src/lib/nitro/post-rendering-hook.js +10 -0
- package/src/lib/nitro/post-rendering-hook.js.map +1 -0
- package/src/lib/nitro/renderers.d.ts +33 -0
- package/src/lib/nitro/renderers.js +22 -0
- package/src/lib/nitro/renderers.js.map +1 -0
- package/src/lib/nitro/types.d.ts +122 -0
- package/src/lib/nx-plugin/_virtual/_rolldown/runtime.js +23 -0
- package/src/lib/nx-plugin/builders.json +15 -0
- package/src/lib/nx-plugin/executors.json +13 -5
- package/src/lib/nx-plugin/generators.json +25 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/camelCase.js +13 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/camelCase.js.map +1 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/capitalize.js +8 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/capitalize.js.map +1 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/words.js +9 -0
- package/src/lib/nx-plugin/node_modules/.pnpm/es-toolkit@1.45.1/node_modules/es-toolkit/dist/string/words.js.map +1 -0
- package/src/lib/nx-plugin/package.json +1 -3
- package/src/lib/nx-plugin/src/builders/vite/schema.json +39 -0
- package/src/lib/nx-plugin/src/builders/vite/vite-build.d.ts +11 -0
- package/src/lib/nx-plugin/src/builders/vite/vite-build.js +18 -0
- package/src/lib/nx-plugin/src/builders/vite/vite-build.js.map +1 -0
- package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.d.ts +7 -0
- package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.js +14 -0
- package/src/lib/nx-plugin/src/builders/vite-dev-server/dev-server.js.map +1 -0
- package/src/lib/nx-plugin/src/builders/vite-dev-server/schema.json +27 -0
- package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.d.ts +1 -1
- package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js +4 -4
- package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js.map +1 -1
- package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.d.ts +1 -1
- package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js +3 -3
- package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js.map +1 -1
- package/src/lib/nx-plugin/src/executors/vitest/compat.d.ts +1 -1
- package/src/lib/nx-plugin/src/executors/vitest/compat.js +4 -4
- package/src/lib/nx-plugin/src/executors/vitest/compat.js.map +1 -1
- package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.d.ts +1 -1
- package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js +3 -3
- package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/compat.d.ts +9 -3
- package/src/lib/nx-plugin/src/generators/app/compat.js +15 -4
- package/src/lib/nx-plugin/src/generators/app/compat.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/files/agents/AGENTS.md +11 -0
- package/src/lib/nx-plugin/src/generators/app/files/agents/CLAUDE.md +1 -0
- package/src/lib/nx-plugin/src/generators/app/files/root/tsconfig.base.json +3 -6
- package/src/lib/nx-plugin/src/generators/app/files/template-angular/src/test-setup.ts__template__ +1 -0
- package/src/lib/nx-plugin/src/generators/app/files/template-angular/tsconfig.app.json__template__ +1 -3
- package/src/lib/nx-plugin/src/generators/app/files/template-angular/tsconfig.json__template__ +2 -1
- package/src/lib/nx-plugin/src/generators/app/files/template-angular/vite.config.ts__template__ +7 -3
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/tsconfig.json__template__ +4 -2
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/vite.config.ts__template__ +2 -5
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/tsconfig.json__template__ +4 -2
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/vite.config.ts__template__ +3 -6
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.app.json__template__ +1 -3
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/tsconfig.json__template__ +4 -2
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/vite.config.ts__template__ +2 -5
- package/src/lib/nx-plugin/src/generators/app/generator.d.ts +11 -11
- package/src/lib/nx-plugin/src/generators/app/generator.js +44 -37
- package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.d.ts +2 -0
- package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.js +16 -0
- package/src/lib/nx-plugin/src/generators/app/lib/add-agent-context.js.map +1 -0
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js +6 -5
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js +8 -11
- package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/add-files.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/add-files.js +6 -5
- package/src/lib/nx-plugin/src/generators/app/lib/add-files.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js +6 -5
- package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.d.ts +7 -7
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js +13 -11
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.d.ts +4 -5
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js +34 -40
- package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js +5 -4
- package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/schema.d.ts +3 -0
- package/src/lib/nx-plugin/src/generators/app/schema.json +6 -0
- package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.d.ts +4 -2
- package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js +9 -6
- package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.d.ts +0 -3
- package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.d.ts +12 -12
- package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js +8 -27
- package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js +6 -5
- package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/app/versions.d.ts +0 -18
- package/src/lib/nx-plugin/src/generators/init/compat.d.ts +9 -3
- package/src/lib/nx-plugin/src/generators/init/compat.js +15 -4
- package/src/lib/nx-plugin/src/generators/init/compat.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/files/vite.config.ts__template__ +2 -6
- package/src/lib/nx-plugin/src/generators/init/generator.d.ts +3 -3
- package/src/lib/nx-plugin/src/generators/init/generator.js +35 -34
- package/src/lib/nx-plugin/src/generators/init/generator.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js +8 -7
- package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js +6 -5
- package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js +15 -14
- package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js +7 -6
- package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-main.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-main.js +5 -4
- package/src/lib/nx-plugin/src/generators/init/lib/update-main.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js +9 -8
- package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js +6 -5
- package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js +6 -5
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js +6 -5
- package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/init/test-files/src/test-setup.ts__template__ +1 -0
- package/src/lib/nx-plugin/src/generators/page/__snapshots__/generator.spec.ts.snap +0 -7
- package/src/lib/nx-plugin/src/generators/page/compat.d.ts +9 -0
- package/src/lib/nx-plugin/src/generators/page/compat.js +19 -0
- package/src/lib/nx-plugin/src/generators/page/compat.js.map +1 -0
- package/src/lib/nx-plugin/src/generators/page/files/__fileName__.page.ts__template__ +0 -1
- package/src/lib/nx-plugin/src/generators/page/generator.d.ts +3 -4
- package/src/lib/nx-plugin/src/generators/page/generator.js +14 -13
- package/src/lib/nx-plugin/src/generators/page/generator.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/preset/__snapshots__/generator.spec.ts.snap +9 -7
- package/src/lib/nx-plugin/src/generators/preset/generator.d.ts +3 -3
- package/src/lib/nx-plugin/src/generators/preset/generator.js +24 -7
- package/src/lib/nx-plugin/src/generators/preset/generator.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/preset/schema.d.ts +1 -0
- package/src/lib/nx-plugin/src/generators/preset/schema.json +6 -0
- package/src/lib/nx-plugin/src/generators/setup-vitest/compat.d.ts +9 -3
- package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js +15 -4
- package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/setup-vitest/files/src/test-setup.ts__template__ +1 -0
- package/src/lib/nx-plugin/src/generators/setup-vitest/files/vite.config.mts__template__ +0 -6
- package/src/lib/nx-plugin/src/generators/setup-vitest/generator.d.ts +3 -3
- package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js +19 -21
- package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.d.ts +1 -1
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js +5 -4
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js +6 -5
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js.map +1 -1
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.d.ts +2 -2
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js +6 -5
- package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/version-utils.d.ts +1 -1
- package/src/lib/nx-plugin/src/utils/version-utils.js +9 -8
- package/src/lib/nx-plugin/src/utils/version-utils.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/versions/dependencies.js +33 -32
- package/src/lib/nx-plugin/src/utils/versions/dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js +40 -39
- package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.d.ts +1 -1
- package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js +16 -2
- package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.d.ts +1 -1
- package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js +16 -2
- package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js.map +1 -1
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.d.ts +9 -8
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js +27 -10
- package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js.map +1 -1
- package/src/lib/options.d.ts +165 -84
- package/src/lib/platform-plugin.d.ts +2 -2
- package/src/lib/platform-plugin.js +20 -34
- package/src/lib/platform-plugin.js.map +1 -1
- package/src/lib/route-file-discovery.d.ts +23 -0
- package/src/lib/route-file-discovery.js +114 -0
- package/src/lib/route-file-discovery.js.map +1 -0
- package/src/lib/route-generation-plugin.d.ts +3 -0
- package/src/lib/route-generation-plugin.js +45 -0
- package/src/lib/route-generation-plugin.js.map +1 -0
- package/src/lib/route-idiom-diagnostics.d.ts +13 -0
- package/src/lib/route-idiom-diagnostics.js +160 -0
- package/src/lib/route-idiom-diagnostics.js.map +1 -0
- package/src/lib/route-manifest.d.ts +122 -0
- package/src/lib/route-manifest.js +431 -0
- package/src/lib/route-manifest.js.map +1 -0
- package/src/lib/router-plugin.d.ts +19 -19
- package/src/lib/router-plugin.js +127 -33
- package/src/lib/router-plugin.js.map +1 -1
- package/src/lib/server-fn-client-transform.d.ts +26 -0
- package/src/lib/server-fn-client-transform.js +97 -0
- package/src/lib/server-fn-client-transform.js.map +1 -0
- package/src/lib/server-fn-id.d.ts +25 -0
- package/src/lib/server-fn-id.js +37 -0
- package/src/lib/server-fn-id.js.map +1 -0
- package/src/lib/ssr/defer-streaming-plugin.d.ts +65 -0
- package/src/lib/ssr/inject-html-plugin.d.ts +1 -1
- package/src/lib/ssr/inject-html-plugin.js.map +1 -1
- package/src/lib/ssr/ssr-build-plugin.d.ts +24 -16
- package/src/lib/ssr/ssr-build-plugin.js +2 -18
- package/src/lib/ssr/ssr-build-plugin.js.map +1 -1
- package/src/lib/typed-routes-plugin.d.ts +50 -0
- package/src/lib/typed-routes-plugin.js +234 -0
- package/src/lib/typed-routes-plugin.js.map +1 -0
- package/src/lib/utils/debug-harness.d.ts +23 -0
- package/src/lib/utils/debug-harness.js +88 -0
- package/src/lib/utils/debug-harness.js.map +1 -0
- package/src/lib/utils/debug-log-file.d.ts +5 -0
- package/src/lib/utils/debug-log-file.js +56 -0
- package/src/lib/utils/debug-log-file.js.map +1 -0
- package/src/lib/utils/debug.d.ts +20 -0
- package/src/lib/utils/debug.js +24 -0
- package/src/lib/utils/debug.js.map +1 -0
- package/src/lib/utils/rolldown.d.ts +2 -2
- package/src/lib/utils/rolldown.js.map +1 -1
- package/src/server-mode-plugin.d.ts +11 -5
- package/src/server-mode-plugin.js +16 -6
- package/src/server-mode-plugin.js.map +1 -1
- package/src/lib/nx-plugin/src/executors/vite/compat.d.ts +0 -3
- package/src/lib/nx-plugin/src/executors/vite/compat.js +0 -8
- package/src/lib/nx-plugin/src/executors/vite/compat.js.map +0 -1
- package/src/lib/nx-plugin/src/executors/vite/schema.d.ts +0 -2
- package/src/lib/nx-plugin/src/executors/vite/schema.json +0 -147
- package/src/lib/nx-plugin/src/executors/vite/vite.impl.d.ts +0 -2
- package/src/lib/nx-plugin/src/executors/vite/vite.impl.js +0 -7
- package/src/lib/nx-plugin/src/executors/vite/vite.impl.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/files/tailwind/v4/.postcssrc.json +0 -5
- package/src/lib/nx-plugin/src/generators/app/files/tailwind/v4/tailwind.config.ts__template__ +0 -14
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/index.html__template__ +0 -15
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.spec.ts__template__ +0 -17
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/app/app.component.ts__template__ +0 -10
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/favicon.ico__template__ +0 -0
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.providers.ts__template__ +0 -5
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.server.ts__template__ +0 -23
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.ts__template__ +0 -11
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/.gitkeep__template__ +0 -0
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/analog.svg__template__ +0 -1
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/public/assets/vite.svg__template__ +0 -1
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/server/routes/v1/hello.ts__template__ +0 -3
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/styles.css__template__ +0 -4
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/test-setup.ts__template__ +0 -12
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/vite-env.d.ts__template__ +0 -1
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.app.json__template__ +0 -16
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.editor.json__template__ +0 -7
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.json__template__ +0 -32
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/tsconfig.spec.json__template__ +0 -14
- package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/vite.config.ts__template__ +0 -61
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js +0 -14
- package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js +0 -15
- package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js +0 -11
- package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js +0 -64
- package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js +0 -37
- package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js +0 -45
- package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js +0 -27
- package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js +0 -30
- package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js.map +0 -1
- package/src/lib/nx-plugin/src/generators/app/versions.js +0 -29
- package/src/lib/nx-plugin/src/generators/app/versions.js.map +0 -1
- package/src/lib/nx-plugin/src/index.d.ts +0 -0
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
|
|
3
|
-
"schematics": {
|
|
3
|
+
"schematics": {
|
|
4
|
+
"migrate-to-separated-plugins": {
|
|
5
|
+
"version": "3.0.0-alpha.56",
|
|
6
|
+
"description": "Migrate Analog vite.config from a single analog() call to the separated analog() + angular() + nitro() plugin shape",
|
|
7
|
+
"factory": "./migrate-to-separated-plugins/migrate-to-separated-plugins"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/platform",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.90",
|
|
4
4
|
"description": "The fullstack meta-framework for Angular",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
7
7
|
"exports": {
|
|
8
|
-
".":
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./src/index.d.ts",
|
|
10
|
+
"default": "./src/index.js"
|
|
11
|
+
},
|
|
9
12
|
"./package.json": "./package.json"
|
|
10
13
|
},
|
|
11
14
|
"keywords": [
|
|
@@ -28,23 +31,34 @@
|
|
|
28
31
|
"url": "https://github.com/sponsors/brandonroberts"
|
|
29
32
|
},
|
|
30
33
|
"dependencies": {
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
34
|
+
"@analogjs/vite-plugin-angular": "3.0.0-alpha.90",
|
|
35
|
+
"es-toolkit": "^1.45.1",
|
|
36
|
+
"front-matter": "^4.0.2",
|
|
37
|
+
"h3": "^2.0.1-rc.31",
|
|
38
|
+
"magic-string": "^0.30.21",
|
|
39
|
+
"nitro": "3.0.260903-beta",
|
|
40
|
+
"obug": "^2.1.1",
|
|
41
|
+
"ofetch": "2.0.0-alpha.3",
|
|
42
|
+
"oxc-parser": "^0.124.0",
|
|
43
|
+
"rolldown": "^1.0.0-rc.13",
|
|
44
|
+
"tinyglobby": "^0.2.15",
|
|
45
|
+
"vitefu": "^1.1.2",
|
|
46
|
+
"xmlbuilder2": "^4.0.3"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@babel/core": "^8.0.0"
|
|
36
50
|
},
|
|
37
51
|
"peerDependencies": {
|
|
38
|
-
"@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^
|
|
39
|
-
"@nx/devkit": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^
|
|
40
|
-
"@nx/vite": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^
|
|
41
|
-
"marked": "^
|
|
52
|
+
"@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^23.0.0 || ^23",
|
|
53
|
+
"@nx/devkit": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^23.0.0 || ^23",
|
|
54
|
+
"@nx/vite": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0 || ^23.0.0 || ^23",
|
|
55
|
+
"marked": "^18.0.0",
|
|
42
56
|
"marked-gfm-heading-id": "^4.1.3",
|
|
43
57
|
"marked-highlight": "^2.2.3",
|
|
44
58
|
"marked-mangle": "^1.1.12",
|
|
45
59
|
"marked-shiki": "^1.2.1",
|
|
46
|
-
"shiki": "^1.29.2",
|
|
47
|
-
"vite": "^
|
|
60
|
+
"shiki": "^1.29.2 || ^4.0.2",
|
|
61
|
+
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
|
48
62
|
},
|
|
49
63
|
"peerDependenciesMeta": {
|
|
50
64
|
"@nx/angular": {
|
|
@@ -69,7 +83,7 @@
|
|
|
69
83
|
"optional": true
|
|
70
84
|
}
|
|
71
85
|
},
|
|
72
|
-
"builders": "./src/lib/nx-plugin/
|
|
86
|
+
"builders": "./src/lib/nx-plugin/builders.json",
|
|
73
87
|
"executors": "./src/lib/nx-plugin/executors.json",
|
|
74
88
|
"generators": "./src/lib/nx-plugin/generators.json",
|
|
75
89
|
"schematics": "./src/lib/nx-plugin/generators.json",
|
package/src/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import { platformPlugin } from
|
|
2
|
-
export type { Options, PrerenderContentFile } from
|
|
1
|
+
import { platformPlugin } from "./lib/platform-plugin.js";
|
|
2
|
+
export type { Options, PrerenderSitemapConfig, TypedRouterOptions, PrerenderContentFile, SitemapConfig, SitemapEntry, SitemapExcludeRule, SitemapPriority, SitemapRouteDefinition, SitemapRouteInput, SitemapRouteSource, SitemapTransform } from "./lib/options.js";
|
|
3
|
+
export { discoverLibraryRoutes } from "./lib/discover-library-routes.js";
|
|
4
|
+
export type { DiscoveredLibraryRoutes } from "./lib/discover-library-routes.js";
|
|
5
|
+
export { routeGenerationPlugin } from "./lib/route-generation-plugin.js";
|
|
3
6
|
export default platformPlugin;
|
package/src/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { discoverLibraryRoutes } from "./lib/discover-library-routes.js";
|
|
2
|
+
import { routeGenerationPlugin } from "./lib/route-generation-plugin.js";
|
|
1
3
|
import { platformPlugin } from "./lib/platform-plugin.js";
|
|
2
4
|
//#region packages/platform/src/index.ts
|
|
3
5
|
var src_default = platformPlugin;
|
|
4
6
|
//#endregion
|
|
5
|
-
export { src_default as default };
|
|
7
|
+
export { src_default as default, discoverLibraryRoutes, routeGenerationPlugin };
|
|
6
8
|
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["import { platformPlugin } from './lib/platform-plugin.js';\n\nexport type {\n Options,\n PrerenderSitemapConfig,\n TypedRouterOptions,\n PrerenderContentFile,\n SitemapConfig,\n SitemapEntry,\n SitemapExcludeRule,\n SitemapPriority,\n SitemapRouteDefinition,\n SitemapRouteInput,\n SitemapRouteSource,\n SitemapTransform,\n} from './lib/options.js';\nexport { discoverLibraryRoutes } from './lib/discover-library-routes.js';\nexport type { DiscoveredLibraryRoutes } from './lib/discover-library-routes.js';\nexport { routeGenerationPlugin } from './lib/route-generation-plugin.js';\nexport default platformPlugin;\n"],"mappings":";;;;AAmBA,IAAA,cAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AnalogIntegrationPlugin } from "@analogjs/vite-plugin-angular";
|
|
2
|
+
import type { Options } from "./options.js";
|
|
3
|
+
/**
|
|
4
|
+
* The platform's `analog.setup()` hook into `@analogjs/vite-plugin-angular`.
|
|
5
|
+
* Keeps Angular away from the platform's content modules and registers
|
|
6
|
+
* `additionalPagesDirs` so workspace library pages compile without a matching
|
|
7
|
+
* `include` on `angular()`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function analogIntegrationPlugin(options?: Options): AnalogIntegrationPlugin;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { pageGlobs } from "./discover-library-routes.js";
|
|
2
|
+
//#region packages/platform/src/lib/analog-integration-plugin.ts
|
|
3
|
+
/**
|
|
4
|
+
* The platform's `analog.setup()` hook into `@analogjs/vite-plugin-angular`.
|
|
5
|
+
* Keeps Angular away from the platform's content modules and registers
|
|
6
|
+
* `additionalPagesDirs` so workspace library pages compile without a matching
|
|
7
|
+
* `include` on `angular()`.
|
|
8
|
+
*/
|
|
9
|
+
function analogIntegrationPlugin(options) {
|
|
10
|
+
const pagesDirs = options?.additionalPagesDirs ?? [];
|
|
11
|
+
return {
|
|
12
|
+
name: "analogjs-platform-angular-integration",
|
|
13
|
+
analog: { setup(ctx) {
|
|
14
|
+
ctx.registerTransformFilter((_code, id) => !(id.includes("?") && id.includes("analog-content-")));
|
|
15
|
+
if (pagesDirs.length) ctx.addInclude(pageGlobs(pagesDirs));
|
|
16
|
+
} }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { analogIntegrationPlugin };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=analog-integration-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analog-integration-plugin.js","names":[],"sources":["../../../src/lib/analog-integration-plugin.ts"],"sourcesContent":["import type { AnalogIntegrationPlugin } from '@analogjs/vite-plugin-angular';\n\nimport { pageGlobs } from './discover-library-routes.js';\nimport type { Options } from './options.js';\n\n/**\n * The platform's `analog.setup()` hook into `@analogjs/vite-plugin-angular`.\n * Keeps Angular away from the platform's content modules and registers\n * `additionalPagesDirs` so workspace library pages compile without a matching\n * `include` on `angular()`.\n */\nexport function analogIntegrationPlugin(\n options?: Options,\n): AnalogIntegrationPlugin {\n const pagesDirs = options?.additionalPagesDirs ?? [];\n\n return {\n name: 'analogjs-platform-angular-integration',\n analog: {\n setup(ctx) {\n // Content files are imported with `?analog-content-*` markers and\n // served by the content plugin, never compiled by Angular.\n ctx.registerTransformFilter(\n (_code, id) => !(id.includes('?') && id.includes('analog-content-')),\n );\n if (pagesDirs.length) {\n ctx.addInclude(pageGlobs(pagesDirs));\n }\n },\n },\n };\n}\n"],"mappings":";;;;;;;;AAWA,SAAgB,wBACd,SACyB;CACzB,MAAM,YAAY,SAAS,uBAAuB,EAAE;AAEpD,QAAO;EACL,MAAM;EACN,QAAQ,EACN,MAAM,KAAK;AAGT,OAAI,yBACD,OAAO,OAAO,EAAE,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,kBAAkB,EACpE;AACD,OAAI,UAAU,OACZ,KAAI,WAAW,UAAU,UAAU,CAAC;KAGzC;EACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Plugin } from
|
|
2
|
-
export declare function clearClientPageEndpointsPlugin(): Plugin
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
export declare function clearClientPageEndpointsPlugin(): Plugin;
|
|
@@ -1,21 +1,43 @@
|
|
|
1
|
+
import { serverFnFileId } from "./server-fn-id.js";
|
|
2
|
+
import { injectServerFnIds } from "./inject-server-fn-ids.js";
|
|
3
|
+
import { scrubServerFnModule } from "./server-fn-client-transform.js";
|
|
1
4
|
import { normalizePath } from "vite";
|
|
2
5
|
//#region packages/platform/src/lib/clear-client-page-endpoint.ts
|
|
3
6
|
function clearClientPageEndpointsPlugin() {
|
|
4
|
-
|
|
7
|
+
let projectRoot = process.cwd();
|
|
8
|
+
let isBuild = true;
|
|
9
|
+
return {
|
|
5
10
|
name: "analogjs-platform-clear-client-page-endpoint",
|
|
6
|
-
apply: "build",
|
|
7
11
|
config() {
|
|
8
12
|
return { build: { rollupOptions: { onwarn(warning) {
|
|
9
13
|
if (warning.message.includes("empty chunk") && warning.message.endsWith(".server")) return;
|
|
10
14
|
} } } };
|
|
11
15
|
},
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
configResolved(config) {
|
|
17
|
+
projectRoot = config.root;
|
|
18
|
+
isBuild = config.command === "build";
|
|
19
|
+
},
|
|
20
|
+
transform(code, id, options) {
|
|
21
|
+
if (!id.endsWith(".server.ts")) return;
|
|
22
|
+
const fileId = serverFnFileId(id, projectRoot);
|
|
23
|
+
if (options?.ssr) {
|
|
24
|
+
const injected = injectServerFnIds(code, fileId);
|
|
25
|
+
return injected ? {
|
|
26
|
+
code: injected.code,
|
|
27
|
+
map: null
|
|
28
|
+
} : void 0;
|
|
29
|
+
}
|
|
30
|
+
const scrubbed = scrubServerFnModule(code, fileId);
|
|
31
|
+
if (scrubbed) return {
|
|
32
|
+
code: scrubbed.code,
|
|
33
|
+
map: { mappings: "" }
|
|
34
|
+
};
|
|
35
|
+
if (isBuild && id.includes(normalizePath("src/app/pages"))) return {
|
|
14
36
|
code: "export default undefined;",
|
|
15
37
|
map: null
|
|
16
38
|
};
|
|
17
39
|
}
|
|
18
|
-
}
|
|
40
|
+
};
|
|
19
41
|
}
|
|
20
42
|
//#endregion
|
|
21
43
|
export { clearClientPageEndpointsPlugin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-client-page-endpoint.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"clear-client-page-endpoint.js","names":[],"sources":["../../../src/lib/clear-client-page-endpoint.ts"],"sourcesContent":["import { Plugin, normalizePath } from 'vite';\nimport { injectServerFnIds } from './inject-server-fn-ids.js';\nimport { serverFnFileId } from './server-fn-id.js';\n\nimport { scrubServerFnModule } from './server-fn-client-transform.js';\n\nexport function clearClientPageEndpointsPlugin(): Plugin {\n let projectRoot = process.cwd();\n let isBuild = true;\n\n return {\n name: 'analogjs-platform-clear-client-page-endpoint',\n config() {\n return {\n build: {\n rollupOptions: {\n onwarn(warning) {\n if (\n warning.message.includes('empty chunk') &&\n warning.message.endsWith('.server')\n ) {\n return;\n }\n },\n },\n },\n };\n },\n configResolved(config) {\n projectRoot = config.root;\n isBuild = config.command === 'build';\n },\n transform(code, id, options) {\n if (!id.endsWith('.server.ts')) {\n return;\n }\n\n // Server-function ids are derived from the project-root-relative path so\n // the client proxy and the server registration always resolve to the same\n // opaque, collision-free route.\n const fileId = serverFnFileId(id, projectRoot);\n\n if (options?.ssr) {\n // SSR build keeps the real handlers but stamps the derived id into each\n // serverFn config so it registers under the route the client calls.\n const injected = injectServerFnIds(code, fileId);\n return injected ? { code: injected.code, map: null } : undefined;\n }\n\n // Client build: a `.server.ts` defining server functions is rewritten to\n // client-safe proxies (the `{ id, url, method }` refs the browser\n // dispatches through); handlers and server imports are dropped so they\n // tree-shake away.\n const scrubbed = scrubServerFnModule(code, fileId);\n if (scrubbed) {\n // An empty mapping, not `null`: a null map lets the original module —\n // handlers and all — survive in `sourcesContent` further down the\n // pipeline, which would ship the server code to the browser after the\n // scrub went to the trouble of removing it.\n return { code: scrubbed.code, map: { mappings: '' } };\n }\n\n // Page load/action endpoints carry no client-consumable exports. Only the\n // client build empties them; the dev server never pulls them into the\n // browser graph, and emptying them there would break the SSR request.\n if (isBuild && id.includes(normalizePath('src/app/pages'))) {\n return {\n code: 'export default undefined;',\n map: null,\n };\n }\n\n return;\n },\n };\n}\n"],"mappings":";;;;;AAMA,SAAgB,iCAAyC;CACvD,IAAI,cAAc,QAAQ,KAAK;CAC/B,IAAI,UAAU;AAEd,QAAO;EACL,MAAM;EACN,SAAS;AACP,UAAO,EACL,OAAO,EACL,eAAe,EACb,OAAO,SAAS;AACd,QACE,QAAQ,QAAQ,SAAS,cAAc,IACvC,QAAQ,QAAQ,SAAS,UAAU,CAEnC;MAGL,EACF,EACF;;EAEH,eAAe,QAAQ;AACrB,iBAAc,OAAO;AACrB,aAAU,OAAO,YAAY;;EAE/B,UAAU,MAAM,IAAI,SAAS;AAC3B,OAAI,CAAC,GAAG,SAAS,aAAa,CAC5B;GAMF,MAAM,SAAS,eAAe,IAAI,YAAY;AAE9C,OAAI,SAAS,KAAK;IAGhB,MAAM,WAAW,kBAAkB,MAAM,OAAO;AAChD,WAAO,WAAW;KAAE,MAAM,SAAS;KAAM,KAAK;KAAM,GAAG,KAAA;;GAOzD,MAAM,WAAW,oBAAoB,MAAM,OAAO;AAClD,OAAI,SAKF,QAAO;IAAE,MAAM,SAAS;IAAM,KAAK,EAAE,UAAU,IAAI;IAAE;AAMvD,OAAI,WAAW,GAAG,SAAS,cAAc,gBAAgB,CAAC,CACxD,QAAO;IACL,MAAM;IACN,KAAK;IACN;;EAKN"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MarkedExtension } from
|
|
2
|
-
import { MarkedSetupService } from
|
|
3
|
-
import { MarkedContentHighlighter } from
|
|
1
|
+
import { MarkedExtension } from "marked";
|
|
2
|
+
import { MarkedSetupService } from "./marked-setup.service.js";
|
|
3
|
+
import { MarkedContentHighlighter } from "./marked-content-highlighter.js";
|
|
4
4
|
export type WithMarkedOptions = {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
mangle?: boolean;
|
|
6
|
+
extensions?: MarkedExtension[];
|
|
7
7
|
};
|
|
8
8
|
export declare function getMarkedSetup(options?: WithMarkedOptions, highlighter?: MarkedContentHighlighter): MarkedSetupService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/content/marked/index.ts"],"sourcesContent":["import { MarkedExtension } from 'marked';\nimport { MarkedSetupService } from './marked-setup.service.js';\nimport { MarkedContentHighlighter } from './marked-content-highlighter.js';\n\nexport type WithMarkedOptions = {\n mangle?: boolean;\n extensions?: MarkedExtension[];\n};\n\nlet markedSetupInstance: MarkedSetupService;\n\nexport function getMarkedSetup(\n options?: WithMarkedOptions,\n highlighter?: MarkedContentHighlighter,\n): MarkedSetupService {\n markedSetupInstance ??= new MarkedSetupService(options, highlighter);\n return markedSetupInstance;\n}\n"],"mappings":";;AASA,IAAI;AAEJ,SAAgB,eACd,SACA,aACoB;AACpB,yBAAwB,IAAI,mBAAmB,SAAS,YAAY;AACpE,QAAO"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare abstract class MarkedContentHighlighter {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
augmentCodeBlock?(code: string, lang: string): string;
|
|
3
|
+
abstract getHighlightExtension(): import("marked").MarkedExtension;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marked-content-highlighter.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"marked-content-highlighter.js","names":[],"sources":["../../../../../src/lib/content/marked/marked-content-highlighter.ts"],"sourcesContent":["export abstract class MarkedContentHighlighter {\n augmentCodeBlock?(code: string, lang: string): string;\n abstract getHighlightExtension(): import('marked').MarkedExtension;\n}\n"],"mappings":";AAAA,IAAsB,2BAAtB,MAA+C"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { marked } from
|
|
2
|
-
import { MarkedContentHighlighter } from
|
|
3
|
-
import { WithMarkedOptions } from
|
|
1
|
+
import { marked } from "marked";
|
|
2
|
+
import { MarkedContentHighlighter } from "./marked-content-highlighter.js";
|
|
3
|
+
import { WithMarkedOptions } from "./index.js";
|
|
4
4
|
export declare class MarkedSetupService {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
private readonly options?;
|
|
6
|
+
private readonly highlighter?;
|
|
7
|
+
private readonly marked;
|
|
8
|
+
constructor(options?: WithMarkedOptions | undefined, highlighter?: MarkedContentHighlighter | undefined);
|
|
9
|
+
getMarkedInstance(): typeof marked;
|
|
10
10
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { escapeHtml, sanitizeLanguage } from "../utils/escape-html.js";
|
|
1
2
|
import { marked } from "marked";
|
|
2
3
|
import { gfmHeadingId } from "marked-gfm-heading-id";
|
|
3
4
|
import { mangle } from "marked-mangle";
|
|
@@ -13,13 +14,14 @@ var MarkedSetupService = class {
|
|
|
13
14
|
breaks: false,
|
|
14
15
|
renderer: {
|
|
15
16
|
code({ text, lang }) {
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
if (
|
|
19
|
-
return
|
|
17
|
+
const language = sanitizeLanguage(lang);
|
|
18
|
+
if (language === "mermaid") return "<pre class=\"mermaid\">" + escapeHtml(text) + "</pre>";
|
|
19
|
+
if (!language) return "<pre><code>" + escapeHtml(text) + "</code></pre>";
|
|
20
|
+
if (highlighter?.augmentCodeBlock) return highlighter?.augmentCodeBlock(text, language);
|
|
21
|
+
return `<pre class="language-${language}"><code class="language-${language}">${escapeHtml(text)}</code></pre>`;
|
|
20
22
|
},
|
|
21
23
|
codespan({ text }) {
|
|
22
|
-
return `<code>${text}</code>`;
|
|
24
|
+
return `<code>${escapeHtml(text)}</code>`;
|
|
23
25
|
},
|
|
24
26
|
paragraph({ tokens }) {
|
|
25
27
|
return `<p>${this.parser.parseInline(tokens)}</p>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marked-setup.service.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"marked-setup.service.js","names":[],"sources":["../../../../../src/lib/content/marked/marked-setup.service.ts"],"sourcesContent":["import { marked, Parser, MarkedExtension } from 'marked';\nimport { gfmHeadingId } from 'marked-gfm-heading-id';\nimport { mangle } from 'marked-mangle';\n\nimport { MarkedContentHighlighter } from './marked-content-highlighter.js';\nimport { WithMarkedOptions } from './index.js';\nimport { escapeHtml, sanitizeLanguage } from '../utils/escape-html.js';\n\nexport class MarkedSetupService {\n private readonly marked: typeof marked;\n\n constructor(\n private readonly options?: WithMarkedOptions | undefined,\n private readonly highlighter?: MarkedContentHighlighter | undefined,\n ) {\n const analogMarkedExtension: MarkedExtension = {\n pedantic: false,\n gfm: true,\n breaks: false,\n renderer: {\n code({ text, lang }) {\n // Let's do a language based detection like on GitHub\n // So we can still have non-interpreted mermaid code\n const language = sanitizeLanguage(lang);\n if (language === 'mermaid') {\n return '<pre class=\"mermaid\">' + escapeHtml(text) + '</pre>';\n }\n\n if (!language) {\n return '<pre><code>' + escapeHtml(text) + '</code></pre>';\n }\n\n if (highlighter?.augmentCodeBlock) {\n return highlighter?.augmentCodeBlock(text, language);\n }\n\n return `<pre class=\"language-${language}\"><code class=\"language-${language}\">${escapeHtml(text)}</code></pre>`;\n },\n codespan({ text }) {\n return `<code>${escapeHtml(text)}</code>`;\n },\n paragraph({ tokens }) {\n const text = this.parser.parseInline(tokens);\n return `<p>${text}</p>`;\n },\n },\n };\n\n const extensions = [\n analogMarkedExtension,\n gfmHeadingId(),\n ...(options?.extensions || []),\n ];\n\n if (this.options?.mangle) {\n extensions.push(mangle());\n }\n\n if (this.highlighter) {\n extensions.push(this.highlighter.getHighlightExtension());\n }\n\n marked.use(...extensions);\n\n this.marked = marked;\n }\n\n getMarkedInstance(): typeof marked {\n return this.marked;\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,qBAAb,MAAgC;CAG9B,YACE,SACA,aACA;AAFiB,OAAA,UAAA;AACA,OAAA,cAAA;EAmCjB,MAAM,aAAa;GAjC4B;IAC7C,UAAU;IACV,KAAK;IACL,QAAQ;IACR,UAAU;KACR,KAAK,EAAE,MAAM,QAAQ;MAGnB,MAAM,WAAW,iBAAiB,KAAK;AACvC,UAAI,aAAa,UACf,QAAO,4BAA0B,WAAW,KAAK,GAAG;AAGtD,UAAI,CAAC,SACH,QAAO,gBAAgB,WAAW,KAAK,GAAG;AAG5C,UAAI,aAAa,iBACf,QAAO,aAAa,iBAAiB,MAAM,SAAS;AAGtD,aAAO,wBAAwB,SAAS,0BAA0B,SAAS,IAAI,WAAW,KAAK,CAAC;;KAElG,SAAS,EAAE,QAAQ;AACjB,aAAO,SAAS,WAAW,KAAK,CAAC;;KAEnC,UAAU,EAAE,UAAU;AAEpB,aAAO,MADM,KAAK,OAAO,YAAY,OAAO,CAC1B;;KAErB;IACF;GAIC,cAAc;GACd,GAAI,SAAS,cAAc,EAAE;GAC9B;AAED,MAAI,KAAK,SAAS,OAChB,YAAW,KAAK,QAAQ,CAAC;AAG3B,MAAI,KAAK,YACP,YAAW,KAAK,KAAK,YAAY,uBAAuB,CAAC;AAG3D,SAAO,IAAI,GAAG,WAAW;AAEzB,OAAK,SAAS;;CAGhB,oBAAmC;AACjC,SAAO,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"angular.js","names":[],"sources":["../../../../../src/lib/content/prism/angular.ts"],"sourcesContent":["import Prism from 'prismjs';\n\n(function () {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n Prism.languages['angular'] = Prism.languages.extend('markup', {\n keyword:\n /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\\b/,\n operator: /\\b(?:on|when)\\b/,\n number: {\n pattern: /\\b(minimum|after)\\s+\\d+(?:s|ms|)/gi,\n lookbehind: true,\n },\n builtin: {\n pattern:\n /\\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,\n },\n function:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n });\n\n Prism.languages['ng'] = Prism.languages['angular'];\n})();\n"],"mappings":";;CAEC,WAAY;AACX,KAAI,OAAO,UAAU,YACnB;AAGF,OAAM,UAAU,aAAa,MAAM,UAAU,OAAO,UAAU;EAC5D,SACE;EACF,UAAU;EACV,QAAQ;GACN,SAAS;GACT,YAAY;GACb;EACD,SAAS,EACP,SACE,uEACH;EACD,UACE;EACH,CAAC;AAEF,OAAM,UAAU,QAAQ,MAAM,UAAU;IACtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/content/prism/index.ts"],"sourcesContent":["import { PrismHighlighter } from './prism-highlighter.js';\n\nexport { PrismHighlighter };\n\nlet highlighterInstance: PrismHighlighter;\n\nexport function getPrismHighlighter(): PrismHighlighter {\n highlighterInstance ??= new PrismHighlighter();\n return highlighterInstance;\n}\n"],"mappings":";;AAIA,IAAI;AAEJ,SAAgB,sBAAwC;AACtD,yBAAwB,IAAI,kBAAkB;AAC9C,QAAO"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { MarkedContentHighlighter } from
|
|
1
|
+
import "prismjs";
|
|
2
|
+
import "./angular.js";
|
|
3
|
+
import { MarkedContentHighlighter } from "../marked/marked-content-highlighter.js";
|
|
4
4
|
export declare class PrismHighlighter extends MarkedContentHighlighter {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
override augmentCodeBlock(code: string, lang: string): string;
|
|
6
|
+
override getHighlightExtension(): import("marked").MarkedExtension;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-highlighter.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"prism-highlighter.js","names":[],"sources":["../../../../../src/lib/content/prism/prism-highlighter.ts"],"sourcesContent":["import { markedHighlight } from 'marked-highlight';\n\nimport 'prismjs';\nimport './angular.js';\n\nimport { MarkedContentHighlighter } from '../marked/marked-content-highlighter.js';\n\ndeclare const Prism: typeof import('prismjs');\n\nexport class PrismHighlighter extends MarkedContentHighlighter {\n override augmentCodeBlock(code: string, lang: string): string {\n const classes =\n lang.startsWith('diff') && Prism.languages['diff']\n ? `language-${lang} diff-highlight`\n : `language-${lang.replace('diff-', '')}`;\n return `<pre class=\"${classes}\"><code class=\"${classes}\">${code}</code></pre>`;\n }\n\n override getHighlightExtension(): import('marked').MarkedExtension {\n return markedHighlight({\n async: true,\n highlight: (code: string, lang: string) => {\n let diff = lang?.startsWith('diff-');\n lang = diff ? lang.replace('diff-', '') : lang || 'typescript';\n\n if (diff && !Prism.languages['diff']) {\n diff = false;\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The \\`diff\\` language and plugin are not available in the provided setup.\n\n To enable, add it to the \\`analog\\` plugin in your \\`vite.config.ts\\`:\n analog({\n content: {\n prismOptions: {\n additionalLangs: [\n 'prism-diff'\n ]\n }\n }\n })\n\n Add the plugin import to your \\`app.config.ts\\`\n import 'prismjs/plugins/diff-highlight/prism-diff-highlight.js';\n ---------------------------------------------------------------------------------------\n `);\n }\n\n if (!Prism.languages[lang]) {\n if (lang !== 'mermaid') {\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The requested language '${lang}' is not available in the provided setup.\n To enable, add it to the \\`analog\\` plugin in your \\`vite.config.ts\\`:\n analog({\n content: {\n prismOptions: {\n additionalLangs: [\n '${lang}',\n ]\n }\n }\n })\n ---------------------------------------------------------------------------------------\n `);\n }\n return code;\n }\n return Prism.highlight(\n code,\n diff ? Prism.languages['diff'] : Prism.languages[lang],\n lang,\n );\n },\n });\n }\n}\n"],"mappings":";;;;;AASA,IAAa,mBAAb,cAAsC,yBAAyB;CAC7D,iBAA0B,MAAc,MAAsB;EAC5D,MAAM,UACJ,KAAK,WAAW,OAAO,IAAI,MAAM,UAAU,UACvC,YAAY,KAAK,mBACjB,YAAY,KAAK,QAAQ,SAAS,GAAG;AAC3C,SAAO,eAAe,QAAQ,iBAAiB,QAAQ,IAAI,KAAK;;CAGlE,wBAAmE;AACjE,SAAO,gBAAgB;GACrB,OAAO;GACP,YAAY,MAAc,SAAiB;IACzC,IAAI,OAAO,MAAM,WAAW,QAAQ;AACpC,WAAO,OAAO,KAAK,QAAQ,SAAS,GAAG,GAAG,QAAQ;AAElD,QAAI,QAAQ,CAAC,MAAM,UAAU,SAAS;AACpC,YAAO;AACP,aAAQ,KAAK;;;;;;;;;;;;;;;;;;cAkBT;;AAGN,QAAI,CAAC,MAAM,UAAU,OAAO;AAC1B,SAAI,SAAS,UACX,SAAQ,KAAK;;8BAEK,KAAK;;;;;;iBAMlB,KAAK;;;;;;gBAMN;AAEN,YAAO;;AAET,WAAO,MAAM,UACX,MACA,OAAO,MAAM,UAAU,UAAU,MAAM,UAAU,OACjD,KACD;;GAEJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WithShikiHighlighterOptions } from
|
|
2
|
-
import { ShikiHighlighter } from
|
|
1
|
+
import { WithShikiHighlighterOptions } from "./options.js";
|
|
2
|
+
import { ShikiHighlighter } from "./shiki-highlighter.js";
|
|
3
3
|
export { ShikiHighlighter };
|
|
4
|
-
export declare function getShikiHighlighter({ highlighter, highlight, container
|
|
4
|
+
export declare function getShikiHighlighter({ highlighter, highlight, container }?: WithShikiHighlighterOptions): ShikiHighlighter;
|
|
@@ -3,15 +3,18 @@ import { ShikiHighlighter, defaultHighlighterOptions } from "./shiki-highlighter
|
|
|
3
3
|
var highlighterInstance;
|
|
4
4
|
function getShikiHighlighter({ highlighter = {}, highlight = {}, container = "%s" } = {}) {
|
|
5
5
|
if (highlighterInstance) return highlighterInstance;
|
|
6
|
+
const additionalLangs = highlighter.additionalLangs ?? [];
|
|
7
|
+
const skipLangs = highlighter.skipLangs ?? [];
|
|
8
|
+
const hasMermaidSupport = highlighter.langs?.includes("mermaid") || additionalLangs.includes("mermaid");
|
|
6
9
|
if (!highlighter.themes) if (highlight.theme) highlighter.themes = [highlight.theme];
|
|
7
10
|
else if (highlight.themes && typeof highlight.themes === "object") highlighter.themes = Object.values(highlight.themes);
|
|
8
11
|
else highlighter.themes = defaultHighlighterOptions.themes;
|
|
9
|
-
if (!highlighter.langs) highlighter.langs = defaultHighlighterOptions.langs;
|
|
10
|
-
if (highlighter.additionalLangs)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
highlighterInstance = new ShikiHighlighter(highlighter, highlight, container,
|
|
12
|
+
if (!highlighter.langs) highlighter.langs = [...defaultHighlighterOptions.langs];
|
|
13
|
+
if (additionalLangs.length > 0) highlighter.langs.push(...additionalLangs);
|
|
14
|
+
if (skipLangs.length > 0) highlighter.langs = highlighter.langs.filter((lang) => !skipLangs.includes(lang));
|
|
15
|
+
delete highlighter.additionalLangs;
|
|
16
|
+
delete highlighter.skipLangs;
|
|
17
|
+
highlighterInstance = new ShikiHighlighter(highlighter, highlight, container, hasMermaidSupport, skipLangs);
|
|
15
18
|
return highlighterInstance;
|
|
16
19
|
}
|
|
17
20
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/content/shiki/index.ts"],"sourcesContent":["import { WithShikiHighlighterOptions } from './options.js';\nimport {\n defaultHighlighterOptions,\n ShikiHighlighter,\n ShikiHighlighterOptions,\n} from './shiki-highlighter.js';\n\nexport { ShikiHighlighter };\n\nlet highlighterInstance: ShikiHighlighter;\n\nexport function getShikiHighlighter({\n highlighter = {},\n highlight = {},\n container = '%s',\n}: WithShikiHighlighterOptions = {}): ShikiHighlighter {\n if (highlighterInstance) {\n return highlighterInstance;\n }\n\n const additionalLangs = highlighter.additionalLangs ?? [];\n const skipLangs = highlighter.skipLangs ?? [];\n const hasMermaidSupport =\n highlighter.langs?.includes('mermaid') ||\n additionalLangs.includes('mermaid');\n\n if (!highlighter.themes) {\n if (highlight.theme) {\n highlighter.themes = [highlight.theme];\n } else if (highlight.themes && typeof highlight.themes === 'object') {\n highlighter.themes = Object.values(highlight.themes) as string[];\n } else {\n highlighter.themes = defaultHighlighterOptions.themes;\n }\n }\n\n if (!highlighter.langs) {\n highlighter.langs = [...defaultHighlighterOptions.langs];\n }\n\n if (additionalLangs.length > 0) {\n highlighter.langs.push(...additionalLangs);\n }\n\n if (skipLangs.length > 0) {\n highlighter.langs = highlighter.langs.filter(\n (lang) => !skipLangs.includes(lang),\n );\n }\n\n delete highlighter.additionalLangs;\n delete highlighter.skipLangs;\n\n highlighterInstance = new ShikiHighlighter(\n highlighter as ShikiHighlighterOptions,\n highlight,\n container,\n hasMermaidSupport,\n skipLangs,\n );\n\n return highlighterInstance;\n}\n"],"mappings":";;AASA,IAAI;AAEJ,SAAgB,oBAAoB,EAClC,cAAc,EAAE,EAChB,YAAY,EAAE,EACd,YAAY,SACmB,EAAE,EAAoB;AACrD,KAAI,oBACF,QAAO;CAGT,MAAM,kBAAkB,YAAY,mBAAmB,EAAE;CACzD,MAAM,YAAY,YAAY,aAAa,EAAE;CAC7C,MAAM,oBACJ,YAAY,OAAO,SAAS,UAAU,IACtC,gBAAgB,SAAS,UAAU;AAErC,KAAI,CAAC,YAAY,OACf,KAAI,UAAU,MACZ,aAAY,SAAS,CAAC,UAAU,MAAM;UAC7B,UAAU,UAAU,OAAO,UAAU,WAAW,SACzD,aAAY,SAAS,OAAO,OAAO,UAAU,OAAO;KAEpD,aAAY,SAAS,0BAA0B;AAInD,KAAI,CAAC,YAAY,MACf,aAAY,QAAQ,CAAC,GAAG,0BAA0B,MAAM;AAG1D,KAAI,gBAAgB,SAAS,EAC3B,aAAY,MAAM,KAAK,GAAG,gBAAgB;AAG5C,KAAI,UAAU,SAAS,EACrB,aAAY,QAAQ,YAAY,MAAM,QACnC,SAAS,CAAC,UAAU,SAAS,KAAK,CACpC;AAGH,QAAO,YAAY;AACnB,QAAO,YAAY;AAEnB,uBAAsB,IAAI,iBACxB,aACA,WACA,WACA,mBACA,UACD;AAED,QAAO"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { ShikiHighlighterOptions, ShikiHighlightOptions } from
|
|
2
|
-
import { BundledLanguage } from
|
|
1
|
+
import { ShikiHighlighterOptions, ShikiHighlightOptions } from "./shiki-highlighter.js";
|
|
2
|
+
import { BundledLanguage } from "shiki/langs";
|
|
3
3
|
export interface WithShikiHighlighterOptions {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
highlighter?: Partial<ShikiHighlighterOptions> & {
|
|
5
|
+
additionalLangs?: BundledLanguage[];
|
|
6
|
+
skipLangs?: BundledLanguage[];
|
|
7
|
+
};
|
|
8
|
+
highlight?: ShikiHighlightOptions;
|
|
9
|
+
container?: string;
|
|
9
10
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { type BundledLanguage, type BundledTheme, type CodeOptionsMeta, type CodeOptionsMultipleThemes, type CodeOptionsSingleTheme, type CodeToHastOptionsCommon,
|
|
2
|
-
import { MarkedContentHighlighter } from
|
|
3
|
-
export type ShikiHighlighterOptions = Parameters<typeof
|
|
4
|
-
export type ShikiHighlightOptions = Partial<Omit<CodeToHastOptionsCommon<BundledLanguage>,
|
|
1
|
+
import { type BundledLanguage, type BundledTheme, type CodeOptionsMeta, type CodeOptionsMultipleThemes, type CodeOptionsSingleTheme, type CodeToHastOptionsCommon, createHighlighter } from "shiki";
|
|
2
|
+
import { MarkedContentHighlighter } from "../marked/marked-content-highlighter.js";
|
|
3
|
+
export type ShikiHighlighterOptions = Parameters<typeof createHighlighter>[0];
|
|
4
|
+
export type ShikiHighlightOptions = Partial<Omit<CodeToHastOptionsCommon<BundledLanguage>, "lang">> & CodeOptionsMeta & Partial<CodeOptionsSingleTheme<BundledTheme>> & Partial<CodeOptionsMultipleThemes<BundledTheme>>;
|
|
5
5
|
export declare const defaultHighlighterOptions: {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
langs: string[];
|
|
7
|
+
themes: string[];
|
|
8
8
|
};
|
|
9
9
|
export declare class ShikiHighlighter extends MarkedContentHighlighter {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
private highlighterOptions;
|
|
11
|
+
private highlightOptions;
|
|
12
|
+
private container;
|
|
13
|
+
private hasLoadMermaid;
|
|
14
|
+
private skipLangs;
|
|
15
|
+
private readonly highlighter;
|
|
16
|
+
constructor(highlighterOptions: ShikiHighlighterOptions, highlightOptions: ShikiHighlightOptions, container: string, hasLoadMermaid?: boolean, skipLangs?: string[]);
|
|
17
|
+
getHighlightExtension(): import("marked").MarkedExtension;
|
|
17
18
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { escapeHtml } from "../utils/escape-html.js";
|
|
1
2
|
import { MarkedContentHighlighter } from "../marked/marked-content-highlighter.js";
|
|
2
3
|
import markedShiki from "marked-shiki";
|
|
3
|
-
import {
|
|
4
|
+
import { createHighlighter } from "shiki";
|
|
4
5
|
//#region packages/platform/src/lib/content/shiki/shiki-highlighter.ts
|
|
5
6
|
var defaultHighlighterOptions = {
|
|
6
7
|
langs: [
|
|
@@ -17,19 +18,21 @@ var defaultHighlighterOptions = {
|
|
|
17
18
|
themes: ["github-dark", "github-light"]
|
|
18
19
|
};
|
|
19
20
|
var ShikiHighlighter = class extends MarkedContentHighlighter {
|
|
20
|
-
constructor(highlighterOptions, highlightOptions, container, hasLoadMermaid = false) {
|
|
21
|
+
constructor(highlighterOptions, highlightOptions, container, hasLoadMermaid = false, skipLangs = []) {
|
|
21
22
|
super();
|
|
22
23
|
this.highlighterOptions = highlighterOptions;
|
|
23
24
|
this.highlightOptions = highlightOptions;
|
|
24
25
|
this.container = container;
|
|
25
26
|
this.hasLoadMermaid = hasLoadMermaid;
|
|
26
|
-
this.
|
|
27
|
+
this.skipLangs = skipLangs;
|
|
28
|
+
this.highlighter = createHighlighter(this.highlighterOptions);
|
|
27
29
|
}
|
|
28
30
|
getHighlightExtension() {
|
|
29
31
|
return markedShiki({
|
|
30
32
|
container: this.container,
|
|
31
33
|
highlight: async (code, lang, props) => {
|
|
32
|
-
if (this.hasLoadMermaid && lang === "mermaid") return `<pre class="mermaid">${code}</pre>`;
|
|
34
|
+
if (this.hasLoadMermaid && lang === "mermaid") return `<pre class="mermaid">${escapeHtml(code)}</pre>`;
|
|
35
|
+
if (this.skipLangs.includes(lang)) return `<pre class="language-${lang}"><code class="language-${lang}">${escapeHtml(code)}</code></pre>`;
|
|
33
36
|
const { codeToHtml } = await this.highlighter;
|
|
34
37
|
return codeToHtml(code, Object.assign({
|
|
35
38
|
lang,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shiki-highlighter.js","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"shiki-highlighter.js","names":[],"sources":["../../../../../src/lib/content/shiki/shiki-highlighter.ts"],"sourcesContent":["import markedShiki from 'marked-shiki';\nimport {\n type BundledLanguage,\n type BundledTheme,\n type CodeOptionsMeta,\n type CodeOptionsMultipleThemes,\n type CodeOptionsSingleTheme,\n type CodeToHastOptionsCommon,\n createHighlighter,\n} from 'shiki';\n\nimport { MarkedContentHighlighter } from '../marked/marked-content-highlighter.js';\nimport { escapeHtml } from '../utils/escape-html.js';\n\nexport type ShikiHighlighterOptions = Parameters<typeof createHighlighter>[0];\nexport type ShikiHighlightOptions = Partial<\n Omit<CodeToHastOptionsCommon<BundledLanguage>, 'lang'>\n> &\n CodeOptionsMeta &\n Partial<CodeOptionsSingleTheme<BundledTheme>> &\n Partial<CodeOptionsMultipleThemes<BundledTheme>>;\n\nexport const defaultHighlighterOptions: {\n langs: string[];\n themes: string[];\n} = {\n langs: [\n 'json',\n 'ts',\n 'tsx',\n 'js',\n 'jsx',\n 'html',\n 'css',\n 'angular-html',\n 'angular-ts',\n ],\n themes: ['github-dark', 'github-light'],\n};\n\nexport class ShikiHighlighter extends MarkedContentHighlighter {\n private readonly highlighter: ReturnType<typeof createHighlighter>;\n\n constructor(\n private highlighterOptions: ShikiHighlighterOptions,\n private highlightOptions: ShikiHighlightOptions,\n private container: string,\n private hasLoadMermaid = false,\n private skipLangs: string[] = [],\n ) {\n super();\n this.highlighter = createHighlighter(this.highlighterOptions);\n }\n getHighlightExtension(): import('marked').MarkedExtension {\n return markedShiki({\n container: this.container,\n highlight: async (code, lang, props) => {\n if (this.hasLoadMermaid && lang === 'mermaid') {\n return `<pre class=\"mermaid\">${escapeHtml(code)}</pre>`;\n }\n\n if (this.skipLangs.includes(lang as string)) {\n const escapedCode = escapeHtml(code);\n\n return `<pre class=\"language-${lang}\"><code class=\"language-${lang}\">${escapedCode}</code></pre>`;\n }\n\n const { codeToHtml } = await this.highlighter;\n return codeToHtml(\n code,\n Object.assign(\n {\n lang,\n // required by `transformerMeta*`\n meta: { __raw: props.join(' ') },\n theme: 'github-dark',\n },\n this.highlightOptions,\n ),\n );\n },\n });\n }\n}\n"],"mappings":";;;;;AAsBA,IAAa,4BAGT;CACF,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,QAAQ,CAAC,eAAe,eAAe;CACxC;AAED,IAAa,mBAAb,cAAsC,yBAAyB;CAG7D,YACE,oBACA,kBACA,WACA,iBAAyB,OACzB,YAA8B,EAAE,EAChC;AACA,SAAO;AANC,OAAA,qBAAA;AACA,OAAA,mBAAA;AACA,OAAA,YAAA;AACA,OAAA,iBAAA;AACA,OAAA,YAAA;AAGR,OAAK,cAAc,kBAAkB,KAAK,mBAAmB;;CAE/D,wBAA0D;AACxD,SAAO,YAAY;GACjB,WAAW,KAAK;GAChB,WAAW,OAAO,MAAM,MAAM,UAAU;AACtC,QAAI,KAAK,kBAAkB,SAAS,UAClC,QAAO,wBAAwB,WAAW,KAAK,CAAC;AAGlD,QAAI,KAAK,UAAU,SAAS,KAAe,CAGzC,QAAO,wBAAwB,KAAK,0BAA0B,KAAK,IAF/C,WAAW,KAAK,CAE+C;IAGrF,MAAM,EAAE,eAAe,MAAM,KAAK;AAClC,WAAO,WACL,MACA,OAAO,OACL;KACE;KAEA,MAAM,EAAE,OAAO,MAAM,KAAK,IAAI,EAAE;KAChC,OAAO;KACR,EACD,KAAK,iBACN,CACF;;GAEJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function escapeHtml(value: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Reduces a fenced code-block info string to a safe language identifier so it
|
|
4
|
+
* cannot break out of the `class="language-..."` attribute it is interpolated
|
|
5
|
+
* into.
|
|
6
|
+
*/
|
|
7
|
+
export declare function sanitizeLanguage(lang: string | undefined): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region packages/platform/src/lib/content/utils/escape-html.ts
|
|
2
|
+
function escapeHtml(value) {
|
|
3
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll("\"", """).replaceAll("'", "'");
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Reduces a fenced code-block info string to a safe language identifier so it
|
|
7
|
+
* cannot break out of the `class="language-..."` attribute it is interpolated
|
|
8
|
+
* into.
|
|
9
|
+
*/
|
|
10
|
+
function sanitizeLanguage(lang) {
|
|
11
|
+
return (lang ?? "").match(/^[a-zA-Z0-9-+#.]*/)?.[0] ?? "";
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { escapeHtml, sanitizeLanguage };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=escape-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape-html.js","names":[],"sources":["../../../../../src/lib/content/utils/escape-html.ts"],"sourcesContent":["export function escapeHtml(value: string): string {\n return value\n .replaceAll('&', '&')\n .replaceAll('<', '<')\n .replaceAll('>', '>')\n .replaceAll('\"', '"')\n .replaceAll(\"'\", ''');\n}\n\n/**\n * Reduces a fenced code-block info string to a safe language identifier so it\n * cannot break out of the `class=\"language-...\"` attribute it is interpolated\n * into.\n */\nexport function sanitizeLanguage(lang: string | undefined): string {\n return (lang ?? '').match(/^[a-zA-Z0-9-+#.]*/)?.[0] ?? '';\n}\n"],"mappings":";AAAA,SAAgB,WAAW,OAAuB;AAChD,QAAO,MACJ,WAAW,KAAK,QAAQ,CACxB,WAAW,KAAK,OAAO,CACvB,WAAW,KAAK,OAAO,CACvB,WAAW,MAAK,SAAS,CACzB,WAAW,KAAK,QAAQ;;;;;;;AAQ7B,SAAgB,iBAAiB,MAAkC;AACjE,SAAQ,QAAQ,IAAI,MAAM,oBAAoB,GAAG,MAAM"}
|