@trebired/frontend 14.8.1 → 14.9.0

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 (38) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/language/routing/boot.d.ts.map +1 -1
  3. package/dist/language/routing/boot.js +9 -0
  4. package/dist/language/routing/boot.js.map +1 -1
  5. package/dist/language/routing/index.d.ts +2 -2
  6. package/dist/language/routing/index.d.ts.map +1 -1
  7. package/dist/language/routing/index.js +2 -2
  8. package/dist/language/routing/index.js.map +1 -1
  9. package/dist/language/routing/options.d.ts +6 -2
  10. package/dist/language/routing/options.d.ts.map +1 -1
  11. package/dist/language/routing/options.js +14 -1
  12. package/dist/language/routing/options.js.map +1 -1
  13. package/dist/language/routing/runtime.d.ts +2 -1
  14. package/dist/language/routing/runtime.d.ts.map +1 -1
  15. package/dist/language/routing/runtime.js +10 -3
  16. package/dist/language/routing/runtime.js.map +1 -1
  17. package/dist/language/routing/shell.d.ts.map +1 -1
  18. package/dist/language/routing/shell.js +24 -13
  19. package/dist/language/routing/shell.js.map +1 -1
  20. package/dist/src/language/routing/boot.d.ts.map +1 -1
  21. package/dist/src/language/routing/boot.js +9 -0
  22. package/dist/src/language/routing/boot.js.map +1 -1
  23. package/dist/src/language/routing/index.d.ts +2 -2
  24. package/dist/src/language/routing/index.d.ts.map +1 -1
  25. package/dist/src/language/routing/index.js +2 -2
  26. package/dist/src/language/routing/index.js.map +1 -1
  27. package/dist/src/language/routing/options.d.ts +6 -2
  28. package/dist/src/language/routing/options.d.ts.map +1 -1
  29. package/dist/src/language/routing/options.js +14 -1
  30. package/dist/src/language/routing/options.js.map +1 -1
  31. package/dist/src/language/routing/runtime.d.ts +2 -1
  32. package/dist/src/language/routing/runtime.d.ts.map +1 -1
  33. package/dist/src/language/routing/runtime.js +10 -3
  34. package/dist/src/language/routing/runtime.js.map +1 -1
  35. package/dist/src/language/routing/shell.d.ts.map +1 -1
  36. package/dist/src/language/routing/shell.js +24 -13
  37. package/dist/src/language/routing/shell.js.map +1 -1
  38. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 14.9.0
4
+
5
+ - Locale routing takes a `prefix-all` strategy, which gives every language a prefix rather than leaving the default one on the bare path. `createLocaleShellRoutes` emits `/cs/...` and `/en/...`, and keeps the unprefixed path alongside the default locale's so links written before the switch still resolve.
6
+ - The routing config carries its `strategy`, so the runtime knows whether a leading `/cs` is a locale prefix or the first segment of a route. `stripLocalePrefix` strips the default locale's prefix under `prefix-all`, and `localeHref(path, locale)` builds the URL a language belongs at.
7
+ - The boot script reads a locale prefix from the URL ahead of the stored preference under both prefix strategies. A visitor who had chosen one language and then opened a link in another was being moved back to their old one before first paint.
8
+
3
9
  ## 14.8.1
4
10
 
5
11
  - A hovered action row rescopes `text-muted` to its hover colour. The row re-coloured itself, its value and its arrow, but anything muted inside it — a `label-caps` caption above the value, say — sets its own colour and so kept the resting grey while the ground turned, leaving dark text on a filled row.
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AAsDvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAoBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AA8DvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAsBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -21,6 +21,13 @@ function handoffLocaleSource() {
21
21
  "history.replaceState(history.state,'',u.pathname+u.search+u.hash)}catch(e){}}",
22
22
  ];
23
23
  }
