cmp-aws-database 2.4.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/config/table-names.d.ts +4 -0
  2. package/dist/config/table-names.js +5 -1
  3. package/dist/customer-user/add-ons/add-ons-model.d.ts +1 -0
  4. package/dist/customer-user/add-ons/add-ons-model.js +5 -1
  5. package/dist/customer-user/browse-history/browse-history-model.d.ts +1 -0
  6. package/dist/customer-user/browse-history/browse-history-model.js +5 -1
  7. package/dist/customer-user/cart/cart-model.d.ts +2 -1
  8. package/dist/customer-user/cart/cart-model.js +6 -2
  9. package/dist/customer-user/items-bundle/items-bundle-dao.d.ts +72 -0
  10. package/dist/customer-user/items-bundle/items-bundle-dao.js +117 -0
  11. package/dist/customer-user/items-bundle/items-bundle-model.d.ts +23 -0
  12. package/dist/customer-user/items-bundle/items-bundle-model.js +62 -0
  13. package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-dao.d.ts +118 -0
  14. package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-dao.js +200 -0
  15. package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-model.d.ts +64 -0
  16. package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-model.js +123 -0
  17. package/dist/customer-user/order-module/plate-order/plate-order-model.d.ts +9 -2
  18. package/dist/customer-user/order-module/plate-order/plate-order-model.js +29 -5
  19. package/dist/customer-user/order-module/tracking/tracking-model.d.ts +9 -0
  20. package/dist/customer-user/order-module/tracking/tracking-model.js +33 -2
  21. package/dist/customer-user/resume-journey/resume-journey-model.d.ts +7 -0
  22. package/dist/customer-user/resume-journey/resume-journey-model.js +25 -2
  23. package/package.json +1 -1
