payload-reserve 2.2.1 → 2.4.0

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.
Files changed (30) hide show
  1. package/README.md +1 -0
  2. package/dist/components/CalendarView/CalendarView.module.css +16 -0
  3. package/dist/components/CalendarView/index.js +25 -21
  4. package/dist/components/CalendarView/index.js.map +1 -1
  5. package/dist/defaults.js +1 -0
  6. package/dist/defaults.js.map +1 -1
  7. package/dist/endpoints/checkAvailability.js +15 -0
  8. package/dist/endpoints/checkAvailability.js.map +1 -1
  9. package/dist/endpoints/getSlots.js +15 -0
  10. package/dist/endpoints/getSlots.js.map +1 -1
  11. package/dist/endpoints/resourceAvailability.d.ts +2 -0
  12. package/dist/endpoints/resourceAvailability.js +27 -2
  13. package/dist/endpoints/resourceAvailability.js.map +1 -1
  14. package/dist/hooks/reservations/validateConflicts.js +15 -0
  15. package/dist/hooks/reservations/validateConflicts.js.map +1 -1
  16. package/dist/services/AvailabilityService.d.ts +5 -0
  17. package/dist/services/AvailabilityService.js +149 -28
  18. package/dist/services/AvailabilityService.js.map +1 -1
  19. package/dist/types.d.ts +3 -0
  20. package/dist/types.js.map +1 -1
  21. package/dist/utilities/externalPillLabel.d.ts +10 -0
  22. package/dist/utilities/externalPillLabel.js +23 -0
  23. package/dist/utilities/externalPillLabel.js.map +1 -0
  24. package/dist/utilities/reservationResourceFilter.d.ts +19 -0
  25. package/dist/utilities/reservationResourceFilter.js +18 -0
  26. package/dist/utilities/reservationResourceFilter.js.map +1 -0
  27. package/dist/utilities/reserveDebug.d.ts +26 -0
  28. package/dist/utilities/reserveDebug.js +35 -0
  29. package/dist/utilities/reserveDebug.js.map +1 -0
  30. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ const refId = (r)=>typeof r === 'object' && r !== null ? r.id : r ?? undefined;
