pi-kiosk-shared 2.1.58 → 2.1.60
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.
- package/dist/catalogImageUrl.d.ts +6 -2
- package/dist/catalogImageUrl.d.ts.map +1 -1
- package/dist/catalogImageUrl.js +21 -5
- package/dist/catalogImageUrl.js.map +1 -1
- package/dist/permissions/capabilityBridgeRules.d.ts +5 -2
- package/dist/permissions/capabilityBridgeRules.d.ts.map +1 -1
- package/dist/permissions/capabilityBridgeRules.js +42 -7
- package/dist/permissions/capabilityBridgeRules.js.map +1 -1
- package/package.json +3 -1
|
@@ -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
|
|
7
|
-
|
|
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;
|
|
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"}
|
package/dist/catalogImageUrl.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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;
|
|
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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared capability bridge rules — single source for client JWT fallback checks.
|
|
3
3
|
* Server uses the same helpers from pi-kiosk-shared in PermissionInheritanceResolver.
|
|
4
|
+
* Forward-only: legacy → canonical; never canonical view → manage cluster.
|
|
4
5
|
*/
|
|
5
6
|
export declare const ADMIN_USERS_MANAGE_BRIDGE_SOURCES: readonly string[];
|
|
6
7
|
export declare const ADMIN_USERS_MANAGE_BRIDGE_TARGETS: readonly string[];
|
|
8
|
+
export declare const DEV_COMPLIANCE_AUDIT_BRIDGE_SOURCES: readonly string[];
|
|
9
|
+
export declare const DEV_COMPLIANCE_GDPR_BRIDGE_SOURCES: readonly string[];
|
|
7
10
|
/**
|
|
8
11
|
* Forward-only implication used by client expansion and server bridge checks.
|
|
9
12
|
*/
|
|
@@ -13,6 +16,6 @@ export declare function grantImpliesTarget(granted: string, target: string): boo
|
|
|
13
16
|
*/
|
|
14
17
|
export declare function expandCapabilitiesForClientCheck(grants: readonly string[]): Set<string>;
|
|
15
18
|
/** Parity fixture — both backend and shared tests must satisfy. */
|
|
16
|
-
export declare const BRIDGE_PARITY_FIXTURE_GRANTS: readonly ["users:admins:create"];
|
|
17
|
-
export declare const BRIDGE_PARITY_FIXTURE_EXPECTED_TARGETS: readonly ["tenant.adminUserCapabilities.view", "tenant.adminUserCapabilities.manage", "tenant.adminUsers.manage"];
|
|
19
|
+
export declare const BRIDGE_PARITY_FIXTURE_GRANTS: readonly ["users:admins:create", "dev:workers:read", "dev:workers:run", "dev:aggregates:read", "dev:aggregates:run", "dev:compliance:audit:read", "dev:compliance:gdpr:read"];
|
|
20
|
+
export declare const BRIDGE_PARITY_FIXTURE_EXPECTED_TARGETS: readonly ["tenant.adminUserCapabilities.view", "tenant.adminUserCapabilities.manage", "tenant.adminUsers.manage", "platform.retentionWorkers.view", "platform.retentionWorkers.manage", "platform.aggregates.view", "platform.aggregates.manage", "platform.complianceAudit.view", "platform.complianceGdpr.view"];
|
|
18
21
|
//# sourceMappingURL=capabilityBridgeRules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityBridgeRules.d.ts","sourceRoot":"","sources":["../../src/permissions/capabilityBridgeRules.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilityBridgeRules.d.ts","sourceRoot":"","sources":["../../src/permissions/capabilityBridgeRules.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,iCAAiC,EAAE,SAAS,MAAM,EAG9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,SAAS,MAAM,EAM9D,CAAC;AAEF,eAAO,MAAM,mCAAmC,EAAE,SAAS,MAAM,EAEhE,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,SAAS,MAAM,EAE/D,CAAC;AAgBF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA2B3E;AAkBD;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAkBvF;AAED,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,+KAQ/B,CAAC;AAEX,eAAO,MAAM,sCAAsC,oTAUzC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared capability bridge rules — single source for client JWT fallback checks.
|
|
3
3
|
* Server uses the same helpers from pi-kiosk-shared in PermissionInheritanceResolver.
|
|
4
|
+
* Forward-only: legacy → canonical; never canonical view → manage cluster.
|
|
4
5
|
*/
|
|
5
6
|
export const ADMIN_USERS_MANAGE_BRIDGE_SOURCES = [
|
|
6
7
|
'users:admins:create',
|
|
@@ -13,7 +14,24 @@ export const ADMIN_USERS_MANAGE_BRIDGE_TARGETS = [
|
|
|
13
14
|
'tenant.adminUserCapabilities.view',
|
|
14
15
|
'tenant.adminUserCapabilities.manage',
|
|
15
16
|
];
|
|
16
|
-
const
|
|
17
|
+
export const DEV_COMPLIANCE_AUDIT_BRIDGE_SOURCES = [
|
|
18
|
+
'dev:compliance:audit:read',
|
|
19
|
+
];
|
|
20
|
+
export const DEV_COMPLIANCE_GDPR_BRIDGE_SOURCES = [
|
|
21
|
+
'dev:compliance:gdpr:read',
|
|
22
|
+
];
|
|
23
|
+
const ADMIN_BRIDGE_SOURCE_SET = new Set(ADMIN_USERS_MANAGE_BRIDGE_SOURCES);
|
|
24
|
+
/** Forward-only legacy → canonical (no canonical → full cluster). */
|
|
25
|
+
const BRIDGE_TARGET_BY_SOURCE = new Map([
|
|
26
|
+
['users:admins:create', ADMIN_USERS_MANAGE_BRIDGE_TARGETS],
|
|
27
|
+
['tenant.adminUsers.manage', ADMIN_USERS_MANAGE_BRIDGE_TARGETS],
|
|
28
|
+
['dev:workers:read', ['platform.retentionWorkers.view']],
|
|
29
|
+
['dev:workers:run', ['platform.retentionWorkers.manage', 'platform.retentionWorkers.view']],
|
|
30
|
+
['dev:aggregates:read', ['platform.aggregates.view']],
|
|
31
|
+
['dev:aggregates:run', ['platform.aggregates.manage', 'platform.aggregates.view']],
|
|
32
|
+
['dev:compliance:audit:read', ['platform.complianceAudit.view']],
|
|
33
|
+
['dev:compliance:gdpr:read', ['platform.complianceGdpr.view']],
|
|
34
|
+
]);
|
|
17
35
|
/**
|
|
18
36
|
* Forward-only implication used by client expansion and server bridge checks.
|
|
19
37
|
*/
|
|
@@ -21,7 +39,11 @@ export function grantImpliesTarget(granted, target) {
|
|
|
21
39
|
if (granted === target) {
|
|
22
40
|
return true;
|
|
23
41
|
}
|
|
24
|
-
|
|
42
|
+
const bridgeTargets = BRIDGE_TARGET_BY_SOURCE.get(granted);
|
|
43
|
+
if (bridgeTargets?.includes(target)) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (ADMIN_BRIDGE_SOURCE_SET.has(granted) && ADMIN_USERS_MANAGE_BRIDGE_TARGETS.includes(target)) {
|
|
25
47
|
return true;
|
|
26
48
|
}
|
|
27
49
|
if (granted.endsWith('.manage') && target === `${granted.slice(0, -'.manage'.length)}.view`) {
|
|
@@ -37,10 +59,9 @@ export function grantImpliesTarget(granted, target) {
|
|
|
37
59
|
}
|
|
38
60
|
function impliedTargetsFromGrant(grant) {
|
|
39
61
|
const implied = [];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
62
|
+
const bridgeTargets = BRIDGE_TARGET_BY_SOURCE.get(grant);
|
|
63
|
+
if (bridgeTargets) {
|
|
64
|
+
implied.push(...bridgeTargets);
|
|
44
65
|
}
|
|
45
66
|
if (grant.endsWith(':manage')) {
|
|
46
67
|
implied.push(grant.replace(/:manage$/, ':read'));
|
|
@@ -74,10 +95,24 @@ export function expandCapabilitiesForClientCheck(grants) {
|
|
|
74
95
|
return result;
|
|
75
96
|
}
|
|
76
97
|
/** Parity fixture — both backend and shared tests must satisfy. */
|
|
77
|
-
export const BRIDGE_PARITY_FIXTURE_GRANTS = [
|
|
98
|
+
export const BRIDGE_PARITY_FIXTURE_GRANTS = [
|
|
99
|
+
'users:admins:create',
|
|
100
|
+
'dev:workers:read',
|
|
101
|
+
'dev:workers:run',
|
|
102
|
+
'dev:aggregates:read',
|
|
103
|
+
'dev:aggregates:run',
|
|
104
|
+
'dev:compliance:audit:read',
|
|
105
|
+
'dev:compliance:gdpr:read',
|
|
106
|
+
];
|
|
78
107
|
export const BRIDGE_PARITY_FIXTURE_EXPECTED_TARGETS = [
|
|
79
108
|
'tenant.adminUserCapabilities.view',
|
|
80
109
|
'tenant.adminUserCapabilities.manage',
|
|
81
110
|
'tenant.adminUsers.manage',
|
|
111
|
+
'platform.retentionWorkers.view',
|
|
112
|
+
'platform.retentionWorkers.manage',
|
|
113
|
+
'platform.aggregates.view',
|
|
114
|
+
'platform.aggregates.manage',
|
|
115
|
+
'platform.complianceAudit.view',
|
|
116
|
+
'platform.complianceGdpr.view',
|
|
82
117
|
];
|
|
83
118
|
//# sourceMappingURL=capabilityBridgeRules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityBridgeRules.js","sourceRoot":"","sources":["../../src/permissions/capabilityBridgeRules.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilityBridgeRules.js","sourceRoot":"","sources":["../../src/permissions/capabilityBridgeRules.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-kiosk-shared",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.60",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Shared types, API contracts, and error classes for Pi Kiosk system",
|
|
@@ -83,6 +83,8 @@
|
|
|
83
83
|
"scripts": {
|
|
84
84
|
"build": "npm run clean && tsc",
|
|
85
85
|
"dev": "tsc --watch",
|
|
86
|
+
"type-check": "tsc --noEmit",
|
|
87
|
+
"lint": "npm run type-check",
|
|
86
88
|
"test": "jest --config jest.config.cjs --passWithNoTests",
|
|
87
89
|
"test:watch": "jest --config jest.config.cjs --watch",
|
|
88
90
|
"test:coverage": "jest --config jest.config.cjs --coverage",
|