@shipeasy/sdk 2.1.10 → 2.1.12

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.
@@ -185,7 +185,7 @@ declare const LABEL_MARKER_START = "\uFFF9";
185
185
  declare const LABEL_MARKER_SEP = "\uFFFA";
186
186
  declare const LABEL_MARKER_END = "\uFFFB";
187
187
  declare const LABEL_MARKER_RE: RegExp;
188
- declare function encodeLabelMarker(key: string, value: string): string;
188
+ declare function encodeLabelMarker(key: string, value: string, variables?: I18nVariables): string;
189
189
  interface LabelAttrs {
190
190
  "data-label": string;
191
191
  "data-variables"?: string;
@@ -185,7 +185,7 @@ declare const LABEL_MARKER_START = "\uFFF9";
185
185
  declare const LABEL_MARKER_SEP = "\uFFFA";
186
186
  declare const LABEL_MARKER_END = "\uFFFB";
187
187
  declare const LABEL_MARKER_RE: RegExp;
188
- declare function encodeLabelMarker(key: string, value: string): string;
188
+ declare function encodeLabelMarker(key: string, value: string, variables?: I18nVariables): string;
189
189
  interface LabelAttrs {
190
190
  "data-label": string;
191
191
  "data-variables"?: string;
@@ -774,9 +774,10 @@ var flags = {
774
774
  var LABEL_MARKER_START = "\uFFF9";
775
775
  var LABEL_MARKER_SEP = "\uFFFA";
776
776
  var LABEL_MARKER_END = "\uFFFB";
777
- var LABEL_MARKER_RE = /([^]+)([^]*)/g;
778
- function encodeLabelMarker(key, value) {
779
- return `${LABEL_MARKER_START}${key}${LABEL_MARKER_SEP}${value}${LABEL_MARKER_END}`;
777
+ var LABEL_MARKER_RE = /([^]+)([^]*)([^]*)/g;
778
+ function encodeLabelMarker(key, value, variables) {
779
+ const varsJson = variables && Object.keys(variables).length > 0 ? JSON.stringify(variables) : "";
780
+ return `${LABEL_MARKER_START}${key}${LABEL_MARKER_SEP}${varsJson}${LABEL_MARKER_SEP}${value}${LABEL_MARKER_END}`;
780
781
  }
781
782
  function labelAttrs(key, variables, desc) {
782
783
  const attrs = { "data-label": key };
@@ -790,12 +791,16 @@ var _EDIT_MODE_SSR_SYM = /* @__PURE__ */ Symbol.for("@shipeasy/sdk:ssr-edit-mode
790
791
  function getSSRI18nStore() {
791
792
  return globalThis[_I18N_SSR_SYM]?.() ?? null;
792
793
  }
794
+ var _EDIT_MODE_FALLBACK_SYM = /* @__PURE__ */ Symbol.for("@shipeasy/sdk:ssr-edit-mode-fallback");
793
795
  function isEditLabelsMode() {
794
796
  if (typeof window !== "undefined") {
795
797
  return !!window.__SE_BOOTSTRAP?.editLabels || new URLSearchParams(location.search).has("se_edit_labels");
796
798
  }
797
799
  const val = globalThis[_EDIT_MODE_SSR_SYM];
798
- return typeof val === "boolean" ? val : typeof val === "function" ? val() : false;
800
+ if (typeof val === "boolean") return val;
801
+ if (typeof val === "function") return val();
802
+ const fb = globalThis[_EDIT_MODE_FALLBACK_SYM];
803
+ return typeof fb === "boolean" ? fb : false;
799
804
  }
800
805
  function interpolate(raw, variables) {
801
806
  if (!variables) return raw;
@@ -885,8 +890,19 @@ var i18n = {
885
890
  variables = fallbackOrVars;
886
891
  }
887
892
  const resolved = _resolveTranslation(key, variables);
888
- if (resolved !== void 0) return resolved;
889
- if (fallback !== void 0) return interpolate(fallback, variables);
893
+ if (resolved !== void 0) {
894
+ if (typeof window === "undefined" && isEditLabelsMode()) {
895
+ return encodeLabelMarker(key, resolved, variables);
896
+ }
897
+ return resolved;
898
+ }
899
+ if (fallback !== void 0) {
900
+ const text = interpolate(fallback, variables);
901
+ if (typeof window === "undefined" && isEditLabelsMode()) {
902
+ return encodeLabelMarker(key, text, variables);
903
+ }
904
+ return text;
905
+ }
890
906
  return key;
891
907
  },
892
908
  /**
@@ -929,7 +945,7 @@ var i18n = {
929
945
  if (isEditLabelsMode()) {
930
946
  const resolved = _resolveTranslation(key, variables);
931
947
  const text = resolved ?? interpolate(fallback, variables);
932
- return encodeLabelMarker(key, text);
948
+ return encodeLabelMarker(key, text, variables);
933
949
  }
934
950
  return this.t(key, fallback, variables);
935
951
  },
@@ -731,9 +731,10 @@ var flags = {
731
731
  var LABEL_MARKER_START = "\uFFF9";
732
732
  var LABEL_MARKER_SEP = "\uFFFA";
733
733
  var LABEL_MARKER_END = "\uFFFB";
734
- var LABEL_MARKER_RE = /([^]+)([^]*)/g;
735
- function encodeLabelMarker(key, value) {
736
- return `${LABEL_MARKER_START}${key}${LABEL_MARKER_SEP}${value}${LABEL_MARKER_END}`;
734
+ var LABEL_MARKER_RE = /([^]+)([^]*)([^]*)/g;
735
+ function encodeLabelMarker(key, value, variables) {
736
+ const varsJson = variables && Object.keys(variables).length > 0 ? JSON.stringify(variables) : "";
737
+ return `${LABEL_MARKER_START}${key}${LABEL_MARKER_SEP}${varsJson}${LABEL_MARKER_SEP}${value}${LABEL_MARKER_END}`;
737
738
  }
738
739
  function labelAttrs(key, variables, desc) {
739
740
  const attrs = { "data-label": key };
@@ -747,12 +748,16 @@ var _EDIT_MODE_SSR_SYM = /* @__PURE__ */ Symbol.for("@shipeasy/sdk:ssr-edit-mode
747
748
  function getSSRI18nStore() {
748
749
  return globalThis[_I18N_SSR_SYM]?.() ?? null;
749
750
  }
751
+ var _EDIT_MODE_FALLBACK_SYM = /* @__PURE__ */ Symbol.for("@shipeasy/sdk:ssr-edit-mode-fallback");
750
752
  function isEditLabelsMode() {
751
753
  if (typeof window !== "undefined") {
752
754
  return !!window.__SE_BOOTSTRAP?.editLabels || new URLSearchParams(location.search).has("se_edit_labels");
753
755
  }
754
756
  const val = globalThis[_EDIT_MODE_SSR_SYM];
755
- return typeof val === "boolean" ? val : typeof val === "function" ? val() : false;
757
+ if (typeof val === "boolean") return val;
758
+ if (typeof val === "function") return val();
759
+ const fb = globalThis[_EDIT_MODE_FALLBACK_SYM];
760
+ return typeof fb === "boolean" ? fb : false;
756
761
  }
757
762
  function interpolate(raw, variables) {
758
763
  if (!variables) return raw;
@@ -842,8 +847,19 @@ var i18n = {
842
847
  variables = fallbackOrVars;
843
848
  }
844
849
  const resolved = _resolveTranslation(key, variables);
845
- if (resolved !== void 0) return resolved;
846
- if (fallback !== void 0) return interpolate(fallback, variables);
850
+ if (resolved !== void 0) {
851
+ if (typeof window === "undefined" && isEditLabelsMode()) {
852
+ return encodeLabelMarker(key, resolved, variables);
853
+ }
854
+ return resolved;
855
+ }
856
+ if (fallback !== void 0) {
857
+ const text = interpolate(fallback, variables);
858
+ if (typeof window === "undefined" && isEditLabelsMode()) {
859
+ return encodeLabelMarker(key, text, variables);
860
+ }
861
+ return text;
862
+ }
847
863
  return key;
848
864
  },
849
865
  /**
@@ -886,7 +902,7 @@ var i18n = {
886
902
  if (isEditLabelsMode()) {
887
903
  const resolved = _resolveTranslation(key, variables);
888
904
  const text = resolved ?? interpolate(fallback, variables);
889
- return encodeLabelMarker(key, text);
905
+ return encodeLabelMarker(key, text, variables);
890
906
  }
891
907
  return this.t(key, fallback, variables);
892
908
  },
@@ -493,10 +493,17 @@ async function shipeasy(opts) {
493
493
  let resolvedUrlOverrides = opts.urlOverrides;
494
494
  if (!resolvedUrlOverrides) {
495
495
  try {
496
- const { headers } = await import("next/headers");
496
+ const { headers, cookies } = await import("next/headers");
497
497
  const h = await Promise.resolve(headers());
498
498
  const search = h.get("x-se-search") ?? "";
499
- if (search) resolvedUrlOverrides = search;
499
+ if (search) {
500
+ resolvedUrlOverrides = search;
501
+ } else {
502
+ const c = await Promise.resolve(cookies());
503
+ if (c.get?.("se_edit_labels")?.value === "1") {
504
+ resolvedUrlOverrides = "se_edit_labels=1";
505
+ }
506
+ }
500
507
  } catch {
501
508
  }
502
509
  }
@@ -532,7 +539,7 @@ function getBootstrapHtml(bootstrap, i18nData, opts) {
532
539
  if (i18nData) payload.i18n = i18nData;
533
540
  if (opts.editLabels) payload.editLabels = true;
534
541
  parts.push(
535
- `(function(){if(!new URLSearchParams(location.search).has('se_edit_labels'))return;var R;function P(v){if(!v||typeof v.t!=='function'||v.__sePatched)return;var O=v.t.bind(v);v.__sePatched=true;window._sei18n_t=O;v.t=function(k,vars){var r=O(k,vars);return r===k?k:'\\uFFF9'+k+'\\uFFFA'+r+'\\uFFFB';};}Object.defineProperty(window,'i18n',{configurable:true,get:function(){return R;},set:function(v){P(v);R=v;}});})();`
542
+ `(function(){if(!new URLSearchParams(location.search).has('se_edit_labels'))return;try{document.cookie='se_edit_labels=1;path=/;max-age=86400;samesite=lax';}catch(_){}var R;function P(v){if(!v||typeof v.t!=='function'||v.__sePatched)return;var O=v.t.bind(v);v.__sePatched=true;window._sei18n_t=O;v.t=function(k,vars){var r=O(k,vars);if(r===k)return k;var V='';try{if(vars&&typeof vars==='object'){var hasKey=false;for(var _k in vars){hasKey=true;break;}if(hasKey)V=JSON.stringify(vars);}}catch(_){V='';}return '\\uFFF9'+k+'\\uFFFA'+V+'\\uFFFA'+r+'\\uFFFB';};}Object.defineProperty(window,'i18n',{configurable:true,get:function(){return R;},set:function(v){P(v);R=v;}});})();`
536
543
  );
537
544
  parts.push(`window.__SE_BOOTSTRAP=${JSON.stringify(payload)};`);
538
545
  if (i18nData?.strings && Object.keys(i18nData.strings).length > 0) {
@@ -450,10 +450,17 @@ async function shipeasy(opts) {
450
450
  let resolvedUrlOverrides = opts.urlOverrides;
451
451
  if (!resolvedUrlOverrides) {
452
452
  try {
453
- const { headers } = await import("next/headers");
453
+ const { headers, cookies } = await import("next/headers");
454
454
  const h = await Promise.resolve(headers());
455
455
  const search = h.get("x-se-search") ?? "";
456
- if (search) resolvedUrlOverrides = search;
456
+ if (search) {
457
+ resolvedUrlOverrides = search;
458
+ } else {
459
+ const c = await Promise.resolve(cookies());
460
+ if (c.get?.("se_edit_labels")?.value === "1") {
461
+ resolvedUrlOverrides = "se_edit_labels=1";
462
+ }
463
+ }
457
464
  } catch {
458
465
  }
459
466
  }
@@ -489,7 +496,7 @@ function getBootstrapHtml(bootstrap, i18nData, opts) {
489
496
  if (i18nData) payload.i18n = i18nData;
490
497
  if (opts.editLabels) payload.editLabels = true;
491
498
  parts.push(
492
- `(function(){if(!new URLSearchParams(location.search).has('se_edit_labels'))return;var R;function P(v){if(!v||typeof v.t!=='function'||v.__sePatched)return;var O=v.t.bind(v);v.__sePatched=true;window._sei18n_t=O;v.t=function(k,vars){var r=O(k,vars);return r===k?k:'\\uFFF9'+k+'\\uFFFA'+r+'\\uFFFB';};}Object.defineProperty(window,'i18n',{configurable:true,get:function(){return R;},set:function(v){P(v);R=v;}});})();`
499
+ `(function(){if(!new URLSearchParams(location.search).has('se_edit_labels'))return;try{document.cookie='se_edit_labels=1;path=/;max-age=86400;samesite=lax';}catch(_){}var R;function P(v){if(!v||typeof v.t!=='function'||v.__sePatched)return;var O=v.t.bind(v);v.__sePatched=true;window._sei18n_t=O;v.t=function(k,vars){var r=O(k,vars);if(r===k)return k;var V='';try{if(vars&&typeof vars==='object'){var hasKey=false;for(var _k in vars){hasKey=true;break;}if(hasKey)V=JSON.stringify(vars);}}catch(_){V='';}return '\\uFFF9'+k+'\\uFFFA'+V+'\\uFFFA'+r+'\\uFFFB';};}Object.defineProperty(window,'i18n',{configurable:true,get:function(){return R;},set:function(v){P(v);R=v;}});})();`
493
500
  );
494
501
  parts.push(`window.__SE_BOOTSTRAP=${JSON.stringify(payload)};`);
495
502
  if (i18nData?.strings && Object.keys(i18nData.strings).length > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipeasy/sdk",
3
- "version": "2.1.10",
3
+ "version": "2.1.12",
4
4
  "description": "Shipeasy SDK — feature gates, runtime configs, experiments, and metrics for the Shipeasy hosted service.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://shipeasy.ai",