@voyantjs/ground 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,298 @@
1
+ import { booleanQueryParam } from "@voyantjs/db/helpers";
2
+ import { z } from "zod";
3
+ const paginationSchema = z.object({
4
+ limit: z.coerce.number().int().min(1).max(200).default(50),
5
+ offset: z.coerce.number().int().min(0).default(0),
6
+ });
7
+ export const groundVehicleCategorySchema = z.enum([
8
+ "car",
9
+ "sedan",
10
+ "suv",
11
+ "van",
12
+ "minibus",
13
+ "bus",
14
+ "boat",
15
+ "train",
16
+ "other",
17
+ ]);
18
+ export const groundVehicleClassSchema = z.enum([
19
+ "economy",
20
+ "standard",
21
+ "premium",
22
+ "luxury",
23
+ "accessible",
24
+ "other",
25
+ ]);
26
+ export const groundServiceLevelSchema = z.enum(["private", "shared", "vip", "shuttle", "other"]);
27
+ export const groundDispatchStatusSchema = z.enum([
28
+ "draft",
29
+ "scheduled",
30
+ "assigned",
31
+ "en_route",
32
+ "arrived",
33
+ "picked_up",
34
+ "completed",
35
+ "cancelled",
36
+ "no_show",
37
+ ]);
38
+ export const groundExecutionEventTypeSchema = z.enum([
39
+ "scheduled",
40
+ "assigned",
41
+ "driver_en_route",
42
+ "driver_arrived",
43
+ "pickup_completed",
44
+ "dropoff_completed",
45
+ "cancelled",
46
+ "issue",
47
+ "note",
48
+ ]);
49
+ export const groundAssignmentSourceSchema = z.enum(["manual", "suggested", "auto"]);
50
+ export const groundDispatchLegTypeSchema = z.enum(["pickup", "stop", "dropoff", "deadhead"]);
51
+ export const groundDriverShiftStatusSchema = z.enum([
52
+ "scheduled",
53
+ "available",
54
+ "on_duty",
55
+ "completed",
56
+ "cancelled",
57
+ ]);
58
+ export const groundIncidentSeveritySchema = z.enum(["info", "warning", "critical"]);
59
+ export const groundIncidentResolutionStatusSchema = z.enum([
60
+ "open",
61
+ "mitigated",
62
+ "resolved",
63
+ "cancelled",
64
+ ]);
65
+ export const groundCheckpointStatusSchema = z.enum(["pending", "reached", "missed", "cancelled"]);
66
+ const isoDateSchema = z.string().date();
67
+ const isoDateTimeSchema = z.string().datetime();
68
+ const groundOperatorCoreSchema = z.object({
69
+ supplierId: z.string().nullable().optional(),
70
+ facilityId: z.string().nullable().optional(),
71
+ name: z.string().min(1).max(255),
72
+ code: z.string().max(100).nullable().optional(),
73
+ active: z.boolean().default(true),
74
+ notes: z.string().nullable().optional(),
75
+ });
76
+ const groundVehicleCoreSchema = z.object({
77
+ resourceId: z.string(),
78
+ operatorId: z.string().nullable().optional(),
79
+ category: groundVehicleCategorySchema.default("other"),
80
+ vehicleClass: groundVehicleClassSchema.default("standard"),
81
+ passengerCapacity: z.number().int().min(0).nullable().optional(),
82
+ checkedBagCapacity: z.number().int().min(0).nullable().optional(),
83
+ carryOnCapacity: z.number().int().min(0).nullable().optional(),
84
+ wheelchairCapacity: z.number().int().min(0).nullable().optional(),
85
+ childSeatCapacity: z.number().int().min(0).nullable().optional(),
86
+ isAccessible: z.boolean().default(false),
87
+ active: z.boolean().default(true),
88
+ notes: z.string().nullable().optional(),
89
+ });
90
+ const groundDriverCoreSchema = z.object({
91
+ resourceId: z.string(),
92
+ operatorId: z.string().nullable().optional(),
93
+ licenseNumber: z.string().max(100).nullable().optional(),
94
+ spokenLanguages: z.array(z.string().min(2).max(35)).default([]),
95
+ isGuide: z.boolean().default(false),
96
+ isMeetAndGreetCapable: z.boolean().default(false),
97
+ active: z.boolean().default(true),
98
+ notes: z.string().nullable().optional(),
99
+ });
100
+ const groundTransferPreferenceCoreSchema = z.object({
101
+ bookingId: z.string(),
102
+ bookingItemId: z.string().nullable().optional(),
103
+ pickupFacilityId: z.string().nullable().optional(),
104
+ dropoffFacilityId: z.string().nullable().optional(),
105
+ pickupAddressId: z.string().nullable().optional(),
106
+ dropoffAddressId: z.string().nullable().optional(),
107
+ requestedVehicleCategory: groundVehicleCategorySchema.nullable().optional(),
108
+ requestedVehicleClass: groundVehicleClassSchema.nullable().optional(),
109
+ serviceLevel: groundServiceLevelSchema.default("private"),
110
+ passengerCount: z.number().int().min(0).nullable().optional(),
111
+ checkedBags: z.number().int().min(0).nullable().optional(),
112
+ carryOnBags: z.number().int().min(0).nullable().optional(),
113
+ wheelchairCount: z.number().int().min(0).nullable().optional(),
114
+ childSeatCount: z.number().int().min(0).nullable().optional(),
115
+ driverLanguage: z.string().max(35).nullable().optional(),
116
+ meetAndGreet: z.boolean().default(false),
117
+ accessibilityNotes: z.string().nullable().optional(),
118
+ pickupNotes: z.string().nullable().optional(),
119
+ dropoffNotes: z.string().nullable().optional(),
120
+ notes: z.string().nullable().optional(),
121
+ });
122
+ const groundDispatchCoreSchema = z.object({
123
+ transferPreferenceId: z.string(),
124
+ bookingId: z.string(),
125
+ bookingItemId: z.string().nullable().optional(),
126
+ operatorId: z.string().nullable().optional(),
127
+ vehicleId: z.string().nullable().optional(),
128
+ driverId: z.string().nullable().optional(),
129
+ serviceDate: isoDateSchema.nullable().optional(),
130
+ scheduledPickupAt: isoDateTimeSchema.nullable().optional(),
131
+ scheduledDropoffAt: isoDateTimeSchema.nullable().optional(),
132
+ actualPickupAt: isoDateTimeSchema.nullable().optional(),
133
+ actualDropoffAt: isoDateTimeSchema.nullable().optional(),
134
+ status: groundDispatchStatusSchema.default("draft"),
135
+ passengerCount: z.number().int().min(0).nullable().optional(),
136
+ checkedBags: z.number().int().min(0).nullable().optional(),
137
+ carryOnBags: z.number().int().min(0).nullable().optional(),
138
+ notes: z.string().nullable().optional(),
139
+ });
140
+ const groundExecutionEventCoreSchema = z.object({
141
+ dispatchId: z.string(),
142
+ eventType: groundExecutionEventTypeSchema.default("note"),
143
+ occurredAt: isoDateTimeSchema.nullable().optional(),
144
+ facilityId: z.string().nullable().optional(),
145
+ addressId: z.string().nullable().optional(),
146
+ notes: z.string().nullable().optional(),
147
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
148
+ });
149
+ const groundDispatchAssignmentCoreSchema = z.object({
150
+ dispatchId: z.string(),
151
+ operatorId: z.string().nullable().optional(),
152
+ vehicleId: z.string().nullable().optional(),
153
+ driverId: z.string().nullable().optional(),
154
+ assignmentSource: groundAssignmentSourceSchema.default("manual"),
155
+ assignedAt: isoDateTimeSchema.nullable().optional(),
156
+ acceptedAt: isoDateTimeSchema.nullable().optional(),
157
+ notes: z.string().nullable().optional(),
158
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
159
+ });
160
+ const groundDispatchLegCoreSchema = z.object({
161
+ dispatchId: z.string(),
162
+ sequence: z.number().int().min(0).default(0),
163
+ legType: groundDispatchLegTypeSchema.default("pickup"),
164
+ facilityId: z.string().nullable().optional(),
165
+ addressId: z.string().nullable().optional(),
166
+ scheduledAt: isoDateTimeSchema.nullable().optional(),
167
+ actualAt: isoDateTimeSchema.nullable().optional(),
168
+ notes: z.string().nullable().optional(),
169
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
170
+ });
171
+ const groundDispatchPassengerCoreSchema = z.object({
172
+ dispatchId: z.string(),
173
+ participantId: z.string().nullable().optional(),
174
+ displayName: z.string().nullable().optional(),
175
+ seatLabel: z.string().nullable().optional(),
176
+ notes: z.string().nullable().optional(),
177
+ });
178
+ const groundDriverShiftCoreSchema = z.object({
179
+ driverId: z.string(),
180
+ operatorId: z.string().nullable().optional(),
181
+ facilityId: z.string().nullable().optional(),
182
+ startsAt: isoDateTimeSchema,
183
+ endsAt: isoDateTimeSchema,
184
+ status: groundDriverShiftStatusSchema.default("scheduled"),
185
+ notes: z.string().nullable().optional(),
186
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
187
+ });
188
+ const groundServiceIncidentCoreSchema = z.object({
189
+ dispatchId: z.string(),
190
+ severity: groundIncidentSeveritySchema.default("warning"),
191
+ incidentType: z.string().min(1),
192
+ resolutionStatus: groundIncidentResolutionStatusSchema.default("open"),
193
+ openedAt: isoDateTimeSchema.nullable().optional(),
194
+ resolvedAt: isoDateTimeSchema.nullable().optional(),
195
+ notes: z.string().nullable().optional(),
196
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
197
+ });
198
+ const groundDispatchCheckpointCoreSchema = z.object({
199
+ dispatchId: z.string(),
200
+ sequence: z.number().int().min(0).default(0),
201
+ checkpointType: z.string().min(1),
202
+ status: groundCheckpointStatusSchema.default("pending"),
203
+ plannedAt: isoDateTimeSchema.nullable().optional(),
204
+ actualAt: isoDateTimeSchema.nullable().optional(),
205
+ facilityId: z.string().nullable().optional(),
206
+ addressId: z.string().nullable().optional(),
207
+ notes: z.string().nullable().optional(),
208
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
209
+ });
210
+ export const insertGroundOperatorSchema = groundOperatorCoreSchema;
211
+ export const updateGroundOperatorSchema = groundOperatorCoreSchema.partial();
212
+ export const groundOperatorListQuerySchema = paginationSchema.extend({
213
+ supplierId: z.string().optional(),
214
+ facilityId: z.string().optional(),
215
+ active: booleanQueryParam.optional(),
216
+ });
217
+ export const insertGroundVehicleSchema = groundVehicleCoreSchema;
218
+ export const updateGroundVehicleSchema = groundVehicleCoreSchema.partial();
219
+ export const groundVehicleListQuerySchema = paginationSchema.extend({
220
+ resourceId: z.string().optional(),
221
+ operatorId: z.string().optional(),
222
+ category: groundVehicleCategorySchema.optional(),
223
+ active: booleanQueryParam.optional(),
224
+ });
225
+ export const insertGroundDriverSchema = groundDriverCoreSchema;
226
+ export const updateGroundDriverSchema = groundDriverCoreSchema.partial();
227
+ export const groundDriverListQuerySchema = paginationSchema.extend({
228
+ resourceId: z.string().optional(),
229
+ operatorId: z.string().optional(),
230
+ active: booleanQueryParam.optional(),
231
+ });
232
+ export const insertGroundTransferPreferenceSchema = groundTransferPreferenceCoreSchema;
233
+ export const updateGroundTransferPreferenceSchema = groundTransferPreferenceCoreSchema.partial();
234
+ export const groundTransferPreferenceListQuerySchema = paginationSchema.extend({
235
+ bookingId: z.string().optional(),
236
+ bookingItemId: z.string().optional(),
237
+ serviceLevel: groundServiceLevelSchema.optional(),
238
+ });
239
+ export const insertGroundDispatchSchema = groundDispatchCoreSchema;
240
+ export const updateGroundDispatchSchema = groundDispatchCoreSchema.partial();
241
+ export const groundDispatchListQuerySchema = paginationSchema.extend({
242
+ transferPreferenceId: z.string().optional(),
243
+ bookingId: z.string().optional(),
244
+ bookingItemId: z.string().optional(),
245
+ operatorId: z.string().optional(),
246
+ vehicleId: z.string().optional(),
247
+ driverId: z.string().optional(),
248
+ status: groundDispatchStatusSchema.optional(),
249
+ serviceDate: isoDateSchema.optional(),
250
+ });
251
+ export const insertGroundExecutionEventSchema = groundExecutionEventCoreSchema;
252
+ export const updateGroundExecutionEventSchema = groundExecutionEventCoreSchema.partial();
253
+ export const groundExecutionEventListQuerySchema = paginationSchema.extend({
254
+ dispatchId: z.string().optional(),
255
+ eventType: groundExecutionEventTypeSchema.optional(),
256
+ });
257
+ export const insertGroundDispatchAssignmentSchema = groundDispatchAssignmentCoreSchema;
258
+ export const updateGroundDispatchAssignmentSchema = groundDispatchAssignmentCoreSchema.partial();
259
+ export const groundDispatchAssignmentListQuerySchema = paginationSchema.extend({
260
+ dispatchId: z.string().optional(),
261
+ operatorId: z.string().optional(),
262
+ vehicleId: z.string().optional(),
263
+ driverId: z.string().optional(),
264
+ assignmentSource: groundAssignmentSourceSchema.optional(),
265
+ });
266
+ export const insertGroundDispatchLegSchema = groundDispatchLegCoreSchema;
267
+ export const updateGroundDispatchLegSchema = groundDispatchLegCoreSchema.partial();
268
+ export const groundDispatchLegListQuerySchema = paginationSchema.extend({
269
+ dispatchId: z.string().optional(),
270
+ legType: groundDispatchLegTypeSchema.optional(),
271
+ });
272
+ export const insertGroundDispatchPassengerSchema = groundDispatchPassengerCoreSchema;
273
+ export const updateGroundDispatchPassengerSchema = groundDispatchPassengerCoreSchema.partial();
274
+ export const groundDispatchPassengerListQuerySchema = paginationSchema.extend({
275
+ dispatchId: z.string().optional(),
276
+ participantId: z.string().optional(),
277
+ });
278
+ export const insertGroundDriverShiftSchema = groundDriverShiftCoreSchema;
279
+ export const updateGroundDriverShiftSchema = groundDriverShiftCoreSchema.partial();
280
+ export const groundDriverShiftListQuerySchema = paginationSchema.extend({
281
+ driverId: z.string().optional(),
282
+ operatorId: z.string().optional(),
283
+ facilityId: z.string().optional(),
284
+ status: groundDriverShiftStatusSchema.optional(),
285
+ });
286
+ export const insertGroundServiceIncidentSchema = groundServiceIncidentCoreSchema;
287
+ export const updateGroundServiceIncidentSchema = groundServiceIncidentCoreSchema.partial();
288
+ export const groundServiceIncidentListQuerySchema = paginationSchema.extend({
289
+ dispatchId: z.string().optional(),
290
+ severity: groundIncidentSeveritySchema.optional(),
291
+ resolutionStatus: groundIncidentResolutionStatusSchema.optional(),
292
+ });
293
+ export const insertGroundDispatchCheckpointSchema = groundDispatchCheckpointCoreSchema;
294
+ export const updateGroundDispatchCheckpointSchema = groundDispatchCheckpointCoreSchema.partial();
295
+ export const groundDispatchCheckpointListQuerySchema = paginationSchema.extend({
296
+ dispatchId: z.string().optional(),
297
+ status: groundCheckpointStatusSchema.optional(),
298
+ });
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@voyantjs/ground",
3
+ "version": "0.1.0",
4
+ "license": "FSL-1.1-Apache-2.0",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./schema": {
12
+ "types": "./dist/schema.d.ts",
13
+ "import": "./dist/schema.js"
14
+ },
15
+ "./validation": {
16
+ "types": "./dist/validation.d.ts",
17
+ "import": "./dist/validation.js"
18
+ },
19
+ "./routes": {
20
+ "types": "./dist/routes.d.ts",
21
+ "import": "./dist/routes.js"
22
+ }
23
+ },
24
+ "dependencies": {
25
+ "drizzle-orm": "^0.45.2",
26
+ "hono": "^4.12.10",
27
+ "zod": "^4.3.6",
28
+ "@voyantjs/facilities": "0.1.0",
29
+ "@voyantjs/hono": "0.1.0",
30
+ "@voyantjs/identity": "0.1.0",
31
+ "@voyantjs/core": "0.1.0",
32
+ "@voyantjs/db": "0.1.0"
33
+ },
34
+ "devDependencies": {
35
+ "typescript": "^6.0.2",
36
+ "@voyantjs/voyant-typescript-config": "0.1.0"
37
+ },
38
+ "files": [
39
+ "dist"
40
+ ],
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
44
+ "scripts": {
45
+ "typecheck": "tsc --noEmit",
46
+ "lint": "biome check src/",
47
+ "test": "vitest run",
48
+ "build": "tsc -p tsconfig.json",
49
+ "clean": "rm -rf dist"
50
+ },
51
+ "main": "./dist/index.js",
52
+ "types": "./dist/index.d.ts"
53
+ }