24
+ /* A locale prefix in the URL is the page the visitor actually asked for, so it
25
+ outranks anything remembered from a previous visit. */
26
+ function pathLocaleSource() {
27
+ return [
28
+ "if(!n){try{var s=(location.pathname.split('/')[1]||'');n=m(s)}catch(e){}}",
29
+ ];
30
+ }
24
31
  function queryLocaleSource() {
25
32
  return [
26
33
  "if(!n){try{var w=/[?&]lang=([^&#]*)/.exec(location.search);if(w)n=m(decodeURIComponent(w[1]))}catch(e){}}",
@@ -51,6 +58,7 @@ function createLocaleBootScript(options = {}, boot = {}) {
51
58
  const routing = normalizeLocaleRouting(options);
52
59
  const detectBrowser = !boot.strategy || boot.strategy === "none";
53
60
  const readQuery = boot.strategy === "query";
61
+ const readPath = boot.strategy === "prefix" || boot.strategy === "prefix-all";
54
62
  return [
55
63
  "(function(){",
56
64
  `var L=${scriptJson(routing.locales)},D=${scriptJson(routing.defaultLocale)},`,
@@ -60,6 +68,7 @@ function createLocaleBootScript(options = {}, boot = {}) {
60
68
  "var d=document,h=d.documentElement,r=h.lang||D;h.setAttribute(R,r);",
61
69
  ...matchSource(),
62
70
  ...handoffLocaleSource(),
71
+ ...(readPath ? pathLocaleSource() : []),
63
72
  ...storedLocaleSource(),
64
73
  ...(readQuery ? queryLocaleSource() : []),
65
74
  ...(detectBrowser ? navigatorLocaleSource() : []),
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,2EAA2E;QAC3E,gFAAgF;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC1E,KAAK,UAAU,CAAC,oBAAoB,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG;QAC7E,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,2EAA2E;QAC3E,gFAAgF;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED;yDACyD;AACzD,SAAS,gBAAgB;IACvB,OAAO;QACL,2EAA2E;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC;IAC9E,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC1E,KAAK,UAAU,CAAC,oBAAoB,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG;QAC7E,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -4,9 +4,9 @@ export { createLocaleDocumentBody } from "./document.js";
4
4
  export { createLocaleShellRoutes } from "./shell.js";
5
5
  export type { LocaleShellRoute, LocaleShellRoutesOptions } from "./shell.js";
6
6
  export type { LocaleDocumentBodyOptions } from "./document.js";
7
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
7
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, } from "./options.js";
8
8
  export type { LocaleRouting, LocaleRoutingOptions, LocaleStrategy } from "./options.js";
9
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
9
+ export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
10
10
  export type { LocaleListener } from "./runtime.js";
11
11
  export { applyLocaleMeta, applyLocaleView, clearLocalePending, readLocaleMeta } from "./view.js";
12
12
  export type { LocaleMeta } from "./view.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export { createLocaleDocumentBody } from "./document.js";
3
3
  export { createLocaleShellRoutes } from "./shell.js";
4
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
5
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
4
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, } from "./options.js";
5
+ export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
6
6
  export { applyLocaleMeta, applyLocaleView, clearLocalePending, readLocaleMeta } from "./view.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,22 +1,26 @@
1
- type LocaleStrategy = "none" | "prefix" | "query";
1
+ type LocaleStrategy = "none" | "prefix" | "prefix-all" | "query";
2
2
  type LocaleRoutingOptions = {
3
3
  cookieName?: string;
4
4
  defaultLocale?: string;
5
5
  locales?: readonly string[];
6
6
  storageKey?: string;
7
+ strategy?: LocaleStrategy;
7
8
  };
8
9
  type LocaleRouting = {
9
10
  cookieName: string;
10
11
  defaultLocale: string;
11
12
  locales: string[];
12
13
  storageKey: string;
14
+ strategy: LocaleStrategy;
13
15
  };
14
16
  declare const DEFAULT_LOCALE_STORAGE_KEY = "tbf.locale";
15
17
  declare const DEFAULT_LOCALE_COOKIE_NAME = "ui_lang";
16
18
  declare function cleanLocale(value: unknown): string;
17
19
  declare function normalizeLocaleRouting(options?: LocaleRoutingOptions): LocaleRouting;
20
+ declare function prefixesEveryLocale(strategy: LocaleStrategy | undefined): boolean;
21
+ declare function localePathFor(path: string, locale: string, routing: LocaleRouting): string;
18
22
  declare function matchLocale(value: unknown, routing: LocaleRouting): string;
19
23
  declare function pickLocale(values: Iterable<unknown>, routing: LocaleRouting): string;
20
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
24
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, };
21
25
  export type { LocaleRouting, LocaleRoutingOptions, LocaleStrategy };
22
26
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,YAAY,CAAC;AAE7C,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAUjF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;AAEjE,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,YAAY,CAAC;AAE7C,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAWjF;AAED,iBAAS,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
@@ -13,8 +13,21 @@ function normalizeLocaleRouting(options = {}) {
13
13
  defaultLocale: fallback,
14
14
  locales: locales.length ? locales : [fallback],
15
15
  storageKey: String(options.storageKey || DEFAULT_LOCALE_STORAGE_KEY),
16
+ strategy: options.strategy || "none",
16
17
  };
17
18
  }
19
+ function prefixesEveryLocale(strategy) {
20
+ return strategy === "prefix-all";
21
+ }
22
+ function localePathFor(path, locale, routing) {
23
+ const trimmed = String(path || "/").replace(/\/+$/u, "");
24
+ const base = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
25
+ if (routing.strategy === "none" || routing.strategy === "query")
26
+ return base || "/";
27
+ if (locale === routing.defaultLocale && !prefixesEveryLocale(routing.strategy))
28
+ return base || "/";
29
+ return base === "" || base === "/" ? `/${locale}` : `/${locale}${base}`;
30
+ }
18
31
  function matchLocale(value, routing) {
19
32
  const cleaned = cleanLocale(value);
20
33
  if (!cleaned)
@@ -32,5 +45,5 @@ function pickLocale(values, routing) {
32
45
  }
33
46
  return "";
34
47
  }
35
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
48
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, };
36
49
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAkBhD,MAAM,0BAA0B,GAAG,GAAG,eAAe,SAAS,CAAC;AAC/D,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAE7C,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjF,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;QACpE,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,OAAsB;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB,EAAE,OAAsB;IACnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@ declare function configureLocaleRouting(options: LocaleRoutingOptions): LocaleRo
4
4
  declare function getLocaleRouting(): LocaleRouting;
