@bigbinary/neeto-commons-frontend 4.13.98 → 4.13.100
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/configs/vite/plugins/packageTranslations.js +105 -7
- package/dist/cjs/initializers/constants.js +3 -0
- package/dist/cjs/initializers/constants.js.map +1 -1
- package/dist/cjs/initializers/i18n.js +19 -25
- package/dist/cjs/initializers/i18n.js.map +1 -1
- package/dist/cjs/initializers/index.js +2 -4
- package/dist/cjs/initializers/index.js.map +1 -1
- package/dist/initializers/constants.js +3 -1
- package/dist/initializers/constants.js.map +1 -1
- package/dist/initializers/i18n.js +20 -26
- package/dist/initializers/i18n.js.map +1 -1
- package/dist/initializers/index.js +2 -4
- package/dist/initializers/index.js.map +1 -1
- package/initializers.d.ts +0 -1
- package/package.json +1 -1
|
@@ -1,14 +1,112 @@
|
|
|
1
|
+
/* eslint-disable @bigbinary/neeto/use-array-methods */
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const path = require("path");
|
|
4
|
+
|
|
5
|
+
const { watch } = require("chokidar");
|
|
6
|
+
|
|
1
7
|
const {
|
|
2
8
|
generateMergedTranslations,
|
|
3
9
|
writeTranslationsToDisk,
|
|
4
10
|
} = require("../../utils/packageTranslations");
|
|
5
11
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
12
|
+
// Only watch host app translations. Package translations inside
|
|
13
|
+
// node_modules/@bigbinary are handled by the nanoDevelopment plugin
|
|
14
|
+
const getTranslationWatchPaths = () => {
|
|
15
|
+
const hostTranslationsDir = path.resolve("app/javascript/src/translations");
|
|
16
|
+
|
|
17
|
+
return fs.existsSync(hostTranslationsDir) ? [hostTranslationsDir] : [];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const rebuildTranslations = () => {
|
|
21
|
+
const mergedTranslations = generateMergedTranslations();
|
|
22
|
+
writeTranslationsToDisk(mergedTranslations);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const packageTranslationsPlugin = () => {
|
|
26
|
+
let watcher;
|
|
27
|
+
let debounceTimeout;
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
name: "package-translations",
|
|
31
|
+
buildStart() {
|
|
32
|
+
rebuildTranslations();
|
|
33
|
+
},
|
|
34
|
+
handleHotUpdate({ file }) {
|
|
35
|
+
// Suppress Vite's default full-reload for translation JSON files
|
|
36
|
+
// so that only our plugin controls the rebuild + reload cycle.
|
|
37
|
+
if (file.includes("translations") && file.endsWith(".json")) return [];
|
|
38
|
+
|
|
39
|
+
return undefined;
|
|
40
|
+
},
|
|
41
|
+
configureServer(server) {
|
|
42
|
+
const watchPaths = getTranslationWatchPaths();
|
|
43
|
+
if (watchPaths.length === 0) return;
|
|
44
|
+
|
|
45
|
+
server.watcher.unwatch(watchPaths);
|
|
46
|
+
server.httpServer?.on("close", () => {
|
|
47
|
+
if (!watcher) return;
|
|
48
|
+
|
|
49
|
+
watcher.close();
|
|
50
|
+
watcher = null;
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const invalidateAllModules = () => {
|
|
54
|
+
const moduleGraph = server.moduleGraph;
|
|
55
|
+
|
|
56
|
+
for (const mod of moduleGraph.idToModuleMap.values()) {
|
|
57
|
+
moduleGraph.invalidateModule(mod);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const handleChange = () => {
|
|
62
|
+
clearTimeout(debounceTimeout);
|
|
63
|
+
debounceTimeout = setTimeout(() => {
|
|
64
|
+
try {
|
|
65
|
+
const mergedTranslations = generateMergedTranslations();
|
|
66
|
+
writeTranslationsToDisk(mergedTranslations);
|
|
67
|
+
|
|
68
|
+
// Invalidate all modules so the preval transform re-runs and
|
|
69
|
+
// all import URLs are regenerated with the new browserHash.
|
|
70
|
+
invalidateAllModules();
|
|
71
|
+
|
|
72
|
+
// Update the browserHash on every optimized dep and chunk entry
|
|
73
|
+
// so the ?v= param changes in import URLs, forcing the browser
|
|
74
|
+
// to bypass its immutable cache for pre-bundled deps.
|
|
75
|
+
const depsOptimizer = server.environments?.client?.depsOptimizer;
|
|
76
|
+
if (depsOptimizer?.metadata) {
|
|
77
|
+
const newHash = Date.now().toString(36);
|
|
78
|
+
const { metadata } = depsOptimizer;
|
|
79
|
+
metadata.browserHash = newHash;
|
|
80
|
+
|
|
81
|
+
for (const entry of Object.values(metadata.optimized)) {
|
|
82
|
+
entry.browserHash = newHash;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
for (const entry of Object.values(metadata.chunks)) {
|
|
86
|
+
entry.browserHash = newHash;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
server.hot.send({ type: "full-reload" });
|
|
91
|
+
} catch (error) {
|
|
92
|
+
server.config.logger.error(
|
|
93
|
+
`[package-translations] Rebuild failed: ${error}`
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}, 1000);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
watcher = watch(watchPaths, { ignoreInitial: true })
|
|
100
|
+
.on("add", handleChange)
|
|
101
|
+
.on("change", handleChange)
|
|
102
|
+
.on("unlink", handleChange)
|
|
103
|
+
.on("error", error =>
|
|
104
|
+
server.config.logger.error(
|
|
105
|
+
`[package-translations] Watcher error: ${error}`
|
|
106
|
+
)
|
|
107
|
+
);
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
};
|
|
13
111
|
|
|
14
112
|
module.exports = { packageTranslationsPlugin };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var _window;
|
|
3
4
|
var HEADERS_KEYS = {
|
|
4
5
|
xCsrfToken: "X-CSRF-TOKEN",
|
|
5
6
|
contentType: "Content-Type",
|
|
@@ -14,9 +15,11 @@ var FORMATS = {
|
|
|
14
15
|
};
|
|
15
16
|
var LIST_FORMATS = [FORMATS.boldList, FORMATS.list];
|
|
16
17
|
var MAXIMUM_OFFLINE_DURATION = 10000;
|
|
18
|
+
var IS_CHROME_EXTENSION = typeof window !== "undefined" && !!((_window = window) !== null && _window !== void 0 && (_window = _window.chrome) !== null && _window !== void 0 && (_window = _window.runtime) !== null && _window !== void 0 && _window.id);
|
|
17
19
|
|
|
18
20
|
exports.FORMATS = FORMATS;
|
|
19
21
|
exports.HEADERS_KEYS = HEADERS_KEYS;
|
|
22
|
+
exports.IS_CHROME_EXTENSION = IS_CHROME_EXTENSION;
|
|
20
23
|
exports.LIST_FORMATS = LIST_FORMATS;
|
|
21
24
|
exports.LOWERCASED = LOWERCASED;
|
|
22
25
|
exports.LOWERCASED_GLOBAL_REGEX = LOWERCASED_GLOBAL_REGEX;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/initializers/constants.js"],"sourcesContent":["export const HEADERS_KEYS = {\n xCsrfToken: \"X-CSRF-TOKEN\",\n contentType: \"Content-Type\",\n accept: \"Accept\",\n};\n\nexport const LOWERCASED = \"__LOWERCASED__\";\nexport const LOWERCASED_GLOBAL_REGEX = new RegExp(LOWERCASED, \"g\");\n\nexport const FORMATS = {\n boldList: \"boldList\",\n list: \"list\",\n anyCase: \"anyCase\",\n};\nexport const LIST_FORMATS = [FORMATS.boldList, FORMATS.list];\n\nexport const MAXIMUM_OFFLINE_DURATION = 10000;\n"],"names":["HEADERS_KEYS","xCsrfToken","contentType","accept","LOWERCASED","LOWERCASED_GLOBAL_REGEX","RegExp","FORMATS","boldList","list","anyCase","LIST_FORMATS","MAXIMUM_OFFLINE_DURATION"],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/initializers/constants.js"],"sourcesContent":["export const HEADERS_KEYS = {\n xCsrfToken: \"X-CSRF-TOKEN\",\n contentType: \"Content-Type\",\n accept: \"Accept\",\n};\n\nexport const LOWERCASED = \"__LOWERCASED__\";\nexport const LOWERCASED_GLOBAL_REGEX = new RegExp(LOWERCASED, \"g\");\n\nexport const FORMATS = {\n boldList: \"boldList\",\n list: \"list\",\n anyCase: \"anyCase\",\n};\nexport const LIST_FORMATS = [FORMATS.boldList, FORMATS.list];\n\nexport const MAXIMUM_OFFLINE_DURATION = 10000;\n\nexport const IS_CHROME_EXTENSION =\n typeof window !== \"undefined\" && !!window?.chrome?.runtime?.id;\n"],"names":["HEADERS_KEYS","xCsrfToken","contentType","accept","LOWERCASED","LOWERCASED_GLOBAL_REGEX","RegExp","FORMATS","boldList","list","anyCase","LIST_FORMATS","MAXIMUM_OFFLINE_DURATION","IS_CHROME_EXTENSION","window","_window","chrome","runtime","id"],"mappings":";;;AAAO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,UAAU,EAAE,cAAc;AAC1BC,EAAAA,WAAW,EAAE,cAAc;AAC3BC,EAAAA,MAAM,EAAE;AACV;AAEO,IAAMC,UAAU,GAAG;AACnB,IAAMC,uBAAuB,GAAG,IAAIC,MAAM,CAACF,UAAU,EAAE,GAAG;AAE1D,IAAMG,OAAO,GAAG;AACrBC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,OAAO,EAAE;AACX;AACO,IAAMC,YAAY,GAAG,CAACJ,OAAO,CAACC,QAAQ,EAAED,OAAO,CAACE,IAAI;AAEpD,IAAMG,wBAAwB,GAAG;AAE3BC,IAAAA,mBAAmB,GAC9B,OAAOC,MAAM,KAAK,WAAW,IAAI,CAAC,GAAAC,OAAA,GAACD,MAAM,MAAA,IAAA,IAAAC,OAAA,KAAAA,MAAAA,IAAAA,CAAAA,OAAA,GAANA,OAAA,CAAQC,MAAM,MAAAD,IAAAA,IAAAA,OAAA,gBAAAA,OAAA,GAAdA,OAAA,CAAgBE,OAAO,MAAAF,IAAAA,IAAAA,OAAA,KAAvBA,MAAAA,IAAAA,OAAA,CAAyBG,EAAE;;;;;;;;;;"}
|
|
@@ -462,27 +462,19 @@ var resourcesToBackend = function resourcesToBackend(res) {
|
|
|
462
462
|
// eslint-disable-next-line import/no-mutable-exports
|
|
463
463
|
exports.taxonomies = {};
|
|
464
464
|
var initializeI18n = /*#__PURE__*/function () {
|
|
465
|
-
var _ref = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee() {
|
|
465
|
+
var _ref = index._asyncToGenerator(/*#__PURE__*/index._regeneratorRuntime.mark(function _callee(hostTranslations) {
|
|
466
466
|
var _window$globalProps, _window$globalProps2;
|
|
467
|
-
var
|
|
468
|
-
enableDirAttribute,
|
|
469
|
-
userLanguage,
|
|
470
|
-
translationImports,
|
|
471
|
-
englishTranslations,
|
|
472
|
-
englishResource,
|
|
473
|
-
resources,
|
|
474
|
-
defaultTaxonomyKeys,
|
|
475
|
-
defaultTaxonomies,
|
|
476
|
-
hostTaxonomies,
|
|
477
|
-
_args = arguments;
|
|
467
|
+
var userLanguage, translationImports, englishTranslations, englishResource, resources, defaultTaxonomyKeys, defaultTaxonomies, hostTaxonomies;
|
|
478
468
|
return index._regeneratorRuntime.wrap(function _callee$(_context) {
|
|
479
469
|
while (1) switch (_context.prev = _context.next) {
|
|
480
470
|
case 0:
|
|
481
|
-
hostTranslations = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
482
|
-
enableDirAttribute = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;
|
|
483
|
-
document.documentElement.removeAttribute("lang");
|
|
484
471
|
userLanguage = (_window$globalProps = window.globalProps) === null || _window$globalProps === void 0 || (_window$globalProps = _window$globalProps.user) === null || _window$globalProps === void 0 ? void 0 : _window$globalProps.language;
|
|
485
|
-
if (
|
|
472
|
+
if (!initializers_constants.IS_CHROME_EXTENSION) {
|
|
473
|
+
document.documentElement.removeAttribute("lang");
|
|
474
|
+
if (userLanguage) {
|
|
475
|
+
document.documentElement.setAttribute("lang", userLanguage);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
486
478
|
translationImports = preval.require("../../../configs/scripts/buildTranslationImports.js");
|
|
487
479
|
englishTranslations = preval.require("../../../configs/scripts/getEnglishTranslation.js");
|
|
488
480
|
englishResource = {
|
|
@@ -500,7 +492,7 @@ var initializeI18n = /*#__PURE__*/function () {
|
|
|
500
492
|
}));
|
|
501
493
|
hostTaxonomies = ((_window$globalProps2 = window.globalProps) === null || _window$globalProps2 === void 0 ? void 0 : _window$globalProps2.taxonomies) || {};
|
|
502
494
|
exports.taxonomies = initializers_utils_utils.replaceNullValuesWithGetter(ramda.mergeDeepLeft(hostTaxonomies, defaultTaxonomies));
|
|
503
|
-
_context.next =
|
|
495
|
+
_context.next = 12;
|
|
504
496
|
return i18next.use(Browser).use(reactI18next.initReactI18next).use(initializers_utils_customPostProcessors.sentenceCaseProcessor).use(resourcesToBackend(function (language) {
|
|
505
497
|
return utils_retryImport(translationImports === null || translationImports === void 0 ? void 0 : translationImports[language]);
|
|
506
498
|
})).init({
|
|
@@ -536,20 +528,22 @@ var initializeI18n = /*#__PURE__*/function () {
|
|
|
536
528
|
lookupCookie: "lang"
|
|
537
529
|
}
|
|
538
530
|
});
|
|
539
|
-
case
|
|
540
|
-
if (
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
if (!userLanguage) {
|
|
544
|
-
document.documentElement.setAttribute("lang", i18next.resolvedLanguage || "en");
|
|
531
|
+
case 12:
|
|
532
|
+
if (!initializers_constants.IS_CHROME_EXTENSION) {
|
|
533
|
+
_context.next = 14;
|
|
534
|
+
break;
|
|
545
535
|
}
|
|
546
|
-
|
|
536
|
+
return _context.abrupt("return");
|
|
537
|
+
case 14:
|
|
538
|
+
document.documentElement.setAttribute("dir", i18next.dir() || "ltr");
|
|
539
|
+
document.documentElement.setAttribute("lang", i18next.resolvedLanguage || "en");
|
|
540
|
+
case 16:
|
|
547
541
|
case "end":
|
|
548
542
|
return _context.stop();
|
|
549
543
|
}
|
|
550
544
|
}, _callee);
|
|
551
545
|
}));
|
|
552
|
-
return function initializeI18n() {
|
|
546
|
+
return function initializeI18n(_x) {
|
|
553
547
|
return _ref.apply(this, arguments);
|
|
554
548
|
};
|
|
555
549
|
}();
|