@lionrapid/core 0.6.5 → 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.
Files changed (65) hide show
  1. package/README.md +15 -2
  2. package/dist/browser/auto-init.d.ts.map +1 -1
  3. package/dist/browser/auto-init.js +2 -1
  4. package/dist/browser/auto-init.js.map +1 -1
  5. package/dist/browser/editor/editor-api.d.ts +12 -0
  6. package/dist/browser/editor/editor-api.d.ts.map +1 -1
  7. package/dist/browser/editor/editor-api.js.map +1 -1
  8. package/dist/browser/editor/editor-init.js +2 -1
  9. package/dist/browser/editor/editor-init.js.map +1 -1
  10. package/dist/browser/editor/sidebar.d.ts.map +1 -1
  11. package/dist/browser/editor/sidebar.js +11 -1
  12. package/dist/browser/editor/sidebar.js.map +1 -1
  13. package/dist/browser/lionrapid.auto.dev.js +241 -170
  14. package/dist/browser/lionrapid.auto.dev.js.map +3 -3
  15. package/dist/browser/lionrapid.auto.js +241 -170
  16. package/dist/browser/lionrapid.auto.js.map +3 -3
  17. package/dist/browser/lionrapid.auto.min.js +6 -4
  18. package/dist/browser/lionrapid.auto.min.js.map +4 -4
  19. package/dist/browser/lionrapid.editor.js +5 -2
  20. package/dist/browser/lionrapid.editor.js.map +3 -3
  21. package/dist/browser/lionrapid.editor.min.js +4 -4
  22. package/dist/browser/lionrapid.editor.min.js.map +4 -4
  23. package/dist/browser/lionrapid.esm.js +242 -170
  24. package/dist/browser/lionrapid.esm.js.map +3 -3
  25. package/dist/browser/lionrapid.esm.min.js +5 -3
  26. package/dist/browser/lionrapid.esm.min.js.map +4 -4
  27. package/dist/browser/lionrapid.iife.dev.js +242 -170
  28. package/dist/browser/lionrapid.iife.dev.js.map +3 -3
  29. package/dist/browser/lionrapid.iife.js +242 -170
  30. package/dist/browser/lionrapid.iife.js.map +3 -3
  31. package/dist/browser/lionrapid.iife.min.js +5 -3
  32. package/dist/browser/lionrapid.iife.min.js.map +4 -4
  33. package/dist/browser/lionrapid.umd.js +242 -170
  34. package/dist/browser/lionrapid.umd.js.map +3 -3
  35. package/dist/browser/lionrapid.umd.min.js +5 -3
  36. package/dist/browser/lionrapid.umd.min.js.map +4 -4
  37. package/dist/builder.d.ts.map +1 -1
  38. package/dist/builder.js +9 -2
  39. package/dist/builder.js.map +1 -1
  40. package/dist/config/api.config.d.ts +35 -0
  41. package/dist/config/api.config.d.ts.map +1 -0
  42. package/dist/config/api.config.js +35 -0
  43. package/dist/config/api.config.js.map +1 -0
  44. package/dist/handlers/network-handler.d.ts +6 -0
  45. package/dist/handlers/network-handler.d.ts.map +1 -1
  46. package/dist/handlers/network-handler.js +9 -0
  47. package/dist/handlers/network-handler.js.map +1 -1
  48. package/dist/index.d.ts +2 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/lionRapid.d.ts.map +1 -1
  53. package/dist/lionRapid.js +11 -2
  54. package/dist/lionRapid.js.map +1 -1
  55. package/dist/repositories/network-repository.d.ts.map +1 -1
  56. package/dist/repositories/network-repository.js +4 -3
  57. package/dist/repositories/network-repository.js.map +1 -1
  58. package/dist/utils/log-safe.d.ts +92 -0
  59. package/dist/utils/log-safe.d.ts.map +1 -0
  60. package/dist/utils/log-safe.js +168 -0
  61. package/dist/utils/log-safe.js.map +1 -0
  62. package/dist/utils/logger.d.ts.map +1 -1
  63. package/dist/utils/logger.js +3 -2
  64. package/dist/utils/logger.js.map +1 -1
  65. package/package.json +6 -3
