@analogjs/platform 3.0.0-alpha.8 → 3.0.0-alpha.9

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.
Files changed (168) hide show
  1. package/package.json +5 -13
  2. package/src/index.d.ts +1 -1
  3. package/src/index.js +7 -3
  4. package/src/index.js.map +1 -0
  5. package/src/lib/clear-client-page-endpoint.js +22 -34
  6. package/src/lib/clear-client-page-endpoint.js.map +1 -0
  7. package/src/lib/content/marked/index.js +10 -6
  8. package/src/lib/content/marked/index.js.map +1 -0
  9. package/src/lib/content/marked/marked-content-highlighter.js +6 -3
  10. package/src/lib/content/marked/marked-content-highlighter.js.map +1 -0
  11. package/src/lib/content/marked/marked-setup.service.js +44 -54
  12. package/src/lib/content/marked/marked-setup.service.js.map +1 -0
  13. package/src/lib/content/prism/angular.js +18 -19
  14. package/src/lib/content/prism/angular.js.map +1 -0
  15. package/src/lib/content/prism/index.js +10 -7
  16. package/src/lib/content/prism/index.js.map +1 -0
  17. package/src/lib/content/prism/prism-highlighter.js +33 -33
  18. package/src/lib/content/prism/prism-highlighter.js.map +1 -0
  19. package/src/lib/content/shiki/index.js +19 -28
  20. package/src/lib/content/shiki/index.js.map +1 -0
  21. package/src/lib/content/shiki/shiki-highlighter.js +45 -44
  22. package/src/lib/content/shiki/shiki-highlighter.js.map +1 -0
  23. package/src/lib/content-plugin.js +155 -222
  24. package/src/lib/content-plugin.js.map +1 -0
  25. package/src/lib/deps-plugin.js +71 -78
  26. package/src/lib/deps-plugin.js.map +1 -0
  27. package/src/lib/nx-plugin/package.json +2 -4
  28. package/src/lib/nx-plugin/src/executors/vite/compat.js +7 -7
  29. package/src/lib/nx-plugin/src/executors/vite/compat.js.map +1 -1
  30. package/src/lib/nx-plugin/src/executors/vite/schema.d.ts +1 -1
  31. package/src/lib/nx-plugin/src/executors/vite/vite.impl.js +6 -4
  32. package/src/lib/nx-plugin/src/executors/vite/vite.impl.js.map +1 -1
  33. package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js +7 -7
  34. package/src/lib/nx-plugin/src/executors/vite-dev-server/compat.js.map +1 -1
  35. package/src/lib/nx-plugin/src/executors/vite-dev-server/schema.d.ts +1 -1
  36. package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js +6 -4
  37. package/src/lib/nx-plugin/src/executors/vite-dev-server/vite-dev-server.impl.js.map +1 -1
  38. package/src/lib/nx-plugin/src/executors/vitest/compat.js +7 -7
  39. package/src/lib/nx-plugin/src/executors/vitest/compat.js.map +1 -1
  40. package/src/lib/nx-plugin/src/executors/vitest/schema.d.ts +1 -1
  41. package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js +6 -4
  42. package/src/lib/nx-plugin/src/executors/vitest/vitest.impl.js.map +1 -1
  43. package/src/lib/nx-plugin/src/generators/app/compat.js +7 -7
  44. package/src/lib/nx-plugin/src/generators/app/compat.js.map +1 -1
  45. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.ts__template__ +0 -6
  46. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/vite.config.ts__template__ +0 -8
  47. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/src/app/app.config.ts__template__ +0 -6
  48. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v17/vite.config.ts__template__ +0 -17
  49. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/src/app/app.config.ts__template__ +0 -6
  50. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v18/vite.config.ts__template__ +0 -17
  51. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/src/app/app.config.ts__template__ +0 -6
  52. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v19/vite.config.ts__template__ +0 -8
  53. package/src/lib/nx-plugin/src/generators/app/generator.js +78 -92
  54. package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
  55. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js +11 -12
  56. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js.map +1 -1
  57. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js +72 -81
  58. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js.map +1 -1
  59. package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js +23 -58
  60. package/src/lib/nx-plugin/src/generators/app/lib/add-angular-app.js.map +1 -1
  61. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js +12 -55
  62. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js.map +1 -1
  63. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js +15 -16
  64. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js.map +1 -1
  65. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js +14 -13
  66. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js.map +1 -1
  67. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js +17 -29
  68. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js.map +1 -1
  69. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js +59 -95
  70. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-helpers.js.map +1 -1
  71. package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js +8 -44
  72. package/src/lib/nx-plugin/src/generators/app/lib/add-vite-plugin.js.map +1 -1
  73. package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js +17 -20
  74. package/src/lib/nx-plugin/src/generators/app/lib/cleanup-files.js.map +1 -1
  75. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js +59 -105
  76. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js.map +1 -1
  77. package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js +14 -18
  78. package/src/lib/nx-plugin/src/generators/app/lib/update-index-html.js.map +1 -1
  79. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js +35 -54
  80. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js.map +1 -1
  81. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js +41 -68
  82. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js.map +1 -1
  83. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.d.ts +0 -1
  84. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js +9 -11
  85. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js.map +1 -1
  86. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js +24 -43
  87. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js.map +1 -1
  88. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.d.ts +0 -5
  89. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js +29 -36
  90. package/src/lib/nx-plugin/src/generators/app/versions/nx_17_X/versions.js.map +1 -1
  91. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.d.ts +5 -10
  92. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js +30 -37
  93. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js.map +1 -1
  94. package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js +11 -16
  95. package/src/lib/nx-plugin/src/generators/app/versions/tailwind-dependencies.js.map +1 -1
  96. package/src/lib/nx-plugin/src/generators/app/versions.d.ts +0 -10
  97. package/src/lib/nx-plugin/src/generators/app/versions.js +28 -42
  98. package/src/lib/nx-plugin/src/generators/app/versions.js.map +1 -1
  99. package/src/lib/nx-plugin/src/generators/init/compat.js +7 -7
  100. package/src/lib/nx-plugin/src/generators/init/compat.js.map +1 -1
  101. package/src/lib/nx-plugin/src/generators/init/generator.js +54 -65
  102. package/src/lib/nx-plugin/src/generators/init/generator.js.map +1 -1
  103. package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js +19 -20
  104. package/src/lib/nx-plugin/src/generators/init/lib/add-analog-dependencies.js.map +1 -1
  105. package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js +20 -21
  106. package/src/lib/nx-plugin/src/generators/init/lib/update-app-tsconfig.js.map +1 -1
  107. package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js +56 -66
  108. package/src/lib/nx-plugin/src/generators/init/lib/update-build-target.js.map +1 -1
  109. package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js +12 -11
  110. package/src/lib/nx-plugin/src/generators/init/lib/update-git-ignore.js.map +1 -1
  111. package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js +17 -21
  112. package/src/lib/nx-plugin/src/generators/init/lib/update-index-html.js.map +1 -1
  113. package/src/lib/nx-plugin/src/generators/init/lib/update-main.js +12 -15
  114. package/src/lib/nx-plugin/src/generators/init/lib/update-main.js.map +1 -1
  115. package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js +19 -31
  116. package/src/lib/nx-plugin/src/generators/init/lib/update-package-json.js.map +1 -1
  117. package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js +43 -51
  118. package/src/lib/nx-plugin/src/generators/init/lib/update-serve-target.js.map +1 -1
  119. package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js +27 -34
  120. package/src/lib/nx-plugin/src/generators/init/lib/update-test-target.js.map +1 -1
  121. package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js +19 -20
  122. package/src/lib/nx-plugin/src/generators/init/lib/update-test-tsconfig.js.map +1 -1
  123. package/src/lib/nx-plugin/src/generators/page/generator.js +34 -44
  124. package/src/lib/nx-plugin/src/generators/page/generator.js.map +1 -1
  125. package/src/lib/nx-plugin/src/generators/preset/generator.js +11 -43
  126. package/src/lib/nx-plugin/src/generators/preset/generator.js.map +1 -1
  127. package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js +7 -7
  128. package/src/lib/nx-plugin/src/generators/setup-vitest/compat.js.map +1 -1
  129. package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js +35 -42
  130. package/src/lib/nx-plugin/src/generators/setup-vitest/generator.js.map +1 -1
  131. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js +7 -7
  132. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/add-analog-dependencies.js.map +1 -1
  133. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js +20 -27
  134. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-test-target.js.map +1 -1
  135. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js +19 -22
  136. package/src/lib/nx-plugin/src/generators/setup-vitest/lib/update-tsconfig.js.map +1 -1
  137. package/src/lib/nx-plugin/src/index.js +0 -2
  138. package/src/lib/nx-plugin/src/utils/version-utils.js +20 -27
  139. package/src/lib/nx-plugin/src/utils/version-utils.js.map +1 -1
  140. package/src/lib/nx-plugin/src/utils/versions/dependencies.js +42 -62
  141. package/src/lib/nx-plugin/src/utils/versions/dependencies.js.map +1 -1
  142. package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js +49 -83
  143. package/src/lib/nx-plugin/src/utils/versions/dev-dependencies.js.map +1 -1
  144. package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js +19 -20
  145. package/src/lib/nx-plugin/src/utils/versions/ng_17_X/versions.js.map +1 -1
  146. package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js +19 -20
  147. package/src/lib/nx-plugin/src/utils/versions/ng_18_X/versions.js.map +1 -1
  148. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.d.ts +5 -5
  149. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js +22 -23
  150. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js.map +1 -1
  151. package/src/lib/platform-plugin.js +57 -63
  152. package/src/lib/platform-plugin.js.map +1 -0
  153. package/src/lib/router-plugin.js +135 -185
  154. package/src/lib/router-plugin.js.map +1 -0
  155. package/src/lib/ssr/inject-html-plugin.js +25 -25
  156. package/src/lib/ssr/inject-html-plugin.js.map +1 -0
  157. package/src/lib/ssr/ssr-build-plugin.js +53 -88
  158. package/src/lib/ssr/ssr-build-plugin.js.map +1 -0
  159. package/src/lib/utils/rolldown.js +12 -8
  160. package/src/lib/utils/rolldown.js.map +1 -0
  161. package/src/server-mode-plugin.js +16 -20
  162. package/src/server-mode-plugin.js.map +1 -0
  163. package/README.md +0 -5
  164. package/src/lib/content/prism/options.js +0 -1
  165. package/src/lib/content/shiki/options.js +0 -1
  166. package/src/lib/nx-plugin/README.md +0 -23
  167. package/src/lib/nx-plugin/src/index.js.map +0 -1
  168. package/src/lib/options.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiki-highlighter.js","names":[],"sources":["../../../../../../../packages/platform/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 getHighlighter,\n} from 'shiki';\n\nimport { MarkedContentHighlighter } from '../marked/marked-content-highlighter.js';\n\nexport type ShikiHighlighterOptions = Parameters<typeof getHighlighter>[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 = getHighlighter(this.highlighterOptions);\n\n constructor(\n private highlighterOptions: ShikiHighlighterOptions,\n private highlightOptions: ShikiHighlightOptions,\n private container: string,\n private hasLoadMermaid = false,\n ) {\n super();\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\">${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":";;;;AAqBA,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;AACA,SAAO;AALC,OAAA,qBAAA;AACA,OAAA,mBAAA;AACA,OAAA,YAAA;AACA,OAAA,iBAAA;qBANqB,eAAe,KAAK,mBAAmB;;CAUtE,wBAA0D;AACxD,SAAO,YAAY;GACjB,WAAW,KAAK;GAChB,WAAW,OAAO,MAAM,MAAM,UAAU;AACtC,QAAI,KAAK,kBAAkB,SAAS,UAClC,QAAO,wBAAwB,KAAK;IAGtC,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"}
@@ -1,225 +1,158 @@
1
- import * as vite from 'vite';
2
- import { readFileSync } from 'node:fs';
3
- import { resolve } from 'node:path';
4
- import { globSync } from 'tinyglobby';
5
- import { getBundleOptionsKey } from './utils/rolldown.js';
1
+ import { getBundleOptionsKey } from "./utils/rolldown.js";
2
+ import * as vite from "vite";
3
+ import { globSync } from "tinyglobby";
4
+ import { resolve } from "node:path";
5
+ import { readFileSync } from "node:fs";
6
+ //#region packages/platform/src/lib/content-plugin.ts
6
7
  /**
7
- * Content plugin that provides markdown and content file processing for Analog.
8
- *
9
- * IMPORTANT: This plugin uses tinyglobby for file discovery.
10
- * Key pitfall with { dot: true }:
11
- * - Returns relative paths from cwd (e.g., "apps/blog-app/src/content/...")
12
- * - These paths CANNOT be used directly in ES module imports
13
- * - Relative paths without ./ or ../ are treated as package names
14
- * - Must convert to absolute paths for imports to work correctly
15
- */
16
- export function contentPlugin({ highlighter, markedOptions, shikiOptions, prismOptions, } = {}, options) {
17
- const cache = new Map();
18
- let markedHighlighter;
19
- const workspaceRoot = vite.normalizePath(options?.workspaceRoot ?? process.cwd());
20
- let config;
21
- let root;
22
- const contentDiscoveryPlugins = [
23
- {
24
- name: 'analog-content-glob-routes',
25
- config(_config) {
26
- config = _config;
27
- root = vite.normalizePath(resolve(workspaceRoot, config.root || '.') || '.');
28
- },
29
- // Vite 8 / Rolldown "filtered transform" — the `filter.code` string
30
- // tells the bundler to skip this handler entirely for modules whose
31
- // source does not contain the substring, avoiding unnecessary JS→Rust
32
- // round-trips. The inner `code.includes()` guard is kept for Vite 7
33
- // compat where filters are not evaluated by the bundler.
34
- transform: {
35
- filter: {
36
- code: 'ANALOG_CONTENT_FILE_LIST',
37
- },
38
- handler(code) {
39
- if (code.includes('ANALOG_CONTENT_FILE_LIST')) {
40
- const contentFilesList = globSync([
41
- `${root}/src/content/**/*.md`,
42
- ...(options?.additionalContentDirs || []).map((glob) => `${workspaceRoot}${glob}/**/*.md`),
43
- ], { dot: true });
44
- const eagerImports = [];
45
- contentFilesList.forEach((module, index) => {
46
- // CRITICAL: tinyglobby returns relative paths like "apps/blog-app/src/content/file.md"
47
- // These MUST be converted to absolute paths for ES module imports
48
- // Otherwise Node.js treats "apps" as a package name and throws "Cannot find package 'apps'"
49
- const absolutePath = module.startsWith('/')
50
- ? module
51
- : `${workspaceRoot}/${module}`;
52
- eagerImports.push(`import { default as analog_module_${index} } from "${absolutePath}?analog-content-list=true";`);
53
- });
54
- let result = code.replace('let ANALOG_CONTENT_FILE_LIST = {};', `
55
- let ANALOG_CONTENT_FILE_LIST = {${contentFilesList.map((module, index) => `"${module.replace(root, '')}": analog_module_${index}`)}};
8
+ * Content plugin that provides markdown and content file processing for Analog.
9
+ *
10
+ * IMPORTANT: This plugin uses tinyglobby for file discovery.
11
+ * Key pitfall with { dot: true }:
12
+ * - Returns relative paths from cwd (e.g., "apps/blog-app/src/content/...")
13
+ * - These paths CANNOT be used directly in ES module imports
14
+ * - Relative paths without ./ or ../ are treated as package names
15
+ * - Must convert to absolute paths for imports to work correctly
16
+ */
17
+ function contentPlugin({ highlighter, markedOptions, shikiOptions, prismOptions } = {}, options) {
18
+ const cache = /* @__PURE__ */ new Map();
19
+ let markedHighlighter;
20
+ const workspaceRoot = vite.normalizePath(options?.workspaceRoot ?? process.cwd());
21
+ let config;
22
+ let root;
23
+ const contentDiscoveryPlugins = [{
24
+ name: "analog-content-glob-routes",
25
+ config(_config) {
26
+ config = _config;
27
+ root = vite.normalizePath(resolve(workspaceRoot, config.root || ".") || ".");
28
+ },
29
+ transform: {
30
+ filter: { code: "ANALOG_CONTENT_FILE_LIST" },
31
+ handler(code) {
32
+ if (code.includes("ANALOG_CONTENT_FILE_LIST")) {
33
+ const contentFilesList = globSync([`${root}/src/content/**/*.md`, ...(options?.additionalContentDirs || []).map((glob) => `${workspaceRoot}${glob}/**/*.md`)], { dot: true });
34
+ const eagerImports = [];
35
+ contentFilesList.forEach((module, index) => {
36
+ const absolutePath = module.startsWith("/") ? module : `${workspaceRoot}/${module}`;
37
+ eagerImports.push(`import { default as analog_module_${index} } from "${absolutePath}?analog-content-list=true";`);
38
+ });
39
+ let result = code.replace("const ANALOG_CONTENT_FILE_LIST = {};", `
40
+ let ANALOG_CONTENT_FILE_LIST = {${contentFilesList.map((module, index) => `"${module.replace(root, "")}": analog_module_${index}`)}};
56
41
  `);
57
- if (!code.includes('analog_module_')) {
58
- result = `${eagerImports.join('\n')}\n${result}`;
59
- }
60
- return {
61
- code: result,
62
- map: { mappings: '' },
63
- };
64
- }
65
- return;
66
- },
67
- },
68
- },
69
- {
70
- name: 'analogjs-invalidate-content-dirs',
71
- configureServer(server) {
72
- function invalidateContent(path) {
73
- if (path.includes(vite.normalizePath(`/content/`))) {
74
- server.moduleGraph.fileToModulesMap.forEach((mods) => {
75
- mods.forEach((mod) => {
76
- if (mod.id?.includes('analogjs') &&
77
- mod.id?.includes('content')) {
78
- server.moduleGraph.invalidateModule(mod);
79
- mod.importers.forEach((imp) => {
80
- server.moduleGraph.invalidateModule(imp);
81
- });
82
- }
83
- });
84
- });
85
- server.ws.send({
86
- type: 'full-reload',
87
- });
88
- }
89
- }
90
- server.watcher.on('add', invalidateContent);
91
- server.watcher.on('unlink', invalidateContent);
92
- },
93
- },
94
- ];
95
- if (!highlighter) {
96
- return [
97
- {
98
- name: 'analogjs-external-content',
99
- config() {
100
- const bundleOptionsKey = getBundleOptionsKey();
101
- return {
102
- build: {
103
- [bundleOptionsKey]: {
104
- external: ['@analogjs/content'],
105
- },
106
- },
107
- };
108
- },
109
- },
110
- {
111
- name: 'analogjs-exclude-content-import',
112
- transform: {
113
- filter: {
114
- code: '@analogjs/content',
115
- },
116
- handler(code) {
117
- /**
118
- * Remove the package so it doesn't get
119
- * referenced when building for serverless
120
- * functions.
121
- */
122
- if (code.includes(`import('@analogjs/content')`)) {
123
- return {
124
- code: code.replace(`import('@analogjs/content')`, 'Promise.resolve({})'),
125
- };
126
- }
127
- return;
128
- },
129
- },
130
- },
131
- ...contentDiscoveryPlugins,
132
- ];
133
- }
134
- return [
135
- {
136
- name: 'analogjs-content-frontmatter',
137
- // Filter by module ID so only `?analog-content-list=true` virtual
138
- // imports enter the handler. Returns `moduleSideEffects: false` so
139
- // Rolldown can tree-shake unused content list entries.
140
- transform: {
141
- filter: {
142
- id: /analog-content-list=true/,
143
- },
144
- async handler(code, id) {
145
- const cachedContent = cache.get(id);
146
- // There's no reason to run `readFileSync` and frontmatter parsing if the
147
- // `transform` hook is called with the same code. In such cases, we can simply
148
- // return the cached attributes, which is faster than repeatedly reading files
149
- // synchronously during the build process.
150
- if (cachedContent?.code === code) {
151
- return {
152
- code: `export default ${cachedContent.attributes}`,
153
- moduleSideEffects: false,
154
- };
155
- }
156
- const fm = await import('front-matter');
157
- // The `default` property will be available in CommonJS environment, for instance,
158
- // when running unit tests. It's safe to retrieve `default` first, since we still
159
- // fallback to the original implementation.
160
- const frontmatter = fm.default || fm;
161
- const fileContents = readFileSync(id.split('?')[0], 'utf8');
162
- const { attributes } = frontmatter(fileContents);
163
- const content = {
164
- code,
165
- attributes: JSON.stringify(attributes),
166
- };
167
- cache.set(id, content);
168
- return {
169
- code: `export default ${content.attributes}`,
170
- moduleSideEffects: false,
171
- };
172
- },
173
- },
174
- },
175
- {
176
- name: 'analogjs-content-file',
177
- enforce: 'post',
178
- async load(id) {
179
- if (!id.includes('analog-content-file=true')) {
180
- return;
181
- }
182
- if (!markedHighlighter) {
183
- if (highlighter === 'shiki') {
184
- const { getShikiHighlighter } = await import('./content/shiki/index.js');
185
- markedHighlighter = getShikiHighlighter(shikiOptions);
186
- }
187
- else {
188
- const { getPrismHighlighter } = await import('./content/prism/index.js');
189
- markedHighlighter = getPrismHighlighter();
190
- const langs = [
191
- 'bash',
192
- 'css',
193
- 'javascript',
194
- 'json',
195
- 'markup',
196
- 'typescript',
197
- ];
198
- if (Array.isArray(prismOptions?.additionalLangs) &&
199
- prismOptions?.additionalLangs?.length > 0) {
200
- langs.push(...prismOptions.additionalLangs);
201
- }
202
- const loadLanguages = await import('prismjs/components/index.js');
203
- loadLanguages.default(langs);
204
- }
205
- }
206
- const fm = await import('front-matter');
207
- // The `default` property will be available in CommonJS environment, for instance,
208
- // when running unit tests. It's safe to retrieve `default` first, since we still
209
- // fallback to the original implementation.
210
- const frontmatterFn = fm.default || fm;
211
- const fileContents = readFileSync(id.split('?')[0], 'utf8');
212
- const { body, frontmatter } = frontmatterFn(fileContents);
213
- // parse markdown and highlight
214
- const { getMarkedSetup } = await import('./content/marked/index.js');
215
- const markedSetupService = getMarkedSetup({ mangle: true, ...(markedOptions || {}) }, markedHighlighter);
216
- const mdContent = (await markedSetupService
217
- .getMarkedInstance()
218
- .parse(body));
219
- return `export default ${JSON.stringify(`---\n${frontmatter}\n---\n\n${mdContent}`)}`;
220
- },
221
- },
222
- ...contentDiscoveryPlugins,
223
- ];
42
+ if (!code.includes("analog_module_")) result = `${eagerImports.join("\n")}\n${result}`;
43
+ return {
44
+ code: result,
45
+ map: { mappings: "" }
46
+ };
47
+ }
48
+ }
49
+ }
50
+ }, {
51
+ name: "analogjs-invalidate-content-dirs",
52
+ configureServer(server) {
53
+ function invalidateContent(path) {
54
+ if (path.includes(vite.normalizePath(`/content/`))) {
55
+ server.moduleGraph.fileToModulesMap.forEach((mods) => {
56
+ mods.forEach((mod) => {
57
+ if (mod.id?.includes("analogjs") && mod.id?.includes("content")) {
58
+ server.moduleGraph.invalidateModule(mod);
59
+ mod.importers.forEach((imp) => {
60
+ server.moduleGraph.invalidateModule(imp);
61
+ });
62
+ }
63
+ });
64
+ });
65
+ server.ws.send({ type: "full-reload" });
66
+ }
67
+ }
68
+ server.watcher.on("add", invalidateContent);
69
+ server.watcher.on("unlink", invalidateContent);
70
+ }
71
+ }];
72
+ if (!highlighter) return [
73
+ {
74
+ name: "analogjs-external-content",
75
+ config() {
76
+ return { build: { [getBundleOptionsKey()]: { external: ["@analogjs/content"] } } };
77
+ }
78
+ },
79
+ {
80
+ name: "analogjs-exclude-content-import",
81
+ transform: {
82
+ filter: { code: "@analogjs/content" },
83
+ handler(code) {
84
+ /**
85
+ * Remove the package so it doesn't get
86
+ * referenced when building for serverless
87
+ * functions.
88
+ */
89
+ if (code.includes(`import('@analogjs/content')`)) return { code: code.replace(`import('@analogjs/content')`, "Promise.resolve({})") };
90
+ }
91
+ }
92
+ },
93
+ ...contentDiscoveryPlugins
94
+ ];
95
+ return [
96
+ {
97
+ name: "analogjs-content-frontmatter",
98
+ transform: {
99
+ filter: { id: /analog-content-list=true/ },
100
+ async handler(code, id) {
101
+ const cachedContent = cache.get(id);
102
+ if (cachedContent?.code === code) return {
103
+ code: `export default ${cachedContent.attributes}`,
104
+ moduleSideEffects: false
105
+ };
106
+ const fm = await import("front-matter");
107
+ const { attributes } = (fm.default || fm)(readFileSync(id.split("?")[0], "utf8"));
108
+ const content = {
109
+ code,
110
+ attributes: JSON.stringify(attributes)
111
+ };
112
+ cache.set(id, content);
113
+ return {
114
+ code: `export default ${content.attributes}`,
115
+ moduleSideEffects: false
116
+ };
117
+ }
118
+ }
119
+ },
120
+ {
121
+ name: "analogjs-content-file",
122
+ enforce: "post",
123
+ async load(id) {
124
+ if (!id.includes("analog-content-file=true")) return;
125
+ if (!markedHighlighter) if (highlighter === "shiki") {
126
+ const { getShikiHighlighter } = await import("./content/shiki/index.js");
127
+ markedHighlighter = getShikiHighlighter(shikiOptions);
128
+ } else {
129
+ const { getPrismHighlighter } = await import("./content/prism/index.js");
130
+ markedHighlighter = getPrismHighlighter();
131
+ const langs = [
132
+ "bash",
133
+ "css",
134
+ "javascript",
135
+ "json",
136
+ "markup",
137
+ "typescript"
138
+ ];
139
+ if (Array.isArray(prismOptions?.additionalLangs) && prismOptions?.additionalLangs?.length > 0) langs.push(...prismOptions.additionalLangs);
140
+ (await import("prismjs/components/index.js")).default(langs);
141
+ }
142
+ const fm = await import("front-matter");
143
+ const { body, frontmatter } = (fm.default || fm)(readFileSync(id.split("?")[0], "utf8"));
144
+ const { getMarkedSetup } = await import("./content/marked/index.js");
145
+ const mdContent = await getMarkedSetup({
146
+ mangle: true,
147
+ ...markedOptions || {}
148
+ }, markedHighlighter).getMarkedInstance().parse(body);
149
+ return `export default ${JSON.stringify(`---\n${frontmatter}\n---\n\n${mdContent}`)}`;
150
+ }
151
+ },
152
+ ...contentDiscoveryPlugins
153
+ ];
224
154
  }
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBT3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBYzFEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLEVBQ0UsV0FBVyxFQUNYLGFBQWEsRUFDYixZQUFZLEVBQ1osWUFBWSxNQUNZLEVBQUUsRUFDNUIsT0FBaUI7SUFFakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFFekMsSUFBSSxpQkFBMkMsQ0FBQztJQUNoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN0QyxPQUFPLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FDeEMsQ0FBQztJQUNGLElBQUksTUFBdUIsQ0FBQztJQUM1QixJQUFJLElBQVksQ0FBQztJQUVqQixNQUFNLHVCQUF1QixHQUFrQjtRQUM3QztZQUNFLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsTUFBTSxDQUFDLE9BQU87Z0JBQ1osTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3ZCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQ2xELENBQUM7WUFDSixDQUFDO1lBQ0Qsb0VBQW9FO1lBQ3BFLG9F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
155
+ //#endregion
156
+ export { contentPlugin };
157
+
158
+ //# sourceMappingURL=content-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-plugin.js","names":[],"sources":["../../../../../packages/platform/src/lib/content-plugin.ts"],"sourcesContent":["import * as vite from 'vite';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { globSync } from 'tinyglobby';\n\nimport type { WithShikiHighlighterOptions } from './content/shiki/options.js';\nimport type { MarkedContentHighlighter } from './content/marked/marked-content-highlighter.js';\nimport type { WithPrismHighlighterOptions } from './content/prism/options.js';\nimport type { WithMarkedOptions } from './content/marked/index.js';\nimport type { Options } from './options.js';\nimport { getBundleOptionsKey } from './utils/rolldown.js';\n\ninterface Content {\n code: string;\n attributes: string;\n}\n\nexport type ContentPluginOptions = {\n highlighter?: 'shiki' | 'prism';\n markedOptions?: WithMarkedOptions;\n shikiOptions?: WithShikiHighlighterOptions;\n prismOptions?: WithPrismHighlighterOptions;\n};\n\n/**\n * Content plugin that provides markdown and content file processing for Analog.\n *\n * IMPORTANT: This plugin uses tinyglobby for file discovery.\n * Key pitfall with { dot: true }:\n * - Returns relative paths from cwd (e.g., \"apps/blog-app/src/content/...\")\n * - These paths CANNOT be used directly in ES module imports\n * - Relative paths without ./ or ../ are treated as package names\n * - Must convert to absolute paths for imports to work correctly\n */\nexport function contentPlugin(\n {\n highlighter,\n markedOptions,\n shikiOptions,\n prismOptions,\n }: ContentPluginOptions = {},\n options?: Options,\n): vite.Plugin[] {\n const cache = new Map<string, Content>();\n\n let markedHighlighter: MarkedContentHighlighter;\n const workspaceRoot = vite.normalizePath(\n options?.workspaceRoot ?? process.cwd(),\n );\n let config: vite.UserConfig;\n let root: string;\n\n const contentDiscoveryPlugins: vite.Plugin[] = [\n {\n name: 'analog-content-glob-routes',\n config(_config) {\n config = _config;\n root = vite.normalizePath(\n resolve(workspaceRoot, config.root || '.') || '.',\n );\n },\n // Vite 8 / Rolldown \"filtered transform\" — the `filter.code` string\n // tells the bundler to skip this handler entirely for modules whose\n // source does not contain the substring, avoiding unnecessary JS→Rust\n // round-trips. The inner `code.includes()` guard is kept for Vite 7\n // compat where filters are not evaluated by the bundler.\n transform: {\n filter: {\n code: 'ANALOG_CONTENT_FILE_LIST',\n },\n handler(code) {\n if (code.includes('ANALOG_CONTENT_FILE_LIST')) {\n const contentFilesList: string[] = globSync(\n [\n `${root}/src/content/**/*.md`,\n ...(options?.additionalContentDirs || []).map(\n (glob) => `${workspaceRoot}${glob}/**/*.md`,\n ),\n ],\n { dot: true },\n );\n\n const eagerImports: string[] = [];\n\n contentFilesList.forEach((module, index) => {\n // CRITICAL: tinyglobby returns relative paths like \"apps/blog-app/src/content/file.md\"\n // These MUST be converted to absolute paths for ES module imports\n // Otherwise Node.js treats \"apps\" as a package name and throws \"Cannot find package 'apps'\"\n const absolutePath = module.startsWith('/')\n ? module\n : `${workspaceRoot}/${module}`;\n eagerImports.push(\n `import { default as analog_module_${index} } from \"${absolutePath}?analog-content-list=true\";`,\n );\n });\n\n let result = code.replace(\n 'const ANALOG_CONTENT_FILE_LIST = {};',\n `\n let ANALOG_CONTENT_FILE_LIST = {${contentFilesList.map(\n (module, index) =>\n `\"${module.replace(root, '')}\": analog_module_${index}`,\n )}};\n `,\n );\n\n if (!code.includes('analog_module_')) {\n result = `${eagerImports.join('\\n')}\\n${result}`;\n }\n\n return {\n code: result,\n map: { mappings: '' },\n };\n }\n\n return;\n },\n },\n },\n {\n name: 'analogjs-invalidate-content-dirs',\n configureServer(server) {\n function invalidateContent(path: string) {\n if (path.includes(vite.normalizePath(`/content/`))) {\n server.moduleGraph.fileToModulesMap.forEach((mods) => {\n mods.forEach((mod) => {\n if (\n mod.id?.includes('analogjs') &&\n mod.id?.includes('content')\n ) {\n server.moduleGraph.invalidateModule(mod);\n\n mod.importers.forEach((imp) => {\n server.moduleGraph.invalidateModule(imp);\n });\n }\n });\n });\n\n server.ws.send({\n type: 'full-reload',\n });\n }\n }\n\n server.watcher.on('add', invalidateContent);\n server.watcher.on('unlink', invalidateContent);\n },\n },\n ];\n\n if (!highlighter) {\n return [\n {\n name: 'analogjs-external-content',\n config() {\n const bundleOptionsKey = getBundleOptionsKey();\n return {\n build: {\n [bundleOptionsKey]: {\n external: ['@analogjs/content'],\n },\n },\n };\n },\n },\n {\n name: 'analogjs-exclude-content-import',\n transform: {\n filter: {\n code: '@analogjs/content',\n },\n handler(code) {\n /**\n * Remove the package so it doesn't get\n * referenced when building for serverless\n * functions.\n */\n if (code.includes(`import('@analogjs/content')`)) {\n return {\n code: code.replace(\n `import('@analogjs/content')`,\n 'Promise.resolve({})',\n ),\n };\n }\n\n return;\n },\n },\n },\n ...contentDiscoveryPlugins,\n ];\n }\n\n return [\n {\n name: 'analogjs-content-frontmatter',\n // Filter by module ID so only `?analog-content-list=true` virtual\n // imports enter the handler. Returns `moduleSideEffects: false` so\n // Rolldown can tree-shake unused content list entries.\n transform: {\n filter: {\n id: /analog-content-list=true/,\n },\n async handler(code, id) {\n const cachedContent = cache.get(id);\n // There's no reason to run `readFileSync` and frontmatter parsing if the\n // `transform` hook is called with the same code. In such cases, we can simply\n // return the cached attributes, which is faster than repeatedly reading files\n // synchronously during the build process.\n if (cachedContent?.code === code) {\n return {\n code: `export default ${cachedContent.attributes}`,\n moduleSideEffects: false,\n };\n }\n\n const fm: any = await import('front-matter');\n // The `default` property will be available in CommonJS environment, for instance,\n // when running unit tests. It's safe to retrieve `default` first, since we still\n // fallback to the original implementation.\n const frontmatter = fm.default || fm;\n const fileContents = readFileSync(id.split('?')[0], 'utf8');\n const { attributes } = frontmatter(fileContents);\n const content = {\n code,\n attributes: JSON.stringify(attributes),\n };\n cache.set(id, content);\n\n return {\n code: `export default ${content.attributes}`,\n moduleSideEffects: false,\n };\n },\n },\n },\n {\n name: 'analogjs-content-file',\n enforce: 'post',\n async load(id) {\n if (!id.includes('analog-content-file=true')) {\n return;\n }\n\n if (!markedHighlighter) {\n if (highlighter === 'shiki') {\n const { getShikiHighlighter } =\n await import('./content/shiki/index.js');\n markedHighlighter = getShikiHighlighter(shikiOptions);\n } else {\n const { getPrismHighlighter } =\n await import('./content/prism/index.js');\n markedHighlighter = getPrismHighlighter();\n\n const langs = [\n 'bash',\n 'css',\n 'javascript',\n 'json',\n 'markup',\n 'typescript',\n ];\n\n if (\n Array.isArray(prismOptions?.additionalLangs) &&\n prismOptions?.additionalLangs?.length > 0\n ) {\n langs.push(...prismOptions.additionalLangs);\n }\n\n const loadLanguages = await import('prismjs/components/index.js');\n\n (\n loadLanguages as unknown as { default: (...args: any[]) => any }\n ).default(langs);\n }\n }\n\n const fm: any = await import('front-matter');\n // The `default` property will be available in CommonJS environment, for instance,\n // when running unit tests. It's safe to retrieve `default` first, since we still\n // fallback to the original implementation.\n const frontmatterFn = fm.default || fm;\n const fileContents = readFileSync(id.split('?')[0], 'utf8');\n const { body, frontmatter } = frontmatterFn(fileContents);\n\n // parse markdown and highlight\n const { getMarkedSetup } = await import('./content/marked/index.js');\n const markedSetupService = getMarkedSetup(\n { mangle: true, ...(markedOptions || {}) },\n markedHighlighter,\n );\n const mdContent = (await markedSetupService\n .getMarkedInstance()\n .parse(body)) as unknown as string;\n\n return `export default ${JSON.stringify(\n `---\\n${frontmatter}\\n---\\n\\n${mdContent}`,\n )}`;\n },\n },\n ...contentDiscoveryPlugins,\n ];\n}\n"],"mappings":"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"}
@@ -1,79 +1,72 @@
1
- import { VERSION } from '@angular/compiler-cli';
2
- import { crawlFrameworkPkgs } from 'vitefu';
3
- import { getJsTransformConfigKey } from './utils/rolldown.js';
4
- export function depsPlugin(options) {
5
- const workspaceRoot = options?.workspaceRoot ?? process.cwd();
6
- return [
7
- {
8
- name: 'analogjs-deps-plugin',
9
- config() {
10
- const transformConfig = options?.vite === false ||
11
- options?.vite?.experimental?.useAngularCompilationAPI
12
- ? {}
13
- : { exclude: ['**/*.ts', '**/*.js'] };
14
- return {
15
- [getJsTransformConfigKey()]: transformConfig,
16
- ssr: {
17
- noExternal: [
18
- '@analogjs/**',
19
- 'firebase/**',
20
- 'firebase-admin/**',
21
- 'rxfire',
22
- '@ng-web-apis/**',
23
- '@taiga-ui/**',
24
- '@tanstack/angular-query-experimental',
25
- ],
26
- },
27
- optimizeDeps: {
28
- include: [
29
- '@angular/common',
30
- '@angular/common/http',
31
- ...(Number(VERSION.major) > 15
32
- ? ['@angular/core/rxjs-interop']
33
- : []),
34
- 'front-matter',
35
- ],
36
- exclude: [
37
- '@angular/platform-server',
38
- '@analogjs/content',
39
- '@analogjs/router',
40
- '@nx/angular',
41
- '@nx/vite',
42
- '@nx/devkit',
43
- '@nx/js',
44
- '@nx/devkit',
45
- '@nx/cypress',
46
- '@nx/jest',
47
- '@nx/js',
48
- '@nx/eslint',
49
- '@nx/webpack',
50
- '@nx/web',
51
- '@nx/workspace',
52
- '@nx/eslint',
53
- '@nx/module-federation',
54
- '@nx/rspack',
55
- 'webpack',
56
- 'fsevents',
57
- 'nx',
58
- ],
59
- },
60
- };
61
- },
62
- },
63
- {
64
- name: 'analogjs-auto-discover-deps',
65
- async config(config, { command }) {
66
- const pkgConfig = await crawlFrameworkPkgs({
67
- root: workspaceRoot,
68
- isBuild: command === 'build',
69
- viteUserConfig: config,
70
- isSemiFrameworkPkgByJson(pkgJson) {
71
- return pkgJson['module'] && pkgJson['module'].includes('fesm');
72
- },
73
- });
74
- return pkgConfig;
75
- },
76
- },
77
- ];
1
+ import { getJsTransformConfigKey } from "./utils/rolldown.js";
2
+ import { VERSION } from "@angular/compiler-cli";
3
+ import { crawlFrameworkPkgs } from "vitefu";
4
+ //#region packages/platform/src/lib/deps-plugin.ts
5
+ function depsPlugin(options) {
6
+ const workspaceRoot = options?.workspaceRoot ?? process.cwd();
7
+ return [{
8
+ name: "analogjs-deps-plugin",
9
+ config() {
10
+ const transformConfig = options?.vite === false || options?.vite?.experimental?.useAngularCompilationAPI ? {} : { exclude: ["**/*.ts", "**/*.js"] };
11
+ return {
12
+ [getJsTransformConfigKey()]: transformConfig,
13
+ ssr: { noExternal: [
14
+ "@analogjs/**",
15
+ "firebase/**",
16
+ "firebase-admin/**",
17
+ "rxfire",
18
+ "@ng-web-apis/**",
19
+ "@taiga-ui/**",
20
+ "@tanstack/angular-query-experimental"
21
+ ] },
22
+ optimizeDeps: {
23
+ include: [
24
+ "@angular/common",
25
+ "@angular/common/http",
26
+ ...Number(VERSION.major) > 15 ? ["@angular/core/rxjs-interop"] : [],
27
+ "front-matter"
28
+ ],
29
+ exclude: [
30
+ "@angular/platform-server",
31
+ "@analogjs/content",
32
+ "@analogjs/router",
33
+ "@nx/angular",
34
+ "@nx/vite",
35
+ "@nx/devkit",
36
+ "@nx/js",
37
+ "@nx/devkit",
38
+ "@nx/cypress",
39
+ "@nx/jest",
40
+ "@nx/js",
41
+ "@nx/eslint",
42
+ "@nx/webpack",
43
+ "@nx/web",
44
+ "@nx/workspace",
45
+ "@nx/eslint",
46
+ "@nx/module-federation",
47
+ "@nx/rspack",
48
+ "webpack",
49
+ "fsevents",
50
+ "nx"
51
+ ]
52
+ }
53
+ };
54
+ }
55
+ }, {
56
+ name: "analogjs-auto-discover-deps",
57
+ async config(config, { command }) {
58
+ return await crawlFrameworkPkgs({
59
+ root: workspaceRoot,
60
+ isBuild: command === "build",
61
+ viteUserConfig: config,
62
+ isSemiFrameworkPkgByJson(pkgJson) {
63
+ return pkgJson["module"] && pkgJson["module"].includes("fesm");
64
+ }
65
+ });
66
+ }
67
+ }];
78
68
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcy1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2RlcHMtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFpQjtJQUMxQyxNQUFNLGFBQWEsR0FBRyxPQUFPLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUU5RCxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLE1BQU07Z0JBQ0osTUFBTSxlQUFlLEdBQ25CLE9BQU8sRUFBRSxJQUFJLEtBQUssS0FBSztvQkFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsd0JBQXdCO29CQUNuRCxDQUFDLENBQUMsRUFBRTtvQkFDSixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFFMUMsT0FBTztvQkFDTCxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxlQUFlO29CQUM1QyxHQUFHLEVBQUU7d0JBQ0gsVUFBVSxFQUFFOzRCQUNWLGNBQWM7NEJBQ2QsYUFBYTs0QkFDYixtQkFBbUI7NEJBQ25CLFFBQVE7NEJBQ1IsaUJBQWlCOzRCQUNqQixjQUFjOzRCQUNkLHNDQUFzQzt5QkFDdkM7cUJBQ0Y7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLE9BQU8sRUFBRTs0QkFDUCxpQkFBaUI7NEJBQ2pCLHNCQUFzQjs0QkFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQ0FDNUIsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUM7Z0NBQ2hDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ1AsY0FBYzt5QkFDZjt3QkFDRCxPQUFPLEVBQUU7NEJBQ1AsMEJBQTBCOzRCQUMxQixtQkFBbUI7NEJBQ25CLGtCQUFrQjs0QkFDbEIsYUFBYTs0QkFDYixVQUFVOzRCQUNWLFlBQVk7NEJBQ1osUUFBUTs0QkFDUixZQUFZOzRCQUNaLGFBQWE7NEJBQ2IsVUFBVTs0QkFDVixRQUFROzRCQUNSLFlBQVk7NEJBQ1osYUFBYTs0QkFDYixTQUFTOzRCQUNULGVBQWU7NEJBQ2YsWUFBWTs0QkFDWix1QkFBdUI7NEJBQ3ZCLFlBQVk7NEJBQ1osU0FBUzs0QkFDVCxVQUFVOzRCQUNWLElBQUk7eUJBQ0w7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLDZCQUE2QjtZQUNuQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRTtnQkFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztvQkFDekMsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLE9BQU8sRUFBRSxPQUFPLEtBQUssT0FBTztvQkFDNUIsY0FBYyxFQUFFLE1BQU07b0JBQ3RCLHdCQUF3QixDQUFDLE9BQU87d0JBQzlCLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pFLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIn0=
69
+ //#endregion
70
+ export { depsPlugin };
71
+
72
+ //# sourceMappingURL=deps-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps-plugin.js","names":[],"sources":["../../../../../packages/platform/src/lib/deps-plugin.ts"],"sourcesContent":["import { VERSION } from '@angular/compiler-cli';\nimport type { Plugin } from 'vite';\nimport * as vite from 'vite';\nimport { crawlFrameworkPkgs } from 'vitefu';\n\nimport { Options } from './options.js';\nimport { getJsTransformConfigKey } from './utils/rolldown.js';\n\nexport function depsPlugin(options?: Options): Plugin[] {\n const workspaceRoot = options?.workspaceRoot ?? process.cwd();\n\n return [\n {\n name: 'analogjs-deps-plugin',\n config() {\n const transformConfig =\n options?.vite === false ||\n options?.vite?.experimental?.useAngularCompilationAPI\n ? {}\n : { exclude: ['**/*.ts', '**/*.js'] };\n\n return {\n [getJsTransformConfigKey()]: transformConfig,\n ssr: {\n noExternal: [\n '@analogjs/**',\n 'firebase/**',\n 'firebase-admin/**',\n 'rxfire',\n '@ng-web-apis/**',\n '@taiga-ui/**',\n '@tanstack/angular-query-experimental',\n ],\n },\n optimizeDeps: {\n include: [\n '@angular/common',\n '@angular/common/http',\n ...(Number(VERSION.major) > 15\n ? ['@angular/core/rxjs-interop']\n : []),\n 'front-matter',\n ],\n exclude: [\n '@angular/platform-server',\n '@analogjs/content',\n '@analogjs/router',\n '@nx/angular',\n '@nx/vite',\n '@nx/devkit',\n '@nx/js',\n '@nx/devkit',\n '@nx/cypress',\n '@nx/jest',\n '@nx/js',\n '@nx/eslint',\n '@nx/webpack',\n '@nx/web',\n '@nx/workspace',\n '@nx/eslint',\n '@nx/module-federation',\n '@nx/rspack',\n 'webpack',\n 'fsevents',\n 'nx',\n ],\n },\n };\n },\n },\n {\n name: 'analogjs-auto-discover-deps',\n async config(config, { command }) {\n const pkgConfig = await crawlFrameworkPkgs({\n root: workspaceRoot,\n isBuild: command === 'build',\n viteUserConfig: config,\n isSemiFrameworkPkgByJson(pkgJson) {\n return pkgJson['module'] && pkgJson['module'].includes('fesm');\n },\n });\n return pkgConfig;\n },\n },\n ];\n}\n"],"mappings":";;;;AAQA,SAAgB,WAAW,SAA6B;CACtD,MAAM,gBAAgB,SAAS,iBAAiB,QAAQ,KAAK;AAE7D,QAAO,CACL;EACE,MAAM;EACN,SAAS;GACP,MAAM,kBACJ,SAAS,SAAS,SAClB,SAAS,MAAM,cAAc,2BACzB,EAAE,GACF,EAAE,SAAS,CAAC,WAAW,UAAU,EAAE;AAEzC,UAAO;KACJ,yBAAyB,GAAG;IAC7B,KAAK,EACH,YAAY;KACV;KACA;KACA;KACA;KACA;KACA;KACA;KACD,EACF;IACD,cAAc;KACZ,SAAS;MACP;MACA;MACA,GAAI,OAAO,QAAQ,MAAM,GAAG,KACxB,CAAC,6BAA6B,GAC9B,EAAE;MACN;MACD;KACD,SAAS;MACP;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD;KACF;IACF;;EAEJ,EACD;EACE,MAAM;EACN,MAAM,OAAO,QAAQ,EAAE,WAAW;AAShC,UARkB,MAAM,mBAAmB;IACzC,MAAM;IACN,SAAS,YAAY;IACrB,gBAAgB;IAChB,yBAAyB,SAAS;AAChC,YAAO,QAAQ,aAAa,QAAQ,UAAU,SAAS,OAAO;;IAEjE,CAAC;;EAGL,CACF"}
@@ -1,7 +1,5 @@
1
1
  {
2
2
  "name": "@analogjs/nx",
3
3
  "version": "0.0.1",
4
- "main": "src/index.js",
5
- "types": "./src/index.d.ts",
6
- "type": "commonjs"
7
- }
4
+ "main": "src/index.js"
5
+ }