@@ -0,0 +1,118 @@
1
+ import { GenericDynamooseDAO } from "../../base-dynamoose-dao";
2
+ import { AuthContext } from "../../base-dynamoose-model";
3
+ import { CreateLsqPriorityUpdationInput, LsqPassedStr, LsqPriorityUpdation } from "./lsq-priority-updation-model";
4
+ type ListResult = {
5
+ items: LsqPriorityUpdation[];
6
+ nextToken?: string;
7
+ };
8
+ /**
9
+ * DAO for LeadSquared priority-updation queue.
10
+ *
11
+ * Table keys: `lsqPriorityUpdationId` (PK).
12
+ * Lookups:
13
+ * - `opportunityIdIndex` → by LeadSquared `opportunityId`
14
+ * - `passedStrIndex` → unprocessed queue (`passedStr` + `priorityRank`)
15
+ * Processed rows are deleted from the table (not soft-flagged).
16
+ */
17
+ declare class LsqPriorityUpdationDao extends GenericDynamooseDAO<LsqPriorityUpdation> {
18
+ constructor();
19
+ private nowIso;
20
+ private normalizeInput;
21
+ /**
22
+ * Creates / queues one opportunity for priority updation.
23
+ *
24
+ * Use when: LeadSquared webhook receives a new/updated opportunity.
25
+ * - `lsqPriorityUpdationId` auto-generates if omitted.
26
+ * - Auto-fills `passedStr` from `passed` (`false` → `"FALSE"`).
27
+ * - Auto-fills `priorityRank` from `priority` (P1→1 … P5→5).
28
+ * - Stamps `createdAt` / `updatedAt` as ISO timestamps when omitted.
29
+ *
30
+ * @example
31
+ * await lsqPriorityUpdationDao.save({
32
+ * opportunityId: "opp-123",
33
+ * passed: false,
34
+ * priority: "P1",
35
+ * urgency: "U2",
36
+ * value: "V3",
37
+ * eventDate: "2026-07-30",
38
+ * payload: { raw: "webhook-body" }
39
+ * });
40
+ */
41
+ save: (item: CreateLsqPriorityUpdationInput, authContext?: AuthContext) => Promise<LsqPriorityUpdation>;
42
+ /**
43
+ * Updates an existing queued record by `lsqPriorityUpdationId`.
44
+ *
45
+ * Use when: recalculating priority/urgency/value (e.g. midnight job) or
46
+ * refreshing webhook payload fields.
47
+ * - Re-syncs `passedStr` / `priorityRank` when `passed` / `priority` change.
48
+ * - Always refreshes `updatedAt`.
49
+ *
50
+ * @example
51
+ * await lsqPriorityUpdationDao.update("lsq-uuid", {
52
+ * priority: "P2",
53
+ * urgency: "U1",
54
+ * value: "V2"
55
+ * });
56
+ */
57
+ update: (lsqPriorityUpdationId: string, updates: Partial<LsqPriorityUpdation>, authContext?: AuthContext) => Promise<LsqPriorityUpdation>;
58
+ /**
59
+ * Fetches one queue record by table primary key.
60
+ *
61
+ * @example
62
+ * const row = await lsqPriorityUpdationDao.getById("lsq-uuid");
63
+ */
64
+ getById: (lsqPriorityUpdationId: string) => Promise<LsqPriorityUpdation | null>;
65
+ /**
66
+ * Fetches one queue record by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
67
+ *
68
+ * @example
69
+ * const row = await lsqPriorityUpdationDao.getByOpportunityId("opp-123");
70
+ */
71
+ getByOpportunityId: (opportunityId: string) => Promise<LsqPriorityUpdation | null>;
72
+ /**
73
+ * Lists queue records by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
74
+ *
75
+ * @example
76
+ * const { items } = await lsqPriorityUpdationDao.listByOpportunityId("opp-123");
77
+ */
78
+ listByOpportunityId: (opportunityId: string, limit?: number, token?: string) => Promise<ListResult>;
79
+ /**
80
+ * Lists queued (unprocessed) opportunities sorted by `priorityRank` ascending.
81
+ *
82
+ * Use when: worker pulls next batch of unassigned LSQ priority updates.
83
+ * Queries GSI `passedStrIndex` with `passedStr = "FALSE"`.
84
+ *
85
+ * @example
86
+ * const { items, nextToken } = await lsqPriorityUpdationDao.listUnprocessed(25);
87
+ */
88
+ listUnprocessed: (limit?: number, token?: string) => Promise<ListResult>;
89
+ /**
90
+ * Lists opportunities by `passedStr` (GSI `passedStrIndex`), sorted by `priorityRank`.
91
+ *
92
+ * @example
93
+ * const queued = await lsqPriorityUpdationDao.listByPassedStr("FALSE", 25);
94
+ */
95
+ listByPassedStr: (passedStr: LsqPassedStr, limit?: number, token?: string) => Promise<ListResult>;
96
+ /**
97
+ * Marks a queue row as processed by deleting it via primary key.
98
+ *
99
+ * Use when: worker successfully applied priority update in LeadSquared.
100
+ *
101
+ * @example
102
+ * await lsqPriorityUpdationDao.markProcessed("lsq-uuid");
103
+ */
104
+ markProcessed: (lsqPriorityUpdationId: string) => Promise<void>;
105
+ /**
106
+ * Marks processed by LeadSquared `opportunityId` (lookup GSI, then delete by PK).
107
+ *
108
+ * @example
109
+ * await lsqPriorityUpdationDao.markProcessedByOpportunityId("opp-123");
110
+ */
111
+ markProcessedByOpportunityId: (opportunityId: string) => Promise<boolean>;
112
+ /**
113
+ * Deletes one queue record by primary key.
114
+ */
115
+ deleteById: (lsqPriorityUpdationId: string) => Promise<void>;
116
+ }
117
+ export declare const lsqPriorityUpdationDao: LsqPriorityUpdationDao;
118
+ export {};
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.lsqPriorityUpdationDao = void 0;
7
+ const dynamoose_1 = __importDefault(require("dynamoose"));
8
+ const base_dynamoose_dao_1 = require("../../base-dynamoose-dao");
9
+ const lsq_priority_updation_model_1 = require("./lsq-priority-updation-model");
10
+ /**
11
+ * DAO for LeadSquared priority-updation queue.
12
+ *
13
+ * Table keys: `lsqPriorityUpdationId` (PK).
14
+ * Lookups:
15
+ * - `opportunityIdIndex` → by LeadSquared `opportunityId`
16
+ * - `passedStrIndex` → unprocessed queue (`passedStr` + `priorityRank`)
17
+ * Processed rows are deleted from the table (not soft-flagged).
18
+ */
19
+ class LsqPriorityUpdationDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
20
+ constructor() {
21
+ super(lsq_priority_updation_model_1.LsqPriorityUpdationModel, "lsqPriorityUpdationId");
22
+ this.nowIso = () => new Date().toISOString();
23
+ this.normalizeInput = (item, existingCreatedAt) => {
24
+ const now = this.nowIso();
25
+ const passed = item.passed ?? false;
26
+ const priority = item.priority;
27
+ return {
28
+ ...item,
29
+ passed,
30
+ passedStr: item.passedStr ?? (0, lsq_priority_updation_model_1.toPassedStr)(passed),
31
+ priorityRank: item.priorityRank ?? (0, lsq_priority_updation_model_1.toPriorityRank)(priority),
32
+ createdAt: item.createdAt ?? existingCreatedAt ?? now,
33
+ updatedAt: item.updatedAt ?? now
34
+ };
35
+ };
36
+ /**
37
+ * Creates / queues one opportunity for priority updation.
38
+ *
39
+ * Use when: LeadSquared webhook receives a new/updated opportunity.
40
+ * - `lsqPriorityUpdationId` auto-generates if omitted.
41
+ * - Auto-fills `passedStr` from `passed` (`false` → `"FALSE"`).
42
+ * - Auto-fills `priorityRank` from `priority` (P1→1 … P5→5).
43
+ * - Stamps `createdAt` / `updatedAt` as ISO timestamps when omitted.
44
+ *
45
+ * @example
46
+ * await lsqPriorityUpdationDao.save({
47
+ * opportunityId: "opp-123",
48
+ * passed: false,
49
+ * priority: "P1",
50
+ * urgency: "U2",
51
+ * value: "V3",
52
+ * eventDate: "2026-07-30",
53
+ * payload: { raw: "webhook-body" }
54
+ * });
55
+ */
56
+ this.save = async (item, authContext) => {
57
+ return super.save(this.normalizeInput(item), authContext);
58
+ };
59
+ /**
60
+ * Updates an existing queued record by `lsqPriorityUpdationId`.
61
+ *
62
+ * Use when: recalculating priority/urgency/value (e.g. midnight job) or
63
+ * refreshing webhook payload fields.
64
+ * - Re-syncs `passedStr` / `priorityRank` when `passed` / `priority` change.
65
+ * - Always refreshes `updatedAt`.
66
+ *
67
+ * @example
68
+ * await lsqPriorityUpdationDao.update("lsq-uuid", {
69
+ * priority: "P2",
70
+ * urgency: "U1",
71
+ * value: "V2"
72
+ * });
73
+ */
74
+ this.update = async (lsqPriorityUpdationId, updates, authContext) => {
75
+ const nextUpdates = {
76
+ ...updates,
77
+ updatedAt: updates.updatedAt ?? this.nowIso(),
78
+ updated_time: new Date(),
79
+ updated_user: authContext?.userSub
80
+ };
81
+ if (typeof updates.passed === "boolean") {
82
+ nextUpdates.passedStr = updates.passedStr ?? (0, lsq_priority_updation_model_1.toPassedStr)(updates.passed);
83
+ }
84
+ if (updates.priority) {
85
+ nextUpdates.priorityRank = updates.priorityRank ?? (0, lsq_priority_updation_model_1.toPriorityRank)(updates.priority);
86
+ }
87
+ const updated = await lsq_priority_updation_model_1.LsqPriorityUpdationModel.update({ lsqPriorityUpdationId }, nextUpdates, {
88
+ condition: new dynamoose_1.default.Condition().attribute("lsqPriorityUpdationId").exists()
89
+ });
90
+ return updated;
91
+ };
92
+ /**
93
+ * Fetches one queue record by table primary key.
94
+ *
95
+ * @example
96
+ * const row = await lsqPriorityUpdationDao.getById("lsq-uuid");
97
+ */
98
+ this.getById = async (lsqPriorityUpdationId) => this.get(lsqPriorityUpdationId);
99
+ /**
100
+ * Fetches one queue record by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
101
+ *
102
+ * @example
103
+ * const row = await lsqPriorityUpdationDao.getByOpportunityId("opp-123");
104
+ */
105
+ this.getByOpportunityId = async (opportunityId) => {
106
+ const result = await this.listByOpportunityId(opportunityId, 1);
107
+ return result.items[0] ?? null;
108
+ };
109
+ /**
110
+ * Lists queue records by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
111
+ *
112
+ * @example
113
+ * const { items } = await lsqPriorityUpdationDao.listByOpportunityId("opp-123");
114
+ */
115
+ this.listByOpportunityId = async (opportunityId, limit, token) => {
116
+ const decodedToken = this.decode(token);
117
+ let queryBuilder = lsq_priority_updation_model_1.LsqPriorityUpdationModel.query("opportunityId")
118
+ .eq(opportunityId)
119
+ .using("opportunityIdIndex");
120
+ if (decodedToken) {
121
+ queryBuilder = queryBuilder.startAt(decodedToken);
122
+ }
123
+ if (typeof limit === "number") {
124
+ queryBuilder = queryBuilder.limit(limit);
125
+ }
126
+ const queryResult = await queryBuilder.exec();
127
+ return {
128
+ items: queryResult,
129
+ nextToken: await this.encode(queryResult.lastKey)
130
+ };
131
+ };
132
+ /**
133
+ * Lists queued (unprocessed) opportunities sorted by `priorityRank` ascending.
134
+ *
135
+ * Use when: worker pulls next batch of unassigned LSQ priority updates.
136
+ * Queries GSI `passedStrIndex` with `passedStr = "FALSE"`.
137
+ *
138
+ * @example
139
+ * const { items, nextToken } = await lsqPriorityUpdationDao.listUnprocessed(25);
140
+ */
141
+ this.listUnprocessed = async (limit, token) => this.listByPassedStr(lsq_priority_updation_model_1.LSQ_PASSED_STR.FALSE, limit, token);
142
+ /**
143
+ * Lists opportunities by `passedStr` (GSI `passedStrIndex`), sorted by `priorityRank`.
144
+ *
145
+ * @example
146
+ * const queued = await lsqPriorityUpdationDao.listByPassedStr("FALSE", 25);
147
+ */
148
+ this.listByPassedStr = async (passedStr, limit, token) => {
149
+ const decodedToken = this.decode(token);
150
+ let queryBuilder = lsq_priority_updation_model_1.LsqPriorityUpdationModel.query("passedStr")
151
+ .eq(passedStr)
152
+ .using("passedStrIndex")
153
+ .sort("ascending");
154
+ if (decodedToken) {
155
+ queryBuilder = queryBuilder.startAt(decodedToken);
156
+ }
157
+ if (typeof limit === "number") {
158
+ queryBuilder = queryBuilder.limit(limit);
159
+ }
160
+ const queryResult = await queryBuilder.exec();
161
+ return {
162
+ items: queryResult,
163
+ nextToken: await this.encode(queryResult.lastKey)
164
+ };
165
+ };
166
+ /**
167
+ * Marks a queue row as processed by deleting it via primary key.
168
+ *
169
+ * Use when: worker successfully applied priority update in LeadSquared.
170
+ *
171
+ * @example
172
+ * await lsqPriorityUpdationDao.markProcessed("lsq-uuid");
173
+ */
174
+ this.markProcessed = async (lsqPriorityUpdationId) => {
175
+ await this.delete(lsqPriorityUpdationId);
176
+ };
177
+ /**
178
+ * Marks processed by LeadSquared `opportunityId` (lookup GSI, then delete by PK).
179
+ *
180
+ * @example
181
+ * await lsqPriorityUpdationDao.markProcessedByOpportunityId("opp-123");
182
+ */
183
+ this.markProcessedByOpportunityId = async (opportunityId) => {
184
+ const row = await this.getByOpportunityId(opportunityId);
185
+ if (!row) {
186
+ return false;
187
+ }
188
+ await this.delete(row.lsqPriorityUpdationId);
189
+ return true;
190
+ };
191
+ /**
192
+ * Deletes one queue record by primary key.
193
+ */
194
+ this.deleteById = async (lsqPriorityUpdationId) => {
195
+ await this.delete(lsqPriorityUpdationId);
196
+ };
197
+ }
198
+ }
199
+ exports.lsqPriorityUpdationDao = new LsqPriorityUpdationDao();
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHNxLXByaW9yaXR5LXVwZGF0aW9uLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL2xzcS1wcmlvcml0eS11cGRhdGlvbi9sc3EtcHJpb3JpdHktdXBkYXRpb24tZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUFrQztBQUNsQyxpRUFBMEU7QUFFMUUsK0VBU3VDO0FBT3ZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxzQkFBdUIsU0FBUSx3Q0FBd0M7SUFDekU7UUFDSSxLQUFLLENBQUMsc0RBQXdCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUdyRCxXQUFNLEdBQUcsR0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLENBQ3JCLElBQW9DLEVBQ3BDLGlCQUEwQixFQUNQLEVBQUU7WUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUF1QixDQUFDO1lBRTlDLE9BQU87Z0JBQ0gsR0FBRyxJQUFJO2dCQUNQLE1BQU07Z0JBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBQSx5Q0FBVyxFQUFDLE1BQU0sQ0FBQztnQkFDaEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBQSw0Q0FBYyxFQUFDLFFBQVEsQ0FBQztnQkFDM0QsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksaUJBQWlCLElBQUksR0FBRztnQkFDckQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRzthQUNaLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FtQkc7UUFDSCxT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QyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUVGOzs7OztXQUtHO1FBQ0gsaUNBQTRCLEdBQUcsS0FBSyxFQUFFLGFBQXFCLEVBQW9CLEVBQUU7WUFDN0UsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDSCxlQUFVLEdBQUcsS0FBSyxFQUFFLHFCQUE2QixFQUFpQixFQUFFO1lBQ2hFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztJQXRORixDQUFDO0NBdU5KO0FBRVksUUFBQSxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHluYW1vb3NlIGZyb20gXCJkeW5hbW9vc2VcIjtcbmltcG9ydCB7IER5bmFtb0tleSwgR2VuZXJpY0R5bmFtb29zZURBTyB9IGZyb20gXCIuLi8uLi9iYXNlLWR5bmFtb29zZS1kYW9cIjtcbmltcG9ydCB7IEF1dGhDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLW1vZGVsXCI7XG5pbXBvcnQge1xuICAgIENyZWF0ZUxzcVByaW9yaXR5VXBkYXRpb25JbnB1dCxcbiAgICBMU1FfUEFTU0VEX1NUUixcbiAgICBMc3FQYXNzZWRTdHIsXG4gICAgTHNxUHJpb3JpdHksXG4gICAgTHNxUHJpb3JpdHlVcGRhdGlvbixcbiAgICBMc3FQcmlvcml0eVVwZGF0aW9uTW9kZWwsXG4gICAgdG9QYXNzZWRTdHIsXG4gICAgdG9Qcmlvcml0eVJhbmtcbn0gZnJvbSBcIi4vbHNxLXByaW9yaXR5LXVwZGF0aW9uLW1vZGVsXCI7XG5cbnR5cGUgTGlzdFJlc3VsdCA9IHtcbiAgICBpdGVtczogTHNxUHJpb3JpdHlVcGRhdGlvbltdO1xuICAgIG5leHRUb2tlbj86IHN0cmluZztcbn07XG5cbi8qKlxuICogREFPIGZvciBMZWFkU3F1YXJlZCBwcmlvcml0eS11cGRhdGlvbiBxdWV1ZS5cbiAqXG4gKiBUYWJsZSBrZXlzOiBgbHNxUHJpb3JpdHlVcGRhdGlvbklkYCAoUEspLlxuICogTG9va3VwczpcbiAqIC0gYG9wcG9ydHVuaXR5SWRJbmRleGAg4oaSIGJ5IExlYWRTcXVhcmVkIGBvcHBvcnR1bml0eUlkYFxuICogLSBgcGFzc2VkU3RySW5kZXhgIOKGkiB1bnByb2Nlc3NlZCBxdWV1ZSAoYHBhc3NlZFN0cmAgKyBgcHJpb3JpdHlSYW5rYClcbiAqIFByb2Nlc3NlZCByb3dzIGFyZSBkZWxldGVkIGZyb20gdGhlIHRhYmxlIChub3Qgc29mdC1mbGFnZ2VkKS5cbiAqL1xuY2xhc3MgTHNxUHJpb3JpdHlVcGRhdGlvbkRhbyBleHRlbmRzIEdlbmVyaWNEeW5hbW9vc2VEQU88THNxUHJpb3JpdHlVcGRhdGlvbj4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihMc3FQcmlvcml0eVVwZGF0aW9uTW9kZWwsIFwibHNxUHJpb3JpdHlVcGRhdGlvbklkXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm93SXNvID0gKCk6IHN0cmluZyA9PiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUlucHV0ID0gKFxuICAgICAgICBpdGVtOiBDcmVhdGVMc3FQcmlvcml0eVVwZGF0aW9uSW5wdXQsXG4gICAgICAgIGV4aXN0aW5nQ3JlYXRlZEF0Pzogc3RyaW5nXG4gICAgKTogTHNxUHJpb3JpdHlVcGRhdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IHRoaXMubm93SXNvKCk7XG4gICAgICAgIGNvbnN0IHBhc3NlZCA9IGl0ZW0ucGFzc2VkID8/IGZhbHNlO1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IGl0ZW0ucHJpb3JpdHkgYXMgTHNxUHJpb3JpdHk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBwYXNzZWQsXG4gICAgICAgICAgICBwYXNzZWRTdHI6IGl0ZW0ucGFzc2VkU3RyID8/IHRvUGFzc2VkU3RyKHBhc3NlZCksXG4gICAgICAgICAgICBwcmlvcml0eVJhbms6IGl0ZW0ucHJpb3JpdHlSYW5rID8/IHRvUHJpb3JpdHlSYW5rKHByaW9yaXR5KSxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogaXRlbS5jcmVhdGVkQXQgPz8gZXhpc3RpbmdDcmVhdGVkQXQgPz8gbm93LFxuICAgICAgICAgICAgdXBkYXRlZEF0OiBpdGVtLnVwZGF0ZWRBdCA/PyBub3dcbiAgICAgICAgfSBhcyBMc3FQcmlvcml0eVVwZGF0aW9uO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIC8gcXVldWVzIG9uZSBvcHBvcnR1bml0eSBmb3IgcHJpb3JpdHkgdXBkYXRpb24uXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogTGVhZFNxdWFyZWQgd2ViaG9vayByZWNlaXZlcyBhIG5ldy91cGRhdGVkIG9wcG9ydHVuaXR5LlxuICAgICAqIC0gYGxzcVByaW9yaXR5VXBkYXRpb25JZGAgYXV0by1nZW5lcmF0ZXMgaWYgb21pdHRlZC5cbiAgICAgKiAtIEF1dG8tZmlsbHMgYHBhc3NlZFN0cmAgZnJvbSBgcGFzc2VkYCAoYGZhbHNlYCDihpIgYFwiRkFMU0VcImApLlxuICAgICAqIC0gQXV0by1maWxscyBgcHJpb3JpdHlSYW5rYCBmcm9tIGBwcmlvcml0eWAgKFAx4oaSMSDigKYgUDXihpI1KS5cbiAgICAgKiAtIFN0YW1wcyBgY3JlYXRlZEF0YCAvIGB1cGRhdGVkQXRgIGFzIElTTyB0aW1lc3RhbXBzIHdoZW4gb21pdHRlZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYXdhaXQgbHNxUHJpb3JpdHlVcGRhdGlvbkRhby5zYXZlKHtcbiAgICAgKiAgICAgb3Bwb3J0dW5pdHlJZDogXCJvcHAtMTIzXCIsXG4gICAgICogICAgIHBhc3NlZDogZmFsc2UsXG4gICAgICogICAgIHByaW9yaXR5OiBcIlAxXCIsXG4gICAgICogICAgIHVyZ2VuY3k6IFwiVTJcIixcbiAgICAgKiAgICAgdmFsdWU6IFwiVjNcIixcbiAgICAgKiAgICAgZXZlbnREYXRlOiBcIjIwMjYtMDctMzBcIixcbiAgICAgKiAgICAgcGF5bG9hZDogeyByYXc6IFwid2ViaG9vay1ib2R5XCIgfVxuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHNhdmUgPSBhc3luYyAoXG4gICAgICAgIGl0ZW06IENyZWF0ZUxzcVByaW9yaXR5VXBkYXRpb25JbnB1dCxcbiAgICAgICAgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dFxuICAgICk6IFByb21pc2U8THNxUHJpb3JpdHlVcGRhdGlvbj4gPT4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuc2F2ZSh0aGlzLm5vcm1hbGl6ZUlucHV0KGl0ZW0pLCBhdXRoQ29udGV4dCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgcXVldWVkIHJlY29yZCBieSBgbHNxUHJpb3JpdHlVcGRhdGlvbklkYC5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuOiByZWNhbGN1bGF0aW5nIHByaW9yaXR5L3VyZ2VuY3kvdmFsdWUgKGUuZy4gbWlkbmlnaHQgam9iKSBvclxuICAgICAqIHJlZnJlc2hpbmcgd2ViaG9vayBwYXlsb2FkIGZpZWxkcy5cbiAgICAgKiAtIFJlLXN5bmNzIGBwYXNzZWRTdHJgIC8gYHByaW9yaXR5UmFua2Agd2hlbiBgcGFzc2VkYCAvIGBwcmlvcml0eWAgY2hhbmdlLlxuICAgICAqIC0gQWx3YXlzIHJlZnJlc2hlcyBgdXBkYXRlZEF0YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYXdhaXQgbHNxUHJpb3JpdHlVcGRhdGlvbkRhby51cGRhdGUoXCJsc3EtdXVpZFwiLCB7XG4gICAgICogICAgIHByaW9yaXR5OiBcIlAyXCIsXG4gICAgICogICAgIHVyZ2VuY3k6IFwiVTFcIixcbiAgICAgKiAgICAgdmFsdWU6IFwiVjJcIlxuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHVwZGF0ZSA9IGFzeW5jIChcbiAgICAgICAgbHNxUHJpb3JpdHlVcGRhdGlvbklkOiBzdHJpbmcsXG4gICAgICAgIHVwZGF0ZXM6IFBhcnRpYWw8THNxUHJpb3JpdHlVcGRhdGlvbj4sXG4gICAgICAgIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHRcbiAgICApOiBQcm9taXNlPExzcVByaW9yaXR5VXBkYXRpb24+ID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFVwZGF0ZXM6IFBhcnRpYWw8THNxUHJpb3JpdHlVcGRhdGlvbj4gPSB7XG4gICAgICAgICAgICAuLi51cGRhdGVzLFxuICAgICAgICAgICAgdXBkYXRlZEF0OiB1cGRhdGVzLnVwZGF0ZWRBdCA/PyB0aGlzLm5vd0lzbygpLFxuICAgICAgICAgICAgdXBkYXRlZF90aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlcy5wYXNzZWQgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICBuZXh0VXBkYXRlcy5wYXNzZWRTdHIgPSB1cGRhdGVzLnBhc3NlZFN0ciA/PyB0b1Bhc3NlZFN0cih1cGRhdGVzLnBhc3NlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZXMucHJpb3JpdHkpIHtcbiAgICAgICAgICAgIG5leHRVcGRhdGVzLnByaW9yaXR5UmFuayA9IHVwZGF0ZXMucHJpb3JpdHlSYW5rID8/IHRvUHJpb3JpdHlSYW5rKHVwZGF0ZXMucHJpb3JpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IExzcVByaW9yaXR5VXBkYXRpb25Nb2RlbC51cGRhdGUoXG4gICAgICAgICAgICB7IGxzcVByaW9yaXR5VXBkYXRpb25JZCB9LFxuICAgICAgICAgICAgbmV4dFVwZGF0ZXMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBuZXcgZHluYW1vb3NlLkNvbmRpdGlvbigpLmF0dHJpYnV0ZShcImxzcVByaW9yaXR5VXBkYXRpb25JZFwiKS5leGlzdHMoKVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdXBkYXRlZCBhcyB1bmtub3duIGFzIExzcVByaW9yaXR5VXBkYXRpb247XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgb25lIHF1ZXVlIHJlY29yZCBieSB0YWJsZSBwcmltYXJ5IGtleS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm93ID0gYXdhaXQgbHNxUHJpb3JpdHlVcGRhdGlvbkRhby5nZXRCeUlkKFwibHNxLXV1aWRcIik7XG4gICAgICovXG4gICAgZ2V0QnlJZCA9IGFzeW5jIChsc3FQcmlvcml0eVVwZGF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8THNxUHJpb3JpdHlVcGRhdGlvbiB8IG51bGw+ID0+XG4gICAgICAgIHRoaXMuZ2V0KGxzcVByaW9yaXR5VXBkYXRpb25JZCk7XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIG9uZSBxdWV1ZSByZWNvcmQgYnkgTGVhZFNxdWFyZWQgYG9wcG9ydHVuaXR5SWRgIChHU0kgYG9wcG9ydHVuaXR5SWRJbmRleGApLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb3cgPSBhd2FpdCBsc3FQcmlvcml0eVVwZGF0aW9uRGFvLmdldEJ5T3Bwb3J0dW5pdHlJZChcIm9wcC0xMjNcIik7XG4gICAgICovXG4gICAgZ2V0QnlPcHBvcnR1bml0eUlkID0gYXN5bmMgKG9wcG9ydHVuaXR5SWQ6IHN0cmluZyk6IFByb21pc2U8THNxUHJpb3JpdHlVcGRhdGlvbiB8IG51bGw+ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5saXN0QnlPcHBvcnR1bml0eUlkKG9wcG9ydHVuaXR5SWQsIDEpO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zWzBdID8/IG51bGw7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIExpc3RzIHF1ZXVlIHJlY29yZHMgYnkgTGVhZFNxdWFyZWQgYG9wcG9ydHVuaXR5SWRgIChHU0kgYG9wcG9ydHVuaXR5SWRJbmRleGApLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCB7IGl0ZW1zIH0gPSBhd2FpdCBsc3FQcmlvcml0eVVwZGF0aW9uRGFvLmxpc3RCeU9wcG9ydHVuaXR5SWQoXCJvcHAtMTIzXCIpO1xuICAgICAqL1xuICAgIGxpc3RCeU9wcG9ydHVuaXR5SWQgPSBhc3luYyAoXG4gICAgICAgIG9wcG9ydHVuaXR5SWQ6IHN0cmluZyxcbiAgICAgICAgbGltaXQ/OiBudW1iZXIsXG4gICAgICAgIHRva2VuPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IExzcVByaW9yaXR5VXBkYXRpb25Nb2RlbC5xdWVyeShcIm9wcG9ydHVuaXR5SWRcIilcbiAgICAgICAgICAgIC5lcShvcHBvcnR1bml0eUlkKVxuICAgICAgICAgICAgLnVzaW5nKFwib3Bwb3J0dW5pdHlJZEluZGV4XCIpO1xuICAgICAgICBpZiAoZGVjb2RlZFRva2VuKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIuc3RhcnRBdChkZWNvZGVkVG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHF1ZXJ5UmVzdWx0IGFzIHVua25vd24gYXMgTHNxUHJpb3JpdHlVcGRhdGlvbltdLFxuICAgICAgICAgICAgbmV4dFRva2VuOiBhd2FpdCB0aGlzLmVuY29kZShxdWVyeVJlc3VsdC5sYXN0S2V5IGFzIER5bmFtb0tleSB8IHVuZGVmaW5lZClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTGlzdHMgcXVldWVkICh1bnByb2Nlc3NlZCkgb3Bwb3J0dW5pdGllcyBzb3J0ZWQgYnkgYHByaW9yaXR5UmFua2AgYXNjZW5kaW5nLlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IHdvcmtlciBwdWxscyBuZXh0IGJhdGNoIG9mIHVuYXNzaWduZWQgTFNRIHByaW9yaXR5IHVwZGF0ZXMuXG4gICAgICogUXVlcmllcyBHU0kgYHBhc3NlZFN0ckluZGV4YCB3aXRoIGBwYXNzZWRTdHIgPSBcIkZBTFNFXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCB7IGl0ZW1zLCBuZXh0VG9rZW4gfSA9IGF3YWl0IGxzcVByaW9yaXR5VXBkYXRpb25EYW8ubGlzdFVucHJvY2Vzc2VkKDI1KTtcbiAgICAgKi9cbiAgICBsaXN0VW5wcm9jZXNzZWQgPSBhc3luYyAobGltaXQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PlxuICAgICAgICB0aGlzLmxpc3RCeVBhc3NlZFN0cihMU1FfUEFTU0VEX1NUUi5GQUxTRSwgbGltaXQsIHRva2VuKTtcblxuICAgIC8qKlxuICAgICAqIExpc3RzIG9wcG9ydHVuaXRpZXMgYnkgYHBhc3NlZFN0cmAgKEdTSSBgcGFzc2VkU3RySW5kZXhgKSwgc29ydGVkIGJ5IGBwcmlvcml0eVJhbmtgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBxdWV1ZWQgPSBhd2FpdCBsc3FQcmlvcml0eVVwZGF0aW9uRGFvLmxpc3RCeVBhc3NlZFN0cihcIkZBTFNFXCIsIDI1KTtcbiAgICAgKi9cbiAgICBsaXN0QnlQYXNzZWRTdHIgPSBhc3luYyAoXG4gICAgICAgIHBhc3NlZFN0cjogTHNxUGFzc2VkU3RyLFxuICAgICAgICBsaW1pdD86IG51bWJlcixcbiAgICAgICAgdG9rZW4/OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPExpc3RSZXN1bHQ+ID0+IHtcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gdGhpcy5kZWNvZGUodG9rZW4pO1xuICAgICAgICBsZXQgcXVlcnlCdWlsZGVyID0gTHNxUHJpb3JpdHlVcGRhdGlvbk1vZGVsLnF1ZXJ5KFwicGFzc2VkU3RyXCIpXG4gICAgICAgICAgICAuZXEocGFzc2VkU3RyKVxuICAgICAgICAgICAgLnVzaW5nKFwicGFzc2VkU3RySW5kZXhcIilcbiAgICAgICAgICAgIC5zb3J0KFwiYXNjZW5kaW5nXCIpO1xuICAgICAgICBpZiAoZGVjb2RlZFRva2VuKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIuc3RhcnRBdChkZWNvZGVkVG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHF1ZXJ5UmVzdWx0IGFzIHVua25vd24gYXMgTHNxUHJpb3JpdHlVcGRhdGlvbltdLFxuICAgICAgICAgICAgbmV4dFRva2VuOiBhd2FpdCB0aGlzLmVuY29kZShxdWVyeVJlc3VsdC5sYXN0S2V5IGFzIER5bmFtb0tleSB8IHVuZGVmaW5lZClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogTWFya3MgYSBxdWV1ZSByb3cgYXMgcHJvY2Vzc2VkIGJ5IGRlbGV0aW5nIGl0IHZpYSBwcmltYXJ5IGtleS5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuOiB3b3JrZXIgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQgcHJpb3JpdHkgdXBkYXRlIGluIExlYWRTcXVhcmVkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBsc3FQcmlvcml0eVVwZGF0aW9uRGFvLm1hcmtQcm9jZXNzZWQoXCJsc3EtdXVpZFwiKTtcbiAgICAgKi9cbiAgICBtYXJrUHJvY2Vzc2VkID0gYXN5bmMgKGxzcVByaW9yaXR5VXBkYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlKGxzcVByaW9yaXR5VXBkYXRpb25JZCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHByb2Nlc3NlZCBieSBMZWFkU3F1YXJlZCBgb3Bwb3J0dW5pdHlJZGAgKGxvb2t1cCBHU0ksIHRoZW4gZGVsZXRlIGJ5IFBLKS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYXdhaXQgbHNxUHJpb3JpdHlVcGRhdGlvbkRhby5tYXJrUHJvY2Vzc2VkQnlPcHBvcnR1bml0eUlkKFwib3BwLTEyM1wiKTtcbiAgICAgKi9cbiAgICBtYXJrUHJvY2Vzc2VkQnlPcHBvcnR1bml0eUlkID0gYXN5bmMgKG9wcG9ydHVuaXR5SWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICBjb25zdCByb3cgPSBhd2FpdCB0aGlzLmdldEJ5T3Bwb3J0dW5pdHlJZChvcHBvcnR1bml0eUlkKTtcbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZShyb3cubHNxUHJpb3JpdHlVcGRhdGlvbklkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgb25lIHF1ZXVlIHJlY29yZCBieSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBkZWxldGVCeUlkID0gYXN5bmMgKGxzcVByaW9yaXR5VXBkYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlKGxzcVByaW9yaXR5VXBkYXRpb25JZCk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGxzcVByaW9yaXR5VXBkYXRpb25EYW8gPSBuZXcgTHNxUHJpb3JpdHlVcGRhdGlvbkRhbygpO1xuIl19
@@ -0,0 +1,64 @@
1
+ import { BaseDynamooseModel } from "../../base-dynamoose-model";
2
+ export declare const LSQ_PRIORITY: {
3
+ readonly P1: "P1";
4
+ readonly P2: "P2";
5
+ readonly P3: "P3";
6
+ readonly P4: "P4";
7
+ readonly P5: "P5";
8
+ };
9
+ export type LsqPriority = (typeof LSQ_PRIORITY)[keyof typeof LSQ_PRIORITY];
10
+ export declare const LSQ_PRIORITY_RANK: Record<LsqPriority, number>;
11
+ export declare const LSQ_URGENCY: {
12
+ readonly U1: "U1";
13
+ readonly U2: "U2";
14
+ readonly U3: "U3";
15
+ readonly U4: "U4";
16
+ };
17
+ export type LsqUrgency = (typeof LSQ_URGENCY)[keyof typeof LSQ_URGENCY];
18
+ export declare const LSQ_VALUE: {
19
+ readonly V1: "V1";
20
+ readonly V2: "V2";
21
+ readonly V3: "V3";
22
+ readonly V4: "V4";
23
+ readonly V5: "V5";
24
+ };
25
+ export type LsqValue = (typeof LSQ_VALUE)[keyof typeof LSQ_VALUE];
26
+ /** GSI partition values for `passedStrIndex`. */
27
+ export declare const LSQ_PASSED_STR: {
28
+ readonly FALSE: "FALSE";
29
+ readonly TRUE: "TRUE";
30
+ };
31
+ export type LsqPassedStr = (typeof LSQ_PASSED_STR)[keyof typeof LSQ_PASSED_STR];
32
+ export interface LsqPriorityUpdation extends BaseDynamooseModel {
33
+ /** Table unique id (PK). */
34
+ lsqPriorityUpdationId: string;
35
+ /** LeadSquared opportunity id (GSI `opportunityIdIndex`). */
36
+ opportunityId: string;
37
+ passed: boolean;
38
+ /** Indexed mirror of `passed` — `"FALSE"` when queued/unassigned. */
39
+ passedStr: LsqPassedStr;
40
+ priority: LsqPriority;
41
+ /** Numeric sort score for GSI: P1→1 … P5→5. */
42
+ priorityRank: number;
43
+ urgency: LsqUrgency;
44
+ value: LsqValue;
45
+ /** ISO date `YYYY-MM-DD` for midnight recalculation. */
46
+ eventDate: string;
47
+ /** ISO timestamp when webhook first received the opportunity. */
48
+ createdAt: string;
49
+ /** ISO timestamp when record was last updated. */
50
+ updatedAt: string;
51
+ /** Optional raw webhook payload. */
52
+ payload?: Record<string, unknown>;
53
+ }
54
+ export type CreateLsqPriorityUpdationInput = Omit<LsqPriorityUpdation, "lsqPriorityUpdationId" | "passedStr" | "priorityRank" | "createdAt" | "updatedAt"> & {
55
+ lsqPriorityUpdationId?: string;
56
+ passedStr?: LsqPassedStr;
57
+ priorityRank?: number;
58
+ createdAt?: string;
59
+ updatedAt?: string;
60
+ };
61
+ export declare const toPassedStr: (passed: boolean) => LsqPassedStr;
62
+ export declare const toPriorityRank: (priority: LsqPriority) => number;
63
+ export declare const LsqPriorityUpdationModel: import("dynamoose/dist/General").ModelType<LsqPriorityUpdation>;
64
+ export declare const convertToLsqPriorityUpdationModel: (input: CreateLsqPriorityUpdationInput | LsqPriorityUpdation) => LsqPriorityUpdation;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertToLsqPriorityUpdationModel = exports.LsqPriorityUpdationModel = exports.toPriorityRank = exports.toPassedStr = exports.LSQ_PASSED_STR = exports.LSQ_VALUE = exports.LSQ_URGENCY = exports.LSQ_PRIORITY_RANK = exports.LSQ_PRIORITY = void 0;
7
+ const dynamoose_1 = __importDefault(require("dynamoose"));
8
+ const crypto_1 = require("crypto");
9
+ const table_names_1 = require("../../config/table-names");
10
+ exports.LSQ_PRIORITY = {
11
+ P1: "P1",
12
+ P2: "P2",
13
+ P3: "P3",
14
+ P4: "P4",
15
+ P5: "P5"
16
+ };
17
+ exports.LSQ_PRIORITY_RANK = {
18
+ [exports.LSQ_PRIORITY.P1]: 1,
19
+ [exports.LSQ_PRIORITY.P2]: 2,
20
+ [exports.LSQ_PRIORITY.P3]: 3,
21
+ [exports.LSQ_PRIORITY.P4]: 4,
22
+ [exports.LSQ_PRIORITY.P5]: 5
23
+ };
24
+ exports.LSQ_URGENCY = {
25
+ U1: "U1",
26
+ U2: "U2",
27
+ U3: "U3",
28
+ U4: "U4"
29
+ };
30
+ exports.LSQ_VALUE = {
31
+ V1: "V1",
32
+ V2: "V2",
33
+ V3: "V3",
34
+ V4: "V4",
35
+ V5: "V5"
36
+ };
37
+ /** GSI partition values for `passedStrIndex`. */
38
+ exports.LSQ_PASSED_STR = {
39
+ FALSE: "FALSE",
40
+ TRUE: "TRUE"
41
+ };
42
+ const toPassedStr = (passed) => passed ? exports.LSQ_PASSED_STR.TRUE : exports.LSQ_PASSED_STR.FALSE;
43
+ exports.toPassedStr = toPassedStr;
44
+ const toPriorityRank = (priority) => exports.LSQ_PRIORITY_RANK[priority];
45
+ exports.toPriorityRank = toPriorityRank;
46
+ const lsqPriorityUpdationSchema = new dynamoose_1.default.Schema({
47
+ lsqPriorityUpdationId: {
48
+ type: String,
49
+ hashKey: true,
50
+ required: true,
51
+ default: () => (0, crypto_1.randomUUID)()
52
+ },
53
+ opportunityId: {
54
+ type: String,
55
+ required: true,
56
+ index: {
57
+ name: "opportunityIdIndex",
58
+ type: "global"
59
+ }
60
+ },
61
+ passed: {
62
+ type: Boolean,
63
+ required: true,
64
+ default: false
65
+ },
66
+ passedStr: {
67
+ type: String,
68
+ required: true,
69
+ enum: [exports.LSQ_PASSED_STR.FALSE, exports.LSQ_PASSED_STR.TRUE],
70
+ default: exports.LSQ_PASSED_STR.FALSE,
71
+ index: {
72
+ name: "passedStrIndex",
73
+ type: "global",
74
+ rangeKey: "priorityRank"
75
+ }
76
+ },
77
+ priority: {
78
+ type: String,
79
+ required: true,
80
+ enum: [
81
+ exports.LSQ_PRIORITY.P1,
82
+ exports.LSQ_PRIORITY.P2,
83
+ exports.LSQ_PRIORITY.P3,
84
+ exports.LSQ_PRIORITY.P4,
85
+ exports.LSQ_PRIORITY.P5
86
+ ]
87
+ },
88
+ priorityRank: {
89
+ type: Number,
90
+ },
91
+ urgency: {
92
+ type: String,
93
+ enum: [exports.LSQ_URGENCY.U1, exports.LSQ_URGENCY.U2, exports.LSQ_URGENCY.U3, exports.LSQ_URGENCY.U4]
94
+ },
95
+ value: {
96
+ type: String,
97
+ enum: [exports.LSQ_VALUE.V1, exports.LSQ_VALUE.V2, exports.LSQ_VALUE.V3, exports.LSQ_VALUE.V4, exports.LSQ_VALUE.V5]
98
+ },
99
+ eventDate: {
100
+ type: String,
101
+ required: true
102
+ },
103
+ createdAt: {
104
+ type: String,
105
+ required: true
106
+ },
107
+ updatedAt: {
108
+ type: String,
109
+ required: true
110
+ },
111
+ payload: {
112
+ type: Object
113
+ }
114
+ }, {
115
+ saveUnknown: ["payload.**"],
116
+ timestamps: false
117
+ });
118
+ exports.LsqPriorityUpdationModel = dynamoose_1.default.model(table_names_1.TABLE_NAMES.LSQ_PRIORITY_UPDATION, lsqPriorityUpdationSchema, { create: false, waitForActive: false });
119
+ const convertToLsqPriorityUpdationModel = (input) => {
120
+ return new exports.LsqPriorityUpdationModel(input);
121
+ };
122
+ exports.convertToLsqPriorityUpdationModel = convertToLsqPriorityUpdationModel;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHNxLXByaW9yaXR5LXVwZGF0aW9uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvbHNxLXByaW9yaXR5LXVwZGF0aW9uL2xzcS1wcmlvcml0eS11cGRhdGlvbi1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsbUNBQW9DO0FBRXBDLDBEQUF1RDtBQUUxQyxRQUFBLFlBQVksR0FBRztJQUN4QixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0NBQ0YsQ0FBQztBQUlFLFFBQUEsaUJBQWlCLEdBQWdDO0lBQzFELENBQUMsb0JBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUMsb0JBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUMsb0JBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUMsb0JBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3BCLENBQUMsb0JBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0NBQ3ZCLENBQUM7QUFFVyxRQUFBLFdBQVcsR0FBRztJQUN2QixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtDQUNGLENBQUM7QUFJRSxRQUFBLFNBQVMsR0FBRztJQUNyQixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0NBQ0YsQ0FBQztBQUlYLGlEQUFpRDtBQUNwQyxRQUFBLGNBQWMsR0FBRztJQUMxQixLQUFLLEVBQUUsT0FB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eUJBQXlCLEVBQ3pCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQzFDLENBQUM7QUFFSyxNQUFNLGlDQUFpQyxHQUFHLENBQzdDLEtBQTJELEVBQzdELEVBQUU7SUFDQSxPQUFPLElBQUksZ0NBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBSlcsUUFBQSxpQ0FBaUMscUNBSTVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgQmFzZUR5bmFtb29zZU1vZGVsIH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLW1vZGVsXCI7XG5pbXBvcnQgeyBUQUJMRV9OQU1FUyB9IGZyb20gXCIuLi8uLi9jb25maWcvdGFibGUtbmFtZXNcIjtcblxuZXhwb3J0IGNvbnN0IExTUV9QUklPUklUWSA9IHtcbiAgICBQMTogXCJQMVwiLFxuICAgIFAyOiBcIlAyXCIsXG4gICAgUDM6IFwiUDNcIixcbiAgICBQNDogXCJQNFwiLFxuICAgIFA1OiBcIlA1XCJcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIExzcVByaW9yaXR5ID0gKHR5cGVvZiBMU1FfUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBMU1FfUFJJT1JJVFldO1xuXG5leHBvcnQgY29uc3QgTFNRX1BSSU9SSVRZX1JBTks6IFJlY29yZDxMc3FQcmlvcml0eSwgbnVtYmVyPiA9IHtcbiAgICBbTFNRX1BSSU9SSVRZLlAxXTogMSxcbiAgICBbTFNRX1BSSU9SSVRZLlAyXTogMixcbiAgICBbTFNRX1BSSU9SSVRZLlAzXTogMyxcbiAgICBbTFNRX1BSSU9SSVRZLlA0XTogNCxcbiAgICBbTFNRX1BSSU9SSVRZLlA1XTogNVxufTtcblxuZXhwb3J0IGNvbnN0IExTUV9VUkdFTkNZID0ge1xuICAgIFUxOiBcIlUxXCIsXG4gICAgVTI6IFwiVTJcIixcbiAgICBVMzogXCJVM1wiLFxuICAgIFU0OiBcIlU0XCJcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIExzcVVyZ2VuY3kgPSAodHlwZW9mIExTUV9VUkdFTkNZKVtrZXlvZiB0eXBlb2YgTFNRX1VSR0VOQ1ldO1xuXG5leHBvcnQgY29uc3QgTFNRX1ZBTFVFID0ge1xuICAgIFYxOiBcIlYxXCIsXG4gICAgVjI6IFwiVjJcIixcbiAgICBWMzogXCJWM1wiLFxuICAgIFY0OiBcIlY0XCIsXG4gICAgVjU6IFwiVjVcIlxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTHNxVmFsdWUgPSAodHlwZW9mIExTUV9WQUxVRSlba2V5b2YgdHlwZW9mIExTUV9WQUxVRV07XG5cbi8qKiBHU0kgcGFydGl0aW9uIHZhbHVlcyBmb3IgYHBhc3NlZFN0ckluZGV4YC4gKi9cbmV4cG9ydCBjb25zdCBMU1FfUEFTU0VEX1NUUiA9IHtcbiAgICBGQUxTRTogXCJGQUxTRVwiLFxuICAgIFRSVUU6IFwiVFJVRVwiXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBMc3FQYXNzZWRTdHIgPSAodHlwZW9mIExTUV9QQVNTRURfU1RSKVtrZXlvZiB0eXBlb2YgTFNRX1BBU1NFRF9TVFJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIExzcVByaW9yaXR5VXBkYXRpb24gZXh0ZW5kcyBCYXNlRHluYW1vb3NlTW9kZWwge1xuICAgIC8qKiBUYWJsZSB1bmlxdWUgaWQgKFBLKS4gKi9cbiAgICBsc3FQcmlvcml0eVVwZGF0aW9uSWQ6IHN0cmluZztcbiAgICAvKiogTGVhZFNxdWFyZWQgb3Bwb3J0dW5pdHkgaWQgKEdTSSBgb3Bwb3J0dW5pdHlJZEluZGV4YCkuICovXG4gICAgb3Bwb3J0dW5pdHlJZDogc3RyaW5nO1xuICAgIHBhc3NlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kZXhlZCBtaXJyb3Igb2YgYHBhc3NlZGAg4oCUIGBcIkZBTFNFXCJgIHdoZW4gcXVldWVkL3VuYXNzaWduZWQuICovXG4gICAgcGFzc2VkU3RyOiBMc3FQYXNzZWRTdHI7XG4gICAgcHJpb3JpdHk6IExzcVByaW9yaXR5O1xuICAgIC8qKiBOdW1lcmljIHNvcnQgc2NvcmUgZm9yIEdTSTogUDHihpIxIOKApiBQNeKGkjUuICovXG4gICAgcHJpb3JpdHlSYW5rOiBudW1iZXI7XG4gICAgdXJnZW5jeTogTHNxVXJnZW5jeTtcbiAgICB2YWx1ZTogTHNxVmFsdWU7XG4gICAgLyoqIElTTyBkYXRlIGBZWVlZLU1NLUREYCBmb3IgbWlkbmlnaHQgcmVjYWxjdWxhdGlvbi4gKi9cbiAgICBldmVudERhdGU6IHN0cmluZztcbiAgICAvKiogSVNPIHRpbWVzdGFtcCB3aGVuIHdlYmhvb2sgZmlyc3QgcmVjZWl2ZWQgdGhlIG9wcG9ydHVuaXR5LiAqL1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgIC8qKiBJU08gdGltZXN0YW1wIHdoZW4gcmVjb3JkIHdhcyBsYXN0IHVwZGF0ZWQuICovXG4gICAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gICAgLyoqIE9wdGlvbmFsIHJhdyB3ZWJob29rIHBheWxvYWQuICovXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVMc3FQcmlvcml0eVVwZGF0aW9uSW5wdXQgPSBPbWl0PFxuICAgIExzcVByaW9yaXR5VXBkYXRpb24sXG4gICAgXCJsc3FQcmlvcml0eVVwZGF0aW9uSWRcIiB8IFwicGFzc2VkU3RyXCIgfCBcInByaW9yaXR5UmFua1wiIHwgXCJjcmVhdGVkQXRcIiB8IFwidXBkYXRlZEF0XCJcbj4gJiB7XG4gICAgbHNxUHJpb3JpdHlVcGRhdGlvbklkPzogc3RyaW5nO1xuICAgIHBhc3NlZFN0cj86IExzcVBhc3NlZFN0cjtcbiAgICBwcmlvcml0eVJhbms/OiBudW1iZXI7XG4gICAgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAgIHVwZGF0ZWRBdD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCB0b1Bhc3NlZFN0ciA9IChwYXNzZWQ6IGJvb2xlYW4pOiBMc3FQYXNzZWRTdHIgPT5cbiAgICBwYXNzZWQgPyBMU1FfUEFTU0VEX1NUUi5UUlVFIDogTFNRX1BBU1NFRF9TVFIuRkFMU0U7XG5cbmV4cG9ydCBjb25zdCB0b1ByaW9yaXR5UmFuayA9IChwcmlvcml0eTogTHNxUHJpb3JpdHkpOiBudW1iZXIgPT4gTFNRX1BSSU9SSVRZX1JBTktbcHJpb3JpdHldO1xuXG5jb25zdCBsc3FQcmlvcml0eVVwZGF0aW9uU2NoZW1hID0gbmV3IGR5bmFtb29zZS5TY2hlbWEoXG4gICAge1xuICAgICAgICBsc3FQcmlvcml0eVVwZGF0aW9uSWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGhhc2hLZXk6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IHJhbmRvbVVVSUQoKVxuICAgICAgICB9LFxuICAgICAgICBvcHBvcnR1bml0eUlkOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJvcHBvcnR1bml0eUlkSW5kZXhcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImdsb2JhbFwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHBhc3NlZDoge1xuICAgICAgICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgcGFzc2VkU3RyOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGVudW06IFtMU1FfUEFTU0VEX1NUUi5GQUxTRSwgTFNRX1BBU1NFRF9TVFIuVFJVRV0sXG4gICAgICAgICAgICBkZWZhdWx0OiBMU1FfUEFTU0VEX1NUUi5GQUxTRSxcbiAgICAgICAgICAgIGluZGV4OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzZWRTdHJJbmRleFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2xvYmFsXCIsXG4gICAgICAgICAgICAgICAgcmFuZ2VLZXk6IFwicHJpb3JpdHlSYW5rXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcHJpb3JpdHk6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZW51bTogW1xuICAgICAgICAgICAgICAgIExTUV9QUklPUklUWS5QMSxcbiAgICAgICAgICAgICAgICBMU1FfUFJJT1JJVFkuUDIsXG4gICAgICAgICAgICAgICAgTFNRX1BSSU9SSVRZLlAzLFxuICAgICAgICAgICAgICAgIExTUV9QUklPUklUWS5QNCxcbiAgICAgICAgICAgICAgICBMU1FfUFJJT1JJVFkuUDVcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgcHJpb3JpdHlSYW5rOiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgIH0sXG4gICAgICAgIHVyZ2VuY3k6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGVudW06IFtMU1FfVVJHRU5DWS5VMSwgTFNRX1VSR0VOQ1kuVTIsIExTUV9VUkdFTkNZLlUzLCBMU1FfVVJHRU5DWS5VNF1cbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGVudW06IFtMU1FfVkFMVUUuVjEsIExTUV9WQUxVRS5WMiwgTFNRX1ZBTFVFLlYzLCBMU1FfVkFMVUUuVjQsIExTUV9WQUxVRS5WNV1cbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkQXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZWRBdDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgdHlwZTogT2JqZWN0XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgc2F2ZVVua25vd246IFtcInBheWxvYWQuKipcIl0sXG4gICAgICAgIHRpbWVzdGFtcHM6IGZhbHNlXG4gICAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IExzcVByaW9yaXR5VXBkYXRpb25Nb2RlbCA9IGR5bmFtb29zZS5tb2RlbDxMc3FQcmlvcml0eVVwZGF0aW9uPihcbiAgICBUQUJMRV9OQU1FUy5MU1FfUFJJT1JJVFlfVVBEQVRJT04sXG4gICAgbHNxUHJpb3JpdHlVcGRhdGlvblNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mc3FQcmlvcml0eVVwZGF0aW9uTW9kZWwgPSAoXG4gICAgaW5wdXQ6IENyZWF0ZUxzcVByaW9yaXR5VXBkYXRpb25JbnB1dCB8IExzcVByaW9yaXR5VXBkYXRpb25cbikgPT4ge1xuICAgIHJldHVybiBuZXcgTHNxUHJpb3JpdHlVcGRhdGlvbk1vZGVsKGlucHV0KTtcbn07XG4iXX0=
@@ -69,8 +69,15 @@ export declare class PlateModel extends BaseModel {
69
69
  totalSkewerAddonsCost?: number;
70
70
  skewerAddons?: SkewerAddonsOnOrder[];
71
71
  defaultValue: IsDefaultValue;
72
- isOnionGarlicSelected?: boolean;
73
- alternatePhoneNumber?: string;
72
+ setPreferences?: SetPreferences;
73
+ bundleId?: string;
74
+ }
75
+ export declare class SetPreferences {
76
+ spicyLevel: string;
77
+ tellUsMore: string;
78
+ noOnionGarlicCharge: number;
79
+ isOnionGarlicSelected: boolean;
80
+ alternatePhoneNumber: string;
74
81
  }
75
82
  export declare class IsDefaultValue {
76
83
  isdefaultEventTime: boolean;