gdu 13.12.2 → 13.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/commands/build/buildSPA-vite.d.ts +4 -0
  2. package/dist/commands/build/buildSPA-vite.js +76 -0
  3. package/dist/commands/build/buildSPA-vite.js.map +1 -0
  4. package/dist/commands/build/index.js +30 -1
  5. package/dist/commands/build/index.js.map +1 -1
  6. package/dist/commands/start/index.js +8 -2
  7. package/dist/commands/start/index.js.map +1 -1
  8. package/dist/commands/start/runSPA-vite.d.ts +2 -0
  9. package/dist/commands/start/runSPA-vite.js +239 -0
  10. package/dist/commands/start/runSPA-vite.js.map +1 -0
  11. package/dist/config/shared/externals.d.ts +27 -0
  12. package/dist/config/shared/externals.js +56 -0
  13. package/dist/config/shared/externals.js.map +1 -0
  14. package/dist/config/vite/index.d.ts +8 -0
  15. package/dist/config/vite/index.js +25 -0
  16. package/dist/config/vite/index.js.map +1 -0
  17. package/dist/config/vite/plugins/GuruBuildManifest.d.ts +33 -0
  18. package/dist/config/vite/plugins/GuruBuildManifest.js +132 -0
  19. package/dist/config/vite/plugins/GuruBuildManifest.js.map +1 -0
  20. package/dist/config/vite/plugins/TranslationHashingPlugin.d.ts +13 -0
  21. package/dist/config/vite/plugins/TranslationHashingPlugin.js +451 -0
  22. package/dist/config/vite/plugins/TranslationHashingPlugin.js.map +1 -0
  23. package/dist/config/vite/plugins/guruConfigCjs.d.ts +2 -0
  24. package/dist/config/vite/plugins/guruConfigCjs.js +24 -0
  25. package/dist/config/vite/plugins/guruConfigCjs.js.map +1 -0
  26. package/dist/config/vite/plugins/relay.d.ts +2 -0
  27. package/dist/config/vite/plugins/relay.js +34 -0
  28. package/dist/config/vite/plugins/relay.js.map +1 -0
  29. package/dist/config/vite/types.d.ts +128 -0
  30. package/dist/config/vite/types.js +3 -0
  31. package/dist/config/vite/types.js.map +1 -0
  32. package/dist/config/vite/vite.config.d.ts +10 -0
  33. package/dist/config/vite/vite.config.js +178 -0
  34. package/dist/config/vite/vite.config.js.map +1 -0
  35. package/dist/config/webpack/webpack.config.js +4 -49
  36. package/dist/config/webpack/webpack.config.js.map +1 -1
  37. package/dist/config/webpack/webpack.development.config.js +2 -10
  38. package/dist/config/webpack/webpack.development.config.js.map +1 -1
  39. package/dist/lib/config.d.ts +1 -0
  40. package/dist/lib/config.js.map +1 -1
  41. package/package.json +11 -2
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.guruBuildManifest = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = require("path");
9
+ const defaultOptions = {
10
+ mountDOMId: '',
11
+ mountDOMClass: '',
12
+ frameless: false,
13
+ outputDir: process.cwd(),
14
+ includeChunks: true,
15
+ publicPath: '',
16
+ };
17
+ function extractHashFromFilename(filename) {
18
+ var _a;
19
+ const match = /[.-]([a-zA-Z\d_-]{8,})\.js$/.exec(filename);
20
+ if (!match) {
21
+ console.warn(`Warning: Could not extract hash from entry filename: ${filename}`);
22
+ }
23
+ return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : '';
24
+ }
25
+ function ensureDirectoryExists(dir) {
26
+ fs_1.default.mkdirSync(dir, { recursive: true });
27
+ }
28
+ function collectEntryCssFiles(bundle) {
29
+ var _a;
30
+ const entryCssFiles = new Set();
31
+ for (const chunk of Object.values(bundle)) {
32
+ if (chunk.type !== 'chunk' || !chunk.isEntry)
33
+ continue;
34
+ const referencedCss = (_a = chunk.viteMetadata) === null || _a === void 0 ? void 0 : _a.importedCss;
35
+ if (!referencedCss)
36
+ continue;
37
+ for (const cssFile of referencedCss) {
38
+ entryCssFiles.add(cssFile);
39
+ }
40
+ }
41
+ return entryCssFiles;
42
+ }
43
+ function classifyChunk(fileName, chunk, result, opts) {
44
+ const jsPath = `${opts.publicPath}${fileName}`;
45
+ if (chunk.isEntry) {
46
+ result.assets.js.push(jsPath);
47
+ if (!result.hash) {
48
+ result.hash = extractHashFromFilename(fileName);
49
+ }
50
+ }
51
+ else if (opts.includeChunks) {
52
+ result.chunks.js.push(jsPath);
53
+ }
54
+ }
55
+ function classifyCssAsset(fileName, entryCssFiles, result, opts) {
56
+ const cssPath = `${opts.publicPath}${fileName}`;
57
+ if (entryCssFiles.has(fileName)) {
58
+ result.assets.css.push(cssPath);
59
+ }
60
+ else if (opts.includeChunks) {
61
+ result.chunks.css.push(cssPath);
62
+ }
63
+ }
64
+ function mergeI18nMetadata(result, bundle) {
65
+ const i18nMetaEntry = bundle['i18n-master-manifest.json'];
66
+ if (!i18nMetaEntry ||
67
+ i18nMetaEntry.type !== 'asset' ||
68
+ !i18nMetaEntry.source) {
69
+ return;
70
+ }
71
+ try {
72
+ const i18nMeta = JSON.parse(String(i18nMetaEntry.source));
73
+ if (!i18nMeta.empty) {
74
+ result.i18n = {
75
+ masterManifest: i18nMeta.masterManifest,
76
+ manifestModules: i18nMeta.manifestModules,
77
+ supportedLocales: i18nMeta.locales,
78
+ };
79
+ }
80
+ }
81
+ catch (error) {
82
+ console.warn('[guru-build-manifest] Failed to parse i18n-master-manifest.json:', error);
83
+ }
84
+ }
85
+ function guruBuildManifest(options) {
86
+ const opts = {
87
+ ...defaultOptions,
88
+ ...Object.fromEntries(Object.entries(options || {}).filter(([, v]) => v !== undefined)),
89
+ };
90
+ return {
91
+ name: 'guru-build-manifest',
92
+ apply: 'build',
93
+ writeBundle(_outputOptions, bundle) {
94
+ const result = {
95
+ hash: '',
96
+ mountDOMId: opts.mountDOMId,
97
+ mountDOMClass: opts.mountDOMClass,
98
+ frameless: opts.frameless,
99
+ assets: { js: [], css: [] },
100
+ chunks: { js: [], css: [] },
101
+ };
102
+ const entryCssFiles = collectEntryCssFiles(bundle);
103
+ for (const [fileName, chunk] of Object.entries(bundle)) {
104
+ if (fileName.endsWith('.map'))
105
+ continue;
106
+ if (chunk.type === 'chunk') {
107
+ classifyChunk(fileName, chunk, result, opts);
108
+ }
109
+ else if (chunk.type === 'asset' &&
110
+ fileName.endsWith('.css')) {
111
+ classifyCssAsset(fileName, entryCssFiles, result, opts);
112
+ }
113
+ }
114
+ if (!opts.includeChunks) {
115
+ result.chunks = undefined;
116
+ }
117
+ mergeI18nMetadata(result, bundle);
118
+ ensureDirectoryExists(opts.outputDir);
119
+ const file = (0, path_1.resolve)(opts.outputDir, 'build-manifest.json');
120
+ const blob = JSON.stringify(result);
121
+ try {
122
+ fs_1.default.writeFileSync(file, blob, { flag: 'w' });
123
+ console.log(`File successfully created - ${file}`);
124
+ }
125
+ catch (error) {
126
+ console.error(error);
127
+ }
128
+ },
129
+ };
130
+ }
131
+ exports.guruBuildManifest = guruBuildManifest;
132
+ //# sourceMappingURL=GuruBuildManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuruBuildManifest.js","sourceRoot":"","sources":["../../../../config/vite/plugins/GuruBuildManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { VitePlugin } from '../types';
2
+ interface TranslationHashingOptions {
3
+ appDir: string;
4
+ workspaceRoot: string;
5
+ publicPath?: string;
6
+ outputPath?: string;
7
+ localesDir?: string;
8
+ hashLength?: number;
9
+ excludeLocales?: string[];
10
+ autoIncludePackageTranslations?: boolean;
11
+ }
12
+ export declare function translationHashingPlugin(options: TranslationHashingOptions): VitePlugin;
13
+ export {};
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.translationHashingPlugin = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const fs_1 = require("fs");
9
+ const path_1 = __importDefault(require("path"));
10
+ const PLUGIN_NAME = 'gdu-translation-hashing';
11
+ function generateContentHash(content, length) {
12
+ return crypto_1.default
13
+ .createHash('md5')
14
+ .update(content)
15
+ .digest('hex')
16
+ .slice(0, Math.max(0, length));
17
+ }
18
+ async function collectMfeLocales(localesPath, excludeLocales) {
19
+ const locales = new Set();
20
+ if (!(0, fs_1.existsSync)(localesPath)) {
21
+ return locales;
22
+ }
23
+ const entries = await fs_1.promises.readdir(localesPath);
24
+ for (const entry of entries) {
25
+ const stat = await fs_1.promises.stat(path_1.default.join(localesPath, entry));
26
+ if (stat.isDirectory() && !excludeLocales.includes(entry)) {
27
+ locales.add(entry);
28
+ }
29
+ }
30
+ return locales;
31
+ }
32
+ async function loadMfeTranslations(mfeLocalesPath, locale) {
33
+ const localePath = path_1.default.join(mfeLocalesPath, locale);
34
+ const translations = {};
35
+ if (!(0, fs_1.existsSync)(localePath)) {
36
+ return translations;
37
+ }
38
+ const files = await fs_1.promises.readdir(localePath);
39
+ for (const file of files) {
40
+ if (!file.endsWith('.json'))
41
+ continue;
42
+ const namespace = file.replace('.json', '');
43
+ const filePath = path_1.default.join(localePath, file);
44
+ const content = await fs_1.promises.readFile(filePath, 'utf8');
45
+ try {
46
+ translations[namespace] = JSON.parse(content);
47
+ }
48
+ catch {
49
+ console.error(`[${PLUGIN_NAME}] Failed to parse ${filePath}`);
50
+ }
51
+ }
52
+ return translations;
53
+ }
54
+ function getEffectiveNamespace(namespace, packageName) {
55
+ if (namespace.startsWith('pkg-')) {
56
+ return namespace;
57
+ }
58
+ const simplifiedPackageName = packageName.replace('@autoguru/', '');
59
+ return `pkg-${simplifiedPackageName}`;
60
+ }
61
+ function resolvePackageLocalesPath(packagePath) {
62
+ const packageJsonPath = path_1.default.join(packagePath, 'package.json');
63
+ if (!(0, fs_1.existsSync)(packageJsonPath))
64
+ return null;
65
+ try {
66
+ const raw = require(packageJsonPath);
67
+ if (raw.i18n) {
68
+ const candidatePath = path_1.default.join(packagePath, raw.i18n.localesPath || 'locales');
69
+ if (!(0, fs_1.existsSync)(candidatePath))
70
+ return null;
71
+ return {
72
+ localesPath: candidatePath,
73
+ namespaceFilter: raw.i18n.namespaces,
74
+ };
75
+ }
76
+ const defaultPath = path_1.default.join(packagePath, 'locales');
77
+ return (0, fs_1.existsSync)(defaultPath) ? { localesPath: defaultPath } : null;
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ async function discoverPackageTranslations(workspaceRoot) {
84
+ const packageTranslations = new Map();
85
+ const packagesDir = path_1.default.join(workspaceRoot, 'packages');
86
+ if (!(0, fs_1.existsSync)(packagesDir)) {
87
+ return packageTranslations;
88
+ }
89
+ const packageDirs = await fs_1.promises.readdir(packagesDir);
90
+ for (const packageDir of packageDirs) {
91
+ const packagePath = path_1.default.join(packagesDir, packageDir);
92
+ const stat = await fs_1.promises.stat(packagePath);
93
+ if (!stat.isDirectory())
94
+ continue;
95
+ const resolved = resolvePackageLocalesPath(packagePath);
96
+ if (!resolved)
97
+ continue;
98
+ const translations = await loadPackageLocales(resolved.localesPath, resolved.namespaceFilter);
99
+ if (translations.size > 0) {
100
+ packageTranslations.set(`@autoguru/${packageDir}`, translations);
101
+ }
102
+ }
103
+ return packageTranslations;
104
+ }
105
+ async function loadLocaleDirectory(localePath, namespaceFilter) {
106
+ const files = await fs_1.promises.readdir(localePath);
107
+ const translations = {};
108
+ for (const file of files) {
109
+ if (!file.endsWith('.json'))
110
+ continue;
111
+ const namespace = file.replace('.json', '');
112
+ if (namespaceFilter && !namespaceFilter.includes(namespace))
113
+ continue;
114
+ const filePath = path_1.default.join(localePath, file);
115
+ const content = await fs_1.promises.readFile(filePath, 'utf8');
116
+ try {
117
+ translations[namespace] = JSON.parse(content);
118
+ }
119
+ catch {
120
+ console.error(`[${PLUGIN_NAME}] Failed to parse ${filePath}`);
121
+ }
122
+ }
123
+ return translations;
124
+ }
125
+ async function loadPackageLocales(localesPath, namespaceFilter) {
126
+ const localeMap = new Map();
127
+ const locales = await fs_1.promises.readdir(localesPath);
128
+ for (const locale of locales) {
129
+ const localePath = path_1.default.join(localesPath, locale);
130
+ const stat = await fs_1.promises.stat(localePath);
131
+ if (!stat.isDirectory())
132
+ continue;
133
+ const translations = await loadLocaleDirectory(localePath, namespaceFilter);
134
+ if (Object.keys(translations).length > 0) {
135
+ localeMap.set(locale, translations);
136
+ }
137
+ }
138
+ return localeMap;
139
+ }
140
+ function mergePackageTranslations(locale, mfeTranslations, packageTranslations) {
141
+ const merged = { ...mfeTranslations };
142
+ for (const [packageName, localeMap] of packageTranslations) {
143
+ const packageLocaleData = localeMap.get(locale);
144
+ if (!packageLocaleData)
145
+ continue;
146
+ for (const [namespace, translations] of Object.entries(packageLocaleData)) {
147
+ const effectiveNamespace = getEffectiveNamespace(namespace, packageName);
148
+ merged[effectiveNamespace] = translations;
149
+ }
150
+ }
151
+ return merged;
152
+ }
153
+ function createManifestModule(manifest, discoveredPackages) {
154
+ const packageInfo = discoveredPackages.length > 0
155
+ ? `// Includes translations from packages: ${discoveredPackages.join(', ')}\n`
156
+ : '';
157
+ return `// Auto-generated translation manifest
158
+ ${packageInfo}export const manifest = ${JSON.stringify(manifest, null, 2)};
159
+
160
+ export const getTranslationPath = (namespace) => {
161
+ const translation = manifest[namespace];
162
+ if (!translation) {
163
+ console.warn(\`Translation namespace "\${namespace}" not found in manifest\`);
164
+ return null;
165
+ }
166
+ return translation.path;
167
+ };
168
+
169
+ export const getTranslationHash = (namespace) => {
170
+ return manifest[namespace]?.hash;
171
+ };
172
+
173
+ export const getTranslationSize = (namespace) => {
174
+ return manifest[namespace]?.size;
175
+ };
176
+
177
+ export const getAllNamespaces = () => {
178
+ return Object.keys(manifest);
179
+ };
180
+
181
+ export const getManifestInfo = () => {
182
+ return {
183
+ namespaces: Object.keys(manifest),
184
+ totalSize: Object.values(manifest).reduce((sum, info) => sum + info.size, 0),
185
+ translations: manifest,
186
+ };
187
+ };
188
+
189
+ export default manifest;
190
+ `;
191
+ }
192
+ function createMasterManifest(manifestModules) {
193
+ const imports = [];
194
+ const mappings = [];
195
+ for (const [locale, module] of manifestModules.entries()) {
196
+ imports.push(`import manifest_${locale} from './${module.name}';`);
197
+ mappings.push(` '${locale}': () => import('./${module.name}')`);
198
+ }
199
+ return `// Auto-generated master translation manifest
200
+ // Static imports for immediate availability
201
+ ${imports.join('\n')}
202
+
203
+ // Dynamic imports for lazy loading
204
+ export const translationManifests = {
205
+ ${mappings.join(',\n')}
206
+ };
207
+
208
+ // Static manifest access for SSR/preloading
209
+ export const staticManifests = {
210
+ ${Array.from(manifestModules.keys())
211
+ .map((locale) => ` '${locale}': manifest_${locale}`)
212
+ .join(',\n')}
213
+ };
214
+
215
+ export const loadLocaleManifest = async (locale) => {
216
+ const loader = translationManifests[locale];
217
+ if (!loader) {
218
+ console.warn(\`Locale "\${locale}" not found in translation manifests\`);
219
+ return null;
220
+ }
221
+
222
+ try {
223
+ const module = await loader();
224
+ return module.default || module.manifest;
225
+ } catch (error) {
226
+ console.error(\`Failed to load manifest for locale "\${locale}":\`, error);
227
+ return null;
228
+ }
229
+ };
230
+
231
+ export const getStaticManifest = (locale) => {
232
+ return staticManifests[locale] || null;
233
+ };
234
+
235
+ export const getSupportedLocales = () => {
236
+ return Object.keys(translationManifests);
237
+ };
238
+
239
+ export const preloadLocales = async (locales = ['en']) => {
240
+ const promises = locales.map(locale => loadLocaleManifest(locale));
241
+ const results = await Promise.allSettled(promises);
242
+
243
+ const loaded = {};
244
+ results.forEach((result, index) => {
245
+ if (result.status === 'fulfilled') {
246
+ loaded[locales[index]] = result.value;
247
+ }
248
+ });
249
+
250
+ return loaded;
251
+ };
252
+
253
+ // Initialise with detected locale
254
+ export const initializeI18n = async () => {
255
+ const detectedLocale = (typeof navigator !== 'undefined' && typeof navigator.language === 'string' && navigator.language)
256
+ ? navigator.language.split('-')[0]
257
+ : 'en';
258
+
259
+ const supportedLocales = getSupportedLocales();
260
+ const locale = supportedLocales.includes(detectedLocale) ? detectedLocale : 'en';
261
+
262
+ return loadLocaleManifest(locale);
263
+ };
264
+
265
+ export default translationManifests;
266
+ `;
267
+ }
268
+ function createEmptyMasterContent() {
269
+ return `// Auto-generated empty translation manifest for MFEs without translations
270
+ export const translationManifests = {};
271
+
272
+ export const staticManifests = {};
273
+
274
+ export const loadLocaleManifest = async (locale) => {
275
+ console.warn(\`No translations available for locale "\${locale}"\`);
276
+ return null;
277
+ };
278
+
279
+ export const getStaticManifest = (locale) => {
280
+ return null;
281
+ };
282
+
283
+ export const getSupportedLocales = () => {
284
+ return [];
285
+ };
286
+
287
+ export const preloadLocales = async (locales = []) => {
288
+ return {};
289
+ };
290
+
291
+ export const initializeI18n = async () => {
292
+ return null;
293
+ };
294
+
295
+ export default translationManifests;
296
+ `;
297
+ }
298
+ function addPackageLocalesToSet(allLocales, packageTranslations, excludeLocales) {
299
+ for (const [, localeMap] of packageTranslations) {
300
+ for (const locale of localeMap.keys()) {
301
+ if (!excludeLocales.includes(locale)) {
302
+ allLocales.add(locale);
303
+ }
304
+ }
305
+ }
306
+ }
307
+ function emitEmptyManifest(ctx, hashLength) {
308
+ const emptyContent = createEmptyMasterContent();
309
+ const emptyHash = generateContentHash(emptyContent, hashLength);
310
+ const masterJsName = `i18n-master-manifest.${emptyHash}.js`;
311
+ ctx.emitFile({
312
+ type: 'asset',
313
+ fileName: masterJsName,
314
+ source: emptyContent,
315
+ });
316
+ ctx.emitFile({
317
+ type: 'asset',
318
+ fileName: 'i18n-master-manifest.json',
319
+ source: JSON.stringify({
320
+ masterManifest: masterJsName,
321
+ manifestModules: {},
322
+ locales: [],
323
+ generated: new Date().toISOString(),
324
+ empty: true,
325
+ }, null, 2),
326
+ });
327
+ console.log(`[${PLUGIN_NAME}] No translations found — emitted empty manifest`);
328
+ }
329
+ function emitLocaleTranslations(ctx, merged, locale, opts) {
330
+ const manifest = {};
331
+ for (const [namespace, translations] of Object.entries(merged)) {
332
+ const content = JSON.stringify(translations);
333
+ const hash = generateContentHash(content, opts.hashLength);
334
+ const hashedFilename = `${namespace}.${hash}.json`;
335
+ ctx.emitFile({
336
+ type: 'asset',
337
+ fileName: `${opts.outputPath}${locale}/${hashedFilename}`,
338
+ source: content,
339
+ });
340
+ manifest[namespace] = {
341
+ path: `/locales/${locale}/${hashedFilename}`,
342
+ hash,
343
+ size: content.length,
344
+ };
345
+ }
346
+ return manifest;
347
+ }
348
+ function updateBuildManifest(bundle, metaInfo, discoveredPackages, translationManifests) {
349
+ const entry = bundle['build-manifest.json'];
350
+ if (!entry || entry.type !== 'asset' || !('source' in entry))
351
+ return;
352
+ try {
353
+ const buildManifest = JSON.parse(String(entry.source));
354
+ buildManifest.i18n = {
355
+ masterManifest: metaInfo.masterManifest,
356
+ manifestModules: metaInfo.manifestModules,
357
+ supportedLocales: metaInfo.locales,
358
+ includedPackages: discoveredPackages,
359
+ translationAssets: {},
360
+ };
361
+ for (const [locale, localeManifest] of translationManifests.entries()) {
362
+ buildManifest.i18n.translationAssets[locale] = {};
363
+ for (const [namespace, info] of Object.entries(localeManifest)) {
364
+ buildManifest.i18n.translationAssets[locale][namespace] =
365
+ info.path;
366
+ }
367
+ }
368
+ entry.source = JSON.stringify(buildManifest, null, 2);
369
+ }
370
+ catch (error) {
371
+ console.error(`[${PLUGIN_NAME}] Failed to update build manifest:`, error);
372
+ }
373
+ }
374
+ function translationHashingPlugin(options) {
375
+ const opts = {
376
+ publicPath: options.publicPath || '/locales/',
377
+ outputPath: options.outputPath || 'locales/',
378
+ localesDir: options.localesDir || 'public/locales',
379
+ hashLength: options.hashLength || 8,
380
+ excludeLocales: options.excludeLocales || [],
381
+ autoIncludePackageTranslations: options.autoIncludePackageTranslations !== false,
382
+ appDir: options.appDir,
383
+ workspaceRoot: options.workspaceRoot,
384
+ };
385
+ return {
386
+ name: PLUGIN_NAME,
387
+ apply: 'build',
388
+ async generateBundle(_outputOptions, _bundle) {
389
+ const localesPath = path_1.default.join(opts.appDir, opts.localesDir);
390
+ const allLocales = await collectMfeLocales(localesPath, opts.excludeLocales);
391
+ let packageTranslations = new Map();
392
+ if (opts.autoIncludePackageTranslations) {
393
+ packageTranslations = await discoverPackageTranslations(opts.workspaceRoot);
394
+ addPackageLocalesToSet(allLocales, packageTranslations, opts.excludeLocales);
395
+ }
396
+ const discoveredPackages = Array.from(packageTranslations.keys());
397
+ if (allLocales.size === 0) {
398
+ emitEmptyManifest(this, opts.hashLength);
399
+ return;
400
+ }
401
+ const translationManifests = new Map();
402
+ for (const locale of allLocales) {
403
+ const mfeTranslations = await loadMfeTranslations(localesPath, locale);
404
+ const merged = mergePackageTranslations(locale, mfeTranslations, packageTranslations);
405
+ translationManifests.set(locale, emitLocaleTranslations(this, merged, locale, opts));
406
+ }
407
+ const manifestModules = new Map();
408
+ for (const [locale, manifest] of translationManifests.entries()) {
409
+ const moduleContent = createManifestModule(manifest, discoveredPackages);
410
+ const moduleHash = generateContentHash(moduleContent, opts.hashLength);
411
+ const moduleName = `i18n-manifest-${locale}.${moduleHash}.js`;
412
+ this.emitFile({
413
+ type: 'asset',
414
+ fileName: moduleName,
415
+ source: moduleContent,
416
+ });
417
+ manifestModules.set(locale, {
418
+ name: moduleName,
419
+ hash: moduleHash,
420
+ });
421
+ }
422
+ const masterContent = createMasterManifest(manifestModules);
423
+ const masterHash = generateContentHash(masterContent, opts.hashLength);
424
+ const masterJsName = `i18n-master-manifest.${masterHash}.js`;
425
+ this.emitFile({
426
+ type: 'asset',
427
+ fileName: masterJsName,
428
+ source: masterContent,
429
+ });
430
+ const metaInfo = {
431
+ masterManifest: masterJsName,
432
+ manifestModules: Object.fromEntries(manifestModules),
433
+ locales: Array.from(translationManifests.keys()),
434
+ generated: new Date().toISOString(),
435
+ };
436
+ this.emitFile({
437
+ type: 'asset',
438
+ fileName: 'i18n-master-manifest.json',
439
+ source: JSON.stringify(metaInfo, null, 2),
440
+ });
441
+ updateBuildManifest(_bundle, metaInfo, discoveredPackages, translationManifests);
442
+ const totalNamespaces = Array.from(translationManifests.values()).reduce((sum, manifest) => sum + Object.keys(manifest).length, 0);
443
+ console.log(`[${PLUGIN_NAME}] Emitted ${totalNamespaces} hashed translation files across ${allLocales.size} locales` +
444
+ (discoveredPackages.length > 0
445
+ ? ` (${discoveredPackages.length} packages included)`
446
+ : ''));
447
+ },
448
+ };
449
+ }
450
+ exports.translationHashingPlugin = translationHashingPlugin;
451
+ //# sourceMappingURL=TranslationHashingPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranslationHashingPlugin.js","sourceRoot":"","sources":["../../../../config/vite/plugins/TranslationHashingPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { VitePlugin } from '../types';
2
+ export declare function guruConfigCjsPlugin(): VitePlugin;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guruConfigCjsPlugin = void 0;
4
+ function guruConfigCjsPlugin() {
5
+ return {
6
+ name: 'gdu-guru-config-cjs',
7
+ transform(code, id) {
8
+ if (!id.endsWith('guru.config.js'))
9
+ return null;
10
+ const config = require(id);
11
+ const keys = Object.keys(config);
12
+ const lines = [
13
+ 'const __cjs = {};',
14
+ 'const module = { get exports() { return __cjs; }, set exports(v) { Object.assign(__cjs, v); } };',
15
+ code,
16
+ 'export default __cjs;',
17
+ ...keys.map((k) => `export const ${k} = __cjs[${JSON.stringify(k)}];`),
18
+ ];
19
+ return { code: lines.join('\n'), map: null };
20
+ },
21
+ };
22
+ }
23
+ exports.guruConfigCjsPlugin = guruConfigCjsPlugin;
24
+ //# sourceMappingURL=guruConfigCjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guruConfigCjs.js","sourceRoot":"","sources":["../../../../config/vite/plugins/guruConfigCjs.ts"],"names":[],"mappings":";;;AAaA,SAAgB,mBAAmB;IAClC,OAAO;QACN,IAAI,EAAE,qBAAqB;QAC3B,SAAS,CAAC,IAAI,EAAE,EAAE;YACjB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAAE,OAAO,IAAI,CAAC;YAGhD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,KAAK,GAAG;gBACb,mBAAmB;gBACnB,kGAAkG;gBAClG,IAAI;gBACJ,uBAAuB;gBACvB,GAAG,IAAI,CAAC,GAAG,CACV,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACzD;aACD,CAAC;YAEF,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;KACD,CAAC;AACH,CAAC;AAvBD,kDAuBC"}
@@ -0,0 +1,2 @@
1
+ import type { VitePlugin } from '../types';
2
+ export declare function relayPlugin(artifactDirectory: string): VitePlugin;