all-bangladeshi-addresses 1.0.0

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.
@@ -0,0 +1,20 @@
1
+ import type { AddressDataBN, AddressDataEN } from "./types";
2
+ export declare const DivisionNameEN: Record<string, string>;
3
+ export declare const DivisionNameBN: Record<string, string>;
4
+ export declare const DivisionName: Record<string, string>;
5
+ export declare const allDivisionEN: () => string[];
6
+ export declare const divisionalDataENOf: (divisionName: string) => AddressDataEN[];
7
+ export declare const districtENOf: (divisionName: string) => string[];
8
+ export declare const allDistrictEN: () => string[];
9
+ export declare const upazillasENOf: (districtName: string) => string[];
10
+ export declare const allUpazillaEN: () => string[];
11
+ export declare const thanasENOf: (districtName: string) => string[];
12
+ export declare const allThanaEN: () => string[];
13
+ export declare const allDivisionBN: () => string[];
14
+ export declare const divisionalDataBNOf: (divisionName: string) => AddressDataBN[];
15
+ export declare const districtBNOf: (divisionName: string) => string[];
16
+ export declare const allDistrictBN: () => string[];
17
+ export declare const upazillasBNOf: (districtName: string) => string[];
18
+ export declare const allupazillaBN: () => string[];
19
+ export declare const thanasBNOf: (districtName: string) => string[];
20
+ export declare const allThanaBN: () => string[];
package/dist/index.js ADDED
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.allThanaBN = exports.thanasBNOf = exports.allupazillaBN = exports.upazillasBNOf = exports.allDistrictBN = exports.districtBNOf = exports.divisionalDataBNOf = exports.allDivisionBN = exports.allThanaEN = exports.thanasENOf = exports.allUpazillaEN = exports.upazillasENOf = exports.allDistrictEN = exports.districtENOf = exports.divisionalDataENOf = exports.allDivisionEN = exports.DivisionName = exports.DivisionNameBN = exports.DivisionNameEN = void 0;
7
+ const allDataEN_json_1 = __importDefault(require("./data/allDataEN.json"));
8
+ const allDataBN_json_1 = __importDefault(require("./data/allDataBN.json"));
9
+ // Helper to remove exact duplicate objects from the raw array
10
+ function cleanData(arr) {
11
+ const seen = new Set();
12
+ return arr.filter((item) => {
13
+ const str = JSON.stringify(item);
14
+ if (seen.has(str)) {
15
+ return false;
16
+ }
17
+ seen.add(str);
18
+ return true;
19
+ });
20
+ }
21
+ // Helper to get unique strings (safely handles undefined/null/non-strings)
22
+ const getUnique = (arr) => {
23
+ return [
24
+ ...new Set(arr
25
+ .filter((s) => typeof s === "string")
26
+ .map((s) => s.trim())
27
+ .filter((s) => s.length > 0)),
28
+ ];
29
+ };
30
+ // Case-insensitive equality helper
31
+ const equalsIgnoreCase = (a, b) => a.toLowerCase() === b.toLowerCase();
32
+ // Load and clean data
33
+ const dataEN = cleanData(allDataEN_json_1.default);
34
+ const dataBN = cleanData(allDataBN_json_1.default);
35
+ // CONSTANTS / ENUMS
36
+ exports.DivisionNameEN = {};
37
+ getUnique(dataEN.map((i) => i.division)).forEach((d) => (exports.DivisionNameEN[d] = d));
38
+ exports.DivisionNameBN = {};
39
+ getUnique(dataBN.map((i) => i["division"])).forEach((d) => (exports.DivisionNameBN[d] = d));
40
+ // Alias for English default
41
+ exports.DivisionName = exports.DivisionNameEN;
42
+ // ENGLISH METHODS
43
+ const allDivisionEN = () => {
44
+ return getUnique(dataEN.map((item) => item.division));
45
+ };
46
+ exports.allDivisionEN = allDivisionEN;
47
+ const divisionalDataENOf = (divisionName) => {
48
+ return dataEN.filter((item) => equalsIgnoreCase(item.division, divisionName));
49
+ };
50
+ exports.divisionalDataENOf = divisionalDataENOf;
51
+ const districtENOf = (divisionName) => {
52
+ const filtered = dataEN.filter((item) => equalsIgnoreCase(item.division, divisionName));
53
+ return getUnique(filtered.map((item) => item.district));
54
+ };
55
+ exports.districtENOf = districtENOf;
56
+ const allDistrictEN = () => {
57
+ return getUnique(dataEN.map((item) => item.district));
58
+ };
59
+ exports.allDistrictEN = allDistrictEN;
60
+ const upazillasENOf = (districtName) => {
61
+ const filtered = dataEN.filter((item) => equalsIgnoreCase(item.district, districtName));
62
+ return getUnique(filtered.map((item) => item.upazilla));
63
+ };
64
+ exports.upazillasENOf = upazillasENOf;
65
+ const allUpazillaEN = () => {
66
+ return getUnique(dataEN.map((item) => item.upazilla));
67
+ };
68
+ exports.allUpazillaEN = allUpazillaEN;
69
+ const thanasENOf = (districtName) => {
70
+ const filtered = dataEN.filter((item) => equalsIgnoreCase(item.district, districtName));
71
+ return getUnique(filtered.map((item) => item.thana));
72
+ };
73
+ exports.thanasENOf = thanasENOf;
74
+ const allThanaEN = () => {
75
+ return getUnique(dataEN.map((item) => item.thana));
76
+ };
77
+ exports.allThanaEN = allThanaEN;
78
+ // BANGLA METHODS
79
+ const allDivisionBN = () => {
80
+ return getUnique(dataBN.map((item) => item["division"]));
81
+ };
82
+ exports.allDivisionBN = allDivisionBN;
83
+ const divisionalDataBNOf = (divisionName) => {
84
+ return dataBN.filter((item) => equalsIgnoreCase(String(item["division"]), divisionName));
85
+ };
86
+ exports.divisionalDataBNOf = divisionalDataBNOf;
87
+ const districtBNOf = (divisionName) => {
88
+ const filtered = dataBN.filter((item) => equalsIgnoreCase(String(item["division"]), divisionName));
89
+ return getUnique(filtered.map((item) => item["district"]));
90
+ };
91
+ exports.districtBNOf = districtBNOf;
92
+ const allDistrictBN = () => {
93
+ return getUnique(dataBN.map((item) => item["district"]));
94
+ };
95
+ exports.allDistrictBN = allDistrictBN;
96
+ const upazillasBNOf = (districtName) => {
97
+ const filtered = dataBN.filter((item) => equalsIgnoreCase(String(item["district"]), districtName));
98
+ return getUnique(filtered.map((item) => item["upazilla"]));
99
+ };
100
+ exports.upazillasBNOf = upazillasBNOf;
101
+ const allupazillaBN = () => {
102
+ return getUnique(dataBN.map((item) => item["upazilla"]));
103
+ };
104
+ exports.allupazillaBN = allupazillaBN;
105
+ const thanasBNOf = (districtName) => {
106
+ const filtered = dataBN.filter((item) => equalsIgnoreCase(String(item["district"]), districtName));
107
+ return getUnique(filtered.map((item) => item["thana"]));
108
+ };
109
+ exports.thanasBNOf = thanasBNOf;
110
+ const allThanaBN = () => {
111
+ return getUnique(dataBN.map((item) => item["thana"]));
112
+ };
113
+ exports.allThanaBN = allThanaBN;
@@ -0,0 +1,12 @@
1
+ export interface AddressDataEN {
2
+ thana: string;
3
+ upazilla: string;
4
+ district: string;
5
+ division: string;
6
+ }
7
+ export interface AddressDataBN {
8
+ "thana": string;
9
+ "upazilla": string;
10
+ "district": string;
11
+ "division": string;
12
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "all-bangladeshi-addresses",
3
+ "version": "1.0.0",
4
+ "description": "Bangladesh address data (Division, District, Upazilla, Thana) in Bangla and English",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc && copyfiles -u 1 src/data/*.json dist/",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "keywords": [
15
+ "bangladesh",
16
+ "address",
17
+ "district",
18
+ "upazila",
19
+ "thana",
20
+ "division",
21
+ "bangla",
22
+ "bd-geo",
23
+ "bangladeshi-addresses",
24
+ "bangladesh-addresses",
25
+ "bangladesh-geo"
26
+ ],
27
+ "author": "Shanta Islam",
28
+ "license": "ISC",
29
+ "type": "commonjs",
30
+ "devDependencies": {
31
+ "@types/node": "^25.0.3",
32
+ "copyfiles": "^2.4.1",
33
+ "typescript": "^5.9.3"
34
+ }
35
+ }