@ham2k/lib-operation-data 1.0.5 → 1.1.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/index.cjs ADDED
@@ -0,0 +1,653 @@
1
+ 'use strict';
2
+
3
+ // src/lib/bands.ts
4
+ var EXTENDED_BANDS = [
5
+ // Includes 11m
6
+ "2190m",
7
+ "630m",
8
+ "560m",
9
+ "160m",
10
+ "80m",
11
+ "60m",
12
+ "40m",
13
+ "30m",
14
+ "20m",
15
+ "17m",
16
+ "15m",
17
+ "12m",
18
+ "11m",
19
+ "10m",
20
+ "6m",
21
+ "5m",
22
+ "4m",
23
+ "2m",
24
+ "1.25m",
25
+ "70cm",
26
+ "33cm",
27
+ "23cm",
28
+ "13cm",
29
+ "9cm",
30
+ "6cm",
31
+ "3cm",
32
+ "1.25cm",
33
+ "6mm",
34
+ "4mm",
35
+ "2.5mm",
36
+ "2mm",
37
+ "1mm",
38
+ "submm",
39
+ "other"
40
+ ];
41
+ var BANDS = [
42
+ "2190m",
43
+ "630m",
44
+ "560m",
45
+ "160m",
46
+ "80m",
47
+ "60m",
48
+ "40m",
49
+ "30m",
50
+ "20m",
51
+ "17m",
52
+ "15m",
53
+ "12m",
54
+ "10m",
55
+ "6m",
56
+ "5m",
57
+ "4m",
58
+ "2m",
59
+ "1.25m",
60
+ "70cm",
61
+ "33cm",
62
+ "23cm",
63
+ "13cm",
64
+ "9cm",
65
+ "6cm",
66
+ "3cm",
67
+ "1.25cm",
68
+ "6mm",
69
+ "4mm",
70
+ "2.5mm",
71
+ "2mm",
72
+ "1mm",
73
+ "submm",
74
+ "other"
75
+ ];
76
+ var HF_BANDS = ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m"];
77
+ var VHF_BANDS = ["6m", "5m", "4m", "2m", "1.25m"];
78
+ var UHF_BANDS = ["70cm", "33cm", "23cm", "13cm"];
79
+ var SHF_BANDS = ["9cm", "6cm", "3cm", "1.25cm"];
80
+ var EHF_BANDS = ["6mm", "4mm", "2mm", "2.5mm", "1mm", "submm"];
81
+ var POPULAR_BANDS = ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "2m", "70cm"];
82
+ var CONTEST_BANDS = ["160m", "80m", "40m", "20m", "15m", "10m"];
83
+ function bandForFrequency(freq) {
84
+ return bandForExactFrequencyInMHz(freq) ?? bandForExactFrequencyInMHz(freq * 1e3) ?? "other";
85
+ }
86
+ function bandForExactFrequencyInMHz(freq) {
87
+ if (freq >= 130 && freq <= 140) return "2190m";
88
+ else if (freq >= 450 && freq <= 499) return "630m";
89
+ else if (freq >= 500 && freq <= 505) return "560m";
90
+ else if (freq >= 1700 && freq <= 2100) return "160m";
91
+ else if (freq >= 3400 && freq <= 4100) return "80m";
92
+ else if (freq >= 5300 && freq <= 5500) return "60m";
93
+ else if (freq >= 6900 && freq <= 7400) return "40m";
94
+ else if (freq >= 1e4 && freq <= 10200) return "30m";
95
+ else if (freq >= 13900 && freq <= 14400) return "20m";
96
+ else if (freq >= 18e3 && freq <= 18200) return "17m";
97
+ else if (freq >= 20900 && freq <= 21600) return "15m";
98
+ else if (freq >= 24500 && freq <= 25200) return "12m";
99
+ else if (freq >= 26e3 && freq <= 27500) return "11m";
100
+ else if (freq >= 27900 && freq <= 3e4) return "10m";
101
+ else if (freq >= 5e4 && freq <= 54e3) return "6m";
102
+ else if (freq >= 54001 && freq <= 69999) return "5m";
103
+ else if (freq >= 7e4 && freq <= 71e3) return "4m";
104
+ else if (freq >= 14e4 && freq <= 15e4) return "2m";
105
+ else if (freq >= 219e3 && freq <= 23e4) return "1.25m";
106
+ else if (freq >= 4e5 && freq <= 46e4) return "70cm";
107
+ else if (freq >= 9e5 && freq <= 93e4) return "33cm";
108
+ else if (freq >= 118e4 && freq <= 142e4) return "23cm";
109
+ else if (freq >= 23e5 && freq <= 245e4) return "13cm";
110
+ else if (freq >= 329e4 && freq <= 351e4) return "9cm";
111
+ else if (freq >= 564e4 && freq <= 5926e3) return "6cm";
112
+ else if (freq >= 1e7 && freq <= 105e5) return "3cm";
113
+ else if (freq >= 24e6 && freq <= 2425e4) return "1.25cm";
114
+ else if (freq >= 47e6 && freq <= 472e5) return "6mm";
115
+ else if (freq >= 75e6 && freq <= 81e6) return "4mm";
116
+ else if (freq >= 12225e4 && freq <= 123e6) return "2.5mm";
117
+ else if (freq >= 134e6 && freq <= 141e6) return "2mm";
118
+ else if (freq >= 241e6 && freq <= 25e7) return "1mm";
119
+ else if (freq >= 3e8 && freq <= 75e8) return "submm";
120
+ else return void 0;
121
+ }
122
+ function frequencyForBand(band, mode) {
123
+ if (band === "2190m") return 135.7;
124
+ else if (band === "630m") return 472;
125
+ else if (band === "560m") return 501;
126
+ else if (band === "160m") {
127
+ if (mode === "FT8" || mode === "FT4") return 1840;
128
+ else return 1800;
129
+ } else if (band === "80m") {
130
+ if (mode === "SSB" || mode === "LSB") return 3800;
131
+ else if (mode === "FT8") return 3573;
132
+ else if (mode === "FT4") return 3575;
133
+ else return 3e3;
134
+ } else if (band === "60m") {
135
+ if (mode === "FT8") return 5357;
136
+ else return 5330;
137
+ } else if (band === "40m") {
138
+ if (mode === "SSB" || mode === "LSB") return 7175;
139
+ else if (mode === "FT8") return 7074;
140
+ else if (mode === "FT4") return 7047.5;
141
+ else return 7e3;
142
+ } else if (band === "30m") {
143
+ if (mode === "FT8") return 10136;
144
+ else if (mode === "FT4") return 10140;
145
+ else return 10100;
146
+ } else if (band === "20m") {
147
+ if (mode === "SSB" || mode === "USB") return 14225;
148
+ else if (mode === "FT8") return 14074;
149
+ else if (mode === "FT4") return 14080;
150
+ else return 14e3;
151
+ } else if (band === "17m") {
152
+ if (mode === "SSB" || mode === "USB") return 18110;
153
+ else if (mode === "FT8") return 18100;
154
+ else if (mode === "FT4") return 18104;
155
+ else return 18068;
156
+ } else if (band === "15m") {
157
+ if (mode === "SSB" || mode === "USB") return 21275;
158
+ else if (mode === "FT8") return 21074;
159
+ else if (mode === "FT4") return 21140;
160
+ else return 21e3;
161
+ } else if (band === "12m") {
162
+ if (mode === "SSB" || mode === "USB") return 24930;
163
+ else if (mode === "FT8") return 24915;
164
+ else if (mode === "FT4") return 24919;
165
+ else return 24890;
166
+ } else if (band === "11m") {
167
+ return 26965;
168
+ } else if (band === "10m") {
169
+ if (mode === "SSB" || mode === "USB") return 28300;
170
+ else if (mode === "FM" || mode === "AM") return 28500;
171
+ else if (mode === "FT8") return 28074;
172
+ else if (mode === "FT4") return 28180;
173
+ else return 28e3;
174
+ } else if (band === "6m") {
175
+ if (mode === "SSB" || mode === "USB") return 50125;
176
+ else if (mode === "FT8") return 50313;
177
+ else if (mode === "FT4") return 50318;
178
+ else return 5e4;
179
+ } else if (band === "5m") return 55e3;
180
+ else if (band === "4m") return 70090;
181
+ else if (band === "2m") return 145400;
182
+ else if (band === "1.25m") return 222e3;
183
+ else if (band === "70cm") return 42e4;
184
+ else if (band === "33cm") return 902e3;
185
+ else if (band === "23cm") return 124e4;
186
+ else if (band === "13cm") return 23e5;
187
+ else if (band === "9cm") return 33e5;
188
+ else if (band === "6cm") return 565e4;
189
+ else if (band === "3cm") return 1e7;
190
+ else if (band === "1.25cm") return 24e6;
191
+ else if (band === "6mm") return 47e6;
192
+ else if (band === "4mm") return 755e5;
193
+ else if (band === "2.5mm") return 1225e5;
194
+ else if (band === "2mm") return 134e6;
195
+ else if (band === "1mm") return 241e6;
196
+ else if (band === "submm") return 3e8;
197
+ else return void 0;
198
+ }
199
+
200
+ // src/data/bandPlans.json
201
+ var bandPlans_default = {
202
+ bands: {
203
+ "160m": {
204
+ mhz: [1800, 2e3],
205
+ segments: [
206
+ { name: "Out of band Reg1", mhz: [1800, 2e3], mode: false, regions: [1] },
207
+ { name: "CW Reg1", mhz: [1810, 1838], mode: "CW", regions: [1] },
208
+ { name: "Data", mhz: [1800, 1810], mode: "RTTY" },
209
+ { name: "CW", mhz: [1800, 1843], mode: "CW" },
210
+ { name: "FT8", mhz: [1840, 1843], mode: "FT8", priority: 100 },
211
+ { name: "Phone", mhz: [1843, 2e3], mode: "SSB", submode: "LSB" },
212
+ { name: "Australia", mhz: [1800, 1875], mode: null, countries: ["au"] }
213
+ ]
214
+ },
215
+ "80m": {
216
+ mhz: [3500, 3800],
217
+ segments: [
218
+ { name: "CW Reg1", mhz: [3500, 3570], mode: "CW", regions: [1] },
219
+ { name: "CW", mhz: [3500, 3600], mode: "CW" },
220
+ { name: "Phone", mhz: [3535, 3800], mode: "SSB", submode: "LSB", regions: [3] },
221
+ { name: "FT8", mhz: [3568, 3571], mode: "FT8", regions: [3], priority: 100 },
222
+ { name: "Data", mhz: [3570, 3600], mode: "RTTY" },
223
+ { name: "FT8", mhz: [3573, 3576], mode: "FT8", priority: 100 },
224
+ { name: "Phone", mhz: [3600, 4e3], mode: "SSB", submode: "LSB" },
225
+ { name: "Australia", mhz: [3500, 3800], mode: null, countries: ["au"] }
226
+ ]
227
+ },
228
+ "60m": {
229
+ mhz: [5330.5, 3406.5],
230
+ segments: [
231
+ { name: "60m Channel 1", mhz: [5330.5, 5333.5] },
232
+ { name: "60m Channel 2", mhz: [5346.5, 5349.5] },
233
+ { name: "60m Channel 3", mhz: [5357, 5360], mode: "FT8", priority: 100 },
234
+ { name: "60m Channel 4", mhz: [5371.5, 5373.5] },
235
+ { name: "60m Channel 5", mhz: [5403.5, 5406.5] }
236
+ ]
237
+ },
238
+ "40m": {
239
+ mhz: [7e3, 7300],
240
+ segments: [
241
+ { name: "CW", mhz: [7e3, 7060], mode: "CW" },
242
+ { name: "CW Reg1", mhz: [7e3, 7040], mode: "CW", regions: [1] },
243
+ { name: "CW US", mhz: [7e3, 7125], mode: "CW", countries: ["us"] },
244
+ { name: "FT4", mhz: [7047.5, 7050.5], mode: "FT4", priority: 100 },
245
+ { name: "Phone", mhz: [7060, 7300], mode: "SSB", submode: "LSB" },
246
+ { name: "FT8", mhz: [7074, 7077], mode: "FT8", priority: 100 },
247
+ { name: "Data", mhz: [7080, 7125], mode: "RTTY", countries: ["us"] },
248
+ { name: "Phone", mhz: [7125, 7300], mode: "SSB", submode: "LSB", countries: ["us"] },
249
+ { name: "Australia", mhz: [7e3, 7300], mode: null, countries: ["au"] },
250
+ { name: "Out of band Reg1", mhz: [7200, 7300], mode: false, regions: [1] }
251
+ ]
252
+ },
253
+ "30m": {
254
+ mhz: [10100, 10150],
255
+ segments: [
256
+ { name: "CW", mhz: [10100, 10150], mode: "CW" },
257
+ { name: "CW Reg1", mhz: [10100, 10130], mode: "CW", regions: [1] },
258
+ { name: "Data", mhz: [10130, 10140], mode: "RTTY" },
259
+ { name: "FT8", mhz: [10136, 10139], mode: "FT8", priority: 100 },
260
+ { name: "FT4", mhz: [10140, 10143], mode: "FT4", priority: 100 },
261
+ { name: "Australia & New Zealand", mhz: [10100, 10150], mode: null, countries: ["au", "nz"] },
262
+ { name: "Africa south of the Equator", mhz: [10100, 10150], mode: null, countries: [["ao", "bi", "bw", "cd", "cg", "ga", "ke", "km", "ls", "mg", "mu", "mw", "mz", "na", "rw", "sc", "so", "st", "sz", "tz", "ug", "za", "zm", "zw"]] }
263
+ ]
264
+ },
265
+ "20m": {
266
+ mhz: [14e3, 14350],
267
+ segments: [
268
+ { name: "CW", mhz: [14e3, 14150], mode: "CW" },
269
+ { name: "CW Reg1", mhz: [14e3, 14070], mode: "CW", regions: [1] },
270
+ { name: "CW Reg2", mhz: [14e3, 14101], mode: "CW", regions: [2] },
271
+ { name: "Data", mhz: [14070, 14095], mode: "RTTY" },
272
+ { name: "FT8", mhz: [14074, 14077], mode: "FT8", priority: 100 },
273
+ { name: "FT4", mhz: [14080, 14083], mode: "FT4", priority: 100 },
274
+ { name: "Phone", mhz: [14112, 14350], mode: "SSB", submode: "USB", regions: [1, 2] },
275
+ { name: "Phone", mhz: [14150, 14350], mode: "SSB", submode: "USB", countries: ["us"] },
276
+ { name: "Australia", mhz: [14e3, 14350], mode: null, countries: ["au"] }
277
+ ]
278
+ },
279
+ "17m": {
280
+ mhz: [18068, 18168],
281
+ segments: [
282
+ { name: "CW", mhz: [18068, 18110], mode: "CW" },
283
+ { name: "CW Reg1", mhz: [18068, 18095], mode: "CW", regions: [1] },
284
+ { name: "Data", mhz: [18100, 18105], mode: "RTTY" },
285
+ { name: "FT8", mhz: [18100, 18103], mode: "FT8", priority: 100 },
286
+ { name: "FT4", mhz: [18104, 18107], mode: "FT4", priority: 100 },
287
+ { name: "Beacons only", mhz: [18109, 18111], priority: 100 },
288
+ { name: "Phone", mhz: [18111, 18168], mode: "SSB", submode: "USB" },
289
+ { name: "Phone US", mhz: [18110, 18168], mode: "SSB", submode: "USB", countries: ["us"] },
290
+ { name: "Australia", mhz: [18068, 18168], mode: null, countries: ["au"] }
291
+ ]
292
+ },
293
+ "15m": {
294
+ mhz: [21e3, 21450],
295
+ segments: [
296
+ { name: "CW", mhz: [21e3, 21150], mode: "CW" },
297
+ { name: "CW Reg1", mhz: [21e3, 21070], mode: "CW", regions: [1] },
298
+ { name: "Data", mhz: [21070, 21095], mode: "RTTY" },
299
+ { name: "FT8", mhz: [21074, 21077], mode: "FT8", priority: 100 },
300
+ { name: "FT4", mhz: [21140, 21143], mode: "FT4", priority: 100 },
301
+ { name: "Beacons only", mhz: [21149, 21151], priority: 100 },
302
+ { name: "Phone", mhz: [21151, 21450], mode: "SSB", submode: "USB" },
303
+ { name: "Phone US", mhz: [21150, 21450], mode: "SSB", submode: "USB", countries: ["us"] },
304
+ { name: "Australia", mhz: [21e3, 21450], mode: null, countries: ["au"] }
305
+ ]
306
+ },
307
+ "12m": {
308
+ mhz: [24890, 24990],
309
+ segments: [
310
+ { name: "CW", mhz: [24890, 24930], mode: "CW" },
311
+ { name: "CW Reg1", mhz: [24890, 24915], mode: "CW", regions: [1] },
312
+ { name: "FT8", mhz: [24915, 24918], mode: "FT8", priority: 100 },
313
+ { name: "FT4", mhz: [24919, 23922], mode: "FT4", priority: 100 },
314
+ { name: "Data", mhz: [24920, 24925], mode: "RTTY" },
315
+ { name: "Phone", mhz: [24930, 24990], mode: "SSB", submode: "USB" },
316
+ { name: "Beacons only", mhz: [24929, 24931], priority: 100 },
317
+ { name: "Phone US", mhz: [24930, 24990], mode: "SSB", submode: "USB", countries: ["us"] },
318
+ { name: "Australia", mhz: [24890, 24990], mode: null, countries: ["au"] }
319
+ ]
320
+ },
321
+ "10m": {
322
+ mhz: [28e3, 29700],
323
+ segments: [
324
+ { name: "CW", mhz: [28e3, 28190], mode: "CW" },
325
+ { name: "CW Reg1", mhz: [28e3, 28070], mode: "CW", regions: [1] },
326
+ { name: "Data", mhz: [28070, 28150], mode: "RTTY" },
327
+ { name: "FT8", mhz: [28074, 28077], mode: "FT8", priority: 100 },
328
+ { name: "FT4", mhz: [28180, 28183], mode: "FT4", priority: 100 },
329
+ { name: "Beacons only", mhz: [28190, 28300], priority: 100 },
330
+ { name: "Phone SSB", mhz: [28300, 29e3], mode: "SSB", submode: "USB" },
331
+ { name: "AM", mhz: [29e3, 29200], mode: "AM" },
332
+ { name: "Satellite", mhz: [29300, 29520] },
333
+ { name: "Guard Channel", mhz: [29510, 29520], priority: 100, regions: [1] },
334
+ { name: "Repeater Uplinks", mhz: [29520, 29590] },
335
+ { name: "FM", mhz: [29520, 29700], mode: "FM" },
336
+ { name: "Repeater Downlinks", mhz: [29620, 29700] },
337
+ { name: "Australia", mhz: [28e3, 29700], mode: null, countries: ["au"] }
338
+ ]
339
+ },
340
+ "6m": {
341
+ mhz: [5e4, 54e3],
342
+ segments: [
343
+ { name: "Beacon project Reg1", mhz: [5e4, 50010], mode: null, regions: [1] },
344
+ { name: "Beacon project Reg2", mhz: [50010, 50020], mode: null, regions: [2] },
345
+ { name: "Beacon project Reg 3", mhz: [50020, 50030], mode: null, regions: [3] },
346
+ { name: "CW", mhz: [5e4, 50100], mode: "CW" },
347
+ { name: "Phone Reg1", mhz: [50100, 50300], mode: "SSB", submode: "USB", regions: [1] },
348
+ { name: "FM Reg1", mhz: [51400, 54e3], mode: "FM", regions: [1] },
349
+ { name: "Phone", mhz: [50150, 50400], mode: "SSB", submode: "USB" },
350
+ { name: "Phone", mhz: [51e3, 51110], mode: "SSB", submode: "USB" },
351
+ { name: "FM", mhz: [51110, 52100], mode: "FM" },
352
+ { name: "FM", mhz: [51110, 52100], mode: "FM" },
353
+ { name: "FM Simplex Reg1", mhz: [51410, 51590], mode: "FM", regions: [1] },
354
+ { name: "FT8", mhz: [50313, 50316], mode: "FT8", priority: 100 },
355
+ { name: "FT4", mhz: [50318, 50321], mode: "FT4", priority: 100 },
356
+ { name: "FT8", mhz: [50323, 50326], mode: "FT8", priority: 100 },
357
+ { name: "Australia", mhz: [5e4, 54e3], mode: null, countries: ["au"] }
358
+ ]
359
+ },
360
+ "4m": {
361
+ mhz: [7e4, 70500],
362
+ segments: [
363
+ { name: "Beacons only Reg1", mhz: [70090, 70100], mode: "CW", regions: [1] },
364
+ { name: "CW Reg1", mhz: [7e4, 70090], mode: "CW", regions: [1] },
365
+ { name: "Phone", mhz: [70100, 70294], mode: "SSB", submode: "USB", regions: [1] },
366
+ { name: "FM", mhz: [70294, 70500], mode: "FM", regions: [1] },
367
+ { name: "AM", mhz: [70257, 70263], mode: "AM", priority: 100, regions: [1] },
368
+ { name: "FT8", mhz: [70100, 70103], mode: "FT8", priority: 100, regions: [1] },
369
+ { name: "FT8", mhz: [70154, 70157], mode: "FT8", priority: 100, regions: [1] }
370
+ ]
371
+ },
372
+ "2m": {
373
+ mhz: [144e3, 148e3],
374
+ segments: [
375
+ { name: "CW", mhz: [144e3, 144100], mode: "CW" },
376
+ { name: "Satellite downlink Reg1", mhz: [144e3, 144025], mode: null, regions: [1] },
377
+ { name: "CW Reg1", mhz: [144025, 144150], mode: "CW", regions: [1] },
378
+ { name: "Data", mhz: [144100, 144200], mode: "RTTY" },
379
+ { name: "FT8", mhz: [144174, 144177], mode: "FT8", priority: 100 },
380
+ { name: "FT4", mhz: [144170, 144173], mode: "FT4", priority: 100 },
381
+ { name: "Phone", mhz: [144200, 144275], mode: "SSB", submode: "USB" },
382
+ { name: "Phone Reg1", mhz: [144150, 144400], mode: "SSB", submode: "USB", regions: [1] },
383
+ { name: "Beacons only Reg1", mhz: [144400, 144490], priority: 100, regions: [1] },
384
+ { name: "FM", mhz: [144300, 148e3], mode: "FM" },
385
+ { name: "Reg1", mhz: [144500, 144794], mode: null, regions: [1] },
386
+ { name: "FM Satellite Reg1", mhz: [145194, 145206], mode: "FM", regions: [1] },
387
+ { name: "FM Reg1", mhz: [145206, 145563], mode: "FM", regions: [1] },
388
+ { name: "Out of band Reg1", mhz: [146e3, 148e3], mode: false, regions: [1] }
389
+ ]
390
+ },
391
+ "1.25m": {
392
+ mhz: [222e3, 225e3],
393
+ segments: [
394
+ { name: "CW", mhz: [222e3, 222070], mode: "CW" },
395
+ { name: "Phone", mhz: [222070, 222150], mode: "SSB", submode: "USB" },
396
+ { name: "FM", mhz: [222200, 225e3], mode: "FM" }
397
+ ]
398
+ },
399
+ "70cm": {
400
+ mhz: [42e4, 45e4],
401
+ segments: [
402
+ { name: "Out of band Reg1", mhz: [42e4, 43e4], mode: false, regions: [1] },
403
+ { name: "CW", mhz: [432e3, 432100], mode: "CW" },
404
+ { name: "Phone", mhz: [432100, 432300], mode: "SSB", submode: "USB" },
405
+ { name: "Phone", mhz: [432420, 433e3], mode: "SSB", submode: "USB" },
406
+ { name: "Phone", mhz: [432100, 432400], mode: "SSB", submode: "USB", regions: [1] },
407
+ { name: "FM", mhz: [42e4, 45e4], mode: "FM" },
408
+ { name: "FM Reg1", mhz: [433400, 433575], mode: "FM", regions: [1] },
409
+ { name: "Out of band Reg1", mhz: [44e4, 45e4], mode: false, regions: [1] }
410
+ ]
411
+ },
412
+ "33cm": {
413
+ mhz: [902e3, 928e3],
414
+ segments: [
415
+ { name: "FM", mhz: [927e3, 928e3], mode: "FM" }
416
+ ]
417
+ }
418
+ }
419
+ };
420
+
421
+ // src/lib/modes.ts
422
+ var SUPER_MODES = [
423
+ "CW",
424
+ "PHONE",
425
+ "DATA"
426
+ ];
427
+ var MAIN_MODES = [
428
+ "CW",
429
+ "SSB",
430
+ "AM",
431
+ "FM",
432
+ "FT8",
433
+ "FT4",
434
+ "RTTY"
435
+ ];
436
+ var POPULAR_MODES = [
437
+ "CW",
438
+ "SSB",
439
+ "USB",
440
+ "LSB",
441
+ "FM",
442
+ "AM",
443
+ "FT8",
444
+ "FT4",
445
+ "FT2",
446
+ "RTTY",
447
+ "DIGITALVOICE",
448
+ "C4FM",
449
+ "DMR",
450
+ "DSTAR",
451
+ "FREEDV",
452
+ "M17",
453
+ "DYNAMIC",
454
+ "HELL",
455
+ "JT9",
456
+ "MFSK",
457
+ "MSK144",
458
+ "OLIVIA",
459
+ "PKT",
460
+ "PSK",
461
+ "SSTV",
462
+ "WSPR"
463
+ ];
464
+ var ADIF_MODES = [
465
+ "AM",
466
+ "ARDOP",
467
+ "ATV",
468
+ "CHIP",
469
+ "CLO",
470
+ "CONTESTI",
471
+ "CW",
472
+ "DIGITALVOICE",
473
+ "DOMINO",
474
+ "DYNAMIC",
475
+ "FAX",
476
+ "FM",
477
+ "FSK",
478
+ "FSK441",
479
+ "FT8",
480
+ "HELL",
481
+ "ISCAT",
482
+ "JT4",
483
+ "JT6M",
484
+ "JT9",
485
+ "JT44",
486
+ "JT65",
487
+ "MFSK",
488
+ "MSK144",
489
+ "MT63",
490
+ "MTONE",
491
+ "ODFM",
492
+ "OLIVIA",
493
+ "OPERA",
494
+ "PAC",
495
+ "PAX",
496
+ "PKT",
497
+ "PSK",
498
+ "PSK2K",
499
+ "Q15",
500
+ "QRA64",
501
+ "ROS",
502
+ "RTTY",
503
+ "RTTYM",
504
+ "SSB",
505
+ "SSTV",
506
+ "T10",
507
+ "THOR",
508
+ "THRB",
509
+ "TOR",
510
+ "V4",
511
+ "VOI",
512
+ "WINMOR",
513
+ "WSPR"
514
+ ];
515
+ var ADIF_SUBMODES = {
516
+ "CW": ["PCW"],
517
+ "CHIP": ["CHIP64", "CHIP128"],
518
+ "DIGITALVOICE": ["C4FM", "DMR", "DSTAR", "FREEDV", "M17"],
519
+ "DOMINO": ["DOM-M", "DOM4", "DOM5", "DOM8", "DOM11", "DOM16", "DOM22", "DOM44", "DOM88", "DOMINOEX", "DOMINOF"],
520
+ "DYNAMIC": ["FREEDATA", "VARA HF", "VARA SATELLITE", "VARA FM 1200", "VARA FM 9600"],
521
+ "FSK": ["SCAMP_FAST", "SCAMP_SLOW", "SCAMP_VSLOW"],
522
+ "HELL": ["FMHELL", "FSKH105", "FSKH245", "FSKHELL", "HELL80", "HELLX5", "HELLX9", "HFSK", "PSKHELL", "SLOWHELL"],
523
+ "ISCAT": ["ISCAT-A", "ISCAT-B"],
524
+ "JT4": ["JT4A", "JT4B", "JT4C", "JT4D", "JT4E", "JT4F", "JT4G"],
525
+ "JT9": ["JT9-1", "JT9-2", "JT9-5", "JT9-10", "JT9-30", "JT9A", "JT9B", "JT9C", "JT9D", "JT9E", "JT9E FAST", "JT9F", "JT9F FAST", "JT9G", "JT9G FAST", "JT9H", "JT9H FAST"],
526
+ "JT65": ["JT65A", "JT65B", "JT65B2", "JT65C", "JT65C2"],
527
+ "MFSK": ["FSQCALL", "FST4", "FST4W", "FT4", "FT2", "JS8", "JTMS", "MFSK4", "MFSK8", "MFSK11", "MFSK16", "MFSK22", "MFSK31", "MFSK32", "MFSK64", "MFSK64L", "MFSK128 MFSK128L", "Q65"],
528
+ "MTONE": ["SCAMP_OO", "SCAMP_OO_SLW"],
529
+ "ODFM": ["RIBBIT_PIX", "RIBBIT_SMS"],
530
+ "OLIVIA": ["OLIVIA 4/125", "OLIVIA 4/250", "OLIVIA 8/250", "OLIVIA 8/500", "OLIVIA 16/500", "OLIVIA 16/1000", "OLIVIA 32/1000"],
531
+ "OPERA": ["OPERA-BEACON", "OPERA-QSO"],
532
+ "PAC": ["PAC2", "PAC3", "PAC4"],
533
+ "PAX": ["PAX2"],
534
+ "PSK": ["8PSK125", "8PSK125F", "8PSK125FL", "8PSK250", "8PSK250F", "8PSK250FL", "8PSK500", "8PSK500F", "8PSK1000", "8PSK1000F", "8PSK1200F", "FSK31", "PSK10", "PSK31", "PSK63", "PSK63F", "PSK63RC4", "PSK63RC5", "PSK63RC10", "PSK63RC20", "PSK63RC32", "PSK125", "PSK125C12", "PSK125R", "PSK125RC10", "PSK125RC12", "PSK125RC16", "PSK125RC4", "PSK125RC5", "PSK250", "PSK250C6", "PSK250R", "PSK250RC2", "PSK250RC3", "PSK250RC5", "PSK250RC6", "PSK250RC7", "PSK500", "PSK500C2", "PSK500C4", "PSK500R", "PSK500RC2", "PSK500RC3", "PSK500RC4", "PSK800C2", "PSK800RC2", "PSK1000", "PSK1000C2", "PSK1000R", "PSK1000RC2", "PSKAM10", "PSKAM31", "PSKAM50", "PSKFEC31", "QPSK31", "QPSK63", "QPSK125", "QPSK250", "QPSK500", "SIM31"],
535
+ "QRA64": ["QRA64A", "QRA64B", "QRA64C", "QRA64D", "QRA64E"],
536
+ "ROS": ["ROS-EME", "ROS-HF", "ROS-MF"],
537
+ "RTTY": ["ASCI"],
538
+ "SSB": ["LSB", "USB"],
539
+ "THOR": ["THOR-M", "THOR4", "THOR5", "THOR8", "THOR11", "THOR16", "THOR22", "THOR25X4", "THOR50X1", "THOR50X2", "THOR100"],
540
+ "THRB": ["THRBX", "THRBX1", "THRBX2", "THRBX4", "THROB1", "THROB2", "THROB4"],
541
+ "TOR": ["AMTORFEC", "GTOR", "NAVTEX", "SITORB"]
542
+ };
543
+ var ALL_MODES = [
544
+ .../* @__PURE__ */ new Set([
545
+ ...ADIF_MODES,
546
+ ...Object.values(ADIF_SUBMODES).flat()
547
+ ])
548
+ ].sort();
549
+ var PHONE_MODES = [
550
+ "SSB",
551
+ "USB",
552
+ "LSB",
553
+ "FM",
554
+ "AM",
555
+ "DIGITALVOICE",
556
+ ...ADIF_SUBMODES.DIGITALVOICE
557
+ ];
558
+ var ADIF_MODE_FOR_SUBMODE = {};
559
+ Object.keys(ADIF_SUBMODES).forEach((mode) => {
560
+ ADIF_SUBMODES[mode].forEach((submode) => {
561
+ ADIF_MODE_FOR_SUBMODE[submode] = mode;
562
+ });
563
+ });
564
+ var ADIF_MODES_AND_SUBMODES = [.../* @__PURE__ */ new Set([...ADIF_MODES, ...Object.values(ADIF_SUBMODES).flat()])].sort();
565
+ function adifModeAndSubmodeForMode(mode) {
566
+ if (ADIF_MODE_FOR_SUBMODE[mode]) {
567
+ return [ADIF_MODE_FOR_SUBMODE[mode], mode];
568
+ } else {
569
+ return [mode];
570
+ }
571
+ }
572
+ function superModeForMode(mode) {
573
+ if (ADIF_MODE_FOR_SUBMODE[mode]) mode = ADIF_MODE_FOR_SUBMODE[mode];
574
+ if (mode === "CW") {
575
+ return "CW";
576
+ } else if (PHONE_MODES.includes(mode)) {
577
+ return "PHONE";
578
+ } else {
579
+ return "DATA";
580
+ }
581
+ }
582
+ var bandPlansData = bandPlans_default;
583
+ var AllSegments = Object.keys(bandPlansData.bands).reduce((segments, band) => {
584
+ return segments.concat(
585
+ bandPlansData.bands[band].segments.map((segment) => {
586
+ const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2 ? [segment.mhz[0], segment.mhz[1]] : [0, 0];
587
+ return {
588
+ name: segment.name,
589
+ mode: segment.mode,
590
+ submode: segment.submode,
591
+ priority: segment.priority,
592
+ mhz,
593
+ band,
594
+ width: mhz[1] - mhz[0],
595
+ regions: (segment.regions || []).reduce((regions, region) => {
596
+ regions[region.toString()] = true;
597
+ return regions;
598
+ }, {}),
599
+ entities: (segment.entities || []).reduce((entities, entity) => {
600
+ entities[entity] = true;
601
+ return entities;
602
+ }, {}),
603
+ countries: (segment.countries || []).reduce((countries, country) => {
604
+ countries[country] = true;
605
+ return countries;
606
+ }, {})
607
+ };
608
+ })
609
+ );
610
+ }, []);
611
+ function modeForFrequency(frequency, options = {}) {
612
+ const { ituRegion, countryCode, entityPrefix } = options;
613
+ const segments = AllSegments.filter((segment) => segment.mhz[0] <= frequency && segment.mhz[1] >= frequency && (!entityPrefix || Object.keys(segment.entities).length === 0 || segment.entities[entityPrefix]) && (!countryCode || Object.keys(segment.countries).length === 0 || segment.countries[countryCode]) && (!ituRegion || Object.keys(segment.regions).length === 0 || segment.regions[ituRegion.toString()]));
614
+ const sortedSegments = segments.sort((a, b) => {
615
+ if ((a.priority ?? 0) < (b.priority ?? 0)) return 1;
616
+ if ((a.priority ?? 0) > (b.priority ?? 0)) return -1;
617
+ if (entityPrefix && !a.entities[entityPrefix] && b.entities[entityPrefix]) return 1;
618
+ if (entityPrefix && a.entities[entityPrefix] && !b.entities[entityPrefix]) return -1;
619
+ if (countryCode && !a.countries[countryCode] && b.countries[countryCode]) return 1;
620
+ if (countryCode && a.countries[countryCode] && !b.countries[countryCode]) return -1;
621
+ if (ituRegion && !a.regions[ituRegion.toString()] && b.regions[ituRegion.toString()]) return 1;
622
+ if (ituRegion && a.regions[ituRegion.toString()] && !b.regions[ituRegion.toString()]) return -1;
623
+ return a.width - b.width;
624
+ });
625
+ return sortedSegments[0]?.mode;
626
+ }
627
+
628
+ exports.ADIF_MODES = ADIF_MODES;
629
+ exports.ADIF_MODES_AND_SUBMODES = ADIF_MODES_AND_SUBMODES;
630
+ exports.ADIF_MODE_FOR_SUBMODE = ADIF_MODE_FOR_SUBMODE;
631
+ exports.ADIF_SUBMODES = ADIF_SUBMODES;
632
+ exports.ALL_MODES = ALL_MODES;
633
+ exports.BANDS = BANDS;
634
+ exports.CONTEST_BANDS = CONTEST_BANDS;
635
+ exports.EHF_BANDS = EHF_BANDS;
636
+ exports.EXTENDED_BANDS = EXTENDED_BANDS;
637
+ exports.HF_BANDS = HF_BANDS;
638
+ exports.MAIN_MODES = MAIN_MODES;
639
+ exports.PHONE_MODES = PHONE_MODES;
640
+ exports.POPULAR_BANDS = POPULAR_BANDS;
641
+ exports.POPULAR_MODES = POPULAR_MODES;
642
+ exports.SHF_BANDS = SHF_BANDS;
643
+ exports.SUPER_MODES = SUPER_MODES;
644
+ exports.UHF_BANDS = UHF_BANDS;
645
+ exports.VHF_BANDS = VHF_BANDS;
646
+ exports.adifModeAndSubmodeForMode = adifModeAndSubmodeForMode;
647
+ exports.bandForExactFrequencyInMHz = bandForExactFrequencyInMHz;
648
+ exports.bandForFrequency = bandForFrequency;
649
+ exports.frequencyForBand = frequencyForBand;
650
+ exports.modeForFrequency = modeForFrequency;
651
+ exports.superModeForMode = superModeForMode;
652
+ //# sourceMappingURL=index.cjs.map
653
+ //# sourceMappingURL=index.cjs.map