pi-kiosk-shared 2.1.40 → 2.1.41

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.
@@ -0,0 +1,4 @@
1
+ import { type AnalyticsEventName } from './analyticsEvents.js';
2
+ import type { LocalizedLabel } from './labels/localizedLabel.js';
3
+ export declare const ANALYTICS_EVENT_DESCRIPTIONS: Record<AnalyticsEventName, LocalizedLabel>;
4
+ //# sourceMappingURL=analyticsEventDescriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsEventDescriptions.d.ts","sourceRoot":"","sources":["../src/analyticsEventDescriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAwLjE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CACjD,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { ANALYTICS_DONATION_EVENTS, ANALYTICS_EVENT_NAMES, ANALYTICS_KIOSK_EVENTS, ANALYTICS_RETAIL_EVENTS, ANALYTICS_UNIVERSAL_EVENTS, } from './analyticsEvents.js';
2
+ /** Operator-facing analytics event descriptions (cs + en), 1–3 sentences each. */
3
+ const UNIVERSAL_DESCRIPTIONS = {
4
+ [ANALYTICS_UNIVERSAL_EVENTS.SESSION_STARTED]: {
5
+ en: 'Recorded once when the backend accepts a new analytics session (POST …/analytics/sessions via StartAnalyticsSessionUseCase). This is the only server emitter of the “Session started” event. One ingest row per tenant + client sessionId; repeats are deduplicated. It is not the dashboard funnel metric “Sessions started” — that column comes from the sessions table, not a count of this event. Scoped to the tenant; timestamps stored in UTC; OPERATIONAL telemetry only.',
6
+ cs: 'Zaznamená se jednou, kdy backend přijme novou analytickou relaci (POST …/analytics/sessions přes StartAnalyticsSessionUseCase). Jediný serverový emitent události „Relace zahájena“. Jedna řádka ingestu na tenant + client sessionId; opakování se deduplikují. Není to metrika „Zahájené relace“ ve funnelu — ta vychází ze sloupce sessions, ne z počtu tohoto eventu. V rozsahu tenanta; čas UTC; pouze OPERATIONAL telemetrie.',
7
+ },
8
+ [ANALYTICS_UNIVERSAL_EVENTS.SESSION_COMPLETED]: {
9
+ en: 'Recorded when a session is closed with outcome completed (CloseAnalyticsSessionUseCase), including after a successful payment completion path. One row per closed session under normal idempotency. Not the same as payment_confirmed or retail_order_paid/donation_completed — those are separate commerce events. Tenant-scoped; UTC occurredAt; does not by itself drive GMV rollups.',
10
+ cs: 'Zaznamená se při uzavření relace s výsledkem completed (CloseAnalyticsSessionUseCase), včetně po úspěšné platbě. Obvykle jedna řádka na uzavřenou relaci. Není totéž co payment_confirmed ani retail_order_paid/donation_completed. V rozsahu tenanta; čas UTC; samo o sobě neřídí GMV v rollupech.',
11
+ },
12
+ [ANALYTICS_UNIVERSAL_EVENTS.SESSION_ABANDONED]: {
13
+ en: 'Recorded when a session ends without completion: explicit abandon API, tab_close/route_leave beacons, payment cancel mapped to abandon (§2.6), or AnalyticsSessionTimeoutWorker. One occurrence per abandon close per session in typical flows. Not payment_failed (that is explicit cancel while payment is terminal/uninitiated). Not a “bounce” on kiosk_wakeup alone. Tenant + sessionId scoped; UTC dates in explore filters apply to occurredAt, not local kiosk clock.',
14
+ cs: 'Zaznamená se, když relace skončí bez dokončení: abandon API, beacon tab_close/route_leave, mapování cancel na abandon (§2.6) nebo timeout worker. Typicky jedna událost na abandon uzavření relace. Není payment_failed (explicitní zrušení u terminální platby). Není „bounce“ jen po kiosk_wakeup. Rozsah tenant + sessionId; filtry explore používají UTC occurredAt.',
15
+ },
16
+ [ANALYTICS_UNIVERSAL_EVENTS.SCREEN_VIEWED]: {
17
+ en: 'Recorded when the kiosk or customer PWA shows a screen (client emit on mount or route enter). Each navigation or re-entry to the same screen is a separate row — multiple per session are expected. Counts as one occurrence per ingest row in Explore (raw COUNT(*)). Not a session start/end, not a payment outcome, and not deduplicated across tenants. Optional metadata: screen_name / screen, previous_screen_name, payment_method. OPERATIONAL only; UTC storage.',
18
+ cs: 'Zaznamená se při zobrazení obrazovky na kiosku nebo v PWA zákazníka (klient při mountu nebo vstupu na route). Každá navigace nebo opětovný vstup = samostatná řádka — v relaci jich bývá více. V Explore jedna occurrence = jeden ingest řádek (COUNT(*)). Není začátek/konec relace ani výsledek platby. Volitelná metadata: screen_name / screen, previous_screen_name. Pouze OPERATIONAL; UTC.',
19
+ },
20
+ [ANALYTICS_UNIVERSAL_EVENTS.CTA_CLICKED]: {
21
+ en: 'Recorded when the user taps a primary call-to-action (client emit). One row per click emit; rapid double-taps can produce two rows. Not a screen_viewed (navigation) or payment_started. Tenant-scoped; may include element_id / cta_label metadata. Explore counts rows, not unique users.',
22
+ cs: 'Zaznamená se po klepnutí na hlavní CTA (klient). Jedna řádka na emit; dvojité klepnutí může dát dvě řádky. Není screen_viewed ani payment_started. Rozsah tenant; metadata element_id / cta_label. Explore počítá řádky, ne unikátní uživatele.',
23
+ },
24
+ [ANALYTICS_UNIVERSAL_EVENTS.BACK_CLICKED]: {
25
+ en: 'Recorded when the user uses an in-flow back control (client emit). One occurrence per back action emitted. Not session_abandoned unless the abandon/close API or beacon also fires. Tenant-scoped OPERATIONAL telemetry.',
26
+ cs: 'Zaznamená se při použití zpět v průběhu (klient). Jedna occurrence na emit zpět. Není session_abandoned, pokud se zároveň nevolá abandon/close API nebo beacon. OPERATIONAL telemetrie v rozsahu tenanta.',
27
+ },
28
+ [ANALYTICS_UNIVERSAL_EVENTS.ERROR_SHOWN]: {
29
+ en: 'Recorded when the UI surfaces an error state to the user (client emit from kiosk orchestration and similar). One row per error presentation emit; the same underlying fault shown twice yields two rows. Not server exception logs or ingest rejections. May carry error_code / message metadata. Not counted in payment_failed unless cancel mapping applies separately.',
30
+ cs: 'Zaznamená se, kdy UI zobrazí chybu uživateli (klient, např. orchestrace kiosku). Jedna řádka na emit zobrazení; opakované zobrazení = více řádků. Nejsou to serverové logy ani ingest rejections. Metadata error_code / message. Není payment_failed, pokud cancel mapování neproběhne zvlášť.',
31
+ },
32
+ [ANALYTICS_UNIVERSAL_EVENTS.AUTH_FLOW_STARTED]: {
33
+ en: 'Recorded when the customer begins login or registration (client emit). One row per started auth attempt emit. Not login_success or account_created until those steps complete. Tenant-scoped; optional auth_method metadata.',
34
+ cs: 'Zaznamená se na začátku přihlášení nebo registrace (klient). Jedna řádka na emit zahájení auth. Není login_success ani account_created do dokončení kroku. Rozsah tenant; volitelné auth_method.',
35
+ },
36
+ [ANALYTICS_UNIVERSAL_EVENTS.IDENTITY_COMPLETED]: {
37
+ en: 'Recorded when the user finishes an identity capture step (e.g. phone/email verification) in the journey (client emit). One occurrence per completed identity step emit. Not login_success and not payment identity checks on the server alone.',
38
+ cs: 'Zaznamená se po dokončení kroku identity (např. ověření telefonu/e-mailu) v journey (klient). Jedna occurrence na emit dokončeného kroku. Není login_success ani samotná serverová kontrola u platby.',
39
+ },
40
+ [ANALYTICS_UNIVERSAL_EVENTS.LOGIN_SUCCESS]: {
41
+ en: 'Recorded when authentication succeeds (client and/or server with idempotency on tenantId + customerId). At most one stable row per customer per tenant under server idempotency keys. Not account_created for brand-new registrations. OPERATIONAL; not marketing consent profiling.',
42
+ cs: 'Zaznamená se po úspěšném přihlášení (klient a/nebo server s idempotencí tenantId + customerId). Při serverové idempotenci nejvýše jedna stabilní řádka na zákazníka a tenant. Není account_created u nové registrace. OPERATIONAL; ne marketingový profil.',
43
+ },
44
+ [ANALYTICS_UNIVERSAL_EVENTS.ACCOUNT_CREATED]: {
45
+ en: 'Recorded when a new customer account is created in the auth flow (client and/or server; idempotent per tenantId + customerId). One canonical row per new account under server keys. Not login_success for returning users. Tenant-scoped OPERATIONAL event.',
46
+ cs: 'Zaznamená se při vytvoření nového účtu v auth flow (klient a/nebo server; idempotentní per tenantId + customerId). Jedna kanonická řádka na nový účet. Není login_success pro vracející se uživatele. OPERATIONAL v rozsahu tenanta.',
47
+ },
48
+ [ANALYTICS_UNIVERSAL_EVENTS.PAYMENT_STARTED]: {
49
+ en: 'Recorded when a payment attempt begins — client emit first (with clientEventId), then server merge/insert from CreateQRPayment / CreateGatewayPayment (Option A merge port may UPDATE the same row with paymentId). One logical attempt per paymentId after merge; duplicate client+server rows collapse when merge succeeds. Not payment_confirmed or QR generation alone. Included in funnel “payment started” session flags, not raw event sum for sessions started.',
50
+ cs: 'Zaznamená se na začátku pokusu o platbu — nejdřív klient (clientEventId), pak server merge/insert z CreateQRPayment / CreateGatewayPayment (Option A může UPDATE stejné řádky paymentId). Po merge jeden logický pokus na paymentId. Není payment_confirmed ani samotné vygenerování QR. Ve funnelu flag relací s payment started, ne součet pro sessions started.',
51
+ },
52
+ [ANALYTICS_UNIVERSAL_EVENTS.PAYMENT_QR_GENERATED]: {
53
+ en: 'Recorded by the server when a QR payment payload is created (CreateQRPaymentUseCase). One idempotent row per tenant + paymentId. Not emitted by the kiosk UI alone. Precedes or accompanies payment_submitted on the QR path. OPERATIONAL server telemetry.',
54
+ cs: 'Zaznamená server při vytvoření QR platby (CreateQRPaymentUseCase). Jedna idempotentní řádka na tenant + paymentId. NEemituje samotné UI kiosku. Na QR cestě předchází nebo doprovází payment_submitted. Serverová OPERATIONAL telemetrie.',
55
+ },
56
+ [ANALYTICS_UNIVERSAL_EVENTS.PAYMENT_SUBMITTED]: {
57
+ en: 'Recorded by the server when the QR (or gateway) payment is submitted for provider processing after generation. Idempotent per payment attempt on the server. Not “user pressed pay” on the client (that is closer to payment_started / checkout_started). Not payment_confirmed until the transaction completes.',
58
+ cs: 'Zaznamená server, když je QR (nebo gateway) platba odeslána poskytovateli po vygenerování. Idempotentní na serveru per pokus. Není klepnutí Zaplatit na klientovi (payment_started / checkout_started). Není payment_confirmed do dokončení transakce.',
59
+ },
60
+ [ANALYTICS_UNIVERSAL_EVENTS.PAYMENT_CONFIRMED]: {
61
+ en: 'Recorded only on the server when CompletePaymentTransactionUseCase moves the transaction to COMPLETED (best-effort emit). One idempotent row per tenant + paymentId; metadata may include amount_cents. Not a client-side “thank you” screen view. Not the same row as retail_order_paid or donation_completed — those fire as companion events in the same completion handler. Explore “occurrences” are raw event rows; dashboard GMV uses commerce rollups / TenantCommerceFact, not a sum of this event alone. UTC occurredAt; tenant-scoped.',
62
+ cs: 'Zaznamená pouze server při přechodu transakce do COMPLETED v CompletePaymentTransactionUseCase (best-effort). Jedna idempotentní řádka na tenant + paymentId; metadata může mít amount_cents. Není zobrazení děkovné obrazovky na klientovi. Není totéž co retail_order_paid nebo donation_completed — ty jdou jako doprovodné eventy ve stejném handleru. Occurrences v Explore = řádky eventů; GMV na dashboardu z commerce rollupů, ne ze součtu tohoto eventu. UTC; rozsah tenant.',
63
+ },
64
+ [ANALYTICS_UNIVERSAL_EVENTS.PAYMENT_FAILED]: {
65
+ en: 'Recorded on the server when CancelIntent maps to payment_failed (explicit_cancel while the payment is already terminal or was never successfully initiated — §2.6). Idempotent per tenant + paymentId + failureReason (e.g. cancelled). Not tab_close or route_leave (those map to session_abandoned). Not a provider timeout unless the cancel path emits it. Distinct from error_shown UI events. Tenant-scoped; counts as one Explore occurrence per matching ingest row.',
66
+ cs: 'Zaznamená server, když CancelIntent mapuje na payment_failed (explicit_cancel u terminální nebo nezahájené platby — §2.6). Idempotentní per tenant + paymentId + failureReason (např. cancelled). Není tab_close ani route_leave (session_abandoned). Není timeout poskytovatele, pokud cancel neemituje. Odlišné od error_shown v UI. Rozsah tenant; v Explore jedna occurrence = jeden ingest řádek.',
67
+ },
68
+ [ANALYTICS_UNIVERSAL_EVENTS.RECEIPT_OPENED]: {
69
+ en: 'Recorded when the user opens or requests a receipt view (client emit). One row per open action. Not payment_confirmed and not email delivery success on the server. Optional receipt_format metadata. OPERATIONAL client telemetry per session.',
70
+ cs: 'Zaznamená se při otevření nebo zobrazení účtenky (klient). Jedna řádka na akci otevření. Není payment_confirmed ani úspěšné odeslání e-mailu na serveru. Volitelné receipt_format. OPERATIONAL telemetrie relace.',
71
+ },
72
+ };
73
+ const RETAIL_DESCRIPTIONS = {
74
+ [ANALYTICS_RETAIL_EVENTS.CATALOG_INTERACTION]: {
75
+ en: 'Recorded when the shopper interacts with the product catalog (browse, category tap, product detail) on kiosk or mobile shop (client emit). One row per emitted interaction. Not product_added until the item enters the cart. Used in funnel “catalog” session flags. RETAIL flow; tenant-scoped.',
76
+ cs: 'Zaznamená se při interakci s katalogem (prohlížení, kategorie, detail) na kiosku nebo mobilním shopu (klient). Jedna řádka na emit. Není product_added dokud položka není v košíku. Ve funnelu flag relací s katalogem. Flow RETAIL; rozsah tenant.',
77
+ },
78
+ [ANALYTICS_RETAIL_EVENTS.PRODUCT_ADDED]: {
79
+ en: 'Recorded when a product is added to the cart (client emit). One occurrence per add emit; quantity changes may emit again depending on UI. Not checkout_started or payment_started. Drives funnel “product added” session metrics. Optional product_id / quantity metadata.',
80
+ cs: 'Zaznamená se při přidání produktu do košíku (klient). Jedna occurrence na emit přidání. Změna množství může emitovat znovu dle UI. Není checkout_started ani payment_started. Řídí funnel „product added“. Volitelná metadata product_id / quantity.',
81
+ },
82
+ [ANALYTICS_RETAIL_EVENTS.PRODUCT_REMOVED]: {
83
+ en: 'Recorded when a line item is removed from the cart (client emit). One row per removal emit. Not retail_order_abandoned (that signals leaving the whole order). RETAIL flow only in catalog v1.',
84
+ cs: 'Zaznamená se při odebrání položky z košíku (klient). Jedna řádka na emit odebrání. Není retail_order_abandoned (opuštění celé objednávky). Ve v1 katalogu pouze flow RETAIL.',
85
+ },
86
+ [ANALYTICS_RETAIL_EVENTS.CART_VIEWED]: {
87
+ en: 'Recorded when the cart screen is shown or refreshed for review (client emit). One emit per cart view action; revisiting the cart adds another row. Not cart_item_count truth for revenue — rollups use commerce facts. Funnel “cart viewed” session flag source.',
88
+ cs: 'Zaznamená se při zobrazení nebo obnovení obrazovky košíku (klient). Jedna řádka na emit zobrazení; návrat na košík přidá další. Počet položek zde není zdroj pravdy GMV — rollupy používají commerce fakta. Zdroj funnel flagu „cart viewed“.',
89
+ },
90
+ [ANALYTICS_RETAIL_EVENTS.CHECKOUT_STARTED]: {
91
+ en: 'Recorded when the user enters checkout from the cart (client emit, e.g. Pay on kiosk). One row per checkout entry emit. Precedes payment_started on the payment path. Not payment_confirmed. May include cart totals in metadata for diagnostics only.',
92
+ cs: 'Zaznamená se při vstupu do checkoutu z košíku (klient, např. Zaplatit na kiosku). Jedna řádka na emit vstupu. Předchází payment_started na platební cestě. Není payment_confirmed. Metadata s celky košíku jen pro diagnostiku.',
93
+ },
94
+ [ANALYTICS_RETAIL_EVENTS.RETAIL_ORDER_PAID]: {
95
+ en: 'Recorded on the server alongside payment_confirmed when the completed transaction purpose is retail (CompletePaymentTransactionUseCase). One idempotent row per tenant + transactionId. Companion to payment_confirmed, not a substitute. GMV dashboards use commerce rollups, not a raw count of this event.',
96
+ cs: 'Zaznamená server spolu s payment_confirmed u dokončené retail transakce (CompletePaymentTransactionUseCase). Jedna idempotentní řádka na tenant + transactionId. Doprovod k payment_confirmed. GMV dashboardy z commerce rollupů, ne z počtu tohoto eventu.',
97
+ },
98
+ [ANALYTICS_RETAIL_EVENTS.RETAIL_ORDER_ABANDONED]: {
99
+ en: 'Recorded when the shopper leaves a retail order without paying (client emit on abandon paths). Server idempotency per tenant + sessionId + eventName. Not session_abandoned unless the session close API also runs. Not product_removed for a single line.',
100
+ cs: 'Zaznamená se, když zákazník opustí retail objednávku bez platby (klient na abandon cestách). Serverová idempotence per tenant + sessionId + eventName. Není session_abandoned, pokud se nevolá close relace. Není product_removed jedné položky.',
101
+ },
102
+ };
103
+ const DONATION_DESCRIPTIONS = {
104
+ [ANALYTICS_DONATION_EVENTS.DONATION_STARTED]: {
105
+ en: 'Recorded when a donation payment intent is formed (client emit, e.g. kiosk donation-intent). One row per intent emit for that step. Not donation_completed (server, after pay). DONATION flow; may include project/amount metadata.',
106
+ cs: 'Zaznamená se při vzniku intentu daru (klient, např. kiosk donation-intent). Jedna řádka na emit kroku. Není donation_completed (server po zaplacení). Flow DONATION; metadata projekt/částka.',
107
+ },
108
+ [ANALYTICS_DONATION_EVENTS.DONATION_AMOUNT_SELECTED]: {
109
+ en: 'Recorded when the donor picks a preset amount chip (client emit). One occurrence per selection emit; choosing another preset emits again. Not donation_custom_amount_entered. Often followed by screen_viewed on the next step.',
110
+ cs: 'Zaznamená se při výběru přednastavené částky (klient). Jedna occurrence na emit; jiná předvolba = další řádka. Není donation_custom_amount_entered. Často následuje screen_viewed dalšího kroku.',
111
+ },
112
+ [ANALYTICS_DONATION_EVENTS.DONATION_CUSTOM_AMOUNT_ENTERED]: {
113
+ en: 'Recorded when the donor enters a custom amount instead of a preset (client emit). Mutually exclusive with donation_amount_selected for the same amount step. One row per custom entry submit.',
114
+ cs: 'Zaznamená se při zadání vlastní částky místo předvolby (klient). Vylučuje donation_amount_selected pro stejný krok. Jedna řádka na odeslání vlastní částky.',
115
+ },
116
+ [ANALYTICS_DONATION_EVENTS.DONATION_PROJECT_SELECTED]: {
117
+ en: 'Recorded when the donor selects a beneficiary project (client emit). One row per project selection. Not donation_completed until payment succeeds on the server.',
118
+ cs: 'Zaznamená se při výběru projektu příjemce (klient). Jedna řádka na výběr. Není donation_completed do úspěšné platby na serveru.',
119
+ },
120
+ [ANALYTICS_DONATION_EVENTS.DONATION_IMPACT_OPENED]: {
121
+ en: 'Recorded when the donor opens impact or story content for a project (client emit). One occurrence per open action. Informational only — not a payment or completion signal.',
122
+ cs: 'Zaznamená se při otevření informace o dopadu příběhu projektu (klient). Jedna occurrence na otevření. Pouze informativní — není platba ani dokončení.',
123
+ },
124
+ [ANALYTICS_DONATION_EVENTS.DONATION_TAX_RECEIPT_SELECTED]: {
125
+ en: 'Recorded when the donor toggles tax-receipt preference (client emit). One row per toggle emit; flipping the switch again adds another row. Not legal receipt issuance on the server.',
126
+ cs: 'Zaznamená se při přepnutí preference daňového dokladu (klient). Jedna řádka na emit přepnutí. Není vystavení dokladu na serveru.',
127
+ },
128
+ [ANALYTICS_DONATION_EVENTS.RECURRING_DONATION_SELECTED]: {
129
+ en: 'Recorded when the donor selects a recurring donation option (client emit). One occurrence per selection emit. Does not create a subscription by itself — operational telemetry only in v1.',
130
+ cs: 'Zaznamená se při výběru opakovaného daru (klient). Jedna occurrence na emit. Nesamostatně zakládá předplatné — ve v1 jen OPERATIONAL telemetrie.',
131
+ },
132
+ [ANALYTICS_DONATION_EVENTS.DONATION_COMPLETED]: {
133
+ en: 'Recorded on the server with payment_confirmed when the completed transaction is a donation (CompletePaymentTransactionUseCase). One idempotent row per tenant + transactionId. Not the client thank-you screen alone. Pair with payment_confirmed for money truth in rollups.',
134
+ cs: 'Zaznamená server s payment_confirmed u dokončeného daru (CompletePaymentTransactionUseCase). Jedna idempotentní řádka na tenant + transactionId. Není jen děkovná obrazovka klienta. K payment_confirmed pro peněžní pravdu v rollupech.',
135
+ },
136
+ [ANALYTICS_DONATION_EVENTS.DONATION_ABANDONED]: {
137
+ en: 'Recorded when the donor exits the donation flow without completing payment (client emit). Idempotent server key per tenant + sessionId. Not donation_completed and not payment_failed unless cancel mapping applies to an in-flight payment.',
138
+ cs: 'Zaznamená se při opuštění darovacího flow bez platby (klient). Serverová idempotence per tenant + sessionId. Není donation_completed ani payment_failed, pokud cancel neemituje u rozjeté platby.',
139
+ },
140
+ };
141
+ const KIOSK_DESCRIPTIONS = {
142
+ [ANALYTICS_KIOSK_EVENTS.KIOSK_WAKEUP]: {
143
+ en: 'Recorded on physical kiosk idle wake (touch) or programmatic donation boot telemetry (client emit). One row per wake emit; first mount may include configVersion/projectCount. Not session_started — the session API may follow separately. KIOSK platform; included in kiosk performance rollups (wakeup counts). OPERATIONAL only.',
144
+ cs: 'Zaznamená se při probuzení kiosku z idle (dotyk) nebo při boot telemetrii darovacího kiosku (klient). Jedna řádka na probuzení; první mount může mít configVersion/projectCount. Není session_started — relace může následovat API zvlášť. Platforma KIOSK; počítá se v rollup výkonu kiosku. Pouze OPERATIONAL.',
145
+ },
146
+ [ANALYTICS_KIOSK_EVENTS.KIOSK_TIMEOUT]: {
147
+ en: 'Recorded when the kiosk idle timer fires and resets the attract loop (client emit). One occurrence per timeout cycle with required idle_time_ms and last_screen_name. Not session_abandoned unless the abandon beacon also runs. May include cart snapshot metadata; tenant + kiosk scoped.',
148
+ cs: 'Zaznamená se při vypršení idle timeru kiosku a návratu do attract loop (klient). Jedna occurrence na cyklus s idle_time_ms a last_screen_name. Není session_abandoned, pokud neběží i abandon beacon. Může nést snapshot košíku; rozsah tenant + kiosk.',
149
+ },
150
+ };
151
+ function buildAnalyticsEventDescriptions() {
152
+ const descriptions = {
153
+ ...UNIVERSAL_DESCRIPTIONS,
154
+ ...RETAIL_DESCRIPTIONS,
155
+ ...DONATION_DESCRIPTIONS,
156
+ ...KIOSK_DESCRIPTIONS,
157
+ };
158
+ for (const name of ANALYTICS_EVENT_NAMES) {
159
+ if (!descriptions[name]) {
160
+ throw new Error(`Missing analytics event description for: ${name}`);
161
+ }
162
+ }
163
+ return descriptions;
164
+ }
165
+ export const ANALYTICS_EVENT_DESCRIPTIONS = buildAnalyticsEventDescriptions();
166
+ //# sourceMappingURL=analyticsEventDescriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsEventDescriptions.js","sourceRoot":"","sources":["../src/analyticsEventDescriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAG9B,kFAAkF;AAClF,MAAM,sBAAsB,GAGxB;IACF,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE;QAC5C,EAAE,EAAE,mdAAmd;QACvd,EAAE,EAAE,qaAAqa;KAC1a;IACD,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,EAAE,EAAE,0XAA0X;QAC9X,EAAE,EAAE,qSAAqS;KAC1S;IACD,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,EAAE,EAAE,+cAA+c;QACnd,EAAE,EAAE,0WAA0W;KAC/W;IACD,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE;QAC1C,EAAE,EAAE,2cAA2c;QAC/c,EAAE,EAAE,mYAAmY;KACxY;IACD,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE;QACxC,EAAE,EAAE,6RAA6R;QACjS,EAAE,EAAE,iPAAiP;KACtP;IACD,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE;QACzC,EAAE,EAAE,0NAA0N;QAC9N,EAAE,EAAE,2MAA2M;KAChN;IACD,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE;QACxC,EAAE,EAAE,2WAA2W;QAC/W,EAAE,EAAE,gSAAgS;KACrS;IACD,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,EAAE,EAAE,8NAA8N;QAClO,EAAE,EAAE,kMAAkM;KACvM;IACD,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,EAAE;QAC/C,EAAE,EAAE,gPAAgP;QACpP,EAAE,EAAE,uMAAuM;KAC5M;IACD,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE;QAC1C,EAAE,EAAE,sRAAsR;QAC1R,EAAE,EAAE,4PAA4P;KACjQ;IACD,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE;QAC5C,EAAE,EAAE,6PAA6P;QACjQ,EAAE,EAAE,sOAAsO;KAC3O;IACD,CAAC,0BAA0B,CAAC,eAAe,CAAC,EAAE;QAC5C,EAAE,EAAE,ycAAyc;QAC7c,EAAE,EAAE,oWAAoW;KACzW;IACD,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,EAAE;QACjD,EAAE,EAAE,6PAA6P;QACjQ,EAAE,EAAE,2OAA2O;KAChP;IACD,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,EAAE,EAAE,kTAAkT;QACtT,EAAE,EAAE,wPAAwP;KAC7P;IACD,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE;QAC9C,EAAE,EAAE,mhBAAmhB;QACvhB,EAAE,EAAE,wdAAwd;KAC7d;IACD,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE;QAC3C,EAAE,EAAE,8cAA8c;QACld,EAAE,EAAE,wYAAwY;KAC7Y;IACD,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE;QAC3C,EAAE,EAAE,iPAAiP;QACrP,EAAE,EAAE,mNAAmN;KACxN;CACF,CAAC;AAEF,MAAM,mBAAmB,GAGrB;IACF,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,EAAE;QAC7C,EAAE,EAAE,mSAAmS;QACvS,EAAE,EAAE,qPAAqP;KAC1P;IACD,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE;QACvC,EAAE,EAAE,4QAA4Q;QAChR,EAAE,EAAE,sPAAsP;KAC3P;IACD,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE;QACzC,EAAE,EAAE,gMAAgM;QACpM,EAAE,EAAE,8KAA8K;KACnL;IACD,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE;QACrC,EAAE,EAAE,kQAAkQ;QACtQ,EAAE,EAAE,+OAA+O;KACpP;IACD,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,EAAE;QAC1C,EAAE,EAAE,wPAAwP;QAC5P,EAAE,EAAE,iOAAiO;KACtO;IACD,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,EAAE;QAC3C,EAAE,EAAE,+SAA+S;QACnT,EAAE,EAAE,6PAA6P;KAClQ;IACD,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,EAAE;QAChD,EAAE,EAAE,4PAA4P;QAChQ,EAAE,EAAE,kPAAkP;KACvP;CACF,CAAC;AAEF,MAAM,qBAAqB,GAGvB;IACF,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,EAAE;QAC5C,EAAE,EAAE,qOAAqO;QACzO,EAAE,EAAE,+LAA+L;KACpM;IACD,CAAC,yBAAyB,CAAC,wBAAwB,CAAC,EAAE;QACpD,EAAE,EAAE,iOAAiO;QACrO,EAAE,EAAE,kMAAkM;KACvM;IACD,CAAC,yBAAyB,CAAC,8BAA8B,CAAC,EAAE;QAC1D,EAAE,EAAE,+LAA+L;QACnM,EAAE,EAAE,6JAA6J;KAClK;IACD,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,EAAE;QACrD,EAAE,EAAE,kKAAkK;QACtK,EAAE,EAAE,iIAAiI;KACtI;IACD,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,EAAE;QAClD,EAAE,EAAE,6KAA6K;QACjL,EAAE,EAAE,uJAAuJ;KAC5J;IACD,CAAC,yBAAyB,CAAC,6BAA6B,CAAC,EAAE;QACzD,EAAE,EAAE,sLAAsL;QAC1L,EAAE,EAAE,kIAAkI;KACvI;IACD,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,EAAE;QACvD,EAAE,EAAE,4LAA4L;QAChM,EAAE,EAAE,kJAAkJ;KACvJ;IACD,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,EAAE;QAC9C,EAAE,EAAE,+QAA+Q;QACnR,EAAE,EAAE,0OAA0O;KAC/O;IACD,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,EAAE;QAC9C,EAAE,EAAE,8OAA8O;QAClP,EAAE,EAAE,mMAAmM;KACxM;CACF,CAAC;AAEF,MAAM,kBAAkB,GAGpB;IACF,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE;QACrC,EAAE,EAAE,sUAAsU;QAC1U,EAAE,EAAE,kTAAkT;KACvT;IACD,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE;QACtC,EAAE,EAAE,6RAA6R;QACjS,EAAE,EAAE,yPAAyP;KAC9P;CACF,CAAC;AAEF,SAAS,+BAA+B;IACtC,MAAM,YAAY,GAAG;QACnB,GAAG,sBAAsB;QACzB,GAAG,mBAAmB;QACtB,GAAG,qBAAqB;QACxB,GAAG,kBAAkB;KACwB,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GACvC,+BAA+B,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type AuditEventCode } from './auditEventCodes.js';
2
+ import type { LocalizedLabel } from './labels/localizedLabel.js';
3
+ /** Operator-facing audit event descriptions (cs + en): when the row is written, scope, and exclusions. */
4
+ export declare const AUDIT_EVENT_DESCRIPTIONS: Record<AuditEventCode, LocalizedLabel>;
5
+ //# sourceMappingURL=auditEventDescriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditEventDescriptions.d.ts","sourceRoot":"","sources":["../src/auditEventDescriptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,0GAA0G;AAC1G,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,cAAc,CAiK3E,CAAC"}
@@ -0,0 +1,164 @@
1
+ /** Operator-facing audit event descriptions (cs + en): when the row is written, scope, and exclusions. */
2
+ export const AUDIT_EVENT_DESCRIPTIONS = {
3
+ 'auth.admin.login.success': {
4
+ en: 'Written immediately after a successful admin-panel login. One row per login attempt that passes authentication; the actor is the signed-in admin user. Captures request IP, user agent, and auth channel only — passwords, tokens, and email addresses are never stored in metadata.',
5
+ cs: 'Zapisuje se ihned po úspěšném přihlášení do administračního panelu. Jeden řádek na každý pokus o přihlášení, který projde autentizací; aktorem je přihlášený administrátor. Ukládá se IP adresa, user agent a kanál přihlášení — hesla, tokeny ani e-mailové adresy se v metadatech neukládají.',
6
+ },
7
+ 'auth.admin.login.failed': {
8
+ en: 'Written after a failed admin-panel login attempt. The actor is null and outcome is FAILURE. Only the attempted username (trimmed) is recorded — no password, email, or lockout counters.',
9
+ cs: 'Zapisuje se po neúspěšném pokusu o přihlášení do administračního panelu. Actor je null a výsledek je FAILURE. Ukládá se pouze zadané uživatelské jméno (ořezané) — ne heslo, e-mail ani počítadla blokování.',
10
+ },
11
+ 'auth.admin.logout': {
12
+ en: 'Written when an authenticated admin explicitly logs out of the admin panel. One row per logout action for the signing-out admin user.',
13
+ cs: 'Zapisuje se, když se přihlášený administrátor explicitně odhlásí z administračního panelu. Jeden řádek na každé odhlášení daného administrátora.',
14
+ },
15
+ 'auth.admin.access.denied': {
16
+ en: 'Written when an authenticated admin hits a route protected by RBAC and lacks the required capability. Outcome is DENIED; metadata records the missing capability name and requested route. Does not log request body or query parameters.',
17
+ cs: 'Zapisuje se, když přihlášený administrátor narazí na routu chráněnou RBAC a nemá požadovanou capability. Výsledek je DENIED; metadata obsahuje název chybějící capability a požadovanou routu. Tělo požadavku ani query parametry se nelogují.',
18
+ },
19
+ 'admin.invite.created': {
20
+ en: 'Written when a pending super-admin invite is created for a tenant — either from delegated user creation or during dev tenant provisioning with an invite email. Records the pending admin user id; invite delivery is tracked separately via the outbox.',
21
+ cs: 'Zapisuje se při vytvoření pending pozvánky super-admina pro tenanta — buď z delegovaného vytvoření uživatele, nebo při dev provisioning tenanta s invite e-mailem. Ukládá se id pending administrátora; doručení pozvánky se sleduje zvlášť přes outbox.',
22
+ },
23
+ 'admin.invite.resent': {
24
+ en: 'Written when a super-admin invite email is resent to a pending admin user. One row per resend action; does not include the raw invite token or recipient email.',
25
+ cs: 'Zapisuje se při opětovném odeslání invite e-mailu pending administrátorovi. Jeden řádek na každé opětovné odeslání; neobsahuje raw invite token ani e-mail příjemce.',
26
+ },
27
+ 'admin.invite.activated': {
28
+ en: 'Written when a pending super-admin completes invite activation (sets password and becomes active). Links to the pending or newly active admin user id; credentials are never stored in metadata.',
29
+ cs: 'Zapisuje se, když pending super-admin dokončí aktivaci pozvánky (nastaví heslo a stane se aktivním). Vazba na id pending nebo nově aktivního administrátora; přihlašovací údaje se v metadatech neukládají.',
30
+ },
31
+ 'admin.account.username_changed': {
32
+ en: 'Written after an admin successfully changes their own login username. Metadata holds the new username only; the previous username is not recorded.',
33
+ cs: 'Zapisuje se po úspěšné změně vlastního přihlašovacího jména administrátorem. Metadata obsahují pouze nové uživatelské jméno; předchozí jméno se neukládá.',
34
+ },
35
+ 'admin.account.password_changed': {
36
+ en: 'Written after an admin successfully changes their own password. Metadata is empty by design — no password, hash, or reset token is ever logged.',
37
+ cs: 'Zapisuje se po úspěšné změně vlastního hesla administrátorem. Metadata jsou záměrně prázdná — heslo, hash ani reset token se nikdy nelogují.',
38
+ },
39
+ 'admin.credentials.provider_secret.set': {
40
+ en: 'Written when a payment-provider API secret is first stored or replaced for a tenant. Records provider kind and id only; the secret value itself is never written to the audit row.',
41
+ cs: 'Zapisuje se při prvním uložení nebo nahrazení API secretu platebního providera pro tenanta. Ukládá se pouze druh a id providera; samotná hodnota secretu se do auditního řádku nikdy nezapisuje.',
42
+ },
43
+ 'admin.credentials.provider_secret.rotated': {
44
+ en: 'Written when an existing tenant payment-provider secret is rotated in place. One row per rotated provider reference; secret material is excluded from metadata.',
45
+ cs: 'Zapisuje se při rotaci existujícího secretu platebního providera tenanta. Jeden řádek na každou rotovanou referenci providera; secret se z metadat vylučuje.',
46
+ },
47
+ 'admin.credentials.provider_secret.deleted': {
48
+ en: 'Written when a tenant payment-provider credential is removed. Records which provider was deleted; does not archive the former secret.',
49
+ cs: 'Zapisuje se při odstranění credentialu platebního providera tenanta. Ukládá se, který provider byl smazán; bývalý secret se nearchivuje.',
50
+ },
51
+ 'admin.credentials.bank_secret.set': {
52
+ en: 'Written when tenant bank-transfer payment configuration (account number and bank code) is saved or updated via the credentials screen. Only the provider id is logged — account numbers and bank codes are not duplicated in metadata.',
53
+ cs: 'Zapisuje se při uložení nebo aktualizaci konfigurace bankovního převodu tenanta (číslo účtu a kód banky) přes obrazovku credentialů. Loguje se pouze id providera — čísla účtů a kódy bank se v metadatech neopakují.',
54
+ },
55
+ 'admin.credentials.bank_secret.rotated': {
56
+ en: 'Reserved for when an existing bank-transfer credential is rotated without a full delete-and-set cycle. When emitted, records the provider id only; no account numbers or secrets appear in metadata.',
57
+ cs: 'Vyhrazeno pro rotaci existujícího bankovního credentialu bez cyklu smazat-a-nastavit. Při emitování se ukládá pouze id providera; v metadatech se neobjevují čísla účtů ani secrety.',
58
+ },
59
+ 'admin.settings.updated': {
60
+ en: 'Catalog event for tenant or admin settings mutations. When a writer exists, one row is appended per successful settings save; optional scope metadata identifies which settings group changed. Setting values and secrets are not logged.',
61
+ cs: 'Katalogová událost pro mutace nastavení tenanta nebo administrace. Po přidání writeru se při každém úspěšném uložení zapíše jeden řádek; volitelné metadata scope identifikují změněnou skupinu nastavení. Hodnoty nastavení a secrety se nelogují.',
62
+ },
63
+ 'admin.user.created': {
64
+ en: 'Written when a delegated admin user is created for the tenant (non-invite path). Records the new user id; role and email are resolved at read time via joins, not stored in metadata.',
65
+ cs: 'Zapisuje se při vytvoření delegovaného admin uživatele pro tenanta (cesta bez invite). Ukládá se id nového uživatele; role a e-mail se při čtení řeší joiny, ne ukládají do metadat.',
66
+ },
67
+ 'admin.user.deactivated': {
68
+ en: 'Written when an admin user is soft-deactivated and can no longer sign in. One row per deactivation; active sessions are not individually enumerated.',
69
+ cs: 'Zapisuje se při soft-deaktivaci admin uživatele, který se už nemůže přihlásit. Jeden řádek na deaktivaci; aktivní session se nevyjmenovávají jednotlivě.',
70
+ },
71
+ 'admin.user.reactivated': {
72
+ en: 'Written when a previously deactivated admin user is restored to active status. One row per reactivation for the affected user id.',
73
+ cs: 'Zapisuje se při obnovení dříve deaktivovaného admin uživatele do aktivního stavu. Jeden řádek na reaktivaci pro dané user id.',
74
+ },
75
+ 'admin.user.permanently_deleted': {
76
+ en: 'Written when an admin user row is permanently removed from the tenant. Irreversible deletion is counted once; related audit history for other resources is retained.',
77
+ cs: 'Zapisuje se při trvalém odstranění řádku admin uživatele z tenanta. Nezvratné smazání se počítá jednou; související auditní historie ostatních zdrojů zůstává.',
78
+ },
79
+ 'admin.product.deactivated': {
80
+ en: 'Written when a product is deactivated and hidden from kiosk sale. The product row remains; only availability changes.',
81
+ cs: 'Zapisuje se při deaktivaci produktu a skrytí z prodeje na kiosku. Řádek produktu zůstává; mění se pouze dostupnost.',
82
+ },
83
+ 'admin.product.reactivated': {
84
+ en: 'Written when a deactivated product is made available again on kiosks. One row per reactivation.',
85
+ cs: 'Zapisuje se, když je deaktivovaný produkt znovu zpřístupněn na kioscích. Jeden řádek na reaktivaci.',
86
+ },
87
+ 'admin.product.permanently_deleted': {
88
+ en: 'Written when a product is permanently deleted and cannot be reactivated. Counted once per product id; historical transactions referencing the product are not rewritten.',
89
+ cs: 'Zapisuje se při trvalém smazání produktu, který už nelze reaktivovat. Počítá se jednou na product id; historické transakce odkazující na produkt se nepřepisují.',
90
+ },
91
+ 'admin.kiosk.deactivated': {
92
+ en: 'Written when a kiosk is deactivated and stops accepting new sessions. Existing in-flight payments are out of scope for this event.',
93
+ cs: 'Zapisuje se při deaktivaci kiosku, který přestane přijímat nové session. Probíhající platby jsou mimo rozsah této události.',
94
+ },
95
+ 'admin.kiosk.reactivated': {
96
+ en: 'Written when a deactivated kiosk is returned to active service. One row per kiosk reactivation.',
97
+ cs: 'Zapisuje se při obnovení deaktivovaného kiosku do aktivního provozu. Jeden řádek na reaktivaci kiosku.',
98
+ },
99
+ 'admin.kiosk.permanently_deleted': {
100
+ en: 'Written when a kiosk is permanently removed. Counted once; past transaction and audit rows for the kiosk id are retained for compliance.',
101
+ cs: 'Zapisuje se při trvalém odstranění kiosku. Počítá se jednou; minulé transakční a auditní řádky pro dané kiosk id zůstávají kvůli compliance.',
102
+ },
103
+ 'admin.tenant.deactivated': {
104
+ en: 'Written when a tenant contract is closed or soft-deleted (legal hold, dev delete without physical wipe, etc.). Metadata may include mode, trigger, and reason; customer PII is not copied into the audit row.',
105
+ cs: 'Zapisuje se při ukončení smlouvy tenanta nebo soft smazání (legal hold, dev delete bez fyzického vymazání atd.). Metadata mohou obsahovat mode, trigger a důvod; PII zákazníků se do auditního řádku nekopíruje.',
106
+ },
107
+ 'admin.tenant.permanently_deleted': {
108
+ en: 'Written when a tenant undergoes physical deletion orchestration. Emitted once per delete run; metadata may include offboarding evidence references and deleted-customer counts, not raw customer records.',
109
+ cs: 'Zapisuje se při fyzickém smazání tenanta orchestrací. Emituje se jednou na běh smazání; metadata mohou obsahovat reference offboarding evidence a počty smazaných zákazníků, ne raw záznamy zákazníků.',
110
+ },
111
+ 'admin.tenant.reactivated': {
112
+ en: 'Written when a deactivated tenant is reactivated via dev or lifecycle tooling. Records tenant code/id; does not replay prior deactivation metadata.',
113
+ cs: 'Zapisuje se při reaktivaci deaktivovaného tenanta přes dev nebo lifecycle nástroje. Ukládá se code/id tenanta; dřívější metadata deaktivace se neopakují.',
114
+ },
115
+ 'admin.donation_template.created': {
116
+ en: 'Written when a new donation amount template is created for the tenant. Metadata may include template id, name, currency, item count, and idempotency key — not individual amount labels beyond counts.',
117
+ cs: 'Zapisuje se při vytvoření nové šablony donation částek pro tenanta. Metadata mohou obsahovat id šablony, název, měnu, počet položek a idempotency key — ne jednotlivé popisky částek nad rámec počtů.',
118
+ },
119
+ 'admin.donation_template.updated': {
120
+ en: 'Written when an existing donation amount template is edited. One row per successful update; template field values are summarized in metadata, not full JSON snapshots.',
121
+ cs: 'Zapisuje se při úpravě existující šablony donation částek. Jeden řádek na úspěšnou aktualizaci; hodnoty polí šablony jsou v metadatech shrnuty, ne jako plné JSON snapshoty.',
122
+ },
123
+ 'admin.donation_template.default_set': {
124
+ en: 'Written when a donation template is marked as the tenant default. Previous default assignment is not logged as a separate row.',
125
+ cs: 'Zapisuje se, když je donation šablona označena jako výchozí pro tenanta. Předchozí výchozí přiřazení se neloguje jako samostatný řádek.',
126
+ },
127
+ 'admin.kiosk.donation_projects.updated': {
128
+ en: 'Written when donation project assignments for a kiosk are saved. Metadata includes kiosk id and optional project count; project names and external ids are not bulk-exported into metadata.',
129
+ cs: 'Zapisuje se při uložení přiřazení donation projektů pro kiosk. Metadata obsahují kiosk id a volitelný počet projektů; názvy projektů a externí id se hromadně neexportují do metadat.',
130
+ },
131
+ 'admin.kiosk.donation_amounts.updated': {
132
+ en: 'Written when donation amount templates linked to a kiosk are updated. Records kiosk id and optional template count; amount values themselves stay in configuration tables.',
133
+ cs: 'Zapisuje se při aktualizaci donation amount šablon navázaných na kiosk. Ukládá se kiosk id a volitelný počet šablon; samotné částky zůstávají v konfiguračních tabulkách.',
134
+ },
135
+ 'dev.tenant.created': {
136
+ en: 'Written by the DEV tenant provisioning API after a new tenant row and payment bootstrap succeed. Scoped to SUPER_DEV tooling — visible in compliance UI via the dev.* prefix filter. Metadata records tenant code, display name, and whether a super-admin invite was queued; no invite tokens or credentials are stored.',
137
+ cs: 'Zapisuje nástroj DEV tenant provisioning API po úspěšném vytvoření řádku tenanta a payment bootstrapu. Patří do SUPER_DEV nástrojů — v compliance UI viditelné přes filtr prefixu dev.*. Metadata obsahují code tenanta, zobrazované jméno a zda byla zařazena super-admin pozvánka; invite tokeny ani credentialy se neukládají.',
138
+ },
139
+ 'dev.tenant.updated': {
140
+ en: 'Written when DEV provisioning updates an existing tenant’s code or display name. One row per successful update; payment configuration changes use separate credential audit codes.',
141
+ cs: 'Zapisuje se, když DEV provisioning aktualizuje code nebo zobrazované jméno existujícího tenanta. Jeden řádek na úspěšnou aktualizaci; změny payment konfigurace mají samostatné audit kódy credentialů.',
142
+ },
143
+ 'payment.transaction.state_changed': {
144
+ en: 'Written by the system actor when a payment transaction’s status changes (e.g. completion, cancellation, gateway notify). One row per transition with fromStatus and toStatus; IP and user agent are omitted. Failed audit writes do not roll back the payment.',
145
+ cs: 'Zapisuje system actor při změně stavu platební transakce (např. dokončení, zrušení, gateway notify). Jeden řádek na přechod s fromStatus a toStatus; IP a user agent se neukládají. Selhání audit zápisu nevrátí platbu zpět.',
146
+ },
147
+ 'reconciliation.transaction.refund_candidate.marked': {
148
+ en: 'Written when an admin marks a transaction as an active refund candidate for bank-transfer reconciliation. Captures previous and next note/resolved-at flags; idempotent replays do not create duplicate rows.',
149
+ cs: 'Zapisuje se, když administrátor označí transakci jako aktivní refund kandidáta pro bankovní reconciliaci. Zachytí předchozí a nové poznámky/resolved-at příznaky; idempotentní replay nevytváří duplicitní řádky.',
150
+ },
151
+ 'reconciliation.transaction.refund_candidate.unmarked': {
152
+ en: 'Written when an admin clears the refund-candidate flag on a transaction. Records the prior active state and note snapshot; does not perform the financial refund itself.',
153
+ cs: 'Zapisuje se, když administrátor zruší příznak refund kandidáta u transakce. Ukládá předchozí aktivní stav a snapshot poznámky; samotný finanční refund neprovádí.',
154
+ },
155
+ 'export.analytics.explore.exported': {
156
+ en: 'Written after a successful Analytics Explore CSV export is generated for download. Metadata includes row count and optional date range; exported cell values are not duplicated into the audit row.',
157
+ cs: 'Zapisuje se po úspěšném vygenerování CSV exportu z Analytics Explore ke stažení. Metadata obsahují počet řádků a volitelný rozsah dat; exportované hodnoty buněk se do auditního řádku nekopírují.',
158
+ },
159
+ 'gdpr.erasure.completed': {
160
+ en: 'Written in the same database transaction when a verified Art. 17 erasure request finishes successfully. System actor; metadata counts anonymized customers and deleted marketing/analytics consents for the tenant — never the subject’s raw email. Linked to the data-subject request id for compliance drill-down.',
161
+ cs: 'Zapisuje se ve stejné DB transakci po úspěšném dokončení ověřené žádosti o výmaz dle čl. 17 GDPR. System actor; metadata počítají anonymizované zákazníky a smazané marketing/analytics souhlasy pro tenanta — nikdy raw e-mail subjektu. Propojeno s id žádosti subjektu údajů pro compliance drill-down.',
162
+ },
163
+ };
164
+ //# sourceMappingURL=auditEventDescriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditEventDescriptions.js","sourceRoot":"","sources":["../src/auditEventDescriptions.ts"],"names":[],"mappings":"AAGA,0GAA0G;AAC1G,MAAM,CAAC,MAAM,wBAAwB,GAA2C;IAC9E,0BAA0B,EAAE;QAC1B,EAAE,EAAE,sRAAsR;QAC1R,EAAE,EAAE,iSAAiS;KACtS;IACD,yBAAyB,EAAE;QACzB,EAAE,EAAE,0LAA0L;QAC9L,EAAE,EAAE,8MAA8M;KACnN;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,uIAAuI;QAC3I,EAAE,EAAE,kJAAkJ;KACvJ;IACD,0BAA0B,EAAE;QAC1B,EAAE,EAAE,2OAA2O;QAC/O,EAAE,EAAE,gPAAgP;KACrP;IACD,sBAAsB,EAAE;QACtB,EAAE,EAAE,0PAA0P;QAC9P,EAAE,EAAE,0PAA0P;KAC/P;IACD,qBAAqB,EAAE;QACrB,EAAE,EAAE,iKAAiK;QACrK,EAAE,EAAE,sKAAsK;KAC3K;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,kMAAkM;QACtM,EAAE,EAAE,6MAA6M;KAClN;IACD,gCAAgC,EAAE;QAChC,EAAE,EAAE,oJAAoJ;QACxJ,EAAE,EAAE,2JAA2J;KAChK;IACD,gCAAgC,EAAE;QAChC,EAAE,EAAE,iJAAiJ;QACrJ,EAAE,EAAE,8IAA8I;KACnJ;IACD,uCAAuC,EAAE;QACvC,EAAE,EAAE,oLAAoL;QACxL,EAAE,EAAE,kMAAkM;KACvM;IACD,2CAA2C,EAAE;QAC3C,EAAE,EAAE,iKAAiK;QACrK,EAAE,EAAE,8JAA8J;KACnK;IACD,2CAA2C,EAAE;QAC3C,EAAE,EAAE,uIAAuI;QAC3I,EAAE,EAAE,0IAA0I;KAC/I;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,wOAAwO;QAC5O,EAAE,EAAE,uNAAuN;KAC5N;IACD,uCAAuC,EAAE;QACvC,EAAE,EAAE,sMAAsM;QAC1M,EAAE,EAAE,sLAAsL;KAC3L;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,2OAA2O;QAC/O,EAAE,EAAE,qPAAqP;KAC1P;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,uLAAuL;QAC3L,EAAE,EAAE,sLAAsL;KAC3L;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,sJAAsJ;QAC1J,EAAE,EAAE,0JAA0J;KAC/J;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,mIAAmI;QACvI,EAAE,EAAE,+HAA+H;KACpI;IACD,gCAAgC,EAAE;QAChC,EAAE,EAAE,sKAAsK;QAC1K,EAAE,EAAE,gKAAgK;KACrK;IACD,2BAA2B,EAAE;QAC3B,EAAE,EAAE,uHAAuH;QAC3H,EAAE,EAAE,qHAAqH;KAC1H;IACD,2BAA2B,EAAE;QAC3B,EAAE,EAAE,iGAAiG;QACrG,EAAE,EAAE,qGAAqG;KAC1G;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,0KAA0K;QAC9K,EAAE,EAAE,kKAAkK;KACvK;IACD,yBAAyB,EAAE;QACzB,EAAE,EAAE,oIAAoI;QACxI,EAAE,EAAE,6HAA6H;KAClI;IACD,yBAAyB,EAAE;QACzB,EAAE,EAAE,iGAAiG;QACrG,EAAE,EAAE,wGAAwG;KAC7G;IACD,iCAAiC,EAAE;QACjC,EAAE,EAAE,0IAA0I;QAC9I,EAAE,EAAE,8IAA8I;KACnJ;IACD,0BAA0B,EAAE;QAC1B,EAAE,EAAE,+MAA+M;QACnN,EAAE,EAAE,kNAAkN;KACvN;IACD,kCAAkC,EAAE;QAClC,EAAE,EAAE,2MAA2M;QAC/M,EAAE,EAAE,wMAAwM;KAC7M;IACD,0BAA0B,EAAE;QAC1B,EAAE,EAAE,qJAAqJ;QACzJ,EAAE,EAAE,2JAA2J;KAChK;IACD,iCAAiC,EAAE;QACjC,EAAE,EAAE,wMAAwM;QAC5M,EAAE,EAAE,uMAAuM;KAC5M;IACD,iCAAiC,EAAE;QACjC,EAAE,EAAE,wKAAwK;QAC5K,EAAE,EAAE,8KAA8K;KACnL;IACD,qCAAqC,EAAE;QACrC,EAAE,EAAE,gIAAgI;QACpI,EAAE,EAAE,yIAAyI;KAC9I;IACD,uCAAuC,EAAE;QACvC,EAAE,EAAE,6LAA6L;QACjM,EAAE,EAAE,uLAAuL;KAC5L;IACD,sCAAsC,EAAE;QACtC,EAAE,EAAE,4KAA4K;QAChL,EAAE,EAAE,2KAA2K;KAChL;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,2TAA2T;QAC/T,EAAE,EAAE,mUAAmU;KACxU;IACD,oBAAoB,EAAE;QACpB,EAAE,EAAE,oLAAoL;QACxL,EAAE,EAAE,yMAAyM;KAC9M;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,gQAAgQ;QACpQ,EAAE,EAAE,+NAA+N;KACpO;IACD,oDAAoD,EAAE;QACpD,EAAE,EAAE,+MAA+M;QACnN,EAAE,EAAE,mNAAmN;KACxN;IACD,sDAAsD,EAAE;QACtD,EAAE,EAAE,0KAA0K;QAC9K,EAAE,EAAE,mKAAmK;KACxK;IACD,mCAAmC,EAAE;QACnC,EAAE,EAAE,qMAAqM;QACzM,EAAE,EAAE,oMAAoM;KACzM;IACD,wBAAwB,EAAE;QACxB,EAAE,EAAE,sTAAsT;QAC1T,EAAE,EAAE,4SAA4S;KACjT;CACF,CAAC"}
@@ -1,13 +1,13 @@
1
1
  /** Drawer highlight fields per event code (AUTH + GDPR minimum for Phase 2). */
