pi-kiosk-shared 2.3.3 → 2.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -9
- package/dist/analyticsPiiTags.d.ts +6 -0
- package/dist/analyticsPiiTags.d.ts.map +1 -0
- package/dist/api.d.ts +129 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +305 -0
- package/dist/api.js.map +1 -0
- package/dist/auditEventCodes.d.ts +8 -0
- package/dist/auditEventCodes.d.ts.map +1 -0
- package/dist/auditEventCodes.js +180 -0
- package/dist/auditEventCodes.js.map +1 -0
- package/dist/auditEventDescriptions.d.ts +5 -0
- package/dist/auditEventDescriptions.d.ts.map +1 -0
- package/dist/auditEventDescriptions.js +849 -0
- package/dist/auditEventDescriptions.js.map +1 -0
- package/dist/auditEventLabels.d.ts +4 -0
- package/dist/auditEventLabels.d.ts.map +1 -0
- package/dist/auditEventLabels.js +858 -0
- package/dist/auditEventLabels.js.map +1 -0
- package/dist/auditMetadataDisplayFields.d.ts +9 -0
- package/dist/auditMetadataDisplayFields.d.ts.map +1 -0
- package/dist/auditMetadataDisplayFields.js +273 -0
- package/dist/auditMetadataDisplayFields.js.map +1 -0
- package/dist/barcode/normalizeScanPayload.d.ts +17 -0
- package/dist/barcode/normalizeScanPayload.d.ts.map +1 -0
- package/dist/barcode/normalizeScanPayload.js +100 -0
- package/dist/barcode/normalizeScanPayload.js.map +1 -0
- package/dist/checkout/sessionMetadataV3.d.ts +36 -0
- package/dist/checkout/sessionMetadataV3.d.ts.map +1 -0
- package/dist/checkout/sessionMetadataV3.js +6 -0
- package/dist/checkout/sessionMetadataV3.js.map +1 -0
- package/dist/checkout/sessionMetadataV4.d.ts +19 -0
- package/dist/checkout/sessionMetadataV4.d.ts.map +1 -0
- package/dist/checkout/sessionMetadataV4.js +33 -0
- package/dist/checkout/sessionMetadataV4.js.map +1 -0
- package/dist/checkout/sessionMetadataV5.d.ts +46 -0
- package/dist/checkout/sessionMetadataV5.d.ts.map +1 -0
- package/dist/checkout/sessionMetadataV5.js +40 -0
- package/dist/checkout/sessionMetadataV5.js.map +1 -0
- package/dist/errors/pickLocalizedApiMessage.d.ts +6 -0
- package/dist/errors/pickLocalizedApiMessage.d.ts.map +1 -0
- package/dist/errors/pickLocalizedApiMessage.js +31 -0
- package/dist/errors/pickLocalizedApiMessage.js.map +1 -0
- package/dist/hooks/scannerCameraConstraints.d.ts +57 -0
- package/dist/hooks/scannerCameraConstraints.d.ts.map +1 -0
- package/dist/hooks/scannerCameraConstraints.js +195 -0
- package/dist/hooks/scannerCameraConstraints.js.map +1 -0
- package/dist/hooks/scannerFormats.d.ts +11 -0
- package/dist/hooks/scannerFormats.d.ts.map +1 -0
- package/dist/hooks/scannerFormats.js +39 -0
- package/dist/hooks/scannerFormats.js.map +1 -0
- package/dist/hooks/scannerNativeTypes.d.ts +18 -0
- package/dist/hooks/scannerNativeTypes.d.ts.map +1 -0
- package/dist/hooks/scannerNativeTypes.js +2 -0
- package/dist/hooks/scannerNativeTypes.js.map +1 -0
- package/dist/hooks/scannerPlatformProfile.d.ts +23 -0
- package/dist/hooks/scannerPlatformProfile.d.ts.map +1 -0
- package/dist/hooks/scannerPlatformProfile.js +86 -0
- package/dist/hooks/scannerPlatformProfile.js.map +1 -0
- package/dist/hooks/scannerScanPasses.d.ts +23 -0
- package/dist/hooks/scannerScanPasses.d.ts.map +1 -0
- package/dist/hooks/scannerScanPasses.js +66 -0
- package/dist/hooks/scannerScanPasses.js.map +1 -0
- package/dist/hooks/selectEngine.d.ts +14 -0
- package/dist/hooks/selectEngine.d.ts.map +1 -0
- package/dist/hooks/selectEngine.js +2 -0
- package/dist/hooks/selectEngine.js.map +1 -0
- package/dist/hooks/zxingJsSensitiveDecode.d.ts +13 -0
- package/dist/hooks/zxingJsSensitiveDecode.d.ts.map +1 -0
- package/dist/hooks/zxingJsSensitiveDecode.js +54 -0
- package/dist/hooks/zxingJsSensitiveDecode.js.map +1 -0
- package/dist/labels/localizedNameMap.d.ts +37 -0
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scannerScanPasses.d.ts","sourceRoot":"","sources":["../../src/hooks/scannerScanPasses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAKtF;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CA0DjG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Full frame + center zooms + mid-band (1D) + four corner crops + optional tight center.
|
|
3
|
+
* Covers off-center / distant codes that are not in the viewfinder center.
|
|
4
|
+
*
|
|
5
|
+
* CPU bound: at most 10 passes (1 full + 3 center + 1 mid-band + 4 corners + 1 tight center).
|
|
6
|
+
* Do not add more regions without raising this documented ceiling (~10–12 max).
|
|
7
|
+
*/
|
|
8
|
+
/** Full-frame only — cheap first pass (~1 crop per tick; G9 CPU bound). */
|
|
9
|
+
export function buildQuickScanPass(videoWidth, videoHeight) {
|
|
10
|
+
if (videoWidth < 2 || videoHeight < 2) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
return [{ sx: 0, sy: 0, sw: videoWidth, sh: videoHeight, scale: 1 }];
|
|
14
|
+
}
|
|
15
|
+
export function buildMaxSensitivityScanPasses(videoWidth, videoHeight) {
|
|
16
|
+
const vw = videoWidth;
|
|
17
|
+
const vh = videoHeight;
|
|
18
|
+
if (vw < 2 || vh < 2) {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const center = (frac, scale) => {
|
|
22
|
+
const sw = Math.max(2, Math.floor(vw * frac));
|
|
23
|
+
const sh = Math.max(2, Math.floor(vh * frac));
|
|
24
|
+
return {
|
|
25
|
+
sx: Math.floor((vw - sw) / 2),
|
|
26
|
+
sy: Math.floor((vh - sh) / 2),
|
|
27
|
+
sw,
|
|
28
|
+
sh,
|
|
29
|
+
scale,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
/** Corner crop: `frac`×`frac` of the frame anchored at a corner (off-center). */
|
|
33
|
+
const corner = (anchor, frac, scale) => {
|
|
34
|
+
const sw = Math.max(2, Math.floor(vw * frac));
|
|
35
|
+
const sh = Math.max(2, Math.floor(vh * frac));
|
|
36
|
+
const sx = anchor === 'tr' || anchor === 'br' ? vw - sw : 0;
|
|
37
|
+
const sy = anchor === 'bl' || anchor === 'br' ? vh - sh : 0;
|
|
38
|
+
return { sx, sy, sw, sh, scale };
|
|
39
|
+
};
|
|
40
|
+
const bandH = Math.max(2, Math.floor(vh * 0.28));
|
|
41
|
+
const midBand = {
|
|
42
|
+
sx: 0,
|
|
43
|
+
sy: Math.floor((vh - bandH) / 2),
|
|
44
|
+
sw: vw,
|
|
45
|
+
sh: bandH,
|
|
46
|
+
scale: 2,
|
|
47
|
+
};
|
|
48
|
+
return [
|
|
49
|
+
// 1. full frame
|
|
50
|
+
{ sx: 0, sy: 0, sw: vw, sh: vh, scale: 1 },
|
|
51
|
+
// 2–4. center zooms
|
|
52
|
+
center(0.7, 1.75),
|
|
53
|
+
center(0.5, 2.25),
|
|
54
|
+
center(0.35, 3),
|
|
55
|
+
// 5. mid-band 1D
|
|
56
|
+
midBand,
|
|
57
|
+
// 6–9. four corner crops (off-center distant codes)
|
|
58
|
+
corner('tl', 0.4, 2.75),
|
|
59
|
+
corner('tr', 0.4, 2.75),
|
|
60
|
+
corner('bl', 0.4, 2.75),
|
|
61
|
+
corner('br', 0.4, 2.75),
|
|
62
|
+
// 10. stronger tight center
|
|
63
|
+
center(0.25, 3.5),
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=scannerScanPasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scannerScanPasses.js","sourceRoot":"","sources":["../../src/hooks/scannerScanPasses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decode engines used by {@link useBarcodeScanner}:
|
|
3
|
+
* - `zbar-wasm` — ZBar C/C++ WASM (primary when boot succeeds; retail EAN/UPC + QR)
|
|
4
|
+
* - `zxing` — pure-JS @zxing/browser parallel assist starting on **frame 0** (v2.2)
|
|
5
|
+
* - `native-detector` — Chromium BarcodeDetector parallel assist when probe succeeds
|
|
6
|
+
*
|
|
7
|
+
* Boot failure (missing WASM URL / ZBar init error) → **degraded boot**: `degradedMode: true`,
|
|
8
|
+
* `@zxing` + native (if available) run without hard error. Surfaces must read
|
|
9
|
+
* `UseBarcodeScannerReturn.degradedMode`, not infer from `engine === 'zxing'` alone.
|
|
10
|
+
*
|
|
11
|
+
* Engine selection lives only in `useBarcodeScanner`.
|
|
12
|
+
*/
|
|
13
|
+
export type ScannerEngine = 'zbar-wasm' | 'zxing' | 'native-detector';
|
|
14
|
+
//# sourceMappingURL=selectEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/selectEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectEngine.js","sourceRoot":"","sources":["../../src/hooks/selectEngine.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-sensitivity pure-JS @zxing decode (the library that previously worked).
|
|
3
|
+
* Multi-pass digital zoom + TRY_HARDER for distant / small codes.
|
|
4
|
+
*/
|
|
5
|
+
import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
6
|
+
import { BarcodeFormat } from '@zxing/library';
|
|
7
|
+
export declare function createSensitiveZxingReader(formats: readonly BarcodeFormat[]): BrowserMultiFormatReader;
|
|
8
|
+
/**
|
|
9
|
+
* Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
|
|
10
|
+
* Returns the first payload or null when nothing is found.
|
|
11
|
+
*/
|
|
12
|
+
export declare function decodeVideoFrameWithZxingJs(video: HTMLVideoElement, canvas: HTMLCanvasElement, reader: BrowserMultiFormatReader): string | null;
|
|
13
|
+
//# sourceMappingURL=zxingJsSensitiveDecode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zxingJsSensitiveDecode.d.ts","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,wBAAwB,CAK1B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,wBAAwB,GAC/B,MAAM,GAAG,IAAI,CAwCf"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-sensitivity pure-JS @zxing decode (the library that previously worked).
|
|
3
|
+
* Multi-pass digital zoom + TRY_HARDER for distant / small codes.
|
|
4
|
+
*/
|
|
5
|
+
import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
6
|
+
import { DecodeHintType } from '@zxing/library';
|
|
7
|
+
import { buildMaxSensitivityScanPasses } from './scannerScanPasses.js';
|
|
8
|
+
export function createSensitiveZxingReader(formats) {
|
|
9
|
+
const hints = new Map();
|
|
10
|
+
hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formats]);
|
|
11
|
+
hints.set(DecodeHintType.TRY_HARDER, true);
|
|
12
|
+
return new BrowserMultiFormatReader(hints);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Decode one video frame via multi-pass canvas crops → @zxing decodeFromCanvas.
|
|
16
|
+
* Returns the first payload or null when nothing is found.
|
|
17
|
+
*/
|
|
18
|
+
export function decodeVideoFrameWithZxingJs(video, canvas, reader) {
|
|
19
|
+
const width = video.videoWidth;
|
|
20
|
+
const height = video.videoHeight;
|
|
21
|
+
if (width < 2 || height < 2) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const ctx = canvas.getContext('2d', { willReadFrequently: true });
|
|
25
|
+
if (ctx === null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
ctx.imageSmoothingEnabled = false;
|
|
29
|
+
const passes = buildMaxSensitivityScanPasses(width, height);
|
|
30
|
+
for (const pass of passes) {
|
|
31
|
+
const outW = Math.max(2, Math.floor(pass.sw * pass.scale));
|
|
32
|
+
const outH = Math.max(2, Math.floor(pass.sh * pass.scale));
|
|
33
|
+
if (canvas.width !== outW) {
|
|
34
|
+
canvas.width = outW;
|
|
35
|
+
}
|
|
36
|
+
if (canvas.height !== outH) {
|
|
37
|
+
canvas.height = outH;
|
|
38
|
+
}
|
|
39
|
+
ctx.clearRect(0, 0, outW, outH);
|
|
40
|
+
ctx.drawImage(video, pass.sx, pass.sy, pass.sw, pass.sh, 0, 0, outW, outH);
|
|
41
|
+
try {
|
|
42
|
+
const result = reader.decodeFromCanvas(canvas);
|
|
43
|
+
const text = result.getText();
|
|
44
|
+
if (text.length > 0) {
|
|
45
|
+
return text;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// NotFoundException / checksum — try next pass
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=zxingJsSensitiveDecode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zxingJsSensitiveDecode.js","sourceRoot":"","sources":["../../src/hooks/zxingJsSensitiveDecode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAiB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,UAAU,0BAA0B,CACxC,OAAiC;IAEjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAuB,EACvB,MAAyB,EACzB,MAAgC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional per-locale display-name overrides for catalog entities
|
|
3
|
+
* (products, categories, etc.) that also have a universal `name`.
|
|
4
|
+
*
|
|
5
|
+
* Distinct from {@link LocalizedLabel} (required cs/en UI copy maps).
|
|
6
|
+
*/
|
|
7
|
+
export type NameLocale = 'cs' | 'en' | 'sk';
|
|
8
|
+
export type LocalizedNameMap = {
|
|
9
|
+
cs?: string;
|
|
10
|
+
en?: string;
|
|
11
|
+
sk?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Keys accepted on {@link LocalizedNameMap}; useful for Zod / form iteration. */
|
|
14
|
+
export declare const LOCALIZED_NAME_MAP_KEYS: readonly ["cs", "en", "sk"];
|
|
15
|
+
/**
|
|
16
|
+
* Zod-friendly plain shape description (shared has no zod dependency).
|
|
17
|
+
* Backend can build:
|
|
18
|
+
* `z.object({ cs: z.string(), en: z.string(), sk: z.string() }).partial().optional().nullable()`
|
|
19
|
+
* then `.transform((v) => normalizeNameLocales(v, universalName))`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const NAME_LOCALES_PLAIN_SHAPE: {
|
|
22
|
+
readonly cs: "string";
|
|
23
|
+
readonly en: "string";
|
|
24
|
+
readonly sk: "string";
|
|
25
|
+
};
|
|
26
|
+
/** Map an i18n language / BCP-47 tag (or exact NameLocale) to a NameLocale. */
|
|
27
|
+
export declare function toNameLocale(locale: NameLocale | string): NameLocale | null;
|
|
28
|
+
/**
|
|
29
|
+
* Trim, drop empties, omit locale values that equal the universal name.
|
|
30
|
+
* Returns `null` when nothing remains (including null/undefined input).
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeNameLocales(nameLocales: LocalizedNameMap | null | undefined, universalName: string): LocalizedNameMap | null;
|
|
33
|
+
/**
|
|
34
|
+
* Prefer a non-empty locale override from `nameLocales`; otherwise the universal `name`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveLocalizedName(name: string, nameLocales: LocalizedNameMap | null | undefined, locale: NameLocale | string): string;
|
|
37
|
+
//# sourceMappingURL=localizedNameMap.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-kiosk-shared",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Shared types, API contracts, and error classes for Pi Kiosk system",
|
|
@@ -338,7 +338,8 @@
|
|
|
338
338
|
"gate:inventory-ops-slo-drift": "node scripts/check-inventory-ops-slo-drift.mjs",
|
|
339
339
|
"check:inventory-ops-slo-drift": "node scripts/check-inventory-ops-slo-drift.mjs",
|
|
340
340
|
"publish:local": "npm run build:clean && npm pack --pack-destination .",
|
|
341
|
-
"
|
|
341
|
+
"gate:publish-dist-declarations": "node scripts/gate-publish-dist-declarations.mjs",
|
|
342
|
+
"prepublishOnly": "npm run build:clean && npm run gate:publish-dist-declarations",
|
|
342
343
|
"preversion": "npm run test -- --passWithNoTests",
|
|
343
344
|
"postversion": "echo 'Version updated. Run git push && git push --tags manually if needed.'",
|
|
344
345
|
"audit:deps": "npm audit --audit-level=high",
|