@payloadcms/plugin-stripe 0.0.4 → 0.0.5

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 (49) hide show
  1. package/README.md +84 -8
  2. package/dist/extendWebpackConfig.js +1 -1
  3. package/dist/extendWebpackConfig.js.map +1 -1
  4. package/dist/hooks/createNewInStripe.d.ts +7 -0
  5. package/dist/hooks/createNewInStripe.js +125 -0
  6. package/dist/hooks/createNewInStripe.js.map +1 -0
  7. package/dist/hooks/createNewStripeCustomer.d.ts +2 -0
  8. package/dist/hooks/createNewStripeCustomer.js +104 -0
  9. package/dist/hooks/createNewStripeCustomer.js.map +1 -0
  10. package/dist/hooks/deleteFromStripe.d.ts +7 -0
  11. package/dist/hooks/deleteFromStripe.js +81 -0
  12. package/dist/hooks/deleteFromStripe.js.map +1 -0
  13. package/dist/hooks/deleteStripeCustomer.d.ts +2 -0
  14. package/dist/hooks/deleteStripeCustomer.js +74 -0
  15. package/dist/hooks/deleteStripeCustomer.js.map +1 -0
  16. package/dist/hooks/syncExistingStripeCustomer.d.ts +2 -0
  17. package/dist/hooks/syncExistingStripeCustomer.js +80 -0
  18. package/dist/hooks/syncExistingStripeCustomer.js.map +1 -0
  19. package/dist/hooks/syncExistingWithStripe.d.ts +7 -0
  20. package/dist/hooks/syncExistingWithStripe.js +96 -0
  21. package/dist/hooks/syncExistingWithStripe.js.map +1 -0
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +129 -16
  24. package/dist/index.js.map +1 -1
  25. package/dist/mocks/serverModule.d.ts +2 -1
  26. package/dist/mocks/serverModule.js +4 -1
  27. package/dist/mocks/serverModule.js.map +1 -1
  28. package/dist/routes/rest.d.ts +6 -1
  29. package/dist/routes/rest.js +3 -2
  30. package/dist/routes/rest.js.map +1 -1
  31. package/dist/routes/webhooks.d.ts +8 -1
  32. package/dist/routes/webhooks.js +99 -22
  33. package/dist/routes/webhooks.js.map +1 -1
  34. package/dist/types.d.ts +28 -4
  35. package/dist/utilities/stripeProxy.js +7 -1
  36. package/dist/utilities/stripeProxy.js.map +1 -1
  37. package/dist/webhooks/handleCreatedOrUpdated.d.ts +7 -0
  38. package/dist/webhooks/handleCreatedOrUpdated.js +194 -0
  39. package/dist/webhooks/handleCreatedOrUpdated.js.map +1 -0
  40. package/dist/webhooks/handleDeleted.d.ts +7 -0
  41. package/dist/webhooks/handleDeleted.js +106 -0
  42. package/dist/webhooks/handleDeleted.js.map +1 -0
  43. package/dist/webhooks/handleWebhooks.d.ts +2 -0
  44. package/dist/webhooks/handleWebhooks.js +236 -0
  45. package/dist/webhooks/handleWebhooks.js.map +1 -0
  46. package/dist/webhooks/index.d.ts +2 -0
  47. package/dist/webhooks/index.js +94 -0
  48. package/dist/webhooks/index.js.map +1 -0
  49. package/package.json +3 -3
package/dist/types.d.ts CHANGED
@@ -1,11 +1,35 @@
1
+ import { Payload } from "payload";
2
+ import { Config as PayloadConfig } from "payload/config";
1
3
  import Stripe from "stripe";
2
- export declare type StripeWebhookHandler = (event: any, stripe: Stripe, stripeConfig: StripeConfig) => void;
4
+ export declare type StripeWebhookHandler = (args: {
5
+ payload: Payload;
6
+ event: any;
7
+ stripe: Stripe;
8
+ config: PayloadConfig;
9
+ stripeConfig?: StripeConfig;
10
+ }) => void;
11
+ export declare type StripeWebhookHandlers = {
12
+ [webhookName: string]: StripeWebhookHandler;
13
+ };
14
+ export declare type FieldSyncConfig = {
15
+ field: string;
16
+ property: string;
17
+ };
18
+ export declare type SyncConfig = {
19
+ collection: string;
20
+ resource: 'customers' | 'products';
21
+ resourceSingular: 'customer' | 'product';
22
+ fields: FieldSyncConfig[];
23
+ };
3
24
  export declare type StripeConfig = {
4
25
  stripeSecretKey: string;
5
26
  stripeWebhooksEndpointSecret?: string;
6
- webhooks?: {
7
- [webhookName: string]: StripeWebhookHandler;
8
- };
27
+ webhooks?: StripeWebhookHandler | StripeWebhookHandlers;
28
+ sync?: SyncConfig[];
29
+ logs?: boolean;
30
+ };
31
+ export declare type SanitizedStripeConfig = StripeConfig & {
32
+ sync: SyncConfig[];
9
33
  };
