myanmar-nrc-validator 1.0.1 → 1.0.3
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/utils/parser.d.ts.map +1 -1
- package/dist/utils/parser.js +2 -19
- package/dist/utils/parser.js.map +1 -1
- package/dist/utils/validator.d.ts +2 -1
- package/dist/utils/validator.d.ts.map +1 -1
- package/dist/utils/validator.js +32 -9
- package/dist/utils/validator.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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"}
|
package/dist/utils/parser.js
CHANGED
|
@@ -1,28 +1,11 @@
|
|
|
1
1
|
import statesData from "../data/states.json" with { type: "json" };
|
|
2
|
-
import { validateNRC, isValidTownship } from "./validator.js";
|
|
2
|
+
import { validateNRC, isValidTownship, normalizeDigits } from "./validator.js";
|
|
3
3
|
const STATE_REGIONS = statesData;
|
|
4
|
-
function normalizeInput(input) {
|
|
5
|
-
if (!input)
|
|
6
|
-
return "";
|
|
7
|
-
const mmDigits = {
|
|
8
|
-
"၀": "0",
|
|
9
|
-
"၁": "1",
|
|
10
|
-
"၂": "2",
|
|
11
|
-
"၃": "3",
|
|
12
|
-
"၄": "4",
|
|
13
|
-
"၅": "5",
|
|
14
|
-
"၆": "6",
|
|
15
|
-
"၇": "7",
|
|
16
|
-
"၈": "8",
|
|
17
|
-
"၉": "9",
|
|
18
|
-
};
|
|
19
|
-
return input.replace(/[၀-၉]/g, (digit) => mmDigits[digit] || digit);
|
|
20
|
-
}
|
|
21
4
|
export function parseNRC(nrcString) {
|
|
22
5
|
if (!nrcString || typeof nrcString !== "string") {
|
|
23
6
|
return null;
|
|
24
7
|
}
|
|
25
|
-
const normalized =
|
|
8
|
+
const normalized = normalizeDigits(nrcString.trim());
|
|
26
9
|
if (!validateNRC(normalized)) {
|
|
27
10
|
return null;
|
|
28
11
|
}
|
package/dist/utils/parser.js.map
CHANGED
|
@@ -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,MAAM,gBAAgB,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;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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function normalizeDigits(input: string): string;
|
|
2
2
|
export declare function isValidTownship(stateCode: string, townshipCode: string): boolean;
|
|
3
|
+
export declare function validateNRC(nrcString: string): boolean;
|
|
3
4
|
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAgCA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAgCA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAerD;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAgBT;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAetD"}
|
package/dist/utils/validator.js
CHANGED
|
@@ -28,12 +28,22 @@ const TOWNSHIP_FILES = {
|
|
|
28
28
|
"13": shanData,
|
|
29
29
|
"14": ayeyarwadyData,
|
|
30
30
|
};
|
|
31
|
-
export function
|
|
32
|
-
if (!
|
|
33
|
-
return
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
export function normalizeDigits(input) {
|
|
32
|
+
if (!input)
|
|
33
|
+
return "";
|
|
34
|
+
const mmDigits = {
|
|
35
|
+
"၀": "0",
|
|
36
|
+
"၁": "1",
|
|
37
|
+
"၂": "2",
|
|
38
|
+
"၃": "3",
|
|
39
|
+
"၄": "4",
|
|
40
|
+
"၅": "5",
|
|
41
|
+
"၆": "6",
|
|
42
|
+
"၇": "7",
|
|
43
|
+
"၈": "8",
|
|
44
|
+
"၉": "9",
|
|
45
|
+
};
|
|
46
|
+
return input.replace(/[၀-၉]/g, (digit) => mmDigits[digit] || digit);
|
|
37
47
|
}
|
|
38
48
|
export function isValidTownship(stateCode, townshipCode) {
|
|
39
49
|
if (!stateCode || !townshipCode)
|
|
@@ -41,10 +51,23 @@ export function isValidTownship(stateCode, townshipCode) {
|
|
|
41
51
|
const stateFile = TOWNSHIP_FILES[stateCode];
|
|
42
52
|
if (!stateFile || !stateFile.townships)
|
|
43
53
|
return false;
|
|
44
|
-
const query = townshipCode.toUpperCase();
|
|
54
|
+
const query = townshipCode.trim().toUpperCase();
|
|
55
|
+
const rawQuery = townshipCode.trim();
|
|
45
56
|
return stateFile.townships.some((t) => t.en.toUpperCase() === query ||
|
|
46
|
-
t.mm ===
|
|
57
|
+
t.mm === rawQuery ||
|
|
47
58
|
t.fullEn.toUpperCase() === query ||
|
|
48
|
-
t.fullMm ===
|
|
59
|
+
t.fullMm === rawQuery);
|
|
60
|
+
}
|
|
61
|
+
export function validateNRC(nrcString) {
|
|
62
|
+
if (!nrcString || typeof nrcString !== "string")
|
|
63
|
+
return false;
|
|
64
|
+
const cleaned = normalizeDigits(nrcString.trim());
|
|
65
|
+
const nrcPattern = /^([1-9]|1[0-4])\/([A-Za-z\u1000-\u109F]+)\((N|P|A|T|နိုင်|ပြု|ဧည့်|ယာယီ)\)([0-9]{6})$/i;
|
|
66
|
+
const match = cleaned.match(nrcPattern);
|
|
67
|
+
if (!match || !match[1] || !match[2])
|
|
68
|
+
return false;
|
|
69
|
+
const stateCode = match[1];
|
|
70
|
+
const township = match[2];
|
|
71
|
+
return isValidTownship(stateCode, township);
|
|
49
72
|
}
|
|
50
73
|
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,SAAS,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,OAAO,SAAS,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,OAAO,QAAQ,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,WAAW,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,eAAe,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvF,OAAO,QAAQ,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,UAAU,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,YAAY,MAAM,iCAAiC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjF,OAAO,OAAO,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvE,OAAO,WAAW,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,UAAU,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,QAAQ,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,cAAc,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAErF,MAAM,cAAc,GAAwB;IAC1C,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"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"}
|