@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
|
@@ -2,6 +2,216 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
|
|
5
|
+
// src/browser/md5.ts
|
|
6
|
+
function safeAdd(x, y) {
|
|
7
|
+
const lsw = (x & 65535) + (y & 65535);
|
|
8
|
+
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
9
|
+
return msw << 16 | lsw & 65535;
|
|
10
|
+
}
|
|
11
|
+
function bitRotateLeft(num, cnt) {
|
|
12
|
+
return num << cnt | num >>> 32 - cnt;
|
|
13
|
+
}
|
|
14
|
+
function md5cmn(q, a, b, x, s, t) {
|
|
15
|
+
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
16
|
+
}
|
|
17
|
+
function md5ff(a, b, c, d, x, s, t) {
|
|
18
|
+
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
19
|
+
}
|
|
20
|
+
function md5gg(a, b, c, d, x, s, t) {
|
|
21
|
+
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
22
|
+
}
|
|
23
|
+
function md5hh(a, b, c, d, x, s, t) {
|
|
24
|
+
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
25
|
+
}
|
|
26
|
+
function md5ii(a, b, c, d, x, s, t) {
|
|
27
|
+
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
28
|
+
}
|
|
29
|
+
function binlMD5(x, len) {
|
|
30
|
+
x[len >> 5] |= 128 << len % 32;
|
|
31
|
+
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
32
|
+
let a = 1732584193;
|
|
33
|
+
let b = -271733879;
|
|
34
|
+
let c = -1732584194;
|
|
35
|
+
let d = 271733878;
|
|
36
|
+
for (let i = 0; i < x.length; i += 16) {
|
|
37
|
+
const olda = a;
|
|
38
|
+
const oldb = b;
|
|
39
|
+
const oldc = c;
|
|
40
|
+
const oldd = d;
|
|
41
|
+
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
42
|
+
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
43
|
+
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
44
|
+
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
45
|
+
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
46
|
+
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
47
|
+
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
48
|
+
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
49
|
+
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
50
|
+
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
51
|
+
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
52
|
+
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
53
|
+
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
54
|
+
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
55
|
+
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
56
|
+
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
57
|
+
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
58
|
+
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
59
|
+
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
60
|
+
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
61
|
+
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
62
|
+
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
63
|
+
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
64
|
+
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
65
|
+
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
66
|
+
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
67
|
+
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
68
|
+
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
69
|
+
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
70
|
+
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
71
|
+
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
72
|
+
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
73
|
+
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
74
|
+
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
75
|
+
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
76
|
+
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
77
|
+
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
78
|
+
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
79
|
+
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
80
|
+
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
81
|
+
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
82
|
+
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
83
|
+
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
84
|
+
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
85
|
+
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
86
|
+
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
87
|
+
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
88
|
+
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
89
|
+
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
90
|
+
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
91
|
+
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
92
|
+
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
93
|
+
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
94
|
+
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
95
|
+
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
96
|
+
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
97
|
+
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
98
|
+
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
99
|
+
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
100
|
+
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
101
|
+
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
102
|
+
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
103
|
+
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
104
|
+
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
105
|
+
a = safeAdd(a, olda);
|
|
106
|
+
b = safeAdd(b, oldb);
|
|
107
|
+
c = safeAdd(c, oldc);
|
|
108
|
+
d = safeAdd(d, oldd);
|
|
109
|
+
}
|
|
110
|
+
return [a, b, c, d];
|
|
111
|
+
}
|
|
112
|
+
function binl2hex(binarray) {
|
|
113
|
+
const hexTab = "0123456789abcdef";
|
|
114
|
+
let str = "";
|
|
115
|
+
for (let i = 0; i < binarray.length * 4; i++) {
|
|
116
|
+
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
117
|
+
}
|
|
118
|
+
return str;
|
|
119
|
+
}
|
|
120
|
+
function utf8Bytes(str) {
|
|
121
|
+
if (typeof TextEncoder !== "undefined") {
|
|
122
|
+
return new TextEncoder().encode(str);
|
|
123
|
+
}
|
|
124
|
+
const out = [];
|
|
125
|
+
for (let i = 0; i < str.length; i++) {
|
|
126
|
+
const c = str.charCodeAt(i);
|
|
127
|
+
if (c < 128) {
|
|
128
|
+
out.push(c);
|
|
129
|
+
} else if (c < 2048) {
|
|
130
|
+
out.push(192 | c >> 6, 128 | c & 63);
|
|
131
|
+
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
132
|
+
const c2 = str.charCodeAt(++i);
|
|
133
|
+
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
134
|
+
out.push(
|
|
135
|
+
240 | cp >> 18,
|
|
136
|
+
128 | cp >> 12 & 63,
|
|
137
|
+
128 | cp >> 6 & 63,
|
|
138
|
+
128 | cp & 63
|
|
139
|
+
);
|
|
140
|
+
} else {
|
|
141
|
+
out.push(
|
|
142
|
+
224 | c >> 12,
|
|
143
|
+
128 | c >> 6 & 63,
|
|
144
|
+
128 | c & 63
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return new Uint8Array(out);
|
|
149
|
+
}
|
|
150
|
+
function bytes2binl(bytes) {
|
|
151
|
+
const bin = [];
|
|
152
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
153
|
+
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
154
|
+
}
|
|
155
|
+
return bin;
|
|
156
|
+
}
|
|
157
|
+
function md5(str) {
|
|
158
|
+
const bytes = utf8Bytes(str);
|
|
159
|
+
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
160
|
+
}
|
|
161
|
+
function generateAutoKey(text) {
|
|
162
|
+
const trimmed = text.trim();
|
|
163
|
+
return "auto_" + md5(trimmed).substring(0, 12);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// src/utils/log-safe.ts
|
|
167
|
+
var LOG_VALUE_FULL_MAX = 200;
|
|
168
|
+
var LOG_VALUE_EDGE = 90;
|
|
169
|
+
function contentIdentity(value) {
|
|
170
|
+
return `${value.length} chars, md5:${md5(value.trim()).slice(0, 12)}`;
|
|
171
|
+
}
|
|
172
|
+
function contentExcerpt(value) {
|
|
173
|
+
if (value.length <= LOG_VALUE_FULL_MAX) {
|
|
174
|
+
return JSON.stringify(value);
|
|
175
|
+
}
|
|
176
|
+
return JSON.stringify(
|
|
177
|
+
`${value.slice(0, LOG_VALUE_EDGE)}\u2026${value.slice(-LOG_VALUE_EDGE)}`
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
var LOG_ERROR_MAX = 200;
|
|
181
|
+
var LOG_DATA_MAX = 500;
|
|
182
|
+
var LOG_STACK_FRAMES = 2;
|
|
183
|
+
var LOG_FRAME_MAX = 120;
|
|
184
|
+
function bound(text, max) {
|
|
185
|
+
return text.length <= max ? text : `${text.slice(0, max)}\u2026 (${text.length} chars)`;
|
|
186
|
+
}
|
|
187
|
+
function oneLine(text) {
|
|
188
|
+
return JSON.stringify(text).slice(1, -1);
|
|
189
|
+
}
|
|
190
|
+
function describeError(error) {
|
|
191
|
+
if (error instanceof Error) {
|
|
192
|
+
const name = error.name || "Error";
|
|
193
|
+
return bound(oneLine(`${name}: ${error.message}`), LOG_ERROR_MAX);
|
|
194
|
+
}
|
|
195
|
+
return bound(oneLine(String(error)), LOG_ERROR_MAX);
|
|
196
|
+
}
|
|
197
|
+
function describeLogData(data) {
|
|
198
|
+
if (data instanceof Error) {
|
|
199
|
+
const headerLines = String(data.message ?? "").split("\n").length;
|
|
200
|
+
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));
|
|
201
|
+
return [describeError(data), ...frames].join(" | ");
|
|
202
|
+
}
|
|
203
|
+
let rendered;
|
|
204
|
+
try {
|
|
205
|
+
rendered = JSON.stringify(data);
|
|
206
|
+
} catch {
|
|
207
|
+
return "[unserializable]";
|
|
208
|
+
}
|
|
209
|
+
return bound(rendered ?? oneLine(String(data)), LOG_DATA_MAX);
|
|
210
|
+
}
|
|
211
|
+
function describeContent(value) {
|
|
212
|
+
return `${contentIdentity(value)}, ${contentExcerpt(value)}`;
|
|
213
|
+
}
|
|
214
|
+
|
|
5
215
|
// src/config/logger.config.ts
|
|
6
216
|
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
7
217
|
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
@@ -129,7 +339,7 @@ var DevelopmentLogger = class _DevelopmentLogger {
|
|
|
129
339
|
const locationInfo2 = callSite ? ` (${callSite.fileName}:${callSite.lineNumber})` : "";
|
|
130
340
|
let logMessage = `${this.config.prefix} ${emoji} ${levelName} ${message}${locationInfo2}`;
|
|
131
341
|
if (data !== void 0) {
|
|
132
|
-
logMessage += ` ${
|
|
342
|
+
logMessage += ` ${describeLogData(data)}`;
|
|
133
343
|
}
|
|
134
344
|
return logMessage;
|
|
135
345
|
}
|
|
@@ -140,7 +350,7 @@ var DevelopmentLogger = class _DevelopmentLogger {
|
|
|
140
350
|
const coloredLevel = `${levelColor}${Colors.BOLD}${levelName}${reset}`;
|
|
141
351
|
const coloredMessage = `${levelColor}${message}${reset}`;
|
|
142
352
|
const locationInfo = callSite ? `${Colors.DIM}${Colors.BRIGHT_BLACK} (${callSite.fileName}:${callSite.lineNumber})${reset}` : "";
|
|
143
|
-
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${
|
|
353
|
+
const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${describeLogData(data)}${reset}` : "";
|
|
144
354
|
return `${coloredPrefix} ${coloredEmoji} ${coloredLevel} ${coloredMessage}${locationInfo}${dataInfo}`;
|
|
145
355
|
}
|
|
146
356
|
getLevelColor(level) {
|
|
@@ -371,6 +581,65 @@ function normalizeLocale(tag) {
|
|
|
371
581
|
}
|
|
372
582
|
return out.join("-");
|
|
373
583
|
}
|
|
584
|
+
var ISO639_2_TO_1 = Object.freeze({
|
|
585
|
+
ara: "ar",
|
|
586
|
+
ben: "bn",
|
|
587
|
+
bul: "bg",
|
|
588
|
+
ces: "cs",
|
|
589
|
+
cmn: "zh",
|
|
590
|
+
dan: "da",
|
|
591
|
+
deu: "de",
|
|
592
|
+
ell: "el",
|
|
593
|
+
eng: "en",
|
|
594
|
+
est: "et",
|
|
595
|
+
fas: "fa",
|
|
596
|
+
fin: "fi",
|
|
597
|
+
fra: "fr",
|
|
598
|
+
heb: "he",
|
|
599
|
+
hin: "hi",
|
|
600
|
+
hrv: "hr",
|
|
601
|
+
hun: "hu",
|
|
602
|
+
ind: "id",
|
|
603
|
+
isl: "is",
|
|
604
|
+
ita: "it",
|
|
605
|
+
jpn: "ja",
|
|
606
|
+
kor: "ko",
|
|
607
|
+
lav: "lv",
|
|
608
|
+
lit: "lt",
|
|
609
|
+
msa: "ms",
|
|
610
|
+
nld: "nl",
|
|
611
|
+
nor: "no",
|
|
612
|
+
pol: "pl",
|
|
613
|
+
por: "pt",
|
|
614
|
+
ron: "ro",
|
|
615
|
+
rus: "ru",
|
|
616
|
+
slk: "sk",
|
|
617
|
+
slv: "sl",
|
|
618
|
+
spa: "es",
|
|
619
|
+
srp: "sr",
|
|
620
|
+
swe: "sv",
|
|
621
|
+
tha: "th",
|
|
622
|
+
tur: "tr",
|
|
623
|
+
ukr: "uk",
|
|
624
|
+
urd: "ur",
|
|
625
|
+
vie: "vi",
|
|
626
|
+
yid: "yi",
|
|
627
|
+
zho: "zh"
|
|
628
|
+
});
|
|
629
|
+
function localeCandidates(tag) {
|
|
630
|
+
const normalized = tag.trim().toLowerCase();
|
|
631
|
+
if (!normalized) return [];
|
|
632
|
+
const parts = normalized.split("-");
|
|
633
|
+
const out = [];
|
|
634
|
+
while (parts.length > 0) {
|
|
635
|
+
const candidate = parts.join("-");
|
|
636
|
+
if (!out.includes(candidate)) out.push(candidate);
|
|
637
|
+
const twoLetter = ISO639_2_TO_1[candidate];
|
|
638
|
+
if (twoLetter && !out.includes(twoLetter)) out.push(twoLetter);
|
|
639
|
+
parts.pop();
|
|
640
|
+
}
|
|
641
|
+
return out;
|
|
642
|
+
}
|
|
374
643
|
function matchLocale(requested, available, fallback) {
|
|
375
644
|
if (available.length === 0) return fallback;
|
|
376
645
|
const avail = available.map((raw) => ({
|
|
@@ -379,12 +648,10 @@ function matchLocale(requested, available, fallback) {
|
|
|
379
648
|
}));
|
|
380
649
|
for (const req of requested) {
|
|
381
650
|
if (!req) continue;
|
|
382
|
-
const
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
const byPrimary = avail.find((a) => a.lower === primary);
|
|
387
|
-
if (byPrimary) return byPrimary.raw;
|
|
651
|
+
for (const candidate of localeCandidates(req)) {
|
|
652
|
+
const hit = avail.find((a) => a.lower === candidate);
|
|
653
|
+
if (hit) return hit.raw;
|
|
654
|
+
}
|
|
388
655
|
}
|
|
389
656
|
return fallback;
|
|
390
657
|
}
|
|
@@ -2204,6 +2471,15 @@ var NetworkHandler = class {
|
|
|
2204
2471
|
const config = this.repository.getConfig();
|
|
2205
2472
|
return config.options?.preloadNamespaces || [];
|
|
2206
2473
|
}
|
|
2474
|
+
/**
|
|
2475
|
+
* The host this handler talks to. Exposed so a failure can NAME it: "the
|
|
2476
|
+
* server is unreachable" is not actionable, and a default pointing at a dead
|
|
2477
|
+
* host is exactly the case where the reader needs to be told which host.
|
|
2478
|
+
*/
|
|
2479
|
+
getBaseUrl() {
|
|
2480
|
+
const config = this.repository.getConfig();
|
|
2481
|
+
return config.options?.baseUrl || "";
|
|
2482
|
+
}
|
|
2207
2483
|
};
|
|
2208
2484
|
|
|
2209
2485
|
// src/content/canonical-tag.ts
|
|
@@ -3076,7 +3352,9 @@ var LionRapidCore = class {
|
|
|
3076
3352
|
const processedText = this.processTranslationValue(unit.text, request);
|
|
3077
3353
|
return processedText.replace(/<\/?[0-9]+\/?>/g, "");
|
|
3078
3354
|
} catch (error) {
|
|
3079
|
-
logger.warn(
|
|
3355
|
+
logger.warn(
|
|
3356
|
+
`ContentUnit processing failed for key "${request.cleanKey}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3357
|
+
);
|
|
3080
3358
|
return this.processTranslationValue(value, request);
|
|
3081
3359
|
}
|
|
3082
3360
|
}
|
|
@@ -3129,7 +3407,9 @@ var LionRapidCore = class {
|
|
|
3129
3407
|
}
|
|
3130
3408
|
return processedValue;
|
|
3131
3409
|
} catch (error) {
|
|
3132
|
-
logger.warn(
|
|
3410
|
+
logger.warn(
|
|
3411
|
+
`Translation processing failed for key "${resolvedKey ?? "(no key)"}" \u2014 ${describeContent(value)}: ${describeError(error)}`
|
|
3412
|
+
);
|
|
3133
3413
|
return value;
|
|
3134
3414
|
}
|
|
3135
3415
|
}
|
|
@@ -3846,8 +4126,9 @@ var LionRapidBuilder = class _LionRapidBuilder {
|
|
|
3846
4126
|
const warnLoudlyOnce = (namespaceKey, error) => {
|
|
3847
4127
|
if (!isLoudPreloadFailure(error) || warnedLoudly) return;
|
|
3848
4128
|
warnedLoudly = true;
|
|
4129
|
+
const baseUrl = networkHandler.getBaseUrl() || "(no base URL configured)";
|
|
3849
4130
|
console.warn(
|
|
3850
|
-
`[LionRapid] Could not load translations for ${namespaceKey} \u2014 the page stays untranslated until
|
|
4131
|
+
`[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).`,
|
|
3851
4132
|
error
|
|
3852
4133
|
);
|
|
3853
4134
|
};
|
|
@@ -3975,7 +4256,7 @@ var _NetworkRepository = class _NetworkRepository {
|
|
|
3975
4256
|
throw new TranslationNotFoundError(key);
|
|
3976
4257
|
}
|
|
3977
4258
|
if (typeof translation === "object" && "text" in translation) {
|
|
3978
|
-
logger.debug(`ContentUnit text:
|
|
4259
|
+
logger.debug(`ContentUnit text: ${describeContent(translation.text)}`);
|
|
3979
4260
|
return translation.text;
|
|
3980
4261
|
}
|
|
3981
4262
|
return String(translation);
|
|
@@ -4010,13 +4291,18 @@ var _NetworkRepository = class _NetworkRepository {
|
|
|
4010
4291
|
throw new TranslationNotFoundError(key);
|
|
4011
4292
|
}
|
|
4012
4293
|
if (typeof translation === "object" && "text" in translation) {
|
|
4013
|
-
logger.debug(
|
|
4294
|
+
logger.debug(
|
|
4295
|
+
`ContentUnit for "${key}": text=${describeContent(translation.text)}, styles=`,
|
|
4296
|
+
translation.styles
|
|
4297
|
+
);
|
|
4014
4298
|
return {
|
|
4015
4299
|
text: translation.text,
|
|
4016
4300
|
styles: translation.styles || {}
|
|
4017
4301
|
};
|
|
4018
4302
|
}
|
|
4019
|
-
logger.debug(
|
|
4303
|
+
logger.debug(
|
|
4304
|
+
`Plain string for "${key}": ${describeContent(String(translation))} (no styles)`
|
|
4305
|
+
);
|
|
4020
4306
|
return {
|
|
4021
4307
|
text: String(translation),
|
|
4022
4308
|
styles: {}
|
|
@@ -4824,167 +5110,6 @@ function replaceBlockInners(html, replacements) {
|
|
|
4824
5110
|
return result;
|
|
4825
5111
|
}
|
|
4826
5112
|
|
|
4827
|
-
// src/browser/md5.ts
|
|
4828
|
-
function safeAdd(x, y) {
|
|
4829
|
-
const lsw = (x & 65535) + (y & 65535);
|
|
4830
|
-
const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
|
4831
|
-
return msw << 16 | lsw & 65535;
|
|
4832
|
-
}
|
|
4833
|
-
function bitRotateLeft(num, cnt) {
|
|
4834
|
-
return num << cnt | num >>> 32 - cnt;
|
|
4835
|
-
}
|
|
4836
|
-
function md5cmn(q, a, b, x, s, t) {
|
|
4837
|
-
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
|
|
4838
|
-
}
|
|
4839
|
-
function md5ff(a, b, c, d, x, s, t) {
|
|
4840
|
-
return md5cmn(b & c | ~b & d, a, b, x, s, t);
|
|
4841
|
-
}
|
|
4842
|
-
function md5gg(a, b, c, d, x, s, t) {
|
|
4843
|
-
return md5cmn(b & d | c & ~d, a, b, x, s, t);
|
|
4844
|
-
}
|
|
4845
|
-
function md5hh(a, b, c, d, x, s, t) {
|
|
4846
|
-
return md5cmn(b ^ c ^ d, a, b, x, s, t);
|
|
4847
|
-
}
|
|
4848
|
-
function md5ii(a, b, c, d, x, s, t) {
|
|
4849
|
-
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
|
|
4850
|
-
}
|
|
4851
|
-
function binlMD5(x, len) {
|
|
4852
|
-
x[len >> 5] |= 128 << len % 32;
|
|
4853
|
-
x[(len + 64 >>> 9 << 4) + 14] = len;
|
|
4854
|
-
let a = 1732584193;
|
|
4855
|
-
let b = -271733879;
|
|
4856
|
-
let c = -1732584194;
|
|
4857
|
-
let d = 271733878;
|
|
4858
|
-
for (let i = 0; i < x.length; i += 16) {
|
|
4859
|
-
const olda = a;
|
|
4860
|
-
const oldb = b;
|
|
4861
|
-
const oldc = c;
|
|
4862
|
-
const oldd = d;
|
|
4863
|
-
a = md5ff(a, b, c, d, x[i], 7, -680876936);
|
|
4864
|
-
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
|
|
4865
|
-
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
|
|
4866
|
-
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
|
4867
|
-
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
|
|
4868
|
-
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
|
4869
|
-
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
|
4870
|
-
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
|
|
4871
|
-
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
|
4872
|
-
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
|
4873
|
-
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
|
|
4874
|
-
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
|
4875
|
-
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
|
4876
|
-
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
|
|
4877
|
-
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
|
4878
|
-
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
|
4879
|
-
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
|
|
4880
|
-
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
|
4881
|
-
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
|
|
4882
|
-
b = md5gg(b, c, d, a, x[i], 20, -373897302);
|
|
4883
|
-
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
|
|
4884
|
-
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
|
|
4885
|
-
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
|
|
4886
|
-
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
|
|
4887
|
-
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
|
|
4888
|
-
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
|
4889
|
-
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
|
|
4890
|
-
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
|
4891
|
-
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
|
4892
|
-
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
|
|
4893
|
-
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
|
4894
|
-
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
|
4895
|
-
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
|
|
4896
|
-
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
|
4897
|
-
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
|
4898
|
-
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
|
|
4899
|
-
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
|
4900
|
-
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
|
4901
|
-
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
|
|
4902
|
-
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
|
4903
|
-
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
|
|
4904
|
-
d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
|
|
4905
|
-
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
|
|
4906
|
-
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
|
|
4907
|
-
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
|
|
4908
|
-
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
|
|
4909
|
-
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
|
|
4910
|
-
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
|
|
4911
|
-
a = md5ii(a, b, c, d, x[i], 6, -198630844);
|
|
4912
|
-
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
|
4913
|
-
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
|
4914
|
-
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
|
|
4915
|
-
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
|
4916
|
-
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
|
4917
|
-
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
|
|
4918
|
-
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
|
4919
|
-
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
|
4920
|
-
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
|
|
4921
|
-
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
|
4922
|
-
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
|
4923
|
-
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
|
|
4924
|
-
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
|
4925
|
-
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
|
|
4926
|
-
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
|
|
4927
|
-
a = safeAdd(a, olda);
|
|
4928
|
-
b = safeAdd(b, oldb);
|
|
4929
|
-
c = safeAdd(c, oldc);
|
|
4930
|
-
d = safeAdd(d, oldd);
|
|
4931
|
-
}
|
|
4932
|
-
return [a, b, c, d];
|
|
4933
|
-
}
|
|
4934
|
-
function binl2hex(binarray) {
|
|
4935
|
-
const hexTab = "0123456789abcdef";
|
|
4936
|
-
let str = "";
|
|
4937
|
-
for (let i = 0; i < binarray.length * 4; i++) {
|
|
4938
|
-
str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
|
|
4939
|
-
}
|
|
4940
|
-
return str;
|
|
4941
|
-
}
|
|
4942
|
-
function utf8Bytes(str) {
|
|
4943
|
-
if (typeof TextEncoder !== "undefined") {
|
|
4944
|
-
return new TextEncoder().encode(str);
|
|
4945
|
-
}
|
|
4946
|
-
const out = [];
|
|
4947
|
-
for (let i = 0; i < str.length; i++) {
|
|
4948
|
-
const c = str.charCodeAt(i);
|
|
4949
|
-
if (c < 128) {
|
|
4950
|
-
out.push(c);
|
|
4951
|
-
} else if (c < 2048) {
|
|
4952
|
-
out.push(192 | c >> 6, 128 | c & 63);
|
|
4953
|
-
} else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
|
|
4954
|
-
const c2 = str.charCodeAt(++i);
|
|
4955
|
-
const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
|
|
4956
|
-
out.push(
|
|
4957
|
-
240 | cp >> 18,
|
|
4958
|
-
128 | cp >> 12 & 63,
|
|
4959
|
-
128 | cp >> 6 & 63,
|
|
4960
|
-
128 | cp & 63
|
|
4961
|
-
);
|
|
4962
|
-
} else {
|
|
4963
|
-
out.push(
|
|
4964
|
-
224 | c >> 12,
|
|
4965
|
-
128 | c >> 6 & 63,
|
|
4966
|
-
128 | c & 63
|
|
4967
|
-
);
|
|
4968
|
-
}
|
|
4969
|
-
}
|
|
4970
|
-
return new Uint8Array(out);
|
|
4971
|
-
}
|
|
4972
|
-
function bytes2binl(bytes) {
|
|
4973
|
-
const bin = [];
|
|
4974
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
4975
|
-
bin[i >> 2] |= bytes[i] << i % 4 * 8;
|
|
4976
|
-
}
|
|
4977
|
-
return bin;
|
|
4978
|
-
}
|
|
4979
|
-
function md5(str) {
|
|
4980
|
-
const bytes = utf8Bytes(str);
|
|
4981
|
-
return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
|
|
4982
|
-
}
|
|
4983
|
-
function generateAutoKey(text) {
|
|
4984
|
-
const trimmed = text.trim();
|
|
4985
|
-
return "auto_" + md5(trimmed).substring(0, 12);
|
|
4986
|
-
}
|
|
4987
|
-
|
|
4988
5113
|
// src/browser/exclude-filter.ts
|
|
4989
5114
|
var DEFAULT_PATTERNS = {
|
|
4990
5115
|
emails: true,
|
|
@@ -5383,9 +5508,16 @@ var LocalStorageRepository = class {
|
|
|
5383
5508
|
}
|
|
5384
5509
|
};
|
|
5385
5510
|
|
|
5511
|
+
// src/browser/storage/cache-names.ts
|
|
5512
|
+
var CORE_CACHE_NAMES = Object.freeze({
|
|
5513
|
+
translations: "lionrapid-v1",
|
|
5514
|
+
offlineFloor: "lionrapid-offline-v1"
|
|
5515
|
+
});
|
|
5516
|
+
var CORE_CACHE_ENTRY_PREFIX = "https://cache.lionrapid.internal/";
|
|
5517
|
+
|
|
5386
5518
|
// src/browser/storage/cache-storage-repository.ts
|
|
5387
|
-
var CACHE_NAME =
|
|
5388
|
-
var CACHE_PREFIX =
|
|
5519
|
+
var CACHE_NAME = CORE_CACHE_NAMES.translations;
|
|
5520
|
+
var CACHE_PREFIX = CORE_CACHE_ENTRY_PREFIX;
|
|
5389
5521
|
var CacheStorageRepository = class {
|
|
5390
5522
|
constructor(config = {}) {
|
|
5391
5523
|
__publicField(this, "name", "CacheStorageRepository");
|
|
@@ -5585,17 +5717,24 @@ var CacheStorageRepository = class {
|
|
|
5585
5717
|
}
|
|
5586
5718
|
};
|
|
5587
5719
|
|
|
5720
|
+
// src/config/api.config.ts
|
|
5721
|
+
var DEFAULT_API_BASE_URL = "https://app.lionrapid.com";
|
|
5722
|
+
|
|
5588
5723
|
// src/index.ts
|
|
5589
|
-
var VERSION = "
|
|
5724
|
+
var VERSION = "0.6.6";
|
|
5590
5725
|
export {
|
|
5726
|
+
CORE_CACHE_ENTRY_PREFIX,
|
|
5727
|
+
CORE_CACHE_NAMES,
|
|
5591
5728
|
CacheManager,
|
|
5592
5729
|
CacheStorageRepository,
|
|
5593
5730
|
Colors,
|
|
5594
5731
|
ContentValidator,
|
|
5732
|
+
DEFAULT_API_BASE_URL,
|
|
5595
5733
|
EventEmitter,
|
|
5596
5734
|
ExcludeFilter,
|
|
5597
5735
|
HTMLSerializer,
|
|
5598
5736
|
HandlerChain,
|
|
5737
|
+
ISO639_2_TO_1,
|
|
5599
5738
|
LOCALE_TAG_REGEX,
|
|
5600
5739
|
LionRapidBuilder,
|
|
5601
5740
|
LionRapidCore,
|
|
@@ -5624,6 +5763,7 @@ export {
|
|
|
5624
5763
|
isClientError,
|
|
5625
5764
|
isRetryableError,
|
|
5626
5765
|
isTranslationError,
|
|
5766
|
+
localeCandidates,
|
|
5627
5767
|
localeDir,
|
|
5628
5768
|
logger,
|
|
5629
5769
|
matchLocale,
|