@frankieone/one-sdk 1.9.39-rc.1 → 1.9.40-rc

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.
Files changed (72) hide show
  1. package/dist/commit.txt +1 -1
  2. package/dist/esm/modules/common/shared/data/subdivisions/gha.json +66 -0
  3. package/dist/esm/modules/common/shared/data/subdivisions/index.d.ts +0 -4
  4. package/dist/esm/modules/common/shared/data/subdivisions/index.d.ts.map +1 -1
  5. package/dist/esm/modules/common/shared/data/subdivisions/index.js +101 -0
  6. package/dist/esm/modules/common/shared/data/subdivisions/index.js.map +1 -1
  7. package/dist/esm/modules/common/shared/data/subdivisions/ken.json +190 -0
  8. package/dist/esm/modules/common/shared/data/subdivisions/mys.json +18 -0
  9. package/dist/esm/modules/common/shared/data/subdivisions/nga.json +150 -0
  10. package/dist/esm/modules/common/shared/data/subdivisions/zaf.json +38 -0
  11. package/dist/esm/modules/form/vendors/react/constants/form.const.d.ts +4 -0
  12. package/dist/esm/modules/form/vendors/react/constants/form.const.d.ts.map +1 -1
  13. package/dist/esm/modules/form/vendors/react/constants/form.const.js +13 -0
  14. package/dist/esm/modules/form/vendors/react/constants/form.const.js.map +1 -1
  15. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/gha.d.ts +3 -0
  16. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/gha.d.ts.map +1 -0
  17. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/gha.js +63 -0
  18. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/gha.js.map +1 -0
  19. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/ken.d.ts +3 -0
  20. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/ken.d.ts.map +1 -0
  21. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/ken.js +55 -0
  22. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/ken.js.map +1 -0
  23. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/mys.d.ts +3 -0
  24. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/mys.d.ts.map +1 -0
  25. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/mys.js +115 -0
  26. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/mys.js.map +1 -0
  27. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/nga.d.ts +3 -0
  28. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/nga.d.ts.map +1 -0
  29. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/nga.js +104 -0
  30. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/nga.js.map +1 -0
  31. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/phl.js +2 -2
  32. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/phl.js.map +1 -1
  33. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/sgp.d.ts +3 -0
  34. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/sgp.d.ts.map +1 -0
  35. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/sgp.js +87 -0
  36. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/sgp.js.map +1 -0
  37. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/zaf.d.ts +3 -0
  38. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/zaf.d.ts.map +1 -0
  39. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/zaf.js +56 -0
  40. package/dist/esm/modules/form/vendors/react/features/Review/config/countries/zaf.js.map +1 -0
  41. package/dist/esm/modules/form/vendors/react/features/Review/config/fields/addressField.d.ts +42 -8
  42. package/dist/esm/modules/form/vendors/react/features/Review/config/fields/addressField.d.ts.map +1 -1
  43. package/dist/esm/modules/form/vendors/react/features/Review/config/fields/addressField.js +53 -9
  44. package/dist/esm/modules/form/vendors/react/features/Review/config/fields/addressField.js.map +1 -1
  45. package/dist/esm/modules/form/vendors/react/features/Review/config/index.d.ts +7 -1
  46. package/dist/esm/modules/form/vendors/react/features/Review/config/index.d.ts.map +1 -1
  47. package/dist/esm/modules/form/vendors/react/features/Review/config/index.js +13 -1
  48. package/dist/esm/modules/form/vendors/react/features/Review/config/index.js.map +1 -1
  49. package/dist/esm/modules/form/vendors/react/features/Review/fields/national-id.config.d.ts.map +1 -1
  50. package/dist/esm/modules/form/vendors/react/features/Review/fields/national-id.config.js +255 -0
  51. package/dist/esm/modules/form/vendors/react/features/Review/fields/national-id.config.js.map +1 -1
  52. package/dist/esm/modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.d.ts +25 -0
  53. package/dist/esm/modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.d.ts.map +1 -1
  54. package/dist/esm/modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.js +71 -5
  55. package/dist/esm/modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.js.map +1 -1
  56. package/dist/esm/modules/form/vendors/react/model/review.model.d.ts +7 -0
  57. package/dist/esm/modules/form/vendors/react/model/review.model.d.ts.map +1 -1
  58. package/dist/esm/modules/form/vendors/react/model/review.model.js +184 -50
  59. package/dist/esm/modules/form/vendors/react/model/review.model.js.map +1 -1
  60. package/dist/esm/modules/form/vendors/react/utils/object.util.d.ts +1 -1
  61. package/dist/esm/modules/form/vendors/react/utils/object.util.d.ts.map +1 -1
  62. package/dist/esm/modules/form/vendors/react/utils/object.util.js +20 -0
  63. package/dist/esm/modules/form/vendors/react/utils/object.util.js.map +1 -1
  64. package/dist/esm/modules/individual/F2/actions/search.d.ts.map +1 -1
  65. package/dist/esm/modules/individual/F2/actions/search.js +1 -1
  66. package/dist/esm/modules/individual/F2/actions/search.js.map +1 -1
  67. package/dist/esm/modules/individual/actions/search.d.ts.map +1 -1
  68. package/dist/esm/modules/individual/actions/search.js +1 -1
  69. package/dist/esm/modules/individual/actions/search.js.map +1 -1
  70. package/dist/esm/modules/meta.json +1 -1
  71. package/dist/version.txt +1 -1
  72. package/package.json +1 -1
