@driveflux/api-functions 1.0.33 → 1.0.35

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 (51) hide show
  1. package/dist/auth/confirm.js +24 -29
  2. package/dist/auth/emails.js +12 -13
  3. package/dist/auth/formatter.js +5 -5
  4. package/dist/auth/otp.js +66 -50
  5. package/dist/auth/register.js +42 -34
  6. package/dist/auth/tokens.js +58 -55
  7. package/dist/auth/verifications.js +53 -52
  8. package/dist/constants.js +0 -1
  9. package/dist/create-logger.js +1 -2
  10. package/dist/mailjet/calls/manage-contacts-in-list.js +5 -6
  11. package/dist/mailjet/calls/manage-subscription-status.js +4 -5
  12. package/dist/mailjet/calls/request-service.js +7 -6
  13. package/dist/mailjet/refresh-email-preferences.js +11 -12
  14. package/dist/mailjet/set-contact.js +11 -12
  15. package/dist/mailjet/types.js +1 -2
  16. package/dist/mailjet/utils/convert-to-array.js +8 -6
  17. package/dist/mailjet/utils/extract-email-preferences.js +14 -15
  18. package/dist/mailjet/utils/lists.js +7 -8
  19. package/dist/mailjet/utils/update-email-references.js +16 -15
  20. package/dist/notion/client.js +22 -19
  21. package/dist/notion/helpful.js +6 -9
  22. package/dist/notion/schemas/block.js +42 -48
  23. package/dist/notion/schemas/common.js +9 -14
  24. package/dist/notion/schemas/database.js +62 -60
  25. package/dist/notion/schemas/emoji.js +1 -2
  26. package/dist/notion/schemas/file.js +9 -9
  27. package/dist/notion/schemas/kb.js +5 -6
  28. package/dist/notion/schemas/page.js +72 -61
  29. package/dist/notion/schemas/parent.js +4 -5
  30. package/dist/notion/schemas/user.js +18 -19
  31. package/dist/reservation/agree.js +6 -7
  32. package/dist/reservation/checks.js +3 -4
  33. package/dist/reservation/display-vehicle.js +65 -71
  34. package/dist/reservation/ensure-user-billing-address.d.ts.map +1 -1
  35. package/dist/reservation/ensure-user-billing-address.js +9 -11
  36. package/dist/reservation/ensure-user-billing-address.js.map +1 -1
  37. package/dist/reservation/fetch-or-create.js +48 -54
  38. package/dist/reservation/invoice.d.ts.map +1 -1
  39. package/dist/reservation/invoice.js +71 -77
  40. package/dist/reservation/invoice.js.map +1 -1
  41. package/dist/reservation/payer.js +5 -6
  42. package/dist/reservation/payment-intent-sync.js +4 -6
  43. package/dist/reservation/reserve.js +3 -4
  44. package/dist/reservation/types.js +1 -2
  45. package/dist/reservation/vehicle.js +13 -16
  46. package/dist/slack.js +24 -29
  47. package/dist/validation.js +77 -79
  48. package/dist/vehicle/vehicle-pricing/constants.js +22 -19
  49. package/dist/vehicle/vehicle-pricing/index.js +28 -42
  50. package/dist/vehicle/vehicle-pricing/types.js +1 -2
  51. package/package.json +11 -11
@@ -1,6 +1,6 @@
1
1
  import { config } from '@driveflux/config/backend';
2
2
  import { loadCoupon, PROBLEM_APPLICABLE_NOT_FOUND } from '@driveflux/coupon';
3
- import { prisma, } from '@driveflux/db';
3
+ import { prisma } from '@driveflux/db';
4
4
  import { generateId } from '@driveflux/db/id';
5
5
  import { EMPTY_BILLING_ADDRESS } from '@driveflux/db/models/other';
6
6
  import { PURPOSE_RESERVATION } from '@driveflux/db/models/subscription';
