@o3r/transloco 0.0.0 → 14.5.0-prerelease.1

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 (122) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +64 -0
  3. package/builders/helpers/localization-generator.d.ts +126 -0
  4. package/builders/helpers/localization-generator.d.ts.map +1 -0
  5. package/builders/helpers/localization-generator.js +303 -0
  6. package/builders/helpers/localization-generator.js.map +1 -0
  7. package/builders/i18n/index.d.ts +7 -0
  8. package/builders/i18n/index.d.ts.map +1 -0
  9. package/builders/i18n/index.js +39 -0
  10. package/builders/i18n/index.js.map +1 -0
  11. package/builders/i18n/schema.d.ts +30 -0
  12. package/builders/i18n/schema.d.ts.map +1 -0
  13. package/builders/i18n/schema.js +3 -0
  14. package/builders/i18n/schema.js.map +1 -0
  15. package/builders/i18n/schema.json +35 -0
  16. package/builders/localization/index.d.ts +23 -0
  17. package/builders/localization/index.d.ts.map +1 -0
  18. package/builders/localization/index.js +416 -0
  19. package/builders/localization/index.js.map +1 -0
  20. package/builders/localization/schema.d.ts +29 -0
  21. package/builders/localization/schema.d.ts.map +1 -0
  22. package/builders/localization/schema.js +3 -0
  23. package/builders/localization/schema.js.map +1 -0
  24. package/builders/localization/schema.json +78 -0
  25. package/builders/localization-extractor/index.d.ts +8 -0
  26. package/builders/localization-extractor/index.d.ts.map +1 -0
  27. package/builders/localization-extractor/index.js +181 -0
  28. package/builders/localization-extractor/index.js.map +1 -0
  29. package/builders/localization-extractor/schema.d.ts +25 -0
  30. package/builders/localization-extractor/schema.d.ts.map +1 -0
  31. package/builders/localization-extractor/schema.js +3 -0
  32. package/builders/localization-extractor/schema.js.map +1 -0
  33. package/builders/localization-extractor/schema.json +62 -0
  34. package/builders/localization-extractor/validations.d.ts +17 -0
  35. package/builders/localization-extractor/validations.d.ts.map +1 -0
  36. package/builders/localization-extractor/validations.js +54 -0
  37. package/builders/localization-extractor/validations.js.map +1 -0
  38. package/builders/metadata-check/helpers/index.d.ts +2 -0
  39. package/builders/metadata-check/helpers/index.d.ts.map +1 -0
  40. package/builders/metadata-check/helpers/index.js +5 -0
  41. package/builders/metadata-check/helpers/index.js.map +1 -0
  42. package/builders/metadata-check/helpers/localization-metadata-comparison-helper.d.ts +14 -0
  43. package/builders/metadata-check/helpers/localization-metadata-comparison-helper.d.ts.map +1 -0
  44. package/builders/metadata-check/helpers/localization-metadata-comparison-helper.js +34 -0
  45. package/builders/metadata-check/helpers/localization-metadata-comparison-helper.js.map +1 -0
  46. package/builders/metadata-check/index.d.ts +7 -0
  47. package/builders/metadata-check/index.d.ts.map +1 -0
  48. package/builders/metadata-check/index.js +12 -0
  49. package/builders/metadata-check/index.js.map +1 -0
  50. package/builders/metadata-check/schema.d.ts +5 -0
  51. package/builders/metadata-check/schema.d.ts.map +1 -0
  52. package/builders/metadata-check/schema.js +3 -0
  53. package/builders/metadata-check/schema.js.map +1 -0
  54. package/builders/metadata-check/schema.json +46 -0
  55. package/builders/package.json +3 -0
  56. package/builders.json +25 -0
  57. package/collection.json +29 -0
  58. package/fesm2022/o3r-transloco-rules-engine.mjs +57 -0
  59. package/fesm2022/o3r-transloco-rules-engine.mjs.map +1 -0
  60. package/fesm2022/o3r-transloco.mjs +1177 -0
  61. package/fesm2022/o3r-transloco.mjs.map +1 -0
  62. package/package.json +190 -2
  63. package/rules-engine/package.json +4 -0
  64. package/schemas/localization.metadata.schema.json +84 -0
  65. package/schemas/localization.schema.json +116 -0
  66. package/schemas/rules-engine.localization-action.schema.json +26 -0
  67. package/schematics/add-localization-key/index.d.ts +13 -0
  68. package/schematics/add-localization-key/index.d.ts.map +1 -0
  69. package/schematics/add-localization-key/index.js +227 -0
  70. package/schematics/add-localization-key/index.js.map +1 -0
  71. package/schematics/add-localization-key/schema.d.ts +20 -0
  72. package/schematics/add-localization-key/schema.d.ts.map +1 -0
  73. package/schematics/add-localization-key/schema.js +3 -0
  74. package/schematics/add-localization-key/schema.js.map +1 -0
  75. package/schematics/add-localization-key/schema.json +49 -0
  76. package/schematics/cms-adapter/index.d.ts +8 -0
  77. package/schematics/cms-adapter/index.d.ts.map +1 -0
  78. package/schematics/cms-adapter/index.js +81 -0
  79. package/schematics/cms-adapter/index.js.map +1 -0
  80. package/schematics/localization-base/index.d.ts +14 -0
  81. package/schematics/localization-base/index.d.ts.map +1 -0
  82. package/schematics/localization-base/index.js +359 -0
  83. package/schematics/localization-base/index.js.map +1 -0
  84. package/schematics/localization-base/templates/src/assets/locales/__empty__.gitkeep +0 -0
  85. package/schematics/localization-to-component/index.d.ts +13 -0
  86. package/schematics/localization-to-component/index.d.ts.map +1 -0
  87. package/schematics/localization-to-component/index.js +264 -0
  88. package/schematics/localization-to-component/index.js.map +1 -0
  89. package/schematics/localization-to-component/schema.d.ts +12 -0
  90. package/schematics/localization-to-component/schema.d.ts.map +1 -0
  91. package/schematics/localization-to-component/schema.js +3 -0
  92. package/schematics/localization-to-component/schema.js.map +1 -0
  93. package/schematics/localization-to-component/schema.json +31 -0
  94. package/schematics/localization-to-component/templates/__name__-localization.json +3 -0
  95. package/schematics/localization-to-component/templates/__name__-translation.ts.template +5 -0
  96. package/schematics/migration-localization-to-transloco/index.d.ts +8 -0
  97. package/schematics/migration-localization-to-transloco/index.d.ts.map +1 -0
  98. package/schematics/migration-localization-to-transloco/index.js +194 -0
  99. package/schematics/migration-localization-to-transloco/index.js.map +1 -0
  100. package/schematics/migration-localization-to-transloco/schema.d.ts +15 -0
  101. package/schematics/migration-localization-to-transloco/schema.d.ts.map +1 -0
  102. package/schematics/migration-localization-to-transloco/schema.js +3 -0
  103. package/schematics/migration-localization-to-transloco/schema.js.map +1 -0
  104. package/schematics/migration-localization-to-transloco/schema.json +30 -0
  105. package/schematics/ng-add/helpers/devtools-registration.d.ts +8 -0
  106. package/schematics/ng-add/helpers/devtools-registration.d.ts.map +1 -0
  107. package/schematics/ng-add/helpers/devtools-registration.js +37 -0
  108. package/schematics/ng-add/helpers/devtools-registration.js.map +1 -0
  109. package/schematics/ng-add/index.d.ts +8 -0
  110. package/schematics/ng-add/index.d.ts.map +1 -0
  111. package/schematics/ng-add/index.js +62 -0
  112. package/schematics/ng-add/index.js.map +1 -0
  113. package/schematics/ng-add/schema.d.ts +11 -0
  114. package/schematics/ng-add/schema.d.ts.map +1 -0
  115. package/schematics/ng-add/schema.js +3 -0
  116. package/schematics/ng-add/schema.js.map +1 -0
  117. package/schematics/ng-add/schema.json +38 -0
  118. package/schematics/package.json +3 -0
  119. package/types/o3r-transloco-rules-engine.d.ts +40 -0
  120. package/types/o3r-transloco-rules-engine.d.ts.map +1 -0
  121. package/types/o3r-transloco.d.ts +804 -0
  122. package/types/o3r-transloco.d.ts.map +1 -0
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "I18nBuilderSchema",
4
+ "title": "I18n builder",
5
+ "description": "I18n builder options",
6
+ "properties": {
7
+ "localizationConfigs": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "localizationFiles": {
13
+ "type": "array",
14
+ "description": "Glob to define how to find localization json files",
15
+ "items": {
16
+ "type": "string"
17
+ }
18
+ },
19
+ "i18nFolderPath": {
20
+ "type": "string",
21
+ "description": "Folder path for the i18n folder relative to the localization json file",
22
+ "default": "i18n"
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "defaultLanguageFile": {
28
+ "type": "string",
29
+ "description": "Name of the file for the default language",
30
+ "default": "en-GB.json"
31
+ }
32
+ },
33
+ "additionalProperties": false,
34
+ "required": ["localizationConfigs"]
35
+ }
@@ -0,0 +1,23 @@
1
+ import type { LocalizationBuilderSchema } from './schema';
2
+ /**
3
+ * Load all the translation files in the given array and created a single Object that associated to each key its localized value.
4
+ * @param files
5
+ */
6
+ export declare function loadTranslations(files: string[]): {
7
+ [k: string]: string;
8
+ };
9
+ /**
10
+ * Computes the translation bundle for a given language, by resolving overrides specified in defaultLanguageMapping
11
+ * @param language
12
+ * @param filesPerLanguage
13
+ * @param defaultLanguageMapping
14
+ * @param memory
15
+ * @param dependencyPath
16
+ */
17
+ export declare function getTranslationsForLanguage(language: string, filesPerLanguage: Record<string, string[]>, defaultLanguageMapping: Record<string, string>, memory: Record<string, Record<string, string>>, dependencyPath?: Set<string>): Record<string, string>;
18
+ /**
19
+ * Builder to generate localization bundles
20
+ */
21
+ declare const _default: import("@angular-devkit/architect").Builder<LocalizationBuilderSchema & import("@angular-devkit/core").JsonObject>;
22
+ export default _default;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/localization/index.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EACV,yBAAyB,EAC1B,MAAM,UAAU,CAAC;AA+ElB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAGzE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAC1C,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC9C,cAAc,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BjE;AA0KD;;GAEG;;AACH,wBAuMI"}
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadTranslations = loadTranslations;
4
+ exports.getTranslationsForLanguage = getTranslationsForLanguage;
5
+ const fs = require("node:fs");
6
+ const path = require("node:path");
7
+ const architect_1 = require("@angular-devkit/architect");
8
+ const extractors_1 = require("@o3r/extractors");
9
+ const schematics_1 = require("@o3r/schematics");
10
+ const globby_1 = require("globby");
11
+ const rxjs_1 = require("rxjs");
12
+ const operators_1 = require("rxjs/operators");
13
+ /** Maximum number of steps */
14
+ const STEP_NUMBER = 5;
15
+ /** File System debounce time */
16
+ const FS_DEBOUNCE_TIME = 200;
17
+ /**
18
+ * Get the list of translation files provided in the current package
19
+ * @param languages List of languages
20
+ * @param assets Folder containing the package override translations bundles
21
+ * @param context Ng Builder context
22
+ */
23
+ function getAppTranslationFiles(languages, assets, context) {
24
+ const assetsList = (typeof assets === 'string' ? [assets] : assets);
25
+ const posixWorkspaceRoot = context.workspaceRoot.split(path.sep).join(path.posix.sep);
26
+ const languageFileEntries = (0, globby_1.sync)(assetsList.map((asset) => path.posix.join(posixWorkspaceRoot, asset, '*.json')), {
27
+ objectMode: true
28
+ });
29
+ const filesPerLanguage = languageFileEntries.reduce((acc, languageFileEntry) => {
30
+ const language = languageFileEntry.name.slice(0, -5); // Remove .json extension from the name
31
+ acc[language] = acc[language] || [];
32
+ acc[language].push(languageFileEntry.path);
33
+ return acc;
34
+ }, {});
35
+ const languagesToDelete = Object.keys(filesPerLanguage).filter((language) => !languages.includes(language));
36
+ languagesToDelete.forEach((language) => delete filesPerLanguage[language]);
37
+ return filesPerLanguage;
38
+ }
39
+ /**
40
+ * Check if a translation has been overridden at application level but not defined in the metadata
41
+ * @param language Language
42
+ * @param defaultBundle Default translation bundle
43
+ * @param customTranslations Override of translations provided by assets
44
+ * @param context ng Builder context
45
+ * @param metaData
46
+ * @param failIfMissingMetadata
47
+ */
48
+ function checkUnusedTranslation(language, defaultBundle, customTranslations, context, metaData, failIfMissingMetadata) {
49
+ const dictionaryKeysPatterns = metaData
50
+ .filter((metadataItem) => metadataItem.dictionary)
51
+ .map((metadataItem) => metadataItem.key)
52
+ .map((key) => `${key}.`);
53
+ const missingMetadata = Object.keys(customTranslations)
54
+ .filter((key) => defaultBundle[key] === undefined)
55
+ .filter((key) => !dictionaryKeysPatterns.some((dictionaryKeyPattern) => key.startsWith(dictionaryKeyPattern)));
56
+ missingMetadata.forEach((key) => context.logger[failIfMissingMetadata ? 'error' : 'warn'](`The key "${key}" from "${language}" is not part of the MetaData`));
57
+ if (missingMetadata.length > 0 && failIfMissingMetadata) {
58
+ throw new schematics_1.O3rCliError(`There is missing metadata for ${language}`);
59
+ }
60
+ }
61
+ /**
62
+ * Clean localization json file.
63
+ * Note: it is used to remove $schema potentially added by the customization
64
+ * @param translationBundle Translation bundle
65
+ */
66
+ function sanitizeLocalization(translationBundle) {
67
+ delete translationBundle.$schema;
68
+ return translationBundle;
69
+ }
70
+ /**
71
+ * Load all the translation files in the given array and created a single Object that associated to each key its localized value.
72
+ * @param files
73
+ */
74
+ function loadTranslations(files) {
75
+ const translationList = files.map((file) => sanitizeLocalization(JSON.parse(fs.readFileSync(file).toString())));
76
+ return translationList.reduce((acc, translation) => Object.assign(acc, translation), {});
77
+ }
78
+ /**
79
+ * Computes the translation bundle for a given language, by resolving overrides specified in defaultLanguageMapping
80
+ * @param language
81
+ * @param filesPerLanguage
82
+ * @param defaultLanguageMapping
83
+ * @param memory
84
+ * @param dependencyPath
85
+ */
86
+ function getTranslationsForLanguage(language, filesPerLanguage, defaultLanguageMapping, memory, dependencyPath = new Set()) {
87
+ if (memory[language]) {
88
+ return memory[language];
89
+ }
90
+ dependencyPath.add(language);
91
+ const files = filesPerLanguage[language];
92
+ let translations = files ? loadTranslations(files) : {};
93
+ const defaultLanguage = defaultLanguageMapping[language];
94
+ // If a default language has been configured for this language
95
+ if (defaultLanguage) {
96
+ // Throw an error if we find a circular dependency
97
+ if (dependencyPath.has(defaultLanguage)) {
98
+ throw new schematics_1.O3rCliError(`Circular dependency found: ${[...Array.from(dependencyPath), defaultLanguage].join('->')}`);
99
+ }
100
+ else {
101
+ // Else, recursively resolve its bundle and use it as a base for the current language
102
+ const defaultTranslations = getTranslationsForLanguage(defaultLanguage, filesPerLanguage, defaultLanguageMapping, memory, dependencyPath);
103
+ translations = {
104
+ ...defaultTranslations,
105
+ ...translations
106
+ };
107
+ }
108
+ }
109
+ memory[language] = translations;
110
+ return translations;
111
+ }
112
+ /**
113
+ * Get the translation bundle for each languages
114
+ * @param languages List of languages
115
+ * @param defaultBundle Default translation bundle
116
+ * @param fileMapping Mapping of translations per languages
117
+ * @param mapReferencesDictionary mapReferencesDictionary
118
+ * @param shouldCheckUnusedTranslation Specify if we need to check the translation not in metadata file
119
+ * @param context Ng Builder context
120
+ * @param metadata metadata
121
+ * @param refKeysMapping mapping for referencing towards referenced keys
122
+ * @param defaultLanguageMapping
123
+ * @param useMetadataAsDefault
124
+ * @param ignoreReferenceIfNotDefault
125
+ * @param failIfMissingMetadata
126
+ */
127
+ function getBundlesPerLanguages(languages, defaultBundle, fileMapping, mapReferencesDictionary, shouldCheckUnusedTranslation, context, metadata = [], refKeysMapping, defaultLanguageMapping, useMetadataAsDefault, ignoreReferenceIfNotDefault, failIfMissingMetadata) {
128
+ const bundles = {};
129
+ const memory = {};
130
+ for (const language of languages) {
131
+ const translations = getTranslationsForLanguage(language, fileMapping, defaultLanguageMapping, memory);
132
+ if (shouldCheckUnusedTranslation) {
133
+ checkUnusedTranslation(language, defaultBundle, translations, context, metadata, failIfMissingMetadata);
134
+ }
135
+ const bundle = useMetadataAsDefault
136
+ ? {
137
+ ...defaultBundle,
138
+ ...translations
139
+ }
140
+ : translations;
141
+ bundles[language] = bundle;
142
+ Object.keys(mapReferencesDictionary)
143
+ .forEach((key) => Object.keys(bundles[language])
144
+ .filter((k) => k.startsWith(mapReferencesDictionary[key]))
145
+ .forEach((k) => {
146
+ const newKey = k.replace(mapReferencesDictionary[key], key);
147
+ if (!bundle[newKey]) {
148
+ bundle[newKey] = bundle[k];
149
+ }
150
+ }));
151
+ Object.entries(refKeysMapping)
152
+ .forEach(([key, mappedKey]) => {
153
+ if (bundle[mappedKey] && (!ignoreReferenceIfNotDefault || bundle[key] === undefined || bundle[key] === defaultBundle[key])) {
154
+ bundle[key] = bundle[mappedKey];
155
+ }
156
+ });
157
+ }
158
+ return bundles;
159
+ }
160
+ /**
161
+ * Extract localization referred in metadata
162
+ * @param metaData Localization metadata
163
+ * @param key Translation key
164
+ */
165
+ function getExtractReferredTranslationValue(metaData, key) {
166
+ const translationObj = metaData.find((data) => data.key === key);
167
+ if (translationObj) {
168
+ return translationObj.ref ? getExtractReferredTranslationValue(metaData, translationObj.ref) : translationObj.value || key;
169
+ }
170
+ else {
171
+ return key;
172
+ }
173
+ }
174
+ /**
175
+ * Extract localization key referred in metadata
176
+ * @param metaData Localization metadata
177
+ * @param key Translation key
178
+ */
179
+ function getExtractReferredTranslationKey(metaData, key) {
180
+ const translationObj = metaData.find((data) => data.key === key);
181
+ return (translationObj && !!translationObj.ref) ? getExtractReferredTranslationKey(metaData, translationObj.ref) : key;
182
+ }
183
+ /**
184
+ * Extract some data from the provided localization metadata:
185
+ * - The bundle containing default translations
186
+ * - The map that associates to every key containing a reference, the key it resolves to
187
+ * - The map that associated to every key being a dictionary reference, the key it resolves to
188
+ * @param metadata
189
+ */
190
+ function processMetadata(metadata) {
191
+ const defaultTranslations = {};
192
+ const keyReferences = {};
193
+ const dictionaryReferences = {};
194
+ metadata.forEach((localization) => {
195
+ if (localization.value === undefined && localization.ref === undefined) {
196
+ return;
197
+ }
198
+ if (localization.ref) {
199
+ const extractedReference = getExtractReferredTranslationKey(metadata, localization.ref);
200
+ if (localization.dictionary) {
201
+ dictionaryReferences[localization.key] = extractedReference;
202
+ }
203
+ keyReferences[localization.key] = extractedReference;
204
+ defaultTranslations[localization.key] = getExtractReferredTranslationValue(metadata, localization.ref);
205
+ }
206
+ else {
207
+ defaultTranslations[localization.key] = localization.value;
208
+ }
209
+ });
210
+ return { defaultTranslations, keyReferences, dictionaryReferences };
211
+ }
212
+ /**
213
+ * Start the metadata generator in watch mode
214
+ * @param localizationExtractorTarget Target of the localization extractor builder
215
+ * @param context Builder context
216
+ */
217
+ function startMetadataGenerator(localizationExtractorTarget, context) {
218
+ const logger = context.logger.createChild('Metadata Logger');
219
+ const extractorBuild = context.scheduleTarget(localizationExtractorTarget, { watch: true }, { logger });
220
+ return (0, rxjs_1.firstValueFrom)((0, rxjs_1.merge)(logger.pipe(), (0, rxjs_1.from)(extractorBuild.then((build) => build.result))).pipe((0, operators_1.filter)((entry) => !entry.message || /Localization metadata bundle extracted/.test(entry.message))));
221
+ }
222
+ /**
223
+ * Regenerate the metadata if missing
224
+ * @param localizationMetaDataFile Path to the localization metadata file
225
+ * @param localizationExtractorTarget Localization Extractor target configured in the angular.json
226
+ * @param context Ng Builder context
227
+ */
228
+ async function checkMetadata(localizationMetaDataFile, localizationExtractorTarget, context) {
229
+ let metaDataExists = fs.existsSync(localizationMetaDataFile);
230
+ if (!metaDataExists) {
231
+ context.logger.warn(`The file ${localizationMetaDataFile} does not exist, the extractor will be run`);
232
+ context.reportProgress(2, STEP_NUMBER, 'Generating Localization metadata file');
233
+ const extractorBuild = await context.scheduleTarget(localizationExtractorTarget, { watch: false });
234
+ const extractorBuildResult = await extractorBuild.result;
235
+ if (extractorBuildResult.success) {
236
+ metaDataExists = fs.existsSync(localizationMetaDataFile);
237
+ if (!metaDataExists) {
238
+ return {
239
+ success: false,
240
+ error: `The file ${localizationMetaDataFile} has not been generated`
241
+ };
242
+ }
243
+ }
244
+ else {
245
+ return extractorBuildResult;
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Builder to generate localization bundles
251
+ */
252
+ exports.default = (0, architect_1.createBuilder)((0, extractors_1.createBuilderWithMetricsIfInstalled)(async (options, context) => {
253
+ context.reportRunning();
254
+ // Load Targets to get build options
255
+ context.reportProgress(0, STEP_NUMBER, 'Checking required options');
256
+ let [project, target, configuration] = options.browserTarget.split(':');
257
+ const browserTarget = { project, target, configuration };
258
+ [project, target, configuration] = options.localizationExtracterTarget.split(':');
259
+ const localizationExtractorTarget = { project, target, configuration };
260
+ const [browserTargetRawOptions, localizationExtracterTargetRawOptions, browserTargetBuilder, localizationExtracterTargetBuilder] = await Promise.all([
261
+ context.getTargetOptions(browserTarget),
262
+ context.getTargetOptions(localizationExtractorTarget),
263
+ context.getBuilderNameForTarget(browserTarget),
264
+ context.getBuilderNameForTarget(localizationExtractorTarget)
265
+ ]);
266
+ const [browserTargetOptions, localizationExtracterTargetOptions] = await Promise.all([
267
+ context.validateOptions(browserTargetRawOptions, browserTargetBuilder),
268
+ context.validateOptions(localizationExtracterTargetRawOptions, localizationExtracterTargetBuilder)
269
+ ]);
270
+ let browserTargetOptionsOutputPath;
271
+ // Check the minimum of mandatory options to the builders
272
+ if (typeof browserTargetOptions.outputPath !== 'string' && typeof browserTargetOptions.outputPath?.base !== 'string') {
273
+ browserTargetOptionsOutputPath = path.join(context.workspaceRoot, 'dist', browserTarget.project); // outputPath became optional in Angular v20
274
+ }
275
+ else if (typeof browserTargetOptions.outputPath === 'string') {
276
+ browserTargetOptionsOutputPath = browserTargetOptions.outputPath;
277
+ }
278
+ else {
279
+ browserTargetOptionsOutputPath = path.join(browserTargetOptions.outputPath.base, typeof browserTargetOptions.outputPath.browser === 'string' ? browserTargetOptions.outputPath.browser : '');
280
+ }
281
+ if (typeof localizationExtracterTargetOptions.outputFile !== 'string') {
282
+ return {
283
+ success: false,
284
+ error: `The targetLocalizationExtracter ${options.localizationExtracterTarget} does not provide 'outputFile' option`
285
+ };
286
+ }
287
+ /** Path to the build output folder */
288
+ const outputPath = path.resolve(context.workspaceRoot, browserTargetOptionsOutputPath);
289
+ /** Path to the metadata file */
290
+ const localizationMetaDataFile = path.resolve(context.workspaceRoot, localizationExtracterTargetOptions.outputFile);
291
+ /**
292
+ * Generate translation bundles
293
+ * @param languageToRegenerate language to focus on
294
+ */
295
+ const execute = (languageToRegenerate) => {
296
+ /** Localization metadata */
297
+ context.reportProgress(1, STEP_NUMBER, 'Checking Metadata');
298
+ const metaData = JSON.parse(fs.readFileSync(localizationMetaDataFile, { encoding: 'utf8' }));
299
+ context.reportProgress(3, STEP_NUMBER, 'Loading translation files');
300
+ /** List of translation files provided in the current package */
301
+ const appTranslationFiles = options.assets?.length ? getAppTranslationFiles(options.locales, options.assets, context) : {};
302
+ /** Mapping between the language and the custom translation of the package */
303
+ const fileMapping = languageToRegenerate ? { [languageToRegenerate]: appTranslationFiles[languageToRegenerate] } : appTranslationFiles;
304
+ const { defaultTranslations, keyReferences, dictionaryReferences } = processMetadata(metaData);
305
+ context.reportProgress(4, STEP_NUMBER, 'Merging translations');
306
+ try {
307
+ /** List of final translation bundles */
308
+ const bundles = getBundlesPerLanguages(languageToRegenerate ? [languageToRegenerate] : options.locales, defaultTranslations, fileMapping, dictionaryReferences, options.checkUnusedTranslation, context, metaData, keyReferences, options.defaultLanguageMapping, options.useMetadataAsDefault, options.ignoreReferencesIfNotDefault, options.failIfMissingMetadata);
309
+ context.reportProgress(5, STEP_NUMBER, 'Writing translations');
310
+ // Write translation files
311
+ const writingFolder = options.outputPath || outputPath || '.';
312
+ if (!fs.existsSync(writingFolder)) {
313
+ fs.mkdirSync(writingFolder, { recursive: true });
314
+ }
315
+ Object.entries(bundles).forEach(([language, bundle]) => {
316
+ const filePath = path.resolve(writingFolder, `${language}.json`);
317
+ context.logger.info(`Writing file to disk ${filePath}`);
318
+ fs.writeFileSync(filePath, JSON.stringify(bundle, Object.keys(bundle).toSorted(), 2));
319
+ });
320
+ return {
321
+ success: true
322
+ };
323
+ }
324
+ catch (error) {
325
+ return {
326
+ success: false,
327
+ error: typeof error === 'string' ? error : error.message
328
+ };
329
+ }
330
+ };
331
+ /** Timeout to handle nodejs issue (#1970) */
332
+ const fsTimeout = {};
333
+ /**
334
+ * Run a translation generation and report the result
335
+ * @param language Language that has changed and requires a regeneration
336
+ */
337
+ const generateWithReport = (language) => {
338
+ const result = execute(language);
339
+ if (result.success && language) {
340
+ context.logger.info(`Translations updated based on changes in ${language}`);
341
+ }
342
+ else if (result.error) {
343
+ context.logger.error(result.error);
344
+ }
345
+ context.reportStatus('Waiting for changes');
346
+ return result;
347
+ };
348
+ /**
349
+ * Run a translation generation for metadata change
350
+ */
351
+ const generateForMetadataChange = () => {
352
+ const METADATA_LABEL = 'metadata';
353
+ if (fsTimeout[METADATA_LABEL]) {
354
+ return;
355
+ }
356
+ fsTimeout[METADATA_LABEL] = setTimeout(() => {
357
+ fsTimeout[METADATA_LABEL] = null;
358
+ const result = generateWithReport();
359
+ if (result.success) {
360
+ context.logger.info('Translations updated based on metadata');
361
+ }
362
+ }, FS_DEBOUNCE_TIME);
363
+ };
364
+ /**
365
+ * Run a translation generation for asset change
366
+ * @param filename File that has changed and requires a regeneration
367
+ * @param fullFilePath
368
+ */
369
+ const generateForAssetsChange = (filename, fullFilePath) => {
370
+ if (fsTimeout[filename]) {
371
+ return;
372
+ }
373
+ fsTimeout[filename] = setTimeout(() => {
374
+ fsTimeout[filename] = null;
375
+ context.logger.info(`Change triggered in ${fullFilePath}`);
376
+ generateWithReport(path.parse(filename).name);
377
+ }, FS_DEBOUNCE_TIME);
378
+ };
379
+ if (options.watch) {
380
+ const metaDataGeneration = await startMetadataGenerator(localizationExtractorTarget, context);
381
+ const metaDataGenerationResult = metaDataGeneration && metaDataGeneration.output && metaDataGeneration.result;
382
+ if (metaDataGenerationResult && !metaDataGenerationResult.success) {
383
+ return metaDataGenerationResult;
384
+ }
385
+ // Execute the generation a first time
386
+ generateWithReport();
387
+ // Create file watchers
388
+ let assetsWatchers = [];
389
+ if (options.assets) {
390
+ const assetsList = (typeof options.assets === 'string' ? [options.assets] : options.assets);
391
+ const posixWorkspaceRoot = context.workspaceRoot.split(path.sep).join(path.posix.sep);
392
+ const filenamesToInclude = `(${options.locales.join('|')}).json`;
393
+ const assets = (0, globby_1.sync)(assetsList.map((asset) => path.posix.join(posixWorkspaceRoot, asset, filenamesToInclude)));
394
+ assetsWatchers = assetsWatchers.concat(assets.map((asset) => fs.watch(asset, (_eventType, filename) => generateForAssetsChange(filename, asset))));
395
+ }
396
+ const metadataWatcher = fs.watch(localizationMetaDataFile, () => generateForMetadataChange());
397
+ context.addTeardown(() => {
398
+ assetsWatchers.forEach((assetsWatcher) => assetsWatcher.close());
399
+ metadataWatcher.close();
400
+ });
401
+ // Exit on watcher failure
402
+ return new Promise((_resolve, reject) => {
403
+ assetsWatchers.forEach((assetsWatcher) => assetsWatcher.once('error', (err) => reject(err)));
404
+ metadataWatcher.once('error', (err) => reject(err));
405
+ });
406
+ }
407
+ else {
408
+ // Execute the generation only once if not watch mode
409
+ const metaDataGeneration = await checkMetadata(localizationMetaDataFile, localizationExtractorTarget, context);
410
+ if (metaDataGeneration && !metaDataGeneration.success) {
411
+ return metaDataGeneration;
412
+ }
413
+ return execute();
414
+ }
415
+ }));
416
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../builders/localization/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { JsonObject } from '@angular-devkit/core';
2
+ /**
3
+ * Schema for the localization builder
4
+ */
5
+ export interface LocalizationBuilderSchema extends JsonObject {
6
+ /** Target to build */
7
+ browserTarget: string;
8
+ /** Target translation extracter */
9
+ localizationExtracterTarget: string;
10
+ /** Output path to localization bundles */
11
+ outputPath: string;
12
+ /** List of languages to generate */
13
+ locales: string[];
14
+ /** Map that associates to a locale, the other locale / language that should be used as default values */
15
+ defaultLanguageMapping: Record<string, string>;
16
+ /** Should missing translations for a given language be filled from the default values from the metadata or not */
17
+ useMetadataAsDefault: boolean;
18
+ /** Do not resolve references when the value of the child key has been customized (eg. is neither undefined or the default value) */
19
+ ignoreReferencesIfNotDefault: boolean;
20
+ /** Asset folder containing the package translations */
21
+ assets: string[] | string | null;
22
+ /** Check if a translation from the asset folder is not a registered translation */
23
+ checkUnusedTranslation: boolean;
24
+ /** Enable watch mode */
25
+ watch: boolean;
26
+ /** Throws an error if there is missing metadata */
27
+ failIfMissingMetadata: boolean;
28
+ }
29
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../builders/localization/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,UAAU;IAE3D,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAC;IAEtB,mCAAmC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IAEpC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,yGAAyG;IACzG,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE/C,kHAAkH;IAClH,oBAAoB,EAAE,OAAO,CAAC;IAE9B,oIAAoI;IACpI,4BAA4B,EAAE,OAAO,CAAC;IAEtC,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAEjC,mFAAmF;IACnF,sBAAsB,EAAE,OAAO,CAAC;IAEhC,wBAAwB;IACxB,KAAK,EAAE,OAAO,CAAC;IAEf,mDAAmD;IACnD,qBAAqB,EAAE,OAAO,CAAC;CAChC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../builders/localization/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "LocalizationBuilderSchema",
4
+ "title": "Localization builder",
5
+ "description": "Localization builder options",
6
+ "properties": {
7
+ "browserTarget": {
8
+ "type": "string",
9
+ "description": "Target to build."
10
+ },
11
+ "localizationExtracterTarget": {
12
+ "type": "string",
13
+ "description": "Target translation extracter."
14
+ },
15
+ "outputPath": {
16
+ "type": "string",
17
+ "description": "Output path to localization bundles"
18
+ },
19
+ "locales": {
20
+ "type": "array",
21
+ "description": "List of languages to generate",
22
+ "default": ["en-GB"],
23
+ "items": {
24
+ "type": "string"
25
+ }
26
+ },
27
+ "defaultLanguageMapping": {
28
+ "type": "object",
29
+ "description": "Map that associates to a locale, the other locale / language that should be used as default values",
30
+ "default": {},
31
+ "additionalProperties": { "type": "string" }
32
+ },
33
+ "useMetadataAsDefault": {
34
+ "type": "boolean",
35
+ "description": "Should missing translations for a given language be filled from the default values from the metadata or not",
36
+ "default": true
37
+ },
38
+ "ignoreReferencesIfNotDefault": {
39
+ "type": "boolean",
40
+ "description": "Do not resolve references when the value of the child key has been customized (eg. is neither undefined or the default value)",
41
+ "default": false
42
+ },
43
+ "assets": {
44
+ "oneOf": [
45
+ {
46
+ "type": "string"
47
+ },
48
+ {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "string"
52
+ }
53
+ }
54
+ ],
55
+ "description": "Asset folder containing the package translations"
56
+ },
57
+ "checkUnusedTranslation": {
58
+ "type": "boolean",
59
+ "description": "Check if a translation from the asset folder is not a registered translation",
60
+ "default": true
61
+ },
62
+ "watch": {
63
+ "type": "boolean",
64
+ "description": "Enable watch mode",
65
+ "default": false
66
+ },
67
+ "failIfMissingMetadata": {
68
+ "type": "boolean",
69
+ "description": "Throws an error if there is missing metadata",
70
+ "default": false
71
+ }
72
+ },
73
+ "additionalProperties": false,
74
+ "required": [
75
+ "localizationExtracterTarget",
76
+ "browserTarget"
77
+ ]
78
+ }
@@ -0,0 +1,8 @@
1
+ import type { LocalizationExtractorBuilderSchema } from './schema';
2
+ export type * from './schema';
3
+ /**
4
+ * Builder to extract localization keys from an Otter project
5
+ */
6
+ declare const _default: import("@angular-devkit/architect").Builder<LocalizationExtractorBuilderSchema & import("@angular-devkit/core").JsonObject>;
7
+ export default _default;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/localization-extractor/index.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,kCAAkC,EACnC,MAAM,UAAU,CAAC;AAKlB,mBAAmB,UAAU,CAAC;AAE9B;;GAEG;;AACH,wBAoMI"}