@sebbro/paraglide-lite 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (715) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/bin/run.js +4 -0
  4. package/dist/bundler-plugins/esbuild.d.ts +1 -0
  5. package/dist/bundler-plugins/esbuild.d.ts.map +1 -0
  6. package/dist/bundler-plugins/esbuild.js +4 -0
  7. package/dist/bundler-plugins/esbuild.js.map +1 -0
  8. package/dist/bundler-plugins/index.d.ts +6 -0
  9. package/dist/bundler-plugins/index.d.ts.map +1 -0
  10. package/dist/bundler-plugins/index.js +7 -0
  11. package/dist/bundler-plugins/index.js.map +1 -0
  12. package/dist/bundler-plugins/lazy-modules/scan-message-keys.d.ts +19 -0
  13. package/dist/bundler-plugins/lazy-modules/scan-message-keys.d.ts.map +1 -0
  14. package/dist/bundler-plugins/lazy-modules/scan-message-keys.js +85 -0
  15. package/dist/bundler-plugins/lazy-modules/scan-message-keys.js.map +1 -0
  16. package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.d.ts +2 -0
  17. package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.d.ts.map +1 -0
  18. package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.js +53 -0
  19. package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.js.map +1 -0
  20. package/dist/bundler-plugins/lazy-modules/ssr.d.ts +31 -0
  21. package/dist/bundler-plugins/lazy-modules/ssr.d.ts.map +1 -0
  22. package/dist/bundler-plugins/lazy-modules/ssr.js +42 -0
  23. package/dist/bundler-plugins/lazy-modules/ssr.js.map +1 -0
  24. package/dist/bundler-plugins/lazy-modules/ssr.test.d.ts +2 -0
  25. package/dist/bundler-plugins/lazy-modules/ssr.test.d.ts.map +1 -0
  26. package/dist/bundler-plugins/lazy-modules/ssr.test.js +48 -0
  27. package/dist/bundler-plugins/lazy-modules/ssr.test.js.map +1 -0
  28. package/dist/bundler-plugins/lazy-modules/virtual-ids.d.ts +7 -0
  29. package/dist/bundler-plugins/lazy-modules/virtual-ids.d.ts.map +1 -0
  30. package/dist/bundler-plugins/lazy-modules/virtual-ids.js +30 -0
  31. package/dist/bundler-plugins/lazy-modules/virtual-ids.js.map +1 -0
  32. package/dist/bundler-plugins/lazy-modules/virtual.d.ts +86 -0
  33. package/dist/bundler-plugins/lazy-modules/virtual.d.ts.map +1 -0
  34. package/dist/bundler-plugins/lazy-modules/virtual.js +2 -0
  35. package/dist/bundler-plugins/lazy-modules/virtual.js.map +1 -0
  36. package/dist/bundler-plugins/lazy-modules/vite-plugin.d.ts +18 -0
  37. package/dist/bundler-plugins/lazy-modules/vite-plugin.d.ts.map +1 -0
  38. package/dist/bundler-plugins/lazy-modules/vite-plugin.js +328 -0
  39. package/dist/bundler-plugins/lazy-modules/vite-plugin.js.map +1 -0
  40. package/dist/bundler-plugins/lazy-modules/vite-plugin.test.d.ts +2 -0
  41. package/dist/bundler-plugins/lazy-modules/vite-plugin.test.d.ts.map +1 -0
  42. package/dist/bundler-plugins/lazy-modules/vite-plugin.test.js +45 -0
  43. package/dist/bundler-plugins/lazy-modules/vite-plugin.test.js.map +1 -0
  44. package/dist/bundler-plugins/per-locale-build/constants.d.ts +2 -0
  45. package/dist/bundler-plugins/per-locale-build/constants.d.ts.map +1 -0
  46. package/dist/bundler-plugins/per-locale-build/constants.js +3 -0
  47. package/dist/bundler-plugins/per-locale-build/constants.js.map +1 -0
  48. package/dist/bundler-plugins/per-locale-build/index.d.ts +6 -0
  49. package/dist/bundler-plugins/per-locale-build/index.d.ts.map +1 -0
  50. package/dist/bundler-plugins/per-locale-build/index.js +43 -0
  51. package/dist/bundler-plugins/per-locale-build/index.js.map +1 -0
  52. package/dist/bundler-plugins/per-locale-build/locale-id.d.ts +8 -0
  53. package/dist/bundler-plugins/per-locale-build/locale-id.d.ts.map +1 -0
  54. package/dist/bundler-plugins/per-locale-build/locale-id.js +13 -0
  55. package/dist/bundler-plugins/per-locale-build/locale-id.js.map +1 -0
  56. package/dist/bundler-plugins/per-locale-build/types.d.ts +4 -0
  57. package/dist/bundler-plugins/per-locale-build/types.d.ts.map +1 -0
  58. package/dist/bundler-plugins/per-locale-build/types.js +2 -0
  59. package/dist/bundler-plugins/per-locale-build/types.js.map +1 -0
  60. package/dist/bundler-plugins/per-locale-build/vite-environments.d.ts +51 -0
  61. package/dist/bundler-plugins/per-locale-build/vite-environments.d.ts.map +1 -0
  62. package/dist/bundler-plugins/per-locale-build/vite-environments.js +250 -0
  63. package/dist/bundler-plugins/per-locale-build/vite-environments.js.map +1 -0
  64. package/dist/bundler-plugins/per-locale-build/vite-environments.test.d.ts +1 -0
  65. package/dist/bundler-plugins/per-locale-build/vite-environments.test.d.ts.map +1 -0
  66. package/dist/bundler-plugins/per-locale-build/vite-environments.test.js +250 -0
  67. package/dist/bundler-plugins/per-locale-build/vite-environments.test.js.map +1 -0
  68. package/dist/bundler-plugins/plugin-core.d.ts +74 -0
  69. package/dist/bundler-plugins/plugin-core.d.ts.map +1 -0
  70. package/dist/bundler-plugins/plugin-core.js +292 -0
  71. package/dist/bundler-plugins/plugin-core.js.map +1 -0
  72. package/dist/bundler-plugins/rolldown.d.ts +10 -0
  73. package/dist/bundler-plugins/rolldown.d.ts.map +1 -0
  74. package/dist/bundler-plugins/rolldown.js +36 -0
  75. package/dist/bundler-plugins/rolldown.js.map +1 -0
  76. package/dist/bundler-plugins/rolldown.test.d.ts +1 -0
  77. package/dist/bundler-plugins/rolldown.test.d.ts.map +1 -0
  78. package/dist/bundler-plugins/rolldown.test.js +72 -0
  79. package/dist/bundler-plugins/rolldown.test.js.map +1 -0
  80. package/dist/bundler-plugins/rollup.d.ts +1 -0
  81. package/dist/bundler-plugins/rollup.d.ts.map +1 -0
  82. package/dist/bundler-plugins/rollup.js +4 -0
  83. package/dist/bundler-plugins/rollup.js.map +1 -0
  84. package/dist/bundler-plugins/rspack.d.ts +1 -0
  85. package/dist/bundler-plugins/rspack.d.ts.map +1 -0
  86. package/dist/bundler-plugins/rspack.js +4 -0
  87. package/dist/bundler-plugins/rspack.js.map +1 -0
  88. package/dist/bundler-plugins/unplugin.d.ts +3 -0
  89. package/dist/bundler-plugins/unplugin.d.ts.map +1 -0
  90. package/dist/bundler-plugins/unplugin.js +62 -0
  91. package/dist/bundler-plugins/unplugin.js.map +1 -0
  92. package/dist/bundler-plugins/unplugin.test.d.ts +1 -0
  93. package/dist/bundler-plugins/unplugin.test.d.ts.map +1 -0
  94. package/dist/bundler-plugins/unplugin.test.js +256 -0
  95. package/dist/bundler-plugins/unplugin.test.js.map +1 -0
  96. package/dist/bundler-plugins/virtual-modules.test.d.ts +1 -0
  97. package/dist/bundler-plugins/virtual-modules.test.d.ts.map +1 -0
  98. package/dist/bundler-plugins/virtual-modules.test.js +77 -0
  99. package/dist/bundler-plugins/virtual-modules.test.js.map +1 -0
  100. package/dist/bundler-plugins/vite.d.ts +17 -0
  101. package/dist/bundler-plugins/vite.d.ts.map +1 -0
  102. package/dist/bundler-plugins/vite.js +15 -0
  103. package/dist/bundler-plugins/vite.js.map +1 -0
  104. package/dist/bundler-plugins/vite.test.d.ts +1 -0
  105. package/dist/bundler-plugins/vite.test.d.ts.map +1 -0
  106. package/dist/bundler-plugins/vite.test.js +61 -0
  107. package/dist/bundler-plugins/vite.test.js.map +1 -0
  108. package/dist/bundler-plugins/webpack.d.ts +1 -0
  109. package/dist/bundler-plugins/webpack.d.ts.map +1 -0
  110. package/dist/bundler-plugins/webpack.js +4 -0
  111. package/dist/bundler-plugins/webpack.js.map +1 -0
  112. package/dist/cli/commands/compile/command.d.ts +2 -0
  113. package/dist/cli/commands/compile/command.d.ts.map +1 -0
  114. package/dist/cli/commands/compile/command.js +225 -0
  115. package/dist/cli/commands/compile/command.js.map +1 -0
  116. package/dist/cli/commands/compile/command.test.d.ts +1 -0
  117. package/dist/cli/commands/compile/command.test.d.ts.map +1 -0
  118. package/dist/cli/commands/compile/command.test.js +69 -0
  119. package/dist/cli/commands/compile/command.test.js.map +1 -0
  120. package/dist/cli/commands/init/command.d.ts +2 -0
  121. package/dist/cli/commands/init/command.d.ts.map +1 -0
  122. package/dist/cli/commands/init/command.js +90 -0
  123. package/dist/cli/commands/init/command.js.map +1 -0
  124. package/dist/cli/defaults.d.ts +11 -0
  125. package/dist/cli/defaults.d.ts.map +1 -0
  126. package/dist/cli/defaults.js +13 -0
  127. package/dist/cli/defaults.js.map +1 -0
  128. package/dist/cli/index.d.ts +2 -0
  129. package/dist/cli/index.d.ts.map +1 -0
  130. package/dist/cli/index.js +11 -0
  131. package/dist/cli/index.js.map +1 -0
  132. package/dist/cli/steps/add-vite-plugin.d.ts +31 -0
  133. package/dist/cli/steps/add-vite-plugin.d.ts.map +1 -0
  134. package/dist/cli/steps/add-vite-plugin.js +65 -0
  135. package/dist/cli/steps/add-vite-plugin.js.map +1 -0
  136. package/dist/cli/steps/add-vite-plugin.test.d.ts +1 -0
  137. package/dist/cli/steps/add-vite-plugin.test.d.ts.map +1 -0
  138. package/dist/cli/steps/add-vite-plugin.test.js +74 -0
  139. package/dist/cli/steps/add-vite-plugin.test.js.map +1 -0
  140. package/dist/cli/steps/check-for-uncomitted-changes.d.ts +5 -0
  141. package/dist/cli/steps/check-for-uncomitted-changes.d.ts.map +1 -0
  142. package/dist/cli/steps/check-for-uncomitted-changes.js +37 -0
  143. package/dist/cli/steps/check-for-uncomitted-changes.js.map +1 -0
  144. package/dist/cli/steps/detect-bundler.d.ts +10 -0
  145. package/dist/cli/steps/detect-bundler.d.ts.map +1 -0
  146. package/dist/cli/steps/detect-bundler.js +22 -0
  147. package/dist/cli/steps/detect-bundler.js.map +1 -0
  148. package/dist/cli/steps/detect-bundler.test.d.ts +1 -0
  149. package/dist/cli/steps/detect-bundler.test.d.ts.map +1 -0
  150. package/dist/cli/steps/detect-bundler.test.js +29 -0
  151. package/dist/cli/steps/detect-bundler.test.js.map +1 -0
  152. package/dist/cli/steps/initialize-messages.d.ts +11 -0
  153. package/dist/cli/steps/initialize-messages.d.ts.map +1 -0
  154. package/dist/cli/steps/initialize-messages.js +31 -0
  155. package/dist/cli/steps/initialize-messages.js.map +1 -0
  156. package/dist/cli/steps/prompt-for-outdir.d.ts +8 -0
  157. package/dist/cli/steps/prompt-for-outdir.d.ts.map +1 -0
  158. package/dist/cli/steps/prompt-for-outdir.js +19 -0
  159. package/dist/cli/steps/prompt-for-outdir.js.map +1 -0
  160. package/dist/cli/steps/update-package-json.d.ts +11 -0
  161. package/dist/cli/steps/update-package-json.d.ts.map +1 -0
  162. package/dist/cli/steps/update-package-json.js +34 -0
  163. package/dist/cli/steps/update-package-json.js.map +1 -0
  164. package/dist/cli/steps/update-ts-config.d.ts +26 -0
  165. package/dist/cli/steps/update-ts-config.d.ts.map +1 -0
  166. package/dist/cli/steps/update-ts-config.js +270 -0
  167. package/dist/cli/steps/update-ts-config.js.map +1 -0
  168. package/dist/cli/steps/update-ts-config.test.d.ts +1 -0
  169. package/dist/cli/steps/update-ts-config.test.d.ts.map +1 -0
  170. package/dist/cli/steps/update-ts-config.test.js +60 -0
  171. package/dist/cli/steps/update-ts-config.test.js.map +1 -0
  172. package/dist/cli/utils.d.ts +36 -0
  173. package/dist/cli/utils.d.ts.map +1 -0
  174. package/dist/cli/utils.js +20 -0
  175. package/dist/cli/utils.js.map +1 -0
  176. package/dist/compiler/assert-url-pattern-available.d.ts +7 -0
  177. package/dist/compiler/assert-url-pattern-available.d.ts.map +1 -0
  178. package/dist/compiler/assert-url-pattern-available.js +17 -0
  179. package/dist/compiler/assert-url-pattern-available.js.map +1 -0
  180. package/dist/compiler/compile-annotation.d.ts +12 -0
  181. package/dist/compiler/compile-annotation.d.ts.map +1 -0
  182. package/dist/compiler/compile-annotation.js +136 -0
  183. package/dist/compiler/compile-annotation.js.map +1 -0
  184. package/dist/compiler/compile-bundle.d.ts +28 -0
  185. package/dist/compiler/compile-bundle.d.ts.map +1 -0
  186. package/dist/compiler/compile-bundle.js +431 -0
  187. package/dist/compiler/compile-bundle.js.map +1 -0
  188. package/dist/compiler/compile-bundle.test.d.ts +1 -0
  189. package/dist/compiler/compile-bundle.test.d.ts.map +1 -0
  190. package/dist/compiler/compile-bundle.test.js +399 -0
  191. package/dist/compiler/compile-bundle.test.js.map +1 -0
  192. package/dist/compiler/compile-local-variable.d.ts +16 -0
  193. package/dist/compiler/compile-local-variable.d.ts.map +1 -0
  194. package/dist/compiler/compile-local-variable.js +28 -0
  195. package/dist/compiler/compile-local-variable.js.map +1 -0
  196. package/dist/compiler/compile-local-variable.test.d.ts +1 -0
  197. package/dist/compiler/compile-local-variable.test.d.ts.map +1 -0
  198. package/dist/compiler/compile-local-variable.test.js +359 -0
  199. package/dist/compiler/compile-local-variable.test.js.map +1 -0
  200. package/dist/compiler/compile-message.d.ts +8 -0
  201. package/dist/compiler/compile-message.d.ts.map +1 -0
  202. package/dist/compiler/compile-message.js +174 -0
  203. package/dist/compiler/compile-message.js.map +1 -0
  204. package/dist/compiler/compile-message.test.d.ts +1 -0
  205. package/dist/compiler/compile-message.test.d.ts.map +1 -0
  206. package/dist/compiler/compile-message.test.js +1060 -0
  207. package/dist/compiler/compile-message.test.js.map +1 -0
  208. package/dist/compiler/compile-pattern.d.ts +29 -0
  209. package/dist/compiler/compile-pattern.d.ts.map +1 -0
  210. package/dist/compiler/compile-pattern.js +143 -0
  211. package/dist/compiler/compile-pattern.js.map +1 -0
  212. package/dist/compiler/compile-pattern.test.d.ts +1 -0
  213. package/dist/compiler/compile-pattern.test.d.ts.map +1 -0
  214. package/dist/compiler/compile-pattern.test.js +255 -0
  215. package/dist/compiler/compile-pattern.test.js.map +1 -0
  216. package/dist/compiler/compile-project.d.ts +21 -0
  217. package/dist/compiler/compile-project.d.ts.map +1 -0
  218. package/dist/compiler/compile-project.js +147 -0
  219. package/dist/compiler/compile-project.js.map +1 -0
  220. package/dist/compiler/compile-project.test.d.ts +1 -0
  221. package/dist/compiler/compile-project.test.d.ts.map +1 -0
  222. package/dist/compiler/compile-project.test.js +1709 -0
  223. package/dist/compiler/compile-project.test.js.map +1 -0
  224. package/dist/compiler/compile.bench.d.ts +1 -0
  225. package/dist/compiler/compile.bench.d.ts.map +1 -0
  226. package/dist/compiler/compile.bench.js +89 -0
  227. package/dist/compiler/compile.bench.js.map +1 -0
  228. package/dist/compiler/compile.d.ts +24 -0
  229. package/dist/compiler/compile.d.ts.map +1 -0
  230. package/dist/compiler/compile.js +106 -0
  231. package/dist/compiler/compile.js.map +1 -0
  232. package/dist/compiler/compile.test.d.ts +1 -0
  233. package/dist/compiler/compile.test.d.ts.map +1 -0
  234. package/dist/compiler/compile.test.js +66 -0
  235. package/dist/compiler/compile.test.js.map +1 -0
  236. package/dist/compiler/compiler-options.d.ts +466 -0
  237. package/dist/compiler/compiler-options.d.ts.map +1 -0
  238. package/dist/compiler/compiler-options.js +22 -0
  239. package/dist/compiler/compiler-options.js.map +1 -0
  240. package/dist/compiler/create-paraglide.d.ts +21 -0
  241. package/dist/compiler/create-paraglide.d.ts.map +1 -0
  242. package/dist/compiler/create-paraglide.js +69 -0
  243. package/dist/compiler/create-paraglide.js.map +1 -0
  244. package/dist/compiler/create-paraglide.test.d.ts +1 -0
  245. package/dist/compiler/create-paraglide.test.d.ts.map +1 -0
  246. package/dist/compiler/create-paraglide.test.js +55 -0
  247. package/dist/compiler/create-paraglide.test.js.map +1 -0
  248. package/dist/compiler/create-readme.d.ts +9 -0
  249. package/dist/compiler/create-readme.d.ts.map +1 -0
  250. package/dist/compiler/create-readme.js +127 -0
  251. package/dist/compiler/create-readme.js.map +1 -0
  252. package/dist/compiler/emit-files.d.ts +15 -0
  253. package/dist/compiler/emit-files.d.ts.map +1 -0
  254. package/dist/compiler/emit-files.js +58 -0
  255. package/dist/compiler/emit-files.js.map +1 -0
  256. package/dist/compiler/emit-files.test.d.ts +1 -0
  257. package/dist/compiler/emit-files.test.d.ts.map +1 -0
  258. package/dist/compiler/emit-files.test.js +43 -0
  259. package/dist/compiler/emit-files.test.js.map +1 -0
  260. package/dist/compiler/emit-ts-declarations.d.ts +11 -0
  261. package/dist/compiler/emit-ts-declarations.d.ts.map +1 -0
  262. package/dist/compiler/emit-ts-declarations.interop.test.d.ts +1 -0
  263. package/dist/compiler/emit-ts-declarations.interop.test.d.ts.map +1 -0
  264. package/dist/compiler/emit-ts-declarations.interop.test.js +33 -0
  265. package/dist/compiler/emit-ts-declarations.interop.test.js.map +1 -0
  266. package/dist/compiler/emit-ts-declarations.js +353 -0
  267. package/dist/compiler/emit-ts-declarations.js.map +1 -0
  268. package/dist/compiler/emit-ts-declarations.test.d.ts +1 -0
  269. package/dist/compiler/emit-ts-declarations.test.d.ts.map +1 -0
  270. package/dist/compiler/emit-ts-declarations.test.js +161 -0
  271. package/dist/compiler/emit-ts-declarations.test.js.map +1 -0
  272. package/dist/compiler/index.d.ts +13 -0
  273. package/dist/compiler/index.d.ts.map +1 -0
  274. package/dist/compiler/index.js +11 -0
  275. package/dist/compiler/index.js.map +1 -0
  276. package/dist/compiler/jsdoc-types.d.ts +21 -0
  277. package/dist/compiler/jsdoc-types.d.ts.map +1 -0
  278. package/dist/compiler/jsdoc-types.js +59 -0
  279. package/dist/compiler/jsdoc-types.js.map +1 -0
  280. package/dist/compiler/jsdoc-types.test.d.ts +1 -0
  281. package/dist/compiler/jsdoc-types.test.d.ts.map +1 -0
  282. package/dist/compiler/jsdoc-types.test.js +100 -0
  283. package/dist/compiler/jsdoc-types.test.js.map +1 -0
  284. package/dist/compiler/lazy-modules/compile-cache.d.ts +37 -0
  285. package/dist/compiler/lazy-modules/compile-cache.d.ts.map +1 -0
  286. package/dist/compiler/lazy-modules/compile-cache.js +34 -0
  287. package/dist/compiler/lazy-modules/compile-cache.js.map +1 -0
  288. package/dist/compiler/lazy-modules/compile-project.lazy.test.d.ts +2 -0
  289. package/dist/compiler/lazy-modules/compile-project.lazy.test.d.ts.map +1 -0
  290. package/dist/compiler/lazy-modules/compile-project.lazy.test.js +65 -0
  291. package/dist/compiler/lazy-modules/compile-project.lazy.test.js.map +1 -0
  292. package/dist/compiler/lazy-modules/create-loader.d.ts +18 -0
  293. package/dist/compiler/lazy-modules/create-loader.d.ts.map +1 -0
  294. package/dist/compiler/lazy-modules/create-loader.js +182 -0
  295. package/dist/compiler/lazy-modules/create-loader.js.map +1 -0
  296. package/dist/compiler/lazy-modules/create-loader.test.d.ts +2 -0
  297. package/dist/compiler/lazy-modules/create-loader.test.d.ts.map +1 -0
  298. package/dist/compiler/lazy-modules/create-loader.test.js +82 -0
  299. package/dist/compiler/lazy-modules/create-loader.test.js.map +1 -0
  300. package/dist/compiler/lazy-modules/manifest.d.ts +32 -0
  301. package/dist/compiler/lazy-modules/manifest.d.ts.map +1 -0
  302. package/dist/compiler/lazy-modules/manifest.js +11 -0
  303. package/dist/compiler/lazy-modules/manifest.js.map +1 -0
  304. package/dist/compiler/match-literals.d.ts +2 -0
  305. package/dist/compiler/match-literals.d.ts.map +1 -0
  306. package/dist/compiler/match-literals.js +42 -0
  307. package/dist/compiler/match-literals.js.map +1 -0
  308. package/dist/compiler/output-structure/lazy-modules.d.ts +27 -0
  309. package/dist/compiler/output-structure/lazy-modules.d.ts.map +1 -0
  310. package/dist/compiler/output-structure/lazy-modules.js +157 -0
  311. package/dist/compiler/output-structure/lazy-modules.js.map +1 -0
  312. package/dist/compiler/output-structure/lazy-modules.test.d.ts +2 -0
  313. package/dist/compiler/output-structure/lazy-modules.test.d.ts.map +1 -0
  314. package/dist/compiler/output-structure/lazy-modules.test.js +128 -0
  315. package/dist/compiler/output-structure/lazy-modules.test.js.map +1 -0
  316. package/dist/compiler/output-structure/locale-modules.d.ts +4 -0
  317. package/dist/compiler/output-structure/locale-modules.d.ts.map +1 -0
  318. package/dist/compiler/output-structure/locale-modules.js +81 -0
  319. package/dist/compiler/output-structure/locale-modules.js.map +1 -0
  320. package/dist/compiler/output-structure/locale-modules.test.d.ts +1 -0
  321. package/dist/compiler/output-structure/locale-modules.test.d.ts.map +1 -0
  322. package/dist/compiler/output-structure/locale-modules.test.js +163 -0
  323. package/dist/compiler/output-structure/locale-modules.test.js.map +1 -0
  324. package/dist/compiler/output-structure/message-modules.d.ts +4 -0
  325. package/dist/compiler/output-structure/message-modules.d.ts.map +1 -0
  326. package/dist/compiler/output-structure/message-modules.js +100 -0
  327. package/dist/compiler/output-structure/message-modules.js.map +1 -0
  328. package/dist/compiler/output-structure/message-modules.test.d.ts +1 -0
  329. package/dist/compiler/output-structure/message-modules.test.d.ts.map +1 -0
  330. package/dist/compiler/output-structure/message-modules.test.js +148 -0
  331. package/dist/compiler/output-structure/message-modules.test.js.map +1 -0
  332. package/dist/compiler/per-locale-build.d.ts +2 -0
  333. package/dist/compiler/per-locale-build.d.ts.map +1 -0
  334. package/dist/compiler/per-locale-build.js +3 -0
  335. package/dist/compiler/per-locale-build.js.map +1 -0
  336. package/dist/compiler/registry.d.ts +13 -0
  337. package/dist/compiler/registry.d.ts.map +1 -0
  338. package/dist/compiler/registry.js +60 -0
  339. package/dist/compiler/registry.js.map +1 -0
  340. package/dist/compiler/resolve-tsc-js-path.d.ts +9 -0
  341. package/dist/compiler/resolve-tsc-js-path.d.ts.map +1 -0
  342. package/dist/compiler/resolve-tsc-js-path.js +23 -0
  343. package/dist/compiler/resolve-tsc-js-path.js.map +1 -0
  344. package/dist/compiler/runtime/check-locale.d.ts +31 -0
  345. package/dist/compiler/runtime/check-locale.d.ts.map +1 -0
  346. package/dist/compiler/runtime/check-locale.js +51 -0
  347. package/dist/compiler/runtime/check-locale.js.map +1 -0
  348. package/dist/compiler/runtime/check-locale.test.d.ts +1 -0
  349. package/dist/compiler/runtime/check-locale.test.d.ts.map +1 -0
  350. package/dist/compiler/runtime/check-locale.test.js +84 -0
  351. package/dist/compiler/runtime/check-locale.test.js.map +1 -0
  352. package/dist/compiler/runtime/create-runtime.d.ts +35 -0
  353. package/dist/compiler/runtime/create-runtime.d.ts.map +1 -0
  354. package/dist/compiler/runtime/create-runtime.js +196 -0
  355. package/dist/compiler/runtime/create-runtime.js.map +1 -0
  356. package/dist/compiler/runtime/extract-locale-from-cookie.d.ts +13 -0
  357. package/dist/compiler/runtime/extract-locale-from-cookie.d.ts.map +1 -0
  358. package/dist/compiler/runtime/extract-locale-from-cookie.js +43 -0
  359. package/dist/compiler/runtime/extract-locale-from-cookie.js.map +1 -0
  360. package/dist/compiler/runtime/extract-locale-from-cookie.test.d.ts +1 -0
  361. package/dist/compiler/runtime/extract-locale-from-cookie.test.d.ts.map +1 -0
  362. package/dist/compiler/runtime/extract-locale-from-cookie.test.js +149 -0
  363. package/dist/compiler/runtime/extract-locale-from-cookie.test.js.map +1 -0
  364. package/dist/compiler/runtime/extract-locale-from-header.d.ts +13 -0
  365. package/dist/compiler/runtime/extract-locale-from-header.d.ts.map +1 -0
  366. package/dist/compiler/runtime/extract-locale-from-header.js +45 -0
  367. package/dist/compiler/runtime/extract-locale-from-header.js.map +1 -0
  368. package/dist/compiler/runtime/extract-locale-from-header.test.d.ts +1 -0
  369. package/dist/compiler/runtime/extract-locale-from-header.test.d.ts.map +1 -0
  370. package/dist/compiler/runtime/extract-locale-from-header.test.js +55 -0
  371. package/dist/compiler/runtime/extract-locale-from-header.test.js.map +1 -0
  372. package/dist/compiler/runtime/extract-locale-from-navigator.d.ts +12 -0
  373. package/dist/compiler/runtime/extract-locale-from-navigator.d.ts.map +1 -0
  374. package/dist/compiler/runtime/extract-locale-from-navigator.js +33 -0
  375. package/dist/compiler/runtime/extract-locale-from-navigator.js.map +1 -0
  376. package/dist/compiler/runtime/extract-locale-from-navigator.test.d.ts +1 -0
  377. package/dist/compiler/runtime/extract-locale-from-navigator.test.d.ts.map +1 -0
  378. package/dist/compiler/runtime/extract-locale-from-navigator.test.js +45 -0
  379. package/dist/compiler/runtime/extract-locale-from-navigator.test.js.map +1 -0
  380. package/dist/compiler/runtime/extract-locale-from-request-async.d.ts +34 -0
  381. package/dist/compiler/runtime/extract-locale-from-request-async.d.ts.map +1 -0
  382. package/dist/compiler/runtime/extract-locale-from-request-async.js +70 -0
  383. package/dist/compiler/runtime/extract-locale-from-request-async.js.map +1 -0
  384. package/dist/compiler/runtime/extract-locale-from-request-async.test.d.ts +1 -0
  385. package/dist/compiler/runtime/extract-locale-from-request-async.test.d.ts.map +1 -0
  386. package/dist/compiler/runtime/extract-locale-from-request-async.test.js +119 -0
  387. package/dist/compiler/runtime/extract-locale-from-request-async.test.js.map +1 -0
  388. package/dist/compiler/runtime/extract-locale-from-request.d.ts +41 -0
  389. package/dist/compiler/runtime/extract-locale-from-request.d.ts.map +1 -0
  390. package/dist/compiler/runtime/extract-locale-from-request.js +96 -0
  391. package/dist/compiler/runtime/extract-locale-from-request.js.map +1 -0
  392. package/dist/compiler/runtime/extract-locale-from-request.test.d.ts +1 -0
  393. package/dist/compiler/runtime/extract-locale-from-request.test.d.ts.map +1 -0
  394. package/dist/compiler/runtime/extract-locale-from-request.test.js +351 -0
  395. package/dist/compiler/runtime/extract-locale-from-request.test.js.map +1 -0
  396. package/dist/compiler/runtime/extract-locale-from-url.d.ts +11 -0
  397. package/dist/compiler/runtime/extract-locale-from-url.d.ts.map +1 -0
  398. package/dist/compiler/runtime/extract-locale-from-url.js +68 -0
  399. package/dist/compiler/runtime/extract-locale-from-url.js.map +1 -0
  400. package/dist/compiler/runtime/extract-locale-from-url.test.d.ts +1 -0
  401. package/dist/compiler/runtime/extract-locale-from-url.test.d.ts.map +1 -0
  402. package/dist/compiler/runtime/extract-locale-from-url.test.js +127 -0
  403. package/dist/compiler/runtime/extract-locale-from-url.test.js.map +1 -0
  404. package/dist/compiler/runtime/generate-static-localized-urls.d.ts +44 -0
  405. package/dist/compiler/runtime/generate-static-localized-urls.d.ts.map +1 -0
  406. package/dist/compiler/runtime/generate-static-localized-urls.js +133 -0
  407. package/dist/compiler/runtime/generate-static-localized-urls.js.map +1 -0
  408. package/dist/compiler/runtime/generate-static-localized-urls.test.d.ts +1 -0
  409. package/dist/compiler/runtime/generate-static-localized-urls.test.d.ts.map +1 -0
  410. package/dist/compiler/runtime/generate-static-localized-urls.test.js +159 -0
  411. package/dist/compiler/runtime/generate-static-localized-urls.test.js.map +1 -0
  412. package/dist/compiler/runtime/get-locale.d.ts +42 -0
  413. package/dist/compiler/runtime/get-locale.d.ts.map +1 -0
  414. package/dist/compiler/runtime/get-locale.js +158 -0
  415. package/dist/compiler/runtime/get-locale.js.map +1 -0
  416. package/dist/compiler/runtime/get-locale.test.d.ts +1 -0
  417. package/dist/compiler/runtime/get-locale.test.d.ts.map +1 -0
  418. package/dist/compiler/runtime/get-locale.test.js +295 -0
  419. package/dist/compiler/runtime/get-locale.test.js.map +1 -0
  420. package/dist/compiler/runtime/get-text-direction.d.ts +15 -0
  421. package/dist/compiler/runtime/get-text-direction.d.ts.map +1 -0
  422. package/dist/compiler/runtime/get-text-direction.js +46 -0
  423. package/dist/compiler/runtime/get-text-direction.js.map +1 -0
  424. package/dist/compiler/runtime/get-text-direction.test.d.ts +1 -0
  425. package/dist/compiler/runtime/get-text-direction.test.d.ts.map +1 -0
  426. package/dist/compiler/runtime/get-text-direction.test.js +40 -0
  427. package/dist/compiler/runtime/get-text-direction.test.js.map +1 -0
  428. package/dist/compiler/runtime/get-url-origin.d.ts +19 -0
  429. package/dist/compiler/runtime/get-url-origin.d.ts.map +1 -0
  430. package/dist/compiler/runtime/get-url-origin.js +31 -0
  431. package/dist/compiler/runtime/get-url-origin.js.map +1 -0
  432. package/dist/compiler/runtime/get-url-origin.test.d.ts +1 -0
  433. package/dist/compiler/runtime/get-url-origin.test.d.ts.map +1 -0
  434. package/dist/compiler/runtime/get-url-origin.test.js +18 -0
  435. package/dist/compiler/runtime/get-url-origin.test.js.map +1 -0
  436. package/dist/compiler/runtime/host-routing.d.ts +28 -0
  437. package/dist/compiler/runtime/host-routing.d.ts.map +1 -0
  438. package/dist/compiler/runtime/host-routing.js +79 -0
  439. package/dist/compiler/runtime/host-routing.js.map +1 -0
  440. package/dist/compiler/runtime/host-routing.test.d.ts +1 -0
  441. package/dist/compiler/runtime/host-routing.test.d.ts.map +1 -0
  442. package/dist/compiler/runtime/host-routing.test.js +128 -0
  443. package/dist/compiler/runtime/host-routing.test.js.map +1 -0
  444. package/dist/compiler/runtime/localize-href.d.ts +84 -0
  445. package/dist/compiler/runtime/localize-href.d.ts.map +1 -0
  446. package/dist/compiler/runtime/localize-href.js +115 -0
  447. package/dist/compiler/runtime/localize-href.js.map +1 -0
  448. package/dist/compiler/runtime/localize-href.test.d.ts +1 -0
  449. package/dist/compiler/runtime/localize-href.test.d.ts.map +1 -0
  450. package/dist/compiler/runtime/localize-href.test.js +139 -0
  451. package/dist/compiler/runtime/localize-href.test.js.map +1 -0
  452. package/dist/compiler/runtime/localize-url.d.ts +95 -0
  453. package/dist/compiler/runtime/localize-url.d.ts.map +1 -0
  454. package/dist/compiler/runtime/localize-url.js +327 -0
  455. package/dist/compiler/runtime/localize-url.js.map +1 -0
  456. package/dist/compiler/runtime/localize-url.test.d.ts +1 -0
  457. package/dist/compiler/runtime/localize-url.test.d.ts.map +1 -0
  458. package/dist/compiler/runtime/localize-url.test.js +533 -0
  459. package/dist/compiler/runtime/localize-url.test.js.map +1 -0
  460. package/dist/compiler/runtime/route-strategy.d.ts +32 -0
  461. package/dist/compiler/runtime/route-strategy.d.ts.map +1 -0
  462. package/dist/compiler/runtime/route-strategy.js +72 -0
  463. package/dist/compiler/runtime/route-strategy.js.map +1 -0
  464. package/dist/compiler/runtime/set-locale.d.ts +46 -0
  465. package/dist/compiler/runtime/set-locale.d.ts.map +1 -0
  466. package/dist/compiler/runtime/set-locale.js +172 -0
  467. package/dist/compiler/runtime/set-locale.js.map +1 -0
  468. package/dist/compiler/runtime/set-locale.test.d.ts +1 -0
  469. package/dist/compiler/runtime/set-locale.test.d.ts.map +1 -0
  470. package/dist/compiler/runtime/set-locale.test.js +555 -0
  471. package/dist/compiler/runtime/set-locale.test.js.map +1 -0
  472. package/dist/compiler/runtime/should-redirect.d.ts +100 -0
  473. package/dist/compiler/runtime/should-redirect.d.ts.map +1 -0
  474. package/dist/compiler/runtime/should-redirect.js +155 -0
  475. package/dist/compiler/runtime/should-redirect.js.map +1 -0
  476. package/dist/compiler/runtime/should-redirect.test.d.ts +1 -0
  477. package/dist/compiler/runtime/should-redirect.test.d.ts.map +1 -0
  478. package/dist/compiler/runtime/should-redirect.test.js +270 -0
  479. package/dist/compiler/runtime/should-redirect.test.js.map +1 -0
  480. package/dist/compiler/runtime/strategy.d.ts +63 -0
  481. package/dist/compiler/runtime/strategy.d.ts.map +1 -0
  482. package/dist/compiler/runtime/strategy.js +65 -0
  483. package/dist/compiler/runtime/strategy.js.map +1 -0
  484. package/dist/compiler/runtime/strategy.test.d.ts +1 -0
  485. package/dist/compiler/runtime/strategy.test.d.ts.map +1 -0
  486. package/dist/compiler/runtime/strategy.test.js +90 -0
  487. package/dist/compiler/runtime/strategy.test.js.map +1 -0
  488. package/dist/compiler/runtime/track-message-call.d.ts +5 -0
  489. package/dist/compiler/runtime/track-message-call.d.ts.map +1 -0
  490. package/dist/compiler/runtime/track-message-call.js +14 -0
  491. package/dist/compiler/runtime/track-message-call.js.map +1 -0
  492. package/dist/compiler/runtime/track-message-call.test.d.ts +1 -0
  493. package/dist/compiler/runtime/track-message-call.test.d.ts.map +1 -0
  494. package/dist/compiler/runtime/track-message-call.test.js +22 -0
  495. package/dist/compiler/runtime/track-message-call.test.js.map +1 -0
  496. package/dist/compiler/runtime/type-definitions.d.ts +197 -0
  497. package/dist/compiler/runtime/type-definitions.d.ts.map +1 -0
  498. package/dist/compiler/runtime/type-definitions.js +150 -0
  499. package/dist/compiler/runtime/type-definitions.js.map +1 -0
  500. package/dist/compiler/runtime/type.d.ts +47 -0
  501. package/dist/compiler/runtime/type.d.ts.map +1 -0
  502. package/dist/compiler/runtime/type.js +2 -0
  503. package/dist/compiler/runtime/type.js.map +1 -0
  504. package/dist/compiler/runtime/type.test.d.ts +1 -0
  505. package/dist/compiler/runtime/type.test.d.ts.map +1 -0
  506. package/dist/compiler/runtime/type.test.js +153 -0
  507. package/dist/compiler/runtime/type.test.js.map +1 -0
  508. package/dist/compiler/runtime/url-pattern.d.ts +12 -0
  509. package/dist/compiler/runtime/url-pattern.d.ts.map +1 -0
  510. package/dist/compiler/runtime/url-pattern.js +35 -0
  511. package/dist/compiler/runtime/url-pattern.js.map +1 -0
  512. package/dist/compiler/runtime/variables.d.ts +128 -0
  513. package/dist/compiler/runtime/variables.d.ts.map +1 -0
  514. package/dist/compiler/runtime/variables.js +111 -0
  515. package/dist/compiler/runtime/variables.js.map +1 -0
  516. package/dist/compiler/safe-module-id.d.ts +7 -0
  517. package/dist/compiler/safe-module-id.d.ts.map +1 -0
  518. package/dist/compiler/safe-module-id.js +78 -0
  519. package/dist/compiler/safe-module-id.js.map +1 -0
  520. package/dist/compiler/safe-module-id.test.d.ts +1 -0
  521. package/dist/compiler/safe-module-id.test.d.ts.map +1 -0
  522. package/dist/compiler/safe-module-id.test.js +36 -0
  523. package/dist/compiler/safe-module-id.test.js.map +1 -0
  524. package/dist/compiler/seed-previous-compilation.d.ts +7 -0
  525. package/dist/compiler/seed-previous-compilation.d.ts.map +1 -0
  526. package/dist/compiler/seed-previous-compilation.js +9 -0
  527. package/dist/compiler/seed-previous-compilation.js.map +1 -0
  528. package/dist/compiler/server/create-server-file.d.ts +12 -0
  529. package/dist/compiler/server/create-server-file.d.ts.map +1 -0
  530. package/dist/compiler/server/create-server-file.js +91 -0
  531. package/dist/compiler/server/create-server-file.js.map +1 -0
  532. package/dist/compiler/server/create-server-file.test.d.ts +1 -0
  533. package/dist/compiler/server/create-server-file.test.d.ts.map +1 -0
  534. package/dist/compiler/server/create-server-file.test.js +48 -0
  535. package/dist/compiler/server/create-server-file.test.js.map +1 -0
  536. package/dist/compiler/server/middleware.d.ts +98 -0
  537. package/dist/compiler/server/middleware.d.ts.map +1 -0
  538. package/dist/compiler/server/middleware.js +278 -0
  539. package/dist/compiler/server/middleware.js.map +1 -0
  540. package/dist/compiler/server/middleware.test.d.ts +1 -0
  541. package/dist/compiler/server/middleware.test.d.ts.map +1 -0
  542. package/dist/compiler/server/middleware.test.js +1001 -0
  543. package/dist/compiler/server/middleware.test.js.map +1 -0
  544. package/dist/compiler/server/type.d.ts +6 -0
  545. package/dist/compiler/server/type.d.ts.map +1 -0
  546. package/dist/compiler/server/type.js +2 -0
  547. package/dist/compiler/server/type.js.map +1 -0
  548. package/dist/compiler/test-helpers.d.ts +30 -0
  549. package/dist/compiler/test-helpers.d.ts.map +1 -0
  550. package/dist/compiler/test-helpers.js +50 -0
  551. package/dist/compiler/test-helpers.js.map +1 -0
  552. package/dist/compiler/types.d.ts +7 -0
  553. package/dist/compiler/types.d.ts.map +1 -0
  554. package/dist/compiler/types.js +2 -0
  555. package/dist/compiler/types.js.map +1 -0
  556. package/dist/compiler/variable-access.d.ts +3 -0
  557. package/dist/compiler/variable-access.d.ts.map +1 -0
  558. package/dist/compiler/variable-access.js +15 -0
  559. package/dist/compiler/variable-access.js.map +1 -0
  560. package/dist/index.d.ts +2 -0
  561. package/dist/index.d.ts.map +1 -0
  562. package/dist/index.js +3 -0
  563. package/dist/index.js.map +1 -0
  564. package/dist/messages/ast.d.ts +102 -0
  565. package/dist/messages/ast.d.ts.map +1 -0
  566. package/dist/messages/ast.js +8 -0
  567. package/dist/messages/ast.js.map +1 -0
  568. package/dist/messages/create-bundle-nested.d.ts +16 -0
  569. package/dist/messages/create-bundle-nested.d.ts.map +1 -0
  570. package/dist/messages/create-bundle-nested.js +22 -0
  571. package/dist/messages/create-bundle-nested.js.map +1 -0
  572. package/dist/messages/index.d.ts +5 -0
  573. package/dist/messages/index.d.ts.map +1 -0
  574. package/dist/messages/index.js +5 -0
  575. package/dist/messages/index.js.map +1 -0
  576. package/dist/messages/load-messages.d.ts +19 -0
  577. package/dist/messages/load-messages.d.ts.map +1 -0
  578. package/dist/messages/load-messages.js +49 -0
  579. package/dist/messages/load-messages.js.map +1 -0
  580. package/dist/messages/message-format/flatten.d.ts +9 -0
  581. package/dist/messages/message-format/flatten.d.ts.map +1 -0
  582. package/dist/messages/message-format/flatten.js +32 -0
  583. package/dist/messages/message-format/flatten.js.map +1 -0
  584. package/dist/messages/message-format/import-files.d.ts +32 -0
  585. package/dist/messages/message-format/import-files.d.ts.map +1 -0
  586. package/dist/messages/message-format/import-files.js +53 -0
  587. package/dist/messages/message-format/import-files.js.map +1 -0
  588. package/dist/messages/message-format/import-files.test.d.ts +1 -0
  589. package/dist/messages/message-format/import-files.test.d.ts.map +1 -0
  590. package/dist/messages/message-format/import-files.test.js +145 -0
  591. package/dist/messages/message-format/import-files.test.js.map +1 -0
  592. package/dist/messages/message-format/index.d.ts +6 -0
  593. package/dist/messages/message-format/index.d.ts.map +1 -0
  594. package/dist/messages/message-format/index.js +7 -0
  595. package/dist/messages/message-format/index.js.map +1 -0
  596. package/dist/messages/message-format/parse-bundle.d.ts +31 -0
  597. package/dist/messages/message-format/parse-bundle.d.ts.map +1 -0
  598. package/dist/messages/message-format/parse-bundle.js +169 -0
  599. package/dist/messages/message-format/parse-bundle.js.map +1 -0
  600. package/dist/messages/message-format/parse-declaration.d.ts +2 -0
  601. package/dist/messages/message-format/parse-declaration.d.ts.map +1 -0
  602. package/dist/messages/message-format/parse-declaration.js +56 -0
  603. package/dist/messages/message-format/parse-declaration.js.map +1 -0
  604. package/dist/messages/message-format/parse-markup.d.ts +4 -0
  605. package/dist/messages/message-format/parse-markup.d.ts.map +1 -0
  606. package/dist/messages/message-format/parse-markup.js +167 -0
  607. package/dist/messages/message-format/parse-markup.js.map +1 -0
  608. package/dist/messages/message-format/parse-matches.d.ts +5 -0
  609. package/dist/messages/message-format/parse-matches.d.ts.map +1 -0
  610. package/dist/messages/message-format/parse-matches.js +31 -0
  611. package/dist/messages/message-format/parse-matches.js.map +1 -0
  612. package/dist/messages/message-format/parse-pattern.d.ts +5 -0
  613. package/dist/messages/message-format/parse-pattern.d.ts.map +1 -0
  614. package/dist/messages/message-format/parse-pattern.js +120 -0
  615. package/dist/messages/message-format/parse-pattern.js.map +1 -0
  616. package/dist/messages/message-format/unique.d.ts +2 -0
  617. package/dist/messages/message-format/unique.d.ts.map +1 -0
  618. package/dist/messages/message-format/unique.js +5 -0
  619. package/dist/messages/message-format/unique.js.map +1 -0
  620. package/dist/messages/nest-bundles.d.ts +19 -0
  621. package/dist/messages/nest-bundles.d.ts.map +1 -0
  622. package/dist/messages/nest-bundles.js +49 -0
  623. package/dist/messages/nest-bundles.js.map +1 -0
  624. package/dist/services/account/index.d.ts +14 -0
  625. package/dist/services/account/index.d.ts.map +1 -0
  626. package/dist/services/account/index.js +43 -0
  627. package/dist/services/account/index.js.map +1 -0
  628. package/dist/services/account/types.d.ts +4 -0
  629. package/dist/services/account/types.d.ts.map +1 -0
  630. package/dist/services/account/types.js +2 -0
  631. package/dist/services/account/types.js.map +1 -0
  632. package/dist/services/codegen/escape.d.ts +9 -0
  633. package/dist/services/codegen/escape.d.ts.map +1 -0
  634. package/dist/services/codegen/escape.js +19 -0
  635. package/dist/services/codegen/escape.js.map +1 -0
  636. package/dist/services/codegen/quotes.d.ts +4 -0
  637. package/dist/services/codegen/quotes.d.ts.map +1 -0
  638. package/dist/services/codegen/quotes.js +5 -0
  639. package/dist/services/codegen/quotes.js.map +1 -0
  640. package/dist/services/env-variables/create-index-file.d.ts +9 -0
  641. package/dist/services/env-variables/create-index-file.d.ts.map +1 -0
  642. package/dist/services/env-variables/create-index-file.js +28 -0
  643. package/dist/services/env-variables/create-index-file.js.map +1 -0
  644. package/dist/services/env-variables/index.d.ts +3 -0
  645. package/dist/services/env-variables/index.d.ts.map +1 -0
  646. package/dist/services/env-variables/index.js +4 -0
  647. package/dist/services/env-variables/index.js.map +1 -0
  648. package/dist/services/environment/package.d.ts +9 -0
  649. package/dist/services/environment/package.d.ts.map +1 -0
  650. package/dist/services/environment/package.js +31 -0
  651. package/dist/services/environment/package.js.map +1 -0
  652. package/dist/services/environment/package.test.d.ts +1 -0
  653. package/dist/services/environment/package.test.d.ts.map +1 -0
  654. package/dist/services/environment/package.test.js +21 -0
  655. package/dist/services/environment/package.test.js.map +1 -0
  656. package/dist/services/error-handling.d.ts +12 -0
  657. package/dist/services/error-handling.d.ts.map +1 -0
  658. package/dist/services/error-handling.js +27 -0
  659. package/dist/services/error-handling.js.map +1 -0
  660. package/dist/services/error-handling.test.d.ts +1 -0
  661. package/dist/services/error-handling.test.d.ts.map +1 -0
  662. package/dist/services/error-handling.test.js +10 -0
  663. package/dist/services/error-handling.test.js.map +1 -0
  664. package/dist/services/file-handling/content-hash.d.ts +9 -0
  665. package/dist/services/file-handling/content-hash.js +19 -0
  666. package/dist/services/file-handling/content-hash.js.map +1 -0
  667. package/dist/services/file-handling/exists.d.ts +7 -0
  668. package/dist/services/file-handling/exists.d.ts.map +1 -0
  669. package/dist/services/file-handling/exists.js +24 -0
  670. package/dist/services/file-handling/exists.js.map +1 -0
  671. package/dist/services/file-handling/exists.test.d.ts +1 -0
  672. package/dist/services/file-handling/exists.test.d.ts.map +1 -0
  673. package/dist/services/file-handling/exists.test.js +27 -0
  674. package/dist/services/file-handling/exists.test.js.map +1 -0
  675. package/dist/services/file-handling/types.d.ts +4 -0
  676. package/dist/services/file-handling/types.d.ts.map +1 -0
  677. package/dist/services/file-handling/types.js +2 -0
  678. package/dist/services/file-handling/types.js.map +1 -0
  679. package/dist/services/file-handling/write-output.d.ts +21 -0
  680. package/dist/services/file-handling/write-output.d.ts.map +1 -0
  681. package/dist/services/file-handling/write-output.js +157 -0
  682. package/dist/services/file-handling/write-output.js.map +1 -0
  683. package/dist/services/file-handling/write-output.test.d.ts +1 -0
  684. package/dist/services/file-handling/write-output.test.d.ts.map +1 -0
  685. package/dist/services/file-handling/write-output.test.js +217 -0
  686. package/dist/services/file-handling/write-output.test.js.map +1 -0
  687. package/dist/services/file-watching/tracked-fs.d.ts +25 -0
  688. package/dist/services/file-watching/tracked-fs.d.ts.map +1 -0
  689. package/dist/services/file-watching/tracked-fs.js +94 -0
  690. package/dist/services/file-watching/tracked-fs.js.map +1 -0
  691. package/dist/services/file-watching/tracked-fs.test.d.ts +1 -0
  692. package/dist/services/file-watching/tracked-fs.test.d.ts.map +1 -0
  693. package/dist/services/file-watching/tracked-fs.test.js +87 -0
  694. package/dist/services/file-watching/tracked-fs.test.js.map +1 -0
  695. package/dist/services/logger/index.d.ts +17 -0
  696. package/dist/services/logger/index.d.ts.map +1 -0
  697. package/dist/services/logger/index.js +58 -0
  698. package/dist/services/logger/index.js.map +1 -0
  699. package/dist/services/lookup.d.ts +14 -0
  700. package/dist/services/lookup.d.ts.map +1 -0
  701. package/dist/services/lookup.js +24 -0
  702. package/dist/services/lookup.js.map +1 -0
  703. package/dist/urlpattern-polyfill/index.d.ts +2 -0
  704. package/dist/urlpattern-polyfill/index.d.ts.map +1 -0
  705. package/dist/urlpattern-polyfill/index.js +2 -0
  706. package/dist/urlpattern-polyfill/index.js.map +1 -0
  707. package/dist/utilities/detect-json-formatting.d.ts +10 -0
  708. package/dist/utilities/detect-json-formatting.d.ts.map +1 -0
  709. package/dist/utilities/detect-json-formatting.js +80 -0
  710. package/dist/utilities/detect-json-formatting.js.map +1 -0
  711. package/dist/utilities/node-normalize-path.d.ts +1 -0
  712. package/dist/utilities/node-normalize-path.d.ts.map +1 -0
  713. package/dist/utilities/node-normalize-path.js +10 -0
  714. package/dist/utilities/node-normalize-path.js.map +1 -0
  715. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-project.test.js","sourceRoot":"","sources":["../../src/compiler/compile-project.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test, describe, vi, beforeEach } from \"vitest\";\nimport {\n\tcreateProject as typescriptProject,\n\tts,\n\ttype ProjectOptions,\n} from \"@ts-morph/bootstrap\";\nimport type { BundleNested } from \"../messages/ast.js\";\nimport { createBundleNested, defaultTestSettings } from \"./test-helpers.js\";\nimport { compileProject, getFallbackMap } from \"./compile-project.js\";\nimport virtual from \"@rollup/plugin-virtual\";\nimport { rolldown } from \"rolldown\";\nimport { perLocaleBuildStaticLocaleExpression } from \"./per-locale-build.js\";\n\nbeforeEach(() => {\n\t// reset the imports to make sure that the runtime is reloaded\n\tvi.resetModules();\n\tvi.clearAllMocks();\n\n\t// mocking DOM globals\n\t// @ts-expect-error - global variable definition\n\tglobalThis.window = undefined;\n});\n\nfunction hasFallbackCycle(\n\tfallbackMap: Record<string, string | undefined>,\n\tstart: string\n): boolean {\n\tconst visited = new Set<string>();\n\tlet current: string | undefined = start;\n\n\twhile (current) {\n\t\tif (visited.has(current)) return true;\n\t\tvisited.add(current);\n\t\tcurrent = fallbackMap[current];\n\t}\n\n\treturn false;\n}\n\ntest(\"emitGitignore\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tconst _default = await compileProject({ bundles, settings });\n\n\tconst _true = await compileProject({ bundles, settings, compilerOptions: { emitGitIgnore: true },\n\t});\n\n\tconst _false = await compileProject({ bundles, settings, compilerOptions: { emitGitIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".gitignore\");\n\texpect(_true).toHaveProperty(\".gitignore\");\n\texpect(_false).not.toHaveProperty(\".gitignore\");\n});\n\ntest(\"marks tree-shakeable generated message layouts as side-effect-free\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tconst messageModules = await compileProject({ bundles, settings });\n\n\tconst localeModules = await compileProject({ bundles, settings, compilerOptions: { outputStructure: \"locale-modules\" },\n\t});\n\tconst specializedLocaleModules = await compileProject({ bundles, settings, compilerOptions: {\n\t\t\toutputStructure: \"locale-modules\",\n\t\t\texperimentalStaticLocale: perLocaleBuildStaticLocaleExpression,\n\t\t},\n\t});\n\n\t// message-modules: the message modules are side-effect-free, so bundlers can\n\t// drop unused re-exports from the `m` barrel per entry instead of emitting one\n\t// shared chunk with every message. `type: \"module\"` keeps the generated ESM\n\t// files in the new `messages/` package scope from defaulting to CommonJS.\n\texpect(messageModules).toHaveProperty(\"messages/package.json\");\n\texpect(JSON.parse(messageModules[\"messages/package.json\"]!)).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n\n\texpect(localeModules).not.toHaveProperty(\"messages/package.json\");\n\texpect(specializedLocaleModules).toHaveProperty(\"messages/package.json\");\n\texpect(\n\t\tJSON.parse(specializedLocaleModules[\"messages/package.json\"]!)\n\t).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n});\n\ntest(\"emitPrettierIgnore\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tconst _default = await compileProject({ bundles, settings });\n\n\tconst _true = await compileProject({ bundles, settings, compilerOptions: { emitPrettierIgnore: true },\n\t});\n\n\tconst _false = await compileProject({ bundles, settings, compilerOptions: { emitPrettierIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".prettierignore\");\n\texpect(_true).toHaveProperty(\".prettierignore\");\n\texpect(_false).not.toHaveProperty(\".prettierignore\");\n});\n\ntest(\"emitReadme\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\tconst projectPath = \"./project.inlang\";\n\n\tconst _default = await compileProject({\n\t\tbundles,\n\t\tsettings,\n\t\tsourceLabel: projectPath,\n\t});\n\n\tconst _true = await compileProject({\n\t\tbundles,\n\t\tsettings,\n\t\tsourceLabel: projectPath,\n\t\tcompilerOptions: { emitReadme: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tbundles,\n\t\tsettings,\n\t\tsourceLabel: projectPath,\n\t\tcompilerOptions: { emitReadme: false },\n\t});\n\n\tconst _noProjectPath = await compileProject({ bundles, settings });\n\n\texpect(_default).toHaveProperty(\"README.md\");\n\texpect(_true).toHaveProperty(\"README.md\");\n\texpect(_false).not.toHaveProperty(\"README.md\");\n\t// README should still be emitted even without projectPath\n\texpect(_noProjectPath).toHaveProperty(\"README.md\");\n\t// but should not contain the \"Compiled from:\" line\n\texpect(_noProjectPath[\"README.md\"]).not.toContain(\"Compiled from:\");\n});\n\ntest(\"emitReadme includes project path\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tconst projectPath = \"./my-custom-project.inlang\";\n\tconst output = await compileProject({ bundles, settings, sourceLabel: projectPath });\n\n\texpect(output[\"README.md\"]).toContain(projectPath);\n\texpect(output[\"README.md\"]).toContain(\"Compiled from:\");\n\texpect(output[\"README.md\"]).toContain(\"Paraglide JS\");\n});\n\ntest(\"throws during compile for invalid routeStrategies match patterns\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tawait expect(\n\t\tcompileProject({ bundles, settings, compilerOptions: {\n\t\t\t\trouteStrategies: [{ match: \"/api/:path(.*\", exclude: true }],\n\t\t\t},\n\t\t})\n\t).rejects.toThrow(`Invalid routeStrategies[0].match \"/api/:path(.*\"`);\n});\n\n// https://github.com/opral/paraglide-js/issues/539\ntest(\"omits async_hooks import when disableAsyncLocalStorage is true\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tconst output = await compileProject({ bundles, settings, compilerOptions: { disableAsyncLocalStorage: true },\n\t});\n\n\texpect(output[\"server.js\"]).not.toContain(\n\t\t'const { AsyncLocalStorage } = await import(\"node:async_hooks\");'\n\t);\n});\n\n// https://github.com/opral/paraglide-js/issues/544\ntest(\"fallback map should not create cycles for language-only + regional baseLocale\", () => {\n\tconst fallbackMap = getFallbackMap([\"it\", \"it-IT\", \"fr\", \"fr-FR\"], \"it-IT\");\n\n\texpect(hasFallbackCycle(fallbackMap, \"it\")).toBe(false);\n\texpect(hasFallbackCycle(fallbackMap, \"it-IT\")).toBe(false);\n\texpect(fallbackMap[\"it\"]).toBe(\"it-IT\");\n\texpect(fallbackMap[\"it-IT\"]).toBeUndefined();\n});\n\ntest(\"emitTsDeclarations generates declaration files\", async () => {\n\tconst output = await compileProject({ bundles, settings, compilerOptions: {\n\t\t\temitTsDeclarations: true,\n\t\t\toutputStructure: \"locale-modules\",\n\t\t},\n\t});\n\n\texpect(output).toHaveProperty(\"messages/_index.d.ts\");\n\texpect(output).toHaveProperty(\"messages.d.ts\");\n\texpect(output).toHaveProperty(\"registry.d.ts\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"sad_penguin_bundle\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"relative_time_dynamic\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"RelativeTimeFormatUnit\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"relativetime\");\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\n\ttsProject.createSourceFile(\n\t\t\"test.ts\",\n\t\t`\n\t\t\timport { m, relative_time_dynamic } from \"./messages.js\";\n\t\t\timport { relativetime } from \"./registry.js\";\n\n\t\t\tm.sad_penguin_bundle() satisfies string;\n\t\t\trelative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string;\n\t\t\trelativetime(\"en\", -3, { unit: \"hour\", style: \"short\" }) satisfies string;\n\t\t`\n\t);\n\n\tconst program = tsProject.createProgram();\n\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\tconst text = d.messageText.toString();\n\t\treturn (\n\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t);\n\t});\n\tfor (const diagnostic of diagnostics) {\n\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t}\n\texpect(diagnostics.length).toEqual(0);\n});\n\ntest(\"emitTsDeclarations remains opt-in\", async () => {\n\tconst output = await compileProject({ bundles: [], settings: defaultTestSettings });\n\texpect(\n\t\tObject.keys(output).some((fileName) => fileName.endsWith(\".d.ts\"))\n\t).toBe(false);\n});\n\ntest(\"emitTsDeclarations quotes unsafe export aliases\", async () => {\n\tconst settings = { locales: [\"en\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tbundles.push(createBundleNested({\n\t\t\tid: \"greeting.hello\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tfor (const outputStructure of [\n\t\t\"message-modules\",\n\t\t\"locale-modules\",\n\t] as const) {\n\t\tconst output = await compileProject({ bundles, settings, compilerOptions: {\n\t\t\t\temitTsDeclarations: true,\n\t\t\t\toutputStructure,\n\t\t\t},\n\t\t});\n\t\tconst declarationFile =\n\t\t\toutputStructure === \"message-modules\"\n\t\t\t\t? \"messages/greeting_hello.d.ts\"\n\t\t\t\t: \"messages/_index.d.ts\";\n\n\t\texpect(output[declarationFile]).toContain(\n\t\t\t`export { greeting_hello as \"greeting.hello\" };`\n\t\t);\n\n\t\tconst tsProject = await typescriptProject({\n\t\t\tuseInMemoryFileSystem: true,\n\t\t\tcompilerOptions: {\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t},\n\t\t});\n\n\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t}\n\t\t}\n\n\t\ttsProject.createSourceFile(\n\t\t\t\"test.ts\",\n\t\t\t`\n\t\t\t\timport { \"greeting.hello\" as greetingHello } from \"./messages.js\";\n\n\t\t\t\tgreetingHello() satisfies string;\n\t\t\t`\n\t\t);\n\n\t\tconst program = tsProject.createProgram();\n\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\treturn !d.messageText.toString().includes(\"Cannot find name 'URLPattern'\");\n\t\t});\n\t\tfor (const diagnostic of diagnostics) {\n\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t}\n\t\texpect(diagnostics.length).toEqual(0);\n\t}\n});\n\ntest(\"handles message bundles with a : in the id\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tbundles.push(createBundleNested({\n\t\t\tid: \"hello:world\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello world!\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({ bundles, settings });\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"hello:world\"]()).toBe(\"Hello world!\");\n});\n\ntest(\"emits .parts() on bundle functions for markup messages\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tbundles.push(createBundleNested({\n\t\t\tid: \"balance\",\n\t\t\tdeclarations: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\tname: \"amount\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \"You have \" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-start\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"amount\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \" coins\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-end\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({ bundles, settings });\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\tconst { m } = await importCode(code);\n\n\texpect(m.balance({ amount: 7 }, { locale: \"en\" })).toBe(\"You have 7 coins.\");\n\texpect(m.balance.parts({ amount: 7 }, { locale: \"en\" })).toEqual([\n\t\t{ type: \"text\", value: \"You have \" },\n\t\t{ type: \"markup-start\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \"7\" },\n\t\t{ type: \"text\", value: \" coins\" },\n\t\t{ type: \"markup-end\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \".\" },\n\t]);\n});\n\n// https://github.com/opral/inlang-paraglide-js/issues/347\ntest(\"can emit message bundles with more than 255 characters\", async () => {\n\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\tbundles.push(createBundleNested({\n\t\t\t// 300 characters long id\n\t\t\tid: \"a\".repeat(300),\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Hello\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({ bundles, settings, compilerOptions: {\n\t\t\turlPatterns: [],\n\t\t},\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"a\".repeat(300)]()).toBe(\"Hello\");\n});\n\ndescribe.each([\n\t// useTsImports must be true to test emitTs. Otherwise, rolldown can't resolve the imports\n\t{\n\t\toutputStructure: \"locale-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n\t{\n\t\toutputStructure: \"message-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n] satisfies Array<Parameters<typeof compileProject>[\"0\"][\"compilerOptions\"]>)(\n\t\"options\",\n\tasync (compilerOptions) => {\n\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\n\t\tdescribe(\"tree-shaking\", () => {\n\t\t\ttest(\"should tree-shake unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of bundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\t// https://github.com/opral/inlang-paraglide-js/issues/345\n\t\t\ttest(\"importing { m } works and tree-shakes unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import { m } from \"./paraglide/messages.js\"\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of bundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"should not treeshake messages that are used\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\t\t\n\t\t\tconsole.log(\n\t\t\t\tm.sad_penguin_bundle(),\n\t\t\t\tm.depressed_dog({ name: \"Samuel\" }),\n\t\t\t\tm.insane_cats({ name: \"Samuel\", count: 5 })\n\t\t\t)`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\tfor (const id of bundles.map((m) => m.id)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[\"sad_penguin_bundle\", \"depressed_dog\", \"insane_cats\"].includes(id)\n\t\t\t\t\t) {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\n\t\t\t\t\t\"A simple message.\",\n\t\t\t\t\t\"Good morning Samuel!\",\n\t\t\t\t\t\"Hello Samuel! You have 5 messages.\"\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// https://github.com/opral/inlang-paraglide-js/issues/379\n\t\ttest(\"plurals work\", async () => {\n\t\t\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\tid: \"plural_test\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"countPlural\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", value: \"one\", key: \"countPlural\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There is one cat.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"other\",\n\t\t\t\t\t\t\t\t\t\t\tkey: \"countPlural\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There are many cats.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(\n\t\t\t\t\tawait compileProject({ bundles, settings, compilerOptions }),\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"`\n\t\t\t\t)\n\t\t\t);\n\n\t\t\texpect(m.plural_test({ count: 1 })).toBe(\"There is one cat.\");\n\t\t\texpect(m.plural_test({ count: 2 })).toBe(\"There are many cats.\");\n\t\t});\n\n\t\tdescribe(\"e2e\", async () => {\n\t\t\t// The compiled output needs to be bundled into one file to be dynamically imported.\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t);\n\n\t\t\t// test is a direct result of a bug\n\t\t\ttest(\"locales should include locales with a hyphen\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.locales).toContain(\"en-US\");\n\t\t\t});\n\n\t\t\ttest(\"should set the baseLocale as default getLocale value\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.getLocale()).toBe(runtime.baseLocale);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message for the current locale\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tconsole.log(m);\n\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteGetLocale() works\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteGetLocale(() => locale);\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\tlocale = \"de\";\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteSetLocale() works\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteSetLocale((newLocale: any) => {\n\t\t\t\t\tlocale = newLocale;\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(locale).toBe(\"de\");\n\t\t\t});\n\n\t\t\ttest.skip(\"defining onSetLocale should be possible and should be called when the locale changes\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tconst mockOnSetLocale = vi.fn().mockImplementation(() => {});\n\t\t\t\truntime.onSetLocale((locale: any) => {\n\t\t\t\t\tmockOnSetLocale(locale);\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"de\");\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"en\");\n\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenCalledTimes(2);\n\t\t\t});\n\n\t\t\ttest.skip(\"Calling onSetLocale() multiple times should override the previous callback\", async () => {\n\t\t\t\tconst cb1 = vi.fn().mockImplementation(() => {});\n\t\t\t\tconst cb2 = vi.fn().mockImplementation(() => {});\n\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\truntime.onSetLocale(cb1);\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\n\t\t\t\truntime.onSetLocale(cb2);\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(cb2).toHaveBeenCalledTimes(1);\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message if a locale is set in the message options\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\t// set the language tag to de to make sure that the message options override the runtime language tag\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t\texpect(m.sad_penguin_bundle(undefined, { locale: \"en\" })).toBe(\n\t\t\t\t\t\"A simple message.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with literal units and locale overrides\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_literal({ duration: -1 })).toBe(\n\t\t\t\t\t\"Updated gestern.\"\n\t\t\t\t);\n\t\t\t\texpect(\n\t\t\t\t\tm.relative_time_literal({ duration: -1 }, { locale: \"en\" })\n\t\t\t\t).toBe(\"Updated yesterday.\");\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with dynamic units\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: -3, unit: \"hour\" })).toBe(\n\t\t\t\t\t\"Updated 3 hr. ago.\"\n\t\t\t\t);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: 2, unit: \"weeks\" })).toBe(\n\t\t\t\t\t\"Updated in 2 Wochen.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"runtime.isLocale should only return `true` if a locale is passed to it\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tfor (const tag of runtime.locales) {\n\t\t\t\t\texpect(runtime.isLocale(tag)).toBe(true);\n\t\t\t\t}\n\n\t\t\t\texpect(runtime.isLocale(\"\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"pl\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"--\")).toBe(false);\n\t\t\t});\n\n\t\t\ttest(\"falls back to base locale\", async () => {\n\t\t\t\tconst settings = { locales: [\"en\", \"de\", \"en-US\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\t\tid: \"missingInGerman\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers work\", async () => {\n\t\t\t\tconst settings = { locales: [\"en\", \"de\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\t\tid: \"$502.23-hello_world\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"$502.23-hello_world\"]()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"falls back to parent locale if message doesn't exist\", async () => {\n\t\t\t\tconst settings = { locales: [\"en\", \"en-US\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\t\tid: \"exists_in_both\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en-US\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: \"A simple message for Americans.\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\t\tid: \"missing_in_en_US\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Fallback message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.exists_in_both()).toBe(\"A simple message for Americans.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missing_in_en_US()).toBe(\"Fallback message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers\", async () => {\n\t\t\t\tconst settings = { locales: [\"en\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\t\tid: \"happy🍌\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"happy🍌\"]()).toBe(\"Hello\");\n\t\t\t});\n\t\t});\n\n\t\ttest(\"relativetime dynamic unit casts generated options without narrowing public inputs\", () => {\n\t\t\tconst relativeTimeDynamicFile =\n\t\t\t\tcompilerOptions.outputStructure === \"locale-modules\"\n\t\t\t\t\t? \"messages/en.js\"\n\t\t\t\t\t: \"messages/relative_time_dynamic.js\";\n\n\t\t\texpect(output).toHaveProperty(relativeTimeDynamicFile);\n\t\t\tconst relativeTimeDynamicModule = output[relativeTimeDynamicFile]!;\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t'unit: /** @type {import(\"../registry.js\").RelativeTimeFormatUnit} */ (i?.unit)'\n\t\t\t);\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t\"{ duration: NonNullable<unknown>, unit: NonNullable<unknown> }\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"case sensitivity handling for bundle IDs\", async () => {\n\t\t\tconst settings = { locales: [\"en\"], baseLocale: \"en\" };\n\tconst bundles: BundleNested[] = [];\n\n\t\t\t// Create two bundles with the same name but different case\n\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\tid: \"Helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from uppercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tbundles.push(createBundleNested({\n\t\t\t\t\tid: \"helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from lowercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({ bundles, settings, compilerOptions });\n\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\texport { helloworld, Helloworld } from \"./paraglide/messages.js\"`\n\t\t\t);\n\n\t\t\tconst imported = await importCode(code);\n\n\t\t\t// Both message functions should be available\n\t\t\texpect(imported.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\n\t\t\t// They should also be available through the m namespace\n\t\t\texpect(imported.m.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.m.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\t\t});\n\n\t\t// whatever the strictest users use, this is the ultimate nothing gets stricter than this\n\t\t// (to avoid developers opening issues \"i get a ts warning in my code\")\n\t\tconst superStrictRuleOutAnyErrorTsSettings: ProjectOptions[\"compilerOptions\"] =\n\t\t\t{\n\t\t\t\toutDir: \"dist\",\n\t\t\t\tdeclaration: true,\n\t\t\t\tallowJs: true,\n\t\t\t\tcheckJs: true,\n\t\t\t\tnoImplicitAny: true,\n\t\t\t\tnoUnusedLocals: true,\n\t\t\t\tnoUnusedParameters: true,\n\t\t\t\tnoImplicitReturns: true,\n\t\t\t\tnoImplicitThis: true,\n\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t};\n\n\t\ttest(\"./messages.js types\", async () => {\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n import * as m from \"./messages.js\"\n\n // --------- MESSAGES ---------\n\n // the return value of a message should be a string\n m.insane_cats({ name: \"John\", count: 5 }) satisfies string\n \n // @ts-expect-error - missing all params\n m.insane_cats()\n \n // @ts-expect-error - one param missing\n m.insane_cats({ name: \"John\" })\n\n // a message without params shouldn't require params\n m.sad_penguin_bundle() satisfies string\n\n // dynamic relativetime unit inputs stay consistent with other formatter inputs\n m.relative_time_literal({ duration: -1 }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"not-a-relative-time-unit\" }) satisfies string\n\n\t\t// --------- MATCH TYPE INFERENCE ---------\n\t\t// known match values should be accepted\n\t\tm.auth_password_error({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error({ type: \"empty\" }) satisfies string\n\t\tm.auth_password_error({ type: \"min_length\" }) satisfies string\n\t\tm.auth_password_error({ type: \"secure\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value\n\t\tm.auth_password_error({ type: \"typo\" })\n\n\t\t// quoted keys should still get literal unions\n\t\tm.error_with_dash({ \"error-type\": \"network\" }) satisfies string\n\t\tm.error_with_dash({ \"error-type\": \"timeout\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value for quoted key\n\t\tm.error_with_dash({ \"error-type\": \"offline\" })\n\n\t\t// catchall should widen match value typing\n\t\tm.auth_password_error_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// multiple match keys should each get literal unions\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"ready\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"empty\", status: \"done\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"secure\", status: \"failed\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid type literal\n\t\tm.multi_key_status_type({ type: \"typo\", status: \"ready\" })\n\n\t\t// @ts-expect-error - invalid status literal\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"pending\" })\n\n\t\t// numeric matches should accept both number and string forms\n\t\tm.numeric_input_match({ input: 1 }) satisfies string\n\t\tm.numeric_input_match({ input: 2 }) satisfies string\n\t\tm.numeric_input_match({ input: \"1\" }) satisfies string\n\t\tm.numeric_input_match({ input: \"2\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid numeric literal\n\t\tm.numeric_input_match({ input: 3 })\n\n\t\t// @ts-expect-error - invalid string literal\n\t\tm.numeric_input_match({ input: \"3\" })\n\n\t\t// @ts-expect-error - no loose boolean coercion\n\t\tm.numeric_input_match({ input: true })\n\n\t\t// empty matches should widen to NonNullable<unknown>\n\t\tm.empty_matches_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.empty_matches_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// --------- MESSAGE OPTIONS ---------\n\t\t// the locale option should be optional\n\t\tm.sad_penguin_bundle({}, {}) satisfies string\n\n\t\t// the locale option should be allowed\n\t\tm.sad_penguin_bundle({}, { locale: \"en\" }) satisfies string\n\n\t\t// the locale option must be a valid language tag\n\t\t// @ts-expect-error - invalid language tag\n\t\tm.sad_penguin_bundle({}, { locale: \"---\" })\n `\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\tconst text = d.messageText.toString();\n\t\t\t\treturn (\n\t\t\t\t\t!text.includes(\"Cannot find module 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find module 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t\t\t);\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"./messages.js types (single locale should not emit TS6133)\", async () => {\n\t\t\tconst singleLocaleProjectSettings = { locales: [\"en\"], baseLocale: \"en\" };\n\tconst singleLocaleProjectBundles: BundleNested[] = [];\n\n\t\t\tsingleLocaleProjectBundles.push(createBundleNested({\n\t\t\t\t\tid: \"single_locale_message\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst singleLocaleOutput = await compileProject({ bundles: singleLocaleProjectBundles, settings: singleLocaleProjectSettings,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(singleLocaleOutput)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`import { single_locale_message } from \"./messages.js\"; single_locale_message();`\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\tconst text = d.messageText.toString();\n\t\t\t\treturn (\n\t\t\t\t\t!text.includes(\"Cannot find module 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find module 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst ts6133LocaleDiagnostics = diagnostics.filter((d) => {\n\t\t\t\treturn (\n\t\t\t\t\td.code === 6133 &&\n\t\t\t\t\td.messageText\n\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t.includes(\"'locale' is declared but its value is never read\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\texpect(ts6133LocaleDiagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#625: number formatter digit options should pass checkJs\", async () => {\n\t\t\tconst projectWithNumberOptionsSettings = {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\"],\n\t\t\t};\n\t\t\tconst projectWithNumberOptionsBundles: BundleNested[] = [];\n\n\t\t\tprojectWithNumberOptionsBundles.push(createBundleNested({\n\t\t\t\t\tid: \"formatted_percentage\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"value\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"minimumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"%\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({ bundles: projectWithNumberOptionsBundles, settings: projectWithNumberOptionsSettings,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\tconst text = d.messageText.toString();\n\t\t\t\treturn (\n\t\t\t\t\t!text.includes(\"Cannot find module 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find module 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#694: pattern-level annotations compile to registry calls and pass checkJs\", async () => {\n\t\t\tconst projectWithPatternAnnotationSettings = {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\"],\n\t\t\t};\n\t\t\tconst projectWithPatternAnnotationBundles: BundleNested[] = [];\n\n\t\t\tprojectWithPatternAnnotationBundles.push(createBundleNested({\n\t\t\t\t\tid: \"views\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"count\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \" views\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({ bundles: projectWithPatternAnnotationBundles, settings: projectWithPatternAnnotationSettings,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\texpect(Object.values(output).join(\"\\n\")).toContain(\n\t\t\t\t'registry.number(\"en\", i?.count, { maximumFractionDigits: 1 })'\n\t\t\t);\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\tconst text = d.messageText.toString();\n\t\t\t\treturn (\n\t\t\t\t\t!text.includes(\"Cannot find module 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find module 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"relativetime formatter options should pass checkJs\", async () => {\n\t\t\tconst projectWithRelativeTimeOptionsSettings = {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\"],\n\t\t\t};\n\t\t\tconst projectWithRelativeTimeOptionsBundles: BundleNested[] = [];\n\n\t\t\tprojectWithRelativeTimeOptionsBundles.push(createBundleNested({\n\t\t\t\t\tid: \"formatted_relative_time\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"duration\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"style\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"short\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({ bundles: projectWithRelativeTimeOptionsBundles, settings: projectWithRelativeTimeOptionsSettings,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\tconst text = d.messageText.toString();\n\t\t\t\treturn (\n\t\t\t\t\t!text.includes(\"Cannot find module 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find module 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'node:async_hooks'\") &&\n\t\t\t\t\t!text.includes(\"Cannot find name 'URLPattern'\") &&\n\t\t\t\t\t!text.includes(\"Type 'string' is not assignable to type\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\t}\n);\n\nasync function bundleCode(output: Record<string, string>, file: string) {\n\toutput[\"runtime.js\"] = output[\"runtime.js\"]!.replace(\n\t\t'const { AsyncLocalStorage } = await import(\"node:async_hooks\");',\n\t\t\"const AsyncLocalStorage = class {};\"\n\t);\n\n\tconst bundle = await rolldown({\n\t\tinput: [\"main.js\"],\n\t\tplugins: [\n\t\t\t// @ts-expect-error - rollup types are not up to date\n\t\t\tvirtual({\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(output).map(([fileName, code]) => [\n\t\t\t\t\t\t\"paraglide/\" + fileName,\n\t\t\t\t\t\tcode,\n\t\t\t\t\t])\n\t\t\t\t),\n\t\t\t\t\"main.js\": file,\n\t\t\t}),\n\t\t],\n\t});\n\tconst compiled = await bundle.generate({ format: \"esm\" });\n\tconst code = compiled.output[0].code;\n\treturn code;\n}\n\nasync function importCode(code: string) {\n\t// The random comment ensures that each code is a unique module\n\t// and state is not shared between imports\n\tconst randomComment = `// ${Math.random()}`;\n\tconst codeWithComment = `${randomComment}\\n${code}`;\n\treturn await import(\n\t\t`data:application/javascript;base64,${Buffer.from(codeWithComment, \"utf8\").toString(\"base64\")}`\n\t);\n}\n\nconst settings = {\n\tbaseLocale: \"en\",\n\tlocales: [\"en\", \"de\", \"en-US\"],\n};\nconst bundles: BundleNested[] = [\n\tcreateBundleNested({\n\t\tid: \"sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"A simple message.\" }] }],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Eine einfache Nachricht.\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"Sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Capital Sad penguin\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Grossgeschriebenes Sad penguin\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"depressed_dog\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_en\",\n\t\t\t\tbundleId: \"depressed_dog\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_en_variant_one\",\n\t\t\t\t\t\tmessageId: \"depressed_dog_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Good morning \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_de\",\n\t\t\t\tbundleId: \"depressed_dog\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_de_variant_one\",\n\t\t\t\t\t\tmessageId: \"depressed_dog_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Guten Morgen \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"insane_cats\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"count\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"insane_cats_en\",\n\t\t\t\tbundleId: \"insane_cats\",\n\t\t\t\tlocale: \"en\",\n\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_en_variant_one\",\n\t\t\t\t\t\tmessageId: \"insane_cats_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! You have \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" messages.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"insane_cats_de\",\n\t\t\t\tbundleId: \"insane_cats\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_de_variant_one\",\n\t\t\t\t\t\tmessageId: \"insane_cats_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hallo \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! Du hast \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" Nachrichten.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\tcreateBundleNested({\n\t\tid: \"relative_time_literal\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{ name: \"unit\", value: { type: \"literal\", value: \"day\" } },\n\t\t\t\t\t\t\t{ name: \"numeric\", value: { type: \"literal\", value: \"auto\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"relative_time_dynamic\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"unit\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"style\", value: { type: \"literal\", value: \"short\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"auth_password_error\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_en\",\n\t\t\t\tbundleId: \"auth_password_error\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_invalid\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_empty\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"empty\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"You must provide a password\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_min\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"type\",\n\t\t\t\t\t\t\t\tvalue: \"min_length\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_secure\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"secure\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"error_with_dash\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"error-type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"error_with_dash_en\",\n\t\t\t\tbundleId: \"error_with_dash\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_network\",\n\t\t\t\t\t\tmessageId: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"error-type\", value: \"network\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Network error\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_timeout\",\n\t\t\t\t\t\tmessageId: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"error-type\",\n\t\t\t\t\t\t\t\tvalue: \"timeout\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Timeout error\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"auth_password_error_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_catchall_en\",\n\t\t\t\tbundleId: \"auth_password_error_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_catchall\",\n\t\t\t\t\t\tmessageId: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"type\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Unknown password error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"multi_key_status_type\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"status\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"multi_key_status_type_en\",\n\t\t\t\tbundleId: \"multi_key_status_type\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_ready_invalid\",\n\t\t\t\t\t\tmessageId: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"invalid\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"ready\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Ready invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_done_empty\",\n\t\t\t\t\t\tmessageId: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"empty\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"done\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Done empty\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_failed_secure\",\n\t\t\t\t\t\tmessageId: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"secure\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"failed\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Failed secure\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"empty_matches_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"empty_matches_catchall_en\",\n\t\t\t\tbundleId: \"empty_matches_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessageId: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_any\",\n\t\t\t\t\t\tmessageId: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Any\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"numeric_input_match\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"input\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"numeric_input_match_en\",\n\t\t\t\tbundleId: \"numeric_input_match\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_1\",\n\t\t\t\t\t\tmessageId: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"1\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 1\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_2\",\n\t\t\t\t\t\tmessageId: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"2\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.bench.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.bench.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { bench } from "vitest";
4
+ import { memfs } from "memfs";
5
+ import { compile as compileLocal } from "./compile.js";
6
+ import { compile as compileBaseline } from "@inlang/paraglide-js-baseline";
7
+ import { createTestFsWithMessages } from "./test-helpers.js";
8
+ const require = createRequire(import.meta.url);
9
+ function createMockMessages(numMessages, locale) {
10
+ return Object.fromEntries(Array.from({ length: numMessages }, (_, i) => [
11
+ `message_${i}`,
12
+ `Hello world {username} (${locale})`,
13
+ ]));
14
+ }
15
+ function createLocales(count) {
16
+ return Array.from({ length: count }, (_, i) => i === 0 ? "en" : `l${String(i).padStart(2, "0")}`);
17
+ }
18
+ function createBaselineProjectFs(numMessages, locales) {
19
+ const pluginPath = require.resolve("@inlang/plugin-message-format");
20
+ const pluginSource = readFileSync(pluginPath, "utf8");
21
+ const files = {
22
+ "/plugin.js": pluginSource,
23
+ "/project.inlang/settings.json": JSON.stringify({
24
+ baseLocale: locales[0],
25
+ locales,
26
+ modules: ["/plugin.js"],
27
+ "plugin.inlang.messageFormat": {
28
+ pathPattern: "/{locale}.json",
29
+ },
30
+ }),
31
+ };
32
+ for (const locale of locales) {
33
+ files[`/${locale}.json`] = JSON.stringify(createMockMessages(numMessages, locale));
34
+ }
35
+ return memfs(files).fs;
36
+ }
37
+ function createLocalMessageFs(numMessages, locales) {
38
+ return createTestFsWithMessages({
39
+ messages: Object.fromEntries(locales.map((locale) => [
40
+ locale,
41
+ createMockMessages(numMessages, locale),
42
+ ])),
43
+ pathPattern: "/{locale}.json",
44
+ });
45
+ }
46
+ const SCALES = [
47
+ { messages: 1_000, locales: 1, compareBaseline: true },
48
+ { messages: 10_000, locales: 10, compareBaseline: false },
49
+ ];
50
+ for (const { messages, locales: localeCount, compareBaseline } of SCALES) {
51
+ const locales = createLocales(localeCount);
52
+ const label = `${messages} messages × ${localeCount} locales`;
53
+ // Fewer samples at the large scale so the suite stays practical.
54
+ const time = localeCount === 1 ? 1500 : 3000;
55
+ bench(`local compile (${label}, emitFiles: true)`, async () => {
56
+ const fs = createLocalMessageFs(messages, locales);
57
+ await compileLocal({
58
+ messages: "/{locale}.json",
59
+ locales,
60
+ baseLocale: locales[0],
61
+ outdir: `/output-local-${messages}-${localeCount}`,
62
+ fs,
63
+ });
64
+ }, { time });
65
+ bench(`local compile (${label}, emitFiles: false / virtual)`, async () => {
66
+ const fs = createLocalMessageFs(messages, locales);
67
+ await compileLocal({
68
+ messages: "/{locale}.json",
69
+ locales,
70
+ baseLocale: locales[0],
71
+ outdir: `/output-virtual-${messages}-${localeCount}`,
72
+ emitFiles: false,
73
+ fs,
74
+ });
75
+ }, { time });
76
+ // Upstream inlang SDK baseline is ~20s/iter at 10k×10 — keep it only at
77
+ // the small scale where the comparison is still practical.
78
+ if (compareBaseline) {
79
+ bench(`published @inlang/paraglide-js@2.23.1 (${label}, inlang SDK)`, async () => {
80
+ const fs = createBaselineProjectFs(messages, locales);
81
+ await compileBaseline({
82
+ project: "/project.inlang",
83
+ outdir: `/output-baseline-${messages}-${localeCount}`,
84
+ fs,
85
+ });
86
+ }, { time });
87
+ }
88
+ }
89
+ //# sourceMappingURL=compile.bench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.bench.js","sourceRoot":"","sources":["../../src/compiler/compile.bench.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { bench } from \"vitest\";\nimport { memfs } from \"memfs\";\nimport { compile as compileLocal } from \"./compile.js\";\nimport { compile as compileBaseline } from \"@inlang/paraglide-js-baseline\";\nimport { createTestFsWithMessages } from \"./test-helpers.js\";\n\nconst require = createRequire(import.meta.url);\n\nfunction createMockMessages(numMessages: number, locale: string) {\n\treturn Object.fromEntries(\n\t\tArray.from({ length: numMessages }, (_, i) => [\n\t\t\t`message_${i}`,\n\t\t\t`Hello world {username} (${locale})`,\n\t\t])\n\t);\n}\n\nfunction createLocales(count: number): string[] {\n\treturn Array.from({ length: count }, (_, i) =>\n\t\ti === 0 ? \"en\" : `l${String(i).padStart(2, \"0\")}`\n\t);\n}\n\nfunction createBaselineProjectFs(numMessages: number, locales: string[]) {\n\tconst pluginPath = require.resolve(\"@inlang/plugin-message-format\");\n\tconst pluginSource = readFileSync(pluginPath, \"utf8\");\n\tconst files: Record<string, string> = {\n\t\t\"/plugin.js\": pluginSource,\n\t\t\"/project.inlang/settings.json\": JSON.stringify({\n\t\t\tbaseLocale: locales[0],\n\t\t\tlocales,\n\t\t\tmodules: [\"/plugin.js\"],\n\t\t\t\"plugin.inlang.messageFormat\": {\n\t\t\t\tpathPattern: \"/{locale}.json\",\n\t\t\t},\n\t\t}),\n\t};\n\tfor (const locale of locales) {\n\t\tfiles[`/${locale}.json`] = JSON.stringify(\n\t\t\tcreateMockMessages(numMessages, locale)\n\t\t);\n\t}\n\n\treturn memfs(files).fs as unknown as typeof import(\"node:fs\");\n}\n\nfunction createLocalMessageFs(numMessages: number, locales: string[]) {\n\treturn createTestFsWithMessages({\n\t\tmessages: Object.fromEntries(\n\t\t\tlocales.map((locale) => [\n\t\t\t\tlocale,\n\t\t\t\tcreateMockMessages(numMessages, locale),\n\t\t\t])\n\t\t),\n\t\tpathPattern: \"/{locale}.json\",\n\t});\n}\n\nconst SCALES = [\n\t{ messages: 1_000, locales: 1, compareBaseline: true },\n\t{ messages: 10_000, locales: 10, compareBaseline: false },\n] as const;\n\nfor (const { messages, locales: localeCount, compareBaseline } of SCALES) {\n\tconst locales = createLocales(localeCount);\n\tconst label = `${messages} messages × ${localeCount} locales`;\n\t// Fewer samples at the large scale so the suite stays practical.\n\tconst time = localeCount === 1 ? 1500 : 3000;\n\n\tbench(\n\t\t`local compile (${label}, emitFiles: true)`,\n\t\tasync () => {\n\t\t\tconst fs = createLocalMessageFs(messages, locales);\n\n\t\t\tawait compileLocal({\n\t\t\t\tmessages: \"/{locale}.json\",\n\t\t\t\tlocales,\n\t\t\t\tbaseLocale: locales[0]!,\n\t\t\t\toutdir: `/output-local-${messages}-${localeCount}`,\n\t\t\t\tfs,\n\t\t\t});\n\t\t},\n\t\t{ time }\n\t);\n\n\tbench(\n\t\t`local compile (${label}, emitFiles: false / virtual)`,\n\t\tasync () => {\n\t\t\tconst fs = createLocalMessageFs(messages, locales);\n\n\t\t\tawait compileLocal({\n\t\t\t\tmessages: \"/{locale}.json\",\n\t\t\t\tlocales,\n\t\t\t\tbaseLocale: locales[0]!,\n\t\t\t\toutdir: `/output-virtual-${messages}-${localeCount}`,\n\t\t\t\temitFiles: false,\n\t\t\t\tfs,\n\t\t\t});\n\t\t},\n\t\t{ time }\n\t);\n\n\t// Upstream inlang SDK baseline is ~20s/iter at 10k×10 — keep it only at\n\t// the small scale where the comparison is still practical.\n\tif (compareBaseline) {\n\t\tbench(\n\t\t\t`published @inlang/paraglide-js@2.23.1 (${label}, inlang SDK)`,\n\t\t\tasync () => {\n\t\t\t\tconst fs = createBaselineProjectFs(messages, locales);\n\n\t\t\t\tawait compileBaseline({\n\t\t\t\t\tproject: \"/project.inlang\",\n\t\t\t\t\toutdir: `/output-baseline-${messages}-${localeCount}`,\n\t\t\t\t\tfs,\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ time }\n\t\t);\n\t}\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { type CompilerOptions } from "./compiler-options.js";
2
+ export type CompilationResult = {
3
+ outputHashes: Record<string, string> | undefined;
4
+ /** Full compiled output (relative paths), before emit filtering. */
5
+ output: Record<string, string>;
6
+ };
7
+ /**
8
+ * Loads message files, compiles them, and writes the output to disk.
9
+ *
10
+ * This is the main function to use when you want to compile a project.
11
+ * For programmatic control over loading or output, use `loadMessages()` and
12
+ * `compileProject()` instead.
13
+ *
14
+ * @example
15
+ * await compile({
16
+ * messages: './messages/{locale}.json',
17
+ * locales: ['en', 'de'],
18
+ * baseLocale: 'en',
19
+ * outdir: 'path/to/output',
20
+ * })
21
+ */
22
+ export declare function compile(options: CompilerOptions & {
23
+ previousCompilation?: CompilationResult;
24
+ }): Promise<CompilationResult>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,OAAO,CAC5B,OAAO,EAAE,eAAe,GAAG;IAC1B,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;CACxC,GACC,OAAO,CAAC,iBAAiB,CAAC,CAiF5B"}
@@ -0,0 +1,106 @@
1
+ import path from "node:path";
2
+ import { compileProject } from "./compile-project.js";
3
+ import { writeOutput } from "../services/file-handling/write-output.js";
4
+ import { defaultCompilerOptions, } from "./compiler-options.js";
5
+ import { loadMessages } from "../messages/load-messages.js";
6
+ import { filterOutputForEmit, resolveEmitFiles } from "./emit-files.js";
7
+ import { hashOutputContents } from "../services/file-handling/content-hash.js";
8
+ // This is a workaround to prevent multiple compilations from running at the same time.
9
+ // https://github.com/opral/inlang-paraglide-js/issues/320#issuecomment-2596951222
10
+ let compilationInProgress = null;
11
+ /**
12
+ * Loads message files, compiles them, and writes the output to disk.
13
+ *
14
+ * This is the main function to use when you want to compile a project.
15
+ * For programmatic control over loading or output, use `loadMessages()` and
16
+ * `compileProject()` instead.
17
+ *
18
+ * @example
19
+ * await compile({
20
+ * messages: './messages/{locale}.json',
21
+ * locales: ['en', 'de'],
22
+ * baseLocale: 'en',
23
+ * outdir: 'path/to/output',
24
+ * })
25
+ */
26
+ export async function compile(options) {
27
+ const withDefaultOptions = {
28
+ ...defaultCompilerOptions,
29
+ ...options,
30
+ };
31
+ if (compilationInProgress) {
32
+ await compilationInProgress;
33
+ }
34
+ compilationInProgress = (async () => {
35
+ try {
36
+ const fs = withDefaultOptions.fs ?? (await import("node:fs"));
37
+ const absoluteOutdir = path.resolve(process.cwd(), withDefaultOptions.outdir);
38
+ const { bundles, settings } = await loadMessages({
39
+ messages: withDefaultOptions.messages,
40
+ locales: withDefaultOptions.locales,
41
+ baseLocale: withDefaultOptions.baseLocale,
42
+ fs,
43
+ });
44
+ const output = await compileProject({
45
+ bundles,
46
+ settings,
47
+ sourceLabel: withDefaultOptions.messages,
48
+ compilerOptions: withDefaultOptions,
49
+ });
50
+ const emitFiles = resolveEmitFiles(withDefaultOptions);
51
+ const outputToWrite = filterOutputForEmit(output, emitFiles);
52
+ // Full emit: one hash pass via writeOutput (same as pre-virtual path).
53
+ // Partial/virtual emit: hash the full tree once for cache identity, and
54
+ // only write the filtered subset without deleting leftover JS.
55
+ if (emitFiles === true) {
56
+ const outputHashes = await writeOutput({
57
+ directory: absoluteOutdir,
58
+ output,
59
+ cleanDirectory: withDefaultOptions.cleanOutdir,
60
+ fs: fs.promises,
61
+ previousOutputHashes: options.previousCompilation?.outputHashes,
62
+ });
63
+ return { outputHashes, output };
64
+ }
65
+ const outputHashes = hashOutputOnly(output, absoluteOutdir);
66
+ if (Object.keys(outputToWrite).length > 0) {
67
+ await writeOutput({
68
+ directory: absoluteOutdir,
69
+ output: outputToWrite,
70
+ cleanDirectory: false,
71
+ fs: fs.promises,
72
+ previousOutputHashes: pickHashes(options.previousCompilation?.outputHashes, Object.keys(outputToWrite)),
73
+ });
74
+ }
75
+ return { outputHashes, output };
76
+ }
77
+ catch (e) {
78
+ // release the lock in case of an error
79
+ compilationInProgress = null;
80
+ throw e;
81
+ }
82
+ })();
83
+ const result = await compilationInProgress;
84
+ compilationInProgress = null;
85
+ return {
86
+ outputHashes: result.outputHashes
87
+ ? { ...result.outputHashes }
88
+ : undefined,
89
+ output: result.output,
90
+ };
91
+ }
92
+ function pickHashes(hashes, keys) {
93
+ if (!hashes)
94
+ return undefined;
95
+ const picked = {};
96
+ for (const key of keys) {
97
+ if (hashes[key] !== undefined) {
98
+ picked[key] = hashes[key];
99
+ }
100
+ }
101
+ return picked;
102
+ }
103
+ function hashOutputOnly(output, outputDirectory) {
104
+ return hashOutputContents(output, (filePath, fileContent) => fileContent + path.resolve(outputDirectory, filePath));
105
+ }
106
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compiler/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { compileProject } from \"./compile-project.js\";\nimport { writeOutput } from \"../services/file-handling/write-output.js\";\nimport {\n\tdefaultCompilerOptions,\n\ttype CompilerOptions,\n} from \"./compiler-options.js\";\nimport { loadMessages } from \"../messages/load-messages.js\";\nimport { filterOutputForEmit, resolveEmitFiles } from \"./emit-files.js\";\nimport { hashOutputContents } from \"../services/file-handling/content-hash.js\";\n\n// This is a workaround to prevent multiple compilations from running at the same time.\n// https://github.com/opral/inlang-paraglide-js/issues/320#issuecomment-2596951222\nlet compilationInProgress: Promise<CompilationResult> | null = null;\n\nexport type CompilationResult = {\n\toutputHashes: Record<string, string> | undefined;\n\t/** Full compiled output (relative paths), before emit filtering. */\n\toutput: Record<string, string>;\n};\n\n/**\n * Loads message files, compiles them, and writes the output to disk.\n *\n * This is the main function to use when you want to compile a project.\n * For programmatic control over loading or output, use `loadMessages()` and\n * `compileProject()` instead.\n *\n * @example\n * await compile({\n * messages: './messages/{locale}.json',\n * locales: ['en', 'de'],\n * baseLocale: 'en',\n * outdir: 'path/to/output',\n * })\n */\nexport async function compile(\n\toptions: CompilerOptions & {\n\t\tpreviousCompilation?: CompilationResult;\n\t}\n): Promise<CompilationResult> {\n\tconst withDefaultOptions = {\n\t\t...defaultCompilerOptions,\n\t\t...options,\n\t};\n\n\tif (compilationInProgress) {\n\t\tawait compilationInProgress;\n\t}\n\n\tcompilationInProgress = (async () => {\n\t\ttry {\n\t\t\tconst fs = withDefaultOptions.fs ?? (await import(\"node:fs\"));\n\t\t\tconst absoluteOutdir = path.resolve(\n\t\t\t\tprocess.cwd(),\n\t\t\t\twithDefaultOptions.outdir\n\t\t\t);\n\n\t\t\tconst { bundles, settings } = await loadMessages({\n\t\t\t\tmessages: withDefaultOptions.messages,\n\t\t\t\tlocales: withDefaultOptions.locales,\n\t\t\t\tbaseLocale: withDefaultOptions.baseLocale,\n\t\t\t\tfs,\n\t\t\t});\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tbundles,\n\t\t\t\tsettings,\n\t\t\t\tsourceLabel: withDefaultOptions.messages,\n\t\t\t\tcompilerOptions: withDefaultOptions,\n\t\t\t});\n\n\t\t\tconst emitFiles = resolveEmitFiles(withDefaultOptions);\n\t\t\tconst outputToWrite = filterOutputForEmit(output, emitFiles);\n\n\t\t\t// Full emit: one hash pass via writeOutput (same as pre-virtual path).\n\t\t\t// Partial/virtual emit: hash the full tree once for cache identity, and\n\t\t\t// only write the filtered subset without deleting leftover JS.\n\t\t\tif (emitFiles === true) {\n\t\t\t\tconst outputHashes = await writeOutput({\n\t\t\t\t\tdirectory: absoluteOutdir,\n\t\t\t\t\toutput,\n\t\t\t\t\tcleanDirectory: withDefaultOptions.cleanOutdir,\n\t\t\t\t\tfs: fs.promises,\n\t\t\t\t\tpreviousOutputHashes: options.previousCompilation?.outputHashes,\n\t\t\t\t});\n\t\t\t\treturn { outputHashes, output };\n\t\t\t}\n\n\t\t\tconst outputHashes = hashOutputOnly(output, absoluteOutdir);\n\n\t\t\tif (Object.keys(outputToWrite).length > 0) {\n\t\t\t\tawait writeOutput({\n\t\t\t\t\tdirectory: absoluteOutdir,\n\t\t\t\t\toutput: outputToWrite,\n\t\t\t\t\tcleanDirectory: false,\n\t\t\t\t\tfs: fs.promises,\n\t\t\t\t\tpreviousOutputHashes: pickHashes(\n\t\t\t\t\t\toptions.previousCompilation?.outputHashes,\n\t\t\t\t\t\tObject.keys(outputToWrite)\n\t\t\t\t\t),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn { outputHashes, output };\n\t\t} catch (e) {\n\t\t\t// release the lock in case of an error\n\t\t\tcompilationInProgress = null;\n\t\t\tthrow e;\n\t\t}\n\t})();\n\n\tconst result = await compilationInProgress;\n\tcompilationInProgress = null;\n\n\treturn {\n\t\toutputHashes: result.outputHashes\n\t\t\t? { ...result.outputHashes }\n\t\t\t: undefined,\n\t\toutput: result.output,\n\t};\n}\n\nfunction pickHashes(\n\thashes: Record<string, string> | undefined,\n\tkeys: string[]\n): Record<string, string> | undefined {\n\tif (!hashes) return undefined;\n\tconst picked: Record<string, string> = {};\n\tfor (const key of keys) {\n\t\tif (hashes[key] !== undefined) {\n\t\t\tpicked[key] = hashes[key]!;\n\t\t}\n\t}\n\treturn picked;\n}\n\nfunction hashOutputOnly(\n\toutput: Record<string, string>,\n\toutputDirectory: string\n): Record<string, string> {\n\treturn hashOutputContents(\n\t\toutput,\n\t\t(filePath, fileContent) =>\n\t\t\tfileContent + path.resolve(outputDirectory, filePath)\n\t);\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.test.d.ts","sourceRoot":"","sources":["../../src/compiler/compile.test.ts"],"names":[],"mappings":""}