@lionrapid/core 0.6.3 → 0.6.5

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 (45) hide show
  1. package/dist/browser/attribute-extractor.d.ts.map +1 -1
  2. package/dist/browser/attribute-extractor.js +17 -1
  3. package/dist/browser/attribute-extractor.js.map +1 -1
  4. package/dist/browser/auto-init.d.ts +1 -1
  5. package/dist/browser/auto-init.d.ts.map +1 -1
  6. package/dist/browser/auto-init.js +3 -2
  7. package/dist/browser/auto-init.js.map +1 -1
  8. package/dist/browser/index.d.ts +1 -1
  9. package/dist/browser/index.js +1 -1
  10. package/dist/browser/lionrapid.auto.dev.js +87 -9
  11. package/dist/browser/lionrapid.auto.dev.js.map +3 -3
  12. package/dist/browser/lionrapid.auto.js +87 -9
  13. package/dist/browser/lionrapid.auto.js.map +3 -3
  14. package/dist/browser/lionrapid.auto.min.js +4 -4
  15. package/dist/browser/lionrapid.auto.min.js.map +4 -4
  16. package/dist/browser/lionrapid.esm.js +77 -9
  17. package/dist/browser/lionrapid.esm.js.map +3 -3
  18. package/dist/browser/lionrapid.esm.min.js +3 -3
  19. package/dist/browser/lionrapid.esm.min.js.map +4 -4
  20. package/dist/browser/lionrapid.iife.dev.js +77 -9
  21. package/dist/browser/lionrapid.iife.dev.js.map +3 -3
  22. package/dist/browser/lionrapid.iife.js +77 -9
  23. package/dist/browser/lionrapid.iife.js.map +3 -3
  24. package/dist/browser/lionrapid.iife.min.js +3 -3
  25. package/dist/browser/lionrapid.iife.min.js.map +4 -4
  26. package/dist/browser/lionrapid.umd.js +77 -9
  27. package/dist/browser/lionrapid.umd.js.map +3 -3
  28. package/dist/browser/lionrapid.umd.min.js +3 -3
  29. package/dist/browser/lionrapid.umd.min.js.map +4 -4
  30. package/dist/browser/storage/cache-names.d.ts +51 -0
  31. package/dist/browser/storage/cache-names.d.ts.map +1 -0
  32. package/dist/browser/storage/cache-names.js +51 -0
  33. package/dist/browser/storage/cache-names.js.map +1 -0
  34. package/dist/browser/storage/cache-storage-repository.d.ts.map +1 -1
  35. package/dist/browser/storage/cache-storage-repository.js +6 -2
  36. package/dist/browser/storage/cache-storage-repository.js.map +1 -1
  37. package/dist/index.d.ts +3 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +11 -5
  40. package/dist/index.js.map +1 -1
  41. package/dist/utils/locale.d.ts +50 -7
  42. package/dist/utils/locale.d.ts.map +1 -1
  43. package/dist/utils/locale.js +83 -15
  44. package/dist/utils/locale.js.map +1 -1
  45. package/package.json +2 -1
@@ -358,6 +358,65 @@ var __lionrapidAutoExports = (() => {
358
358
  }
359
359
  return out.join("-");
360
360
  }
