@driveflux/config 2.1.0-next.3 → 2.1.0-next.4

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,10 +1,38 @@
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';
4
32
  import { notionIdsValidation } from './notion-ids';
5
33
  import { slackIdsValidation } from './slack-ids';
6
34
  import { getAppEnv, isProd, requiredStringIfProdValidation } from './utils';
7
- export const ConfigValidation = z.object({
35
+ export var ConfigValidation = z.object({
8
36
  appUrl: z.url(),
9
37
  appEnv: z.string().optional(),
10
38
  tunnelUrl: z.string().optional(),
@@ -14,21 +42,23 @@ export const ConfigValidation = z.object({
14
42
  isProd: z.boolean(),
15
43
  taxRate: z.number(),
16
44
  serviceRate: z.number(),
17
- baseCurrency: z.enum(['MYR']),
45
+ baseCurrency: z.enum([
46
+ 'MYR'
47
+ ]),
18
48
  dbUrl: z.string(),
19
49
  cse: z.object({
20
50
  login: requiredStringIfProdValidation,
21
51
  password: requiredStringIfProdValidation,
22
- templateId: requiredStringIfProdValidation,
52
+ templateId: requiredStringIfProdValidation
23
53
  }),
24
54
  utilization: z.object({
25
- amountThreshold: z.number().min(0).default(5),
55
+ amountThreshold: z.number().min(0).default(5)
26
56
  }),
27
57
  algolia: z.object({
28
58
  appId: z.string(),
29
59
  adminKey: z.string(),
30
60
  searchKey: z.string(),
31
- knowledgeBaseIndex: z.string(),
61
+ knowledgeBaseIndex: z.string()
32
62
  }),
33
63
  upload: z.object({
34
64
  awsKey: z.string(),
@@ -38,7 +68,7 @@ export const ConfigValidation = z.object({
38
68
  siteBucket: z.string(),
39
69
  region: z.string(),
40
70
  secret: z.string().optional(),
41
- debug: z.boolean().optional(),
71
+ debug: z.boolean().optional()
42
72
  }),
43
73
  stripe: z.object({
44
74
  secretKey: z.string(),
@@ -48,36 +78,30 @@ export const ConfigValidation = z.object({
48
78
  // Both possess different keys
49
79
  webhook: z.object({
50
80
  connectAccountKey: z.string(),
51
- accountKey: z.string(),
52
- }),
81
+ accountKey: z.string()
82
+ })
53
83
  }),
54
- twilio: z
55
- .object({
84
+ twilio: z.object({
56
85
  accountSid: z.string().optional(),
57
86
  authToken: z.string().optional(),
58
- phoneNumber: z.string().optional(),
59
- })
60
- .optional(),
87
+ phoneNumber: z.string().optional()
88
+ }).optional(),
61
89
  vonage: z.object({
62
90
  apiKey: requiredStringIfProdValidation,
63
- apiSecret: requiredStringIfProdValidation,
91
+ apiSecret: requiredStringIfProdValidation
64
92
  }),
65
93
  esms: z.object({
66
94
  apiKey: requiredStringIfProdValidation,
67
- apiSecret: requiredStringIfProdValidation,
95
+ apiSecret: requiredStringIfProdValidation
68
96
  }),
69
- slack: z
70
- .object({
97
+ slack: z.object({
71
98
  token: requiredStringIfProdValidation,
72
- signingSecret: requiredStringIfProdValidation,
73
- })
74
- .extend(slackIdsValidation.shape),
99
+ signingSecret: requiredStringIfProdValidation
100
+ }).extend(slackIdsValidation.shape),
75
101
  noStaticGenerating: z.boolean(),
76
- notion: z
77
- .object({
78
- secret: z.string().min(1),
79
- })
80
- .extend(notionIdsValidation.shape),
102
+ notion: z.object({
103
+ secret: z.string().min(1)
104
+ }).extend(notionIdsValidation.shape),
81
105
  flux: z.object({
82
106
  defaultBillingAddress: z.object({
83
107
  name: z.string(),
@@ -86,183 +110,165 @@ export const ConfigValidation = z.object({
86
110
  city: z.string(),
87
111
  state: z.string(),
88
112
  /**
89
- * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
90
- */
91
- country: z.string(),
92
- postalCode: z.string(),
93
- }),
113
+ * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
114
+ */ country: z.string(),
115
+ postalCode: z.string()
116
+ })
94
117
  }),
95
118
  html2pdfKey: z.string(),
96
119
  cmsPreviewSecret: requiredStringIfProdValidation,
97
120
  search: z.object({
98
- noIdOptimization: z.boolean(),
121
+ noIdOptimization: z.boolean()
99
122
  }),
100
123
  auth: z.object({
101
124
  secureCookies: z.boolean(),
102
125
  authSecret: z.string(),
103
126
  jwtSecret: z.string(),
104
- google: z
105
- .object({
127
+ google: z.object({
106
128
  clientId: z.string(),
107
- clientSecret: z.string(),
108
- })
109
- .optional(),
110
- facebook: z
111
- .object({
129
+ clientSecret: z.string()
130
+ }).optional(),
131
+ facebook: z.object({
112
132
  clientId: z.string(),
113
- clientSecret: z.string(),
114
- })
115
- .optional(),
116
- apple: z
117
- .object({
133
+ clientSecret: z.string()
134
+ }).optional(),
135
+ apple: z.object({
118
136
  clientId: z.string(),
119
- clientSecret: z.string(),
120
- })
121
- .optional(),
122
- email: z
123
- .object({
137
+ clientSecret: z.string()
138
+ }).optional(),
139
+ email: z.object({
124
140
  server: z.string(),
125
- from: z.string(),
126
- })
127
- .optional(),
141
+ from: z.string()
142
+ }).optional()
128
143
  }),
129
144
  kv: z.object({
130
145
  url: z.string(),
131
146
  token: z.string(),
132
- apiUrl: z.string(),
147
+ apiUrl: z.string()
133
148
  }),
134
149
  sendSMSOutsideOfProd: z.boolean().optional(),
135
- vercel: z
136
- .object({
137
- cronSecret: z.string().optional(),
138
- })
139
- .optional(),
150
+ vercel: z.object({
151
+ cronSecret: z.string().optional()
152
+ }).optional()
140
153
  });
141
- const getConfig = () => ({
142
- appUrl: process.env.APP_URL,
143
- appEnv: getAppEnv(),
144
- apiVersion: process.env.API_VERSION,
145
- tunnelUrl: process.env.TUNNEL_URL,
146
- prodAppUrl: process.env.PROD_APP_URL || process.env.APP_URL,
147
- apiUrl: process.env.API_URL ||
148
- (process.env.APP_URL ? `${process.env.APP_URL}/api` : undefined),
149
- reservationFee: 49,
150
- isProd: isProd(),
151
- taxRate: 0.08,
152
- serviceRate: 0.1,
153
- // TODO
154
- // @ts-expect-error zod will valide away the wrong values
155
- baseCurrency: process.env.BASE_CURRENCY || 'MYR',
156
- dbUrl: process.env.DATABASE_URL,
157
- cse: {
158
- login: process.env.CSE_LOGIN,
159
- password: process.env.CSE_PASSWORD,
160
- templateId: process.env.CSE_TEMPLATE_ID,
161
- },
162
- upload: {
163
- awsKey: process.env.AWS_KEY,
164
- awsSecret: process.env.AWS_SECRET,
165
- usersBucket: process.env.USER_UPLOADS_BUCKET,
166
- adminBucket: process.env.ADMIN_DOCS_BUCKET,
167
- siteBucket: process.env.SITE_BUCKET,
168
- region: process.env.STORAGE_REGION,
169
- secret: process.env.COMPANION_SECRET,
170
- debug: process.env.COMPANION_DEBUG === 'true',
171
- },
172
- stripe: {
173
- secretKey: process.env.STRIPE_SECRET_KEY,
174
- apiVersion: '2020-08-27',
175
- webhook: {
176
- connectAccountKey: process.env.STRIPE_CONNECT_WEBHOOK_ENDPOINT_SECRET,
177
- accountKey: process.env.STRIPE_WEBHOOK_SECRET,
154
+ var getConfig = function() {
155
+ return {
156
+ appUrl: process.env.APP_URL,
157
+ appEnv: getAppEnv(),
158
+ apiVersion: process.env.API_VERSION,
159
+ tunnelUrl: process.env.TUNNEL_URL,
160
+ prodAppUrl: process.env.PROD_APP_URL || process.env.APP_URL,
161
+ apiUrl: process.env.API_URL || (process.env.APP_URL ? "".concat(process.env.APP_URL, "/api") : undefined),
162
+ reservationFee: 49,
163
+ isProd: isProd(),
164
+ taxRate: 0.08,
165
+ serviceRate: 0.1,
166
+ // TODO
167
+ // @ts-expect-error zod will valide away the wrong values
168
+ baseCurrency: process.env.BASE_CURRENCY || 'MYR',
169
+ dbUrl: process.env.DATABASE_URL,
170
+ cse: {
171
+ login: process.env.CSE_LOGIN,
172
+ password: process.env.CSE_PASSWORD,
173
+ templateId: process.env.CSE_TEMPLATE_ID
178
174
  },
179
- },
180
- twilio: {
181
- accountSid: process.env.TWILIO_ACCOUNT_SID,
182
- authToken: process.env.TWILIO_AUTH_TOKEN,
183
- phoneNumber: process.env.TWILIO_PHONE_NUMBER,
184
- },
185
- vonage: {
186
- apiKey: process.env.VONAGE_API_KEY,
187
- apiSecret: process.env.VONAGE_API_SECRET,
188
- },
189
- esms: {
190
- apiKey: process.env.ESMS_API_KEY,
191
- apiSecret: process.env.ESMS_API_SECRET,
192
- },
193
- redisUrl: process.env.REDIS_URL,
194
- slack: {
195
- token: process.env.SLACK_TOKEN,
196
- signingSecret: process.env.SLACK_SIGNING_SECRET,
197
- ...getSlackIds(getAppEnv()),
198
- },
199
- noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
200
- notion: {
201
- secret: process.env.NOTION_SECRET,
202
- ...getNotionIds(getAppEnv()),
203
- },
204
- algolia: {
205
- appId: process.env.ALGOLIA_APP_ID,
206
- adminKey: process.env.ALGOLIA_ADMIN_KEY,
207
- searchKey: process.env.ALGOLIA_SEARCH_KEY,
208
- knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX,
209
- },
210
- flux: {
211
- defaultBillingAddress: {
212
- name: 'Flux Sdn. Bhd.',
213
- street1: '15-2 Jalan Solaris',
214
- street2: 'Solaris Mont Kiara',
215
- city: 'Kuala Lumpur',
216
- state: 'Kuala Lumpur',
217
- /**
218
- * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
219
- */
220
- country: 'MY',
221
- postalCode: '50480',
175
+ upload: {
176
+ awsKey: process.env.AWS_KEY,
177
+ awsSecret: process.env.AWS_SECRET,
178
+ usersBucket: process.env.USER_UPLOADS_BUCKET,
179
+ adminBucket: process.env.ADMIN_DOCS_BUCKET,
180
+ siteBucket: process.env.SITE_BUCKET,
181
+ region: process.env.STORAGE_REGION,
182
+ secret: process.env.COMPANION_SECRET,
183
+ debug: process.env.COMPANION_DEBUG === 'true'
222
184
  },
223
- },
224
- html2pdfKey: process.env.HTML_2_PDF_APP_KEY,
225
- cmsPreviewSecret: process.env.CMS_PREVIEW_SECRET,
226
- search: {
227
- noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true',
228
- },
229
- auth: {
230
- secureCookies: process.env.SECURE_COOKIES !== 'false',
231
- authSecret: process.env.NEXTAUTH_SECRET,
232
- jwtSecret: process.env.NEXTAUTH_SECRET,
233
- google: {
234
- clientId: process.env.GOOGLE_CLIENT_ID,
235
- clientSecret: process.env.GOOGLE_CLIENT_SECRET,
185
+ stripe: {
186
+ secretKey: process.env.STRIPE_SECRET_KEY,
187
+ apiVersion: '2020-08-27',
188
+ webhook: {
189
+ connectAccountKey: process.env.STRIPE_CONNECT_WEBHOOK_ENDPOINT_SECRET,
190
+ accountKey: process.env.STRIPE_WEBHOOK_SECRET
191
+ }
236
192
  },
237
- facebook: {
238
- clientId: process.env.FACEBOOK_CLIENT_ID,
239
- clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
193
+ twilio: {
194
+ accountSid: process.env.TWILIO_ACCOUNT_SID,
195
+ authToken: process.env.TWILIO_AUTH_TOKEN,
196
+ phoneNumber: process.env.TWILIO_PHONE_NUMBER
240
197
  },
241
- apple: {
242
- clientId: process.env.APPLE_ID,
243
- clientSecret: process.env.APPLE_SECRET,
198
+ vonage: {
199
+ apiKey: process.env.VONAGE_API_KEY,
200
+ apiSecret: process.env.VONAGE_API_SECRET
244
201
  },
245
- // email: {
246
- // server: process.env.EMAIL_SERVER! || composeMailServer(),
247
- // from: process.env.AUTH_EMAIL_FROM || process.env.FROM_MAIL!,
248
- // }
249
- },
250
- sendSMSOutsideOfProd: process.env.SEND_SMS_OUTSIDE_OF_PROD === 'true',
251
- vercel: {
252
- cronSecret: process.env.CRON_SECRET,
253
- },
254
- kv: {
255
- url: process.env.KV_URL,
256
- token: process.env.KV_REST_API_TOKEN,
257
- apiUrl: process.env.KV_REST_API_URL,
258
- },
259
- });
260
- export const resetConfig = () => {
202
+ esms: {
203
+ apiKey: process.env.ESMS_API_KEY,
204
+ apiSecret: process.env.ESMS_API_SECRET
205
+ },
206
+ redisUrl: process.env.REDIS_URL,
207
+ slack: _object_spread({
208
+ token: process.env.SLACK_TOKEN,
209
+ signingSecret: process.env.SLACK_SIGNING_SECRET
210
+ }, getSlackIds(getAppEnv())),
211
+ noStaticGenerating: process.env.NO_STATIC_GENERATING === 'true',
212
+ notion: _object_spread({
213
+ secret: process.env.NOTION_SECRET
214
+ }, getNotionIds(getAppEnv())),
215
+ algolia: {
216
+ appId: process.env.ALGOLIA_APP_ID,
217
+ adminKey: process.env.ALGOLIA_ADMIN_KEY,
218
+ searchKey: process.env.ALGOLIA_SEARCH_KEY,
219
+ knowledgeBaseIndex: process.env.ALGOLIA_KNOWLEDGE_BASE_INDEX
220
+ },
221
+ flux: {
222
+ defaultBillingAddress: {
223
+ name: 'Flux Sdn. Bhd.',
224
+ street1: '15-2 Jalan Solaris',
225
+ street2: 'Solaris Mont Kiara',
226
+ city: 'Kuala Lumpur',
227
+ state: 'Kuala Lumpur',
228
+ /**
229
+ * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
230
+ */ country: 'MY',
231
+ postalCode: '50480'
232
+ }
233
+ },
234
+ html2pdfKey: process.env.HTML_2_PDF_APP_KEY,
235
+ cmsPreviewSecret: process.env.CMS_PREVIEW_SECRET,
236
+ search: {
237
+ noIdOptimization: process.env.NO_ID_OPTIMIZATION_IN_SEARCH === 'true'
238
+ },
239
+ auth: {
240
+ secureCookies: process.env.SECURE_COOKIES !== 'false',
241
+ authSecret: process.env.NEXTAUTH_SECRET,
242
+ jwtSecret: process.env.NEXTAUTH_SECRET,
243
+ google: {
244
+ clientId: process.env.GOOGLE_CLIENT_ID,
245
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET
246
+ },
247
+ facebook: {
248
+ clientId: process.env.FACEBOOK_CLIENT_ID,
249
+ clientSecret: process.env.FACEBOOK_CLIENT_SECRET
250
+ },
251
+ apple: {
252
+ clientId: process.env.APPLE_ID,
253
+ clientSecret: process.env.APPLE_SECRET
254
+ }
255
+ },
256
+ sendSMSOutsideOfProd: process.env.SEND_SMS_OUTSIDE_OF_PROD === 'true',
257
+ vercel: {
258
+ cronSecret: process.env.CRON_SECRET
259
+ },
260
+ kv: {
261
+ url: process.env.KV_URL,
262
+ token: process.env.KV_REST_API_TOKEN,
263
+ apiUrl: process.env.KV_REST_API_URL
264
+ }
265
+ };
266
+ };
267
+ export var resetConfig = function() {
261
268
  config = singleton('backendConfig', getConfig(), true);
262
269
  return config;
263
270
  };
264
- export let config = singleton('backendConfig', getConfig());
265
- export const setConfig = (key, value) => {
271
+ export var config = singleton('backendConfig', getConfig());
272
+ export var setConfig = function(key, value) {
266
273
  config[key] = value;
267
274
  };
268
- //# sourceMappingURL=backend.js.map
package/dist/constants.js CHANGED
@@ -1,4 +1,56 @@
1
- const slackProductionChannels = {
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
  defaultChannelId: 'C0679V8KGSH',
3
55
  reservationsChannelId: 'C01G8B12G67',
4
56
  fbcChannel: 'C01L1AAKB3N',
@@ -12,59 +64,86 @@ const slackProductionChannels = {
12
64
  comingServicesChannelId: 'C06SB20H2J1',
13
65
  esmsChannelId: 'C07RPEP2BMY',
14
66
  excessMileageChannelId: 'C0679URBY93',
15
- engineeringRequestsChannel: 'C01U8GTK3K9',
67
+ engineeringRequestsChannel: 'C01U8GTK3K9'
16
68
  };
17
- const SLACK_IDS_MAP = {
69
+ var SLACK_IDS_MAP = {
18
70
  production: slackProductionChannels,
19
- staging: Object.keys(slackProductionChannels).reduce((acc, key) => {
71
+ staging: Object.keys(slackProductionChannels).reduce(function(acc, key) {
20
72
  acc[key] = 'C0661UNMBQU'; // #platform-staging-notifications
21
73
  return acc;
22
74
  }, {}),
23
- development: Object.keys(slackProductionChannels).reduce((acc, key) => {
24
- acc[key] =
25
- process.env.SLACK_MY_CHANNEL_ID || 'C09GJ4FJVRS'; // #platform-dev-notifications
75
+ development: Object.keys(slackProductionChannels).reduce(function(acc, key) {
76
+ acc[key] = process.env.SLACK_MY_CHANNEL_ID || 'C09GJ4FJVRS'; // #platform-dev-notifications
26
77
  return acc;
27
- }, {}),
78
+ }, {})
28
79
  };
29
- export const getSlackIds = (appEnv) => {
30
- const envIds = appEnv && appEnv in SLACK_IDS_MAP
31
- ? SLACK_IDS_MAP[appEnv]
32
- : SLACK_IDS_MAP.staging;
33
- // Override the values from ENV if available
34
- for (const key of Object.keys(envIds)) {
35
- if (process.env[key]) {
36
- envIds[key] = process.env[key];
80
+ export var getSlackIds = function(appEnv) {
81
+ var envIds = appEnv && appEnv in SLACK_IDS_MAP ? SLACK_IDS_MAP[appEnv] : SLACK_IDS_MAP.staging;
82
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
83
+ try {
84
+ // Override the values from ENV if available
85
+ for(var _iterator = Object.keys(envIds)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
86
+ var key = _step.value;
87
+ if (process.env[key]) {
88
+ envIds[key] = process.env[key];
89
+ }
90
+ }
91
+ } catch (err) {
92
+ _didIteratorError = true;
93
+ _iteratorError = err;
94
+ } finally{
95
+ try {
96
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
97
+ _iterator.return();
98
+ }
99
+ } finally{
100
+ if (_didIteratorError) {
101
+ throw _iteratorError;
102
+ }
37
103
  }
38
104
  }
39
105
  return envIds;
40
106
  };
41
- const notionProductionChannels = {
107
+ var notionProductionChannels = {
42
108
  requestDatabaseId: '32332c0e-4277-43fa-b10e-7d458234f9ea',
43
- reviewsDatabaseId: '8a8b0df9-567d-433f-8937-583db2766176', // Seems to be unused
44
- fbcDatabaseId: '76960d4b-2b43-4019-a77e-ac46a0b3d752', // Seems to be unused
109
+ reviewsDatabaseId: '8a8b0df9-567d-433f-8937-583db2766176',
110
+ fbcDatabaseId: '76960d4b-2b43-4019-a77e-ac46a0b3d752',
45
111
  fluxstersDatabaseId: '4ea6953a-61c2-4673-8950-c0d0e158de0a',
46
112
  bdDatabaseId: '172a9182-56c0-4358-b4f1-7e8fcfa44e46',
47
113
  brandsLandingPagesDatabaseId: 'e321d71a-0d29-42da-ab0b-dca2260b643e',
48
114
  knowledgeBaseDatabaseId: '7a81653f-4351-4a17-aa1e-c3082c378441',
49
- referralsDatabaseId: 'b5599d70-b414-4aa9-9ff2-d445c8f3f0fc',
115
+ referralsDatabaseId: 'b5599d70-b414-4aa9-9ff2-d445c8f3f0fc'
50
116
  };
51
- const NOTION_IDS_MAP = {
117
+ var NOTION_IDS_MAP = {
52
118
  production: notionProductionChannels,
53
- staging: {
54
- ...notionProductionChannels,
55
- knowledgeBaseDatabaseId: 'f95b9986-c1c9-46ca-a742-d49f3f80d7dd',
56
- },
119
+ staging: _object_spread_props(_object_spread({}, notionProductionChannels), {
120
+ knowledgeBaseDatabaseId: 'f95b9986-c1c9-46ca-a742-d49f3f80d7dd'
121
+ })
57
122
  };
58
- export const getNotionIds = (appEnv) => {
59
- const envIds = appEnv && appEnv in NOTION_IDS_MAP
60
- ? NOTION_IDS_MAP[appEnv]
61
- : NOTION_IDS_MAP.staging;
62
- // Override the values from ENV if available
63
- for (const key of Object.keys(envIds)) {
64
- if (process.env[key]) {
65
- envIds[key] = process.env[key];
123
+ export var getNotionIds = function(appEnv) {
124
+ var envIds = appEnv && appEnv in NOTION_IDS_MAP ? NOTION_IDS_MAP[appEnv] : NOTION_IDS_MAP.staging;
125
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
126
+ try {
127
+ // Override the values from ENV if available
128
+ for(var _iterator = Object.keys(envIds)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
129
+ var key = _step.value;
130
+ if (process.env[key]) {
131
+ envIds[key] = process.env[key];
132
+ }
133
+ }
134
+ } catch (err) {
135
+ _didIteratorError = true;
136
+ _iteratorError = err;
137
+ } finally{
138
+ try {
139
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
140
+ _iterator.return();
141
+ }
142
+ } finally{
143
+ if (_didIteratorError) {
144
+ throw _iteratorError;
145
+ }
66
146
  }
67
147
  }
68
148
  return envIds;
69
149
  };
70
- //# sourceMappingURL=constants.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 const ConfigValidation = z.object({
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
- const getConfig = () => {
44
- const appUrl = process.env.APP_URL;
45
- const apiUrl = process.env.API_URL || `${appUrl}/api`;
42
+ */ var getConfig = function() {
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.08,
50
49
  serviceRate: 0.1,
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: `${process.env.GRAPHCMS_AUTH_TOKEN}`,
62
- prodAuthToken: `${process.env.GRAPHCMS_AUTH_TOKEN}`,
63
- projectApi: `${process.env.GRAPHCMS_PROJECT_API}`,
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 const resetConfig = () => {
83
+ export var resetConfig = function() {
85
84
  config = singleton('frontendConfig', getConfig(), true);
86
85
  return config;
87
86
  };
88
- export let config = singleton('frontendConfig', getConfig());
89
- export const setConfig = (key, value) => {
87
+ export var config = singleton('frontendConfig', getConfig());
88
+ export var setConfig = function(key, value) {
90
89
  config[key] = value;
91
90
  };
92
- //# sourceMappingURL=frontend.js.map
@@ -1,91 +1,101 @@
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
- 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 = {
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: ['en', 'ms'],
12
- defaultLocale: 'en',
11
+ locales: [
12
+ 'en',
13
+ 'ms'
14
+ ],
15
+ defaultLocale: 'en'
13
16
  },
14
17
  env: {
15
- BASE_CURRENCY: 'MYR',
18
+ BASE_CURRENCY: 'MYR'
16
19
  },
17
20
  reactStrictMode: true,
18
21
  images: {
19
- deviceSizes: [640, 750, 1200, 1920],
20
- minimumCacheTTL: 31536000, // 1 year
22
+ deviceSizes: [
23
+ 640,
24
+ 750,
25
+ 1200,
26
+ 1920
27
+ ],
28
+ minimumCacheTTL: 31536000,
21
29
  remotePatterns: [
22
30
  {
23
31
  protocol: 'https',
24
- hostname: 'driveflux.com',
32
+ hostname: 'driveflux.com'
25
33
  },
26
34
  {
27
35
  protocol: 'https',
28
- hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com',
36
+ hostname: 'dev-flux-site-files.s3.ap-southeast-1.amazonaws.com'
29
37
  },
30
38
  {
31
39
  protocol: 'https',
32
- hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com',
40
+ hostname: 'flux-site-files.s3.ap-southeast-1.amazonaws.com'
33
41
  },
34
42
  {
35
43
  protocol: 'https',
36
- hostname: 's3.ap-southeast-1.amazonaws.com',
44
+ hostname: 's3.ap-southeast-1.amazonaws.com'
37
45
  },
38
46
  {
39
47
  protocol: 'https',
40
- hostname: 'flux-admin.s3.ap-southeast-1.amazonaws.com',
48
+ hostname: 'flux-admin.s3.ap-southeast-1.amazonaws.com'
41
49
  },
42
50
  {
43
51
  protocol: 'https',
44
- hostname: 'vercel.app',
52
+ hostname: 'vercel.app'
45
53
  },
46
54
  {
47
55
  protocol: 'https',
48
- hostname: 'media.graphcms.com',
56
+ hostname: 'media.graphcms.com'
49
57
  },
50
58
  {
51
59
  protocol: 'https',
52
- hostname: 'media.graphassets.com',
60
+ hostname: 'media.graphassets.com'
53
61
  },
54
62
  {
55
63
  protocol: 'https',
56
- hostname: 'www.notion.so',
64
+ hostname: 'www.notion.so'
57
65
  },
58
66
  // This is for notion images
59
67
  {
60
68
  protocol: 'https',
61
- hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com',
69
+ hostname: 'prod-files-secure.s3.us-west-2.amazonaws.com'
62
70
  },
63
71
  {
64
72
  protocol: 'https',
65
- hostname: 'ap-northeast-1.graphassets.com',
66
- },
67
- ],
73
+ hostname: 'ap-northeast-1.graphassets.com'
74
+ }
75
+ ]
68
76
  },
69
77
  experimental: {
70
78
  esmExternals: true,
71
- swcPlugins: [['@lingui/swc-plugin', {}]],
79
+ swcPlugins: [
80
+ [
81
+ '@lingui/swc-plugin',
82
+ {}
83
+ ]
84
+ ]
72
85
  },
73
86
  eslint: {
74
- ignoreDuringBuilds: process.env.NODE_ENV === 'production',
87
+ ignoreDuringBuilds: process.env.NODE_ENV === 'production'
75
88
  },
76
89
  compiler: {
77
- reactRemoveProperties,
78
- removeConsole: process.env.FORCE_LOGGING_IN_PROD
79
- ? false
80
- : process.env.APP_ENV === 'production'
81
- ? {
82
- exclude: ['error'],
83
- }
84
- : false,
90
+ reactRemoveProperties: reactRemoveProperties,
91
+ removeConsole: process.env.FORCE_LOGGING_IN_PROD ? false : process.env.APP_ENV === 'production' ? {
92
+ exclude: [
93
+ 'error'
94
+ ]
95
+ } : false
85
96
  },
86
97
  typescript: {
87
- ignoreBuildErrors: process.env.IGNORE_NEXT_BUILD_ERRORS === 'true',
98
+ ignoreBuildErrors: process.env.IGNORE_NEXT_BUILD_ERRORS === 'true'
88
99
  },
89
- poweredByHeader: false,
100
+ poweredByHeader: false
90
101
  };
91
- //# sourceMappingURL=next.config.js.map
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
- export const notionIdsValidation = z.object({
2
+ export var notionIdsValidation = z.object({
3
3
  requestDatabaseId: z.string().min(1),
4
4
  reviewsDatabaseId: z.string().min(1),
5
5
  fbcDatabaseId: z.string().min(1),
@@ -7,6 +7,5 @@ export const notionIdsValidation = z.object({
7
7
  bdDatabaseId: z.string().min(1),
8
8
  referralsDatabaseId: z.string().min(1),
9
9
  brandsLandingPagesDatabaseId: z.string().min(1),
10
- knowledgeBaseDatabaseId: z.string().min(1),
10
+ knowledgeBaseDatabaseId: z.string().min(1)
11
11
  });
12
- //# sourceMappingURL=notion-ids.js.map
package/dist/slack-ids.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import z from 'zod';
2
- export const slackIdsValidation = z.object({
2
+ export var slackIdsValidation = z.object({
3
3
  defaultChannelId: z.string().min(1),
4
4
  reservationsChannelId: z.string().min(1),
5
5
  fbcChannel: z.string().min(1),
@@ -13,6 +13,5 @@ export const slackIdsValidation = z.object({
13
13
  comingServicesChannelId: z.string().min(1),
14
14
  engineeringRequestsChannel: z.string().min(1),
15
15
  esmsChannelId: z.string().min(1),
16
- excessMileageChannelId: z.string().min(1),
16
+ excessMileageChannelId: z.string().min(1)
17
17
  });
18
- //# sourceMappingURL=slack-ids.js.map
package/dist/utils.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import z from 'zod';
2
- const isAppEnv = (env) => getAppEnv() === env;
3
- export const isProd = () => isAppEnv('production');
4
- export const requiredStringIfProdValidation = isProd()
5
- ? z.string().min(1)
6
- : z.string().optional();
7
- export const getAppEnv = () => {
2
+ var isAppEnv = function(env) {
3
+ return getAppEnv() === env;
4
+ };
5
+ export var isProd = function() {
6
+ return isAppEnv('production');
7
+ };
8
+ export var requiredStringIfProdValidation = isProd() ? z.string().min(1) : z.string().optional();
9
+ export var getAppEnv = function() {
8
10
  if (process.env.APP_ENV) {
9
11
  return process.env.APP_ENV;
10
12
  }
@@ -19,4 +21,3 @@ export const getAppEnv = () => {
19
21
  // Default to development as a last resort
20
22
  return 'development';
21
23
  };
22
- //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/config",
3
- "version": "2.1.0-next.3",
3
+ "version": "2.1.0-next.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./backend": {
@@ -33,9 +33,9 @@
33
33
  "@swc/cli": "^0.7.8",
34
34
  "@swc/core": "^1.13.5",
35
35
  "@types/node": "^24.9.1",
36
- "@types/react": "^19.2.2",
36
+ "@types/react": "19.2.2",
37
37
  "del-cli": "^7.0.0",
38
- "next": "15.5.4",
38
+ "next": "16.0.0",
39
39
  "typescript": "^5.9.3"
40
40
  },
41
41
  "scripts": {