5
5
  declare function currentLocale(): string;
6
6
  declare function stripLocalePrefix(pathname: string): string;
7
+ declare function localeHref(path: string, locale?: unknown): string;
7
8
  declare function currentRoutePath(): string;
8
9
  declare function persistLocale(locale: string): void;
9
10
  declare function setCurrentLocale(locale: unknown): boolean;
10
11
  declare function onLocaleChanged(listener: LocaleListener): () => void;
11
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
12
+ export { configureLocaleRouting, localeHref, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
12
13
  export type { LocaleListener };
13
14
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAQ/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAMD,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAGlC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAQ/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAMD,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAGlC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { cleanLocale, matchLocale, normalizeLocaleRouting } from "./options.js";
1
+ import { cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, prefixesEveryLocale } from "./options.js";
2
2
  import { LOCALE_RENDERED_ATTR, applyLocaleMeta } from "./view.js";
3
3
  const listeners = new Set();
4
4
  const COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
@@ -23,11 +23,18 @@ function currentLocale() {
23
23
  function stripLocalePrefix(pathname) {
24
24
  const trimmed = String(pathname || "/").replace(/\/+$/u, "") || "/";
25
25
  const [, first = "", ...rest] = trimmed.split("/");
26
- const prefixed = configured && first !== routing.defaultLocale && routing.locales.includes(first);
26
+ /* Under prefix-all the default locale is prefixed too, so it is a prefix to
27
+ strip rather than the first segment of the route. */
28
+ const ownPrefix = first === routing.defaultLocale && prefixesEveryLocale(routing.strategy);
29
+ const prefixed = configured && routing.locales.includes(first) && (first !== routing.defaultLocale || ownPrefix);
27
30
  if (!prefixed)
28
31
  return trimmed;
29
32
  return `/${rest.join("/")}`.replace(/\/+$/u, "") || "/";
30
33
  }
34
+ function localeHref(path, locale) {
35
+ const target = resolveLocale(locale) || currentLocale();
36
+ return localePathFor(stripLocalePrefix(path), target, routing);
37
+ }
31
38
  function currentRoutePath() {
32
39
  if (typeof window === "undefined")
33
40
  return "/";
@@ -66,5 +73,5 @@ function onLocaleChanged(listener) {
66
73
  listeners.delete(listener);
67
74
  };
68
75
  }
69
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
76
+ export { configureLocaleRouting, localeHref, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
70
77
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAiBF,iBAAS,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAmBlH;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAoCF,iBAAS,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAqBlH;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,12 +1,21 @@
1
1
  import { createLocaleDocumentBody } from "./document.js";
2
- function localeRoutePath(sourcePath, locale, routing) {
3
- if (locale === routing.defaultLocale)
4
- return sourcePath;
5
- const trimmed = sourcePath.replace(/\/+$/u, "");
6
- return trimmed ? `/${locale}${trimmed.startsWith("/") ? trimmed : `/${trimmed}`}` : `/${locale}`;
2
+ import { localePathFor, prefixesEveryLocale } from "./options.js";
3
+ function localeRoutePath(sourcePath, locale, routing, strategy) {
4
+ return localePathFor(sourcePath, locale, { ...routing, strategy: strategy || routing.strategy });
7
5
  }
8
6
  function servedLocales(routing, strategy) {
9
- return strategy === "prefix" ? routing.locales : [routing.defaultLocale];
7
+ const prefixed = strategy === "prefix" || prefixesEveryLocale(strategy);
8
+ return prefixed ? routing.locales : [routing.defaultLocale];
9
+ }
10
+ /* Under prefix-all the default locale also lives behind a prefix, so the bare
11
+ path is emitted alongside it and keeps every link written before the switch
12
+ resolving to the same page. */
13
+ function servedPaths(sourcePath, locale, routing, strategy) {
14
+ const prefixed = localeRoutePath(sourcePath, locale, routing, strategy);
15
+ if (!prefixesEveryLocale(strategy) || locale !== routing.defaultLocale)
16
+ return [prefixed];
17
+ const bare = sourcePath.replace(/\/+$/u, "") || "/";
18
+ return bare === prefixed ? [prefixed] : [prefixed, bare];
10
19
  }
11
20
  function swapMeta(metas) {
12
21
  const entries = Object.entries(metas).map(([locale, meta]) => [locale, { description: meta.description, title: meta.title }]);
@@ -19,13 +28,15 @@ function createLocaleShellRoutes(options) {
19
28
  const bodies = Object.fromEntries(routing.locales.map((locale) => [locale, options.render(sourcePath, locale)]));
20
29
  const metas = Object.fromEntries(routing.locales.map((locale) => [locale, options.meta(sourcePath, locale)]));
21
30
  for (const locale of servedLocales(routing, options.strategy)) {
22
- routes.push({
23
- body: createLocaleDocumentBody({ bodies, defaultLocale: locale, meta: swapMeta(metas) }),
24
- locale,
25
- meta: { ...metas[locale], lang: locale },
26
- path: localeRoutePath(sourcePath, locale, routing),
27
- sourcePath,
28
- });
31
+ for (const path of servedPaths(sourcePath, locale, routing, options.strategy)) {
32
+ routes.push({
33
+ body: createLocaleDocumentBody({ bodies, defaultLocale: locale, meta: swapMeta(metas) }),
34
+ locale,
35
+ meta: { ...metas[locale], lang: locale },
36
+ path,
37
+ sourcePath,
38
+ });
39
+ }
29
40
  }
30
41
  }
31
42
  return routes;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAoBzD,SAAS,eAAe,CAAC,UAAkB,EAAE,MAAc,EAAE,OAAsB;IACjF,IAAI,MAAM,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,UAAU,CAAC;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,OAAsB,EAAE,QAAyB;IACtE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAuB,KAAwB;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9H,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAuB,OAAoC;IACzF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,KAAK,GAAsB,MAAM,CAAC,WAAW,CACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAC5E,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxF,MAAM;gBACN,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxC,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;gBAClD,UAAU;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAoBlE,SAAS,eAAe,CACtB,UAAkB,EAClB,MAAc,EACd,OAAsB,EACtB,QAAyB;IAEzB,OAAO,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,OAAsB,EAAE,QAAyB;IACtE,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC9D,CAAC;AAED;;iCAEiC;AACjC,SAAS,WAAW,CAClB,UAAkB,EAClB,MAAc,EACd,OAAsB,EACtB,QAAyB;IAEzB,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,MAAM,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACpD,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAuB,KAAwB;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9H,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAuB,OAAoC;IACzF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,KAAK,GAAsB,MAAM,CAAC,WAAW,CACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAC5E,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxF,MAAM;oBACN,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;oBACxC,IAAI;oBACJ,UAAU;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AAsDvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAoBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGzE,QAAA,MAAM,oBAAoB,YAAY,CAAC;AA8DvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAsBxG;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -21,6 +21,13 @@ function handoffLocaleSource() {
21
21
  "history.replaceState(history.state,'',u.pathname+u.search+u.hash)}catch(e){}}",
22
22
  ];
23
23
  }
24
+ /* A locale prefix in the URL is the page the visitor actually asked for, so it
25
+ outranks anything remembered from a previous visit. */
26
+ function pathLocaleSource() {
27
+ return [
28
+ "if(!n){try{var s=(location.pathname.split('/')[1]||'');n=m(s)}catch(e){}}",
29
+ ];
30
+ }
24
31
  function queryLocaleSource() {
25
32
  return [
26
33
  "if(!n){try{var w=/[?&]lang=([^&#]*)/.exec(location.search);if(w)n=m(decodeURIComponent(w[1]))}catch(e){}}",
@@ -51,6 +58,7 @@ function createLocaleBootScript(options = {}, boot = {}) {
51
58
  const routing = normalizeLocaleRouting(options);
52
59
  const detectBrowser = !boot.strategy || boot.strategy === "none";
53
60
  const readQuery = boot.strategy === "query";
61
+ const readPath = boot.strategy === "prefix" || boot.strategy === "prefix-all";
54
62
  return [
55
63
  "(function(){",
56
64
  `var L=${scriptJson(routing.locales)},D=${scriptJson(routing.defaultLocale)},`,
@@ -60,6 +68,7 @@ function createLocaleBootScript(options = {}, boot = {}) {
60
68
  "var d=document,h=d.documentElement,r=h.lang||D;h.setAttribute(R,r);",
61
69
  ...matchSource(),
62
70
  ...handoffLocaleSource(),
71
+ ...(readPath ? pathLocaleSource() : []),
63
72
  ...storedLocaleSource(),
64
73
  ...(readQuery ? queryLocaleSource() : []),
65
74
  ...(detectBrowser ? navigatorLocaleSource() : []),
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,2EAA2E;QAC3E,gFAAgF;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC1E,KAAK,UAAU,CAAC,oBAAoB,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG;QAC7E,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../../../../src/language/routing/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtE,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAEvC,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,2EAA2E;QAC3E,gFAAgF;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,WAAW;QACX,mEAAmE;QACnE,+CAA+C;QAC/C,uDAAuD;QACvD,yEAAyE;QACzE,4DAA4D;QAC5D,+EAA+E;KAChF,CAAC;AACJ,CAAC;AAED;yDACyD;AACzD,SAAS,gBAAgB;IACvB,OAAO;QACL,2EAA2E;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;QACL,2GAA2G;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,4DAA4D;QAC5D,qDAAqD;QACrD,uEAAuE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,iEAAiE;QACjE,sDAAsD;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACtD,OAAO;QACL,6DAA6D;QAC7D,gGAAgG;KACjG,CAAC;AACJ,CAAC;AAOD,SAAS,sBAAsB,CAAC,UAAgC,EAAE,EAAE,OAA0B,EAAE;IAC9F,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC;IAC9E,OAAO;QACL,cAAc;QACd,SAAS,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG;QAC9E,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC1E,KAAK,UAAU,CAAC,oBAAoB,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,GAAG;QAC7E,KAAK,UAAU,CAAC,oBAAoB,CAAC,GAAG;QACxC,qEAAqE;QACrE,GAAG,WAAW,EAAE;QAChB,GAAG,mBAAmB,EAAE;QACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,kBAAkB,EAAE;QACvB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,kBAAkB;QAClB,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;QAC/C,OAAO;KACR,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -4,9 +4,9 @@ export { createLocaleDocumentBody } from "./document.js";
4
4
  export { createLocaleShellRoutes } from "./shell.js";
5
5
  export type { LocaleShellRoute, LocaleShellRoutesOptions } from "./shell.js";
6
6
  export type { LocaleDocumentBodyOptions } from "./document.js";
7
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
7
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, } from "./options.js";
8
8
  export type { LocaleRouting, LocaleRoutingOptions, LocaleStrategy } from "./options.js";
9
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
9
+ export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
10
10
  export type { LocaleListener } from "./runtime.js";
11
11
  export { applyLocaleMeta, applyLocaleView, clearLocalePending, readLocaleMeta } from "./view.js";
12
12
  export type { LocaleMeta } from "./view.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { createLocaleBootScript, LOCALE_HANDOFF_QUERY } from "./boot.js";
2
2
  export { createLocaleDocumentBody } from "./document.js";
3
3
  export { createLocaleShellRoutes } from "./shell.js";
4
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, } from "./options.js";
5
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
4
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, } from "./options.js";
5
+ export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, localeHref, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, } from "./runtime.js";
6
6
  export { applyLocaleMeta, applyLocaleView, clearLocalePending, readLocaleMeta } from "./view.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/language/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,eAAe,EACvC,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,22 +1,26 @@
1
- type LocaleStrategy = "none" | "prefix" | "query";
1
+ type LocaleStrategy = "none" | "prefix" | "prefix-all" | "query";
2
2
  type LocaleRoutingOptions = {
3
3
  cookieName?: string;
4
4
  defaultLocale?: string;
5
5
  locales?: readonly string[];
6
6
  storageKey?: string;
7
+ strategy?: LocaleStrategy;
7
8
  };
8
9
  type LocaleRouting = {
9
10
  cookieName: string;
10
11
  defaultLocale: string;
11
12
  locales: string[];
12
13
  storageKey: string;
14
+ strategy: LocaleStrategy;
13
15
  };
14
16
  declare const DEFAULT_LOCALE_STORAGE_KEY = "tbf.locale";
15
17
  declare const DEFAULT_LOCALE_COOKIE_NAME = "ui_lang";
16
18
  declare function cleanLocale(value: unknown): string;
17
19
  declare function normalizeLocaleRouting(options?: LocaleRoutingOptions): LocaleRouting;
20
+ declare function prefixesEveryLocale(strategy: LocaleStrategy | undefined): boolean;
21
+ declare function localePathFor(path: string, locale: string, routing: LocaleRouting): string;
18
22
  declare function matchLocale(value: unknown, routing: LocaleRouting): string;
19
23
  declare function pickLocale(values: Iterable<unknown>, routing: LocaleRouting): string;
20
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
24
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, };
21
25
  export type { LocaleRouting, LocaleRoutingOptions, LocaleStrategy };
22
26
  //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,YAAY,CAAC;AAE7C,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAUjF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;AAEjE,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,0BAA0B,eAA8B,CAAC;AAC/D,QAAA,MAAM,0BAA0B,YAAY,CAAC;AAE7C,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,iBAAS,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAWjF;AAED,iBAAS,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnF;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAMnE;AAED,iBAAS,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,UAAU,EACV,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
@@ -13,8 +13,21 @@ function normalizeLocaleRouting(options = {}) {
13
13
  defaultLocale: fallback,
14
14
  locales: locales.length ? locales : [fallback],
15
15
  storageKey: String(options.storageKey || DEFAULT_LOCALE_STORAGE_KEY),
16
+ strategy: options.strategy || "none",
16
17
  };
17
18
  }
19
+ function prefixesEveryLocale(strategy) {
20
+ return strategy === "prefix-all";
21
+ }
22
+ function localePathFor(path, locale, routing) {
23
+ const trimmed = String(path || "/").replace(/\/+$/u, "");
24
+ const base = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
25
+ if (routing.strategy === "none" || routing.strategy === "query")
26
+ return base || "/";
27
+ if (locale === routing.defaultLocale && !prefixesEveryLocale(routing.strategy))
28
+ return base || "/";
29
+ return base === "" || base === "/" ? `/${locale}` : `/${locale}${base}`;
30
+ }
18
31
  function matchLocale(value, routing) {
19
32
  const cleaned = cleanLocale(value);
20
33
  if (!cleaned)
@@ -32,5 +45,5 @@ function pickLocale(values, routing) {
32
45
  }
33
46
  return "";
34
47
  }
35
- export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, matchLocale, normalizeLocaleRouting, pickLocale, };
48
+ export { DEFAULT_LOCALE_COOKIE_NAME, DEFAULT_LOCALE_STORAGE_KEY, cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, pickLocale, prefixesEveryLocale, };
36
49
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAkBhD,MAAM,0BAA0B,GAAG,GAAG,eAAe,SAAS,CAAC;AAC/D,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAE7C,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAgC,EAAE;IAChE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjF,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;QACpE,aAAa,EAAE,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,OAAsB;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB,EAAE,OAAsB;IACnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/language/routing/options.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@ declare function configureLocaleRouting(options: LocaleRoutingOptions): LocaleRo
4
4
  declare function getLocaleRouting(): LocaleRouting;
5
5
  declare function currentLocale(): string;
6
6
  declare function stripLocalePrefix(pathname: string): string;
7
+ declare function localeHref(path: string, locale?: unknown): string;
7
8
  declare function currentRoutePath(): string;
8
9
  declare function persistLocale(locale: string): void;
9
10
  declare function setCurrentLocale(locale: unknown): boolean;
10
11
  declare function onLocaleChanged(listener: LocaleListener): () => void;
11
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
12
+ export { configureLocaleRouting, localeHref, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
12
13
  export type { LocaleListener };
13
14
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAQ/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAMD,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAGlC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAQ/C,iBAAS,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,iBAAS,gBAAgB,IAAI,aAAa,CAEzC;AAMD,iBAAS,aAAa,IAAI,MAAM,CAG/B;AAED,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAG1D;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAGlC;AAED,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWlD;AAED,iBAAS,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAK7D;AAED,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { cleanLocale, matchLocale, normalizeLocaleRouting } from "./options.js";
1
+ import { cleanLocale, localePathFor, matchLocale, normalizeLocaleRouting, prefixesEveryLocale } from "./options.js";
2
2
  import { LOCALE_RENDERED_ATTR, applyLocaleMeta } from "./view.js";
3
3
  const listeners = new Set();
4
4
  const COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
@@ -23,11 +23,18 @@ function currentLocale() {
23
23
  function stripLocalePrefix(pathname) {
24
24
  const trimmed = String(pathname || "/").replace(/\/+$/u, "") || "/";
25
25
  const [, first = "", ...rest] = trimmed.split("/");
26
- const prefixed = configured && first !== routing.defaultLocale && routing.locales.includes(first);
26
+ /* Under prefix-all the default locale is prefixed too, so it is a prefix to
27
+ strip rather than the first segment of the route. */
28
+ const ownPrefix = first === routing.defaultLocale && prefixesEveryLocale(routing.strategy);
29
+ const prefixed = configured && routing.locales.includes(first) && (first !== routing.defaultLocale || ownPrefix);
27
30
  if (!prefixed)
28
31
  return trimmed;
29
32
  return `/${rest.join("/")}`.replace(/\/+$/u, "") || "/";
30
33
  }
34
+ function localeHref(path, locale) {
35
+ const target = resolveLocale(locale) || currentLocale();
36
+ return localePathFor(stripLocalePrefix(path), target, routing);
37
+ }
31
38
  function currentRoutePath() {
32
39
  if (typeof window === "undefined")
33
40
  return "/";
@@ -66,5 +73,5 @@ function onLocaleChanged(listener) {
66
73
  listeners.delete(listener);
67
74
  };
68
75
  }
69
- export { configureLocaleRouting, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
76
+ export { configureLocaleRouting, localeHref, currentLocale, currentRoutePath, getLocaleRouting, onLocaleChanged, persistLocale, setCurrentLocale, stripLocalePrefix, };
70
77
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/language/routing/runtime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAiBF,iBAAS,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAmBlH;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,wBAAwB,CAAC,CAAC,SAAS,UAAU,IAAI;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAoCF,iBAAS,uBAAuB,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAqBlH;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,12 +1,21 @@
1
1
  import { createLocaleDocumentBody } from "./document.js";
2
- function localeRoutePath(sourcePath, locale, routing) {
3
- if (locale === routing.defaultLocale)
4
- return sourcePath;
5
- const trimmed = sourcePath.replace(/\/+$/u, "");
6
- return trimmed ? `/${locale}${trimmed.startsWith("/") ? trimmed : `/${trimmed}`}` : `/${locale}`;
2
+ import { localePathFor, prefixesEveryLocale } from "./options.js";
3
+ function localeRoutePath(sourcePath, locale, routing, strategy) {
4
+ return localePathFor(sourcePath, locale, { ...routing, strategy: strategy || routing.strategy });
7
5
  }
8
6
  function servedLocales(routing, strategy) {
9
- return strategy === "prefix" ? routing.locales : [routing.defaultLocale];
7
+ const prefixed = strategy === "prefix" || prefixesEveryLocale(strategy);
8
+ return prefixed ? routing.locales : [routing.defaultLocale];
9
+ }
10
+ /* Under prefix-all the default locale also lives behind a prefix, so the bare
11
+ path is emitted alongside it and keeps every link written before the switch
12
+ resolving to the same page. */
13
+ function servedPaths(sourcePath, locale, routing, strategy) {
14
+ const prefixed = localeRoutePath(sourcePath, locale, routing, strategy);
15
+ if (!prefixesEveryLocale(strategy) || locale !== routing.defaultLocale)
16
+ return [prefixed];
17
+ const bare = sourcePath.replace(/\/+$/u, "") || "/";
18
+ return bare === prefixed ? [prefixed] : [prefixed, bare];
10
19
  }
11
20
  function swapMeta(metas) {
12
21
  const entries = Object.entries(metas).map(([locale, meta]) => [locale, { description: meta.description, title: meta.title }]);
@@ -19,13 +28,15 @@ function createLocaleShellRoutes(options) {
19
28
  const bodies = Object.fromEntries(routing.locales.map((locale) => [locale, options.render(sourcePath, locale)]));
20
29
  const metas = Object.fromEntries(routing.locales.map((locale) => [locale, options.meta(sourcePath, locale)]));
21
30
  for (const locale of servedLocales(routing, options.strategy)) {
22
- routes.push({
23
- body: createLocaleDocumentBody({ bodies, defaultLocale: locale, meta: swapMeta(metas) }),
24
- locale,
25
- meta: { ...metas[locale], lang: locale },
26
- path: localeRoutePath(sourcePath, locale, routing),
27
- sourcePath,
28
- });
31
+ for (const path of servedPaths(sourcePath, locale, routing, options.strategy)) {
32
+ routes.push({
33
+ body: createLocaleDocumentBody({ bodies, defaultLocale: locale, meta: swapMeta(metas) }),
34
+ locale,
35
+ meta: { ...metas[locale], lang: locale },
36
+ path,
37
+ sourcePath,
38
+ });
39
+ }
29
40
  }
30
41
  }
31
42
  return routes;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAoBzD,SAAS,eAAe,CAAC,UAAkB,EAAE,MAAc,EAAE,OAAsB;IACjF,IAAI,MAAM,KAAK,OAAO,CAAC,aAAa;QAAE,OAAO,UAAU,CAAC;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,OAAsB,EAAE,QAAyB;IACtE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAuB,KAAwB;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9H,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAuB,OAAoC;IACzF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,MAAM,KAAK,GAAsB,MAAM,CAAC,WAAW,CACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAC5E,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxF,MAAM;gBACN,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxC,IAAI,EAAE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;gBAClD,UAAU;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/language/routing/shell.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  }
9
9
  },
10
10
  "name": "@trebired/frontend",
11
- "version": "14.8.1",
11
+ "version": "14.9.0",
12
12
  "description": "Generic browser runtime systems for Trebired frontend packages and applications.",
13
13
  "type": "module",
14
14
  "private": false,