@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.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/bin/run.js +4 -0
- package/dist/bundler-plugins/esbuild.d.ts +1 -0
- package/dist/bundler-plugins/esbuild.d.ts.map +1 -0
- package/dist/bundler-plugins/esbuild.js +4 -0
- package/dist/bundler-plugins/esbuild.js.map +1 -0
- package/dist/bundler-plugins/index.d.ts +6 -0
- package/dist/bundler-plugins/index.d.ts.map +1 -0
- package/dist/bundler-plugins/index.js +7 -0
- package/dist/bundler-plugins/index.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.d.ts +19 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.js +85 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.d.ts +2 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.js +53 -0
- package/dist/bundler-plugins/lazy-modules/scan-message-keys.test.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/ssr.d.ts +31 -0
- package/dist/bundler-plugins/lazy-modules/ssr.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/ssr.js +42 -0
- package/dist/bundler-plugins/lazy-modules/ssr.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/ssr.test.d.ts +2 -0
- package/dist/bundler-plugins/lazy-modules/ssr.test.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/ssr.test.js +48 -0
- package/dist/bundler-plugins/lazy-modules/ssr.test.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/virtual-ids.d.ts +7 -0
- package/dist/bundler-plugins/lazy-modules/virtual-ids.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/virtual-ids.js +30 -0
- package/dist/bundler-plugins/lazy-modules/virtual-ids.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/virtual.d.ts +86 -0
- package/dist/bundler-plugins/lazy-modules/virtual.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/virtual.js +2 -0
- package/dist/bundler-plugins/lazy-modules/virtual.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.d.ts +18 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.js +328 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.js.map +1 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.test.d.ts +2 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.test.d.ts.map +1 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.test.js +45 -0
- package/dist/bundler-plugins/lazy-modules/vite-plugin.test.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/constants.d.ts +2 -0
- package/dist/bundler-plugins/per-locale-build/constants.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/constants.js +3 -0
- package/dist/bundler-plugins/per-locale-build/constants.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/index.d.ts +6 -0
- package/dist/bundler-plugins/per-locale-build/index.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/index.js +43 -0
- package/dist/bundler-plugins/per-locale-build/index.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/locale-id.d.ts +8 -0
- package/dist/bundler-plugins/per-locale-build/locale-id.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/locale-id.js +13 -0
- package/dist/bundler-plugins/per-locale-build/locale-id.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/types.d.ts +4 -0
- package/dist/bundler-plugins/per-locale-build/types.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/types.js +2 -0
- package/dist/bundler-plugins/per-locale-build/types.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.d.ts +51 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.js +250 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.test.d.ts +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.test.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.test.js +250 -0
- package/dist/bundler-plugins/per-locale-build/vite-environments.test.js.map +1 -0
- package/dist/bundler-plugins/plugin-core.d.ts +74 -0
- package/dist/bundler-plugins/plugin-core.d.ts.map +1 -0
- package/dist/bundler-plugins/plugin-core.js +292 -0
- package/dist/bundler-plugins/plugin-core.js.map +1 -0
- package/dist/bundler-plugins/rolldown.d.ts +10 -0
- package/dist/bundler-plugins/rolldown.d.ts.map +1 -0
- package/dist/bundler-plugins/rolldown.js +36 -0
- package/dist/bundler-plugins/rolldown.js.map +1 -0
- package/dist/bundler-plugins/rolldown.test.d.ts +1 -0
- package/dist/bundler-plugins/rolldown.test.d.ts.map +1 -0
- package/dist/bundler-plugins/rolldown.test.js +72 -0
- package/dist/bundler-plugins/rolldown.test.js.map +1 -0
- package/dist/bundler-plugins/rollup.d.ts +1 -0
- package/dist/bundler-plugins/rollup.d.ts.map +1 -0
- package/dist/bundler-plugins/rollup.js +4 -0
- package/dist/bundler-plugins/rollup.js.map +1 -0
- package/dist/bundler-plugins/rspack.d.ts +1 -0
- package/dist/bundler-plugins/rspack.d.ts.map +1 -0
- package/dist/bundler-plugins/rspack.js +4 -0
- package/dist/bundler-plugins/rspack.js.map +1 -0
- package/dist/bundler-plugins/unplugin.d.ts +3 -0
- package/dist/bundler-plugins/unplugin.d.ts.map +1 -0
- package/dist/bundler-plugins/unplugin.js +62 -0
- package/dist/bundler-plugins/unplugin.js.map +1 -0
- package/dist/bundler-plugins/unplugin.test.d.ts +1 -0
- package/dist/bundler-plugins/unplugin.test.d.ts.map +1 -0
- package/dist/bundler-plugins/unplugin.test.js +256 -0
- package/dist/bundler-plugins/unplugin.test.js.map +1 -0
- package/dist/bundler-plugins/virtual-modules.test.d.ts +1 -0
- package/dist/bundler-plugins/virtual-modules.test.d.ts.map +1 -0
- package/dist/bundler-plugins/virtual-modules.test.js +77 -0
- package/dist/bundler-plugins/virtual-modules.test.js.map +1 -0
- package/dist/bundler-plugins/vite.d.ts +17 -0
- package/dist/bundler-plugins/vite.d.ts.map +1 -0
- package/dist/bundler-plugins/vite.js +15 -0
- package/dist/bundler-plugins/vite.js.map +1 -0
- package/dist/bundler-plugins/vite.test.d.ts +1 -0
- package/dist/bundler-plugins/vite.test.d.ts.map +1 -0
- package/dist/bundler-plugins/vite.test.js +61 -0
- package/dist/bundler-plugins/vite.test.js.map +1 -0
- package/dist/bundler-plugins/webpack.d.ts +1 -0
- package/dist/bundler-plugins/webpack.d.ts.map +1 -0
- package/dist/bundler-plugins/webpack.js +4 -0
- package/dist/bundler-plugins/webpack.js.map +1 -0
- package/dist/cli/commands/compile/command.d.ts +2 -0
- package/dist/cli/commands/compile/command.d.ts.map +1 -0
- package/dist/cli/commands/compile/command.js +225 -0
- package/dist/cli/commands/compile/command.js.map +1 -0
- package/dist/cli/commands/compile/command.test.d.ts +1 -0
- package/dist/cli/commands/compile/command.test.d.ts.map +1 -0
- package/dist/cli/commands/compile/command.test.js +69 -0
- package/dist/cli/commands/compile/command.test.js.map +1 -0
- package/dist/cli/commands/init/command.d.ts +2 -0
- package/dist/cli/commands/init/command.d.ts.map +1 -0
- package/dist/cli/commands/init/command.js +90 -0
- package/dist/cli/commands/init/command.js.map +1 -0
- package/dist/cli/defaults.d.ts +11 -0
- package/dist/cli/defaults.d.ts.map +1 -0
- package/dist/cli/defaults.js +13 -0
- package/dist/cli/defaults.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +11 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/steps/add-vite-plugin.d.ts +31 -0
- package/dist/cli/steps/add-vite-plugin.d.ts.map +1 -0
- package/dist/cli/steps/add-vite-plugin.js +65 -0
- package/dist/cli/steps/add-vite-plugin.js.map +1 -0
- package/dist/cli/steps/add-vite-plugin.test.d.ts +1 -0
- package/dist/cli/steps/add-vite-plugin.test.d.ts.map +1 -0
- package/dist/cli/steps/add-vite-plugin.test.js +74 -0
- package/dist/cli/steps/add-vite-plugin.test.js.map +1 -0
- package/dist/cli/steps/check-for-uncomitted-changes.d.ts +5 -0
- package/dist/cli/steps/check-for-uncomitted-changes.d.ts.map +1 -0
- package/dist/cli/steps/check-for-uncomitted-changes.js +37 -0
- package/dist/cli/steps/check-for-uncomitted-changes.js.map +1 -0
- package/dist/cli/steps/detect-bundler.d.ts +10 -0
- package/dist/cli/steps/detect-bundler.d.ts.map +1 -0
- package/dist/cli/steps/detect-bundler.js +22 -0
- package/dist/cli/steps/detect-bundler.js.map +1 -0
- package/dist/cli/steps/detect-bundler.test.d.ts +1 -0
- package/dist/cli/steps/detect-bundler.test.d.ts.map +1 -0
- package/dist/cli/steps/detect-bundler.test.js +29 -0
- package/dist/cli/steps/detect-bundler.test.js.map +1 -0
- package/dist/cli/steps/initialize-messages.d.ts +11 -0
- package/dist/cli/steps/initialize-messages.d.ts.map +1 -0
- package/dist/cli/steps/initialize-messages.js +31 -0
- package/dist/cli/steps/initialize-messages.js.map +1 -0
- package/dist/cli/steps/prompt-for-outdir.d.ts +8 -0
- package/dist/cli/steps/prompt-for-outdir.d.ts.map +1 -0
- package/dist/cli/steps/prompt-for-outdir.js +19 -0
- package/dist/cli/steps/prompt-for-outdir.js.map +1 -0
- package/dist/cli/steps/update-package-json.d.ts +11 -0
- package/dist/cli/steps/update-package-json.d.ts.map +1 -0
- package/dist/cli/steps/update-package-json.js +34 -0
- package/dist/cli/steps/update-package-json.js.map +1 -0
- package/dist/cli/steps/update-ts-config.d.ts +26 -0
- package/dist/cli/steps/update-ts-config.d.ts.map +1 -0
- package/dist/cli/steps/update-ts-config.js +270 -0
- package/dist/cli/steps/update-ts-config.js.map +1 -0
- package/dist/cli/steps/update-ts-config.test.d.ts +1 -0
- package/dist/cli/steps/update-ts-config.test.d.ts.map +1 -0
- package/dist/cli/steps/update-ts-config.test.js +60 -0
- package/dist/cli/steps/update-ts-config.test.js.map +1 -0
- package/dist/cli/utils.d.ts +36 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +20 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/compiler/assert-url-pattern-available.d.ts +7 -0
- package/dist/compiler/assert-url-pattern-available.d.ts.map +1 -0
- package/dist/compiler/assert-url-pattern-available.js +17 -0
- package/dist/compiler/assert-url-pattern-available.js.map +1 -0
- package/dist/compiler/compile-annotation.d.ts +12 -0
- package/dist/compiler/compile-annotation.d.ts.map +1 -0
- package/dist/compiler/compile-annotation.js +136 -0
- package/dist/compiler/compile-annotation.js.map +1 -0
- package/dist/compiler/compile-bundle.d.ts +28 -0
- package/dist/compiler/compile-bundle.d.ts.map +1 -0
- package/dist/compiler/compile-bundle.js +431 -0
- package/dist/compiler/compile-bundle.js.map +1 -0
- package/dist/compiler/compile-bundle.test.d.ts +1 -0
- package/dist/compiler/compile-bundle.test.d.ts.map +1 -0
- package/dist/compiler/compile-bundle.test.js +399 -0
- package/dist/compiler/compile-bundle.test.js.map +1 -0
- package/dist/compiler/compile-local-variable.d.ts +16 -0
- package/dist/compiler/compile-local-variable.d.ts.map +1 -0
- package/dist/compiler/compile-local-variable.js +28 -0
- package/dist/compiler/compile-local-variable.js.map +1 -0
- package/dist/compiler/compile-local-variable.test.d.ts +1 -0
- package/dist/compiler/compile-local-variable.test.d.ts.map +1 -0
- package/dist/compiler/compile-local-variable.test.js +359 -0
- package/dist/compiler/compile-local-variable.test.js.map +1 -0
- package/dist/compiler/compile-message.d.ts +8 -0
- package/dist/compiler/compile-message.d.ts.map +1 -0
- package/dist/compiler/compile-message.js +174 -0
- package/dist/compiler/compile-message.js.map +1 -0
- package/dist/compiler/compile-message.test.d.ts +1 -0
- package/dist/compiler/compile-message.test.d.ts.map +1 -0
- package/dist/compiler/compile-message.test.js +1060 -0
- package/dist/compiler/compile-message.test.js.map +1 -0
- package/dist/compiler/compile-pattern.d.ts +29 -0
- package/dist/compiler/compile-pattern.d.ts.map +1 -0
- package/dist/compiler/compile-pattern.js +143 -0
- package/dist/compiler/compile-pattern.js.map +1 -0
- package/dist/compiler/compile-pattern.test.d.ts +1 -0
- package/dist/compiler/compile-pattern.test.d.ts.map +1 -0
- package/dist/compiler/compile-pattern.test.js +255 -0
- package/dist/compiler/compile-pattern.test.js.map +1 -0
- package/dist/compiler/compile-project.d.ts +21 -0
- package/dist/compiler/compile-project.d.ts.map +1 -0
- package/dist/compiler/compile-project.js +147 -0
- package/dist/compiler/compile-project.js.map +1 -0
- package/dist/compiler/compile-project.test.d.ts +1 -0
- package/dist/compiler/compile-project.test.d.ts.map +1 -0
- package/dist/compiler/compile-project.test.js +1709 -0
- package/dist/compiler/compile-project.test.js.map +1 -0
- package/dist/compiler/compile.bench.d.ts +1 -0
- package/dist/compiler/compile.bench.d.ts.map +1 -0
- package/dist/compiler/compile.bench.js +89 -0
- package/dist/compiler/compile.bench.js.map +1 -0
- package/dist/compiler/compile.d.ts +24 -0
- package/dist/compiler/compile.d.ts.map +1 -0
- package/dist/compiler/compile.js +106 -0
- package/dist/compiler/compile.js.map +1 -0
- package/dist/compiler/compile.test.d.ts +1 -0
- package/dist/compiler/compile.test.d.ts.map +1 -0
- package/dist/compiler/compile.test.js +66 -0
- package/dist/compiler/compile.test.js.map +1 -0
- package/dist/compiler/compiler-options.d.ts +466 -0
- package/dist/compiler/compiler-options.d.ts.map +1 -0
- package/dist/compiler/compiler-options.js +22 -0
- package/dist/compiler/compiler-options.js.map +1 -0
- package/dist/compiler/create-paraglide.d.ts +21 -0
- package/dist/compiler/create-paraglide.d.ts.map +1 -0
- package/dist/compiler/create-paraglide.js +69 -0
- package/dist/compiler/create-paraglide.js.map +1 -0
- package/dist/compiler/create-paraglide.test.d.ts +1 -0
- package/dist/compiler/create-paraglide.test.d.ts.map +1 -0
- package/dist/compiler/create-paraglide.test.js +55 -0
- package/dist/compiler/create-paraglide.test.js.map +1 -0
- package/dist/compiler/create-readme.d.ts +9 -0
- package/dist/compiler/create-readme.d.ts.map +1 -0
- package/dist/compiler/create-readme.js +127 -0
- package/dist/compiler/create-readme.js.map +1 -0
- package/dist/compiler/emit-files.d.ts +15 -0
- package/dist/compiler/emit-files.d.ts.map +1 -0
- package/dist/compiler/emit-files.js +58 -0
- package/dist/compiler/emit-files.js.map +1 -0
- package/dist/compiler/emit-files.test.d.ts +1 -0
- package/dist/compiler/emit-files.test.d.ts.map +1 -0
- package/dist/compiler/emit-files.test.js +43 -0
- package/dist/compiler/emit-files.test.js.map +1 -0
- package/dist/compiler/emit-ts-declarations.d.ts +11 -0
- package/dist/compiler/emit-ts-declarations.d.ts.map +1 -0
- package/dist/compiler/emit-ts-declarations.interop.test.d.ts +1 -0
- package/dist/compiler/emit-ts-declarations.interop.test.d.ts.map +1 -0
- package/dist/compiler/emit-ts-declarations.interop.test.js +33 -0
- package/dist/compiler/emit-ts-declarations.interop.test.js.map +1 -0
- package/dist/compiler/emit-ts-declarations.js +353 -0
- package/dist/compiler/emit-ts-declarations.js.map +1 -0
- package/dist/compiler/emit-ts-declarations.test.d.ts +1 -0
- package/dist/compiler/emit-ts-declarations.test.d.ts.map +1 -0
- package/dist/compiler/emit-ts-declarations.test.js +161 -0
- package/dist/compiler/emit-ts-declarations.test.js.map +1 -0
- package/dist/compiler/index.d.ts +13 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +11 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/jsdoc-types.d.ts +21 -0
- package/dist/compiler/jsdoc-types.d.ts.map +1 -0
- package/dist/compiler/jsdoc-types.js +59 -0
- package/dist/compiler/jsdoc-types.js.map +1 -0
- package/dist/compiler/jsdoc-types.test.d.ts +1 -0
- package/dist/compiler/jsdoc-types.test.d.ts.map +1 -0
- package/dist/compiler/jsdoc-types.test.js +100 -0
- package/dist/compiler/jsdoc-types.test.js.map +1 -0
- package/dist/compiler/lazy-modules/compile-cache.d.ts +37 -0
- package/dist/compiler/lazy-modules/compile-cache.d.ts.map +1 -0
- package/dist/compiler/lazy-modules/compile-cache.js +34 -0
- package/dist/compiler/lazy-modules/compile-cache.js.map +1 -0
- package/dist/compiler/lazy-modules/compile-project.lazy.test.d.ts +2 -0
- package/dist/compiler/lazy-modules/compile-project.lazy.test.d.ts.map +1 -0
- package/dist/compiler/lazy-modules/compile-project.lazy.test.js +65 -0
- package/dist/compiler/lazy-modules/compile-project.lazy.test.js.map +1 -0
- package/dist/compiler/lazy-modules/create-loader.d.ts +18 -0
- package/dist/compiler/lazy-modules/create-loader.d.ts.map +1 -0
- package/dist/compiler/lazy-modules/create-loader.js +182 -0
- package/dist/compiler/lazy-modules/create-loader.js.map +1 -0
- package/dist/compiler/lazy-modules/create-loader.test.d.ts +2 -0
- package/dist/compiler/lazy-modules/create-loader.test.d.ts.map +1 -0
- package/dist/compiler/lazy-modules/create-loader.test.js +82 -0
- package/dist/compiler/lazy-modules/create-loader.test.js.map +1 -0
- package/dist/compiler/lazy-modules/manifest.d.ts +32 -0
- package/dist/compiler/lazy-modules/manifest.d.ts.map +1 -0
- package/dist/compiler/lazy-modules/manifest.js +11 -0
- package/dist/compiler/lazy-modules/manifest.js.map +1 -0
- package/dist/compiler/match-literals.d.ts +2 -0
- package/dist/compiler/match-literals.d.ts.map +1 -0
- package/dist/compiler/match-literals.js +42 -0
- package/dist/compiler/match-literals.js.map +1 -0
- package/dist/compiler/output-structure/lazy-modules.d.ts +27 -0
- package/dist/compiler/output-structure/lazy-modules.d.ts.map +1 -0
- package/dist/compiler/output-structure/lazy-modules.js +157 -0
- package/dist/compiler/output-structure/lazy-modules.js.map +1 -0
- package/dist/compiler/output-structure/lazy-modules.test.d.ts +2 -0
- package/dist/compiler/output-structure/lazy-modules.test.d.ts.map +1 -0
- package/dist/compiler/output-structure/lazy-modules.test.js +128 -0
- package/dist/compiler/output-structure/lazy-modules.test.js.map +1 -0
- package/dist/compiler/output-structure/locale-modules.d.ts +4 -0
- package/dist/compiler/output-structure/locale-modules.d.ts.map +1 -0
- package/dist/compiler/output-structure/locale-modules.js +81 -0
- package/dist/compiler/output-structure/locale-modules.js.map +1 -0
- package/dist/compiler/output-structure/locale-modules.test.d.ts +1 -0
- package/dist/compiler/output-structure/locale-modules.test.d.ts.map +1 -0
- package/dist/compiler/output-structure/locale-modules.test.js +163 -0
- package/dist/compiler/output-structure/locale-modules.test.js.map +1 -0
- package/dist/compiler/output-structure/message-modules.d.ts +4 -0
- package/dist/compiler/output-structure/message-modules.d.ts.map +1 -0
- package/dist/compiler/output-structure/message-modules.js +100 -0
- package/dist/compiler/output-structure/message-modules.js.map +1 -0
- package/dist/compiler/output-structure/message-modules.test.d.ts +1 -0
- package/dist/compiler/output-structure/message-modules.test.d.ts.map +1 -0
- package/dist/compiler/output-structure/message-modules.test.js +148 -0
- package/dist/compiler/output-structure/message-modules.test.js.map +1 -0
- package/dist/compiler/per-locale-build.d.ts +2 -0
- package/dist/compiler/per-locale-build.d.ts.map +1 -0
- package/dist/compiler/per-locale-build.js +3 -0
- package/dist/compiler/per-locale-build.js.map +1 -0
- package/dist/compiler/registry.d.ts +13 -0
- package/dist/compiler/registry.d.ts.map +1 -0
- package/dist/compiler/registry.js +60 -0
- package/dist/compiler/registry.js.map +1 -0
- package/dist/compiler/resolve-tsc-js-path.d.ts +9 -0
- package/dist/compiler/resolve-tsc-js-path.d.ts.map +1 -0
- package/dist/compiler/resolve-tsc-js-path.js +23 -0
- package/dist/compiler/resolve-tsc-js-path.js.map +1 -0
- package/dist/compiler/runtime/check-locale.d.ts +31 -0
- package/dist/compiler/runtime/check-locale.d.ts.map +1 -0
- package/dist/compiler/runtime/check-locale.js +51 -0
- package/dist/compiler/runtime/check-locale.js.map +1 -0
- package/dist/compiler/runtime/check-locale.test.d.ts +1 -0
- package/dist/compiler/runtime/check-locale.test.d.ts.map +1 -0
- package/dist/compiler/runtime/check-locale.test.js +84 -0
- package/dist/compiler/runtime/check-locale.test.js.map +1 -0
- package/dist/compiler/runtime/create-runtime.d.ts +35 -0
- package/dist/compiler/runtime/create-runtime.d.ts.map +1 -0
- package/dist/compiler/runtime/create-runtime.js +196 -0
- package/dist/compiler/runtime/create-runtime.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.d.ts +13 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.js +43 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.test.js +149 -0
- package/dist/compiler/runtime/extract-locale-from-cookie.test.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-header.d.ts +13 -0
- package/dist/compiler/runtime/extract-locale-from-header.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-header.js +45 -0
- package/dist/compiler/runtime/extract-locale-from-header.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-header.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-header.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-header.test.js +55 -0
- package/dist/compiler/runtime/extract-locale-from-header.test.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.d.ts +12 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.js +33 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.test.js +45 -0
- package/dist/compiler/runtime/extract-locale-from-navigator.test.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.d.ts +34 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.js +70 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.test.js +119 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.test.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request.d.ts +41 -0
- package/dist/compiler/runtime/extract-locale-from-request.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request.js +96 -0
- package/dist/compiler/runtime/extract-locale-from-request.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-request.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-request.test.js +351 -0
- package/dist/compiler/runtime/extract-locale-from-request.test.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-url.d.ts +11 -0
- package/dist/compiler/runtime/extract-locale-from-url.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-url.js +68 -0
- package/dist/compiler/runtime/extract-locale-from-url.js.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-url.test.d.ts +1 -0
- package/dist/compiler/runtime/extract-locale-from-url.test.d.ts.map +1 -0
- package/dist/compiler/runtime/extract-locale-from-url.test.js +127 -0
- package/dist/compiler/runtime/extract-locale-from-url.test.js.map +1 -0
- package/dist/compiler/runtime/generate-static-localized-urls.d.ts +44 -0
- package/dist/compiler/runtime/generate-static-localized-urls.d.ts.map +1 -0
- package/dist/compiler/runtime/generate-static-localized-urls.js +133 -0
- package/dist/compiler/runtime/generate-static-localized-urls.js.map +1 -0
- package/dist/compiler/runtime/generate-static-localized-urls.test.d.ts +1 -0
- package/dist/compiler/runtime/generate-static-localized-urls.test.d.ts.map +1 -0
- package/dist/compiler/runtime/generate-static-localized-urls.test.js +159 -0
- package/dist/compiler/runtime/generate-static-localized-urls.test.js.map +1 -0
- package/dist/compiler/runtime/get-locale.d.ts +42 -0
- package/dist/compiler/runtime/get-locale.d.ts.map +1 -0
- package/dist/compiler/runtime/get-locale.js +158 -0
- package/dist/compiler/runtime/get-locale.js.map +1 -0
- package/dist/compiler/runtime/get-locale.test.d.ts +1 -0
- package/dist/compiler/runtime/get-locale.test.d.ts.map +1 -0
- package/dist/compiler/runtime/get-locale.test.js +295 -0
- package/dist/compiler/runtime/get-locale.test.js.map +1 -0
- package/dist/compiler/runtime/get-text-direction.d.ts +15 -0
- package/dist/compiler/runtime/get-text-direction.d.ts.map +1 -0
- package/dist/compiler/runtime/get-text-direction.js +46 -0
- package/dist/compiler/runtime/get-text-direction.js.map +1 -0
- package/dist/compiler/runtime/get-text-direction.test.d.ts +1 -0
- package/dist/compiler/runtime/get-text-direction.test.d.ts.map +1 -0
- package/dist/compiler/runtime/get-text-direction.test.js +40 -0
- package/dist/compiler/runtime/get-text-direction.test.js.map +1 -0
- package/dist/compiler/runtime/get-url-origin.d.ts +19 -0
- package/dist/compiler/runtime/get-url-origin.d.ts.map +1 -0
- package/dist/compiler/runtime/get-url-origin.js +31 -0
- package/dist/compiler/runtime/get-url-origin.js.map +1 -0
- package/dist/compiler/runtime/get-url-origin.test.d.ts +1 -0
- package/dist/compiler/runtime/get-url-origin.test.d.ts.map +1 -0
- package/dist/compiler/runtime/get-url-origin.test.js +18 -0
- package/dist/compiler/runtime/get-url-origin.test.js.map +1 -0
- package/dist/compiler/runtime/host-routing.d.ts +28 -0
- package/dist/compiler/runtime/host-routing.d.ts.map +1 -0
- package/dist/compiler/runtime/host-routing.js +79 -0
- package/dist/compiler/runtime/host-routing.js.map +1 -0
- package/dist/compiler/runtime/host-routing.test.d.ts +1 -0
- package/dist/compiler/runtime/host-routing.test.d.ts.map +1 -0
- package/dist/compiler/runtime/host-routing.test.js +128 -0
- package/dist/compiler/runtime/host-routing.test.js.map +1 -0
- package/dist/compiler/runtime/localize-href.d.ts +84 -0
- package/dist/compiler/runtime/localize-href.d.ts.map +1 -0
- package/dist/compiler/runtime/localize-href.js +115 -0
- package/dist/compiler/runtime/localize-href.js.map +1 -0
- package/dist/compiler/runtime/localize-href.test.d.ts +1 -0
- package/dist/compiler/runtime/localize-href.test.d.ts.map +1 -0
- package/dist/compiler/runtime/localize-href.test.js +139 -0
- package/dist/compiler/runtime/localize-href.test.js.map +1 -0
- package/dist/compiler/runtime/localize-url.d.ts +95 -0
- package/dist/compiler/runtime/localize-url.d.ts.map +1 -0
- package/dist/compiler/runtime/localize-url.js +327 -0
- package/dist/compiler/runtime/localize-url.js.map +1 -0
- package/dist/compiler/runtime/localize-url.test.d.ts +1 -0
- package/dist/compiler/runtime/localize-url.test.d.ts.map +1 -0
- package/dist/compiler/runtime/localize-url.test.js +533 -0
- package/dist/compiler/runtime/localize-url.test.js.map +1 -0
- package/dist/compiler/runtime/route-strategy.d.ts +32 -0
- package/dist/compiler/runtime/route-strategy.d.ts.map +1 -0
- package/dist/compiler/runtime/route-strategy.js +72 -0
- package/dist/compiler/runtime/route-strategy.js.map +1 -0
- package/dist/compiler/runtime/set-locale.d.ts +46 -0
- package/dist/compiler/runtime/set-locale.d.ts.map +1 -0
- package/dist/compiler/runtime/set-locale.js +172 -0
- package/dist/compiler/runtime/set-locale.js.map +1 -0
- package/dist/compiler/runtime/set-locale.test.d.ts +1 -0
- package/dist/compiler/runtime/set-locale.test.d.ts.map +1 -0
- package/dist/compiler/runtime/set-locale.test.js +555 -0
- package/dist/compiler/runtime/set-locale.test.js.map +1 -0
- package/dist/compiler/runtime/should-redirect.d.ts +100 -0
- package/dist/compiler/runtime/should-redirect.d.ts.map +1 -0
- package/dist/compiler/runtime/should-redirect.js +155 -0
- package/dist/compiler/runtime/should-redirect.js.map +1 -0
- package/dist/compiler/runtime/should-redirect.test.d.ts +1 -0
- package/dist/compiler/runtime/should-redirect.test.d.ts.map +1 -0
- package/dist/compiler/runtime/should-redirect.test.js +270 -0
- package/dist/compiler/runtime/should-redirect.test.js.map +1 -0
- package/dist/compiler/runtime/strategy.d.ts +63 -0
- package/dist/compiler/runtime/strategy.d.ts.map +1 -0
- package/dist/compiler/runtime/strategy.js +65 -0
- package/dist/compiler/runtime/strategy.js.map +1 -0
- package/dist/compiler/runtime/strategy.test.d.ts +1 -0
- package/dist/compiler/runtime/strategy.test.d.ts.map +1 -0
- package/dist/compiler/runtime/strategy.test.js +90 -0
- package/dist/compiler/runtime/strategy.test.js.map +1 -0
- package/dist/compiler/runtime/track-message-call.d.ts +5 -0
- package/dist/compiler/runtime/track-message-call.d.ts.map +1 -0
- package/dist/compiler/runtime/track-message-call.js +14 -0
- package/dist/compiler/runtime/track-message-call.js.map +1 -0
- package/dist/compiler/runtime/track-message-call.test.d.ts +1 -0
- package/dist/compiler/runtime/track-message-call.test.d.ts.map +1 -0
- package/dist/compiler/runtime/track-message-call.test.js +22 -0
- package/dist/compiler/runtime/track-message-call.test.js.map +1 -0
- package/dist/compiler/runtime/type-definitions.d.ts +197 -0
- package/dist/compiler/runtime/type-definitions.d.ts.map +1 -0
- package/dist/compiler/runtime/type-definitions.js +150 -0
- package/dist/compiler/runtime/type-definitions.js.map +1 -0
- package/dist/compiler/runtime/type.d.ts +47 -0
- package/dist/compiler/runtime/type.d.ts.map +1 -0
- package/dist/compiler/runtime/type.js +2 -0
- package/dist/compiler/runtime/type.js.map +1 -0
- package/dist/compiler/runtime/type.test.d.ts +1 -0
- package/dist/compiler/runtime/type.test.d.ts.map +1 -0
- package/dist/compiler/runtime/type.test.js +153 -0
- package/dist/compiler/runtime/type.test.js.map +1 -0
- package/dist/compiler/runtime/url-pattern.d.ts +12 -0
- package/dist/compiler/runtime/url-pattern.d.ts.map +1 -0
- package/dist/compiler/runtime/url-pattern.js +35 -0
- package/dist/compiler/runtime/url-pattern.js.map +1 -0
- package/dist/compiler/runtime/variables.d.ts +128 -0
- package/dist/compiler/runtime/variables.d.ts.map +1 -0
- package/dist/compiler/runtime/variables.js +111 -0
- package/dist/compiler/runtime/variables.js.map +1 -0
- package/dist/compiler/safe-module-id.d.ts +7 -0
- package/dist/compiler/safe-module-id.d.ts.map +1 -0
- package/dist/compiler/safe-module-id.js +78 -0
- package/dist/compiler/safe-module-id.js.map +1 -0
- package/dist/compiler/safe-module-id.test.d.ts +1 -0
- package/dist/compiler/safe-module-id.test.d.ts.map +1 -0
- package/dist/compiler/safe-module-id.test.js +36 -0
- package/dist/compiler/safe-module-id.test.js.map +1 -0
- package/dist/compiler/seed-previous-compilation.d.ts +7 -0
- package/dist/compiler/seed-previous-compilation.d.ts.map +1 -0
- package/dist/compiler/seed-previous-compilation.js +9 -0
- package/dist/compiler/seed-previous-compilation.js.map +1 -0
- package/dist/compiler/server/create-server-file.d.ts +12 -0
- package/dist/compiler/server/create-server-file.d.ts.map +1 -0
- package/dist/compiler/server/create-server-file.js +91 -0
- package/dist/compiler/server/create-server-file.js.map +1 -0
- package/dist/compiler/server/create-server-file.test.d.ts +1 -0
- package/dist/compiler/server/create-server-file.test.d.ts.map +1 -0
- package/dist/compiler/server/create-server-file.test.js +48 -0
- package/dist/compiler/server/create-server-file.test.js.map +1 -0
- package/dist/compiler/server/middleware.d.ts +98 -0
- package/dist/compiler/server/middleware.d.ts.map +1 -0
- package/dist/compiler/server/middleware.js +278 -0
- package/dist/compiler/server/middleware.js.map +1 -0
- package/dist/compiler/server/middleware.test.d.ts +1 -0
- package/dist/compiler/server/middleware.test.d.ts.map +1 -0
- package/dist/compiler/server/middleware.test.js +1001 -0
- package/dist/compiler/server/middleware.test.js.map +1 -0
- package/dist/compiler/server/type.d.ts +6 -0
- package/dist/compiler/server/type.d.ts.map +1 -0
- package/dist/compiler/server/type.js +2 -0
- package/dist/compiler/server/type.js.map +1 -0
- package/dist/compiler/test-helpers.d.ts +30 -0
- package/dist/compiler/test-helpers.d.ts.map +1 -0
- package/dist/compiler/test-helpers.js +50 -0
- package/dist/compiler/test-helpers.js.map +1 -0
- package/dist/compiler/types.d.ts +7 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/compiler/types.js +2 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/compiler/variable-access.d.ts +3 -0
- package/dist/compiler/variable-access.d.ts.map +1 -0
- package/dist/compiler/variable-access.js +15 -0
- package/dist/compiler/variable-access.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/messages/ast.d.ts +102 -0
- package/dist/messages/ast.d.ts.map +1 -0
- package/dist/messages/ast.js +8 -0
- package/dist/messages/ast.js.map +1 -0
- package/dist/messages/create-bundle-nested.d.ts +16 -0
- package/dist/messages/create-bundle-nested.d.ts.map +1 -0
- package/dist/messages/create-bundle-nested.js +22 -0
- package/dist/messages/create-bundle-nested.js.map +1 -0
- package/dist/messages/index.d.ts +5 -0
- package/dist/messages/index.d.ts.map +1 -0
- package/dist/messages/index.js +5 -0
- package/dist/messages/index.js.map +1 -0
- package/dist/messages/load-messages.d.ts +19 -0
- package/dist/messages/load-messages.d.ts.map +1 -0
- package/dist/messages/load-messages.js +49 -0
- package/dist/messages/load-messages.js.map +1 -0
- package/dist/messages/message-format/flatten.d.ts +9 -0
- package/dist/messages/message-format/flatten.d.ts.map +1 -0
- package/dist/messages/message-format/flatten.js +32 -0
- package/dist/messages/message-format/flatten.js.map +1 -0
- package/dist/messages/message-format/import-files.d.ts +32 -0
- package/dist/messages/message-format/import-files.d.ts.map +1 -0
- package/dist/messages/message-format/import-files.js +53 -0
- package/dist/messages/message-format/import-files.js.map +1 -0
- package/dist/messages/message-format/import-files.test.d.ts +1 -0
- package/dist/messages/message-format/import-files.test.d.ts.map +1 -0
- package/dist/messages/message-format/import-files.test.js +145 -0
- package/dist/messages/message-format/import-files.test.js.map +1 -0
- package/dist/messages/message-format/index.d.ts +6 -0
- package/dist/messages/message-format/index.d.ts.map +1 -0
- package/dist/messages/message-format/index.js +7 -0
- package/dist/messages/message-format/index.js.map +1 -0
- package/dist/messages/message-format/parse-bundle.d.ts +31 -0
- package/dist/messages/message-format/parse-bundle.d.ts.map +1 -0
- package/dist/messages/message-format/parse-bundle.js +169 -0
- package/dist/messages/message-format/parse-bundle.js.map +1 -0
- package/dist/messages/message-format/parse-declaration.d.ts +2 -0
- package/dist/messages/message-format/parse-declaration.d.ts.map +1 -0
- package/dist/messages/message-format/parse-declaration.js +56 -0
- package/dist/messages/message-format/parse-declaration.js.map +1 -0
- package/dist/messages/message-format/parse-markup.d.ts +4 -0
- package/dist/messages/message-format/parse-markup.d.ts.map +1 -0
- package/dist/messages/message-format/parse-markup.js +167 -0
- package/dist/messages/message-format/parse-markup.js.map +1 -0
- package/dist/messages/message-format/parse-matches.d.ts +5 -0
- package/dist/messages/message-format/parse-matches.d.ts.map +1 -0
- package/dist/messages/message-format/parse-matches.js +31 -0
- package/dist/messages/message-format/parse-matches.js.map +1 -0
- package/dist/messages/message-format/parse-pattern.d.ts +5 -0
- package/dist/messages/message-format/parse-pattern.d.ts.map +1 -0
- package/dist/messages/message-format/parse-pattern.js +120 -0
- package/dist/messages/message-format/parse-pattern.js.map +1 -0
- package/dist/messages/message-format/unique.d.ts +2 -0
- package/dist/messages/message-format/unique.d.ts.map +1 -0
- package/dist/messages/message-format/unique.js +5 -0
- package/dist/messages/message-format/unique.js.map +1 -0
- package/dist/messages/nest-bundles.d.ts +19 -0
- package/dist/messages/nest-bundles.d.ts.map +1 -0
- package/dist/messages/nest-bundles.js +49 -0
- package/dist/messages/nest-bundles.js.map +1 -0
- package/dist/services/account/index.d.ts +14 -0
- package/dist/services/account/index.d.ts.map +1 -0
- package/dist/services/account/index.js +43 -0
- package/dist/services/account/index.js.map +1 -0
- package/dist/services/account/types.d.ts +4 -0
- package/dist/services/account/types.d.ts.map +1 -0
- package/dist/services/account/types.js +2 -0
- package/dist/services/account/types.js.map +1 -0
- package/dist/services/codegen/escape.d.ts +9 -0
- package/dist/services/codegen/escape.d.ts.map +1 -0
- package/dist/services/codegen/escape.js +19 -0
- package/dist/services/codegen/escape.js.map +1 -0
- package/dist/services/codegen/quotes.d.ts +4 -0
- package/dist/services/codegen/quotes.d.ts.map +1 -0
- package/dist/services/codegen/quotes.js +5 -0
- package/dist/services/codegen/quotes.js.map +1 -0
- package/dist/services/env-variables/create-index-file.d.ts +9 -0
- package/dist/services/env-variables/create-index-file.d.ts.map +1 -0
- package/dist/services/env-variables/create-index-file.js +28 -0
- package/dist/services/env-variables/create-index-file.js.map +1 -0
- package/dist/services/env-variables/index.d.ts +3 -0
- package/dist/services/env-variables/index.d.ts.map +1 -0
- package/dist/services/env-variables/index.js +4 -0
- package/dist/services/env-variables/index.js.map +1 -0
- package/dist/services/environment/package.d.ts +9 -0
- package/dist/services/environment/package.d.ts.map +1 -0
- package/dist/services/environment/package.js +31 -0
- package/dist/services/environment/package.js.map +1 -0
- package/dist/services/environment/package.test.d.ts +1 -0
- package/dist/services/environment/package.test.d.ts.map +1 -0
- package/dist/services/environment/package.test.js +21 -0
- package/dist/services/environment/package.test.js.map +1 -0
- package/dist/services/error-handling.d.ts +12 -0
- package/dist/services/error-handling.d.ts.map +1 -0
- package/dist/services/error-handling.js +27 -0
- package/dist/services/error-handling.js.map +1 -0
- package/dist/services/error-handling.test.d.ts +1 -0
- package/dist/services/error-handling.test.d.ts.map +1 -0
- package/dist/services/error-handling.test.js +10 -0
- package/dist/services/error-handling.test.js.map +1 -0
- package/dist/services/file-handling/content-hash.d.ts +9 -0
- package/dist/services/file-handling/content-hash.js +19 -0
- package/dist/services/file-handling/content-hash.js.map +1 -0
- package/dist/services/file-handling/exists.d.ts +7 -0
- package/dist/services/file-handling/exists.d.ts.map +1 -0
- package/dist/services/file-handling/exists.js +24 -0
- package/dist/services/file-handling/exists.js.map +1 -0
- package/dist/services/file-handling/exists.test.d.ts +1 -0
- package/dist/services/file-handling/exists.test.d.ts.map +1 -0
- package/dist/services/file-handling/exists.test.js +27 -0
- package/dist/services/file-handling/exists.test.js.map +1 -0
- package/dist/services/file-handling/types.d.ts +4 -0
- package/dist/services/file-handling/types.d.ts.map +1 -0
- package/dist/services/file-handling/types.js +2 -0
- package/dist/services/file-handling/types.js.map +1 -0
- package/dist/services/file-handling/write-output.d.ts +21 -0
- package/dist/services/file-handling/write-output.d.ts.map +1 -0
- package/dist/services/file-handling/write-output.js +157 -0
- package/dist/services/file-handling/write-output.js.map +1 -0
- package/dist/services/file-handling/write-output.test.d.ts +1 -0
- package/dist/services/file-handling/write-output.test.d.ts.map +1 -0
- package/dist/services/file-handling/write-output.test.js +217 -0
- package/dist/services/file-handling/write-output.test.js.map +1 -0
- package/dist/services/file-watching/tracked-fs.d.ts +25 -0
- package/dist/services/file-watching/tracked-fs.d.ts.map +1 -0
- package/dist/services/file-watching/tracked-fs.js +94 -0
- package/dist/services/file-watching/tracked-fs.js.map +1 -0
- package/dist/services/file-watching/tracked-fs.test.d.ts +1 -0
- package/dist/services/file-watching/tracked-fs.test.d.ts.map +1 -0
- package/dist/services/file-watching/tracked-fs.test.js +87 -0
- package/dist/services/file-watching/tracked-fs.test.js.map +1 -0
- package/dist/services/logger/index.d.ts +17 -0
- package/dist/services/logger/index.d.ts.map +1 -0
- package/dist/services/logger/index.js +58 -0
- package/dist/services/logger/index.js.map +1 -0
- package/dist/services/lookup.d.ts +14 -0
- package/dist/services/lookup.d.ts.map +1 -0
- package/dist/services/lookup.js +24 -0
- package/dist/services/lookup.js.map +1 -0
- package/dist/urlpattern-polyfill/index.d.ts +2 -0
- package/dist/urlpattern-polyfill/index.d.ts.map +1 -0
- package/dist/urlpattern-polyfill/index.js +2 -0
- package/dist/urlpattern-polyfill/index.js.map +1 -0
- package/dist/utilities/detect-json-formatting.d.ts +10 -0
- package/dist/utilities/detect-json-formatting.d.ts.map +1 -0
- package/dist/utilities/detect-json-formatting.js +80 -0
- package/dist/utilities/detect-json-formatting.js.map +1 -0
- package/dist/utilities/node-normalize-path.d.ts +1 -0
- package/dist/utilities/node-normalize-path.d.ts.map +1 -0
- package/dist/utilities/node-normalize-path.js +10 -0
- package/dist/utilities/node-normalize-path.js.map +1 -0
- 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":""}
|