package/dist/commit.txt CHANGED
@@ -1 +1 @@
1
- 67af1b13e367008bd3cd2511c561e3a9acfa840c
1
+ baee1f93a451a074d407ea29bc2b8eeedcd70392
@@ -0,0 +1,66 @@
1
+ [
2
+ {
3
+ "code": "Ahafo",
4
+ "name": "Ahafo"
5
+ },
6
+ {
7
+ "code": "Ashanti",
8
+ "name": "Ashanti"
9
+ },
10
+ {
11
+ "code": "Bono",
12
+ "name": "Bono"
13
+ },
14
+ {
15
+ "code": "Bono East",
16
+ "name": "Bono East"
17
+ },
18
+ {
19
+ "code": "Central",
20
+ "name": "Central"
21
+ },
22
+ {
23
+ "code": "Eastern",
24
+ "name": "Eastern"
25
+ },
26
+ {
27
+ "code": "Greater Accra",
28
+ "name": "Greater Accra"
29
+ },
30
+ {
31
+ "code": "North East",
32
+ "name": "North East"
33
+ },
34
+ {
35
+ "code": "Northern",
36
+ "name": "Northern"
37
+ },
38
+ {
39
+ "code": "Oti",
40
+ "name": "Oti"
41
+ },
42
+ {
43
+ "code": "Savannah",
44
+ "name": "Savannah"
45
+ },
46
+ {
47
+ "code": "Upper East",
48
+ "name": "Upper East"
49
+ },
50
+ {
51
+ "code": "Upper West",
52
+ "name": "Upper West"
53
+ },
54
+ {
55
+ "code": "Volta",
56
+ "name": "Volta"
57
+ },
58
+ {
59
+ "code": "Western",
60
+ "name": "Western"
61
+ },
62
+ {
63
+ "code": "Western North",
64
+ "name": "Western North"
65
+ }
66
+ ]
@@ -2,10 +2,6 @@ export type Subdivision = {
2
2
  code: string;
3
3
  name: string;
4
4
  };
5
- /**
6
- * Country (ISO alpha-3) → its administrative subdivisions.
7
- * Add a new country by dropping in a `{ code, name }[]` JSON file and registering it here.
8
- */
9
5
  export declare const subdivisionsByCountry: Record<string, Subdivision[]>;
10
6
  export type SubdivisionCountry = keyof typeof subdivisionsByCountry;
