@dereekb/nestjs 12.7.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/LICENSE +1 -1
  2. package/index.cjs.js +292 -0
  3. package/index.d.ts +1 -0
  4. package/index.esm.js +270 -0
  5. package/mailgun/index.cjs.js +646 -0
  6. package/mailgun/index.d.ts +1 -0
  7. package/mailgun/index.esm.js +633 -0
  8. package/mailgun/package.json +24 -3
  9. package/mailgun/src/lib/mailgun.d.ts +2 -2
  10. package/mailgun/src/lib/mailgun.type.d.ts +1 -1
  11. package/mailgun/src/lib/mailgun.util.d.ts +22 -17
  12. package/openai/index.cjs.js +310 -0
  13. package/openai/index.d.ts +1 -0
  14. package/openai/index.esm.js +293 -0
  15. package/openai/package.json +24 -5
  16. package/openai/src/lib/index.d.ts +0 -1
  17. package/openai/src/lib/webhook/webhook.openai.controller.d.ts +1 -1
  18. package/openai/src/lib/webhook/webhook.openai.d.ts +2 -2
  19. package/openai/src/lib/webhook/webhook.openai.service.d.ts +1 -1
  20. package/package.json +58 -28
  21. package/stripe/index.cjs.js +223 -0
  22. package/stripe/index.d.ts +1 -0
  23. package/stripe/index.esm.js +215 -0
  24. package/stripe/package.json +24 -5
  25. package/stripe/src/lib/index.d.ts +1 -1
  26. package/stripe/src/lib/stripe.module.d.ts +2 -2
  27. package/stripe/src/lib/webhook/webhook.stripe.controller.d.ts +1 -1
  28. package/typeform/index.cjs.js +378 -0
  29. package/typeform/index.d.ts +1 -0
  30. package/typeform/index.esm.js +363 -0
  31. package/typeform/package.json +24 -5
  32. package/typeform/src/lib/index.d.ts +0 -1
  33. package/typeform/src/lib/webhook/webhook.typeform.controller.d.ts +1 -1
  34. package/vapiai/index.cjs.js +306 -0
  35. package/vapiai/index.d.ts +1 -0
  36. package/vapiai/index.esm.js +297 -0
  37. package/vapiai/package.json +24 -5
  38. package/vapiai/src/lib/index.d.ts +0 -1
  39. package/vapiai/src/lib/vapiai.type.d.ts +3 -1
  40. package/vapiai/src/lib/webhook/webhook.vapiai.controller.d.ts +1 -1
  41. package/vapiai/src/lib/webhook/webhook.vapiai.d.ts +1 -9
  42. package/vapiai/src/lib/webhook/webhook.vapiai.types.d.ts +6 -34
  43. package/CHANGELOG.md +0 -2001
  44. package/mailgun/LICENSE +0 -21
  45. package/mailgun/src/index.js +0 -5
  46. package/mailgun/src/index.js.map +0 -1
  47. package/mailgun/src/lib/index.js +0 -10
  48. package/mailgun/src/lib/index.js.map +0 -1
  49. package/mailgun/src/lib/mailgun.api.js +0 -37
  50. package/mailgun/src/lib/mailgun.api.js.map +0 -1
  51. package/mailgun/src/lib/mailgun.config.js +0 -45
  52. package/mailgun/src/lib/mailgun.config.js.map +0 -1
  53. package/mailgun/src/lib/mailgun.js +0 -205
  54. package/mailgun/src/lib/mailgun.js.map +0 -1
  55. package/mailgun/src/lib/mailgun.service.js +0 -53
  56. package/mailgun/src/lib/mailgun.service.js.map +0 -1
  57. package/mailgun/src/lib/mailgun.service.module.js +0 -84
  58. package/mailgun/src/lib/mailgun.service.module.js.map +0 -1
  59. package/mailgun/src/lib/mailgun.type.js +0 -3
  60. package/mailgun/src/lib/mailgun.type.js.map +0 -1
  61. package/mailgun/src/lib/mailgun.util.js +0 -206
  62. package/mailgun/src/lib/mailgun.util.js.map +0 -1
  63. package/openai/LICENSE +0 -21
  64. package/openai/src/index.js +0 -5
  65. package/openai/src/index.js.map +0 -1
  66. package/openai/src/lib/index.js +0 -11
  67. package/openai/src/lib/index.js.map +0 -1
  68. package/openai/src/lib/openai.api.js +0 -22
  69. package/openai/src/lib/openai.api.js.map +0 -1
  70. package/openai/src/lib/openai.config.js +0 -29
  71. package/openai/src/lib/openai.config.js.map +0 -1
  72. package/openai/src/lib/openai.module.js +0 -41
  73. package/openai/src/lib/openai.module.js.map +0 -1
  74. package/openai/src/lib/openai.type.js +0 -3
  75. package/openai/src/lib/openai.type.js.map +0 -1
  76. package/openai/src/lib/openai.util.js +0 -48
  77. package/openai/src/lib/openai.util.js.map +0 -1
  78. package/openai/src/lib/webhook/index.js +0 -10
  79. package/openai/src/lib/webhook/index.js.map +0 -1
  80. package/openai/src/lib/webhook/webhook.openai.config.js +0 -17
  81. package/openai/src/lib/webhook/webhook.openai.config.js.map +0 -1
  82. package/openai/src/lib/webhook/webhook.openai.controller.js +0 -30
  83. package/openai/src/lib/webhook/webhook.openai.controller.js.map +0 -1
  84. package/openai/src/lib/webhook/webhook.openai.js +0 -41
  85. package/openai/src/lib/webhook/webhook.openai.js.map +0 -1
  86. package/openai/src/lib/webhook/webhook.openai.module.js +0 -39
  87. package/openai/src/lib/webhook/webhook.openai.module.js.map +0 -1
  88. package/openai/src/lib/webhook/webhook.openai.service.js +0 -48
  89. package/openai/src/lib/webhook/webhook.openai.service.js.map +0 -1
  90. package/openai/src/lib/webhook/webhook.openai.verify.js +0 -37
  91. package/openai/src/lib/webhook/webhook.openai.verify.js.map +0 -1
  92. package/src/index.js +0 -5
  93. package/src/index.js.map +0 -1
  94. package/src/lib/decorators/index.js +0 -6
  95. package/src/lib/decorators/index.js.map +0 -1
  96. package/src/lib/decorators/local.decorator.js +0 -17
  97. package/src/lib/decorators/local.decorator.js.map +0 -1
  98. package/src/lib/decorators/rawbody.js +0 -44
  99. package/src/lib/decorators/rawbody.js.map +0 -1
  100. package/src/lib/index.js +0 -7
  101. package/src/lib/index.js.map +0 -1
  102. package/src/lib/middlewares/index.js +0 -7
  103. package/src/lib/middlewares/index.js.map +0 -1
  104. package/src/lib/middlewares/json.middleware.js +0 -16
  105. package/src/lib/middlewares/json.middleware.js.map +0 -1
  106. package/src/lib/middlewares/rawbody.middleware.js +0 -16
  107. package/src/lib/middlewares/rawbody.middleware.js.map +0 -1
  108. package/src/lib/middlewares/webhook.js +0 -51
  109. package/src/lib/middlewares/webhook.js.map +0 -1
  110. package/src/lib/module/client/client.config.js +0 -13
  111. package/src/lib/module/client/client.config.js.map +0 -1
  112. package/src/lib/module/client/client.js +0 -8
  113. package/src/lib/module/client/client.js.map +0 -1
  114. package/src/lib/module/client/client.module.js +0 -36
  115. package/src/lib/module/client/client.module.js.map +0 -1
  116. package/src/lib/module/client/client.service.js +0 -30
  117. package/src/lib/module/client/client.service.js.map +0 -1
  118. package/src/lib/module/client/index.js +0 -8
  119. package/src/lib/module/client/index.js.map +0 -1
  120. package/src/lib/module/env/env.config.js +0 -14
  121. package/src/lib/module/env/env.config.js.map +0 -1
  122. package/src/lib/module/env/env.js +0 -10
  123. package/src/lib/module/env/env.js.map +0 -1
  124. package/src/lib/module/env/env.nest.js +0 -16
  125. package/src/lib/module/env/env.nest.js.map +0 -1
  126. package/src/lib/module/env/env.service.js +0 -33
  127. package/src/lib/module/env/env.service.js.map +0 -1
  128. package/src/lib/module/env/index.js +0 -8
  129. package/src/lib/module/env/index.js.map +0 -1
  130. package/src/lib/module/index.js +0 -7
  131. package/src/lib/module/index.js.map +0 -1
  132. package/src/lib/module/module.js +0 -26
  133. package/src/lib/module/module.js.map +0 -1
  134. package/stripe/LICENSE +0 -21
  135. package/stripe/src/index.js +0 -5
  136. package/stripe/src/index.js.map +0 -1
  137. package/stripe/src/lib/index.js +0 -8
  138. package/stripe/src/lib/index.js.map +0 -1
  139. package/stripe/src/lib/stripe.api.js +0 -40
  140. package/stripe/src/lib/stripe.api.js.map +0 -1
  141. package/stripe/src/lib/stripe.config.js +0 -19
  142. package/stripe/src/lib/stripe.config.js.map +0 -1
  143. package/stripe/src/lib/stripe.module.js +0 -41
  144. package/stripe/src/lib/stripe.module.js.map +0 -1
  145. package/stripe/src/lib/stripe.type.js +0 -4
  146. package/stripe/src/lib/stripe.type.js.map +0 -1
  147. package/stripe/src/lib/webhook/index.js +0 -8
  148. package/stripe/src/lib/webhook/index.js.map +0 -1
  149. package/stripe/src/lib/webhook/webhook.stripe.controller.js +0 -30
  150. package/stripe/src/lib/webhook/webhook.stripe.controller.js.map +0 -1
  151. package/stripe/src/lib/webhook/webhook.stripe.js +0 -67
  152. package/stripe/src/lib/webhook/webhook.stripe.js.map +0 -1
  153. package/stripe/src/lib/webhook/webhook.stripe.module.js +0 -20
  154. package/stripe/src/lib/webhook/webhook.stripe.module.js.map +0 -1
  155. package/stripe/src/lib/webhook/webhook.stripe.service.js +0 -36
  156. package/stripe/src/lib/webhook/webhook.stripe.service.js.map +0 -1
  157. package/typeform/LICENSE +0 -21
  158. package/typeform/src/index.js +0 -5
  159. package/typeform/src/index.js.map +0 -1
  160. package/typeform/src/lib/index.js +0 -11
  161. package/typeform/src/lib/index.js.map +0 -1
  162. package/typeform/src/lib/typeform.api.js +0 -22
  163. package/typeform/src/lib/typeform.api.js.map +0 -1
  164. package/typeform/src/lib/typeform.config.js +0 -21
  165. package/typeform/src/lib/typeform.config.js.map +0 -1
  166. package/typeform/src/lib/typeform.module.js +0 -39
  167. package/typeform/src/lib/typeform.module.js.map +0 -1
  168. package/typeform/src/lib/typeform.type.js +0 -3
  169. package/typeform/src/lib/typeform.type.js.map +0 -1
  170. package/typeform/src/lib/typeform.util.js +0 -26
  171. package/typeform/src/lib/typeform.util.js.map +0 -1
  172. package/typeform/src/lib/webhook/index.js +0 -12
  173. package/typeform/src/lib/webhook/index.js.map +0 -1
  174. package/typeform/src/lib/webhook/webhook.typeform.config.js +0 -17
  175. package/typeform/src/lib/webhook/webhook.typeform.config.js.map +0 -1
  176. package/typeform/src/lib/webhook/webhook.typeform.controller.js +0 -30
  177. package/typeform/src/lib/webhook/webhook.typeform.controller.js.map +0 -1
  178. package/typeform/src/lib/webhook/webhook.typeform.form.js +0 -113
  179. package/typeform/src/lib/webhook/webhook.typeform.form.js.map +0 -1
  180. package/typeform/src/lib/webhook/webhook.typeform.js +0 -27
  181. package/typeform/src/lib/webhook/webhook.typeform.js.map +0 -1
  182. package/typeform/src/lib/webhook/webhook.typeform.module.js +0 -38
  183. package/typeform/src/lib/webhook/webhook.typeform.module.js.map +0 -1
  184. package/typeform/src/lib/webhook/webhook.typeform.service.js +0 -45
  185. package/typeform/src/lib/webhook/webhook.typeform.service.js.map +0 -1
  186. package/typeform/src/lib/webhook/webhook.typeform.type.js +0 -3
  187. package/typeform/src/lib/webhook/webhook.typeform.type.js.map +0 -1
  188. package/typeform/src/lib/webhook/webhook.typeform.verify.js +0 -28
  189. package/typeform/src/lib/webhook/webhook.typeform.verify.js.map +0 -1
  190. package/vapiai/LICENSE +0 -21
  191. package/vapiai/src/index.js +0 -5
  192. package/vapiai/src/index.js.map +0 -1
  193. package/vapiai/src/lib/index.js +0 -10
  194. package/vapiai/src/lib/index.js.map +0 -1
  195. package/vapiai/src/lib/vapiai.api.js +0 -32
  196. package/vapiai/src/lib/vapiai.api.js.map +0 -1
  197. package/vapiai/src/lib/vapiai.config.js +0 -17
  198. package/vapiai/src/lib/vapiai.config.js.map +0 -1
  199. package/vapiai/src/lib/vapiai.module.js +0 -38
  200. package/vapiai/src/lib/vapiai.module.js.map +0 -1
  201. package/vapiai/src/lib/vapiai.type.js +0 -3
  202. package/vapiai/src/lib/vapiai.type.js.map +0 -1
  203. package/vapiai/src/lib/webhook/index.js +0 -10
  204. package/vapiai/src/lib/webhook/index.js.map +0 -1
  205. package/vapiai/src/lib/webhook/webhook.vapi.config.js +0 -20
  206. package/vapiai/src/lib/webhook/webhook.vapi.config.js.map +0 -1
  207. package/vapiai/src/lib/webhook/webhook.vapiai.controller.js +0 -38
  208. package/vapiai/src/lib/webhook/webhook.vapiai.controller.js.map +0 -1
  209. package/vapiai/src/lib/webhook/webhook.vapiai.js +0 -42
  210. package/vapiai/src/lib/webhook/webhook.vapiai.js.map +0 -1
  211. package/vapiai/src/lib/webhook/webhook.vapiai.module.js +0 -41
  212. package/vapiai/src/lib/webhook/webhook.vapiai.module.js.map +0 -1
  213. package/vapiai/src/lib/webhook/webhook.vapiai.service.js +0 -52
  214. package/vapiai/src/lib/webhook/webhook.vapiai.service.js.map +0 -1
  215. package/vapiai/src/lib/webhook/webhook.vapiai.types.js +0 -25
  216. package/vapiai/src/lib/webhook/webhook.vapiai.types.js.map +0 -1
  217. package/vapiai/src/lib/webhook/webhook.vapiai.verify.js +0 -49
  218. package/vapiai/src/lib/webhook/webhook.vapiai.verify.js.map +0 -1
