@lionrapid/core 0.6.4 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -2
- package/dist/browser/auto-init.d.ts.map +1 -1
- package/dist/browser/auto-init.js +4 -2
- package/dist/browser/auto-init.js.map +1 -1
- package/dist/browser/editor/editor-api.d.ts +12 -0
- package/dist/browser/editor/editor-api.d.ts.map +1 -1
- package/dist/browser/editor/editor-api.js.map +1 -1
- package/dist/browser/editor/editor-init.js +2 -1
- package/dist/browser/editor/editor-init.js.map +1 -1
- package/dist/browser/editor/sidebar.d.ts.map +1 -1
- package/dist/browser/editor/sidebar.js +11 -1
- package/dist/browser/editor/sidebar.js.map +1 -1
- package/dist/browser/lionrapid.auto.dev.js +314 -179
- package/dist/browser/lionrapid.auto.dev.js.map +3 -3
- package/dist/browser/lionrapid.auto.js +314 -179
- package/dist/browser/lionrapid.auto.js.map +3 -3
- package/dist/browser/lionrapid.auto.min.js +6 -4
- package/dist/browser/lionrapid.auto.min.js.map +4 -4
- package/dist/browser/lionrapid.editor.js +5 -2
- package/dist/browser/lionrapid.editor.js.map +3 -3
- package/dist/browser/lionrapid.editor.min.js +4 -4
- package/dist/browser/lionrapid.editor.min.js.map +4 -4
- package/dist/browser/lionrapid.esm.js +318 -178
- package/dist/browser/lionrapid.esm.js.map +3 -3
- package/dist/browser/lionrapid.esm.min.js +5 -3
- package/dist/browser/lionrapid.esm.min.js.map +4 -4
- package/dist/browser/lionrapid.iife.dev.js +318 -178
- package/dist/browser/lionrapid.iife.dev.js.map +3 -3
- package/dist/browser/lionrapid.iife.js +318 -178
- package/dist/browser/lionrapid.iife.js.map +3 -3
- package/dist/browser/lionrapid.iife.min.js +5 -3
- package/dist/browser/lionrapid.iife.min.js.map +4 -4
- package/dist/browser/lionrapid.umd.js +318 -178
- package/dist/browser/lionrapid.umd.js.map +3 -3
- package/dist/browser/lionrapid.umd.min.js +5 -3
- package/dist/browser/lionrapid.umd.min.js.map +4 -4
- package/dist/browser/storage/cache-names.d.ts +51 -0
- package/dist/browser/storage/cache-names.d.ts.map +1 -0
- package/dist/browser/storage/cache-names.js +51 -0
- package/dist/browser/storage/cache-names.js.map +1 -0
- package/dist/browser/storage/cache-storage-repository.d.ts.map +1 -1
- package/dist/browser/storage/cache-storage-repository.js +6 -2
- package/dist/browser/storage/cache-storage-repository.js.map +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +9 -2
- package/dist/builder.js.map +1 -1
- package/dist/config/api.config.d.ts +35 -0
- package/dist/config/api.config.d.ts.map +1 -0
- package/dist/config/api.config.js +35 -0
- package/dist/config/api.config.js.map +1 -0
- package/dist/handlers/network-handler.d.ts +6 -0
- package/dist/handlers/network-handler.d.ts.map +1 -1
- package/dist/handlers/network-handler.js +9 -0
- package/dist/handlers/network-handler.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/dist/lionRapid.d.ts.map +1 -1
- package/dist/lionRapid.js +11 -2
- package/dist/lionRapid.js.map +1 -1
- package/dist/repositories/network-repository.d.ts.map +1 -1
- package/dist/repositories/network-repository.js +4 -3
- package/dist/repositories/network-repository.js.map +1 -1
- package/dist/utils/locale.d.ts +50 -7
- package/dist/utils/locale.d.ts.map +1 -1
- package/dist/utils/locale.js +83 -15
- package/dist/utils/locale.js.map +1 -1
- package/dist/utils/log-safe.d.ts +92 -0
- package/dist/utils/log-safe.d.ts.map +1 -0
- package/dist/utils/log-safe.js +168 -0
- package/dist/utils/log-safe.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +7 -3
|
@@ -34,14 +34,18 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
34
34
|
// src/index.ts
|
|
35
35
|
var index_exports = {};
|
|
36
36
|
__export(index_exports, {
|
|
37
|
+
CORE_CACHE_ENTRY_PREFIX: () => CORE_CACHE_ENTRY_PREFIX,
|
|
38
|
+
CORE_CACHE_NAMES: () => CORE_CACHE_NAMES,
|
|
37
39
|
CacheManager: () => CacheManager,
|
|
38
40
|
CacheStorageRepository: () => CacheStorageRepository,
|
|
39
41
|
Colors: () => Colors,
|
|
40
42
|
ContentValidator: () => ContentValidator,
|
|
43
|
+
DEFAULT_API_BASE_URL: () => DEFAULT_API_BASE_URL,
|
|
41
44
|
EventEmitter: () => EventEmitter,
|
|
42
45
|
ExcludeFilter: () => ExcludeFilter,
|
|
43
46
|
HTMLSerializer: () => HTMLSerializer,
|
|
44
47
|
HandlerChain: () => HandlerChain,
|
|
48
|
+
ISO639_2_TO_1: () => ISO639_2_TO_1,
|
|
45
49
|
LOCALE_TAG_REGEX: () => LOCALE_TAG_REGEX,
|
|
46
50
|
LionRapidBuilder: () => LionRapidBuilder,
|
|
47
51
|
LionRapidCore: () => LionRapidCore,
|
|
@@ -70,6 +74,7 @@ __export(index_exports, {
|
|
|
70
74
|
isClientError: () => isClientError,
|
|
71
75
|
isRetryableError: () => isRetryableError,
|
|
72
76
|
isTranslationError: () => isTranslationError,
|
|
77
|
+
localeCandidates: () => localeCandidates,
|
|
73
78
|
localeDir: () => localeDir,
|
|
74
79
|
logger: () => logger,
|
|
75
80
|
matchLocale: () => matchLocale,
|
|
@@ -94,6 +99,216 @@ __export(index_exports, {
|
|
|
94
99
|
});
|
|
95
100
|
module.exports = __toCommonJS(index_exports);
|
|
96
101
|
|
|
102
|
+
// src/browser/md5.ts
|
|
103
|
+
function safeAdd(x, y) {
|
|
104
|
+
const lsw = (x & 65535) + (y & 65535);
|
|
105
|
+
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
106
|
+
return msw << 16 | lsw & 65535;
|
|
107
|
+
}
|
|
108
|
+
function bitRotateLeft(num, cnt) {
|
|
109
|
+
return num << cnt | num >>> 32 - cnt;
|
|
110
|
+
}
|
|
111
|
+
function md5cmn(q, a, b, x, s, t) {
|
|
112
|
+
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
113
|
+
}
|
|
114
|
+
function md5ff(a, b, c, d, x, s, t) {
|
|
115
|
+
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
116
|
+
}
|
|
117
|
+
function md5gg(a, b, c, d, x, s, t) {
|
|
118
|
+
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
119
|
+
}
|
|
120
|
+
function md5hh(a, b, c, d, x, s, t) {
|
|
121
|
+
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
122
|
+
}
|
|
123
|
+
function md5ii(a, b, c, d, x, s, t) {
|
|
124
|
+
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
125
|
+
}
|
|
126
|
+
function binlMD5(x, len) {
|
|
127
|
+
x[len >> 5] |= 128 << len % 32;
|
|
128
|
+
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
129
|
+
let a = 1732584193;
|
|
130
|
+
let b = -271733879;
|
|
131
|
+
let c = -1732584194;
|
|
132
|
+
let d = 271733878;
|
|
133
|
+
for (let i = 0; i < x.length; i += 16) {
|
|
134
|
+
const olda = a;
|
|
135
|
+
const oldb = b;
|
|
136
|
+
const oldc = c;
|
|
137
|
+
const oldd = d;
|
|
138
|
+
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
139
|
+
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
140
|
+
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
141
|
+
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
142
|
+
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
143
|
+
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
144
|
+
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
145
|
+
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
146
|
+
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
147
|
+
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
148
|
+
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
149
|
+
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
150
|
+
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
151
|
+
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
152
|
+
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
153
|
+
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
154
|
+
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
155
|
+
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
156
|
+
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
157
|
+
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
158
|
+
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
159
|
+
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
160
|
+
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
161
|
+
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
162
|
+
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
163
|
+
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
164
|
+
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
165
|
+
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
166
|
+
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
167
|
+
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
168
|
+
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
169
|
+
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
170
|
+
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
171
|
+
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
172
|
+
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
173
|
+
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
174
|
+
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
175
|
+
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
176
|
+
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
177
|
+
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
178
|
+
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
179
|
+
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
180
|
+
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
181
|
+
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
182
|
+
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
183
|
+
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
184
|
+
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
185
|
+
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
186
|
+
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
187
|
+
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
188
|
+
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
189
|
+
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
190
|
+
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
191
|
+
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
192
|
+
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
193
|
+
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
194
|
+
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
195
|
+
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
196
|
+
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
197
|
+
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
198
|
+
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
199
|
+
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
200
|
+
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
201
|
+
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
202
|
+
a = safeAdd(a, olda);
|
|
203
|
+
b = safeAdd(b, oldb);
|
|
204
|
+
c = safeAdd(c, oldc);
|
|
205
|
+
d = safeAdd(d, oldd);
|
|
206
|
+
}
|
|
207
|
+
return [a, b, c, d];
|
|
208
|
+
}
|
|
209
|
+
function binl2hex(binarray) {
|
|
210
|
+
const hexTab = "0123456789abcdef";
|
|
211
|
+
let str = "";
|
|
212
|
+
for (let i = 0; i < binarray.length * 4; i++) {
|
|
213
|
+
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
214
|
+
}
|
|
215
|
+
return str;
|
|
216
|
+
}
|
|
217
|
+
function utf8Bytes(str) {
|
|
218
|
+
if (typeof TextEncoder !== "undefined") {
|
|
219
|
+
return new TextEncoder().encode(str);
|
|
220
|
+
}
|
|
221
|
+
const out = [];
|
|
222
|
+
for (let i = 0; i < str.length; i++) {
|
|
223
|
+
const c = str.charCodeAt(i);
|
|
224
|
+
if (c < 128) {
|
|
225
|
+
out.push(c);
|
|
226
|
+
} else if (c < 2048) {
|
|
227
|
+
out.push(192 | c >> 6, 128 | c & 63);
|
|
228
|
+
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
229
|
+
const c2 = str.charCodeAt(++i);
|
|
230
|
+
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
231
|
+
out.push(
|
|
232
|
+
240 | cp >> 18,
|
|
233
|
+
128 | cp >> 12 & 63,
|
|
234
|
+
128 | cp >> 6 & 63,
|
|
235
|
+
128 | cp & 63
|
|
236
|
+
);
|
|
237
|
+
} else {
|
|
238
|
+
out.push(
|
|
239
|
+
224 | c >> 12,
|
|
240
|
+
128 | c >> 6 & 63,
|
|
241
|
+
128 | c & 63
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return new Uint8Array(out);
|
|
246
|
+
}
|
|
247
|
+
function bytes2binl(bytes) {
|
|
248
|
+
const bin = [];
|
|
249
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
250
|
+
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
251
|
+
}
|
|
252
|
+
return bin;
|
|
253
|
+
}
|
|
254
|
+
function md5(str) {
|
|
255
|
+
const bytes = utf8Bytes(str);
|
|
256
|
+
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
257
|
+
}
|
|
258
|
+
function generateAutoKey(text) {
|
|
259
|
+
const trimmed = text.trim();
|
|
260
|
+
return "auto_" + md5(trimmed).substring(0, 12);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// src/utils/log-safe.ts
|
|
264
|
+
var LOG_VALUE_FULL_MAX = 200;
|
|
265
|
+
var LOG_VALUE_EDGE = 90;
|
|
266
|
+
function contentIdentity(value) {
|
|
267
|
+
return `${value.length} chars, md5:${md5(value.trim()).slice(0, 12)}`;
|
|
268
|
+
}
|
|
269
|
+
function contentExcerpt(value) {
|
|
270
|
+
if (value.length <= LOG_VALUE_FULL_MAX) {
|
|
271
|
+
return JSON.stringify(value);
|
|
272
|
+
}
|
|
273
|
+
return JSON.stringify(
|
|
274
|
+
`${value.slice(0, LOG_VALUE_EDGE)}\u2026${value.slice(-LOG_VALUE_EDGE)}`
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
var LOG_ERROR_MAX = 200;
|
|
278
|
+
var LOG_DATA_MAX = 500;
|
|
279
|
+
var LOG_STACK_FRAMES = 2;
|
|
280
|
+
var LOG_FRAME_MAX = 120;
|
|
281
|
+
function bound(text, max) {
|
|
282
|
+
return text.length <= max ? text : `${text.slice(0, max)}\u2026 (${text.length} chars)`;
|
|
283
|
+
}
|
|
284
|
+
function oneLine(text) {
|
|
285
|
+
return JSON.stringify(text).slice(1, -1);
|
|
286
|
+
}
|
|
287
|
+
function describeError(error) {
|
|
288
|
+
if (error instanceof Error) {
|
|
289
|
+
const name = error.name || "Error";
|
|
290
|
+
return bound(oneLine(`${name}: ${error.message}`), LOG_ERROR_MAX);
|
|
291
|
+
}
|
|
292
|
+
return bound(oneLine(String(error)), LOG_ERROR_MAX);
|
|
293
|
+
}
|
|
294
|
+
function describeLogData(data) {
|
|
295
|
+
if (data instanceof Error) {
|
|
296
|
+
const headerLines = String(data.message ?? "").split("\n").length;
|
|
297
|
+
const frames = (data.stack ?? "").split("\n").slice(headerLines).map((frame) => frame.trim()).filter((frame) => frame.startsWith("at ")).slice(0, LOG_STACK_FRAMES).map((frame) => bound(frame, LOG_FRAME_MAX));
|
|
298
|
+
return [describeError(data), ...frames].join(" | ");
|
|
299
|
+
}
|
|
300
|
+
let rendered;
|
|
301
|
+
try {
|
|
302
|
+
rendered = JSON.stringify(data);
|
|
303
|
+
} catch {
|
|
304
|
+
return "[unserializable]";
|
|
305
|
+
}
|
|
306
|
+
return bound(rendered ?? oneLine(String(data)), LOG_DATA_MAX);
|
|
307
|
+
}
|
|
308
|
+
function describeContent(value) {
|
|
309
|
+
return `${contentIdentity(value)}, ${contentExcerpt(value)}`;
|
|
310
|
+
}
|
|
311
|
+
|
|
97
312
|
// src/config/logger.config.ts
|
|
98
313
|
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
99
314
|
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
@@ -221,7 +436,7 @@ var DevelopmentLogger = class _DevelopmentLogger {
|
|
|
221
436
|
const locationInfo2 = callSite ? ` (${callSite.fileName}:${callSite.lineNumber})` : "";
|
|
222
437
|
let logMessage = `${this.config.prefix} ${emoji} ${levelName} ${message}${locationInfo2}`;
|
|
223
438
|
if (data !== void 0) {
|
|
224
|
-
logMessage += ` ${
|
|
439
|
+
logMessage += ` ${describeLogData(data)}`;
|
|
225
440
|
}
|
|
226
441
|
return logMessage;
|
|
227
442
|
}
|
|
@@ -232,7 +447,7 @@ var DevelopmentLogger = class _DevelopmentLogger {
|
|
|
232
447
|
const coloredLevel = `${levelColor}${Colors.BOLD}${levelName}${reset}`;
|
|
233
448
|
const coloredMessage = `${levelColor}${message}${reset}`;
|
|
234
449
|
const locationInfo = callSite ? `${Colors.DIM}${Colors.BRIGHT_BLACK} (${callSite.fileName}:${callSite.lineNumber})${reset}` : "";
|
|
235
|
-
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${
|
|
450
|
+
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${describeLogData(data)}${reset}` : "";
|
|
236
451
|
return `${coloredPrefix} ${coloredEmoji} ${coloredLevel} ${coloredMessage}${locationInfo}${dataInfo}`;
|
|
237
452
|
}
|
|
238
453
|
getLevelColor(level) {
|
|
@@ -463,6 +678,65 @@ function normalizeLocale(tag) {
|
|
|
463
678
|
}
|
|
464
679
|
return out.join("-");
|
|
465
680
|
}
|
|
681
|
+
var ISO639_2_TO_1 = Object.freeze({
|
|
682
|
+
ara: "ar",
|
|
683
|
+
ben: "bn",
|
|
684
|
+
bul: "bg",
|
|
685
|
+
ces: "cs",
|
|
686
|
+
cmn: "zh",
|
|
687
|
+
dan: "da",
|
|
688
|
+
deu: "de",
|
|
689
|
+
ell: "el",
|
|
690
|
+
eng: "en",
|
|
691
|
+
est: "et",
|
|
692
|
+
fas: "fa",
|
|
693
|
+
fin: "fi",
|
|
694
|
+
fra: "fr",
|
|
695
|
+
heb: "he",
|
|
696
|
+
hin: "hi",
|
|
697
|
+
hrv: "hr",
|
|
698
|
+
hun: "hu",
|
|
699
|
+
ind: "id",
|
|
700
|
+
isl: "is",
|
|
701
|
+
ita: "it",
|
|
702
|
+
jpn: "ja",
|
|
703
|
+
kor: "ko",
|
|
704
|
+
lav: "lv",
|
|
705
|
+
lit: "lt",
|
|
706
|
+
msa: "ms",
|
|
707
|
+
nld: "nl",
|
|
708
|
+
nor: "no",
|
|
709
|
+
pol: "pl",
|
|
710
|
+
por: "pt",
|
|
711
|
+
ron: "ro",
|
|
712
|
+
rus: "ru",
|
|
713
|
+
slk: "sk",
|
|
714
|
+
slv: "sl",
|
|
715
|
+
spa: "es",
|
|
716
|
+
srp: "sr",
|
|
717
|
+
swe: "sv",
|
|
718
|
+
tha: "th",
|
|
719
|
+
tur: "tr",
|
|
720
|
+
ukr: "uk",
|
|
721
|
+
urd: "ur",
|
|
722
|
+
vie: "vi",
|
|
723
|
+
yid: "yi",
|
|
724
|
+
zho: "zh"
|
|
725
|
+
});
|
|
726
|
+
function localeCandidates(tag) {
|
|
727
|
+
const normalized = tag.trim().toLowerCase();
|
|
728
|
+
if (!normalized) return [];
|
|
729
|
+
const parts = normalized.split("-");
|
|
730
|
+
const out = [];
|
|
731
|
+
while (parts.length > 0) {
|
|
732
|
+
const candidate = parts.join("-");
|
|
733
|
+
if (!out.includes(candidate)) out.push(candidate);
|
|
734
|
+
const twoLetter = ISO639_2_TO_1[candidate];
|
|
735
|
+
if (twoLetter && !out.includes(twoLetter)) out.push(twoLetter);
|
|
736
|
+
parts.pop();
|
|
737
|
+
}
|
|
738
|
+
return out;
|
|
739
|
+
}
|
|
466
740
|
function matchLocale(requested, available, fallback) {
|
|
467
741
|
if (available.length === 0) return fallback;
|
|
468
742
|
const avail = available.map((raw) => ({
|
|
@@ -471,12 +745,10 @@ function matchLocale(requested, available, fallback) {
|
|
|
471
745
|
}));
|
|
472
746
|
for (const req of requested) {
|
|
473
747
|
if (!req) continue;
|
|
474
|
-
const
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
const byPrimary = avail.find((a) => a.lower === primary);
|
|
479
|
-
if (byPrimary) return byPrimary.raw;
|
|
748
|
+
for (const candidate of localeCandidates(req)) {
|
|
749
|
+
const hit = avail.find((a) => a.lower === candidate);
|
|
750
|
+
if (hit) return hit.raw;
|
|
751
|
+
}
|
|
480
752
|
}
|
|
481
753
|
return fallback;
|
|
482
754
|
}
|
|
@@ -2296,6 +2568,15 @@ var NetworkHandler = class {
|
|
|
2296
2568
|
const config = this.repository.getConfig();
|
|
2297
2569
|
return config.options?.preloadNamespaces || [];
|
|
2298
2570
|
}
|
|
2571
|
+
/**
|
|
2572
|
+
* The host this handler talks to. Exposed so a failure can NAME it: "the
|
|
2573
|
+
* server is unreachable" is not actionable, and a default pointing at a dead
|
|
2574
|
+
* host is exactly the case where the reader needs to be told which host.
|
|
2575
|
+
*/
|
|
2576
|
+
getBaseUrl() {
|
|
2577
|
+
const config = this.repository.getConfig();
|
|
2578
|
+
return config.options?.baseUrl || "";
|
|
2579
|
+
}
|
|
2299
2580
|
};
|
|
2300
2581
|
|
|
2301
2582
|
// src/content/canonical-tag.ts
|
|
@@ -3168,7 +3449,9 @@ var LionRapidCore = class {
|
|
|
3168
3449
|
const processedText = this.processTranslationValue(unit.text, request);
|
|
3169
3450
|
return processedText.replace(/<\/?[0-9]+\/?>/g, "");
|
|
3170
3451
|
} catch (error) {
|
|
3171
|
-
logger.warn(
|
|
3452
|
+
logger.warn(
|
|
3453
|
+
`ContentUnit processing failed for key "${request.cleanKey}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3454
|
+
);
|
|
3172
3455
|
return this.processTranslationValue(value, request);
|
|
3173
3456
|
}
|
|
3174
3457
|
}
|
|
@@ -3221,7 +3504,9 @@ var LionRapidCore = class {
|
|
|
3221
3504
|
}
|
|
3222
3505
|
return processedValue;
|
|
3223
3506
|
} catch (error) {
|
|
3224
|
-
logger.warn(
|
|
3507
|
+
logger.warn(
|
|
3508
|
+
`Translation processing failed for key "${resolvedKey ?? "(no key)"}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3509
|
+
);
|
|
3225
3510
|
return value;
|
|
3226
3511
|
}
|
|
3227
3512
|
}
|
|
@@ -3938,8 +4223,9 @@ var LionRapidBuilder = class _LionRapidBuilder {
|
|
|
3938
4223
|
const warnLoudlyOnce = (namespaceKey, error) => {
|
|
3939
4224
|
if (!isLoudPreloadFailure(error) || warnedLoudly) return;
|
|
3940
4225
|
warnedLoudly = true;
|
|
4226
|
+
const baseUrl = networkHandler.getBaseUrl() || "(no base URL configured)";
|
|
3941
4227
|
console.warn(
|
|
3942
|
-
`[LionRapid] Could not load translations for ${namespaceKey} \u2014 the page stays untranslated until
|
|
4228
|
+
`[LionRapid] Could not load translations for ${namespaceKey} from ${baseUrl} \u2014 the page stays untranslated until that host is reachable. If it is wrong, set data-base-url on the snippet tag (or \`baseUrl\` in the network repository options).`,
|
|
3943
4229
|
error
|
|
3944
4230
|
);
|
|
3945
4231
|
};
|
|
@@ -4067,7 +4353,7 @@ var _NetworkRepository = class _NetworkRepository {
|
|
|
4067
4353
|
throw new TranslationNotFoundError(key);
|
|
4068
4354
|
}
|
|
4069
4355
|
if (typeof translation === "object" && "text" in translation) {
|
|
4070
|
-
logger.debug(`ContentUnit text:
|
|
4356
|
+
logger.debug(`ContentUnit text: ${describeContent(translation.text)}`);
|
|
4071
4357
|
return translation.text;
|
|
4072
4358
|
}
|
|
4073
4359
|
return String(translation);
|
|
@@ -4102,13 +4388,18 @@ var _NetworkRepository = class _NetworkRepository {
|
|
|
4102
4388
|
throw new TranslationNotFoundError(key);
|
|
4103
4389
|
}
|
|
4104
4390
|
if (typeof translation === "object" && "text" in translation) {
|
|
4105
|
-
logger.debug(
|
|
4391
|
+
logger.debug(
|
|
4392
|
+
`ContentUnit for "${key}": text=${describeContent(translation.text)}, styles=`,
|
|
4393
|
+
translation.styles
|
|
4394
|
+
);
|
|
4106
4395
|
return {
|
|
4107
4396
|
text: translation.text,
|
|
4108
4397
|
styles: translation.styles || {}
|
|
4109
4398
|
};
|
|
4110
4399
|
}
|
|
4111
|
-
logger.debug(
|
|
4400
|
+
logger.debug(
|
|
4401
|
+
`Plain string for "${key}": ${describeContent(String(translation))} (no styles)`
|
|
4402
|
+
);
|
|
4112
4403
|
return {
|
|
4113
4404
|
text: String(translation),
|
|
4114
4405
|
styles: {}
|
|
@@ -4916,167 +5207,6 @@ function replaceBlockInners(html, replacements) {
|
|
|
4916
5207
|
return result;
|
|
4917
5208
|
}
|
|
4918
5209
|
|
|
4919
|
-
// src/browser/md5.ts
|
|
4920
|
-
function safeAdd(x, y) {
|
|
4921
|
-
const lsw = (x & 65535) + (y & 65535);
|
|
4922
|
-
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
4923
|
-
return msw << 16 | lsw & 65535;
|
|
4924
|
-
}
|
|
4925
|
-
function bitRotateLeft(num, cnt) {
|
|
4926
|
-
return num << cnt | num >>> 32 - cnt;
|
|
4927
|
-
}
|
|
4928
|
-
function md5cmn(q, a, b, x, s, t) {
|
|
4929
|
-
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
4930
|
-
}
|
|
4931
|
-
function md5ff(a, b, c, d, x, s, t) {
|
|
4932
|
-
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
4933
|
-
}
|
|
4934
|
-
function md5gg(a, b, c, d, x, s, t) {
|
|
4935
|
-
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
4936
|
-
}
|
|
4937
|
-
function md5hh(a, b, c, d, x, s, t) {
|
|
4938
|
-
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
4939
|
-
}
|
|
4940
|
-
function md5ii(a, b, c, d, x, s, t) {
|
|
4941
|
-
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
4942
|
-
}
|
|
4943
|
-
function binlMD5(x, len) {
|
|
4944
|
-
x[len >> 5] |= 128 << len % 32;
|
|
4945
|
-
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
4946
|
-
let a = 1732584193;
|
|
4947
|
-
let b = -271733879;
|
|
4948
|
-
let c = -1732584194;
|
|
4949
|
-
let d = 271733878;
|
|
4950
|
-
for (let i = 0; i < x.length; i += 16) {
|
|
4951
|
-
const olda = a;
|
|
4952
|
-
const oldb = b;
|
|
4953
|
-
const oldc = c;
|
|
4954
|
-
const oldd = d;
|
|
4955
|
-
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
4956
|
-
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
4957
|
-
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
4958
|
-
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
4959
|
-
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
4960
|
-
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
4961
|
-
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
4962
|
-
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
4963
|
-
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
4964
|
-
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
4965
|
-
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
4966
|
-
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
4967
|
-
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
4968
|
-
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
4969
|
-
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
4970
|
-
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
4971
|
-
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
4972
|
-
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
4973
|
-
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
4974
|
-
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
4975
|
-
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
4976
|
-
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
4977
|
-
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
4978
|
-
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
4979
|
-
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
4980
|
-
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
4981
|
-
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
4982
|
-
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
4983
|
-
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
4984
|
-
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
4985
|
-
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
4986
|
-
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
4987
|
-
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
4988
|
-
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
4989
|
-
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
4990
|
-
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
4991
|
-
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
4992
|
-
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
4993
|
-
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
4994
|
-
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
4995
|
-
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
4996
|
-
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
4997
|
-
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
4998
|
-
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
4999
|
-
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
5000
|
-
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
5001
|
-
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
5002
|
-
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
5003
|
-
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
5004
|
-
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
5005
|
-
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
5006
|
-
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
5007
|
-
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
5008
|
-
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
5009
|
-
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
5010
|
-
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
5011
|
-
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
5012
|
-
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
5013
|
-
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
5014
|
-
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
5015
|
-
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
5016
|
-
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
5017
|
-
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
5018
|
-
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
5019
|
-
a = safeAdd(a, olda);
|
|
5020
|
-
b = safeAdd(b, oldb);
|
|
5021
|
-
c = safeAdd(c, oldc);
|
|
5022
|
-
d = safeAdd(d, oldd);
|
|
5023
|
-
}
|
|
5024
|
-
return [a, b, c, d];
|
|
5025
|
-
}
|
|
5026
|
-
function binl2hex(binarray) {
|
|
5027
|
-
const hexTab = "0123456789abcdef";
|
|
5028
|
-
let str = "";
|
|
5029
|
-
for (let i = 0; i < binarray.length * 4; i++) {
|
|
5030
|
-
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
5031
|
-
}
|
|
5032
|
-
return str;
|
|
5033
|
-
}
|
|
5034
|
-
function utf8Bytes(str) {
|
|
5035
|
-
if (typeof TextEncoder !== "undefined") {
|
|
5036
|
-
return new TextEncoder().encode(str);
|
|
5037
|
-
}
|
|
5038
|
-
const out = [];
|
|
5039
|
-
for (let i = 0; i < str.length; i++) {
|
|
5040
|
-
const c = str.charCodeAt(i);
|
|
5041
|
-
if (c < 128) {
|
|
5042
|
-
out.push(c);
|
|
5043
|
-
} else if (c < 2048) {
|
|
5044
|
-
out.push(192 | c >> 6, 128 | c & 63);
|
|
5045
|
-
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
5046
|
-
const c2 = str.charCodeAt(++i);
|
|
5047
|
-
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
5048
|
-
out.push(
|
|
5049
|
-
240 | cp >> 18,
|
|
5050
|
-
128 | cp >> 12 & 63,
|
|
5051
|
-
128 | cp >> 6 & 63,
|
|
5052
|
-
128 | cp & 63
|
|
5053
|
-
);
|
|
5054
|
-
} else {
|
|
5055
|
-
out.push(
|
|
5056
|
-
224 | c >> 12,
|
|
5057
|
-
128 | c >> 6 & 63,
|
|
5058
|
-
128 | c & 63
|
|
5059
|
-
);
|
|
5060
|
-
}
|
|
5061
|
-
}
|
|
5062
|
-
return new Uint8Array(out);
|
|
5063
|
-
}
|
|
5064
|
-
function bytes2binl(bytes) {
|
|
5065
|
-
const bin = [];
|
|
5066
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
5067
|
-
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
5068
|
-
}
|
|
5069
|
-
return bin;
|
|
5070
|
-
}
|
|
5071
|
-
function md5(str) {
|
|
5072
|
-
const bytes = utf8Bytes(str);
|
|
5073
|
-
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
5074
|
-
}
|
|
5075
|
-
function generateAutoKey(text) {
|
|
5076
|
-
const trimmed = text.trim();
|
|
5077
|
-
return "auto_" + md5(trimmed).substring(0, 12);
|
|
5078
|
-
}
|
|
5079
|
-
|
|
5080
5210
|
// src/browser/exclude-filter.ts
|
|
5081
5211
|
var DEFAULT_PATTERNS = {
|
|
5082
5212
|
emails: true,
|
|
@@ -5475,9 +5605,16 @@ var LocalStorageRepository = class {
|
|
|
5475
5605
|
}
|
|
5476
5606
|
};
|
|
5477
5607
|
|
|
5608
|
+
// src/browser/storage/cache-names.ts
|
|
5609
|
+
var CORE_CACHE_NAMES = Object.freeze({
|
|
5610
|
+
translations: "lionrapid-v1",
|
|
5611
|
+
offlineFloor: "lionrapid-offline-v1"
|
|
5612
|
+
});
|
|
5613
|
+
var CORE_CACHE_ENTRY_PREFIX = "https://cache.lionrapid.internal/";
|
|
5614
|
+
|
|
5478
5615
|
// src/browser/storage/cache-storage-repository.ts
|
|
5479
|
-
var CACHE_NAME =
|
|
5480
|
-
var CACHE_PREFIX =
|
|
5616
|
+
var CACHE_NAME = CORE_CACHE_NAMES.translations;
|
|
5617
|
+
var CACHE_PREFIX = CORE_CACHE_ENTRY_PREFIX;
|
|
5481
5618
|
var CacheStorageRepository = class {
|
|
5482
5619
|
constructor(config = {}) {
|
|
5483
5620
|
__publicField(this, "name", "CacheStorageRepository");
|
|
@@ -5677,8 +5814,11 @@ var CacheStorageRepository = class {
|
|
|
5677
5814
|
}
|
|
5678
5815
|
};
|
|
5679
5816
|
|
|
5817
|
+
// src/config/api.config.ts
|
|
5818
|
+
var DEFAULT_API_BASE_URL = "https://app.lionrapid.com";
|
|
5819
|
+
|
|
5680
5820
|
// src/index.ts
|
|
5681
|
-
var VERSION = "
|
|
5821
|
+
var VERSION = "0.6.6";
|
|
5682
5822
|
//# sourceMappingURL=lionrapid.umd.js.map
|
|
5683
5823
|
|
|
5684
5824
|
return exports;
|