@voyantjs/transactions 0.6.8 → 0.7.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.
- 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 +13 -3
- package/dist/schema-orders.d.ts +177 -3
- package/dist/schema-orders.d.ts.map +1 -1
- package/dist/schema-orders.js +13 -3
- 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/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LinkableDefinition, Module } from "@voyantjs/core";
|
|
2
2
|
import type { HonoModule } from "@voyantjs/hono/module";
|
|
3
|
-
export { createTransactionPiiService, type TransactionPiiAuditEvent, type TransactionPiiServiceOptions, type
|
|
3
|
+
export { createTransactionPiiService, type TransactionPiiAuditEvent, type TransactionPiiServiceOptions, type UpsertTransactionTravelerIdentityInput, } from "./pii.js";
|
|
4
4
|
import { transactionsService } from "./service.js";
|
|
5
5
|
export type { TransactionsRoutes } from "./routes.js";
|
|
6
6
|
export declare const orderLinkable: LinkableDefinition;
|
|
@@ -15,11 +15,11 @@ export declare const transactionsHonoModule: HonoModule;
|
|
|
15
15
|
export { transactionsBookingExtension } from "./booking-extension.js";
|
|
16
16
|
export type { TransactionsRouteRuntime } from "./route-runtime.js";
|
|
17
17
|
export { buildTransactionsRouteRuntime, TRANSACTIONS_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
|
|
18
|
-
export type {
|
|
19
|
-
export {
|
|
20
|
-
export type { NewOffer, NewOfferItem,
|
|
21
|
-
export { offerItemParticipants, offerItems, offerParticipants, offerStatusEnum, offers, orderItemParticipants, orderItems, orderParticipants, orderStatusEnum, orders, orderTermAcceptanceStatusEnum, orderTerms, orderTermTypeEnum, transactionItemParticipantRoleEnum, transactionItemStatusEnum, transactionItemTypeEnum, transactionParticipantTypeEnum, transactionPiiAccessActionEnum, transactionPiiAccessLog, transactionPiiAccessOutcomeEnum, transactionTravelerCategoryEnum, } from "./schema.js";
|
|
18
|
+
export type { DecryptedTransactionTravelerIdentity, TransactionTravelerIdentity, TransactionTravelerIdentityEnvelope, } from "./schema/participant-identity.js";
|
|
19
|
+
export { decryptedTransactionTravelerIdentitySchema, transactionTravelerIdentityEnvelopeSchema, transactionTravelerIdentitySchema, } from "./schema/participant-identity.js";
|
|
20
|
+
export type { NewOffer, NewOfferContactAssignment, NewOfferItem, NewOfferItemTraveler, NewOfferStaffAssignment, NewOfferTraveler, NewOrder, NewOrderContactAssignment, NewOrderItem, NewOrderItemTraveler, NewOrderStaffAssignment, NewOrderTerm, NewOrderTraveler, Offer, OfferContactAssignment, OfferItem, OfferItemTraveler, OfferStaffAssignment, OfferTraveler, Order, OrderContactAssignment, OrderItem, OrderItemTraveler, OrderStaffAssignment, OrderTerm, OrderTraveler, } from "./schema.js";
|
|
21
|
+
export { offerContactAssignments, offerItemParticipants, offerItems, offerParticipants, offerStaffAssignments, offerStatusEnum, offers, orderContactAssignments, orderItemParticipants, orderItems, orderParticipants, orderStaffAssignments, orderStatusEnum, orders, orderTermAcceptanceStatusEnum, orderTerms, orderTermTypeEnum, transactionContactAssignmentRoleEnum, transactionItemParticipantRoleEnum, transactionItemStatusEnum, transactionItemTypeEnum, transactionParticipantTypeEnum, transactionPiiAccessActionEnum, transactionPiiAccessLog, transactionPiiAccessOutcomeEnum, transactionStaffAssignmentRoleEnum, transactionTravelerCategoryEnum, } from "./schema.js";
|
|
22
22
|
export { createStorefrontPromotionalOffersResolver, getStorefrontPromotionalOfferBySlug, listStorefrontPromotionalOffers, storefrontOfferEnvelopeSchema, storefrontPromotionalOfferSchema, } from "./storefront-offers.js";
|
|
23
|
-
export {
|
|
23
|
+
export { insertOfferContactAssignmentSchema, insertOfferItemSchema, insertOfferItemTravelerSchema, insertOfferSchema, insertOfferStaffAssignmentSchema, insertOfferTravelerSchema, insertOrderContactAssignmentSchema, insertOrderItemSchema, insertOrderItemTravelerSchema, insertOrderSchema, insertOrderStaffAssignmentSchema, insertOrderTermSchema, insertOrderTravelerSchema, offerContactAssignmentListQuerySchema, offerItemListQuerySchema, offerItemTravelerListQuerySchema, offerListQuerySchema, offerMetadataSchema, offerStaffAssignmentListQuerySchema, offerStatusSchema, offerTravelerListQuerySchema, orderContactAssignmentListQuerySchema, orderItemListQuerySchema, orderItemTravelerListQuerySchema, orderListQuerySchema, orderStaffAssignmentListQuerySchema, orderStatusSchema, orderTermAcceptanceStatusSchema, orderTermListQuerySchema, orderTermTypeSchema, orderTravelerListQuerySchema, storefrontOfferDiscountTypeSchema, storefrontOfferMetadataSchema, transactionContactAssignmentRoleSchema, transactionItemParticipantRoleSchema, transactionItemStatusSchema, transactionItemTypeSchema, transactionParticipantTypeSchema, transactionStaffAssignmentRoleSchema, transactionTravelerCategorySchema, updateOfferContactAssignmentSchema, updateOfferItemSchema, updateOfferItemTravelerSchema, updateOfferSchema, updateOfferStaffAssignmentSchema, updateOfferTravelerSchema, updateOrderContactAssignmentSchema, updateOrderItemSchema, updateOrderItemTravelerSchema, updateOrderSchema, updateOrderStaffAssignmentSchema, updateOrderTermSchema, updateOrderTravelerSchema, } from "./validation.js";
|
|
24
24
|
export { transactionsService };
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
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,kBAAkB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EACL,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EACL,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,sCAAsC,GAC5C,MAAM,UAAU,CAAA;AAOjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD,eAAO,MAAM,aAAa,EAAE,kBAK3B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,kBAK3B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;CAGhC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,MAGhC,CAAA;AAED,wBAAgB,4BAA4B,IAAI,UAAU,CAezD;AAED,eAAO,MAAM,sBAAsB,EAAE,UAA2C,CAAA;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AACrE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EACL,6BAA6B,EAC7B,wCAAwC,GACzC,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,oCAAoC,EACpC,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,0CAA0C,EAC1C,yCAAyC,EACzC,iCAAiC,GAClC,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,QAAQ,EACR,yBAAyB,EACzB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,QAAQ,EACR,yBAAyB,EACzB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,KAAK,EACL,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,MAAM,EACN,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,MAAM,EACN,6BAA6B,EAC7B,UAAU,EACV,iBAAiB,EACjB,oCAAoC,EACpC,kCAAkC,EAClC,yBAAyB,EACzB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,yCAAyC,EACzC,mCAAmC,EACnC,+BAA+B,EAC/B,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,kCAAkC,EAClC,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,gCAAgC,EAChC,yBAAyB,EACzB,kCAAkC,EAClC,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,gCAAgC,EAChC,qBAAqB,EACrB,yBAAyB,EACzB,qCAAqC,EACrC,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,mBAAmB,EACnB,mCAAmC,EACnC,iBAAiB,EACjB,4BAA4B,EAC5B,qCAAqC,EACrC,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,mCAAmC,EACnC,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,iCAAiC,EACjC,6BAA6B,EAC7B,sCAAsC,EACtC,oCAAoC,EACpC,2BAA2B,EAC3B,yBAAyB,EACzB,gCAAgC,EAChC,oCAAoC,EACpC,iCAAiC,EACjC,kCAAkC,EAClC,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,gCAAgC,EAChC,yBAAyB,EACzB,kCAAkC,EAClC,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,gCAAgC,EAChC,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -37,8 +37,8 @@ export function createTransactionsHonoModule() {
|
|
|
37
37
|
export const transactionsHonoModule = createTransactionsHonoModule();
|
|
38
38
|
export { transactionsBookingExtension } from "./booking-extension.js";
|
|
39
39
|
export { buildTransactionsRouteRuntime, TRANSACTIONS_ROUTE_RUNTIME_CONTAINER_KEY, } from "./route-runtime.js";
|
|
40
|
-
export {
|
|
41
|
-
export { offerItemParticipants, offerItems, offerParticipants, offerStatusEnum, offers, orderItemParticipants, orderItems, orderParticipants, orderStatusEnum, orders, orderTermAcceptanceStatusEnum, orderTerms, orderTermTypeEnum, transactionItemParticipantRoleEnum, transactionItemStatusEnum, transactionItemTypeEnum, transactionParticipantTypeEnum, transactionPiiAccessActionEnum, transactionPiiAccessLog, transactionPiiAccessOutcomeEnum, transactionTravelerCategoryEnum, } from "./schema.js";
|
|
40
|
+
export { decryptedTransactionTravelerIdentitySchema, transactionTravelerIdentityEnvelopeSchema, transactionTravelerIdentitySchema, } from "./schema/participant-identity.js";
|
|
41
|
+
export { offerContactAssignments, offerItemParticipants, offerItems, offerParticipants, offerStaffAssignments, offerStatusEnum, offers, orderContactAssignments, orderItemParticipants, orderItems, orderParticipants, orderStaffAssignments, orderStatusEnum, orders, orderTermAcceptanceStatusEnum, orderTerms, orderTermTypeEnum, transactionContactAssignmentRoleEnum, transactionItemParticipantRoleEnum, transactionItemStatusEnum, transactionItemTypeEnum, transactionParticipantTypeEnum, transactionPiiAccessActionEnum, transactionPiiAccessLog, transactionPiiAccessOutcomeEnum, transactionStaffAssignmentRoleEnum, transactionTravelerCategoryEnum, } from "./schema.js";
|
|
42
42
|
export { createStorefrontPromotionalOffersResolver, getStorefrontPromotionalOfferBySlug, listStorefrontPromotionalOffers, storefrontOfferEnvelopeSchema, storefrontPromotionalOfferSchema, } from "./storefront-offers.js";
|
|
43
|
-
export {
|
|
43
|
+
export { insertOfferContactAssignmentSchema, insertOfferItemSchema, insertOfferItemTravelerSchema, insertOfferSchema, insertOfferStaffAssignmentSchema, insertOfferTravelerSchema, insertOrderContactAssignmentSchema, insertOrderItemSchema, insertOrderItemTravelerSchema, insertOrderSchema, insertOrderStaffAssignmentSchema, insertOrderTermSchema, insertOrderTravelerSchema, offerContactAssignmentListQuerySchema, offerItemListQuerySchema, offerItemTravelerListQuerySchema, offerListQuerySchema, offerMetadataSchema, offerStaffAssignmentListQuerySchema, offerStatusSchema, offerTravelerListQuerySchema, orderContactAssignmentListQuerySchema, orderItemListQuerySchema, orderItemTravelerListQuerySchema, orderListQuerySchema, orderStaffAssignmentListQuerySchema, orderStatusSchema, orderTermAcceptanceStatusSchema, orderTermListQuerySchema, orderTermTypeSchema, orderTravelerListQuerySchema, storefrontOfferDiscountTypeSchema, storefrontOfferMetadataSchema, transactionContactAssignmentRoleSchema, transactionItemParticipantRoleSchema, transactionItemStatusSchema, transactionItemTypeSchema, transactionParticipantTypeSchema, transactionStaffAssignmentRoleSchema, transactionTravelerCategorySchema, updateOfferContactAssignmentSchema, updateOfferItemSchema, updateOfferItemTravelerSchema, updateOfferSchema, updateOfferStaffAssignmentSchema, updateOfferTravelerSchema, updateOrderContactAssignmentSchema, updateOrderItemSchema, updateOrderItemTravelerSchema, updateOrderSchema, updateOrderStaffAssignmentSchema, updateOrderTermSchema, updateOrderTravelerSchema, } from "./validation.js";
|
|
44
44
|
export { transactionsService };
|
package/dist/pii.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { KeyRef, KmsProvider } from "@voyantjs/utils";
|
|
2
2
|
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
3
|
-
import { type
|
|
4
|
-
export interface
|
|
3
|
+
import { type DecryptedTransactionTravelerIdentity } from "./schema/participant-identity.js";
|
|
4
|
+
export interface UpsertTransactionTravelerIdentityInput {
|
|
5
5
|
dateOfBirth?: string | null;
|
|
6
6
|
nationality?: string | null;
|
|
7
7
|
}
|
|
8
|
+
export type UpsertTransactionParticipantIdentityInput = UpsertTransactionTravelerIdentityInput;
|
|
8
9
|
export interface TransactionPiiAuditEvent {
|
|
9
10
|
action: "read" | "update" | "delete";
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
travelerId: string;
|
|
12
|
+
travelerKind: "offer" | "order";
|
|
12
13
|
actorId?: string | null;
|
|
13
14
|
}
|
|
14
15
|
export interface TransactionPiiServiceOptions {
|
|
@@ -17,11 +18,17 @@ export interface TransactionPiiServiceOptions {
|
|
|
17
18
|
onAudit?: (event: TransactionPiiAuditEvent) => void | Promise<void>;
|
|
18
19
|
}
|
|
19
20
|
export declare function createTransactionPiiService(options: TransactionPiiServiceOptions): {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
getTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<DecryptedTransactionTravelerIdentity | null>;
|
|
22
|
+
upsertTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, input: UpsertTransactionTravelerIdentityInput, actorId?: string | null) => Promise<DecryptedTransactionTravelerIdentity | null>;
|
|
23
|
+
deleteTravelerIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<{
|
|
24
|
+
travelerId: string;
|
|
25
|
+
travelerKind: "offer" | "order";
|
|
26
|
+
} | null>;
|
|
27
|
+
getParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<DecryptedTransactionTravelerIdentity | null>;
|
|
28
|
+
upsertParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, input: UpsertTransactionTravelerIdentityInput, actorId?: string | null) => Promise<DecryptedTransactionTravelerIdentity | null>;
|
|
29
|
+
deleteParticipantIdentity: (db: PostgresJsDatabase, travelerKind: "offer" | "order", travelerId: string, actorId?: string | null) => Promise<{
|
|
30
|
+
travelerId: string;
|
|
31
|
+
travelerKind: "offer" | "order";
|
|
25
32
|
} | null>;
|
|
26
33
|
};
|
|
27
34
|
//# sourceMappingURL=pii.d.ts.map
|
package/dist/pii.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EACL,KAAK,oCAAoC,EAG1C,MAAM,kCAAkC,CAAA;AAQzC,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,MAAM,yCAAyC,GAAG,sCAAsC,CAAA;AAE9F,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpE;AA6DD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,4BAA4B;8BAIzE,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,YACR,MAAM,GAAG,IAAI,KACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC;iCA2BjD,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,SACX,sCAAsC,YACnC,MAAM,GAAG,IAAI,KACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC;iCA+BjD,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,YACR,MAAM,GAAG,IAAI;;;;iCAtEnB,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,YACR,MAAM,GAAG,IAAI,KACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC;oCA2BjD,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,SACX,sCAAsC,YACnC,MAAM,GAAG,IAAI,KACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC;oCA+BjD,kBAAkB,gBACR,OAAO,GAAG,OAAO,cACnB,MAAM,YACR,MAAM,GAAG,IAAI;;;;EA+B1B"}
|
package/dist/pii.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { decryptOptionalJsonEnvelope, encryptOptionalJsonEnvelope } from "@voyantjs/utils";
|
|
2
2
|
import { eq } from "drizzle-orm";
|
|
3
|
-
import {
|
|
3
|
+
import { decryptedTransactionTravelerIdentitySchema, transactionTravelerIdentitySchema, } from "./schema/participant-identity.js";
|
|
4
4
|
import { offerParticipants, orderParticipants, } from "./schema.js";
|
|
5
5
|
function buildIdentityPayload(input) {
|
|
6
|
-
const payload =
|
|
6
|
+
const payload = transactionTravelerIdentitySchema.parse({
|
|
7
7
|
dateOfBirth: input.dateOfBirth ?? null,
|
|
8
8
|
nationality: input.nationality ?? null,
|
|
9
9
|
});
|
|
@@ -18,89 +18,95 @@ function mergeIdentityInput(existing, input) {
|
|
|
18
18
|
nationality: input.nationality === undefined ? (existing?.nationality ?? null) : input.nationality,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
async function getOfferParticipant(db,
|
|
21
|
+
async function getOfferParticipant(db, travelerId) {
|
|
22
22
|
const [row] = await db
|
|
23
23
|
.select()
|
|
24
24
|
.from(offerParticipants)
|
|
25
|
-
.where(eq(offerParticipants.id,
|
|
25
|
+
.where(eq(offerParticipants.id, travelerId))
|
|
26
26
|
.limit(1);
|
|
27
27
|
return row ? { ...row, kind: "offer" } : null;
|
|
28
28
|
}
|
|
29
|
-
async function getOrderParticipant(db,
|
|
29
|
+
async function getOrderParticipant(db, travelerId) {
|
|
30
30
|
const [row] = await db
|
|
31
31
|
.select()
|
|
32
32
|
.from(orderParticipants)
|
|
33
|
-
.where(eq(orderParticipants.id,
|
|
33
|
+
.where(eq(orderParticipants.id, travelerId))
|
|
34
34
|
.limit(1);
|
|
35
35
|
return row ? { ...row, kind: "order" } : null;
|
|
36
36
|
}
|
|
37
|
-
async function findParticipant(db,
|
|
38
|
-
return
|
|
39
|
-
? getOfferParticipant(db,
|
|
40
|
-
: getOrderParticipant(db,
|
|
37
|
+
async function findParticipant(db, travelerKind, travelerId) {
|
|
38
|
+
return travelerKind === "offer"
|
|
39
|
+
? getOfferParticipant(db, travelerId)
|
|
40
|
+
: getOrderParticipant(db, travelerId);
|
|
41
41
|
}
|
|
42
42
|
export function createTransactionPiiService(options) {
|
|
43
43
|
const keyRef = options.keyRef ?? { keyType: "people" };
|
|
44
|
+
async function getTravelerIdentity(db, travelerKind, travelerId, actorId) {
|
|
45
|
+
const participant = await findParticipant(db, travelerKind, travelerId);
|
|
46
|
+
if (!participant) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const identity = await decryptOptionalJsonEnvelope(options.kms, keyRef, participant.identityEncrypted, transactionTravelerIdentitySchema);
|
|
50
|
+
const row = decryptedTransactionTravelerIdentitySchema.parse({
|
|
51
|
+
travelerId: participant.id,
|
|
52
|
+
travelerKind,
|
|
53
|
+
dateOfBirth: identity?.dateOfBirth ?? null,
|
|
54
|
+
nationality: identity?.nationality ?? null,
|
|
55
|
+
createdAt: participant.createdAt,
|
|
56
|
+
updatedAt: participant.updatedAt,
|
|
57
|
+
});
|
|
58
|
+
await options.onAudit?.({ action: "read", travelerId, travelerKind, actorId });
|
|
59
|
+
return row;
|
|
60
|
+
}
|
|
61
|
+
async function upsertTravelerIdentity(db, travelerKind, travelerId, input, actorId) {
|
|
62
|
+
const participant = await findParticipant(db, travelerKind, travelerId);
|
|
63
|
+
if (!participant) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const existing = await getTravelerIdentity(db, travelerKind, travelerId);
|
|
67
|
+
const merged = mergeIdentityInput(existing, input);
|
|
68
|
+
const identityEncrypted = await encryptOptionalJsonEnvelope(options.kms, keyRef, buildIdentityPayload(merged));
|
|
69
|
+
if (travelerKind === "offer") {
|
|
70
|
+
await db
|
|
71
|
+
.update(offerParticipants)
|
|
72
|
+
.set({ identityEncrypted, updatedAt: new Date() })
|
|
73
|
+
.where(eq(offerParticipants.id, travelerId));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
await db
|
|
77
|
+
.update(orderParticipants)
|
|
78
|
+
.set({ identityEncrypted, updatedAt: new Date() })
|
|
79
|
+
.where(eq(orderParticipants.id, travelerId));
|
|
80
|
+
}
|
|
81
|
+
await options.onAudit?.({ action: "update", travelerId, travelerKind, actorId });
|
|
82
|
+
return getTravelerIdentity(db, travelerKind, travelerId, actorId);
|
|
83
|
+
}
|
|
84
|
+
async function deleteTravelerIdentity(db, travelerKind, travelerId, actorId) {
|
|
85
|
+
const participant = await findParticipant(db, travelerKind, travelerId);
|
|
86
|
+
if (!participant) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
if (travelerKind === "offer") {
|
|
90
|
+
await db
|
|
91
|
+
.update(offerParticipants)
|
|
92
|
+
.set({ identityEncrypted: null, updatedAt: new Date() })
|
|
93
|
+
.where(eq(offerParticipants.id, travelerId));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
await db
|
|
97
|
+
.update(orderParticipants)
|
|
98
|
+
.set({ identityEncrypted: null, updatedAt: new Date() })
|
|
99
|
+
.where(eq(orderParticipants.id, travelerId));
|
|
100
|
+
}
|
|
101
|
+
await options.onAudit?.({ action: "delete", travelerId, travelerKind, actorId });
|
|
102
|
+
return { travelerId, travelerKind };
|
|
103
|
+
}
|
|
44
104
|
return {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const row = decryptedTransactionParticipantIdentitySchema.parse({
|
|
52
|
-
participantId: participant.id,
|
|
53
|
-
participantKind,
|
|
54
|
-
dateOfBirth: identity?.dateOfBirth ?? null,
|
|
55
|
-
nationality: identity?.nationality ?? null,
|
|
56
|
-
createdAt: participant.createdAt,
|
|
57
|
-
updatedAt: participant.updatedAt,
|
|
58
|
-
});
|
|
59
|
-
await options.onAudit?.({ action: "read", participantId, participantKind, actorId });
|
|
60
|
-
return row;
|
|
61
|
-
},
|
|
62
|
-
async upsertParticipantIdentity(db, participantKind, participantId, input, actorId) {
|
|
63
|
-
const participant = await findParticipant(db, participantKind, participantId);
|
|
64
|
-
if (!participant) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
const existing = await this.getParticipantIdentity(db, participantKind, participantId);
|
|
68
|
-
const merged = mergeIdentityInput(existing, input);
|
|
69
|
-
const identityEncrypted = await encryptOptionalJsonEnvelope(options.kms, keyRef, buildIdentityPayload(merged));
|
|
70
|
-
if (participantKind === "offer") {
|
|
71
|
-
await db
|
|
72
|
-
.update(offerParticipants)
|
|
73
|
-
.set({ identityEncrypted, updatedAt: new Date() })
|
|
74
|
-
.where(eq(offerParticipants.id, participantId));
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
await db
|
|
78
|
-
.update(orderParticipants)
|
|
79
|
-
.set({ identityEncrypted, updatedAt: new Date() })
|
|
80
|
-
.where(eq(orderParticipants.id, participantId));
|
|
81
|
-
}
|
|
82
|
-
await options.onAudit?.({ action: "update", participantId, participantKind, actorId });
|
|
83
|
-
return this.getParticipantIdentity(db, participantKind, participantId, actorId);
|
|
84
|
-
},
|
|
85
|
-
async deleteParticipantIdentity(db, participantKind, participantId, actorId) {
|
|
86
|
-
const participant = await findParticipant(db, participantKind, participantId);
|
|
87
|
-
if (!participant) {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
if (participantKind === "offer") {
|
|
91
|
-
await db
|
|
92
|
-
.update(offerParticipants)
|
|
93
|
-
.set({ identityEncrypted: null, updatedAt: new Date() })
|
|
94
|
-
.where(eq(offerParticipants.id, participantId));
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
await db
|
|
98
|
-
.update(orderParticipants)
|
|
99
|
-
.set({ identityEncrypted: null, updatedAt: new Date() })
|
|
100
|
-
.where(eq(orderParticipants.id, participantId));
|
|
101
|
-
}
|
|
102
|
-
await options.onAudit?.({ action: "delete", participantId, participantKind, actorId });
|
|
103
|
-
return { participantId, participantKind };
|
|
104
|
-
},
|
|
105
|
+
getTravelerIdentity,
|
|
106
|
+
upsertTravelerIdentity,
|
|
107
|
+
deleteTravelerIdentity,
|
|
108
|
+
getParticipantIdentity: getTravelerIdentity,
|
|
109
|
+
upsertParticipantIdentity: upsertTravelerIdentity,
|
|
110
|
+
deleteParticipantIdentity: deleteTravelerIdentity,
|
|
105
111
|
};
|
|
106
112
|
}
|