@analogjs/vite-plugin-angular 3.0.0-alpha.8 → 3.0.0-alpha.80

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 (194) hide show
  1. package/README.md +30 -0
  2. package/migrations/migrate-setup-vitest/migrate-setup-vitest.d.ts +2 -0
  3. package/migrations/migrate-setup-vitest/migrate-setup-vitest.js +49 -0
  4. package/migrations/migrate-setup-vitest/migrate-setup-vitest.js.map +1 -0
  5. package/migrations/migration.json +7 -1
  6. package/migrations/migrations.json +9 -0
  7. package/migrations/update-3-0-0/migrate-setup-vitest.d.ts +2 -0
  8. package/migrations/update-3-0-0/migrate-setup-vitest.js +36 -0
  9. package/migrations/update-3-0-0/migrate-setup-vitest.js.map +1 -0
  10. package/package.json +51 -14
  11. package/src/index.d.ts +6 -2
  12. package/src/index.js +6 -2
  13. package/src/index.js.map +1 -1
  14. package/src/lib/analog-plugin-interop.d.ts +78 -0
  15. package/src/lib/analog-plugin-interop.js +97 -0
  16. package/src/lib/analog-plugin-interop.js.map +1 -0
  17. package/src/lib/angular-build-optimizer-plugin.d.ts +4 -4
  18. package/src/lib/angular-build-optimizer-plugin.js +57 -63
  19. package/src/lib/angular-build-optimizer-plugin.js.map +1 -1
  20. package/src/lib/angular-jit-plugin.d.ts +3 -3
  21. package/src/lib/angular-jit-plugin.js +49 -37
  22. package/src/lib/angular-jit-plugin.js.map +1 -1
  23. package/src/lib/angular-pending-tasks.plugin.d.ts +7 -7
  24. package/src/lib/angular-pending-tasks.plugin.js +17 -18
  25. package/src/lib/angular-pending-tasks.plugin.js.map +1 -1
  26. package/src/lib/angular-vite-plugin.d.ts +82 -69
  27. package/src/lib/angular-vite-plugin.js +1205 -1085
  28. package/src/lib/angular-vite-plugin.js.map +1 -1
  29. package/src/lib/angular-vitest-plugin.d.ts +26 -21
  30. package/src/lib/angular-vitest-plugin.js +106 -135
  31. package/src/lib/angular-vitest-plugin.js.map +1 -1
  32. package/src/lib/compilation-api/compilation-api-plugin.d.ts +18 -0
  33. package/src/lib/compilation-api/compilation-api-plugin.js +489 -0
  34. package/src/lib/compilation-api/compilation-api-plugin.js.map +1 -0
  35. package/src/lib/compilation-api/index.d.ts +1 -0
  36. package/src/lib/compilation-api/index.js +1 -0
  37. package/src/lib/compiler/angular-version.d.ts +19 -0
  38. package/src/lib/compiler/angular-version.js +31 -0
  39. package/src/lib/compiler/angular-version.js.map +1 -0
  40. package/src/lib/compiler/class-field-lowering.d.ts +23 -0
  41. package/src/lib/compiler/class-field-lowering.js +131 -0
  42. package/src/lib/compiler/class-field-lowering.js.map +1 -0
  43. package/src/lib/compiler/compile.d.ts +50 -0
  44. package/src/lib/compiler/compile.js +814 -0
  45. package/src/lib/compiler/compile.js.map +1 -0
  46. package/src/lib/compiler/constants.d.ts +24 -0
  47. package/src/lib/compiler/constants.js +59 -0
  48. package/src/lib/compiler/constants.js.map +1 -0
  49. package/src/lib/compiler/debug.d.ts +22 -0
  50. package/src/lib/compiler/debug.js +20 -0
  51. package/src/lib/compiler/debug.js.map +1 -0
  52. package/src/lib/compiler/defer.d.ts +57 -0
  53. package/src/lib/compiler/defer.js +154 -0
  54. package/src/lib/compiler/defer.js.map +1 -0
  55. package/src/lib/compiler/dts-reader.d.ts +45 -0
  56. package/src/lib/compiler/dts-reader.js +395 -0
  57. package/src/lib/compiler/dts-reader.js.map +1 -0
  58. package/src/lib/compiler/hmr.d.ts +16 -0
  59. package/src/lib/compiler/hmr.js +69 -0
  60. package/src/lib/compiler/hmr.js.map +1 -0
  61. package/src/lib/compiler/index.d.ts +8 -0
  62. package/src/lib/compiler/index.js +8 -0
  63. package/src/lib/compiler/jit-metadata.d.ts +14 -0
  64. package/src/lib/compiler/jit-metadata.js +168 -0
  65. package/src/lib/compiler/jit-metadata.js.map +1 -0
  66. package/src/lib/compiler/jit-transform.d.ts +24 -0
  67. package/src/lib/compiler/jit-transform.js +204 -0
  68. package/src/lib/compiler/jit-transform.js.map +1 -0
  69. package/src/lib/compiler/js-emitter.d.ts +10 -0
  70. package/src/lib/compiler/js-emitter.js +446 -0
  71. package/src/lib/compiler/js-emitter.js.map +1 -0
  72. package/src/lib/compiler/metadata.d.ts +36 -0
  73. package/src/lib/compiler/metadata.js +710 -0
  74. package/src/lib/compiler/metadata.js.map +1 -0
  75. package/src/lib/compiler/registry.d.ts +56 -0
  76. package/src/lib/compiler/registry.js +176 -0
  77. package/src/lib/compiler/registry.js.map +1 -0
  78. package/src/lib/compiler/resource-inliner.d.ts +43 -0
  79. package/src/lib/compiler/resource-inliner.js +230 -0
  80. package/src/lib/compiler/resource-inliner.js.map +1 -0
  81. package/src/lib/compiler/style-ast.d.ts +9 -0
  82. package/src/lib/compiler/style-ast.js +54 -0
  83. package/src/lib/compiler/style-ast.js.map +1 -0
  84. package/src/lib/compiler/styles.d.ts +13 -0
  85. package/src/lib/compiler/test-helpers.d.ts +7 -0
  86. package/src/lib/compiler/type-elision.d.ts +28 -0
  87. package/src/lib/compiler/type-elision.js +211 -0
  88. package/src/lib/compiler/type-elision.js.map +1 -0
  89. package/src/lib/compiler/utils.d.ts +40 -0
  90. package/src/lib/compiler/utils.js +76 -0
  91. package/src/lib/compiler/utils.js.map +1 -0
  92. package/src/lib/compiler-plugin.d.ts +13 -12
  93. package/src/lib/compiler-plugin.js +40 -44
  94. package/src/lib/compiler-plugin.js.map +1 -1
  95. package/src/lib/component-resolvers.d.ts +20 -4
  96. package/src/lib/component-resolvers.js +101 -120
  97. package/src/lib/component-resolvers.js.map +1 -1
  98. package/src/lib/encapsulation-plugin.d.ts +18 -0
  99. package/src/lib/encapsulation-plugin.js +53 -0
  100. package/src/lib/encapsulation-plugin.js.map +1 -0
  101. package/src/lib/fast-compile-plugin.d.ts +13 -0
  102. package/src/lib/fast-compile-plugin.js +419 -0
  103. package/src/lib/fast-compile-plugin.js.map +1 -0
  104. package/src/lib/host.d.ts +10 -8
  105. package/src/lib/host.js +111 -101
  106. package/src/lib/host.js.map +1 -1
  107. package/src/lib/live-reload-plugin.d.ts +5 -5
  108. package/src/lib/live-reload-plugin.js +61 -63
  109. package/src/lib/live-reload-plugin.js.map +1 -1
  110. package/src/lib/models.d.ts +9 -9
  111. package/src/lib/nx-folder-plugin.d.ts +5 -5
  112. package/src/lib/nx-folder-plugin.js +18 -16
  113. package/src/lib/nx-folder-plugin.js.map +1 -1
  114. package/src/lib/plugins/file-replacements.plugin.d.ts +4 -4
  115. package/src/lib/plugins/file-replacements.plugin.js +40 -62
  116. package/src/lib/plugins/file-replacements.plugin.js.map +1 -1
  117. package/src/lib/router-plugin.d.ts +1 -1
  118. package/src/lib/router-plugin.js +35 -23
  119. package/src/lib/router-plugin.js.map +1 -1
  120. package/src/lib/style-preprocessor.d.ts +35 -0
  121. package/src/lib/style-preprocessor.js +35 -0
  122. package/src/lib/style-preprocessor.js.map +1 -0
  123. package/src/lib/stylesheet-registry.d.ts +74 -0
  124. package/src/lib/stylesheet-registry.js +174 -0
  125. package/src/lib/stylesheet-registry.js.map +1 -0
  126. package/src/lib/tools/package.json +2 -7
  127. package/src/lib/tools/src/builders/vite/vite-build.impl.js +33 -38
  128. package/src/lib/tools/src/builders/vite/vite-build.impl.js.map +1 -1
  129. package/src/lib/tools/src/builders/vite-dev-server/dev-server.impl.js +51 -62
  130. package/src/lib/tools/src/builders/vite-dev-server/dev-server.impl.js.map +1 -1
  131. package/src/lib/tools/src/index.js +0 -2
  132. package/src/lib/utils/compilation-shared.d.ts +62 -0
  133. package/src/lib/utils/compilation-shared.js +138 -0
  134. package/src/lib/utils/compilation-shared.js.map +1 -0
  135. package/src/lib/utils/compiler-plugin-options.d.ts +11 -11
  136. package/src/lib/utils/css-extension-resolver.d.ts +32 -0
  137. package/src/lib/utils/css-extension-resolver.js +73 -0
  138. package/src/lib/utils/css-extension-resolver.js.map +1 -0
  139. package/src/lib/utils/debug-harness.d.ts +23 -0
  140. package/src/lib/utils/debug-harness.js +88 -0
  141. package/src/lib/utils/debug-harness.js.map +1 -0
  142. package/src/lib/utils/debug-log-file.d.ts +5 -0
  143. package/src/lib/utils/debug-log-file.js +56 -0
  144. package/src/lib/utils/debug-log-file.js.map +1 -0
  145. package/src/lib/utils/debug.d.ts +26 -0
  146. package/src/lib/utils/debug.js +35 -0
  147. package/src/lib/utils/debug.js.map +1 -0
  148. package/src/lib/utils/devkit.d.ts +6 -6
  149. package/src/lib/utils/devkit.js +34 -38
  150. package/src/lib/utils/devkit.js.map +1 -1
  151. package/src/lib/utils/hmr-candidates.d.ts +28 -28
  152. package/src/lib/utils/jit-inline-styles.d.ts +3 -0
  153. package/src/lib/utils/jit-inline-styles.js +16 -0
  154. package/src/lib/utils/jit-inline-styles.js.map +1 -0
  155. package/src/lib/utils/plugin-config.d.ts +41 -0
  156. package/src/lib/utils/plugin-config.js +85 -0
  157. package/src/lib/utils/plugin-config.js.map +1 -0
  158. package/src/lib/utils/rolldown.d.ts +1 -1
  159. package/src/lib/utils/rolldown.js +9 -5
  160. package/src/lib/utils/rolldown.js.map +1 -1
  161. package/src/lib/utils/safe-module-paths.d.ts +16 -0
  162. package/src/lib/utils/safe-module-paths.js +29 -0
  163. package/src/lib/utils/safe-module-paths.js.map +1 -0
  164. package/src/lib/utils/source-file-cache.d.ts +8 -15
  165. package/src/lib/utils/source-file-cache.js +35 -37
  166. package/src/lib/utils/source-file-cache.js.map +1 -1
  167. package/src/lib/utils/transform-cache.d.ts +43 -0
  168. package/src/lib/utils/transform-cache.js +97 -0
  169. package/src/lib/utils/transform-cache.js.map +1 -0
  170. package/src/lib/utils/tsconfig-resolver.d.ts +34 -0
  171. package/src/lib/utils/tsconfig-resolver.js +203 -0
  172. package/src/lib/utils/tsconfig-resolver.js.map +1 -0
  173. package/src/lib/utils/virtual-ids.d.ts +4 -0
  174. package/src/lib/utils/virtual-ids.js +23 -0
  175. package/src/lib/utils/virtual-ids.js.map +1 -0
  176. package/src/lib/utils/virtual-resources.d.ts +19 -0
  177. package/src/lib/utils/virtual-resources.js +38 -0
  178. package/src/lib/utils/virtual-resources.js.map +1 -0
  179. package/src/lib/virtual-modules-plugin.d.ts +5 -0
  180. package/src/lib/virtual-modules-plugin.js +23 -0
  181. package/src/lib/virtual-modules-plugin.js.map +1 -0
  182. package/src/test-setup.d.ts +2 -0
  183. package/setup-vitest.d.ts +0 -4
  184. package/setup-vitest.js +0 -215
  185. package/setup-vitest.js.map +0 -1
  186. package/src/lib/models.js +0 -1
  187. package/src/lib/models.js.map +0 -1
  188. package/src/lib/tools/README.md +0 -3
  189. package/src/lib/tools/src/index.d.ts +0 -0
  190. package/src/lib/tools/src/index.js.map +0 -1
  191. package/src/lib/utils/compiler-plugin-options.js +0 -1
  192. package/src/lib/utils/compiler-plugin-options.js.map +0 -1
  193. package/src/lib/utils/hmr-candidates.js +0 -272
  194. package/src/lib/utils/hmr-candidates.js.map +0 -1
