@driveflux/api-functions 0.0.7-next.0 → 0.0.7-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/confirm.d.ts +3 -17
- package/dist/auth/confirm.js +66 -325
- package/dist/auth/emails.js +42 -210
- package/dist/auth/formatter.js +9 -9
- package/dist/auth/otp.js +120 -374
- package/dist/auth/register.js +95 -383
- package/dist/auth/register.js.map +1 -1
- package/dist/auth/tokens.js +114 -426
- package/dist/auth/verifications.d.ts +2 -8
- package/dist/auth/verifications.js +176 -581
- package/dist/constants.js +4 -4
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts +2 -2
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts.map +1 -1
- package/dist/mailjet/calls/manage-contacts-in-list.js +22 -167
- package/dist/mailjet/calls/manage-contacts-in-list.js.map +1 -1
- package/dist/mailjet/calls/manage-subscription-status.d.ts +2 -2
- package/dist/mailjet/calls/manage-subscription-status.d.ts.map +1 -1
- package/dist/mailjet/calls/manage-subscription-status.js +13 -154
- package/dist/mailjet/calls/manage-subscription-status.js.map +1 -1
- package/dist/mailjet/calls/request-service.js +18 -182
- package/dist/mailjet/refresh-email-preferences.js +21 -221
- package/dist/mailjet/set-contact.d.ts +2 -2
- package/dist/mailjet/set-contact.d.ts.map +1 -1
- package/dist/mailjet/set-contact.js +21 -213
- package/dist/mailjet/set-contact.js.map +1 -1
- package/dist/mailjet/types.d.ts +2 -2
- package/dist/mailjet/types.d.ts.map +1 -1
- package/dist/mailjet/utils/convert-to-array.d.ts +1 -1
- package/dist/mailjet/utils/convert-to-array.d.ts.map +1 -1
- package/dist/mailjet/utils/convert-to-array.js +9 -56
- package/dist/mailjet/utils/extract-email-preferences.d.ts +1 -1
- package/dist/mailjet/utils/extract-email-preferences.d.ts.map +1 -1
- package/dist/mailjet/utils/extract-email-preferences.js +37 -214
- package/dist/mailjet/utils/lists.js +28 -248
- package/dist/mailjet/utils/update-email-references.d.ts +2 -2
- package/dist/mailjet/utils/update-email-references.d.ts.map +1 -1
- package/dist/mailjet/utils/update-email-references.js +27 -207
- package/dist/mailjet/utils/update-email-references.js.map +1 -1
- package/dist/notion/client.js +50 -196
- package/dist/notion/helpful.js +25 -169
- package/dist/notion/schemas/block.js +1 -1
- package/dist/notion/schemas/common.d.ts +13 -10
- package/dist/notion/schemas/common.js +7 -9
- package/dist/notion/schemas/database.js +68 -100
- package/dist/notion/schemas/emoji.d.ts +1 -7
- package/dist/notion/schemas/emoji.js +1 -1
- package/dist/notion/schemas/file.d.ts +7 -34
- package/dist/notion/schemas/file.js +1 -1
- package/dist/notion/schemas/kb.js +3 -3
- package/dist/notion/schemas/page.js +69 -103
- package/dist/notion/schemas/parent.d.ts +4 -28
- package/dist/notion/schemas/parent.js +4 -4
- package/dist/notion/schemas/user.d.ts +13 -67
- package/dist/notion/schemas/user.js +2 -2
- package/dist/reservation/agree.d.ts +1 -1
- package/dist/reservation/agree.d.ts.map +1 -1
- package/dist/reservation/agree.js +17 -157
- package/dist/reservation/checks.d.ts +1 -1
- package/dist/reservation/checks.d.ts.map +1 -1
- package/dist/reservation/checks.js +21 -177
- package/dist/reservation/display-vehicle.js +122 -500
- package/dist/reservation/display-vehicle.js.map +1 -1
- package/dist/reservation/fetch-or-create.d.ts +2 -2
- package/dist/reservation/fetch-or-create.d.ts.map +1 -1
- package/dist/reservation/fetch-or-create.js +193 -478
- package/dist/reservation/fetch-or-create.js.map +1 -1
- package/dist/reservation/invoice.d.ts +3 -3
- package/dist/reservation/invoice.d.ts.map +1 -1
- package/dist/reservation/invoice.js +182 -492
- package/dist/reservation/invoice.js.map +1 -1
- package/dist/reservation/payer.d.ts +1 -1
- package/dist/reservation/payer.d.ts.map +1 -1
- package/dist/reservation/payer.js +25 -175
- package/dist/reservation/reserve.d.ts +1 -1
- package/dist/reservation/reserve.d.ts.map +1 -1
- package/dist/reservation/reserve.js +35 -196
- package/dist/reservation/reserve.js.map +1 -1
- package/dist/reservation/types.d.ts +1 -0
- package/dist/reservation/types.d.ts.map +1 -1
- package/dist/reservation/vehicle.d.ts +1 -1
- package/dist/reservation/vehicle.d.ts.map +1 -1
- package/dist/reservation/vehicle.js +23 -188
- package/dist/reservation/vehicle.js.map +1 -1
- package/dist/slack.js +57 -268
- package/dist/validation.js +38 -98
- package/dist/vehicle/vehicle-pricing/constants.d.ts +1 -1
- package/dist/vehicle/vehicle-pricing/constants.d.ts.map +1 -1
- package/dist/vehicle/vehicle-pricing/constants.js +16 -16
- package/dist/vehicle/vehicle-pricing/index.d.ts +1 -1
- package/dist/vehicle/vehicle-pricing/index.d.ts.map +1 -1
- package/dist/vehicle/vehicle-pricing/index.js +87 -259
- package/dist/vehicle/vehicle-pricing/index.js.map +1 -1
- package/package.json +12 -12
|
@@ -1,124 +1,55 @@
|
|
|
1
1
|
import { MILEAGE_PACKAGES, PLANS } from '@driveflux/db/models/subscription';
|
|
2
2
|
import { getVehicleDataVariant } from '@driveflux/db/models/vehicle';
|
|
3
3
|
import { decimals } from '@driveflux/format-money';
|
|
4
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
5
|
-
import { EMPTY_MATRIX } from './constants';
|
|
4
|
+
import cloneDeep from 'lodash/cloneDeep.js';
|
|
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
|
|
8
|
+
*/ export const getRecommendedMotorcycleDeposit = (baseline)=>{
|
|
9
9
|
return Math.max(Math.min(baseline * 5, 1500), 1000);
|
|
10
10
|
};
|
|
11
|
-
export
|
|
11
|
+
export const getHostsMatrix = (pricingData, baseline, tier, flatPricing)=>{
|
|
12
12
|
// Let's not mutate percentages
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
for
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
for(var _iterator1 = mileagePackages[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
24
|
-
var mileagePackage = _step1.value;
|
|
25
|
-
if (plan === 'plan1') {
|
|
26
|
-
if (tier === 'tierCustom') {
|
|
27
|
-
newMatrix[plan][mileagePackage] = 0;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
newMatrix[plan][mileagePackage] = Number(pricingData.hostEarnings.ultraTiers[tier]);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
|
|
13
|
+
const newMatrix = cloneDeep(pricingData.hostEarnings.matrixCoefficients);
|
|
14
|
+
const baseCoefficients = cloneDeep(newMatrix.plan36);
|
|
15
|
+
const plans = Object.keys(newMatrix);
|
|
16
|
+
for (const plan of plans){
|
|
17
|
+
const mileagePackages = Object.keys(newMatrix[plan]);
|
|
18
|
+
for (const mileagePackage of mileagePackages){
|
|
19
|
+
if (plan === 'plan1') {
|
|
20
|
+
if (tier === 'tierCustom') {
|
|
21
|
+
newMatrix[plan][mileagePackage] = 0;
|
|
22
|
+
continue;
|
|
34
23
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
_iteratorError1 = err;
|
|
38
|
-
} finally{
|
|
39
|
-
try {
|
|
40
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
41
|
-
_iterator1.return();
|
|
42
|
-
}
|
|
43
|
-
} finally{
|
|
44
|
-
if (_didIteratorError1) {
|
|
45
|
-
throw _iteratorError1;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
_didIteratorError = true;
|
|
52
|
-
_iteratorError = err;
|
|
53
|
-
} finally{
|
|
54
|
-
try {
|
|
55
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
56
|
-
_iterator.return();
|
|
57
|
-
}
|
|
58
|
-
} finally{
|
|
59
|
-
if (_didIteratorError) {
|
|
60
|
-
throw _iteratorError;
|
|
24
|
+
newMatrix[plan][mileagePackage] = Number(pricingData.hostEarnings.ultraTiers[tier]);
|
|
25
|
+
continue;
|
|
61
26
|
}
|
|
27
|
+
newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
|
|
62
28
|
}
|
|
63
29
|
}
|
|
64
30
|
return sortMatrix(newMatrix);
|
|
65
31
|
};
|
|
66
|
-
export
|
|
32
|
+
export const getHostExcessMileage = (pricingData, baseline)=>{
|
|
67
33
|
return decimals(Math.max(Math.min(baseline * pricingData.hostEarnings.excessMileage.coefficient, pricingData.hostEarnings.excessMileage.upperBound), pricingData.hostEarnings.excessMileage.lowerBound));
|
|
68
34
|
};
|
|
69
|
-
export
|
|
35
|
+
export const getEmptyMatrix = ()=>{
|
|
70
36
|
return cloneDeep(EMPTY_MATRIX);
|
|
71
37
|
};
|
|
72
|
-
export
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
for(var _iterator1 = mileagePackages[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
83
|
-
var mileagePackage = _step1.value;
|
|
84
|
-
var _unorderedMatrix_plan;
|
|
85
|
-
if (!ordered[plan]) {
|
|
86
|
-
ordered[plan] = {};
|
|
87
|
-
}
|
|
88
|
-
ordered[plan][mileagePackage] = (_unorderedMatrix_plan = unorderedMatrix[plan]) === null || _unorderedMatrix_plan === void 0 ? void 0 : _unorderedMatrix_plan[mileagePackage];
|
|
89
|
-
}
|
|
90
|
-
} catch (err) {
|
|
91
|
-
_didIteratorError1 = true;
|
|
92
|
-
_iteratorError1 = err;
|
|
93
|
-
} finally{
|
|
94
|
-
try {
|
|
95
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
96
|
-
_iterator1.return();
|
|
97
|
-
}
|
|
98
|
-
} finally{
|
|
99
|
-
if (_didIteratorError1) {
|
|
100
|
-
throw _iteratorError1;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
} catch (err) {
|
|
106
|
-
_didIteratorError = true;
|
|
107
|
-
_iteratorError = err;
|
|
108
|
-
} finally{
|
|
109
|
-
try {
|
|
110
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
111
|
-
_iterator.return();
|
|
112
|
-
}
|
|
113
|
-
} finally{
|
|
114
|
-
if (_didIteratorError) {
|
|
115
|
-
throw _iteratorError;
|
|
116
|
-
}
|
|
38
|
+
export const sortMatrix = (unorderedMatrix)=>{
|
|
39
|
+
const ordered = {};
|
|
40
|
+
const plans = getVehicleDataVariant(PLANS, 'car');
|
|
41
|
+
const mileagePackages = getVehicleDataVariant(MILEAGE_PACKAGES, 'car');
|
|
42
|
+
for (const plan of plans){
|
|
43
|
+
for (const mileagePackage of mileagePackages){
|
|
44
|
+
if (!ordered[plan]) {
|
|
45
|
+
ordered[plan] = {};
|
|
46
|
+
}
|
|
47
|
+
ordered[plan][mileagePackage] = unorderedMatrix[plan]?.[mileagePackage];
|
|
117
48
|
}
|
|
118
49
|
}
|
|
119
50
|
return ordered;
|
|
120
51
|
};
|
|
121
|
-
|
|
52
|
+
const round = (number)=>{
|
|
122
53
|
return Math.round(number * 100) / 100;
|
|
123
54
|
};
|
|
124
55
|
/**
|
|
@@ -131,145 +62,76 @@ var round = function(number) {
|
|
|
131
62
|
* @param customLitePicing
|
|
132
63
|
*
|
|
133
64
|
* @see https://docs.google.com/spreadsheets/d/1lYYMdQgnzG53lCGf_dKJY9pEue5suJuo3O3-zegIOT0/edit#gid=819271234
|
|
134
|
-
*/ export
|
|
65
|
+
*/ export const getFluxPiceMatrix = (pricingData, vehicleType, baseline, dealershipPriceMatrix, tier, flatPricing, customMileagePackage, customLitePicing)=>{
|
|
135
66
|
// Let's not mutate percentages
|
|
136
|
-
|
|
137
|
-
|
|
67
|
+
const newMatrix = cloneDeep(pricingData.hostEarnings.matrixCoefficients);
|
|
68
|
+
const plans = Object.keys(newMatrix);
|
|
138
69
|
if (flatPricing) {
|
|
139
70
|
// if flat pricing, we order the plans by 36 months first, then the rest,
|
|
140
71
|
// that's because we perform the operations on the same matrix, so 36 is the base
|
|
141
72
|
// and should influence th rest of the plans
|
|
142
|
-
plans.sort(
|
|
73
|
+
plans.sort((a, _b)=>{
|
|
143
74
|
if (a === 'plan36') {
|
|
144
75
|
return -1;
|
|
145
76
|
}
|
|
146
77
|
return 0;
|
|
147
78
|
});
|
|
148
79
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
mileagePackages.sort(function(a) {
|
|
158
|
-
if (a === 'lite') {
|
|
159
|
-
return -1;
|
|
160
|
-
}
|
|
161
|
-
return 0;
|
|
162
|
-
});
|
|
163
|
-
var baseMileagePackage = vehicleType === 'motorcycle' ? 'standard' : 'lite';
|
|
164
|
-
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
165
|
-
try {
|
|
166
|
-
for(var _iterator1 = mileagePackages[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
167
|
-
var mileagePackage = _step1.value;
|
|
168
|
-
var targetPlan = flatPricing ? 'plan36' : plan;
|
|
169
|
-
if (plan === 'plan1') {
|
|
170
|
-
if (tier === 'tierCustom') {
|
|
171
|
-
newMatrix[plan][mileagePackage] = 0;
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
newMatrix[plan][mileagePackage] = Number(pricingData.fluxPricing.ultraTiers[tier]);
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
if (mileagePackage === baseMileagePackage) {
|
|
178
|
-
var baseMileagePackagePrice = Math.max(baseline * pricingData.fluxPricing.matrixCoefficients[targetPlan], Number(dealershipPriceMatrix[targetPlan][baseMileagePackage]) + pricingData.fluxPricing.minFluxTake);
|
|
179
|
-
var custom = customLitePicing === null || customLitePicing === void 0 ? void 0 : customLitePicing[plan];
|
|
180
|
-
newMatrix[plan][baseMileagePackage] = decimals(typeof custom === 'undefined' ? baseMileagePackagePrice : custom);
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
var mileagePackageAdd = baseline * pricingData.fluxPricing.matrixCoefficients.add[mileagePackage];
|
|
184
|
-
var cutomMileagePackageAdd = customMileagePackage === null || customMileagePackage === void 0 ? void 0 : customMileagePackage[mileagePackage];
|
|
185
|
-
var basePlanMileagePackagePricing = newMatrix[targetPlan][baseMileagePackage];
|
|
186
|
-
newMatrix[plan][mileagePackage] = decimals(round(basePlanMileagePackagePricing + (cutomMileagePackageAdd || mileagePackageAdd)));
|
|
187
|
-
}
|
|
188
|
-
} catch (err) {
|
|
189
|
-
_didIteratorError1 = true;
|
|
190
|
-
_iteratorError1 = err;
|
|
191
|
-
} finally{
|
|
192
|
-
try {
|
|
193
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
194
|
-
_iterator1.return();
|
|
195
|
-
}
|
|
196
|
-
} finally{
|
|
197
|
-
if (_didIteratorError1) {
|
|
198
|
-
throw _iteratorError1;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
} catch (err) {
|
|
204
|
-
_didIteratorError = true;
|
|
205
|
-
_iteratorError = err;
|
|
206
|
-
} finally{
|
|
207
|
-
try {
|
|
208
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
209
|
-
_iterator.return();
|
|
210
|
-
}
|
|
211
|
-
} finally{
|
|
212
|
-
if (_didIteratorError) {
|
|
213
|
-
throw _iteratorError;
|
|
80
|
+
// This code is highly vulnerable to order. The order **MUST** be sorted,
|
|
81
|
+
// this is because it edits "lite" plan, then the other plans depend on the outcome of this one.
|
|
82
|
+
// TODO: Fix this code so that it sorts lite package first.
|
|
83
|
+
for (const plan of plans){
|
|
84
|
+
const mileagePackages = Object.keys(newMatrix[plan]);
|
|
85
|
+
mileagePackages.sort((a)=>{
|
|
86
|
+
if (a === 'lite') {
|
|
87
|
+
return -1;
|
|
214
88
|
}
|
|
89
|
+
return 0;
|
|
90
|
+
});
|
|
91
|
+
const baseMileagePackage = vehicleType === 'motorcycle' ? 'standard' : 'lite';
|
|
92
|
+
for (const mileagePackage of mileagePackages){
|
|
93
|
+
const targetPlan = flatPricing ? 'plan36' : plan;
|
|
94
|
+
if (plan === 'plan1') {
|
|
95
|
+
if (tier === 'tierCustom') {
|
|
96
|
+
newMatrix[plan][mileagePackage] = 0;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
newMatrix[plan][mileagePackage] = Number(pricingData.fluxPricing.ultraTiers[tier]);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (mileagePackage === baseMileagePackage) {
|
|
103
|
+
const baseMileagePackagePrice = Math.max(baseline * pricingData.fluxPricing.matrixCoefficients[targetPlan], Number(dealershipPriceMatrix[targetPlan][baseMileagePackage]) + pricingData.fluxPricing.minFluxTake);
|
|
104
|
+
const custom = customLitePicing?.[plan];
|
|
105
|
+
newMatrix[plan][baseMileagePackage] = decimals(typeof custom === 'undefined' ? baseMileagePackagePrice : custom);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const mileagePackageAdd = baseline * pricingData.fluxPricing.matrixCoefficients.add[mileagePackage];
|
|
109
|
+
const cutomMileagePackageAdd = customMileagePackage?.[mileagePackage];
|
|
110
|
+
const basePlanMileagePackagePricing = newMatrix[targetPlan][baseMileagePackage];
|
|
111
|
+
newMatrix[plan][mileagePackage] = decimals(round(basePlanMileagePackagePricing + (cutomMileagePackageAdd || mileagePackageAdd)));
|
|
215
112
|
}
|
|
216
113
|
}
|
|
217
114
|
return sortMatrix(newMatrix);
|
|
218
115
|
};
|
|
219
|
-
export
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (mileagePackage === baseMileagePackage) {
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
var toAdd = add[mileagePackage];
|
|
236
|
-
if (toAdd) {
|
|
237
|
-
var _newMatrix_plan;
|
|
238
|
-
newMatrix[plan][mileagePackage] = (((_newMatrix_plan = newMatrix[plan]) === null || _newMatrix_plan === void 0 ? void 0 : _newMatrix_plan[baseMileagePackage]) || 0) + toAdd;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
} catch (err) {
|
|
242
|
-
_didIteratorError1 = true;
|
|
243
|
-
_iteratorError1 = err;
|
|
244
|
-
} finally{
|
|
245
|
-
try {
|
|
246
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
247
|
-
_iterator1.return();
|
|
248
|
-
}
|
|
249
|
-
} finally{
|
|
250
|
-
if (_didIteratorError1) {
|
|
251
|
-
throw _iteratorError1;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
} catch (err) {
|
|
257
|
-
_didIteratorError = true;
|
|
258
|
-
_iteratorError = err;
|
|
259
|
-
} finally{
|
|
260
|
-
try {
|
|
261
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
262
|
-
_iterator.return();
|
|
263
|
-
}
|
|
264
|
-
} finally{
|
|
265
|
-
if (_didIteratorError) {
|
|
266
|
-
throw _iteratorError;
|
|
116
|
+
export const updateMatrixWithCustomPackages = (matrix, add)=>{
|
|
117
|
+
const newMatrix = cloneDeep(matrix);
|
|
118
|
+
const plans = getVehicleDataVariant(PLANS, 'car');
|
|
119
|
+
const mileagePackages = getVehicleDataVariant(MILEAGE_PACKAGES, 'car');
|
|
120
|
+
const baseMileagePackage = mileagePackages[0];
|
|
121
|
+
for (const plan of plans){
|
|
122
|
+
for (const mileagePackage of mileagePackages){
|
|
123
|
+
if (mileagePackage === baseMileagePackage) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const toAdd = add[mileagePackage];
|
|
127
|
+
if (toAdd) {
|
|
128
|
+
newMatrix[plan][mileagePackage] = (newMatrix[plan]?.[baseMileagePackage] || 0) + toAdd;
|
|
267
129
|
}
|
|
268
130
|
}
|
|
269
131
|
}
|
|
270
132
|
return newMatrix;
|
|
271
133
|
};
|
|
272
|
-
export
|
|
134
|
+
export const getFluxExcessMileage = (pricingData, baseline)=>{
|
|
273
135
|
return decimals(Math.max(Math.min(baseline * pricingData.fluxPricing.matrixCoefficients.excessMileage, pricingData.fluxPricing.excessMileage.upperBound), pricingData.fluxPricing.excessMileage.lowerBound));
|
|
274
136
|
};
|
|
275
137
|
/**
|
|
@@ -278,49 +140,15 @@ export var getFluxExcessMileage = function(pricingData, baseline) {
|
|
|
278
140
|
* @param coefficient
|
|
279
141
|
*
|
|
280
142
|
* @see https://docs.google.com/spreadsheets/d/1lYYMdQgnzG53lCGf_dKJY9pEue5suJuo3O3-zegIOT0/edit#gid=819271234
|
|
281
|
-
*/ export
|
|
143
|
+
*/ export const getStartFeeMatrix = (pricingData, baseline, flatPricing)=>{
|
|
282
144
|
// Let's not mutate percentages
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
for
|
|
289
|
-
|
|
290
|
-
var mileagePackages = Object.keys(newMatrix[plan]);
|
|
291
|
-
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
292
|
-
try {
|
|
293
|
-
for(var _iterator1 = mileagePackages[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
294
|
-
var mileagePackage = _step1.value;
|
|
295
|
-
newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
|
|
296
|
-
}
|
|
297
|
-
} catch (err) {
|
|
298
|
-
_didIteratorError1 = true;
|
|
299
|
-
_iteratorError1 = err;
|
|
300
|
-
} finally{
|
|
301
|
-
try {
|
|
302
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
303
|
-
_iterator1.return();
|
|
304
|
-
}
|
|
305
|
-
} finally{
|
|
306
|
-
if (_didIteratorError1) {
|
|
307
|
-
throw _iteratorError1;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
} catch (err) {
|
|
313
|
-
_didIteratorError = true;
|
|
314
|
-
_iteratorError = err;
|
|
315
|
-
} finally{
|
|
316
|
-
try {
|
|
317
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
318
|
-
_iterator.return();
|
|
319
|
-
}
|
|
320
|
-
} finally{
|
|
321
|
-
if (_didIteratorError) {
|
|
322
|
-
throw _iteratorError;
|
|
323
|
-
}
|
|
145
|
+
const newMatrix = cloneDeep(pricingData.startFee.matrixCoefficients);
|
|
146
|
+
const baseCoefficients = cloneDeep(newMatrix.plan36);
|
|
147
|
+
const plans = Object.keys(newMatrix);
|
|
148
|
+
for (const plan of plans){
|
|
149
|
+
const mileagePackages = Object.keys(newMatrix[plan]);
|
|
150
|
+
for (const mileagePackage of mileagePackages){
|
|
151
|
+
newMatrix[plan][mileagePackage] = round(baseline * (flatPricing ? baseCoefficients[mileagePackage] : newMatrix[plan][mileagePackage]));
|
|
324
152
|
}
|
|
325
153
|
}
|
|
326
154
|
return sortMatrix(newMatrix);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vehicle/vehicle-pricing/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vehicle/vehicle-pricing/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/api-functions",
|
|
3
|
-
"version": "0.0.7-next.
|
|
3
|
+
"version": "0.0.7-next.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./notion": {
|
|
@@ -73,22 +73,22 @@
|
|
|
73
73
|
],
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@casl/ability": "^6.7.3",
|
|
76
|
-
"@driveflux/auth": "3.0.0-next.
|
|
77
|
-
"@driveflux/billing": "7.0.0-develop.
|
|
78
|
-
"@driveflux/config": "2.1.0-next.
|
|
79
|
-
"@driveflux/coupon": "8.0.0-develop.
|
|
80
|
-
"@driveflux/db": "3.0.0-develop.
|
|
81
|
-
"@driveflux/email": "6.0.0-develop.
|
|
82
|
-
"@driveflux/email-templates": "0.0.2-develop.
|
|
83
|
-
"@driveflux/engine": "0.1.2-develop.
|
|
76
|
+
"@driveflux/auth": "3.0.0-next.5",
|
|
77
|
+
"@driveflux/billing": "7.0.0-develop.38",
|
|
78
|
+
"@driveflux/config": "2.1.0-next.1",
|
|
79
|
+
"@driveflux/coupon": "8.0.0-develop.46",
|
|
80
|
+
"@driveflux/db": "3.0.0-develop.63",
|
|
81
|
+
"@driveflux/email": "6.0.0-develop.44",
|
|
82
|
+
"@driveflux/email-templates": "0.0.2-develop.47",
|
|
83
|
+
"@driveflux/engine": "0.1.2-develop.73",
|
|
84
84
|
"@driveflux/fetch": "7.0.3",
|
|
85
85
|
"@driveflux/format-money": "6.0.2",
|
|
86
86
|
"@driveflux/problem": "5.0.3",
|
|
87
|
-
"@driveflux/reporter": "6.0.4-next.
|
|
87
|
+
"@driveflux/reporter": "6.0.4-next.2",
|
|
88
88
|
"@driveflux/result": "5.0.3",
|
|
89
|
-
"@driveflux/scheduler": "7.0.0-develop.
|
|
89
|
+
"@driveflux/scheduler": "7.0.0-develop.45",
|
|
90
90
|
"@driveflux/singleton": "2.0.2",
|
|
91
|
-
"@driveflux/subscription": "8.0.0-develop.
|
|
91
|
+
"@driveflux/subscription": "8.0.0-develop.30",
|
|
92
92
|
"@driveflux/time": "5.0.2",
|
|
93
93
|
"@driveflux/utils": "5.0.2",
|
|
94
94
|
"@notionhq/client": "^4.0.2",
|