@@ -42,6 +42,216 @@ var __lionrapidAutoExports = (() => {
42
42
  parseConfig: () => parseConfig
43
43
  });
44
44
 
45
+ // src/browser/md5.ts
46
+ function safeAdd(x, y) {
47
+ const lsw = (x & 65535) + (y & 65535);
48
+ const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
49
+ return msw << 16 | lsw & 65535;
50
+ }
51
+ function bitRotateLeft(num, cnt) {
52
+ return num << cnt | num >>> 32 - cnt;
53
+ }
54
+ function md5cmn(q, a, b, x, s, t) {
55
+ return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
56
+ }
57
+ function md5ff(a, b, c, d, x, s, t) {
58
+ return md5cmn(b & c | ~b & d, a, b, x, s, t);
59
+ }
60
+ function md5gg(a, b, c, d, x, s, t) {
61
+ return md5cmn(b & d | c & ~d, a, b, x, s, t);
62
+ }
63
+ function md5hh(a, b, c, d, x, s, t) {
64
+ return md5cmn(b ^ c ^ d, a, b, x, s, t);
65
+ }
66
+ function md5ii(a, b, c, d, x, s, t) {
67
+ return md5cmn(c ^ (b | ~d), a, b, x, s, t);
68
+ }
69
+ function binlMD5(x, len) {
70
+ x[len >> 5] |= 128 << len % 32;
71
+ x[(len + 64 >>> 9 << 4) + 14] = len;
72
+ let a = 1732584193;
73
+ let b = -271733879;
74
+ let c = -1732584194;
75
+ let d = 271733878;
76
+ for (let i = 0; i < x.length; i += 16) {
77
+ const olda = a;
78
+ const oldb = b;
79
+ const oldc = c;
80
+ const oldd = d;
81
+ a = md5ff(a, b, c, d, x[i], 7, -680876936);
82
+ d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
83
+ c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
84
+ b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
85
+ a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
86
+ d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
87
+ c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
88
+ b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
89
+ a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
90
+ d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
91
+ c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
92
+ b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
93
+ a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
94
+ d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
95
+ c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
96
+ b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
97
+ a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
98
+ d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
99
+ c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
100
+ b = md5gg(b, c, d, a, x[i], 20, -373897302);
101
+ a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
102
+ d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
103
+ c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
104
+ b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
105
+ a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
106
+ d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
107
+ c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
108
+ b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
109
+ a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
110
+ d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
111
+ c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
112
+ b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
113
+ a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
114
+ d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
115
+ c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
116
+ b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
117
+ a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
118
+ d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
119
+ c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
120
+ b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
121
+ a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
122
+ d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
123
+ c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
124
+ b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
125
+ a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
126
+ d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
127
+ c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
128
+ b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
129
+ a = md5ii(a, b, c, d, x[i], 6, -198630844);
130
+ d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
131
+ c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
132
+ b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
133
+ a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
134
+ d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
135
+ c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
136
+ b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
137
+ a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
138
+ d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
139
+ c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
140
+ b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
141
+ a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
142
+ d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
143
+ c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
144
+ b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
145
+ a = safeAdd(a, olda);
146
+ b = safeAdd(b, oldb);
147
+ c = safeAdd(c, oldc);
148
+ d = safeAdd(d, oldd);
149
+ }
150
+ return [a, b, c, d];
151
+ }
152
+ function binl2hex(binarray) {
153
+ const hexTab = "0123456789abcdef";
154
+ let str = "";
155
+ for (let i = 0; i < binarray.length * 4; i++) {
156
+ str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
157
+ }
158
+ return str;
159
+ }
160
+ function utf8Bytes(str) {
161
+ if (typeof TextEncoder !== "undefined") {
162
+ return new TextEncoder().encode(str);
163
+ }
164
+ const out = [];
165
+ for (let i = 0; i < str.length; i++) {
166
+ const c = str.charCodeAt(i);
167
+ if (c < 128) {
168
+ out.push(c);
169
+ } else if (c < 2048) {
170
+ out.push(192 | c >> 6, 128 | c & 63);
171
+ } else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
172
+ const c2 = str.charCodeAt(++i);
173
+ const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
174
+ out.push(
175
+ 240 | cp >> 18,
176
+ 128 | cp >> 12 & 63,
177
+ 128 | cp >> 6 & 63,
178
+ 128 | cp & 63
179
+ );
180
+ } else {
181
+ out.push(
182
+ 224 | c >> 12,
183
+ 128 | c >> 6 & 63,
184
+ 128 | c & 63
185
+ );
186
+ }
187
+ }
188
+ return new Uint8Array(out);
189
+ }
190
+ function bytes2binl(bytes) {
191
+ const bin = [];
192
+ for (let i = 0; i < bytes.length; i++) {
193
+ bin[i >> 2] |= bytes[i] << i % 4 * 8;
194
+ }
195
+ return bin;
196
+ }
197
+ function md5(str) {
198
+ const bytes = utf8Bytes(str);
199
+ return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
200
+ }
201
+ function generateAutoKey(text) {
202
+ const trimmed = text.trim();
203
+ return "auto_" + md5(trimmed).substring(0, 12);
204
+ }
205
+
206
+ // src/utils/log-safe.ts
207
+ var LOG_VALUE_FULL_MAX = 200;
208
+ var LOG_VALUE_EDGE = 90;
209
+ function contentIdentity(value) {
210
+ return `${value.length} chars, md5:${md5(value.trim()).slice(0, 12)}`;
211
+ }
212
+ function contentExcerpt(value) {
213
+ if (value.length <= LOG_VALUE_FULL_MAX) {
214
+ return JSON.stringify(value);
215
+ }
216
+ return JSON.stringify(
217
+ `${value.slice(0, LOG_VALUE_EDGE)}\u2026${value.slice(-LOG_VALUE_EDGE)}`
218
+ );
219
+ }
220
+ var LOG_ERROR_MAX = 200;
221
+ var LOG_DATA_MAX = 500;
222
+ var LOG_STACK_FRAMES = 2;
223
+ var LOG_FRAME_MAX = 120;
224
+ function bound(text, max) {
225
+ return text.length <= max ? text : `${text.slice(0, max)}\u2026 (${text.length} chars)`;
226
+ }
227
+ function oneLine(text) {
228
+ return JSON.stringify(text).slice(1, -1);
229
+ }
230
+ function describeError(error) {
231
+ if (error instanceof Error) {
232
+ const name = error.name || "Error";
233
+ return bound(oneLine(`${name}: ${error.message}`), LOG_ERROR_MAX);
234
+ }
235
+ return bound(oneLine(String(error)), LOG_ERROR_MAX);
236
+ }
237
+ function describeLogData(data) {
238
+ if (data instanceof Error) {
239
+ const headerLines = String(data.message ?? "").split("\n").length;
240
+ 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));
241
+ return [describeError(data), ...frames].join(" | ");
242
+ }
243
+ let rendered;
244
+ try {
245
+ rendered = JSON.stringify(data);
246
+ } catch {
247
+ return "[unserializable]";
248
+ }
249
+ return bound(rendered ?? oneLine(String(data)), LOG_DATA_MAX);
250
+ }
251
+ function describeContent(value) {
252
+ return `${contentIdentity(value)}, ${contentExcerpt(value)}`;
253
+ }
254
+
45
255
  // src/config/logger.config.ts