@@ -1,65 +1,59 @@
1
- import { JavaScriptTransformer } from './utils/devkit.js';
2
- import { getJsTransformConfigKey } from './utils/rolldown.js';
3
- export function buildOptimizerPlugin({ jit, }) {
4
- const javascriptTransformer = new JavaScriptTransformer({
5
- sourcemap: false,
6
- thirdPartySourcemaps: false,
7
- advancedOptimizations: true,
8
- jit: true,
9
- }, 1);
10
- let isProd = false;
11
- return {
12
- name: '@analogjs/vite-plugin-angular-optimizer',
13
- apply: 'build',
14
- config(userConfig) {
15
- isProd =
16
- userConfig.mode === 'production' ||
17
- process.env['NODE_ENV'] === 'production';
18
- const jsTransformConfigKey = getJsTransformConfigKey();
19
- return {
20
- define: isProd
21
- ? {
22
- ngJitMode: 'false',
23
- ngI18nClosureMode: 'false',
24
- ngDevMode: 'false',
25
- ngServerMode: `${!!userConfig.build?.ssr}`,
26
- }
27
- : {},
28
- [jsTransformConfigKey]: {
29
- define: isProd
30
- ? {
31
- ngDevMode: 'false',
32
- ngJitMode: 'false',
33
- ngI18nClosureMode: 'false',
34
- ngServerMode: `${!!userConfig.build?.ssr}`,
35
- }
36
- : undefined,
37
- },
38
- };
39
- },
40
- transform: {
41
- filter: {
42
- id: /\.[cm]?js$/,
43
- },
44
- async handler(code, id) {
45
- const angularPackage = /fesm20/.test(id);
46
- if (!angularPackage) {
47
- return {
48
- code: isProd
49
- ? code.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, '')
50
- : code,
51
- map: {
52
- mappings: '',
53
- },
54
- };
55
- }
56
- const sideEffects = jit && id.includes('@angular/compiler') ? true : false;
57
- const result = await javascriptTransformer.transformData(id, code, false, sideEffects);
58
- return {
59
- code: Buffer.from(result).toString(),
60
- };
61
- },
62
- },
63
- };
1
+ import { jt } from "./utils/devkit.js";
2
+ import { isProdMode } from "./utils/plugin-config.js";
3
+ import { getJsTransformConfigKey } from "./utils/rolldown.js";
4
+ //#region packages/vite-plugin-angular/src/lib/angular-build-optimizer-plugin.ts
5
+ function buildOptimizerPlugin({ jit }) {
6
+ let javascriptTransformer;
7
+ let isProd = false;
8
+ let preserveVendorMaps = false;
9
+ return {
10
+ name: "@analogjs/vite-plugin-angular-optimizer",
11
+ apply(_config, env) {
12
+ return env.command === "build" || process.env.NODE_ENV === "production";
13
+ },
14
+ config(userConfig) {
15
+ isProd = isProdMode(userConfig.mode);
16
+ javascriptTransformer ??= new jt({
17
+ sourcemap: false,
18
+ thirdPartySourcemaps: false,
19
+ advancedOptimizations: isProd,
20
+ jit: true
21
+ }, 1);
22
+ const jsTransformConfigKey = getJsTransformConfigKey();
23
+ return {
24
+ define: isProd ? {
25
+ ngJitMode: "false",
26
+ ngI18nClosureMode: "false",
27
+ ngDevMode: "false",
28
+ ngServerMode: `${!!userConfig.build?.ssr}`
29
+ } : {},
30
+ [jsTransformConfigKey]: { define: isProd ? {
31
+ ngDevMode: "false",
32
+ ngJitMode: "false",
33
+ ngI18nClosureMode: "false",
34
+ ngServerMode: `${!!userConfig.build?.ssr}`
35
+ } : void 0 }
36
+ };
37
+ },
38
+ configResolved(config) {
39
+ preserveVendorMaps = !!config.build.sourcemap;
40
+ },
41
+ transform: {
42
+ filter: { id: /\.[cm]?js(?:\?|$)/ },
43
+ async handler(code, id) {
44
+ const cleanId = id.split("?")[0];
45
+ if (!/fesm20/.test(cleanId)) return {
46
+ code: isProd && !preserveVendorMaps ? code.replace(/^\/\/# sourceMappingURL=[^\r\n]*/gm, "") : code,
47
+ map: preserveVendorMaps ? null : { mappings: "" }
48
+ };
49
+ const sideEffects = jit && cleanId.includes("@angular/compiler") ? true : false;
50
+ const result = await javascriptTransformer.transformData(cleanId, code, false, sideEffects);
51
+ return { code: Buffer.from(result).toString() };
52
+ }
53
+ }
54
+ };
64
55
  }
56
+ //#endregion
57
+ export { buildOptimizerPlugin };
58
+
65
59
  //# sourceMappingURL=angular-build-optimizer-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-build-optimizer-plugin.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/angular-build-optimizer-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,EACnC,GAAG,GAIJ;IACC,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD;QACE,SAAS,EAAE,KAAK;QAChB,oBAAoB,EAAE,KAAK;QAC3B,qBAAqB,EAAE,IAAI;QAC3B,GAAG,EAAE,IAAI;KACV,EACD,CAAC,CACF,CAAC;IACF,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO;QACL,IAAI,EAAE,yCAAyC;QAC/C,KAAK,EAAE,OAAO;QACd,MAAM,CAAC,UAAU;YACf,MAAM;gBACJ,UAAU,CAAC,IAAI,KAAK,YAAY;oBAChC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,CAAC;YAC3C,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;YAEvD,OAAO;gBACL,MAAM,EAAE,MAAM;oBACZ,CAAC,CAAC;wBACE,SAAS,EAAE,OAAO;wBAClB,iBAAiB,EAAE,OAAO;wBAC1B,SAAS,EAAE,OAAO;wBAClB,YAAY,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;qBAC3C;oBACH,CAAC,CAAC,EAAE;gBACN,CAAC,oBAAoB,CAAC,EAAE;oBACtB,MAAM,EAAE,MAAM;wBACZ,CAAC,CAAC;4BACE,SAAS,EAAE,OAAO;4BAClB,SAAS,EAAE,OAAO;4BAClB,iBAAiB,EAAE,OAAO;4BAC1B,YAAY,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;yBAC3C;wBACH,CAAC,CAAC,SAAS;iBACd;aACY,CAAC;QAClB,CAAC;QACD,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,EAAE,EAAE,YAAY;aACjB;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;gBACpB,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEzC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO;wBACL,IAAI,EAAE,MAAM;4BACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;4BACxD,CAAC,CAAC,IAAI;wBACR,GAAG,EAAE;4BACH,QAAQ,EAAE,EAAE;yBACb;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,WAAW,GACf,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzD,MAAM,MAAM,GAAe,MAAM,qBAAqB,CAAC,aAAa,CAClE,EAAE,EACF,IAAI,EACJ,KAAK,EACL,WAAW,CACZ,CAAC;gBAEF,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;iBACrC,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"angular-build-optimizer-plugin.js","names":[],"sources":["../../../src/lib/angular-build-optimizer-plugin.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite';\nimport { JavaScriptTransformer } from './utils/devkit.js';\nimport { isProdMode } from './utils/plugin-config.js';\nimport { getJsTransformConfigKey } from './utils/rolldown.js';\n\nexport function buildOptimizerPlugin({\n jit,\n}: {\n supportedBrowsers: string[];\n jit: boolean;\n}): Plugin {\n let javascriptTransformer: InstanceType<typeof JavaScriptTransformer>;\n let isProd = false;\n let preserveVendorMaps = false;\n\n return {\n name: '@analogjs/vite-plugin-angular-optimizer',\n // Normally build-only. Astro's Cloudflare integration (`@astrojs/cloudflare`)\n // transforms SSR modules through a serve-style `workerd` runner *during*\n // `astro build`; an `apply: 'build'` plugin is excluded from that pipeline,\n // so the Angular linker never runs on the worker's partially-compiled\n // packages and they fall back to the JIT compiler. Also apply under a\n // production `NODE_ENV` (which `astro build` sets) so the linker runs in\n // that runner too. Regular Analog dev servers run with a development\n // `NODE_ENV`, so their behavior is unchanged.\n apply(_config, env) {\n return (\n env.command === 'build' || process.env['NODE_ENV'] === 'production'\n );\n },\n config(userConfig) {\n isProd = isProdMode(userConfig.mode);\n // Advanced optimizations paired with dev-mode defines would strip\n // dev-only code the debug API needs, so both key off `isProd`.\n javascriptTransformer ??= new JavaScriptTransformer(\n {\n sourcemap: false,\n thirdPartySourcemaps: false,\n advancedOptimizations: isProd,\n jit: true,\n },\n 1,\n );\n const jsTransformConfigKey = getJsTransformConfigKey();\n\n return {\n define: isProd\n ? {\n ngJitMode: 'false',\n ngI18nClosureMode: 'false',\n ngDevMode: 'false',\n ngServerMode: `${!!userConfig.build?.ssr}`,\n }\n : {},\n [jsTransformConfigKey]: {\n define: isProd\n ? {\n ngDevMode: 'false',\n ngJitMode: 'false',\n ngI18nClosureMode: 'false',\n ngServerMode: `${!!userConfig.build?.ssr}`,\n }\n : undefined,\n },\n } as UserConfig;\n },\n configResolved(config) {\n preserveVendorMaps = !!config.build.sourcemap;\n },\n transform: {\n filter: {\n // Allow an optional `?query` after the extension. Some environments\n // (e.g. Cloudflare's `workerd`, used by Astro's Cloudflare integration)\n // reference optimized deps with a `?v=<hash>` suffix, e.g.\n // `.../fesm2022/_platform_location-chunk.mjs?v=a786a9ff`. A `$`-anchored\n // extension match skips those, so the Angular linker never runs and the\n // partially-compiled package falls back to the JIT compiler at runtime.\n id: /\\.[cm]?js(?:\\?|$)/,\n },\n async handler(code, id) {\n // Strip the `?query` so the fesm check and the transformer see a real\n // filename rather than `foo.mjs?v=<hash>`.\n const cleanId = id.split('?')[0];\n const angularPackage = /fesm20/.test(cleanId);\n\n if (!angularPackage) {\n // `{ mappings: '' }` declares zero segments, dropping the module's own\n // map from the chain; `null` keeps it. Removing `sourceMappingURL` is\n // what makes that map unreachable, so it only runs when discarding.\n return {\n code:\n isProd && !preserveVendorMaps\n ? code.replace(/^\\/\\/# sourceMappingURL=[^\\r\\n]*/gm, '')\n : code,\n map: preserveVendorMaps ? null : { mappings: '' },\n };\n }\n\n const sideEffects =\n jit && cleanId.includes('@angular/compiler') ? true : false;\n const result: Uint8Array = await javascriptTransformer.transformData(\n cleanId,\n code,\n false,\n sideEffects,\n );\n\n return {\n code: Buffer.from(result).toString(),\n };\n },\n },\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,qBAAqB,EACnC,OAIS;CACT,IAAI;CACJ,IAAI,SAAS;CACb,IAAI,qBAAqB;AAEzB,QAAO;EACL,MAAM;EASN,MAAM,SAAS,KAAK;AAClB,UACE,IAAI,YAAY,WAAA,QAAA,IAAA,aAAuC;;EAG3D,OAAO,YAAY;AACjB,YAAS,WAAW,WAAW,KAAK;AAGpC,6BAA0B,IAAI,GAC5B;IACE,WAAW;IACX,sBAAsB;IACtB,uBAAuB;IACvB,KAAK;IACN,EACD,EACD;GACD,MAAM,uBAAuB,yBAAyB;AAEtD,UAAO;IACL,QAAQ,SACJ;KACE,WAAW;KACX,mBAAmB;KACnB,WAAW;KACX,cAAc,GAAG,CAAC,CAAC,WAAW,OAAO;KACtC,GACD,EAAE;KACL,uBAAuB,EACtB,QAAQ,SACJ;KACE,WAAW;KACX,WAAW;KACX,mBAAmB;KACnB,cAAc,GAAG,CAAC,CAAC,WAAW,OAAO;KACtC,GACD,KAAA,GACL;IACF;;EAEH,eAAe,QAAQ;AACrB,wBAAqB,CAAC,CAAC,OAAO,MAAM;;EAEtC,WAAW;GACT,QAAQ,EAON,IAAI,qBACL;GACD,MAAM,QAAQ,MAAM,IAAI;IAGtB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AAG9B,QAAI,CAFmB,SAAS,KAAK,QAAQ,CAM3C,QAAO;KACL,MACE,UAAU,CAAC,qBACP,KAAK,QAAQ,sCAAsC,GAAG,GACtD;KACN,KAAK,qBAAqB,OAAO,EAAE,UAAU,IAAI;KAClD;IAGH,MAAM,cACJ,OAAO,QAAQ,SAAS,oBAAoB,GAAG,OAAO;IACxD,MAAM,SAAqB,MAAM,sBAAsB,cACrD,SACA,MACA,OACA,YACD;AAED,WAAO,EACL,MAAM,OAAO,KAAK,OAAO,CAAC,UAAU,EACrC;;GAEJ;EACF"}
@@ -1,4 +1,4 @@
1
- import { Plugin } from 'vite';
2
- export declare function jitPlugin({ inlineStylesExtension, }: {
3
- inlineStylesExtension: string;
1
+ import { Plugin } from "vite";
2
+ export declare function jitPlugin({ inlineStylesExtension }: {
3
+ inlineStylesExtension: string;
4
4
  }): Plugin;
@@ -1,39 +1,51 @@
1
- import { createHash } from 'node:crypto';
2
- import { preprocessCSS } from 'vite';
3
- export function jitPlugin({ inlineStylesExtension, }) {
4
- let config;
5
- return {
6
- name: '@analogjs/vite-plugin-angular-jit',
7
- configResolved(_config) {
8
- config = _config;
9
- },
10
- resolveId(id) {
11
- if (id.startsWith('virtual:angular')) {
12
- return `\0${id}`;
13
- }
14
- return;
15
- },
16
- async load(id) {
17
- if (id.includes('virtual:angular:jit:style:inline;')) {
18
- const styleId = id.split('style:inline;')[1];
19
- // styleId may exceed 255 bytes of base64-encoded content, limit to 16
20
- const styleIdHash = createHash('sha256')
21
- .update(styleId)
22
- .digest('hex')
23
- .slice(0, 16);
24
- const decodedStyles = Buffer.from(decodeURIComponent(styleId), 'base64').toString();
25
- let styles = '';
26
- try {
27
- const compiled = await preprocessCSS(decodedStyles, `${styleIdHash}.${inlineStylesExtension}?direct`, config);
28
- styles = compiled?.code;
29
- }
30
- catch (e) {
31
- console.error(`${e}`);
32
- }
33
- return `export default \`${styles}\``;
34
- }
35
- return;
36
- },
37
- };
1
+ import { getJitInlineStyles } from "./utils/jit-inline-styles.js";
2
+ import { debugStyles } from "./utils/debug.js";
3
+ import { discoverAnalogIntegrations } from "./analog-plugin-interop.js";
4
+ import { preprocessStylesheet } from "./stylesheet-registry.js";
5
+ import { preprocessCSS } from "vite";
6
+ //#region packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts
7
+ function jitPlugin({ inlineStylesExtension }) {
8
+ let config;
9
+ let stylePreprocessor;
10
+ return {
11
+ name: "@analogjs/vite-plugin-angular-jit",
12
+ configResolved(_config) {
13
+ config = _config;
14
+ },
15
+ async buildStart() {
16
+ stylePreprocessor = (await discoverAnalogIntegrations(config)).stylePreprocessor;
17
+ },
18
+ resolveId(id) {
19
+ if (id.startsWith("virtual:angular")) return `\0${id}`;
20
+ },
21
+ async load(id) {
22
+ if (id.includes("virtual:angular:jit:style:inline;")) {
23
+ const styleIdHash = id.split("style:inline;")[1];
24
+ const encodedStyles = getJitInlineStyles(styleIdHash);
25
+ if (encodedStyles === void 0) return;
26
+ const decodedStyles = Buffer.from(decodeURIComponent(encodedStyles), "base64").toString();
27
+ const filename = `${styleIdHash}.${inlineStylesExtension}`;
28
+ const preprocessed = preprocessStylesheet(decodedStyles, filename, stylePreprocessor, {
29
+ filename,
30
+ inline: true
31
+ });
32
+ let styles = "";
33
+ try {
34
+ styles = (await preprocessCSS(preprocessed, `${filename}?direct`, config))?.code;
35
+ } catch (e) {
36
+ const errorMessage = e instanceof Error ? e.message : String(e);
37
+ debugStyles("jit css compilation error", {
38
+ styleIdHash,
39
+ error: errorMessage
40
+ });
41
+ console.warn("[@analogjs/vite-plugin-angular]: Failed to preprocess inline JIT stylesheet %s. Returning an empty stylesheet instead. %s", styleIdHash, errorMessage);
42
+ }
43
+ return `export default \`${styles}\``;
44
+ }
45
+ }
46
+ };
38
47
  }
48
+ //#endregion
49
+ export { jitPlugin };
50
+
39
51
  //# sourceMappingURL=angular-jit-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-jit-plugin.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/angular-jit-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAA0B,aAAa,EAAE,MAAM,MAAM,CAAC;AAE7D,MAAM,UAAU,SAAS,CAAC,EACxB,qBAAqB,GAGtB;IACC,IAAI,MAAsB,CAAC;IAE3B,OAAO;QACL,IAAI,EAAE,mCAAmC;QACzC,cAAc,CAAC,OAAO;YACpB,MAAM,GAAG,OAAO,CAAC;QACnB,CAAC;QACD,SAAS,CAAC,EAAU;YAClB,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,CAAC;YAED,OAAO;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAU;YACnB,IAAI,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7C,sEAAsE;gBACtE,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;qBACrC,MAAM,CAAC,OAAO,CAAC;qBACf,MAAM,CAAC,KAAK,CAAC;qBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEhB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAC/B,kBAAkB,CAAC,OAAO,CAAC,EAC3B,QAAQ,CACT,CAAC,QAAQ,EAAE,CAAC;gBAEb,IAAI,MAAM,GAAuB,EAAE,CAAC;gBAEpC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,aAAa,EACb,GAAG,WAAW,IAAI,qBAAqB,SAAS,EAChD,MAAM,CACP,CAAC;oBACF,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC;gBAC1B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;gBAED,OAAO,oBAAoB,MAAM,IAAI,CAAC;YACxC,CAAC;YAED,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"angular-jit-plugin.js","names":[],"sources":["../../../src/lib/angular-jit-plugin.ts"],"sourcesContent":["import { Plugin, ResolvedConfig, preprocessCSS } from 'vite';\nimport {\n JIT_INLINE_STYLE_PREFIX,\n getJitInlineStyles,\n} from './utils/jit-inline-styles.js';\nimport { debugStyles } from './utils/debug.js';\nimport { discoverAnalogIntegrations } from './analog-plugin-interop.js';\nimport { preprocessStylesheet } from './stylesheet-registry.js';\nimport type { StylePreprocessor } from './style-preprocessor.js';\n\nexport function jitPlugin({\n inlineStylesExtension,\n}: {\n inlineStylesExtension: string;\n}): Plugin {\n let config: ResolvedConfig;\n let stylePreprocessor: StylePreprocessor | undefined;\n\n return {\n name: '@analogjs/vite-plugin-angular-jit',\n configResolved(_config) {\n config = _config;\n },\n async buildStart() {\n stylePreprocessor = (await discoverAnalogIntegrations(config))\n .stylePreprocessor;\n },\n resolveId(id: string) {\n if (id.startsWith('virtual:angular')) {\n return `\\0${id}`;\n }\n\n return;\n },\n async load(id: string) {\n if (id.includes(JIT_INLINE_STYLE_PREFIX)) {\n const styleIdHash = id.split('style:inline;')[1];\n const encodedStyles = getJitInlineStyles(styleIdHash);\n\n if (encodedStyles === undefined) {\n return;\n }\n\n const decodedStyles = Buffer.from(\n decodeURIComponent(encodedStyles),\n 'base64',\n ).toString();\n const filename = `${styleIdHash}.${inlineStylesExtension}`;\n const preprocessed = preprocessStylesheet(\n decodedStyles,\n filename,\n stylePreprocessor,\n { filename, inline: true },\n );\n\n let styles: string | undefined = '';\n\n try {\n const compiled = await preprocessCSS(\n preprocessed,\n `${filename}?direct`,\n config,\n );\n styles = compiled?.code;\n } catch (e) {\n const errorMessage = e instanceof Error ? e.message : String(e);\n debugStyles('jit css compilation error', {\n styleIdHash,\n error: errorMessage,\n });\n console.warn(\n '[@analogjs/vite-plugin-angular]: Failed to preprocess inline JIT stylesheet %s. Returning an empty stylesheet instead. %s',\n styleIdHash,\n errorMessage,\n );\n }\n\n return `export default \\`${styles}\\``;\n }\n\n return;\n },\n };\n}\n"],"mappings":";;;;;;AAUA,SAAgB,UAAU,EACxB,yBAGS;CACT,IAAI;CACJ,IAAI;AAEJ,QAAO;EACL,MAAM;EACN,eAAe,SAAS;AACtB,YAAS;;EAEX,MAAM,aAAa;AACjB,wBAAqB,MAAM,2BAA2B,OAAO,EAC1D;;EAEL,UAAU,IAAY;AACpB,OAAI,GAAG,WAAW,kBAAkB,CAClC,QAAO,KAAK;;EAKhB,MAAM,KAAK,IAAY;AACrB,OAAI,GAAG,SAAA,oCAAiC,EAAE;IACxC,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC;IAC9C,MAAM,gBAAgB,mBAAmB,YAAY;AAErD,QAAI,kBAAkB,KAAA,EACpB;IAGF,MAAM,gBAAgB,OAAO,KAC3B,mBAAmB,cAAc,EACjC,SACD,CAAC,UAAU;IACZ,MAAM,WAAW,GAAG,YAAY,GAAG;IACnC,MAAM,eAAe,qBACnB,eACA,UACA,mBACA;KAAE;KAAU,QAAQ;KAAM,CAC3B;IAED,IAAI,SAA6B;AAEjC,QAAI;AAMF,eALiB,MAAM,cACrB,cACA,GAAG,SAAS,UACZ,OACD,GACkB;aACZ,GAAG;KACV,MAAM,eAAe,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AAC/D,iBAAY,6BAA6B;MACvC;MACA,OAAO;MACR,CAAC;AACF,aAAQ,KACN,6HACA,aACA,aACD;;AAGH,WAAO,oBAAoB,OAAO;;;EAKvC"}
@@ -1,9 +1,9 @@
1
- import { Plugin } from 'vite';
1
+ import { Plugin } from "vite";
2
2
  /**
3
- * This plugin is a workaround for the ɵPendingTasks symbol being renamed
4
- * to ɵPendingTasksInternal in Angular v19.0.4. The symbol is renamed to support previous versions of
5
- * Angular with Analog that used the ɵPendingTasks symbol.
6
- *
7
- * Commmit: https://github.com/angular/angular/commit/24e317cb157bf1ef159ed8554f1b79cb3443edf4
8
- */
3
+ * This plugin is a workaround for the ɵPendingTasks symbol being renamed
4
+ * to ɵPendingTasksInternal in Angular v19.0.4. The symbol is renamed to support previous versions of
5
+ * Angular with Analog that used the ɵPendingTasks symbol.
6
+ *
7
+ * Commmit: https://github.com/angular/angular/commit/24e317cb157bf1ef159ed8554f1b79cb3443edf4
8
+ */
9
9
  export declare function pendingTasksPlugin(): Plugin;
@@ -1,21 +1,20 @@
1
+ //#region packages/vite-plugin-angular/src/lib/angular-pending-tasks.plugin.ts
1
2
  /**
2
- * This plugin is a workaround for the ɵPendingTasks symbol being renamed
3
- * to ɵPendingTasksInternal in Angular v19.0.4. The symbol is renamed to support previous versions of
4
- * Angular with Analog that used the ɵPendingTasks symbol.
5
- *
6
- * Commmit: https://github.com/angular/angular/commit/24e317cb157bf1ef159ed8554f1b79cb3443edf4
7
- */
8
- export function pendingTasksPlugin() {
9
- return {
10
- name: 'analogjs-pending-tasks-plugin',
11
- transform(code, id) {
12
- if (id.includes('analogjs-content.mjs')) {
13
- return {
14
- code: code.replace('ɵPendingTasksInternal', 'ɵPendingTasks'),
15
- };
16
- }
17
- return;
18
- },
19
- };
3
+ * This plugin is a workaround for the ɵPendingTasks symbol being renamed
4
+ * to ɵPendingTasksInternal in Angular v19.0.4. The symbol is renamed to support previous versions of
5
+ * Angular with Analog that used the ɵPendingTasks symbol.
6
+ *
7
+ * Commmit: https://github.com/angular/angular/commit/24e317cb157bf1ef159ed8554f1b79cb3443edf4
8
+ */
9
+ function pendingTasksPlugin() {
10
+ return {
11
+ name: "analogjs-pending-tasks-plugin",
12
+ transform(code, id) {
13
+ if (id.includes("analogjs-content.mjs")) return { code: code.replace("ɵPendingTasksInternal", "ɵPendingTasks") };
14
+ }
15
+ };
20
16
  }
17
+ //#endregion
18
+ export { pendingTasksPlugin };
19
+
21
20
  //# sourceMappingURL=angular-pending-tasks.plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-pending-tasks.plugin.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/angular-pending-tasks.plugin.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,IAAI,EAAE,+BAA+B;QACrC,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBACxC,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,eAAe,CAAC;iBAC7D,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"angular-pending-tasks.plugin.js","names":[],"sources":["../../../src/lib/angular-pending-tasks.plugin.ts"],"sourcesContent":["import { Plugin } from 'vite';\n\nimport { angularFullVersion } from './utils/devkit.js';\n\n/**\n * This plugin is a workaround for the ɵPendingTasks symbol being renamed\n * to ɵPendingTasksInternal in Angular v19.0.4. The symbol is renamed to support previous versions of\n * Angular with Analog that used the ɵPendingTasks symbol.\n *\n * Commmit: https://github.com/angular/angular/commit/24e317cb157bf1ef159ed8554f1b79cb3443edf4\n */\nexport function pendingTasksPlugin(): Plugin {\n return {\n name: 'analogjs-pending-tasks-plugin',\n transform(code, id) {\n if (id.includes('analogjs-content.mjs')) {\n return {\n code: code.replace('ɵPendingTasksInternal', 'ɵPendingTasks'),\n };\n }\n return;\n },\n };\n}\n"],"mappings":";;;;;;;;AAWA,SAAgB,qBAA6B;AAC3C,QAAO;EACL,MAAM;EACN,UAAU,MAAM,IAAI;AAClB,OAAI,GAAG,SAAS,uBAAuB,CACrC,QAAO,EACL,MAAM,KAAK,QAAQ,yBAAyB,gBAAgB,EAC7D;;EAIN"}
@@ -1,76 +1,89 @@
1
- import { NgtscProgram } from '@angular/compiler-cli';
2
- import * as ts from 'typescript';
3
- import { Plugin } from 'vite';
4
- import { FileReplacement } from './plugins/file-replacements.plugin.js';
5
- export declare enum DiagnosticModes {
6
- None = 0,
7
- Option = 1,
8
- Syntactic = 2,
9
- Semantic = 4,
10
- All = 7
11
- }
1
+ import { NgtscProgram } from "@angular/compiler-cli";
2
+ import * as ts from "typescript";
3
+ import { ModuleNode, Plugin, ViteDevServer } from "vite";
4
+ import { type DebugOption } from "./utils/debug.js";
5
+ import { FileReplacement } from "./plugins/file-replacements.plugin.js";
6
+ import { AnalogStylesheetRegistry } from "./stylesheet-registry.js";
7
+ export { DiagnosticModes, injectViteIgnoreForHmrMetadata, isIgnoredHmrFile, toAngularCompilationFileReplacements, mapTemplateUpdatesToFiles, refreshStylesheetRegistryForFile, describeStylesheetContent, isTestWatchMode } from "./utils/compilation-shared.js";
12
8
  export interface PluginOptions {
13
- tsconfig?: string | (() => string);
14
- workspaceRoot?: string;
15
- inlineStylesExtension?: string;
16
- jit?: boolean;
17
- advanced?: {
18
- /**
19
- * Custom TypeScript transformers that are run before Angular compilation
20
- */
21
- tsTransformers?: ts.CustomTransformers;
22
- };
23
- supportedBrowsers?: string[];
24
- transformFilter?: (code: string, id: string) => boolean;
25
- /**
26
- * Additional files to include in compilation
27
- */
28
- include?: string[];
29
- additionalContentDirs?: string[];
30
- liveReload?: boolean;
31
- disableTypeChecking?: boolean;
32
- fileReplacements?: FileReplacement[];
33
- experimental?: {
34
- useAngularCompilationAPI?: boolean;
35
- };
9
+ tsconfig?: string | (() => string);
10
+ workspaceRoot?: string;
11
+ inlineStylesExtension?: string;
12
+ jit?: boolean;
13
+ supportedBrowsers?: string[];
14
+ /**
15
+ * Additional files to include in compilation
16
+ */
17
+ include?: string[];
18
+ /**
19
+ * Enables Analog's Angular live-reload/HMR pipeline during development/watch mode.
20
+ *
21
+ * This is separate from Vite's `server.hmr` option, which configures the
22
+ * HMR client transport.
23
+ *
24
+ * Defaults to `true` for watch mode. Set to `false` to disable Angular
25
+ * reload updates while keeping other stylesheet externalization behavior
26
+ * available when needed.
27
+ */
28
+ liveReload?: boolean;
29
+ disableTypeChecking?: boolean;
30
+ fileReplacements?: FileReplacement[];
31
+ /**
32
+ * Opt into the fast compile path. Skips Angular's template type-checking
33
+ * and routes compilation through an internal single-pass transform.
34
+ * Defaults to `false`.
35
+ */
36
+ fastCompile?: boolean;
37
+ /**
38
+ * Compilation output mode used when `fastCompile` is enabled.
39
+ * - `'full'` (default): Emit final Ivy definitions for application builds.
40
+ * - `'partial'`: Emit partial declarations for library publishing.
41
+ */
42
+ fastCompileMode?: "full" | "partial";
43
+ experimental?: {
44
+ useAngularCompilationAPI?: boolean;
45
+ };
46
+ /**
47
+ * Enable debug logging for specific scopes.
48
+ *
49
+ * - `true` → enables all `analog:angular:*` scopes
50
+ * - `string[]` → enables listed namespaces (e.g. `['analog:angular:hmr']`)
51
+ * - `{ scopes?, mode? }` → object form with optional `mode: 'build' | 'dev'`
52
+ * to restrict output to a specific Vite command (omit for both)
53
+ *
54
+ * Also responds to the `DEBUG` env var (Node.js) or `localStorage.debug`
55
+ * (browser), using the `obug` convention.
56
+ */
57
+ debug?: DebugOption;
36
58
  }
59
+ export declare function evictDeletedFileMetadata(file: string, { classNamesMap, fileTransformMap }: {
60
+ classNamesMap: Map<string, string>;
61
+ fileTransformMap: Map<string, string>;
62
+ }): void;
37
63
  export declare function angular(options?: PluginOptions): Plugin[];
38
64
  export declare function createFsWatcherCacheInvalidator(invalidateFsCaches: () => void, invalidateTsconfigCaches: () => void, performCompilation: () => Promise<void>): () => Promise<void>;
39
65
  /**
40
- * Convert Analog/Angular CLI-style file replacements into the flat record
41
- * expected by `AngularHostOptions.fileReplacements`.
42
- *
43
- * Only browser replacements (`{ replace, with }`) are converted. SSR-only
44
- * replacements (`{ replace, ssr }`) are left for the Vite runtime plugin to
45
- * handle — they should not be baked into the Angular compilation host because
46
- * that would apply them to both browser and server builds.
47
- *
48
- * Relative paths are resolved against `workspaceRoot` so that the host
49
- * receives the same absolute paths it would get from the Angular CLI.
50
- */
51
- export declare function toAngularCompilationFileReplacements(replacements: FileReplacement[], workspaceRoot: string): Record<string, string> | undefined;
66
+ * Returns every live Vite module that can legitimately represent a changed
67
+ * Angular resource file.
68
+ *
69
+ * For normal files, `getModulesByFile()` is enough. For Angular component
70
+ * stylesheets, it is not: the browser often holds virtual hashed requests
71
+ * (`/abc123.css?direct&ngcomp=...` and `/abc123.css?ngcomp=...`) that are no
72
+ * longer discoverable from the original source path alone. We therefore merge:
73
+ * - watcher event modules
74
+ * - module-graph modules by source file
75
+ * - registry-tracked live request ids resolved back through the module graph
76
+ */
77
+ export declare function getModulesForChangedFile(server: ViteDevServer, file: string, eventModules?: readonly ModuleNode[], stylesheetRegistry?: AnalogStylesheetRegistry): Promise<ModuleNode[]>;
78
+ export declare function isModuleForChangedResource(mod: ModuleNode, changedFile: string, stylesheetRegistry?: AnalogStylesheetRegistry): boolean;
79
+ export declare function findComponentStylesheetWrapperModules(server: ViteDevServer, changedFile: string, directModule: ModuleNode, fileModules: ModuleNode[], stylesheetRegistry?: AnalogStylesheetRegistry): Promise<ModuleNode[]>;
80
+ export declare function findTemplateOwnerModules(server: ViteDevServer, resourceFile: string): ModuleNode[];
52
81
  /**
53
- * Map Angular's `templateUpdates` (keyed by `encodedFilePath@ClassName`)
54
- * back to absolute file paths with their associated HMR code and component
55
- * class name.
56
- *
57
- * Angular's private Compilation API emits template update keys in the form
58
- * `encodeURIComponent(relativePath + '@' + className)`. We decode and resolve
59
- * them so the caller can look up updates by the same normalized absolute path
60
- * used elsewhere in the plugin (`outputFiles`, `classNames`, etc.).
61
- */
62
- export declare function mapTemplateUpdatesToFiles(templateUpdates: ReadonlyMap<string, string> | undefined): Map<string, {
63
- className: string;
64
- code: string;
65
- }>;
66
- export declare function getFileMetadata(program: ts.BuilderProgram, angularCompiler?: NgtscProgram['compiler'], liveReload?: boolean, disableTypeChecking?: boolean): (file: string) => {
67
- errors?: string[];
68
- warnings?: (string | ts.DiagnosticMessageChain)[];
69
- hmrUpdateCode?: string | null;
70
- hmrEligible?: boolean;
82
+ * @internal
83
+ */
84
+ export declare function getFileMetadata(program: ts.BuilderProgram, angularCompiler?: NgtscProgram["compiler"], hmrEnabled?: boolean, disableTypeChecking?: boolean): (file: string) => {
85
+ errors?: string[];
86
+ warnings?: (string | ts.DiagnosticMessageChain)[];
87
+ hmrUpdateCode?: string | null;
88
+ hmrEligible?: boolean;
71
89
  };
72
- /**
73
- * Checks for vitest run from the command line
74
- * @returns boolean
75
- */
76
- export declare function isTestWatchMode(args?: string[]): boolean;