@@ -13,17 +13,16 @@ import { format } from '@driveflux/time';
13
13
  import { isAfter } from 'date-fns/isAfter';
14
14
  import { subMinutes } from 'date-fns/subMinutes';
15
15
  import { createScopedLogger } from '../create-logger.js';
16
- const _log = createScopedLogger('reservation:invoice');
17
- export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, newParams) => {
16
+ const log = createScopedLogger('reservation:invoice');
17
+ export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, newParams)=>{
18
18
  const couponIsDifferent = oldReservationInvoice.couponCode !== newParams.couponCode;
19
- if (!couponIsDifferent &&
20
- oldReservationInvoice.stripePaymentIntentId === newParams.paymentIntentId) {
19
+ if (!couponIsDifferent && oldReservationInvoice.stripePaymentIntentId === newParams.paymentIntentId) {
21
20
  return new Ok(oldReservationInvoice);
22
21
  }
23
22
  // If the coupon or payment intent are differnt we should update the invoice
24
23
  let update = {
25
24
  stripePaymentIntentId: newParams.paymentIntentId,
26
- couponCode: newParams.couponCode,
25
+ couponCode: newParams.couponCode
27
26
  };
28
27
  // If the coupon is different, we need to apply the coupon to the invoice
29
28
  if (couponIsDifferent) {
@@ -31,63 +30,56 @@ export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, ne
31
30
  const result = await coupons.applyCouponToUnsavedInvoice(newParams.couponCode, oldReservationInvoice);
32
31
  if (result.ok) {
33
32
  const { discounts, ...rest } = result.val;
34
- const toDisconnect = discounts
35
- ? oldReservationInvoice.discountIds?.filter((id) => !discounts.connect?.some((d) => d.id === id))
36
- : undefined;
37
- const disconnectClauses = toDisconnect?.length
38
- ? {
39
- disconnect: toDisconnect.map((id) => ({ id })),
40
- }
41
- : undefined;
33
+ const toDisconnect = discounts ? oldReservationInvoice.discountIds?.filter((id)=>!discounts.connect?.some((d)=>d.id === id)) : undefined;
34
+ const disconnectClauses = toDisconnect?.length ? {
35
+ disconnect: toDisconnect.map((id)=>({
36
+ id
37
+ }))
38
+ } : undefined;
42
39
  update = {
43
40
  ...update,
44
41
  ...rest,
45
- ...(discounts || disconnectClauses
46
- ? {
47
- discounts: {
48
- ...(discounts || {}),
49
- ...(disconnectClauses || {}),
50
- },
42
+ ...discounts || disconnectClauses ? {
43
+ discounts: {
44
+ ...discounts || {},
45
+ ...disconnectClauses || {}
51
46
  }
52
- : {}),
47
+ } : {},
53
48
  metadata: {
54
49
  ...update.metadata,
55
- couponCode: newParams.couponCode,
50
+ couponCode: newParams.couponCode
56
51
  },
57
52
  providerMetadata: {
58
53
  ...update.providerMetadata,
59
- couponCode: newParams.couponCode,
60
- },
54
+ couponCode: newParams.couponCode
55
+ }
61
56
  };
62
57
  }
63
58
  if (result.err && result.val.code !== PROBLEM_APPLICABLE_NOT_FOUND) {
64
59
  return result;
65
60
  }
66
- }
67
- else if (oldReservationInvoice.discountIds.length) {
61
+ } else if (oldReservationInvoice.discountIds.length) {
68
62
  // No discounts, so we disconnect all of them
69
63
  update = {
70
64
  discounts: {
71
- disconnect: oldReservationInvoice.discountIds.map((id) => ({
72
- id,
73
- })),
74
- },
65
+ disconnect: oldReservationInvoice.discountIds.map((id)=>({
66
+ id
67
+ }))
68
+ }
75
69
  };
76
70
  }
77
71
  }
