@ham2k/lib-operation-data 1.0.5 → 1.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/dist/index.cjs ADDED
@@ -0,0 +1,652 @@
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: "Out of band", mhz: [10100, 10150], mode: false, countries: ["au", "za"] }
262
+ ]
263
+ },
264
+ "20m": {
265
+ mhz: [14e3, 14350],
266
+ segments: [
267
+ { name: "CW", mhz: [14e3, 14150], mode: "CW" },
268
+ { name: "CW Reg1", mhz: [14e3, 14070], mode: "CW", regions: [1] },
269
+ { name: "CW Reg2", mhz: [14e3, 14101], mode: "CW", regions: [2] },
270
+ { name: "Data", mhz: [14070, 14095], mode: "RTTY" },
271
+ { name: "FT8", mhz: [14074, 14077], mode: "FT8", priority: 100 },
272
+ { name: "FT4", mhz: [14080, 14083], mode: "FT4", priority: 100 },
273
+ { name: "Phone", mhz: [14112, 14350], mode: "SSB", submode: "USB", regions: [1, 2] },
274
+ { name: "Phone", mhz: [14150, 14350], mode: "SSB", submode: "USB", countries: ["us"] },
275
+ { name: "Australia", mhz: [14e3, 14350], mode: null, countries: ["au"] }
276
+ ]
277
+ },
278
+ "17m": {
279
+ mhz: [18068, 18168],
280
+ segments: [
281
+ { name: "CW", mhz: [18068, 18110], mode: "CW" },
282
+ { name: "CW Reg1", mhz: [18068, 18095], mode: "CW", regions: [1] },
283
+ { name: "Data", mhz: [18100, 18105], mode: "RTTY" },
284
+ { name: "FT8", mhz: [18100, 18103], mode: "FT8", priority: 100 },
285
+ { name: "FT4", mhz: [18104, 18107], mode: "FT4", priority: 100 },
286
+ { name: "Beacons only", mhz: [18109, 18111], priority: 100 },
287
+ { name: "Phone", mhz: [18111, 18168], mode: "SSB", submode: "USB" },
288
+ { name: "Phone US", mhz: [18110, 18168], mode: "SSB", submode: "USB", countries: ["us"] },
289
+ { name: "Australia", mhz: [18068, 18168], mode: null, countries: ["au"] }
290
+ ]
291
+ },
292
+ "15m": {
293
+ mhz: [21e3, 21450],
294
+ segments: [
295
+ { name: "CW", mhz: [21e3, 21150], mode: "CW" },
296
+ { name: "CW Reg1", mhz: [21e3, 21070], mode: "CW", regions: [1] },
297
+ { name: "Data", mhz: [21070, 21095], mode: "RTTY" },
298
+ { name: "FT8", mhz: [21074, 21077], mode: "FT8", priority: 100 },
299
+ { name: "FT4", mhz: [21140, 21143], mode: "FT4", priority: 100 },
300
+ { name: "Beacons only", mhz: [21149, 21151], priority: 100 },
301
+ { name: "Phone", mhz: [21151, 21450], mode: "SSB", submode: "USB" },
302
+ { name: "Phone US", mhz: [21150, 21450], mode: "SSB", submode: "USB", countries: ["us"] },
303
+ { name: "Australia", mhz: [21e3, 21450], mode: null, countries: ["au"] }
304
+ ]
305
+ },
306
+ "12m": {
307
+ mhz: [24890, 24990],
308
+ segments: [
309
+ { name: "CW", mhz: [24890, 24930], mode: "CW" },
310
+ { name: "CW Reg1", mhz: [24890, 24915], mode: "CW", regions: [1] },
311
+ { name: "FT8", mhz: [24915, 24918], mode: "FT8", priority: 100 },
312
+ { name: "FT4", mhz: [24919, 23922], mode: "FT4", priority: 100 },
313
+ { name: "Data", mhz: [24920, 24925], mode: "RTTY" },
314
+ { name: "Phone", mhz: [24930, 24990], mode: "SSB", submode: "USB" },
315
+ { name: "Beacons only", mhz: [24929, 24931], priority: 100 },
316
+ { name: "Phone US", mhz: [24930, 24990], mode: "SSB", submode: "USB", countries: ["us"] },
317
+ { name: "Australia", mhz: [24890, 24990], mode: null, countries: ["au"] }
318
+ ]
319
+ },
320
+ "10m": {
321
+ mhz: [28e3, 29700],
322
+ segments: [
323
+ { name: "CW", mhz: [28e3, 28190], mode: "CW" },
324
+ { name: "CW Reg1", mhz: [28e3, 28070], mode: "CW", regions: [1] },
325
+ { name: "Data", mhz: [28070, 28150], mode: "RTTY" },
326
+ { name: "FT8", mhz: [28074, 28077], mode: "FT8", priority: 100 },
327
+ { name: "FT4", mhz: [28180, 28183], mode: "FT4", priority: 100 },
328
+ { name: "Beacons only", mhz: [28190, 28300], priority: 100 },
329
+ { name: "Phone SSB", mhz: [28300, 29e3], mode: "SSB", submode: "USB" },
330
+ { name: "AM", mhz: [29e3, 29200], mode: "AM" },
331
+ { name: "Satellite", mhz: [29300, 29520] },
332
+ { name: "Guard Channel", mhz: [29510, 29520], priority: 100, regions: [1] },
333
+ { name: "Repeater Uplinks", mhz: [29520, 29590] },
334
+ { name: "FM", mhz: [29520, 29700], mode: "FM" },
335
+ { name: "Repeater Downlinks", mhz: [29620, 29700] },
336
+ { name: "Australia", mhz: [28e3, 29700], mode: null, countries: ["au"] }
337
+ ]
338
+ },
339
+ "6m": {
340
+ mhz: [5e4, 54e3],
341
+ segments: [
342
+ { name: "Beacon project Reg1", mhz: [5e4, 50010], mode: null, regions: [1] },
343
+ { name: "Beacon project Reg2", mhz: [50010, 50020], mode: null, regions: [2] },
344
+ { name: "Beacon project Reg 3", mhz: [50020, 50030], mode: null, regions: [3] },
345
+ { name: "CW", mhz: [5e4, 50100], mode: "CW" },
346
+ { name: "Phone Reg1", mhz: [50100, 50300], mode: "SSB", submode: "USB", regions: [1] },
347
+ { name: "FM Reg1", mhz: [51400, 54e3], mode: "FM", regions: [1] },
348
+ { name: "Phone", mhz: [50150, 50400], mode: "SSB", submode: "USB" },
349
+ { name: "Phone", mhz: [51e3, 51110], mode: "SSB", submode: "USB" },
350
+ { name: "FM", mhz: [51110, 52100], mode: "FM" },
351
+ { name: "FM", mhz: [51110, 52100], mode: "FM" },
352
+ { name: "FM Simplex Reg1", mhz: [51410, 51590], mode: "FM", regions: [1] },
353
+ { name: "FT8", mhz: [50313, 50316], mode: "FT8", priority: 100 },
354
+ { name: "FT4", mhz: [50318, 50321], mode: "FT4", priority: 100 },
355
+ { name: "FT8", mhz: [50323, 50326], mode: "FT8", priority: 100 },
356
+ { name: "Australia", mhz: [5e4, 54e3], mode: null, countries: ["au"] }
357
+ ]
358
+ },
359
+ "4m": {
360
+ mhz: [7e4, 70500],
361
+ segments: [
362
+ { name: "Beacons only Reg1", mhz: [70090, 70100], mode: "CW", regions: [1] },
363
+ { name: "CW Reg1", mhz: [7e4, 70090], mode: "CW", regions: [1] },
364
+ { name: "Phone", mhz: [70100, 70294], mode: "SSB", submode: "USB", regions: [1] },
365
+ { name: "FM", mhz: [70294, 70500], mode: "FM", regions: [1] },
366
+ { name: "AM", mhz: [70257, 70263], mode: "AM", priority: 100, regions: [1] },
367
+ { name: "FT8", mhz: [70100, 70103], mode: "FT8", priority: 100, regions: [1] },
368
+ { name: "FT8", mhz: [70154, 70157], mode: "FT8", priority: 100, regions: [1] }
369
+ ]
370
+ },
371
+ "2m": {
372
+ mhz: [144e3, 148e3],
373
+ segments: [
374
+ { name: "CW", mhz: [144e3, 144100], mode: "CW" },
375
+ { name: "Satellite downlink Reg1", mhz: [144e3, 144025], mode: null, regions: [1] },
376
+ { name: "CW Reg1", mhz: [144025, 144150], mode: "CW", regions: [1] },
377
+ { name: "Data", mhz: [144100, 144200], mode: "RTTY" },
378
+ { name: "FT8", mhz: [144174, 144177], mode: "FT8", priority: 100 },
379
+ { name: "FT4", mhz: [144170, 144173], mode: "FT4", priority: 100 },
380
+ { name: "Phone", mhz: [144200, 144275], mode: "SSB", submode: "USB" },
381
+ { name: "Phone Reg1", mhz: [144150, 144400], mode: "SSB", submode: "USB", regions: [1] },
382
+ { name: "Beacons only Reg1", mhz: [144400, 144490], priority: 100, regions: [1] },
383
+ { name: "FM", mhz: [144300, 148e3], mode: "FM" },
384
+ { name: "Reg1", mhz: [144500, 144794], mode: null, regions: [1] },
385
+ { name: "FM Satellite Reg1", mhz: [145194, 145206], mode: "FM", regions: [1] },
386
+ { name: "FM Reg1", mhz: [145206, 145563], mode: "FM", regions: [1] },
387
+ { name: "Out of band Reg1", mhz: [146e3, 148e3], mode: false, regions: [1] }
388
+ ]
389
+ },
390
+ "1.25m": {
391
+ mhz: [222e3, 225e3],
392
+ segments: [
393
+ { name: "CW", mhz: [222e3, 222070], mode: "CW" },
394
+ { name: "Phone", mhz: [222070, 222150], mode: "SSB", submode: "USB" },
395
+ { name: "FM", mhz: [222200, 225e3], mode: "FM" }
396
+ ]
397
+ },
398
+ "70cm": {
399
+ mhz: [42e4, 45e4],
400
+ segments: [
401
+ { name: "Out of band Reg1", mhz: [42e4, 43e4], mode: false, regions: [1] },
402
+ { name: "CW", mhz: [432e3, 432100], mode: "CW" },
403
+ { name: "Phone", mhz: [432100, 432300], mode: "SSB", submode: "USB" },
404
+ { name: "Phone", mhz: [432420, 433e3], mode: "SSB", submode: "USB" },
405
+ { name: "Phone", mhz: [432100, 432400], mode: "SSB", submode: "USB", regions: [1] },
406
+ { name: "FM", mhz: [42e4, 45e4], mode: "FM" },
407
+ { name: "FM Reg1", mhz: [433400, 433575], mode: "FM", regions: [1] },
408
+ { name: "Out of band Reg1", mhz: [44e4, 45e4], mode: false, regions: [1] }
409
+ ]
410
+ },
411
+ "33cm": {
412
+ mhz: [902e3, 928e3],
413
+ segments: [
414
+ { name: "FM", mhz: [927e3, 928e3], mode: "FM" }
415
+ ]
416
+ }
417
+ }
418
+ };
419
+
420
+ // src/lib/modes.ts
421
+ var SUPER_MODES = [
422
+ "CW",
423
+ "PHONE",
424
+ "DATA"
425
+ ];
426
+ var MAIN_MODES = [
427
+ "CW",
428
+ "SSB",
429
+ "AM",
430
+ "FM",
431
+ "FT8",
432
+ "FT4",
433
+ "RTTY"
434
+ ];
435
+ var POPULAR_MODES = [
436
+ "CW",
437
+ "SSB",
438
+ "USB",
439
+ "LSB",
440
+ "FM",
441
+ "AM",
442
+ "FT8",
443
+ "FT4",
444
+ "FT2",
445
+ "RTTY",
446
+ "DIGITALVOICE",
447
+ "C4FM",
448
+ "DMR",
449
+ "DSTAR",
450
+ "FREEDV",
451
+ "M17",
452
+ "DYNAMIC",
453
+ "HELL",
454
+ "JT9",
455
+ "MFSK",
456
+ "MSK144",
457
+ "OLIVIA",
458
+ "PKT",
459
+ "PSK",
460
+ "SSTV",
461
+ "WSPR"
462
+ ];
463
+ var ADIF_MODES = [
464
+ "AM",
465
+ "ARDOP",
466
+ "ATV",
467
+ "CHIP",
468
+ "CLO",
469
+ "CONTESTI",
470
+ "CW",
471
+ "DIGITALVOICE",
472
+ "DOMINO",
473
+ "DYNAMIC",
474
+ "FAX",
475
+ "FM",
476
+ "FSK",
477
+ "FSK441",
478
+ "FT8",
479
+ "HELL",
480
+ "ISCAT",
481
+ "JT4",
482
+ "JT6M",
483
+ "JT9",
484
+ "JT44",
485
+ "JT65",
486
+ "MFSK",
487
+ "MSK144",
488
+ "MT63",
489
+ "MTONE",
490
+ "ODFM",
491
+ "OLIVIA",
492
+ "OPERA",
493
+ "PAC",
494
+ "PAX",
495
+ "PKT",
496
+ "PSK",
497
+ "PSK2K",
498
+ "Q15",
499
+ "QRA64",
500
+ "ROS",
501
+ "RTTY",
502
+ "RTTYM",
503
+ "SSB",
504
+ "SSTV",
505
+ "T10",
506
+ "THOR",
507
+ "THRB",
508
+ "TOR",
509
+ "V4",
510
+ "VOI",
511
+ "WINMOR",
512
+ "WSPR"
513
+ ];
514
+ var ADIF_SUBMODES = {
515
+ "CW": ["PCW"],
516
+ "CHIP": ["CHIP64", "CHIP128"],
517
+ "DIGITALVOICE": ["C4FM", "DMR", "DSTAR", "FREEDV", "M17"],
518
+ "DOMINO": ["DOM-M", "DOM4", "DOM5", "DOM8", "DOM11", "DOM16", "DOM22", "DOM44", "DOM88", "DOMINOEX", "DOMINOF"],
519
+ "DYNAMIC": ["FREEDATA", "VARA HF", "VARA SATELLITE", "VARA FM 1200", "VARA FM 9600"],
520
+ "FSK": ["SCAMP_FAST", "SCAMP_SLOW", "SCAMP_VSLOW"],
521
+ "HELL": ["FMHELL", "FSKH105", "FSKH245", "FSKHELL", "HELL80", "HELLX5", "HELLX9", "HFSK", "PSKHELL", "SLOWHELL"],
522
+ "ISCAT": ["ISCAT-A", "ISCAT-B"],
523
+ "JT4": ["JT4A", "JT4B", "JT4C", "JT4D", "JT4E", "JT4F", "JT4G"],
524
+ "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"],
525
+ "JT65": ["JT65A", "JT65B", "JT65B2", "JT65C", "JT65C2"],
526
+ "MFSK": ["FSQCALL", "FST4", "FST4W", "FT4", "FT2", "JS8", "JTMS", "MFSK4", "MFSK8", "MFSK11", "MFSK16", "MFSK22", "MFSK31", "MFSK32", "MFSK64", "MFSK64L", "MFSK128 MFSK128L", "Q65"],
527
+ "MTONE": ["SCAMP_OO", "SCAMP_OO_SLW"],
528
+ "ODFM": ["RIBBIT_PIX", "RIBBIT_SMS"],
529
+ "OLIVIA": ["OLIVIA 4/125", "OLIVIA 4/250", "OLIVIA 8/250", "OLIVIA 8/500", "OLIVIA 16/500", "OLIVIA 16/1000", "OLIVIA 32/1000"],
530
+ "OPERA": ["OPERA-BEACON", "OPERA-QSO"],
531
+ "PAC": ["PAC2", "PAC3", "PAC4"],
532
+ "PAX": ["PAX2"],
533
+ "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"],
534
+ "QRA64": ["QRA64A", "QRA64B", "QRA64C", "QRA64D", "QRA64E"],
535
+ "ROS": ["ROS-EME", "ROS-HF", "ROS-MF"],
536
+ "RTTY": ["ASCI"],
537
+ "SSB": ["LSB", "USB"],
538
+ "THOR": ["THOR-M", "THOR4", "THOR5", "THOR8", "THOR11", "THOR16", "THOR22", "THOR25X4", "THOR50X1", "THOR50X2", "THOR100"],
539
+ "THRB": ["THRBX", "THRBX1", "THRBX2", "THRBX4", "THROB1", "THROB2", "THROB4"],
540
+ "TOR": ["AMTORFEC", "GTOR", "NAVTEX", "SITORB"]
541
+ };
542
+ var ALL_MODES = [
543
+ .../* @__PURE__ */ new Set([
544
+ ...ADIF_MODES,
545
+ ...Object.values(ADIF_SUBMODES).flat()
546
+ ])
547
+ ].sort();
548
+ var PHONE_MODES = [
549
+ "SSB",
550
+ "USB",
551
+ "LSB",
552
+ "FM",
553
+ "AM",
554
+ "DIGITALVOICE",
555
+ ...ADIF_SUBMODES.DIGITALVOICE
556
+ ];
557
+ var ADIF_MODE_FOR_SUBMODE = {};
558
+ Object.keys(ADIF_SUBMODES).forEach((mode) => {
559
+ ADIF_SUBMODES[mode].forEach((submode) => {
560
+ ADIF_MODE_FOR_SUBMODE[submode] = mode;
561
+ });
562
+ });
563
+ var ADIF_MODES_AND_SUBMODES = [.../* @__PURE__ */ new Set([...ADIF_MODES, ...Object.values(ADIF_SUBMODES).flat()])].sort();
564
+ function adifModeAndSubmodeForMode(mode) {
565
+ if (ADIF_MODE_FOR_SUBMODE[mode]) {
566
+ return [ADIF_MODE_FOR_SUBMODE[mode], mode];
567
+ } else {
568
+ return [mode];
569
+ }
570
+ }
571
+ function superModeForMode(mode) {
572
+ if (ADIF_MODE_FOR_SUBMODE[mode]) mode = ADIF_MODE_FOR_SUBMODE[mode];
573
+ if (mode === "CW") {
574
+ return "CW";
575
+ } else if (PHONE_MODES.includes(mode)) {
576
+ return "PHONE";
577
+ } else {
578
+ return "DATA";
579
+ }
580
+ }
581
+ var bandPlansData = bandPlans_default;
582
+ var AllSegments = Object.keys(bandPlansData.bands).reduce((segments, band) => {
583
+ return segments.concat(
584
+ bandPlansData.bands[band].segments.map((segment) => {
585
+ const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2 ? [segment.mhz[0], segment.mhz[1]] : [0, 0];
586
+ return {
587
+ name: segment.name,
588
+ mode: segment.mode,
589
+ submode: segment.submode,
590
+ priority: segment.priority,
591
+ mhz,
592
+ band,
593
+ width: mhz[1] - mhz[0],
594
+ regions: (segment.regions || []).reduce((regions, region) => {
595
+ regions[region.toString()] = true;
596
+ return regions;
597
+ }, {}),
598
+ entities: (segment.entities || []).reduce((entities, entity) => {
599
+ entities[entity] = true;
600
+ return entities;
601
+ }, {}),
602
+ countries: (segment.countries || []).reduce((countries, country) => {
603
+ countries[country] = true;
604
+ return countries;
605
+ }, {})
606
+ };
607
+ })
608
+ );
609
+ }, []);
610
+ function modeForFrequency(frequency, options = {}) {
611
+ const { ituRegion, countryCode, entityPrefix } = options;
612
+ 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()]));
613
+ const sortedSegments = segments.sort((a, b) => {
614
+ if ((a.priority ?? 0) < (b.priority ?? 0)) return 1;
615
+ if ((a.priority ?? 0) > (b.priority ?? 0)) return -1;
616
+ if (entityPrefix && !a.entities[entityPrefix] && b.entities[entityPrefix]) return 1;
617
+ if (entityPrefix && a.entities[entityPrefix] && !b.entities[entityPrefix]) return -1;
618
+ if (countryCode && !a.countries[countryCode] && b.countries[countryCode]) return 1;
619
+ if (countryCode && a.countries[countryCode] && !b.countries[countryCode]) return -1;
620
+ if (ituRegion && !a.regions[ituRegion.toString()] && b.regions[ituRegion.toString()]) return 1;
621
+ if (ituRegion && a.regions[ituRegion.toString()] && !b.regions[ituRegion.toString()]) return -1;
622
+ return a.width - b.width;
623
+ });
624
+ return sortedSegments[0]?.mode;
625
+ }
626
+
627
+ exports.ADIF_MODES = ADIF_MODES;
628
+ exports.ADIF_MODES_AND_SUBMODES = ADIF_MODES_AND_SUBMODES;
629
+ exports.ADIF_MODE_FOR_SUBMODE = ADIF_MODE_FOR_SUBMODE;
630
+ exports.ADIF_SUBMODES = ADIF_SUBMODES;
631
+ exports.ALL_MODES = ALL_MODES;
632
+ exports.BANDS = BANDS;
633
+ exports.CONTEST_BANDS = CONTEST_BANDS;
634
+ exports.EHF_BANDS = EHF_BANDS;
635
+ exports.EXTENDED_BANDS = EXTENDED_BANDS;
636
+ exports.HF_BANDS = HF_BANDS;
637
+ exports.MAIN_MODES = MAIN_MODES;
638
+ exports.PHONE_MODES = PHONE_MODES;
639
+ exports.POPULAR_BANDS = POPULAR_BANDS;
640
+ exports.POPULAR_MODES = POPULAR_MODES;
641
+ exports.SHF_BANDS = SHF_BANDS;
642
+ exports.SUPER_MODES = SUPER_MODES;
643
+ exports.UHF_BANDS = UHF_BANDS;
644
+ exports.VHF_BANDS = VHF_BANDS;
645
+ exports.adifModeAndSubmodeForMode = adifModeAndSubmodeForMode;
646
+ exports.bandForExactFrequencyInMHz = bandForExactFrequencyInMHz;
647
+ exports.bandForFrequency = bandForFrequency;
648
+ exports.frequencyForBand = frequencyForBand;
649
+ exports.modeForFrequency = modeForFrequency;
650
+ exports.superModeForMode = superModeForMode;
651
+ //# sourceMappingURL=index.cjs.map
652
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/bands.ts","../src/data/bandPlans.json","../src/lib/modes.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export const EXTENDED_BANDS = [ // Includes 11m\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '11m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport const BANDS = [\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport type Band = typeof EXTENDED_BANDS[number]\n\nexport const HF_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m'] as const\nexport const VHF_BANDS = ['6m', '5m', '4m', '2m', '1.25m'] as const\nexport const UHF_BANDS = ['70cm', '33cm', '23cm', '13cm'] as const\nexport const SHF_BANDS = ['9cm', '6cm', '3cm', '1.25cm'] as const\nexport const EHF_BANDS = ['6mm', '4mm', '2mm', '2.5mm', '1mm', 'submm'] as const\n\nexport const POPULAR_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m', '6m', '2m', '70cm'] as const\nexport const CONTEST_BANDS = ['160m', '80m', '40m', '20m', '15m', '10m'] as const\n\nexport function bandForFrequency(freq: number): Band {\n return bandForExactFrequencyInMHz(freq) ?? bandForExactFrequencyInMHz(freq * 1000) ?? 'other'\n}\n\nexport function bandForExactFrequencyInMHz(freq: number): Band | undefined {\n if (freq >= 130 && freq <= 140) return '2190m'\n else if (freq >= 450 && freq <= 499) return '630m'\n else if (freq >= 500 && freq <= 505) return '560m'\n else if (freq >= 1700 && freq <= 2100) return '160m'\n else if (freq >= 3400 && freq <= 4100) return '80m'\n else if (freq >= 5300 && freq <= 5500) return '60m'\n else if (freq >= 6900 && freq <= 7400) return '40m'\n else if (freq >= 10000 && freq <= 10200) return '30m'\n else if (freq >= 13900 && freq <= 14400) return '20m'\n else if (freq >= 18000 && freq <= 18200) return '17m'\n else if (freq >= 20900 && freq <= 21600) return '15m'\n else if (freq >= 24500 && freq <= 25200) return '12m'\n else if (freq >= 26000 && freq <= 27500) return '11m'\n else if (freq >= 27900 && freq <= 30000) return '10m'\n else if (freq >= 50000 && freq <= 54000) return '6m'\n else if (freq >= 54001 && freq <= 69999) return '5m'\n else if (freq >= 70000 && freq <= 71000) return '4m'\n else if (freq >= 140000 && freq <= 150000) return '2m'\n else if (freq >= 219000 && freq <= 230000) return '1.25m'\n else if (freq >= 400000 && freq <= 460000) return '70cm'\n else if (freq >= 900000 && freq <= 930000) return '33cm'\n else if (freq >= 1180000 && freq <= 1420000) return '23cm'\n else if (freq >= 2300000 && freq <= 2450000) return '13cm'\n else if (freq >= 3290000 && freq <= 3510000) return '9cm'\n else if (freq >= 5640000 && freq <= 5926000) return '6cm'\n else if (freq >= 10000000 && freq <= 10500000) return '3cm'\n else if (freq >= 24000000 && freq <= 24250000) return '1.25cm'\n else if (freq >= 47000000 && freq <= 47200000) return '6mm'\n else if (freq >= 75000000 && freq <= 81000000) return '4mm'\n else if (freq >= 122250000 && freq <= 123000000) return '2.5mm'\n else if (freq >= 134000000 && freq <= 141000000) return '2mm'\n else if (freq >= 241000000 && freq <= 250000000) return '1mm'\n else if (freq >= 300000000 && freq <= 7500000000) return 'submm'\n else return undefined\n}\n\nexport function frequencyForBand(band: Band, mode?: string): number | undefined {\n if (band === '2190m') return 135.7\n else if (band === '630m') return 472\n else if (band === '560m') return 501\n else if (band === '160m') {\n if (mode === 'FT8' || mode === 'FT4') return 1840\n else return 1800\n }\n else if (band === '80m') {\n if (mode === 'SSB' || mode === 'LSB') return 3800\n else if (mode === 'FT8') return 3573\n else if (mode === 'FT4') return 3575\n else return 3000\n }\n else if (band === '60m') {\n if (mode === 'FT8') return 5357\n else return 5330\n }\n else if (band === '40m') {\n if (mode === 'SSB' || mode === 'LSB') return 7175\n else if (mode === 'FT8') return 7074\n else if (mode === 'FT4') return 7047.5\n else return 7000\n }\n else if (band === '30m') {\n if (mode === 'FT8') return 10136\n else if (mode === 'FT4') return 10140\n else return 10100\n }\n else if (band === '20m') {\n if (mode === 'SSB' || mode === 'USB') return 14225\n else if (mode === 'FT8') return 14074\n else if (mode === 'FT4') return 14080\n else return 14000\n }\n else if (band === '17m') {\n if (mode === 'SSB' || mode === 'USB') return 18110\n else if (mode === 'FT8') return 18100\n else if (mode === 'FT4') return 18104\n else return 18068\n }\n else if (band === '15m') {\n if (mode === 'SSB' || mode === 'USB') return 21275\n else if (mode === 'FT8') return 21074\n else if (mode === 'FT4') return 21140\n else return 21000\n }\n else if (band === '12m') {\n if (mode === 'SSB' || mode === 'USB') return 24930\n else if (mode === 'FT8') return 24915\n else if (mode === 'FT4') return 24919\n else return 24890\n }\n else if (band === '11m') {\n return 26965\n }\n else if (band === '10m') {\n if (mode === 'SSB' || mode === 'USB') return 28300\n else if (mode === 'FM' || mode === 'AM') return 28500\n else if (mode === 'FT8') return 28074\n else if (mode === 'FT4') return 28180\n else return 28000\n }\n else if (band === '6m') {\n if (mode === 'SSB' || mode === 'USB') return 50125\n else if (mode === 'FT8') return 50313\n else if (mode === 'FT4') return 50318\n else return 50000\n }\n else if (band === '5m') return 55000\n else if (band === '4m') return 70090\n else if (band === '2m') return 145400\n else if (band === '1.25m') return 222000\n else if (band === '70cm') return 420000\n else if (band === '33cm') return 902000\n else if (band === '23cm') return 1240000\n else if (band === '13cm') return 2300000\n else if (band === '9cm') return 3300000\n else if (band === '6cm') return 5650000\n else if (band === '3cm') return 10000000\n else if (band === '1.25cm') return 24000000\n else if (band === '6mm') return 47000000\n else if (band === '4mm') return 75500000\n else if (band === '2.5mm') return 122500000\n else if (band === '2mm') return 134000000\n else if (band === '1mm') return 241000000\n else if (band === 'submm') return 300000000\n else return undefined\n}\n\n","{\n \"sources\": [\n { \"url\": \"https://www.iaru-r1.org/on-the-air/band-plans/\"},\n { \"url\": \"https://www.iaru-r1.org/about-us/committees-and-working-groups/vhf-uhf-shf-committee-c5/vhf-up-bandplanning/\"},\n { \"url\": \"https://www.iaru-r2.org/en/reference/band-plans/\" },\n { \"url\": \"https://rsgb.org/main/operating/band-plans/vhf-uhf/70mhz-band/\"},\n { \"url\": \"https://www.arrl.org/band-plan\" },\n { \"url\": \"https://www.arrl.org/news/view/updated-arrl-us-amateur-radio-bands-charts-now-available\" }\n ],\n \"bands\": {\n \"160m\": {\n \"mhz\": [1800, 2000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [1800, 2000], \"mode\": false, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [1810, 1838], \"mode\": \"CW\", \"regions\": [ 1 ] }, { \"name\": \"Data\", \"mhz\": [1800, 1810], \"mode\": \"RTTY\" },\n { \"name\": \"CW\", \"mhz\": [1800, 1843], \"mode\": \"CW\" },\n { \"name\": \"FT8\", \"mhz\": [1840, 1843], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [1843, 2000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [1800, 1875], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"80m\": {\n \"mhz\": [3500, 3800],\n \"segments\": [\n { \"name\": \"CW Reg1\", \"mhz\": [3500, 3570], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW\", \"mhz\": [3500, 3600], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [3535, 3800], \"mode\": \"SSB\", \"submode\": \"LSB\", \"regions\": [ 3 ] },\n { \"name\": \"FT8\", \"mhz\": [3568, 3571], \"mode\": \"FT8\", \"regions\": [ 3 ], \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [3570, 3600], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [3573, 3576], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [3600, 4000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [3500, 3800], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"60m\": {\n \"mhz\": [5330.5, 3406.5],\n \"segments\": [\n { \"name\": \"60m Channel 1\", \"mhz\": [5330.5, 5333.5] },\n { \"name\": \"60m Channel 2\", \"mhz\": [5346.5, 5349.5] },\n { \"name\": \"60m Channel 3\", \"mhz\": [5357, 5360], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"60m Channel 4\", \"mhz\": [5371.5, 5373.5] },\n { \"name\": \"60m Channel 5\", \"mhz\": [5403.5, 5406.5] }\n ]\n },\n \"40m\": {\n \"mhz\": [7000, 7300],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [7000, 7060], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [7000, 7040], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW US\", \"mhz\": [7000, 7125], \"mode\": \"CW\", \"countries\": [ \"us\" ] },\n { \"name\": \"FT4\", \"mhz\": [7047.5, 7050.5], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [7060, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"FT8\", \"mhz\": [7074, 7077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [7080, 7125], \"mode\": \"RTTY\", \"countries\": [ \"us\" ] },\n { \"name\": \"Phone\", \"mhz\": [7125, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [7000, 7300], \"mode\": null, \"countries\": [\"au\"] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [7200, 7300], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"30m\": {\n \"mhz\": [10100, 10150],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [10100, 10150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [10100, 10130], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [10130, 10140], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [10136, 10139], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [10140, 10143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Out of band\", \"mhz\": [10100, 10150], \"mode\": false, \"countries\": [\"au\", \"za\"] }\n ]\n },\n \"20m\": {\n \"mhz\": [14000, 14350],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [14000, 14150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [14000, 14070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg2\", \"mhz\": [14000, 14101], \"mode\": \"CW\", \"regions\": [ 2 ] },\n { \"name\": \"Data\", \"mhz\": [14070, 14095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [14074, 14077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [14080, 14083], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [14112, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1, 2 ] },\n { \"name\": \"Phone\", \"mhz\": [14150, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [14000, 14350], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"17m\": {\n \"mhz\": [18068, 18168],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [18068, 18110], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [18068, 18095], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [18100, 18105], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [18100, 18103], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [18104, 18107], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [18109, 18111], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [18111, 18168], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [18110, 18168], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [18068, 18168], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"15m\": {\n \"mhz\": [21000, 21450],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [21000, 21150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [21000, 21070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [21070, 21095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [21074, 21077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [21140, 21143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [21149, 21151], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [21151, 21450], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [21150, 21450], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [21000, 21450], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"12m\": {\n \"mhz\": [24890, 24990],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [24890, 24930], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [24890, 24915], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [24915, 24918], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [24919, 23922], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [24920, 24925], \"mode\": \"RTTY\" },\n { \"name\": \"Phone\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Beacons only\", \"mhz\": [24929, 24931], \"priority\": 100 },\n { \"name\": \"Phone US\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [24890, 24990], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"10m\": {\n \"mhz\": [28000, 29700],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [28000, 28190], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [28000, 28070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [28070, 28150], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [28074, 28077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [28180, 28183], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [28190, 28300], \"priority\": 100 },\n { \"name\": \"Phone SSB\", \"mhz\": [28300, 29000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"AM\", \"mhz\": [29000, 29200], \"mode\": \"AM\" },\n { \"name\": \"Satellite\", \"mhz\": [29300, 29520] },\n { \"name\": \"Guard Channel\", \"mhz\": [29510, 29520], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"Repeater Uplinks\", \"mhz\": [29520, 29590] },\n { \"name\": \"FM\", \"mhz\": [29520, 29700], \"mode\": \"FM\" },\n { \"name\": \"Repeater Downlinks\", \"mhz\": [29620, 29700] },\n { \"name\": \"Australia\", \"mhz\": [28000, 29700], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"6m\": {\n \"mhz\": [50000, 54000],\n \"segments\": [\n { \"name\": \"Beacon project Reg1\", \"mhz\": [50000, 50010], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"Beacon project Reg2\", \"mhz\": [50010, 50020], \"mode\": null, \"regions\": [ 2 ] },\n { \"name\": \"Beacon project Reg 3\", \"mhz\": [50020, 50030], \"mode\": null, \"regions\": [ 3 ] },\n { \"name\": \"CW\", \"mhz\": [50000, 50100], \"mode\": \"CW\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [50100, 50300], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ]},\n { \"name\": \"FM Reg1\", \"mhz\": [51400, 54000], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [50150, 50400], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [51000, 51110], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM Simplex Reg1\", \"mhz\": [51410, 51590], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [50313, 50316], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [50318, 50321], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"FT8\", \"mhz\": [50323, 50326], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Australia\", \"mhz\": [50000, 54000], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"4m\": {\n \"mhz\": [70000, 70500],\n \"segments\": [\n { \"name\": \"Beacons only Reg1\", \"mhz\": [70090, 70100], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [70000, 70090], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [70100, 70294], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [70294, 70500], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"AM\", \"mhz\": [70257, 70263], \"mode\": \"AM\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70100, 70103], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70154, 70157], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] }\n ]\n },\n \"2m\": {\n \"mhz\": [144000, 148000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [144000, 144100], \"mode\": \"CW\" },\n { \"name\": \"Satellite downlink Reg1\", \"mhz\": [144000, 144025], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [144025, 144150], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [144100, 144200], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [144174, 144177], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [144170, 144173], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [144200, 144275], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [144150, 144400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"Beacons only Reg1\", \"mhz\": [144400, 144490], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [144300, 148000], \"mode\": \"FM\" },\n { \"name\": \"Reg1\", \"mhz\": [144500, 144794], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"FM Satellite Reg1\", \"mhz\": [145194, 145206], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FM Reg1\", \"mhz\": [145206, 145563], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [146000, 148000], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"1.25m\": {\n \"mhz\": [222000, 225000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [222000, 222070], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [222070, 222150], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [222200, 225000], \"mode\": \"FM\" }\n ]\n },\n \"70cm\": {\n \"mhz\": [420000, 450000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [420000, 430000], \"mode\": false, \"regions\": [ 1 ]},\n { \"name\": \"CW\", \"mhz\": [432000, 432100], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432300], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432420, 433000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [420000, 450000], \"mode\": \"FM\" },\n { \"name\": \"FM Reg1\", \"mhz\": [433400, 433575], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [440000, 450000], \"mode\": false, \"regions\": [ 1 ]}\n ]\n },\n \"33cm\": {\n \"mhz\": [902000, 928000],\n \"segments\": [\n { \"name\": \"FM\", \"mhz\": [927000, 928000], \"mode\": \"FM\" }\n ]\n }\n }\n}\n","import BandPlans from '../data/bandPlans.json'\nimport type { BandPlansData, SegmentWithMetadata, ModeForFrequencyOptions } from '../types'\n\nexport const SUPER_MODES: readonly string[] = [\n 'CW',\n 'PHONE',\n 'DATA'\n] as const\n\nexport type SuperMode = 'CW' | 'PHONE' | 'DATA'\n\nexport const MAIN_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'AM',\n 'FM',\n 'FT8',\n 'FT4',\n 'RTTY'\n] as const\n\nexport const POPULAR_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'FT8',\n 'FT4',\n 'FT2',\n 'RTTY',\n 'DIGITALVOICE',\n 'C4FM',\n 'DMR',\n 'DSTAR',\n 'FREEDV',\n 'M17',\n 'DYNAMIC',\n 'HELL',\n 'JT9',\n 'MFSK',\n 'MSK144',\n 'OLIVIA',\n 'PKT',\n 'PSK',\n 'SSTV',\n 'WSPR',\n] as const\n\nexport const ADIF_MODES: readonly string[] = [\n 'AM',\n 'ARDOP',\n 'ATV',\n 'CHIP',\n 'CLO',\n 'CONTESTI',\n 'CW',\n 'DIGITALVOICE',\n 'DOMINO',\n 'DYNAMIC',\n 'FAX',\n 'FM',\n 'FSK',\n 'FSK441',\n 'FT8',\n 'HELL',\n 'ISCAT',\n 'JT4',\n 'JT6M',\n 'JT9',\n 'JT44',\n 'JT65',\n 'MFSK',\n 'MSK144',\n 'MT63',\n 'MTONE',\n 'ODFM',\n 'OLIVIA',\n 'OPERA',\n 'PAC',\n 'PAX',\n 'PKT',\n 'PSK',\n 'PSK2K',\n 'Q15',\n 'QRA64',\n 'ROS',\n 'RTTY',\n 'RTTYM',\n 'SSB',\n 'SSTV',\n 'T10',\n 'THOR',\n 'THRB',\n 'TOR',\n 'V4',\n 'VOI',\n 'WINMOR',\n 'WSPR'\n] as const\n\nexport const ADIF_SUBMODES: Record<string, readonly string[]> = {\n 'CW': ['PCW'],\n 'CHIP': ['CHIP64', 'CHIP128'],\n 'DIGITALVOICE': ['C4FM', 'DMR', 'DSTAR', 'FREEDV', 'M17'],\n 'DOMINO': ['DOM-M', 'DOM4', 'DOM5', 'DOM8', 'DOM11', 'DOM16', 'DOM22', 'DOM44', 'DOM88', 'DOMINOEX', 'DOMINOF'],\n 'DYNAMIC': ['FREEDATA', 'VARA HF', 'VARA SATELLITE', 'VARA FM 1200', 'VARA FM 9600'],\n 'FSK': ['SCAMP_FAST', 'SCAMP_SLOW', 'SCAMP_VSLOW'],\n 'HELL': ['FMHELL', 'FSKH105', 'FSKH245', 'FSKHELL', 'HELL80', 'HELLX5', 'HELLX9', 'HFSK', 'PSKHELL', 'SLOWHELL'],\n 'ISCAT': ['ISCAT-A', 'ISCAT-B'],\n 'JT4': ['JT4A', 'JT4B', 'JT4C', 'JT4D', 'JT4E', 'JT4F', 'JT4G'],\n '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'],\n 'JT65': ['JT65A', 'JT65B', 'JT65B2', 'JT65C', 'JT65C2'],\n 'MFSK': ['FSQCALL', 'FST4', 'FST4W', 'FT4', 'FT2', 'JS8', 'JTMS', 'MFSK4', 'MFSK8', 'MFSK11', 'MFSK16', 'MFSK22', 'MFSK31', 'MFSK32', 'MFSK64', 'MFSK64L', 'MFSK128 MFSK128L', 'Q65'],\n 'MTONE': ['SCAMP_OO', 'SCAMP_OO_SLW'],\n 'ODFM': ['RIBBIT_PIX', 'RIBBIT_SMS'],\n 'OLIVIA': ['OLIVIA 4/125', 'OLIVIA 4/250', 'OLIVIA 8/250', 'OLIVIA 8/500', 'OLIVIA 16/500', 'OLIVIA 16/1000', 'OLIVIA 32/1000'],\n 'OPERA': ['OPERA-BEACON', 'OPERA-QSO'],\n 'PAC': ['PAC2', 'PAC3', 'PAC4'],\n 'PAX': ['PAX2'],\n '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'],\n 'QRA64': ['QRA64A', 'QRA64B', 'QRA64C', 'QRA64D', 'QRA64E'],\n 'ROS': ['ROS-EME', 'ROS-HF', 'ROS-MF'],\n 'RTTY': ['ASCI'],\n 'SSB': ['LSB', 'USB'],\n 'THOR': ['THOR-M', 'THOR4', 'THOR5', 'THOR8', 'THOR11', 'THOR16', 'THOR22', 'THOR25X4', 'THOR50X1', 'THOR50X2', 'THOR100'],\n 'THRB': ['THRBX', 'THRBX1', 'THRBX2', 'THRBX4', 'THROB1', 'THROB2', 'THROB4'],\n 'TOR': ['AMTORFEC', 'GTOR', 'NAVTEX', 'SITORB']\n} as const\n\nexport const ALL_MODES: readonly string[] = [\n ...new Set([\n ...ADIF_MODES,\n ...Object.values(ADIF_SUBMODES).flat()\n ])\n].sort()\n\nexport const PHONE_MODES: readonly string[] = [\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'DIGITALVOICE',\n ...ADIF_SUBMODES.DIGITALVOICE,\n] as const\n\nexport const ADIF_MODE_FOR_SUBMODE: Record<string, string> = {}\nObject.keys(ADIF_SUBMODES).forEach(mode => {\n ADIF_SUBMODES[mode].forEach(submode => {\n ADIF_MODE_FOR_SUBMODE[submode] = mode\n })\n})\n\nexport const ADIF_MODES_AND_SUBMODES: readonly string[] = [...new Set([...ADIF_MODES, ...Object.values(ADIF_SUBMODES).flat()])].sort()\n\nexport function adifModeAndSubmodeForMode(mode: string): string[] {\n if (ADIF_MODE_FOR_SUBMODE[mode]) {\n return [ADIF_MODE_FOR_SUBMODE[mode], mode]\n } else {\n return [mode]\n }\n}\n\nexport function superModeForMode(mode: string): SuperMode {\n if (ADIF_MODE_FOR_SUBMODE[mode]) mode = ADIF_MODE_FOR_SUBMODE[mode]\n\n if (mode === 'CW') {\n return 'CW'\n } else if (PHONE_MODES.includes(mode)) {\n return 'PHONE'\n } else {\n return 'DATA'\n }\n}\n\nconst bandPlansData = BandPlans as unknown as BandPlansData\n\nconst AllSegments: SegmentWithMetadata[] = Object.keys(bandPlansData.bands).reduce((segments, band) => {\n return segments.concat(\n bandPlansData.bands[band].segments.map(segment => {\n const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2\n ? [segment.mhz[0], segment.mhz[1]] as [number, number]\n : [0, 0] as [number, number]\n return {\n name: segment.name,\n mode: segment.mode,\n submode: segment.submode,\n priority: segment.priority,\n mhz,\n band,\n width: mhz[1] - mhz[0],\n regions: (segment.regions || []).reduce((regions: Record<string, boolean>, region) => { regions[region.toString()] = true; return regions }, {}),\n entities: (segment.entities || []).reduce((entities: Record<string, boolean>, entity) => { entities[entity] = true; return entities }, {}),\n countries: (segment.countries || []).reduce((countries: Record<string, boolean>, country) => { countries[country] = true; return countries }, {}),\n } as SegmentWithMetadata\n })\n )\n}, [] as SegmentWithMetadata[])\n\nexport function modeForFrequency(frequency: number, options: ModeForFrequencyOptions = {}): string | null | undefined | false{\n const { ituRegion, countryCode, entityPrefix } = options\n\n const segments = AllSegments.filter(segment => (\n (segment.mhz[0] <= frequency && segment.mhz[1] >= frequency) &&\n (!entityPrefix || Object.keys(segment.entities).length === 0 || segment.entities[entityPrefix]) &&\n (!countryCode || Object.keys(segment.countries).length === 0 || segment.countries[countryCode]) &&\n (!ituRegion || Object.keys(segment.regions).length === 0 || segment.regions[ituRegion.toString()])\n ))\n\n const sortedSegments = segments.sort((a, b) => {\n if ((a.priority ?? 0) < (b.priority ?? 0)) return 1\n if ((a.priority ?? 0) > (b.priority ?? 0)) return -1\n\n if (entityPrefix && !a.entities[entityPrefix] && b.entities[entityPrefix]) return 1\n if (entityPrefix && a.entities[entityPrefix] && !b.entities[entityPrefix]) return -1\n\n if (countryCode && !a.countries[countryCode] && b.countries[countryCode]) return 1\n if (countryCode && a.countries[countryCode] && !b.countries[countryCode]) return -1\n\n if (ituRegion && !a.regions[ituRegion.toString()] && b.regions[ituRegion.toString()]) return 1\n if (ituRegion && a.regions[ituRegion.toString()] && !b.regions[ituRegion.toString()]) return -1\n\n return a.width - b.width\n })\n\n return sortedSegments[0]?.mode\n}\n\n"]}
@@ -0,0 +1,35 @@
1
+ declare const EXTENDED_BANDS: readonly ["2190m", "630m", "560m", "160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "11m", "10m", "6m", "5m", "4m", "2m", "1.25m", "70cm", "33cm", "23cm", "13cm", "9cm", "6cm", "3cm", "1.25cm", "6mm", "4mm", "2.5mm", "2mm", "1mm", "submm", "other"];
2
+ declare const BANDS: readonly ["2190m", "630m", "560m", "160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "5m", "4m", "2m", "1.25m", "70cm", "33cm", "23cm", "13cm", "9cm", "6cm", "3cm", "1.25cm", "6mm", "4mm", "2.5mm", "2mm", "1mm", "submm", "other"];
3
+ type Band = typeof EXTENDED_BANDS[number];
4
+ declare const HF_BANDS: readonly ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m"];
5
+ declare const VHF_BANDS: readonly ["6m", "5m", "4m", "2m", "1.25m"];
6
+ declare const UHF_BANDS: readonly ["70cm", "33cm", "23cm", "13cm"];
7
+ declare const SHF_BANDS: readonly ["9cm", "6cm", "3cm", "1.25cm"];
8
+ declare const EHF_BANDS: readonly ["6mm", "4mm", "2mm", "2.5mm", "1mm", "submm"];
9
+ declare const POPULAR_BANDS: readonly ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m", "6m", "2m", "70cm"];
10
+ declare const CONTEST_BANDS: readonly ["160m", "80m", "40m", "20m", "15m", "10m"];
11
+ declare function bandForFrequency(freq: number): Band;
12
+ declare function bandForExactFrequencyInMHz(freq: number): Band | undefined;
13
+ declare function frequencyForBand(band: Band, mode?: string): number | undefined;
14
+
15
+ interface ModeForFrequencyOptions {
16
+ ituRegion?: number;
17
+ countryCode?: string;
18
+ entityPrefix?: string;
19
+ }
20
+
21
+ declare const SUPER_MODES: readonly string[];
22
+ type SuperMode = 'CW' | 'PHONE' | 'DATA';
23
+ declare const MAIN_MODES: readonly string[];
24
+ declare const POPULAR_MODES: readonly string[];
25
+ declare const ADIF_MODES: readonly string[];
26
+ declare const ADIF_SUBMODES: Record<string, readonly string[]>;
27
+ declare const ALL_MODES: readonly string[];
28
+ declare const PHONE_MODES: readonly string[];
29
+ declare const ADIF_MODE_FOR_SUBMODE: Record<string, string>;
30
+ declare const ADIF_MODES_AND_SUBMODES: readonly string[];
31
+ declare function adifModeAndSubmodeForMode(mode: string): string[];
32
+ declare function superModeForMode(mode: string): SuperMode;
33
+ declare function modeForFrequency(frequency: number, options?: ModeForFrequencyOptions): string | null | undefined | false;
34
+
35
+ export { ADIF_MODES, ADIF_MODES_AND_SUBMODES, ADIF_MODE_FOR_SUBMODE, ADIF_SUBMODES, ALL_MODES, BANDS, type Band, CONTEST_BANDS, EHF_BANDS, EXTENDED_BANDS, HF_BANDS, MAIN_MODES, PHONE_MODES, POPULAR_BANDS, POPULAR_MODES, SHF_BANDS, SUPER_MODES, type SuperMode, UHF_BANDS, VHF_BANDS, adifModeAndSubmodeForMode, bandForExactFrequencyInMHz, bandForFrequency, frequencyForBand, modeForFrequency, superModeForMode };
package/dist/index.js CHANGED
@@ -197,14 +197,6 @@ function frequencyForBand(band, mode) {
197
197
 
198
198
  // src/data/bandPlans.json
199
199
  var bandPlans_default = {
200
- sources: [
201
- { url: "https://www.iaru-r1.org/on-the-air/band-plans/" },
202
- { url: "https://www.iaru-r1.org/about-us/committees-and-working-groups/vhf-uhf-shf-committee-c5/vhf-up-bandplanning/" },
203
- { url: "https://www.iaru-r2.org/en/reference/band-plans/" },
204
- { url: "https://rsgb.org/main/operating/band-plans/vhf-uhf/70mhz-band/" },
205
- { url: "https://www.arrl.org/band-plan" },
206
- { url: "https://www.arrl.org/news/view/updated-arrl-us-amateur-radio-bands-charts-now-available" }
207
- ],
208
200
  bands: {
209
201
  "160m": {
210
202
  mhz: [1800, 2e3],
@@ -629,30 +621,7 @@ function modeForFrequency(frequency, options = {}) {
629
621
  });
630
622
  return sortedSegments[0]?.mode;
631
623
  }
632
- export {
633
- ADIF_MODES,
634
- ADIF_MODES_AND_SUBMODES,
635
- ADIF_MODE_FOR_SUBMODE,
636
- ADIF_SUBMODES,
637
- ALL_MODES,
638
- BANDS,
639
- CONTEST_BANDS,
640
- EHF_BANDS,
641
- EXTENDED_BANDS,
642
- HF_BANDS,
643
- MAIN_MODES,
644
- PHONE_MODES,
645
- POPULAR_BANDS,
646
- POPULAR_MODES,
647
- SHF_BANDS,
648
- SUPER_MODES,
649
- UHF_BANDS,
650
- VHF_BANDS,
651
- adifModeAndSubmodeForMode,
652
- bandForExactFrequencyInMHz,
653
- bandForFrequency,
654
- frequencyForBand,
655
- modeForFrequency,
656
- superModeForMode
657
- };
624
+
625
+ export { ADIF_MODES, ADIF_MODES_AND_SUBMODES, ADIF_MODE_FOR_SUBMODE, ADIF_SUBMODES, ALL_MODES, BANDS, CONTEST_BANDS, EHF_BANDS, EXTENDED_BANDS, HF_BANDS, MAIN_MODES, PHONE_MODES, POPULAR_BANDS, POPULAR_MODES, SHF_BANDS, SUPER_MODES, UHF_BANDS, VHF_BANDS, adifModeAndSubmodeForMode, bandForExactFrequencyInMHz, bandForFrequency, frequencyForBand, modeForFrequency, superModeForMode };
626
+ //# sourceMappingURL=index.js.map
658
627
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/bands.ts","../src/data/bandPlans.json","../src/lib/modes.ts"],"sourcesContent":["export const EXTENDED_BANDS = [ // Includes 11m\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '11m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport const BANDS = [\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport type Band = typeof EXTENDED_BANDS[number]\n\nexport const HF_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m'] as const\nexport const VHF_BANDS = ['6m', '5m', '4m', '2m', '1.25m'] as const\nexport const UHF_BANDS = ['70cm', '33cm', '23cm', '13cm'] as const\nexport const SHF_BANDS = ['9cm', '6cm', '3cm', '1.25cm'] as const\nexport const EHF_BANDS = ['6mm', '4mm', '2mm', '2.5mm', '1mm', 'submm'] as const\n\nexport const POPULAR_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m', '6m', '2m', '70cm'] as const\nexport const CONTEST_BANDS = ['160m', '80m', '40m', '20m', '15m', '10m'] as const\n\nexport function bandForFrequency(freq: number): Band {\n return bandForExactFrequencyInMHz(freq) ?? bandForExactFrequencyInMHz(freq * 1000) ?? 'other'\n}\n\nexport function bandForExactFrequencyInMHz(freq: number): Band | undefined {\n if (freq >= 130 && freq <= 140) return '2190m'\n else if (freq >= 450 && freq <= 499) return '630m'\n else if (freq >= 500 && freq <= 505) return '560m'\n else if (freq >= 1700 && freq <= 2100) return '160m'\n else if (freq >= 3400 && freq <= 4100) return '80m'\n else if (freq >= 5300 && freq <= 5500) return '60m'\n else if (freq >= 6900 && freq <= 7400) return '40m'\n else if (freq >= 10000 && freq <= 10200) return '30m'\n else if (freq >= 13900 && freq <= 14400) return '20m'\n else if (freq >= 18000 && freq <= 18200) return '17m'\n else if (freq >= 20900 && freq <= 21600) return '15m'\n else if (freq >= 24500 && freq <= 25200) return '12m'\n else if (freq >= 26000 && freq <= 27500) return '11m'\n else if (freq >= 27900 && freq <= 30000) return '10m'\n else if (freq >= 50000 && freq <= 54000) return '6m'\n else if (freq >= 54001 && freq <= 69999) return '5m'\n else if (freq >= 70000 && freq <= 71000) return '4m'\n else if (freq >= 140000 && freq <= 150000) return '2m'\n else if (freq >= 219000 && freq <= 230000) return '1.25m'\n else if (freq >= 400000 && freq <= 460000) return '70cm'\n else if (freq >= 900000 && freq <= 930000) return '33cm'\n else if (freq >= 1180000 && freq <= 1420000) return '23cm'\n else if (freq >= 2300000 && freq <= 2450000) return '13cm'\n else if (freq >= 3290000 && freq <= 3510000) return '9cm'\n else if (freq >= 5640000 && freq <= 5926000) return '6cm'\n else if (freq >= 10000000 && freq <= 10500000) return '3cm'\n else if (freq >= 24000000 && freq <= 24250000) return '1.25cm'\n else if (freq >= 47000000 && freq <= 47200000) return '6mm'\n else if (freq >= 75000000 && freq <= 81000000) return '4mm'\n else if (freq >= 122250000 && freq <= 123000000) return '2.5mm'\n else if (freq >= 134000000 && freq <= 141000000) return '2mm'\n else if (freq >= 241000000 && freq <= 250000000) return '1mm'\n else if (freq >= 300000000 && freq <= 7500000000) return 'submm'\n else return undefined\n}\n\nexport function frequencyForBand(band: Band, mode?: string): number | undefined {\n if (band === '2190m') return 135.7\n else if (band === '630m') return 472\n else if (band === '560m') return 501\n else if (band === '160m') {\n if (mode === 'FT8' || mode === 'FT4') return 1840\n else return 1800\n }\n else if (band === '80m') {\n if (mode === 'SSB' || mode === 'LSB') return 3800\n else if (mode === 'FT8') return 3573\n else if (mode === 'FT4') return 3575\n else return 3000\n }\n else if (band === '60m') {\n if (mode === 'FT8') return 5357\n else return 5330\n }\n else if (band === '40m') {\n if (mode === 'SSB' || mode === 'LSB') return 7175\n else if (mode === 'FT8') return 7074\n else if (mode === 'FT4') return 7047.5\n else return 7000\n }\n else if (band === '30m') {\n if (mode === 'FT8') return 10136\n else if (mode === 'FT4') return 10140\n else return 10100\n }\n else if (band === '20m') {\n if (mode === 'SSB' || mode === 'USB') return 14225\n else if (mode === 'FT8') return 14074\n else if (mode === 'FT4') return 14080\n else return 14000\n }\n else if (band === '17m') {\n if (mode === 'SSB' || mode === 'USB') return 18110\n else if (mode === 'FT8') return 18100\n else if (mode === 'FT4') return 18104\n else return 18068\n }\n else if (band === '15m') {\n if (mode === 'SSB' || mode === 'USB') return 21275\n else if (mode === 'FT8') return 21074\n else if (mode === 'FT4') return 21140\n else return 21000\n }\n else if (band === '12m') {\n if (mode === 'SSB' || mode === 'USB') return 24930\n else if (mode === 'FT8') return 24915\n else if (mode === 'FT4') return 24919\n else return 24890\n }\n else if (band === '11m') {\n return 26965\n }\n else if (band === '10m') {\n if (mode === 'SSB' || mode === 'USB') return 28300\n else if (mode === 'FM' || mode === 'AM') return 28500\n else if (mode === 'FT8') return 28074\n else if (mode === 'FT4') return 28180\n else return 28000\n }\n else if (band === '6m') {\n if (mode === 'SSB' || mode === 'USB') return 50125\n else if (mode === 'FT8') return 50313\n else if (mode === 'FT4') return 50318\n else return 50000\n }\n else if (band === '5m') return 55000\n else if (band === '4m') return 70090\n else if (band === '2m') return 145400\n else if (band === '1.25m') return 222000\n else if (band === '70cm') return 420000\n else if (band === '33cm') return 902000\n else if (band === '23cm') return 1240000\n else if (band === '13cm') return 2300000\n else if (band === '9cm') return 3300000\n else if (band === '6cm') return 5650000\n else if (band === '3cm') return 10000000\n else if (band === '1.25cm') return 24000000\n else if (band === '6mm') return 47000000\n else if (band === '4mm') return 75500000\n else if (band === '2.5mm') return 122500000\n else if (band === '2mm') return 134000000\n else if (band === '1mm') return 241000000\n else if (band === 'submm') return 300000000\n else return undefined\n}\n\n","{\n \"sources\": [\n { \"url\": \"https://www.iaru-r1.org/on-the-air/band-plans/\"},\n { \"url\": \"https://www.iaru-r1.org/about-us/committees-and-working-groups/vhf-uhf-shf-committee-c5/vhf-up-bandplanning/\"},\n { \"url\": \"https://www.iaru-r2.org/en/reference/band-plans/\" },\n { \"url\": \"https://rsgb.org/main/operating/band-plans/vhf-uhf/70mhz-band/\"},\n { \"url\": \"https://www.arrl.org/band-plan\" },\n { \"url\": \"https://www.arrl.org/news/view/updated-arrl-us-amateur-radio-bands-charts-now-available\" }\n ],\n \"bands\": {\n \"160m\": {\n \"mhz\": [1800, 2000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [1800, 2000], \"mode\": false, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [1810, 1838], \"mode\": \"CW\", \"regions\": [ 1 ] }, { \"name\": \"Data\", \"mhz\": [1800, 1810], \"mode\": \"RTTY\" },\n { \"name\": \"CW\", \"mhz\": [1800, 1843], \"mode\": \"CW\" },\n { \"name\": \"FT8\", \"mhz\": [1840, 1843], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [1843, 2000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [1800, 1875], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"80m\": {\n \"mhz\": [3500, 3800],\n \"segments\": [\n { \"name\": \"CW Reg1\", \"mhz\": [3500, 3570], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW\", \"mhz\": [3500, 3600], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [3535, 3800], \"mode\": \"SSB\", \"submode\": \"LSB\", \"regions\": [ 3 ] },\n { \"name\": \"FT8\", \"mhz\": [3568, 3571], \"mode\": \"FT8\", \"regions\": [ 3 ], \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [3570, 3600], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [3573, 3576], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [3600, 4000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [3500, 3800], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"60m\": {\n \"mhz\": [5330.5, 3406.5],\n \"segments\": [\n { \"name\": \"60m Channel 1\", \"mhz\": [5330.5, 5333.5] },\n { \"name\": \"60m Channel 2\", \"mhz\": [5346.5, 5349.5] },\n { \"name\": \"60m Channel 3\", \"mhz\": [5357, 5360], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"60m Channel 4\", \"mhz\": [5371.5, 5373.5] },\n { \"name\": \"60m Channel 5\", \"mhz\": [5403.5, 5406.5] }\n ]\n },\n \"40m\": {\n \"mhz\": [7000, 7300],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [7000, 7060], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [7000, 7040], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW US\", \"mhz\": [7000, 7125], \"mode\": \"CW\", \"countries\": [ \"us\" ] },\n { \"name\": \"FT4\", \"mhz\": [7047.5, 7050.5], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [7060, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"FT8\", \"mhz\": [7074, 7077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [7080, 7125], \"mode\": \"RTTY\", \"countries\": [ \"us\" ] },\n { \"name\": \"Phone\", \"mhz\": [7125, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [7000, 7300], \"mode\": null, \"countries\": [\"au\"] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [7200, 7300], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"30m\": {\n \"mhz\": [10100, 10150],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [10100, 10150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [10100, 10130], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [10130, 10140], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [10136, 10139], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [10140, 10143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Out of band\", \"mhz\": [10100, 10150], \"mode\": false, \"countries\": [\"au\", \"za\"] }\n ]\n },\n \"20m\": {\n \"mhz\": [14000, 14350],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [14000, 14150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [14000, 14070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg2\", \"mhz\": [14000, 14101], \"mode\": \"CW\", \"regions\": [ 2 ] },\n { \"name\": \"Data\", \"mhz\": [14070, 14095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [14074, 14077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [14080, 14083], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [14112, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1, 2 ] },\n { \"name\": \"Phone\", \"mhz\": [14150, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [14000, 14350], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"17m\": {\n \"mhz\": [18068, 18168],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [18068, 18110], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [18068, 18095], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [18100, 18105], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [18100, 18103], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [18104, 18107], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [18109, 18111], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [18111, 18168], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [18110, 18168], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [18068, 18168], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"15m\": {\n \"mhz\": [21000, 21450],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [21000, 21150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [21000, 21070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [21070, 21095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [21074, 21077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [21140, 21143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [21149, 21151], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [21151, 21450], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [21150, 21450], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [21000, 21450], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"12m\": {\n \"mhz\": [24890, 24990],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [24890, 24930], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [24890, 24915], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [24915, 24918], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [24919, 23922], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [24920, 24925], \"mode\": \"RTTY\" },\n { \"name\": \"Phone\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Beacons only\", \"mhz\": [24929, 24931], \"priority\": 100 },\n { \"name\": \"Phone US\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [24890, 24990], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"10m\": {\n \"mhz\": [28000, 29700],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [28000, 28190], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [28000, 28070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [28070, 28150], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [28074, 28077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [28180, 28183], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [28190, 28300], \"priority\": 100 },\n { \"name\": \"Phone SSB\", \"mhz\": [28300, 29000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"AM\", \"mhz\": [29000, 29200], \"mode\": \"AM\" },\n { \"name\": \"Satellite\", \"mhz\": [29300, 29520] },\n { \"name\": \"Guard Channel\", \"mhz\": [29510, 29520], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"Repeater Uplinks\", \"mhz\": [29520, 29590] },\n { \"name\": \"FM\", \"mhz\": [29520, 29700], \"mode\": \"FM\" },\n { \"name\": \"Repeater Downlinks\", \"mhz\": [29620, 29700] },\n { \"name\": \"Australia\", \"mhz\": [28000, 29700], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"6m\": {\n \"mhz\": [50000, 54000],\n \"segments\": [\n { \"name\": \"Beacon project Reg1\", \"mhz\": [50000, 50010], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"Beacon project Reg2\", \"mhz\": [50010, 50020], \"mode\": null, \"regions\": [ 2 ] },\n { \"name\": \"Beacon project Reg 3\", \"mhz\": [50020, 50030], \"mode\": null, \"regions\": [ 3 ] },\n { \"name\": \"CW\", \"mhz\": [50000, 50100], \"mode\": \"CW\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [50100, 50300], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ]},\n { \"name\": \"FM Reg1\", \"mhz\": [51400, 54000], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [50150, 50400], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [51000, 51110], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM Simplex Reg1\", \"mhz\": [51410, 51590], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [50313, 50316], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [50318, 50321], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"FT8\", \"mhz\": [50323, 50326], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Australia\", \"mhz\": [50000, 54000], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"4m\": {\n \"mhz\": [70000, 70500],\n \"segments\": [\n { \"name\": \"Beacons only Reg1\", \"mhz\": [70090, 70100], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [70000, 70090], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [70100, 70294], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [70294, 70500], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"AM\", \"mhz\": [70257, 70263], \"mode\": \"AM\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70100, 70103], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70154, 70157], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] }\n ]\n },\n \"2m\": {\n \"mhz\": [144000, 148000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [144000, 144100], \"mode\": \"CW\" },\n { \"name\": \"Satellite downlink Reg1\", \"mhz\": [144000, 144025], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [144025, 144150], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [144100, 144200], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [144174, 144177], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [144170, 144173], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [144200, 144275], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [144150, 144400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"Beacons only Reg1\", \"mhz\": [144400, 144490], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [144300, 148000], \"mode\": \"FM\" },\n { \"name\": \"Reg1\", \"mhz\": [144500, 144794], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"FM Satellite Reg1\", \"mhz\": [145194, 145206], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FM Reg1\", \"mhz\": [145206, 145563], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [146000, 148000], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"1.25m\": {\n \"mhz\": [222000, 225000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [222000, 222070], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [222070, 222150], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [222200, 225000], \"mode\": \"FM\" }\n ]\n },\n \"70cm\": {\n \"mhz\": [420000, 450000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [420000, 430000], \"mode\": false, \"regions\": [ 1 ]},\n { \"name\": \"CW\", \"mhz\": [432000, 432100], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432300], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432420, 433000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [420000, 450000], \"mode\": \"FM\" },\n { \"name\": \"FM Reg1\", \"mhz\": [433400, 433575], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [440000, 450000], \"mode\": false, \"regions\": [ 1 ]}\n ]\n },\n \"33cm\": {\n \"mhz\": [902000, 928000],\n \"segments\": [\n { \"name\": \"FM\", \"mhz\": [927000, 928000], \"mode\": \"FM\" }\n ]\n }\n }\n}\n","import BandPlans from '../data/bandPlans.json'\nimport type { BandPlansData, SegmentWithMetadata, ModeForFrequencyOptions } from '../types'\n\nexport const SUPER_MODES: readonly string[] = [\n 'CW',\n 'PHONE',\n 'DATA'\n] as const\n\nexport type SuperMode = 'CW' | 'PHONE' | 'DATA'\n\nexport const MAIN_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'AM',\n 'FM',\n 'FT8',\n 'FT4',\n 'RTTY'\n] as const\n\nexport const POPULAR_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'FT8',\n 'FT4',\n 'FT2',\n 'RTTY',\n 'DIGITALVOICE',\n 'C4FM',\n 'DMR',\n 'DSTAR',\n 'FREEDV',\n 'M17',\n 'DYNAMIC',\n 'HELL',\n 'JT9',\n 'MFSK',\n 'MSK144',\n 'OLIVIA',\n 'PKT',\n 'PSK',\n 'SSTV',\n 'WSPR',\n] as const\n\nexport const ADIF_MODES: readonly string[] = [\n 'AM',\n 'ARDOP',\n 'ATV',\n 'CHIP',\n 'CLO',\n 'CONTESTI',\n 'CW',\n 'DIGITALVOICE',\n 'DOMINO',\n 'DYNAMIC',\n 'FAX',\n 'FM',\n 'FSK',\n 'FSK441',\n 'FT8',\n 'HELL',\n 'ISCAT',\n 'JT4',\n 'JT6M',\n 'JT9',\n 'JT44',\n 'JT65',\n 'MFSK',\n 'MSK144',\n 'MT63',\n 'MTONE',\n 'ODFM',\n 'OLIVIA',\n 'OPERA',\n 'PAC',\n 'PAX',\n 'PKT',\n 'PSK',\n 'PSK2K',\n 'Q15',\n 'QRA64',\n 'ROS',\n 'RTTY',\n 'RTTYM',\n 'SSB',\n 'SSTV',\n 'T10',\n 'THOR',\n 'THRB',\n 'TOR',\n 'V4',\n 'VOI',\n 'WINMOR',\n 'WSPR'\n] as const\n\nexport const ADIF_SUBMODES: Record<string, readonly string[]> = {\n 'CW': ['PCW'],\n 'CHIP': ['CHIP64', 'CHIP128'],\n 'DIGITALVOICE': ['C4FM', 'DMR', 'DSTAR', 'FREEDV', 'M17'],\n 'DOMINO': ['DOM-M', 'DOM4', 'DOM5', 'DOM8', 'DOM11', 'DOM16', 'DOM22', 'DOM44', 'DOM88', 'DOMINOEX', 'DOMINOF'],\n 'DYNAMIC': ['FREEDATA', 'VARA HF', 'VARA SATELLITE', 'VARA FM 1200', 'VARA FM 9600'],\n 'FSK': ['SCAMP_FAST', 'SCAMP_SLOW', 'SCAMP_VSLOW'],\n 'HELL': ['FMHELL', 'FSKH105', 'FSKH245', 'FSKHELL', 'HELL80', 'HELLX5', 'HELLX9', 'HFSK', 'PSKHELL', 'SLOWHELL'],\n 'ISCAT': ['ISCAT-A', 'ISCAT-B'],\n 'JT4': ['JT4A', 'JT4B', 'JT4C', 'JT4D', 'JT4E', 'JT4F', 'JT4G'],\n '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'],\n 'JT65': ['JT65A', 'JT65B', 'JT65B2', 'JT65C', 'JT65C2'],\n 'MFSK': ['FSQCALL', 'FST4', 'FST4W', 'FT4', 'FT2', 'JS8', 'JTMS', 'MFSK4', 'MFSK8', 'MFSK11', 'MFSK16', 'MFSK22', 'MFSK31', 'MFSK32', 'MFSK64', 'MFSK64L', 'MFSK128 MFSK128L', 'Q65'],\n 'MTONE': ['SCAMP_OO', 'SCAMP_OO_SLW'],\n 'ODFM': ['RIBBIT_PIX', 'RIBBIT_SMS'],\n 'OLIVIA': ['OLIVIA 4/125', 'OLIVIA 4/250', 'OLIVIA 8/250', 'OLIVIA 8/500', 'OLIVIA 16/500', 'OLIVIA 16/1000', 'OLIVIA 32/1000'],\n 'OPERA': ['OPERA-BEACON', 'OPERA-QSO'],\n 'PAC': ['PAC2', 'PAC3', 'PAC4'],\n 'PAX': ['PAX2'],\n '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'],\n 'QRA64': ['QRA64A', 'QRA64B', 'QRA64C', 'QRA64D', 'QRA64E'],\n 'ROS': ['ROS-EME', 'ROS-HF', 'ROS-MF'],\n 'RTTY': ['ASCI'],\n 'SSB': ['LSB', 'USB'],\n 'THOR': ['THOR-M', 'THOR4', 'THOR5', 'THOR8', 'THOR11', 'THOR16', 'THOR22', 'THOR25X4', 'THOR50X1', 'THOR50X2', 'THOR100'],\n 'THRB': ['THRBX', 'THRBX1', 'THRBX2', 'THRBX4', 'THROB1', 'THROB2', 'THROB4'],\n 'TOR': ['AMTORFEC', 'GTOR', 'NAVTEX', 'SITORB']\n} as const\n\nexport const ALL_MODES: readonly string[] = [\n ...new Set([\n ...ADIF_MODES,\n ...Object.values(ADIF_SUBMODES).flat()\n ])\n].sort()\n\nexport const PHONE_MODES: readonly string[] = [\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'DIGITALVOICE',\n ...ADIF_SUBMODES.DIGITALVOICE,\n] as const\n\nexport const ADIF_MODE_FOR_SUBMODE: Record<string, string> = {}\nObject.keys(ADIF_SUBMODES).forEach(mode => {\n ADIF_SUBMODES[mode].forEach(submode => {\n ADIF_MODE_FOR_SUBMODE[submode] = mode\n })\n})\n\nexport const ADIF_MODES_AND_SUBMODES: readonly string[] = [...new Set([...ADIF_MODES, ...Object.values(ADIF_SUBMODES).flat()])].sort()\n\nexport function adifModeAndSubmodeForMode(mode: string): string[] {\n if (ADIF_MODE_FOR_SUBMODE[mode]) {\n return [ADIF_MODE_FOR_SUBMODE[mode], mode]\n } else {\n return [mode]\n }\n}\n\nexport function superModeForMode(mode: string): SuperMode {\n if (ADIF_MODE_FOR_SUBMODE[mode]) mode = ADIF_MODE_FOR_SUBMODE[mode]\n\n if (mode === 'CW') {\n return 'CW'\n } else if (PHONE_MODES.includes(mode)) {\n return 'PHONE'\n } else {\n return 'DATA'\n }\n}\n\nconst bandPlansData = BandPlans as unknown as BandPlansData\n\nconst AllSegments: SegmentWithMetadata[] = Object.keys(bandPlansData.bands).reduce((segments, band) => {\n return segments.concat(\n bandPlansData.bands[band].segments.map(segment => {\n const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2\n ? [segment.mhz[0], segment.mhz[1]] as [number, number]\n : [0, 0] as [number, number]\n return {\n name: segment.name,\n mode: segment.mode,\n submode: segment.submode,\n priority: segment.priority,\n mhz,\n band,\n width: mhz[1] - mhz[0],\n regions: (segment.regions || []).reduce((regions: Record<string, boolean>, region) => { regions[region.toString()] = true; return regions }, {}),\n entities: (segment.entities || []).reduce((entities: Record<string, boolean>, entity) => { entities[entity] = true; return entities }, {}),\n countries: (segment.countries || []).reduce((countries: Record<string, boolean>, country) => { countries[country] = true; return countries }, {}),\n } as SegmentWithMetadata\n })\n )\n}, [] as SegmentWithMetadata[])\n\nexport function modeForFrequency(frequency: number, options: ModeForFrequencyOptions = {}): string | null | undefined | false{\n const { ituRegion, countryCode, entityPrefix } = options\n\n const segments = AllSegments.filter(segment => (\n (segment.mhz[0] <= frequency && segment.mhz[1] >= frequency) &&\n (!entityPrefix || Object.keys(segment.entities).length === 0 || segment.entities[entityPrefix]) &&\n (!countryCode || Object.keys(segment.countries).length === 0 || segment.countries[countryCode]) &&\n (!ituRegion || Object.keys(segment.regions).length === 0 || segment.regions[ituRegion.toString()])\n ))\n\n const sortedSegments = segments.sort((a, b) => {\n if ((a.priority ?? 0) < (b.priority ?? 0)) return 1\n if ((a.priority ?? 0) > (b.priority ?? 0)) return -1\n\n if (entityPrefix && !a.entities[entityPrefix] && b.entities[entityPrefix]) return 1\n if (entityPrefix && a.entities[entityPrefix] && !b.entities[entityPrefix]) return -1\n\n if (countryCode && !a.countries[countryCode] && b.countries[countryCode]) return 1\n if (countryCode && a.countries[countryCode] && !b.countries[countryCode]) return -1\n\n if (ituRegion && !a.regions[ituRegion.toString()] && b.regions[ituRegion.toString()]) return 1\n if (ituRegion && a.regions[ituRegion.toString()] && !b.regions[ituRegion.toString()]) return -1\n\n return a.width - b.width\n })\n\n return sortedSegments[0]?.mode\n}\n\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/lib/bands.ts","../src/data/bandPlans.json","../src/lib/modes.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const EXTENDED_BANDS = [ // Includes 11m\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '11m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport const BANDS = [\n '2190m',\n '630m',\n '560m',\n '160m',\n '80m',\n '60m',\n '40m',\n '30m',\n '20m',\n '17m',\n '15m',\n '12m',\n '10m',\n '6m',\n '5m',\n '4m',\n '2m',\n '1.25m',\n '70cm',\n '33cm',\n '23cm',\n '13cm',\n '9cm',\n '6cm',\n '3cm',\n '1.25cm',\n '6mm',\n '4mm',\n '2.5mm',\n '2mm',\n '1mm',\n 'submm',\n 'other'\n] as const\n\nexport type Band = typeof EXTENDED_BANDS[number]\n\nexport const HF_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m'] as const\nexport const VHF_BANDS = ['6m', '5m', '4m', '2m', '1.25m'] as const\nexport const UHF_BANDS = ['70cm', '33cm', '23cm', '13cm'] as const\nexport const SHF_BANDS = ['9cm', '6cm', '3cm', '1.25cm'] as const\nexport const EHF_BANDS = ['6mm', '4mm', '2mm', '2.5mm', '1mm', 'submm'] as const\n\nexport const POPULAR_BANDS = ['160m', '80m', '60m', '40m', '30m', '20m', '17m', '15m', '12m', '10m', '6m', '2m', '70cm'] as const\nexport const CONTEST_BANDS = ['160m', '80m', '40m', '20m', '15m', '10m'] as const\n\nexport function bandForFrequency(freq: number): Band {\n return bandForExactFrequencyInMHz(freq) ?? bandForExactFrequencyInMHz(freq * 1000) ?? 'other'\n}\n\nexport function bandForExactFrequencyInMHz(freq: number): Band | undefined {\n if (freq >= 130 && freq <= 140) return '2190m'\n else if (freq >= 450 && freq <= 499) return '630m'\n else if (freq >= 500 && freq <= 505) return '560m'\n else if (freq >= 1700 && freq <= 2100) return '160m'\n else if (freq >= 3400 && freq <= 4100) return '80m'\n else if (freq >= 5300 && freq <= 5500) return '60m'\n else if (freq >= 6900 && freq <= 7400) return '40m'\n else if (freq >= 10000 && freq <= 10200) return '30m'\n else if (freq >= 13900 && freq <= 14400) return '20m'\n else if (freq >= 18000 && freq <= 18200) return '17m'\n else if (freq >= 20900 && freq <= 21600) return '15m'\n else if (freq >= 24500 && freq <= 25200) return '12m'\n else if (freq >= 26000 && freq <= 27500) return '11m'\n else if (freq >= 27900 && freq <= 30000) return '10m'\n else if (freq >= 50000 && freq <= 54000) return '6m'\n else if (freq >= 54001 && freq <= 69999) return '5m'\n else if (freq >= 70000 && freq <= 71000) return '4m'\n else if (freq >= 140000 && freq <= 150000) return '2m'\n else if (freq >= 219000 && freq <= 230000) return '1.25m'\n else if (freq >= 400000 && freq <= 460000) return '70cm'\n else if (freq >= 900000 && freq <= 930000) return '33cm'\n else if (freq >= 1180000 && freq <= 1420000) return '23cm'\n else if (freq >= 2300000 && freq <= 2450000) return '13cm'\n else if (freq >= 3290000 && freq <= 3510000) return '9cm'\n else if (freq >= 5640000 && freq <= 5926000) return '6cm'\n else if (freq >= 10000000 && freq <= 10500000) return '3cm'\n else if (freq >= 24000000 && freq <= 24250000) return '1.25cm'\n else if (freq >= 47000000 && freq <= 47200000) return '6mm'\n else if (freq >= 75000000 && freq <= 81000000) return '4mm'\n else if (freq >= 122250000 && freq <= 123000000) return '2.5mm'\n else if (freq >= 134000000 && freq <= 141000000) return '2mm'\n else if (freq >= 241000000 && freq <= 250000000) return '1mm'\n else if (freq >= 300000000 && freq <= 7500000000) return 'submm'\n else return undefined\n}\n\nexport function frequencyForBand(band: Band, mode?: string): number | undefined {\n if (band === '2190m') return 135.7\n else if (band === '630m') return 472\n else if (band === '560m') return 501\n else if (band === '160m') {\n if (mode === 'FT8' || mode === 'FT4') return 1840\n else return 1800\n }\n else if (band === '80m') {\n if (mode === 'SSB' || mode === 'LSB') return 3800\n else if (mode === 'FT8') return 3573\n else if (mode === 'FT4') return 3575\n else return 3000\n }\n else if (band === '60m') {\n if (mode === 'FT8') return 5357\n else return 5330\n }\n else if (band === '40m') {\n if (mode === 'SSB' || mode === 'LSB') return 7175\n else if (mode === 'FT8') return 7074\n else if (mode === 'FT4') return 7047.5\n else return 7000\n }\n else if (band === '30m') {\n if (mode === 'FT8') return 10136\n else if (mode === 'FT4') return 10140\n else return 10100\n }\n else if (band === '20m') {\n if (mode === 'SSB' || mode === 'USB') return 14225\n else if (mode === 'FT8') return 14074\n else if (mode === 'FT4') return 14080\n else return 14000\n }\n else if (band === '17m') {\n if (mode === 'SSB' || mode === 'USB') return 18110\n else if (mode === 'FT8') return 18100\n else if (mode === 'FT4') return 18104\n else return 18068\n }\n else if (band === '15m') {\n if (mode === 'SSB' || mode === 'USB') return 21275\n else if (mode === 'FT8') return 21074\n else if (mode === 'FT4') return 21140\n else return 21000\n }\n else if (band === '12m') {\n if (mode === 'SSB' || mode === 'USB') return 24930\n else if (mode === 'FT8') return 24915\n else if (mode === 'FT4') return 24919\n else return 24890\n }\n else if (band === '11m') {\n return 26965\n }\n else if (band === '10m') {\n if (mode === 'SSB' || mode === 'USB') return 28300\n else if (mode === 'FM' || mode === 'AM') return 28500\n else if (mode === 'FT8') return 28074\n else if (mode === 'FT4') return 28180\n else return 28000\n }\n else if (band === '6m') {\n if (mode === 'SSB' || mode === 'USB') return 50125\n else if (mode === 'FT8') return 50313\n else if (mode === 'FT4') return 50318\n else return 50000\n }\n else if (band === '5m') return 55000\n else if (band === '4m') return 70090\n else if (band === '2m') return 145400\n else if (band === '1.25m') return 222000\n else if (band === '70cm') return 420000\n else if (band === '33cm') return 902000\n else if (band === '23cm') return 1240000\n else if (band === '13cm') return 2300000\n else if (band === '9cm') return 3300000\n else if (band === '6cm') return 5650000\n else if (band === '3cm') return 10000000\n else if (band === '1.25cm') return 24000000\n else if (band === '6mm') return 47000000\n else if (band === '4mm') return 75500000\n else if (band === '2.5mm') return 122500000\n else if (band === '2mm') return 134000000\n else if (band === '1mm') return 241000000\n else if (band === 'submm') return 300000000\n else return undefined\n}\n\n","{\n \"sources\": [\n { \"url\": \"https://www.iaru-r1.org/on-the-air/band-plans/\"},\n { \"url\": \"https://www.iaru-r1.org/about-us/committees-and-working-groups/vhf-uhf-shf-committee-c5/vhf-up-bandplanning/\"},\n { \"url\": \"https://www.iaru-r2.org/en/reference/band-plans/\" },\n { \"url\": \"https://rsgb.org/main/operating/band-plans/vhf-uhf/70mhz-band/\"},\n { \"url\": \"https://www.arrl.org/band-plan\" },\n { \"url\": \"https://www.arrl.org/news/view/updated-arrl-us-amateur-radio-bands-charts-now-available\" }\n ],\n \"bands\": {\n \"160m\": {\n \"mhz\": [1800, 2000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [1800, 2000], \"mode\": false, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [1810, 1838], \"mode\": \"CW\", \"regions\": [ 1 ] }, { \"name\": \"Data\", \"mhz\": [1800, 1810], \"mode\": \"RTTY\" },\n { \"name\": \"CW\", \"mhz\": [1800, 1843], \"mode\": \"CW\" },\n { \"name\": \"FT8\", \"mhz\": [1840, 1843], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [1843, 2000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [1800, 1875], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"80m\": {\n \"mhz\": [3500, 3800],\n \"segments\": [\n { \"name\": \"CW Reg1\", \"mhz\": [3500, 3570], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW\", \"mhz\": [3500, 3600], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [3535, 3800], \"mode\": \"SSB\", \"submode\": \"LSB\", \"regions\": [ 3 ] },\n { \"name\": \"FT8\", \"mhz\": [3568, 3571], \"mode\": \"FT8\", \"regions\": [ 3 ], \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [3570, 3600], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [3573, 3576], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [3600, 4000], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"Australia\", \"mhz\": [3500, 3800], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"60m\": {\n \"mhz\": [5330.5, 3406.5],\n \"segments\": [\n { \"name\": \"60m Channel 1\", \"mhz\": [5330.5, 5333.5] },\n { \"name\": \"60m Channel 2\", \"mhz\": [5346.5, 5349.5] },\n { \"name\": \"60m Channel 3\", \"mhz\": [5357, 5360], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"60m Channel 4\", \"mhz\": [5371.5, 5373.5] },\n { \"name\": \"60m Channel 5\", \"mhz\": [5403.5, 5406.5] }\n ]\n },\n \"40m\": {\n \"mhz\": [7000, 7300],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [7000, 7060], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [7000, 7040], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW US\", \"mhz\": [7000, 7125], \"mode\": \"CW\", \"countries\": [ \"us\" ] },\n { \"name\": \"FT4\", \"mhz\": [7047.5, 7050.5], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [7060, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\" },\n { \"name\": \"FT8\", \"mhz\": [7074, 7077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [7080, 7125], \"mode\": \"RTTY\", \"countries\": [ \"us\" ] },\n { \"name\": \"Phone\", \"mhz\": [7125, 7300], \"mode\": \"SSB\", \"submode\": \"LSB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [7000, 7300], \"mode\": null, \"countries\": [\"au\"] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [7200, 7300], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"30m\": {\n \"mhz\": [10100, 10150],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [10100, 10150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [10100, 10130], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [10130, 10140], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [10136, 10139], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [10140, 10143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Out of band\", \"mhz\": [10100, 10150], \"mode\": false, \"countries\": [\"au\", \"za\"] }\n ]\n },\n \"20m\": {\n \"mhz\": [14000, 14350],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [14000, 14150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [14000, 14070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg2\", \"mhz\": [14000, 14101], \"mode\": \"CW\", \"regions\": [ 2 ] },\n { \"name\": \"Data\", \"mhz\": [14070, 14095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [14074, 14077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [14080, 14083], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [14112, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1, 2 ] },\n { \"name\": \"Phone\", \"mhz\": [14150, 14350], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [14000, 14350], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"17m\": {\n \"mhz\": [18068, 18168],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [18068, 18110], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [18068, 18095], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [18100, 18105], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [18100, 18103], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [18104, 18107], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [18109, 18111], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [18111, 18168], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [18110, 18168], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [18068, 18168], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"15m\": {\n \"mhz\": [21000, 21450],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [21000, 21150], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [21000, 21070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [21070, 21095], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [21074, 21077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [21140, 21143], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [21149, 21151], \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [21151, 21450], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone US\", \"mhz\": [21150, 21450], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [21000, 21450], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"12m\": {\n \"mhz\": [24890, 24990],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [24890, 24930], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [24890, 24915], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [24915, 24918], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [24919, 23922], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Data\", \"mhz\": [24920, 24925], \"mode\": \"RTTY\" },\n { \"name\": \"Phone\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Beacons only\", \"mhz\": [24929, 24931], \"priority\": 100 },\n { \"name\": \"Phone US\", \"mhz\": [24930, 24990], \"mode\": \"SSB\", \"submode\": \"USB\", \"countries\": [ \"us\" ] },\n { \"name\": \"Australia\", \"mhz\": [24890, 24990], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"10m\": {\n \"mhz\": [28000, 29700],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [28000, 28190], \"mode\": \"CW\" },\n { \"name\": \"CW Reg1\", \"mhz\": [28000, 28070], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [28070, 28150], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [28074, 28077], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [28180, 28183], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Beacons only\", \"mhz\": [28190, 28300], \"priority\": 100 },\n { \"name\": \"Phone SSB\", \"mhz\": [28300, 29000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"AM\", \"mhz\": [29000, 29200], \"mode\": \"AM\" },\n { \"name\": \"Satellite\", \"mhz\": [29300, 29520] },\n { \"name\": \"Guard Channel\", \"mhz\": [29510, 29520], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"Repeater Uplinks\", \"mhz\": [29520, 29590] },\n { \"name\": \"FM\", \"mhz\": [29520, 29700], \"mode\": \"FM\" },\n { \"name\": \"Repeater Downlinks\", \"mhz\": [29620, 29700] },\n { \"name\": \"Australia\", \"mhz\": [28000, 29700], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"6m\": {\n \"mhz\": [50000, 54000],\n \"segments\": [\n { \"name\": \"Beacon project Reg1\", \"mhz\": [50000, 50010], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"Beacon project Reg2\", \"mhz\": [50010, 50020], \"mode\": null, \"regions\": [ 2 ] },\n { \"name\": \"Beacon project Reg 3\", \"mhz\": [50020, 50030], \"mode\": null, \"regions\": [ 3 ] },\n { \"name\": \"CW\", \"mhz\": [50000, 50100], \"mode\": \"CW\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [50100, 50300], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ]},\n { \"name\": \"FM Reg1\", \"mhz\": [51400, 54000], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [50150, 50400], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [51000, 51110], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM\", \"mhz\": [51110, 52100], \"mode\": \"FM\" },\n { \"name\": \"FM Simplex Reg1\", \"mhz\": [51410, 51590], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [50313, 50316], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [50318, 50321], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"FT8\", \"mhz\": [50323, 50326], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"Australia\", \"mhz\": [50000, 54000], \"mode\": null, \"countries\": [\"au\"] }\n ]\n },\n \"4m\": {\n \"mhz\": [70000, 70500],\n \"segments\": [\n { \"name\": \"Beacons only Reg1\", \"mhz\": [70090, 70100], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [70000, 70090], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Phone\", \"mhz\": [70100, 70294], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [70294, 70500], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"AM\", \"mhz\": [70257, 70263], \"mode\": \"AM\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70100, 70103], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FT8\", \"mhz\": [70154, 70157], \"mode\": \"FT8\", \"priority\": 100, \"regions\": [ 1 ] }\n ]\n },\n \"2m\": {\n \"mhz\": [144000, 148000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [144000, 144100], \"mode\": \"CW\" },\n { \"name\": \"Satellite downlink Reg1\", \"mhz\": [144000, 144025], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"CW Reg1\", \"mhz\": [144025, 144150], \"mode\": \"CW\", \"regions\": [ 1 ] },\n { \"name\": \"Data\", \"mhz\": [144100, 144200], \"mode\": \"RTTY\" },\n { \"name\": \"FT8\", \"mhz\": [144174, 144177], \"mode\": \"FT8\", \"priority\": 100 },\n { \"name\": \"FT4\", \"mhz\": [144170, 144173], \"mode\": \"FT4\", \"priority\": 100 },\n { \"name\": \"Phone\", \"mhz\": [144200, 144275], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone Reg1\", \"mhz\": [144150, 144400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"Beacons only Reg1\", \"mhz\": [144400, 144490], \"priority\": 100, \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [144300, 148000], \"mode\": \"FM\" },\n { \"name\": \"Reg1\", \"mhz\": [144500, 144794], \"mode\": null, \"regions\": [ 1 ] },\n { \"name\": \"FM Satellite Reg1\", \"mhz\": [145194, 145206], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"FM Reg1\", \"mhz\": [145206, 145563], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [146000, 148000], \"mode\": false, \"regions\": [ 1 ] }\n ]\n },\n \"1.25m\": {\n \"mhz\": [222000, 225000],\n \"segments\": [\n { \"name\": \"CW\", \"mhz\": [222000, 222070], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [222070, 222150], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"FM\", \"mhz\": [222200, 225000], \"mode\": \"FM\" }\n ]\n },\n \"70cm\": {\n \"mhz\": [420000, 450000],\n \"segments\": [\n { \"name\": \"Out of band Reg1\", \"mhz\": [420000, 430000], \"mode\": false, \"regions\": [ 1 ]},\n { \"name\": \"CW\", \"mhz\": [432000, 432100], \"mode\": \"CW\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432300], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432420, 433000], \"mode\": \"SSB\", \"submode\": \"USB\" },\n { \"name\": \"Phone\", \"mhz\": [432100, 432400], \"mode\": \"SSB\", \"submode\": \"USB\", \"regions\": [ 1 ] },\n { \"name\": \"FM\", \"mhz\": [420000, 450000], \"mode\": \"FM\" },\n { \"name\": \"FM Reg1\", \"mhz\": [433400, 433575], \"mode\": \"FM\", \"regions\": [ 1 ] },\n { \"name\": \"Out of band Reg1\", \"mhz\": [440000, 450000], \"mode\": false, \"regions\": [ 1 ]}\n ]\n },\n \"33cm\": {\n \"mhz\": [902000, 928000],\n \"segments\": [\n { \"name\": \"FM\", \"mhz\": [927000, 928000], \"mode\": \"FM\" }\n ]\n }\n }\n}\n","import BandPlans from '../data/bandPlans.json'\nimport type { BandPlansData, SegmentWithMetadata, ModeForFrequencyOptions } from '../types'\n\nexport const SUPER_MODES: readonly string[] = [\n 'CW',\n 'PHONE',\n 'DATA'\n] as const\n\nexport type SuperMode = 'CW' | 'PHONE' | 'DATA'\n\nexport const MAIN_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'AM',\n 'FM',\n 'FT8',\n 'FT4',\n 'RTTY'\n] as const\n\nexport const POPULAR_MODES: readonly string[] = [\n 'CW',\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'FT8',\n 'FT4',\n 'FT2',\n 'RTTY',\n 'DIGITALVOICE',\n 'C4FM',\n 'DMR',\n 'DSTAR',\n 'FREEDV',\n 'M17',\n 'DYNAMIC',\n 'HELL',\n 'JT9',\n 'MFSK',\n 'MSK144',\n 'OLIVIA',\n 'PKT',\n 'PSK',\n 'SSTV',\n 'WSPR',\n] as const\n\nexport const ADIF_MODES: readonly string[] = [\n 'AM',\n 'ARDOP',\n 'ATV',\n 'CHIP',\n 'CLO',\n 'CONTESTI',\n 'CW',\n 'DIGITALVOICE',\n 'DOMINO',\n 'DYNAMIC',\n 'FAX',\n 'FM',\n 'FSK',\n 'FSK441',\n 'FT8',\n 'HELL',\n 'ISCAT',\n 'JT4',\n 'JT6M',\n 'JT9',\n 'JT44',\n 'JT65',\n 'MFSK',\n 'MSK144',\n 'MT63',\n 'MTONE',\n 'ODFM',\n 'OLIVIA',\n 'OPERA',\n 'PAC',\n 'PAX',\n 'PKT',\n 'PSK',\n 'PSK2K',\n 'Q15',\n 'QRA64',\n 'ROS',\n 'RTTY',\n 'RTTYM',\n 'SSB',\n 'SSTV',\n 'T10',\n 'THOR',\n 'THRB',\n 'TOR',\n 'V4',\n 'VOI',\n 'WINMOR',\n 'WSPR'\n] as const\n\nexport const ADIF_SUBMODES: Record<string, readonly string[]> = {\n 'CW': ['PCW'],\n 'CHIP': ['CHIP64', 'CHIP128'],\n 'DIGITALVOICE': ['C4FM', 'DMR', 'DSTAR', 'FREEDV', 'M17'],\n 'DOMINO': ['DOM-M', 'DOM4', 'DOM5', 'DOM8', 'DOM11', 'DOM16', 'DOM22', 'DOM44', 'DOM88', 'DOMINOEX', 'DOMINOF'],\n 'DYNAMIC': ['FREEDATA', 'VARA HF', 'VARA SATELLITE', 'VARA FM 1200', 'VARA FM 9600'],\n 'FSK': ['SCAMP_FAST', 'SCAMP_SLOW', 'SCAMP_VSLOW'],\n 'HELL': ['FMHELL', 'FSKH105', 'FSKH245', 'FSKHELL', 'HELL80', 'HELLX5', 'HELLX9', 'HFSK', 'PSKHELL', 'SLOWHELL'],\n 'ISCAT': ['ISCAT-A', 'ISCAT-B'],\n 'JT4': ['JT4A', 'JT4B', 'JT4C', 'JT4D', 'JT4E', 'JT4F', 'JT4G'],\n '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'],\n 'JT65': ['JT65A', 'JT65B', 'JT65B2', 'JT65C', 'JT65C2'],\n 'MFSK': ['FSQCALL', 'FST4', 'FST4W', 'FT4', 'FT2', 'JS8', 'JTMS', 'MFSK4', 'MFSK8', 'MFSK11', 'MFSK16', 'MFSK22', 'MFSK31', 'MFSK32', 'MFSK64', 'MFSK64L', 'MFSK128 MFSK128L', 'Q65'],\n 'MTONE': ['SCAMP_OO', 'SCAMP_OO_SLW'],\n 'ODFM': ['RIBBIT_PIX', 'RIBBIT_SMS'],\n 'OLIVIA': ['OLIVIA 4/125', 'OLIVIA 4/250', 'OLIVIA 8/250', 'OLIVIA 8/500', 'OLIVIA 16/500', 'OLIVIA 16/1000', 'OLIVIA 32/1000'],\n 'OPERA': ['OPERA-BEACON', 'OPERA-QSO'],\n 'PAC': ['PAC2', 'PAC3', 'PAC4'],\n 'PAX': ['PAX2'],\n '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'],\n 'QRA64': ['QRA64A', 'QRA64B', 'QRA64C', 'QRA64D', 'QRA64E'],\n 'ROS': ['ROS-EME', 'ROS-HF', 'ROS-MF'],\n 'RTTY': ['ASCI'],\n 'SSB': ['LSB', 'USB'],\n 'THOR': ['THOR-M', 'THOR4', 'THOR5', 'THOR8', 'THOR11', 'THOR16', 'THOR22', 'THOR25X4', 'THOR50X1', 'THOR50X2', 'THOR100'],\n 'THRB': ['THRBX', 'THRBX1', 'THRBX2', 'THRBX4', 'THROB1', 'THROB2', 'THROB4'],\n 'TOR': ['AMTORFEC', 'GTOR', 'NAVTEX', 'SITORB']\n} as const\n\nexport const ALL_MODES: readonly string[] = [\n ...new Set([\n ...ADIF_MODES,\n ...Object.values(ADIF_SUBMODES).flat()\n ])\n].sort()\n\nexport const PHONE_MODES: readonly string[] = [\n 'SSB',\n 'USB',\n 'LSB',\n 'FM',\n 'AM',\n 'DIGITALVOICE',\n ...ADIF_SUBMODES.DIGITALVOICE,\n] as const\n\nexport const ADIF_MODE_FOR_SUBMODE: Record<string, string> = {}\nObject.keys(ADIF_SUBMODES).forEach(mode => {\n ADIF_SUBMODES[mode].forEach(submode => {\n ADIF_MODE_FOR_SUBMODE[submode] = mode\n })\n})\n\nexport const ADIF_MODES_AND_SUBMODES: readonly string[] = [...new Set([...ADIF_MODES, ...Object.values(ADIF_SUBMODES).flat()])].sort()\n\nexport function adifModeAndSubmodeForMode(mode: string): string[] {\n if (ADIF_MODE_FOR_SUBMODE[mode]) {\n return [ADIF_MODE_FOR_SUBMODE[mode], mode]\n } else {\n return [mode]\n }\n}\n\nexport function superModeForMode(mode: string): SuperMode {\n if (ADIF_MODE_FOR_SUBMODE[mode]) mode = ADIF_MODE_FOR_SUBMODE[mode]\n\n if (mode === 'CW') {\n return 'CW'\n } else if (PHONE_MODES.includes(mode)) {\n return 'PHONE'\n } else {\n return 'DATA'\n }\n}\n\nconst bandPlansData = BandPlans as unknown as BandPlansData\n\nconst AllSegments: SegmentWithMetadata[] = Object.keys(bandPlansData.bands).reduce((segments, band) => {\n return segments.concat(\n bandPlansData.bands[band].segments.map(segment => {\n const mhz = Array.isArray(segment.mhz) && segment.mhz.length >= 2\n ? [segment.mhz[0], segment.mhz[1]] as [number, number]\n : [0, 0] as [number, number]\n return {\n name: segment.name,\n mode: segment.mode,\n submode: segment.submode,\n priority: segment.priority,\n mhz,\n band,\n width: mhz[1] - mhz[0],\n regions: (segment.regions || []).reduce((regions: Record<string, boolean>, region) => { regions[region.toString()] = true; return regions }, {}),\n entities: (segment.entities || []).reduce((entities: Record<string, boolean>, entity) => { entities[entity] = true; return entities }, {}),\n countries: (segment.countries || []).reduce((countries: Record<string, boolean>, country) => { countries[country] = true; return countries }, {}),\n } as SegmentWithMetadata\n })\n )\n}, [] as SegmentWithMetadata[])\n\nexport function modeForFrequency(frequency: number, options: ModeForFrequencyOptions = {}): string | null | undefined | false{\n const { ituRegion, countryCode, entityPrefix } = options\n\n const segments = AllSegments.filter(segment => (\n (segment.mhz[0] <= frequency && segment.mhz[1] >= frequency) &&\n (!entityPrefix || Object.keys(segment.entities).length === 0 || segment.entities[entityPrefix]) &&\n (!countryCode || Object.keys(segment.countries).length === 0 || segment.countries[countryCode]) &&\n (!ituRegion || Object.keys(segment.regions).length === 0 || segment.regions[ituRegion.toString()])\n ))\n\n const sortedSegments = segments.sort((a, b) => {\n if ((a.priority ?? 0) < (b.priority ?? 0)) return 1\n if ((a.priority ?? 0) > (b.priority ?? 0)) return -1\n\n if (entityPrefix && !a.entities[entityPrefix] && b.entities[entityPrefix]) return 1\n if (entityPrefix && a.entities[entityPrefix] && !b.entities[entityPrefix]) return -1\n\n if (countryCode && !a.countries[countryCode] && b.countries[countryCode]) return 1\n if (countryCode && a.countries[countryCode] && !b.countries[countryCode]) return -1\n\n if (ituRegion && !a.regions[ituRegion.toString()] && b.regions[ituRegion.toString()]) return 1\n if (ituRegion && a.regions[ituRegion.toString()] && !b.regions[ituRegion.toString()]) return -1\n\n return a.width - b.width\n })\n\n return sortedSegments[0]?.mode\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ham2k/lib-operation-data",
3
- "version": "1.0.5",
3
+ "version": "1.1.0",
4
4
  "description": "Amateur radio basic operation data and definitions",
5
5
  "author": "Sebastian Delmont <sd@ham2k.com>",
6
6
  "repository": {
@@ -16,18 +16,20 @@
16
16
  "qso"
17
17
  ],
18
18
  "type": "module",
19
- "main": "./dist/index.js",
19
+ "main": "./dist/index.cjs",
20
+ "module": "./dist/index.js",
20
21
  "types": "./dist/index.d.ts",
21
- "files": [
22
- "dist"
23
- ],
24
22
  "exports": {
25
23
  ".": {
26
24
  "types": "./dist/index.d.ts",
27
25
  "import": "./dist/index.js",
26
+ "require": "./dist/index.cjs",
28
27
  "default": "./dist/index.js"
29
28
  }
30
29
  },
30
+ "files": [
31
+ "dist"
32
+ ],
31
33
  "devDependencies": {
32
34
  "@types/jest": "^30.0.0",
33
35
  "@types/node": "^24.10.1",
@@ -48,4 +50,4 @@
48
50
  "jest"
49
51
  ]
50
52
  }
51
- }
53
+ }