2
+ /** String-normalized id equality: Postgres installs serve numeric ids over REST
3
+ * while `<select>` values (and the single-resource auto-select) are strings, so
4
+ * strict `===` on the raw values silently never matches on Postgres. */ export const sameId = (a, b)=>a !== null && a !== undefined && b !== null && b !== undefined && String(a) === String(b);
5
+ /**
6
+ * True when a reservation belongs to the selected resource — via its top-level
7
+ * `resource` or any `items[].resource`. An empty selection matches everything.
8
+ */ export function reservationMatchesResource(reservation, selectedResourceId) {
9
+ if (!selectedResourceId) {
10
+ return true;
11
+ }
12
+ if (sameId(refId(reservation.resource), selectedResourceId)) {
13
+ return true;
14
+ }
15
+ return (reservation.items ?? []).some((item)=>sameId(refId(item.resource), selectedResourceId));
16
+ }
17
+
18
+ //# sourceMappingURL=reservationResourceFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/reservationResourceFilter.ts"],"sourcesContent":["type ResourceRef = { id?: number | string; name?: string } | null | number | string | undefined\n\nconst refId = (r: ResourceRef): number | string | undefined =>\n typeof r === 'object' && r !== null ? r.id : (r ?? undefined)\n\n/** String-normalized id equality: Postgres installs serve numeric ids over REST\n * while `<select>` values (and the single-resource auto-select) are strings, so\n * strict `===` on the raw values silently never matches on Postgres. */\nexport const sameId = (a: null | number | string | undefined, b: null | number | string | undefined): boolean =>\n a !== null && a !== undefined && b !== null && b !== undefined && String(a) === String(b)\n\n/**\n * True when a reservation belongs to the selected resource — via its top-level\n * `resource` or any `items[].resource`. An empty selection matches everything.\n */\nexport function reservationMatchesResource(\n reservation: { items?: Array<{ resource?: ResourceRef }>; resource?: ResourceRef },\n selectedResourceId: string,\n): boolean {\n if (!selectedResourceId) {\n return true\n }\n if (sameId(refId(reservation.resource), selectedResourceId)) {\n return true\n }\n return (reservation.items ?? []).some((item) => sameId(refId(item.resource), selectedResourceId))\n}\n"],"names":["refId","r","id","undefined","sameId","a","b","String","reservationMatchesResource","reservation","selectedResourceId","resource","items","some","item"],"mappings":"AAEA,MAAMA,QAAQ,CAACC,IACb,OAAOA,MAAM,YAAYA,MAAM,OAAOA,EAAEC,EAAE,GAAID,KAAKE;AAErD;;sEAEsE,GACtE,OAAO,MAAMC,SAAS,CAACC,GAAuCC,IAC5DD,MAAM,QAAQA,MAAMF,aAAaG,MAAM,QAAQA,MAAMH,aAAaI,OAAOF,OAAOE,OAAOD,GAAE;AAE3F;;;CAGC,GACD,OAAO,SAASE,2BACdC,WAAkF,EAClFC,kBAA0B;IAE1B,IAAI,CAACA,oBAAoB;QACvB,OAAO;IACT;IACA,IAAIN,OAAOJ,MAAMS,YAAYE,QAAQ,GAAGD,qBAAqB;QAC3D,OAAO;IACT;IACA,OAAO,AAACD,CAAAA,YAAYG,KAAK,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,OAASV,OAAOJ,MAAMc,KAAKH,QAAQ,GAAGD;AAC/E"}
@@ -0,0 +1,26 @@
1
+ /** Structured fields attached to one debug line. */
2
+ export type ReserveDebugFields = Record<string, unknown>;
3
+ /** Minimal logger surface — Payload's Pino `logger.info(obj, msg?)`. */
4
+ type DebugLogger = {
5
+ info: (obj: unknown, msg?: string) => void;
6
+ };
7
+ export type ReserveDebug = {
8
+ /** New instance, same traceId, merging baseFields into every subsequent line. */
9
+ child: (baseFields: ReserveDebugFields) => ReserveDebug;
10
+ /** Emit one trace line (no-op when disabled). */
11
+ dbg: (stage: string, fields?: ReserveDebugFields) => void;
12
+ enabled: boolean;
13
+ traceId: string;
14
+ };
15
+ /**
16
+ * Create a debug tracer. When `enabled`, every `dbg(stage, fields)` emits a
17
+ * single Pino line:
18
+ * `logger.info({ event: 'reserve_debug', traceId, stage, ...base, ...fields }, 'reserve_debug')`.
19
+ * When disabled, `dbg` is an immediate no-op. Emitting at INFO is deliberate:
20
+ * the opt-in flag is the gate, so traces survive Pino's default info level in
21
+ * production (a `.debug()` line would be silently dropped there).
22
+ */
23
+ export declare function createReserveDebug(logger: DebugLogger, enabled: boolean, traceId?: string, baseFields?: ReserveDebugFields): ReserveDebug;
24
+ /** Shared disabled tracer — the default for functions whose `debug` param is omitted. */
25
+ export declare const NOOP_RESERVE_DEBUG: ReserveDebug;
26
+ export {};
@@ -0,0 +1,35 @@
1
+ /** Structured fields attached to one debug line. */ /**
2
+ * Create a debug tracer. When `enabled`, every `dbg(stage, fields)` emits a
3
+ * single Pino line:
4
+ * `logger.info({ event: 'reserve_debug', traceId, stage, ...base, ...fields }, 'reserve_debug')`.
5
+ * When disabled, `dbg` is an immediate no-op. Emitting at INFO is deliberate:
6
+ * the opt-in flag is the gate, so traces survive Pino's default info level in
7
+ * production (a `.debug()` line would be silently dropped there).
8
+ */ export function createReserveDebug(logger, enabled, traceId, baseFields = {}) {
9
+ const id = traceId ?? Math.random().toString(36).slice(2, 10);
10
+ return {
11
+ child: (extra)=>createReserveDebug(logger, enabled, id, {
12
+ ...baseFields,
13
+ ...extra
14
+ }),
15
+ dbg: (stage, fields = {})=>{
16
+ if (!enabled) {
17
+ return;
18
+ }
19
+ logger.info({
20
+ event: 'reserve_debug',
21
+ stage,
22
+ traceId: id,
23
+ ...baseFields,
24
+ ...fields
25
+ }, 'reserve_debug');
26
+ },
27
+ enabled,
28
+ traceId: id
29
+ };
30
+ }
31
+ /** Shared disabled tracer — the default for functions whose `debug` param is omitted. */ export const NOOP_RESERVE_DEBUG = createReserveDebug({
32
+ info: ()=>{}
33
+ }, false);
34
+
35
+ //# sourceMappingURL=reserveDebug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/reserveDebug.ts"],"sourcesContent":["/** Structured fields attached to one debug line. */\nexport type ReserveDebugFields = Record<string, unknown>\n\n/** Minimal logger surface — Payload's Pino `logger.info(obj, msg?)`. */\ntype DebugLogger = { info: (obj: unknown, msg?: string) => void }\n\nexport type ReserveDebug = {\n /** New instance, same traceId, merging baseFields into every subsequent line. */\n child: (baseFields: ReserveDebugFields) => ReserveDebug\n /** Emit one trace line (no-op when disabled). */\n dbg: (stage: string, fields?: ReserveDebugFields) => void\n enabled: boolean\n traceId: string\n}\n\n/**\n * Create a debug tracer. When `enabled`, every `dbg(stage, fields)` emits a\n * single Pino line:\n * `logger.info({ event: 'reserve_debug', traceId, stage, ...base, ...fields }, 'reserve_debug')`.\n * When disabled, `dbg` is an immediate no-op. Emitting at INFO is deliberate:\n * the opt-in flag is the gate, so traces survive Pino's default info level in\n * production (a `.debug()` line would be silently dropped there).\n */\nexport function createReserveDebug(\n logger: DebugLogger,\n enabled: boolean,\n traceId?: string,\n baseFields: ReserveDebugFields = {},\n): ReserveDebug {\n const id = traceId ?? Math.random().toString(36).slice(2, 10)\n return {\n child: (extra) => createReserveDebug(logger, enabled, id, { ...baseFields, ...extra }),\n dbg: (stage, fields = {}) => {\n if (!enabled) {\n return\n }\n logger.info(\n { event: 'reserve_debug', stage, traceId: id, ...baseFields, ...fields },\n 'reserve_debug',\n )\n },\n enabled,\n traceId: id,\n }\n}\n\n/** Shared disabled tracer — the default for functions whose `debug` param is omitted. */\nexport const NOOP_RESERVE_DEBUG: ReserveDebug = createReserveDebug({ info: () => {} }, false)\n"],"names":["createReserveDebug","logger","enabled","traceId","baseFields","id","Math","random","toString","slice","child","extra","dbg","stage","fields","info","event","NOOP_RESERVE_DEBUG"],"mappings":"AAAA,kDAAkD,GAelD;;;;;;;CAOC,GACD,OAAO,SAASA,mBACdC,MAAmB,EACnBC,OAAgB,EAChBC,OAAgB,EAChBC,aAAiC,CAAC,CAAC;IAEnC,MAAMC,KAAKF,WAAWG,KAAKC,MAAM,GAAGC,QAAQ,CAAC,IAAIC,KAAK,CAAC,GAAG;IAC1D,OAAO;QACLC,OAAO,CAACC,QAAUX,mBAAmBC,QAAQC,SAASG,IAAI;gBAAE,GAAGD,UAAU;gBAAE,GAAGO,KAAK;YAAC;QACpFC,KAAK,CAACC,OAAOC,SAAS,CAAC,CAAC;YACtB,IAAI,CAACZ,SAAS;gBACZ;YACF;YACAD,OAAOc,IAAI,CACT;gBAAEC,OAAO;gBAAiBH;gBAAOV,SAASE;gBAAI,GAAGD,UAAU;gBAAE,GAAGU,MAAM;YAAC,GACvE;QAEJ;QACAZ;QACAC,SAASE;IACX;AACF;AAEA,uFAAuF,GACvF,OAAO,MAAMY,qBAAmCjB,mBAAmB;IAAEe,MAAM,KAAO;AAAE,GAAG,OAAM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload-reserve",
3
- "version": "2.2.1",
3
+ "version": "2.4.0",
4
4
  "description": "A Payload CMS 3.x plugin for reservation and booking management with conflict detection, status workflows, and calendar UI",
5
5
  "keywords": [
6
6
  "payload",