wsjtx-lib 1.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.
- package/LICENSE +20 -0
- package/README.md +390 -0
- package/dist/src/index.d.ts +180 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +402 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types.d.ts +251 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +100 -0
- package/dist/src/types.js.map +1 -0
- package/dist/test/wsjtx.basic.test.d.ts +7 -0
- package/dist/test/wsjtx.basic.test.d.ts.map +1 -0
- package/dist/test/wsjtx.basic.test.js +220 -0
- package/dist/test/wsjtx.basic.test.js.map +1 -0
- package/dist/test/wsjtx.test.d.ts +12 -0
- package/dist/test/wsjtx.test.d.ts.map +1 -0
- package/dist/test/wsjtx.test.js +618 -0
- package/dist/test/wsjtx.test.js.map +1 -0
- package/package.json +88 -0
- package/prebuilds/darwin-arm64/build-info.json +10 -0
- package/prebuilds/darwin-arm64/libfftw3f.3.dylib +0 -0
- package/prebuilds/darwin-arm64/libfftw3f_threads.3.dylib +0 -0
- package/prebuilds/darwin-arm64/libgfortran.5.dylib +0 -0
- package/prebuilds/darwin-arm64/wsjtx_lib_nodejs.node +0 -0
- package/prebuilds/linux-x64/build-info.json +10 -0
- package/prebuilds/linux-x64/libfftw3f.so.3 +0 -0
- package/prebuilds/linux-x64/libfftw3f_threads.so.3 +0 -0
- package/prebuilds/linux-x64/libgcc_s.so.1 +0 -0
- package/prebuilds/linux-x64/libgfortran.so.5 +0 -0
- package/prebuilds/linux-x64/wsjtx_lib_nodejs.node +0 -0
- package/prebuilds/package-info.json +25 -0
- package/prebuilds/win32-x64/build-info.json +14 -0
- package/prebuilds/win32-x64/libfftw3f-3.dll +0 -0
- package/prebuilds/win32-x64/libfftw3f_threads-3.dll +0 -0
- package/prebuilds/win32-x64/libgcc_s_seh-1.dll +0 -0
- package/prebuilds/win32-x64/libgfortran-5.dll +0 -0
- package/prebuilds/win32-x64/libstdc++-6.dll +0 -0
- package/prebuilds/win32-x64/libwinpthread-1.dll +0 -0
- package/prebuilds/win32-x64/wsjtx_lib_nodejs.node +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WSJTX Digital Radio Protocol Library for Node.js
|
|
3
|
+
*
|
|
4
|
+
* This library provides encoding and decoding capabilities for various
|
|
5
|
+
* digital amateur radio protocols including FT8, FT4, WSPR, and others.
|
|
6
|
+
*
|
|
7
|
+
* The library is a Node.js C++ extension that wraps the wsjtx_lib C library,
|
|
8
|
+
* providing high-performance digital signal processing capabilities with
|
|
9
|
+
* multi-platform support (Windows, macOS, Linux).
|
|
10
|
+
*
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
* @author WSJTX Development Team
|
|
13
|
+
* @license GPL-3.0
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Supported WSJTX digital radio modes
|
|
17
|
+
*
|
|
18
|
+
* Each mode has different characteristics in terms of symbol rate,
|
|
19
|
+
* bandwidth, transmission duration, and sensitivity.
|
|
20
|
+
*/
|
|
21
|
+
export var WSJTXMode;
|
|
22
|
+
(function (WSJTXMode) {
|
|
23
|
+
/**
|
|
24
|
+
* FT8 - 8-FSK modulation, 15-second transmissions
|
|
25
|
+
* - Sample rate: 48 kHz
|
|
26
|
+
* - Duration: 12.64 seconds
|
|
27
|
+
* - Bandwidth: ~50 Hz
|
|
28
|
+
* - Sensitivity: -24 dB
|
|
29
|
+
*/
|
|
30
|
+
WSJTXMode[WSJTXMode["FT8"] = 0] = "FT8";
|
|
31
|
+
/**
|
|
32
|
+
* FT4 - 4-FSK modulation, 6-second transmissions
|
|
33
|
+
* - Sample rate: 48 kHz
|
|
34
|
+
* - Duration: 6.0 seconds
|
|
35
|
+
* - Bandwidth: ~80 Hz
|
|
36
|
+
* - Sensitivity: -17 dB
|
|
37
|
+
*/
|
|
38
|
+
WSJTXMode[WSJTXMode["FT4"] = 1] = "FT4";
|
|
39
|
+
/**
|
|
40
|
+
* JT4 - Weak signal mode for microwave EME
|
|
41
|
+
* - Sample rate: 11.025 kHz
|
|
42
|
+
* - Duration: 47.1 seconds
|
|
43
|
+
* - Multiple bandwidth options
|
|
44
|
+
*/
|
|
45
|
+
WSJTXMode[WSJTXMode["JT4"] = 2] = "JT4";
|
|
46
|
+
/**
|
|
47
|
+
* JT65 - Popular EME and HF weak signal mode
|
|
48
|
+
* - Sample rate: 11.025 kHz
|
|
49
|
+
* - Duration: 46.8 seconds
|
|
50
|
+
* - Bandwidth: ~180 Hz
|
|
51
|
+
*/
|
|
52
|
+
WSJTXMode[WSJTXMode["JT65"] = 3] = "JT65";
|
|
53
|
+
/**
|
|
54
|
+
* JT9 - Low data rate, narrow bandwidth mode
|
|
55
|
+
* - Sample rate: 12 kHz
|
|
56
|
+
* - Duration: 49.0 seconds
|
|
57
|
+
* - Bandwidth: ~16 Hz
|
|
58
|
+
*/
|
|
59
|
+
WSJTXMode[WSJTXMode["JT9"] = 4] = "JT9";
|
|
60
|
+
/**
|
|
61
|
+
* FST4 - Flexible format for 15-900 second transmissions
|
|
62
|
+
* - Sample rate: 12 kHz
|
|
63
|
+
* - Variable duration (15s, 30s, 60s, 120s, 300s, 900s)
|
|
64
|
+
* - Ultra-weak signal capability
|
|
65
|
+
*/
|
|
66
|
+
WSJTXMode[WSJTXMode["FST4"] = 5] = "FST4";
|
|
67
|
+
/**
|
|
68
|
+
* Q65 - Optimized for EME on VHF and higher
|
|
69
|
+
* - Sample rate: 12 kHz
|
|
70
|
+
* - Duration: 60 seconds
|
|
71
|
+
* - Multiple bandwidth options
|
|
72
|
+
*/
|
|
73
|
+
WSJTXMode[WSJTXMode["Q65"] = 6] = "Q65";
|
|
74
|
+
/**
|
|
75
|
+
* FST4W - Weak signal beacons
|
|
76
|
+
* - Sample rate: 12 kHz
|
|
77
|
+
* - Duration: 120 seconds
|
|
78
|
+
* - Optimized for propagation studies
|
|
79
|
+
*/
|
|
80
|
+
WSJTXMode[WSJTXMode["FST4W"] = 7] = "FST4W";
|
|
81
|
+
/**
|
|
82
|
+
* WSPR - Weak Signal Propagation Reporter
|
|
83
|
+
* - Sample rate: 12 kHz
|
|
84
|
+
* - Duration: 110.6 seconds
|
|
85
|
+
* - 4-FSK modulation, very weak signal capability
|
|
86
|
+
*/
|
|
87
|
+
WSJTXMode[WSJTXMode["WSPR"] = 8] = "WSPR";
|
|
88
|
+
})(WSJTXMode || (WSJTXMode = {}));
|
|
89
|
+
/**
|
|
90
|
+
* Error thrown by WSJTX library operations
|
|
91
|
+
*/
|
|
92
|
+
export class WSJTXError extends Error {
|
|
93
|
+
code;
|
|
94
|
+
constructor(message, code) {
|
|
95
|
+
super(message);
|
|
96
|
+
this.code = code;
|
|
97
|
+
this.name = 'WSJTXError';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,SA0EX;AA1ED,WAAY,SAAS;IACjB;;;;;;OAMG;IACH,uCAAO,CAAA;IAEP;;;;;;OAMG;IACH,uCAAO,CAAA;IAEP;;;;;OAKG;IACH,uCAAO,CAAA;IAEP;;;;;OAKG;IACH,yCAAQ,CAAA;IAER;;;;;OAKG;IACH,uCAAO,CAAA;IAEP;;;;;OAKG;IACH,yCAAQ,CAAA;IAER;;;;;OAKG;IACH,uCAAO,CAAA;IAEP;;;;;OAKG;IACH,2CAAS,CAAA;IAET;;;;;OAKG;IACH,yCAAQ,CAAA;AACZ,CAAC,EA1EW,SAAS,KAAT,SAAS,QA0EpB;AAgHD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACG;IAApC,YAAY,OAAe,EAAS,IAAa;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAS;QAE7C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsjtx.basic.test.d.ts","sourceRoot":"","sources":["../../test/wsjtx.basic.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WSJTX Library Basic Test Suite
|
|
3
|
+
*
|
|
4
|
+
* Tests core functionalities suitable for CI.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
7
|
+
import assert from 'node:assert';
|
|
8
|
+
// Import WSJTX library and types
|
|
9
|
+
import { WSJTXLib, WSJTXMode, WSJTXError } from '../src/index.js';
|
|
10
|
+
describe('WSJTX Library Basic Tests', () => {
|
|
11
|
+
let lib;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
lib = new WSJTXLib({
|
|
14
|
+
maxThreads: 4,
|
|
15
|
+
debug: true
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
// Clean up resources if any were created by basic tests
|
|
20
|
+
});
|
|
21
|
+
describe('Basic Functionality Tests', () => {
|
|
22
|
+
it('should create library instance', () => {
|
|
23
|
+
assert.ok(lib instanceof WSJTXLib);
|
|
24
|
+
});
|
|
25
|
+
it('should support custom configuration', () => {
|
|
26
|
+
const customLib = new WSJTXLib({
|
|
27
|
+
maxThreads: 8,
|
|
28
|
+
debug: false
|
|
29
|
+
});
|
|
30
|
+
assert.ok(customLib instanceof WSJTXLib);
|
|
31
|
+
});
|
|
32
|
+
it('should return correct FT8 sample rate', () => {
|
|
33
|
+
const sampleRate = lib.getSampleRate(WSJTXMode.FT8);
|
|
34
|
+
assert.strictEqual(sampleRate, 48000);
|
|
35
|
+
});
|
|
36
|
+
it('should return correct FT8 transmission duration', () => {
|
|
37
|
+
const duration = lib.getTransmissionDuration(WSJTXMode.FT8);
|
|
38
|
+
assert.ok(Math.abs(duration - 12.64) < 0.1);
|
|
39
|
+
});
|
|
40
|
+
it('should correctly check encoding support', () => {
|
|
41
|
+
assert.strictEqual(lib.isEncodingSupported(WSJTXMode.FT8), true);
|
|
42
|
+
assert.strictEqual(lib.isDecodingSupported(WSJTXMode.FT8), true);
|
|
43
|
+
});
|
|
44
|
+
it('should return all mode capabilities', () => {
|
|
45
|
+
const capabilities = lib.getAllModeCapabilities();
|
|
46
|
+
assert.ok(capabilities.length > 0);
|
|
47
|
+
assert.ok('mode' in capabilities[0]);
|
|
48
|
+
assert.ok('encodingSupported' in capabilities[0]);
|
|
49
|
+
assert.ok('decodingSupported' in capabilities[0]);
|
|
50
|
+
assert.ok('sampleRate' in capabilities[0]);
|
|
51
|
+
assert.ok('duration' in capabilities[0]);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('Parameter Validation Tests', () => {
|
|
55
|
+
it('should validate mode parameter', async () => {
|
|
56
|
+
const audioData = new Float32Array(1000);
|
|
57
|
+
await assert.rejects(lib.decode(999, audioData, 1000), WSJTXError);
|
|
58
|
+
});
|
|
59
|
+
it('should validate frequency parameter', async () => {
|
|
60
|
+
const audioData = new Float32Array(1000);
|
|
61
|
+
await assert.rejects(lib.decode(WSJTXMode.FT8, audioData, -1000), WSJTXError);
|
|
62
|
+
});
|
|
63
|
+
it('should validate audio data parameter', async () => {
|
|
64
|
+
await assert.rejects(lib.decode(WSJTXMode.FT8, new Float32Array(0), 1000), WSJTXError);
|
|
65
|
+
});
|
|
66
|
+
it('should validate message parameter', async () => {
|
|
67
|
+
await assert.rejects(lib.encode(WSJTXMode.FT8, '', 1000), WSJTXError);
|
|
68
|
+
await assert.rejects(lib.encode(WSJTXMode.FT8, 'x'.repeat(30), 1000), WSJTXError);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('Message Queue Tests', () => {
|
|
72
|
+
it('should pull messages from queue', () => {
|
|
73
|
+
const messages = lib.pullMessages();
|
|
74
|
+
assert.ok(Array.isArray(messages));
|
|
75
|
+
});
|
|
76
|
+
it('should clear message queue', () => {
|
|
77
|
+
// Pull messages twice to ensure queue is cleared
|
|
78
|
+
lib.pullMessages();
|
|
79
|
+
const messages = lib.pullMessages();
|
|
80
|
+
assert.strictEqual(messages.length, 0);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('Audio Format Conversion Tests', () => {
|
|
84
|
+
it('should convert Float32Array to Int16Array', () => {
|
|
85
|
+
const floatData = new Float32Array([0.0, 0.5, -0.5, 1.0, -1.0]);
|
|
86
|
+
const intData = WSJTXLib.convertAudioFormat(floatData, 'int16');
|
|
87
|
+
assert.ok(intData instanceof Int16Array);
|
|
88
|
+
assert.strictEqual(intData.length, floatData.length);
|
|
89
|
+
assert.strictEqual(intData[0], 0);
|
|
90
|
+
assert.ok(Math.abs(intData[1] - 16384) < 10);
|
|
91
|
+
assert.ok(Math.abs(intData[2] + 16384) < 10);
|
|
92
|
+
assert.ok(Math.abs(intData[3] - 32767) < 10);
|
|
93
|
+
assert.ok(Math.abs(intData[4] + 32767) < 10);
|
|
94
|
+
});
|
|
95
|
+
it('should convert Int16Array to Float32Array', () => {
|
|
96
|
+
const intData = new Int16Array([0, 16384, -16384, 32767, -32767]);
|
|
97
|
+
const floatData = WSJTXLib.convertAudioFormat(intData, 'float32');
|
|
98
|
+
assert.ok(floatData instanceof Float32Array);
|
|
99
|
+
assert.strictEqual(floatData.length, intData.length);
|
|
100
|
+
assert.ok(Math.abs(floatData[0] - 0.0) < 0.001);
|
|
101
|
+
assert.ok(Math.abs(floatData[1] - 0.5) < 0.001);
|
|
102
|
+
assert.ok(Math.abs(floatData[2] + 0.5) < 0.001);
|
|
103
|
+
assert.ok(Math.abs(floatData[3] - 1.0) < 0.001);
|
|
104
|
+
assert.ok(Math.abs(floatData[4] + 1.0) < 0.001);
|
|
105
|
+
});
|
|
106
|
+
it('should handle edge cases in conversion', () => {
|
|
107
|
+
// Test empty arrays
|
|
108
|
+
const emptyFloat = new Float32Array(0);
|
|
109
|
+
const emptyInt = WSJTXLib.convertAudioFormat(emptyFloat, 'int16');
|
|
110
|
+
assert.strictEqual(emptyInt.length, 0);
|
|
111
|
+
const emptyInt16 = new Int16Array(0);
|
|
112
|
+
const emptyFloat32 = WSJTXLib.convertAudioFormat(emptyInt16, 'float32');
|
|
113
|
+
assert.strictEqual(emptyFloat32.length, 0);
|
|
114
|
+
});
|
|
115
|
+
it('should maintain precision in round-trip conversion', () => {
|
|
116
|
+
const originalData = new Float32Array(1000);
|
|
117
|
+
for (let i = 0; i < originalData.length; i++) {
|
|
118
|
+
originalData[i] = (Math.random() - 0.5) * 2; // Range -1 to 1
|
|
119
|
+
}
|
|
120
|
+
// Convert to Int16Array and back
|
|
121
|
+
const intData = WSJTXLib.convertAudioFormat(originalData, 'int16');
|
|
122
|
+
const convertedData = WSJTXLib.convertAudioFormat(intData, 'float32');
|
|
123
|
+
// Check precision
|
|
124
|
+
let maxError = 0;
|
|
125
|
+
for (let i = 0; i < originalData.length; i++) {
|
|
126
|
+
const error = Math.abs(originalData[i] - convertedData[i]);
|
|
127
|
+
maxError = Math.max(maxError, error);
|
|
128
|
+
}
|
|
129
|
+
// Should be very close (16-bit precision)
|
|
130
|
+
assert.ok(maxError < 0.001);
|
|
131
|
+
});
|
|
132
|
+
it('should handle invalid format parameter', () => {
|
|
133
|
+
const floatData = new Float32Array([0.5]);
|
|
134
|
+
assert.throws(() => {
|
|
135
|
+
WSJTXLib.convertAudioFormat(floatData, 'invalid');
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('TypeScript Type Safety Tests', () => {
|
|
140
|
+
it('should provide complete type support for basic types', () => {
|
|
141
|
+
const capabilities = lib.getAllModeCapabilities();
|
|
142
|
+
assert.ok(capabilities.length > 0);
|
|
143
|
+
capabilities.forEach((cap) => {
|
|
144
|
+
const modeName = WSJTXMode[cap.mode];
|
|
145
|
+
assert.strictEqual(typeof modeName, 'string');
|
|
146
|
+
assert.strictEqual(typeof cap.sampleRate, 'number');
|
|
147
|
+
assert.strictEqual(typeof cap.duration, 'number');
|
|
148
|
+
assert.strictEqual(typeof cap.encodingSupported, 'boolean');
|
|
149
|
+
assert.strictEqual(typeof cap.decodingSupported, 'boolean');
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
it('should provide type-safe message objects', () => {
|
|
153
|
+
const messages = lib.pullMessages();
|
|
154
|
+
messages.forEach((msg) => {
|
|
155
|
+
assert.strictEqual(typeof msg.text, 'string');
|
|
156
|
+
assert.strictEqual(typeof msg.snr, 'number');
|
|
157
|
+
assert.strictEqual(typeof msg.deltaTime, 'number');
|
|
158
|
+
assert.strictEqual(typeof msg.deltaFrequency, 'number');
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
it('should enforce enum constraints', () => {
|
|
162
|
+
const validMode = WSJTXMode.FT8;
|
|
163
|
+
assert.strictEqual(typeof validMode, 'number');
|
|
164
|
+
assert.ok(validMode >= 0);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('Error Handling Tests', () => {
|
|
168
|
+
it('should throw WSJTXError for invalid operations (non-encode/decode)', async () => {
|
|
169
|
+
// Example: Invalid mode in getSampleRate (if such validation existed or was more strict)
|
|
170
|
+
// For now, using existing validation tests that fit "basic" criteria.
|
|
171
|
+
try {
|
|
172
|
+
await lib.decode(999, new Float32Array(1000), 1000);
|
|
173
|
+
assert.fail('Should have thrown WSJTXError for invalid mode');
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
assert.ok(error instanceof WSJTXError);
|
|
177
|
+
assert.strictEqual(typeof error.message, 'string');
|
|
178
|
+
if (error instanceof WSJTXError) {
|
|
179
|
+
assert.strictEqual(typeof error.code, 'string');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
it('should provide meaningful error messages for basic errors', async () => {
|
|
184
|
+
try {
|
|
185
|
+
await lib.encode(WSJTXMode.FT8, '', 1000); // Empty message
|
|
186
|
+
assert.fail('Should have thrown WSJTXError for empty message');
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
assert.ok(error instanceof WSJTXError);
|
|
190
|
+
assert.ok(error.message.length > 0);
|
|
191
|
+
if (error instanceof WSJTXError && error.code) {
|
|
192
|
+
assert.ok(error.code.length > 0);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
it('should validate all error codes are strings for basic errors', async () => {
|
|
197
|
+
const testCases = [
|
|
198
|
+
() => lib.decode(999, new Float32Array(1000), 1000), // Invalid mode
|
|
199
|
+
() => lib.decode(WSJTXMode.FT8, new Float32Array(1000), -1000), // Invalid frequency
|
|
200
|
+
() => lib.decode(WSJTXMode.FT8, new Float32Array(0), 1000), // Invalid audio data
|
|
201
|
+
() => lib.encode(WSJTXMode.FT8, '', 1000), // Empty message
|
|
202
|
+
() => lib.encode(WSJTXMode.FT8, 'x'.repeat(50), 1000) // Message too long
|
|
203
|
+
];
|
|
204
|
+
for (const testCase of testCases) {
|
|
205
|
+
try {
|
|
206
|
+
await testCase();
|
|
207
|
+
assert.fail('Should have thrown WSJTXError');
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
assert.ok(error instanceof WSJTXError);
|
|
211
|
+
if (error instanceof WSJTXError && error.code) {
|
|
212
|
+
assert.strictEqual(typeof error.code, 'string');
|
|
213
|
+
assert.ok(error.code.length > 0);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
//# sourceMappingURL=wsjtx.basic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsjtx.basic.test.js","sourceRoot":"","sources":["../../test/wsjtx.basic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WSJTX Library Comprehensive Test Suite
|
|
3
|
+
*
|
|
4
|
+
* Integrated complete testing of all features, including:
|
|
5
|
+
* - Basic library functionality tests
|
|
6
|
+
* - FT8 WAV audio encoding/decoding tests
|
|
7
|
+
* - Audio format conversion tests
|
|
8
|
+
* - TypeScript type safety tests
|
|
9
|
+
* - Error handling tests
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=wsjtx.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsjtx.test.d.ts","sourceRoot":"","sources":["../../test/wsjtx.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|