@springfield/ham-radio-api 3.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/branded-types/frequency.d.ts +4 -0
  3. package/dist/branded-types/frequency.d.ts.map +1 -0
  4. package/dist/branded-types/frequency.js +3 -0
  5. package/dist/branded-types/frequency.js.map +1 -0
  6. package/dist/branded-types/license-class-id.d.ts +4 -0
  7. package/dist/branded-types/license-class-id.d.ts.map +1 -0
  8. package/dist/branded-types/license-class-id.js +3 -0
  9. package/dist/branded-types/license-class-id.js.map +1 -0
  10. package/dist/branded-types/radio-channel-id.d.ts +4 -0
  11. package/dist/branded-types/radio-channel-id.d.ts.map +1 -0
  12. package/dist/branded-types/radio-channel-id.js +3 -0
  13. package/dist/branded-types/radio-channel-id.js.map +1 -0
  14. package/dist/branded-types/radio-id.d.ts +4 -0
  15. package/dist/branded-types/radio-id.d.ts.map +1 -0
  16. package/dist/branded-types/radio-id.js +3 -0
  17. package/dist/branded-types/radio-id.js.map +1 -0
  18. package/dist/branded-types/radio-model-id.d.ts +4 -0
  19. package/dist/branded-types/radio-model-id.d.ts.map +1 -0
  20. package/dist/branded-types/radio-model-id.js +3 -0
  21. package/dist/branded-types/radio-model-id.js.map +1 -0
  22. package/dist/branded-types/radio-module-id.d.ts +4 -0
  23. package/dist/branded-types/radio-module-id.d.ts.map +1 -0
  24. package/dist/branded-types/radio-module-id.js +3 -0
  25. package/dist/branded-types/radio-module-id.js.map +1 -0
  26. package/dist/branded-types/spectrum-band-id.d.ts +4 -0
  27. package/dist/branded-types/spectrum-band-id.d.ts.map +1 -0
  28. package/dist/branded-types/spectrum-band-id.js +3 -0
  29. package/dist/branded-types/spectrum-band-id.js.map +1 -0
  30. package/dist/branded-types/spectrum-mode-id.d.ts +4 -0
  31. package/dist/branded-types/spectrum-mode-id.d.ts.map +1 -0
  32. package/dist/branded-types/spectrum-mode-id.js +3 -0
  33. package/dist/branded-types/spectrum-mode-id.js.map +1 -0
  34. package/dist/branded-types/spectrum-privlege-id.d.ts +4 -0
  35. package/dist/branded-types/spectrum-privlege-id.d.ts.map +1 -0
  36. package/dist/branded-types/spectrum-privlege-id.js +3 -0
  37. package/dist/branded-types/spectrum-privlege-id.js.map +1 -0
  38. package/dist/branded-types/wavelength.d.ts +4 -0
  39. package/dist/branded-types/wavelength.d.ts.map +1 -0
  40. package/dist/branded-types/wavelength.js +3 -0
  41. package/dist/branded-types/wavelength.js.map +1 -0
  42. package/dist/index.d.ts +12 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +12 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/license/class.d.ts +2 -1
  47. package/dist/license/class.d.ts.map +1 -1
  48. package/dist/license/class.js.map +1 -1
  49. package/dist/radio/channel.d.ts +5 -3
  50. package/dist/radio/channel.d.ts.map +1 -1
  51. package/dist/radio/channel.js.map +1 -1
  52. package/dist/radio/ctcss.d.ts +41 -0
  53. package/dist/radio/ctcss.d.ts.map +1 -0
  54. package/dist/radio/ctcss.js +42 -0
  55. package/dist/radio/ctcss.js.map +1 -0
  56. package/dist/radio/dcs.d.ts +32 -0
  57. package/dist/radio/dcs.d.ts.map +1 -0
  58. package/dist/radio/dcs.js +33 -0
  59. package/dist/radio/dcs.js.map +1 -0
  60. package/dist/radio/memory.d.ts +2 -1
  61. package/dist/radio/memory.d.ts.map +1 -1
  62. package/dist/radio/memory.js.map +1 -1
  63. package/dist/radio/model.d.ts +4 -2
  64. package/dist/radio/model.d.ts.map +1 -1
  65. package/dist/radio/model.js.map +1 -1
  66. package/dist/radio/module.d.ts +5 -3
  67. package/dist/radio/module.d.ts.map +1 -1
  68. package/dist/radio/module.js.map +1 -1
  69. package/dist/radio/program.d.ts +2 -1
  70. package/dist/radio/program.d.ts.map +1 -1
  71. package/dist/radio/program.js.map +1 -1
  72. package/dist/radio/radio.d.ts +4 -2
  73. package/dist/radio/radio.d.ts.map +1 -1
  74. package/dist/radio/radio.js.map +1 -1
  75. package/dist/radio/schema.d.ts +2 -1
  76. package/dist/radio/schema.d.ts.map +1 -1
  77. package/dist/radio/schema.js.map +1 -1
  78. package/dist/radio/tone.d.ts +3 -1
  79. package/dist/radio/tone.d.ts.map +1 -1
  80. package/dist/radio/tone.js.map +1 -1
  81. package/dist/spectrum/band.d.ts +9 -5
  82. package/dist/spectrum/band.d.ts.map +1 -1
  83. package/dist/spectrum/band.js.map +1 -1
  84. package/dist/spectrum/channel.d.ts +2 -1
  85. package/dist/spectrum/channel.d.ts.map +1 -1
  86. package/dist/spectrum/channel.js.map +1 -1
  87. package/dist/spectrum/mode.d.ts +2 -1
  88. package/dist/spectrum/mode.d.ts.map +1 -1
  89. package/dist/spectrum/mode.js.map +1 -1
  90. package/dist/spectrum/privilege.d.ts +11 -6
  91. package/dist/spectrum/privilege.d.ts.map +1 -1
  92. package/dist/spectrum/privilege.js.map +1 -1
  93. package/package.json +5 -2
  94. package/src/branded-types/frequency.ts +4 -0
  95. package/src/branded-types/license-class-id.ts +4 -0
  96. package/src/branded-types/radio-channel-id.ts +4 -0
  97. package/src/branded-types/radio-id.ts +4 -0
  98. package/src/branded-types/radio-model-id.ts +4 -0
  99. package/src/branded-types/radio-module-id.ts +4 -0
  100. package/src/branded-types/spectrum-band-id.ts +4 -0
  101. package/src/branded-types/spectrum-mode-id.ts +4 -0
  102. package/src/branded-types/spectrum-privlege-id.ts +4 -0
  103. package/src/branded-types/wavelength.ts +4 -0
  104. package/src/index.ts +14 -1
  105. package/src/license/class.ts +3 -1
  106. package/src/radio/channel.ts +5 -3
  107. package/src/radio/ctcss.ts +40 -0
  108. package/src/radio/dcs.ts +31 -0
  109. package/src/radio/memory.ts +3 -1
  110. package/src/radio/model.ts +5 -2
  111. package/src/radio/module.ts +5 -3
  112. package/src/radio/program.ts +2 -1
  113. package/src/radio/radio.ts +5 -2
  114. package/src/radio/schema.ts +3 -1
  115. package/src/radio/tone.ts +4 -1
  116. package/src/spectrum/band.ts +9 -5
  117. package/src/spectrum/channel.ts +3 -1
  118. package/src/spectrum/mode.ts +3 -1
  119. package/src/spectrum/privilege.ts +12 -6
  120. package/src/brand.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/radio/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/radio/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/radio/program.ts"],"names":[],"mappings":"","sourcesContent":["import { RadioProgrammedChannel } from './programmed-channel.js';\nimport { RadioSettings } from './settings.js';\n\nexport interface RadioProgram {\n radioId?: string;\n settings: RadioSettings;\n channels: RadioProgrammedChannel[];\n}\n"]}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/radio/program.ts"],"names":[],"mappings":"","sourcesContent":["import { RadioId } from '../branded-types/radio-id.js';\nimport { RadioProgrammedChannel } from './programmed-channel.js';\nimport { RadioSettings } from './settings.js';\n\nexport interface RadioProgram {\n radio: RadioId;\n settings: RadioSettings;\n channels: RadioProgrammedChannel[];\n}\n"]}
