lsr-text-catalog 0.1.2
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 +184 -0
- package/dist/compiled/index.d.ts +12 -0
- package/dist/compiled/index.d.ts.map +1 -0
- package/dist/compiled/index.js +39 -0
- package/dist/compiled/index.js.map +1 -0
- package/dist/language.d.ts +4 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +50 -0
- package/dist/language.js.map +1 -0
- package/dist/runtime/index.d.ts +17 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +68 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/vite/index.d.ts +21 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +559 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/manifest.d.ts +24 -0
- package/dist/vite/manifest.d.ts.map +1 -0
- package/dist/vite/manifest.js +110 -0
- package/dist/vite/manifest.js.map +1 -0
- package/dist/vite/transform.d.ts +5 -0
- package/dist/vite/transform.d.ts.map +1 -0
- package/dist/vite/transform.js +873 -0
- package/dist/vite/transform.js.map +1 -0
- package/dist/vite/types.d.ts +23 -0
- package/dist/vite/types.d.ts.map +1 -0
- package/dist/vite/types.js +2 -0
- package/dist/vite/types.js.map +1 -0
- package/package.json +99 -0
- package/src/compiled/index.ts +81 -0
- package/src/language.ts +62 -0
- package/src/runtime/index.ts +126 -0
- package/src/types.ts +55 -0
- package/src/vite/index.ts +642 -0
- package/src/vite/manifest.ts +158 -0
- package/src/vite/transform.ts +1228 -0
- package/src/vite/types.ts +27 -0
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, watch, writeFileSync, } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { isRunnableDevEnvironment, normalizePath, } from "vite";
|
|
5
|
+
import { transformTextCatalog } from "./transform.js";
|
|
6
|
+
import { readCatalogManifest } from "./manifest.js";
|
|
7
|
+
function isWithin(directory, file) {
|
|
8
|
+
const relative = path.relative(directory, file);
|
|
9
|
+
return (relative === "" ||
|
|
10
|
+
(!relative.startsWith(`..${path.sep}`) &&
|
|
11
|
+
relative !== ".." &&
|
|
12
|
+
!path.isAbsolute(relative)));
|
|
13
|
+
}
|
|
14
|
+
/** Generate Text catalog, optionally expanding literals before Vue, with one coherent snapshot across environments. */
|
|
15
|
+
export function textCatalog(options) {
|
|
16
|
+
if (typeof options.compile !== "function")
|
|
17
|
+
throw new Error("textCatalog requires a compiler callback.");
|
|
18
|
+
const mode = options.mode ?? "runtime";
|
|
19
|
+
if (mode !== "runtime" && mode !== "compiled")
|
|
20
|
+
throw new Error("Unknown text catalog mode.");
|
|
21
|
+
if (mode === "compiled" && !options.compiledFacade)
|
|
22
|
+
throw new Error("Compiled mode requires a compiledFacade file.");
|
|
23
|
+
for (const name of [
|
|
24
|
+
"sourceDirectory",
|
|
25
|
+
"languageDirectory",
|
|
26
|
+
"frontendDirectory",
|
|
27
|
+
"facade",
|
|
28
|
+
]) {
|
|
29
|
+
if (!options[name])
|
|
30
|
+
throw new Error(`textCatalog requires ${name}.`);
|
|
31
|
+
}
|
|
32
|
+
const identity = {
|
|
33
|
+
domain: options.domain,
|
|
34
|
+
sourceLocale: options.sourceLocale,
|
|
35
|
+
locales: [...options.locales],
|
|
36
|
+
};
|
|
37
|
+
let root = path.resolve(options.root ?? ".");
|
|
38
|
+
let catalogDirectory = path.resolve(root, options.sourceDirectory);
|
|
39
|
+
let languageDirectory = path.resolve(root, options.languageDirectory);
|
|
40
|
+
let frontendDirectory = path.resolve(root, options.frontendDirectory);
|
|
41
|
+
let frontendFile = path.join(frontendDirectory, "catalog.ts");
|
|
42
|
+
let compiledFrontendFile = path.join(frontendDirectory, "catalog.compiled.ts");
|
|
43
|
+
let facadeFile = path.resolve(root, options.facade);
|
|
44
|
+
let compiledFacadeFile = path.resolve(root, options.compiledFacade ?? options.facade);
|
|
45
|
+
let configuredRoot = root;
|
|
46
|
+
let revisionFile = path.join(frontendDirectory, "catalog.watch");
|
|
47
|
+
const sourceWatchers = new Map();
|
|
48
|
+
let sourceWatchError;
|
|
49
|
+
let watchBuild = false;
|
|
50
|
+
let buildCatalog;
|
|
51
|
+
let markerRevision;
|
|
52
|
+
let sourceVersion = 0;
|
|
53
|
+
let buildSourceVersion = 0;
|
|
54
|
+
let watchRetry;
|
|
55
|
+
let server;
|
|
56
|
+
let published;
|
|
57
|
+
let pending;
|
|
58
|
+
let failure;
|
|
59
|
+
let dirty = true;
|
|
60
|
+
let lastReloaded;
|
|
61
|
+
const dependencies = new Set();
|
|
62
|
+
const sourceFiles = new Set();
|
|
63
|
+
const compile = options.compile;
|
|
64
|
+
function canonicalFile(file) {
|
|
65
|
+
// Vite resolves modules through realpath, while Chokidar can report the configured symlink path.
|
|
66
|
+
return configuredRoot !== root && isWithin(configuredRoot, file)
|
|
67
|
+
? path.join(root, path.relative(configuredRoot, file))
|
|
68
|
+
: file;
|
|
69
|
+
}
|
|
70
|
+
function transformOptions(resolve) {
|
|
71
|
+
return {
|
|
72
|
+
root,
|
|
73
|
+
facade: normalizePath(facadeFile),
|
|
74
|
+
async resolveModule(source, importer) {
|
|
75
|
+
const resolved = await resolve(source, importer);
|
|
76
|
+
if (!resolved || /[?#\0]/u.test(resolved.id))
|
|
77
|
+
return undefined;
|
|
78
|
+
const file = canonicalFile(resolved.id);
|
|
79
|
+
if (file === facadeFile || file === compiledFacadeFile)
|
|
80
|
+
return "copy";
|
|
81
|
+
if (file === frontendFile || file === compiledFrontendFile)
|
|
82
|
+
return "catalog";
|
|
83
|
+
return undefined;
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function isGenerated(file) {
|
|
88
|
+
return (isWithin(frontendDirectory, file) ||
|
|
89
|
+
(isWithin(languageDirectory, file) && /\.(?:pot|mo)$/.test(file)));
|
|
90
|
+
}
|
|
91
|
+
function isSource(id) {
|
|
92
|
+
return (!id.includes("\0") &&
|
|
93
|
+
!/[?#]/.test(id) &&
|
|
94
|
+
!normalizePath(id).includes("/node_modules/") &&
|
|
95
|
+
!isGenerated(id) &&
|
|
96
|
+
id !== facadeFile &&
|
|
97
|
+
id !== compiledFacadeFile &&
|
|
98
|
+
/\.(?:vue|[cm]?[jt]sx?)$/.test(id) &&
|
|
99
|
+
!/\.d\.[cm]?ts$/.test(id));
|
|
100
|
+
}
|
|
101
|
+
function isCatalogInput(file) {
|
|
102
|
+
return ((isWithin(catalogDirectory, file) &&
|
|
103
|
+
(file.endsWith(".neon") ||
|
|
104
|
+
dependencies.has(file) ||
|
|
105
|
+
path.extname(file) === "")) ||
|
|
106
|
+
(isWithin(languageDirectory, file) &&
|
|
107
|
+
(file.endsWith(".po") ||
|
|
108
|
+
dependencies.has(file) ||
|
|
109
|
+
path.extname(file) === "")));
|
|
110
|
+
}
|
|
111
|
+
function updateWatchRevision(force = false) {
|
|
112
|
+
const revision = scan();
|
|
113
|
+
if (!force && markerRevision === revision)
|
|
114
|
+
return;
|
|
115
|
+
markerRevision = revision;
|
|
116
|
+
sourceVersion++;
|
|
117
|
+
markDirty();
|
|
118
|
+
// Rolldown 1.2 watches directories non-recursively and ignores events for unknown child paths.
|
|
119
|
+
// A real watched file bridges those structural events into its native transform dependency graph.
|
|
120
|
+
mkdirSync(path.dirname(revisionFile), { recursive: true });
|
|
121
|
+
writeFileSync(revisionFile, `${revision}\n${sourceVersion}\n`);
|
|
122
|
+
}
|
|
123
|
+
function startSourceWatcher() {
|
|
124
|
+
if (sourceWatchers.size && !sourceWatchError)
|
|
125
|
+
return;
|
|
126
|
+
mkdirSync(path.dirname(revisionFile), { recursive: true });
|
|
127
|
+
function synchronize() {
|
|
128
|
+
// Watch only input trees recursively. The shallow root watch restores
|
|
129
|
+
// them after deletion without traversing node_modules or build output.
|
|
130
|
+
const directories = new Map();
|
|
131
|
+
for (const input of [catalogDirectory, languageDirectory]) {
|
|
132
|
+
if (existsSync(input))
|
|
133
|
+
directories.set(input, true);
|
|
134
|
+
let parent = path.dirname(input);
|
|
135
|
+
while (!existsSync(parent) && path.dirname(parent) !== parent)
|
|
136
|
+
parent = path.dirname(parent);
|
|
137
|
+
if (!directories.has(parent))
|
|
138
|
+
directories.set(parent, false);
|
|
139
|
+
}
|
|
140
|
+
for (const [directory, watcher] of sourceWatchers) {
|
|
141
|
+
if (!directories.has(directory)) {
|
|
142
|
+
watcher.close();
|
|
143
|
+
sourceWatchers.delete(directory);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const [directory, recursive] of directories) {
|
|
147
|
+
if (sourceWatchers.has(directory))
|
|
148
|
+
continue;
|
|
149
|
+
let watcher;
|
|
150
|
+
try {
|
|
151
|
+
watcher = watch(directory, { recursive }, (_event, filename) => {
|
|
152
|
+
if (filename !== null) {
|
|
153
|
+
const file = path.resolve(directory, filename.toString());
|
|
154
|
+
if (!isCatalogInput(file) &&
|
|
155
|
+
!isWithin(file, catalogDirectory) &&
|
|
156
|
+
!isWithin(file, languageDirectory))
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
synchronize();
|
|
160
|
+
updateWatchRevision();
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (cause) {
|
|
164
|
+
sourceWatchError =
|
|
165
|
+
cause instanceof Error ? cause : new Error(String(cause));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
sourceWatchers.set(directory, watcher);
|
|
169
|
+
watcher.on("error", (error) => {
|
|
170
|
+
if (sourceWatchers.get(directory) !== watcher)
|
|
171
|
+
return;
|
|
172
|
+
watcher.close();
|
|
173
|
+
sourceWatchers.delete(directory);
|
|
174
|
+
sourceWatchError = error;
|
|
175
|
+
synchronize();
|
|
176
|
+
updateWatchRevision(true);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
sourceWatchError = undefined;
|
|
180
|
+
}
|
|
181
|
+
synchronize();
|
|
182
|
+
updateWatchRevision();
|
|
183
|
+
dependencies.add(revisionFile);
|
|
184
|
+
}
|
|
185
|
+
function scan() {
|
|
186
|
+
const hash = createHash("sha256");
|
|
187
|
+
sourceFiles.clear();
|
|
188
|
+
// Keep deleted paths registered, and an existing ancestor to detect a missing root being recreated.
|
|
189
|
+
for (const input of [catalogDirectory, languageDirectory]) {
|
|
190
|
+
let ancestor = input;
|
|
191
|
+
while (!existsSync(ancestor) && path.dirname(ancestor) !== ancestor)
|
|
192
|
+
ancestor = path.dirname(ancestor);
|
|
193
|
+
dependencies.add(ancestor);
|
|
194
|
+
dependencies.add(input);
|
|
195
|
+
}
|
|
196
|
+
function visit(directory, extension) {
|
|
197
|
+
dependencies.add(directory);
|
|
198
|
+
hash.update(`directory\0${path.relative(root, directory)}\0`);
|
|
199
|
+
let entries;
|
|
200
|
+
try {
|
|
201
|
+
entries = readdirSync(directory, { withFileTypes: true });
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (error.code !== "ENOENT")
|
|
205
|
+
throw error;
|
|
206
|
+
hash.update("missing\0");
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
210
|
+
for (const entry of entries) {
|
|
211
|
+
const file = path.join(directory, entry.name);
|
|
212
|
+
if (entry.isDirectory()) {
|
|
213
|
+
visit(file, extension);
|
|
214
|
+
}
|
|
215
|
+
else if ((entry.isFile() || entry.isSymbolicLink()) &&
|
|
216
|
+
entry.name.endsWith(extension)) {
|
|
217
|
+
dependencies.add(file);
|
|
218
|
+
hash.update(`file\0${path.relative(root, file)}\0`);
|
|
219
|
+
try {
|
|
220
|
+
hash.update(readFileSync(file));
|
|
221
|
+
sourceFiles.add(file);
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
if (error.code !== "ENOENT")
|
|
225
|
+
throw error;
|
|
226
|
+
hash.update("missing\0");
|
|
227
|
+
}
|
|
228
|
+
hash.update("\0");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
visit(catalogDirectory, ".neon");
|
|
233
|
+
visit(languageDirectory, ".po");
|
|
234
|
+
server?.watcher.add([...dependencies]);
|
|
235
|
+
return hash.digest("hex");
|
|
236
|
+
}
|
|
237
|
+
function invalidate() {
|
|
238
|
+
if (!server)
|
|
239
|
+
return;
|
|
240
|
+
for (const environment of Object.values(server.environments)) {
|
|
241
|
+
const active = environment.moduleGraph.idToModuleMap.size > 0;
|
|
242
|
+
environment.moduleGraph.invalidateAll();
|
|
243
|
+
// Invalidating the transform graph alone does not clear evaluated SSR exports.
|
|
244
|
+
if (active && isRunnableDevEnvironment(environment))
|
|
245
|
+
environment.runner.clearCache();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function markDirty() {
|
|
249
|
+
if (!dirty)
|
|
250
|
+
invalidate();
|
|
251
|
+
dirty = true;
|
|
252
|
+
}
|
|
253
|
+
async function generate() {
|
|
254
|
+
for (;;) {
|
|
255
|
+
dirty = false;
|
|
256
|
+
const revision = scan();
|
|
257
|
+
if (published?.revision === revision && !failure)
|
|
258
|
+
return published;
|
|
259
|
+
if (failure?.revision === revision)
|
|
260
|
+
throw failure.error;
|
|
261
|
+
try {
|
|
262
|
+
await compile(root);
|
|
263
|
+
const artifacts = readCatalogManifest(frontendDirectory, identity);
|
|
264
|
+
const snapshot = artifacts.manifest;
|
|
265
|
+
const frontend = artifacts[mode];
|
|
266
|
+
// A compile can overlap edits even before a watcher delivers its event. Never publish it then.
|
|
267
|
+
if (scan() !== revision)
|
|
268
|
+
continue;
|
|
269
|
+
dirty = false;
|
|
270
|
+
const initial = !published && !failure;
|
|
271
|
+
failure = undefined;
|
|
272
|
+
published = { revision, snapshot, frontend };
|
|
273
|
+
// Startup watcher events for unchanged inputs must not reset an already mounted app.
|
|
274
|
+
if (initial)
|
|
275
|
+
lastReloaded = published;
|
|
276
|
+
return published;
|
|
277
|
+
}
|
|
278
|
+
catch (cause) {
|
|
279
|
+
if (scan() !== revision)
|
|
280
|
+
continue;
|
|
281
|
+
dirty = false;
|
|
282
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
283
|
+
const error = new Error(`Text catalog compilation failed: ${detail}`, {
|
|
284
|
+
cause,
|
|
285
|
+
});
|
|
286
|
+
failure = { revision, error };
|
|
287
|
+
// Keep the previous object private; every reader goes through this failed revision barrier.
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
async function current() {
|
|
293
|
+
if (pending)
|
|
294
|
+
return pending;
|
|
295
|
+
if (!dirty && failure)
|
|
296
|
+
throw failure.error;
|
|
297
|
+
if (!dirty && published)
|
|
298
|
+
return published;
|
|
299
|
+
pending = generate();
|
|
300
|
+
try {
|
|
301
|
+
return await pending;
|
|
302
|
+
}
|
|
303
|
+
finally {
|
|
304
|
+
pending = undefined;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
function reload() {
|
|
308
|
+
if (!server)
|
|
309
|
+
return;
|
|
310
|
+
invalidate();
|
|
311
|
+
const clientChannel = server.environments.client?.hot;
|
|
312
|
+
const notified = new Set([clientChannel]);
|
|
313
|
+
for (const environment of Object.values(server.environments)) {
|
|
314
|
+
// Local runners were synchronously cleared above. Their channels can be shared with the
|
|
315
|
+
// client or forward runner HMR; sending again can produce duplicate browser reloads.
|
|
316
|
+
if (isRunnableDevEnvironment(environment) ||
|
|
317
|
+
notified.has(environment.hot))
|
|
318
|
+
continue;
|
|
319
|
+
notified.add(environment.hot);
|
|
320
|
+
environment.hot.send({ type: "full-reload", path: "*" });
|
|
321
|
+
}
|
|
322
|
+
clientChannel?.send({ type: "full-reload", path: "*" });
|
|
323
|
+
}
|
|
324
|
+
async function refreshCatalog() {
|
|
325
|
+
const next = await current();
|
|
326
|
+
if (lastReloaded === next)
|
|
327
|
+
return;
|
|
328
|
+
lastReloaded = next;
|
|
329
|
+
reload();
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
name: "text-catalog",
|
|
333
|
+
enforce: "pre",
|
|
334
|
+
config(config) {
|
|
335
|
+
if (!config.build?.watch)
|
|
336
|
+
return;
|
|
337
|
+
const configuredRoot = path.resolve(options.root ?? config.root ?? ".");
|
|
338
|
+
const existing = config.build.watch.exclude;
|
|
339
|
+
return {
|
|
340
|
+
build: {
|
|
341
|
+
watch: {
|
|
342
|
+
exclude: [
|
|
343
|
+
...(Array.isArray(existing)
|
|
344
|
+
? existing
|
|
345
|
+
: existing
|
|
346
|
+
? [existing]
|
|
347
|
+
: []),
|
|
348
|
+
`${normalizePath(path.resolve(realpathSync(configuredRoot), options.frontendDirectory))}/*.{ts,json,php}`,
|
|
349
|
+
`${normalizePath(path.resolve(realpathSync(configuredRoot), options.languageDirectory))}/**/*.{po,pot,mo}`,
|
|
350
|
+
],
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
},
|
|
355
|
+
configResolved(config) {
|
|
356
|
+
configuredRoot = path.resolve(options.root ?? config.root);
|
|
357
|
+
root = realpathSync(configuredRoot);
|
|
358
|
+
catalogDirectory = path.resolve(root, options.sourceDirectory);
|
|
359
|
+
languageDirectory = path.resolve(root, options.languageDirectory);
|
|
360
|
+
facadeFile = path.resolve(root, options.facade);
|
|
361
|
+
compiledFacadeFile = path.resolve(root, options.compiledFacade ?? options.facade);
|
|
362
|
+
frontendDirectory = path.resolve(root, options.frontendDirectory);
|
|
363
|
+
frontendFile = path.join(frontendDirectory, "catalog.ts");
|
|
364
|
+
compiledFrontendFile = path.join(frontendDirectory, "catalog.compiled.ts");
|
|
365
|
+
facadeFile = realpathSync(facadeFile);
|
|
366
|
+
if (mode === "compiled")
|
|
367
|
+
compiledFacadeFile = realpathSync(compiledFacadeFile);
|
|
368
|
+
if (mode === "compiled" && facadeFile === compiledFacadeFile)
|
|
369
|
+
throw new Error("Compiled and runtime facades must be distinct files.");
|
|
370
|
+
for (const input of [catalogDirectory, languageDirectory]) {
|
|
371
|
+
if (isWithin(frontendDirectory, input) ||
|
|
372
|
+
isWithin(input, frontendDirectory)) {
|
|
373
|
+
throw new Error("Catalog input and frontend output directories must not overlap.");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
revisionFile = path.join(frontendDirectory, "catalog.watch");
|
|
377
|
+
watchBuild = config.command === "build" && !!config.build.watch;
|
|
378
|
+
if (mode === "compiled") {
|
|
379
|
+
const vue = config.plugins.find((plugin) => plugin.name === "vite:vue");
|
|
380
|
+
const hook = vue?.handleHotUpdate;
|
|
381
|
+
if (vue && hook) {
|
|
382
|
+
const handler = typeof hook === "function" ? hook : hook.handler;
|
|
383
|
+
// Vite keeps modern hotUpdate and legacy handleHotUpdate contexts separate.
|
|
384
|
+
// Vue must compare the same preprocessed SFCs that its transform cached.
|
|
385
|
+
const wrapped = function (context) {
|
|
386
|
+
if (!isSource(canonicalFile(context.file)) ||
|
|
387
|
+
!context.file.endsWith(".vue"))
|
|
388
|
+
return handler.call(this, context);
|
|
389
|
+
const read = context.read;
|
|
390
|
+
return handler.call(this, {
|
|
391
|
+
...context,
|
|
392
|
+
read: async () => {
|
|
393
|
+
const source = await read();
|
|
394
|
+
const next = await current();
|
|
395
|
+
return ((await transformTextCatalog(source, canonicalFile(context.file), next.snapshot, transformOptions((source, importer) => context.server.environments.client.pluginContainer.resolveId(source, importer))))?.code ?? source);
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
};
|
|
399
|
+
vue.handleHotUpdate =
|
|
400
|
+
typeof hook === "function"
|
|
401
|
+
? wrapped
|
|
402
|
+
: { ...hook, handler: wrapped };
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
configureServer(devServer) {
|
|
407
|
+
server = devServer;
|
|
408
|
+
scan();
|
|
409
|
+
// Vite's hotUpdate covers files, but not empty directory creation/deletion.
|
|
410
|
+
const directoryChanged = (directory) => {
|
|
411
|
+
const file = canonicalFile(directory);
|
|
412
|
+
if (!isWithin(catalogDirectory, file) &&
|
|
413
|
+
!isWithin(languageDirectory, file))
|
|
414
|
+
return;
|
|
415
|
+
markDirty();
|
|
416
|
+
void refreshCatalog().catch((error) => {
|
|
417
|
+
devServer.config.logger.error(error.message);
|
|
418
|
+
devServer.environments.client?.hot.send({
|
|
419
|
+
type: "error",
|
|
420
|
+
err: { message: error.message, stack: error.stack ?? "" },
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
};
|
|
424
|
+
devServer.watcher.on("addDir", directoryChanged);
|
|
425
|
+
devServer.watcher.on("unlinkDir", directoryChanged);
|
|
426
|
+
devServer.httpServer?.once("close", () => {
|
|
427
|
+
devServer.watcher.off("addDir", directoryChanged);
|
|
428
|
+
devServer.watcher.off("unlinkDir", directoryChanged);
|
|
429
|
+
});
|
|
430
|
+
},
|
|
431
|
+
async buildStart() {
|
|
432
|
+
if (watchBuild)
|
|
433
|
+
startSourceWatcher();
|
|
434
|
+
if (sourceWatchError)
|
|
435
|
+
this.error(sourceWatchError);
|
|
436
|
+
markDirty();
|
|
437
|
+
scan();
|
|
438
|
+
for (const file of dependencies)
|
|
439
|
+
this.addWatchFile(file);
|
|
440
|
+
buildCatalog = await current();
|
|
441
|
+
buildSourceVersion = sourceVersion;
|
|
442
|
+
for (const file of dependencies)
|
|
443
|
+
this.addWatchFile(file);
|
|
444
|
+
},
|
|
445
|
+
renderStart() {
|
|
446
|
+
if (!watchBuild || !buildCatalog)
|
|
447
|
+
return;
|
|
448
|
+
if (sourceVersion !== buildSourceVersion ||
|
|
449
|
+
scan() !== buildCatalog.revision) {
|
|
450
|
+
// Rolldown can coalesce marker events with the failing build. Keep signaling until
|
|
451
|
+
// it acknowledges the revision event; never publish a mixed or stale build.
|
|
452
|
+
updateWatchRevision(true);
|
|
453
|
+
watchRetry ??= setInterval(() => {
|
|
454
|
+
try {
|
|
455
|
+
updateWatchRevision(true);
|
|
456
|
+
}
|
|
457
|
+
catch (error) {
|
|
458
|
+
this.warn(error instanceof Error ? error : String(error));
|
|
459
|
+
}
|
|
460
|
+
}, 100);
|
|
461
|
+
this.error("Text catalog changed during compilation; waiting for the next watch build.");
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
closeWatcher() {
|
|
465
|
+
clearInterval(watchRetry);
|
|
466
|
+
watchRetry = undefined;
|
|
467
|
+
for (const watcher of sourceWatchers.values())
|
|
468
|
+
watcher.close();
|
|
469
|
+
sourceWatchers.clear();
|
|
470
|
+
},
|
|
471
|
+
async resolveId(source, importer) {
|
|
472
|
+
if (mode !== "compiled" || source.includes("\0") || /[?#]/.test(source))
|
|
473
|
+
return null;
|
|
474
|
+
const resolved = await this.resolve(source, importer, { skipSelf: true });
|
|
475
|
+
if (!resolved)
|
|
476
|
+
return null;
|
|
477
|
+
const file = canonicalFile(resolved.id);
|
|
478
|
+
if (file === facadeFile)
|
|
479
|
+
return compiledFacadeFile;
|
|
480
|
+
if (file === frontendFile)
|
|
481
|
+
return compiledFrontendFile;
|
|
482
|
+
return resolved;
|
|
483
|
+
},
|
|
484
|
+
watchChange(id) {
|
|
485
|
+
const file = canonicalFile(id);
|
|
486
|
+
if (file === revisionFile) {
|
|
487
|
+
clearInterval(watchRetry);
|
|
488
|
+
watchRetry = undefined;
|
|
489
|
+
}
|
|
490
|
+
if (file === revisionFile || isCatalogInput(file))
|
|
491
|
+
markDirty();
|
|
492
|
+
},
|
|
493
|
+
async load(id) {
|
|
494
|
+
if (canonicalFile(id) !== frontendFile &&
|
|
495
|
+
canonicalFile(id) !== compiledFrontendFile)
|
|
496
|
+
return null;
|
|
497
|
+
const next = server
|
|
498
|
+
? await current()
|
|
499
|
+
: (buildCatalog ?? (await current()));
|
|
500
|
+
for (const file of server ? sourceFiles : dependencies)
|
|
501
|
+
this.addWatchFile(file);
|
|
502
|
+
return next.frontend;
|
|
503
|
+
},
|
|
504
|
+
async transform(source, id) {
|
|
505
|
+
id = canonicalFile(id);
|
|
506
|
+
if (id === frontendFile || id === compiledFrontendFile) {
|
|
507
|
+
// Generated translations also depend on catalog inputs, despite being excluded from output watches.
|
|
508
|
+
for (const file of server ? sourceFiles : dependencies)
|
|
509
|
+
this.addWatchFile(file);
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
if (mode === "runtime" || !isSource(id))
|
|
513
|
+
return null;
|
|
514
|
+
const next = server
|
|
515
|
+
? await current()
|
|
516
|
+
: (buildCatalog ?? (await current()));
|
|
517
|
+
const result = await transformTextCatalog(source, id, next.snapshot, transformOptions((source, importer) => this.resolve(source, importer, { skipSelf: true })));
|
|
518
|
+
if (result !== null) {
|
|
519
|
+
// Rolldown 1.2 does not implement shouldTransformCachedModule. These transform dependencies
|
|
520
|
+
// are its supported cache-invalidation seam, including currently empty/new/deleted paths.
|
|
521
|
+
// Vite resolves transform watches as imports: directories/deleted files instead belong
|
|
522
|
+
// to its server watcher, while Rolldown accepts them directly as transform dependencies.
|
|
523
|
+
for (const file of server ? sourceFiles : dependencies)
|
|
524
|
+
this.addWatchFile(file);
|
|
525
|
+
}
|
|
526
|
+
return result;
|
|
527
|
+
},
|
|
528
|
+
hotUpdate: {
|
|
529
|
+
order: "pre",
|
|
530
|
+
async handler(context) {
|
|
531
|
+
const file = canonicalFile(context.file);
|
|
532
|
+
if (isGenerated(file))
|
|
533
|
+
return [];
|
|
534
|
+
if (isCatalogInput(file)) {
|
|
535
|
+
markDirty();
|
|
536
|
+
await refreshCatalog();
|
|
537
|
+
return [];
|
|
538
|
+
}
|
|
539
|
+
if (mode === "compiled" &&
|
|
540
|
+
isSource(file) &&
|
|
541
|
+
file.endsWith(".vue") &&
|
|
542
|
+
this.environment.name !== "client") {
|
|
543
|
+
const environment = this.environment;
|
|
544
|
+
if (!isRunnableDevEnvironment(environment))
|
|
545
|
+
return;
|
|
546
|
+
await current();
|
|
547
|
+
const active = environment.moduleGraph.idToModuleMap.size > 0;
|
|
548
|
+
environment.moduleGraph.invalidateAll();
|
|
549
|
+
if (active)
|
|
550
|
+
environment.runner.clearCache();
|
|
551
|
+
// Native Vue HMR owns the browser update. Local evaluated runners need fresh
|
|
552
|
+
// exports, not HMR notifications that can share the browser's channel.
|
|
553
|
+
return [];
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vite/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CatalogIdentity, TextCatalogSnapshot } from "./types.js";
|
|
2
|
+
export interface CatalogManifest extends TextCatalogSnapshot, CatalogIdentity {
|
|
3
|
+
readonly formatVersion: 1;
|
|
4
|
+
readonly artifacts: {
|
|
5
|
+
readonly runtime: {
|
|
6
|
+
readonly path: "catalog.ts";
|
|
7
|
+
readonly sha256: string;
|
|
8
|
+
};
|
|
9
|
+
readonly compiled: {
|
|
10
|
+
readonly path: "catalog.compiled.ts";
|
|
11
|
+
readonly sha256: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
readonly generation: string;
|
|
15
|
+
}
|
|
16
|
+
/** Byte-ordered compact UTF-8 JSON, matching PHP's unescaped Unicode/slash encoding. */
|
|
17
|
+
export declare function canonicalJson(value: unknown): string;
|
|
18
|
+
/** Read one complete generation; no legacy manifest or stale-artifact fallback is accepted. */
|
|
19
|
+
export declare function readCatalogManifest(directory: string, identity: CatalogIdentity): {
|
|
20
|
+
manifest: CatalogManifest;
|
|
21
|
+
runtime: string;
|
|
22
|
+
compiled: string;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/vite/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,eAAgB,SAAQ,mBAAmB,EAAE,eAAe;IAC3E,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,OAAO,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3E,QAAQ,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;YACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAepD;AAgBD,+FAA+F;AAC/F,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,GACxB;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAwGlE"}
|