11
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../modules/common/shared/data/subdivisions/index.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AA+DzD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAY/D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../modules/common/shared/data/subdivisions/index.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAmKzD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAiB/D,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,CAAC"}
@@ -2,13 +2,18 @@ import ausStates from '../aus_states.json';
2
2
  import canProvinces from './can.json';
3
3
  import colDepartments from './col.json';
4
4
  import espProvinces from './esp.json';
5
+ import ghaRegions from './gha.json';
5
6
  import hkgDistricts from './hkg.json';
6
7
  import indStates from './ind.json';
7
8
  import itaProvinces from './ita.json';
9
+ import kenCounties from './ken.json';
8
10
  import mexProvinces from './mex.json';
11
+ import mysSubdivisions from './mys.json';
12
+ import ngaStates from './nga.json';
9
13
  import phlProvinces from './phl.json';
10
14
  import thaProvinces from './tha.json';
11
15
  import twnDivisions from './twn.json';
16
+ import zafProvinces from './zaf.json';
12
17
  // AUS keeps living in aus_states.json (shared with getCountryDetails); normalise its
13
18
  // { alpha3Code } shape to the registry's { code } so there is a single source of truth.
14
19
  const aus = ausStates.map((s) => ({
@@ -18,13 +23,91 @@ const aus = ausStates.map((s) => ({
18
23
  const can = canProvinces;
19
24
  const col = colDepartments;
20
25
  const esp = espProvinces;
26
+ /**
27
+ * Code === name, same reasoning as KEN, ZAF and NGA: a Ghana Card prints no
28
+ * address, so there is no OCR value to mirror and nothing to abbreviate
29
+ * against. GH carries no `valid_state_codes` in con_gdc.json either, so the
30
+ * region travels as the name a Ghanaian address prints.
31
+ *
32
+ * The 16 regions of Ghana, following the 2018-19 referendums that carved six
33
+ * new ones (Ahafo, Bono East, North East, Oti, Savannah, Western North) out of
34
+ * the former ten. Unlike NG's "36 states + FCT", connectors'
35
+ * doc/gdc-country-guide.md (GH) does not enumerate them, so the list is ISO
36
+ * 3166-2:GH and was confirmed with the requester before it was written.
37
+ *
38
+ * Like NGA and unlike KEN/ZAF, every name is plain letters and spaces, so
39
+ * `gha.ts` keeps the shared `alphaNumericSpaceInWords` rule on its region
40
+ * select rather than widening it. `subdivisions.spec.ts` pins that, so a data
41
+ * edit adding an apostrophe or hyphen fails loudly instead of silently making
42
+ * that region un-submittable. (FDEL-52700)
43
+ */
44
+ const gha = ghaRegions;
21
45
  // Code === name, unlike every other country here: Incode returns no address at
22
46
  // all for an HKID, so there is no OCR value to match. The only consumer is the
23
47
  // GDC hk-residential address match. (FDEL-52330)
24
48
  const hkg = hkgDistricts;
25
49
  const ind = indStates;
26
50
  const ita = itaProvinces;
51
+ /**
52
+ * Code === name, same reasoning as HKG and THA: a Kenyan national ID card
53
+ * prints no address at all, so there is no OCR value to mirror and nothing to
54
+ * abbreviate against. GDC does not match on the province for KE either — it is
55
+ * absent from `address_required_fields` and KE carries no `valid_state_codes`
56
+ * (con_gdc.json) — so the county travels as the name a Kenyan address prints.
57
+ *
58
+ * The 47 counties of the Constitution of Kenya 2010, First Schedule.
59
+ * Four of them (Murang'a, Elgeyo-Marakwet, Taita-Taveta, Tharaka-Nithi) carry
60
+ * an apostrophe or a hyphen, which the shared `alphaNumericSpaceInWords` rule
61
+ * on `stateSubfield` rejects — `ken.ts` widens its own state pattern to match.
62
+ * (FDEL-52699)
63
+ */
64
+ const ken = kenCounties;
27
65
  const mex = mexProvinces;
66
+ /**
67
+ * 13 states + 3 federal territories, coded by the 3-letter abbreviation Incode
68
+ * actually returns.
69
+ *
70
+ * This shipped as `code === name`, on the reasoning that MY carries no
71
+ * `valid_state_codes` in con_gdc.json so the state could travel as the name a
72
+ * Malaysian address prints. That was right about what GDC accepts on
73
+ * *submission* and wrong about *prefill*: `review.model.ts` matches the OCR
74
+ * value against a subdivision's code and name only, and a real Incode MyKad
75
+ * response returns `SWK`, not `Sarawak` — so the State dropdown silently failed
76
+ * to prefill on every Malaysian scan. No MY sample scan existed when that call
77
+ * was made; QE's live run supplied one. (FDEL-52695)
78
+ *
79
+ * Same shape MEX already uses (`CDMX` / `Ciudad de México`). The code is what a
80
+ * scan sends and what is submitted as `address.state`; MY has no
81
+ * `valid_state_codes` and the state is absent from MY's
82
+ * `address_required_fields`, so nothing downstream constrains that value today.
83
+ *
84
+ * `SWK` is the one code confirmed against a real scan. The other fifteen are the
85
+ * standard Malaysian state abbreviations and stay unverified until a scan from
86
+ * each state lands — a wrong one degrades to no prefill, which is where this
87
+ * started.
88
+ *
89
+ * Melaka and Pulau Pinang carry a bilingual name so 'Malacca' and 'Penang' — the
90
+ * spellings most Malaysians reach for in an English form — stay searchable:
91
+ * `getSubdivisions` maps { label: name, value: code } and SelectField filters on
92
+ * the label.
93
+ */
94
+ const mys = mysSubdivisions;
95
+ /**
96
+ * Code === name, same reasoning as KEN and ZAF: a Nigerian national ID card
97
+ * prints no address, so there is no OCR value to mirror and nothing to
98
+ * abbreviate against. NG carries no `valid_state_codes` in con_gdc.json either,
99
+ * so the state travels as the name a Nigerian address prints.
100
+ *
101
+ * The 36 states of the Federation plus the Federal Capital Territory —
102
+ * "36 states + FCT", as connectors' doc/gdc-country-guide.md (NG) puts it.
103
+ *
104
+ * Unlike KEN and ZAF, every name here is plain letters and spaces, so `nga.ts`
105
+ * keeps the shared `alphaNumericSpaceInWords` rule on its state select rather
106
+ * than widening it. `subdivisions.spec.ts` pins that, so a data edit adding an
107
+ * apostrophe or hyphen fails loudly instead of silently making that state
108
+ * un-submittable. (FDEL-52694)
109
+ */
110
+ const nga = ngaStates;
28
111
  // Code === name, same reasoning as HKG: the real Thai Incode scan emits no
29
112
  // ocr_scanned_address_state key at all — the province survives only inside
30
113
  // raw.checkedAddress, which the BFF drops — so there is no OCR value to mirror
@@ -63,17 +146,35 @@ const twn = twnDivisions;
63
146
  * Country (ISO alpha-3) → its administrative subdivisions.
64
147
  * Add a new country by dropping in a `{ code, name }[]` JSON file and registering it here.
65
148
  */
149
+ /**
150
+ * Code === name, same reasoning as KEN and HKG: a South African smart ID card
151
+ * prints no address at all, so there is no OCR value to mirror and nothing to
152
+ * abbreviate against. ZA carries no `valid_state_codes` in con_gdc.json either,
153
+ * so the province travels as the name a South African address prints.
154
+ *
155
+ * The nine provinces of the Constitution, spelled as connectors'
156
+ * doc/gdc-country-guide.md (ZA) spells them. KwaZulu-Natal carries a hyphen,
157
+ * which the shared `alphaNumericSpaceInWords` rule on `stateSubfield` rejects —
158
+ * `zaf.ts` widens its own state pattern to match, the same fix KEN needed.
159
+ * (FDEL-52697)
160
+ */
161
+ const zaf = zafProvinces;
66
162
  export const subdivisionsByCountry = {
67
163
  AUS: aus,
68
164
  CAN: can,
69
165
  COL: col,
70
166
  ESP: esp,
167
+ GHA: gha,
71
168
  HKG: hkg,
72
169
  IND: ind,
73
170
  ITA: ita,
171
+ KEN: ken,
74
172
  MEX: mex,
173
+ MYS: mys,
174
+ NGA: nga,
75
175
  PHL: phl,
76
176
  THA: tha,
77
177
  TWN: twn,
178
+ ZAF: zaf,
78
179
  };
79
180
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../modules/common/shared/data/subdivisions/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,cAAc,MAAM,YAAY,CAAC;AACxC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AAItC,qFAAqF;AACrF,wFAAwF;AACxF,MAAM,GAAG,GAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,UAAU;IAClB,IAAI,EAAE,CAAC,CAAC,IAAI;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,cAAsC,CAAC;AAEnD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,+EAA+E;AAC/E,+EAA+E;AAC/E,iDAAiD;AACjD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,SAAiC,CAAC;AAE9C,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,kDAAkD;AAClD;;;;;;;;;GASG;AACH,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../modules/common/shared/data/subdivisions/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,cAAc,MAAM,YAAY,CAAC;AACxC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,WAAW,MAAM,YAAY,CAAC;AACrC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,eAAe,MAAM,YAAY,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AACtC,OAAO,YAAY,MAAM,YAAY,CAAC;AAItC,qFAAqF;AACrF,wFAAwF;AACxF,MAAM,GAAG,GAAkB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,UAAU;IAClB,IAAI,EAAE,CAAC,CAAC,IAAI;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,cAAsC,CAAC;AAEnD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,GAAG,GAAG,UAAkC,CAAC;AAE/C,+EAA+E;AAC/E,+EAA+E;AAC/E,iDAAiD;AACjD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,SAAiC,CAAC;AAE9C,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,GAAG,GAAG,WAAmC,CAAC;AAEhD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,GAAG,GAAG,eAAuC,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,MAAM,GAAG,GAAG,SAAiC,CAAC;AAE9C,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,kDAAkD;AAClD;;;;;;;;;GASG;AACH,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD;;;GAGG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,GAAG,GAAG,YAAoC,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC"}
@@ -0,0 +1,190 @@
1
+ [
2
+ {
3
+ "code": "Baringo",
4
+ "name": "Baringo"
5
+ },
6
+ {
7
+ "code": "Bomet",
8
+ "name": "Bomet"
9
+ },
10
+ {
11
+ "code": "Bungoma",
12
+ "name": "Bungoma"
13
+ },
14
+ {
15
+ "code": "Busia",
16
+ "name": "Busia"
17
+ },
18
+ {
19
+ "code": "Elgeyo-Marakwet",
20
+ "name": "Elgeyo-Marakwet"
21
+ },
22
+ {
23
+ "code": "Embu",
24
+ "name": "Embu"
25
+ },
26
+ {
27
+ "code": "Garissa",
28
+ "name": "Garissa"
29
+ },
30
+ {
31
+ "code": "Homa Bay",
32
+ "name": "Homa Bay"
33
+ },
34
+ {
35
+ "code": "Isiolo",
36
+ "name": "Isiolo"
37
+ },
38
+ {
39
+ "code": "Kajiado",
40
+ "name": "Kajiado"
41
+ },
42
+ {
43
+ "code": "Kakamega",
44
+ "name": "Kakamega"
45
+ },
46
+ {
47
+ "code": "Kericho",
48
+ "name": "Kericho"
49
+ },
50
+ {
51
+ "code": "Kiambu",
52
+ "name": "Kiambu"
53
+ },
54
+ {
55
+ "code": "Kilifi",
56
+ "name": "Kilifi"
57
+ },
58
+ {
59
+ "code": "Kirinyaga",
60
+ "name": "Kirinyaga"
61
+ },
62
+ {
63
+ "code": "Kisii",
64
+ "name": "Kisii"
65
+ },
66
+ {
67
+ "code": "Kisumu",
68
+ "name": "Kisumu"
69
+ },
70
+ {
71
+ "code": "Kitui",
72
+ "name": "Kitui"
73
+ },
74
+ {
75
+ "code": "Kwale",
76
+ "name": "Kwale"
77
+ },
78
+ {
79
+ "code": "Laikipia",
80
+ "name": "Laikipia"
81
+ },
82
+ {
83
+ "code": "Lamu",
84
+ "name": "Lamu"
85
+ },
86
+ {
87
+ "code": "Machakos",
88
+ "name": "Machakos"
89
+ },
90
+ {
91
+ "code": "Makueni",
92
+ "name": "Makueni"
93
+ },
94
+ {
95
+ "code": "Mandera",
96
+ "name": "Mandera"
97
+ },
98
+ {
99
+ "code": "Marsabit",
100
+ "name": "Marsabit"
101
+ },
102
+ {
103
+ "code": "Meru",
104
+ "name": "Meru"
105
+ },
106
+ {
107
+ "code": "Migori",
108
+ "name": "Migori"
109
+ },
110
+ {
111
+ "code": "Mombasa",
112
+ "name": "Mombasa"
113
+ },
114
+ {
115
+ "code": "Murang'a",
116
+ "name": "Murang'a"
117
+ },
118
+ {
119
+ "code": "Nairobi City",
120
+ "name": "Nairobi City"
121
+ },
122
+ {
123
+ "code": "Nakuru",
124
+ "name": "Nakuru"
125
+ },
126
+ {
127
+ "code": "Nandi",
128
+ "name": "Nandi"
129
+ },
130
+ {
131
+ "code": "Narok",
132
+ "name": "Narok"
133
+ },
134
+ {
135
+ "code": "Nyamira",
136
+ "name": "Nyamira"
137
+ },
138
+ {
139
+ "code": "Nyandarua",
140
+ "name": "Nyandarua"
141
+ },
142
+ {
143
+ "code": "Nyeri",
144
+ "name": "Nyeri"
145
+ },
146
+ {
147
+ "code": "Samburu",
148
+ "name": "Samburu"
149
+ },
150
+ {
151
+ "code": "Siaya",
152
+ "name": "Siaya"
153
+ },
154
+ {
155
+ "code": "Taita-Taveta",
156
+ "name": "Taita-Taveta"
157
+ },
158
+ {
159
+ "code": "Tana River",
160
+ "name": "Tana River"
161
+ },
162
+ {
163
+ "code": "Tharaka-Nithi",
164
+ "name": "Tharaka-Nithi"
165
+ },
166
+ {
167
+ "code": "Trans Nzoia",
168
+ "name": "Trans Nzoia"
169
+ },
170
+ {
171
+ "code": "Turkana",
172
+ "name": "Turkana"
173
+ },
174
+ {
175
+ "code": "Uasin Gishu",
176
+ "name": "Uasin Gishu"
177
+ },
178
+ {
179
+ "code": "Vihiga",
180
+ "name": "Vihiga"
181
+ },
182
+ {
183
+ "code": "Wajir",
184
+ "name": "Wajir"
185
+ },
186
+ {
187
+ "code": "West Pokot",
188
+ "name": "West Pokot"
189
+ }
190
+ ]
@@ -0,0 +1,18 @@
1
+ [
2
+ { "code": "JHR", "name": "Johor" },
3
+ { "code": "KDH", "name": "Kedah" },
4
+ { "code": "KTN", "name": "Kelantan" },
5
+ { "code": "KUL", "name": "Kuala Lumpur" },
6
+ { "code": "LBN", "name": "Labuan" },
7
+ { "code": "MLK", "name": "Melaka / Malacca" },
8
+ { "code": "NSN", "name": "Negeri Sembilan" },
9
+ { "code": "PHG", "name": "Pahang" },
10
+ { "code": "PRK", "name": "Perak" },
11
+ { "code": "PLS", "name": "Perlis" },
12
+ { "code": "PNG", "name": "Pulau Pinang / Penang" },
13
+ { "code": "PJY", "name": "Putrajaya" },
14
+ { "code": "SBH", "name": "Sabah" },
15
+ { "code": "SWK", "name": "Sarawak" },
16
+ { "code": "SGR", "name": "Selangor" },
17
+ { "code": "TRG", "name": "Terengganu" }
18
+ ]
@@ -0,0 +1,150 @@
1
+ [
2
+ {
3
+ "code": "Abia",
4
+ "name": "Abia"
5
+ },
6
+ {
7
+ "code": "Adamawa",
8
+ "name": "Adamawa"
9
+ },
10
+ {
11
+ "code": "Akwa Ibom",
12
+ "name": "Akwa Ibom"
13
+ },
14
+ {
15
+ "code": "Anambra",
16
+ "name": "Anambra"
17
+ },
18
+ {
19
+ "code": "Bauchi",
20
+ "name": "Bauchi"
21
+ },
22
+ {
23
+ "code": "Bayelsa",
24
+ "name": "Bayelsa"
25
+ },
26
+ {
27
+ "code": "Benue",
28
+ "name": "Benue"
29
+ },
30
+ {
31
+ "code": "Borno",
32
+ "name": "Borno"
33
+ },
34
+ {
35
+ "code": "Cross River",
36
+ "name": "Cross River"
37
+ },
38
+ {
39
+ "code": "Delta",
40
+ "name": "Delta"
41
+ },
42
+ {
43
+ "code": "Ebonyi",
44
+ "name": "Ebonyi"
45
+ },
46
+ {
47
+ "code": "Edo",
48
+ "name": "Edo"
49
+ },
50
+ {
51
+ "code": "Ekiti",
52
+ "name": "Ekiti"
53
+ },
54
+ {
55
+ "code": "Enugu",
56
+ "name": "Enugu"
57
+ },
58
+ {
59
+ "code": "Federal Capital Territory",
60
+ "name": "Federal Capital Territory"
61
+ },
62
+ {
63
+ "code": "Gombe",
64
+ "name": "Gombe"
65
+ },
66
+ {
67
+ "code": "Imo",
68
+ "name": "Imo"
69
+ },
70
+ {
71
+ "code": "Jigawa",
72
+ "name": "Jigawa"
73
+ },
74
+ {
75
+ "code": "Kaduna",
76
+ "name": "Kaduna"
77
+ },
78
+ {
79
+ "code": "Kano",
80
+ "name": "Kano"
81
+ },
82
+ {
83
+ "code": "Katsina",
84
+ "name": "Katsina"
85
+ },
86
+ {
87
+ "code": "Kebbi",
88
+ "name": "Kebbi"
89
+ },
90
+ {
91
+ "code": "Kogi",
92
+ "name": "Kogi"
93
+ },
94
+ {
95
+ "code": "Kwara",
96
+ "name": "Kwara"
97
+ },
98
+ {
99
+ "code": "Lagos",
100
+ "name": "Lagos"
101
+ },
102
+ {
103
+ "code": "Nasarawa",
104
+ "name": "Nasarawa"
105
+ },
106
+ {
107
+ "code": "Niger",
108
+ "name": "Niger"
109
+ },
110
+ {
111
+ "code": "Ogun",
112
+ "name": "Ogun"
113
+ },
114
+ {
115
+ "code": "Ondo",
116
+ "name": "Ondo"
117
+ },
118
+ {
119
+ "code": "Osun",
120
+ "name": "Osun"
121
+ },
122
+ {
123
+ "code": "Oyo",
124
+ "name": "Oyo"
125
+ },
126
+ {
127
+ "code": "Plateau",
128
+ "name": "Plateau"
129
+ },
130
+ {
131
+ "code": "Rivers",
132
+ "name": "Rivers"
133
+ },
134
+ {
135
+ "code": "Sokoto",
136
+ "name": "Sokoto"
137
+ },
138
+ {
139
+ "code": "Taraba",
140
+ "name": "Taraba"
141
+ },
142
+ {
143
+ "code": "Yobe",
144
+ "name": "Yobe"
145
+ },
146
+ {
147
+ "code": "Zamfara",
148
+ "name": "Zamfara"
149
+ }
150
+ ]
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "code": "Eastern Cape",
4
+ "name": "Eastern Cape"
5
+ },
6
+ {
7
+ "code": "Free State",
8
+ "name": "Free State"
9
+ },
10
+ {
11
+ "code": "Gauteng",
12
+ "name": "Gauteng"
13
+ },
14
+ {
15
+ "code": "KwaZulu-Natal",
16
+ "name": "KwaZulu-Natal"
17
+ },
18
+ {
19
+ "code": "Limpopo",
20
+ "name": "Limpopo"
21
+ },
22
+ {
23
+ "code": "Mpumalanga",
24
+ "name": "Mpumalanga"
25
+ },
26
+ {
27
+ "code": "North West",
28
+ "name": "North West"
29
+ },
30
+ {
31
+ "code": "Northern Cape",
32
+ "name": "Northern Cape"
33
+ },
34
+ {
35
+ "code": "Western Cape",
36
+ "name": "Western Cape"
37
+ }
38
+ ]
@@ -39,6 +39,10 @@ export declare const ValidationRulesForForm: {
39
39
  value: string;
40
40
  message: string;
41
41
  };
42
+ latinNameWithSlashApostropheHyphenAndAlias: {
43
+ value: string;
44
+ message: string;
45
+ };
42
46
  alphabetsAccentedWithApostropheAndHyphen: {
43
47
  value: string;
44
48
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"form.const.d.ts","sourceRoot":"","sources":["../../../../../../../modules/form/vendors/react/constants/form.const.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.const.d.ts","sourceRoot":"","sources":["../../../../../../../modules/form/vendors/react/constants/form.const.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,19 @@ export const ValidationRulesForForm = {
69
69
  value: `^(?=.*[a-zA-Z0-9\u0E01-\u0E7E])[a-zA-Z0-9\u0E01-\u0E7E,.()\\[\\] /-]+$`,
70
70
  message: 'กรุณากรอกอักขระที่ถูกต้อง / Please enter valid characters only',
71
71
  },
72
+ // A MyKad prints an Indian-Malaysian name with the patronymic A/L (anak
73
+ // lelaki) or A/P (anak perempuan), and an alias as a free-standing '@' between
74
+ // two names ('SITI AMINAH @ MARY'). Neither character is in
75
+ // alphabetsWithApostropheAndHyphen, so under the shared rule those applicants
76
+ // could not type their own legal name into the review screen at all — the same
77
+ // class of block Thailand hit with Thai script (FDEL-52332). '@' is a whole
78
+ // token rather than an in-word separator because that is how the card prints
79
+ // it. Apostrophe and hyphen are carried over unchanged. (FDEL-52695)
80
+ latinNameWithSlashApostropheHyphenAndAlias: {
81
+ // eslint-disable-next-line max-len
82
+ value: `^(?:@|[a-zA-Z]+(?:[-\u0027’‘ʼʻ/][a-zA-Z]+)*)(?:\\s+(?:@|[a-zA-Z]+(?:[-\u0027’‘ʼʻ/][a-zA-Z]+)*))*$`,
83
+ message: 'Sila masukkan huruf sahaja / Please enter alphabetic characters only',
84
+ },
72
85
  alphabetsAccentedWithApostropheAndHyphen: {
73
86
  // eslint-disable-next-line max-len
74
87
  value: `^[a-zA-ZÀ-ÖØ-öø-ÿ]+(?:[-\u0027’‘ʼʻ][a-zA-ZÀ-ÖØ-öø-ÿ]+)*(?:\\s+[a-zA-ZÀ-ÖØ-öø-ÿ]+(?:[-\u0027’‘ʼʻ][a-zA-ZÀ-ÖØ-öø-ÿ]+)*)*$`,