@voyantjs/transactions 0.6.7 → 0.6.9
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 +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/pii.d.ts +16 -9
- package/dist/pii.d.ts.map +1 -1
- package/dist/pii.js +76 -70
- package/dist/routes-offers.d.ts +462 -28
- package/dist/routes-offers.d.ts.map +1 -1
- package/dist/routes-offers.js +199 -84
- package/dist/routes-orders.d.ts +461 -27
- package/dist/routes-orders.d.ts.map +1 -1
- package/dist/routes-orders.js +199 -84
- package/dist/routes-shared.d.ts +20 -13
- package/dist/routes-shared.d.ts.map +1 -1
- package/dist/routes-shared.js +7 -6
- package/dist/schema/participant-identity.d.ts +43 -6
- package/dist/schema/participant-identity.d.ts.map +1 -1
- package/dist/schema/participant-identity.js +12 -5
- package/dist/schema-audit.d.ts +4 -4
- package/dist/schema-audit.js +3 -3
- package/dist/schema-contacts.d.ts +529 -0
- package/dist/schema-contacts.d.ts.map +1 -0
- package/dist/schema-contacts.js +57 -0
- package/dist/schema-offers.d.ts +177 -3
- package/dist/schema-offers.d.ts.map +1 -1
- package/dist/schema-offers.js +26 -15
- package/dist/schema-orders.d.ts +177 -3
- package/dist/schema-orders.d.ts.map +1 -1
- package/dist/schema-orders.js +31 -20
- package/dist/schema-relations.d.ts +24 -0
- package/dist/schema-relations.d.ts.map +1 -1
- package/dist/schema-relations.js +40 -2
- package/dist/schema-shared.d.ts +3 -1
- package/dist/schema-shared.d.ts.map +1 -1
- package/dist/schema-shared.js +8 -2
- package/dist/schema-staff.d.ts +529 -0
- package/dist/schema-staff.d.ts.map +1 -0
- package/dist/schema-staff.js +57 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -0
- package/dist/service-offers.d.ts +275 -29
- package/dist/service-offers.d.ts.map +1 -1
- package/dist/service-offers.js +306 -43
- package/dist/service-orders.d.ts +227 -25
- package/dist/service-orders.d.ts.map +1 -1
- package/dist/service-orders.js +127 -22
- package/dist/service-shared.d.ts +144 -22
- package/dist/service-shared.d.ts.map +1 -1
- package/dist/service-shared.js +30 -2
- package/dist/service.d.ts +62 -22
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +42 -2
- package/dist/storefront-offers.d.ts +39 -5
- package/dist/storefront-offers.d.ts.map +1 -1
- package/dist/storefront-offers.js +3 -3
- package/dist/validation.d.ts +674 -36
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +186 -29
- package/package.json +5 -5
package/dist/routes-orders.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { parseJsonBody, parseQuery } from "@voyantjs/hono";
|
|
1
|
+
import { normalizeValidationError, parseJsonBody, parseQuery } from "@voyantjs/hono";
|
|
2
2
|
import { Hono } from "hono";
|
|
3
|
-
import { authorizeTransactionPiiAccess, createPiiService,
|
|
3
|
+
import { authorizeTransactionPiiAccess, createPiiService, hasTravelerIdentityInput, logTransactionPiiAccess, notFound, } from "./routes-shared.js";
|
|
4
4
|
import { transactionsService } from "./service.js";
|
|
5
|
-
import {
|
|
5
|
+
import { toTravelerIdentityResponse } from "./service-shared.js";
|
|
6
|
+
import { insertOrderContactAssignmentSchema, insertOrderItemSchema, insertOrderItemTravelerSchema, insertOrderSchema, insertOrderStaffAssignmentSchema, insertOrderTermSchema, insertOrderTravelerSchema, orderContactAssignmentListQuerySchema, orderItemListQuerySchema, orderItemTravelerListQuerySchema, orderListQuerySchema, orderStaffAssignmentListQuerySchema, orderTermListQuerySchema, orderTravelerListQuerySchema, updateOrderContactAssignmentSchema, updateOrderItemSchema, updateOrderItemTravelerSchema, updateOrderSchema, updateOrderStaffAssignmentSchema, updateOrderTermSchema, updateOrderTravelerSchema, } from "./validation.js";
|
|
6
7
|
export const transactionOrderRoutes = new Hono()
|
|
7
8
|
.get("/orders", async (c) => {
|
|
8
9
|
const query = await parseQuery(c, orderListQuerySchema);
|
|
@@ -23,104 +24,218 @@ export const transactionOrderRoutes = new Hono()
|
|
|
23
24
|
const row = await transactionsService.deleteOrder(c.get("db"), c.req.param("id"));
|
|
24
25
|
return row ? c.json({ success: true }) : notFound(c, "Order not found");
|
|
25
26
|
})
|
|
26
|
-
.get("/order-
|
|
27
|
-
const query = await parseQuery(c,
|
|
28
|
-
return c.json(await transactionsService.
|
|
27
|
+
.get("/order-travelers", async (c) => {
|
|
28
|
+
const query = await parseQuery(c, orderTravelerListQuerySchema);
|
|
29
|
+
return c.json(await transactionsService.listOrderTravelers(c.get("db"), query));
|
|
29
30
|
})
|
|
30
|
-
.post("/order-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
.post("/order-travelers", async (c) => {
|
|
32
|
+
try {
|
|
33
|
+
const payload = await parseJsonBody(c, insertOrderTravelerSchema);
|
|
34
|
+
const row = await transactionsService.createOrderTraveler(c.get("db"), payload);
|
|
35
|
+
if (!row)
|
|
36
|
+
return c.json({ data: row }, 201);
|
|
37
|
+
if (hasTravelerIdentityInput(payload)) {
|
|
38
|
+
const pii = createPiiService(c, "order", row.orderId);
|
|
39
|
+
await pii.upsertTravelerIdentity(c.get("db"), "order", row.id, payload, c.get("userId"));
|
|
40
|
+
return c.json({ data: await transactionsService.getOrderTravelerById(c.get("db"), row.id) }, 201);
|
|
41
|
+
}
|
|
34
42
|
return c.json({ data: row }, 201);
|
|
35
|
-
if (hasParticipantIdentityInput(payload)) {
|
|
36
|
-
const pii = createPiiService(c, "order", row.orderId);
|
|
37
|
-
await pii.upsertParticipantIdentity(c.get("db"), "order", row.id, payload, c.get("userId"));
|
|
38
|
-
return c.json({ data: await transactionsService.getOrderParticipantById(c.get("db"), row.id) }, 201);
|
|
39
43
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (!row)
|
|
50
|
-
return notFound(c, "Order participant not found");
|
|
51
|
-
if (hasParticipantIdentityInput(payload)) {
|
|
52
|
-
const pii = createPiiService(c, "order", row.orderId);
|
|
53
|
-
await pii.upsertParticipantIdentity(c.get("db"), "order", row.id, payload, c.get("userId"));
|
|
54
|
-
return c.json({
|
|
55
|
-
data: await transactionsService.getOrderParticipantById(c.get("db"), row.id),
|
|
56
|
-
});
|
|
44
|
+
catch (error) {
|
|
45
|
+
const validationError = normalizeValidationError(error);
|
|
46
|
+
if (validationError?.status === 400) {
|
|
47
|
+
return c.json({
|
|
48
|
+
error: validationError.message,
|
|
49
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
50
|
+
}, 400);
|
|
51
|
+
}
|
|
52
|
+
throw error;
|
|
57
53
|
}
|
|
58
|
-
return c.json({ data: row });
|
|
59
54
|
})
|
|
60
|
-
.get("/order-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
55
|
+
.get("/order-travelers/:id", async (c) => {
|
|
56
|
+
const row = await transactionsService.getOrderTravelerById(c.get("db"), c.req.param("id"));
|
|
57
|
+
return row ? c.json({ data: row }) : notFound(c, "Order traveler not found");
|
|
58
|
+
})
|
|
59
|
+
.patch("/order-travelers/:id", async (c) => {
|
|
60
|
+
try {
|
|
61
|
+
const payload = await parseJsonBody(c, updateOrderTravelerSchema);
|
|
62
|
+
const row = await transactionsService.updateOrderTraveler(c.get("db"), c.req.param("id"), payload);
|
|
63
|
+
if (!row)
|
|
64
|
+
return notFound(c, "Order traveler not found");
|
|
65
|
+
if (hasTravelerIdentityInput(payload)) {
|
|
66
|
+
const pii = createPiiService(c, "order", row.orderId);
|
|
67
|
+
await pii.upsertTravelerIdentity(c.get("db"), "order", row.id, payload, c.get("userId"));
|
|
68
|
+
return c.json({
|
|
69
|
+
data: await transactionsService.getOrderTravelerById(c.get("db"), row.id),
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return c.json({ data: row });
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
const validationError = normalizeValidationError(error);
|
|
76
|
+
if (validationError?.status === 400) {
|
|
77
|
+
return c.json({
|
|
78
|
+
error: validationError.message,
|
|
79
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
80
|
+
}, 400);
|
|
81
|
+
}
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
.get("/order-travelers/:id/travel-details", async (c) => {
|
|
86
|
+
const traveler = await transactionsService.getOrderTravelerById(c.get("db"), c.req.param("id"));
|
|
87
|
+
if (!traveler)
|
|
88
|
+
return notFound(c, "Order traveler not found");
|
|
64
89
|
const auth = await authorizeTransactionPiiAccess(c, {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
parentId:
|
|
90
|
+
travelerKind: "order",
|
|
91
|
+
travelerId: traveler.id,
|
|
92
|
+
parentId: traveler.orderId,
|
|
68
93
|
action: "read",
|
|
69
94
|
});
|
|
70
95
|
if (!auth.allowed)
|
|
71
96
|
return auth.response;
|
|
72
|
-
const pii = createPiiService(c, "order",
|
|
73
|
-
const row = await pii.
|
|
97
|
+
const pii = createPiiService(c, "order", traveler.orderId);
|
|
98
|
+
const row = await pii.getTravelerIdentity(c.get("db"), "order", traveler.id, c.get("userId"));
|
|
74
99
|
if (!row) {
|
|
75
100
|
await logTransactionPiiAccess(c, {
|
|
76
|
-
|
|
77
|
-
parentId:
|
|
78
|
-
|
|
101
|
+
travelerKind: "order",
|
|
102
|
+
parentId: traveler.orderId,
|
|
103
|
+
travelerId: traveler.id,
|
|
79
104
|
action: "read",
|
|
80
105
|
outcome: "denied",
|
|
81
106
|
reason: "travel_details_not_found",
|
|
82
107
|
});
|
|
83
|
-
return c.json({ error: "Order
|
|
108
|
+
return c.json({ error: "Order traveler travel details not found" }, 404);
|
|
84
109
|
}
|
|
85
|
-
return c.json({ data: row });
|
|
110
|
+
return c.json({ data: toTravelerIdentityResponse(row) });
|
|
86
111
|
})
|
|
87
|
-
.patch("/order-
|
|
88
|
-
const
|
|
89
|
-
if (!
|
|
90
|
-
return notFound(c, "Order
|
|
112
|
+
.patch("/order-travelers/:id/travel-details", async (c) => {
|
|
113
|
+
const traveler = await transactionsService.getOrderTravelerById(c.get("db"), c.req.param("id"));
|
|
114
|
+
if (!traveler)
|
|
115
|
+
return notFound(c, "Order traveler not found");
|
|
91
116
|
const auth = await authorizeTransactionPiiAccess(c, {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
parentId:
|
|
117
|
+
travelerKind: "order",
|
|
118
|
+
travelerId: traveler.id,
|
|
119
|
+
parentId: traveler.orderId,
|
|
95
120
|
action: "update",
|
|
96
121
|
});
|
|
97
122
|
if (!auth.allowed)
|
|
98
123
|
return auth.response;
|
|
99
|
-
const pii = createPiiService(c, "order",
|
|
100
|
-
const row = await pii.
|
|
101
|
-
return row
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
124
|
+
const pii = createPiiService(c, "order", traveler.orderId);
|
|
125
|
+
const row = await pii.upsertTravelerIdentity(c.get("db"), "order", traveler.id, await parseJsonBody(c, updateOrderTravelerSchema), c.get("userId"));
|
|
126
|
+
return row
|
|
127
|
+
? c.json({ data: toTravelerIdentityResponse(row) })
|
|
128
|
+
: notFound(c, "Order traveler not found");
|
|
129
|
+
})
|
|
130
|
+
.delete("/order-travelers/:id/travel-details", async (c) => {
|
|
131
|
+
const traveler = await transactionsService.getOrderTravelerById(c.get("db"), c.req.param("id"));
|
|
132
|
+
if (!traveler)
|
|
133
|
+
return notFound(c, "Order traveler not found");
|
|
107
134
|
const auth = await authorizeTransactionPiiAccess(c, {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
parentId:
|
|
135
|
+
travelerKind: "order",
|
|
136
|
+
travelerId: traveler.id,
|
|
137
|
+
parentId: traveler.orderId,
|
|
111
138
|
action: "delete",
|
|
112
139
|
});
|
|
113
140
|
if (!auth.allowed)
|
|
114
141
|
return auth.response;
|
|
115
|
-
const pii = createPiiService(c, "order",
|
|
116
|
-
const row = await pii.
|
|
142
|
+
const pii = createPiiService(c, "order", traveler.orderId);
|
|
143
|
+
const row = await pii.deleteTravelerIdentity(c.get("db"), "order", traveler.id, c.get("userId"));
|
|
117
144
|
return row
|
|
118
145
|
? c.json({ success: true })
|
|
119
|
-
: c.json({ error: "Order
|
|
146
|
+
: c.json({ error: "Order traveler travel details not found" }, 404);
|
|
147
|
+
})
|
|
148
|
+
.delete("/order-travelers/:id", async (c) => {
|
|
149
|
+
const row = await transactionsService.deleteOrderTraveler(c.get("db"), c.req.param("id"));
|
|
150
|
+
return row ? c.json({ success: true }) : notFound(c, "Order traveler not found");
|
|
151
|
+
})
|
|
152
|
+
.get("/order-contact-assignments", async (c) => {
|
|
153
|
+
const query = await parseQuery(c, orderContactAssignmentListQuerySchema);
|
|
154
|
+
return c.json(await transactionsService.listOrderContactAssignments(c.get("db"), query));
|
|
155
|
+
})
|
|
156
|
+
.post("/order-contact-assignments", async (c) => {
|
|
157
|
+
try {
|
|
158
|
+
const row = await transactionsService.createOrderContactAssignment(c.get("db"), await parseJsonBody(c, insertOrderContactAssignmentSchema));
|
|
159
|
+
return c.json({ data: row }, 201);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
const validationError = normalizeValidationError(error);
|
|
163
|
+
if (validationError?.status === 400) {
|
|
164
|
+
return c.json({
|
|
165
|
+
error: validationError.message,
|
|
166
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
167
|
+
}, 400);
|
|
168
|
+
}
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
.get("/order-contact-assignments/:id", async (c) => {
|
|
173
|
+
const row = await transactionsService.getOrderContactAssignmentById(c.get("db"), c.req.param("id"));
|
|
174
|
+
return row ? c.json({ data: row }) : notFound(c, "Order contact assignment not found");
|
|
175
|
+
})
|
|
176
|
+
.patch("/order-contact-assignments/:id", async (c) => {
|
|
177
|
+
try {
|
|
178
|
+
const row = await transactionsService.updateOrderContactAssignment(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateOrderContactAssignmentSchema));
|
|
179
|
+
return row ? c.json({ data: row }) : notFound(c, "Order contact assignment not found");
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const validationError = normalizeValidationError(error);
|
|
183
|
+
if (validationError?.status === 400) {
|
|
184
|
+
return c.json({
|
|
185
|
+
error: validationError.message,
|
|
186
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
187
|
+
}, 400);
|
|
188
|
+
}
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
.delete("/order-contact-assignments/:id", async (c) => {
|
|
193
|
+
const row = await transactionsService.deleteOrderContactAssignment(c.get("db"), c.req.param("id"));
|
|
194
|
+
return row ? c.json({ success: true }) : notFound(c, "Order contact assignment not found");
|
|
195
|
+
})
|
|
196
|
+
.get("/order-staff-assignments", async (c) => {
|
|
197
|
+
const query = await parseQuery(c, orderStaffAssignmentListQuerySchema);
|
|
198
|
+
return c.json(await transactionsService.listOrderStaffAssignments(c.get("db"), query));
|
|
199
|
+
})
|
|
200
|
+
.post("/order-staff-assignments", async (c) => {
|
|
201
|
+
try {
|
|
202
|
+
const row = await transactionsService.createOrderStaffAssignment(c.get("db"), await parseJsonBody(c, insertOrderStaffAssignmentSchema));
|
|
203
|
+
return c.json({ data: row }, 201);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
const validationError = normalizeValidationError(error);
|
|
207
|
+
if (validationError?.status === 400) {
|
|
208
|
+
return c.json({
|
|
209
|
+
error: validationError.message,
|
|
210
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
211
|
+
}, 400);
|
|
212
|
+
}
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
.get("/order-staff-assignments/:id", async (c) => {
|
|
217
|
+
const row = await transactionsService.getOrderStaffAssignmentById(c.get("db"), c.req.param("id"));
|
|
218
|
+
return row ? c.json({ data: row }) : notFound(c, "Order staff assignment not found");
|
|
219
|
+
})
|
|
220
|
+
.patch("/order-staff-assignments/:id", async (c) => {
|
|
221
|
+
try {
|
|
222
|
+
const row = await transactionsService.updateOrderStaffAssignment(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateOrderStaffAssignmentSchema));
|
|
223
|
+
return row ? c.json({ data: row }) : notFound(c, "Order staff assignment not found");
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
const validationError = normalizeValidationError(error);
|
|
227
|
+
if (validationError?.status === 400) {
|
|
228
|
+
return c.json({
|
|
229
|
+
error: validationError.message,
|
|
230
|
+
details: validationError.details?.fields ?? validationError.details,
|
|
231
|
+
}, 400);
|
|
232
|
+
}
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
120
235
|
})
|
|
121
|
-
.delete("/order-
|
|
122
|
-
const row = await transactionsService.
|
|
123
|
-
return row ? c.json({ success: true }) : notFound(c, "Order
|
|
236
|
+
.delete("/order-staff-assignments/:id", async (c) => {
|
|
237
|
+
const row = await transactionsService.deleteOrderStaffAssignment(c.get("db"), c.req.param("id"));
|
|
238
|
+
return row ? c.json({ success: true }) : notFound(c, "Order staff assignment not found");
|
|
124
239
|
})
|
|
125
240
|
.get("/order-items", async (c) => {
|
|
126
241
|
const query = await parseQuery(c, orderItemListQuerySchema);
|
|
@@ -141,24 +256,24 @@ export const transactionOrderRoutes = new Hono()
|
|
|
141
256
|
const row = await transactionsService.deleteOrderItem(c.get("db"), c.req.param("id"));
|
|
142
257
|
return row ? c.json({ success: true }) : notFound(c, "Order item not found");
|
|
143
258
|
})
|
|
144
|
-
.get("/order-item-
|
|
145
|
-
const query = await parseQuery(c,
|
|
146
|
-
return c.json(await transactionsService.
|
|
259
|
+
.get("/order-item-travelers", async (c) => {
|
|
260
|
+
const query = await parseQuery(c, orderItemTravelerListQuerySchema);
|
|
261
|
+
return c.json(await transactionsService.listOrderItemTravelers(c.get("db"), query));
|
|
147
262
|
})
|
|
148
|
-
.post("/order-item-
|
|
149
|
-
data: await transactionsService.
|
|
263
|
+
.post("/order-item-travelers", async (c) => c.json({
|
|
264
|
+
data: await transactionsService.createOrderItemTraveler(c.get("db"), await parseJsonBody(c, insertOrderItemTravelerSchema)),
|
|
150
265
|
}, 201))
|
|
151
|
-
.get("/order-item-
|
|
152
|
-
const row = await transactionsService.
|
|
153
|
-
return row ? c.json({ data: row }) : notFound(c, "Order item
|
|
266
|
+
.get("/order-item-travelers/:id", async (c) => {
|
|
267
|
+
const row = await transactionsService.getOrderItemTravelerById(c.get("db"), c.req.param("id"));
|
|
268
|
+
return row ? c.json({ data: row }) : notFound(c, "Order item traveler not found");
|
|
154
269
|
})
|
|
155
|
-
.patch("/order-item-
|
|
156
|
-
const row = await transactionsService.
|
|
157
|
-
return row ? c.json({ data: row }) : notFound(c, "Order item
|
|
270
|
+
.patch("/order-item-travelers/:id", async (c) => {
|
|
271
|
+
const row = await transactionsService.updateOrderItemTraveler(c.get("db"), c.req.param("id"), await parseJsonBody(c, updateOrderItemTravelerSchema));
|
|
272
|
+
return row ? c.json({ data: row }) : notFound(c, "Order item traveler not found");
|
|
158
273
|
})
|
|
159
|
-
.delete("/order-item-
|
|
160
|
-
const row = await transactionsService.
|
|
161
|
-
return row ? c.json({ success: true }) : notFound(c, "Order item
|
|
274
|
+
.delete("/order-item-travelers/:id", async (c) => {
|
|
275
|
+
const row = await transactionsService.deleteOrderItemTraveler(c.get("db"), c.req.param("id"));
|
|
276
|
+
return row ? c.json({ success: true }) : notFound(c, "Order item traveler not found");
|
|
162
277
|
})
|
|
163
278
|
.get("/order-terms", async (c) => {
|
|
164
279
|
const query = await parseQuery(c, orderTermListQuerySchema);
|
package/dist/routes-shared.d.ts
CHANGED
|
@@ -37,26 +37,27 @@ export type Env = {
|
|
|
37
37
|
callerType?: "session" | "api_key" | "internal";
|
|
38
38
|
scopes?: string[] | null;
|
|
39
39
|
isInternalRequest?: boolean;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
travelerKind: "offer" | "order";
|
|
41
|
+
travelerId: string;
|
|
42
42
|
parentId: string;
|
|
43
43
|
action: "read" | "update" | "delete";
|
|
44
44
|
}) => boolean | Promise<boolean>;
|
|
45
45
|
};
|
|
46
46
|
};
|
|
47
|
-
export declare function
|
|
47
|
+
export declare function hasTravelerIdentityInput(body: Record<string, unknown>): boolean;
|
|
48
|
+
export declare const hasParticipantIdentityInput: typeof hasTravelerIdentityInput;
|
|
48
49
|
export declare function logTransactionPiiAccess(c: Context<Env>, input: {
|
|
49
|
-
|
|
50
|
+
travelerKind: "offer" | "order";
|
|
50
51
|
parentId?: string;
|
|
51
|
-
|
|
52
|
+
travelerId?: string;
|
|
52
53
|
action: "read" | "update" | "delete";
|
|
53
54
|
outcome: "allowed" | "denied";
|
|
54
55
|
reason?: string;
|
|
55
56
|
metadata?: Record<string, unknown>;
|
|
56
57
|
}): Promise<void>;
|
|
57
58
|
export declare function authorizeTransactionPiiAccess(c: Context<Env>, input: {
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
travelerKind: "offer" | "order";
|
|
60
|
+
travelerId: string;
|
|
60
61
|
parentId: string;
|
|
61
62
|
action: "read" | "update" | "delete";
|
|
62
63
|
}): Promise<{
|
|
@@ -66,12 +67,18 @@ export declare function authorizeTransactionPiiAccess(c: Context<Env>, input: {
|
|
|
66
67
|
allowed: false;
|
|
67
68
|
response: Response;
|
|
68
69
|
}>;
|
|
69
|
-
export declare function createPiiService(c: Context<Env>,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
export declare function createPiiService(c: Context<Env>, _travelerKind: "offer" | "order", parentId: string): {
|
|
71
|
+
getTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<import("./index.js").DecryptedTransactionTravelerIdentity | null>;
|
|
72
|
+
upsertTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, input: import("./pii.js").UpsertTransactionTravelerIdentityInput, actorId?: string | null) => Promise<import("./index.js").DecryptedTransactionTravelerIdentity | null>;
|
|
73
|
+
deleteTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<{
|
|
74
|
+
travelerId: string;
|
|
75
|
+
travelerKind: "offer" | "order";
|
|
76
|
+
} | null>;
|
|
77
|
+
getParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<import("./index.js").DecryptedTransactionTravelerIdentity | null>;
|
|
78
|
+
upsertParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, input: import("./pii.js").UpsertTransactionTravelerIdentityInput, actorId?: string | null) => Promise<import("./index.js").DecryptedTransactionTravelerIdentity | null>;
|
|
79
|
+
deleteParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<{
|
|
80
|
+
travelerId: string;
|
|
81
|
+
travelerKind: "offer" | "order";
|
|
75
82
|
} | null>;
|
|
76
83
|
};
|
|
77
84
|
export declare function notFound(c: Context<Env>, message: string): Response & import("hono").TypedResponse<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-shared.d.ts","sourceRoot":"","sources":["../src/routes-shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAUnC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,yBAAyB,EAAE,MAAM,CAAA;IACjC,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,6BAA6B,EAAE,MAAM,CAAA;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,2BAA2B,EAAE,MAAM,CAAA;CACpC,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,EAAE,WAAW,CAAA;IACrB,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,SAAS,CAAC,EAAE,eAAe,CAAA;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;QACrD,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;QAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE;YAC/B,EAAE,EAAE,kBAAkB,CAAA;YACtB,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;YACrD,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;YAC/C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;YACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;YAC3B,
|
|
1
|
+
{"version":3,"file":"routes-shared.d.ts","sourceRoot":"","sources":["../src/routes-shared.ts"],"names":[],"mappings":"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"}
|
package/dist/routes-shared.js
CHANGED
|
@@ -10,17 +10,18 @@ function hasPiiScope(scopes, action) {
|
|
|
10
10
|
scopes.includes("transactions-pii:*") ||
|
|
11
11
|
scopes.includes(`transactions-pii:${action}`));
|
|
12
12
|
}
|
|
13
|
-
export function
|
|
13
|
+
export function hasTravelerIdentityInput(body) {
|
|
14
14
|
return "dateOfBirth" in body || "nationality" in body;
|
|
15
15
|
}
|
|
16
|
+
export const hasParticipantIdentityInput = hasTravelerIdentityInput;
|
|
16
17
|
export async function logTransactionPiiAccess(c, input) {
|
|
17
18
|
await c
|
|
18
19
|
.get("db")
|
|
19
20
|
.insert(transactionPiiAccessLog)
|
|
20
21
|
.values({
|
|
21
|
-
|
|
22
|
+
travelerKind: input.travelerKind,
|
|
22
23
|
parentId: input.parentId ?? null,
|
|
23
|
-
|
|
24
|
+
travelerId: input.travelerId ?? null,
|
|
24
25
|
actorId: c.get("userId") ?? null,
|
|
25
26
|
actorType: c.get("actor") ?? null,
|
|
26
27
|
callerType: c.get("callerType") ?? null,
|
|
@@ -85,15 +86,15 @@ function getRouteRuntime(c) {
|
|
|
85
86
|
const runtime = c.var.container?.resolve(TRANSACTIONS_ROUTE_RUNTIME_CONTAINER_KEY);
|
|
86
87
|
return runtime ?? buildTransactionsRouteRuntime(c.env);
|
|
87
88
|
}
|
|
88
|
-
export function createPiiService(c,
|
|
89
|
+
export function createPiiService(c, _travelerKind, parentId) {
|
|
89
90
|
const runtime = getRouteRuntime(c);
|
|
90
91
|
return createTransactionPiiService({
|
|
91
92
|
kms: runtime.getKmsProvider(),
|
|
92
93
|
onAudit: async (event) => {
|
|
93
94
|
await logTransactionPiiAccess(c, {
|
|
94
|
-
|
|
95
|
+
travelerKind: event.travelerKind,
|
|
95
96
|
parentId,
|
|
96
|
-
|
|
97
|
+
travelerId: event.travelerId,
|
|
97
98
|
action: event.action,
|
|
98
99
|
outcome: "allowed",
|
|
99
100
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type KmsEnvelope } from "@voyantjs/db/schema/iam";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const transactionTravelerIdentitySchema: z.ZodObject<{
|
|
4
4
|
dateOfBirth: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
5
5
|
nationality: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
6
6
|
}, z.core.$strip>;
|
|
7
|
-
export declare const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export declare const decryptedTransactionTravelerIdentitySchema: z.ZodObject<{
|
|
8
|
+
travelerId: z.ZodString;
|
|
9
|
+
travelerKind: z.ZodEnum<{
|
|
10
10
|
offer: "offer";
|
|
11
11
|
order: "order";
|
|
12
12
|
}>;
|
|
@@ -15,14 +15,51 @@ export declare const decryptedTransactionParticipantIdentitySchema: z.ZodObject<
|
|
|
15
15
|
createdAt: z.ZodDate;
|
|
16
16
|
updatedAt: z.ZodDate;
|
|
17
17
|
}, z.core.$strip>;
|
|
18
|
+
export declare const transactionTravelerIdentityEnvelopeSchema: z.ZodObject<{
|
|
19
|
+
identityEncrypted: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
20
|
+
enc: z.ZodString;
|
|
21
|
+
}, z.core.$strip>>>>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
export declare const transactionParticipantIdentitySchema: z.ZodObject<{
|
|
24
|
+
dateOfBirth: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
25
|
+
nationality: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
export declare const decryptedTransactionParticipantIdentitySchema: z.ZodPipe<z.ZodObject<{
|
|
28
|
+
travelerId: z.ZodString;
|
|
29
|
+
travelerKind: z.ZodEnum<{
|
|
30
|
+
offer: "offer";
|
|
31
|
+
order: "order";
|
|
32
|
+
}>;
|
|
33
|
+
dateOfBirth: z.ZodNullable<z.ZodString>;
|
|
34
|
+
nationality: z.ZodNullable<z.ZodString>;
|
|
35
|
+
createdAt: z.ZodDate;
|
|
36
|
+
updatedAt: z.ZodDate;
|
|
37
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
38
|
+
participantId: string;
|
|
39
|
+
participantKind: "offer" | "order";
|
|
40
|
+
dateOfBirth: string | null;
|
|
41
|
+
nationality: string | null;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
updatedAt: Date;
|
|
44
|
+
}, {
|
|
45
|
+
travelerId: string;
|
|
46
|
+
travelerKind: "offer" | "order";
|
|
47
|
+
dateOfBirth: string | null;
|
|
48
|
+
nationality: string | null;
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
updatedAt: Date;
|
|
51
|
+
}>>;
|
|
18
52
|
export declare const transactionParticipantIdentityEnvelopeSchema: z.ZodObject<{
|
|
19
53
|
identityEncrypted: z.ZodNullable<z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
20
54
|
enc: z.ZodString;
|
|
21
55
|
}, z.core.$strip>>>>;
|
|
22
56
|
}, z.core.$strip>;
|
|
23
|
-
export type
|
|
24
|
-
export type
|
|
57
|
+
export type TransactionTravelerIdentity = z.infer<typeof transactionTravelerIdentitySchema>;
|
|
58
|
+
export type TransactionTravelerIdentityEnvelope = {
|
|
25
59
|
identityEncrypted?: KmsEnvelope | null;
|
|
26
60
|
};
|
|
61
|
+
export type DecryptedTransactionTravelerIdentity = z.infer<typeof decryptedTransactionTravelerIdentitySchema>;
|
|
62
|
+
export type TransactionParticipantIdentity = TransactionTravelerIdentity;
|
|
63
|
+
export type TransactionParticipantIdentityEnvelope = TransactionTravelerIdentityEnvelope;
|
|
27
64
|
export type DecryptedTransactionParticipantIdentity = z.infer<typeof decryptedTransactionParticipantIdentitySchema>;
|
|
28
65
|
//# sourceMappingURL=participant-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant-identity.d.ts","sourceRoot":"","sources":["../../src/schema/participant-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"participant-identity.d.ts","sourceRoot":"","sources":["../../src/schema/participant-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iCAAiC;;;iBAG5C,CAAA;AAEF,eAAO,MAAM,0CAA0C;;;;;;;;;;iBAOrD,CAAA;AAEF,eAAO,MAAM,yCAAyC;;;;iBAEpD,CAAA;AAEF,eAAO,MAAM,oCAAoC;;;iBAAoC,CAAA;AACrF,eAAO,MAAM,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;GAKrD,CAAA;AACL,eAAO,MAAM,4CAA4C;;;;iBACd,CAAA;AAE3C,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAC3F,MAAM,MAAM,mCAAmC,GAAG;IAChD,iBAAiB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CACvC,CAAA;AACD,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CACxD,OAAO,0CAA0C,CAClD,CAAA;AACD,MAAM,MAAM,8BAA8B,GAAG,2BAA2B,CAAA;AACxE,MAAM,MAAM,sCAAsC,GAAG,mCAAmC,CAAA;AACxF,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,6CAA6C,CACrD,CAAA"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { kmsEnvelopeSchema } from "@voyantjs/db/schema/iam";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
export const
|
|
3
|
+
export const transactionTravelerIdentitySchema = z.object({
|
|
4
4
|
dateOfBirth: z.string().optional().nullable(),
|
|
5
5
|
nationality: z.string().max(2).optional().nullable(),
|
|
6
6
|
});
|
|
7
|
-
export const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
export const decryptedTransactionTravelerIdentitySchema = z.object({
|
|
8
|
+
travelerId: z.string(),
|
|
9
|
+
travelerKind: z.enum(["offer", "order"]),
|
|
10
10
|
dateOfBirth: z.string().nullable(),
|
|
11
11
|
nationality: z.string().nullable(),
|
|
12
12
|
createdAt: z.date(),
|
|
13
13
|
updatedAt: z.date(),
|
|
14
14
|
});
|
|
15
|
-
export const
|
|
15
|
+
export const transactionTravelerIdentityEnvelopeSchema = z.object({
|
|
16
16
|
identityEncrypted: kmsEnvelopeSchema.optional().nullable(),
|
|
17
17
|
});
|
|
18
|
+
export const transactionParticipantIdentitySchema = transactionTravelerIdentitySchema;
|
|
19
|
+
export const decryptedTransactionParticipantIdentitySchema = decryptedTransactionTravelerIdentitySchema.transform(({ travelerId, travelerKind, ...rest }) => ({
|
|
20
|
+
...rest,
|
|
21
|
+
participantId: travelerId,
|
|
22
|
+
participantKind: travelerKind,
|
|
23
|
+
}));
|
|
24
|
+
export const transactionParticipantIdentityEnvelopeSchema = transactionTravelerIdentityEnvelopeSchema;
|
package/dist/schema-audit.d.ts
CHANGED
|
@@ -19,8 +19,8 @@ export declare const transactionPiiAccessLog: import("drizzle-orm/pg-core").PgTa
|
|
|
19
19
|
identity: undefined;
|
|
20
20
|
generated: undefined;
|
|
21
21
|
}, {}, {}>;
|
|
22
|
-
|
|
23
|
-
name: "
|
|
22
|
+
travelerKind: import("drizzle-orm/pg-core").PgColumn<{
|
|
23
|
+
name: "traveler_kind";
|
|
24
24
|
tableName: "transaction_pii_access_log";
|
|
25
25
|
dataType: "string";
|
|
26
26
|
columnType: "PgText";
|
|
@@ -53,8 +53,8 @@ export declare const transactionPiiAccessLog: import("drizzle-orm/pg-core").PgTa
|
|
|
53
53
|
identity: undefined;
|
|
54
54
|
generated: undefined;
|
|
55
55
|
}, {}, {}>;
|
|
56
|
-
|
|
57
|
-
name: "
|
|
56
|
+
travelerId: import("drizzle-orm/pg-core").PgColumn<{
|
|
57
|
+
name: "traveler_id";
|
|
58
58
|
tableName: "transaction_pii_access_log";
|
|
59
59
|
dataType: "string";
|
|
60
60
|
columnType: "PgText";
|
package/dist/schema-audit.js
CHANGED
|
@@ -3,9 +3,9 @@ import { index, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
|
|
3
3
|
import { transactionPiiAccessActionEnum, transactionPiiAccessOutcomeEnum } from "./schema-shared";
|
|
4
4
|
export const transactionPiiAccessLog = pgTable("transaction_pii_access_log", {
|
|
5
5
|
id: typeId("transaction_pii_access_log"),
|
|
6
|
-
|
|
6
|
+
travelerKind: text("traveler_kind").notNull(),
|
|
7
7
|
parentId: text("parent_id"),
|
|
8
|
-
|
|
8
|
+
travelerId: text("traveler_id"),
|
|
9
9
|
actorId: text("actor_id"),
|
|
10
10
|
actorType: text("actor_type"),
|
|
11
11
|
callerType: text("caller_type"),
|
|
@@ -16,7 +16,7 @@ export const transactionPiiAccessLog = pgTable("transaction_pii_access_log", {
|
|
|
16
16
|
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
17
17
|
}, (table) => [
|
|
18
18
|
index("idx_transaction_pii_access_log_parent").on(table.parentId),
|
|
19
|
-
index("idx_transaction_pii_access_log_participant").on(table.
|
|
19
|
+
index("idx_transaction_pii_access_log_participant").on(table.travelerId),
|
|
20
20
|
index("idx_transaction_pii_access_log_actor").on(table.actorId),
|
|
21
21
|
index("idx_transaction_pii_access_log_created_at").on(table.createdAt),
|
|
22
22
|
]);
|