@@ -1,6 +1,8 @@
1
+ import { RadioId } from '../branded-types/radio-id.js';
2
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
1
3
  export interface Radio {
2
- id: string;
4
+ id: RadioId;
3
5
  name: string;
4
- modelId: string;
6
+ model: RadioModelId;
5
7
  }
6
8
  //# sourceMappingURL=radio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"","sourcesContent":["export interface Radio {\n id: string;\n name: string;\n modelId: string;\n}\n"]}
1
+ {"version":3,"file":"radio.js","sourceRoot":"","sources":["../../src/radio/radio.ts"],"names":[],"mappings":"","sourcesContent":["import { RadioId } from '../branded-types/radio-id.js';\nimport { RadioModelId } from '../branded-types/radio-model-id.js';\n\nexport interface Radio {\n id: RadioId;\n name: string;\n model: RadioModelId;\n}\n"]}
@@ -1,5 +1,6 @@
1
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
1
2
  export interface RadioSchema {
2
- modelId: string;
3
+ model: RadioModelId;
3
4
  settingsSchema: any;
4
5
  channelSchema: any;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/radio/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,EAAE,GAAG,CAAC;CACpB"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/radio/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,EAAE,GAAG,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/radio/schema.ts"],"names":[],"mappings":"","sourcesContent":["export interface RadioSchema {\n modelId: string;\n settingsSchema: any;\n channelSchema: any;\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/radio/schema.ts"],"names":[],"mappings":"","sourcesContent":["import { RadioModelId } from '../branded-types/radio-model-id.js';\n\nexport interface RadioSchema {\n model: RadioModelId;\n settingsSchema: any;\n channelSchema: any;\n}\n"]}
