geothai
Version:
An npm package for Node.js to access detailed geographic data on Thailand, including provinces, districts, subdistricts, and postal code. 🌟
1 lines • 3 MB
Source Map (JSON)
{"version":3,"sources":["../src/data/metadata.json","../src/data/provinces.json","../src/utils/cache.ts","../src/utils/criteria-matcher.ts","../src/utils/create-service.ts","../src/utils/record-to-array.ts","../src/services/province.ts","../src/data/districts.json","../src/services/district.ts","../src/data/subdistricts.json","../src/services/subdistrict.ts","../src/data/postal_codes.json","../src/services/postal-code.ts","../src/index.ts"],"sourcesContent":["{\n \"version\": \"3.0.0\",\n \"last_updated\": \"2025-05-07 06:43:03\",\n \"source\": \"GeoThai Team (https://github.com/GeoThai/data.git)\",\n \"stats\": {\n \"provinces\": 77,\n \"districts\": 928,\n \"subdistricts\": 7436,\n \"postal_codes\": 954\n }\n}\n","{\n \"10\": {\n \"code\": 10,\n \"name_en\": \"Bangkok\",\n \"name_th\": \"กรุงเทพมหานคร\",\n \"districts\": [\n 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,\n 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,\n 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050\n ]\n },\n \"11\": {\n \"code\": 11,\n \"name_en\": \"Samut Prakan\",\n \"name_th\": \"สมุทรปราการ\",\n \"districts\": [1101, 1102, 1103, 1104, 1105, 1106]\n },\n \"12\": {\n \"code\": 12,\n \"name_en\": \"Nonthaburi\",\n \"name_th\": \"นนทบุรี\",\n \"districts\": [1201, 1202, 1203, 1204, 1205, 1206]\n },\n \"13\": {\n \"code\": 13,\n \"name_en\": \"Pathum Thani\",\n \"name_th\": \"ปทุมธานี\",\n \"districts\": [1301, 1302, 1303, 1304, 1305, 1306, 1307]\n },\n \"14\": {\n \"code\": 14,\n \"name_en\": \"Phra Nakhon Si Ayutthaya\",\n \"name_th\": \"พระนครศรีอยุธยา\",\n \"districts\": [1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416]\n },\n \"15\": {\n \"code\": 15,\n \"name_en\": \"Ang Thong\",\n \"name_th\": \"อ่างทอง\",\n \"districts\": [1501, 1502, 1503, 1504, 1505, 1506, 1507]\n },\n \"16\": {\n \"code\": 16,\n \"name_en\": \"Loburi\",\n \"name_th\": \"ลพบุรี\",\n \"districts\": [1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611]\n },\n \"17\": {\n \"code\": 17,\n \"name_en\": \"Sing Buri\",\n \"name_th\": \"สิงห์บุรี\",\n \"districts\": [1701, 1702, 1703, 1704, 1705, 1706]\n },\n \"18\": {\n \"code\": 18,\n \"name_en\": \"Chai Nat\",\n \"name_th\": \"ชัยนาท\",\n \"districts\": [1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808]\n },\n \"19\": {\n \"code\": 19,\n \"name_en\": \"Saraburi\",\n \"name_th\": \"สระบุรี\",\n \"districts\": [1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913]\n },\n \"20\": {\n \"code\": 20,\n \"name_en\": \"Chon Buri\",\n \"name_th\": \"ชลบุรี\",\n \"districts\": [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]\n },\n \"21\": {\n \"code\": 21,\n \"name_en\": \"Rayong\",\n \"name_th\": \"ระยอง\",\n \"districts\": [2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108]\n },\n \"22\": {\n \"code\": 22,\n \"name_en\": \"Chanthaburi\",\n \"name_th\": \"จันทบุรี\",\n \"districts\": [2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210]\n },\n \"23\": {\n \"code\": 23,\n \"name_en\": \"Trat\",\n \"name_th\": \"ตราด\",\n \"districts\": [2301, 2302, 2303, 2304, 2305, 2306, 2307]\n },\n \"24\": {\n \"code\": 24,\n \"name_en\": \"Chachoengsao\",\n \"name_th\": \"ฉะเชิงเทรา\",\n \"districts\": [2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411]\n },\n \"25\": {\n \"code\": 25,\n \"name_en\": \"Prachin Buri\",\n \"name_th\": \"ปราจีนบุรี\",\n \"districts\": [2501, 2502, 2503, 2506, 2507, 2508, 2509]\n },\n \"26\": {\n \"code\": 26,\n \"name_en\": \"Nakhon Nayok\",\n \"name_th\": \"นครนายก\",\n \"districts\": [2601, 2602, 2603, 2604]\n },\n \"27\": {\n \"code\": 27,\n \"name_en\": \"Sa Kaeo\",\n \"name_th\": \"สระแก้ว\",\n \"districts\": [2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709]\n },\n \"30\": {\n \"code\": 30,\n \"name_en\": \"Nakhon Ratchasima\",\n \"name_th\": \"นครราชสีมา\",\n \"districts\": [\n 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017, 3018,\n 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030, 3031, 3032\n ]\n },\n \"31\": {\n \"code\": 31,\n \"name_en\": \"Buri Ram\",\n \"name_th\": \"บุรีรัมย์\",\n \"districts\": [\n 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3118,\n 3119, 3120, 3121, 3122, 3123\n ]\n },\n \"32\": {\n \"code\": 32,\n \"name_en\": \"Surin\",\n \"name_th\": \"สุรินทร์\",\n \"districts\": [\n 3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216, 3217\n ]\n },\n \"33\": {\n \"code\": 33,\n \"name_en\": \"Si Sa Ket\",\n \"name_th\": \"ศรีสะเกษ\",\n \"districts\": [\n 3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317, 3318,\n 3319, 3320, 3321, 3322\n ]\n },\n \"34\": {\n \"code\": 34,\n \"name_en\": \"Ubon Ratchathani\",\n \"name_th\": \"อุบลราชธานี\",\n \"districts\": [\n 3401, 3402, 3403, 3404, 3405, 3407, 3408, 3409, 3410, 3411, 3412, 3414, 3415, 3419, 3420, 3421, 3422, 3424,\n 3425, 3426, 3429, 3430, 3431, 3432, 3433\n ]\n },\n \"35\": {\n \"code\": 35,\n \"name_en\": \"Yasothon\",\n \"name_th\": \"ยโสธร\",\n \"districts\": [3501, 3502, 3503, 3504, 3505, 3506, 3507, 3508, 3509]\n },\n \"36\": {\n \"code\": 36,\n \"name_en\": \"Chaiyaphum\",\n \"name_th\": \"ชัยภูมิ\",\n \"districts\": [3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616]\n },\n \"37\": {\n \"code\": 37,\n \"name_en\": \"Amnat Charoen\",\n \"name_th\": \"อำนาจเจริญ\",\n \"districts\": [3701, 3702, 3703, 3704, 3705, 3706, 3707]\n },\n \"38\": {\n \"code\": 38,\n \"name_en\": \"Bueng Kan\",\n \"name_th\": \"บึงกาฬ\",\n \"districts\": [3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808]\n },\n \"39\": {\n \"code\": 39,\n \"name_en\": \"Nong Bua Lam Phu\",\n \"name_th\": \"หนองบัวลำภู\",\n \"districts\": [3901, 3902, 3903, 3904, 3905, 3906]\n },\n \"40\": {\n \"code\": 40,\n \"name_en\": \"Khon Kaen\",\n \"name_th\": \"ขอนแก่น\",\n \"districts\": [\n 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018,\n 4019, 4020, 4021, 4022, 4023, 4024, 4025, 4029\n ]\n },\n \"41\": {\n \"code\": 41,\n \"name_en\": \"Udon Thani\",\n \"name_th\": \"อุดรธานี\",\n \"districts\": [\n 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4117, 4118, 4119, 4120, 4121, 4122, 4123,\n 4124, 4125\n ]\n },\n \"42\": {\n \"code\": 42,\n \"name_en\": \"Loei\",\n \"name_th\": \"เลย\",\n \"districts\": [4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4213, 4214]\n },\n \"43\": {\n \"code\": 43,\n \"name_en\": \"Nong Khai\",\n \"name_th\": \"หนองคาย\",\n \"districts\": [4301, 4302, 4305, 4307, 4308, 4314, 4315, 4316, 4317]\n },\n \"44\": {\n \"code\": 44,\n \"name_en\": \"Maha Sarakham\",\n \"name_th\": \"มหาสารคาม\",\n \"districts\": [4401, 4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413]\n },\n \"45\": {\n \"code\": 45,\n \"name_en\": \"Roi Et\",\n \"name_th\": \"ร้อยเอ็ด\",\n \"districts\": [\n 4501, 4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517, 4518,\n 4519, 4520\n ]\n },\n \"46\": {\n \"code\": 46,\n \"name_en\": \"Kalasin\",\n \"name_th\": \"กาฬสินธุ์\",\n \"districts\": [\n 4601, 4602, 4603, 4604, 4605, 4606, 4607, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618\n ]\n },\n \"47\": {\n \"code\": 47,\n \"name_en\": \"Sakon Nakhon\",\n \"name_th\": \"สกลนคร\",\n \"districts\": [\n 4701, 4702, 4703, 4704, 4705, 4706, 4707, 4708, 4709, 4710, 4711, 4712, 4713, 4714, 4715, 4716, 4717, 4718\n ]\n },\n \"48\": {\n \"code\": 48,\n \"name_en\": \"Nakhon Phanom\",\n \"name_th\": \"นครพนม\",\n \"districts\": [4801, 4802, 4803, 4804, 4805, 4806, 4807, 4808, 4809, 4810, 4811, 4812]\n },\n \"49\": {\n \"code\": 49,\n \"name_en\": \"Mukdahan\",\n \"name_th\": \"มุกดาหาร\",\n \"districts\": [4901, 4902, 4903, 4904, 4905, 4906, 4907]\n },\n \"50\": {\n \"code\": 50,\n \"name_en\": \"Chiang Mai\",\n \"name_th\": \"เชียงใหม่\",\n \"districts\": [\n 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018,\n 5019, 5020, 5021, 5022, 5023, 5024, 5025\n ]\n },\n \"51\": {\n \"code\": 51,\n \"name_en\": \"Lamphun\",\n \"name_th\": \"ลำพูน\",\n \"districts\": [5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108]\n },\n \"52\": {\n \"code\": 52,\n \"name_en\": \"Lampang\",\n \"name_th\": \"ลำปาง\",\n \"districts\": [5201, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213]\n },\n \"53\": {\n \"code\": 53,\n \"name_en\": \"Uttaradit\",\n \"name_th\": \"อุตรดิตถ์\",\n \"districts\": [5301, 5302, 5303, 5304, 5305, 5306, 5307, 5308, 5309]\n },\n \"54\": {\n \"code\": 54,\n \"name_en\": \"Phrae\",\n \"name_th\": \"แพร่\",\n \"districts\": [5401, 5402, 5403, 5404, 5405, 5406, 5407, 5408]\n },\n \"55\": {\n \"code\": 55,\n \"name_en\": \"Nan\",\n \"name_th\": \"น่าน\",\n \"districts\": [5501, 5502, 5503, 5504, 5505, 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515]\n },\n \"56\": {\n \"code\": 56,\n \"name_en\": \"Phayao\",\n \"name_th\": \"พะเยา\",\n \"districts\": [5601, 5602, 5603, 5604, 5605, 5606, 5607, 5608, 5609]\n },\n \"57\": {\n \"code\": 57,\n \"name_en\": \"Chiang Rai\",\n \"name_th\": \"เชียงราย\",\n \"districts\": [\n 5701, 5702, 5703, 5704, 5705, 5706, 5707, 5708, 5709, 5710, 5711, 5712, 5713, 5714, 5715, 5716, 5717, 5718\n ]\n },\n \"58\": {\n \"code\": 58,\n \"name_en\": \"Mae Hong Son\",\n \"name_th\": \"แม่ฮ่องสอน\",\n \"districts\": [5801, 5802, 5803, 5804, 5805, 5806, 5807]\n },\n \"60\": {\n \"code\": 60,\n \"name_en\": \"Nakhon Sawan\",\n \"name_th\": \"นครสวรรค์\",\n \"districts\": [6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015]\n },\n \"61\": {\n \"code\": 61,\n \"name_en\": \"Uthai Thani\",\n \"name_th\": \"อุทัยธานี\",\n \"districts\": [6101, 6102, 6103, 6104, 6105, 6106, 6107, 6108]\n },\n \"62\": {\n \"code\": 62,\n \"name_en\": \"Kamphaeng Phet\",\n \"name_th\": \"กำแพงเพชร\",\n \"districts\": [6201, 6202, 6203, 6204, 6205, 6206, 6207, 6208, 6209, 6210, 6211]\n },\n \"63\": {\n \"code\": 63,\n \"name_en\": \"Tak\",\n \"name_th\": \"ตาก\",\n \"districts\": [6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309]\n },\n \"64\": {\n \"code\": 64,\n \"name_en\": \"Sukhothai\",\n \"name_th\": \"สุโขทัย\",\n \"districts\": [6401, 6402, 6403, 6404, 6405, 6406, 6407, 6408, 6409]\n },\n \"65\": {\n \"code\": 65,\n \"name_en\": \"Phitsanulok\",\n \"name_th\": \"พิษณุโลก\",\n \"districts\": [6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508, 6509]\n },\n \"66\": {\n \"code\": 66,\n \"name_en\": \"Phichit\",\n \"name_th\": \"พิจิตร\",\n \"districts\": [6601, 6602, 6603, 6604, 6605, 6606, 6607, 6608, 6609, 6610, 6611, 6612]\n },\n \"67\": {\n \"code\": 67,\n \"name_en\": \"Phetchabun\",\n \"name_th\": \"เพชรบูรณ์\",\n \"districts\": [6701, 6702, 6703, 6704, 6705, 6706, 6707, 6708, 6709, 6710, 6711]\n },\n \"70\": {\n \"code\": 70,\n \"name_en\": \"Ratchaburi\",\n \"name_th\": \"ราชบุรี\",\n \"districts\": [7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010]\n },\n \"71\": {\n \"code\": 71,\n \"name_en\": \"Kanchanaburi\",\n \"name_th\": \"กาญจนบุรี\",\n \"districts\": [7101, 7102, 7103, 7104, 7105, 7106, 7107, 7108, 7109, 7110, 7111, 7112, 7113]\n },\n \"72\": {\n \"code\": 72,\n \"name_en\": \"Suphan Buri\",\n \"name_th\": \"สุพรรณบุรี\",\n \"districts\": [7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210]\n },\n \"73\": {\n \"code\": 73,\n \"name_en\": \"Nakhon Pathom\",\n \"name_th\": \"นครปฐม\",\n \"districts\": [7301, 7302, 7303, 7304, 7305, 7306, 7307]\n },\n \"74\": {\n \"code\": 74,\n \"name_en\": \"Samut Sakhon\",\n \"name_th\": \"สมุทรสาคร\",\n \"districts\": [7401, 7402, 7403]\n },\n \"75\": {\n \"code\": 75,\n \"name_en\": \"Samut Songkhram\",\n \"name_th\": \"สมุทรสงคราม\",\n \"districts\": [7501, 7502, 7503]\n },\n \"76\": {\n \"code\": 76,\n \"name_en\": \"Phetchaburi\",\n \"name_th\": \"เพชรบุรี\",\n \"districts\": [7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608]\n },\n \"77\": {\n \"code\": 77,\n \"name_en\": \"Prachuap Khiri Khan\",\n \"name_th\": \"ประจวบคีรีขันธ์\",\n \"districts\": [7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708]\n },\n \"80\": {\n \"code\": 80,\n \"name_en\": \"Nakhon Si Thammarat\",\n \"name_th\": \"นครศรีธรรมราช\",\n \"districts\": [\n 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015, 8016, 8017, 8018,\n 8019, 8020, 8021, 8022, 8023\n ]\n },\n \"81\": {\n \"code\": 81,\n \"name_en\": \"Krabi\",\n \"name_th\": \"กระบี่\",\n \"districts\": [8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108]\n },\n \"82\": {\n \"code\": 82,\n \"name_en\": \"Phangnga\",\n \"name_th\": \"พังงา\",\n \"districts\": [8201, 8202, 8203, 8204, 8205, 8206, 8207, 8208]\n },\n \"83\": {\n \"code\": 83,\n \"name_en\": \"Phuket\",\n \"name_th\": \"ภูเก็ต\",\n \"districts\": [8301, 8302, 8303]\n },\n \"84\": {\n \"code\": 84,\n \"name_en\": \"Surat Thani\",\n \"name_th\": \"สุราษฎร์ธานี\",\n \"districts\": [\n 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409, 8410, 8411, 8412, 8413, 8414, 8415, 8416, 8417, 8418,\n 8419\n ]\n },\n \"85\": {\n \"code\": 85,\n \"name_en\": \"Ranong\",\n \"name_th\": \"ระนอง\",\n \"districts\": [8501, 8502, 8503, 8504, 8505]\n },\n \"86\": {\n \"code\": 86,\n \"name_en\": \"Chumphon\",\n \"name_th\": \"ชุมพร\",\n \"districts\": [8601, 8602, 8603, 8604, 8605, 8606, 8607, 8608]\n },\n \"90\": {\n \"code\": 90,\n \"name_en\": \"Songkhla\",\n \"name_th\": \"สงขลา\",\n \"districts\": [9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016]\n },\n \"91\": {\n \"code\": 91,\n \"name_en\": \"Satun\",\n \"name_th\": \"สตูล\",\n \"districts\": [9101, 9102, 9103, 9104, 9105, 9106, 9107]\n },\n \"92\": {\n \"code\": 92,\n \"name_en\": \"Trang\",\n \"name_th\": \"ตรัง\",\n \"districts\": [9201, 9202, 9203, 9204, 9205, 9206, 9207, 9208, 9209, 9210]\n },\n \"93\": {\n \"code\": 93,\n \"name_en\": \"Phatthalung\",\n \"name_th\": \"พัทลุง\",\n \"districts\": [9301, 9302, 9303, 9304, 9305, 9306, 9307, 9308, 9309, 9310, 9311]\n },\n \"94\": {\n \"code\": 94,\n \"name_en\": \"Pattani\",\n \"name_th\": \"ปัตตานี\",\n \"districts\": [9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, 9411, 9412]\n },\n \"95\": {\n \"code\": 95,\n \"name_en\": \"Yala\",\n \"name_th\": \"ยะลา\",\n \"districts\": [9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508]\n },\n \"96\": {\n \"code\": 96,\n \"name_en\": \"Narathiwat\",\n \"name_th\": \"นราธิวาส\",\n \"districts\": [9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613]\n }\n}\n","type CacheItem<T> = {\n value: T\n expiry?: number\n}\n\nclass Cache {\n private cacheMap: Map<string, CacheItem<unknown>> = new Map()\n private defaultTTL: number = 60 * 60 * 1000 // 1 hour in milliseconds\n\n public has(key: string): boolean {\n if (this.cacheMap.has(key)) {\n const item = this.cacheMap.get(key)!\n if (item.expiry && Date.now() > item.expiry) {\n this.cacheMap.delete(key)\n return false\n }\n return true\n }\n return false\n }\n\n public get<T>(key: string): T | undefined {\n if (this.has(key)) {\n return this.cacheMap.get(key)!.value as T\n }\n return undefined\n }\n\n public set<T>(key: string, value: T, ttl?: number): void {\n const expiry = Date.now() + (ttl ?? this.defaultTTL)\n this.cacheMap.set(key, { value, expiry })\n }\n\n public clear(): void {\n this.cacheMap.clear()\n }\n}\n\nexport const cache = new Cache()\n","export function matchCriteria<T>(item: T, criterion: Partial<T>): boolean {\n return Object.entries(criterion).every(([key, value]) => {\n return item[key as keyof T] === value\n })\n}\n","import { matchCriteria } from './criteria-matcher'\n\nexport function createService<T>(data: T[], idKey: keyof T) {\n const dataMap = new Map<number, T>(data.map((item) => [item[idKey] as number, item]))\n\n return {\n getAll: (): T[] => Array.from(dataMap.values()),\n getByCode: (code: string): T | undefined => dataMap.get(Number(code)),\n getByCriterion: (criterion: Partial<T>): T[] => {\n return Array.from(dataMap.values()).filter((item) => matchCriteria(item, criterion))\n }\n }\n}\n","export function recordToArray<K extends string | number | symbol, T>(districtJson: Record<K, T>): T[] {\n return Object.values(districtJson)\n}\n","import provinces from '../data/provinces.json'\nimport type { Province, ProvinceIndex } from '../types'\nimport { cache } from '../utils/cache'\nimport { createService } from '../utils/create-service'\nimport { recordToArray } from '../utils/record-to-array'\n\nexport const createProvinceService = (data: Record<ProvinceIndex, Province>) => {\n const provinces = recordToArray(data)\n return createService<Province>(provinces, 'code')\n}\n\nconst provinceService = createService<Province>(recordToArray(provinces), 'code')\n\nexport function getAllProvinces(): Province[] {\n const key = 'provinces'\n if (cache.has(key)) {\n return cache.get<Province[]>(key)!\n }\n const provinces = provinceService.getAll()\n cache.set<Province[]>(key, provinces)\n return provinces\n}\n\nexport function getProvinceByCode(code: ProvinceIndex): Province | undefined {\n const key = `province-${code}`\n if (cache.has(key)) {\n return cache.get<Province>(key)!\n }\n const province = provinceService.getByCode(code)\n cache.set(key, province)\n return province\n}\n\nexport function getProvincesByCriterion(criterion: Partial<Province>): Province[] {\n const key = `provinces-${JSON.stringify(criterion)}`\n if (cache.has(key)) {\n return cache.get<Province[]>(key)!\n }\n const provinces = provinceService.getByCriterion(criterion)\n cache.set(key, provinces)\n return provinces\n}\n","{\n \"1001\": {\n \"code\": 1001,\n \"name_en\": \"Phra Nakhon\",\n \"name_th\": \"พระนคร\",\n \"province_code\": 10,\n \"subdistricts\": [100101, 100102, 100103, 100104, 100105, 100106, 100107, 100108, 100109, 100110, 100111, 100112]\n },\n \"1002\": {\n \"code\": 1002,\n \"name_en\": \"Dusit\",\n \"name_th\": \"ดุสิต\",\n \"province_code\": 10,\n \"subdistricts\": [100201, 100202, 100203, 100204, 100206]\n },\n \"1003\": {\n \"code\": 1003,\n \"name_en\": \"Nong Chok\",\n \"name_th\": \"หนองจอก\",\n \"province_code\": 10,\n \"subdistricts\": [100301, 100302, 100303, 100304, 100305, 100306, 100307, 100308]\n },\n \"1004\": {\n \"code\": 1004,\n \"name_en\": \"Bang Rak\",\n \"name_th\": \"บางรัก\",\n \"province_code\": 10,\n \"subdistricts\": [100401, 100402, 100403, 100404, 100405]\n },\n \"1005\": {\n \"code\": 1005,\n \"name_en\": \"Bang Khen\",\n \"name_th\": \"บางเขน\",\n \"province_code\": 10,\n \"subdistricts\": [100502, 100508]\n },\n \"1006\": {\n \"code\": 1006,\n \"name_en\": \"Bang Kapi\",\n \"name_th\": \"บางกะปิ\",\n \"province_code\": 10,\n \"subdistricts\": [100601, 100608]\n },\n \"1007\": {\n \"code\": 1007,\n \"name_en\": \"Pathum Wan\",\n \"name_th\": \"ปทุมวัน\",\n \"province_code\": 10,\n \"subdistricts\": [100701, 100702, 100703, 100704]\n },\n \"1008\": {\n \"code\": 1008,\n \"name_en\": \"Pom Prap Sattruphai\",\n \"name_th\": \"ป้อมปราบศัตรูพ่าย\",\n \"province_code\": 10,\n \"subdistricts\": [100801, 100802, 100803, 100804, 100805]\n },\n \"1009\": {\n \"code\": 1009,\n \"name_en\": \"Phra Khanong\",\n \"name_th\": \"พระโขนง\",\n \"province_code\": 10,\n \"subdistricts\": [100905, 100910]\n },\n \"1010\": {\n \"code\": 1010,\n \"name_en\": \"Min Buri\",\n \"name_th\": \"มีนบุรี\",\n \"province_code\": 10,\n \"subdistricts\": [101001, 101002]\n },\n \"1011\": {\n \"code\": 1011,\n \"name_en\": \"Lat Krabang\",\n \"name_th\": \"ลาดกระบัง\",\n \"province_code\": 10,\n \"subdistricts\": [101101, 101102, 101103, 101104, 101105, 101106]\n },\n \"1012\": {\n \"code\": 1012,\n \"name_en\": \"Yannawa\",\n \"name_th\": \"ยานนาวา\",\n \"province_code\": 10,\n \"subdistricts\": [101203, 101204]\n },\n \"1013\": {\n \"code\": 1013,\n \"name_en\": \"Samphanthawong\",\n \"name_th\": \"สัมพันธวงศ์\",\n \"province_code\": 10,\n \"subdistricts\": [101301, 101302, 101303]\n },\n \"1014\": {\n \"code\": 1014,\n \"name_en\": \"Phaya Thai\",\n \"name_th\": \"พญาไท\",\n \"province_code\": 10,\n \"subdistricts\": [101401, 101406]\n },\n \"1015\": {\n \"code\": 1015,\n \"name_en\": \"Thon Buri\",\n \"name_th\": \"ธนบุรี\",\n \"province_code\": 10,\n \"subdistricts\": [101501, 101502, 101503, 101504, 101505, 101506, 101507]\n },\n \"1016\": {\n \"code\": 1016,\n \"name_en\": \"Bangkok Yai\",\n \"name_th\": \"บางกอกใหญ่\",\n \"province_code\": 10,\n \"subdistricts\": [101601, 101602]\n },\n \"1017\": {\n \"code\": 1017,\n \"name_en\": \"Huai Khwang\",\n \"name_th\": \"ห้วยขวาง\",\n \"province_code\": 10,\n \"subdistricts\": [101701, 101702, 101704]\n },\n \"1018\": {\n \"code\": 1018,\n \"name_en\": \"Khlong San\",\n \"name_th\": \"คลองสาน\",\n \"province_code\": 10,\n \"subdistricts\": [101801, 101802, 101803, 101804]\n },\n \"1019\": {\n \"code\": 1019,\n \"name_en\": \"Taling Chan\",\n \"name_th\": \"ตลิ่งชัน\",\n \"province_code\": 10,\n \"subdistricts\": [101901, 101902, 101903, 101904, 101905, 101907]\n },\n \"1020\": {\n \"code\": 1020,\n \"name_en\": \"Bangkok Noi\",\n \"name_th\": \"บางกอกน้อย\",\n \"province_code\": 10,\n \"subdistricts\": [102004, 102005, 102006, 102007, 102009]\n },\n \"1021\": {\n \"code\": 1021,\n \"name_en\": \"Bang Khun Thian\",\n \"name_th\": \"บางขุนเทียน\",\n \"province_code\": 10,\n \"subdistricts\": [102105, 102107]\n },\n \"1022\": {\n \"code\": 1022,\n \"name_en\": \"Phasi Charoen\",\n \"name_th\": \"ภาษีเจริญ\",\n \"province_code\": 10,\n \"subdistricts\": [102201, 102202, 102206, 102207, 102208, 102209, 102210]\n },\n \"1023\": {\n \"code\": 1023,\n \"name_en\": \"Nong Khaem\",\n \"name_th\": \"หนองแขม\",\n \"province_code\": 10,\n \"subdistricts\": [102302, 102303]\n },\n \"1024\": {\n \"code\": 1024,\n \"name_en\": \"Rat Burana\",\n \"name_th\": \"ราษฎร์บูรณะ\",\n \"province_code\": 10,\n \"subdistricts\": [102401, 102402]\n },\n \"1025\": {\n \"code\": 1025,\n \"name_en\": \"Bang Phlat\",\n \"name_th\": \"บางพลัด\",\n \"province_code\": 10,\n \"subdistricts\": [102501, 102502, 102503, 102504]\n },\n \"1026\": {\n \"code\": 1026,\n \"name_en\": \"Din Daeng\",\n \"name_th\": \"ดินแดง\",\n \"province_code\": 10,\n \"subdistricts\": [102601, 102602]\n },\n \"1027\": {\n \"code\": 1027,\n \"name_en\": \"Bung Kum\",\n \"name_th\": \"บึงกุ่ม\",\n \"province_code\": 10,\n \"subdistricts\": [102701, 102704, 102705]\n },\n \"1028\": {\n \"code\": 1028,\n \"name_en\": \"Sa Thon\",\n \"name_th\": \"สาทร\",\n \"province_code\": 10,\n \"subdistricts\": [102801, 102802, 102803]\n },\n \"1029\": {\n \"code\": 1029,\n \"name_en\": \"Bang Su\",\n \"name_th\": \"บางซื่อ\",\n \"province_code\": 10,\n \"subdistricts\": [102901, 102902]\n },\n \"1030\": {\n \"code\": 1030,\n \"name_en\": \"Chatuchak\",\n \"name_th\": \"จตุจักร\",\n \"province_code\": 10,\n \"subdistricts\": [103001, 103002, 103003, 103004, 103005]\n },\n \"1031\": {\n \"code\": 1031,\n \"name_en\": \"Bang Kho Laem\",\n \"name_th\": \"บางคอแหลม\",\n \"province_code\": 10,\n \"subdistricts\": [103101, 103102, 103103]\n },\n \"1032\": {\n \"code\": 1032,\n \"name_en\": \"Prawet\",\n \"name_th\": \"ประเวศ\",\n \"province_code\": 10,\n \"subdistricts\": [103201, 103202, 103203]\n },\n \"1033\": {\n \"code\": 1033,\n \"name_en\": \"Khlong Toei\",\n \"name_th\": \"คลองเตย\",\n \"province_code\": 10,\n \"subdistricts\": [103301, 103302, 103303]\n },\n \"1034\": {\n \"code\": 1034,\n \"name_en\": \"Suan Luang\",\n \"name_th\": \"สวนหลวง\",\n \"province_code\": 10,\n \"subdistricts\": [103401, 103402, 103403]\n },\n \"1035\": {\n \"code\": 1035,\n \"name_en\": \"Chom Thong\",\n \"name_th\": \"จอมทอง\",\n \"province_code\": 10,\n \"subdistricts\": [103501, 103502, 103503, 103504]\n },\n \"1036\": {\n \"code\": 1036,\n \"name_en\": \"Don Mueang\",\n \"name_th\": \"ดอนเมือง\",\n \"province_code\": 10,\n \"subdistricts\": [103602, 103604, 103605]\n },\n \"1037\": {\n \"code\": 1037,\n \"name_en\": \"Rat Thewi\",\n \"name_th\": \"ราชเทวี\",\n \"province_code\": 10,\n \"subdistricts\": [103701, 103702, 103703, 103704]\n },\n \"1038\": {\n \"code\": 1038,\n \"name_en\": \"Lat Phrao\",\n \"name_th\": \"ลาดพร้าว\",\n \"province_code\": 10,\n \"subdistricts\": [103801, 103802]\n },\n \"1039\": {\n \"code\": 1039,\n \"name_en\": \"Watthana\",\n \"name_th\": \"วัฒนา\",\n \"province_code\": 10,\n \"subdistricts\": [103901, 103902, 103903]\n },\n \"1040\": {\n \"code\": 1040,\n \"name_en\": \"Bang Khae\",\n \"name_th\": \"บางแค\",\n \"province_code\": 10,\n \"subdistricts\": [104001, 104002, 104003, 104004]\n },\n \"1041\": {\n \"code\": 1041,\n \"name_en\": \"Lak Si\",\n \"name_th\": \"หลักสี่\",\n \"province_code\": 10,\n \"subdistricts\": [104101, 104102]\n },\n \"1042\": {\n \"code\": 1042,\n \"name_en\": \"Sai Mai\",\n \"name_th\": \"สายไหม\",\n \"province_code\": 10,\n \"subdistricts\": [104201, 104202, 104203]\n },\n \"1043\": {\n \"code\": 1043,\n \"name_en\": \"Khanna Yao\",\n \"name_th\": \"คันนายาว\",\n \"province_code\": 10,\n \"subdistricts\": [104301, 104302]\n },\n \"1044\": {\n \"code\": 1044,\n \"name_en\": \"Saphan Sung\",\n \"name_th\": \"สะพานสูง\",\n \"province_code\": 10,\n \"subdistricts\": [104401, 104402, 104403]\n },\n \"1045\": {\n \"code\": 1045,\n \"name_en\": \"Wang Thong Lang\",\n \"name_th\": \"วังทองหลาง\",\n \"province_code\": 10,\n \"subdistricts\": [104501, 104502, 104503, 104504]\n },\n \"1046\": {\n \"code\": 1046,\n \"name_en\": \"Khlong Sam Wa\",\n \"name_th\": \"คลองสามวา\",\n \"province_code\": 10,\n \"subdistricts\": [104601, 104602, 104603, 104604, 104605]\n },\n \"1047\": {\n \"code\": 1047,\n \"name_en\": \"Bang Na\",\n \"name_th\": \"บางนา\",\n \"province_code\": 10,\n \"subdistricts\": [104702, 104703]\n },\n \"1048\": {\n \"code\": 1048,\n \"name_en\": \"Thawi Watthana\",\n \"name_th\": \"ทวีวัฒนา\",\n \"province_code\": 10,\n \"subdistricts\": [104801, 104802]\n },\n \"1049\": {\n \"code\": 1049,\n \"name_en\": \"Thung Khu\",\n \"name_th\": \"ทุ่งครุ\",\n \"province_code\": 10,\n \"subdistricts\": [104901, 104902]\n },\n \"1050\": {\n \"code\": 1050,\n \"name_en\": \"Bang Bon\",\n \"name_th\": \"บางบอน\",\n \"province_code\": 10,\n \"subdistricts\": [105002, 105003, 105004, 105005]\n },\n \"1101\": {\n \"code\": 1101,\n \"name_en\": \"Mueang Samut Prakan\",\n \"name_th\": \"เมืองสมุทรปราการ\",\n \"province_code\": 11,\n \"subdistricts\": [\n 110101, 110102, 110103, 110104, 110108, 110110, 110111, 110112, 110113, 110114, 110115, 110116, 110117\n ]\n },\n \"1102\": {\n \"code\": 1102,\n \"name_en\": \"Bang Bo\",\n \"name_th\": \"บางบ่อ\",\n \"province_code\": 11,\n \"subdistricts\": [110201, 110202, 110203, 110204, 110205, 110206, 110207, 110208]\n },\n \"1103\": {\n \"code\": 1103,\n \"name_en\": \"Bang Phli\",\n \"name_th\": \"บางพลี\",\n \"province_code\": 11,\n \"subdistricts\": [110301, 110302, 110303, 110304, 110308, 110309]\n },\n \"1104\": {\n \"code\": 1104,\n \"name_en\": \"Phra Pradaeng\",\n \"name_th\": \"พระประแดง\",\n \"province_code\": 11,\n \"subdistricts\": [\n 110401, 110402, 110403, 110404, 110405, 110406, 110407, 110408, 110409, 110410, 110411, 110412, 110413,\n 110414, 110415\n ]\n },\n \"1105\": {\n \"code\": 1105,\n \"name_en\": \"Phra Samut Chedi\",\n \"name_th\": \"พระสมุทรเจดีย์\",\n \"province_code\": 11,\n \"subdistricts\": [110501, 110502, 110503, 110504, 110505]\n },\n \"1106\": {\n \"code\": 1106,\n \"name_en\": \"Bang Sao Thong\",\n \"name_th\": \"บางเสาธง\",\n \"province_code\": 11,\n \"subdistricts\": [110601, 110602, 110603]\n },\n \"1201\": {\n \"code\": 1201,\n \"name_en\": \"Mueang Nonthaburi\",\n \"name_th\": \"เมืองนนทบุรี\",\n \"province_code\": 12,\n \"subdistricts\": [120101, 120102, 120103, 120104, 120105, 120106, 120107, 120108, 120109, 120110]\n },\n \"1202\": {\n \"code\": 1202,\n \"name_en\": \"Bang Kruai\",\n \"name_th\": \"บางกรวย\",\n \"province_code\": 12,\n \"subdistricts\": [120201, 120202, 120203, 120204, 120205, 120206, 120207, 120208, 120209]\n },\n \"1203\": {\n \"code\": 1203,\n \"name_en\": \"Bang Yai\",\n \"name_th\": \"บางใหญ่\",\n \"province_code\": 12,\n \"subdistricts\": [120301, 120302, 120303, 120304, 120305, 120306]\n },\n \"1204\": {\n \"code\": 1204,\n \"name_en\": \"Bang Bua Thong\",\n \"name_th\": \"บางบัวทอง\",\n \"province_code\": 12,\n \"subdistricts\": [120401, 120402, 120403, 120404, 120405, 120406, 120407, 120408]\n },\n \"1205\": {\n \"code\": 1205,\n \"name_en\": \"Sai Noi\",\n \"name_th\": \"ไทรน้อย\",\n \"province_code\": 12,\n \"subdistricts\": [120501, 120502, 120503, 120504, 120505, 120506, 120507]\n },\n \"1206\": {\n \"code\": 1206,\n \"name_en\": \"Pak Kret\",\n \"name_th\": \"ปากเกร็ด\",\n \"province_code\": 12,\n \"subdistricts\": [120601, 120602, 120603, 120604, 120605, 120606, 120607, 120608, 120609, 120610, 120611, 120612]\n },\n \"1301\": {\n \"code\": 1301,\n \"name_en\": \"Mueang Pathum Thani\",\n \"name_th\": \"เมืองปทุมธานี\",\n \"province_code\": 13,\n \"subdistricts\": [\n 130101, 130102, 130103, 130104, 130105, 130106, 130107, 130108, 130109, 130110, 130111, 130112, 130113,\n 130114\n ]\n },\n \"1302\": {\n \"code\": 1302,\n \"name_en\": \"Khlong Luang\",\n \"name_th\": \"คลองหลวง\",\n \"province_code\": 13,\n \"subdistricts\": [130201, 130202, 130203, 130204, 130205, 130206, 130207]\n },\n \"1303\": {\n \"code\": 1303,\n \"name_en\": \"Thanyaburi\",\n \"name_th\": \"ธัญบุรี\",\n \"province_code\": 13,\n \"subdistricts\": [130301, 130302, 130303, 130304, 130305, 130306]\n },\n \"1304\": {\n \"code\": 1304,\n \"name_en\": \"Nong Suea\",\n \"name_th\": \"หนองเสือ\",\n \"province_code\": 13,\n \"subdistricts\": [130401, 130402, 130403, 130404, 130405, 130406, 130407]\n },\n \"1305\": {\n \"code\": 1305,\n \"name_en\": \"Lat Lum Kaeo\",\n \"name_th\": \"ลาดหลุมแก้ว\",\n \"province_code\": 13,\n \"subdistricts\": [130501, 130502, 130503, 130504, 130505, 130506, 130507]\n },\n \"1306\": {\n \"code\": 1306,\n \"name_en\": \"Lam Luk Ka\",\n \"name_th\": \"ลำลูกกา\",\n \"province_code\": 13,\n \"subdistricts\": [130601, 130602, 130603, 130604, 130605, 130606, 130607, 130608]\n },\n \"1307\": {\n \"code\": 1307,\n \"name_en\": \"Sam Khok\",\n \"name_th\": \"สามโคก\",\n \"province_code\": 13,\n \"subdistricts\": [130701, 130702, 130703, 130704, 130705, 130706, 130707, 130708, 130709, 130710, 130711]\n },\n \"1401\": {\n \"code\": 1401,\n \"name_en\": \"Phra Nakhon Si Ayutthaya\",\n \"name_th\": \"พระนครศรีอยุธยา\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140101, 140102, 140103, 140104, 140105, 140106, 140107, 140108, 140109, 140110, 140111, 140112, 140113,\n 140114, 140115, 140116, 140117, 140118, 140119, 140120, 140121\n ]\n },\n \"1402\": {\n \"code\": 1402,\n \"name_en\": \"Tha Ruea\",\n \"name_th\": \"ท่าเรือ\",\n \"province_code\": 14,\n \"subdistricts\": [140201, 140202, 140203, 140204, 140205, 140206, 140207, 140208, 140209, 140210]\n },\n \"1403\": {\n \"code\": 1403,\n \"name_en\": \"Nakhon Luang\",\n \"name_th\": \"นครหลวง\",\n \"province_code\": 14,\n \"subdistricts\": [140301, 140302, 140303, 140304, 140305, 140306, 140307, 140308, 140309, 140310, 140311, 140312]\n },\n \"1404\": {\n \"code\": 1404,\n \"name_en\": \"Bang Sai\",\n \"name_th\": \"บางไทร\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140401, 140402, 140403, 140404, 140405, 140406, 140407, 140408, 140409, 140410, 140411, 140412, 140413,\n 140414, 140415, 140416, 140417, 140418, 140419, 140420, 140421, 140422, 140423\n ]\n },\n \"1405\": {\n \"code\": 1405,\n \"name_en\": \"Bang Ban\",\n \"name_th\": \"บางบาล\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140501, 140502, 140503, 140504, 140505, 140506, 140507, 140508, 140509, 140510, 140511, 140512, 140513,\n 140514, 140515, 140516\n ]\n },\n \"1406\": {\n \"code\": 1406,\n \"name_en\": \"Bang Pa-In\",\n \"name_th\": \"บางปะอิน\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140601, 140602, 140603, 140604, 140605, 140606, 140607, 140608, 140609, 140610, 140611, 140612, 140613,\n 140614, 140615, 140616, 140617, 140618\n ]\n },\n \"1407\": {\n \"code\": 1407,\n \"name_en\": \"Bang Pahan\",\n \"name_th\": \"บางปะหัน\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140701, 140702, 140703, 140704, 140705, 140706, 140707, 140708, 140709, 140710, 140711, 140712, 140713,\n 140714, 140715, 140716, 140717\n ]\n },\n \"1408\": {\n \"code\": 1408,\n \"name_en\": \"Phak Hai\",\n \"name_th\": \"ผักไห่\",\n \"province_code\": 14,\n \"subdistricts\": [\n 140801, 140802, 140803, 140804, 140805, 140806, 140807, 140808, 140809, 140810, 140811, 140812, 140813,\n 140814, 140815, 140816\n ]\n },\n \"1409\": {\n \"code\": 1409,\n \"name_en\": \"Phachi\",\n \"name_th\": \"ภาชี\",\n \"province_code\": 14,\n \"subdistricts\": [140901, 140902, 140903, 140904, 140905, 140906, 140907, 140908]\n },\n \"1410\": {\n \"code\": 1410,\n \"name_en\": \"Lat Bua Luang\",\n \"name_th\": \"ลาดบัวหลวง\",\n \"province_code\": 14,\n \"subdistricts\": [141001, 141002, 141003, 141004, 141005, 141006, 141007]\n },\n \"1411\": {\n \"code\": 1411,\n \"name_en\": \"Wang Noi\",\n \"name_th\": \"วังน้อย\",\n \"province_code\": 14,\n \"subdistricts\": [141101, 141102, 141103, 141104, 141105, 141106, 141107, 141108, 141109, 141110]\n },\n \"1412\": {\n \"code\": 1412,\n \"name_en\": \"Sena\",\n \"name_th\": \"เสนา\",\n \"province_code\": 14,\n \"subdistricts\": [\n 141201, 141202, 141203, 141204, 141205, 141206, 141207, 141208, 141209, 141210, 141211, 141212, 141213,\n 141214, 141215, 141216, 141217\n ]\n },\n \"1413\": {\n \"code\": 1413,\n \"name_en\": \"Bang Sai\",\n \"name_th\": \"บางซ้าย\",\n \"province_code\": 14,\n \"subdistricts\": [141301, 141302, 141303, 141304, 141305, 141306]\n },\n \"1414\": {\n \"code\": 1414,\n \"name_en\": \"Uthai\",\n \"name_th\": \"อุทัย\",\n \"province_code\": 14,\n \"subdistricts\": [141401, 141402, 141403, 141404, 141405, 141406, 141407, 141408, 141409, 141410, 141411]\n },\n \"1415\": {\n \"code\": 1415,\n \"name_en\": \"Maha Rat\",\n \"name_th\": \"มหาราช\",\n \"province_code\": 14,\n \"subdistricts\": [141501, 141502, 141503, 141504, 141505, 141506, 141507, 141508, 141509, 141510, 141511, 141512]\n },\n \"1416\": {\n \"code\": 1416,\n \"name_en\": \"Ban Phraek\",\n \"name_th\": \"บ้านแพรก\",\n \"province_code\": 14,\n \"subdistricts\": [141601, 141602, 141603, 141604, 141605]\n },\n \"1501\": {\n \"code\": 1501,\n \"name_en\": \"Mueang Ang Thong\",\n \"name_th\": \"เมืองอ่างทอง\",\n \"province_code\": 15,\n \"subdistricts\": [\n 150101, 150102, 150103, 150104, 150105, 150106, 150107, 150108, 150109, 150110, 150111, 150112, 150113,\n 150114\n ]\n },\n \"1502\": {\n \"code\": 1502,\n \"name_en\": \"Chaiyo\",\n \"name_th\": \"ไชโย\",\n \"province_code\": 15,\n \"subdistricts\": [150201, 150202, 150203, 150204, 150205, 150206, 150207, 150208, 150209]\n },\n \"1503\": {\n \"code\": 1503,\n \"name_en\": \"Pa Mok\",\n \"name_th\": \"ป่าโมก\",\n \"province_code\": 15,\n \"subdistricts\": [150301, 150302, 150303, 150304, 150305, 150306, 150307, 150308]\n },\n \"1504\": {\n \"code\": 1504,\n \"name_en\": \"Pho Thong\",\n \"name_th\": \"โพธิ์ทอง\",\n \"province_code\": 15,\n \"subdistricts\": [\n 150401, 150402, 150403, 150404, 150405, 150406, 150407, 150408, 150409, 150410, 150411, 150412, 150413,\n 150414, 150415\n ]\n },\n \"1505\": {\n \"code\": 1505,\n \"name_en\": \"Sawaeng Ha\",\n \"name_th\": \"แสวงหา\",\n \"province_code\": 15,\n \"subdistricts\": [150501, 150502, 150503, 150504, 150505, 150506, 150507]\n },\n \"1506\": {\n \"code\": 1506,\n \"name_en\": \"Wiset Chai Chan\",\n \"name_th\": \"วิเศษชัยชาญ\",\n \"province_code\": 15,\n \"subdistricts\": [\n 150601, 150602, 150603, 150604, 150605, 150606, 150607, 150608, 150609, 150610, 150611, 150612, 150613,\n 150614, 150615\n ]\n },\n \"1507\": {\n \"code\": 1507,\n \"name_en\": \"Samko\",\n \"name_th\": \"สามโก้\",\n \"province_code\": 15,\n \"subdistricts\": [150701, 150702, 150703, 150704, 150705]\n },\n \"1601\": {\n \"code\": 1601,\n \"name_en\": \"Mueang Lop Buri\",\n \"name_th\": \"เมืองลพบุรี\",\n \"province_code\": 16,\n \"subdistricts\": [\n 160101, 160102, 160103, 160104, 160105, 160106, 160107, 160108, 160109, 160110, 160111, 160112, 160114,\n 160115, 160116, 160117, 160118, 160119, 160120, 160121, 160122, 160123, 160124, 160125\n ]\n },\n \"1602\": {\n \"code\": 1602,\n \"name_en\": \"Phatthana Nikhom\",\n \"name_th\": \"พัฒนานิคม\",\n \"province_code\": 16,\n \"subdistricts\": [160201, 160202, 160203, 160204, 160205, 160206, 160207, 160208, 160209]\n },\n \"1603\": {\n \"code\": 1603,\n \"name_en\": \"Khok Samrong\",\n \"name_th\": \"โคกสำโรง\",\n \"province_code\": 16,\n \"subdistricts\": [\n 160301, 160302, 160303, 160304, 160305, 160306, 160307, 160308, 160309, 160310, 160318, 160320, 160322\n ]\n },\n \"1604\": {\n \"code\": 1604,\n \"name_en\": \"Chai Badan\",\n \"name_th\": \"ชัยบาดาล\",\n \"province_code\": 16,\n \"subdistricts\": [\n 160401, 160402, 160403, 160404, 160405, 160406, 160407, 160408, 160409, 160410, 160411, 160412, 160414,\n 160417, 160418, 160419, 160422\n ]\n },\n \"1605\": {\n \"code\": 1605,\n \"name_en\": \"Tha Wung\",\n \"name_th\": \"ท่าวุ้ง\",\n \"province_code\": 16,\n \"subdistricts\": [160501, 160502, 160503, 160504, 160505, 160506, 160507, 160508, 160509, 160510, 160511]\n },\n \"1606\": {\n \"code\": 1606,\n \"name_en\": \"Ban Mi\",\n \"name_th\": \"บ้านหมี่\",\n \"province_code\": 16,\n \"subdistricts\": [\n 160601, 160602, 160603, 160604, 160605, 160606, 160607, 160608, 160609, 160610, 160611, 160612, 160613,\n 160614, 160615, 160616, 160617, 160618, 160619, 160620, 160621, 160622\n ]\n },\n \"1607\": {\n \"code\": 1607,\n \"name_en\": \"Tha Luang\",\n \"name_th\": \"ท่าหลวง\",\n \"province_code\": 16,\n \"subdistricts\": [160701, 160702, 160703, 160704, 160705, 160706]\n },\n \"1608\": {\n \"code\": 1608,\n \"name_en\": \"Sa Bot\",\n \"name_th\": \"สระโบสถ์\",\n \"province_code\": 16,\n \"subdistricts\": [160801, 160802, 160803, 160804, 160805]\n },\n \"1609\": {\n \"code\": 1609,\n \"name_en\": \"Khok Charoen\",\n \"name_th\": \"โคกเจริญ\",\n \"province_code\": 16,\n \"subdistricts\": [160901, 160902, 160903, 160904, 160905]\n },\n \"1610\": {\n \"code\": 1610,\n \"name_en\": \"Lam Sonthi\",\n \"name_th\": \"ลำสนธิ\",\n \"province_code\": 16,\n \"subdistricts\": [161001, 161002, 161003, 161004, 161005, 161006]\n },\n \"1611\": {\n \"code\": 1611,\n \"name_en\": \"Nong Muang\",\n \"name_th\": \"หนองม่วง\",\n \"province_code\": 16,\n \"subdistricts\": [161101, 161102, 161103, 161104, 161105, 161106]\n },\n \"1701\": {\n \"code\": 1701,\n \"name_en\": \"Mueang Sing Buri\",\n \"name_th\": \"เมืองสิงห์บุรี\",\n \"province_code\": 17,\n \"subdistricts\": [170101, 170102, 170103, 170104, 170105, 170106, 170107, 170108]\n },\n \"1702\": {\n \"code\": 1702,\n \"name_en\": \"Bang Rachan\",\n \"name_th\": \"บางระจัน\",\n \"province_code\": 17,\n \"subdistricts\": [170201, 170202, 170203, 170204, 170205, 170206, 170207, 170208]\n },\n \"1703\": {\n \"code\": 1703,\n \"name_en\": \"Khai Bang Rachan\",\n \"name_th\": \"ค่ายบางระจัน\",\n \"province_code\": 17,\n \"subdistricts\": [170301, 170302, 170303, 170304, 170305, 170306]\n },\n \"1704\": {\n \"code\": 1704,\n \"name_en\": \"Phrom Buri\",\n \"name_th\": \"พรหมบุรี\",\n \"province_code\": 17,\n \"subdistricts\": [170401, 170402, 170403, 170404, 170405, 170406, 170407]\n },\n \"1705\": {\n \"code\": 1705,\n \"name_en\": \"Tha Chang\",\n \"name_th\": \"ท่าช้าง\",\n \"province_code\": 17,\n \"subdistricts\": [170501, 170502, 170503, 170504]\n },\n \"1706\": {\n \"code\": 1706,\n \"name_en\": \"In Buri\",\n \"name_th\": \"อินทร์บุรี\",\n \"province_code\": 17,\n \"subdistricts\": [170601, 170602, 170603, 170604, 170605, 170606, 170607, 170608, 170609, 170610]\n },\n \"1801\": {\n \"code\": 1801,\n \"name_en\": \"Mueang Chai Nat\",\n \"name_th\": \"เมืองชัยนาท\",\n \"province_code\": 18,\n \"subdistricts\": [180101, 180102, 180103, 180104, 180105, 180106, 180107, 180108, 180109]\n },\n \"1802\": {\n \"code\": 1802,\n \"name_en\": \"Manorom\",\n \"name_th\": \"มโนรมย์\",\n \"province_code\": 18,\n \"subdistricts\": [180201, 180202, 180203, 180204, 180205, 180206, 180207]\n },\n \"1803\": {\n \"code\": 1803,\n \"name_en\": \"Wat Sing\",\n \"name_th\": \"วัดสิงห์\",\n \"province_code\": 18,\n \"subdistricts\": [180301, 180302, 180303, 180304, 180306, 180307, 180311]\n },\n \"1804\": {\n \"code\": 1804,\n \"name_en\": \"Sapphaya\",\n \"name_th\": \"สรรพยา\",\n \"province_code\": 18,\n \"subdistricts\": [180401, 180402, 180403, 180404, 180405, 180406, 180407]\n },\n \"1805\": {\n \"code\": 1805,\n \"name_en\": \"Sankhaburi\",\n \"name_th\": \"สรรคบุรี\",\n \"province_code\": 18,\n \"subdistricts\": [180501, 180502, 180503, 180504, 180505, 180506, 180507, 180508]\n },\n \"1806\": {\n \"code\": 1806,\n \"name_en\": \"Hankha\",\n \"name_th\": \"หันคา\",\n \"province_code\": 18,\n \"subdistricts\": [180601, 180602, 180605, 180606, 180607, 180608, 180609, 180611]\n },\n \"1807\": {\n \"code\": 1807,\n \"name_en\": \"Nong Mamong\",\n \"name_th\": \"หนองมะโมง\",\n \"province_code\": 18,\n \"subdistricts\"