@@ -0,0 +1,223 @@
1
+ 'use strict';
2
+
3
+ var util = require('@dereekb/util');
4
+ var nestjs = require('@dereekb/nestjs');
5
+ var common = require('@nestjs/common');
6
+ var Stripe = require('stripe');
7
+ var config = require('@nestjs/config');
8
+
9
+ exports.StripeWebhookEventType = void 0;
10
+ (function (StripeWebhookEventType) {
11
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_TRIAL_WILL_END"] = "customer.subscription.trial_will_end";
12
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_DELETED"] = "customer.subscription.deleted";
13
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_CREATED"] = "customer.subscription.created";
14
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_UPDATED"] = "customer.subscription.updated";
15
+ StripeWebhookEventType["CHECKOUT_SESSION_COMPLETED"] = "checkout.session.completed";
16
+ StripeWebhookEventType["CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED"] = "checkout.session.async_payment_failed";
17
+ StripeWebhookEventType["CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED"] = "checkout.session.async_payment_suceeded";
18
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_ABORTED"] = "subscription_schedule.aborted";
19
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_CANCELLED"] = "subscription_schedule.canceled";
20
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_COMPLETED"] = "subscription_schedule.completed";
21
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_CREATED"] = "subscription_schedule.created";
22
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_EXPIRING"] = "subscription_schedule.expiring";
23
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_RELEASED"] = "subscription_schedule.released";
24
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_UPDATED"] = "subscription_schedule.updated";
25
+ })(exports.StripeWebhookEventType || (exports.StripeWebhookEventType = {}));
26
+ /**
27
+ * Creates a StripeWebhookEvent and treats the data as the input type.
28
+ *
29
+ * @param event
30
+ * @returns
31
+ */
32
+ function stripeWebhookEvent(event) {
33
+ return {
34
+ event,
35
+ data: event.data.object
36
+ };
37
+ }
38
+ function stripeWebhookEventMapper(mapFn) {
39
+ return event => ({
40
+ event,
41
+ data: mapFn(event.data.object, event)
42
+ });
43
+ }
44
+ const stripeEventHandlerFactory = util.handlerFactory(x => x.type);
45
+ const stripeEventHandlerConfigurerFactory = util.handlerConfigurerFactory({
46
+ configurerForAccessor: accessor => {
47
+ // eslint-disable-next-line
48
+ const fnWithKey = util.handlerMappedSetFunctionFactory(accessor, stripeWebhookEvent);
49
+ const configurer = {
50
+ ...accessor,
51
+ handleCheckoutSessionComplete: fnWithKey(exports.StripeWebhookEventType.CHECKOUT_SESSION_COMPLETED),
52
+ handleCheckoutSessionAsyncPaymentFailed: fnWithKey(exports.StripeWebhookEventType.CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED),
53
+ handleCheckoutSessionAsyncPaymentSuccess: fnWithKey(exports.StripeWebhookEventType.CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED),
54
+ handleCustomerSubscriptionCreated: fnWithKey(exports.StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_CREATED),
55
+ handleCustomerSubscriptionUpdated: fnWithKey(exports.StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_UPDATED),
56
+ handleCustomerSubscriptionDeleted: fnWithKey(exports.StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_DELETED),
57
+ handleSubscriptionScheduleAborted: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_ABORTED),
58
+ handleSubscriptionScheduleCancelled: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_CANCELLED),
59
+ handleSubscriptionScheduleCompleted: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_COMPLETED),
60
+ handleSubscriptionScheduleCreated: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_CREATED),
61
+ handleSubscriptionScheduleExpiring: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_EXPIRING),
62
+ handleSubscriptionScheduleReleased: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_RELEASED),
63
+ handleSubscriptionScheduleUpdated: fnWithKey(exports.StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_UPDATED)
64
+ };
65
+ return configurer;
66
+ }
67
+ });
68
+
69
+ /******************************************************************************
70
+ Copyright (c) Microsoft Corporation.
71
+
72
+ Permission to use, copy, modify, and/or distribute this software for any
73
+ purpose with or without fee is hereby granted.
74
+
75
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
76
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
77
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
78
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
79
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
80
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
81
+ PERFORMANCE OF THIS SOFTWARE.
82
+ ***************************************************************************** */
83
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
84
+
85
+
86
+ function __decorate(decorators, target, key, desc) {
87
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
88
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
89
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
90
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
91
+ }
92
+
93
+ function __param(paramIndex, decorator) {
94
+ return function (target, key) { decorator(target, key, paramIndex); }
95
+ }
96
+
97
+ function __metadata(metadataKey, metadataValue) {
98
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
99
+ }
100
+
101
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
102
+ var e = new Error(message);
103
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
104
+ };
105
+
106
+ /**
107
+ * Configuration for StripeService
108
+ */
109
+ class StripeServiceConfig {
110
+ stripe;
111
+ static assertValidConfig(config) {
112
+ if (!config.stripe.secret) {
113
+ throw new Error('No stripe secret specified.');
114
+ } else if (!config.stripe.webhookSecret) {
115
+ throw new Error('No stripe webhook secret specified.');
116
+ }
117
+ }
118
+ }
119
+
120
+ exports.StripeApi = class StripeApi {
121
+ config;
122
+ stripe;
123
+ constructor(config) {
124
+ this.config = config;
125
+ this.stripe = new Stripe(config.stripe.secret, config.stripe.config);
126
+ }
127
+ // MARK: Event
128
+ /**
129
+ * Verifies the event and reads the stripe signature from a request.
130
+ */
131
+ readStripeEventFromWebhookRequest(req, rawBody) {
132
+ const signature = req.get('stripe-signature');
133
+ if (!signature) {
134
+ throw new common.BadRequestException(`missing stripe-signature`);
135
+ }
136
+ let event;
137
+ try {
138
+ event = this.stripe.webhooks.constructEvent(rawBody, signature, this.config.stripe.webhookSecret);
139
+ } catch (e) {
140
+ throw new common.BadRequestException(`stripe signature read error: ${e?.message}`);
141
+ }
142
+ return event;
143
+ }
144
+ };
145
+ exports.StripeApi = __decorate([common.Injectable(), __param(0, common.Inject(StripeServiceConfig)), __metadata("design:paramtypes", [StripeServiceConfig])], exports.StripeApi);
146
+
147
+ /**
148
+ * Service that makes system changes based on Stripe webhook events.
149
+ */
150
+ exports.StripeWebhookService = class StripeWebhookService {
151
+ logger = new common.Logger('StripeWebhookService');
152
+ _stripeApi;
153
+ handler = stripeEventHandlerFactory();
154
+ configure = stripeEventHandlerConfigurerFactory(this.handler);
155
+ constructor(stripeApi) {
156
+ this._stripeApi = stripeApi;
157
+ }
158
+ async updateForWebhook(req, rawBody) {
159
+ const event = this._stripeApi.readStripeEventFromWebhookRequest(req, rawBody);
160
+ return this.updateForStripeEvent(event);
161
+ }
162
+ async updateForStripeEvent(event) {
163
+ const handled = await this.handler(event);
164
+ if (!handled) {
165
+ this.logger.warn('Received unexpected/unhandled stripe event: ', event);
166
+ }
167
+ return handled;
168
+ }
169
+ };
170
+ exports.StripeWebhookService = __decorate([common.Injectable(), __param(0, common.Inject(exports.StripeApi)), __metadata("design:paramtypes", [exports.StripeApi])], exports.StripeWebhookService);
171
+
172
+ exports.StripeWebhookController = class StripeWebhookController {
173
+ _stripeWebhookService;
174
+ constructor(stripeWebhookService) {
175
+ this._stripeWebhookService = stripeWebhookService;
176
+ }
177
+ async handleStripeWebhook(req, rawBody) {
178
+ await this._stripeWebhookService.updateForWebhook(req, rawBody);
179
+ }
180
+ };
181
+ __decorate([common.Post(), __param(0, common.Req()), __param(1, nestjs.RawBody()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", Promise)], exports.StripeWebhookController.prototype, "handleStripeWebhook", null);
182
+ exports.StripeWebhookController = __decorate([common.Controller('/webhook/stripe'), __param(0, common.Inject(exports.StripeWebhookService)), __metadata("design:paramtypes", [exports.StripeWebhookService])], exports.StripeWebhookController);
183
+
184
+ const STRIPE_DEFAULT_API_VERSION = '2020-08-27';
185
+ function stripeServiceConfigFactory(configService) {
186
+ const config = {
187
+ stripe: {
188
+ secret: configService.get('STRIPE_SECRET'),
189
+ webhookSecret: configService.get('STRIPE_WEBHOOK_SECRET'),
190
+ config: {
191
+ apiVersion: STRIPE_DEFAULT_API_VERSION
192
+ }
193
+ }
194
+ };
195
+ StripeServiceConfig.assertValidConfig(config);
196
+ return config;
197
+ }
198
+ exports.StripeModule = class StripeModule {};
199
+ exports.StripeModule = __decorate([common.Module({
200
+ imports: [config.ConfigModule],
201
+ providers: [{
202
+ provide: StripeServiceConfig,
203
+ inject: [config.ConfigService],
204
+ useFactory: stripeServiceConfigFactory
205
+ }, exports.StripeApi],
206
+ exports: [exports.StripeApi]
207
+ })], exports.StripeModule);
208
+
209
+ exports.StripeWebhookModule = class StripeWebhookModule {};
210
+ exports.StripeWebhookModule = __decorate([common.Module({
211
+ controllers: [exports.StripeWebhookController],
212
+ imports: [exports.StripeModule],
213
+ exports: [exports.StripeModule, exports.StripeWebhookService],
214
+ providers: [exports.StripeWebhookService]
215
+ })], exports.StripeWebhookModule);
216
+
217
+ exports.STRIPE_DEFAULT_API_VERSION = STRIPE_DEFAULT_API_VERSION;
218
+ exports.StripeServiceConfig = StripeServiceConfig;
219
+ exports.stripeEventHandlerConfigurerFactory = stripeEventHandlerConfigurerFactory;
220
+ exports.stripeEventHandlerFactory = stripeEventHandlerFactory;
221
+ exports.stripeServiceConfigFactory = stripeServiceConfigFactory;
222
+ exports.stripeWebhookEvent = stripeWebhookEvent;
223
+ exports.stripeWebhookEventMapper = stripeWebhookEventMapper;
@@ -0,0 +1 @@
1
+ export * from "./src/index";
@@ -0,0 +1,215 @@
1
+ import { handlerFactory, handlerConfigurerFactory, handlerMappedSetFunctionFactory } from '@dereekb/util';
2
+ import { RawBody } from '@dereekb/nestjs';
3
+ import { Injectable, Inject, BadRequestException, Logger, Post, Req, Controller, Module } from '@nestjs/common';
4
+ import Stripe from 'stripe';
5
+ import { ConfigService, ConfigModule } from '@nestjs/config';
6
+
7
+ var StripeWebhookEventType;
8
+ (function (StripeWebhookEventType) {
9
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_TRIAL_WILL_END"] = "customer.subscription.trial_will_end";
10
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_DELETED"] = "customer.subscription.deleted";
11
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_CREATED"] = "customer.subscription.created";
12
+ StripeWebhookEventType["CUSTOMER_SUBSCRIPTION_UPDATED"] = "customer.subscription.updated";
13
+ StripeWebhookEventType["CHECKOUT_SESSION_COMPLETED"] = "checkout.session.completed";
14
+ StripeWebhookEventType["CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED"] = "checkout.session.async_payment_failed";
15
+ StripeWebhookEventType["CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED"] = "checkout.session.async_payment_suceeded";
16
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_ABORTED"] = "subscription_schedule.aborted";
17
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_CANCELLED"] = "subscription_schedule.canceled";
18
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_COMPLETED"] = "subscription_schedule.completed";
19
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_CREATED"] = "subscription_schedule.created";
20
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_EXPIRING"] = "subscription_schedule.expiring";
21
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_RELEASED"] = "subscription_schedule.released";
22
+ StripeWebhookEventType["SUBSCRIPTION_SCHEDULE_UPDATED"] = "subscription_schedule.updated";
23
+ })(StripeWebhookEventType || (StripeWebhookEventType = {}));
24
+ /**
25
+ * Creates a StripeWebhookEvent and treats the data as the input type.
26
+ *
27
+ * @param event
28
+ * @returns
29
+ */
30
+ function stripeWebhookEvent(event) {
31
+ return {
32
+ event,
33
+ data: event.data.object
34
+ };
35
+ }
36
+ function stripeWebhookEventMapper(mapFn) {
37
+ return event => ({
38
+ event,
39
+ data: mapFn(event.data.object, event)
40
+ });
41
+ }
42
+ const stripeEventHandlerFactory = handlerFactory(x => x.type);
43
+ const stripeEventHandlerConfigurerFactory = handlerConfigurerFactory({
44
+ configurerForAccessor: accessor => {
45
+ // eslint-disable-next-line
46
+ const fnWithKey = handlerMappedSetFunctionFactory(accessor, stripeWebhookEvent);
47
+ const configurer = {
48
+ ...accessor,
49
+ handleCheckoutSessionComplete: fnWithKey(StripeWebhookEventType.CHECKOUT_SESSION_COMPLETED),
50
+ handleCheckoutSessionAsyncPaymentFailed: fnWithKey(StripeWebhookEventType.CHECKOUT_SESSION_ASYNC_PAYMENT_FAILED),
51
+ handleCheckoutSessionAsyncPaymentSuccess: fnWithKey(StripeWebhookEventType.CHECKOUT_SESSION_ASYNC_PAYMENT_SUCCEEDED),
52
+ handleCustomerSubscriptionCreated: fnWithKey(StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_CREATED),
53
+ handleCustomerSubscriptionUpdated: fnWithKey(StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_UPDATED),
54
+ handleCustomerSubscriptionDeleted: fnWithKey(StripeWebhookEventType.CUSTOMER_SUBSCRIPTION_DELETED),
55
+ handleSubscriptionScheduleAborted: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_ABORTED),
56
+ handleSubscriptionScheduleCancelled: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_CANCELLED),
57
+ handleSubscriptionScheduleCompleted: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_COMPLETED),
58
+ handleSubscriptionScheduleCreated: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_CREATED),
59
+ handleSubscriptionScheduleExpiring: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_EXPIRING),
60
+ handleSubscriptionScheduleReleased: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_RELEASED),
61
+ handleSubscriptionScheduleUpdated: fnWithKey(StripeWebhookEventType.SUBSCRIPTION_SCHEDULE_UPDATED)
62
+ };
63
+ return configurer;
64
+ }
65
+ });
66
+
67
+ /******************************************************************************
68
+ Copyright (c) Microsoft Corporation.
69
+
70
+ Permission to use, copy, modify, and/or distribute this software for any
71
+ purpose with or without fee is hereby granted.
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
74
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
75
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
76
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
77
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
78
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
79
+ PERFORMANCE OF THIS SOFTWARE.
80
+ ***************************************************************************** */
81
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
82
+
83
+
84
+ function __decorate(decorators, target, key, desc) {
85
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
86
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
87
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
88
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
89
+ }
90
+
91
+ function __param(paramIndex, decorator) {
92
+ return function (target, key) { decorator(target, key, paramIndex); }
93
+ }
94
+
95
+ function __metadata(metadataKey, metadataValue) {
96
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
97
+ }
98
+
99
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
100
+ var e = new Error(message);
101
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
102
+ };
103
+
104
+ /**
105
+ * Configuration for StripeService
106
+ */
107
+ class StripeServiceConfig {
108
+ stripe;
109
+ static assertValidConfig(config) {
110
+ if (!config.stripe.secret) {
111
+ throw new Error('No stripe secret specified.');
112
+ } else if (!config.stripe.webhookSecret) {
113
+ throw new Error('No stripe webhook secret specified.');
114
+ }
115
+ }
116
+ }
117
+
118
+ let StripeApi = class StripeApi {
119
+ config;
120
+ stripe;
121
+ constructor(config) {
122
+ this.config = config;
123
+ this.stripe = new Stripe(config.stripe.secret, config.stripe.config);
124
+ }
125
+ // MARK: Event
126
+ /**
127
+ * Verifies the event and reads the stripe signature from a request.
128
+ */
129
+ readStripeEventFromWebhookRequest(req, rawBody) {
130
+ const signature = req.get('stripe-signature');
131
+ if (!signature) {
132
+ throw new BadRequestException(`missing stripe-signature`);
133
+ }
134
+ let event;
135
+ try {
136
+ event = this.stripe.webhooks.constructEvent(rawBody, signature, this.config.stripe.webhookSecret);
137
+ } catch (e) {
138
+ throw new BadRequestException(`stripe signature read error: ${e?.message}`);
139
+ }
140
+ return event;
141
+ }
142
+ };
143
+ StripeApi = __decorate([Injectable(), __param(0, Inject(StripeServiceConfig)), __metadata("design:paramtypes", [StripeServiceConfig])], StripeApi);
144
+
145
+ /**
146
+ * Service that makes system changes based on Stripe webhook events.
147
+ */
148
+ let StripeWebhookService = class StripeWebhookService {
149
+ logger = new Logger('StripeWebhookService');
150
+ _stripeApi;
151
+ handler = stripeEventHandlerFactory();
152
+ configure = stripeEventHandlerConfigurerFactory(this.handler);
153
+ constructor(stripeApi) {
154
+ this._stripeApi = stripeApi;
155
+ }
156
+ async updateForWebhook(req, rawBody) {
157
+ const event = this._stripeApi.readStripeEventFromWebhookRequest(req, rawBody);
158
+ return this.updateForStripeEvent(event);
159
+ }
160
+ async updateForStripeEvent(event) {
161
+ const handled = await this.handler(event);
162
+ if (!handled) {
163
+ this.logger.warn('Received unexpected/unhandled stripe event: ', event);
164
+ }
165
+ return handled;
166
+ }
167
+ };
168
+ StripeWebhookService = __decorate([Injectable(), __param(0, Inject(StripeApi)), __metadata("design:paramtypes", [StripeApi])], StripeWebhookService);
169
+
170
+ let StripeWebhookController = class StripeWebhookController {
171
+ _stripeWebhookService;
172
+ constructor(stripeWebhookService) {
173
+ this._stripeWebhookService = stripeWebhookService;
174
+ }
175
+ async handleStripeWebhook(req, rawBody) {
176
+ await this._stripeWebhookService.updateForWebhook(req, rawBody);
177
+ }
178
+ };
179
+ __decorate([Post(), __param(0, Req()), __param(1, RawBody()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", Promise)], StripeWebhookController.prototype, "handleStripeWebhook", null);
180
+ StripeWebhookController = __decorate([Controller('/webhook/stripe'), __param(0, Inject(StripeWebhookService)), __metadata("design:paramtypes", [StripeWebhookService])], StripeWebhookController);
181
+
182
+ const STRIPE_DEFAULT_API_VERSION = '2020-08-27';
183
+ function stripeServiceConfigFactory(configService) {
184
+ const config = {
185
+ stripe: {
186
+ secret: configService.get('STRIPE_SECRET'),
187
+ webhookSecret: configService.get('STRIPE_WEBHOOK_SECRET'),
188
+ config: {
189
+ apiVersion: STRIPE_DEFAULT_API_VERSION
190
+ }
191
+ }
192
+ };
193
+ StripeServiceConfig.assertValidConfig(config);
194
+ return config;
195
+ }
196
+ let StripeModule = class StripeModule {};
197
+ StripeModule = __decorate([Module({
198
+ imports: [ConfigModule],
199
+ providers: [{
200
+ provide: StripeServiceConfig,
201
+ inject: [ConfigService],
202
+ useFactory: stripeServiceConfigFactory
203
+ }, StripeApi],
204
+ exports: [StripeApi]
205
+ })], StripeModule);
206
+
207
+ let StripeWebhookModule = class StripeWebhookModule {};
208
+ StripeWebhookModule = __decorate([Module({
209
+ controllers: [StripeWebhookController],
210
+ imports: [StripeModule],
211
+ exports: [StripeModule, StripeWebhookService],
212
+ providers: [StripeWebhookService]
213
+ })], StripeWebhookModule);
214
+
215
+ export { STRIPE_DEFAULT_API_VERSION, StripeApi, StripeModule, StripeServiceConfig, StripeWebhookController, StripeWebhookEventType, StripeWebhookModule, StripeWebhookService, stripeEventHandlerConfigurerFactory, stripeEventHandlerFactory, stripeServiceConfigFactory, stripeWebhookEvent, stripeWebhookEventMapper };
@@ -1,9 +1,28 @@
1
1
  {
2
2
  "name": "@dereekb/nestjs/stripe",
3
- "version": "12.7.0",
4
- "type": "commonjs",
5
- "peerDependencies": {},
6
- "dependencies": {},
3
+ "version": "13.0.0",
7
4
  "types": "./src/index.d.ts",
8
- "main": "./src/index.js"
5
+ "module": "./index.esm.js",
6
+ "main": "./index.cjs.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./src/index.d.ts",
10
+ "node": {
11
+ "require": "./index.cjs.js"
12
+ },
13
+ "browser": {
14
+ "require": "./index.cjs.js",
15
+ "import": "./index.esm.js"
16
+ },
17
+ "default": "./index.cjs.js"
18
+ }
19
+ },
20
+ "peerDependencies": {
21
+ "@dereekb/date": "13.0.0",
22
+ "@dereekb/nestjs": "13.0.0",
23
+ "@dereekb/model": "13.0.0",
24
+ "@dereekb/rxjs": "13.0.0",
25
+ "@dereekb/util": "13.0.0",
26
+ "core-js": "^3.0.0"
27
+ }
9
28
  }
@@ -1,4 +1,4 @@
1
1
  export * from './webhook';
2
2
  export * from './stripe.module';
3
3
  export * from './stripe.api';
4
- export * from './stripe.module';
4
+ export * from './stripe.config';
@@ -1,7 +1,7 @@
1
1
  import { ConfigService } from '@nestjs/config';
2
- import * as stripe from 'stripe';
2
+ import { Stripe } from 'stripe';
3
3
  import { StripeServiceConfig } from './stripe.config';
4
- export declare const STRIPE_DEFAULT_API_VERSION: stripe.Stripe.LatestApiVersion;
4
+ export declare const STRIPE_DEFAULT_API_VERSION: Stripe.LatestApiVersion;
5
5
  export declare function stripeServiceConfigFactory(configService: ConfigService): StripeServiceConfig;
6
6
  export declare class StripeModule {
7
7
  }
@@ -1,4 +1,4 @@
1
- import { RawBodyBuffer } from '@dereekb/nestjs';
1
+ import { type RawBodyBuffer } from '@dereekb/nestjs';
2
2
  import { Request } from 'express';
3
3
  import { StripeWebhookService } from './webhook.stripe.service';
4
4
  export declare class StripeWebhookController {