78
72
  let updated = await wrapInResult(biller.updateInvoice(oldReservationInvoice.id, update));
79
73
  // If the invoice was locked due to pending status and we're more than 1 minute old, we unlock it
80
74
  if (updated.err && updated.val.code === 'invoice_pending') {
81
- if ((oldReservationInvoice.lockedAt &&
82
- isAfter(oldReservationInvoice.lockedAt, subMinutes(new Date(), 1))) ||
83
- !oldReservationInvoice.lockedAt) {
75
+ if (oldReservationInvoice.lockedAt && isAfter(oldReservationInvoice.lockedAt, subMinutes(new Date(), 1)) || !oldReservationInvoice.lockedAt) {
84
76
  updated = await wrapInResult(biller.updateInvoice(oldReservationInvoice.id, {
85
77
  ...update,
86
78
  locked: false,
87
79
  lockedAt: null,
88
80
  lockReason: null,
89
81
  unlockAt: null,
90
- status: 'draft',
82
+ status: 'draft'
91
83
  }));
92
84
  }
93
85
  }
@@ -96,7 +88,7 @@ export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, ne
96
88
  }
97
89
  return new Ok(updated.val);
98
90
  };
99
- export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser, }) => {
91
+ export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser })=>{
100
92
  if (freeReservation) {
101
93
  // It's a free reservation, so we don't need to add a coupon code
102
94
  return await wrapInResult(biller.createInvoice(getInvoiceCreateDetails({
@@ -109,21 +101,17 @@ export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mi
109
101
  freeReservation,
110
102
  freeReservationReason,
111
103
  analytics,
112
- reservationId,
104
+ reservationId
113
105
  })));
114
106
  }
115
107
  let finalCouponCode = couponCode;
116
108
  // If we don't have a reservation coupon ID, we apply the referral discount if any
117
- const referral = referralCode &&
118
- (await prisma.referral.findUnique({
119
- where: {
120
- id: referralCode,
121
- },
122
- }));
123
- if (!finalCouponCode &&
124
- referral &&
125
- referral.discountToReceiverCouponId &&
126
- referral.discountToReceiverCouponApplicationName === 'reservationFee') {
109
+ const referral = referralCode && await prisma.referral.findUnique({
110
+ where: {
111
+ id: referralCode
112
+ }
113
+ });
114
+ if (!finalCouponCode && referral && referral.discountToReceiverCouponId && referral.discountToReceiverCouponApplicationName === 'reservationFee') {
127
115
  const referralCoupon = await loadCoupon(referral.discountToReceiverCouponId);
128
116
  if (referralCoupon) {
129
117
  finalCouponCode = referralCoupon.code;
@@ -142,17 +130,20 @@ export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mi
142
130
  freeReservation,
143
131
  freeReservationReason,
144
132
  analytics,
145
- reservationId,
133
+ reservationId
146
134
  }),
147
135
  lines: [
148
136
  {
149
137
  amount: reservationAmount,
150
138
  description: `Reservation fee for ${vehicleName(vehicle)}`,
151
- chargingFor: 'reservationFee',
152
- },
153
- ],
139
+ chargingFor: 'reservationFee'
140
+ }
141
+ ]
154
142
  };
