@unchainedshop/plugins 4.2.0 → 4.2.1

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 (109) hide show
  1. package/lib/files/gridfs/adapter.d.ts.map +1 -1
  2. package/lib/files/gridfs/adapter.js +12 -8
  3. package/lib/files/gridfs/adapter.js.map +1 -1
  4. package/lib/files/gridfs/handler-express.d.ts.map +1 -1
  5. package/lib/files/gridfs/handler-express.js +6 -5
  6. package/lib/files/gridfs/handler-express.js.map +1 -1
  7. package/lib/files/gridfs/handler-fastify.d.ts.map +1 -1
  8. package/lib/files/gridfs/handler-fastify.js +9 -7
  9. package/lib/files/gridfs/handler-fastify.js.map +1 -1
  10. package/lib/payment/cryptopay/de.d.ts +2 -0
  11. package/lib/payment/cryptopay/de.d.ts.map +1 -0
  12. package/lib/payment/cryptopay/de.js +10 -0
  13. package/lib/payment/cryptopay/de.js.map +1 -0
  14. package/lib/payment/cryptopay/derive-btc-address.test copy.d.ts +2 -0
  15. package/lib/payment/cryptopay/derive-btc-address.test copy.d.ts.map +1 -0
  16. package/lib/payment/cryptopay/derive-btc-address.test copy.js +10 -0
  17. package/lib/payment/cryptopay/derive-btc-address.test copy.js.map +1 -0
  18. package/lib/payment/payrexx/index.js +1 -1
  19. package/lib/payment/payrexx/index.js.map +1 -1
  20. package/lib/presets/base-fastify.js +2 -2
  21. package/lib/presets/base-fastify.js.map +1 -1
  22. package/lib/worker/BaseWorker.d.ts +30 -0
  23. package/lib/worker/BaseWorker.d.ts.map +1 -0
  24. package/lib/worker/BaseWorker.js +79 -0
  25. package/lib/worker/BaseWorker.js.map +1 -0
  26. package/lib/worker/EventListenerWorker.d.ts +6 -0
  27. package/lib/worker/EventListenerWorker.d.ts.map +1 -0
  28. package/lib/worker/EventListenerWorker.js +46 -0
  29. package/lib/worker/EventListenerWorker.js.map +1 -0
  30. package/lib/worker/FailedRescheduler.d.ts +15 -0
  31. package/lib/worker/FailedRescheduler.d.ts.map +1 -0
  32. package/lib/worker/FailedRescheduler.js +45 -0
  33. package/lib/worker/FailedRescheduler.js.map +1 -0
  34. package/lib/worker/IntervalWorker.d.ts +10 -0
  35. package/lib/worker/IntervalWorker.d.ts.map +1 -0
  36. package/lib/worker/IntervalWorker.js +37 -0
  37. package/lib/worker/IntervalWorker.js.map +1 -0
  38. package/lib/worker/sms.js +17 -17
  39. package/lib/worker/sms.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/files/gridfs/adapter.ts +13 -8
  42. package/src/files/gridfs/handler-express.ts +11 -5
  43. package/src/files/gridfs/handler-fastify.ts +14 -7
  44. package/src/payment/payrexx/index.ts +1 -1
  45. package/src/presets/base-fastify.ts +2 -2
  46. package/lib/accounts/google-oauth.d.ts +0 -4
  47. package/lib/accounts/google-oauth.d.ts.map +0 -1
  48. package/lib/accounts/google-oauth.js +0 -145
  49. package/lib/accounts/google-oauth.js.map +0 -1
  50. package/lib/accounts/linkedin-oauth.d.ts +0 -4
  51. package/lib/accounts/linkedin-oauth.d.ts.map +0 -1
  52. package/lib/accounts/linkedin-oauth.js +0 -82
  53. package/lib/accounts/linkedin-oauth.js.map +0 -1
  54. package/lib/files/gridfs/gridfs-adapter.d.ts +0 -3
  55. package/lib/files/gridfs/gridfs-adapter.d.ts.map +0 -1
  56. package/lib/files/gridfs/gridfs-adapter.js +0 -97
  57. package/lib/files/gridfs/gridfs-adapter.js.map +0 -1
  58. package/lib/files/gridfs/gridfs-webhook.d.ts +0 -11
  59. package/lib/files/gridfs/gridfs-webhook.d.ts.map +0 -1
  60. package/lib/files/gridfs/gridfs-webhook.js +0 -84
  61. package/lib/files/gridfs/gridfs-webhook.js.map +0 -1
  62. package/lib/files/minio/minio-adapter.d.ts +0 -6
  63. package/lib/files/minio/minio-adapter.d.ts.map +0 -1
  64. package/lib/files/minio/minio-adapter.js +0 -181
  65. package/lib/files/minio/minio-adapter.js.map +0 -1
  66. package/lib/files/minio/minio-webhook.d.ts +0 -2
  67. package/lib/files/minio/minio-webhook.d.ts.map +0 -1
  68. package/lib/files/minio/minio-webhook.js +0 -33
  69. package/lib/files/minio/minio-webhook.js.map +0 -1
  70. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +0 -9
  71. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts.map +0 -1
  72. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +0 -17
  73. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +0 -1
  74. package/lib/payment/cryptopay/middleware.d.ts +0 -2
  75. package/lib/payment/cryptopay/middleware.d.ts.map +0 -1
  76. package/lib/payment/cryptopay/middleware.js +0 -75
  77. package/lib/payment/cryptopay/middleware.js.map +0 -1
  78. package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts +0 -25
  79. package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts.map +0 -1
  80. package/lib/payment/cryptopay/module/configureCryptopayModule.js +0 -75
  81. package/lib/payment/cryptopay/module/configureCryptopayModule.js.map +0 -1
  82. package/lib/payment/datatrans-v2/middleware.d.ts +0 -2
  83. package/lib/payment/datatrans-v2/middleware.d.ts.map +0 -1
  84. package/lib/payment/datatrans-v2/middleware.js +0 -68
  85. package/lib/payment/datatrans-v2/middleware.js.map +0 -1
  86. package/lib/payment/payrexx/middleware.d.ts +0 -2
  87. package/lib/payment/payrexx/middleware.d.ts.map +0 -1
  88. package/lib/payment/payrexx/middleware.js +0 -86
  89. package/lib/payment/payrexx/middleware.js.map +0 -1
  90. package/lib/payment/postfinance-checkout/middleware.d.ts +0 -2
  91. package/lib/payment/postfinance-checkout/middleware.d.ts.map +0 -1
  92. package/lib/payment/postfinance-checkout/middleware.js +0 -38
  93. package/lib/payment/postfinance-checkout/middleware.js.map +0 -1
  94. package/lib/payment/saferpay/middleware.d.ts +0 -2
  95. package/lib/payment/saferpay/middleware.d.ts.map +0 -1
  96. package/lib/payment/saferpay/middleware.js +0 -57
  97. package/lib/payment/saferpay/middleware.js.map +0 -1
  98. package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts +0 -10
  99. package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts.map +0 -1
  100. package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js +0 -24
  101. package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js.map +0 -1
  102. package/lib/payment/stripe/middleware.d.ts +0 -6
  103. package/lib/payment/stripe/middleware.d.ts.map +0 -1
  104. package/lib/payment/stripe/middleware.js +0 -114
  105. package/lib/payment/stripe/middleware.js.map +0 -1
  106. package/lib/plugins-index.d.ts +0 -48
  107. package/lib/plugins-index.d.ts.map +0 -1
  108. package/lib/plugins-index.js +0 -107
  109. package/lib/plugins-index.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { defaultLogger } from '@unchainedshop/logger';
