@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
|
@@ -23,14 +23,18 @@ var LionRapid = (() => {
|
|
|
23
23
|
// src/index.ts
|
|
24
24
|
var index_exports = {};
|
|
25
25
|
__export(index_exports, {
|
|
26
|
+
CORE_CACHE_ENTRY_PREFIX: () => CORE_CACHE_ENTRY_PREFIX,
|
|
27
|
+
CORE_CACHE_NAMES: () => CORE_CACHE_NAMES,
|
|
26
28
|
CacheManager: () => CacheManager,
|
|
27
29
|
CacheStorageRepository: () => CacheStorageRepository,
|
|
28
30
|
Colors: () => Colors,
|
|
29
31
|
ContentValidator: () => ContentValidator,
|
|
32
|
+
DEFAULT_API_BASE_URL: () => DEFAULT_API_BASE_URL,
|
|
30
33
|
EventEmitter: () => EventEmitter,
|
|
31
34
|
ExcludeFilter: () => ExcludeFilter,
|
|
32
35
|
HTMLSerializer: () => HTMLSerializer,
|
|
33
36
|
HandlerChain: () => HandlerChain,
|
|
37
|
+
ISO639_2_TO_1: () => ISO639_2_TO_1,
|
|
34
38
|
LOCALE_TAG_REGEX: () => LOCALE_TAG_REGEX,
|
|
35
39
|
LionRapidBuilder: () => LionRapidBuilder,
|
|
36
40
|
LionRapidCore: () => LionRapidCore,
|
|
@@ -59,6 +63,7 @@ var LionRapid = (() => {
|
|
|
59
63
|
isClientError: () => isClientError,
|
|
60
64
|
isRetryableError: () => isRetryableError,
|
|
61
65
|
isTranslationError: () => isTranslationError,
|
|
66
|
+
localeCandidates: () => localeCandidates,
|
|
62
67
|
localeDir: () => localeDir,
|
|
63
68
|
logger: () => logger,
|
|
64
69
|
matchLocale: () => matchLocale,
|
|
@@ -82,6 +87,216 @@ var LionRapid = (() => {
|
|
|
82
87
|
splitBlocks: () => splitBlocks
|
|
83
88
|
});
|
|
84
89
|
|
|
90
|
+
// src/browser/md5.ts
|
|
91
|
+
function safeAdd(x, y) {
|
|
92
|
+
const lsw = (x & 65535) + (y & 65535);
|
|
93
|
+
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
94
|
+
return msw << 16 | lsw & 65535;
|
|
95
|
+
}
|
|
96
|
+
function bitRotateLeft(num, cnt) {
|
|
97
|
+
return num << cnt | num >>> 32 - cnt;
|
|
98
|
+
}
|
|
99
|
+
function md5cmn(q, a, b, x, s, t) {
|
|
100
|
+
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
101
|
+
}
|
|
102
|
+
function md5ff(a, b, c, d, x, s, t) {
|
|
103
|
+
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
104
|
+
}
|
|
105
|
+
function md5gg(a, b, c, d, x, s, t) {
|
|
106
|
+
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
107
|
+
}
|
|
108
|
+
function md5hh(a, b, c, d, x, s, t) {
|
|
109
|
+
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
110
|
+
}
|
|
111
|
+
function md5ii(a, b, c, d, x, s, t) {
|
|
112
|
+
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
113
|
+
}
|
|
114
|
+
function binlMD5(x, len) {
|
|
115
|
+
x[len >> 5] |= 128 << len % 32;
|
|
116
|
+
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
117
|
+
let a = 1732584193;
|
|
118
|
+
let b = -271733879;
|
|
119
|
+
let c = -1732584194;
|
|
120
|
+
let d = 271733878;
|
|
121
|
+
for (let i = 0; i < x.length; i += 16) {
|
|
122
|
+
const olda = a;
|
|
123
|
+
const oldb = b;
|
|
124
|
+
const oldc = c;
|
|
125
|
+
const oldd = d;
|
|
126
|
+
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
127
|
+
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
128
|
+
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
129
|
+
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
130
|
+
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
131
|
+
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
132
|
+
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
133
|
+
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
134
|
+
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
135
|
+
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
136
|
+
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
137
|
+
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
138
|
+
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
139
|
+
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
140
|
+
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
141
|
+
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
142
|
+
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
143
|
+
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
144
|
+
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
145
|
+
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
146
|
+
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
147
|
+
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
148
|
+
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
149
|
+
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
150
|
+
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
151
|
+
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
152
|
+
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
153
|
+
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
154
|
+
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
155
|
+
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
156
|
+
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
157
|
+
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
158
|
+
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
159
|
+
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
160
|
+
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
161
|
+
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
162
|
+
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
163
|
+
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
164
|
+
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
165
|
+
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
166
|
+
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
167
|
+
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
168
|
+
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
169
|
+
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
170
|
+
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
171
|
+
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
172
|
+
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
173
|
+
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
174
|
+
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
175
|
+
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
176
|
+
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
177
|
+
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
178
|
+
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
179
|
+
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
180
|
+
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
181
|
+
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
182
|
+
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
183
|
+
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
184
|
+
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
185
|
+
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
186
|
+
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
187
|
+
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
188
|
+
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
189
|
+
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
190
|
+
a = safeAdd(a, olda);
|
|
191
|
+
b = safeAdd(b, oldb);
|
|
192
|
+
c = safeAdd(c, oldc);
|
|
193
|
+
d = safeAdd(d, oldd);
|
|
194
|
+
}
|
|
195
|
+
return [a, b, c, d];
|
|
196
|
+
}
|
|
197
|
+
function binl2hex(binarray) {
|
|
198
|
+
const hexTab = "0123456789abcdef";
|
|
199
|
+
let str = "";
|
|
200
|
+
for (let i = 0; i < binarray.length * 4; i++) {
|
|
201
|
+
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
202
|
+
}
|
|
203
|
+
return str;
|
|
204
|
+
}
|
|
205
|
+
function utf8Bytes(str) {
|
|
206
|
+
if (typeof TextEncoder !== "undefined") {
|
|
207
|
+
return new TextEncoder().encode(str);
|
|
208
|
+
}
|
|
209
|
+
const out = [];
|
|
210
|
+
for (let i = 0; i < str.length; i++) {
|
|
211
|
+
const c = str.charCodeAt(i);
|
|
212
|
+
if (c < 128) {
|
|
213
|
+
out.push(c);
|
|
214
|
+
} else if (c < 2048) {
|
|
215
|
+
out.push(192 | c >> 6, 128 | c & 63);
|
|
216
|
+
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
217
|
+
const c2 = str.charCodeAt(++i);
|
|
218
|
+
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
219
|
+
out.push(
|
|
220
|
+
240 | cp >> 18,
|
|
221
|
+
128 | cp >> 12 & 63,
|
|
222
|
+
128 | cp >> 6 & 63,
|
|
223
|
+
128 | cp & 63
|
|
224
|
+
);
|
|
225
|
+
} else {
|
|
226
|
+
out.push(
|
|
227
|
+
224 | c >> 12,
|
|
228
|
+
128 | c >> 6 & 63,
|
|
229
|
+
128 | c & 63
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return new Uint8Array(out);
|
|
234
|
+
}
|
|
235
|
+
function bytes2binl(bytes) {
|
|
236
|
+
const bin = [];
|
|
237
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
238
|
+
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
239
|
+
}
|
|
240
|
+
return bin;
|
|
241
|
+
}
|
|
242
|
+
function md5(str) {
|
|
243
|
+
const bytes = utf8Bytes(str);
|
|
244
|
+
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
245
|
+
}
|
|
246
|
+
function generateAutoKey(text) {
|
|
247
|
+
const trimmed = text.trim();
|
|
248
|
+
return "auto_" + md5(trimmed).substring(0, 12);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// src/utils/log-safe.ts
|
|
252
|
+
var LOG_VALUE_FULL_MAX = 200;
|
|
253
|
+
var LOG_VALUE_EDGE = 90;
|
|
254
|
+
function contentIdentity(value) {
|
|
255
|
+
return `${value.length} chars, md5:${md5(value.trim()).slice(0, 12)}`;
|
|
256
|
+
}
|
|
257
|
+
function contentExcerpt(value) {
|
|
258
|
+
if (value.length <= LOG_VALUE_FULL_MAX) {
|
|
259
|
+
return JSON.stringify(value);
|
|
260
|
+
}
|
|
261
|
+
return JSON.stringify(
|
|
262
|
+
`${value.slice(0, LOG_VALUE_EDGE)}\u2026${value.slice(-LOG_VALUE_EDGE)}`
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
var LOG_ERROR_MAX = 200;
|
|
266
|
+
var LOG_DATA_MAX = 500;
|
|
267
|
+
var LOG_STACK_FRAMES = 2;
|
|
268
|
+
var LOG_FRAME_MAX = 120;
|
|
269
|
+
function bound(text, max) {
|
|
270
|
+
return text.length <= max ? text : `${text.slice(0, max)}\u2026 (${text.length} chars)`;
|
|
271
|
+
}
|
|
272
|
+
function oneLine(text) {
|
|
273
|
+
return JSON.stringify(text).slice(1, -1);
|
|
274
|
+
}
|
|
275
|
+
function describeError(error) {
|
|
276
|
+
if (error instanceof Error) {
|
|
277
|
+
const name = error.name || "Error";
|
|
278
|
+
return bound(oneLine(`${name}: ${error.message}`), LOG_ERROR_MAX);
|
|
279
|
+
}
|
|
280
|
+
return bound(oneLine(String(error)), LOG_ERROR_MAX);
|
|
281
|
+
}
|
|
282
|
+
function describeLogData(data) {
|
|
283
|
+
if (data instanceof Error) {
|
|
284
|
+
const headerLines = String(data.message ?? "").split("\n").length;
|
|
285
|
+
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));
|
|
286
|
+
return [describeError(data), ...frames].join(" | ");
|
|
287
|
+
}
|
|
288
|
+
let rendered;
|
|
289
|
+
try {
|
|
290
|
+
rendered = JSON.stringify(data);
|
|
291
|
+
} catch {
|
|
292
|
+
return "[unserializable]";
|
|
293
|
+
}
|
|
294
|
+
return bound(rendered ?? oneLine(String(data)), LOG_DATA_MAX);
|
|
295
|
+
}
|
|
296
|
+
function describeContent(value) {
|
|
297
|
+
return `${contentIdentity(value)}, ${contentExcerpt(value)}`;
|
|
298
|
+
}
|
|
299
|
+
|
|
85
300
|
// src/config/logger.config.ts
|
|
86
301
|
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
87
302
|
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
@@ -209,7 +424,7 @@ var LionRapid = (() => {
|
|
|
209
424
|
const locationInfo2 = callSite ? ` (${callSite.fileName}:${callSite.lineNumber})` : "";
|
|
210
425
|
let logMessage = `${this.config.prefix} ${emoji} ${levelName} ${message}${locationInfo2}`;
|
|
211
426
|
if (data !== void 0) {
|
|
212
|
-
logMessage += ` ${
|
|
427
|
+
logMessage += ` ${describeLogData(data)}`;
|
|
213
428
|
}
|
|
214
429
|
return logMessage;
|
|
215
430
|
}
|
|
@@ -220,7 +435,7 @@ var LionRapid = (() => {
|
|
|
220
435
|
const coloredLevel = `${levelColor}${Colors.BOLD}${levelName}${reset}`;
|
|
221
436
|
const coloredMessage = `${levelColor}${message}${reset}`;
|
|
222
437
|
const locationInfo = callSite ? `${Colors.DIM}${Colors.BRIGHT_BLACK} (${callSite.fileName}:${callSite.lineNumber})${reset}` : "";
|
|
223
|
-
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${
|
|
438
|
+
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${describeLogData(data)}${reset}` : "";
|
|
224
439
|
return `${coloredPrefix} ${coloredEmoji} ${coloredLevel} ${coloredMessage}${locationInfo}${dataInfo}`;
|
|
225
440
|
}
|
|
226
441
|
getLevelColor(level) {
|
|
@@ -451,6 +666,65 @@ var LionRapid = (() => {
|
|
|
451
666
|
}
|
|
452
667
|
return out.join("-");
|
|
453
668
|
}
|
|
669
|
+
var ISO639_2_TO_1 = Object.freeze({
|
|
670
|
+
ara: "ar",
|
|
671
|
+
ben: "bn",
|
|
672
|
+
bul: "bg",
|
|
673
|
+
ces: "cs",
|
|
674
|
+
cmn: "zh",
|
|
675
|
+
dan: "da",
|
|
676
|
+
deu: "de",
|
|
677
|
+
ell: "el",
|
|
678
|
+
eng: "en",
|
|
679
|
+
est: "et",
|
|
680
|
+
fas: "fa",
|
|
681
|
+
fin: "fi",
|
|
682
|
+
fra: "fr",
|
|
683
|
+
heb: "he",
|
|
684
|
+
hin: "hi",
|
|
685
|
+
hrv: "hr",
|
|
686
|
+
hun: "hu",
|
|
687
|
+
ind: "id",
|
|
688
|
+
isl: "is",
|
|
689
|
+
ita: "it",
|
|
690
|
+
jpn: "ja",
|
|
691
|
+
kor: "ko",
|
|
692
|
+
lav: "lv",
|
|
693
|
+
lit: "lt",
|
|
694
|
+
msa: "ms",
|
|
695
|
+
nld: "nl",
|
|
696
|
+
nor: "no",
|
|
697
|
+
pol: "pl",
|
|
698
|
+
por: "pt",
|
|
699
|
+
ron: "ro",
|
|
700
|
+
rus: "ru",
|
|
701
|
+
slk: "sk",
|
|
702
|
+
slv: "sl",
|
|
703
|
+
spa: "es",
|
|
704
|
+
srp: "sr",
|
|
705
|
+
swe: "sv",
|
|
706
|
+
tha: "th",
|
|
707
|
+
tur: "tr",
|
|
708
|
+
ukr: "uk",
|
|
709
|
+
urd: "ur",
|
|
710
|
+
vie: "vi",
|
|
711
|
+
yid: "yi",
|
|
712
|
+
zho: "zh"
|
|
713
|
+
});
|
|
714
|
+
function localeCandidates(tag) {
|
|
715
|
+
const normalized = tag.trim().toLowerCase();
|
|
716
|
+
if (!normalized) return [];
|
|
717
|
+
const parts = normalized.split("-");
|
|
718
|
+
const out = [];
|
|
719
|
+
while (parts.length > 0) {
|
|
720
|
+
const candidate = parts.join("-");
|
|
721
|
+
if (!out.includes(candidate)) out.push(candidate);
|
|
722
|
+
const twoLetter = ISO639_2_TO_1[candidate];
|
|
723
|
+
if (twoLetter && !out.includes(twoLetter)) out.push(twoLetter);
|
|
724
|
+
parts.pop();
|
|
725
|
+
}
|
|
726
|
+
return out;
|
|
727
|
+
}
|
|
454
728
|
function matchLocale(requested, available, fallback) {
|
|
455
729
|
if (available.length === 0) return fallback;
|
|
456
730
|
const avail = available.map((raw) => ({
|
|
@@ -459,12 +733,10 @@ var LionRapid = (() => {
|
|
|
459
733
|
}));
|
|
460
734
|
for (const req of requested) {
|
|
461
735
|
if (!req) continue;
|
|
462
|
-
const
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
const byPrimary = avail.find((a) => a.lower === primary);
|
|
467
|
-
if (byPrimary) return byPrimary.raw;
|
|
736
|
+
for (const candidate of localeCandidates(req)) {
|
|
737
|
+
const hit = avail.find((a) => a.lower === candidate);
|
|
738
|
+
if (hit) return hit.raw;
|
|
739
|
+
}
|
|
468
740
|
}
|
|
469
741
|
return fallback;
|
|
470
742
|
}
|
|
@@ -2284,6 +2556,15 @@ var LionRapid = (() => {
|
|
|
2284
2556
|
const config = this.repository.getConfig();
|
|
2285
2557
|
return config.options?.preloadNamespaces || [];
|
|
2286
2558
|
}
|
|
2559
|
+
/**
|
|
2560
|
+
* The host this handler talks to. Exposed so a failure can NAME it: "the
|
|
2561
|
+
* server is unreachable" is not actionable, and a default pointing at a dead
|
|
2562
|
+
* host is exactly the case where the reader needs to be told which host.
|
|
2563
|
+
*/
|
|
2564
|
+
getBaseUrl() {
|
|
2565
|
+
const config = this.repository.getConfig();
|
|
2566
|
+
return config.options?.baseUrl || "";
|
|
2567
|
+
}
|
|
2287
2568
|
};
|
|
2288
2569
|
|
|
2289
2570
|
// src/content/canonical-tag.ts
|
|
@@ -3156,7 +3437,9 @@ var LionRapid = (() => {
|
|
|
3156
3437
|
const processedText = this.processTranslationValue(unit.text, request);
|
|
3157
3438
|
return processedText.replace(/<\/?[0-9]+\/?>/g, "");
|
|
3158
3439
|
} catch (error) {
|
|
3159
|
-
logger.warn(
|
|
3440
|
+
logger.warn(
|
|
3441
|
+
`ContentUnit processing failed for key "${request.cleanKey}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3442
|
+
);
|
|
3160
3443
|
return this.processTranslationValue(value, request);
|
|
3161
3444
|
}
|
|
3162
3445
|
}
|
|
@@ -3209,7 +3492,9 @@ var LionRapid = (() => {
|
|
|
3209
3492
|
}
|
|
3210
3493
|
return processedValue;
|
|
3211
3494
|
} catch (error) {
|
|
3212
|
-
logger.warn(
|
|
3495
|
+
logger.warn(
|
|
3496
|
+
`Translation processing failed for key "${resolvedKey ?? "(no key)"}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3497
|
+
);
|
|
3213
3498
|
return value;
|
|
3214
3499
|
}
|
|
3215
3500
|
}
|
|
@@ -3926,8 +4211,9 @@ var LionRapid = (() => {
|
|
|
3926
4211
|
const warnLoudlyOnce = (namespaceKey, error) => {
|
|
3927
4212
|
if (!isLoudPreloadFailure(error) || warnedLoudly) return;
|
|
3928
4213
|
warnedLoudly = true;
|
|
4214
|
+
const baseUrl = networkHandler.getBaseUrl() || "(no base URL configured)";
|
|
3929
4215
|
console.warn(
|
|
3930
|
-
`[LionRapid] Could not load translations for ${namespaceKey} \u2014 the page stays untranslated until
|
|
4216
|
+
`[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).`,
|
|
3931
4217
|
error
|
|
3932
4218
|
);
|
|
3933
4219
|
};
|
|
@@ -4055,7 +4341,7 @@ var LionRapid = (() => {
|
|
|
4055
4341
|
throw new TranslationNotFoundError(key);
|
|
4056
4342
|
}
|
|
4057
4343
|
if (typeof translation === "object" && "text" in translation) {
|
|
4058
|
-
logger.debug(`ContentUnit text:
|
|
4344
|
+
logger.debug(`ContentUnit text: ${describeContent(translation.text)}`);
|
|
4059
4345
|
return translation.text;
|
|
4060
4346
|
}
|
|
4061
4347
|
return String(translation);
|
|
@@ -4090,13 +4376,18 @@ var LionRapid = (() => {
|
|
|
4090
4376
|
throw new TranslationNotFoundError(key);
|
|
4091
4377
|
}
|
|
4092
4378
|
if (typeof translation === "object" && "text" in translation) {
|
|
4093
|
-
logger.debug(
|
|
4379
|
+
logger.debug(
|
|
4380
|
+
`ContentUnit for "${key}": text=${describeContent(translation.text)}, styles=`,
|
|
4381
|
+
translation.styles
|
|
4382
|
+
);
|
|
4094
4383
|
return {
|
|
4095
4384
|
text: translation.text,
|
|
4096
4385
|
styles: translation.styles || {}
|
|
4097
4386
|
};
|
|
4098
4387
|
}
|
|
4099
|
-
logger.debug(
|
|
4388
|
+
logger.debug(
|
|
4389
|
+
`Plain string for "${key}": ${describeContent(String(translation))} (no styles)`
|
|
4390
|
+
);
|
|
4100
4391
|
return {
|
|
4101
4392
|
text: String(translation),
|
|
4102
4393
|
styles: {}
|
|
@@ -4904,167 +5195,6 @@ var LionRapid = (() => {
|
|
|
4904
5195
|
return result;
|
|
4905
5196
|
}
|
|
4906
5197
|
|
|
4907
|
-
// src/browser/md5.ts
|
|
4908
|
-
function safeAdd(x, y) {
|
|
4909
|
-
const lsw = (x & 65535) + (y & 65535);
|
|
4910
|
-
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
4911
|
-
return msw << 16 | lsw & 65535;
|
|
4912
|
-
}
|
|
4913
|
-
function bitRotateLeft(num, cnt) {
|
|
4914
|
-
return num << cnt | num >>> 32 - cnt;
|
|
4915
|
-
}
|
|
4916
|
-
function md5cmn(q, a, b, x, s, t) {
|
|
4917
|
-
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
4918
|
-
}
|
|
4919
|
-
function md5ff(a, b, c, d, x, s, t) {
|
|
4920
|
-
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
4921
|
-
}
|
|
4922
|
-
function md5gg(a, b, c, d, x, s, t) {
|
|
4923
|
-
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
4924
|
-
}
|
|
4925
|
-
function md5hh(a, b, c, d, x, s, t) {
|
|
4926
|
-
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
4927
|
-
}
|
|
4928
|
-
function md5ii(a, b, c, d, x, s, t) {
|
|
4929
|
-
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
4930
|
-
}
|
|
4931
|
-
function binlMD5(x, len) {
|
|
4932
|
-
x[len >> 5] |= 128 << len % 32;
|
|
4933
|
-
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
4934
|
-
let a = 1732584193;
|
|
4935
|
-
let b = -271733879;
|
|
4936
|
-
let c = -1732584194;
|
|
4937
|
-
let d = 271733878;
|
|
4938
|
-
for (let i = 0; i < x.length; i += 16) {
|
|
4939
|
-
const olda = a;
|
|
4940
|
-
const oldb = b;
|
|
4941
|
-
const oldc = c;
|
|
4942
|
-
const oldd = d;
|
|
4943
|
-
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
4944
|
-
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
4945
|
-
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
4946
|
-
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
4947
|
-
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
4948
|
-
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
4949
|
-
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
4950
|
-
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
4951
|
-
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
4952
|
-
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
4953
|
-
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
4954
|
-
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
4955
|
-
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
4956
|
-
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
4957
|
-
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
4958
|
-
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
4959
|
-
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
4960
|
-
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
4961
|
-
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
4962
|
-
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
4963
|
-
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
4964
|
-
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
4965
|
-
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
4966
|
-
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
4967
|
-
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
4968
|
-
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
4969
|
-
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
4970
|
-
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
4971
|
-
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
4972
|
-
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
4973
|
-
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
4974
|
-
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
4975
|
-
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
4976
|
-
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
4977
|
-
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
4978
|
-
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
4979
|
-
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
4980
|
-
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
4981
|
-
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
4982
|
-
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
4983
|
-
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
4984
|
-
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
4985
|
-
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
4986
|
-
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
4987
|
-
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
4988
|
-
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
4989
|
-
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
4990
|
-
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
4991
|
-
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
4992
|
-
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
4993
|
-
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
4994
|
-
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
4995
|
-
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
4996
|
-
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
4997
|
-
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
4998
|
-
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
4999
|
-
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
5000
|
-
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
5001
|
-
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
5002
|
-
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
5003
|
-
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
5004
|
-
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
5005
|
-
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
5006
|
-
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
5007
|
-
a = safeAdd(a, olda);
|
|
5008
|
-
b = safeAdd(b, oldb);
|
|
5009
|
-
c = safeAdd(c, oldc);
|
|
5010
|
-
d = safeAdd(d, oldd);
|
|
5011
|
-
}
|
|
5012
|
-
return [a, b, c, d];
|
|
5013
|
-
}
|
|
5014
|
-
function binl2hex(binarray) {
|
|
5015
|
-
const hexTab = "0123456789abcdef";
|
|
5016
|
-
let str = "";
|
|
5017
|
-
for (let i = 0; i < binarray.length * 4; i++) {
|
|
5018
|
-
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
5019
|
-
}
|
|
5020
|
-
return str;
|
|
5021
|
-
}
|
|
5022
|
-
function utf8Bytes(str) {
|
|
5023
|
-
if (typeof TextEncoder !== "undefined") {
|
|
5024
|
-
return new TextEncoder().encode(str);
|
|
5025
|
-
}
|
|
5026
|
-
const out = [];
|
|
5027
|
-
for (let i = 0; i < str.length; i++) {
|
|
5028
|
-
const c = str.charCodeAt(i);
|
|
5029
|
-
if (c < 128) {
|
|
5030
|
-
out.push(c);
|
|
5031
|
-
} else if (c < 2048) {
|
|
5032
|
-
out.push(192 | c >> 6, 128 | c & 63);
|
|
5033
|
-
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
5034
|
-
const c2 = str.charCodeAt(++i);
|
|
5035
|
-
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
5036
|
-
out.push(
|
|
5037
|
-
240 | cp >> 18,
|
|
5038
|
-
128 | cp >> 12 & 63,
|
|
5039
|
-
128 | cp >> 6 & 63,
|
|
5040
|
-
128 | cp & 63
|
|
5041
|
-
);
|
|
5042
|
-
} else {
|
|
5043
|
-
out.push(
|
|
5044
|
-
224 | c >> 12,
|
|
5045
|
-
128 | c >> 6 & 63,
|
|
5046
|
-
128 | c & 63
|
|
5047
|
-
);
|
|
5048
|
-
}
|
|
5049
|
-
}
|
|
5050
|
-
return new Uint8Array(out);
|
|
5051
|
-
}
|
|
5052
|
-
function bytes2binl(bytes) {
|
|
5053
|
-
const bin = [];
|
|
5054
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
5055
|
-
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
5056
|
-
}
|
|
5057
|
-
return bin;
|
|
5058
|
-
}
|
|
5059
|
-
function md5(str) {
|
|
5060
|
-
const bytes = utf8Bytes(str);
|
|
5061
|
-
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
5062
|
-
}
|
|
5063
|
-
function generateAutoKey(text) {
|
|
5064
|
-
const trimmed = text.trim();
|
|
5065
|
-
return "auto_" + md5(trimmed).substring(0, 12);
|
|
5066
|
-
}
|
|
5067
|
-
|
|
5068
5198
|
// src/browser/exclude-filter.ts
|
|
5069
5199
|
var DEFAULT_PATTERNS = {
|
|
5070
5200
|
emails: true,
|
|
@@ -5463,9 +5593,16 @@ var LionRapid = (() => {
|
|
|
5463
5593
|
}
|
|
5464
5594
|
};
|
|
5465
5595
|
|
|
5596
|
+
// src/browser/storage/cache-names.ts
|
|
5597
|
+
var CORE_CACHE_NAMES = Object.freeze({
|
|
5598
|
+
translations: "lionrapid-v1",
|
|
5599
|
+
offlineFloor: "lionrapid-offline-v1"
|
|
5600
|
+
});
|
|
5601
|
+
var CORE_CACHE_ENTRY_PREFIX = "https://cache.lionrapid.internal/";
|
|
5602
|
+
|
|
5466
5603
|
// src/browser/storage/cache-storage-repository.ts
|
|
5467
|
-
var CACHE_NAME =
|
|
5468
|
-
var CACHE_PREFIX =
|
|
5604
|
+
var CACHE_NAME = CORE_CACHE_NAMES.translations;
|
|
5605
|
+
var CACHE_PREFIX = CORE_CACHE_ENTRY_PREFIX;
|
|
5469
5606
|
var CacheStorageRepository = class {
|
|
5470
5607
|
constructor(config = {}) {
|
|
5471
5608
|
__publicField(this, "name", "CacheStorageRepository");
|
|
@@ -5665,8 +5802,11 @@ var LionRapid = (() => {
|
|
|
5665
5802
|
}
|
|
5666
5803
|
};
|
|
5667
5804
|
|
|
5805
|
+
// src/config/api.config.ts
|
|
5806
|
+
var DEFAULT_API_BASE_URL = "https://app.lionrapid.com";
|
|
5807
|
+
|
|
5668
5808
|
// src/index.ts
|
|
5669
|
-
var VERSION = "
|
|
5809
|
+
var VERSION = "0.6.6";
|
|
5670
5810
|
return __toCommonJS(index_exports);
|
|
5671
5811
|
})();
|
|
5672
5812
|
//# sourceMappingURL=lionrapid.iife.js.map
|