@driveflux/config 3.0.10 → 3.0.11
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/backend.js +117 -93
- package/dist/constants.js +122 -41
- package/dist/frontend.js +23 -25
- package/dist/next.config.js +52 -37
- package/dist/utils.js +8 -7
- package/package.json +11 -11
package/dist/backend.js
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _object_spread(target) {
|
|
15
|
+
for(var i = 1; i < arguments.length; i++){
|
|
16
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
+
var ownKeys = Object.keys(source);
|
|
18
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
ownKeys.forEach(function(key) {
|
|
24
|
+
_define_property(target, key, source[key]);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
1
29
|
import { singleton } from '@driveflux/singleton';
|
|
2
30
|
import { z } from 'zod';
|
|
3
31
|
import { getNotionIds, getSlackIds } from './constants.js';
|
|
4
32
|
import { getAppEnv, isProd, requiredStringIfProdValidation } from './utils.js';
|
|
5
|
-
export
|
|
33
|
+
export var ConfigValidation = z.object({
|
|
6
34
|
appUrl: z.url(),
|
|
7
35
|
appEnv: z.string().optional(),
|
|
8
36
|
tunnelUrl: z.string().optional(),
|
|
@@ -12,21 +40,23 @@ export const ConfigValidation = z.object({
|
|
|
12
40
|
isProd: z.boolean(),
|
|
13
41
|
taxRate: z.number(),
|
|
14
42
|
oldTaxRate: z.number(),
|
|
15
|
-
baseCurrency: z.enum([
|
|
43
|
+
baseCurrency: z.enum([
|
|
44
|
+
'MYR'
|
|
45
|
+
]),
|
|
16
46
|
dbUrl: z.string(),
|
|
17
47
|
cse: z.object({
|
|
18
48
|
login: requiredStringIfProdValidation,
|
|
19
49
|
password: requiredStringIfProdValidation,
|
|
20
|
-
templateId: requiredStringIfProdValidation
|
|
50
|
+
templateId: requiredStringIfProdValidation
|
|
21
51
|
}),
|
|
22
52
|
utilization: z.object({
|
|
23
|
-
amountThreshold: z.number().min(0).default(5)
|
|
53
|
+
amountThreshold: z.number().min(0).default(5)
|
|
24
54
|
}),
|
|
25
55
|
algolia: z.object({
|
|
26
56
|
appId: z.string(),
|
|
27
57
|
adminKey: z.string(),
|
|
28
58
|
searchKey: z.string(),
|
|
29
|
-
knowledgeBaseIndex: z.string()
|
|
59
|
+
knowledgeBaseIndex: z.string()
|
|
30
60
|
}),
|
|
31
61
|
upload: z.object({
|
|
32
62
|
awsKey: z.string(),
|
|
@@ -36,7 +66,7 @@ export const ConfigValidation = z.object({
|
|
|
36
66
|
siteBucket: z.string(),
|
|
37
67
|
region: z.string(),
|
|
38
68
|
secret: z.string().optional(),
|
|
39
|
-
debug: z.boolean().optional()
|
|
69
|
+
debug: z.boolean().optional()
|
|
40
70
|
}),
|
|
41
71
|
stripe: z.object({
|
|
42
72
|
secretKey: z.string(),
|
|
@@ -46,23 +76,21 @@ export const ConfigValidation = z.object({
|
|
|
46
76
|
// Both possess different keys
|
|
47
77
|
webhook: z.object({
|
|
48
78
|
connectAccountKey: z.string(),
|
|
49
|
-
accountKey: z.string()
|
|
50
|
-
})
|
|
79
|
+
accountKey: z.string()
|
|
80
|
+
})
|
|
51
81
|
}),
|
|
52
|
-
twilio: z
|
|
53
|
-
.object({
|
|
82
|
+
twilio: z.object({
|
|
54
83
|
accountSid: z.string().optional(),
|
|
55
84
|
authToken: z.string().optional(),
|
|
56
|
-
phoneNumber: z.string().optional()
|
|
57
|
-
})
|
|
58
|
-
.optional(),
|
|
85
|
+
phoneNumber: z.string().optional()
|
|
86
|
+
}).optional(),
|
|
59
87
|
vonage: z.object({
|
|
60
88
|
apiKey: requiredStringIfProdValidation,
|
|
61
|
-
apiSecret: requiredStringIfProdValidation
|
|
89
|
+
apiSecret: requiredStringIfProdValidation
|
|
62
90
|
}),
|
|
63
91
|
esms: z.object({
|
|
64
92
|
apiKey: requiredStringIfProdValidation,
|
|
65
|
-
apiSecret: requiredStringIfProdValidation
|
|
93
|
+
apiSecret: requiredStringIfProdValidation
|
|
66
94
|
}),
|
|
67
95
|
slack: z.object({
|
|
68
96
|
token: requiredStringIfProdValidation,
|
|
@@ -81,7 +109,7 @@ export const ConfigValidation = z.object({
|
|
|
81
109
|
engineeringRequestsChannel: z.string().min(1),
|
|
82
110
|
esmsChannelId: z.string().min(1),
|
|
83
111
|
excessMileageChannelId: z.string().min(1),
|
|
84
|
-
endingSubscriptionsChannelId: z.string().min(1)
|
|
112
|
+
endingSubscriptionsChannelId: z.string().min(1)
|
|
85
113
|
}),
|
|
86
114
|
noStaticGenerating: z.boolean(),
|
|
87
115
|
notion: z.object({
|
|
@@ -93,7 +121,7 @@ export const ConfigValidation = z.object({
|
|
|
93
121
|
bdDatabaseId: z.string().min(1),
|
|
94
122
|
referralsDatabaseId: z.string().min(1),
|
|
95
123
|
brandsLandingPagesDatabaseId: z.string().min(1),
|
|
96
|
-
knowledgeBaseDatabaseId: z.string().min(1)
|
|
124
|
+
knowledgeBaseDatabaseId: z.string().min(1)
|
|
97
125
|
}),
|
|
98
126
|
flux: z.object({
|
|
99
127
|
defaultBillingAddress: z.object({
|
|
@@ -103,72 +131,75 @@ export const ConfigValidation = z.object({
|
|
|
103
131
|
city: z.string(),
|
|
104
132
|
state: z.string(),
|
|
105
133
|
/**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}),
|
|
134
|
+
* Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
|
|
135
|
+
*/ country: z.string(),
|
|
136
|
+
postalCode: z.string()
|
|
137
|
+
})
|
|
111
138
|
}),
|
|
112
139
|
html2pdfKey: z.string(),
|
|
113
140
|
cmsPreviewSecret: requiredStringIfProdValidation,
|
|
114
141
|
search: z.object({
|
|
115
|
-
noIdOptimization: z.boolean()
|
|
142
|
+
noIdOptimization: z.boolean()
|
|
116
143
|
}),
|
|
117
144
|
auth: z.object({
|
|
118
145
|
secureCookies: z.boolean(),
|
|
119
146
|
authSecret: z.string(),
|
|
120
147
|
jwtSecret: z.string(),
|
|
121
|
-
google: z
|
|
122
|
-
.object({
|
|
148
|
+
google: z.object({
|
|
123
149
|
clientId: z.string(),
|
|
124
|
-
clientSecret: z.string()
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
facebook: z
|
|
128
|
-
.object({
|
|
150
|
+
clientSecret: z.string()
|
|
151
|
+
}).optional(),
|
|
152
|
+
facebook: z.object({
|
|
129
153
|
clientId: z.string(),
|
|
130
|
-
clientSecret: z.string()
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
apple: z
|
|
134
|
-
.object({
|
|
154
|
+
clientSecret: z.string()
|
|
155
|
+
}).optional(),
|
|
156
|
+
apple: z.object({
|
|
135
157
|
clientId: z.string(),
|
|
136
|
-
clientSecret: z.string()
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
email: z
|
|
140
|
-
.object({
|
|
158
|
+
clientSecret: z.string()
|
|
159
|
+
}).optional(),
|
|
160
|
+
email: z.object({
|
|
141
161
|
server: z.string(),
|
|
142
|
-
from: z.string()
|
|
143
|
-
})
|
|
144
|
-
.optional(),
|
|
162
|
+
from: z.string()
|
|
163
|
+
}).optional()
|
|
145
164
|
}),
|
|
146
165
|
kv: z.object({
|
|
147
166
|
url: z.string(),
|
|
148
167
|
token: z.string(),
|
|
149
|
-
apiUrl: z.string()
|
|
168
|
+
apiUrl: z.string()
|
|
150
169
|
}),
|
|
151
170
|
sendSMSOutsideOfProd: z.boolean().optional(),
|
|
152
|
-
vercel: z
|
|
153
|
-
.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
.optional(),
|
|
157
|
-
currentSubscriptionContractVersion: z.number(),
|
|
171
|
+
vercel: z.object({
|
|
172
|
+
cronSecret: z.string().optional()
|
|
173
|
+
}).optional(),
|
|
174
|
+
currentSubscriptionContractVersion: z.number()
|
|
158
175
|
});
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
176
|
+
var augmentEnv = function augmentEnv() {
|
|
177
|
+
var allEnv = _object_spread({}, getSlackIds(getAppEnv(), process.env), getNotionIds(getAppEnv()));
|
|
178
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
179
|
+
try {
|
|
180
|
+
for(var _iterator = Object.keys(allEnv)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
181
|
+
var key = _step.value;
|
|
182
|
+
if (process.env[key]) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
process.env[key] = allEnv[key];
|
|
186
|
+
}
|
|
187
|
+
} catch (err) {
|
|
188
|
+
_didIteratorError = true;
|
|
189
|
+
_iteratorError = err;
|
|
190
|
+
} finally{
|
|
191
|
+
try {
|
|
192
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
193
|
+
_iterator.return();
|
|
194
|
+
}
|
|
195
|
+
} finally{
|
|
196
|
+
if (_didIteratorError) {
|
|
197
|
+
throw _iteratorError;
|
|
198
|
+
}
|
|
167
199
|
}
|
|
168
|
-
process.env[key] = allEnv[key];
|
|
169
200
|
}
|
|
170
201
|
};
|
|
171
|
-
|
|
202
|
+
var getConfig = function getConfig() {
|
|
172
203
|
augmentEnv();
|
|
173
204
|
return {
|
|
174
205
|
appUrl: process.env.APP_URL,
|
|
@@ -176,8 +207,7 @@ const getConfig = () => {
|
|
|
176
207
|
apiVersion: process.env.API_VERSION,
|
|
177
208
|
tunnelUrl: process.env.TUNNEL_URL,
|
|
178
209
|
prodAppUrl: process.env.PROD_APP_URL || process.env.APP_URL,
|
|
179
|
-
apiUrl: process.env.API_URL ||
|
|
180
|
-
(process.env.APP_URL ? `${process.env.APP_URL}/api` : undefined),
|
|
210
|
+
apiUrl: process.env.API_URL || (process.env.APP_URL ? "".concat(process.env.APP_URL, "/api") : undefined),
|
|
181
211
|
reservationFee: 49,
|
|
182
212
|
isProd: isProd(),
|
|
183
213
|
taxRate: 0.1,
|
|
@@ -189,7 +219,7 @@ const getConfig = () => {
|
|
|
189
219
|
cse: {
|
|
190
220
|
login: process.env.CSE_LOGIN,
|
|
191
221
|
password: process.env.CSE_PASSWORD,
|
|
192
|
-
templateId: process.env.CSE_TEMPLATE_ID
|
|
222
|
+
templateId: process.env.CSE_TEMPLATE_ID
|
|
193
223
|
},
|
|
194
224
|
upload: {
|
|
195
225
|
awsKey: process.env.AWS_KEY,
|
|
@@ -199,28 +229,28 @@ const getConfig = () => {
|
|
|
199
229
|
siteBucket: process.env.SITE_BUCKET,
|
|
200
230
|
region: process.env.STORAGE_REGION,
|
|
201
231
|
secret: process.env.COMPANION_SECRET,
|
|
202
|
-
debug: process.env.COMPANION_DEBUG === 'true'
|
|
232
|
+
debug: process.env.COMPANION_DEBUG === 'true'
|
|
203
233
|
},
|
|
204
234
|
stripe: {
|
|
205
235
|
secretKey: process.env.STRIPE_SECRET_KEY,
|
|
206
236
|
apiVersion: '2020-08-27',
|
|
207
237
|
webhook: {
|
|
208
238
|
connectAccountKey: process.env.STRIPE_CONNECT_WEBHOOK_ENDPOINT_SECRET,
|
|
209
|
-
accountKey: process.env.STRIPE_WEBHOOK_SECRET
|
|
210
|
-
}
|
|
239
|
+
accountKey: process.env.STRIPE_WEBHOOK_SECRET
|
|
240
|
+
}
|
|
211
241
|
},
|
|
212
242
|
twilio: {
|
|
213
243
|
accountSid: process.env.TWILIO_ACCOUNT_SID,
|
|
214
244
|
authToken: process.env.TWILIO_AUTH_TOKEN,
|
|
215
|
-
phoneNumber: process.env.TWILIO_PHONE_NUMBER
|
|
245
|
+
phoneNumber: process.env.TWILIO_PHONE_NUMBER
|
|
216
246
|
},
|
|
217
247
|
vonage: {
|
|
218
248
|
apiKey: process.env.VONAGE_API_KEY,
|
|
219
|
-
apiSecret: process.env.VONAGE_API_SECRET
|
|
249
|
+
apiSecret: process.env.VONAGE_API_SECRET
|
|
220
250
|
},
|
|
221
251
|
esms: {
|
|
222
252
|
apiKey: process.env.ESMS_API_KEY,
|
|
223
|
-
apiSecret: process.env.ESMS_API_SECRET
|
|
253
|
+
apiSecret: process.env.ESMS_API_SECRET
|
|
224
254
|
},
|
|
225
255
|
redisUrl: process.env.REDIS_URL,
|
|
226
256
|
slack: {
|
|
@@ -240,7 +270,7 @@ const getConfig = () => {
|
|
|
240
270
|
engineeringRequestsChannel: process.env.SLACK_ENGINEERING_REQUESTS_CHANNEL_ID,
|
|
241
271
|
esmsChannelId: process.env.SLACK_ESMS_CHANNEL_ID,
|
|
242
272
|
excessMileageChannelId: process.env.SLACK_EXCESS_MILEAGE_CHANNEL_ID,
|
|
243
|
-
endingSubscriptionsChannelId: process.env.SLACK_ENDING_SUBSCRIPTIONS_CHANNEL_ID
|
|
273
|
+
endingSubscriptionsChannelId: process.env.SLACK_ENDING_SUBSCRIPTIONS_CHANNEL_ID
|
|
244
274
|
},
|
|
245
275
|
noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
|
|
246
276
|
notion: {
|
|
@@ -252,13 +282,13 @@ const getConfig = () => {
|
|
|
252
282
|
bdDatabaseId: process.env.NOTION_BD_DATABASE_ID,
|
|
253
283
|
referralsDatabaseId: process.env.NOTION_REFERRALS_DATABASE_ID,
|
|
254
284
|
brandsLandingPagesDatabaseId: process.env.NOTION_BRANDS_LANDING_PAGES_DATABASE_ID,
|
|
255
|
-
knowledgeBaseDatabaseId: process.env.NOTION_KNOWLEDGE_BASE_DATABASE_ID
|
|
285
|
+
knowledgeBaseDatabaseId: process.env.NOTION_KNOWLEDGE_BASE_DATABASE_ID
|
|
256
286
|
},
|
|
257
287
|
algolia: {
|
|
258
288
|
appId: process.env.ALGOLIA_APP_ID,
|
|
259
289
|
adminKey: process.env.ALGOLIA_ADMIN_KEY,
|
|
260
290
|
searchKey: process.env.ALGOLIA_SEARCH_KEY,
|
|
261
|
-
knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX
|
|
291
|
+
knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX
|
|
262
292
|
},
|
|
263
293
|
flux: {
|
|
264
294
|
defaultBillingAddress: {
|
|
@@ -268,16 +298,15 @@ const getConfig = () => {
|
|
|
268
298
|
city: 'Kuala Lumpur',
|
|
269
299
|
state: 'Kuala Lumpur',
|
|
270
300
|
/**
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
},
|
|
301
|
+
* Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
|
|
302
|
+
*/ country: 'MY',
|
|
303
|
+
postalCode: '50480'
|
|
304
|
+
}
|
|
276
305
|
},
|
|
277
306
|
html2pdfKey: process.env.HTML_2_PDF_APP_KEY,
|
|
278
307
|
cmsPreviewSecret: process.env.CMS_PREVIEW_SECRET,
|
|
279
308
|
search: {
|
|
280
|
-
noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true'
|
|
309
|
+
noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true'
|
|
281
310
|
},
|
|
282
311
|
auth: {
|
|
283
312
|
secureCookies: process.env.SECURE_COOKIES !== 'false',
|
|
@@ -285,39 +314,34 @@ const getConfig = () => {
|
|
|
285
314
|
jwtSecret: process.env.NEXTAUTH_SECRET,
|
|
286
315
|
google: {
|
|
287
316
|
clientId: process.env.GOOGLE_CLIENT_ID,
|
|
288
|
-
clientSecret: process.env.GOOGLE_CLIENT_SECRET
|
|
317
|
+
clientSecret: process.env.GOOGLE_CLIENT_SECRET
|
|
289
318
|
},
|
|
290
319
|
facebook: {
|
|
291
320
|
clientId: process.env.FACEBOOK_CLIENT_ID,
|
|
292
|
-
clientSecret: process.env.FACEBOOK_CLIENT_SECRET
|
|
321
|
+
clientSecret: process.env.FACEBOOK_CLIENT_SECRET
|
|
293
322
|
},
|
|
294
323
|
apple: {
|
|
295
324
|
clientId: process.env.APPLE_ID,
|
|
296
|
-
clientSecret: process.env.APPLE_SECRET
|
|
297
|
-
}
|
|
298
|
-
// email: {
|
|
299
|
-
// server: process.env.EMAIL_SERVER! || composeMailServer(),
|
|
300
|
-
// from: process.env.AUTH_EMAIL_FROM || process.env.FROM_MAIL!,
|
|
301
|
-
// }
|
|
325
|
+
clientSecret: process.env.APPLE_SECRET
|
|
326
|
+
}
|
|
302
327
|
},
|
|
303
328
|
sendSMSOutsideOfProd: process.env.SEND_SMS_OUTSIDE_OF_PROD === 'true',
|
|
304
329
|
vercel: {
|
|
305
|
-
cronSecret: process.env.CRON_SECRET
|
|
330
|
+
cronSecret: process.env.CRON_SECRET
|
|
306
331
|
},
|
|
307
332
|
kv: {
|
|
308
333
|
url: process.env.KV_URL,
|
|
309
334
|
token: process.env.KV_REST_API_TOKEN,
|
|
310
|
-
apiUrl: process.env.KV_REST_API_URL
|
|
335
|
+
apiUrl: process.env.KV_REST_API_URL
|
|
311
336
|
},
|
|
312
|
-
currentSubscriptionContractVersion: 2
|
|
337
|
+
currentSubscriptionContractVersion: 2
|
|
313
338
|
};
|
|
314
339
|
};
|
|
315
|
-
export
|
|
340
|
+
export var resetConfig = function resetConfig() {
|
|
316
341
|
config = singleton('backendConfig', getConfig(), true);
|
|
317
342
|
return config;
|
|
318
343
|
};
|
|
319
|
-
export
|
|
320
|
-
export
|
|
344
|
+
export var config = singleton('backendConfig', getConfig());
|
|
345
|
+
export var setConfig = function setConfig(key, value) {
|
|
321
346
|
config[key] = value;
|
|
322
347
|
};
|
|
323
|
-
//# sourceMappingURL=backend.js.map
|
package/dist/constants.js
CHANGED
|
@@ -1,4 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _object_spread(target) {
|
|
15
|
+
for(var i = 1; i < arguments.length; i++){
|
|
16
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
17
|
+
var ownKeys = Object.keys(source);
|
|
18
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
19
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
20
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
ownKeys.forEach(function(key) {
|
|
24
|
+
_define_property(target, key, source[key]);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
}
|
|
29
|
+
function ownKeys(object, enumerableOnly) {
|
|
30
|
+
var keys = Object.keys(object);
|
|
31
|
+
if (Object.getOwnPropertySymbols) {
|
|
32
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
33
|
+
if (enumerableOnly) {
|
|
34
|
+
symbols = symbols.filter(function(sym) {
|
|
35
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
keys.push.apply(keys, symbols);
|
|
39
|
+
}
|
|
40
|
+
return keys;
|
|
41
|
+
}
|
|
42
|
+
function _object_spread_props(target, source) {
|
|
43
|
+
source = source != null ? source : {};
|
|
44
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
45
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
46
|
+
} else {
|
|
47
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
48
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
var slackProductionChannels = {
|
|
2
54
|
SLACK_DEFAULT_CHANNEL_ID: 'C0679V8KGSH',
|
|
3
55
|
SLACK_RESERVATIONS_CHANNEL_ID: 'C01G8B12G67',
|
|
4
56
|
SLACK_FBC_CHANNEL: 'C01L1AAKB3N',
|
|
@@ -12,60 +64,89 @@ const slackProductionChannels = {
|
|
|
12
64
|
SLACK_COMING_SERVICES_CHANNEL_ID: 'C06SB20H2J1',
|
|
13
65
|
SLACK_ESMS_CHANNEL_ID: 'C07RPEP2BMY',
|
|
14
66
|
SLACK_EXCESS_MILEAGE_CHANNEL_ID: 'C0679URBY93',
|
|
15
|
-
SLACK_ENGINEERING_REQUESTS_CHANNEL_ID: 'C01U8GTK3K9'
|
|
67
|
+
SLACK_ENGINEERING_REQUESTS_CHANNEL_ID: 'C01U8GTK3K9'
|
|
68
|
+
};
|
|
69
|
+
var getSlackIdsMap = function getSlackIdsMap(processEnv) {
|
|
70
|
+
return {
|
|
71
|
+
production: slackProductionChannels,
|
|
72
|
+
staging: Object.keys(slackProductionChannels).reduce(function(acc, key) {
|
|
73
|
+
acc[key] = 'C0661UNMBQU'; // #platform-staging-notifications
|
|
74
|
+
return acc;
|
|
75
|
+
}, {}),
|
|
76
|
+
development: Object.keys(slackProductionChannels).reduce(function(acc, key) {
|
|
77
|
+
acc[key] = (processEnv === null || processEnv === void 0 ? void 0 : processEnv.SLACK_MY_CHANNEL_ID) || 'C09GJ4FJVRS'; // #platform-dev-notifications
|
|
78
|
+
return acc;
|
|
79
|
+
}, {})
|
|
80
|
+
};
|
|
16
81
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
processEnv
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
82
|
+
export var getSlackIds = function getSlackIds(appEnv, processEnv) {
|
|
83
|
+
var slackIdsMap = getSlackIdsMap(processEnv);
|
|
84
|
+
var envIds = appEnv && appEnv in slackIdsMap ? slackIdsMap[appEnv] : slackIdsMap.staging;
|
|
85
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
86
|
+
try {
|
|
87
|
+
// Override the values from ENV if available
|
|
88
|
+
for(var _iterator = Object.keys(envIds)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
89
|
+
var key = _step.value;
|
|
90
|
+
if (processEnv === null || processEnv === void 0 ? void 0 : processEnv[key]) {
|
|
91
|
+
envIds[key] = processEnv[key];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
} catch (err) {
|
|
95
|
+
_didIteratorError = true;
|
|
96
|
+
_iteratorError = err;
|
|
97
|
+
} finally{
|
|
98
|
+
try {
|
|
99
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
100
|
+
_iterator.return();
|
|
101
|
+
}
|
|
102
|
+
} finally{
|
|
103
|
+
if (_didIteratorError) {
|
|
104
|
+
throw _iteratorError;
|
|
105
|
+
}
|
|
38
106
|
}
|
|
39
107
|
}
|
|
40
108
|
return envIds;
|
|
41
109
|
};
|
|
42
|
-
|
|
110
|
+
var notionProductionChannels = {
|
|
43
111
|
NOTION_REQUEST_DATABASE_ID: '32332c0e-4277-43fa-b10e-7d458234f9ea',
|
|
44
|
-
NOTION_REVIEWS_DATABASE_ID: '8a8b0df9-567d-433f-8937-583db2766176',
|
|
45
|
-
NOTION_FBC_DATABASE_ID: '76960d4b-2b43-4019-a77e-ac46a0b3d752',
|
|
112
|
+
NOTION_REVIEWS_DATABASE_ID: '8a8b0df9-567d-433f-8937-583db2766176',
|
|
113
|
+
NOTION_FBC_DATABASE_ID: '76960d4b-2b43-4019-a77e-ac46a0b3d752',
|
|
46
114
|
NOTION_FLUXSTERS_DATABASE_ID: '4ea6953a-61c2-4673-8950-c0d0e158de0a',
|
|
47
115
|
NOTION_BD_DATABASE_ID: '172a9182-56c0-4358-b4f1-7e8fcfa44e46',
|
|
48
116
|
NOTION_BRANDS_LANDING_PAGES_DATABASE_ID: 'e321d71a-0d29-42da-ab0b-dca2260b643e',
|
|
49
117
|
NOTION_KNOWLEDGE_BASE_DATABASE_ID: '7a81653f-4351-4a17-aa1e-c3082c378441',
|
|
50
|
-
NOTION_REFERRALS_DATABASE_ID: 'b5599d70-b414-4aa9-9ff2-d445c8f3f0fc'
|
|
118
|
+
NOTION_REFERRALS_DATABASE_ID: 'b5599d70-b414-4aa9-9ff2-d445c8f3f0fc'
|
|
51
119
|
};
|
|
52
|
-
|
|
120
|
+
var NOTION_IDS_MAP = {
|
|
53
121
|
production: notionProductionChannels,
|
|
54
|
-
staging: {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
122
|
+
staging: _object_spread_props(_object_spread({}, notionProductionChannels), {
|
|
123
|
+
NOTION_KNOWLEDGE_BASE_DATABASE_ID: 'f95b9986-c1c9-46ca-a742-d49f3f80d7dd'
|
|
124
|
+
})
|
|
58
125
|
};
|
|
59
|
-
export
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
126
|
+
export var getNotionIds = function getNotionIds(appEnv, processEnv) {
|
|
127
|
+
var envIds = appEnv && appEnv in NOTION_IDS_MAP ? NOTION_IDS_MAP[appEnv] : NOTION_IDS_MAP.staging;
|
|
128
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
129
|
+
try {
|
|
130
|
+
// Override the values from ENV if available
|
|
131
|
+
for(var _iterator = Object.keys(envIds)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
132
|
+
var key = _step.value;
|
|
133
|
+
if (processEnv === null || processEnv === void 0 ? void 0 : processEnv[key]) {
|
|
134
|
+
envIds[key] = processEnv[key];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
} catch (err) {
|
|
138
|
+
_didIteratorError = true;
|
|
139
|
+
_iteratorError = err;
|
|
140
|
+
} finally{
|
|
141
|
+
try {
|
|
142
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
143
|
+
_iterator.return();
|
|
144
|
+
}
|
|
145
|
+
} finally{
|
|
146
|
+
if (_didIteratorError) {
|
|
147
|
+
throw _iteratorError;
|
|
148
|
+
}
|
|
67
149
|
}
|
|
68
150
|
}
|
|
69
151
|
return envIds;
|
|
70
152
|
};
|
|
71
|
-
//# sourceMappingURL=constants.js.map
|
package/dist/frontend.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { initSingleton } from '@driveflux/singleton';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
export
|
|
3
|
+
export var ConfigValidation = z.object({
|
|
4
4
|
appUrl: z.url(),
|
|
5
5
|
apiUrl: z.string(),
|
|
6
6
|
taxRate: z.number(),
|
|
@@ -9,7 +9,7 @@ export const ConfigValidation = z.object({
|
|
|
9
9
|
currency: z.string(),
|
|
10
10
|
stripe: z.object({
|
|
11
11
|
publishableKey: z.string(),
|
|
12
|
-
connectClientId: z.string()
|
|
12
|
+
connectClientId: z.string()
|
|
13
13
|
}),
|
|
14
14
|
gtmCode: z.string().optional(),
|
|
15
15
|
secureCookies: z.boolean(),
|
|
@@ -17,7 +17,7 @@ export const ConfigValidation = z.object({
|
|
|
17
17
|
graphCms: z.object({
|
|
18
18
|
devAuthToken: z.string(),
|
|
19
19
|
prodAuthToken: z.string(),
|
|
20
|
-
projectApi: z.string()
|
|
20
|
+
projectApi: z.string()
|
|
21
21
|
}),
|
|
22
22
|
isProd: z.boolean(),
|
|
23
23
|
noStaticGenerating: z.boolean(),
|
|
@@ -27,40 +27,39 @@ export const ConfigValidation = z.object({
|
|
|
27
27
|
vehicleIndexName: z.string(),
|
|
28
28
|
appId: z.string(),
|
|
29
29
|
searchKey: z.string(),
|
|
30
|
-
knowledgeBaseIndex: z.string()
|
|
30
|
+
knowledgeBaseIndex: z.string()
|
|
31
31
|
}),
|
|
32
32
|
glitchTip: z.object({
|
|
33
|
-
dsn: z.string().optional()
|
|
33
|
+
dsn: z.string().optional()
|
|
34
34
|
}),
|
|
35
35
|
postHog: z.object({
|
|
36
36
|
apiKey: z.string(),
|
|
37
|
-
apiHost: z.string().optional()
|
|
38
|
-
})
|
|
37
|
+
apiHost: z.string().optional()
|
|
38
|
+
})
|
|
39
39
|
});
|
|
40
40
|
/**
|
|
41
41
|
* Do not use this function, use the config object directly
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const apiUrl = process.env.API_URL || `${appUrl}/api`;
|
|
42
|
+
*/ var getConfig = function getConfig() {
|
|
43
|
+
var appUrl = process.env.APP_URL;
|
|
44
|
+
var apiUrl = process.env.API_URL || "".concat(appUrl, "/api");
|
|
46
45
|
return {
|
|
47
|
-
appUrl,
|
|
48
|
-
apiUrl,
|
|
46
|
+
appUrl: appUrl,
|
|
47
|
+
apiUrl: apiUrl,
|
|
49
48
|
taxRate: 0.1,
|
|
50
49
|
oldTaxRate: 0.08,
|
|
51
50
|
reservationFee: 49,
|
|
52
51
|
currency: 'MYR',
|
|
53
52
|
stripe: {
|
|
54
53
|
publishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
|
|
55
|
-
connectClientId: process.env.STRIPE_CONNECT_CLIENT_ID || ''
|
|
54
|
+
connectClientId: process.env.STRIPE_CONNECT_CLIENT_ID || ''
|
|
56
55
|
},
|
|
57
56
|
gtmCode: process.env.GTM_CODE,
|
|
58
57
|
secureCookies: process.env.SECURE_COOKIES !== 'false',
|
|
59
58
|
appEnv: process.env.APP_ENV,
|
|
60
59
|
graphCms: {
|
|
61
|
-
devAuthToken:
|
|
62
|
-
prodAuthToken:
|
|
63
|
-
projectApi:
|
|
60
|
+
devAuthToken: "".concat(process.env.GRAPHCMS_AUTH_TOKEN),
|
|
61
|
+
prodAuthToken: "".concat(process.env.GRAPHCMS_AUTH_TOKEN),
|
|
62
|
+
projectApi: "".concat(process.env.GRAPHCMS_PROJECT_API)
|
|
64
63
|
},
|
|
65
64
|
isProd: process.env.APP_ENV === 'production',
|
|
66
65
|
noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
|
|
@@ -70,23 +69,22 @@ const getConfig = () => {
|
|
|
70
69
|
vehicleIndexName: process.env.ALGOLIA_VEHICLE_INDEX_NAME || 'vehicles',
|
|
71
70
|
appId: process.env.ALGOLIA_APP_ID,
|
|
72
71
|
searchKey: process.env.ALGOLIA_SEARCH_KEY,
|
|
73
|
-
knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX || 'knowledge_base'
|
|
72
|
+
knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX || 'knowledge_base'
|
|
74
73
|
},
|
|
75
74
|
glitchTip: {
|
|
76
|
-
dsn: process.env.GLITCHTIP_DSN
|
|
75
|
+
dsn: process.env.GLITCHTIP_DSN
|
|
77
76
|
},
|
|
78
77
|
postHog: {
|
|
79
78
|
apiKey: process.env.NEXT_PUBLIC_POSTHOG_KEY,
|
|
80
|
-
apiHost: process.env.NEXT_PUBLIC_POSTHOG_HOST
|
|
81
|
-
}
|
|
79
|
+
apiHost: process.env.NEXT_PUBLIC_POSTHOG_HOST
|
|
80
|
+
}
|
|
82
81
|
};
|
|
83
82
|
};
|
|
84
|
-
export
|
|
83
|
+
export var resetConfig = function resetConfig() {
|
|
85
84
|
config = initSingleton('frontendConfig', getConfig, true);
|
|
86
85
|
return config;
|
|
87
86
|
};
|
|
88
|
-
export
|
|
89
|
-
export
|
|
87
|
+
export var config = initSingleton('frontendConfig', getConfig);
|
|
88
|
+
export var setConfig = function setConfig(key, value) {
|
|
90
89
|
config[key] = value;
|
|
91
90
|
};
|
|
92
|
-
//# sourceMappingURL=frontend.js.map
|
package/dist/next.config.js
CHANGED
|
@@ -1,89 +1,104 @@
|
|
|
1
|
+
function _type_of(obj) {
|
|
2
|
+
"@swc/helpers - typeof";
|
|
3
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
6
|
* Remove React properties from the bundle when explicitly set via DO_NOT_REMOVE_REACT_PROPERTIES
|
|
3
7
|
* or when the app is in production mode.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
typeof process.env.DO_NOT_REMOVE_REACT_PROPERTIES
|
|
7
|
-
? process.env.DO_NOT_REMOVE_REACT_PROPERTIES.toLowerCase() === 'true'
|
|
8
|
-
: process.env.APP_ENV === 'production';
|
|
9
|
-
export const baseNextConfig = {
|
|
8
|
+
*/ var reactRemoveProperties = typeof process.env.DO_NOT_REMOVE_REACT_PROPERTIES === 'string' && _type_of(process.env.DO_NOT_REMOVE_REACT_PROPERTIES) ? process.env.DO_NOT_REMOVE_REACT_PROPERTIES.toLowerCase() === 'true' : process.env.APP_ENV === 'production';
|
|
9
|
+
export var baseNextConfig = {
|
|
10
10
|
i18n: {
|
|
11
|
-
locales: [
|
|
12
|
-
|
|
11
|
+
locales: [
|
|
12
|
+
'en',
|
|
13
|
+
'ms',
|
|
14
|
+
'zh'
|
|
15
|
+
],
|
|
16
|
+
defaultLocale: 'en'
|
|
13
17
|
},
|
|
14
18
|
env: {
|
|
15
|
-
BASE_CURRENCY: 'MYR'
|
|
19
|
+
BASE_CURRENCY: 'MYR'
|
|
16
20
|
},
|
|
17
21
|
reactStrictMode: true,
|
|
18
22
|
images: {
|
|
19
|
-
deviceSizes: [
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
deviceSizes: [
|
|
24
|
+
640,
|
|
25
|
+
750,
|
|
26
|
+
1200,
|
|
27
|
+
1920
|
|
28
|
+
],
|
|
29
|
+
qualities: [
|
|
30
|
+
70,
|
|
31
|
+
75,
|
|
32
|
+
90
|
|
33
|
+
],
|
|
34
|
+
minimumCacheTTL: 31536000,
|
|
22
35
|
remotePatterns: [
|
|
23
36
|
{
|
|
24
37
|
protocol: 'https',
|
|
25
|
-
hostname: 'driveflux.com'
|
|
38
|
+
hostname: 'driveflux.com'
|
|
26
39
|
},
|
|
27
40
|
{
|
|
28
41
|
protocol: 'https',
|
|
29
|
-
hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com'
|
|
42
|
+
hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com'
|
|
30
43
|
},
|
|
31
44
|
{
|
|
32
45
|
protocol: 'https',
|
|
33
|
-
hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com'
|
|
46
|
+
hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com'
|
|
34
47
|
},
|
|
35
48
|
{
|
|
36
49
|
protocol: 'https',
|
|
37
|
-
hostname: 's3.ap-southeast-1.amazonaws.com'
|
|
50
|
+
hostname: 's3.ap-southeast-1.amazonaws.com'
|
|
38
51
|
},
|
|
39
52
|
{
|
|
40
53
|
protocol: 'https',
|
|
41
|
-
hostname: 'flux-admin.s3.ap-southeast-1.amazonaws.com'
|
|
54
|
+
hostname: 'flux-admin.s3.ap-southeast-1.amazonaws.com'
|
|
42
55
|
},
|
|
43
56
|
{
|
|
44
57
|
protocol: 'https',
|
|
45
|
-
hostname: 'vercel.app'
|
|
58
|
+
hostname: 'vercel.app'
|
|
46
59
|
},
|
|
47
60
|
{
|
|
48
61
|
protocol: 'https',
|
|
49
|
-
hostname: 'media.graphcms.com'
|
|
62
|
+
hostname: 'media.graphcms.com'
|
|
50
63
|
},
|
|
51
64
|
{
|
|
52
65
|
protocol: 'https',
|
|
53
|
-
hostname: 'media.graphassets.com'
|
|
66
|
+
hostname: 'media.graphassets.com'
|
|
54
67
|
},
|
|
55
68
|
{
|
|
56
69
|
protocol: 'https',
|
|
57
|
-
hostname: 'www.notion.so'
|
|
70
|
+
hostname: 'www.notion.so'
|
|
58
71
|
},
|
|
59
72
|
// This is for notion images
|
|
60
73
|
{
|
|
61
74
|
protocol: 'https',
|
|
62
|
-
hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com'
|
|
75
|
+
hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com'
|
|
63
76
|
},
|
|
64
77
|
{
|
|
65
78
|
protocol: 'https',
|
|
66
|
-
hostname: 'ap-northeast-1.graphassets.com'
|
|
67
|
-
}
|
|
68
|
-
]
|
|
79
|
+
hostname: 'ap-northeast-1.graphassets.com'
|
|
80
|
+
}
|
|
81
|
+
]
|
|
69
82
|
},
|
|
70
83
|
experimental: {
|
|
71
84
|
esmExternals: true,
|
|
72
|
-
swcPlugins: [
|
|
85
|
+
swcPlugins: [
|
|
86
|
+
[
|
|
87
|
+
'@lingui/swc-plugin',
|
|
88
|
+
{}
|
|
89
|
+
]
|
|
90
|
+
]
|
|
73
91
|
},
|
|
74
92
|
compiler: {
|
|
75
|
-
reactRemoveProperties,
|
|
76
|
-
removeConsole: process.env.FORCE_LOGGING_IN_PROD
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
: false,
|
|
93
|
+
reactRemoveProperties: reactRemoveProperties,
|
|
94
|
+
removeConsole: process.env.FORCE_LOGGING_IN_PROD ? false : process.env.APP_ENV === 'production' ? {
|
|
95
|
+
exclude: [
|
|
96
|
+
'error'
|
|
97
|
+
]
|
|
98
|
+
} : false
|
|
83
99
|
},
|
|
84
100
|
typescript: {
|
|
85
|
-
ignoreBuildErrors: process.env.IGNORE_NEXT_BUILD_ERRORS === 'true'
|
|
101
|
+
ignoreBuildErrors: process.env.IGNORE_NEXT_BUILD_ERRORS === 'true'
|
|
86
102
|
},
|
|
87
|
-
poweredByHeader: false
|
|
103
|
+
poweredByHeader: false
|
|
88
104
|
};
|
|
89
|
-
//# sourceMappingURL=next.config.js.map
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
-
export
|
|
2
|
+
export var getAppEnv = function getAppEnv() {
|
|
3
3
|
if (process.env.APP_ENV) {
|
|
4
4
|
return process.env.APP_ENV;
|
|
5
5
|
}
|
|
@@ -14,9 +14,10 @@ export const getAppEnv = () => {
|
|
|
14
14
|
// Default to development as a last resort
|
|
15
15
|
return 'development';
|
|
16
16
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
var isAppEnv = function isAppEnv(env) {
|
|
18
|
+
return getAppEnv() === env;
|
|
19
|
+
};
|
|
20
|
+
export var isProd = function isProd() {
|
|
21
|
+
return isAppEnv('production');
|
|
22
|
+
};
|
|
23
|
+
export var requiredStringIfProdValidation = isProd() ? z.string().min(1) : z.string().optional();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/config",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./backend": {
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@driveflux/singleton": "3.0.
|
|
28
|
-
"zod": "^4.
|
|
27
|
+
"@driveflux/singleton": "3.0.1",
|
|
28
|
+
"zod": "^4.4.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@driveflux/fab": "4.0.
|
|
32
|
-
"@driveflux/tsconfig": "3.0.
|
|
33
|
-
"@swc/cli": "^0.
|
|
34
|
-
"@swc/core": "^1.
|
|
35
|
-
"@types/node": "^
|
|
36
|
-
"@types/react": "19.2.
|
|
31
|
+
"@driveflux/fab": "4.0.1",
|
|
32
|
+
"@driveflux/tsconfig": "3.0.1",
|
|
33
|
+
"@swc/cli": "^0.8.1",
|
|
34
|
+
"@swc/core": "^1.15.33",
|
|
35
|
+
"@types/node": "^25.7.0",
|
|
36
|
+
"@types/react": "19.2.14",
|
|
37
37
|
"del-cli": "^7.0.0",
|
|
38
|
-
"next": "16.
|
|
39
|
-
"typescript": "^
|
|
38
|
+
"next": "16.2.6",
|
|
39
|
+
"typescript": "^6.0.3"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "fab",
|