pi-kiosk-shared 2.1.58 → 2.1.59

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.
@@ -3,6 +3,10 @@
3
3
  * Customer/kiosk PWAs proxy `/api` on the same origin in dev — rewrite to pathname so `<img>`
4
4
  * and fetch stay same-origin (CSP + CORP safe).
5
5
  */
6
- export declare function toSameOriginCatalogImageUrl(url: string | null | undefined): string | null;
7
- export declare function resolveCatalogDisplayImageUrl(thumbnailUrl: string | null | undefined, imageUrl: string | null | undefined): string | null;
6
+ export interface CatalogImageUrlOptions {
7
+ /** Required to upgrade legacy kiosk URLs `/api/products/{id}/image` `/api/{tenant}/v1/products/{id}/image`. */
8
+ readonly tenantCode?: string | null;
9
+ }
10
+ export declare function toSameOriginCatalogImageUrl(url: string | null | undefined, options?: CatalogImageUrlOptions): string | null;
11
+ export declare function resolveCatalogDisplayImageUrl(thumbnailUrl: string | null | undefined, imageUrl: string | null | undefined, options?: CatalogImageUrlOptions): string | null;
8
12
  //# sourceMappingURL=catalogImageUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalogImageUrl.d.ts","sourceRoot":"","sources":["../src/catalogImageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAiBzF;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,CAEf"}
1
+ {"version":3,"file":"catalogImageUrl.d.ts","sourceRoot":"","sources":["../src/catalogImageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,sBAAsB;IACrC,iHAAiH;IACjH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAkBD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,GAAG,IAAI,CAuBf;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,GAAG,IAAI,CAEf"}
@@ -3,18 +3,34 @@
3
3
  * Customer/kiosk PWAs proxy `/api` on the same origin in dev — rewrite to pathname so `<img>`
4
4
  * and fetch stay same-origin (CSP + CORP safe).
5
5
  */
6
- export function toSameOriginCatalogImageUrl(url) {
6
+ const LEGACY_KIOSK_IMAGE_PATH = /^\/api\/products\/(\d+)\/image$/;
7
+ function rewriteLegacyKioskImagePath(pathname, search, tenantCode) {
8
+ if (!tenantCode) {
9
+ return `${pathname}${search}`;
10
+ }
11
+ const match = pathname.match(LEGACY_KIOSK_IMAGE_PATH);
12
+ if (!match) {
13
+ return `${pathname}${search}`;
14
+ }
15
+ const productId = match[1];
16
+ return `/api/${tenantCode}/v1/products/${productId}/image${search}`;
17
+ }
18
+ export function toSameOriginCatalogImageUrl(url, options) {
7
19
  if (!url || url.trim().length === 0) {
8
20
  return null;
9
21
  }
10
22
  const trimmed = url.trim();
23
+ const tenantCode = options?.tenantCode ?? null;
11
24
  if (trimmed.startsWith('/api/')) {
12
- return trimmed;
25
+ const queryIndex = trimmed.indexOf('?');
26
+ const pathname = queryIndex >= 0 ? trimmed.slice(0, queryIndex) : trimmed;
27
+ const search = queryIndex >= 0 ? trimmed.slice(queryIndex) : '';
28
+ return rewriteLegacyKioskImagePath(pathname, search, tenantCode);
13
29
  }
14
30
  try {
15
31
  const parsed = new URL(trimmed);
16
32
  if (parsed.pathname.startsWith('/api/')) {
17
- return `${parsed.pathname}${parsed.search}`;
33
+ return rewriteLegacyKioskImagePath(parsed.pathname, parsed.search, tenantCode);
18
34
  }
19
35
  return trimmed;
20
36
  }
@@ -22,7 +38,7 @@ export function toSameOriginCatalogImageUrl(url) {
22
38
  return trimmed;
23
39
  }
24
40
  }
25
- export function resolveCatalogDisplayImageUrl(thumbnailUrl, imageUrl) {
26
- return toSameOriginCatalogImageUrl(thumbnailUrl ?? imageUrl);
41
+ export function resolveCatalogDisplayImageUrl(thumbnailUrl, imageUrl, options) {
42
+ return toSameOriginCatalogImageUrl(thumbnailUrl ?? imageUrl, options);
27
43
  }
28
44
  //# sourceMappingURL=catalogImageUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalogImageUrl.js","sourceRoot":"","sources":["../src/catalogImageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAA8B;IACxE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,YAAuC,EACvC,QAAmC;IAEnC,OAAO,2BAA2B,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"catalogImageUrl.js","sourceRoot":"","sources":["../src/catalogImageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AAOlE,SAAS,2BAA2B,CAClC,QAAgB,EAChB,MAAc,EACd,UAA0B;IAE1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,QAAQ,UAAU,gBAAgB,SAAS,SAAS,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,GAA8B,EAC9B,OAAgC;IAEhC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IAE/C,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1E,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,OAAO,2BAA2B,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,YAAuC,EACvC,QAAmC,EACnC,OAAgC;IAEhC,OAAO,2BAA2B,CAAC,YAAY,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-kiosk-shared",
3
- "version": "2.1.58",
3
+ "version": "2.1.59",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Shared types, API contracts, and error classes for Pi Kiosk system",