@payloadcms/plugin-stripe 0.0.6 → 0.0.8
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 +9 -8
- package/dist/hooks/createNewInStripe.js +15 -12
- package/dist/hooks/createNewInStripe.js.map +1 -1
- package/dist/hooks/deleteFromStripe.js +1 -1
- package/dist/hooks/deleteFromStripe.js.map +1 -1
- package/dist/hooks/syncExistingWithStripe.d.ts +3 -3
- package/dist/hooks/syncExistingWithStripe.js +17 -15
- package/dist/hooks/syncExistingWithStripe.js.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +35 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utilities/deepen.d.ts +1 -0
- package/dist/utilities/deepen.js +28 -0
- package/dist/utilities/deepen.js.map +1 -0
- package/dist/webhooks/handleCreatedOrUpdated.js +5 -4
- package/dist/webhooks/handleCreatedOrUpdated.js.map +1 -1
- package/dist/webhooks/index.js +1 -1
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -81,12 +81,12 @@ const config = buildConfig({
|
|
|
81
81
|
sync: [
|
|
82
82
|
{
|
|
83
83
|
collection: 'customers',
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
stripeResourceType: 'customers',
|
|
85
|
+
stripeResourceTypeSingular: 'customer',
|
|
86
86
|
fields: [
|
|
87
87
|
{
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
fieldPath: 'name', // this is a field on your own Payload config
|
|
89
|
+
stripeProperty: 'name' // use dot notation, if applicable
|
|
90
90
|
}
|
|
91
91
|
]
|
|
92
92
|
}
|
|
@@ -100,11 +100,12 @@ export default config;
|
|
|
100
100
|
|
|
101
101
|
Using `sync` will do the following:
|
|
102
102
|
|
|
103
|
-
- Adds and maintains a `stripeID` read-only field on each collection
|
|
103
|
+
- Adds and maintains a `stripeID` read-only field on each collection, this is a field generated _by Stripe_ and used as a cross-reference
|
|
104
|
+
- Adds a direct link to the resource on Stripe.com
|
|
104
105
|
- Adds and maintains an `skipSync` read-only flag on each collection to prevent infinite syncs when hooks trigger webhooks
|
|
105
106
|
- Adds the following hooks to each collection:
|
|
106
107
|
- `beforeValidate`: `createNewInStripe`
|
|
107
|
-
- `
|
|
108
|
+
- `beforeChange`: `syncExistingWithStripe`
|
|
108
109
|
- `afterDelete`: `deleteFromStripe`
|
|
109
110
|
- Handles the following Stripe webhooks
|
|
110
111
|
- `STRIPE_TYPE.created`: `handleCreatedOrUpdated`
|
|
@@ -117,7 +118,7 @@ The following custom endpoints are automatically opened for you:
|
|
|
117
118
|
|
|
118
119
|
>NOTE: the `/api` part of these routes may be different based on the settings defined in your Payload config.
|
|
119
120
|
|
|
120
|
-
- `POST /api/stripe/rest`
|
|
121
|
+
- #### `POST /api/stripe/rest`
|
|
121
122
|
|
|
122
123
|
Proxies the [Stripe REST API](https://stripe.com/docs/api) behind [Payload access control](https://payloadcms.com/docs/access-control/overview) and returns the result. If you need to proxy the API server-side, use the [stripeProxy](#node) function.
|
|
123
124
|
|
|
@@ -138,7 +139,7 @@ The following custom endpoints are automatically opened for you:
|
|
|
138
139
|
})
|
|
139
140
|
```
|
|
140
141
|
|
|
141
|
-
- `POST /stripe/webhooks`
|
|
142
|
+
- #### `POST /stripe/webhooks`
|
|
142
143
|
|
|
143
144
|
Returns an http status code. This is where all Stripe webhook events are sent to be handled. See [webhooks](#webhooks).
|
|
144
145
|
|
|
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.createNewInStripe = void 0;
|
|
43
43
|
var stripe_1 = __importDefault(require("stripe"));
|
|
44
44
|
var errors_1 = require("payload/errors");
|
|
45
|
+
var deepen_1 = require("../utilities/deepen");
|
|
45
46
|
var stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
46
47
|
var stripe = new stripe_1.default(stripeSecretKey || '', { apiVersion: '2022-08-01' });
|
|
47
48
|
var createNewInStripe = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -59,22 +60,24 @@ var createNewInStripe = function (args) { return __awaiter(void 0, void 0, void
|
|
|
59
60
|
return [2 /*return*/, dataRef];
|
|
60
61
|
}
|
|
61
62
|
if (!payload) return [3 /*break*/, 9];
|
|
62
|
-
if (!
|
|
63
|
+
if (!(data === null || data === void 0 ? void 0 : data.skipSync)) return [3 /*break*/, 1];
|
|
63
64
|
if (logs)
|
|
64
65
|
payload.logger.info("Bypassing collection-level hooks.");
|
|
65
66
|
return [3 /*break*/, 9];
|
|
66
67
|
case 1:
|
|
67
|
-
//
|
|
68
|
-
// conditionally set to true to
|
|
68
|
+
// initialize as 'false' so that all Payload admin events sync to Stripe
|
|
69
|
+
// then conditionally set to 'true' to for events that originate from webhooks
|
|
70
|
+
// this will prevent webhook events from triggering an unnecessary sync / infinite loop
|
|
69
71
|
dataRef.skipSync = false;
|
|
70
72
|
collectionSlug_1 = (collection || {}).slug;
|
|
71
73
|
syncConfig = sync === null || sync === void 0 ? void 0 : sync.find(function (syncConfig) { return syncConfig.collection === collectionSlug_1; });
|
|
72
74
|
if (!syncConfig) return [3 /*break*/, 9];
|
|
73
75
|
syncedFields = syncConfig.fields.reduce(function (acc, field) {
|
|
74
|
-
var
|
|
75
|
-
acc[
|
|
76
|
+
var fieldPath = field.fieldPath, stripeProperty = field.stripeProperty;
|
|
77
|
+
acc[stripeProperty] = dataRef[fieldPath];
|
|
76
78
|
return acc;
|
|
77
79
|
}, {});
|
|
80
|
+
syncedFields = (0, deepen_1.deepen)(syncedFields);
|
|
78
81
|
if (!(operation === 'update')) return [3 /*break*/, 5];
|
|
79
82
|
if (logs)
|
|
80
83
|
payload.logger.info("A '".concat(collectionSlug_1, "' document has changed in Payload with ID: '").concat(data === null || data === void 0 ? void 0 : data.id, "', syncing with Stripe..."));
|
|
@@ -82,11 +85,11 @@ var createNewInStripe = function (args) { return __awaiter(void 0, void 0, void
|
|
|
82
85
|
_d.label = 2;
|
|
83
86
|
case 2:
|
|
84
87
|
_d.trys.push([2, 4, , 5]);
|
|
85
|
-
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.
|
|
88
|
+
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.stripeResourceType]) === null || _b === void 0 ? void 0 : _b.create(syncedFields))];
|
|
86
89
|
case 3:
|
|
87
90
|
stripeResource = _d.sent();
|
|
88
91
|
if (logs)
|
|
89
|
-
payload.logger.info("\u2705 Successfully created new '".concat(syncConfig.
|
|
92
|
+
payload.logger.info("\u2705 Successfully created new '".concat(syncConfig.stripeResourceType, "' resource in Stripe with ID: '").concat(stripeResource.id, "'."));
|
|
90
93
|
dataRef.stripeID = stripeResource.id;
|
|
91
94
|
// NOTE: this is to prevent sync in the "afterChange" hook
|
|
92
95
|
dataRef.skipSync = true;
|
|
@@ -104,19 +107,19 @@ var createNewInStripe = function (args) { return __awaiter(void 0, void 0, void
|
|
|
104
107
|
case 6:
|
|
105
108
|
_d.trys.push([6, 8, , 9]);
|
|
106
109
|
if (logs)
|
|
107
|
-
payload.logger.info("- Creating new '".concat(syncConfig.
|
|
108
|
-
return [4 /*yield*/, ((_c = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.
|
|
110
|
+
payload.logger.info("- Creating new '".concat(syncConfig.stripeResourceType, "' resource in Stripe..."));
|
|
111
|
+
return [4 /*yield*/, ((_c = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.stripeResourceType]) === null || _c === void 0 ? void 0 : _c.create(syncedFields))];
|
|
109
112
|
case 7:
|
|
110
113
|
stripeResource = _d.sent();
|
|
111
114
|
if (logs)
|
|
112
|
-
payload.logger.info("\u2705 Successfully created new '".concat(syncConfig.
|
|
115
|
+
payload.logger.info("\u2705 Successfully created new '".concat(syncConfig.stripeResourceType, "' resource in Stripe with ID: '").concat(stripeResource.id, "'."));
|
|
113
116
|
dataRef.stripeID = stripeResource.id;
|
|
114
|
-
//
|
|
117
|
+
// IMPORTANT: this is to prevent sync in the "afterChange" hook
|
|
115
118
|
dataRef.skipSync = true;
|
|
116
119
|
return [3 /*break*/, 9];
|
|
117
120
|
case 8:
|
|
118
121
|
error_2 = _d.sent();
|
|
119
|
-
throw new errors_1.APIError("Failed to create new '".concat(syncConfig.
|
|
122
|
+
throw new errors_1.APIError("Failed to create new '".concat(syncConfig.stripeResourceType, "' resource in Stripe: ").concat((error_2 === null || error_2 === void 0 ? void 0 : error_2.message) || ''));
|
|
120
123
|
case 9: return [2 /*return*/, dataRef];
|
|
121
124
|
}
|
|
122
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNewInStripe.js","sourceRoot":"","sources":["../../src/hooks/createNewInStripe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4B;AAG5B,yCAA0C;
|
|
1
|
+
{"version":3,"file":"createNewInStripe.js","sourceRoot":"","sources":["../../src/hooks/createNewInStripe.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ var deleteFromStripe = function (args) { return __awaiter(void 0, void 0, void 0
|
|
|
64
64
|
_c.label = 1;
|
|
65
65
|
case 1:
|
|
66
66
|
_c.trys.push([1, 3, , 4]);
|
|
67
|
-
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.
|
|
67
|
+
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig.stripeResourceType]) === null || _b === void 0 ? void 0 : _b.del(doc.stripeID))];
|
|
68
68
|
case 2:
|
|
69
69
|
_c.sent();
|
|
70
70
|
if (logs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteFromStripe.js","sourceRoot":"","sources":["../../src/hooks/deleteFromStripe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA4B;AAE5B,yCAA0C;AAE1C,IAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,IAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AAOxE,IAAM,gBAAgB,GAAsC,UAAO,IAAI;;;;;;gBAE1E,GAAG,GAID,IAAI,IAJH,EACH,GAAG,GAGD,IAAI,IAHH,EACH,YAAY,GAEV,IAAI,aAFM,EACZ,UAAU,GACR,IAAI,WADI,CACH;gBAEH,KAGF,YAAY,IAAI,EAAE,EAFpB,IAAI,UAAA,EACJ,IAAI,UAAA,CACiB;gBAEf,OAAO,GAAK,GAAG,QAAR,CAAS;gBACV,cAAc,GAAK,CAAA,UAAU,IAAI,EAAE,CAAA,KAArB,CAAsB;gBAElD,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAsB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,+BAAqB,cAAc,gDAA6C,CAAC,CAAC;qBAEzI,CAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAA,EAA/B,wBAA+B;gBACjC,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+CAAwC,GAAG,CAAC,QAAQ,SAAM,CAAC,CAAC;gBAEpF,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,UAAU,KAAK,cAAc,EAAxC,CAAwC,CAAC,CAAC;qBAEpF,UAAU,EAAV,wBAAU;;;;gBAEV,qBAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"deleteFromStripe.js","sourceRoot":"","sources":["../../src/hooks/deleteFromStripe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA4B;AAE5B,yCAA0C;AAE1C,IAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,IAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AAOxE,IAAM,gBAAgB,GAAsC,UAAO,IAAI;;;;;;gBAE1E,GAAG,GAID,IAAI,IAJH,EACH,GAAG,GAGD,IAAI,IAHH,EACH,YAAY,GAEV,IAAI,aAFM,EACZ,UAAU,GACR,IAAI,WADI,CACH;gBAEH,KAGF,YAAY,IAAI,EAAE,EAFpB,IAAI,UAAA,EACJ,IAAI,UAAA,CACiB;gBAEf,OAAO,GAAK,GAAG,QAAR,CAAS;gBACV,cAAc,GAAK,CAAA,UAAU,IAAI,EAAE,CAAA,KAArB,CAAsB;gBAElD,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,6BAAsB,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,EAAE,+BAAqB,cAAc,gDAA6C,CAAC,CAAC;qBAEzI,CAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAA,EAA/B,wBAA+B;gBACjC,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+CAAwC,GAAG,CAAC,QAAQ,SAAM,CAAC,CAAC;gBAEpF,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,UAAU,KAAK,cAAc,EAAxC,CAAwC,CAAC,CAAC;qBAEpF,UAAU,EAAV,wBAAU;;;;gBAEV,qBAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,UAAU,CAAC,kBAAkB,CAAC,0CAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA,EAAA;;gBAAhE,SAAgE,CAAC;gBACjE,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gEAAoD,GAAG,CAAC,QAAQ,OAAI,CAAC,CAAC;;;;gBAEpG,MAAM,IAAI,iBAAQ,CAAC,qDAA8C,GAAG,CAAC,QAAQ,gBAAM,CAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,KAAI,EAAE,CAAE,CAAC,CAAA;;;;KAIjH,CAAA;AAhCY,QAAA,gBAAgB,oBAgC5B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionBeforeChangeHook, CollectionConfig } from 'payload/types';
|
|
2
2
|
import { StripeConfig } from '../types';
|
|
3
|
-
export declare type
|
|
3
|
+
export declare type CollectionBeforeChangeHookWithArgs = (args: Parameters<CollectionBeforeChangeHook>[0] & {
|
|
4
4
|
collection?: CollectionConfig;
|
|
5
5
|
stripeConfig?: StripeConfig;
|
|
6
6
|
}) => void;
|
|
7
|
-
export declare const syncExistingWithStripe:
|
|
7
|
+
export declare const syncExistingWithStripe: CollectionBeforeChangeHookWithArgs;
|
|
@@ -42,53 +42,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.syncExistingWithStripe = void 0;
|
|
43
43
|
var stripe_1 = __importDefault(require("stripe"));
|
|
44
44
|
var errors_1 = require("payload/errors");
|
|
45
|
+
var deepen_1 = require("../utilities/deepen");
|
|
45
46
|
var stripeSecretKey = process.env.STRIPE_SECRET_KEY;
|
|
46
47
|
var stripe = new stripe_1.default(stripeSecretKey || '', { apiVersion: '2022-08-01' });
|
|
47
48
|
var syncExistingWithStripe = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
-
var req, operation,
|
|
49
|
+
var req, operation, data, originalDoc, collection, stripeConfig, _a, logs, sync, payload, collectionSlug, syncConfig, syncedFields, stripeResource, error_1;
|
|
49
50
|
var _b;
|
|
50
51
|
return __generator(this, function (_c) {
|
|
51
52
|
switch (_c.label) {
|
|
52
53
|
case 0:
|
|
53
|
-
req = args.req, operation = args.operation,
|
|
54
|
+
req = args.req, operation = args.operation, data = args.data, originalDoc = args.originalDoc, collection = args.collection, stripeConfig = args.stripeConfig;
|
|
54
55
|
_a = stripeConfig || {}, logs = _a.logs, sync = _a.sync;
|
|
55
56
|
payload = req.payload;
|
|
56
57
|
collectionSlug = (collection || {}).slug;
|
|
57
|
-
if (!(process.env.NODE_ENV !== 'test' && !
|
|
58
|
+
if (!(process.env.NODE_ENV !== 'test' && !data.skipSync)) return [3 /*break*/, 5];
|
|
58
59
|
syncConfig = sync === null || sync === void 0 ? void 0 : sync.find(function (syncConfig) { return syncConfig.collection === collectionSlug; });
|
|
59
60
|
if (!syncConfig) return [3 /*break*/, 5];
|
|
61
|
+
if (!(operation === 'update')) return [3 /*break*/, 5];
|
|
60
62
|
syncedFields = syncConfig.fields.reduce(function (acc, field) {
|
|
61
|
-
var
|
|
62
|
-
acc[
|
|
63
|
+
var fieldPath = field.fieldPath, stripeProperty = field.stripeProperty;
|
|
64
|
+
acc[stripeProperty] = data[fieldPath];
|
|
63
65
|
return acc;
|
|
64
66
|
}, {});
|
|
65
|
-
|
|
67
|
+
syncedFields = (0, deepen_1.deepen)(syncedFields);
|
|
66
68
|
if (logs)
|
|
67
|
-
payload.logger.info("A '".concat(collectionSlug, "' document has changed in Payload with ID: '").concat(
|
|
68
|
-
if (!!
|
|
69
|
+
payload.logger.info("A '".concat(collectionSlug, "' document has changed in Payload with ID: '").concat(originalDoc === null || originalDoc === void 0 ? void 0 : originalDoc._id, "', syncing with Stripe..."));
|
|
70
|
+
if (!!data.stripeID) return [3 /*break*/, 1];
|
|
69
71
|
// NOTE: the "beforeValidate" hook populates this
|
|
70
72
|
if (logs)
|
|
71
73
|
payload.logger.error("- There is no Stripe ID for this document, skipping.");
|
|
72
74
|
return [3 /*break*/, 5];
|
|
73
75
|
case 1:
|
|
74
76
|
if (logs)
|
|
75
|
-
payload.logger.info("- Syncing to Stripe ID: '".concat(
|
|
77
|
+
payload.logger.info("- Syncing to Stripe resource with ID: '".concat(data.stripeID, "'..."));
|
|
76
78
|
_c.label = 2;
|
|
77
79
|
case 2:
|
|
78
80
|
_c.trys.push([2, 4, , 5]);
|
|
79
|
-
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig === null || syncConfig === void 0 ? void 0 : syncConfig.
|
|
81
|
+
return [4 /*yield*/, ((_b = stripe === null || stripe === void 0 ? void 0 : stripe[syncConfig === null || syncConfig === void 0 ? void 0 : syncConfig.stripeResourceType]) === null || _b === void 0 ? void 0 : _b.update(data.stripeID, syncedFields))];
|
|
80
82
|
case 3:
|
|
81
83
|
stripeResource = _c.sent();
|
|
82
84
|
if (logs)
|
|
83
|
-
payload.logger.info("\u2705 Successfully synced Stripe
|
|
85
|
+
payload.logger.info("\u2705 Successfully synced Stripe resource with ID: '".concat(stripeResource.id, "'."));
|
|
84
86
|
return [3 /*break*/, 5];
|
|
85
87
|
case 4:
|
|
86
88
|
error_1 = _c.sent();
|
|
87
|
-
throw new errors_1.APIError("Failed to sync document with ID: '".concat(
|
|
89
|
+
throw new errors_1.APIError("Failed to sync document with ID: '".concat(data.id, "' to Stripe: ").concat((error_1 === null || error_1 === void 0 ? void 0 : error_1.message) || ''));
|
|
88
90
|
case 5:
|
|
89
|
-
// Set back to false so that all changes continue to sync to Stripe, see note in './createNewInStripe.ts'
|
|
90
|
-
|
|
91
|
-
return [2 /*return*/,
|
|
91
|
+
// Set back to 'false' so that all changes continue to sync to Stripe, see note in './createNewInStripe.ts'
|
|
92
|
+
data.skipSync = false;
|
|
93
|
+
return [2 /*return*/, data];
|
|
92
94
|
}
|
|
93
95
|
});
|
|
94
96
|
}); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncExistingWithStripe.js","sourceRoot":"","sources":["../../src/hooks/syncExistingWithStripe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA4B;AAE5B,yCAA0C;
|
|
1
|
+
{"version":3,"file":"syncExistingWithStripe.js","sourceRoot":"","sources":["../../src/hooks/syncExistingWithStripe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA4B;AAE5B,yCAA0C;AAC1C,8CAA6C;AAE7C,IAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,IAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,eAAe,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AAOxE,IAAM,sBAAsB,GAAuC,UAAO,IAAI;;;;;;gBAEjF,GAAG,GAMD,IAAI,IANH,EACH,SAAS,GAKP,IAAI,UALG,EACT,IAAI,GAIF,IAAI,KAJF,EACJ,WAAW,GAGT,IAAI,YAHK,EACX,UAAU,GAER,IAAI,WAFI,EACV,YAAY,GACV,IAAI,aADM,CACL;gBAEH,KAGF,YAAY,IAAI,EAAE,EAFpB,IAAI,UAAA,EACJ,IAAI,UAAA,CACiB;gBAEf,OAAO,GAAK,GAAG,QAAR,CAAS;gBAEV,cAAc,GAAK,CAAA,UAAU,IAAI,EAAE,CAAA,KAArB,CAAsB;qBAE9C,CAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA,EAAjD,wBAAiD;gBAC7C,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,UAAU,KAAK,cAAc,EAAxC,CAAwC,CAAC,CAAC;qBAEpF,UAAU,EAAV,wBAAU;qBACR,CAAA,SAAS,KAAK,QAAQ,CAAA,EAAtB,wBAAsB;gBAEpB,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK;oBAEnD,IAAA,SAAS,GAEP,KAAK,UAFE,EACT,cAAc,GACZ,KAAK,eADO,CACN;oBAEV,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtC,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAyB,CAAC,CAAC;gBAE9B,YAAY,GAAG,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC;gBAEpC,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAM,cAAc,yDAA+C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,8BAA2B,CAAC,CAAC;qBAE1I,CAAC,IAAI,CAAC,QAAQ,EAAd,wBAAc;gBAChB,iDAAiD;gBACjD,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;;;gBAEvF,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDAA0C,IAAI,CAAC,QAAQ,SAAM,CAAC,CAAC;;;;gBAGpE,qBAAM,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,CAAC,0CAAE,MAAM,CAC3E,IAAI,CAAC,QAAQ,EACb,YAAY,CACb,CAAA,EAAA;;gBAHK,cAAc,GAAG,SAGtB;gBAED,IAAI,IAAI;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+DAAmD,cAAc,CAAC,EAAE,OAAI,CAAC,CAAC;;;;gBAExG,MAAM,IAAI,iBAAQ,CAAC,4CAAqC,IAAI,CAAC,EAAE,0BAAgB,CAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,KAAI,EAAE,CAAE,CAAC,CAAC;;gBAOjH,2GAA2G;gBAC3G,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAEtB,sBAAO,IAAI,EAAC;;;KACb,CAAA;AAhEY,QAAA,sBAAsB,0BAgElC"}
|
package/dist/index.js
CHANGED
|
@@ -66,10 +66,13 @@ var extendWebpackConfig_1 = require("./extendWebpackConfig");
|
|
|
66
66
|
var createNewInStripe_1 = require("./hooks/createNewInStripe");
|
|
67
67
|
var syncExistingWithStripe_1 = require("./hooks/syncExistingWithStripe");
|
|
68
68
|
var deleteFromStripe_1 = require("./hooks/deleteFromStripe");
|
|
69
|
+
var ui_1 = require("./ui");
|
|
69
70
|
var stripePlugin = function (incomingStripeConfig) { return function (config) {
|
|
71
|
+
var _a;
|
|
70
72
|
var collections = config.collections;
|
|
71
73
|
// set config defaults here
|
|
72
74
|
var stripeConfig = __assign(__assign({}, incomingStripeConfig), { sync: (incomingStripeConfig === null || incomingStripeConfig === void 0 ? void 0 : incomingStripeConfig.sync) || [] });
|
|
75
|
+
var isTestKey = (_a = stripeConfig.stripeSecretKey) === null || _a === void 0 ? void 0 : _a.startsWith('sk_test_');
|
|
73
76
|
return (__assign(__assign({}, config), { admin: __assign(__assign({}, config.admin), { webpack: (0, extendWebpackConfig_1.extendWebpackConfig)(config) }), endpoints: __spreadArray(__spreadArray([], (config === null || config === void 0 ? void 0 : config.endpoints) || [], true), [
|
|
74
77
|
{
|
|
75
78
|
path: '/stripe/webhooks',
|
|
@@ -111,7 +114,7 @@ var stripePlugin = function (incomingStripeConfig) { return function (config) {
|
|
|
111
114
|
return [2 /*return*/, (0, createNewInStripe_1.createNewInStripe)(__assign(__assign({}, args), { collection: collection, stripeConfig: stripeConfig }))];
|
|
112
115
|
});
|
|
113
116
|
}); }
|
|
114
|
-
], false),
|
|
117
|
+
], false), beforeChange: __spreadArray(__spreadArray([], ((existingHooks === null || existingHooks === void 0 ? void 0 : existingHooks.beforeChange) || []), true), [
|
|
115
118
|
function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
116
119
|
return __generator(this, function (_a) {
|
|
117
120
|
return [2 /*return*/, (0, syncExistingWithStripe_1.syncExistingWithStripe)(__assign(__assign({}, args), { collection: collection, stripeConfig: stripeConfig }))];
|
|
@@ -136,13 +139,23 @@ var stripePlugin = function (incomingStripeConfig) { return function (config) {
|
|
|
136
139
|
},
|
|
137
140
|
{
|
|
138
141
|
name: 'skipSync',
|
|
139
|
-
label: '
|
|
142
|
+
label: 'Skip Sync',
|
|
140
143
|
type: 'checkbox',
|
|
141
144
|
admin: {
|
|
142
145
|
position: 'sidebar',
|
|
143
146
|
readOnly: true,
|
|
144
147
|
},
|
|
145
|
-
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'docUrl',
|
|
151
|
+
type: 'ui',
|
|
152
|
+
admin: {
|
|
153
|
+
position: 'sidebar',
|
|
154
|
+
components: {
|
|
155
|
+
Field: function (args) { return (0, ui_1.LinkToDoc)(__assign(__assign({}, args), { isTestKey: isTestKey, stripeResourceType: syncConfig.stripeResourceType })); }
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
146
159
|
], false) });
|
|
147
160
|
}
|
|
148
161
|
return collection;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sCAA2C;AAC3C,8CAAmD;AACnD,oDAA8B;AAE9B,6DAA4D;AAC5D,+DAA8D;AAC9D,yEAAwE;AACxE,6DAA4D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,13 +12,13 @@ export declare type StripeWebhookHandlers = {
|
|
|
12
12
|
[webhookName: string]: StripeWebhookHandler;
|
|
13
13
|
};
|
|
14
14
|
export declare type FieldSyncConfig = {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
fieldPath: string;
|
|
16
|
+
stripeProperty: string;
|
|
17
17
|
};
|
|
18
18
|
export declare type SyncConfig = {
|
|
19
19
|
collection: string;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
stripeResourceType: 'customers' | 'products';
|
|
21
|
+
stripeResourceTypeSingular: 'customer' | 'product';
|
|
22
22
|
fields: FieldSyncConfig[];
|
|
23
23
|
};
|
|
24
24
|
export declare type StripeConfig = {
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
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.LinkToDoc = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var forms_1 = require("payload/components/forms");
|
|
9
|
+
var CopyToClipboard_1 = __importDefault(require("payload/dist/admin/components/elements/CopyToClipboard"));
|
|
10
|
+
var LinkToDoc = function (props) {
|
|
11
|
+
var isTestKey = props.isTestKey, // TODO: this is 'undefined'
|
|
12
|
+
stripeResourceType = props.stripeResourceType;
|
|
13
|
+
var form = (0, forms_1.useWatchForm)();
|
|
14
|
+
var fields = form.fields;
|
|
15
|
+
var _a = fields.stripeID, _b = _a === void 0 ? {} : _a, stripeID = _b.value;
|
|
16
|
+
// TODO: 'isTestKey' is always 'undefined' here, see '../index.ts'
|
|
17
|
+
// const stripeEnv = isTestKey ? 'test/' : '';
|
|
18
|
+
// For now, we'll just hardcode it to 'test/'
|
|
19
|
+
var stripeEnv = 'test/';
|
|
20
|
+
var href = "https://dashboard.stripe.com/".concat(stripeEnv).concat(stripeResourceType, "/").concat(stripeID);
|
|
21
|
+
return (react_1.default.createElement("div", null,
|
|
22
|
+
react_1.default.createElement("div", null,
|
|
23
|
+
react_1.default.createElement("span", { className: "label", style: {
|
|
24
|
+
color: '#9A9A9A'
|
|
25
|
+
} }, "View in Stripe"),
|
|
26
|
+
react_1.default.createElement(CopyToClipboard_1.default, { value: href })),
|
|
27
|
+
react_1.default.createElement("div", { style: {
|
|
28
|
+
overflow: 'hidden',
|
|
29
|
+
textOverflow: 'ellipsis',
|
|
30
|
+
fontWeight: '600'
|
|
31
|
+
} },
|
|
32
|
+
react_1.default.createElement("a", { href: href, target: "_blank", rel: "noreferrer noopener" }, href))));
|
|
33
|
+
};
|
|
34
|
+
exports.LinkToDoc = LinkToDoc;
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAA0B;AAC1B,kDAAwD;AACxD,2GAAqF;AAW9E,IAAM,SAAS,GAGjB,UAAC,KAAK;IAEP,IAAA,SAAS,GAEP,KAAK,UAFE,EAAE,4BAA4B;IACvC,kBAAkB,GAChB,KAAK,mBADW,CACV;IAEV,IAAM,IAAI,GAAG,IAAA,oBAAY,GAAE,CAAC;IAC5B,IAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;IAG/C,IAAA,KAGE,MAAM,SADF,EAFN,qBAEI,EAAE,KAAA,EADG,QAAQ,WACX,CACG;IAEX,kEAAkE;IAClE,8CAA8C;IAC9C,6CAA6C;IAC7C,IAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,IAAM,IAAI,GAAG,uCAAgC,SAAS,SAAG,kBAAkB,cAAI,QAAQ,CAAE,CAAA;IAEzF,OAAO,CACL;QACE;YACE,wCACE,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE;oBACL,KAAK,EAAE,SAAS;iBACjB,qBAGI;YACP,8BAAC,yBAAe,IACd,KAAK,EAAE,IAAc,GACrB,CACE;QACN,uCACE,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,UAAU;gBACxB,UAAU,EAAE,KAAK;aAClB;YAED,qCACE,IAAI,EAAE,IAAc,EACpB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,IAExB,IAAI,CACH,CACA,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AAxDW,QAAA,SAAS,aAwDpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const deepen: (obj: Record<string, any>) => Record<string, any>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// converts an object of dot notation keys to a nested object
|
|
3
|
+
// i.e. { 'price.stripePriceID': '123' } to { price: { stripePriceID: '123' } }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.deepen = void 0;
|
|
6
|
+
var deepen = function (obj) {
|
|
7
|
+
var result = {};
|
|
8
|
+
var _loop_1 = function (key) {
|
|
9
|
+
var value = obj[key];
|
|
10
|
+
var keys = key.split('.');
|
|
11
|
+
var current = result;
|
|
12
|
+
keys.forEach(function (key, index) {
|
|
13
|
+
if (index === keys.length - 1) {
|
|
14
|
+
current[key] = value;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
current[key] = current[key] || {};
|
|
18
|
+
current = current[key];
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
for (var key in obj) {
|
|
23
|
+
_loop_1(key);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
exports.deepen = deepen;
|
|
28
|
+
//# sourceMappingURL=deepen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepen.js","sourceRoot":"","sources":["../../src/utilities/deepen.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,+EAA+E;;;AAExE,IAAM,MAAM,GAAG,UAAC,GAAwB;IAC7C,IAAM,MAAM,GAAwB,EAAE,CAAC;4BAE5B,GAAG;QACZ,IAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,KAAK;YACtB,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;;IAXL,KAAK,IAAM,GAAG,IAAI,GAAG;gBAAV,GAAG;KAYb;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAjBW,QAAA,MAAM,UAiBjB"}
|
|
@@ -48,6 +48,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
48
48
|
};
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
50
|
exports.handleCreatedOrUpdated = void 0;
|
|
51
|
+
var deepen_1 = require("../utilities/deepen");
|
|
51
52
|
var handleCreatedOrUpdated = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
52
53
|
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
54
|
var _a, _b, _c;
|
|
@@ -66,7 +67,7 @@ var handleCreatedOrUpdated = function (args) { return __awaiter(void 0, void 0,
|
|
|
66
67
|
// }
|
|
67
68
|
if (isNestedChange) {
|
|
68
69
|
if (logs)
|
|
69
|
-
payload.logger.info("- This change occurred on a nested field of ".concat(resourceType, ". Nested fields are not yet supported."));
|
|
70
|
+
payload.logger.info("- This change occurred on a nested field of ".concat(resourceType, ". Nested fields are not yet supported in auto-sync but can be manually setup."));
|
|
70
71
|
}
|
|
71
72
|
if (!!isNestedChange) return [3 /*break*/, 20];
|
|
72
73
|
if (logs)
|
|
@@ -85,11 +86,11 @@ var handleCreatedOrUpdated = function (args) { return __awaiter(void 0, void 0,
|
|
|
85
86
|
payloadQuery = _d.sent();
|
|
86
87
|
foundDoc = payloadQuery.docs[0];
|
|
87
88
|
syncedData = syncConfig.fields.reduce(function (acc, field) {
|
|
88
|
-
var
|
|
89
|
-
acc[
|
|
89
|
+
var fieldPath = field.fieldPath, stripeProperty = field.stripeProperty;
|
|
90
|
+
acc[fieldPath] = stripeDoc[stripeProperty];
|
|
90
91
|
return acc;
|
|
91
92
|
}, {});
|
|
92
|
-
syncedData = __assign(__assign({}, syncedData), { stripeID: stripeID, skipSync: true });
|
|
93
|
+
syncedData = (0, deepen_1.deepen)(__assign(__assign({}, syncedData), { stripeID: stripeID, skipSync: true }));
|
|
93
94
|
if (!!foundDoc) return [3 /*break*/, 16];
|
|
94
95
|
if (logs)
|
|
95
96
|
payload.logger.info("- No existing '".concat(collectionSlug_1, "' document found with Stripe ID: '").concat(stripeID, "', creating new..."));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleCreatedOrUpdated.js","sourceRoot":"","sources":["../../src/webhooks/handleCreatedOrUpdated.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handleCreatedOrUpdated.js","sourceRoot":"","sources":["../../src/webhooks/handleCreatedOrUpdated.ts"],"names":[],"mappings":"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"}
|
package/dist/webhooks/index.js
CHANGED
|
@@ -60,7 +60,7 @@ var handleWebhooks = function (args) { return __awaiter(void 0, void 0, void 0,
|
|
|
60
60
|
payload.logger.info("\uD83E\uDE9D Received Stripe '".concat(event.type, "' webhook event with ID: '").concat(event.id, "'."));
|
|
61
61
|
resourceType = event.type.split('.')[0];
|
|
62
62
|
method = event.type.split('.').pop();
|
|
63
|
-
syncConfig = (_b = stripeConfig === null || stripeConfig === void 0 ? void 0 : stripeConfig.sync) === null || _b === void 0 ? void 0 : _b.find(function (sync) { return sync.
|
|
63
|
+
syncConfig = (_b = stripeConfig === null || stripeConfig === void 0 ? void 0 : stripeConfig.sync) === null || _b === void 0 ? void 0 : _b.find(function (sync) { return sync.stripeResourceTypeSingular === resourceType; });
|
|
64
64
|
if (!syncConfig) return [3 /*break*/, 8];
|
|
65
65
|
_a = method;
|
|
66
66
|
switch (_a) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAAkE;AAClE,iDAAgD;AAEzC,IAAM,cAAc,GAAyB,UAAO,IAAI;;;;;;gBAE3D,OAAO,GAGL,IAAI,QAHC,EACP,KAAK,GAEH,IAAI,MAFD,EACL,YAAY,GACV,IAAI,aADM,CACL;gBAET,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAuB,KAAK,CAAC,IAAI,uCAA6B,KAAK,CAAC,EAAE,OAAI,CAAC,CAAC;gBAI1F,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAErC,UAAU,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,0CAAE,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/webhooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAAkE;AAClE,iDAAgD;AAEzC,IAAM,cAAc,GAAyB,UAAO,IAAI;;;;;;gBAE3D,OAAO,GAGL,IAAI,QAHC,EACP,KAAK,GAEH,IAAI,MAFD,EACL,YAAY,GACV,IAAI,aADM,CACL;gBAET,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAuB,KAAK,CAAC,IAAI,uCAA6B,KAAK,CAAC,EAAE,OAAI,CAAC,CAAC;gBAI1F,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAErC,UAAU,GAAG,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,0CAAE,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,0BAA0B,KAAK,YAAY,EAAhD,CAAgD,CAAC,CAAC;qBAEpG,UAAU,EAAV,wBAAU;gBACJ,KAAA,MAAM,CAAA;;yBACP,SAAS,CAAC,CAAV,wBAAS;yBAST,SAAS,CAAC,CAAV,wBAAS;yBAST,SAAS,CAAC,CAAV,wBAAS;;;oBAjBZ,qBAAM,IAAA,+CAAsB,wBACvB,IAAI,KACP,YAAY,cAAA,EACZ,YAAY,cAAA,EACZ,UAAU,YAAA,IACV,EAAA;;gBALF,SAKE,CAAC;gBACH,wBAAM;oBAGN,qBAAM,IAAA,+CAAsB,wBACvB,IAAI,KACP,YAAY,cAAA,EACZ,YAAY,cAAA,EACZ,UAAU,YAAA,IACV,EAAA;;gBALF,SAKE,CAAC;gBACH,wBAAM;oBAGN,qBAAM,IAAA,6BAAa,wBACd,IAAI,KACP,YAAY,cAAA,EACZ,YAAY,cAAA,EACZ,UAAU,YAAA,IACV,EAAA;;gBALF,SAKE,CAAC;gBACH,wBAAM;;gBAEC;oBACP,wBAAM;iBACP;;;;;KAGN,CAAC;AAlDW,QAAA,cAAc,kBAkDzB"}
|