@orrery/core 0.1.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.
- package/README.md +221 -0
- package/dist/chunk-6PJQHSY6.js +292 -0
- package/dist/chunk-DGSIRAXF.js +698 -0
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/chunk-KD6TCTRW.js +12084 -0
- package/dist/chunk-OCPJGMZC.js +331 -0
- package/dist/chunk-TRSIZZ73.js +81 -0
- package/dist/chunk-VJDUZB5T.js +870 -0
- package/dist/cities.d.ts +19 -0
- package/dist/cities.js +15 -0
- package/dist/constants.d.ts +57 -0
- package/dist/constants.js +105 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +137 -0
- package/dist/natal.d.ts +29 -0
- package/dist/natal.js +31 -0
- package/dist/pillars.d.ts +67 -0
- package/dist/pillars.js +42 -0
- package/dist/saju.d.ts +6 -0
- package/dist/saju.js +9 -0
- package/dist/types.d.ts +249 -0
- package/dist/types.js +0 -0
- package/dist/ziwei.d.ts +13 -0
- package/dist/ziwei.js +12 -0
- package/package.json +62 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// src/cities.ts
|
|
2
|
+
var JAMO_TO_INITIAL = {
|
|
3
|
+
12593: 0,
|
|
4
|
+
12594: 1,
|
|
5
|
+
12596: 2,
|
|
6
|
+
12599: 3,
|
|
7
|
+
12600: 4,
|
|
8
|
+
12601: 5,
|
|
9
|
+
12609: 6,
|
|
10
|
+
12610: 7,
|
|
11
|
+
12611: 8,
|
|
12
|
+
12613: 9,
|
|
13
|
+
12614: 10,
|
|
14
|
+
12615: 11,
|
|
15
|
+
12616: 12,
|
|
16
|
+
12617: 13,
|
|
17
|
+
12618: 14,
|
|
18
|
+
12619: 15,
|
|
19
|
+
12620: 16,
|
|
20
|
+
12621: 17,
|
|
21
|
+
12622: 18
|
|
22
|
+
};
|
|
23
|
+
function getInitialIndex(char) {
|
|
24
|
+
const code = char.charCodeAt(0);
|
|
25
|
+
if (code >= 44032 && code <= 55203) {
|
|
26
|
+
return Math.floor((code - 44032) / (21 * 28));
|
|
27
|
+
}
|
|
28
|
+
if (code in JAMO_TO_INITIAL) {
|
|
29
|
+
return JAMO_TO_INITIAL[code];
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
function isJamo(char) {
|
|
34
|
+
return char.charCodeAt(0) in JAMO_TO_INITIAL;
|
|
35
|
+
}
|
|
36
|
+
function isAllChosung(query) {
|
|
37
|
+
return query.length > 0 && [...query].every(isJamo);
|
|
38
|
+
}
|
|
39
|
+
function matchChosung(name, query) {
|
|
40
|
+
if (query.length > name.length) return false;
|
|
41
|
+
for (let i = 0; i < query.length; i++) {
|
|
42
|
+
const qIdx = JAMO_TO_INITIAL[query.charCodeAt(i)];
|
|
43
|
+
const nIdx = getInitialIndex(name[i]);
|
|
44
|
+
if (qIdx === void 0 || nIdx === null || qIdx !== nIdx) return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
var KOREAN_CITIES = [
|
|
49
|
+
// 특별/광역시
|
|
50
|
+
{ name: "\uC11C\uC6B8", lat: 37.5665, lon: 126.978 },
|
|
51
|
+
{ name: "\uBD80\uC0B0", lat: 35.1796, lon: 129.0756 },
|
|
52
|
+
{ name: "\uC778\uCC9C", lat: 37.4563, lon: 126.7052 },
|
|
53
|
+
{ name: "\uB300\uAD6C", lat: 35.8714, lon: 128.6014 },
|
|
54
|
+
{ name: "\uB300\uC804", lat: 36.3504, lon: 127.3845 },
|
|
55
|
+
{ name: "\uAD11\uC8FC", lat: 35.1595, lon: 126.8526 },
|
|
56
|
+
{ name: "\uC6B8\uC0B0", lat: 35.5384, lon: 129.3114 },
|
|
57
|
+
{ name: "\uC138\uC885", lat: 36.48, lon: 127.259 },
|
|
58
|
+
// 경기도
|
|
59
|
+
{ name: "\uC218\uC6D0", lat: 37.2636, lon: 127.0286 },
|
|
60
|
+
{ name: "\uACE0\uC591", lat: 37.6584, lon: 126.832 },
|
|
61
|
+
{ name: "\uC6A9\uC778", lat: 37.2411, lon: 127.1776 },
|
|
62
|
+
{ name: "\uC131\uB0A8", lat: 37.4386, lon: 127.1378 },
|
|
63
|
+
{ name: "\uBD80\uCC9C", lat: 37.5034, lon: 126.766 },
|
|
64
|
+
{ name: "\uC548\uC0B0", lat: 37.3219, lon: 126.8309 },
|
|
65
|
+
{ name: "\uC548\uC591", lat: 37.3943, lon: 126.9568 },
|
|
66
|
+
{ name: "\uB0A8\uC591\uC8FC", lat: 37.636, lon: 127.2165 },
|
|
67
|
+
{ name: "\uD654\uC131", lat: 37.1996, lon: 126.8312 },
|
|
68
|
+
{ name: "\uD3C9\uD0DD", lat: 36.9921, lon: 127.0857 },
|
|
69
|
+
{ name: "\uC758\uC815\uBD80", lat: 37.7381, lon: 127.0338 },
|
|
70
|
+
{ name: "\uC2DC\uD765", lat: 37.3801, lon: 126.8032 },
|
|
71
|
+
{ name: "\uD30C\uC8FC", lat: 37.759, lon: 126.7802 },
|
|
72
|
+
{ name: "\uAE40\uD3EC", lat: 37.6153, lon: 126.7156 },
|
|
73
|
+
{ name: "\uAD11\uBA85", lat: 37.4786, lon: 126.8646 },
|
|
74
|
+
{ name: "\uC774\uCC9C", lat: 37.272, lon: 127.435 },
|
|
75
|
+
// 강원도
|
|
76
|
+
{ name: "\uCD98\uCC9C", lat: 37.8813, lon: 127.7299 },
|
|
77
|
+
{ name: "\uC6D0\uC8FC", lat: 37.3422, lon: 127.9202 },
|
|
78
|
+
{ name: "\uAC15\uB989", lat: 37.7519, lon: 128.8761 },
|
|
79
|
+
{ name: "\uC18D\uCD08", lat: 38.207, lon: 128.5918 },
|
|
80
|
+
// 충청도
|
|
81
|
+
{ name: "\uCCAD\uC8FC", lat: 36.6424, lon: 127.489 },
|
|
82
|
+
{ name: "\uCC9C\uC548", lat: 36.8152, lon: 127.1139 },
|
|
83
|
+
{ name: "\uCDA9\uC8FC", lat: 36.991, lon: 127.9259 },
|
|
84
|
+
{ name: "\uC81C\uCC9C", lat: 37.1326, lon: 128.191 },
|
|
85
|
+
{ name: "\uC544\uC0B0", lat: 36.7898, lon: 127.0018 },
|
|
86
|
+
// 전라도
|
|
87
|
+
{ name: "\uC804\uC8FC", lat: 35.8242, lon: 127.148 },
|
|
88
|
+
{ name: "\uBAA9\uD3EC", lat: 34.8118, lon: 126.3922 },
|
|
89
|
+
{ name: "\uC5EC\uC218", lat: 34.7604, lon: 127.6622 },
|
|
90
|
+
{ name: "\uC21C\uCC9C", lat: 34.9505, lon: 127.4873 },
|
|
91
|
+
{ name: "\uAD70\uC0B0", lat: 35.9677, lon: 126.737 },
|
|
92
|
+
{ name: "\uC775\uC0B0", lat: 35.9483, lon: 126.9576 },
|
|
93
|
+
// 경상도
|
|
94
|
+
{ name: "\uD3EC\uD56D", lat: 36.019, lon: 129.3435 },
|
|
95
|
+
{ name: "\uACBD\uC8FC", lat: 35.8562, lon: 129.2247 },
|
|
96
|
+
{ name: "\uAE40\uD574", lat: 35.2285, lon: 128.8894 },
|
|
97
|
+
{ name: "\uCC3D\uC6D0", lat: 35.2281, lon: 128.6811 },
|
|
98
|
+
{ name: "\uC9C4\uC8FC", lat: 35.1798, lon: 128.1076 },
|
|
99
|
+
{ name: "\uAD6C\uBBF8", lat: 36.1197, lon: 128.3446 },
|
|
100
|
+
{ name: "\uC548\uB3D9", lat: 36.5684, lon: 128.7294 },
|
|
101
|
+
// 제주도
|
|
102
|
+
{ name: "\uC81C\uC8FC", lat: 33.4996, lon: 126.5312 },
|
|
103
|
+
{ name: "\uC11C\uADC0\uD3EC", lat: 33.2542, lon: 126.56 }
|
|
104
|
+
];
|
|
105
|
+
var WORLD_CITIES = [
|
|
106
|
+
// ── 동아시아 ──
|
|
107
|
+
{ name: "\uB3C4\uCFC4", country: "\uC77C\uBCF8", lat: 35.6762, lon: 139.6503 },
|
|
108
|
+
{ name: "\uC624\uC0AC\uCE74", country: "\uC77C\uBCF8", lat: 34.6937, lon: 135.5023 },
|
|
109
|
+
{ name: "\uAD50\uD1A0", country: "\uC77C\uBCF8", lat: 35.0116, lon: 135.7681 },
|
|
110
|
+
{ name: "\uD6C4\uCFE0\uC624\uCE74", country: "\uC77C\uBCF8", lat: 33.5904, lon: 130.4017 },
|
|
111
|
+
{ name: "\uC0BF\uD3EC\uB85C", country: "\uC77C\uBCF8", lat: 43.0618, lon: 141.3545 },
|
|
112
|
+
{ name: "\uB098\uACE0\uC57C", country: "\uC77C\uBCF8", lat: 35.1815, lon: 136.9066 },
|
|
113
|
+
{ name: "\uBCA0\uC774\uC9D5", country: "\uC911\uAD6D", lat: 39.9042, lon: 116.4074 },
|
|
114
|
+
{ name: "\uC0C1\uD558\uC774", country: "\uC911\uAD6D", lat: 31.2304, lon: 121.4737 },
|
|
115
|
+
{ name: "\uAD11\uC800\uC6B0", country: "\uC911\uAD6D", lat: 23.1291, lon: 113.2644 },
|
|
116
|
+
{ name: "\uC120\uC804", country: "\uC911\uAD6D", lat: 22.5431, lon: 114.0579 },
|
|
117
|
+
{ name: "\uCCAD\uB450", country: "\uC911\uAD6D", lat: 30.5728, lon: 104.0668 },
|
|
118
|
+
{ name: "\uCDA9\uCE6D", country: "\uC911\uAD6D", lat: 29.4316, lon: 106.9123 },
|
|
119
|
+
{ name: "\uC2DC\uC548", country: "\uC911\uAD6D", lat: 34.3416, lon: 108.9398 },
|
|
120
|
+
{ name: "\uD64D\uCF69", country: "\uC911\uAD6D", lat: 22.3193, lon: 114.1694 },
|
|
121
|
+
{ name: "\uD0C0\uC774\uBCA0\uC774", country: "\uB300\uB9CC", lat: 25.033, lon: 121.5654 },
|
|
122
|
+
{ name: "\uC6B8\uB780\uBC14\uD1A0\uB974", country: "\uBABD\uACE8", lat: 47.8864, lon: 106.9057 },
|
|
123
|
+
{ name: "\uD3C9\uC591", country: "\uBD81\uD55C", lat: 39.0392, lon: 125.7625 },
|
|
124
|
+
// ── 동남아시아 ──
|
|
125
|
+
{ name: "\uBC29\uCF55", country: "\uD0DC\uAD6D", lat: 13.7563, lon: 100.5018 },
|
|
126
|
+
{ name: "\uD558\uB178\uC774", country: "\uBCA0\uD2B8\uB0A8", lat: 21.0278, lon: 105.8342 },
|
|
127
|
+
{ name: "\uD638\uCE58\uBBFC", country: "\uBCA0\uD2B8\uB0A8", lat: 10.8231, lon: 106.6297 },
|
|
128
|
+
{ name: "\uB2E4\uB0AD", country: "\uBCA0\uD2B8\uB0A8", lat: 16.0544, lon: 108.2022 },
|
|
129
|
+
{ name: "\uC790\uCE74\uB974\uD0C0", country: "\uC778\uB3C4\uB124\uC2DC\uC544", lat: -6.2088, lon: 106.8456 },
|
|
130
|
+
{ name: "\uBC1C\uB9AC", country: "\uC778\uB3C4\uB124\uC2DC\uC544", lat: -8.3405, lon: 115.092 },
|
|
131
|
+
{ name: "\uC2F1\uAC00\uD3EC\uB974", country: "\uC2F1\uAC00\uD3EC\uB974", lat: 1.3521, lon: 103.8198 },
|
|
132
|
+
{ name: "\uCFE0\uC54C\uB77C\uB8F8\uD478\uB974", country: "\uB9D0\uB808\uC774\uC2DC\uC544", lat: 3.139, lon: 101.6869 },
|
|
133
|
+
{ name: "\uB9C8\uB2D0\uB77C", country: "\uD544\uB9AC\uD540", lat: 14.5995, lon: 120.9842 },
|
|
134
|
+
{ name: "\uC138\uBD80", country: "\uD544\uB9AC\uD540", lat: 10.3157, lon: 123.8854 },
|
|
135
|
+
{ name: "\uC591\uACE4", country: "\uBBF8\uC580\uB9C8", lat: 16.8661, lon: 96.1951 },
|
|
136
|
+
{ name: "\uD504\uB188\uD39C", country: "\uCE84\uBCF4\uB514\uC544", lat: 11.5564, lon: 104.9282 },
|
|
137
|
+
{ name: "\uBE44\uC5D4\uD2F0\uC548", country: "\uB77C\uC624\uC2A4", lat: 17.9757, lon: 102.6331 },
|
|
138
|
+
// ── 남아시아 ──
|
|
139
|
+
{ name: "\uB274\uB378\uB9AC", country: "\uC778\uB3C4", lat: 28.6139, lon: 77.209 },
|
|
140
|
+
{ name: "\uBB44\uBC14\uC774", country: "\uC778\uB3C4", lat: 19.076, lon: 72.8777 },
|
|
141
|
+
{ name: "\uBCB5\uAC08\uB8E8\uB8E8", country: "\uC778\uB3C4", lat: 12.9716, lon: 77.5946 },
|
|
142
|
+
{ name: "\uB2E4\uCE74", country: "\uBC29\uAE00\uB77C\uB370\uC2DC", lat: 23.8103, lon: 90.4125 },
|
|
143
|
+
{ name: "\uC774\uC2AC\uB77C\uB9C8\uBC14\uB4DC", country: "\uD30C\uD0A4\uC2A4\uD0C4", lat: 33.6844, lon: 73.0479 },
|
|
144
|
+
{ name: "\uCE74\uB77C\uCE58", country: "\uD30C\uD0A4\uC2A4\uD0C4", lat: 24.8607, lon: 67.0011 },
|
|
145
|
+
{ name: "\uCE74\uD2B8\uB9CC\uB450", country: "\uB124\uD314", lat: 27.7172, lon: 85.324 },
|
|
146
|
+
{ name: "\uCF5C\uB86C\uBCF4", country: "\uC2A4\uB9AC\uB791\uCE74", lat: 6.9271, lon: 79.8612 },
|
|
147
|
+
// ── 중앙아시아 / 서아시아 ──
|
|
148
|
+
{ name: "\uC544\uC2A4\uD0C0\uB098", country: "\uCE74\uC790\uD750\uC2A4\uD0C4", lat: 51.1694, lon: 71.4491 },
|
|
149
|
+
{ name: "\uC54C\uB9C8\uD2F0", country: "\uCE74\uC790\uD750\uC2A4\uD0C4", lat: 43.222, lon: 76.8512 },
|
|
150
|
+
{ name: "\uD0C0\uC288\uCF04\uD2B8", country: "\uC6B0\uC988\uBCA0\uD0A4\uC2A4\uD0C4", lat: 41.2995, lon: 69.2401 },
|
|
151
|
+
{ name: "\uBE44\uC288\uCF00\uD06C", country: "\uD0A4\uB974\uAE30\uC2A4\uC2A4\uD0C4", lat: 42.8746, lon: 74.5698 },
|
|
152
|
+
{ name: "\uB450\uC0E8\uBCA0", country: "\uD0C0\uC9C0\uD0A4\uC2A4\uD0C4", lat: 38.5598, lon: 68.7738 },
|
|
153
|
+
{ name: "\uC544\uC2DC\uAC00\uBC14\uD2B8", country: "\uD22C\uB974\uD06C\uBA54\uB2C8\uC2A4\uD0C4", lat: 37.9601, lon: 58.3261 },
|
|
154
|
+
{ name: "\uD14C\uD5E4\uB780", country: "\uC774\uB780", lat: 35.6892, lon: 51.389 },
|
|
155
|
+
{ name: "\uBC14\uADF8\uB2E4\uB4DC", country: "\uC774\uB77C\uD06C", lat: 33.3128, lon: 44.3615 },
|
|
156
|
+
{ name: "\uB9AC\uC57C\uB4DC", country: "\uC0AC\uC6B0\uB514\uC544\uB77C\uBE44\uC544", lat: 24.7136, lon: 46.6753 },
|
|
157
|
+
{ name: "\uC81C\uB2E4", country: "\uC0AC\uC6B0\uB514\uC544\uB77C\uBE44\uC544", lat: 21.4858, lon: 39.1925 },
|
|
158
|
+
{ name: "\uB450\uBC14\uC774", country: "\uC544\uB78D\uC5D0\uBBF8\uB9AC\uD2B8", lat: 25.2048, lon: 55.2708 },
|
|
159
|
+
{ name: "\uC544\uBD80\uB2E4\uBE44", country: "\uC544\uB78D\uC5D0\uBBF8\uB9AC\uD2B8", lat: 24.4539, lon: 54.3773 },
|
|
160
|
+
{ name: "\uB3C4\uD558", country: "\uCE74\uD0C0\uB974", lat: 25.2854, lon: 51.531 },
|
|
161
|
+
{ name: "\uCFE0\uC6E8\uC774\uD2B8\uC2DC\uD2F0", country: "\uCFE0\uC6E8\uC774\uD2B8", lat: 29.3759, lon: 47.9774 },
|
|
162
|
+
{ name: "\uC559\uCE74\uB77C", country: "\uD280\uB974\uD0A4\uC608", lat: 39.9334, lon: 32.8597 },
|
|
163
|
+
{ name: "\uC774\uC2A4\uD0C4\uBD88", country: "\uD280\uB974\uD0A4\uC608", lat: 41.0082, lon: 28.9784 },
|
|
164
|
+
{ name: "\uD154\uC544\uBE44\uBE0C", country: "\uC774\uC2A4\uB77C\uC5D8", lat: 32.0853, lon: 34.7818 },
|
|
165
|
+
{ name: "\uC608\uB8E8\uC0B4\uB818", country: "\uC774\uC2A4\uB77C\uC5D8", lat: 31.7683, lon: 35.2137 },
|
|
166
|
+
{ name: "\uBCA0\uC774\uB8E8\uD2B8", country: "\uB808\uBC14\uB17C", lat: 33.8938, lon: 35.5018 },
|
|
167
|
+
{ name: "\uC554\uB9CC", country: "\uC694\uB974\uB2E8", lat: 31.9454, lon: 35.9284 },
|
|
168
|
+
{ name: "\uB2E4\uB9C8\uC2A4\uCFE0\uC2A4", country: "\uC2DC\uB9AC\uC544", lat: 33.5138, lon: 36.2765 },
|
|
169
|
+
{ name: "\uD2B8\uBE4C\uB9AC\uC2DC", country: "\uC870\uC9C0\uC544", lat: 41.7151, lon: 44.8271 },
|
|
170
|
+
{ name: "\uBC14\uCFE0", country: "\uC544\uC81C\uB974\uBC14\uC774\uC794", lat: 40.4093, lon: 49.8671 },
|
|
171
|
+
{ name: "\uC608\uB808\uBC18", country: "\uC544\uB974\uBA54\uB2C8\uC544", lat: 40.1792, lon: 44.4991 },
|
|
172
|
+
// ── 서유럽 ──
|
|
173
|
+
{ name: "\uB7F0\uB358", country: "\uC601\uAD6D", lat: 51.5074, lon: -0.1278 },
|
|
174
|
+
{ name: "\uC5D0\uB4E0\uBC84\uB7EC", country: "\uC601\uAD6D", lat: 55.9533, lon: -3.1883 },
|
|
175
|
+
{ name: "\uB9E8\uCCB4\uC2A4\uD130", country: "\uC601\uAD6D", lat: 53.4808, lon: -2.2426 },
|
|
176
|
+
{ name: "\uD30C\uB9AC", country: "\uD504\uB791\uC2A4", lat: 48.8566, lon: 2.3522 },
|
|
177
|
+
{ name: "\uB9C8\uB974\uC138\uC720", country: "\uD504\uB791\uC2A4", lat: 43.2965, lon: 5.3698 },
|
|
178
|
+
{ name: "\uB9AC\uC639", country: "\uD504\uB791\uC2A4", lat: 45.764, lon: 4.8357 },
|
|
179
|
+
{ name: "\uBCA0\uB97C\uB9B0", country: "\uB3C5\uC77C", lat: 52.52, lon: 13.405 },
|
|
180
|
+
{ name: "\uBB8C\uD5E8", country: "\uB3C5\uC77C", lat: 48.1351, lon: 11.582 },
|
|
181
|
+
{ name: "\uD568\uBD80\uB974\uD06C", country: "\uB3C5\uC77C", lat: 53.5511, lon: 9.9937 },
|
|
182
|
+
{ name: "\uD504\uB791\uD06C\uD478\uB974\uD2B8", country: "\uB3C5\uC77C", lat: 50.1109, lon: 8.6821 },
|
|
183
|
+
{ name: "\uC554\uC2A4\uD14C\uB974\uB2F4", country: "\uB124\uB35C\uB780\uB4DC", lat: 52.3676, lon: 4.9041 },
|
|
184
|
+
{ name: "\uBE0C\uB93C\uC140", country: "\uBCA8\uAE30\uC5D0", lat: 50.8503, lon: 4.3517 },
|
|
185
|
+
{ name: "\uB8E9\uC148\uBD80\uB974\uD06C", country: "\uB8E9\uC148\uBD80\uB974\uD06C", lat: 49.6117, lon: 6.1319 },
|
|
186
|
+
// ── 남유럽 ──
|
|
187
|
+
{ name: "\uB9C8\uB4DC\uB9AC\uB4DC", country: "\uC2A4\uD398\uC778", lat: 40.4168, lon: -3.7038 },
|
|
188
|
+
{ name: "\uBC14\uB974\uC140\uB85C\uB098", country: "\uC2A4\uD398\uC778", lat: 41.3874, lon: 2.1686 },
|
|
189
|
+
{ name: "\uB85C\uB9C8", country: "\uC774\uD0C8\uB9AC\uC544", lat: 41.9028, lon: 12.4964 },
|
|
190
|
+
{ name: "\uBC00\uB77C\uB178", country: "\uC774\uD0C8\uB9AC\uC544", lat: 45.4642, lon: 9.19 },
|
|
191
|
+
{ name: "\uB098\uD3F4\uB9AC", country: "\uC774\uD0C8\uB9AC\uC544", lat: 40.8518, lon: 14.2681 },
|
|
192
|
+
{ name: "\uB9AC\uC2A4\uBCF8", country: "\uD3EC\uB974\uD22C\uAC08", lat: 38.7223, lon: -9.1393 },
|
|
193
|
+
{ name: "\uC544\uD14C\uB124", country: "\uADF8\uB9AC\uC2A4", lat: 37.9838, lon: 23.7275 },
|
|
194
|
+
// ── 중유럽 ──
|
|
195
|
+
{ name: "\uBE48", country: "\uC624\uC2A4\uD2B8\uB9AC\uC544", lat: 48.2082, lon: 16.3738 },
|
|
196
|
+
{ name: "\uBCA0\uB978", country: "\uC2A4\uC704\uC2A4", lat: 46.948, lon: 7.4474 },
|
|
197
|
+
{ name: "\uCDE8\uB9AC\uD788", country: "\uC2A4\uC704\uC2A4", lat: 47.3769, lon: 8.5417 },
|
|
198
|
+
{ name: "\uC81C\uB124\uBC14", country: "\uC2A4\uC704\uC2A4", lat: 46.2044, lon: 6.1432 },
|
|
199
|
+
{ name: "\uD504\uB77C\uD558", country: "\uCCB4\uCF54", lat: 50.0755, lon: 14.4378 },
|
|
200
|
+
{ name: "\uBC14\uB974\uC0E4\uBC14", country: "\uD3F4\uB780\uB4DC", lat: 52.2297, lon: 21.0122 },
|
|
201
|
+
{ name: "\uD06C\uB77C\uCFE0\uD504", country: "\uD3F4\uB780\uB4DC", lat: 50.0647, lon: 19.945 },
|
|
202
|
+
{ name: "\uBD80\uB2E4\uD398\uC2A4\uD2B8", country: "\uD5DD\uAC00\uB9AC", lat: 47.4979, lon: 19.0402 },
|
|
203
|
+
{ name: "\uBD80\uCFE0\uB808\uC288\uD2F0", country: "\uB8E8\uB9C8\uB2C8\uC544", lat: 44.4268, lon: 26.1025 },
|
|
204
|
+
{ name: "\uC18C\uD53C\uC544", country: "\uBD88\uAC00\uB9AC\uC544", lat: 42.6977, lon: 23.3219 },
|
|
205
|
+
// ── 발칸/남동유럽 ──
|
|
206
|
+
{ name: "\uC790\uADF8\uB808\uBE0C", country: "\uD06C\uB85C\uC544\uD2F0\uC544", lat: 45.815, lon: 15.9819 },
|
|
207
|
+
{ name: "\uB958\uBE14\uB7B4\uB098", country: "\uC2AC\uB85C\uBCA0\uB2C8\uC544", lat: 46.0569, lon: 14.5058 },
|
|
208
|
+
{ name: "\uBCA0\uC624\uADF8\uB77C\uB4DC", country: "\uC138\uB974\uBE44\uC544", lat: 44.7866, lon: 20.4489 },
|
|
209
|
+
{ name: "\uC0AC\uB77C\uC608\uBCF4", country: "\uBCF4\uC2A4\uB2C8\uC544", lat: 43.8563, lon: 18.4131 },
|
|
210
|
+
{ name: "\uD2F0\uB77C\uB098", country: "\uC54C\uBC14\uB2C8\uC544", lat: 41.3275, lon: 19.8187 },
|
|
211
|
+
// ── 북유럽 ──
|
|
212
|
+
{ name: "\uD5EC\uC2F1\uD0A4", country: "\uD540\uB780\uB4DC", lat: 60.1699, lon: 24.9384 },
|
|
213
|
+
{ name: "\uC2A4\uD1A1\uD640\uB984", country: "\uC2A4\uC6E8\uB374", lat: 59.3293, lon: 18.0686 },
|
|
214
|
+
{ name: "\uC624\uC2AC\uB85C", country: "\uB178\uB974\uC6E8\uC774", lat: 59.9139, lon: 10.7522 },
|
|
215
|
+
{ name: "\uCF54\uD39C\uD558\uAC90", country: "\uB374\uB9C8\uD06C", lat: 55.6761, lon: 12.5683 },
|
|
216
|
+
{ name: "\uB808\uC774\uCEAC\uBE44\uD06C", country: "\uC544\uC774\uC2AC\uB780\uB4DC", lat: 64.1466, lon: -21.9426 },
|
|
217
|
+
{ name: "\uB354\uBE14\uB9B0", country: "\uC544\uC77C\uB79C\uB4DC", lat: 53.3498, lon: -6.2603 },
|
|
218
|
+
// ── 발트 3국 ──
|
|
219
|
+
{ name: "\uD0C8\uB9B0", country: "\uC5D0\uC2A4\uD1A0\uB2C8\uC544", lat: 59.437, lon: 24.7536 },
|
|
220
|
+
{ name: "\uB9AC\uAC00", country: "\uB77C\uD2B8\uBE44\uC544", lat: 56.9496, lon: 24.1052 },
|
|
221
|
+
{ name: "\uBE4C\uB274\uC2A4", country: "\uB9AC\uD22C\uC544\uB2C8\uC544", lat: 54.6872, lon: 25.2797 },
|
|
222
|
+
// ── 동유럽 / CIS ──
|
|
223
|
+
{ name: "\uBAA8\uC2A4\uD06C\uBC14", country: "\uB7EC\uC2DC\uC544", lat: 55.7558, lon: 37.6173 },
|
|
224
|
+
{ name: "\uC0C1\uD2B8\uD398\uD14C\uB974\uBD80\uB974\uD06C", country: "\uB7EC\uC2DC\uC544", lat: 59.9311, lon: 30.3609 },
|
|
225
|
+
{ name: "\uBE14\uB77C\uB514\uBCF4\uC2A4\uD1A0\uD06C", country: "\uB7EC\uC2DC\uC544", lat: 43.1332, lon: 131.9113 },
|
|
226
|
+
{ name: "\uD0A4\uC774\uC6B0", country: "\uC6B0\uD06C\uB77C\uC774\uB098", lat: 50.4504, lon: 30.5245 },
|
|
227
|
+
{ name: "\uBBFC\uC2A4\uD06C", country: "\uBCA8\uB77C\uB8E8\uC2A4", lat: 53.9006, lon: 27.559 },
|
|
228
|
+
{ name: "\uD0A4\uC2DC\uB108\uC6B0", country: "\uBAB0\uB3C4\uBC14", lat: 47.0105, lon: 28.8638 },
|
|
229
|
+
// ── 북아메리카 ──
|
|
230
|
+
{ name: "\uC6CC\uC2F1\uD134 D.C.", country: "\uBBF8\uAD6D", lat: 38.9072, lon: -77.0369 },
|
|
231
|
+
{ name: "\uB274\uC695", country: "\uBBF8\uAD6D", lat: 40.7128, lon: -74.006 },
|
|
232
|
+
{ name: "\uB85C\uC2A4\uC564\uC824\uB808\uC2A4", country: "\uBBF8\uAD6D", lat: 34.0522, lon: -118.2437 },
|
|
233
|
+
{ name: "\uC2DC\uCE74\uACE0", country: "\uBBF8\uAD6D", lat: 41.8781, lon: -87.6298 },
|
|
234
|
+
{ name: "\uC0CC\uD504\uB780\uC2DC\uC2A4\uCF54", country: "\uBBF8\uAD6D", lat: 37.7749, lon: -122.4194 },
|
|
235
|
+
{ name: "\uC2DC\uC560\uD2C0", country: "\uBBF8\uAD6D", lat: 47.6062, lon: -122.3321 },
|
|
236
|
+
{ name: "\uBCF4\uC2A4\uD134", country: "\uBBF8\uAD6D", lat: 42.3601, lon: -71.0589 },
|
|
237
|
+
{ name: "\uD638\uB180\uB8F0\uB8E8", country: "\uBBF8\uAD6D", lat: 21.3069, lon: -157.8583 },
|
|
238
|
+
{ name: "\uB77C\uC2A4\uBCA0\uC774\uAC70\uC2A4", country: "\uBBF8\uAD6D", lat: 36.1699, lon: -115.1398 },
|
|
239
|
+
{ name: "\uB9C8\uC774\uC560\uBBF8", country: "\uBBF8\uAD6D", lat: 25.7617, lon: -80.1918 },
|
|
240
|
+
{ name: "\uD734\uC2A4\uD134", country: "\uBBF8\uAD6D", lat: 29.7604, lon: -95.3698 },
|
|
241
|
+
{ name: "\uB308\uB7EC\uC2A4", country: "\uBBF8\uAD6D", lat: 32.7767, lon: -96.797 },
|
|
242
|
+
{ name: "\uC560\uD2C0\uB79C\uD0C0", country: "\uBBF8\uAD6D", lat: 33.749, lon: -84.388 },
|
|
243
|
+
{ name: "\uB374\uBC84", country: "\uBBF8\uAD6D", lat: 39.7392, lon: -104.9903 },
|
|
244
|
+
{ name: "\uC624\uD0C0\uC640", country: "\uCE90\uB098\uB2E4", lat: 45.4215, lon: -75.6972 },
|
|
245
|
+
{ name: "\uD1A0\uB860\uD1A0", country: "\uCE90\uB098\uB2E4", lat: 43.6532, lon: -79.3832 },
|
|
246
|
+
{ name: "\uBC34\uCFE0\uBC84", country: "\uCE90\uB098\uB2E4", lat: 49.2827, lon: -123.1207 },
|
|
247
|
+
{ name: "\uBAAC\uD2B8\uB9AC\uC62C", country: "\uCE90\uB098\uB2E4", lat: 45.5017, lon: -73.5673 },
|
|
248
|
+
{ name: "\uBA55\uC2DC\uCF54\uC2DC\uD2F0", country: "\uBA55\uC2DC\uCF54", lat: 19.4326, lon: -99.1332 },
|
|
249
|
+
{ name: "\uCE78\uCFE4", country: "\uBA55\uC2DC\uCF54", lat: 21.1619, lon: -86.8515 },
|
|
250
|
+
// ── 카리브해 / 중앙아메리카 ──
|
|
251
|
+
{ name: "\uC544\uBC14\uB098", country: "\uCFE0\uBC14", lat: 23.1136, lon: -82.3666 },
|
|
252
|
+
{ name: "\uC0B0\uD1A0\uB3C4\uBC0D\uACE0", country: "\uB3C4\uBBF8\uB2C8\uCE74\uACF5\uD654\uAD6D", lat: 18.4861, lon: -69.9312 },
|
|
253
|
+
{ name: "\uACFC\uD14C\uB9D0\uB77C\uC2DC\uD2F0", country: "\uACFC\uD14C\uB9D0\uB77C", lat: 14.6349, lon: -90.5069 },
|
|
254
|
+
{ name: "\uC0B0\uD638\uC138", country: "\uCF54\uC2A4\uD0C0\uB9AC\uCE74", lat: 9.9281, lon: -84.0907 },
|
|
255
|
+
{ name: "\uD30C\uB098\uB9C8\uC2DC\uD2F0", country: "\uD30C\uB098\uB9C8", lat: 8.9824, lon: -79.5199 },
|
|
256
|
+
{ name: "\uC0B0\uD6C4\uC548", country: "\uD478\uC5D0\uB974\uD1A0\uB9AC\uCF54", lat: 18.4655, lon: -66.1057 },
|
|
257
|
+
{ name: "\uD0B9\uC2A4\uD134", country: "\uC790\uBA54\uC774\uCE74", lat: 18.0179, lon: -76.8099 },
|
|
258
|
+
// ── 남아메리카 ──
|
|
259
|
+
{ name: "\uBCF4\uACE0\uD0C0", country: "\uCF5C\uB86C\uBE44\uC544", lat: 4.711, lon: -74.0721 },
|
|
260
|
+
{ name: "\uB9AC\uB9C8", country: "\uD398\uB8E8", lat: -12.0464, lon: -77.0428 },
|
|
261
|
+
{ name: "\uD0A4\uD1A0", country: "\uC5D0\uCF70\uB3C4\uB974", lat: -0.1807, lon: -78.4678 },
|
|
262
|
+
{ name: "\uC0B0\uD2F0\uC544\uACE0", country: "\uCE60\uB808", lat: -33.4489, lon: -70.6693 },
|
|
263
|
+
{ name: "\uBD80\uC5D0\uB178\uC2A4\uC544\uC774\uB808\uC2A4", country: "\uC544\uB974\uD5E8\uD2F0\uB098", lat: -34.6037, lon: -58.3816 },
|
|
264
|
+
{ name: "\uBAAC\uD14C\uBE44\uB370\uC624", country: "\uC6B0\uB8E8\uACFC\uC774", lat: -34.9011, lon: -56.1645 },
|
|
265
|
+
{ name: "\uC544\uC21C\uC2DC\uC628", country: "\uD30C\uB77C\uACFC\uC774", lat: -25.2637, lon: -57.5759 },
|
|
266
|
+
{ name: "\uB77C\uD30C\uC2A4", country: "\uBCFC\uB9AC\uBE44\uC544", lat: -16.4897, lon: -68.1193 },
|
|
267
|
+
{ name: "\uBE0C\uB77C\uC9C8\uB9AC\uC544", country: "\uBE0C\uB77C\uC9C8", lat: -15.7975, lon: -47.8919 },
|
|
268
|
+
{ name: "\uC0C1\uD30C\uC6B8\uB8E8", country: "\uBE0C\uB77C\uC9C8", lat: -23.5505, lon: -46.6333 },
|
|
269
|
+
{ name: "\uB9AC\uC6B0\uB370\uC790\uB124\uC774\uB8E8", country: "\uBE0C\uB77C\uC9C8", lat: -22.9068, lon: -43.1729 },
|
|
270
|
+
{ name: "\uCE74\uB77C\uCE74\uC2A4", country: "\uBCA0\uB124\uC218\uC5D8\uB77C", lat: 10.4806, lon: -66.9036 },
|
|
271
|
+
// ── 아프리카 ──
|
|
272
|
+
{ name: "\uCE74\uC774\uB85C", country: "\uC774\uC9D1\uD2B8", lat: 30.0444, lon: 31.2357 },
|
|
273
|
+
{ name: "\uB098\uC774\uB85C\uBE44", country: "\uCF00\uB0D0", lat: -1.2921, lon: 36.8219 },
|
|
274
|
+
{ name: "\uC544\uB514\uC2A4\uC544\uBC14\uBC14", country: "\uC5D0\uD2F0\uC624\uD53C\uC544", lat: 9.025, lon: 38.7469 },
|
|
275
|
+
{ name: "\uC544\uD06C\uB77C", country: "\uAC00\uB098", lat: 5.6037, lon: -0.187 },
|
|
276
|
+
{ name: "\uB77C\uACE0\uC2A4", country: "\uB098\uC774\uC9C0\uB9AC\uC544", lat: 6.5244, lon: 3.3792 },
|
|
277
|
+
{ name: "\uC544\uBD80\uC790", country: "\uB098\uC774\uC9C0\uB9AC\uC544", lat: 9.0579, lon: 7.4951 },
|
|
278
|
+
{ name: "\uB2E4\uB974\uC5D0\uC2A4\uC0B4\uB78C", country: "\uD0C4\uC790\uB2C8\uC544", lat: -6.7924, lon: 39.2083 },
|
|
279
|
+
{ name: "\uCF00\uC774\uD504\uD0C0\uC6B4", country: "\uB0A8\uC544\uD504\uB9AC\uCE74\uACF5\uD654\uAD6D", lat: -33.9249, lon: 18.4241 },
|
|
280
|
+
{ name: "\uC694\uD558\uB124\uC2A4\uBC84\uADF8", country: "\uB0A8\uC544\uD504\uB9AC\uCE74\uACF5\uD654\uAD6D", lat: -26.2041, lon: 28.0473 },
|
|
281
|
+
{ name: "\uC54C\uC81C", country: "\uC54C\uC81C\uB9AC", lat: 36.7538, lon: 3.0588 },
|
|
282
|
+
{ name: "\uD280\uB2C8\uC2A4", country: "\uD280\uB2C8\uC9C0", lat: 36.8065, lon: 10.1815 },
|
|
283
|
+
{ name: "\uB77C\uBC14\uD2B8", country: "\uBAA8\uB85C\uCF54", lat: 34.0209, lon: -6.8416 },
|
|
284
|
+
{ name: "\uCE74\uC0AC\uBE14\uB791\uCE74", country: "\uBAA8\uB85C\uCF54", lat: 33.5731, lon: -7.5898 },
|
|
285
|
+
{ name: "\uCE84\uD314\uB77C", country: "\uC6B0\uAC04\uB2E4", lat: 0.3476, lon: 32.5825 },
|
|
286
|
+
{ name: "\uB8E8\uC0AC\uCE74", country: "\uC7A0\uBE44\uC544", lat: -15.3875, lon: 28.3228 },
|
|
287
|
+
{ name: "\uD558\uB77C\uB808", country: "\uC9D0\uBC14\uBE0C\uC6E8", lat: -17.8252, lon: 31.0335 },
|
|
288
|
+
{ name: "\uB9C8\uD478\uD22C", country: "\uBAA8\uC7A0\uBE44\uD06C", lat: -25.9692, lon: 32.5732 },
|
|
289
|
+
{ name: "\uC548\uD0C0\uB098\uB098\uB9AC\uBCF4", country: "\uB9C8\uB2E4\uAC00\uC2A4\uCE74\uB974", lat: -18.8792, lon: 47.5079 },
|
|
290
|
+
// ── 오세아니아 ──
|
|
291
|
+
{ name: "\uCE94\uBC84\uB77C", country: "\uD638\uC8FC", lat: -35.2809, lon: 149.13 },
|
|
292
|
+
{ name: "\uC2DC\uB4DC\uB2C8", country: "\uD638\uC8FC", lat: -33.8688, lon: 151.2093 },
|
|
293
|
+
{ name: "\uBA5C\uBC84\uB978", country: "\uD638\uC8FC", lat: -37.8136, lon: 144.9631 },
|
|
294
|
+
{ name: "\uBE0C\uB9AC\uC988\uBC88", country: "\uD638\uC8FC", lat: -27.4698, lon: 153.0251 },
|
|
295
|
+
{ name: "\uD37C\uC2A4", country: "\uD638\uC8FC", lat: -31.9505, lon: 115.8605 },
|
|
296
|
+
{ name: "\uC6F0\uB9C1\uD134", country: "\uB274\uC9C8\uB79C\uB4DC", lat: -41.2866, lon: 174.7756 },
|
|
297
|
+
{ name: "\uC624\uD074\uB79C\uB4DC", country: "\uB274\uC9C8\uB79C\uB4DC", lat: -36.8485, lon: 174.7633 }
|
|
298
|
+
];
|
|
299
|
+
var SEOUL = KOREAN_CITIES[0];
|
|
300
|
+
function formatCityName(city) {
|
|
301
|
+
return city.country ? `${city.name}, ${city.country}` : city.name;
|
|
302
|
+
}
|
|
303
|
+
function filterCities(query) {
|
|
304
|
+
const q = query.trim();
|
|
305
|
+
if (!q) return [];
|
|
306
|
+
const chosung = isAllChosung(q);
|
|
307
|
+
const koreanResults = [];
|
|
308
|
+
const worldResults = [];
|
|
309
|
+
for (const city of KOREAN_CITIES) {
|
|
310
|
+
if (chosung ? matchChosung(city.name, q) : city.name.includes(q)) {
|
|
311
|
+
koreanResults.push(city);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
for (const city of WORLD_CITIES) {
|
|
315
|
+
if (chosung) {
|
|
316
|
+
if (matchChosung(city.name, q)) worldResults.push(city);
|
|
317
|
+
} else {
|
|
318
|
+
const label = formatCityName(city);
|
|
319
|
+
if (label.includes(q)) worldResults.push(city);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return [...koreanResults, ...worldResults].slice(0, 8);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export {
|
|
326
|
+
KOREAN_CITIES,
|
|
327
|
+
WORLD_CITIES,
|
|
328
|
+
SEOUL,
|
|
329
|
+
formatCityName,
|
|
330
|
+
filterCities
|
|
331
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {
|
|
2
|
+
analyzeAllRelations,
|
|
3
|
+
getDaewoon,
|
|
4
|
+
getFourPillars,
|
|
5
|
+
getHiddenStems,
|
|
6
|
+
getJeonggi,
|
|
7
|
+
getRelation,
|
|
8
|
+
getSpecialSals,
|
|
9
|
+
getTwelveMeteor,
|
|
10
|
+
getTwelveSpirit
|
|
11
|
+
} from "./chunk-DGSIRAXF.js";
|
|
12
|
+
|
|
13
|
+
// src/saju.ts
|
|
14
|
+
function getSipsin(dayStem, targetStem) {
|
|
15
|
+
const rel = getRelation(dayStem, targetStem);
|
|
16
|
+
return rel ? rel.hanja : "?";
|
|
17
|
+
}
|
|
18
|
+
function calculateSaju(input) {
|
|
19
|
+
const { year, month, day, hour, minute, gender } = input;
|
|
20
|
+
const isMale = gender === "M";
|
|
21
|
+
const [yp, mp, dp, hp] = getFourPillars(year, month, day, hour, minute);
|
|
22
|
+
const dayStem = dp[0];
|
|
23
|
+
const stems = [hp[0], dp[0], mp[0], yp[0]];
|
|
24
|
+
const branches = [hp[1], dp[1], mp[1], yp[1]];
|
|
25
|
+
const ganzis = [hp, dp, mp, yp];
|
|
26
|
+
const pillars = ganzis.map((ganzi, i) => {
|
|
27
|
+
const stem = stems[i];
|
|
28
|
+
const branch = branches[i];
|
|
29
|
+
let stemSipsin = getSipsin(dayStem, stem);
|
|
30
|
+
if (i === 1) stemSipsin = "\u672C\u5143";
|
|
31
|
+
const jeonggi = getJeonggi(branch);
|
|
32
|
+
const branchSipsin = getSipsin(dayStem, jeonggi);
|
|
33
|
+
const unseong = getTwelveMeteor(dayStem, branch);
|
|
34
|
+
const sinsal = getTwelveSpirit(yp[1], branch);
|
|
35
|
+
const jigang = getHiddenStems(branch);
|
|
36
|
+
const pillar = { ganzi, stem, branch };
|
|
37
|
+
return {
|
|
38
|
+
pillar,
|
|
39
|
+
stemSipsin,
|
|
40
|
+
branchSipsin,
|
|
41
|
+
unseong,
|
|
42
|
+
sinsal,
|
|
43
|
+
jigang
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
const rawDaewoon = input.unknownTime ? [] : getDaewoon(isMale, year, month, day, hour, minute);
|
|
47
|
+
const yearBranch = yp[1];
|
|
48
|
+
const daewoon = rawDaewoon.map((dw, i) => {
|
|
49
|
+
const age = dw.startDate.getFullYear() - year;
|
|
50
|
+
const dwStem = dw.ganzi[0];
|
|
51
|
+
const dwBranch = dw.ganzi[1];
|
|
52
|
+
const dwStemSipsin = getSipsin(dayStem, dwStem);
|
|
53
|
+
const dwBranchJeonggi = getJeonggi(dwBranch);
|
|
54
|
+
const dwBranchSipsin = getSipsin(dayStem, dwBranchJeonggi);
|
|
55
|
+
const unseong = getTwelveMeteor(dayStem, dwBranch);
|
|
56
|
+
const sinsal = getTwelveSpirit(yearBranch, dwBranch);
|
|
57
|
+
return {
|
|
58
|
+
index: i + 1,
|
|
59
|
+
ganzi: dw.ganzi,
|
|
60
|
+
startDate: dw.startDate,
|
|
61
|
+
age,
|
|
62
|
+
stemSipsin: dwStemSipsin,
|
|
63
|
+
branchSipsin: dwBranchSipsin,
|
|
64
|
+
unseong,
|
|
65
|
+
sinsal
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
const relations = analyzeAllRelations(ganzis);
|
|
69
|
+
const specialSals = getSpecialSals(dayStem, dp, branches);
|
|
70
|
+
return {
|
|
71
|
+
input,
|
|
72
|
+
pillars,
|
|
73
|
+
daewoon,
|
|
74
|
+
relations,
|
|
75
|
+
specialSals
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
calculateSaju
|
|
81
|
+
};
|