155
143
  if (finalCouponCode) {
144
+ log.debug({
145
+ finalCouponCode
146
+ }, 'Applying coupon code to invoice');
156
147
  const withCoupon = await coupons.applyCouponToUnsavedInvoice(finalCouponCode, invoiceCreateDetails, 'reservationFee', {
157
148
  subscriptionPlans: plan,
158
149
  subscriptionMileagePackages: mileagePackage,
@@ -160,23 +151,25 @@ export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mi
160
151
  vehicleMake: vehicle.make,
161
152
  userId: subscribingUser.id,
162
153
  businessId: payer.object === 'business' ? payer.id : undefined,
163
- vehicleType: vehicle.type,
154
+ vehicleType: vehicle.type
164
155
  });
165
- if (withCoupon.err &&
166
- withCoupon.val.code !== PROBLEM_APPLICABLE_NOT_FOUND) {
156
+ if (withCoupon.err && withCoupon.val.code !== PROBLEM_APPLICABLE_NOT_FOUND) {
167
157
  return withCoupon;
168
158
  }
159
+ log.debug({
160
+ couponUpdates: withCoupon.val
161
+ }, 'Coupon applied to invoice');
169
162
  if (withCoupon.ok) {
170
163
  invoiceCreateDetails = {
171
164
  ...withCoupon.val,
172
165
  metadata: {
173
166
  ...withCoupon.val.metadata,
174
- couponCode: finalCouponCode,
167
+ couponCode: finalCouponCode
175
168
  },
176
169
  providerMetadata: {
177
170
  ...withCoupon.val.providerMetadata,
178
- couponCode: finalCouponCode,
179
- },
171
+ couponCode: finalCouponCode
172
+ }
180
173
  };
181
174
  }
182
175
  }
@@ -184,15 +177,15 @@ export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mi
184
177
  ...invoiceCreateDetails,
185
178
  providerMetadata: {
186
179
  ...invoiceCreateDetails.providerMetadata,
187
- invoiceId: invoiceCreateDetails.id,
188
- },
180
+ invoiceId: invoiceCreateDetails.id
181
+ }
189
182
  }));
190
183
  if (result.err) {
191
184
  return result;
192
185
  }
193
186
  return new Ok(result.val);
194
187
  };