361
+ var ISO639_2_TO_1 = Object.freeze({
362
+ ara: "ar",
363
+ ben: "bn",
364
+ bul: "bg",
365
+ ces: "cs",
366
+ cmn: "zh",
367
+ dan: "da",
368
+ deu: "de",
369
+ ell: "el",
370
+ eng: "en",
371
+ est: "et",
372
+ fas: "fa",
373
+ fin: "fi",
374
+ fra: "fr",
375
+ heb: "he",
376
+ hin: "hi",
377
+ hrv: "hr",
378
+ hun: "hu",
379
+ ind: "id",
380
+ isl: "is",
381
+ ita: "it",
382
+ jpn: "ja",
383
+ kor: "ko",
384
+ lav: "lv",
385
+ lit: "lt",
386
+ msa: "ms",
387
+ nld: "nl",
388
+ nor: "no",
389
+ pol: "pl",
390
+ por: "pt",
391
+ ron: "ro",
392
+ rus: "ru",
393
+ slk: "sk",
394
+ slv: "sl",
395
+ spa: "es",
396
+ srp: "sr",
397
+ swe: "sv",
398
+ tha: "th",
399
+ tur: "tr",
400
+ ukr: "uk",
401
+ urd: "ur",
402
+ vie: "vi",
403
+ yid: "yi",
404
+ zho: "zh"
405
+ });
406
+ function localeCandidates(tag) {
407
+ const normalized = tag.trim().toLowerCase();
408
+ if (!normalized) return [];
409
+ const parts = normalized.split("-");
410
+ const out = [];
411
+ while (parts.length > 0) {
412
+ const candidate = parts.join("-");
413
+ if (!out.includes(candidate)) out.push(candidate);
414
+ const twoLetter = ISO639_2_TO_1[candidate];
415
+ if (twoLetter && !out.includes(twoLetter)) out.push(twoLetter);
416
+ parts.pop();
417
+ }
418
+ return out;
419
+ }
361
420
  function matchLocale(requested, available, fallback) {
362
421
  if (available.length === 0) return fallback;
363
422
  const avail = available.map((raw) => ({
@@ -366,12 +425,10 @@ var __lionrapidAutoExports = (() => {
366
425
  }));
367
426
  for (const req of requested) {
368
427
  if (!req) continue;
369
- const reqLower = normalizeLocale(req).toLowerCase();
370
- const exact = avail.find((a) => a.lower === reqLower);
371
- if (exact) return exact.raw;
372
- const primary = primarySubtag(req);
373
- const byPrimary = avail.find((a) => a.lower === primary);
374
- if (byPrimary) return byPrimary.raw;
428
+ for (const candidate of localeCandidates(req)) {
429
+ const hit = avail.find((a) => a.lower === candidate);
430
+ if (hit) return hit.raw;
431
+ }
375
432
  }
376
433
  return fallback;
377
434
  }
@@ -4893,6 +4950,20 @@ var __lionrapidAutoExports = (() => {
4893
4950
  { selector: "[title]", attr: "title", type: "title" },
4894
4951
  { selector: "input[placeholder], textarea[placeholder]", attr: "placeholder", type: "placeholder" },
4895
4952
  { selector: 'meta[name="description"][content]', attr: "content", type: "meta-description" },
4953
+ // Social preview text. Without these no auto_ key is ever generated for
4954
+ // them, so a fully translated page still shares to Slack or LinkedIn with
4955
+ // an English card. Both spellings: OG specifies `property`, Twitter cards
4956
+ // conventionally use `name`, and real pages mix the two freely.
4957
+ {
4958
+ selector: 'meta[property="og:title"][content], meta[name="og:title"][content], meta[property="twitter:title"][content], meta[name="twitter:title"][content]',
4959
+ attr: "content",
4960
+ type: "title"
4961
+ },
4962
+ {
4963
+ selector: 'meta[property="og:description"][content], meta[name="og:description"][content], meta[property="twitter:description"][content], meta[name="twitter:description"][content]',
4964
+ attr: "content",
4965
+ type: "meta-description"
4966
+ },
4896
4967
  {
4897
4968
  selector: 'input[type="submit"][value], input[type="button"][value], input[type="reset"][value]',
4898
4969
  attr: "value",
@@ -5974,9 +6045,16 @@ var __lionrapidAutoExports = (() => {
5974
6045
  }
5975
6046
  };
5976
6047
 
6048
+ // src/browser/storage/cache-names.ts
6049
+ var CORE_CACHE_NAMES = Object.freeze({
6050
+ translations: "lionrapid-v1",
6051
+ offlineFloor: "lionrapid-offline-v1"
6052
+ });
6053
+ var CORE_CACHE_ENTRY_PREFIX = "https://cache.lionrapid.internal/";
6054
+
5977
6055
  // src/browser/storage/cache-storage-repository.ts
5978
- var CACHE_NAME = "lionrapid-v1";
5979
- var CACHE_PREFIX = "https://cache.lionrapid.internal/";
6056
+ var CACHE_NAME = CORE_CACHE_NAMES.translations;
6057
+ var CACHE_PREFIX = CORE_CACHE_ENTRY_PREFIX;
5980
6058
  var CacheStorageRepository = class {
5981
6059
  constructor(config = {}) {
5982
6060
  __publicField(this, "name", "CacheStorageRepository");
@@ -6382,7 +6460,7 @@ var __lionrapidAutoExports = (() => {
6382
6460
  enabled: true,
6383
6461
  options: {
6384
6462
  ttl: Number.MAX_SAFE_INTEGER,
6385
- cacheName: "lionrapid-offline-v1"
6463
+ cacheName: CORE_CACHE_NAMES.offlineFloor
6386
6464
  }
6387
6465
  })
6388
6466
  );