10
34
  export declare type StripeProxy = (args: {
11
35
  stripeSecretKey: string;
@@ -49,7 +49,13 @@ var stripeProxy = function (_a) {
49
49
  return __generator(this, function (_b) {
50
50
  switch (_b.label) {
51
51
  case 0:
52
- stripe = new stripe_1.default(stripeSecretKey, { apiVersion: '2022-08-01' });
52
+ stripe = new stripe_1.default(stripeSecretKey, {
53
+ apiVersion: '2022-08-01',
54
+ appInfo: {
55
+ name: 'Stripe Payload Plugin',
56
+ url: 'https://payloadcms.com',
57
+ }
58
+ });
53
59
  if (!(typeof stripeMethod === 'string')) return [3 /*break*/, 7];
54
60
  topLevelMethod = stripeMethod.split('.')[0];
55
61
  contextToBind = stripe[topLevelMethod];
@@ -1 +1 @@
1
- {"version":3,"file":"stripeProxy.js","sourceRoot":"","sources":["../../src/utilities/stripeProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AACnC,kDAA4B;AAGrB,IAAM,WAAW,GAAgB,UAAO,EAI9C;QAHC,eAAe,qBAAA,EACf,YAAY,kBAAA,EACZ,UAAU,gBAAA;;;;;;oBAEJ,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;yBAErE,CAAA,OAAO,YAAY,KAAK,QAAQ,CAAA,EAAhC,wBAAgC;oBAC5B,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAiB,CAAC;oBAC5D,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;oBAGvC,WAAW,GAAG,IAAA,oBAAS,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBAEpE,CAAA,OAAO,WAAW,KAAK,UAAU,CAAA,EAAjC,wBAAiC;;;;oBAEV,qBAAM,WAAW,eAAI,UAAU,GAAC;;oBAAjD,cAAc,GAAG,SAAgC;oBACvD,sBAAO;4BACL,MAAM,EAAE,GAAG;4BACX,IAAI,EAAE,cAAc;yBACrB,EAAC;;;oBAEF,sBAAO;4BACL,MAAM,EAAE,GAAG;4BACX,OAAO,EAAE,2CAAoC,OAAK,CAAE;yBACrD,EAAC;;wBAGJ,MAAM,KAAK,CAAC,yCAAkC,YAAY,uCAAoC,CAAC,CAAA;;wBAGjG,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAA;;;;;CAE3D,CAAA;AAjCY,QAAA,WAAW,eAiCvB"}
1
+ {"version":3,"file":"stripeProxy.js","sourceRoot":"","sources":["../../src/utilities/stripeProxy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAmC;AACnC,kDAA4B;AAGrB,IAAM,WAAW,GAAgB,UAAO,EAI9C;QAHC,eAAe,qBAAA,EACf,YAAY,kBAAA,EACZ,UAAU,gBAAA;;;;;;oBAEJ,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,EAAE;wBACzC,UAAU,EAAE,YAAY;wBACxB,OAAO,EAAE;4BACP,IAAI,EAAE,uBAAuB;4BAC7B,GAAG,EAAE,wBAAwB;yBAC9B;qBACF,CAAC,CAAC;yBAEC,CAAA,OAAO,YAAY,KAAK,QAAQ,CAAA,EAAhC,wBAAgC;oBAC5B,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAiB,CAAC;oBAC5D,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;oBAGvC,WAAW,GAAG,IAAA,oBAAS,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBAEpE,CAAA,OAAO,WAAW,KAAK,UAAU,CAAA,EAAjC,wBAAiC;;;;oBAEV,qBAAM,WAAW,eAAI,UAAU,GAAC;;oBAAjD,cAAc,GAAG,SAAgC;oBACvD,sBAAO;4BACL,MAAM,EAAE,GAAG;4BACX,IAAI,EAAE,cAAc;yBACrB,EAAC;;;oBAEF,sBAAO;4BACL,MAAM,EAAE,GAAG;4BACX,OAAO,EAAE,2CAAoC,OAAK,CAAE;yBACrD,EAAC;;wBAGJ,MAAM,KAAK,CAAC,yCAAkC,YAAY,uCAAoC,CAAC,CAAA;;wBAGjG,MAAM,KAAK,CAAC,2CAA2C,CAAC,CAAA;;;;;CAE3D,CAAA;AAvCY,QAAA,WAAW,eAuCvB"}
@@ -0,0 +1,7 @@
1
+ import { SanitizedStripeConfig, StripeWebhookHandler } from '../types';
2
+ declare type HandleCreatedOrUpdated = (args: Parameters<StripeWebhookHandler>[0] & {
3
+ syncConfig: SanitizedStripeConfig['sync'][0];
4
+ resourceType: string;
5
+ }) => void;
6
+ export declare const handleCreatedOrUpdated: HandleCreatedOrUpdated;
7
+ export {};
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.handleCreatedOrUpdated = void 0;
51
+ var handleCreatedOrUpdated = function (args) { return __awaiter(void 0, void 0, void 0, function () {
52
+ var payload, event, resourceType, stripeConfig, payloadConfig, syncConfig, logs, stripeDoc, stripeID, eventObject, isNestedChange, collectionSlug_1, isAuthCollection, payloadQuery, foundDoc, syncedData, authDoc, authQuery, err_1, error_1, error_2, error_3;
53
+ var _a, _b, _c;
54
+ return __generator(this, function (_d) {
55
+ switch (_d.label) {
56
+ case 0:
57
+ payload = args.payload, event = args.event, resourceType = args.resourceType, stripeConfig = args.stripeConfig, payloadConfig = args.config, syncConfig = args.syncConfig;
58
+ logs = (stripeConfig || {}).logs;
59
+ stripeDoc = ((_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.object) || {};
60
+ stripeID = stripeDoc.id, eventObject = stripeDoc.object;
61
+ isNestedChange = eventObject !== resourceType;
62
+ // let stripeID = docID;
63
+ // if (isNestedChange) {
64
+ // const parentResource = stripeDoc[resourceType];
65
+ // stripeID = parentResource;
66
+ // }
67
+ if (isNestedChange) {
68
+ if (logs)
69
+ payload.logger.info("- This change occurred on a nested field of ".concat(resourceType, ". Nested fields are not yet supported."));
70
+ }
71
+ if (!!isNestedChange) return [3 /*break*/, 20];
72
+ if (logs)
73
+ payload.logger.info("- A new document was created or updated in Stripe, now syncing to Payload...");
74
+ collectionSlug_1 = syncConfig === null || syncConfig === void 0 ? void 0 : syncConfig.collection;
75
+ isAuthCollection = Boolean((_c = (_b = payloadConfig === null || payloadConfig === void 0 ? void 0 : payloadConfig.collections) === null || _b === void 0 ? void 0 : _b.find(function (collection) { return collection.slug === collectionSlug_1; })) === null || _c === void 0 ? void 0 : _c.auth);
76
+ return [4 /*yield*/, payload.find({
77
+ collection: collectionSlug_1,
78
+ where: {
79
+ stripeID: {
80
+ equals: stripeID,
81
+ },
82
+ },
83
+ })];
84
+ case 1:
85
+ payloadQuery = _d.sent();
86
+ foundDoc = payloadQuery.docs[0];
87
+ syncedData = syncConfig.fields.reduce(function (acc, field) {
88
+ var fieldName = field.field, property = field.property;
89
+ acc[fieldName] = stripeDoc[property];
90
+ return acc;
91
+ }, {});
92
+ syncedData = __assign(__assign({}, syncedData), { stripeID: stripeID, skipSync: true });
93
+ if (!!foundDoc) return [3 /*break*/, 16];
94
+ if (logs)
95
+ payload.logger.info("- No existing '".concat(collectionSlug_1, "' document found with Stripe ID: '").concat(stripeID, "', creating new..."));
96
+ authDoc = null;
97
+ if (!isAuthCollection) return [3 /*break*/, 11];
98
+ _d.label = 2;
99
+ case 2:
100
+ _d.trys.push([2, 10, , 11]);
101
+ if (!(stripeDoc === null || stripeDoc === void 0 ? void 0 : stripeDoc.email)) return [3 /*break*/, 8];
102
+ return [4 /*yield*/, payload.find({
103
+ collection: collectionSlug_1,
104
+ where: {
105
+ email: {
106
+ equals: stripeDoc.email,
107
+ },
108
+ },
109
+ })];
110
+ case 3:
111
+ authQuery = _d.sent();
112
+ authDoc = authQuery.docs[0];
113
+ if (!authDoc) return [3 /*break*/, 7];
114
+ if (logs)
115
+ payload.logger.info("- Account already exists with e-mail: ".concat(stripeDoc.email, ", updating now..."));
116
+ _d.label = 4;
117
+ case 4:
118
+ _d.trys.push([4, 6, , 7]);
119
+ return [4 /*yield*/, payload.update({
120
+ collection: collectionSlug_1,
121
+ id: authDoc.id,
122
+ data: syncedData,
123
+ })];
124
+ case 5:
125
+ _d.sent();
126
+ if (logs)
127
+ payload.logger.info("\u2705 Successfully updated '".concat(collectionSlug_1, "' document in Payload with ID: '").concat(authDoc.id, ".'"));
128
+ return [3 /*break*/, 7];
129
+ case 6:
130
+ err_1 = _d.sent();
131
+ if (logs)
132
+ payload.logger.error("- Error updating existing '".concat(collectionSlug_1, "' document: ").concat(err_1.message));
133
+ return [3 /*break*/, 7];
134
+ case 7: return [3 /*break*/, 9];
135
+ case 8:
136
+ if (logs)
137
+ payload.logger.error("No email was provided from Stripe, cannot create new '".concat(collectionSlug_1, "' document."));
138
+ _d.label = 9;
139
+ case 9: return [3 /*break*/, 11];
140
+ case 10:
141
+ error_1 = _d.sent();
142
+ if (logs)
143
+ payload.logger.error("Error looking up '".concat(collectionSlug_1, "' document in Payload: ").concat(error_1 === null || error_1 === void 0 ? void 0 : error_1.message));
144
+ return [3 /*break*/, 11];
145
+ case 11:
146
+ if (!(!isAuthCollection || (isAuthCollection && !authDoc))) return [3 /*break*/, 15];
147
+ _d.label = 12;
148
+ case 12:
149
+ _d.trys.push([12, 14, , 15]);
150
+ if (logs)
151
+ payload.logger.info("- Creating new '".concat(collectionSlug_1, "' document in Payload with Stripe ID: '").concat(stripeID, "'."));
152
+ return [4 /*yield*/, payload.create({
153
+ collection: collectionSlug_1,
154
+ data: __assign(__assign({}, syncedData), { password: 'password', passwordConfirm: 'password' }),
155
+ disableVerificationEmail: isAuthCollection ? true : undefined,
156
+ })];
157
+ case 13:
158
+ _d.sent();
159
+ if (logs)
160
+ payload.logger.info("\u2705 Successfully created new '".concat(collectionSlug_1, "' document in Payload with Stripe ID: '").concat(stripeID, "'."));
161
+ return [3 /*break*/, 15];
162
+ case 14:
163
+ error_2 = _d.sent();
164
+ if (logs)
165
+ payload.logger.error("Error creating new document in Payload: ".concat(error_2 === null || error_2 === void 0 ? void 0 : error_2.message));
166
+ return [3 /*break*/, 15];
167
+ case 15: return [3 /*break*/, 20];
168
+ case 16:
169
+ if (logs)
170
+ payload.logger.info("- Existing '".concat(collectionSlug_1, "' document found in Payload with Stripe ID: '").concat(stripeID, "', updating now..."));
171
+ _d.label = 17;
172
+ case 17:
173
+ _d.trys.push([17, 19, , 20]);
174
+ return [4 /*yield*/, payload.update({
175
+ collection: collectionSlug_1,
176
+ id: foundDoc.id,
177
+ data: syncedData,
178
+ })];
179
+ case 18:
180
+ _d.sent();
181
+ if (logs)
182
+ payload.logger.info("\u2705 Successfully updated '".concat(collectionSlug_1, "' document in Payload from Stripe ID: '").concat(stripeID, "'."));
183
+ return [3 /*break*/, 20];
184
+ case 19:
185
+ error_3 = _d.sent();
186
+ if (logs)
187
+ payload.logger.error("Error updating '".concat(collectionSlug_1, "' document in Payload: ").concat(error_3 === null || error_3 === void 0 ? void 0 : error_3.message));
188
+ return [3 /*break*/, 20];
189
+ case 20: return [2 /*return*/];
190
+ }
191
+ });
192
+ }); };
193
+ exports.handleCreatedOrUpdated = handleCreatedOrUpdated;
194
+ //# sourceMappingURL=handleCreatedOrUpdated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleCreatedOrUpdated.js","sourceRoot":"","sources":["../../src/webhooks/handleCreatedOrUpdated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SanitizedStripeConfig, StripeWebhookHandler } from '../types';
2
+ declare type HandleDeleted = (args: Parameters<StripeWebhookHandler>[0] & {
3
+ resourceType: string;
4
+ syncConfig: SanitizedStripeConfig['sync'][0];
5
+ }) => void;
6
+ export declare const handleDeleted: HandleDeleted;
7
+ export {};
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleDeleted = void 0;
40
+ var handleDeleted = function (args) { return __awaiter(void 0, void 0, void 0, function () {
41
+ var payload, event, stripeConfig, resourceType, syncConfig, logs, collectionSlug, _a, stripeID, eventObject // use this to determine if this is a nested field
42
+ , isNestedDelete, payloadQuery, foundDoc, error_1;
43
+ var _b;
44
+ return __generator(this, function (_c) {
45
+ switch (_c.label) {
46
+ case 0:
47
+ payload = args.payload, event = args.event, stripeConfig = args.stripeConfig, resourceType = args.resourceType, syncConfig = args.syncConfig;
48
+ logs = (stripeConfig || {}).logs;
49
+ collectionSlug = syncConfig === null || syncConfig === void 0 ? void 0 : syncConfig.collection;
50
+ _a = ((_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.object) || {}, stripeID = _a.id, eventObject = _a.object;
51
+ isNestedDelete = eventObject !== resourceType;
52
+ if (isNestedDelete) {
53
+ if (logs)
54
+ payload.logger.info("- This deletion occurred on a nested field of ".concat(resourceType, ". Nested fields are not yet supported."));
55
+ }
56
+ if (!!isNestedDelete) return [3 /*break*/, 4];
57
+ if (logs)
58
+ payload.logger.info("- A '".concat(resourceType, "' resource was deleted in Stripe, now deleting '").concat(collectionSlug, "' document in Payload with Stripe ID: '").concat(stripeID, "'..."));
59
+ _c.label = 1;
60
+ case 1:
61
+ _c.trys.push([1, 3, , 4]);
62
+ return [4 /*yield*/, payload.find({
63
+ collection: collectionSlug,
64
+ where: {
65
+ stripeID: {
66
+ equals: stripeID,
67
+ },
68
+ },
69
+ })];
70
+ case 2:
71
+ payloadQuery = _c.sent();
72
+ foundDoc = payloadQuery.docs[0];
73
+ if (!foundDoc) {
74
+ if (logs)
75
+ payload.logger.info("- Nothing to delete, no existing document found with Stripe ID: '".concat(stripeID, "'."));
76
+ }
77
+ if (foundDoc) {
78
+ if (logs)
79
+ payload.logger.info("- Deleting Payload document with ID: '".concat(foundDoc.id, "'..."));
80
+ try {
81
+ payload.delete({
82
+ collection: collectionSlug,
83
+ id: foundDoc.id,
84
+ });
85
+ // NOTE: the `afterDelete` hook will trigger, which will attempt to delete the document from Stripe and safely error out
86
+ // There is no known way of preventing this from happening. In other hooks we use the `skipSync` field, but here the document is already deleted.
87
+ if (logs)
88
+ payload.logger.info("- \u2705 Successfully deleted Payload document with ID: '".concat(foundDoc.id, "'."));
89
+ }
90
+ catch (error) {
91
+ if (logs)
92
+ payload.logger.error("Error deleting document: ".concat(error === null || error === void 0 ? void 0 : error.message));
93
+ }
94
+ }
95
+ return [3 /*break*/, 4];
96
+ case 3:
97
+ error_1 = _c.sent();
98
+ if (logs)
99
+ payload.logger.error(error_1 === null || error_1 === void 0 ? void 0 : error_1.message);
100
+ return [3 /*break*/, 4];
101
+ case 4: return [2 /*return*/];
102
+ }
103
+ });
104
+ }); };
105
+ exports.handleDeleted = handleDeleted;
106
+ //# sourceMappingURL=handleDeleted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleDeleted.js","sourceRoot":"","sources":["../../src/webhooks/handleDeleted.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,aAAa,GAAkB,UAAO,IAAI;;;;;;;gBAEnD,OAAO,GAKL,IAAI,QALC,EACP,KAAK,GAIH,IAAI,MAJD,EACL,YAAY,GAGV,IAAI,aAHM,EACZ,YAAY,GAEV,IAAI,aAFM,EACZ,UAAU,GACR,IAAI,WADI,CACH;gBAED,IAAI,GAAK,CAAA,YAAY,IAAI,EAAE,CAAA,KAAvB,CAAwB;gBAE9B,cAAc,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC;gBAExC,KAGG,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,MAAM,KAAI,EAAE,EAF5B,QAAQ,QAAA,EACJ,WAAW,YAAA,CACc;gBAG7B,cAAc,GAAG,WAAW,KAAK,YAAY,CAAC;gBAEpD,IAAI,cAAc,EAAE;oBAClB,IAAI,IAAI;wBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAiD,YAAY,2CAAwC,CAAC,CAAC;iBACtI;qBAEG,CAAC,cAAc,EAAf,wBAAe;gBACjB,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAQ,YAAY,6DAAmD,cAAc,oDAA0C,QAAQ,SAAM,CAAC,CAAC;;;;gBAGtJ,qBAAM,OAAO,CAAC,IAAI,CAAC;wBACtC,UAAU,EAAE,cAAc;wBAC1B,KAAK,EAAE;4BACL,QAAQ,EAAE;gCACR,MAAM,EAAE,QAAQ;6BACjB;yBACF;qBACF,CAAC,EAAA;;gBAPI,YAAY,GAAG,SAOnB;gBAEI,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAC;gBAE7C,IAAI,CAAC,QAAQ,EAAE;oBACb,IAAI,IAAI;wBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,2EAAoE,QAAQ,OAAI,CAAC,CAAC;iBACjH;gBAED,IAAI,QAAQ,EAAE;oBACZ,IAAI,IAAI;wBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAyC,QAAQ,CAAC,EAAE,SAAM,CAAC,CAAC;oBAE1F,IAAI;wBACF,OAAO,CAAC,MAAM,CAAC;4BACb,UAAU,EAAE,cAAc;4BAC1B,EAAE,EAAE,QAAQ,CAAC,EAAE;yBAChB,CAAC,CAAC;wBAEH,wHAAwH;wBACxH,iJAAiJ;wBACjJ,IAAI,IAAI;4BAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mEAAuD,QAAQ,CAAC,EAAE,OAAI,CAAC,CAAC;qBACvG;oBAAC,OAAO,KAAU,EAAE;wBACnB,IAAI,IAAI;4BAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAA4B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAE,CAAC,CAAC;qBAC9E;iBACF;;;;gBAED,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,CAAC,CAAC;;;;;KAGpD,CAAA;AAhEY,QAAA,aAAa,iBAgEzB"}
@@ -0,0 +1,2 @@
1
+ import { StripeWebhookHandler } from '../types';
2
+ export declare const handleWebhooks: StripeWebhookHandler;
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleWebhooks = void 0;
40
+ var handleWebhooks = function (payload, event) { return __awaiter(void 0, void 0, void 0, function () {
41
+ var _a, _b, name_1, customerID, email, customerQuery, payloadCustomer, error_1, error_2, _c, name_2, customerID, email, customerQuery, payloadCustomer, error_3, error_4, customerID, customerQuery, payloadCustomer, error_5;
42
+ var _d, _e, _f;
43
+ return __generator(this, function (_g) {
44
+ switch (_g.label) {
45
+ case 0:
46
+ payload.logger.info("Processing Stripe '".concat(event.type, "' webhook event with ID: '").concat(event.id, "'"));
47
+ _a = event.type;
48
+ switch (_a) {
49
+ case 'customer.created': return [3 /*break*/, 1];
50
+ case 'customer.updated': return [3 /*break*/, 12];
51
+ case 'customer.deleted': return [3 /*break*/, 22];
52
+ }
53
+ return [3 /*break*/, 27];
54
+ case 1:
55
+ _b = ((_d = event === null || event === void 0 ? void 0 : event.data) === null || _d === void 0 ? void 0 : _d.object) || {}, name_1 = _b.name, customerID = _b.id, email = _b.email;
56
+ return [4 /*yield*/, payload.find({
57
+ collection: 'customers',
58
+ where: {
59
+ or: [{
60
+ email: {
61
+ equals: email
62
+ },
63
+ stripeID: {
64
+ equals: customerID,
65
+ },
66
+ }]
67
+ },
68
+ })];
69
+ case 2:
70
+ customerQuery = _g.sent();
71
+ payloadCustomer = customerQuery.docs[0];
72
+ if (!!payloadCustomer) return [3 /*break*/, 7];
73
+ payload.logger.info("- No existing customer found, creating a new customer in Payload with email: '".concat(email, "'"));
74
+ _g.label = 3;
75
+ case 3:
76
+ _g.trys.push([3, 5, , 6]);
77
+ return [4 /*yield*/, payload.create({
78
+ collection: 'customers',
79
+ data: {
80
+ stripeID: customerID,
81
+ name: name_1,
82
+ email: email,
83
+ password: 'password',
84
+ passwordConfirm: 'password',
85
+ isSyncedToStripe: true,
86
+ },
87
+ disableVerificationEmail: true,
88
+ })];
89
+ case 4:
90
+ _g.sent();
91
+ payload.logger.info("- Successfully created new customer in Payload from stripe customer ID: '".concat(customerID, "'"));
92
+ return [3 /*break*/, 6];
93
+ case 5:
94
+ error_1 = _g.sent();
95
+ payload.logger.error('Error creating new customer', error_1);
96
+ return [3 /*break*/, 6];
97
+ case 6: return [3 /*break*/, 11];
98
+ case 7:
99
+ payload.logger.info("- Existing customer found with email: '".concat(email, "', updating now"));
100
+ _g.label = 8;
101
+ case 8:
102
+ _g.trys.push([8, 10, , 11]);
103
+ return [4 /*yield*/, payload.update({
104
+ collection: 'customers',
105
+ id: payloadCustomer.id,
106
+ data: {
107
+ stripeID: customerID,
108
+ name: name_1,
109
+ email: email,
110
+ isSyncedToStripe: true,
111
+ },
112
+ })];
113
+ case 9:
114
+ _g.sent();
115
+ payload.logger.info("- Successfully updated customer in Payload from stripe customer ID: '".concat(customerID, "'"));
116
+ return [3 /*break*/, 11];
117
+ case 10:
118
+ error_2 = _g.sent();
119
+ payload.logger.error('Error updating customer', error_2);
120
+ return [3 /*break*/, 11];
121
+ case 11: return [3 /*break*/, 28];
122
+ case 12:
123
+ _c = ((_e = event === null || event === void 0 ? void 0 : event.data) === null || _e === void 0 ? void 0 : _e.object) || {}, name_2 = _c.name, customerID = _c.id, email = _c.email;
124
+ _g.label = 13;
125
+ case 13:
126
+ _g.trys.push([13, 20, , 21]);
127
+ return [4 /*yield*/, payload.find({
128
+ collection: 'customers',
129
+ where: {
130
+ stripeID: {
131
+ equals: customerID,
132
+ },
133
+ },
134
+ })];
135
+ case 14:
136
+ customerQuery = _g.sent();
137
+ payloadCustomer = customerQuery.docs[0];
138
+ if (!payloadCustomer) return [3 /*break*/, 15];
139
+ // Found existing customer, update it
140
+ try {
141
+ payload.logger.info("- Updating existing customer in Payload with ID: '".concat(payloadCustomer.id, "'"));
142
+ payload.update({
143
+ collection: 'customers',
144
+ id: payloadCustomer.id,
145
+ data: {
146
+ name: name_2,
147
+ isSyncedToStripe: true,
148
+ },
149
+ });
150
+ payload.logger.info("- Successfully updated customer in Payload with ID: '".concat(payloadCustomer.id, "'"));
151
+ }
152
+ catch (error) {
153
+ payload.logger.error('Error updating existing customer', error);
154
+ }
155
+ return [3 /*break*/, 19];
156
+ case 15:
157
+ // No existing customer found, create a new one
158
+ payload.logger.info("- Could not find an existing customer with Stripe customer ID: '".concat(customerID, "', creating a new one."));
159
+ _g.label = 16;
160
+ case 16:
161
+ _g.trys.push([16, 18, , 19]);
162
+ return [4 /*yield*/, payload.create({
163
+ collection: 'customers',
164
+ data: {
165
+ stripeID: customerID,
166
+ name: name_2,
167
+ email: email,
168
+ // password: 'abc123',
169
+ isSyncedToStripe: true,
170
+ },
171
+ disableVerificationEmail: true,
172
+ })];
173
+ case 17:
174
+ _g.sent();
175
+ return [3 /*break*/, 19];
176
+ case 18:
177
+ error_3 = _g.sent();
178
+ payload.logger.error('Error creating new customer', error_3);
179
+ return [3 /*break*/, 19];
180
+ case 19: return [3 /*break*/, 21];
181
+ case 20:
182
+ error_4 = _g.sent();
183
+ payload.logger.info(error_4);
184
+ return [3 /*break*/, 21];
185
+ case 21: return [3 /*break*/, 28];
186
+ case 22:
187
+ customerID = (((_f = event === null || event === void 0 ? void 0 : event.data) === null || _f === void 0 ? void 0 : _f.object) || {}).id;
188
+ _g.label = 23;
189
+ case 23:
190
+ _g.trys.push([23, 25, , 26]);
191
+ return [4 /*yield*/, payload.find({
192
+ collection: 'customers',
193
+ where: {
194
+ stripeID: {
195
+ equals: customerID,
196
+ },
197
+ },
198
+ })];
199
+ case 24:
200
+ customerQuery = _g.sent();
201
+ payloadCustomer = customerQuery.docs[0];
202
+ if (!payloadCustomer) {
203
+ payload.logger.info("- Nothing to delete, no existing customer found with Stripe customer ID: '".concat(customerID, "'"));
204
+ }
205
+ if (payloadCustomer) {
206
+ payload.logger.info("- Deleting Payload customer with ID: '".concat(payloadCustomer.id, "'"));
207
+ try {
208
+ payload.delete({
209
+ collection: 'customers',
210
+ id: payloadCustomer.id,
211
+ });
212
+ // NOTE: the customers `afterDelete` hook will trigger, which will attempt to delete the customer from Stripe and safely error out
213
+ // There is no known way of preventing this from happening. In other hooks we use the `isSyncedToStripe` field, but here the document is already deleted.
214
+ payload.logger.info("- Successfully deleted Payload customer with ID: '".concat(payloadCustomer.id, "'"));
215
+ }
216
+ catch (error) {
217
+ payload.logger.error('Error deleting customer', error);
218
+ }
219
+ }
220
+ return [3 /*break*/, 26];
221
+ case 25:
222
+ error_5 = _g.sent();
223
+ payload.logger.info(error_5);
224
+ return [3 /*break*/, 26];
225
+ case 26: return [3 /*break*/, 28];
226
+ case 27:
227
+ {
228
+ return [3 /*break*/, 28];
229
+ }
230
+ _g.label = 28;
231
+ case 28: return [2 /*return*/];
232
+ }
233
+ });
234
+ }); };
235
+ exports.handleWebhooks = handleWebhooks;
236
+ //# sourceMappingURL=handleWebhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleWebhooks.js","sourceRoot":"","sources":["../../src/webhooks/handleWebhooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAM,cAAc,GAAyB,UAAO,OAAO,EAAE,KAAK;;;;;;gBACvE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAsB,KAAK,CAAC,IAAI,uCAA6B,KAAK,CAAC,EAAE,MAAG,CAAC,CAAC;gBAEtF,KAAA,KAAK,CAAC,IAAI,CAAA;;yBACX,kBAAkB,CAAC,CAAnB,wBAAkB;yBAkElB,kBAAkB,CAAC,CAAnB,yBAAkB;yBA8DlB,kBAAkB,CAAC,CAAnB,yBAAkB;;;;gBA/Hf,KAIe,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,MAAM,KAAI,EAAE,EAH5C,gBAAI,EACA,UAAU,QAAA,EACd,KAAK,WAAA,CACwC;gBAEzB,qBAAM,OAAO,CAAC,IAAI,CAAC;wBACvC,UAAU,EAAE,WAAW;wBACvB,KAAK,EAAE;4BACL,EAAE,EAAE,CAAC;oCACH,KAAK,EAAE;wCACL,MAAM,EAAE,KAAK;qCACd;oCACD,QAAQ,EAAE;wCACR,MAAM,EAAE,UAAU;qCACnB;iCACF,CAAC;yBACH;qBACF,CAAC,EAAA;;gBAZI,aAAa,GAAG,SAYpB;gBAEI,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAC;qBAEjD,CAAC,eAAe,EAAhB,wBAAgB;gBAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wFAAiF,KAAK,MAAG,CAAC,CAAC;;;;gBAG7G,qBAAM,OAAO,CAAC,MAAM,CAAC;wBACnB,UAAU,EAAE,WAAW;wBACvB,IAAI,EAAE;4BACJ,QAAQ,EAAE,UAAU;4BACpB,IAAI,QAAA;4BACJ,KAAK,OAAA;4BACL,QAAQ,EAAE,UAAU;4BACpB,eAAe,EAAE,UAAU;4BAC3B,gBAAgB,EAAE,IAAI;yBACvB;wBACD,wBAAwB,EAAE,IAAI;qBAC/B,CAAC,EAAA;;gBAXF,SAWE,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mFAA4E,UAAU,MAAG,CAAC,CAAC;;;;gBAE/G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAK,CAAC,CAAC;;;;gBAG7D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDAA0C,KAAK,oBAAiB,CAAC,CAAC;;;;gBAGpF,qBAAM,OAAO,CAAC,MAAM,CAAC;wBACnB,UAAU,EAAE,WAAW;wBACvB,EAAE,EAAE,eAAe,CAAC,EAAE;wBACtB,IAAI,EAAE;4BACJ,QAAQ,EAAE,UAAU;4BACpB,IAAI,QAAA;4BACJ,KAAK,OAAA;4BACL,gBAAgB,EAAE,IAAI;yBACvB;qBACF,CAAC,EAAA;;gBATF,SASE,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+EAAwE,UAAU,MAAG,CAAC,CAAC;;;;gBAE3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAK,CAAC,CAAC;;qBAG3D,yBAAM;;gBAGA,KAIe,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,MAAM,KAAI,EAAE,EAH5C,gBAAI,EACA,UAAU,QAAA,EACd,KAAK,WAAA,CACwC;;;;gBAGvB,qBAAM,OAAO,CAAC,IAAI,CAAC;wBACvC,UAAU,EAAE,WAAW;wBACvB,KAAK,EAAE;4BACL,QAAQ,EAAE;gCACR,MAAM,EAAE,UAAU;6BACnB;yBACF;qBACF,CAAC,EAAA;;gBAPI,aAAa,GAAG,SAOpB;gBAEI,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAC;qBAEjD,eAAe,EAAf,yBAAe;gBACjB,qCAAqC;gBACrC,IAAI;oBACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4DAAqD,eAAe,CAAC,EAAE,MAAG,CAAC,CAAC;oBAEhG,OAAO,CAAC,MAAM,CAAC;wBACb,UAAU,EAAE,WAAW;wBACvB,EAAE,EAAE,eAAe,CAAC,EAAE;wBACtB,IAAI,EAAE;4BACJ,IAAI,QAAA;4BACJ,gBAAgB,EAAE,IAAI;yBACvB;qBACF,CAAC,CAAC;oBAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+DAAwD,eAAe,CAAC,EAAE,MAAG,CAAC,CAAC;iBACpG;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;iBACjE;;;gBAED,+CAA+C;gBAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0EAAmE,UAAU,2BAAwB,CAAC,CAAC;;;;gBAGzH,qBAAM,OAAO,CAAC,MAAM,CAAC;wBACnB,UAAU,EAAE,WAAW;wBACvB,IAAI,EAAE;4BACJ,QAAQ,EAAE,UAAU;4BACpB,IAAI,QAAA;4BACJ,KAAK,OAAA;4BACL,sBAAsB;4BACtB,gBAAgB,EAAE,IAAI;yBACvB;wBACD,wBAAwB,EAAE,IAAI;qBAC/B,CAAC,EAAA;;gBAVF,SAUE,CAAC;;;;gBAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAK,CAAC,CAAC;;;;;gBAI/D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;;qBAE7B,yBAAM;;gBAIA,UAAU,GACK,CAAA,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,MAAM,KAAI,EAAE,CAAA,GAD9B,CAC+B;;;;gBAGvB,qBAAM,OAAO,CAAC,IAAI,CAAC;wBACvC,UAAU,EAAE,WAAW;wBACvB,KAAK,EAAE;4BACL,QAAQ,EAAE;gCACR,MAAM,EAAE,UAAU;6BACnB;yBACF;qBACF,CAAC,EAAA;;gBAPI,aAAa,GAAG,SAOpB;gBAEI,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAC;gBAErD,IAAI,CAAC,eAAe,EAAE;oBACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oFAA6E,UAAU,MAAG,CAAC,CAAC;iBACjH;gBAED,IAAI,eAAe,EAAE;oBACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAyC,eAAe,CAAC,EAAE,MAAG,CAAC,CAAC;oBAEpF,IAAI;wBACF,OAAO,CAAC,MAAM,CAAC;4BACb,UAAU,EAAE,WAAW;4BACvB,EAAE,EAAE,eAAe,CAAC,EAAE;yBACvB,CAAC,CAAC;wBAEH,kIAAkI;wBAClI,yJAAyJ;wBAEzJ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4DAAqD,eAAe,CAAC,EAAE,MAAG,CAAC,CAAC;qBACjG;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;qBACxD;iBACF;;;;gBAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;;qBAE7B,yBAAM;;gBAEC;oBACP,yBAAM;iBACP;;;;;KAEJ,CAAC;AAnLW,QAAA,cAAc,kBAmLzB"}