@driveflux/api-functions 1.0.146 → 1.0.148

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 (50) hide show
  1. package/dist/auth/confirm.js +24 -24
  2. package/dist/auth/consent.js +27 -22
  3. package/dist/auth/emails.js +13 -12
  4. package/dist/auth/formatter.js +5 -5
  5. package/dist/auth/otp.js +50 -66
  6. package/dist/auth/register.js +35 -48
  7. package/dist/auth/tokens.js +55 -58
  8. package/dist/auth/verifications.js +52 -53
  9. package/dist/constants.js +1 -0
  10. package/dist/create-logger.js +2 -1
  11. package/dist/mailjet/calls/manage-contacts-in-list.js +6 -5
  12. package/dist/mailjet/calls/manage-subscription-status.js +5 -4
  13. package/dist/mailjet/calls/request-service.js +6 -7
  14. package/dist/mailjet/refresh-email-preferences.js +12 -11
  15. package/dist/mailjet/set-contact.js +12 -11
  16. package/dist/mailjet/types.js +2 -1
  17. package/dist/mailjet/utils/convert-to-array.js +6 -8
  18. package/dist/mailjet/utils/extract-email-preferences.js +15 -14
  19. package/dist/mailjet/utils/lists.js +8 -7
  20. package/dist/mailjet/utils/update-email-references.js +15 -16
  21. package/dist/notion/client.js +19 -22
  22. package/dist/notion/helpful.js +9 -6
  23. package/dist/notion/schemas/block.js +48 -42
  24. package/dist/notion/schemas/common.js +14 -9
  25. package/dist/notion/schemas/database.js +60 -62
  26. package/dist/notion/schemas/emoji.js +2 -1
  27. package/dist/notion/schemas/file.js +9 -9
  28. package/dist/notion/schemas/kb.js +6 -5
  29. package/dist/notion/schemas/page.js +61 -72
  30. package/dist/notion/schemas/parent.js +5 -4
  31. package/dist/notion/schemas/user.js +19 -18
  32. package/dist/reservation/agree.js +3 -2
  33. package/dist/reservation/checks.js +4 -3
  34. package/dist/reservation/display-vehicle.js +83 -73
  35. package/dist/reservation/ensure-user-billing-address.js +11 -9
  36. package/dist/reservation/fetch-or-create.js +56 -49
  37. package/dist/reservation/invoice.js +88 -77
  38. package/dist/reservation/payer.js +6 -5
  39. package/dist/reservation/payment-intent-sync.js +6 -4
  40. package/dist/reservation/reserve.js +4 -3
  41. package/dist/reservation/types.js +2 -1
  42. package/dist/reservation/vehicle.js +16 -13
  43. package/dist/slack.js +29 -24
  44. package/dist/validation.d.ts.map +1 -1
  45. package/dist/validation.js +85 -81
  46. package/dist/validation.js.map +1 -1
  47. package/dist/vehicle/vehicle-pricing/constants.js +19 -22
  48. package/dist/vehicle/vehicle-pricing/index.js +42 -28
  49. package/dist/vehicle/vehicle-pricing/types.js +2 -1
  50. package/package.json +11 -11
@@ -1,32 +1,34 @@
1
1
  import { makeProblem } from '@driveflux/problem';
2
2
  import { Err } from '@driveflux/result';