2
+ import { subscribe } from '@unchainedshop/events';
3
+ import { WorkerEventTypes } from '@unchainedshop/core-worker';
4
+ export const FailedRescheduler = {
5
+ key: 'shop.unchained.scheduler.failed',
6
+ label: 'Reschedule failed works',
7
+ version: '1.0.0',
8
+ actions: ({ retryInput }, unchainedAPI) => {
9
+ const handleFinishedWork = async ({ payload: work }) => {
10
+ if (!work.success && work.retries > 0) {
11
+ const now = new Date();
12
+ const workDelayMs = work.scheduled.getTime() - work.created.getTime();
13
+ // In short: Double the delay of the old work or delay for 5 seconds
14
+ const scheduled = workDelayMs > 1000
15
+ ? new Date(now.getTime() + workDelayMs * 2)
16
+ : new Date(now.setSeconds(now.getSeconds() + 5));
17
+ defaultLogger.error(`${FailedRescheduler.key} -> Reschedule failed work ${work._id} ${work.type} for ${scheduled.toISOString()} (in ${Math.round(workDelayMs / 1000)}). Remaining retries: ${work.retries}`);
18
+ const workData = {
19
+ type: work.type,
20
+ priority: work.priority,
21
+ originalWorkId: work.originalWorkId || work._id,
22
+ retries: work.retries - 1,
23
+ timeout: work.timeout,
24
+ scheduled,
25
+ };
26
+ if (retryInput) {
27
+ workData.input = await retryInput(workData, work.input);
28
+ }
29
+ else {
30
+ workData.input = work.input;
31
+ }
32
+ unchainedAPI.modules.worker.addWork(workData);
33
+ }
34
+ };
35
+ return {
36
+ start() {
37
+ subscribe(WorkerEventTypes.FINISHED, handleFinishedWork);
38
+ },
39
+ stop() {
40
+ /* */
41
+ },
42
+ };
43
+ },
44
+ };
45
+ //# sourceMappingURL=FailedRescheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailedRescheduler.js","sourceRoot":"","sources":["../../src/worker/FailedRescheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAuB9E,MAAM,CAAC,MAAM,iBAAiB,GAAwC;IACpE,GAAG,EAAE,iCAAiC;IACtC,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,OAAO;IAEhB,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE;QACxC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAqB,EAAE,EAAE;YACxE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAEtE,oEAAoE;gBACpE,MAAM,SAAS,GACb,WAAW,GAAG,IAAI;oBAChB,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC;oBAC3C,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAErD,aAAa,CAAC,KAAK,CACjB,GAAG,iBAAiB,CAAC,GAAG,8BAA8B,IAAI,CAAC,GAAG,IAC5D,IAAI,CAAC,IACP,QAAQ,SAAS,CAAC,WAAW,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,yBACnE,IAAI,CAAC,OACP,EAAE,CACH,CAAC;gBAEF,MAAM,QAAQ,GAAa;oBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG;oBAC/C,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,SAAS;iBACV,CAAC;gBAEF,IAAI,UAAU,EAAE,CAAC;oBACf,QAAQ,CAAC,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC9B,CAAC;gBAED,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;YACL,KAAK;gBACH,SAAS,CAAO,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACjE,CAAC;YAED,IAAI;gBACF,KAAK;YACP,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ScheduleData } from '@breejs/later';
2
+ import { IWorker } from './BaseWorker.js';
3
+ export interface IntervalWorkerParams {
4
+ workerId?: string;
5
+ batchCount?: number;
6
+ schedule?: ScheduleData;
7
+ }
8
+ export declare const scheduleToInterval: (schedule: ScheduleData) => number;
9
+ export declare const IntervalWorker: IWorker<IntervalWorkerParams>;
10
+ //# sourceMappingURL=IntervalWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntervalWorker.d.ts","sourceRoot":"","sources":["../../src/worker/IntervalWorker.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAc,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAItD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAMD,eAAO,MAAM,kBAAkB,GAAI,UAAU,YAAY,WAKxD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,oBAAoB,CA+BxD,CAAC"}
@@ -0,0 +1,37 @@
1
+ import later from '@breejs/later';
2
+ import { BaseWorker } from './BaseWorker.js';
3
+ const { NODE_ENV } = process.env;
4
+ const defaultSchedule = later.parse.text(NODE_ENV !== 'production' ? 'every 2 seconds' : 'every 30 seconds');
5
+ export const scheduleToInterval = (schedule) => {
6
+ const referenceDate = new Date(1000);
7
+ const [one, two] = later.schedule(schedule).next(2, referenceDate);
8
+ const diff = new Date(two).getTime() - new Date(one).getTime();
9
+ return Math.min(1000 * 60 * 60, diff); // at least once every hour!
10
+ };
11
+ export const IntervalWorker = {
12
+ ...BaseWorker,
13
+ key: 'shop.unchained.worker.cron',
14
+ label: 'Allocates work on fixed intervals with native node setInterval',
15
+ version: '1.0.0',
16
+ type: 'CRON',
17
+ actions: ({ workerId, batchCount = 0, schedule = defaultSchedule }, unchainedAPI) => {
18
+ const baseWorkerActions = BaseWorker.actions({ workerId, worker: IntervalWorker }, unchainedAPI);
19
+ const intervalDelay = scheduleToInterval(schedule);
20
+ let intervalHandle;
21
+ return {
22
+ ...baseWorkerActions,
23
+ start() {
24
+ intervalHandle = setInterval(() => {
25
+ baseWorkerActions.process({
26
+ maxWorkItemCount: batchCount,
27
+ referenceDate: IntervalWorker.getFloorDate(),
28
+ });
29
+ }, intervalDelay);
30
+ },
31
+ stop() {
32
+ clearInterval(intervalHandle);
33
+ },
34
+ };
35
+ },
36
+ };
37
+ //# sourceMappingURL=IntervalWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntervalWorker.js","sourceRoot":"","sources":["../../src/worker/IntervalWorker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAEtD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAQjC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CACtC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAsB,EAAE,EAAE;IAC3D,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAW,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,GAAG,UAAU;IAEb,GAAG,EAAE,4BAA4B;IACjC,KAAK,EAAE,gEAAgE;IACvE,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM;IAEZ,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,GAAG,eAAe,EAAE,EAAE,YAAY,EAAE,EAAE;QAClF,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,YAAY,CAAC,CAAC;QAEjG,MAAM,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,cAA8B,CAAC;QAEnC,OAAO;YACL,GAAG,iBAAiB;YAEpB,KAAK;gBACH,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;oBAChC,iBAAiB,CAAC,OAAO,CAAC;wBACxB,gBAAgB,EAAE,UAAU;wBAC5B,aAAa,EAAE,cAAc,CAAC,YAAY,EAAE;qBAC7C,CAAC,CAAC;gBACL,CAAC,EAAE,aAAa,CAAC,CAAC;YACpB,CAAC;YAED,IAAI;gBACF,aAAa,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
package/lib/worker/sms.js CHANGED
@@ -1,13 +1,5 @@
1
- import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
2
- import Twilio from 'twilio';
1
+ import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core';
3
2
  const { TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_SMS_FROM } = process.env;