2
2
  export const AUDIT_METADATA_DISPLAY_FIELDS = {
3
3
  'auth.admin.login.success': [
4
- { key: 'authMethod', labelKey: 'compliance.audit.metadata.authMethod' },
4
+ { key: 'authChannel', labelKey: 'compliance.audit.metadata.authChannel' },
5
5
  ],
6
6
  'auth.admin.login.failed': [
7
7
  { key: 'attemptedUsername', labelKey: 'compliance.audit.metadata.attemptedUsername' },
8
8
  ],
9
9
  'auth.admin.logout': [
10
- { key: 'authMethod', labelKey: 'compliance.audit.metadata.authMethod' },
10
+ { key: 'authChannel', labelKey: 'compliance.audit.metadata.authChannel' },
11
11
  ],
12
12
  'auth.admin.access.denied': [
13
13
  { key: 'capability', labelKey: 'compliance.audit.metadata.capability' },
@@ -1 +1 @@
1
- {"version":3,"file":"auditMetadataDisplayFields.js","sourceRoot":"","sources":["../src/auditMetadataDisplayFields.ts"],"names":[],"mappings":"AAOA,gFAAgF;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAEtC;IACF,0BAA0B,EAAE;QAC1B,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,sCAAsC,EAAE;KACxE;IACD,yBAAyB,EAAE;QACzB,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,6CAA6C,EAAE;KACtF;IACD,mBAAmB,EAAE;QACnB,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,sCAAsC,EAAE;KACxE;IACD,0BAA0B,EAAE;QAC1B,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,sCAAsC,EAAE;QACvE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,iCAAiC,EAAE;KAC9D;IACD,wBAAwB,EAAE;QACxB,EAAE,GAAG,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gDAAgD,EAAE;QAC3F,EAAE,GAAG,EAAE,qBAAqB,EAAE,QAAQ,EAAE,+CAA+C,EAAE;QACzF,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,oDAAoD,EAAE;QACnG,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,oDAAoD,EAAE;KACpG;CACF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAC3C,SAAiB;IAEjB,OAAO,6BAA6B,CAAC,SAA2B,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"auditMetadataDisplayFields.js","sourceRoot":"","sources":["../src/auditMetadataDisplayFields.ts"],"names":[],"mappings":"AAOA,gFAAgF;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAEtC;IACF,0BAA0B,EAAE;QAC1B,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,uCAAuC,EAAE;KAC1E;IACD,yBAAyB,EAAE;QACzB,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,6CAA6C,EAAE;KACtF;IACD,mBAAmB,EAAE;QACnB,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,uCAAuC,EAAE;KAC1E;IACD,0BAA0B,EAAE;QAC1B,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,sCAAsC,EAAE;QACvE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,iCAAiC,EAAE;KAC9D;IACD,wBAAwB,EAAE;QACxB,EAAE,GAAG,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gDAAgD,EAAE;QAC3F,EAAE,GAAG,EAAE,qBAAqB,EAAE,QAAQ,EAAE,+CAA+C,EAAE;QACzF,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,oDAAoD,EAAE;QACnG,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,oDAAoD,EAAE;KACpG;CACF,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAC3C,SAAiB;IAEjB,OAAO,6BAA6B,CAAC,SAA2B,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LabelAudience, LabelLocale } from './labels/localizedLabel.js';
2
+ export declare function getAnalyticsEventDescription(name: string, locale: LabelLocale, _audience?: LabelAudience): string;
3
+ //# sourceMappingURL=getAnalyticsEventDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAnalyticsEventDescription.d.ts","sourceRoot":"","sources":["../src/getAnalyticsEventDescription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE7E,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,SAAS,GAAE,aAA0B,GACpC,MAAM,CAKR"}
@@ -0,0 +1,9 @@
1
+ import { isAnalyticsEventName } from './analyticsEvents.js';
2
+ import { ANALYTICS_EVENT_DESCRIPTIONS } from './analyticsEventDescriptions.js';
3
+ export function getAnalyticsEventDescription(name, locale, _audience = 'operator') {
4
+ if (!isAnalyticsEventName(name)) {
5
+ return '';
6
+ }
7
+ return ANALYTICS_EVENT_DESCRIPTIONS[name][locale];
8
+ }
9
+ //# sourceMappingURL=getAnalyticsEventDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAnalyticsEventDescription.js","sourceRoot":"","sources":["../src/getAnalyticsEventDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA2B,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAG/E,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,MAAmB,EACnB,YAA2B,UAAU;IAErC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,4BAA4B,CAAC,IAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LabelAudience, LabelLocale } from './labels/localizedLabel.js';
2
+ export declare function getAuditEventDescription(code: string, locale: LabelLocale, _audience?: LabelAudience): string;
3
+ //# sourceMappingURL=getAuditEventDescription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAuditEventDescription.d.ts","sourceRoot":"","sources":["../src/getAuditEventDescription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE7E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,SAAS,GAAE,aAA0B,GACpC,MAAM,CAKR"}
@@ -0,0 +1,9 @@
1
+ import { isAuditEventCode } from './auditEventCodes.js';
2
+ import { AUDIT_EVENT_DESCRIPTIONS } from './auditEventDescriptions.js';
3
+ export function getAuditEventDescription(code, locale, _audience = 'operator') {
4
+ if (!isAuditEventCode(code)) {
5
+ return '';
6
+ }
7
+ return AUDIT_EVENT_DESCRIPTIONS[code][locale];
8
+ }
9
+ //# sourceMappingURL=getAuditEventDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAuditEventDescription.js","sourceRoot":"","sources":["../src/getAuditEventDescription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,MAAmB,EACnB,YAA2B,UAAU;IAErC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,wBAAwB,CAAC,IAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -22,6 +22,10 @@ export * from './auditEventLabels.js';
22
22
  export * from './analyticsEventLabels.js';
23
23
  export * from './getAuditEventLabel.js';
24
24
  export * from './getAnalyticsEventLabel.js';
25
+ export * from './analyticsEventDescriptions.js';
26
+ export * from './getAnalyticsEventDescription.js';
27
+ export * from './auditEventDescriptions.js';
28
+ export * from './getAuditEventDescription.js';
25
29
  export * from './auditMetadataDisplayFields.js';
26
30
  export * from './complianceDevCaps.js';
27
31
  export * from './labels/localizedLabel.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -22,6 +22,10 @@ export * from './auditEventLabels.js';
22
22
  export * from './analyticsEventLabels.js';
23
23
  export * from './getAuditEventLabel.js';
24
24
  export * from './getAnalyticsEventLabel.js';
25
+ export * from './analyticsEventDescriptions.js';
26
+ export * from './getAnalyticsEventDescription.js';
27
+ export * from './auditEventDescriptions.js';
28
+ export * from './getAuditEventDescription.js';
25
29
  export * from './auditMetadataDisplayFields.js';
26
30
  export * from './complianceDevCaps.js';
27
31
  export * from './labels/localizedLabel.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-kiosk-shared",
3
- "version": "2.1.40",
3
+ "version": "2.1.41",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Shared types, API contracts, and error classes for Pi Kiosk system",