@inlang/paraglide-js 2.21.0 → 2.22.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/README.md +7 -1
- package/dist/bundler-plugins/index.d.ts +1 -1
- package/dist/bundler-plugins/index.d.ts.map +1 -1
- package/dist/bundler-plugins/index.js +1 -1
- package/dist/bundler-plugins/index.js.map +1 -1
- package/dist/bundler-plugins/per-locale-build/constants.d.ts +4 -0
- package/dist/bundler-plugins/per-locale-build/constants.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/constants.js +4 -0
- package/dist/bundler-plugins/per-locale-build/constants.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/framework-helpers.test.d.ts +2 -0
- package/dist/bundler-plugins/per-locale-build/framework-helpers.test.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/framework-helpers.test.js +57 -0
- package/dist/bundler-plugins/per-locale-build/framework-helpers.test.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/index.d.ts +5 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/index.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/index.js +21 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/index.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/sveltekit.d.ts +21 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/sveltekit.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/sveltekit.js +137 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/sveltekit.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/tanstack-start.d.ts +23 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/tanstack-start.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/tanstack-start.js +104 -0
- package/dist/bundler-plugins/per-locale-build/frameworks/tanstack-start.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/index.d.ts +7 -0
- package/dist/bundler-plugins/per-locale-build/index.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/index.js +76 -0
- package/dist/bundler-plugins/per-locale-build/index.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/locale-id.d.ts +9 -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/specialize-bundle.d.ts +18 -0
- package/dist/bundler-plugins/per-locale-build/specialize-bundle.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/specialize-bundle.js +184 -0
- package/dist/bundler-plugins/per-locale-build/specialize-bundle.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/types.d.ts +42 -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-plugin.d.ts +9 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.js +87 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.js.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.test.d.ts +2 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.test.d.ts.map +1 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.test.js +429 -0
- package/dist/bundler-plugins/per-locale-build/vite-plugin.test.js.map +1 -0
- package/dist/bundler-plugins/vite.d.ts +16 -1
- package/dist/bundler-plugins/vite.d.ts.map +1 -1
- package/dist/bundler-plugins/vite.js +12 -1
- package/dist/bundler-plugins/vite.js.map +1 -1
- package/dist/bundler-plugins/vite.test.d.ts +2 -0
- package/dist/bundler-plugins/vite.test.d.ts.map +1 -0
- package/dist/bundler-plugins/vite.test.js +97 -0
- package/dist/bundler-plugins/vite.test.js.map +1 -0
- package/dist/compiler/compile-bundle.d.ts +2 -0
- package/dist/compiler/compile-bundle.d.ts.map +1 -1
- package/dist/compiler/compile-bundle.js +11 -2
- package/dist/compiler/compile-bundle.js.map +1 -1
- package/dist/compiler/compile-bundle.test.js +64 -4
- package/dist/compiler/compile-bundle.test.js.map +1 -1
- package/dist/compiler/compile-project.d.ts.map +1 -1
- package/dist/compiler/compile-project.js +3 -0
- package/dist/compiler/compile-project.js.map +1 -1
- package/dist/compiler/compile-project.test.js +35 -1
- package/dist/compiler/compile-project.test.js.map +1 -1
- package/dist/compiler/compiler-options.d.ts +2 -1
- package/dist/compiler/compiler-options.d.ts.map +1 -1
- package/dist/compiler/output-structure/message-modules.test.js.map +1 -1
- package/dist/compiler/per-locale-build.d.ts +3 -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/runtime/create-runtime.d.ts.map +1 -1
- package/dist/compiler/runtime/create-runtime.js +5 -1
- package/dist/compiler/runtime/create-runtime.js.map +1 -1
- package/dist/compiler/runtime/set-locale.d.ts.map +1 -1
- package/dist/compiler/runtime/set-locale.js +7 -1
- package/dist/compiler/runtime/set-locale.js.map +1 -1
- package/dist/compiler/runtime/set-locale.test.js +31 -0
- package/dist/compiler/runtime/set-locale.test.js.map +1 -1
- package/dist/services/env-variables/index.js +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-id.js","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/locale-id.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC;IACpE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAClC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,OAAO,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OutputBundle } from "rolldown";
|
|
2
|
+
import type { PerLocaleBuildLayout, PerLocaleBuildManifest, PerLocaleBuildSettings, ViteOxcApi } from "./types.js";
|
|
3
|
+
export declare function specializePerLocaleBundle(args: {
|
|
4
|
+
bundle: OutputBundle;
|
|
5
|
+
layout: PerLocaleBuildLayout;
|
|
6
|
+
settings: PerLocaleBuildSettings;
|
|
7
|
+
vite: ViteOxcApi;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
manifest: PerLocaleBuildManifest;
|
|
10
|
+
assets: Array<{
|
|
11
|
+
fileName: string;
|
|
12
|
+
source: string | Uint8Array;
|
|
13
|
+
}>;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function loadViteOxcApi(): Promise<ViteOxcApi>;
|
|
16
|
+
export declare function assertVite8OxcApi(vite: Partial<ViteOxcApi>): asserts vite is ViteOxcApi;
|
|
17
|
+
export declare function validatePerLocaleBuildSettings(settings: PerLocaleBuildSettings): PerLocaleBuildSettings;
|
|
18
|
+
//# sourceMappingURL=specialize-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specialize-bundle.d.ts","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/specialize-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAO7C,OAAO,KAAK,EACX,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,MAAM,YAAY,CAAC;AAEpB,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACrD,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,UAAU,CAAC;CACjB,GAAG,OAAO,CAAC;IACX,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC,CAsGD;AAuGD,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,CAS1D;AAED,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GACvB,OAAO,CAAC,IAAI,IAAI,UAAU,CAY5B;AAED,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,sBAAsB,GAC9B,sBAAsB,CAsBxB"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { PER_LOCALE_BUILD_DEFINE, PER_LOCALE_BUILD_MANIFEST, PER_LOCALE_BUILD_MARKER, } from "./constants.js";
|
|
3
|
+
export async function specializePerLocaleBundle(args) {
|
|
4
|
+
const settings = validatePerLocaleBuildSettings(args.settings);
|
|
5
|
+
assertVite8OxcApi(args.vite);
|
|
6
|
+
const originals = Object.entries(args.bundle)
|
|
7
|
+
.filter(([fileName]) => fileName !== PER_LOCALE_BUILD_MANIFEST)
|
|
8
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
9
|
+
.map(([fileName, output]) => ({
|
|
10
|
+
fileName,
|
|
11
|
+
output,
|
|
12
|
+
// Base-locale specialization mutates the canonical OutputChunk. Every
|
|
13
|
+
// locale must nevertheless start from this immutable source graph.
|
|
14
|
+
code: output.type === "chunk" ? output.code : undefined,
|
|
15
|
+
}));
|
|
16
|
+
const originalFileNames = originals.map(({ fileName }) => fileName);
|
|
17
|
+
const originalFileNameSet = new Set(originalFileNames);
|
|
18
|
+
for (const { fileName, output } of originals) {
|
|
19
|
+
args.layout.validateOutput?.(fileName, output.type);
|
|
20
|
+
}
|
|
21
|
+
for (const { fileName, output } of originals) {
|
|
22
|
+
if (output.type !== "asset" || !fileName.endsWith(".css"))
|
|
23
|
+
continue;
|
|
24
|
+
output.source = rewriteCssPublicAssetReferences({
|
|
25
|
+
source: output.source,
|
|
26
|
+
fileName,
|
|
27
|
+
originalFileNames: originalFileNameSet,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const manifest = {
|
|
31
|
+
version: 1,
|
|
32
|
+
baseLocale: settings.baseLocale,
|
|
33
|
+
locales: {},
|
|
34
|
+
};
|
|
35
|
+
for (const locale of settings.locales) {
|
|
36
|
+
manifest.locales[locale] = {
|
|
37
|
+
prefix: args.layout.getLocalePrefix(locale, settings.baseLocale),
|
|
38
|
+
assets: Object.fromEntries(originalFileNames.map((fileName) => [
|
|
39
|
+
`/${fileName}`,
|
|
40
|
+
`/${args.layout.getLocalizedFileName(fileName, locale, settings.baseLocale)}`,
|
|
41
|
+
])),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const localizedAssets = [];
|
|
45
|
+
const emittedFileNames = new Set(Object.keys(args.bundle));
|
|
46
|
+
for (const locale of settings.locales) {
|
|
47
|
+
const specializedChunks = new Map();
|
|
48
|
+
await Promise.all(originals.map(async ({ fileName, output, code }) => {
|
|
49
|
+
if (output.type !== "chunk")
|
|
50
|
+
return;
|
|
51
|
+
specializedChunks.set(fileName, await specializeChunk({
|
|
52
|
+
code: code,
|
|
53
|
+
fileName,
|
|
54
|
+
locale,
|
|
55
|
+
vite: args.vite,
|
|
56
|
+
}));
|
|
57
|
+
}));
|
|
58
|
+
for (const { fileName, output } of originals) {
|
|
59
|
+
const specializedCode = output.type === "chunk" ? specializedChunks.get(fileName) : undefined;
|
|
60
|
+
if (output.type === "chunk" && specializedCode === undefined) {
|
|
61
|
+
throw new Error(`Failed to specialize Vite chunk ${fileName}.`);
|
|
62
|
+
}
|
|
63
|
+
if (locale === settings.baseLocale) {
|
|
64
|
+
if (output.type === "chunk") {
|
|
65
|
+
output.code = specializedCode;
|
|
66
|
+
output.map = null;
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const localizedFileName = args.layout.getLocalizedFileName(fileName, locale, settings.baseLocale);
|
|
71
|
+
if (localizedFileName === fileName)
|
|
72
|
+
continue;
|
|
73
|
+
if (emittedFileNames.has(localizedFileName)) {
|
|
74
|
+
throw new Error(`experimentalPerLocaleBuild cannot emit ${localizedFileName} because another Vite plugin already emitted that file.`);
|
|
75
|
+
}
|
|
76
|
+
emittedFileNames.add(localizedFileName);
|
|
77
|
+
localizedAssets.push({
|
|
78
|
+
fileName: localizedFileName,
|
|
79
|
+
source: output.type === "chunk" ? specializedCode : output.source,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { manifest, assets: localizedAssets };
|
|
84
|
+
}
|
|
85
|
+
function rewriteCssPublicAssetReferences(args) {
|
|
86
|
+
let css;
|
|
87
|
+
if (typeof args.source === "string") {
|
|
88
|
+
css = args.source;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
css = new TextDecoder().decode(args.source);
|
|
92
|
+
}
|
|
93
|
+
const rewrite = (reference) => {
|
|
94
|
+
if (!isRelativeCssReference(reference))
|
|
95
|
+
return reference;
|
|
96
|
+
const suffixIndex = reference.search(/[?#]/);
|
|
97
|
+
const pathname = suffixIndex === -1 ? reference : reference.slice(0, suffixIndex);
|
|
98
|
+
const suffix = suffixIndex === -1 ? "" : reference.slice(suffixIndex);
|
|
99
|
+
const canonicalPath = path.posix.normalize(path.posix.join("/", path.posix.dirname(args.fileName), pathname));
|
|
100
|
+
if (args.originalFileNames.has(canonicalPath.replace(/^\//, ""))) {
|
|
101
|
+
return reference;
|
|
102
|
+
}
|
|
103
|
+
return `${canonicalPath}${suffix}`;
|
|
104
|
+
};
|
|
105
|
+
css = css.replace(/url\(\s*(?:(["'])(.*?)\1|([^"')]+))\s*\)/g, (full, quote, quoted, unquoted) => {
|
|
106
|
+
const reference = (quote ? quoted : unquoted).trim();
|
|
107
|
+
const rewritten = rewrite(reference);
|
|
108
|
+
return rewritten === reference
|
|
109
|
+
? full
|
|
110
|
+
: `url(${quote ?? ""}${rewritten}${quote ?? ""})`;
|
|
111
|
+
});
|
|
112
|
+
css = css.replace(/@import\s+(["'])(.*?)\1/g, (full, quote, reference) => {
|
|
113
|
+
const rewritten = rewrite(reference);
|
|
114
|
+
return rewritten === reference
|
|
115
|
+
? full
|
|
116
|
+
: `@import ${quote}${rewritten}${quote}`;
|
|
117
|
+
});
|
|
118
|
+
return typeof args.source === "string" ? css : new TextEncoder().encode(css);
|
|
119
|
+
}
|
|
120
|
+
function isRelativeCssReference(reference) {
|
|
121
|
+
return (reference !== "" &&
|
|
122
|
+
!reference.startsWith("/") &&
|
|
123
|
+
!reference.startsWith("#") &&
|
|
124
|
+
!reference.startsWith("?") &&
|
|
125
|
+
!reference.startsWith("//") &&
|
|
126
|
+
!reference.startsWith("var(") &&
|
|
127
|
+
!reference.startsWith("data:") &&
|
|
128
|
+
!/^[A-Za-z][A-Za-z\d+.-]*:/.test(reference));
|
|
129
|
+
}
|
|
130
|
+
async function specializeChunk(args) {
|
|
131
|
+
const transformed = await args.vite.transformWithOxc(args.code, args.fileName, {
|
|
132
|
+
lang: "js",
|
|
133
|
+
sourceType: "module",
|
|
134
|
+
define: {
|
|
135
|
+
[PER_LOCALE_BUILD_DEFINE]: JSON.stringify(args.locale),
|
|
136
|
+
},
|
|
137
|
+
sourcemap: false,
|
|
138
|
+
});
|
|
139
|
+
const minified = await args.vite.minify(args.fileName, transformed.code, {
|
|
140
|
+
module: true,
|
|
141
|
+
compress: true,
|
|
142
|
+
mangle: true,
|
|
143
|
+
});
|
|
144
|
+
if (minified.errors.length > 0) {
|
|
145
|
+
throw new Error(`Oxc failed to minify ${args.fileName} for locale ${JSON.stringify(args.locale)}: ${minified.errors.map((error) => error.message).join("\n")}`);
|
|
146
|
+
}
|
|
147
|
+
if (minified.code.includes(PER_LOCALE_BUILD_MARKER)) {
|
|
148
|
+
throw new Error(`Oxc left ${PER_LOCALE_BUILD_MARKER} in ${args.fileName} for locale ${JSON.stringify(args.locale)}.`);
|
|
149
|
+
}
|
|
150
|
+
return minified.code;
|
|
151
|
+
}
|
|
152
|
+
export async function loadViteOxcApi() {
|
|
153
|
+
try {
|
|
154
|
+
return await import("vite");
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
throw new Error("experimentalPerLocaleBuild requires Vite 8 to be installed in the application.", { cause: error });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export function assertVite8OxcApi(vite) {
|
|
161
|
+
const major = Number.parseInt(vite.version?.split(".")[0] ?? "", 10);
|
|
162
|
+
if (!Number.isFinite(major) ||
|
|
163
|
+
major !== 8 ||
|
|
164
|
+
typeof vite.transformWithOxc !== "function" ||
|
|
165
|
+
typeof vite.minify !== "function") {
|
|
166
|
+
throw new Error(`experimentalPerLocaleBuild requires Vite 8 with the Oxc transform and minify APIs (received ${vite.version ?? "an unknown version"}).`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export function validatePerLocaleBuildSettings(settings) {
|
|
170
|
+
if (!settings.baseLocale) {
|
|
171
|
+
throw new Error("experimentalPerLocaleBuild requires the inlang project to define a baseLocale.");
|
|
172
|
+
}
|
|
173
|
+
if (!Array.isArray(settings.locales) || settings.locales.length === 0) {
|
|
174
|
+
throw new Error("experimentalPerLocaleBuild requires the inlang project to define at least one locale.");
|
|
175
|
+
}
|
|
176
|
+
if (!settings.locales.includes(settings.baseLocale)) {
|
|
177
|
+
throw new Error(`experimentalPerLocaleBuild baseLocale ${JSON.stringify(settings.baseLocale)} is not present in the project's locales.`);
|
|
178
|
+
}
|
|
179
|
+
if (new Set(settings.locales).size !== settings.locales.length) {
|
|
180
|
+
throw new Error("experimentalPerLocaleBuild requires every project locale to be unique.");
|
|
181
|
+
}
|
|
182
|
+
return settings;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=specialize-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specialize-bundle.js","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/specialize-bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type PerLocaleBuildSettings = {
|
|
2
|
+
baseLocale: string;
|
|
3
|
+
locales: string[];
|
|
4
|
+
};
|
|
5
|
+
export type PerLocaleBuildManifest = {
|
|
6
|
+
version: 1;
|
|
7
|
+
baseLocale: string;
|
|
8
|
+
locales: Record<string, {
|
|
9
|
+
/** Public URL prefix. Empty for the canonical/base-locale build. */
|
|
10
|
+
prefix: string;
|
|
11
|
+
/** Canonical public URL to locale-specific public URL. */
|
|
12
|
+
assets: Record<string, string>;
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
export type ViteOxcApi = Pick<typeof import("vite"), "version" | "transformWithOxc" | "minify">;
|
|
16
|
+
/** Framework-neutral description of a client bundle's output namespace. */
|
|
17
|
+
export type PerLocaleBuildLayout = {
|
|
18
|
+
/** Reject unsupported framework output before specialization begins. */
|
|
19
|
+
validateOutput?: (fileName: string, type: "asset" | "chunk") => void;
|
|
20
|
+
getLocalePrefix: (locale: string, baseLocale: string) => string;
|
|
21
|
+
/** Returning the original filename keeps that output locale-neutral. */
|
|
22
|
+
getLocalizedFileName: (fileName: string, locale: string, baseLocale: string) => string;
|
|
23
|
+
};
|
|
24
|
+
export type PerLocaleBuildServerIntegration = {
|
|
25
|
+
resolveId: (id: string) => string | undefined;
|
|
26
|
+
load: (id: string) => string | undefined;
|
|
27
|
+
transform: (code: string, id: string) => {
|
|
28
|
+
code: string;
|
|
29
|
+
map: null;
|
|
30
|
+
} | undefined;
|
|
31
|
+
assertPatched: () => void;
|
|
32
|
+
};
|
|
33
|
+
/** Framework policy consumed by the Vite lifecycle orchestrator. */
|
|
34
|
+
export type PerLocaleBuildFramework = {
|
|
35
|
+
layout: PerLocaleBuildLayout;
|
|
36
|
+
generatedFiles?: Record<string, string>;
|
|
37
|
+
createServerIntegration?: (args: {
|
|
38
|
+
root: string;
|
|
39
|
+
generatedDirectory: string;
|
|
40
|
+
}) => PerLocaleBuildServerIntegration;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CACd,MAAM,EACN;QACC,oEAAoE;QACpE,MAAM,EAAE,MAAM,CAAC;QACf,0DAA0D;QAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CACD,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAC5B,cAAc,MAAM,CAAC,EACrB,SAAS,GAAG,kBAAkB,GAAG,QAAQ,CACzC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,oBAAoB,GAAG;IAClC,wEAAwE;IACxE,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,wEAAwE;IACxE,oBAAoB,EAAE,CACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,KACd,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,KACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,uBAAuB,GAAG;IACrC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,CAAC;KAC3B,KAAK,+BAA+B,CAAC;CACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Plugin } from "vite";
|
|
2
|
+
import type { PerLocaleBuildSettings, ViteOxcApi } from "./types.js";
|
|
3
|
+
export declare function createPerLocaleBuildVitePlugin(args: {
|
|
4
|
+
settings: () => Promise<PerLocaleBuildSettings>;
|
|
5
|
+
generatedDirectory: string;
|
|
6
|
+
loadVite?: () => Promise<ViteOxcApi>;
|
|
7
|
+
onFrameworkDetected?: (generatedFiles: Record<string, string>) => void;
|
|
8
|
+
}): Plugin;
|
|
9
|
+
//# sourceMappingURL=vite-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAanC,OAAO,KAAK,EAGX,sBAAsB,EACtB,UAAU,EACV,MAAM,YAAY,CAAC;AAEpB,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACpD,QAAQ,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,mBAAmB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACvE,GAAG,MAAM,CAsFT"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { PER_LOCALE_BUILD_DEFINE, PER_LOCALE_BUILD_MANIFEST, } from "./constants.js";
|
|
2
|
+
import { configurePerLocaleBuild, detectPerLocaleBuildFramework, } from "./frameworks/index.js";
|
|
3
|
+
import { loadViteOxcApi, specializePerLocaleBundle, } from "./specialize-bundle.js";
|
|
4
|
+
export function createPerLocaleBuildVitePlugin(args) {
|
|
5
|
+
let framework;
|
|
6
|
+
let serverIntegration;
|
|
7
|
+
return {
|
|
8
|
+
name: "paraglide-per-locale-build",
|
|
9
|
+
enforce: "post",
|
|
10
|
+
config(config, env) {
|
|
11
|
+
if (env.command !== "build")
|
|
12
|
+
return;
|
|
13
|
+
if (![undefined, "", "/", "./"].includes(config.base)) {
|
|
14
|
+
throw new Error("experimentalPerLocaleBuild does not support a custom Vite base.");
|
|
15
|
+
}
|
|
16
|
+
assertSupportedClientBuild(config.build);
|
|
17
|
+
return configurePerLocaleBuild(config);
|
|
18
|
+
},
|
|
19
|
+
configEnvironment(name, config, env) {
|
|
20
|
+
const isClient = env.command === "build" &&
|
|
21
|
+
(config.consumer === "client" || name === "client");
|
|
22
|
+
if (!isClient) {
|
|
23
|
+
return {
|
|
24
|
+
define: { [PER_LOCALE_BUILD_DEFINE]: "undefined" },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
assertSupportedClientBuild(config.build);
|
|
28
|
+
return { build: { minify: false, sourcemap: false } };
|
|
29
|
+
},
|
|
30
|
+
configResolved(config) {
|
|
31
|
+
framework = detectPerLocaleBuildFramework(config);
|
|
32
|
+
args.onFrameworkDetected?.(framework.generatedFiles ?? {});
|
|
33
|
+
serverIntegration = framework.createServerIntegration?.({
|
|
34
|
+
root: config.root,
|
|
35
|
+
generatedDirectory: args.generatedDirectory,
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
resolveId(id) {
|
|
39
|
+
return serverIntegration?.resolveId(id);
|
|
40
|
+
},
|
|
41
|
+
load(id) {
|
|
42
|
+
return serverIntegration?.load(id);
|
|
43
|
+
},
|
|
44
|
+
transform(code, id, options) {
|
|
45
|
+
if (!serverIntegration || options?.ssr === false)
|
|
46
|
+
return;
|
|
47
|
+
return serverIntegration.transform(code, id);
|
|
48
|
+
},
|
|
49
|
+
generateBundle: {
|
|
50
|
+
order: "post",
|
|
51
|
+
async handler(_outputOptions, bundle) {
|
|
52
|
+
const isClient = this.environment.config.consumer === "client";
|
|
53
|
+
if (!isClient) {
|
|
54
|
+
serverIntegration?.assertPatched();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!framework) {
|
|
58
|
+
throw new Error("experimentalPerLocaleBuild could not identify the active framework.");
|
|
59
|
+
}
|
|
60
|
+
const specialized = await specializePerLocaleBundle({
|
|
61
|
+
bundle,
|
|
62
|
+
layout: framework.layout,
|
|
63
|
+
settings: await args.settings(),
|
|
64
|
+
vite: await (args.loadVite ?? loadViteOxcApi)(),
|
|
65
|
+
});
|
|
66
|
+
for (const asset of specialized.assets) {
|
|
67
|
+
this.emitFile({
|
|
68
|
+
type: "asset",
|
|
69
|
+
fileName: asset.fileName,
|
|
70
|
+
source: asset.source,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
this.emitFile({
|
|
74
|
+
type: "asset",
|
|
75
|
+
fileName: PER_LOCALE_BUILD_MANIFEST,
|
|
76
|
+
source: JSON.stringify(specialized.manifest, undefined, "\t") + "\n",
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function assertSupportedClientBuild(build) {
|
|
83
|
+
if (build?.minify === false || build?.sourcemap) {
|
|
84
|
+
throw new Error("experimentalPerLocaleBuild requires client minification and does not support client sourcemaps.");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=vite-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/vite-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin.test.d.ts","sourceRoot":"","sources":["../../../src/bundler-plugins/per-locale-build/vite-plugin.test.ts"],"names":[],"mappings":""}
|