myanmar-nrc-validator 1.0.13 → 1.0.16

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/README.md CHANGED
@@ -119,6 +119,31 @@ console.log(getStateTownships("12"));
119
119
  // Get all available citizen types (နိုင်, ဧည့်, ပြု, etc.)
120
120
  console.log(getCitizenTypes());
121
121
 
122
+ ### Get Citizen Type(s) (`getCitizenType`)
123
+ This function is polymorphic (flexible):
124
+ - Pass an NRC string to extract its specific citizen type.
125
+ - Call it **without arguments** to get the full list of all available citizen types.
126
+
127
+ ```typescript
128
+ import { getCitizenType } from "myanmar-nrc-validator";
129
+
130
+ // 1. Extract citizen type from an NRC string
131
+ const citizenType = getCitizenType("12/UKAMA(N)123456");
132
+ console.log(citizenType); // နိုင် (or N)
133
+
134
+ // 2. Get all available citizen types (get all)
135
+ const allCitizenTypes = getCitizenType();
136
+ console.log(allCitizenTypes);
137
+ /*
138
+ Output:
139
+ [
140
+ { code: "N", en: "Citizen", mm: "နိုင်" },
141
+ { code: "E", en: "Associate Citizen", mm: "ဧည့်" },
142
+ { code: "P", en: "Naturalized Citizen", mm: "ပြု" },
143
+ ...
144
+ ]
145
+ */
146
+
122
147
  ```
123
148
 
124
149
  ### 5. Compose NRC (`composeNRC`)
@@ -8,5 +8,9 @@ export interface ParsedNRC {
8
8
  raw: string;
9
9
  }
10
10
  export declare function parseNRC(nrcString: string): ParsedNRC | null;
11
- export declare function getCitizenType(nrcString: string): string | null;
11
+ export declare function getCitizenType(nrcString?: string): string | null | Array<{
12
+ code: string;
13
+ en: string;
14
+ mm: string;
15
+ }>;
12
16
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAuC5D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ/D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAuC5D;AAED,wBAAgB,cAAc,CAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjE"}
@@ -1,5 +1,6 @@
1
1
  import statesData from "../data/states.json" with { type: "json" };
2
2
  import { validateNRC, isValidTownship, normalizeDigits } from "./validator.js";
3
+ import citizenTypesData from "../data/citizen-types.json" with { type: "json" };
3
4
  const STATE_REGIONS = statesData;
4
5
  export function parseNRC(nrcString) {
5
6
  if (!nrcString || typeof nrcString !== "string") {
@@ -33,8 +34,13 @@ export function parseNRC(nrcString) {
33
34
  };
34
35
  }
35
36
  export function getCitizenType(nrcString) {
36
- if (!nrcString)
37
- return null;
37
+ if (!nrcString || typeof nrcString !== "string" || nrcString.trim() === "") {
38
+ return Object.entries(citizenTypesData).map(([code, info]) => ({
39
+ code,
40
+ en: info.en,
41
+ mm: info.mm,
42
+ }));
43
+ }
38
44
  const match = nrcString.match(/\(([^)]+)\)/);
39
45
  if (match && match[1]) {
40
46
  return match[1].trim();
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE/E,MAAM,aAAa,GAAG,UAAwD,CAAC;AAY/E,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GACT,iEAAiE,CAAC;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAEjE,OAAO;QACL,SAAS;QACT,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,gBAAgB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhF,MAAM,aAAa,GAAG,UAAwD,CAAC;AAY/E,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GACT,iEAAiE,CAAC;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAEjE,OAAO;QACL,SAAS;QACT,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAAkB;IAElB,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CACzC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAgB,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "myanmar-nrc-validator",
3
- "version": "1.0.13",
4
- "description": "A simple npm package to validate Myanmar NRC numbers",
3
+ "version": "1.0.16",
4
+ "description": "A robust TypeScript library to validate, parse, and format Myanmar NRC numbers, states, townships, and citizen types.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
9
  "types": "./dist/index.d.ts",
10
- "default": "./dist/index.js"
10
+ "import": "./dist/index.js"
11
11
  }
12
12
  },
13
13
  "files": [
@@ -18,6 +18,7 @@
18
18
  "nrc": "./dist/cli.js"
19
19
  },
20
20
  "scripts": {
21
+ "clean": "rimraf dist",
21
22
  "build": "tsc",
22
23
  "prepublishOnly": "npm run build",
23
24
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -25,17 +26,23 @@
25
26
  "keywords": [
26
27
  "myanmar",
27
28
  "nrc",
28
- "validator"
29
+ "validator",
30
+ "burmese-nrc",
31
+ "nrc-parser",
32
+ "cannopy-fleet"
29
33
  ],
30
34
  "author": "Aung Phyo Khant",
31
35
  "license": "MIT",
32
36
  "type": "module",
37
+ "engines": {
38
+ "node": ">=18"
39
+ },
33
40
  "devDependencies": {
34
- "@types/node": "^26.6.4",
35
- "rimraf": "^6.1.3",
36
- "typescript": "^7.0.2"
41
+ "@types/node": "^24.21.0",
42
+ "rimraf": "^6.0.0",
43
+ "typescript": "^5.7.3"
37
44
  },
38
45
  "dependencies": {
39
- "zod": "^4.6.5"
46
+ "zod": "^3.24.0"
40
47
  }
41
48
  }