@@ -1,9 +1,11 @@
1
+ import { CTCSS } from './ctcss.js';
2
+ import { DCS } from './dcs.js';
1
3
  export declare enum RadioToneType {
2
4
  CTCSS = 0,
3
5
  DCS = 1
4
6
  }
5
7
  export interface RadioTone {
6
- tone: number;
8
+ tone: CTCSS | DCS;
7
9
  type: RadioToneType;
8
10
  }
9
11
  //# sourceMappingURL=tone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tone.d.ts","sourceRoot":"","sources":["../../src/radio/tone.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,KAAK,IAAA;IACL,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;CACrB"}
1
+ {"version":3,"file":"tone.d.ts","sourceRoot":"","sources":["../../src/radio/tone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,oBAAY,aAAa;IACvB,KAAK,IAAA;IACL,GAAG,IAAA;CACJ;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"tone.js","sourceRoot":"","sources":["../../src/radio/tone.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,mDAAK,CAAA;IACL,+CAAG,CAAA;AACL,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["export enum RadioToneType {\n CTCSS,\n DCS,\n}\n\nexport interface RadioTone {\n tone: number;\n type: RadioToneType;\n}\n"]}
1
+ {"version":3,"file":"tone.js","sourceRoot":"","sources":["../../src/radio/tone.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,mDAAK,CAAA;IACL,+CAAG,CAAA;AACL,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["import { CTCSS } from './ctcss.js';\nimport { DCS } from './dcs.js';\n\nexport enum RadioToneType {\n CTCSS,\n DCS,\n}\n\nexport interface RadioTone {\n tone: CTCSS | DCS;\n type: RadioToneType;\n}\n"]}
@@ -1,13 +1,17 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+ import { LicenseClassId } from '../branded-types/license-class-id.js';
3
+ import { SpectrumBandId } from '../branded-types/spectrum-band-id.js';
4
+ import { Wavelength } from '../branded-types/wavelength.js';
1
5
  import { SpectrumChannel } from './channel.js';
2
6
  export interface SpectrumBand {
3
- id?: string;
7
+ id: SpectrumBandId;
4
8
  name: string;
5
- wavelength: number;
6
- lowerFrequency: number;
7
- upperFrequency: number;
9
+ wavelength: Wavelength;
10
+ lowerFrequency: Frequency;
11
+ upperFrequency: Frequency;
8
12
  frequencyDisplayBaseMultiplier: number;
9
13
  frequencyDisplayNumberDecimals: number;
10
- privilegeIds: string[];
14
+ privileges: LicenseClassId[];
11
15
  channels?: SpectrumChannel[];
12
16
  }
13
17
  //# sourceMappingURL=band.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"band.d.ts","sourceRoot":"","sources":["../../src/spectrum/band.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B,EAAE,MAAM,CAAC;IACvC,8BAA8B,EAAE,MAAM,CAAC;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B"}
1
+ {"version":3,"file":"band.d.ts","sourceRoot":"","sources":["../../src/spectrum/band.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,cAAc,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,SAAS,CAAC;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,8BAA8B,EAAE,MAAM,CAAC;IACvC,8BAA8B,EAAE,MAAM,CAAC;IACvC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"band.js","sourceRoot":"","sources":["../../src/spectrum/band.ts"],"names":[],"mappings":"","sourcesContent":["import { SpectrumChannel } from './channel.js';\n\nexport interface SpectrumBand {\n id?: string;\n name: string;\n wavelength: number;\n lowerFrequency: number;\n upperFrequency: number;\n frequencyDisplayBaseMultiplier: number;\n frequencyDisplayNumberDecimals: number;\n privilegeIds: string[];\n channels?: SpectrumChannel[];\n}\n"]}
1
+ {"version":3,"file":"band.js","sourceRoot":"","sources":["../../src/spectrum/band.ts"],"names":[],"mappings":"","sourcesContent":["import { Frequency } from '../branded-types/frequency.js';\nimport { LicenseClassId } from '../branded-types/license-class-id.js';\nimport { SpectrumBandId } from '../branded-types/spectrum-band-id.js';\nimport { Wavelength } from '../branded-types/wavelength.js';\nimport { SpectrumChannel } from './channel.js';\n\nexport interface SpectrumBand {\n id: SpectrumBandId;\n name: string;\n wavelength: Wavelength;\n lowerFrequency: Frequency;\n upperFrequency: Frequency;\n frequencyDisplayBaseMultiplier: number;\n frequencyDisplayNumberDecimals: number;\n privileges: LicenseClassId[];\n channels?: SpectrumChannel[];\n}\n"]}
@@ -1,5 +1,6 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
1
2
  export interface SpectrumChannel {
2
3
  name: string;
3
- frequency: number;
4
+ frequency: Frequency;
4
5
  }
5
6
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/spectrum/channel.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/spectrum/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/spectrum/channel.ts"],"names":[],"mappings":"","sourcesContent":["export interface SpectrumChannel {\n name: string;\n frequency: number;\n}\n"]}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/spectrum/channel.ts"],"names":[],"mappings":"","sourcesContent":["import { Frequency } from '../branded-types/frequency.js';\n\nexport interface SpectrumChannel {\n name: string;\n frequency: Frequency;\n}\n"]}
@@ -1,5 +1,6 @@
1
+ import { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';
1
2
  export interface SpectrumMode {
2
- id?: string;
3
+ id: SpectrumModeId;
3
4
  name: string;
4
5
  }
5
6
  //# sourceMappingURL=mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/spectrum/mode.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/spectrum/mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,cAAc,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -1 +1 @@
1
- {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/spectrum/mode.ts"],"names":[],"mappings":"","sourcesContent":["export interface SpectrumMode {\n id?: string;\n name: string;\n}\n"]}
1
+ {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/spectrum/mode.ts"],"names":[],"mappings":"","sourcesContent":["import { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';\n\nexport interface SpectrumMode {\n id: SpectrumModeId;\n name: string;\n}\n"]}
@@ -1,9 +1,14 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+ import { LicenseClassId } from '../branded-types/license-class-id.js';
3
+ import { SpectrumBandId } from '../branded-types/spectrum-band-id.js';
4
+ import { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';
5
+ import { SpectrumPrivilegeId } from '../branded-types/spectrum-privlege-id.js';
1
6
  export interface SpectrumPrivilege {
2
- id?: string;
3
- licenseClassId: string;
4
- modeId: string;
5
- bandId: string;
6
- lowerFrequency: string;
7
- upperFrequency: string;
7
+ id: SpectrumPrivilegeId;
8
+ licenseClassId: LicenseClassId;
9
+ mode: SpectrumModeId;
10
+ band: SpectrumBandId;
11
+ lowerFrequency: Frequency;
12
+ upperFrequency: Frequency;
8
13
  }
9
14
  //# sourceMappingURL=privilege.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"privilege.d.ts","sourceRoot":"","sources":["../../src/spectrum/privilege.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"privilege.d.ts","sourceRoot":"","sources":["../../src/spectrum/privilege.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,mBAAmB,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,EAAE,SAAS,CAAC;IAC1B,cAAc,EAAE,SAAS,CAAC;CAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"privilege.js","sourceRoot":"","sources":["../../src/spectrum/privilege.ts"],"names":[],"mappings":"","sourcesContent":["export interface SpectrumPrivilege {\n id?: string;\n licenseClassId: string;\n modeId: string;\n bandId: string;\n lowerFrequency: string;\n upperFrequency: string;\n}\n"]}
1
+ {"version":3,"file":"privilege.js","sourceRoot":"","sources":["../../src/spectrum/privilege.ts"],"names":[],"mappings":"","sourcesContent":["import { Frequency } from '../branded-types/frequency.js';\nimport { LicenseClassId } from '../branded-types/license-class-id.js';\nimport { SpectrumBandId } from '../branded-types/spectrum-band-id.js';\nimport { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';\nimport { SpectrumPrivilegeId } from '../branded-types/spectrum-privlege-id.js';\n\nexport interface SpectrumPrivilege {\n id: SpectrumPrivilegeId;\n licenseClassId: LicenseClassId;\n mode: SpectrumModeId;\n band: SpectrumBandId;\n lowerFrequency: Frequency;\n upperFrequency: Frequency;\n}\n"]}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@springfield/ham-radio-api",
3
- "version": "3.0.0",
3
+ "version": "5.0.0",
4
4
  "author": "Bryan Hunt",
5
- "packageManager": "yarn@4.7.0",
5
+ "packageManager": "yarn@4.8.1",
6
6
  "main": "dist/index.js",
7
7
  "type": "module",
8
8
  "types": "dist/index.d.ts",
@@ -56,5 +56,8 @@
56
56
  "semantic-release": "23.1.1",
57
57
  "semantic-release-yarn": "3.0.2",
58
58
  "typescript": "5.8.2"
59
+ },
60
+ "dependencies": {
61
+ "ts-brand": "^0.2.0"
59
62
  }
60
63
  }
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type Frequency = Brand<number, 'frequency'>;
4
+ export const Frequency = make<Frequency>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type LicenseClassId = Brand<string, 'license-class-id'>;
4
+ export const LicenseClassId = make<LicenseClassId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type RadioChannelId = Brand<string, 'radio-channel-id'>;
4
+ export const RadioChannelId = make<RadioChannelId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type RadioId = Brand<string, 'radio-id'>;
4
+ export const RadioId = make<RadioId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type RadioModelId = Brand<string, 'radio-model-id'>;
4
+ export const RadioModelId = make<RadioModelId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type RadioModuleId = Brand<string, 'radio-module-id'>;
4
+ export const RadioModuleId = make<RadioModuleId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type SpectrumBandId = Brand<string, 'spectrum-band-id'>;
4
+ export const SpectrumBandId = make<SpectrumBandId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type SpectrumModeId = Brand<string, 'spectrum-mode-id'>;
4
+ export const SpectrumModeId = make<SpectrumModeId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type SpectrumPrivilegeId = Brand<string, 'spectrum-privilege-id'>;
4
+ export const SpectrumPrivilegeId = make<SpectrumPrivilegeId>();
@@ -0,0 +1,4 @@
1
+ import { Brand, make } from 'ts-brand';
2
+
3
+ export type Wavelength = Brand<number, 'wavelength'>;
4
+ export const Wavelength = make<Wavelength>();
package/src/index.ts CHANGED
@@ -1,8 +1,21 @@
1
+ export * from './branded-types/frequency.js';
2
+ export * from './branded-types/license-class-id.js';
3
+ export * from './branded-types/radio-channel-id.js';
4
+ export * from './branded-types/radio-id.js';
5
+ export * from './branded-types/radio-model-id.js';
6
+ export * from './branded-types/radio-module-id.js';
7
+ export * from './branded-types/spectrum-band-id.js';
8
+ export * from './branded-types/spectrum-mode-id.js';
9
+ export * from './branded-types/spectrum-privlege-id.js';
10
+ export * from './branded-types/wavelength.js';
11
+
1
12
  export * from './license/class.js';
2
13
 
3
14
  export * from './radio/channel.js';
4
15
  export * from './radio/codec.js';
5
16
  export * from './radio/connection.js';
17
+ export * from './radio/ctcss.js';
18
+ export * from './radio/dcs.js';
6
19
  export * from './radio/driver.js';
7
20
  export * from './radio/memory.js';
8
21
  export * from './radio/model.js';
@@ -18,4 +31,4 @@ export * from './radio/tone.js';
18
31
  export * from './spectrum/band.js';
19
32
  export * from './spectrum/channel.js';
20
33
  export * from './spectrum/mode.js';
21
- export * from './spectrum/privilege.js'
34
+ export * from './spectrum/privilege.js';
@@ -1,4 +1,6 @@
1
+ import { LicenseClassId } from '../branded-types/license-class-id.js';
2
+
1
3
  export interface LicenseClass {
2
- id?: string;
4
+ id: LicenseClassId;
3
5
  name: string;
4
6
  }
@@ -1,10 +1,12 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+ import { RadioChannelId } from '../branded-types/radio-channel-id.js';
1
3
  import { RadioTone } from './tone.js';
2
4
 
3
5
  export interface RadioChannel {
4
- id?: string;
6
+ id?: RadioChannelId;
5
7
  name?: string;
6
- transmitFrequency: number;
7
- receiveFrequency: number;
8
+ transmitFrequency: Frequency;
9
+ receiveFrequency: Frequency;
8
10
  transmitTone: RadioTone;
9
11
  receiveTone: RadioTone;
10
12
  }
@@ -0,0 +1,40 @@
1
+ export enum CTCSS {
2
+ TONE_67_0 = '67.0 Hz',
3
+ TONE_69_3 = '69.3 Hz',
4
+ TONE_71_9 = '71.9 Hz',
5
+ TONE_74_4 = '74.4 Hz',
6
+ TONE_77_0 = '77.0 Hz',
7
+ TONE_79_7 = '79.7 Hz',
8
+ TONE_82_5 = '82.5 Hz',
9
+ TONE_85_4 = '85.4 Hz',
10
+ TONE_88_5 = '88.5 Hz',
11
+ TONE_91_5 = '91.5 Hz',
12
+ TONE_94_8 = '94.8 Hz',
13
+ TONE_97_4 = '97.4 Hz',
14
+ TONE_100_0 = '100.0 Hz',
15
+ TONE_103_5 = '103.5 Hz',
16
+ TONE_107_2 = '107.2 Hz',
17
+ TONE_110_9 = '110.9 Hz',
18
+ TONE_114_8 = '114.8 Hz',
19
+ TONE_118_8 = '118.8 Hz',
20
+ TONE_123_0 = '123.0 Hz',
21
+ TONE_127_3 = '127.3 Hz',
22
+ TONE_131_8 = '131.8 Hz',
23
+ TONE_136_5 = '136.5 Hz',
24
+ TONE_141_3 = '141.3 Hz',
25
+ TONE_146_2 = '146.2 Hz',
26
+ TONE_151_4 = '151.4 Hz',
27
+ TONE_156_7 = '156.7 Hz',
28
+ TONE_162_2 = '162.2 Hz',
29
+ TONE_167_9 = '167.9 Hz',
30
+ TONE_173_8 = '173.8 Hz',
31
+ TONE_179_9 = '179.9 Hz',
32
+ TONE_186_2 = '186.2 Hz',
33
+ TONE_192_8 = '192.8 Hz',
34
+ TONE_203_5 = '203.5 Hz',
35
+ TONE_210_7 = '210.7 Hz',
36
+ TONE_218_1 = '218.1 Hz',
37
+ TONE_225_7 = '225.7 Hz',
38
+ TONE_233_6 = '233.6 Hz',
39
+ TONE_241_8 = '241.8 Hz',
40
+ }
@@ -0,0 +1,31 @@
1
+ export enum DCS {
2
+ D023 = '023',
3
+ D025 = '025',
4
+ D026 = '026',
5
+ D031 = '031',
6
+ D032 = '032',
7
+ D036 = '036',
8
+ D043 = '043',
9
+ D047 = '047',
10
+ D051 = '051',
11
+ D053 = '053',
12
+ D065 = '065',
13
+ D071 = '071',
14
+ D072 = '072',
15
+ D073 = '073',
16
+ D074 = '074',
17
+ D114 = '114',
18
+ D115 = '115',
19
+ D116 = '116',
20
+ D125 = '125',
21
+ D131 = '131',
22
+ D132 = '132',
23
+ D134 = '134',
24
+ D143 = '143',
25
+ D145 = '145',
26
+ D152 = '152',
27
+ D155 = '155',
28
+ D156 = '156',
29
+ D162 = '162',
30
+ D165 = '165',
31
+ }
@@ -1,4 +1,6 @@
1
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
2
+
1
3
  export interface RadioMemory {
2
- radioModelId: string;
4
+ radioModel: RadioModelId;
3
5
  contents: any;
4
6
  }
@@ -1,6 +1,9 @@
1
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
2
+ import { RadioModuleId } from '../branded-types/radio-module-id.js';
3
+
1
4
  export interface RadioModel {
2
- id: string;
3
- moduleId: string;
5
+ id: RadioModelId;
6
+ module: RadioModuleId;
4
7
  name: string;
5
8
  manufacturer: string;
6
9
  }
@@ -1,10 +1,12 @@
1
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
2
+ import { RadioModuleId } from '../branded-types/radio-module-id.js';
1
3
  import { RadioDriver } from './driver.js';
2
4
  import { RadioModel } from './model.js';
3
5
  import { RadioSchema } from './schema.js';
4
6
 
5
7
  export interface RadioModule {
6
- getId(): string;
8
+ getId(): RadioModuleId;
7
9
  getModels(): RadioModel[];
8
- getSchema(modelId: string): Promise<RadioSchema>;
9
- getDriver(modelId: string): RadioDriver;
10
+ getSchema(model: RadioModelId): Promise<RadioSchema>;
11
+ getDriver(model: RadioModelId): RadioDriver;
10
12
  }
@@ -1,8 +1,9 @@
1
+ import { RadioId } from '../branded-types/radio-id.js';
1
2
  import { RadioProgrammedChannel } from './programmed-channel.js';
2
3
  import { RadioSettings } from './settings.js';
3
4
 
4
5
  export interface RadioProgram {
5
- radioId?: string;
6
+ radio: RadioId;
6
7
  settings: RadioSettings;
7
8
  channels: RadioProgrammedChannel[];
8
9
  }
@@ -1,5 +1,8 @@
1
+ import { RadioId } from '../branded-types/radio-id.js';
2
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
3
+
1
4
  export interface Radio {
2
- id: string;
5
+ id: RadioId;
3
6
  name: string;
4
- modelId: string;
7
+ model: RadioModelId;
5
8
  }
@@ -1,5 +1,7 @@
1
+ import { RadioModelId } from '../branded-types/radio-model-id.js';
2
+
1
3
  export interface RadioSchema {
2
- modelId: string;
4
+ model: RadioModelId;
3
5
  settingsSchema: any;
4
6
  channelSchema: any;
5
7
  }
package/src/radio/tone.ts CHANGED
@@ -1,9 +1,12 @@
1
+ import { CTCSS } from './ctcss.js';
2
+ import { DCS } from './dcs.js';
3
+
1
4
  export enum RadioToneType {
2
5
  CTCSS,
3
6
  DCS,
4
7
  }
5
8
 
6
9
  export interface RadioTone {
7
- tone: number;
10
+ tone: CTCSS | DCS;
8
11
  type: RadioToneType;
9
12
  }
@@ -1,13 +1,17 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+ import { LicenseClassId } from '../branded-types/license-class-id.js';
3
+ import { SpectrumBandId } from '../branded-types/spectrum-band-id.js';
4
+ import { Wavelength } from '../branded-types/wavelength.js';
1
5
  import { SpectrumChannel } from './channel.js';
2
6
 
3
7
  export interface SpectrumBand {
4
- id?: string;
8
+ id: SpectrumBandId;
5
9
  name: string;
6
- wavelength: number;
7
- lowerFrequency: number;
8
- upperFrequency: number;
10
+ wavelength: Wavelength;
11
+ lowerFrequency: Frequency;
12
+ upperFrequency: Frequency;
9
13
  frequencyDisplayBaseMultiplier: number;
10
14
  frequencyDisplayNumberDecimals: number;
11
- privilegeIds: string[];
15
+ privileges: LicenseClassId[];
12
16
  channels?: SpectrumChannel[];
13
17
  }
@@ -1,4 +1,6 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+
1
3
  export interface SpectrumChannel {
2
4
  name: string;
3
- frequency: number;
5
+ frequency: Frequency;
4
6
  }
@@ -1,4 +1,6 @@
1
+ import { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';
2
+
1
3
  export interface SpectrumMode {
2
- id?: string;
4
+ id: SpectrumModeId;
3
5
  name: string;
4
6
  }
@@ -1,8 +1,14 @@
1
+ import { Frequency } from '../branded-types/frequency.js';
2
+ import { LicenseClassId } from '../branded-types/license-class-id.js';
3
+ import { SpectrumBandId } from '../branded-types/spectrum-band-id.js';
4
+ import { SpectrumModeId } from '../branded-types/spectrum-mode-id.js';
5
+ import { SpectrumPrivilegeId } from '../branded-types/spectrum-privlege-id.js';
6
+
1
7
  export interface SpectrumPrivilege {
2
- id?: string;
3
- licenseClassId: string;
4
- modeId: string;
5
- bandId: string;
6
- lowerFrequency: string;
7
- upperFrequency: string;
8
+ id: SpectrumPrivilegeId;
9
+ licenseClassId: LicenseClassId;
10
+ mode: SpectrumModeId;
11
+ band: SpectrumBandId;
12
+ lowerFrequency: Frequency;
13
+ upperFrequency: Frequency;
8
14
  }
package/src/brand.ts DELETED
@@ -1,3 +0,0 @@
1
- declare const brand: unique symbol;
2
-
3
- export type Brand<T, TBrand extends string> = T & { [brand]: TBrand };