@opengovsg/mockpass 4.0.9 → 4.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -208,6 +208,13 @@ function config(app, { showLoginPage, serviceProvider }) {
208
208
  'myinfo.residential',
209
209
  'myinfo.housingtype',
210
210
  'myinfo.hdbtype',
211
+ 'myinfo.birth_country',
212
+ 'myinfo.vehicles',
213
+ 'myinfo.name_of_employer',
214
+ 'myinfo.workpass_status',
215
+ 'myinfo.workpass_expiry_date',
216
+ 'myinfo.marital_status',
217
+ 'myinfo.mobile_number_with_country_code',
211
218
  ],
212
219
  id_token_signing_alg_values_supported: ['RS256'],
213
220
  subject_types_supported: ['pairwise'],
@@ -232,28 +239,79 @@ const concatMyInfoRegAddr = (regadd) => {
232
239
  return `${line1}\n${line2}\n${line3}`
233
240
  }
234
241
 
242
+ // Refer to sgid myinfo parser
243
+ const formatMobileNumberWithPrefix = (phone) => {
244
+ if (!phone || !phone.nbr?.value) {
245
+ return 'NA'
246
+ }
247
+ return phone.prefix?.value && phone.areacode?.value
248
+ ? `${phone.prefix?.value}${phone.areacode?.value} ${phone.nbr?.value}`
249
+ : phone.nbr?.value
250
+ }
251
+
252
+ // Refer to sgid myinfo parser
253
+ const formatVehicles = (vehicles) => {
254
+ const vehicleObjects =
255
+ vehicles?.map((vehicle) => ({
256
+ vehicle_number: vehicle.vehicleno?.value || 'NA',
257
+ })) || '[]'
258
+ return vehicleObjects
259
+ }
260
+
261
+ const defaultUndefinedToNA = (value) => {
262
+ return value || 'NA'
263
+ }
264
+
235
265
  // Refer to https://docs.id.gov.sg/data-catalog
236
266
  const sgIDScopeToMyInfoField = (persona, scope) => {
237
267
  switch (scope) {
238
268
  // No NRIC as that is always returned by default
239
269
  case 'openid':
240
- return persona.uuid.value
270
+ return defaultUndefinedToNA(persona.uuid?.value)
241
271
  case 'myinfo.name':
242
- return persona.name.value
272
+ return defaultUndefinedToNA(persona.name?.value)
243
273
  case 'myinfo.email':
244
- return persona.email.value
274
+ return defaultUndefinedToNA(persona.email?.value)
275
+ case 'myinfo.sex':
276
+ return defaultUndefinedToNA(persona.sex?.desc)
277
+ case 'myinfo.race':
278
+ return defaultUndefinedToNA(persona.race?.desc)
245
279
  case 'myinfo.mobile_number':
246
- return persona.mobileno.nbr.value
280
+ return defaultUndefinedToNA(persona.mobileno?.nbr?.value)
247
281
  case 'myinfo.registered_address':
248
282
  return concatMyInfoRegAddr(persona.regadd)
249
283
  case 'myinfo.date_of_birth':
250
- return persona.dob.value
284
+ return defaultUndefinedToNA(persona.dob?.value)
251
285
  case 'myinfo.passport_number':
252
- return persona.passportnumber.value
286
+ return defaultUndefinedToNA(persona.passportnumber?.value)
253
287
  case 'myinfo.passport_expiry_date':
254
- return persona.passportexpirydate.value
288
+ return defaultUndefinedToNA(persona.passportexpirydate?.value)
289
+ case 'myinfo.nationality':
290
+ return defaultUndefinedToNA(persona.nationality?.desc)
291
+ case 'myinfo.residentialstatus':
292
+ return defaultUndefinedToNA(persona.residentialstatus?.desc)
293
+ case 'myinfo.residential':
294
+ return defaultUndefinedToNA(persona.residential?.desc)
295
+ case 'myinfo.housingtype':
296
+ return defaultUndefinedToNA(persona.housingtype?.desc)
297
+ case 'myinfo.hdbtype':
298
+ return defaultUndefinedToNA(persona.hdbtype?.desc)
299
+ case 'myinfo.birth_country':
300
+ return defaultUndefinedToNA(persona.birthcountry?.desc)
301
+ case 'myinfo.vehicles':
302
+ return formatVehicles(persona.vehicles)
303
+ case 'myinfo.name_of_employer':
304
+ return defaultUndefinedToNA(persona.employment?.value)
305
+ case 'myinfo.workpass_status':
306
+ return defaultUndefinedToNA(persona.passstatus?.value)
307
+ case 'myinfo.workpass_expiry_date':
308
+ return defaultUndefinedToNA(persona.passexpirydate?.value)
309
+ case 'myinfo.marital_status':
310
+ return defaultUndefinedToNA(persona.marital?.desc)
311
+ case 'myinfo.mobile_number_with_country_code':
312
+ return formatMobileNumberWithPrefix(persona.mobileno)
255
313
  default:
256
- return ''
314
+ return 'NA'
257
315
  }
258
316
  }
259
317
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengovsg/mockpass",
3
- "version": "4.0.9",
3
+ "version": "4.0.10",
4
4
  "description": "A mock SingPass/CorpPass server for dev purposes",
5
5
  "main": "index.js",
6
6
  "bin": {