46
256
  var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
47
257
  LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
@@ -169,7 +379,7 @@ var __lionrapidAutoExports = (() => {
169
379
  const locationInfo2 = callSite ? ` (${callSite.fileName}:${callSite.lineNumber})` : "";
170
380
  let logMessage = `${this.config.prefix} ${emoji} ${levelName} ${message}${locationInfo2}`;
171
381
  if (data !== void 0) {
172
- logMessage += ` ${JSON.stringify(data)}`;
382
+ logMessage += ` ${describeLogData(data)}`;
173
383
  }
174
384
  return logMessage;
175
385
  }
@@ -180,7 +390,7 @@ var __lionrapidAutoExports = (() => {
180
390
  const coloredLevel = `${levelColor}${Colors.BOLD}${levelName}${reset}`;
181
391
  const coloredMessage = `${levelColor}${message}${reset}`;
182
392
  const locationInfo = callSite ? `${Colors.DIM}${Colors.BRIGHT_BLACK} (${callSite.fileName}:${callSite.lineNumber})${reset}` : "";
183
- const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${JSON.stringify(data)}${reset}` : "";
393
+ const dataInfo = data !== void 0 ? `${Colors.DIM}${Colors.CYAN} ${describeLogData(data)}${reset}` : "";
184
394
  return `${coloredPrefix} ${coloredEmoji} ${coloredLevel} ${coloredMessage}${locationInfo}${dataInfo}`;
185
395
  }
186
396
  getLevelColor(level) {
@@ -2234,6 +2444,15 @@ var __lionrapidAutoExports = (() => {
2234
2444
  const config = this.repository.getConfig();
2235
2445
  return config.options?.preloadNamespaces || [];
2236
2446
  }
2447
+ /**
2448
+ * The host this handler talks to. Exposed so a failure can NAME it: "the
2449
+ * server is unreachable" is not actionable, and a default pointing at a dead
2450
+ * host is exactly the case where the reader needs to be told which host.
2451
+ */
2452
+ getBaseUrl() {
2453
+ const config = this.repository.getConfig();
2454
+ return config.options?.baseUrl || "";
2455
+ }
2237
2456
  };
2238
2457
 
2239
2458
  // src/content/canonical-tag.ts
@@ -3080,7 +3299,9 @@ var __lionrapidAutoExports = (() => {
3080
3299
  const processedText = this.processTranslationValue(unit.text, request);
3081
3300
  return processedText.replace(/<\/?[0-9]+\/?>/g, "");
3082
3301
  } catch (error) {
3083
- logger.warn(`ContentUnit processing failed for "${value}":`, error);
3302
+ logger.warn(
3303
+ `ContentUnit processing failed for key "${request.cleanKey}" \u2014 ${describeContent(value)}: ${describeError(error)}`
3304
+ );
3084
3305
  return this.processTranslationValue(value, request);
3085
3306
  }
3086
3307
  }
@@ -3133,7 +3354,9 @@ var __lionrapidAutoExports = (() => {
3133
3354
  }
3134
3355
  return processedValue;
3135
3356
  } catch (error) {
3136
- logger.warn(`Translation processing failed for "${value}":`, error);
3357
+ logger.warn(
3358
+ `Translation processing failed for key "${resolvedKey ?? "(no key)"}" \u2014 ${describeContent(value)}: ${describeError(error)}`
3359
+ );
3137
3360
  return value;
3138
3361
  }
3139
3362
  }
@@ -3850,8 +4073,9 @@ var __lionrapidAutoExports = (() => {
3850
4073
  const warnLoudlyOnce = (namespaceKey, error) => {
3851
4074
  if (!isLoudPreloadFailure(error) || warnedLoudly) return;
3852
4075
  warnedLoudly = true;
4076
+ const baseUrl = networkHandler.getBaseUrl() || "(no base URL configured)";
3853
4077
  console.warn(
3854
- `[LionRapid] Could not load translations for ${namespaceKey} \u2014 the page stays untranslated until the server is reachable.`,
4078
+ `[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).`,
3855
4079
  error
3856
4080
  );
3857
4081
  };
@@ -3979,7 +4203,7 @@ var __lionrapidAutoExports = (() => {
3979
4203
  throw new TranslationNotFoundError(key);
3980
4204
  }
3981
4205
  if (typeof translation === "object" && "text" in translation) {
3982
- logger.debug(`ContentUnit text: "${translation.text}"`);
4206
+ logger.debug(`ContentUnit text: ${describeContent(translation.text)}`);
3983
4207
  return translation.text;
3984
4208
  }
3985
4209
  return String(translation);
@@ -4014,13 +4238,18 @@ var __lionrapidAutoExports = (() => {
4014
4238
  throw new TranslationNotFoundError(key);
4015
4239
  }
4016
4240
  if (typeof translation === "object" && "text" in translation) {
4017
- logger.debug(`ContentUnit for "${key}": text="${translation.text}", styles=`, translation.styles);
4241
+ logger.debug(
4242
+ `ContentUnit for "${key}": text=${describeContent(translation.text)}, styles=`,
4243
+ translation.styles
4244
+ );
4018
4245
  return {
4019
4246
  text: translation.text,
4020
4247
  styles: translation.styles || {}
4021
4248
  };
4022
4249
  }
4023
- logger.debug(`Plain string for "${key}": "${translation}" (no styles)`);
4250
+ logger.debug(
4251
+ `Plain string for "${key}": ${describeContent(String(translation))} (no styles)`
4252
+ );
4024
4253
  return {
4025
4254
  text: String(translation),
4026
4255
  styles: {}
@@ -4603,167 +4832,6 @@ var __lionrapidAutoExports = (() => {
4603
4832
  return { text, styles };
4604
4833
  }
4605
4834
 
4606
- // src/browser/md5.ts
4607
- function safeAdd(x, y) {
4608
- const lsw = (x & 65535) + (y & 65535);
4609
- const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
4610
- return msw << 16 | lsw & 65535;
4611
- }
4612
- function bitRotateLeft(num, cnt) {
4613
- return num << cnt | num >>> 32 - cnt;
4614
- }
4615
- function md5cmn(q, a, b, x, s, t) {
4616
- return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
4617
- }
4618
- function md5ff(a, b, c, d, x, s, t) {
4619
- return md5cmn(b & c | ~b & d, a, b, x, s, t);
4620
- }
4621
- function md5gg(a, b, c, d, x, s, t) {
4622
- return md5cmn(b & d | c & ~d, a, b, x, s, t);
4623
- }
4624
- function md5hh(a, b, c, d, x, s, t) {
4625
- return md5cmn(b ^ c ^ d, a, b, x, s, t);
4626
- }
4627
- function md5ii(a, b, c, d, x, s, t) {
4628
- return md5cmn(c ^ (b | ~d), a, b, x, s, t);
4629
- }
4630
- function binlMD5(x, len) {
4631
- x[len >> 5] |= 128 << len % 32;
4632
- x[(len + 64 >>> 9 << 4) + 14] = len;
4633
- let a = 1732584193;
4634
- let b = -271733879;
4635
- let c = -1732584194;
4636
- let d = 271733878;
4637
- for (let i = 0; i < x.length; i += 16) {
4638
- const olda = a;
4639
- const oldb = b;
4640
- const oldc = c;
4641
- const oldd = d;
4642
- a = md5ff(a, b, c, d, x[i], 7, -680876936);
4643
- d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
4644
- c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
4645
- b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
4646
- a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
4647
- d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
4648
- c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
4649
- b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
4650
- a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
4651
- d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
4652
- c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
4653
- b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
4654
- a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
4655
- d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
4656
- c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
4657
- b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
4658
- a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
4659
- d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
4660
- c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
4661
- b = md5gg(b, c, d, a, x[i], 20, -373897302);
4662
- a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
4663
- d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
4664
- c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
4665
- b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
4666
- a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
4667
- d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
4668
- c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
4669
- b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
4670
- a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
4671
- d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
4672
- c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
4673
- b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
4674
- a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
4675
- d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
4676
- c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
4677
- b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
4678
- a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
4679
- d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
4680
- c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
4681
- b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
4682
- a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
4683
- d = md5hh(d, a, b, c, x[i + 0], 11, -358537222);
4684
- c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
4685
- b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
4686
- a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
4687
- d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
4688
- c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
4689
- b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
4690
- a = md5ii(a, b, c, d, x[i], 6, -198630844);
4691
- d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
4692
- c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
4693
- b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
4694
- a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
4695
- d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
4696
- c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
4697
- b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
4698
- a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
4699
- d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
4700
- c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
4701
- b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
4702
- a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
4703
- d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
4704
- c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
4705
- b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
4706
- a = safeAdd(a, olda);
4707
- b = safeAdd(b, oldb);
4708
- c = safeAdd(c, oldc);
4709
- d = safeAdd(d, oldd);
4710
- }
4711
- return [a, b, c, d];
4712
- }
4713
- function binl2hex(binarray) {
4714
- const hexTab = "0123456789abcdef";
4715
- let str = "";
4716
- for (let i = 0; i < binarray.length * 4; i++) {
4717
- str += hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 + 4 & 15) + hexTab.charAt(binarray[i >> 2] >> i % 4 * 8 & 15);
4718
- }
4719
- return str;
4720
- }
4721
- function utf8Bytes(str) {
4722
- if (typeof TextEncoder !== "undefined") {
4723
- return new TextEncoder().encode(str);
4724
- }
4725
- const out = [];
4726
- for (let i = 0; i < str.length; i++) {
4727
- const c = str.charCodeAt(i);
4728
- if (c < 128) {
4729
- out.push(c);
4730
- } else if (c < 2048) {
4731
- out.push(192 | c >> 6, 128 | c & 63);
4732
- } else if (c >= 55296 && c < 56320 && i + 1 < str.length) {
4733
- const c2 = str.charCodeAt(++i);
4734
- const cp = 65536 + (c - 55296 << 10) + (c2 - 56320);
4735
- out.push(
4736
- 240 | cp >> 18,
4737
- 128 | cp >> 12 & 63,
4738
- 128 | cp >> 6 & 63,
4739
- 128 | cp & 63
4740
- );
4741
- } else {
4742
- out.push(
4743
- 224 | c >> 12,
4744
- 128 | c >> 6 & 63,
4745
- 128 | c & 63
4746
- );
4747
- }
4748
- }
4749
- return new Uint8Array(out);
4750
- }
4751
- function bytes2binl(bytes) {
4752
- const bin = [];
4753
- for (let i = 0; i < bytes.length; i++) {
4754
- bin[i >> 2] |= bytes[i] << i % 4 * 8;
4755
- }
4756
- return bin;
4757
- }
4758
- function md5(str) {
4759
- const bytes = utf8Bytes(str);
4760
- return binl2hex(binlMD5(bytes2binl(bytes), bytes.length * 8));
4761
- }
4762
- function generateAutoKey(text) {
4763
- const trimmed = text.trim();
4764
- return "auto_" + md5(trimmed).substring(0, 12);
4765
- }
4766
-
4767
4835
  // src/browser/block-extractor.ts
4768
4836
  var BLOCK_SELECTOR = "p,h1,h2,h3,h4,h5,h6,li,td,th,label,button,figcaption,dt,dd,summary,caption";
4769
4837
  var INLINE_BLOCK_SELECTOR = "a";
@@ -6254,6 +6322,9 @@ var __lionrapidAutoExports = (() => {
6254
6322
  }
6255
6323
  };
6256
6324
 
6325
+ // src/config/api.config.ts
6326
+ var DEFAULT_API_BASE_URL = "https://app.lionrapid.com";
6327
+
6257
6328
  // src/browser/auto-init.ts
6258
6329
  function resolveWritePolicy(apiKey) {
6259
6330
  const isPublishable = apiKey.startsWith("pk_");
@@ -6302,7 +6373,7 @@ var __lionrapidAutoExports = (() => {
6302
6373
  }
6303
6374
  function parseConfig(script) {
6304
6375
  const apiKey = script.dataset.apiKey || "";
6305
- const baseUrl = script.dataset.baseUrl || "https://api.lionrapid.com";
6376
+ const baseUrl = script.dataset.baseUrl || DEFAULT_API_BASE_URL;
6306
6377
  const defaultLocale = script.dataset.defaultLocale || "en";
6307
6378
  const namespace = script.dataset.namespace || "default";
6308
6379
  const languages = (script.dataset.languages || defaultLocale).split(",").map((s) => s.trim()).filter(Boolean);