@indodev/toolkit 0.2.0 → 0.3.1
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/{compare-B1MKSOWV.d.cts → compare-CZadJMGl.d.cts} +54 -1
- package/dist/{compare-B1MKSOWV.d.ts → compare-CZadJMGl.d.ts} +54 -1
- package/dist/currency/index.cjs +23 -0
- package/dist/currency/index.cjs.map +1 -1
- package/dist/currency/index.d.cts +367 -3
- package/dist/currency/index.d.ts +367 -3
- package/dist/currency/index.js +21 -1
- package/dist/currency/index.js.map +1 -1
- package/dist/index.cjs +1188 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.js +1165 -1
- package/dist/index.js.map +1 -1
- package/dist/nik/index.cjs +44 -0
- package/dist/nik/index.cjs.map +1 -1
- package/dist/nik/index.d.cts +44 -1
- package/dist/nik/index.d.ts +44 -1
- package/dist/nik/index.js +41 -1
- package/dist/nik/index.js.map +1 -1
- package/dist/npwp/index.cjs +95 -0
- package/dist/npwp/index.cjs.map +1 -0
- package/dist/npwp/index.d.cts +76 -0
- package/dist/npwp/index.d.ts +76 -0
- package/dist/npwp/index.js +90 -0
- package/dist/npwp/index.js.map +1 -0
- package/dist/phone/index.cjs +42 -0
- package/dist/phone/index.cjs.map +1 -1
- package/dist/phone/index.d.cts +57 -1
- package/dist/phone/index.d.ts +57 -1
- package/dist/phone/index.js +39 -1
- package/dist/phone/index.js.map +1 -1
- package/dist/plate/index.cjs +99 -0
- package/dist/plate/index.cjs.map +1 -0
- package/dist/plate/index.d.cts +8 -0
- package/dist/plate/index.d.ts +8 -0
- package/dist/plate/index.js +94 -0
- package/dist/plate/index.js.map +1 -0
- package/dist/text/index.cjs +811 -0
- package/dist/text/index.cjs.map +1 -1
- package/dist/text/index.d.cts +1 -1
- package/dist/text/index.d.ts +1 -1
- package/dist/text/index.js +808 -1
- package/dist/text/index.js.map +1 -1
- package/dist/types-i5e6R0AS.d.cts +39 -0
- package/dist/types-i5e6R0AS.d.ts +39 -0
- package/dist/utils-DDVlOusI.d.cts +30 -0
- package/dist/utils-DDVlOusI.d.ts +30 -0
- package/dist/vin/index.cjs +84 -0
- package/dist/vin/index.cjs.map +1 -0
- package/dist/vin/index.d.cts +39 -0
- package/dist/vin/index.d.ts +39 -0
- package/dist/vin/index.js +74 -0
- package/dist/vin/index.js.map +1 -0
- package/package.json +48 -18
- package/LICENCE +0 -21
- package/dist/words-Dy8iYkbv.d.cts +0 -333
- package/dist/words-Dy8iYkbv.d.ts +0 -333
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// src/plate/regions.ts
|
|
2
|
+
var PLATE_REGIONS = {
|
|
3
|
+
A: "Banten",
|
|
4
|
+
B: "Jakarta, Depok, Tangerang, Bekasi",
|
|
5
|
+
D: "Bandung, Cimahi",
|
|
6
|
+
E: "Cirebon, Indramayu, Majalengka, Kuningan",
|
|
7
|
+
F: "Bogor, Cianjur, Sukabumi",
|
|
8
|
+
G: "Pekalongan, Pemalang, Batang, Tegal, Brebes",
|
|
9
|
+
H: "Semarang, Salatiga, Kendal, Demak",
|
|
10
|
+
K: "Pati, Kudus, Jepara, Rembang, Blora, Grobogan",
|
|
11
|
+
L: "Surabaya",
|
|
12
|
+
M: "Madura",
|
|
13
|
+
N: "Malang, Probolinggo, Pasuruan, Lumajang, Batu",
|
|
14
|
+
P: "Besuki, Bondowoso, Situbondo, Jember, Banyuwangi",
|
|
15
|
+
R: "Banyumas, Cilacap, Purbalinggo, Banjarnegara",
|
|
16
|
+
S: "Bojonegoro, Tuban, Lamongan, Jombang, Mojokerto",
|
|
17
|
+
T: "Purwakarta, Subang, Karawang",
|
|
18
|
+
AA: "Kedu, Magelang, Purworejo, Kebumen, Temanggung, Wonosobo",
|
|
19
|
+
AB: "Yogyakarta",
|
|
20
|
+
AD: "Surakarta, Boyolali, Sukoharjo, Karanganyar, Wonogiri, Sragen, Klaten",
|
|
21
|
+
AE: "Madiun, Ngawi, Magetan, Ponorogo, Pacitan",
|
|
22
|
+
AG: "Kediri, Blitar, Tulungagung, Nganjuk, Trenggalek",
|
|
23
|
+
BA: "Sumatera Barat",
|
|
24
|
+
BB: "Sumatera Utara (Pantai Barat)",
|
|
25
|
+
BD: "Bengkulu",
|
|
26
|
+
BE: "Lampung",
|
|
27
|
+
BG: "Sumatera Selatan",
|
|
28
|
+
BH: "Jambi",
|
|
29
|
+
BK: "Sumatera Utara (Pantai Timur)",
|
|
30
|
+
BL: "Aceh",
|
|
31
|
+
BM: "Riau",
|
|
32
|
+
BN: "Kepulauan Bangka Belitung",
|
|
33
|
+
BP: "Kepulauan Riau",
|
|
34
|
+
DA: "Kalimantan Selatan",
|
|
35
|
+
DB: "Sulawesi Utara (Daratan)",
|
|
36
|
+
DC: "Sulawesi Barat",
|
|
37
|
+
DD: "Sulawesi Selatan (Selatan)",
|
|
38
|
+
DE: "Maluku",
|
|
39
|
+
DF: "Timor Timur (Historical)",
|
|
40
|
+
DG: "Maluku Utara",
|
|
41
|
+
DH: "NTT (Timor)",
|
|
42
|
+
DK: "Bali",
|
|
43
|
+
DL: "Sulawesi Utara (Kepulauan)",
|
|
44
|
+
DM: "Gorontalo",
|
|
45
|
+
DN: "Sulawesi Tengah",
|
|
46
|
+
DP: "Sulawesi Selatan (Utara)",
|
|
47
|
+
DR: "NTB (Lombok)",
|
|
48
|
+
DS: "Papua",
|
|
49
|
+
DT: "Sulawesi Tenggara",
|
|
50
|
+
EA: "NTB (Sumbawa)",
|
|
51
|
+
EB: "NTT (Flores)",
|
|
52
|
+
ED: "NTT (Sumba)",
|
|
53
|
+
KB: "Kalimantan Barat",
|
|
54
|
+
KH: "Kalimantan Tengah",
|
|
55
|
+
KT: "Kalimantan Timur",
|
|
56
|
+
KU: "Kalimantan Utara",
|
|
57
|
+
PA: "Papua",
|
|
58
|
+
PB: "Papua Barat"
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/plate/utils.ts
|
|
62
|
+
function validatePlate(plate) {
|
|
63
|
+
if (!plate || typeof plate !== "string") {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const cleaned = plate.replace(/\s+/g, "").toUpperCase();
|
|
67
|
+
const regex = /^[A-Z]{1,2}\d{1,4}[A-Z]{1,3}$/;
|
|
68
|
+
return regex.test(cleaned);
|
|
69
|
+
}
|
|
70
|
+
function getRegionFromPlate(plate) {
|
|
71
|
+
if (!plate || typeof plate !== "string") {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const cleaned = plate.replace(/\s+/g, "").toUpperCase();
|
|
75
|
+
const match = cleaned.match(/^([A-Z]{1,2})/);
|
|
76
|
+
if (!match) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const prefix = match[1];
|
|
80
|
+
return PLATE_REGIONS[prefix] || null;
|
|
81
|
+
}
|
|
82
|
+
function formatPlate(plate) {
|
|
83
|
+
if (!plate) return "";
|
|
84
|
+
const cleaned = plate.replace(/\s+/g, "").toUpperCase();
|
|
85
|
+
const match = cleaned.match(/^([A-Z]{1,2})(\d{1,4})([A-Z]{1,3})$/);
|
|
86
|
+
if (!match) {
|
|
87
|
+
return cleaned;
|
|
88
|
+
}
|
|
89
|
+
return `${match[1]} ${match[2]} ${match[3]}`;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { PLATE_REGIONS, formatPlate, getRegionFromPlate, validatePlate };
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
94
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plate/regions.ts","../../src/plate/utils.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Mapping of Indonesian license plate prefixes to their regions.\n */\nexport const PLATE_REGIONS: Record<string, string> = {\n A: 'Banten',\n B: 'Jakarta, Depok, Tangerang, Bekasi',\n D: 'Bandung, Cimahi',\n E: 'Cirebon, Indramayu, Majalengka, Kuningan',\n F: 'Bogor, Cianjur, Sukabumi',\n G: 'Pekalongan, Pemalang, Batang, Tegal, Brebes',\n H: 'Semarang, Salatiga, Kendal, Demak',\n K: 'Pati, Kudus, Jepara, Rembang, Blora, Grobogan',\n L: 'Surabaya',\n M: 'Madura',\n N: 'Malang, Probolinggo, Pasuruan, Lumajang, Batu',\n P: 'Besuki, Bondowoso, Situbondo, Jember, Banyuwangi',\n R: 'Banyumas, Cilacap, Purbalinggo, Banjarnegara',\n S: 'Bojonegoro, Tuban, Lamongan, Jombang, Mojokerto',\n T: 'Purwakarta, Subang, Karawang',\n AA: 'Kedu, Magelang, Purworejo, Kebumen, Temanggung, Wonosobo',\n AB: 'Yogyakarta',\n AD: 'Surakarta, Boyolali, Sukoharjo, Karanganyar, Wonogiri, Sragen, Klaten',\n AE: 'Madiun, Ngawi, Magetan, Ponorogo, Pacitan',\n AG: 'Kediri, Blitar, Tulungagung, Nganjuk, Trenggalek',\n BA: 'Sumatera Barat',\n BB: 'Sumatera Utara (Pantai Barat)',\n BD: 'Bengkulu',\n BE: 'Lampung',\n BG: 'Sumatera Selatan',\n BH: 'Jambi',\n BK: 'Sumatera Utara (Pantai Timur)',\n BL: 'Aceh',\n BM: 'Riau',\n BN: 'Kepulauan Bangka Belitung',\n BP: 'Kepulauan Riau',\n DA: 'Kalimantan Selatan',\n DB: 'Sulawesi Utara (Daratan)',\n DC: 'Sulawesi Barat',\n DD: 'Sulawesi Selatan (Selatan)',\n DE: 'Maluku',\n DF: 'Timor Timur (Historical)',\n DG: 'Maluku Utara',\n DH: 'NTT (Timor)',\n DK: 'Bali',\n DL: 'Sulawesi Utara (Kepulauan)',\n DM: 'Gorontalo',\n DN: 'Sulawesi Tengah',\n DP: 'Sulawesi Selatan (Utara)',\n DR: 'NTB (Lombok)',\n DS: 'Papua',\n DT: 'Sulawesi Tenggara',\n EA: 'NTB (Sumbawa)',\n EB: 'NTT (Flores)',\n ED: 'NTT (Sumba)',\n KB: 'Kalimantan Barat',\n KH: 'Kalimantan Tengah',\n KT: 'Kalimantan Timur',\n KU: 'Kalimantan Utara',\n PA: 'Papua',\n PB: 'Papua Barat',\n};\n","import { PLATE_REGIONS } from './regions';\n\n/**\n * Validates an Indonesian license plate number format.\n * Format: [1-2 letters] [1-4 digits] [1-3 letters]\n *\n * @param plate - The plate number string to validate\n * @returns `true` if valid, `false` otherwise\n *\n * @example\n * ```typescript\n * validatePlate('B 1234 ABC'); // true\n * validatePlate('AB 1 CD'); // true\n * ```\n */\nexport function validatePlate(plate: string): boolean {\n if (!plate || typeof plate !== 'string') {\n return false;\n }\n\n const cleaned = plate.replace(/\\s+/g, '').toUpperCase();\n const regex = /^[A-Z]{1,2}\\d{1,4}[A-Z]{1,3}$/;\n\n return regex.test(cleaned);\n}\n\n/**\n * Gets the region name from a license plate number.\n *\n * @param plate - The plate number\n * @returns Region name or null if not found\n */\nexport function getRegionFromPlate(plate: string): string | null {\n if (!plate || typeof plate !== 'string') {\n return null;\n }\n\n const cleaned = plate.replace(/\\s+/g, '').toUpperCase();\n const match = cleaned.match(/^([A-Z]{1,2})/);\n\n if (!match) {\n return null;\n }\n\n const prefix = match[1];\n return PLATE_REGIONS[prefix] || null;\n}\n\n/**\n * Formats a license plate number with spaces (e.g., B 1234 ABC).\n *\n * @param plate - The plate number\n * @returns Formatted plate string\n */\nexport function formatPlate(plate: string): string {\n if (!plate) return '';\n\n const cleaned = plate.replace(/\\s+/g, '').toUpperCase();\n const match = cleaned.match(/^([A-Z]{1,2})(\\d{1,4})([A-Z]{1,3})$/);\n\n if (!match) {\n return cleaned;\n }\n\n return `${match[1]} ${match[2]} ${match[3]}`;\n}\n"]}
|