@driveflux/config 2.0.1 → 2.0.2

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 CHANGED
@@ -1,13 +1,11 @@
1
1
  import { singleton } from '@driveflux/singleton';
2
2
  import { z } from 'zod';
3
- var isAppEnv = function(env) {
4
- return process.env.APP_ENV === env;
5
- };
6
- var isProd = function() {
7
- return isAppEnv('production');
8
- };
9
- var requiredStringIfProdValidation = isProd() ? z.string().min(1) : z.string().optional();
10
- export var ConfigValidation = z.object({
3
+ const isAppEnv = (env) => process.env.APP_ENV === env;
4
+ const isProd = () => isAppEnv('production');
5
+ const requiredStringIfProdValidation = isProd()
6
+ ? z.string().min(1)
7
+ : z.string().optional();
8
+ export const ConfigValidation = z.object({
11
9
  appUrl: z.string().url(),
12
10
  appEnv: z.string().optional(),
13
11
  tunnelUrl: z.string().optional(),
@@ -17,23 +15,21 @@ export var ConfigValidation = z.object({
17
15
  isProd: z.boolean(),
18
16
  taxRate: z.number(),
19
17
  serviceRate: z.number(),
20
- baseCurrency: z.enum([
21
- 'MYR'
22
- ]),
18
+ baseCurrency: z.enum(['MYR']),
23
19
  dbUrl: z.string(),
24
20
  cse: z.object({
25
21
  login: requiredStringIfProdValidation,
26
22
  password: requiredStringIfProdValidation,
27
- templateId: requiredStringIfProdValidation
23
+ templateId: requiredStringIfProdValidation,
28
24
  }),
29
25
  utilization: z.object({
30
- amountThreshold: z.number().min(0).default(5)
26
+ amountThreshold: z.number().min(0).default(5),
31
27
  }),
32
28
  algolia: z.object({
33
29
  appId: z.string(),
34
30
  adminKey: z.string(),
35
31
  searchKey: z.string(),
36
- knowledgeBaseIndex: z.string()
32
+ knowledgeBaseIndex: z.string(),
37
33
  }),
38
34
  upload: z.object({
39
35
  awsKey: z.string(),
@@ -43,7 +39,7 @@ export var ConfigValidation = z.object({
43
39
  siteBucket: z.string(),
44
40
  region: z.string(),
45
41
  secret: z.string().optional(),
46
- debug: z.boolean().optional()
42
+ debug: z.boolean().optional(),
47
43
  }),
48
44
  stripe: z.object({
49
45
  secretKey: z.string(),
@@ -53,21 +49,23 @@ export var ConfigValidation = z.object({
53
49
  // Both possess different keys
54
50
  webhook: z.object({
55
51
  connectAccountKey: z.string(),
56
- accountKey: z.string()
57
- })
52
+ accountKey: z.string(),
53
+ }),
58
54
  }),
59
- twilio: z.object({
55
+ twilio: z
56
+ .object({
60
57
  accountSid: z.string().optional(),
61
58
  authToken: z.string().optional(),
62
- phoneNumber: z.string().optional()
63
- }).optional(),
59
+ phoneNumber: z.string().optional(),
60
+ })
61
+ .optional(),
64
62
  vonage: z.object({
65
63
  apiKey: requiredStringIfProdValidation,
66
- apiSecret: requiredStringIfProdValidation
64
+ apiSecret: requiredStringIfProdValidation,
67
65
  }),
68
66
  esms: z.object({
69
67
  apiKey: requiredStringIfProdValidation,
70
- apiSecret: requiredStringIfProdValidation
68
+ apiSecret: requiredStringIfProdValidation,
71
69
  }),
72
70
  slack: z.object({
73
71
  token: requiredStringIfProdValidation,
@@ -84,7 +82,7 @@ export var ConfigValidation = z.object({
84
82
  comingServicesChannelId: requiredStringIfProdValidation,
85
83
  engineeringRequestsChannel: requiredStringIfProdValidation,
86
84
  esmsChannelId: requiredStringIfProdValidation,
87
- excessMileageChannelId: requiredStringIfProdValidation
85
+ excessMileageChannelId: requiredStringIfProdValidation,
88
86
  }),
89
87
  noStaticGenerating: z.boolean(),
90
88
  notion: z.object({
@@ -96,7 +94,7 @@ export var ConfigValidation = z.object({
96
94
  bdDatabaseId: requiredStringIfProdValidation,
97
95
  referralsDatabaseId: requiredStringIfProdValidation,
98
96
  brandsLandingPagesDatabaseId: z.string().min(1),
99
- knowledgeBaseDatabaseId: z.string().min(1)
97
+ knowledgeBaseDatabaseId: z.string().min(1),
100
98
  }),
101
99
  flux: z.object({
102
100
  defaultBillingAddress: z.object({
@@ -106,190 +104,207 @@ export var ConfigValidation = z.object({
106
104
  city: z.string(),
107
105
  state: z.string(),
108
106
  /**
109
- * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
110
- */ country: z.string(),
111
- postalCode: z.string()
112
- })
107
+ * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
108
+ */
109
+ country: z.string(),
110
+ postalCode: z.string(),
111
+ }),
113
112
  }),
114
113
  html2pdfKey: z.string(),
115
114
  cmsPreviewSecret: requiredStringIfProdValidation,
116
115
  search: z.object({
117
- noIdOptimization: z.boolean()
116
+ noIdOptimization: z.boolean(),
118
117
  }),
119
118
  auth: z.object({
120
119
  secureCookies: z.boolean(),
121
120
  authSecret: z.string(),
122
121
  jwtSecret: z.string(),
123
- google: z.object({
122
+ google: z
123
+ .object({
124
124
  clientId: z.string(),
125
- clientSecret: z.string()
126
- }).optional(),
127
- facebook: z.object({
125
+ clientSecret: z.string(),
126
+ })
127
+ .optional(),
128
+ facebook: z
129
+ .object({
128
130
  clientId: z.string(),
129
- clientSecret: z.string()
130
- }).optional(),
131
- apple: z.object({
131
+ clientSecret: z.string(),
132
+ })
133
+ .optional(),
134
+ apple: z
135
+ .object({
132
136
  clientId: z.string(),
133
- clientSecret: z.string()
134
- }).optional(),
135
- email: z.object({
137
+ clientSecret: z.string(),
138
+ })
139
+ .optional(),
140
+ email: z
141
+ .object({
136
142
  server: z.string(),
137
- from: z.string()
138
- }).optional()
143
+ from: z.string(),
144
+ })
145
+ .optional(),
139
146
  }),
140
147
  kv: z.object({
141
148
  url: z.string(),
142
149
  token: z.string(),
143
- apiUrl: z.string()
150
+ apiUrl: z.string(),
144
151
  }),
145
152
  sentryAuthToken: z.string().optional(),
146
153
  sendSMSOutsideOfProd: z.boolean().optional(),
147
- vercel: z.object({
148
- cronSecret: z.string().optional()
149
- }).optional()
154
+ vercel: z
155
+ .object({
156
+ cronSecret: z.string().optional(),
157
+ })
158
+ .optional(),
150
159
  });
151
- var getConfig = function() {
152
- return {
153
- appUrl: process.env.APP_URL,
154
- appEnv: process.env.APP_ENV,
155
- apiVersion: process.env.API_VERSION,
156
- tunnelUrl: process.env.TUNNEL_URL,
157
- prodAppUrl: process.env.PROD_APP_URL || process.env.APP_URL,
158
- apiUrl: process.env.API_URL || (process.env.APP_URL ? "".concat(process.env.APP_URL, "/api") : undefined),
159
- reservationFee: 49.0 / 1.1,
160
- isProd: isProd(),
161
- taxRate: 0.08,
162
- serviceRate: 0.1,
163
- // TODO
164
- // @ts-expect-error zod will valide away the wrong values
165
- baseCurrency: process.env.BASE_CURRENCY || 'MYR',
166
- dbUrl: process.env.DATABASE_URL,
167
- cse: {
168
- login: process.env.CSE_LOGIN,
169
- password: process.env.CSE_PASSWORD,
170
- templateId: process.env.CSE_TEMPLATE_ID
171
- },
172
- upload: {
173
- awsKey: process.env.AWS_KEY,
174
- awsSecret: process.env.AWS_SECRET,
175
- usersBucket: process.env.USER_UPLOADS_BUCKET,
176
- adminBucket: process.env.ADMIN_DOCS_BUCKET,
177
- siteBucket: process.env.SITE_BUCKET,
178
- region: process.env.STORAGE_REGION,
179
- secret: process.env.COMPANION_SECRET,
180
- debug: process.env.COMPANION_DEBUG === 'true'
181
- },
182
- stripe: {
183
- secretKey: process.env.STRIPE_SECRET_KEY,
184
- apiVersion: '2020-08-27',
185
- webhook: {
186
- connectAccountKey: process.env.STRIPE_CONNECT_WEBHOOK_ENDPOINT_SECRET,
187
- accountKey: process.env.STRIPE_WEBHOOK_ENDPOINT_SECRET
188
- }
160
+ const getConfig = () => ({
161
+ appUrl: process.env.APP_URL,
162
+ appEnv: process.env.APP_ENV,
163
+ apiVersion: process.env.API_VERSION,
164
+ tunnelUrl: process.env.TUNNEL_URL,
165
+ prodAppUrl: process.env.PROD_APP_URL || process.env.APP_URL,
166
+ apiUrl: process.env.API_URL ||
167
+ (process.env.APP_URL ? `${process.env.APP_URL}/api` : undefined),
168
+ reservationFee: 49.0 / 1.1,
169
+ isProd: isProd(),
170
+ taxRate: 0.08,
171
+ serviceRate: 0.1,
172
+ // TODO
173
+ // @ts-expect-error zod will valide away the wrong values
174
+ baseCurrency: process.env.BASE_CURRENCY || 'MYR',
175
+ dbUrl: process.env.DATABASE_URL,
176
+ cse: {
177
+ login: process.env.CSE_LOGIN,
178
+ password: process.env.CSE_PASSWORD,
179
+ templateId: process.env.CSE_TEMPLATE_ID,
180
+ },
181
+ upload: {
182
+ awsKey: process.env.AWS_KEY,
183
+ awsSecret: process.env.AWS_SECRET,
184
+ usersBucket: process.env.USER_UPLOADS_BUCKET,
185
+ adminBucket: process.env.ADMIN_DOCS_BUCKET,
186
+ siteBucket: process.env.SITE_BUCKET,
187
+ region: process.env.STORAGE_REGION,
188
+ secret: process.env.COMPANION_SECRET,
189
+ debug: process.env.COMPANION_DEBUG === 'true',
190
+ },
191
+ stripe: {
192
+ secretKey: process.env.STRIPE_SECRET_KEY,
193
+ apiVersion: '2020-08-27',
194
+ webhook: {
195
+ connectAccountKey: process.env.STRIPE_CONNECT_WEBHOOK_ENDPOINT_SECRET,
196
+ accountKey: process.env.STRIPE_WEBHOOK_ENDPOINT_SECRET,
189
197
  },
190
- twilio: {
191
- accountSid: process.env.TWILIO_ACCOUNT_SID,
192
- authToken: process.env.TWILIO_AUTH_TOKEN,
193
- phoneNumber: process.env.TWILIO_PHONE_NUMBER
194
- },
195
- vonage: {
196
- apiKey: process.env.VONAGE_API_KEY,
197
- apiSecret: process.env.VONAGE_API_SECRET
198
- },
199
- esms: {
200
- apiKey: process.env.ESMS_API_KEY,
201
- apiSecret: process.env.ESMS_API_SECRET
202
- },
203
- redisUrl: process.env.REDIS_URL,
204
- slack: {
205
- token: process.env.SLACK_TOKEN,
206
- signingSecret: process.env.SLACK_SIGNING_SECRET,
207
- defaultChannelId: process.env.SLACK_DEFAULT_CHANNEL,
208
- reservationsChannelId: process.env.SLACK_RESERVATIONS_CHANNEL,
209
- fbcChannel: process.env.SLACK_FBC_CHANNEL,
210
- bdChannel: process.env.SLACK_BD_CHANNEL,
211
- mainFluxChannel: process.env.SLACK_MAIN_FLUX_CHANNEL,
212
- invoiceFailuresChannelId: process.env.SLACK_INVOICE_FAILURES_CHANNEL,
213
- inquiriesChannelId: process.env.SLACK_INQUIRIES_CHANNEL,
214
- sstChannelId: process.env.SLACK_SALES_AND_SST_CHANNEL,
215
- issuesChannelId: process.env.SLACK_ISSUES_CHANNEL,
216
- comingServicesChannelId: process.env.SLACK_COMING_SERVICES_CHANNEL,
217
- engineeringRequestsChannel: process.env.SLACK_ENGINEERING_REQUESTS_CHANNEL,
218
- esmsChannelId: process.env.SLACK_ESMS_CHANNEL,
219
- excessMileageChannelId: process.env.SLACK_EXCESS_MILEAGE_CHANNEL
220
- },
221
- noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
222
- notion: {
223
- secret: process.env.NOTION_SECRET,
198
+ },
199
+ twilio: {
200
+ accountSid: process.env.TWILIO_ACCOUNT_SID,
201
+ authToken: process.env.TWILIO_AUTH_TOKEN,
202
+ phoneNumber: process.env.TWILIO_PHONE_NUMBER,
203
+ },
204
+ vonage: {
205
+ apiKey: process.env.VONAGE_API_KEY,
206
+ apiSecret: process.env.VONAGE_API_SECRET,
207
+ },
208
+ esms: {
209
+ apiKey: process.env.ESMS_API_KEY,
210
+ apiSecret: process.env.ESMS_API_SECRET,
211
+ },
212
+ redisUrl: process.env.REDIS_URL,
213
+ slack: {
214
+ token: process.env.SLACK_TOKEN,
215
+ signingSecret: process.env.SLACK_SIGNING_SECRET,
216
+ defaultChannelId: process.env.SLACK_DEFAULT_CHANNEL,
217
+ reservationsChannelId: process.env.SLACK_RESERVATIONS_CHANNEL,
218
+ fbcChannel: process.env.SLACK_FBC_CHANNEL,
219
+ bdChannel: process.env.SLACK_BD_CHANNEL,
220
+ mainFluxChannel: process.env.SLACK_MAIN_FLUX_CHANNEL,
221
+ invoiceFailuresChannelId: process.env.SLACK_INVOICE_FAILURES_CHANNEL,
222
+ inquiriesChannelId: process.env.SLACK_INQUIRIES_CHANNEL,
223
+ sstChannelId: process.env.SLACK_SALES_AND_SST_CHANNEL,
224
+ issuesChannelId: process.env.SLACK_ISSUES_CHANNEL,
225
+ comingServicesChannelId: process.env.SLACK_COMING_SERVICES_CHANNEL,
226
+ engineeringRequestsChannel: process.env.SLACK_ENGINEERING_REQUESTS_CHANNEL,
227
+ esmsChannelId: process.env.SLACK_ESMS_CHANNEL,
228
+ excessMileageChannelId: process.env.SLACK_EXCESS_MILEAGE_CHANNEL,
229
+ },
230
+ noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
231
+ notion: {
232
+ secret: process.env.NOTION_SECRET,
233
+ /**
234
+ * No need to use env variables for the following
235
+ */
236
+ requestDatabaseId: process.env.NOTION_REQUESTS_DATABASE_ID,
237
+ reviewsDatabaseId: process.env.NOTION_REVIEW_DATABASE_ID,
238
+ fbcDatabaseId: process.env.NOTION_FBC_DATABASE_ID,
239
+ fluxstersDatabaseId: process.env.NOTION_FLUXSTERS_DATABASE_ID,
240
+ bdDatabaseId: process.env.NOTION_BD_DATABASE_ID,
241
+ referralsDatabaseId: process.env.NOTION_REFERRALS_DATABASE_ID,
242
+ brandsLandingPagesDatabaseId: process.env.NOTION_BRANDS_LANDING_PAGES_DATABASE_ID,
243
+ knowledgeBaseDatabaseId: process.env.NOTION_KNOWLEDGE_BASE_DATABASE_ID,
244
+ },
245
+ algolia: {
246
+ appId: process.env.ALGOLIA_APP_ID,
247
+ adminKey: process.env.ALGOLIA_ADMIN_KEY,
248
+ searchKey: process.env.ALGOLIA_SEARCH_KEY,
249
+ knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX,
250
+ },
251
+ flux: {
252
+ defaultBillingAddress: {
253
+ name: 'Flux Sdn. Bhd.',
254
+ street1: '15-2 Jalan Solaris',
255
+ street2: 'Solaris Mont Kiara',
256
+ city: 'Kuala Lumpur',
257
+ state: 'Kuala Lumpur',
224
258
  /**
225
- * No need to use env variables for the following
226
- */ requestDatabaseId: process.env.NOTION_REQUESTS_DATABASE_ID,
227
- reviewsDatabaseId: process.env.NOTION_REVIEW_DATABASE_ID,
228
- fbcDatabaseId: process.env.NOTION_FBC_DATABASE_ID,
229
- fluxstersDatabaseId: process.env.NOTION_FLUXSTERS_DATABASE_ID,
230
- bdDatabaseId: process.env.NOTION_BD_DATABASE_ID,
231
- referralsDatabaseId: process.env.NOTION_REFERRALS_DATABASE_ID,
232
- brandsLandingPagesDatabaseId: process.env.NOTION_BRANDS_LANDING_PAGES_DATABASE_ID,
233
- knowledgeBaseDatabaseId: process.env.NOTION_KNOWLEDGE_BASE_DATABASE_ID
234
- },
235
- algolia: {
236
- appId: process.env.ALGOLIA_APP_ID,
237
- adminKey: process.env.ALGOLIA_ADMIN_KEY,
238
- searchKey: process.env.ALGOLIA_SEARCH_KEY,
239
- knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX
259
+ * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
260
+ */
261
+ country: 'MY',
262
+ postalCode: '50480',
240
263
  },
241
- flux: {
242
- defaultBillingAddress: {
243
- name: 'Flux Sdn. Bhd.',
244
- street1: '15-2 Jalan Solaris',
245
- street2: 'Solaris Mont Kiara',
246
- city: 'Kuala Lumpur',
247
- state: 'Kuala Lumpur',
248
- /**
249
- * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
250
- */ country: 'MY',
251
- postalCode: '50480'
252
- }
264
+ },
265
+ html2pdfKey: process.env.HTML_2_PDF_APP_KEY,
266
+ cmsPreviewSecret: process.env.CMS_PREVIEW_SECRET,
267
+ search: {
268
+ noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true',
269
+ },
270
+ auth: {
271
+ secureCookies: process.env.SECURE_COOKIES !== 'false',
272
+ authSecret: process.env.NEXTAUTH_SECRET,
273
+ jwtSecret: process.env.NEXTAUTH_SECRET,
274
+ google: {
275
+ clientId: process.env.GOOGLE_CLIENT_ID,
276
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET,
253
277
  },
254
- html2pdfKey: process.env.HTML_2_PDF_APP_KEY,
255
- cmsPreviewSecret: process.env.CMS_PREVIEW_SECRET,
256
- search: {
257
- noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true'
278
+ facebook: {
279
+ clientId: process.env.FACEBOOK_CLIENT_ID,
280
+ clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
258
281
  },
259
- auth: {
260
- secureCookies: process.env.SECURE_COOKIES !== 'false',
261
- authSecret: process.env.NEXTAUTH_SECRET,
262
- jwtSecret: process.env.NEXTAUTH_SECRET,
263
- google: {
264
- clientId: process.env.GOOGLE_CLIENT_ID,
265
- clientSecret: process.env.GOOGLE_CLIENT_SECRET
266
- },
267
- facebook: {
268
- clientId: process.env.FACEBOOK_CLIENT_ID,
269
- clientSecret: process.env.FACEBOOK_CLIENT_SECRET
270
- },
271
- apple: {
272
- clientId: process.env.APPLE_ID,
273
- clientSecret: process.env.APPLE_SECRET
274
- }
282
+ apple: {
283
+ clientId: process.env.APPLE_ID,
284
+ clientSecret: process.env.APPLE_SECRET,
275
285
  },
276
- sendSMSOutsideOfProd: process.env.SEND_SMS_OUTSIDE_OF_PROD === 'true',
277
- vercel: {
278
- cronSecret: process.env.CRON_SECRET
279
- },
280
- kv: {
281
- url: process.env.KV_URL,
282
- token: process.env.KV_REST_API_TOKEN,
283
- apiUrl: process.env.KV_REST_API_URL
284
- },
285
- sentryAuthToken: process.env.SENTRY_AUTH_TOKEN
286
- };
287
- };
288
- export var resetConfig = function() {
286
+ // email: {
287
+ // server: process.env.EMAIL_SERVER! || composeMailServer(),
288
+ // from: process.env.AUTH_EMAIL_FROM || process.env.FROM_MAIL!,
289
+ // }
290
+ },
291
+ sendSMSOutsideOfProd: process.env.SEND_SMS_OUTSIDE_OF_PROD === 'true',
292
+ vercel: {
293
+ cronSecret: process.env.CRON_SECRET,
294
+ },
295
+ kv: {
296
+ url: process.env.KV_URL,
297
+ token: process.env.KV_REST_API_TOKEN,
298
+ apiUrl: process.env.KV_REST_API_URL,
299
+ },
300
+ sentryAuthToken: process.env.SENTRY_AUTH_TOKEN,
301
+ });
302
+ export const resetConfig = () => {
289
303
  config = singleton('backendConfig', getConfig(), true);
290
304
  return config;
291
305
  };
292
- export var config = singleton('backendConfig', getConfig());
293
- export var setConfig = function(key, value) {
306
+ export let config = singleton('backendConfig', getConfig());
307
+ export const setConfig = (key, value) => {
294
308
  config[key] = value;
295
309
  };
310
+ //# sourceMappingURL=backend.js.map
package/dist/frontend.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { singleton } from '@driveflux/singleton';
2
2
  import { z } from 'zod';
3
- export var ConfigValidation = z.object({
3
+ export const ConfigValidation = z.object({
4
4
  appUrl: z.string().url(),
5
5
  apiUrl: z.string(),
6
6
  taxRate: z.number(),
@@ -9,7 +9,7 @@ export var 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
  gtmCodeOld: z.string().optional(),
@@ -18,7 +18,7 @@ export var ConfigValidation = z.object({
18
18
  graphCms: z.object({
19
19
  devAuthToken: z.string(),
20
20
  prodAuthToken: z.string(),
21
- projectApi: z.string()
21
+ projectApi: z.string(),
22
22
  }),
23
23
  isProd: z.boolean(),
24
24
  noStaticGenerating: z.boolean(),
@@ -28,46 +28,47 @@ export var ConfigValidation = z.object({
28
28
  vehicleIndexName: z.string(),
29
29
  appId: z.string(),
30
30
  searchKey: z.string(),
31
- knowledgeBaseIndex: z.string()
31
+ knowledgeBaseIndex: z.string(),
32
32
  }),
33
33
  kv: z.object({
34
34
  url: z.string(),
35
35
  token: z.string(),
36
- apiUrl: z.string()
36
+ apiUrl: z.string(),
37
37
  }),
38
38
  glitchTip: z.object({
39
- dsn: z.string().optional()
39
+ dsn: z.string().optional(),
40
40
  }),
41
41
  sentryAuthToken: z.string().optional(),
42
42
  postHog: z.object({
43
43
  apiKey: z.string(),
44
- apiHost: z.string().optional()
45
- })
44
+ apiHost: z.string().optional(),
45
+ }),
46
46
  });
47
47
  /**
48
48
  * Do not use this function, use the config object directly
49
- */ var getConfig = function() {
50
- var appUrl = process.env.APP_URL;
51
- var apiUrl = process.env.API_URL || "".concat(appUrl, "/api");
49
+ */
50
+ const getConfig = () => {
51
+ const appUrl = process.env.APP_URL;
52
+ const apiUrl = process.env.API_URL || `${appUrl}/api`;
52
53
  return {
53
- appUrl: appUrl,
54
- apiUrl: apiUrl,
54
+ appUrl,
55
+ apiUrl,
55
56
  taxRate: 0.08,
56
57
  serviceRate: 0.1,
57
58
  reservationFee: 49.0 / 1.1,
58
59
  currency: 'MYR',
59
60
  stripe: {
60
61
  publishableKey: process.env.STRIPE_PUBLISHABLE_KEY,
61
- connectClientId: process.env.STRIPE_CONNECT_CLIENT_ID || ''
62
+ connectClientId: process.env.STRIPE_CONNECT_CLIENT_ID || '',
62
63
  },
63
64
  gtmCode: process.env.GTM_CODE,
64
65
  gtmCodeOld: process.env.GTM_CODE_OLD,
65
66
  secureCookies: process.env.SECURE_COOKIES !== 'false',
66
67
  appEnv: process.env.APP_ENV,
67
68
  graphCms: {
68
- devAuthToken: "".concat(process.env.GRAPHCMS_AUTH_TOKEN),
69
- prodAuthToken: "".concat(process.env.GRAPHCMS_AUTH_TOKEN),
70
- projectApi: "".concat(process.env.GRAPHCMS_PROJECT_API)
69
+ devAuthToken: `${process.env.GRAPHCMS_AUTH_TOKEN}`,
70
+ prodAuthToken: `${process.env.GRAPHCMS_AUTH_TOKEN}`,
71
+ projectApi: `${process.env.GRAPHCMS_PROJECT_API}`,
71
72
  },
72
73
  isProd: process.env.APP_ENV === 'production',
73
74
  noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
@@ -77,28 +78,29 @@ export var ConfigValidation = z.object({
77
78
  vehicleIndexName: process.env.ALGOLIA_VEHICLE_INDEX_NAME || 'vehicles',
78
79
  appId: process.env.ALGOLIA_APP_ID,
79
80
  searchKey: process.env.ALGOLIA_SEARCH_KEY,
80
- knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX || 'knowledge_base'
81
+ knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX || 'knowledge_base',
81
82
  },
82
83
  kv: {
83
84
  url: process.env.KV_URL,
84
85
  token: process.env.KV_REST_API_TOKEN,
85
- apiUrl: process.env.KV_REST_API_URL
86
+ apiUrl: process.env.KV_REST_API_URL,
86
87
  },
87
88
  glitchTip: {
88
- dsn: process.env.GLITCHTIP_DSN
89
+ dsn: process.env.GLITCHTIP_DSN,
89
90
  },
90
91
  sentryAuthToken: process.env.SENTRY_AUTH_TOKEN,
91
92
  postHog: {
92
93
  apiKey: process.env.NEXT_PUBLIC_POSTHOG_KEY,
93
- apiHost: process.env.NEXT_PUBLIC_POSTHOG_HOST
94
- }
94
+ apiHost: process.env.NEXT_PUBLIC_POSTHOG_HOST,
95
+ },
95
96
  };
96
97
  };
97
- export var resetConfig = function() {
98
+ export const resetConfig = () => {
98
99
  config = singleton('frontendConfig', getConfig(), true);
99
100
  return config;
100
101
  };
101
- export var config = singleton('frontendConfig', getConfig());
102
- export var setConfig = function(key, value) {
102
+ export let config = singleton('frontendConfig', getConfig());
103
+ export const setConfig = (key, value) => {
103
104
  config[key] = value;
104
105
  };
106
+ //# sourceMappingURL=frontend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next.config.d.ts","sourceRoot":"","sources":["../src/next.config.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEI,CAAA"}
1
+ {"version":3,"file":"next.config.d.ts","sourceRoot":"","sources":["../src/next.config.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2EI,CAAA"}
@@ -1,93 +1,83 @@
1
- function _type_of(obj) {
2
- "@swc/helpers - typeof";
3
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
4
- }
5
1
  /**
6
2
  * Remove React properties from the bundle when explicitly set via DO_NOT_REMOVE_REACT_PROPERTIES
7
3
  * or when the app is in production mode.
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 = {
4
+ */
5
+ const reactRemoveProperties = typeof process.env.DO_NOT_REMOVE_REACT_PROPERTIES === 'string' &&
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 = {
10
10
  i18n: {
11
- locales: [
12
- 'en',
13
- 'ms'
14
- ],
15
- defaultLocale: 'en'
11
+ locales: ['en', 'ms'],
12
+ defaultLocale: 'en',
16
13
  },
17
14
  env: {},
18
15
  reactStrictMode: true,
19
16
  images: {
20
- deviceSizes: [
21
- 640,
22
- 750,
23
- 1200,
24
- 1920
25
- ],
26
- minimumCacheTTL: 31536000,
17
+ deviceSizes: [640, 750, 1200, 1920],
18
+ minimumCacheTTL: 31536000, // 1 year
27
19
  remotePatterns: [
28
20
  {
29
21
  protocol: 'https',
30
- hostname: 'driveflux.com'
22
+ hostname: 'driveflux.com',
31
23
  },
32
24
  {
33
25
  protocol: 'https',
34
- hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com'
26
+ hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com',
35
27
  },
36
28
  {
37
29
  protocol: 'https',
38
- hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com'
30
+ hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com',
39
31
  },
40
32
  {
41
33
  protocol: 'https',
42
- hostname: 's3.ap-southeast-1.amazonaws.com'
34
+ hostname: 's3.ap-southeast-1.amazonaws.com',
43
35
  },
44
36
  {
45
37
  protocol: 'https',
46
- hostname: 'vercel.app'
38
+ hostname: 'vercel.app',
47
39
  },
48
40
  {
49
41
  protocol: 'https',
50
- hostname: 'media.graphcms.com'
42
+ hostname: 'media.graphcms.com',
51
43
  },
52
44
  {
53
45
  protocol: 'https',
54
- hostname: 'media.graphassets.com'
46
+ hostname: 'media.graphassets.com',
55
47
  },
56
48
  {
57
49
  protocol: 'https',
58
- hostname: 'www.notion.so'
50
+ hostname: 'www.notion.so',
59
51
  },
60
52
  // This is for notion images
61
53
  {
62
54
  protocol: 'https',
63
- hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com'
55
+ hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com',
64
56
  },
65
57
  {
66
58
  protocol: 'https',
67
- hostname: 'ap-northeast-1.graphassets.com'
68
- }
69
- ]
59
+ hostname: 'ap-northeast-1.graphassets.com',
60
+ },
61
+ ],
70
62
  },
71
63
  experimental: {
72
64
  esmExternals: true,
73
- swcPlugins: [
74
- [
75
- '@lingui/swc-plugin',
76
- {}
77
- ]
78
- ]
65
+ swcPlugins: [['@lingui/swc-plugin', {}]],
79
66
  },
80
67
  transpilePackages: [],
81
68
  eslint: {
82
- ignoreDuringBuilds: process.env.NODE_ENV === 'production'
69
+ ignoreDuringBuilds: process.env.NODE_ENV === 'production',
83
70
  },
84
71
  compiler: {
85
- reactRemoveProperties: reactRemoveProperties,
86
- removeConsole: process.env.FORCE_LOGGING_IN_PROD ? false : process.env.APP_ENV === 'production' ? {
87
- exclude: [
88
- 'error'
89
- ]
90
- } : false
72
+ reactRemoveProperties,
73
+ removeConsole: process.env.FORCE_LOGGING_IN_PROD
74
+ ? false
75
+ : process.env.APP_ENV === 'production'
76
+ ? {
77
+ exclude: ['error'],
78
+ }
79
+ : false,
91
80
  },
92
- poweredByHeader: false
81
+ poweredByHeader: false,
93
82
  };
83
+ //# sourceMappingURL=next.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next.config.js","sourceRoot":"","sources":["../src/next.config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,qBAAqB,GAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,QAAQ;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B;IAChD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,WAAW,EAAE,KAAK,MAAM;IACrE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY,CAAA;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,IAAI,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACrB,aAAa,EAAE,IAAI;KACnB;IACD,GAAG,EAAE,EAAE;IACP,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE;QACP,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,eAAe,EAAE,QAAQ,EAAE,SAAS;QACpC,cAAc,EAAE;YACf;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,eAAe;aACzB;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,qDAAqD;aAC/D;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,iDAAiD;aAC3D;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,iCAAiC;aAC3C;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,YAAY;aACtB;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,oBAAoB;aAC9B;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,uBAAuB;aACjC;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,eAAe;aACzB;YACD,4BAA4B;YAC5B;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,8CAA8C;aACxD;SACD;KACD;IACD,YAAY,EAAE;QACb,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;KACxC;IACD,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;IACtC,MAAM,EAAE;QACP,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KACzD;IACD,QAAQ,EAAE;QACT,qBAAqB;QACrB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;YAC/C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY;gBACrC,CAAC,CAAC;oBACA,OAAO,EAAE,CAAC,OAAO,CAAC;iBAClB;gBACF,CAAC,CAAC,KAAK;KACT;IACD,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,KAAK;CACQ,CAAA"}
1
+ {"version":3,"file":"next.config.js","sourceRoot":"","sources":["../src/next.config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,qBAAqB,GAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,QAAQ;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B;IAChD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,WAAW,EAAE,KAAK,MAAM;IACrE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY,CAAA;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,IAAI,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QACrB,aAAa,EAAE,IAAI;KACnB;IACD,GAAG,EAAE,EAAE;IACP,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE;QACP,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,eAAe,EAAE,QAAQ,EAAE,SAAS;QACpC,cAAc,EAAE;YACf;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,eAAe;aACzB;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,qDAAqD;aAC/D;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,iDAAiD;aAC3D;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,iCAAiC;aAC3C;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,YAAY;aACtB;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,oBAAoB;aAC9B;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,uBAAuB;aACjC;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,eAAe;aACzB;YACD,4BAA4B;YAC5B;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,8CAA8C;aACxD;YACD;gBACC,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,gCAAgC;aAC1C;SACD;KACD;IACD,YAAY,EAAE;QACb,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;KACxC;IAED,iBAAiB,EAAE,EAAE;IACrB,MAAM,EAAE;QACP,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;KACzD;IAED,QAAQ,EAAE;QACT,qBAAqB;QACrB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;YAC/C,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY;gBACrC,CAAC,CAAC;oBACA,OAAO,EAAE,CAAC,OAAO,CAAC;iBAClB;gBACF,CAAC,CAAC,KAAK;KACT;IACD,eAAe,EAAE,KAAK;CACQ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/config",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./backend": {
@@ -20,12 +20,12 @@
20
20
  "dist"
21
21
  ],
22
22
  "dependencies": {
23
- "@driveflux/singleton": "2.0.1",
23
+ "@driveflux/singleton": "2.0.2",
24
24
  "zod": "^3.24.4"
25
25
  },
26
26
  "devDependencies": {
27
- "@driveflux/fab": "3.0.1",
28
- "@driveflux/tsconfig": "2.0.1",
27
+ "@driveflux/fab": "3.0.2",
28
+ "@driveflux/tsconfig": "2.0.2",
29
29
  "@swc/cli": "0.7.5",
30
30
  "@swc/core": "1.11.24",
31
31
  "@types/node": "^22.15.16",