3
- import { z } from 'zod';
4
- export const makeValidationErrorResult = (zodError)=>{
5
- const validation = zodError.flatten((i)=>({
6
- message: i.message,
7
- code: i.code,
8
- path: i.path
9
- }));
3
+ import { z, } from 'zod';
4
+ export const makeValidationErrorResult = (zodError) => {
5
+ const validation = zodError.flatten((i) => ({
6
+ message: i.message,
7
+ code: i.code,
8
+ path: i.path,
9
+ }));
10
10
  return new Err(makeProblem({
11
11
  object: 'validation-issues',
12
- ...validation
12
+ ...validation,
13
13
  }));
14
14
  };
15
- export const getIdOrObjectValidation = (object, extendObjectValidation)=>z.union([
16
- z.string(),
17
- z.object({
18
- object: z.literal(object),
19
- ...extendObjectValidation
20
- }).passthrough().catchall(z.any())
21
- ], {
22
- error: ()=>{
23
- return {
24
- message: `Invalid details. Please provide an id as a string or an object of type ${object}`
25
- };
26
- }
27
- });
15
+ export const getIdOrObjectValidation = (object, extendObjectValidation) => z.union([
16
+ z.string(),
17
+ z
18
+ .object({ object: z.literal(object), ...extendObjectValidation })
19
+ .passthrough()
20
+ .catchall(z.any()),
21
+ ], {
22
+ error: () => {
23
+ return {
24
+ message: `Invalid details. Please provide an id as a string or an object of type ${object}`,
25
+ };
26
+ },
27
+ });
28
28
  export const nonEmptyStringValidator = z.string().min(1);
29
- export const metadataValidation = z.object({}).catchall(z.union([
29
+ export const metadataValidation = z
30
+ .object({})
31
+ .catchall(z.union([
30
32
  z.string(),
31
33
  z.number(),
32
34
  z.boolean(),
@@ -34,33 +36,36 @@ export const metadataValidation = z.object({}).catchall(z.union([
34
36
  z.array(z.number()),
35
37
  z.array(z.boolean()),
36
38
  z.null(),
37
- z.undefined()
39
+ z.undefined(),
38
40
  ]));
39
41
  export const addressValidation = z.object({
40
42
  name: z.string().optional().nullable(),
41
- coordinates: z.object({
43
+ coordinates: z
44
+ .object({
42
45
  lat: z.number().min(-90).max(90),
43
- lng: z.number().min(-180).max(180)
44
- }).nullable().optional(),
46
+ lng: z.number().min(-180).max(180),
47
+ })
48
+ .nullable()
49
+ .optional(),
45
50
  street1: nonEmptyStringValidator,
46
51
  street2: z.string().nullable().optional(),
47
52
  city: nonEmptyStringValidator,
48
53
  state: nonEmptyStringValidator,
49
54
  postalCode: z.string().min(3).max(11),
50
- country: nonEmptyStringValidator
55
+ country: nonEmptyStringValidator,
56
+ });
57
+ export const getIsoDatetimeToDate = (dateValidation) => z
58
+ .codec(z.string(), dateValidation ?? z.date(), {
59
+ decode: (isoString) => new Date(isoString),
60
+ encode: (date) => date.toISOString(),
61
+ })
62
+ .refine((d) => {
63
+ const date = new Date(d);
64
+ return !Number.isNaN(date.getTime());
65
+ }, {
66
+ message: 'Invalid date',
67
+ path: ['date'],
51
68
  });
52
- export const getIsoDatetimeToDate = (dateValidation)=>z.codec(z.string(), dateValidation ?? z.date(), {
53
- decode: (isoString)=>new Date(isoString),
54
- encode: (date)=>date.toISOString()
55
- }).refine((d)=>{
56
- const date = new Date(d);
57
- return !Number.isNaN(date.getTime());
58
- }, {
59
- message: 'Invalid date',
60
- path: [
61
- 'date'
62
- ]
63
- });
64
69
  export const dateValidation = getIsoDatetimeToDate();
65
70
  export const enhancedImageValidation = z.object({
66
71
  default: z.string(),
@@ -69,71 +74,70 @@ export const enhancedImageValidation = z.object({
69
74
  small: z.string().optional(),
70
75
  medium: z.string().optional(),
71
76
  large: z.string().optional(),
72
- description: z.string().optional()
77
+ description: z.string().optional(),
73
78
  });
74
- export const getObjectValidation = (o)=>z.enum([
75
- o
76
- ]).optional();
79
+ export const getObjectValidation = (o) => z.enum([o]).optional();
77
80
  export const contactValidation = z.object({
78
81
  id: z.string().optional(),
79
82
  firstName: z.string(),
80
83
  lastName: z.string(),
81
84
  jobTitle: z.string().optional(),
82
- email: z.string().email().optional().transform((email)=>email?.toLowerCase().trim()),
85
+ email: z
86
+ .string()
87
+ .email()
88
+ .optional()
89
+ .transform((email) => email?.toLowerCase().trim()),
83
90
  phoneNumber: z.string().optional(),
84
- remarks: z.string().default('')
91
+ remarks: z.string().default(''),
85
92
  });
86
93
  export const documentFileValidation = z.object({
87
94
  id: z.string().optional(),
88
95
  name: z.string(),
89
96
  description: z.string().nullable().optional(),
90
97
  url: z.string(),
91
- fileType: z.preprocess((f)=>typeof f === 'string' ? f.toLowerCase() : f, z.enum([
92
- 'jpg',
93
- 'jpeg',
94
- 'png',
95
- 'pdf',
96
- 'image'
97
- ]).optional()),
98
+ fileType: z.preprocess((f) => (typeof f === 'string' ? f.toLowerCase() : f), z.enum(['jpg', 'jpeg', 'png', 'pdf', 'image']).optional()),
98
99
  mimeType: z.string().optional(),
99
100
  uploaded: z.boolean().default(true),
100
101
  createdAt: dateValidation.nullable().optional(),
101
102
  updatedAt: dateValidation.nullable().optional(),
102
- metadata: metadataValidation.nullable().optional()
103
+ metadata: metadataValidation.nullable().optional(),
103
104
  });
104
105
  export const queryBooleanValidator = z.stringbool({
105
- truthy: [
106
- '1',
107
- 'true',
108
- 'yes'
109
- ],
110
- falsy: [
111
- '0',
112
- 'false',
113
- 'no'
114
- ]
106
+ truthy: ['1', 'true', 'yes'],
107
+ falsy: ['0', 'false', 'no'],
108
+ });
109
+ export const getStringToNumberValidator = (numberValidation) => z.codec(z.string().regex(z.regexes.number), numberValidation ?? z.number(), {
110
+ decode: (str) => Number.parseFloat(str),
111
+ encode: (num) => num.toString(),
115
112
  });
116
- export const getStringToNumberValidator = (numberValidation)=>z.codec(z.string().regex(z.regexes.number), numberValidation ?? z.number(), {
117
- decode: (str)=>Number.parseFloat(str),
118
- encode: (num)=>num.toString()
119
- });
120
113
  export const queryNumberValidator = getStringToNumberValidator();
121
- export const queryStringArrayValidator = z.codec(z.string(), z.array(z.string()), {
122
- encode: (value)=>value.join(','),
123
- decode: (value)=>value.split(',')
124
- }).or(z.array(z.string()));
114
+ export const queryStringArrayValidator = z
115
+ .codec(z.string(), z.array(z.string()), {
116
+ encode: (value) => value.join(','),
117
+ decode: (value) => value.split(','),
118
+ })
119
+ .or(z.array(z.string()));
125
120
  export function queryEnumArrayValidator(enumOrValidation) {
126
121
  // Handle ZodEnum case
127
- if (enumOrValidation && typeof enumOrValidation === 'object' && '_zod' in enumOrValidation) {
128
- return z.codec(z.string(), z.array(enumOrValidation), {
129
- encode: (value)=>value.join(','),
130
- decode: (value)=>value.split(',')
131
- }).or(z.array(enumOrValidation));
122
+ if (enumOrValidation &&
123
+ typeof enumOrValidation === 'object' &&
124
+ '_zod' in enumOrValidation) {
125
+ return z
126
+ .codec(z.string(), z.array(enumOrValidation), {
127
+ encode: (value) => value.join(','),
128
+ decode: (value) => value.split(','),
129
+ })
130
+ .or(z.array(enumOrValidation));
132
131
  }
133
132
  // Handle array or enum-like object case
134
- const enumSchema = Array.isArray(enumOrValidation) ? z.enum(enumOrValidation) : z.enum(Object.values(enumOrValidation));
135
- return z.codec(z.string(), z.array(enumSchema), {
136
- encode: (value)=>value.join(','),
137
- decode: (value)=>value.split(',')
138
- }).or(z.array(enumSchema));
133
+ const enumSchema = Array.isArray(enumOrValidation)
134
+ ? z.enum(enumOrValidation)
135
+ : z.enum(Object.values(enumOrValidation));
136
+ return z
137
+ .codec(z.string(), z.array(enumSchema), {
138
+ encode: (value) => value.join(','),
139
+ decode: (value) => value.split(','),
140
+ })
141
+ .or(z.array(enumSchema));
139
142
  }
143
+ //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,18 @@
1
- const DEFAUALT_MILEAGE_MATRIX = {
2
- lite: 0,
3
- standard: 0,
4
- plus: 0,
5
- unlimited: 0
6
- };
1
+ const DEFAUALT_MILEAGE_MATRIX = { lite: 0, standard: 0, plus: 0, unlimited: 0 };
7
2
  export const DEFAULT_MATRIX = {
8
3
  plan1: DEFAUALT_MILEAGE_MATRIX,
9
4
  plan12: DEFAUALT_MILEAGE_MATRIX,
10
5
  plan24: DEFAUALT_MILEAGE_MATRIX,
11
6
  plan36: DEFAUALT_MILEAGE_MATRIX,
12
7
  plan60: DEFAUALT_MILEAGE_MATRIX,
13
- planWeekly: DEFAUALT_MILEAGE_MATRIX
8
+ planWeekly: DEFAUALT_MILEAGE_MATRIX,
14
9
  };
15
10
  export const FLUX_MIN_TAKE = 200;
16
11
  const EMPTY_MILEAGE_PACKAGES = {
17
12
  lite: 0,
18
13
  standard: 0,
19
14
  plus: 0,
20
- unlimited: 0
15
+ unlimited: 0,
21
16
  };
22
17
  export const EMPTY_FLUX_PRICING_MATRIX_CONTROLLER = {
23
18
  plan60: 0,
@@ -27,7 +22,7 @@ export const EMPTY_FLUX_PRICING_MATRIX_CONTROLLER = {
27
22
  plan1: 0,
28
23
  planWeekly: 0,
29
24
  add: EMPTY_MILEAGE_PACKAGES,
30
- excessMileage: 0
25
+ excessMileage: 0,
31
26
  };
32
27
  export const EMPTY_FLUX_START_FEE_MATRIX_CONTROLLER = {
33
28
  plan60: EMPTY_MILEAGE_PACKAGES,
@@ -35,7 +30,7 @@ export const EMPTY_FLUX_START_FEE_MATRIX_CONTROLLER = {
35
30
  plan24: EMPTY_MILEAGE_PACKAGES,
36
31
  plan12: EMPTY_MILEAGE_PACKAGES,
37
32
  plan1: EMPTY_MILEAGE_PACKAGES,
38
- planWeekly: EMPTY_MILEAGE_PACKAGES
33
+ planWeekly: EMPTY_MILEAGE_PACKAGES,
39
34
  };
40
35
  export const EMPTY_ULTRA_TIERS = {
41
36
  tier1: 0,
@@ -52,7 +47,7 @@ export const EMPTY_ULTRA_TIERS = {
52
47
  tier12: 0,
53
48
  tier13: 0,
54
49
  tier14: 0,
55
- tier15: 0
50
+ tier15: 0,
56
51
  };
57
52
  export const EMPTY_MATRIX = {
58
53
  plan60: EMPTY_MILEAGE_PACKAGES,
@@ -60,49 +55,50 @@ export const EMPTY_MATRIX = {
60
55
  plan24: EMPTY_MILEAGE_PACKAGES,
61
56
  plan12: EMPTY_MILEAGE_PACKAGES,
62
57
  plan1: EMPTY_MILEAGE_PACKAGES,
63
- planWeekly: EMPTY_MILEAGE_PACKAGES
58
+ planWeekly: EMPTY_MILEAGE_PACKAGES,
64
59
  };
65
60
  /**
66
61
  * Matrix representing the dealership's take in percentages
67
62
  *
68
63
  * @see https://docs.google.com/spreadsheets/d/1lYYMdQgnzG53lCGf_dKJY9pEue5suJuo3O3-zegIOT0/edit#gid=819271234
69
- */ export const HOST_MATRIX_COEFFICIENTS = {
64
+ */
65
+ export const HOST_MATRIX_COEFFICIENTS = {
70
66
  plan60: {
71
67
  lite: 0.8,
72
68
  standard: 0.9,
73
69
  plus: 1,
74
- unlimited: 1.25
70
+ unlimited: 1.25,
75
71
  },
76
72
  plan36: {
77
73
  lite: 1,
78
74
  standard: 1.1,
79
75
  plus: 1.2,
80
- unlimited: 1.45
76
+ unlimited: 1.45,
81
77
  },
82
78
  plan24: {
83
79
  lite: 1.1,
84
80
  standard: 1.2,
85
81
  plus: 1.3,
86
- unlimited: 1.55
82
+ unlimited: 1.55,
87
83
  },
88
84
  plan12: {
89
85
  lite: 1.2,
90
86
  standard: 1.3,
91
87
  plus: 1.4,
92
- unlimited: 1.65
88
+ unlimited: 1.65,
93
89
  },
94
90
  plan1: {
95
91
  lite: 0,
96
92
  standard: 0,
97
93
  plus: 0,
98
- unlimited: 0
94
+ unlimited: 0,
99
95
  },
100
96
  planWeekly: {
101
97
  lite: 0,
102
98
  standard: 0,
103
99
  plus: 0,
104
- unlimited: 0
105
- }
100
+ unlimited: 0,
101
+ },
106
102
  };
107
103
  export const ULTRA_HOST_TIERS_PRICING = {
108
104
  tier1: 800,
@@ -119,7 +115,7 @@ export const ULTRA_HOST_TIERS_PRICING = {
119
115
  tier12: 8500,
120
116
  tier13: 10500,
121
117
  tier14: 12800,
122
- tier15: 15000
118
+ tier15: 15000,
123
119
  };
124
120
  export const ULTRA_FLUX_TIERS_PRICING = {
125
121
  tier1: 999,
@@ -136,10 +132,11 @@ export const ULTRA_FLUX_TIERS_PRICING = {
136
132
  tier12: 9999,
137
133
  tier13: 12599,
138
134
  tier14: 14999,
139
- tier15: 17999
135
+ tier15: 17999,
140
136
  };
141
137
  export const HOST_EXCESS_MILEAGE_COEFFICIENT = 0.00048;
142
138
  export const MAX_HOST_EXCESS_MILEAGE = 4;
143
139
  export const MIN_HOST_EXCESS_MILEAGE = 0.52;
144
140
  export const MAX_FLUX_EXCESS_MILEAGE = 5;
145
141
  export const MIN_FLUX_EXCESS_MILEAGE = 0.65;
142
+ //# sourceMappingURL=constants.js.map
@@ -5,17 +5,18 @@ import cloneDeep from 'lodash/cloneDeep.js';
5
5
  import { EMPTY_MATRIX } from './constants.js';
6
6
  /**
7
7
  * This is a last moment feature the CEO asked for and was not properly designed
8
- */ export const getRecommendedMotorcycleDeposit = (baseline)=>{
8
+ */
9
+ export const getRecommendedMotorcycleDeposit = (baseline) => {
9
10
  return Math.max(Math.min(baseline * 5, 1500), 1000);
10
11
  };
11
- export const getHostsMatrix = (pricingData, baseline, tier, flatPricing)=>{
12
+ export const getHostsMatrix = (pricingData, baseline, tier, flatPricing) => {
12
13
  // Let's not mutate percentages
13
14
  const newMatrix = cloneDeep(pricingData.hostEarnings.matrixCoefficients);
14
15
  const baseCoefficients = cloneDeep(newMatrix.plan36);
15
16
  const plans = Object.keys(newMatrix);
16
- for (const plan of plans){
17
+ for (const plan of plans) {
17
18
  const mileagePackages = Object.keys(newMatrix[plan]);
18
- for (const mileagePackage of mileagePackages){
19
+ for (const mileagePackage of mileagePackages) {
19
20
  if (plan === 'plan1') {
20
21
  if (tier === 'tierCustom') {
21
22
  newMatrix[plan][mileagePackage] = 0;
@@ -24,23 +25,26 @@ export const getHostsMatrix = (pricingData, baseline, tier, flatPricing)=>{
24
25
  newMatrix[plan][mileagePackage] = Number(pricingData.hostEarnings.ultraTiers[tier]);
25
26
  continue;
26
27
  }
27
- newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
28
+ newMatrix[plan][mileagePackage] = round(baseline *
29
+ (flatPricing
30
+ ? baseCoefficients[mileagePackage]
31
+ : newMatrix[plan][mileagePackage]));
28
32
  }
29
33
  }
30
34
  return sortMatrix(newMatrix);
31
35
  };
32
- export const getHostExcessMileage = (pricingData, baseline)=>{
36
+ export const getHostExcessMileage = (pricingData, baseline) => {
33
37
  return decimals(Math.max(Math.min(baseline * pricingData.hostEarnings.excessMileage.coefficient, pricingData.hostEarnings.excessMileage.upperBound), pricingData.hostEarnings.excessMileage.lowerBound));
34
38
  };
35
- export const getEmptyMatrix = ()=>{
39
+ export const getEmptyMatrix = () => {
36
40
  return cloneDeep(EMPTY_MATRIX);
37
41
  };
38
- export const sortMatrix = (unorderedMatrix)=>{
42
+ export const sortMatrix = (unorderedMatrix) => {
39
43
  const ordered = {};
40
44
  const plans = getVehicleDataVariant(PLANS, 'car');
41
45
  const mileagePackages = getVehicleDataVariant(MILEAGE_PACKAGES, 'car');
42
- for (const plan of plans){
43
- for (const mileagePackage of mileagePackages){
46
+ for (const plan of plans) {
47
+ for (const mileagePackage of mileagePackages) {
44
48
  if (!ordered[plan]) {
45
49
  ordered[plan] = {};
46
50
  }
@@ -49,7 +53,7 @@ export const sortMatrix = (unorderedMatrix)=>{
49
53
  }
50
54
  return ordered;
51
55
  };
52
- const round = (number)=>{
56
+ const round = (number) => {
53
57
  return Math.round(number * 100) / 100;
54
58
  };
55
59
  /**
@@ -62,7 +66,8 @@ const round = (number)=>{
62
66
  * @param customLitePicing
63
67
  *
64
68
  * @see https://docs.google.com/spreadsheets/d/1lYYMdQgnzG53lCGf_dKJY9pEue5suJuo3O3-zegIOT0/edit#gid=819271234
65
- */ export const getFluxPiceMatrix = (pricingData, vehicleType, baseline, dealershipPriceMatrix, tier, flatPricing, customMileagePackage, customLitePicing)=>{
69
+ */
70
+ export const getFluxPiceMatrix = (pricingData, vehicleType, baseline, dealershipPriceMatrix, tier, flatPricing, customMileagePackage, customLitePicing) => {
66
71
  // Let's not mutate percentages
67
72
  const newMatrix = cloneDeep(pricingData.hostEarnings.matrixCoefficients);
68
73
  const plans = Object.keys(newMatrix);
@@ -70,7 +75,7 @@ const round = (number)=>{
70
75
  // if flat pricing, we order the plans by 36 months first, then the rest,
71
76
  // that's because we perform the operations on the same matrix, so 36 is the base
72
77
  // and should influence th rest of the plans
73
- plans.sort((a, _b)=>{
78
+ plans.sort((a, _b) => {
74
79
  if (a === 'plan36') {
75
80
  return -1;
76
81
  }
@@ -80,16 +85,16 @@ const round = (number)=>{
80
85
  // This code is highly vulnerable to order. The order **MUST** be sorted,
81
86
  // this is because it edits "lite" plan, then the other plans depend on the outcome of this one.
82
87
  // TODO: Fix this code so that it sorts lite package first.
83
- for (const plan of plans){
88
+ for (const plan of plans) {
84
89
  const mileagePackages = Object.keys(newMatrix[plan]);
85
- mileagePackages.sort((a)=>{
90
+ mileagePackages.sort((a) => {
86
91
  if (a === 'lite') {
87
92
  return -1;
88
93
  }
89
94
  return 0;
90
95
  });
91
96
  const baseMileagePackage = vehicleType === 'motorcycle' ? 'standard' : 'lite';
92
- for (const mileagePackage of mileagePackages){
97
+ for (const mileagePackage of mileagePackages) {
93
98
  const targetPlan = flatPricing ? 'plan36' : plan;
94
99
  if (plan === 'plan1') {
95
100
  if (tier === 'tierCustom') {
@@ -100,38 +105,42 @@ const round = (number)=>{
100
105
  continue;
101
106
  }
102
107
  if (mileagePackage === baseMileagePackage) {
103
- const baseMileagePackagePrice = Math.max(baseline * pricingData.fluxPricing.matrixCoefficients[targetPlan], Number(dealershipPriceMatrix[targetPlan][baseMileagePackage]) + pricingData.fluxPricing.minFluxTake);
108
+ const baseMileagePackagePrice = Math.max(baseline * pricingData.fluxPricing.matrixCoefficients[targetPlan], Number(dealershipPriceMatrix[targetPlan][baseMileagePackage]) +
109
+ pricingData.fluxPricing.minFluxTake);
104
110
  const custom = customLitePicing?.[plan];
105
111
  newMatrix[plan][baseMileagePackage] = decimals(typeof custom === 'undefined' ? baseMileagePackagePrice : custom);
106
112
  continue;
107
113
  }
108
- const mileagePackageAdd = baseline * pricingData.fluxPricing.matrixCoefficients.add[mileagePackage];
114
+ const mileagePackageAdd = baseline *
115
+ pricingData.fluxPricing.matrixCoefficients.add[mileagePackage];
109
116
  const cutomMileagePackageAdd = customMileagePackage?.[mileagePackage];
110
117
  const basePlanMileagePackagePricing = newMatrix[targetPlan][baseMileagePackage];
111
- newMatrix[plan][mileagePackage] = decimals(round(basePlanMileagePackagePricing + (cutomMileagePackageAdd || mileagePackageAdd)));
118
+ newMatrix[plan][mileagePackage] = decimals(round(basePlanMileagePackagePricing +
119
+ (cutomMileagePackageAdd || mileagePackageAdd)));
112
120
  }
113
121
  }
114
122
  return sortMatrix(newMatrix);
115
123
  };
116
- export const updateMatrixWithCustomPackages = (matrix, add)=>{
124
+ export const updateMatrixWithCustomPackages = (matrix, add) => {
117
125
  const newMatrix = cloneDeep(matrix);
118
126
  const plans = getVehicleDataVariant(PLANS, 'car');
119
127
  const mileagePackages = getVehicleDataVariant(MILEAGE_PACKAGES, 'car');
120
128
  const baseMileagePackage = mileagePackages[0];
121
- for (const plan of plans){
122
- for (const mileagePackage of mileagePackages){
129
+ for (const plan of plans) {
130
+ for (const mileagePackage of mileagePackages) {
123
131
  if (mileagePackage === baseMileagePackage) {
124
132
  continue;
125
133
  }
126
134
  const toAdd = add[mileagePackage];
127
135
  if (toAdd) {
128
- newMatrix[plan][mileagePackage] = (newMatrix[plan]?.[baseMileagePackage] || 0) + toAdd;
136
+ newMatrix[plan][mileagePackage] =
137
+ (newMatrix[plan]?.[baseMileagePackage] || 0) + toAdd;
129
138
  }
130
139
  }
131
140
  }
132
141
  return newMatrix;
133
142
  };
134
- export const getFluxExcessMileage = (pricingData, baseline)=>{
143
+ export const getFluxExcessMileage = (pricingData, baseline) => {
135
144
  return decimals(Math.max(Math.min(baseline * pricingData.fluxPricing.matrixCoefficients.excessMileage, pricingData.fluxPricing.excessMileage.upperBound), pricingData.fluxPricing.excessMileage.lowerBound));
136
145
  };
137
146
  /**
@@ -140,16 +149,21 @@ export const getFluxExcessMileage = (pricingData, baseline)=>{
140
149
  * @param coefficient
141
150
  *
142
151
  * @see https://docs.google.com/spreadsheets/d/1lYYMdQgnzG53lCGf_dKJY9pEue5suJuo3O3-zegIOT0/edit#gid=819271234
143
- */ export const getStartFeeMatrix = (pricingData, baseline, flatPricing)=>{
152
+ */
153
+ export const getStartFeeMatrix = (pricingData, baseline, flatPricing) => {
144
154
  // Let's not mutate percentages
145
155
  const newMatrix = cloneDeep(pricingData.startFee.matrixCoefficients);
146
156
  const baseCoefficients = cloneDeep(newMatrix.plan36);
147
157
  const plans = Object.keys(newMatrix);
148
- for (const plan of plans){
158
+ for (const plan of plans) {
149
159
  const mileagePackages = Object.keys(newMatrix[plan]);
150
- for (const mileagePackage of mileagePackages){
151
- newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
160
+ for (const mileagePackage of mileagePackages) {
161
+ newMatrix[plan][mileagePackage] = round(baseline *
162
+ (flatPricing
163
+ ? baseCoefficients[mileagePackage]
164
+ : newMatrix[plan][mileagePackage]));
152
165
  }
153
166
  }
154
167
  return sortMatrix(newMatrix);
155
168
  };
169
+ //# sourceMappingURL=index.js.map
@@ -1 +1,2 @@
1
- export { };
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/api-functions",
3
- "version": "1.0.146",
3
+ "version": "1.0.148",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./notion": {
@@ -73,23 +73,23 @@
73
73
  ],
74
74
  "dependencies": {
75
75
  "@casl/ability": "^6.7.3",
76
- "@driveflux/auth": "4.0.84",
77
- "@driveflux/billing": "8.1.5",
78
- "@driveflux/config": "3.0.9",
79
- "@driveflux/coupon": "9.1.18",
80
- "@driveflux/db": "4.1.17",
81
- "@driveflux/email": "7.1.18",
82
- "@driveflux/email-templates": "1.2.18",
83
- "@driveflux/engine": "1.1.37",
76
+ "@driveflux/auth": "4.0.86",
77
+ "@driveflux/billing": "8.1.6",
78
+ "@driveflux/config": "3.0.10",
79
+ "@driveflux/coupon": "9.1.19",
80
+ "@driveflux/db": "4.1.18",
81
+ "@driveflux/email": "7.1.19",
82
+ "@driveflux/email-templates": "1.2.19",
83
+ "@driveflux/engine": "1.1.38",
84
84
  "@driveflux/fetch": "8.0.1",
85
85
  "@driveflux/format-money": "7.0.0",
86
86
  "@driveflux/logger": "1.1.3",
87
87
  "@driveflux/problem": "6.0.1",
88
88
  "@driveflux/reporter": "7.0.2",
89
89
  "@driveflux/result": "6.0.1",
90
- "@driveflux/scheduler": "8.1.18",
90
+ "@driveflux/scheduler": "8.1.19",
91
91
  "@driveflux/singleton": "3.0.0",
92
- "@driveflux/subscription": "9.1.8",
92
+ "@driveflux/subscription": "9.1.9",
93
93
  "@driveflux/time": "6.0.2",
94
94
  "@driveflux/utils": "6.0.0",
95
95
  "@notionhq/client": "^5.3.0",