195
- const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId, vehicle, plan, mileagePackage, couponCode, paymentIntentId, freeReservation, freeReservationReason, analytics, reservationId, }) => {
188
+ const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId, vehicle, plan, mileagePackage, couponCode, paymentIntentId, freeReservation, freeReservationReason, analytics, reservationId })=>{
196
189
  return {
197
190
  id: invoiceId || generateId('Invoice'),
198
191
  taxPercentage: 0,
@@ -208,15 +201,13 @@ const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId
208
201
  description: 'Reservation fee for a FLUX subscription',
209
202
  footer: `Invoice for a FLUX subscription reservation. Due by ${format(date ?? new Date())}`,
210
203
  invoiceUrl: `${config.appUrl}/invoice-preview/${invoiceId}`,
211
- ...(reservationDiscountId
212
- ? {
213
- discounts: {
214
- connect: {
215
- id: reservationDiscountId,
216
- },
217
- },
204
+ ...reservationDiscountId ? {
205
+ discounts: {
206
+ connect: {
207
+ id: reservationDiscountId
208
+ }
218
209
  }
219
- : {}),
210
+ } : {},
220
211
  lines: [],
221
212
  subscriptionDetails: {
222
213
  vehicleId: vehicle.id,
@@ -225,7 +216,7 @@ const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId
225
216
  variant: vehicle.variant,
226
217
  year: vehicle.year,
227
218
  plan: plan,
228
- mileagePackage: mileagePackage,
219
+ mileagePackage: mileagePackage
229
220
  },
230
221
  // Legacy field:
231
222
  stripePaymentIntentId: paymentIntentId,
@@ -235,14 +226,18 @@ const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId
235
226
  mileagePackage,
236
227
  vehicleId: vehicle.id,
237
228
  vehicleName: vehicleName(vehicle),
238
- ...(reservationId ? { reservationId } : {}),
239
- ...(couponCode ? { couponCode } : {}),
229
+ ...reservationId ? {
230
+ reservationId
231
+ } : {},
232
+ ...couponCode ? {
233
+ couponCode
234
+ } : {}
240
235
  },
241
236
  autoRetry: {
242
237
  enabled: false,
243
238
  interval: 0,
244
239
  maxAttempts: 0,
245
- attempts: 0,
240
+ attempts: 0
246
241
  },
247
242
  metadata: {
248
243
  purpose: PURPOSE_RESERVATION,
@@ -251,11 +246,10 @@ const getInvoiceCreateDetails = ({ invoiceId, payer, date, reservationDiscountId
251
246
  plan,
252
247
  mileagePackage,
253
248
  couponCode,
254
- ...(freeReservation && freeReservationReason
255
- ? { freeReservationReason }
256
- : {}),
257
- analytics,
258
- },
249
+ ...freeReservation && freeReservationReason ? {
250
+ freeReservationReason
251
+ } : {},
252
+ analytics
253
+ }
259
254
  };
260
255
  };
261
- //# sourceMappingURL=invoice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.js","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoice.js","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { prisma } from '@driveflux/db';
2
- import { makeProblem, PROBLEM_CONDITION_FAILED, PROBLEM_NOT_FOUND, } from '@driveflux/problem';
2
+ import { makeProblem, PROBLEM_CONDITION_FAILED, PROBLEM_NOT_FOUND } from '@driveflux/problem';
3
3
  import { Err, Ok } from '@driveflux/result';
4
- export const getPayer = async ({ subscribingUser, asBusiness, }) => {
4
+ export const getPayer = async ({ subscribingUser, asBusiness })=>{
5
5
  let business = null;
6
6
  let payer = subscribingUser;
7
7
  if (asBusiness) {
@@ -11,8 +11,8 @@ export const getPayer = async ({ subscribingUser, asBusiness, }) => {
11
11
  // load business
12
12
  business = await prisma.business.findUnique({
13
13
  where: {
14
- id: subscribingUser.businessId,
15
- },
14
+ id: subscribingUser.businessId
15
+ }
16
16
  });
17
17
  if (!business) {
18
18
  return new Err(makeProblem(PROBLEM_NOT_FOUND, `The business ${subscribingUser.businessId} was not found.`));
@@ -26,7 +26,7 @@ export const getPayer = async ({ subscribingUser, asBusiness, }) => {
26
26
  }
27
27
  return new Ok(payer);
28
28
  };
29
- const checkPayerObjectSanity = (subscriber) => {
29
+ const checkPayerObjectSanity = (subscriber)=>{
30
30
  if (!subscriber.email) {
31
31
  return new Err(makeProblem(PROBLEM_CONDITION_FAILED, `Subscriber ${subscriber.id} has no email. Please add a verified email first.`));
32
32
  }
@@ -35,4 +35,3 @@ const checkPayerObjectSanity = (subscriber) => {
35
35
  }
36
36
  return new Ok(true);
37
37
  };
38
- //# sourceMappingURL=payer.js.map
@@ -3,20 +3,18 @@ import { makeProblem, PROBLEM_EXTERNAL } from '@driveflux/problem';
3
3
  import { Err, Ok } from '@driveflux/result';
4
4
  import { createScopedLogger } from '../create-logger.js';
5
5
  const log = createScopedLogger('reservation:payment-intent-sync');
6
- export const ensurePaymentIntentIdIsSynced = async (invoice, paymentIntentId) => {
6
+ export const ensurePaymentIntentIdIsSynced = async (invoice, paymentIntentId)=>{
7
7
  const stripe = biller.getPaymentProvider('stripe').getStripe();
8
8
  try {
9
9
  await stripe.paymentIntents.update(paymentIntentId, {
10
10
  metadata: {
11
11
  ...invoice.providerMetadata,
12
- invoiceId: invoice.id,
13
- },
12
+ invoiceId: invoice.id
13
+ }
14
14
  });
15
15
  return new Ok(true);
16
- }
17
- catch (error) {
16
+ } catch (error) {
18
17
  log.error(error, 'Error updating payment intent metadata');
19
18
  return new Err(makeProblem(PROBLEM_EXTERNAL, 'Error updating payment intent metadata'));
20
19
  }
21
20
  };
22
- //# sourceMappingURL=payment-intent-sync.js.map
@@ -6,14 +6,14 @@ import { fetchOrCreateReservation } from './fetch-or-create.js';
6
6
  import { getPayer } from './payer.js';
7
7
  import { ensurePaymentIntentIdIsSynced } from './payment-intent-sync.js';
8
8
  import { getVehicle } from './vehicle.js';
9
- const processBody = (body) => {
9
+ const processBody = (body)=>{
10
10
  // Switch mileage package
11
11
  if (body.plan === 'plan1' || body.plan === 'planWeekly') {
12
12
  body.mileagePackage = 'unlimited';
13
13
  }
14
14
  return body;
15
15
  };
16
- export const reserveVehicle = async (vehicleId, unprocessed) => {
16
+ export const reserveVehicle = async (vehicleId, unprocessed)=>{
17
17
  const body = processBody(unprocessed);
18
18
  // Agree to terms if not done yet
19
19
  await handleAgreeToTerms(body);
@@ -41,7 +41,7 @@ export const reserveVehicle = async (vehicleId, unprocessed) => {
41
41
  const reservationResult = await fetchOrCreateReservation({
42
42
  vehicle,
43
43
  payer,
44
- body,
44
+ body
45
45
  });
46
46
  if (reservationResult.err) {
47
47
  return reservationResult;
@@ -57,4 +57,3 @@ export const reserveVehicle = async (vehicleId, unprocessed) => {
57
57
  }
58
58
  return new Ok(reservation);
59
59
  };
60
- //# sourceMappingURL=reserve.js.map
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
1
+ export { };
@@ -4,21 +4,19 @@ import { makeProblem, PROBLEM_NOT_FOUND } from '@driveflux/problem';
4
4
  import { Err, Ok } from '@driveflux/result';
5
5
  import { checkIfVehicleIsAvailableForReservation } from './checks.js';
6
6
  import { createVehicleFromDisplayVehicle } from './display-vehicle.js';
7
- export const getVehicle = async (id, { selectedColor, plan, requestUser, }, requesterAbility) => {
8
- const vehicle = id.startsWith('DV_')
9
- ? await createVehicleFromDisplayVehicle(id, selectedColor || undefined)
10
- : await prisma.vehicle.findUnique({
11
- where: {
12
- id,
13
- },
14
- include: {
15
- host: {
16
- select: {
17
- id: true,
18
- },
19
- },
20
- },
21
- });
7
+ export const getVehicle = async (id, { selectedColor, plan, requestUser }, requesterAbility)=>{
8
+ const vehicle = id.startsWith('DV_') ? await createVehicleFromDisplayVehicle(id, selectedColor || undefined) : await prisma.vehicle.findUnique({
9
+ where: {
10
+ id
11
+ },
12
+ include: {
13
+ host: {
14
+ select: {
15
+ id: true
16
+ }
17
+ }
18
+ }
19
+ });
22
20
  if (!vehicle) {
23
21
  return new Err(makeProblem(PROBLEM_NOT_FOUND, 'Vehicle not found'));
24
22
  }
@@ -29,4 +27,3 @@ export const getVehicle = async (id, { selectedColor, plan, requestUser, }, requ
29
27
  }
30
28
  return new Ok(vehicle);
31
29
  };
32
- //# sourceMappingURL=vehicle.js.map
package/dist/slack.js CHANGED
@@ -10,12 +10,11 @@ const slackBlocks = global.__slackBlocks;
10
10
  /**
11
11
  *
12
12
  * @deprecated Use slackLater instead and commitSlack to commit
13
- */
14
- export const slack = async (message, channel = config.slack.defaultChannelId) => {
13
+ */ export const slack = async (message, channel = config.slack.defaultChannelId)=>{
15
14
  return await enhancedFetch('https://slack.com/api/chat.postMessage', {
16
15
  method: 'POST',
17
16
  headers: {
18
- Authorization: `Bearer ${config.slack.token}`,
17
+ Authorization: `Bearer ${config.slack.token}`
19
18
  },
20
19
  body: JSON.stringify({
21
20
  channel,
@@ -24,23 +23,20 @@ export const slack = async (message, channel = config.slack.defaultChannelId) =>
24
23
  type: 'section',
25
24
  text: {
26
25
  type: 'mrkdwn',
27
- text: message,
28
- },
29
- },
30
- ],
31
- }),
26
+ text: message
27
+ }
28
+ }
29
+ ]
30
+ })
32
31
  });
33
32
  };
34
- export const getSlackBlocks = (channel) => channel ? slackBlocks.get(channel) : slackBlocks;
33
+ export const getSlackBlocks = (channel)=>channel ? slackBlocks.get(channel) : slackBlocks;
35
34
  /**
36
35
  * Naive implementation, however, for now (uncrowded serverless env), this works
37
36
  * @param blocks
38
37
  * @param channel
39
- */
40
- export function slackLater(blocks, channel) {
41
- const targetChannel = (config.appEnv === 'production'
42
- ? channel
43
- : config.slack.defaultChannelId) || config.slack.defaultChannelId;
38
+ */ export function slackLater(blocks, channel) {
39
+ const targetChannel = (config.appEnv === 'production' ? channel : config.slack.defaultChannelId) || config.slack.defaultChannelId;
44
40
  if (!targetChannel || !blocks) {
45
41
  return;
46
42
  }
@@ -50,15 +46,13 @@ export function slackLater(blocks, channel) {
50
46
  type: 'section',
51
47
  text: {
52
48
  type: 'mrkdwn',
53
- text: blocks,
54
- },
49
+ text: blocks
50
+ }
55
51
  });
56
- }
57
- else if (!Array.isArray(blocks)) {
52
+ } else if (!Array.isArray(blocks)) {
58
53
  messages.add(blocks);
59
- }
60
- else {
61
- for (const b of blocks) {
54
+ } else {
55
+ for (const b of blocks){
62
56
  messages.add(b);
63
57
  }
64
58
  }
@@ -69,22 +63,22 @@ export async function sendSlackMessages(channel, blocks) {
69
63
  return await enhancedFetch('https://slack.com/api/chat.postMessage', {
70
64
  method: 'POST',
71
65
  headers: {
72
- Authorization: `Bearer ${config.slack.token}`,
66
+ Authorization: `Bearer ${config.slack.token}`
73
67
  },
74
68
  body: JSON.stringify({
75
69
  channel: targetChannel,
76
- blocks: Array.from(blocks),
77
- }),
70
+ blocks: Array.from(blocks)
71
+ })
78
72
  });
79
73
  }
80
- export const commitSlack = () => {
74
+ export const commitSlack = ()=>{
81
75
  if (!slackBlocks.size) {
82
76
  return;
83
77
  }
84
78
  const channels = slackBlocks.keys();
85
79
  let i = 1;
86
80
  const baseUrl = config.appEnv === 'development' ? config.tunnelUrl : config.appUrl;
87
- for (const channel of channels) {
81
+ for (const channel of channels){
88
82
  const blocks = slackBlocks.get(channel);
89
83
  if (!blocks?.size) {
90
84
  continue;
@@ -94,12 +88,13 @@ export const commitSlack = () => {
94
88
  name: TASK_COMMIT_SLACK_CHANNEL,
95
89
  metadata: {
96
90
  channel,
97
- blocks: [...blocks],
91
+ blocks: [
92
+ ...blocks
93
+ ]
98
94
  },
99
95
  taskHandlerUrl: `${baseUrl || config.appUrl}/api/hooks/slack-pipeline`,
100
- scheduledAt: addSeconds(new Date(), i++),
96
+ scheduledAt: addSeconds(new Date(), i++)
101
97
  });
102
98
  }
103
99
  slackBlocks.clear();
104
100
  };
105
- //# sourceMappingURL=slack.js.map