@payloadcms/plugin-stripe 0.0.15 → 0.0.16
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/README.md +36 -36
- package/dist/admin.js +33 -32
- package/dist/extendWebpackConfig.js +28 -26
- package/dist/fields/getFields.js +36 -42
- package/dist/hooks/createNewInStripe.js +82 -124
- package/dist/hooks/deleteFromStripe.js +44 -87
- package/dist/hooks/syncExistingWithStripe.js +55 -93
- package/dist/index.js +109 -135
- package/dist/routes/rest.js +35 -76
- package/dist/routes/webhooks.js +59 -94
- package/dist/types.js +5 -2
- package/dist/ui/LinkToDoc.js +43 -31
- package/dist/utilities/deepen.js +20 -17
- package/dist/utilities/stripeProxy.js +52 -88
- package/dist/webhooks/handleCreatedOrUpdated.js +125 -196
- package/dist/webhooks/handleDeleted.js +53 -102
- package/dist/webhooks/index.js +55 -89
- package/package.json +13 -28
- package/types.d.ts +1 -1
- package/types.js +1 -1
- package/dist/admin.d.ts +0 -3
- package/dist/admin.js.map +0 -1
- package/dist/extendWebpackConfig.d.ts +0 -3
- package/dist/extendWebpackConfig.js.map +0 -1
- package/dist/fields/getFields.d.ts +0 -11
- package/dist/fields/getFields.js.map +0 -1
- package/dist/hooks/createNewInStripe.d.ts +0 -7
- package/dist/hooks/createNewInStripe.js.map +0 -1
- package/dist/hooks/deleteFromStripe.d.ts +0 -7
- package/dist/hooks/deleteFromStripe.js.map +0 -1
- package/dist/hooks/syncExistingWithStripe.d.ts +0 -7
- package/dist/hooks/syncExistingWithStripe.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/routes/rest.d.ts +0 -9
- package/dist/routes/rest.js.map +0 -1
- package/dist/routes/webhooks.d.ts +0 -11
- package/dist/routes/webhooks.js.map +0 -1
- package/dist/types.d.ts +0 -44
- package/dist/types.js.map +0 -1
- package/dist/ui/LinkToDoc.d.ts +0 -7
- package/dist/ui/LinkToDoc.js.map +0 -1
- package/dist/utilities/deepen.d.ts +0 -1
- package/dist/utilities/deepen.js.map +0 -1
- package/dist/utilities/stripeProxy.d.ts +0 -2
- package/dist/utilities/stripeProxy.js.map +0 -1
- package/dist/webhooks/handleCreatedOrUpdated.d.ts +0 -7
- package/dist/webhooks/handleCreatedOrUpdated.js.map +0 -1
- package/dist/webhooks/handleDeleted.d.ts +0 -7
- package/dist/webhooks/handleDeleted.js.map +0 -1
- package/dist/webhooks/index.d.ts +0 -2
- package/dist/webhooks/index.js.map +0 -1
|
@@ -1,130 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 (g && (g = 0, op[0] && (_ = 0)), _) 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 };
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createNewInStripe", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createNewInStripe;
|
|
36
9
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
syncConfig = sync === null || sync === void 0 ? void 0 : sync.find(function (conf) { return conf.collection === collectionSlug_1; });
|
|
74
|
-
if (!syncConfig) return [3 /*break*/, 9];
|
|
75
|
-
syncedFields = syncConfig.fields.reduce(function (acc, field) {
|
|
76
|
-
var fieldPath = field.fieldPath, stripeProperty = field.stripeProperty;
|
|
10
|
+
});
|
|
11
|
+
const _errors = require("payload/errors");
|
|
12
|
+
const _stripe = /*#__PURE__*/ _interop_require_default(require("stripe"));
|
|
13
|
+
const _deepen = require("../utilities/deepen");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
20
|
+
const stripe = new _stripe.default(stripeSecretKey || '', {
|
|
21
|
+
apiVersion: '2022-08-01'
|
|
22
|
+
});
|
|
23
|
+
const createNewInStripe = async (args)=>{
|
|
24
|
+
const { collection, data, operation, req, stripeConfig } = args;
|
|
25
|
+
const { logs, sync } = stripeConfig || {};
|
|
26
|
+
const payload = req?.payload;
|
|
27
|
+
const dataRef = data || {};
|
|
28
|
+
if (process.env.NODE_ENV === 'test') {
|
|
29
|
+
dataRef.stripeID = 'test';
|
|
30
|
+
return dataRef;
|
|
31
|
+
}
|
|
32
|
+
if (payload) {
|
|
33
|
+
if (data?.skipSync) {
|
|
34
|
+
if (logs) payload.logger.info(`Bypassing collection-level hooks.`);
|
|
35
|
+
} else {
|
|
36
|
+
// initialize as 'false' so that all Payload admin events sync to Stripe
|
|
37
|
+
// then conditionally set to 'true' to for events that originate from webhooks
|
|
38
|
+
// this will prevent webhook events from triggering an unnecessary sync / infinite loop
|
|
39
|
+
dataRef.skipSync = false;
|
|
40
|
+
const { slug: collectionSlug } = collection || {};
|
|
41
|
+
const syncConfig = sync?.find((conf)=>conf.collection === collectionSlug);
|
|
42
|
+
if (syncConfig) {
|
|
43
|
+
// combine all fields of this object and match their respective values within the document
|
|
44
|
+
let syncedFields = syncConfig.fields.reduce((acc, field)=>{
|
|
45
|
+
const { fieldPath, stripeProperty } = field;
|
|
77
46
|
acc[stripeProperty] = dataRef[fieldPath];
|
|
78
47
|
return acc;
|
|
79
48
|
}, {});
|
|
80
|
-
syncedFields = (0,
|
|
81
|
-
if (
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
stripeResource = _d.sent();
|
|
115
|
-
if (logs)
|
|
116
|
-
payload.logger.info("\u2705 Successfully created new '".concat(syncConfig.stripeResourceType, "' resource in Stripe with ID: '").concat(stripeResource.id, "'."));
|
|
117
|
-
dataRef.stripeID = stripeResource.id;
|
|
118
|
-
// IMPORTANT: this is to prevent sync in the "afterChange" hook
|
|
119
|
-
dataRef.skipSync = true;
|
|
120
|
-
return [3 /*break*/, 9];
|
|
121
|
-
case 8:
|
|
122
|
-
error_2 = _d.sent();
|
|
123
|
-
msg = error_2 instanceof Error ? error_2.message : error_2;
|
|
124
|
-
throw new errors_1.APIError("Failed to create new '".concat(syncConfig.stripeResourceType, "' resource in Stripe: ").concat(msg));
|
|
125
|
-
case 9: return [2 /*return*/, dataRef];
|
|
49
|
+
syncedFields = (0, _deepen.deepen)(syncedFields);
|
|
50
|
+
if (operation === 'update') {
|
|
51
|
+
if (logs) payload.logger.info(`A '${collectionSlug}' document has changed in Payload with ID: '${data?.id}', syncing with Stripe...`);
|
|
52
|
+
// NOTE: the Stripe document will be created in the "afterChange" hook, so create a new stripe document here if no stripeID exists
|
|
53
|
+
if (!dataRef.stripeID) {
|
|
54
|
+
try {
|
|
55
|
+
// NOTE: Typed as "any" because the "create" method is not standard across all Stripe resources
|
|
56
|
+
const stripeResource = await stripe?.[syncConfig.stripeResourceType]?.create(syncedFields);
|
|
57
|
+
if (logs) payload.logger.info(`✅ Successfully created new '${syncConfig.stripeResourceType}' resource in Stripe with ID: '${stripeResource.id}'.`);
|
|
58
|
+
dataRef.stripeID = stripeResource.id;
|
|
59
|
+
// NOTE: this is to prevent sync in the "afterChange" hook
|
|
60
|
+
dataRef.skipSync = true;
|
|
61
|
+
} catch (error) {
|
|
62
|
+
const msg = error instanceof Error ? error.message : error;
|
|
63
|
+
if (logs) payload.logger.error(`- Error creating Stripe document: ${msg}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (operation === 'create') {
|
|
68
|
+
if (logs) payload.logger.info(`A new '${collectionSlug}' document was created in Payload with ID: '${data?.id}', syncing with Stripe...`);
|
|
69
|
+
try {
|
|
70
|
+
if (logs) payload.logger.info(`- Creating new '${syncConfig.stripeResourceType}' resource in Stripe...`);
|
|
71
|
+
// NOTE: Typed as "any" because the "create" method is not standard across all Stripe resources
|
|
72
|
+
const stripeResource = await stripe?.[syncConfig.stripeResourceType]?.create(syncedFields);
|
|
73
|
+
if (logs) payload.logger.info(`✅ Successfully created new '${syncConfig.stripeResourceType}' resource in Stripe with ID: '${stripeResource.id}'.`);
|
|
74
|
+
dataRef.stripeID = stripeResource.id;
|
|
75
|
+
// IMPORTANT: this is to prevent sync in the "afterChange" hook
|
|
76
|
+
dataRef.skipSync = true;
|
|
77
|
+
} catch (error) {
|
|
78
|
+
const msg = error instanceof Error ? error.message : error;
|
|
79
|
+
throw new _errors.APIError(`Failed to create new '${syncConfig.stripeResourceType}' resource in Stripe: ${msg}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
126
83
|
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
84
|
+
}
|
|
85
|
+
return dataRef;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9jcmVhdGVOZXdJblN0cmlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25CZWZvcmVWYWxpZGF0ZUhvb2ssIENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IFN0cmlwZSBmcm9tICdzdHJpcGUnXG5cbmltcG9ydCB0eXBlIHsgU3RyaXBlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGRlZXBlbiB9IGZyb20gJy4uL3V0aWxpdGllcy9kZWVwZW4nXG5cbmNvbnN0IHN0cmlwZVNlY3JldEtleSA9IHByb2Nlc3MuZW52LlNUUklQRV9TRUNSRVRfS0VZXG5jb25zdCBzdHJpcGUgPSBuZXcgU3RyaXBlKHN0cmlwZVNlY3JldEtleSB8fCAnJywgeyBhcGlWZXJzaW9uOiAnMjAyMi0wOC0wMScgfSlcblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbkJlZm9yZVZhbGlkYXRlSG9va1dpdGhBcmdzID0gKFxuICBhcmdzOiBQYXJhbWV0ZXJzPENvbGxlY3Rpb25CZWZvcmVWYWxpZGF0ZUhvb2s+WzBdICYge1xuICAgIGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uQ29uZmlnXG4gICAgc3RyaXBlQ29uZmlnPzogU3RyaXBlQ29uZmlnXG4gIH0sXG4pID0+IHZvaWRcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5ld0luU3RyaXBlOiBDb2xsZWN0aW9uQmVmb3JlVmFsaWRhdGVIb29rV2l0aEFyZ3MgPSBhc3luYyAoYXJncykgPT4ge1xuICBjb25zdCB7IGNvbGxlY3Rpb24sIGRhdGEsIG9wZXJhdGlvbiwgcmVxLCBzdHJpcGVDb25maWcgfSA9IGFyZ3NcblxuICBjb25zdCB7IGxvZ3MsIHN5bmMgfSA9IHN0cmlwZUNvbmZpZyB8fCB7fVxuXG4gIGNvbnN0IHBheWxvYWQgPSByZXE/LnBheWxvYWRcblxuICBjb25zdCBkYXRhUmVmID0gZGF0YSB8fCB7fVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gICAgZGF0YVJlZi5zdHJpcGVJRCA9ICd0ZXN0J1xuICAgIHJldHVybiBkYXRhUmVmXG4gIH1cblxuICBpZiAocGF5bG9hZCkge1xuICAgIGlmIChkYXRhPy5za2lwU3luYykge1xuICAgICAgaWYgKGxvZ3MpIHBheWxvYWQubG9nZ2VyLmluZm8oYEJ5cGFzc2luZyBjb2xsZWN0aW9uLWxldmVsIGhvb2tzLmApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluaXRpYWxpemUgYXMgJ2ZhbHNlJyBzbyB0aGF0IGFsbCBQYXlsb2FkIGFkbWluIGV2ZW50cyBzeW5jIHRvIFN0cmlwZVxuICAgICAgLy8gdGhlbiBjb25kaXRpb25hbGx5IHNldCB0byAndHJ1ZScgdG8gZm9yIGV2ZW50cyB0aGF0IG9yaWdpbmF0ZSBmcm9tIHdlYmhvb2tzXG4gICAgICAvLyB0aGlzIHdpbGwgcHJldmVudCB3ZWJob29rIGV2ZW50cyBmcm9tIHRyaWdnZXJpbmcgYW4gdW5uZWNlc3Nhcnkgc3luYyAvIGluZmluaXRlIGxvb3BcbiAgICAgIGRhdGFSZWYuc2tpcFN5bmMgPSBmYWxzZVxuXG4gICAgICBjb25zdCB7IHNsdWc6IGNvbGxlY3Rpb25TbHVnIH0gPSBjb2xsZWN0aW9uIHx8IHt9XG4gICAgICBjb25zdCBzeW5jQ29uZmlnID0gc3luYz8uZmluZCgoY29uZikgPT4gY29uZi5jb2xsZWN0aW9uID09PSBjb2xsZWN0aW9uU2x1ZylcblxuICAgICAgaWYgKHN5bmNDb25maWcpIHtcbiAgICAgICAgLy8gY29tYmluZSBhbGwgZmllbGRzIG9mIHRoaXMgb2JqZWN0IGFuZCBtYXRjaCB0aGVpciByZXNwZWN0aXZlIHZhbHVlcyB3aXRoaW4gdGhlIGRvY3VtZW50XG4gICAgICAgIGxldCBzeW5jZWRGaWVsZHMgPSBzeW5jQ29uZmlnLmZpZWxkcy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZmllbGRQYXRoLCBzdHJpcGVQcm9wZXJ0eSB9ID0gZmllbGRcblxuICAgICAgICAgICAgYWNjW3N0cmlwZVByb3BlcnR5XSA9IGRhdGFSZWZbZmllbGRQYXRoXVxuICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICAgKVxuXG4gICAgICAgIHN5bmNlZEZpZWxkcyA9IGRlZXBlbihzeW5jZWRGaWVsZHMpXG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICBpZiAobG9ncylcbiAgICAgICAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgIGBBICcke2NvbGxlY3Rpb25TbHVnfScgZG9jdW1lbnQgaGFzIGNoYW5nZWQgaW4gUGF5bG9hZCB3aXRoIElEOiAnJHtkYXRhPy5pZH0nLCBzeW5jaW5nIHdpdGggU3RyaXBlLi4uYCxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgIC8vIE5PVEU6IHRoZSBTdHJpcGUgZG9jdW1lbnQgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBcImFmdGVyQ2hhbmdlXCIgaG9vaywgc28gY3JlYXRlIGEgbmV3IHN0cmlwZSBkb2N1bWVudCBoZXJlIGlmIG5vIHN0cmlwZUlEIGV4aXN0c1xuICAgICAgICAgIGlmICghZGF0YVJlZi5zdHJpcGVJRCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gTk9URTogVHlwZWQgYXMgXCJhbnlcIiBiZWNhdXNlIHRoZSBcImNyZWF0ZVwiIG1ldGhvZCBpcyBub3Qgc3RhbmRhcmQgYWNyb3NzIGFsbCBTdHJpcGUgcmVzb3VyY2VzXG4gICAgICAgICAgICAgIGNvbnN0IHN0cmlwZVJlc291cmNlID0gYXdhaXQgc3RyaXBlPy5bc3luY0NvbmZpZy5zdHJpcGVSZXNvdXJjZVR5cGVdPy5jcmVhdGUoXG4gICAgICAgICAgICAgICAgc3luY2VkRmllbGRzIGFzIGFueSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChsb2dzKVxuICAgICAgICAgICAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICBg4pyFIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIG5ldyAnJHtzeW5jQ29uZmlnLnN0cmlwZVJlc291cmNlVHlwZX0nIHJlc291cmNlIGluIFN0cmlwZSB3aXRoIElEOiAnJHtzdHJpcGVSZXNvdXJjZS5pZH0nLmAsXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGRhdGFSZWYuc3RyaXBlSUQgPSBzdHJpcGVSZXNvdXJjZS5pZFxuXG4gICAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgaXMgdG8gcHJldmVudCBzeW5jIGluIHRoZSBcImFmdGVyQ2hhbmdlXCIgaG9va1xuICAgICAgICAgICAgICBkYXRhUmVmLnNraXBTeW5jID0gdHJ1ZVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgY29uc3QgbXNnID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvclxuICAgICAgICAgICAgICBpZiAobG9ncykgcGF5bG9hZC5sb2dnZXIuZXJyb3IoYC0gRXJyb3IgY3JlYXRpbmcgU3RyaXBlIGRvY3VtZW50OiAke21zZ31gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdjcmVhdGUnKSB7XG4gICAgICAgICAgaWYgKGxvZ3MpXG4gICAgICAgICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICBgQSBuZXcgJyR7Y29sbGVjdGlvblNsdWd9JyBkb2N1bWVudCB3YXMgY3JlYXRlZCBpbiBQYXlsb2FkIHdpdGggSUQ6ICcke2RhdGE/LmlkfScsIHN5bmNpbmcgd2l0aCBTdHJpcGUuLi5gLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChsb2dzKVxuICAgICAgICAgICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgIGAtIENyZWF0aW5nIG5ldyAnJHtzeW5jQ29uZmlnLnN0cmlwZVJlc291cmNlVHlwZX0nIHJlc291cmNlIGluIFN0cmlwZS4uLmAsXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgLy8gTk9URTogVHlwZWQgYXMgXCJhbnlcIiBiZWNhdXNlIHRoZSBcImNyZWF0ZVwiIG1ldGhvZCBpcyBub3Qgc3RhbmRhcmQgYWNyb3NzIGFsbCBTdHJpcGUgcmVzb3VyY2VzXG4gICAgICAgICAgICBjb25zdCBzdHJpcGVSZXNvdXJjZSA9IGF3YWl0IHN0cmlwZT8uW3N5bmNDb25maWcuc3RyaXBlUmVzb3VyY2VUeXBlXT8uY3JlYXRlKFxuICAgICAgICAgICAgICBzeW5jZWRGaWVsZHMgYXMgYW55LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAobG9ncylcbiAgICAgICAgICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICBg4pyFIFN1Y2Nlc3NmdWxseSBjcmVhdGVkIG5ldyAnJHtzeW5jQ29uZmlnLnN0cmlwZVJlc291cmNlVHlwZX0nIHJlc291cmNlIGluIFN0cmlwZSB3aXRoIElEOiAnJHtzdHJpcGVSZXNvdXJjZS5pZH0nLmAsXG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgZGF0YVJlZi5zdHJpcGVJRCA9IHN0cmlwZVJlc291cmNlLmlkXG5cbiAgICAgICAgICAgIC8vIElNUE9SVEFOVDogdGhpcyBpcyB0byBwcmV2ZW50IHN5bmMgaW4gdGhlIFwiYWZ0ZXJDaGFuZ2VcIiBob29rXG4gICAgICAgICAgICBkYXRhUmVmLnNraXBTeW5jID0gdHJ1ZVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gY3JlYXRlIG5ldyAnJHtzeW5jQ29uZmlnLnN0cmlwZVJlc291cmNlVHlwZX0nIHJlc291cmNlIGluIFN0cmlwZTogJHttc2d9YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YVJlZlxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZU5ld0luU3RyaXBlIiwic3RyaXBlU2VjcmV0S2V5IiwicHJvY2VzcyIsImVudiIsIlNUUklQRV9TRUNSRVRfS0VZIiwic3RyaXBlIiwiU3RyaXBlIiwiYXBpVmVyc2lvbiIsImFyZ3MiLCJjb2xsZWN0aW9uIiwiZGF0YSIsIm9wZXJhdGlvbiIsInJlcSIsInN0cmlwZUNvbmZpZyIsImxvZ3MiLCJzeW5jIiwicGF5bG9hZCIsImRhdGFSZWYiLCJOT0RFX0VOViIsInN0cmlwZUlEIiwic2tpcFN5bmMiLCJsb2dnZXIiLCJpbmZvIiwic2x1ZyIsImNvbGxlY3Rpb25TbHVnIiwic3luY0NvbmZpZyIsImZpbmQiLCJjb25mIiwic3luY2VkRmllbGRzIiwiZmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJmaWVsZFBhdGgiLCJzdHJpcGVQcm9wZXJ0eSIsImRlZXBlbiIsImlkIiwic3RyaXBlUmVzb3VyY2UiLCJzdHJpcGVSZXNvdXJjZVR5cGUiLCJjcmVhdGUiLCJlcnJvciIsIm1zZyIsIkVycm9yIiwibWVzc2FnZSIsIkFQSUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1CYUE7OztlQUFBQTs7O3dCQWpCWTsrREFDTjt3QkFJSTs7Ozs7O0FBRXZCLE1BQU1DLGtCQUFrQkMsUUFBUUMsR0FBRyxDQUFDQyxpQkFBaUI7QUFDckQsTUFBTUMsU0FB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
|
|
@@ -1,91 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "deleteFromStripe", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return deleteFromStripe;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _errors = require("payload/errors");
|
|
12
|
+
const _stripe = /*#__PURE__*/ _interop_require_default(require("stripe"));
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
19
|
+
const stripe = new _stripe.default(stripeSecretKey || '', {
|
|
20
|
+
apiVersion: '2022-08-01'
|
|
21
|
+
});
|
|
22
|
+
const deleteFromStripe = async (args)=>{
|
|
23
|
+
const { collection, doc, req, stripeConfig } = args;
|
|
24
|
+
const { logs, sync } = stripeConfig || {};
|
|
25
|
+
const { payload } = req;
|
|
26
|
+
const { slug: collectionSlug } = collection || {};
|
|
27
|
+
if (logs) payload.logger.info(`Document with ID: '${doc?.id}' in collection: '${collectionSlug}' has been deleted, deleting from Stripe...`);
|
|
28
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
29
|
+
if (logs) payload.logger.info(`- Deleting Stripe document with ID: '${doc.stripeID}'...`);
|
|
30
|
+
const syncConfig = sync?.find((conf)=>conf.collection === collectionSlug);
|
|
31
|
+
if (syncConfig) {
|
|
32
|
+
try {
|
|
33
|
+
const found = await stripe?.[syncConfig.stripeResourceType]?.retrieve(doc.stripeID);
|
|
34
|
+
if (found) {
|
|
35
|
+
await stripe?.[syncConfig.stripeResourceType]?.del(doc.stripeID);
|
|
36
|
+
if (logs) payload.logger.info(`✅ Successfully deleted Stripe document with ID: '${doc.stripeID}'.`);
|
|
37
|
+
} else {
|
|
38
|
+
if (logs) payload.logger.info(`- Stripe document with ID: '${doc.stripeID}' not found, skipping...`);
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
const msg = error instanceof Error ? error.message : error;
|
|
42
|
+
throw new _errors.APIError(`Failed to delete Stripe document with ID: '${doc.stripeID}': ${msg}`);
|
|
32
43
|
}
|
|
33
|
-
|
|
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 };
|
|
44
|
+
}
|
|
36
45
|
}
|
|
37
46
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.deleteFromStripe = void 0;
|
|
43
|
-
var errors_1 = require("payload/errors");
|
|
44
|
-
var stripe_1 = __importDefault(require("stripe"));
|
|
45
|
-
var stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
46
|
-
var stripe = new stripe_1.default(stripeSecretKey || '', { apiVersion: '2022-08-01' });
|
|
47
|
-
var deleteFromStripe = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
-
var req, doc, stripeConfig, collection, _a, logs, sync, payload, collectionSlug, syncConfig, found, error_1, msg;
|
|
49
|
-
var _b, _c;
|
|
50
|
-
return __generator(this, function (_d) {
|
|
51
|
-
switch (_d.label) {
|
|
52
|
-
case 0:
|
|
53
|
-
req = args.req, doc = args.doc, stripeConfig = args.stripeConfig, collection = args.collection;
|
|
54
|
-
_a = stripeConfig || {}, logs = _a.logs, sync = _a.sync;
|
|
55
|
-
payload = req.payload;
|
|
56
|
-
collectionSlug = (collection || {}).slug;
|
|
57
|
-
if (logs)
|
|
58
|
-
payload.logger.info("Document with ID: '".concat(doc === null || doc === void 0 ? void 0 : doc.id, "' in collection: '").concat(collectionSlug, "' has been deleted, deleting from Stripe..."));
|
|
59
|
-
if (!(process.env.NODE_ENV !== 'test')) return [3 /*break*/, 7];
|
|
60
|
-
if (logs)
|
|
61
|
-
payload.logger.info("- Deleting Stripe document with ID: '".concat(doc.stripeID, "'..."));
|
|
62
|
-
syncConfig = sync === null || sync === void 0 ? void 0 : sync.find(function (conf) { return conf.collection === collectionSlug; });
|
|
63
|
-
if (!syncConfig) return [3 /*break*/, 7];
|
|
64
|
-
_d.label = 1;
|
|
65
|
-
case 1:
|
|
66
|
-
_d.trys.push([1, 6, , 7]);
|
|
67
|
-
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.stripeResourceType]) === null || _b === void 0 ? void 0 : _b.retrieve(doc.stripeID))];
|
|
68
|
-
case 2:
|
|
69
|
-
found = _d.sent();
|
|
70
|
-
if (!found) return [3 /*break*/, 4];
|
|
71
|
-
return [4 /*yield*/, ((_c = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.stripeResourceType]) === null || _c === void 0 ? void 0 : _c.del(doc.stripeID))];
|
|
72
|
-
case 3:
|
|
73
|
-
_d.sent();
|
|
74
|
-
if (logs)
|
|
75
|
-
payload.logger.info("\u2705 Successfully deleted Stripe document with ID: '".concat(doc.stripeID, "'."));
|
|
76
|
-
return [3 /*break*/, 5];
|
|
77
|
-
case 4:
|
|
78
|
-
if (logs)
|
|
79
|
-
payload.logger.info("- Stripe document with ID: '".concat(doc.stripeID, "' not found, skipping..."));
|
|
80
|
-
_d.label = 5;
|
|
81
|
-
case 5: return [3 /*break*/, 7];
|
|
82
|
-
case 6:
|
|
83
|
-
error_1 = _d.sent();
|
|
84
|
-
msg = error_1 instanceof Error ? error_1.message : error_1;
|
|
85
|
-
throw new errors_1.APIError("Failed to delete Stripe document with ID: '".concat(doc.stripeID, "': ").concat(msg));
|
|
86
|
-
case 7: return [2 /*return*/];
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}); };
|
|
90
|
-
exports.deleteFromStripe = deleteFromStripe;
|
|
91
|
-
//# sourceMappingURL=deleteFromStripe.js.map
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9kZWxldGVGcm9tU3RyaXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkFmdGVyRGVsZXRlSG9vaywgQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgU3RyaXBlIGZyb20gJ3N0cmlwZSdcblxuaW1wb3J0IHR5cGUgeyBTdHJpcGVDb25maWcgfSBmcm9tICcuLi90eXBlcydcblxuY29uc3Qgc3RyaXBlU2VjcmV0S2V5ID0gcHJvY2Vzcy5lbnYuU1RSSVBFX1NFQ1JFVF9LRVlcbmNvbnN0IHN0cmlwZSA9IG5ldyBTdHJpcGUoc3RyaXBlU2VjcmV0S2V5IHx8ICcnLCB7IGFwaVZlcnNpb246ICcyMDIyLTA4LTAxJyB9KVxuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uQWZ0ZXJEZWxldGVIb29rV2l0aEFyZ3MgPSAoXG4gIGFyZ3M6IFBhcmFtZXRlcnM8Q29sbGVjdGlvbkFmdGVyRGVsZXRlSG9vaz5bMF0gJiB7XG4gICAgY29sbGVjdGlvbj86IENvbGxlY3Rpb25Db25maWdcbiAgICBzdHJpcGVDb25maWc/OiBTdHJpcGVDb25maWdcbiAgfSxcbikgPT4gdm9pZFxuXG5leHBvcnQgY29uc3QgZGVsZXRlRnJvbVN0cmlwZTogQ29sbGVjdGlvbkFmdGVyRGVsZXRlSG9va1dpdGhBcmdzID0gYXN5bmMgKGFyZ3MpID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9uLCBkb2MsIHJlcSwgc3RyaXBlQ29uZmlnIH0gPSBhcmdzXG5cbiAgY29uc3QgeyBsb2dzLCBzeW5jIH0gPSBzdHJpcGVDb25maWcgfHwge31cblxuICBjb25zdCB7IHBheWxvYWQgfSA9IHJlcVxuICBjb25zdCB7IHNsdWc6IGNvbGxlY3Rpb25TbHVnIH0gPSBjb2xsZWN0aW9uIHx8IHt9XG5cbiAgaWYgKGxvZ3MpXG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyhcbiAgICAgIGBEb2N1bWVudCB3aXRoIElEOiAnJHtkb2M/LmlkfScgaW4gY29sbGVjdGlvbjogJyR7Y29sbGVjdGlvblNsdWd9JyBoYXMgYmVlbiBkZWxldGVkLCBkZWxldGluZyBmcm9tIFN0cmlwZS4uLmAsXG4gICAgKVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG4gICAgaWYgKGxvZ3MpIHBheWxvYWQubG9nZ2VyLmluZm8oYC0gRGVsZXRpbmcgU3RyaXBlIGRvY3VtZW50IHdpdGggSUQ6ICcke2RvYy5zdHJpcGVJRH0nLi4uYClcblxuICAgIGNvbnN0IHN5bmNDb25maWcgPSBzeW5jPy5maW5kKChjb25mKSA9PiBjb25mLmNvbGxlY3Rpb24gPT09IGNvbGxlY3Rpb25TbHVnKVxuXG4gICAgaWYgKHN5bmNDb25maWcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gYXdhaXQgc3RyaXBlPy5bc3luY0NvbmZpZy5zdHJpcGVSZXNvdXJjZVR5cGVdPy5yZXRyaWV2ZShkb2Muc3RyaXBlSUQpXG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgYXdhaXQgc3RyaXBlPy5bc3luY0NvbmZpZy5zdHJpcGVSZXNvdXJjZVR5cGVdPy5kZWwoZG9jLnN0cmlwZUlEKVxuICAgICAgICAgIGlmIChsb2dzKVxuICAgICAgICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgYOKchSBTdWNjZXNzZnVsbHkgZGVsZXRlZCBTdHJpcGUgZG9jdW1lbnQgd2l0aCBJRDogJyR7ZG9jLnN0cmlwZUlEfScuYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobG9ncylcbiAgICAgICAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgIGAtIFN0cmlwZSBkb2N1bWVudCB3aXRoIElEOiAnJHtkb2Muc3RyaXBlSUR9JyBub3QgZm91bmQsIHNraXBwaW5nLi4uYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgbXNnID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvclxuICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgU3RyaXBlIGRvY3VtZW50IHdpdGggSUQ6ICcke2RvYy5zdHJpcGVJRH0nOiAke21zZ31gKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlbGV0ZUZyb21TdHJpcGUiLCJzdHJpcGVTZWNyZXRLZXkiLCJwcm9jZXNzIiwiZW52IiwiU1RSSVBFX1NFQ1JFVF9LRVkiLCJzdHJpcGUiLCJTdHJpcGUiLCJhcGlWZXJzaW9uIiwiYXJncyIsImNvbGxlY3Rpb24iLCJkb2MiLCJyZXEiLCJzdHJpcGVDb25maWciLCJsb2dzIiwic3luYyIsInBheWxvYWQiLCJzbHVnIiwiY29sbGVjdGlvblNsdWciLCJsb2dnZXIiLCJpbmZvIiwiaWQiLCJOT0RFX0VOViIsInN0cmlwZUlEIiwic3luY0NvbmZpZyIsImZpbmQiLCJjb25mIiwiZm91bmQiLCJzdHJpcGVSZXNvdXJjZVR5cGUiLCJyZXRyaWV2ZSIsImRlbCIsImVycm9yIiwibXNnIiwiRXJyb3IiLCJtZXNzYWdlIiwiQVBJRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBaUJhQTs7O2VBQUFBOzs7d0JBZlk7K0RBQ047Ozs7OztBQUluQixNQUFNQyxrQkFBa0JDLFFBQVFDLEdBQUcsQ0FBQ0MsaUJBQWlCO0FBQ3JELE1BQU1DLFNBQVMsSUFBSUMsZUFBTSxDQUFDTCxtQkFBbUIsSUFBSTtJQUFFTSxZQUFZO0FBQWE7QUFTckUsTUFBTVAsbUJBQXNELE9BQU9RO0lBQ3hFLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsWUFBWSxFQUFFLEdBQUdKO0lBRS9DLE1BQU0sRUFBRUssSUFBSSxFQUFFQyxJQUFJLEVBQUUsR0FBR0YsZ0JBQWdCLENBQUM7SUFFeEMsTUFBTSxFQUFFRyxPQUFPLEVBQUUsR0FBR0o7SUFDcEIsTUFBTSxFQUFFSyxNQUFNQyxjQUFjLEVBQUUsR0FBR1IsY0FBYyxDQUFDO0lBRWhELElBQUlJLE1BQ0ZFLFFBQVFHLE1BQU0sQ0FBQ0MsSUFBSSxDQUNqQixDQUFDLG1CQUFtQixFQUFFVCxLQUFLVSxHQUFHLGtCQUFrQixFQUFFSCxlQUFlLDJDQUEyQyxDQUFDO0lBR2pILElBQUlmLFFBQVFDLEdBQUcsQ0FBQ2tCLFFBQVEsS0FBSyxRQUFRO1FBQ25DLElBQUlSLE1BQU1FLFFBQVFHLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMscUNBQXFDLEVBQUVULElBQUlZLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFeEYsTUFBTUMsYUFBYVQsTUFBTVUsS0FBSyxDQUFDQyxPQUFTQSxLQUFLaEIsVUFBVSxLQUFLUTtRQUU1RCxJQUFJTSxZQUFZO1lBQ2QsSUFBSTtnQkFDRixNQUFNRyxRQUFRLE1BQU1yQixRQUFRLENBQUNrQixXQUFXSSxrQkFBa0IsQ0FBQyxFQUFFQyxTQUFTbEIsSUFBSVksUUFBUTtnQkFFbEYsSUFBSUksT0FBTztvQkFDVCxNQUFNckIsUUFBUSxDQUFDa0IsV0FBV0ksa0JBQWtCLENBQUMsRUFBRUUsSUFBSW5CLElBQUlZLFFBQVE7b0JBQy9ELElBQUlULE1BQ0ZFLFFBQVFHLE1BQU0sQ0FBQ0MsSUFBSSxDQUNqQixDQUFDLGlEQUFpRCxFQUFFVCxJQUFJWSxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUUxRSxPQUFPO29CQUNMLElBQUlULE1BQ0ZFLFFBQVFHLE1BQU0sQ0FBQ0MsSUFBSSxDQUNqQixDQUFDLDRCQUE0QixFQUFFVCxJQUFJWSxRQUFRLENBQUMsd0JBQXdCLENBQUM7Z0JBRTNFO1lBQ0YsRUFBRSxPQUFPUSxPQUFnQjtnQkFDdkIsTUFBTUMsTUFBTUQsaUJBQWlCRSxRQUFRRixNQUFNRyxPQUFPLEdBQUdIO2dCQUNyRCxNQUFNLElBQUlJLGdCQUFRLENBQUMsQ0FBQywyQ0FBMkMsRUFBRXhCLElBQUlZLFFBQVEsQ0FBQyxHQUFHLEVBQUVTLElBQUksQ0FBQztZQUMxRjtRQUNGO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,99 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 (g && (g = 0, op[0] && (_ = 0)), _) 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 };
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "syncExistingWithStripe", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return syncExistingWithStripe;
|
|
36
9
|
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
syncedFields = syncConfig.fields.reduce(function (acc, field) {
|
|
63
|
-
var fieldPath = field.fieldPath, stripeProperty = field.stripeProperty;
|
|
10
|
+
});
|
|
11
|
+
const _errors = require("payload/errors");
|
|
12
|
+
const _stripe = /*#__PURE__*/ _interop_require_default(require("stripe"));
|
|
13
|
+
const _deepen = require("../utilities/deepen");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
20
|
+
const stripe = new _stripe.default(stripeSecretKey || '', {
|
|
21
|
+
apiVersion: '2022-08-01'
|
|
22
|
+
});
|
|
23
|
+
const syncExistingWithStripe = async (args)=>{
|
|
24
|
+
const { collection, data, operation, originalDoc, req, stripeConfig } = args;
|
|
25
|
+
const { logs, sync } = stripeConfig || {};
|
|
26
|
+
const { payload } = req;
|
|
27
|
+
const { slug: collectionSlug } = collection || {};
|
|
28
|
+
if (process.env.NODE_ENV !== 'test' && !data.skipSync) {
|
|
29
|
+
const syncConfig = sync?.find((conf)=>conf.collection === collectionSlug);
|
|
30
|
+
if (syncConfig) {
|
|
31
|
+
if (operation === 'update') {
|
|
32
|
+
// combine all fields of this object and match their respective values within the document
|
|
33
|
+
let syncedFields = syncConfig.fields.reduce((acc, field)=>{
|
|
34
|
+
const { fieldPath, stripeProperty } = field;
|
|
64
35
|
acc[stripeProperty] = data[fieldPath];
|
|
65
36
|
return acc;
|
|
66
37
|
}, {});
|
|
67
|
-
syncedFields = (0,
|
|
68
|
-
if (logs)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
payload.logger.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
stripeResource = _c.sent();
|
|
84
|
-
if (logs)
|
|
85
|
-
payload.logger.info("\u2705 Successfully synced Stripe resource with ID: '".concat(stripeResource.id, "'."));
|
|
86
|
-
return [3 /*break*/, 5];
|
|
87
|
-
case 4:
|
|
88
|
-
error_1 = _c.sent();
|
|
89
|
-
msg = error_1 instanceof Error ? error_1.message : error_1;
|
|
90
|
-
throw new errors_1.APIError("Failed to sync document with ID: '".concat(data.id, "' to Stripe: ").concat(msg));
|
|
91
|
-
case 5:
|
|
92
|
-
// Set back to 'false' so that all changes continue to sync to Stripe, see note in './createNewInStripe.ts'
|
|
93
|
-
data.skipSync = false;
|
|
94
|
-
return [2 /*return*/, data];
|
|
38
|
+
syncedFields = (0, _deepen.deepen)(syncedFields);
|
|
39
|
+
if (logs) payload.logger.info(`A '${collectionSlug}' document has changed in Payload with ID: '${originalDoc?._id}', syncing with Stripe...`);
|
|
40
|
+
if (!data.stripeID) {
|
|
41
|
+
// NOTE: the "beforeValidate" hook populates this
|
|
42
|
+
if (logs) payload.logger.error(`- There is no Stripe ID for this document, skipping.`);
|
|
43
|
+
} else {
|
|
44
|
+
if (logs) payload.logger.info(`- Syncing to Stripe resource with ID: '${data.stripeID}'...`);
|
|
45
|
+
try {
|
|
46
|
+
const stripeResource = await stripe?.[syncConfig?.stripeResourceType]?.update(data.stripeID, syncedFields);
|
|
47
|
+
if (logs) payload.logger.info(`✅ Successfully synced Stripe resource with ID: '${stripeResource.id}'.`);
|
|
48
|
+
} catch (error) {
|
|
49
|
+
const msg = error instanceof Error ? error.message : error;
|
|
50
|
+
throw new _errors.APIError(`Failed to sync document with ID: '${data.id}' to Stripe: ${msg}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
95
54
|
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
55
|
+
}
|
|
56
|
+
// Set back to 'false' so that all changes continue to sync to Stripe, see note in './createNewInStripe.ts'
|
|
57
|
+
data.skipSync = false;
|
|
58
|
+
return data;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9zeW5jRXhpc3RpbmdXaXRoU3RyaXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkJlZm9yZUNoYW5nZUhvb2ssIENvbGxlY3Rpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IFN0cmlwZSBmcm9tICdzdHJpcGUnXG5cbmltcG9ydCB0eXBlIHsgU3RyaXBlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGRlZXBlbiB9IGZyb20gJy4uL3V0aWxpdGllcy9kZWVwZW4nXG5cbmNvbnN0IHN0cmlwZVNlY3JldEtleSA9IHByb2Nlc3MuZW52LlNUUklQRV9TRUNSRVRfS0VZXG5jb25zdCBzdHJpcGUgPSBuZXcgU3RyaXBlKHN0cmlwZVNlY3JldEtleSB8fCAnJywgeyBhcGlWZXJzaW9uOiAnMjAyMi0wOC0wMScgfSlcblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbkJlZm9yZUNoYW5nZUhvb2tXaXRoQXJncyA9IChcbiAgYXJnczogUGFyYW1ldGVyczxDb2xsZWN0aW9uQmVmb3JlQ2hhbmdlSG9vaz5bMF0gJiB7XG4gICAgY29sbGVjdGlvbj86IENvbGxlY3Rpb25Db25maWdcbiAgICBzdHJpcGVDb25maWc/OiBTdHJpcGVDb25maWdcbiAgfSxcbikgPT4gdm9pZFxuXG5leHBvcnQgY29uc3Qgc3luY0V4aXN0aW5nV2l0aFN0cmlwZTogQ29sbGVjdGlvbkJlZm9yZUNoYW5nZUhvb2tXaXRoQXJncyA9IGFzeW5jIChhcmdzKSA9PiB7XG4gIGNvbnN0IHsgY29sbGVjdGlvbiwgZGF0YSwgb3BlcmF0aW9uLCBvcmlnaW5hbERvYywgcmVxLCBzdHJpcGVDb25maWcgfSA9IGFyZ3NcblxuICBjb25zdCB7IGxvZ3MsIHN5bmMgfSA9IHN0cmlwZUNvbmZpZyB8fCB7fVxuXG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gcmVxXG5cbiAgY29uc3QgeyBzbHVnOiBjb2xsZWN0aW9uU2x1ZyB9ID0gY29sbGVjdGlvbiB8fCB7fVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnICYmICFkYXRhLnNraXBTeW5jKSB7XG4gICAgY29uc3Qgc3luY0NvbmZpZyA9IHN5bmM/LmZpbmQoKGNvbmYpID0+IGNvbmYuY29sbGVjdGlvbiA9PT0gY29sbGVjdGlvblNsdWcpXG5cbiAgICBpZiAoc3luY0NvbmZpZykge1xuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgLy8gY29tYmluZSBhbGwgZmllbGRzIG9mIHRoaXMgb2JqZWN0IGFuZCBtYXRjaCB0aGVpciByZXNwZWN0aXZlIHZhbHVlcyB3aXRoaW4gdGhlIGRvY3VtZW50XG4gICAgICAgIGxldCBzeW5jZWRGaWVsZHMgPSBzeW5jQ29uZmlnLmZpZWxkcy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZmllbGRQYXRoLCBzdHJpcGVQcm9wZXJ0eSB9ID0gZmllbGRcblxuICAgICAgICAgICAgYWNjW3N0cmlwZVByb3BlcnR5XSA9IGRhdGFbZmllbGRQYXRoXVxuICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICAgKVxuXG4gICAgICAgIHN5bmNlZEZpZWxkcyA9IGRlZXBlbihzeW5jZWRGaWVsZHMpXG5cbiAgICAgICAgaWYgKGxvZ3MpXG4gICAgICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBBICcke2NvbGxlY3Rpb25TbHVnfScgZG9jdW1lbnQgaGFzIGNoYW5nZWQgaW4gUGF5bG9hZCB3aXRoIElEOiAnJHtvcmlnaW5hbERvYz8uX2lkfScsIHN5bmNpbmcgd2l0aCBTdHJpcGUuLi5gLFxuICAgICAgICAgIClcblxuICAgICAgICBpZiAoIWRhdGEuc3RyaXBlSUQpIHtcbiAgICAgICAgICAvLyBOT1RFOiB0aGUgXCJiZWZvcmVWYWxpZGF0ZVwiIGhvb2sgcG9wdWxhdGVzIHRoaXNcbiAgICAgICAgICBpZiAobG9ncykgcGF5bG9hZC5sb2dnZXIuZXJyb3IoYC0gVGhlcmUgaXMgbm8gU3RyaXBlIElEIGZvciB0aGlzIGRvY3VtZW50LCBza2lwcGluZy5gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChsb2dzKVxuICAgICAgICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyhgLSBTeW5jaW5nIHRvIFN0cmlwZSByZXNvdXJjZSB3aXRoIElEOiAnJHtkYXRhLnN0cmlwZUlEfScuLi5gKVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmlwZVJlc291cmNlID0gYXdhaXQgc3RyaXBlPy5bc3luY0NvbmZpZz8uc3RyaXBlUmVzb3VyY2VUeXBlXT8udXBkYXRlKFxuICAgICAgICAgICAgICBkYXRhLnN0cmlwZUlELFxuICAgICAgICAgICAgICBzeW5jZWRGaWVsZHMsXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGlmIChsb2dzKVxuICAgICAgICAgICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgICAgIGDinIUgU3VjY2Vzc2Z1bGx5IHN5bmNlZCBTdHJpcGUgcmVzb3VyY2Ugd2l0aCBJRDogJyR7c3RyaXBlUmVzb3VyY2UuaWR9Jy5gLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogZXJyb3JcbiAgICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcihgRmFpbGVkIHRvIHN5bmMgZG9jdW1lbnQgd2l0aCBJRDogJyR7ZGF0YS5pZH0nIHRvIFN0cmlwZTogJHttc2d9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgYmFjayB0byAnZmFsc2UnIHNvIHRoYXQgYWxsIGNoYW5nZXMgY29udGludWUgdG8gc3luYyB0byBTdHJpcGUsIHNlZSBub3RlIGluICcuL2NyZWF0ZU5ld0luU3RyaXBlLnRzJ1xuICBkYXRhLnNraXBTeW5jID0gZmFsc2VcblxuICByZXR1cm4gZGF0YVxufVxuIl0sIm5hbWVzIjpbInN5bmNFeGlzdGluZ1dpdGhTdHJpcGUiLCJzdHJpcGVTZWNyZXRLZXkiLCJwcm9jZXNzIiwiZW52IiwiU1RSSVBFX1NFQ1JFVF9LRVkiLCJzdHJpcGUiLCJTdHJpcGUiLCJhcGlWZXJzaW9uIiwiYXJncyIsImNvbGxlY3Rpb24iLCJkYXRhIiwib3BlcmF0aW9uIiwib3JpZ2luYWxEb2MiLCJyZXEiLCJzdHJpcGVDb25maWciLCJsb2dzIiwic3luYyIsInBheWxvYWQiLCJzbHVnIiwiY29sbGVjdGlvblNsdWciLCJOT0RFX0VOViIsInNraXBTeW5jIiwic3luY0NvbmZpZyIsImZpbmQiLCJjb25mIiwic3luY2VkRmllbGRzIiwiZmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJmaWVsZFBhdGgiLCJzdHJpcGVQcm9wZXJ0eSIsImRlZXBlbiIsImxvZ2dlciIsImluZm8iLCJfaWQiLCJzdHJpcGVJRCIsImVycm9yIiwic3RyaXBlUmVzb3VyY2UiLCJzdHJpcGVSZXNvdXJjZVR5cGUiLCJ1cGRhdGUiLCJpZCIsIm1zZyIsIkVycm9yIiwibWVzc2FnZSIsIkFQSUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1CYUE7OztlQUFBQTs7O3dCQWpCWTsrREFDTjt3QkFJSTs7Ozs7O0FBRXZCLE1BQU1DLGtCQUFrQkMsUUFBUUMsR0FBRyxDQUFDQyxpQkFBaUI7QUFDckQsTUFBTUMsU0FBUyxJQUFJQyxlQUFNLENBQUNMLG1CQUFtQixJQUFJO0lBQUVNLFlBQVk7QUFBYTtBQVNyRSxNQUFNUCx5QkFBNkQsT0FBT1E7SUFDL0UsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLEdBQUcsRUFBRUMsWUFBWSxFQUFFLEdBQUdOO0lBRXhFLE1BQU0sRUFBRU8sSUFBSSxFQUFFQyxJQUFJLEVBQUUsR0FBR0YsZ0JBQWdCLENBQUM7SUFFeEMsTUFBTSxFQUFFRyxPQUFPLEVBQUUsR0FBR0o7SUFFcEIsTUFBTSxFQUFFSyxNQUFNQyxjQUFjLEVBQUUsR0FBR1YsY0FBYyxDQUFDO0lBRWhELElBQUlQLFFBQVFDLEdBQUcsQ0FBQ2lCLFFBQVEsS0FBSyxVQUFVLENBQUNWLEtBQUtXLFFBQVEsRUFBRTtRQUNyRCxNQUFNQyxhQUFhTixNQUFNTyxLQUFLLENBQUNDLE9BQVNBLEtBQUtmLFVBQVUsS0FBS1U7UUFFNUQsSUFBSUcsWUFBWTtZQUNkLElBQUlYLGNBQWMsVUFBVTtnQkFDMUIsMEZBQTBGO2dCQUMxRixJQUFJYyxlQUFlSCxXQUFXSSxNQUFNLENBQUNDLE1BQU0sQ0FDekMsQ0FBQ0MsS0FBS0M7b0JBQ0osTUFBTSxFQUFFQyxTQUFTLEVBQUVDLGNBQWMsRUFBRSxHQUFHRjtvQkFFdENELEdBQUcsQ0FBQ0csZUFBZSxHQUFHckIsSUFBSSxDQUFDb0IsVUFBVTtvQkFDckMsT0FBT0Y7Z0JBQ1QsR0FDQSxDQUFDO2dCQUdISCxlQUFlTyxJQUFBQSxjQUFNLEVBQUNQO2dCQUV0QixJQUFJVixNQUNGRSxRQUFRZ0IsTUFBTSxDQUFDQyxJQUFJLENBQ2pCLENBQUMsR0FBRyxFQUFFZixlQUFlLDRDQUE0QyxFQUFFUCxhQUFhdUIsSUFBSSx5QkFBeUIsQ0FBQztnQkFHbEgsSUFBSSxDQUFDekIsS0FBSzBCLFFBQVEsRUFBRTtvQkFDbEIsaURBQWlEO29CQUNqRCxJQUFJckIsTUFBTUUsUUFBUWdCLE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLENBQUMsb0RBQW9ELENBQUM7Z0JBQ3ZGLE9BQU87b0JBQ0wsSUFBSXRCLE1BQ0ZFLFFBQVFnQixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLHVDQUF1QyxFQUFFeEIsS0FBSzBCLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBRW5GLElBQUk7d0JBQ0YsTUFBTUUsaUJBQWlCLE1BQU1qQyxRQUFRLENBQUNpQixZQUFZaUIsbUJBQW1CLEVBQUVDLE9BQ3JFOUIsS0FBSzBCLFFBQVEsRUFDYlg7d0JBR0YsSUFBSVYsTUFDRkUsUUFBUWdCLE1BQU0sQ0FBQ0MsSUFBSSxDQUNqQixDQUFDLGdEQUFnRCxFQUFFSSxlQUFlRyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUU5RSxFQUFFLE9BQU9KLE9BQWdCO3dCQUN2QixNQUFNSyxNQUFNTCxpQkFBaUJNLFFBQVFOLE1BQU1PLE9BQU8sR0FBR1A7d0JBQ3JELE1BQU0sSUFBSVEsZ0JBQVEsQ0FBQyxDQUFDLGtDQUFrQyxFQUFFbkMsS0FBSytCLEVBQUUsQ0FBQyxhQUFhLEVBQUVDLElBQUksQ0FBQztvQkFDdEY7Z0JBQ0Y7WUFDRjtRQUNGO0lBQ0Y7SUFFQSwyR0FBMkc7SUFDM0doQyxLQUFLVyxRQUFRLEdBQUc7SUFFaEIsT0FBT1g7QUFDVCJ9
|