@voyant-travel/accommodations 0.107.0 → 0.108.1
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/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -9
- package/dist/linkables.d.ts +11 -0
- package/dist/linkables.d.ts.map +1 -0
- package/dist/linkables.js +14 -0
- package/dist/routes-room-blocks.d.ts +2 -2
- package/dist/schema-room-blocks.d.ts.map +1 -1
- package/dist/schema-room-blocks.js +3 -9
- package/dist/service-room-blocks.d.ts +4 -4
- package/dist/service-room-blocks.d.ts.map +1 -1
- package/dist/service-room-blocks.js +8 -17
- package/package.json +12 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Module } from "@voyant-travel/core";
|
|
2
2
|
import type { HonoModule } from "@voyant-travel/hono/module";
|
|
3
3
|
/**
|
|
4
4
|
* Room blocks are the accommodations module's first linkable surface — a
|
|
5
5
|
* standard, package-owned allotment primitive that any deployment can use
|
|
6
6
|
* (the MICE spine merely links to it). See RFC voyant#1489.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
9
|
-
export declare const accommodationsLinkable: {
|
|
10
|
-
roomBlock: LinkableDefinition;
|
|
11
|
-
};
|
|
8
|
+
export { accommodationsLinkable, roomBlockLinkable } from "./linkables.js";
|
|
12
9
|
export declare const accommodationsModule: Module;
|
|
13
10
|
export declare const accommodationsHonoModule: HonoModule;
|
|
14
11
|
export declare const accommodationsHonoModules: readonly [HonoModule];
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK5D;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAE1E,eAAO,MAAM,oBAAoB,EAAE,MAKlC,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,UAGtC,CAAA;AAED,eAAO,MAAM,yBAAyB,uBAAsC,CAAA;AAE5E,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
|
+
import { accommodationsLinkable } from "./linkables.js";
|
|
1
2
|
import { roomBlockAdminRoutes } from "./routes-room-blocks.js";
|
|
2
3
|
/**
|
|
3
4
|
* Room blocks are the accommodations module's first linkable surface — a
|
|
4
5
|
* standard, package-owned allotment primitive that any deployment can use
|
|
5
6
|
* (the MICE spine merely links to it). See RFC voyant#1489.
|
|
6
7
|
*/
|
|
7
|
-
export
|
|
8
|
-
module: "accommodations",
|
|
9
|
-
entity: "roomBlock",
|
|
10
|
-
table: "room_blocks",
|
|
11
|
-
idPrefix: "hrbl",
|
|
12
|
-
};
|
|
13
|
-
export const accommodationsLinkable = {
|
|
14
|
-
roomBlock: roomBlockLinkable,
|
|
15
|
-
};
|
|
8
|
+
export { accommodationsLinkable, roomBlockLinkable } from "./linkables.js";
|
|
16
9
|
export const accommodationsModule = {
|
|
17
10
|
name: "accommodations",
|
|
18
11
|
// Pickup / reversal / cutoff mutate per-night counters under a transaction.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LinkableDefinition } from "@voyant-travel/core";
|
|
2
|
+
/**
|
|
3
|
+
* Room blocks are the accommodations module's first linkable surface - a
|
|
4
|
+
* standard, package-owned allotment primitive that any deployment can use
|
|
5
|
+
* (the MICE spine merely links to it). See RFC voyant#1489.
|
|
6
|
+
*/
|
|
7
|
+
export declare const roomBlockLinkable: LinkableDefinition;
|
|
8
|
+
export declare const accommodationsLinkable: {
|
|
9
|
+
roomBlock: LinkableDefinition;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=linkables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkables.d.ts","sourceRoot":"","sources":["../src/linkables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAK/B,CAAA;AAED,eAAO,MAAM,sBAAsB;;CAElC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Room blocks are the accommodations module's first linkable surface - a
|
|
3
|
+
* standard, package-owned allotment primitive that any deployment can use
|
|
4
|
+
* (the MICE spine merely links to it). See RFC voyant#1489.
|
|
5
|
+
*/
|
|
6
|
+
export const roomBlockLinkable = {
|
|
7
|
+
module: "accommodations",
|
|
8
|
+
entity: "roomBlock",
|
|
9
|
+
table: "room_blocks",
|
|
10
|
+
idPrefix: "hrbl",
|
|
11
|
+
};
|
|
12
|
+
export const accommodationsLinkable = {
|
|
13
|
+
roomBlock: roomBlockLinkable,
|
|
14
|
+
};
|
|
@@ -104,7 +104,7 @@ export declare const roomBlockAdminRoutes: import("hono/hono-base").HonoBase<Env
|
|
|
104
104
|
totalPickedUp: number;
|
|
105
105
|
totalReleased: number;
|
|
106
106
|
totalRemaining: number;
|
|
107
|
-
pickupProgress: import("
|
|
107
|
+
pickupProgress: import("@voyant-travel/allotments").PickupProgress;
|
|
108
108
|
} | null;
|
|
109
109
|
};
|
|
110
110
|
};
|
|
@@ -139,7 +139,7 @@ export declare const roomBlockAdminRoutes: import("hono/hono-base").HonoBase<Env
|
|
|
139
139
|
totalPickedUp: number;
|
|
140
140
|
totalReleased: number;
|
|
141
141
|
totalRemaining: number;
|
|
142
|
-
pickupProgress: import("
|
|
142
|
+
pickupProgress: import("@voyant-travel/allotments").PickupProgress;
|
|
143
143
|
} | null;
|
|
144
144
|
};
|
|
145
145
|
outputFormat: "json";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-room-blocks.d.ts","sourceRoot":"","sources":["../src/schema-room-blocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-room-blocks.d.ts","sourceRoot":"","sources":["../src/schema-room-blocks.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,mBAAmB,4GAAwD,CAAA;AAExF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCtB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB3B,CAAA;AAGD,eAAO,MAAM,yBAAyB,8DAGrC,CAAA;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B5B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAA;AACtD,MAAM,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,YAAY,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,OAAO,eAAe,CAAC,YAAY,CAAA;AAChE,MAAM,MAAM,iBAAiB,GAAG,OAAO,eAAe,CAAC,YAAY,CAAA;AACnE,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA;AAClE,MAAM,MAAM,kBAAkB,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ALLOTMENT_PICKUP_STATUSES, ALLOTMENT_STATUSES } from "@voyant-travel/allotments";
|
|
1
2
|
import { typeId, typeIdRef } from "@voyant-travel/db/lib/typeid-column";
|
|
2
3
|
import { sql } from "drizzle-orm";
|
|
3
4
|
import { check, date, index, integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
|
|
@@ -18,14 +19,7 @@ import { roomTypes } from "./schema-inventory.js";
|
|
|
18
19
|
// (none / partial / full) is DERIVED at read time from room_block_nights
|
|
19
20
|
// counters — never a stored header status — so the header can never drift
|
|
20
21
|
// from the nightly ledger.
|
|
21
|
-
export const roomBlockStatusEnum = pgEnum("hotel_room_block_status",
|
|
22
|
-
"inquiry",
|
|
23
|
-
"held",
|
|
24
|
-
"confirmed",
|
|
25
|
-
"released",
|
|
26
|
-
"cancelled",
|
|
27
|
-
"expired",
|
|
28
|
-
]);
|
|
22
|
+
export const roomBlockStatusEnum = pgEnum("hotel_room_block_status", ALLOTMENT_STATUSES);
|
|
29
23
|
export const roomBlocks = pgTable("room_blocks", {
|
|
30
24
|
id: typeId("room_blocks"),
|
|
31
25
|
// Cross-package → loose columns + defineLink at the deployment:
|
|
@@ -80,7 +74,7 @@ export const roomBlockNights = pgTable("room_block_nights", {
|
|
|
80
74
|
check("ck_room_block_nights_capacity", sql `rooms_picked_up + rooms_released <= rooms_held`),
|
|
81
75
|
]);
|
|
82
76
|
// The pickup ledger is append-only; reversal compensates rather than deletes.
|
|
83
|
-
export const roomBlockPickupStatusEnum = pgEnum("room_block_pickup_status",
|
|
77
|
+
export const roomBlockPickupStatusEnum = pgEnum("room_block_pickup_status", ALLOTMENT_PICKUP_STATUSES);
|
|
84
78
|
export const roomBlockPickups = pgTable("room_block_pickups", {
|
|
85
79
|
id: typeId("room_block_pickups"),
|
|
86
80
|
blockId: typeIdRef("block_id")
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
* progress (none / partial / full) is DERIVED from the counters at read time,
|
|
13
13
|
* never stored on the block header.
|
|
14
14
|
*/
|
|
15
|
+
import { type PickupProgress } from "@voyant-travel/allotments";
|
|
15
16
|
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
16
17
|
import { type RoomBlock, type RoomBlockPickup } from "./schema-room-blocks.js";
|
|
17
18
|
/**
|
|
18
|
-
* The night dates a stay occupies
|
|
19
|
-
*
|
|
20
|
-
* timezone drift across the day boundary.
|
|
19
|
+
* The night dates a stay occupies (inclusive check-in → exclusive check-out).
|
|
20
|
+
* Thin alias over the shared allotment slot enumeration. See @voyant-travel/allotments.
|
|
21
21
|
*/
|
|
22
22
|
export declare function eachNight(checkIn: string, checkOut: string): string[];
|
|
23
23
|
export interface CreateRoomBlockInput {
|
|
@@ -112,7 +112,7 @@ export type RoomBlockCutoffOutcome = {
|
|
|
112
112
|
* released` per night, so `remaining` falls to zero for unpicked inventory.
|
|
113
113
|
*/
|
|
114
114
|
export declare function releaseRoomBlockAtCutoff(db: PostgresJsDatabase, input: RoomBlockCutoffInput): Promise<RoomBlockCutoffOutcome>;
|
|
115
|
-
export type PickupProgress
|
|
115
|
+
export type { PickupProgress } from "@voyant-travel/allotments";
|
|
116
116
|
export interface RoomBlockSummary {
|
|
117
117
|
blockId: string;
|
|
118
118
|
status: RoomBlock["status"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-room-blocks.d.ts","sourceRoot":"","sources":["../src/service-room-blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"service-room-blocks.d.ts","sourceRoot":"","sources":["../src/service-room-blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAA;AAEhC;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAErE;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CACnC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,SAAS,CAAC,CAIpB;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAC3B;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9B;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAwEjC;AAED,MAAM,WAAW,sBAAsB;IACrC,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAA;AAElC;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAyCnC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAA;AAEjC;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAmCjC;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,0DAA0D;IAC1D,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,gFAAgF;AAChF,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,kBAAkB,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkClC;AAED,eAAO,MAAM,gBAAgB;;;;;;;;CAQ5B,CAAA"}
|
|
@@ -12,25 +12,15 @@
|
|
|
12
12
|
* progress (none / partial / full) is DERIVED from the counters at read time,
|
|
13
13
|
* never stored on the block header.
|
|
14
14
|
*/
|
|
15
|
+
import { allotmentPickupProgress, allotmentRemaining, eachDateInRange, isClosedAllotmentStatus, } from "@voyant-travel/allotments";
|
|
15
16
|
import { and, eq, inArray, sql } from "drizzle-orm";
|
|
16
17
|
import { roomBlockNights, roomBlockPickups, roomBlocks, } from "./schema-room-blocks.js";
|
|
17
|
-
/** Block statuses that can no longer accrue pickups. */
|
|
18
|
-
const CLOSED_BLOCK_STATUSES = ["released", "cancelled", "expired"];
|
|
19
18
|
/**
|
|
20
|
-
* The night dates a stay occupies
|
|
21
|
-
*
|
|
22
|
-
* timezone drift across the day boundary.
|
|
19
|
+
* The night dates a stay occupies (inclusive check-in → exclusive check-out).
|
|
20
|
+
* Thin alias over the shared allotment slot enumeration. See @voyant-travel/allotments.
|
|
23
21
|
*/
|
|
24
22
|
export function eachNight(checkIn, checkOut) {
|
|
25
|
-
|
|
26
|
-
const end = new Date(`${checkOut}T00:00:00Z`);
|
|
27
|
-
if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime()))
|
|
28
|
-
return [];
|
|
29
|
-
const nights = [];
|
|
30
|
-
for (let d = start; d < end; d.setUTCDate(d.getUTCDate() + 1)) {
|
|
31
|
-
nights.push(d.toISOString().slice(0, 10));
|
|
32
|
-
}
|
|
33
|
-
return nights;
|
|
23
|
+
return eachDateInRange(checkIn, checkOut);
|
|
34
24
|
}
|
|
35
25
|
/** Create a block header (starts in `inquiry`; nights are set separately). */
|
|
36
26
|
export async function createRoomBlock(db, input) {
|
|
@@ -82,7 +72,7 @@ export async function pickupRoomBlock(db, input) {
|
|
|
82
72
|
.limit(1);
|
|
83
73
|
if (!block)
|
|
84
74
|
return { status: "block_not_found" };
|
|
85
|
-
if (
|
|
75
|
+
if (isClosedAllotmentStatus(block.status)) {
|
|
86
76
|
return { status: "block_not_active" };
|
|
87
77
|
}
|
|
88
78
|
// Idempotency: an active pickup already exists for this stay item.
|
|
@@ -240,8 +230,9 @@ export async function summarizeRoomBlock(db, blockId) {
|
|
|
240
230
|
totalPickedUp += n.roomsPickedUp;
|
|
241
231
|
totalReleased += n.roomsReleased;
|
|
242
232
|
}
|
|
243
|
-
const
|
|
244
|
-
const
|
|
233
|
+
const counters = { held: totalHeld, pickedUp: totalPickedUp, released: totalReleased };
|
|
234
|
+
const totalRemaining = allotmentRemaining(counters);
|
|
235
|
+
const pickupProgress = allotmentPickupProgress(counters);
|
|
245
236
|
return {
|
|
246
237
|
blockId: block.id,
|
|
247
238
|
status: block.status,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyant-travel/accommodations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.108.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
"import": "./dist/schema.js",
|
|
15
15
|
"default": "./dist/schema.js"
|
|
16
16
|
},
|
|
17
|
+
"./linkables": {
|
|
18
|
+
"types": "./dist/linkables.d.ts",
|
|
19
|
+
"import": "./dist/linkables.js",
|
|
20
|
+
"default": "./dist/linkables.js"
|
|
21
|
+
},
|
|
17
22
|
"./content-shape": {
|
|
18
23
|
"types": "./dist/content-shape.d.ts",
|
|
19
24
|
"import": "./dist/content-shape.js",
|
|
@@ -60,12 +65,13 @@
|
|
|
60
65
|
"hono": "^4.12.10",
|
|
61
66
|
"zod": "^4.3.6",
|
|
62
67
|
"@voyant-travel/accommodations-contracts": "^0.105.3",
|
|
63
|
-
"@voyant-travel/
|
|
64
|
-
"@voyant-travel/
|
|
68
|
+
"@voyant-travel/allotments": "^0.2.0",
|
|
69
|
+
"@voyant-travel/bookings": "^0.136.2",
|
|
70
|
+
"@voyant-travel/catalog": "^0.134.1",
|
|
65
71
|
"@voyant-travel/core": "^0.111.0",
|
|
66
|
-
"@voyant-travel/db": "^0.109.
|
|
67
|
-
"@voyant-travel/hono": "^0.116.
|
|
68
|
-
"@voyant-travel/operations": "^0.
|
|
72
|
+
"@voyant-travel/db": "^0.109.4",
|
|
73
|
+
"@voyant-travel/hono": "^0.116.2",
|
|
74
|
+
"@voyant-travel/operations": "^0.5.1"
|
|
69
75
|
},
|
|
70
76
|
"devDependencies": {
|
|
71
77
|
"drizzle-kit": "^0.31.10",
|