4
- /* Potential: no need for twilio npm
5
- curl -X POST "https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json" \
6
- --data-urlencode "From=+15017122661" \
7
- --data-urlencode "Body=Hi there" \
8
- --data-urlencode "To=+15558675310" \
9
- -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
10
- */
11
3
  const SmsWorkerPlugin = {
12
4
  ...WorkerAdapter,
13
5
  key: 'shop.unchained.worker-plugin.sms',
@@ -34,25 +26,33 @@ const SmsWorkerPlugin = {
34
26
  };
35
27
  }
36
28
  try {
37
- const client = Twilio(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN);
38
- const { sid, errorMessage } = await client.messages.create({
39
- body: text,
40
- from: from || TWILIO_SMS_FROM,
41
- to,
29
+ const url = `https://api.twilio.com/2010-04-01/Accounts/${TWILIO_ACCOUNT_SID}/Messages.json`;
30
+ const response = await fetch(url, {
31
+ method: 'POST',
32
+ headers: {
33
+ Authorization: `Basic ${Buffer.from(`${TWILIO_ACCOUNT_SID}:${TWILIO_AUTH_TOKEN}`).toString('base64')}`,
34
+ 'Content-Type': 'application/x-www-form-urlencoded',
35
+ },
36
+ body: new URLSearchParams({
37
+ Body: text || '',
38
+ From: from || TWILIO_SMS_FROM,
39
+ To: to,
40
+ }),
42
41
  });
43
- if (errorMessage) {
42
+ const data = await response.json();
43
+ if (!response.ok) {
44
44
  return {
45
45
  success: false,
46
46
  error: {
47
47
  name: 'TWILIO_ERROR',
48
- message: errorMessage.toString(),
48
+ message: data.message || 'Failed to send SMS',
49
49
  },
50
50
  };
51
51
  }
52
52
  return {
53
53
  success: true,
54
54
  result: {
55
- sid,
55
+ sid: data.sid,
56
56
  },
57
57
  error: null,
58
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sms.js","sourceRoot":"","sources":["../../src/worker/sms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE/E;;;;;;EAME;AAEF,MAAM,eAAe,GAOjB;IACF,GAAG,aAAa;IAEhB,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,OAAO;IAEhB,IAAI,EAAE,KAAK;IAEX,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,8CAA8C;iBACxD;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzD,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI,IAAI,eAAe;gBAC7B,EAAE;aACH,CAAC,CAAC;YACH,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE;qBACjC;iBACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,GAAG;iBACJ;gBACD,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"sms.js","sourceRoot":"","sources":["../../src/worker/sms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpF,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE/E,MAAM,eAAe,GAOjB;IACF,GAAG,aAAa;IAEhB,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,OAAO;IAEhB,IAAI,EAAE,KAAK;IAEX,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,8CAA8C;iBACxD;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,8CAA8C,kBAAkB,gBAAgB,CAAC;YAC7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,IAAI,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACtG,cAAc,EAAE,mCAAmC;iBACpD;gBACD,IAAI,EAAE,IAAI,eAAe,CAAC;oBACxB,IAAI,EAAE,IAAI,IAAI,EAAE;oBAChB,IAAI,EAAE,IAAI,IAAI,eAAe;oBAC7B,EAAE,EAAE,EAAE;iBACP,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,oBAAoB;qBAC9C;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd;gBACD,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "4.2.0",
3
+ "version": "4.2.1",
4
4
  "main": "lib/plugins-index.js",
5
5
  "types": "lib/plugins-index.d.ts",
6
6
  "exports": {
@@ -14,6 +14,8 @@ import { filesSettings } from '@unchainedshop/core-files';
14
14
  import { UnchainedCore } from '@unchainedshop/core';
15
15
  import { GridFSFileUploadsModule } from './index.js';
16
16
 
17
+ const { GRIDFS_PUT_SERVER_PATH = '/gridfs' } = process.env;
18
+
17
19
  const { ROOT_URL } = process.env;
18
20
 
19
21
  const bufferToStream = (buffer: any) => {
@@ -51,12 +53,12 @@ export const GridFSAdapter: IFileAdapter<
51
53
  const signature = await sign(directoryName, hashedFilename, expiryDate.getTime());
52
54
 
53
55
  const putURL = new URL(
54
- `/gridfs/${directoryName}/${encodeURIComponent(
56
+ `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${encodeURIComponent(
55
57
  fileName,
56
58
  )}?e=${expiryDate.getTime()}&s=${signature}`,
57
59
  ROOT_URL,
58
60
  ).href;
59
- const url = `/gridfs/${directoryName}/${hashedFilename}`;
61
+ const url = `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${hashedFilename}`;
60
62
 
61
63
  return {
62
64
  _id: hashedFilename,
@@ -72,13 +74,16 @@ export const GridFSAdapter: IFileAdapter<
72
74
  async uploadFileFromStream(directoryName: string, rawFile: any, { modules }, options = {}) {
73
75
  let stream: Readable;
74
76
  let fileName;
77
+ let fileId;
75
78
  if (rawFile instanceof Promise) {
76
- const { filename: f, createReadStream } = await rawFile;
79
+ const { filename: f, createReadStream, fileId: forcedFileId } = await rawFile;
77
80
  fileName = decodeURIComponent(f);
78
81
  stream = createReadStream();
82
+ fileId = forcedFileId;
79
83
  } else {
80
84
  fileName = decodeURIComponent(rawFile.filename);
81
85
  stream = bufferToStream(Buffer.from(rawFile.buffer, 'base64'));
86
+ fileId = rawFile.fileId;
82
87
  }
83
88
 
84
89
  const expiryDate = resolveExpirationDate();
@@ -87,7 +92,7 @@ export const GridFSAdapter: IFileAdapter<
87
92
 
88
93
  const writeStream = await modules.gridfsFileUploads.createWriteStream(
89
94
  directoryName,
90
- hashedFilename,
95
+ fileId || hashedFilename,
91
96
  fileName,
92
97
  {
93
98
  metadata: { 'content-type': type },
@@ -105,10 +110,10 @@ export const GridFSAdapter: IFileAdapter<
105
110
  await finished(writeStream, { readable: false });
106
111
 
107
112
  const { length } = writeStream;
108
- const url = `/gridfs/${directoryName}/${encodeURIComponent(hashedFilename)}`;
113
+ const url = `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${encodeURIComponent(hashedFilename)}`;
109
114
 
110
115
  return {
111
- _id: hashedFilename,
116
+ _id: fileId || hashedFilename,
112
117
  directoryName,
113
118
  expiryDate: null,
114
119
  fileName,
@@ -135,7 +140,7 @@ export const GridFSAdapter: IFileAdapter<
135
140
 
136
141
  const writeStream = await modules.gridfsFileUploads.createWriteStream(
137
142
  directoryName,
138
- hashedFilename,
143
+ fileId || hashedFilename,
139
144
  fileName,
140
145
  {
141
146
  metadata: { 'content-type': type },
@@ -143,7 +148,7 @@ export const GridFSAdapter: IFileAdapter<
143
148
  );
144
149
  await pipeline(response.body as unknown as Readable, new PassThrough(), writeStream);
145
150
  const { length } = writeStream;
146
- const url = `/gridfs/${directoryName}/${encodeURIComponent(hashedFilename)}`;
151
+ const url = `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${encodeURIComponent(hashedFilename)}`;
147
152
 
148
153
  return {
149
154
  _id: fileId || hashedFilename,
@@ -8,7 +8,7 @@ import { Context } from '@unchainedshop/api';
8
8
  import { createLogger } from '@unchainedshop/logger';
9
9
  import { getFileAdapter } from '@unchainedshop/core-files';
10
10
 
11
- const { ROOT_URL } = process.env;
11
+ const { ROOT_URL, GRIDFS_PUT_SERVER_PATH = '/gridfs' } = process.env;
12
12
 
13
13
  const logger = createLogger('unchained:gridfs');
14
14
 
@@ -89,10 +89,10 @@ const gridfsHandler = async (
89
89
  }
90
90
 
91
91
  if (req.method === 'GET') {
92
- const fileId = fileName;
93
92
  const { s: signature, e: expiryTimestamp } = req.query;
94
- const file = await modules.gridfsFileUploads.getFileInfo(directoryName, fileId);
95
- const fileDocument = await modules.files.findFile({ fileId });
93
+ const fileDocument = await modules.files.findFile({
94
+ url: `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${fileName}`,
95
+ });
96
96
  if (fileDocument?.meta?.isPrivate) {
97
97
  const expiry = parseInt(expiryTimestamp as string, 10);
98
98
  if (expiry <= Date.now()) {
@@ -111,6 +111,9 @@ const gridfsHandler = async (
111
111
  res.status(404).end();
112
112
  return;
113
113
  }
114
+
115
+ const file = await modules.gridfsFileUploads.getFileInfo(directoryName, fileDocument._id);
116
+
114
117
  if (file?.metadata?.['content-type']) {
115
118
  res.setHeader('Content-Type', file.metadata['content-type']);
116
119
  }
@@ -118,7 +121,10 @@ const gridfsHandler = async (
118
121
  res.setHeader('Content-Length', file?.length.toString());
119
122
  }
120
123
 
121
- const readStream = await modules.gridfsFileUploads.createReadStream(directoryName, fileId);
124
+ const readStream = await modules.gridfsFileUploads.createReadStream(
125
+ directoryName,
126
+ fileDocument._id,
127
+ );
122
128
  readStream.pipe(res, { end: false });
123
129
  await finished(readStream);
124
130
  res.status(200).end();
@@ -10,6 +10,8 @@ import { getFileAdapter } from '@unchainedshop/core-files';
10
10
 
11
11
  const logger = createLogger('unchained:gridfs');
12
12
 
13
+ const { GRIDFS_PUT_SERVER_PATH = '/gridfs' } = process.env;
14
+
13
15
  const gridfsHandler: RouteHandlerMethod = async (
14
16
  req: FastifyRequest & {
15
17
  unchainedContext: Context & {
@@ -105,14 +107,14 @@ const gridfsHandler: RouteHandlerMethod = async (
105
107
  }
106
108
 
107
109
  if (req.method === 'GET') {
108
- const fileId = fileName;
109
110
  const { s: signature, e: expiryTimestamp } = req.query as Record<string, string>;
110
- const file = await modules.gridfsFileUploads.getFileInfo(directoryName, fileId);
111
- const fileDocument = await modules.files.findFile({ fileId });
111
+ const fileDocument = await modules.files.findFile({
112
+ url: `${GRIDFS_PUT_SERVER_PATH}/${directoryName}/${fileName}`,
113
+ });
112
114
  if (fileDocument?.meta?.isPrivate) {
113
115
  const expiry = parseInt(expiryTimestamp as string, 10);
114
116
  if (expiry <= Date.now()) {
115
- logger.error('URL Expired', { fileId, expiry });
117
+ logger.error('URL Expired', { fileName, expiry });
116
118
  reply.status(403);
117
119
  return reply.send({
118
120
  success: false,
@@ -126,7 +128,7 @@ const gridfsHandler: RouteHandlerMethod = async (
126
128
 
127
129
  if (!signedUrl || new URL(signedUrl, 'file://').searchParams.get('s') !== signature) {
128
130
  reply.status(403);
129
- logger.error('Invalid signature', { fileId, expiry });
131
+ logger.error('Invalid signature', { fileName, expiry });
130
132
  return reply.send({
131
133
  success: false,
132
134
  message: 'Access restricted: Invalid signature.',
@@ -134,11 +136,13 @@ const gridfsHandler: RouteHandlerMethod = async (
134
136
  });
135
137
  }
136
138
  } else if (!fileDocument) {
137
- logger.error('File not found', { fileId });
139
+ logger.error('File not found', { fileName });
138
140
  reply.status(404);
139
141
  return reply.send();
140
142
  }
141
143
 
144
+ const file = await modules.gridfsFileUploads.getFileInfo(directoryName, fileDocument._id);
145
+
142
146
  if (file?.metadata?.['content-type']) {
143
147
  reply.header('content-type', file.metadata['content-type']);
144
148
  }
@@ -146,7 +150,10 @@ const gridfsHandler: RouteHandlerMethod = async (
146
150
  reply.header('content-length', file?.length.toString());
147
151
  }
148
152
 
149
- const readStream = await modules.gridfsFileUploads.createReadStream(directoryName, fileId);
153
+ const readStream = await modules.gridfsFileUploads.createReadStream(
154
+ directoryName,
155
+ fileDocument._id,
156
+ );
150
157
 
151
158
  reply.status(200);
152
159
  return reply.send(readStream);
@@ -80,7 +80,7 @@ const Payrexx: IPaymentAdapter = {
80
80
  mapUserToGatewayObject({
81
81
  userId,
82
82
  emailAddress,
83
- currencyCode: 'CHF',
83
+ currencyCode: order?.currencyCode,
84
84
  }),
85
85
  );
86
86
  return JSON.stringify(gateway);
@@ -1,7 +1,7 @@
1
1
  import { FastifyInstance } from 'fastify';
2
2
  import handler from '../files/gridfs/handler-fastify.js';
3
3
 
4
- const { GRIDFS_PUT_SERVER_PATH = '/gridfs/:directoryName/:fileName' } = process.env;
4
+ const { GRIDFS_PUT_SERVER_PATH = '/gridfs' } = process.env;
5
5
 
6
6
  export default (fastify: FastifyInstance) => {
7
7
  fastify.register((s, opts, registered) => {
@@ -11,7 +11,7 @@ export default (fastify: FastifyInstance) => {
11
11
  done(null);
12
12
  });
13
13
  s.route({
14
- url: GRIDFS_PUT_SERVER_PATH,
14
+ url: GRIDFS_PUT_SERVER_PATH + '/:directoryName/:fileName',
15
15
  method: ['GET', 'PUT', 'OPTIONS'],
16
16
  handler,
17
17
  });
@@ -1,4 +0,0 @@
1
- import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
2
- declare const GoogleOAuth2Adapter: IOAuth2Adapter;
3
- export default GoogleOAuth2Adapter;
4
- //# sourceMappingURL=google-oauth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-oauth.d.ts","sourceRoot":"","sources":["../../src/accounts/google-oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAmFlE,QAAA,MAAM,mBAAmB,EAAE,cA4F1B,CAAC;AAIF,eAAe,mBAAmB,CAAC"}
@@ -1,145 +0,0 @@
1
- import { OAuth2Director, OAuth2Adapter } from '@unchainedshop/core-accountsjs';
2
- const { GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET } = process.env;
3
- const getGoggleAuthorizationCode = async ({ code, redirectUri, clientId, clientSecret, }) => {
4
- const response = await fetch('https://oauth2.googleapis.com/token', {
5
- method: 'POST',
6
- headers: {
7
- 'Content-Type': 'application/json',
8
- },
9
- // eslint-disable-next-line
10
- // @ts-ignore
11
- duplex: 'half',
12
- body: JSON.stringify({
13
- code,
14
- client_id: clientId,
15
- grant_type: 'authorization_code',
16
- client_secret: clientSecret,
17
- redirect_uri: redirectUri,
18
- access_type: 'offline',
19
- }),
20
- });
21
- return response.json();
22
- };
23
- const normalizeProfileData = (data) => {
24
- const { names = [], genders = [], addresses = [], emailAddresses = [], phoneNumbers = [], birthdays = [], photos = [], } = data;
25
- const [name] = names;
26
- const [gender] = genders;
27
- const [email] = emailAddresses;
28
- const [birthday] = birthdays;
29
- const [phone] = phoneNumbers;
30
- const [address] = addresses;
31
- const [photo] = photos;
32
- return {
33
- id: data.sub,
34
- firstName: name?.givenName,
35
- lastName: name?.familyName,
36
- displayName: name?.displayName,
37
- gender: gender?.value,
38
- email: email?.value,
39
- birthDate: birthday?.date
40
- ? new Date(birthday?.date?.year ?? 0, birthdays?.date?.month ?? 0, birthday?.date?.day ?? 0)
41
- : undefined,
42
- phoneNumber: phone?.canonicalForm,
43
- address: address?.formattedValue,
44
- avatarUrl: photo?.url,
45
- };
46
- };
47
- const parseGoogleIdToken = (idToken) => {
48
- const [, base64UserInfo] = idToken.split('.');
49
- const buff = Buffer.from(base64UserInfo, 'base64');
50
- const data = JSON.parse(buff.toString());
51
- return {
52
- id: data.sub,
53
- email: data?.email,
54
- firstName: data?.given_name,
55
- lastName: data?.family_name,
56
- avatarUrl: data?.picture,
57
- fullName: data?.name,
58
- exp: data?.exp,
59
- ...data,
60
- };
61
- };
62
- const GoogleOAuth2Adapter = {
63
- ...OAuth2Adapter,
64
- key: 'google-oauth2',
65
- label: 'Google Oauth',
66
- version: '1',
67
- provider: 'google',
68
- config: {
69
- clientId: GOOGLE_OAUTH_CLIENT_ID,
70
- scopes: [
71
- 'genders',
72
- 'emailAddresses',
73
- 'phoneNumbers',
74
- 'addresses',
75
- 'birthdays',
76
- 'metadata',
77
- 'names',
78
- 'photos',
79
- 'locations',
80
- ],
81
- },
82
- actions: () => {
83
- return {
84
- ...OAuth2Adapter.actions(null),
85
- configurationError: () => {
86
- return '';
87
- },
88
- isActive: () => {
89
- return Boolean(GOOGLE_OAUTH_CLIENT_ID && GOOGLE_OAUTH_CLIENT_SECRET);
90
- },
91
- getAuthorizationToken: async (authorizationCode, redirectUrl) => {
92
- return getGoggleAuthorizationCode({
93
- code: authorizationCode,
94
- clientId: GoogleOAuth2Adapter.config.clientId,
95
- redirectUri: redirectUrl,
96
- clientSecret: GOOGLE_OAUTH_CLIENT_SECRET,
97
- });
98
- },
99
- getAccountData: async ({ access_token, id_token }) => {
100
- const response = await fetch(`https://people.googleapis.com/v1/people/me?personFields=${GoogleOAuth2Adapter.config.scopes.join(',')}`, {
101
- headers: {
102
- Authorization: `Bearer ${access_token}`,
103
- },
104
- });
105
- if (response.status === 403)
106
- return parseGoogleIdToken(id_token);
107
- const profileInfoJSON = await response.json();
108
- if (profileInfoJSON?.error)
109
- throw new Error(profileInfoJSON?.error.message);
110
- return normalizeProfileData(profileInfoJSON);
111
- },
112
- isTokenValid: async (accessToken) => {
113
- const response = await fetch(`https://oauth2.googleapis.com/tokeninfo?id_token=${accessToken?.id_token}`);
114
- const tokenInfo = await response.json();
115
- if (tokenInfo.error) {
116
- return false;
117
- }
118
- return true;
119
- },
120
- refreshToken: async ({ refresh_token }) => {
121
- const response = await fetch('https://oauth2.googleapis.com/token', {
122
- method: 'POST',
123
- // eslint-disable-next-line
124
- // @ts-ignore
125
- duplex: 'half',
126
- headers: {
127
- 'Content-Type': 'application/json',
128
- },
129
- body: JSON.stringify({
130
- client_id: GoogleOAuth2Adapter.config.clientId,
131
- grant_type: 'refresh_token',
132
- client_secret: GOOGLE_OAUTH_CLIENT_SECRET,
133
- refresh_token,
134
- access_type: 'offline',
135
- }),
136
- });
137
- const refreshedAccessToken = await response.json();
138
- return refreshedAccessToken;
139
- },
140
- };
141
- },
142
- };
143
- OAuth2Director.registerAdapter(GoogleOAuth2Adapter);
144
- export default GoogleOAuth2Adapter;
145
- //# sourceMappingURL=google-oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-oauth.js","sourceRoot":"","sources":["../../src/accounts/google-oauth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { IOAuth2Adapter } from '@unchainedshop/types/accounts.js';
2
- declare const LinkedInOAuthAdapter: IOAuth2Adapter;
3
- export default LinkedInOAuthAdapter;
4
- //# sourceMappingURL=linkedin-oauth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedin-oauth.d.ts","sourceRoot":"","sources":["../../src/accounts/linkedin-oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AA2ClE,QAAA,MAAM,oBAAoB,EAAE,cAsD3B,CAAC;AAIF,eAAe,oBAAoB,CAAC"}