@robdobsn/raftjs 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/.editorconfig +14 -0
  2. package/.gitattributes +11 -0
  3. package/.nvmrc +1 -0
  4. package/LICENSE +22 -0
  5. package/README.md +11 -0
  6. package/TODO.md +1 -0
  7. package/dist/RaftAttributeHandler.d.ts +12 -0
  8. package/dist/RaftAttributeHandler.js +241 -0
  9. package/dist/RaftAttributeHandler.js.map +1 -0
  10. package/dist/RaftChannel.d.ts +18 -0
  11. package/dist/RaftChannel.js +12 -0
  12. package/dist/RaftChannel.js.map +1 -0
  13. package/dist/RaftChannelWebBLE.d.ts +38 -0
  14. package/dist/RaftChannelWebBLE.js +274 -0
  15. package/dist/RaftChannelWebBLE.js.map +1 -0
  16. package/dist/RaftChannelWebSerial.d.ts +37 -0
  17. package/dist/RaftChannelWebSerial.js +319 -0
  18. package/dist/RaftChannelWebSerial.js.map +1 -0
  19. package/dist/RaftChannelWebSocket.d.ts +28 -0
  20. package/dist/RaftChannelWebSocket.js +197 -0
  21. package/dist/RaftChannelWebSocket.js.map +1 -0
  22. package/dist/RaftCommsStats.d.ts +39 -0
  23. package/dist/RaftCommsStats.js +128 -0
  24. package/dist/RaftCommsStats.js.map +1 -0
  25. package/dist/RaftConnEvents.d.ts +31 -0
  26. package/dist/RaftConnEvents.js +44 -0
  27. package/dist/RaftConnEvents.js.map +1 -0
  28. package/dist/RaftConnector.d.ts +242 -0
  29. package/dist/RaftConnector.js +613 -0
  30. package/dist/RaftConnector.js.map +1 -0
  31. package/dist/RaftCustomAttrHandler.d.ts +4 -0
  32. package/dist/RaftCustomAttrHandler.js +50 -0
  33. package/dist/RaftCustomAttrHandler.js.map +1 -0
  34. package/dist/RaftDeviceInfo.d.ts +64 -0
  35. package/dist/RaftDeviceInfo.js +36 -0
  36. package/dist/RaftDeviceInfo.js.map +1 -0
  37. package/dist/RaftDeviceManager.d.ts +37 -0
  38. package/dist/RaftDeviceManager.js +450 -0
  39. package/dist/RaftDeviceManager.js.map +1 -0
  40. package/dist/RaftDeviceMsg.d.ts +9 -0
  41. package/dist/RaftDeviceMsg.js +11 -0
  42. package/dist/RaftDeviceMsg.js.map +1 -0
  43. package/dist/RaftDeviceStates.d.ts +33 -0
  44. package/dist/RaftDeviceStates.js +60 -0
  45. package/dist/RaftDeviceStates.js.map +1 -0
  46. package/dist/RaftFileHandler.d.ts +52 -0
  47. package/dist/RaftFileHandler.js +502 -0
  48. package/dist/RaftFileHandler.js.map +1 -0
  49. package/dist/RaftLog.d.ts +22 -0
  50. package/dist/RaftLog.js +63 -0
  51. package/dist/RaftLog.js.map +1 -0
  52. package/dist/RaftMiniHDLC.d.ts +18 -0
  53. package/dist/RaftMiniHDLC.js +383 -0
  54. package/dist/RaftMiniHDLC.js.map +1 -0
  55. package/dist/RaftMsgHandler.d.ts +57 -0
  56. package/dist/RaftMsgHandler.js +480 -0
  57. package/dist/RaftMsgHandler.js.map +1 -0
  58. package/dist/RaftMsgTrackInfo.d.ts +17 -0
  59. package/dist/RaftMsgTrackInfo.js +42 -0
  60. package/dist/RaftMsgTrackInfo.js.map +1 -0
  61. package/dist/RaftProtocolDefs.d.ts +30 -0
  62. package/dist/RaftProtocolDefs.js +48 -0
  63. package/dist/RaftProtocolDefs.js.map +1 -0
  64. package/dist/RaftStreamHandler.d.ts +38 -0
  65. package/dist/RaftStreamHandler.js +257 -0
  66. package/dist/RaftStreamHandler.js.map +1 -0
  67. package/dist/RaftSystemType.d.ts +21 -0
  68. package/dist/RaftSystemType.js +3 -0
  69. package/dist/RaftSystemType.js.map +1 -0
  70. package/dist/RaftSystemUtils.d.ts +136 -0
  71. package/dist/RaftSystemUtils.js +410 -0
  72. package/dist/RaftSystemUtils.js.map +1 -0
  73. package/dist/RaftTypes.d.ts +184 -0
  74. package/dist/RaftTypes.js +157 -0
  75. package/dist/RaftTypes.js.map +1 -0
  76. package/dist/RaftUpdateEvents.d.ts +33 -0
  77. package/dist/RaftUpdateEvents.js +46 -0
  78. package/dist/RaftUpdateEvents.js.map +1 -0
  79. package/dist/RaftUpdateManager.d.ts +61 -0
  80. package/dist/RaftUpdateManager.js +618 -0
  81. package/dist/RaftUpdateManager.js.map +1 -0
  82. package/dist/RaftUtils.d.ts +125 -0
  83. package/dist/RaftUtils.js +454 -0
  84. package/dist/RaftUtils.js.map +1 -0
  85. package/dist/RaftWifiTypes.d.ts +23 -0
  86. package/dist/RaftWifiTypes.js +43 -0
  87. package/dist/RaftWifiTypes.js.map +1 -0
  88. package/dist/TestDataGen.d.ts +7 -0
  89. package/dist/TestDataGen.js +133 -0
  90. package/dist/TestDataGen.js.map +1 -0
  91. package/dist/main.d.ts +18 -0
  92. package/dist/main.js +42 -0
  93. package/dist/main.js.map +1 -0
  94. package/eslint.config.mjs +33 -0
  95. package/examples/dashboard/package.json +39 -0
  96. package/examples/dashboard/src/ConnManager.ts +86 -0
  97. package/examples/dashboard/src/Main.tsx +100 -0
  98. package/examples/dashboard/src/StatusScreen.tsx +72 -0
  99. package/examples/dashboard/src/SystemTypeCog/CogStateInfo.ts +144 -0
  100. package/examples/dashboard/src/SystemTypeCog/SystemTypeCog.ts +77 -0
  101. package/examples/dashboard/src/SystemTypeMarty/RICAddOn.ts +70 -0
  102. package/examples/dashboard/src/SystemTypeMarty/RICAddOnBase.ts +33 -0
  103. package/examples/dashboard/src/SystemTypeMarty/RICAddOnManager.ts +342 -0
  104. package/examples/dashboard/src/SystemTypeMarty/RICCommsStats.ts +170 -0
  105. package/examples/dashboard/src/SystemTypeMarty/RICHWElem.ts +123 -0
  106. package/examples/dashboard/src/SystemTypeMarty/RICLEDPatternChecker.ts +207 -0
  107. package/examples/dashboard/src/SystemTypeMarty/RICROSSerial.ts +464 -0
  108. package/examples/dashboard/src/SystemTypeMarty/RICServoFaultDetector.ts +146 -0
  109. package/examples/dashboard/src/SystemTypeMarty/RICStateInfo.ts +32 -0
  110. package/examples/dashboard/src/SystemTypeMarty/RICSystemUtils.ts +371 -0
  111. package/examples/dashboard/src/SystemTypeMarty/RICTypes.ts +20 -0
  112. package/examples/dashboard/src/SystemTypeMarty/SystemTypeMarty.ts +113 -0
  113. package/examples/dashboard/src/index.html +15 -0
  114. package/examples/dashboard/src/index.tsx +15 -0
  115. package/examples/dashboard/src/styles.css +122 -0
  116. package/examples/dashboard/tsconfig.json +18 -0
  117. package/jest.config.js +11 -0
  118. package/package.json +50 -0
  119. package/src/RaftAttributeHandler.ts +289 -0
  120. package/src/RaftChannel.ts +30 -0
  121. package/src/RaftChannelWebBLE.ts +342 -0
  122. package/src/RaftChannelWebSerial.ts +408 -0
  123. package/src/RaftChannelWebSocket.ts +245 -0
  124. package/src/RaftCommsStats.ts +142 -0
  125. package/src/RaftConnEvents.ts +46 -0
  126. package/src/RaftConnector.ts +745 -0
  127. package/src/RaftCustomAttrHandler.ts +54 -0
  128. package/src/RaftDeviceInfo.ts +104 -0
  129. package/src/RaftDeviceManager.ts +542 -0
  130. package/src/RaftDeviceMsg.ts +20 -0
  131. package/src/RaftDeviceStates.ts +89 -0
  132. package/src/RaftFileHandler.ts +668 -0
  133. package/src/RaftLog.ts +70 -0
  134. package/src/RaftMiniHDLC.ts +396 -0
  135. package/src/RaftMsgHandler.ts +778 -0
  136. package/src/RaftMsgTrackInfo.ts +51 -0
  137. package/src/RaftProtocolDefs.ts +46 -0
  138. package/src/RaftStreamHandler.ts +328 -0
  139. package/src/RaftSystemType.ts +25 -0
  140. package/src/RaftSystemUtils.ts +487 -0
  141. package/src/RaftTypes.ts +250 -0
  142. package/src/RaftUpdateEvents.ts +48 -0
  143. package/src/RaftUpdateManager.ts +778 -0
  144. package/src/RaftUtils.ts +484 -0
  145. package/src/RaftWifiTypes.ts +36 -0
  146. package/src/TestDataGen.ts +157 -0
  147. package/src/main.ts +28 -0
  148. package/testdata/TestDeviceTypeRecs.json +492 -0
  149. package/tsconfig.json +27 -0
@@ -0,0 +1,125 @@
1
+ export default class RaftUtils {
2
+ static _isEndianSet: boolean;
3
+ static _isLittleEndian: boolean;
4
+ /**
5
+ *
6
+ * Add a string to a Uint8Array buffer
7
+ *
8
+ * @param buffer - buffer to add to
9
+ * @param strToAdd - string to be added
10
+ * @param startPos - start position in buffer (i.e. offset to place string at)
11
+ */
12
+ static addStringToBuffer(buffer: Uint8Array, strToAdd: string, startPos: number): void;
13
+ /**
14
+ *
15
+ * Get a string from a Uint8Array buffer
16
+ *
17
+ * @param buffer - buffer to get from
18
+ * @param startPos - start position in buffer (i.e. offset to start of string at)
19
+ * @param strLen - length of string to get
20
+ * @returns strGot - string got from buffer
21
+ */
22
+ static getStringFromBuffer(buffer: Uint8Array, startPos: number, strLen: number): string;
23
+ /**
24
+ *
25
+ * Debug code to format a Uint8Array to string for logging
26
+ *
27
+ * @param buffer - Uint8Array to be converted to hex string
28
+ */
29
+ static bufferToHex(buffer: Uint8Array | null): string;
30
+ /**
31
+ *
32
+ * Extract a big-endian float from a uint8array
33
+ *
34
+ * @param buf - Uint8Array containing float
35
+ * @returns float
36
+ */
37
+ static getBEFloatFromBuf(buf: Uint8Array): number;
38
+ /**
39
+ * Extract a big-endian uint64 from a uint8array
40
+ *
41
+ * @param buf - Uint8Array containing uint64
42
+ * @param pos - position (offset in buf) to get from
43
+ * @returns uint64
44
+ */
45
+ static getBEUint64FromBuf(buf: Uint8Array, bufPos: number): number;
46
+ /**
47
+ *
48
+ * Extract a big-endian uint32 from a uint8array
49
+ *
50
+ * @param buf - Uint8Array containing uint32
51
+ * @param pos - position (offset in buf) to get from
52
+ * @returns uint32
53
+ */
54
+ static getBEUint32FromBuf(buf: Uint8Array, bufPos: number): number;
55
+ /**
56
+ *
57
+ * Extract a big-endian int16 from a uint8array
58
+ *
59
+ * @param buf - Uint8Array containing int16
60
+ * @param pos - position (offset in buf) to get from
61
+ * @returns int16
62
+ */
63
+ static getBEInt16FromBuf(buf: Uint8Array, bufPos: number): number;
64
+ /**
65
+ *
66
+ * Extract a big-endian uint16 from a uint8array
67
+ *
68
+ * @param buf - Uint8Array containing uint16
69
+ * @param pos - position (offset in buf) to get from
70
+ * @returns int16
71
+ */
72
+ static getBEUint16FromBuf(buf: Uint8Array, bufPos: number): number;
73
+ /**
74
+ *
75
+ * Extract a big-endian uint8 from a uint8array
76
+ *
77
+ * @param buf - Uint8Array containing uint8
78
+ * @param pos - position (offset in buf) to get from
79
+ * @returns int16
80
+ */
81
+ static getBEUint8FromBuf(buf: Uint8Array, pos: number): number;
82
+ /**
83
+ *
84
+ * Extract a big-endian int8 from a uint8array
85
+ *
86
+ * @param buf - Uint8Array containing int8
87
+ * @param pos - position (offset in buf) to get from
88
+ * @returns int16
89
+ */
90
+ static getBEInt8FromBuf(buf: Uint8Array, pos: number): number;
91
+ static isLittleEndian(): boolean;
92
+ /**
93
+ * Implementation of atob() according to the HTML and Infra specs, except that
94
+ * instead of throwing INVALID_CHARACTER_ERR we return null.
95
+ *
96
+ * @param data - string containing base64 representation
97
+ * @returns Uint8Array
98
+ *
99
+ */
100
+ static atob(data: string): Uint8Array | null;
101
+ /**
102
+ * A lookup table for atob(), which converts an ASCII character to the
103
+ * corresponding six-bit number.
104
+ */
105
+ static atobLookup(chr: string): number | undefined;
106
+ /**
107
+ * btoa() as defined by the HTML and Infra specs, which mostly just references
108
+ * RFC 4648.
109
+ *
110
+ * @param data - Uint8Array
111
+ * @returns string containing base64 representation
112
+ *
113
+ */
114
+ static btoa(inBuf: Uint8Array): string;
115
+ /**
116
+ * Lookup table for btoa(), which converts a six-bit number into the
117
+ * corresponding ASCII character.
118
+ */
119
+ static btoaLookup(idx: number | undefined): string | undefined;
120
+ static buf2hex(buffer: Uint8Array): string;
121
+ static padStartFn(inStr: string, targetLength: number, padString: string): string;
122
+ static isVersionGreater(v1: string, v2: string): boolean;
123
+ static isVersionEqual(v1: string, v2: string): boolean;
124
+ static withTimeout(ms: number, promise: Promise<any>): Promise<any>;
125
+ }
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftUtils
5
+ // Part of RaftJS
6
+ //
7
+ // Rob Dobson & Chris Greening 2020-2024
8
+ // (C) 2020-2024 All rights reserved
9
+ //
10
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tslib_1 = require("tslib");
13
+ const RaftLog_1 = tslib_1.__importDefault(require("./RaftLog"));
14
+ const gt_1 = tslib_1.__importDefault(require("semver/functions/gt"));
15
+ const eq_1 = tslib_1.__importDefault(require("semver/functions/eq"));
16
+ class RaftUtils {
17
+ /**
18
+ *
19
+ * Add a string to a Uint8Array buffer
20
+ *
21
+ * @param buffer - buffer to add to
22
+ * @param strToAdd - string to be added
23
+ * @param startPos - start position in buffer (i.e. offset to place string at)
24
+ */
25
+ static addStringToBuffer(buffer, strToAdd, startPos) {
26
+ // Check valid
27
+ if (buffer.length < startPos + strToAdd.length + 1) {
28
+ RaftLog_1.default.error("addStringToBuffer buffer too short");
29
+ return;
30
+ }
31
+ let curPos = startPos;
32
+ for (let i = 0; i < strToAdd.length; i++) {
33
+ let charAt = strToAdd.charCodeAt(i);
34
+ if (charAt > 255)
35
+ charAt = 255;
36
+ buffer.set([charAt], curPos++);
37
+ }
38
+ buffer.set([0], buffer.length - 1);
39
+ }
40
+ /**
41
+ *
42
+ * Get a string from a Uint8Array buffer
43
+ *
44
+ * @param buffer - buffer to get from
45
+ * @param startPos - start position in buffer (i.e. offset to start of string at)
46
+ * @param strLen - length of string to get
47
+ * @returns strGot - string got from buffer
48
+ */
49
+ static getStringFromBuffer(buffer, startPos, strLen) {
50
+ // Check valid
51
+ if (buffer.length < startPos + strLen) {
52
+ strLen = buffer.length - startPos;
53
+ if (strLen <= 0)
54
+ return "";
55
+ }
56
+ let curPos = startPos;
57
+ let outStr = "";
58
+ for (let i = 0; i < strLen; i++) {
59
+ outStr += String.fromCharCode(buffer[curPos++]);
60
+ }
61
+ return outStr;
62
+ }
63
+ /**
64
+ *
65
+ * Debug code to format a Uint8Array to string for logging
66
+ *
67
+ * @param buffer - Uint8Array to be converted to hex string
68
+ */
69
+ static bufferToHex(buffer) {
70
+ if (buffer == null)
71
+ return "null";
72
+ return Array.from(new Uint8Array(buffer))
73
+ .map((b) => RaftUtils.padStartFn(b.toString(16), 2, "0"))
74
+ .join("");
75
+ }
76
+ /**
77
+ *
78
+ * Extract a big-endian float from a uint8array
79
+ *
80
+ * @param buf - Uint8Array containing float
81
+ * @returns float
82
+ */
83
+ static getBEFloatFromBuf(buf) {
84
+ const revBuf = new Uint8Array(4);
85
+ if (RaftUtils.isLittleEndian()) {
86
+ for (let i = 0; i < 4; i++)
87
+ revBuf[3 - i] = buf[i];
88
+ }
89
+ else {
90
+ for (let i = 0; i < 4; i++)
91
+ revBuf[i] = buf[i];
92
+ }
93
+ const floatVal = new Float32Array(revBuf.buffer);
94
+ // RaftUtils.debug('revFloat ' + RaftUtils.bufferToHex(revBuf) + floatVal[0]);
95
+ return floatVal[0];
96
+ }
97
+ /**
98
+ * Extract a big-endian uint64 from a uint8array
99
+ *
100
+ * @param buf - Uint8Array containing uint64
101
+ * @param pos - position (offset in buf) to get from
102
+ * @returns uint64
103
+ */
104
+ static getBEUint64FromBuf(buf, bufPos) {
105
+ if (RaftUtils.isLittleEndian())
106
+ return ((buf[bufPos] << 56) +
107
+ (buf[bufPos + 1] << 48) +
108
+ (buf[bufPos + 2] << 40) +
109
+ (buf[bufPos + 3] << 32) +
110
+ (buf[bufPos + 4] << 24) +
111
+ (buf[bufPos + 5] << 16) +
112
+ (buf[bufPos + 6] << 8) +
113
+ buf[bufPos + 7]);
114
+ return ((buf[bufPos + 7] << 56) +
115
+ (buf[bufPos + 6] << 48) +
116
+ (buf[bufPos + 5] << 40) +
117
+ (buf[bufPos + 4] << 32) +
118
+ (buf[bufPos + 3] << 24) +
119
+ (buf[bufPos + 2] << 16) +
120
+ (buf[bufPos + 1] << 8) +
121
+ buf[bufPos]);
122
+ }
123
+ /**
124
+ *
125
+ * Extract a big-endian uint32 from a uint8array
126
+ *
127
+ * @param buf - Uint8Array containing uint32
128
+ * @param pos - position (offset in buf) to get from
129
+ * @returns uint32
130
+ */
131
+ static getBEUint32FromBuf(buf, bufPos) {
132
+ if (RaftUtils.isLittleEndian())
133
+ return ((buf[bufPos] << 24) +
134
+ (buf[bufPos + 1] << 16) +
135
+ (buf[bufPos + 2] << 8) +
136
+ buf[bufPos + 3]);
137
+ return ((buf[bufPos + 3] << 24) +
138
+ (buf[bufPos + 2] << 16) +
139
+ (buf[bufPos + 1] << 8) +
140
+ buf[bufPos]);
141
+ }
142
+ /**
143
+ *
144
+ * Extract a big-endian int16 from a uint8array
145
+ *
146
+ * @param buf - Uint8Array containing int16
147
+ * @param pos - position (offset in buf) to get from
148
+ * @returns int16
149
+ */
150
+ static getBEInt16FromBuf(buf, bufPos) {
151
+ if (RaftUtils.isLittleEndian()) {
152
+ const val = buf[bufPos] * 256 + buf[bufPos + 1];
153
+ return val > 32767 ? val - 65536 : val;
154
+ }
155
+ const val = buf[bufPos + 1] * 256 + buf[bufPos];
156
+ return val > 32767 ? val - 65536 : val;
157
+ }
158
+ /**
159
+ *
160
+ * Extract a big-endian uint16 from a uint8array
161
+ *
162
+ * @param buf - Uint8Array containing uint16
163
+ * @param pos - position (offset in buf) to get from
164
+ * @returns int16
165
+ */
166
+ static getBEUint16FromBuf(buf, bufPos) {
167
+ if (RaftUtils.isLittleEndian())
168
+ return buf[bufPos] * 256 + buf[bufPos + 1];
169
+ return buf[bufPos + 1] * 256 + buf[bufPos];
170
+ }
171
+ /**
172
+ *
173
+ * Extract a big-endian uint8 from a uint8array
174
+ *
175
+ * @param buf - Uint8Array containing uint8
176
+ * @param pos - position (offset in buf) to get from
177
+ * @returns int16
178
+ */
179
+ static getBEUint8FromBuf(buf, pos) {
180
+ return buf[pos];
181
+ }
182
+ /**
183
+ *
184
+ * Extract a big-endian int8 from a uint8array
185
+ *
186
+ * @param buf - Uint8Array containing int8
187
+ * @param pos - position (offset in buf) to get from
188
+ * @returns int16
189
+ */
190
+ static getBEInt8FromBuf(buf, pos) {
191
+ return buf[pos] > 127 ? buf[pos] - 256 : buf[pos];
192
+ }
193
+ static isLittleEndian() {
194
+ // If already known just return
195
+ if (this._isEndianSet)
196
+ return this._isLittleEndian;
197
+ // Figure out endian-ness
198
+ const a = new Uint32Array([0x12345678]);
199
+ const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
200
+ this._isEndianSet = true;
201
+ this._isLittleEndian = b[0] != 0x12;
202
+ return this._isLittleEndian;
203
+ // RaftUtils.debug("bigendian " + BigEndian);
204
+ // let buf = new ArrayBuffer(2);
205
+ // let shView = new Uint16Array(buf);
206
+ // buf[0] = 1;
207
+ // buf[1] = 0;
208
+ // RaftUtils.debug("Resulting short " + shView[0]);
209
+ // return shView[0] == 1;
210
+ }
211
+ // The following code from https://github.com/jsdom/abab
212
+ /**
213
+ * Implementation of atob() according to the HTML and Infra specs, except that
214
+ * instead of throwing INVALID_CHARACTER_ERR we return null.
215
+ *
216
+ * @param data - string containing base64 representation
217
+ * @returns Uint8Array
218
+ *
219
+ */
220
+ static atob(data) {
221
+ // Web IDL requires DOMStrings to just be converted using ECMAScript
222
+ // ToString, which in our case amounts to using a template literal.
223
+ data = `${data}`;
224
+ // "Remove all ASCII whitespace from data."
225
+ data = data.replace(/[ \t\n\f\r]/g, "");
226
+ // "If data's length divides by 4 leaving no remainder, then: if data ends
227
+ // with one or two U+003D (=) code points, then remove them from data."
228
+ if (data.length % 4 === 0) {
229
+ data = data.replace(/==?$/, "");
230
+ }
231
+ // "If data's length divides by 4 leaving a remainder of 1, then return
232
+ // failure."
233
+ //
234
+ // "If data contains a code point that is not one of
235
+ //
236
+ // U+002B (+)
237
+ // U+002F (/)
238
+ // ASCII alphanumeric
239
+ //
240
+ // then return failure."
241
+ if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) {
242
+ return null;
243
+ }
244
+ // "Let output be an empty byte sequence."
245
+ const output = new Uint8Array((data.length * 3) / 4 + 1);
246
+ // "Let buffer be an empty buffer that can have bits appended to it."
247
+ //
248
+ // We append bits via left-shift and or. accumulatedBits is used to track
249
+ // when we've gotten to 24 bits.
250
+ let buffer = 0;
251
+ let accumulatedBits = 0;
252
+ // "Let position be a position variable for data, initially pointing at the
253
+ // start of data."
254
+ //
255
+ // "While position does not point past the end of data:"
256
+ let bytePos = 0;
257
+ for (let i = 0; i < data.length; i++) {
258
+ // "Find the code point pointed to by position in the second column of
259
+ // Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in
260
+ // the first cell of the same row.
261
+ //
262
+ // "Append to buffer the six bits corresponding to n, most significant bit
263
+ // first."
264
+ //
265
+ // atobLookup() implements the table from RFC 4648.
266
+ buffer <<= 6;
267
+ const atobVal = RaftUtils.atobLookup(data[i]);
268
+ if (atobVal !== undefined) {
269
+ buffer |= atobVal;
270
+ }
271
+ accumulatedBits += 6;
272
+ // "If buffer has accumulated 24 bits, interpret them as three 8-bit
273
+ // big-endian numbers. Append three bytes with values equal to those
274
+ // numbers to output, in the same order, and then empty buffer."
275
+ if (accumulatedBits === 24) {
276
+ output[bytePos++] = (buffer & 0xff0000) >> 16;
277
+ output[bytePos++] = (buffer & 0xff00) >> 8;
278
+ output[bytePos++] = buffer & 0xff;
279
+ buffer = accumulatedBits = 0;
280
+ }
281
+ // "Advance position by 1."
282
+ }
283
+ // "If buffer is not empty, it contains either 12 or 18 bits. If it contains
284
+ // 12 bits, then discard the last four and interpret the remaining eight as
285
+ // an 8-bit big-endian number. If it contains 18 bits, then discard the last
286
+ // two and interpret the remaining 16 as two 8-bit big-endian numbers. Append
287
+ // the one or two bytes with values equal to those one or two numbers to
288
+ // output, in the same order."
289
+ if (accumulatedBits === 12) {
290
+ buffer >>= 4;
291
+ output[bytePos++] = buffer & 0xff;
292
+ }
293
+ else if (accumulatedBits === 18) {
294
+ buffer >>= 2;
295
+ output[bytePos++] = (buffer & 0xff00) >> 8;
296
+ output[bytePos++] = buffer & 0xff;
297
+ }
298
+ // "Return output."
299
+ return output.slice(0, bytePos);
300
+ }
301
+ /**
302
+ * A lookup table for atob(), which converts an ASCII character to the
303
+ * corresponding six-bit number.
304
+ */
305
+ static atobLookup(chr) {
306
+ if (/[A-Z]/.test(chr)) {
307
+ return chr.charCodeAt(0) - "A".charCodeAt(0);
308
+ }
309
+ if (/[a-z]/.test(chr)) {
310
+ return chr.charCodeAt(0) - "a".charCodeAt(0) + 26;
311
+ }
312
+ if (/[0-9]/.test(chr)) {
313
+ return chr.charCodeAt(0) - "0".charCodeAt(0) + 52;
314
+ }
315
+ if (chr === "+") {
316
+ return 62;
317
+ }
318
+ if (chr === "/") {
319
+ return 63;
320
+ }
321
+ // Throw exception; should not be hit in tests
322
+ return undefined;
323
+ }
324
+ /**
325
+ * btoa() as defined by the HTML and Infra specs, which mostly just references
326
+ * RFC 4648.
327
+ *
328
+ * @param data - Uint8Array
329
+ * @returns string containing base64 representation
330
+ *
331
+ */
332
+ static btoa(inBuf) {
333
+ let i;
334
+ // String conversion as required by Web IDL.
335
+ // s = `${s}`;
336
+ // "The btoa() method must throw an "InvalidCharacterError" DOMException if
337
+ // data contains any character whose code point is greater than U+00FF."
338
+ // for (i = 0; i < s.length; i++) {
339
+ // if (s.charCodeAt(i) > 255) {
340
+ // return null;
341
+ // }
342
+ // }
343
+ let out = "";
344
+ for (i = 0; i < inBuf.length; i += 3) {
345
+ const groupsOfSix = [
346
+ undefined,
347
+ undefined,
348
+ undefined,
349
+ undefined,
350
+ ];
351
+ groupsOfSix[0] = inBuf[i] >> 2;
352
+ groupsOfSix[1] = (inBuf[i] & 0x03) << 4;
353
+ if (inBuf.length > i + 1) {
354
+ groupsOfSix[1] |= inBuf[i + 1] >> 4;
355
+ groupsOfSix[2] = (inBuf[i + 1] & 0x0f) << 2;
356
+ if (inBuf.length > i + 2) {
357
+ groupsOfSix[2] |= inBuf[i + 2] >> 6;
358
+ groupsOfSix[3] = inBuf[i + 2] & 0x3f;
359
+ }
360
+ }
361
+ for (let j = 0; j < groupsOfSix.length; j++) {
362
+ if (typeof groupsOfSix[j] === "undefined") {
363
+ out += "=";
364
+ }
365
+ else {
366
+ out += this.btoaLookup(groupsOfSix[j]);
367
+ }
368
+ }
369
+ }
370
+ return out;
371
+ }
372
+ /**
373
+ * Lookup table for btoa(), which converts a six-bit number into the
374
+ * corresponding ASCII character.
375
+ */
376
+ static btoaLookup(idx) {
377
+ if (idx === undefined) {
378
+ return undefined;
379
+ }
380
+ if (idx < 26) {
381
+ return String.fromCharCode(idx + "A".charCodeAt(0));
382
+ }
383
+ if (idx < 52) {
384
+ return String.fromCharCode(idx - 26 + "a".charCodeAt(0));
385
+ }
386
+ if (idx < 62) {
387
+ return String.fromCharCode(idx - 52 + "0".charCodeAt(0));
388
+ }
389
+ if (idx === 62) {
390
+ return "+";
391
+ }
392
+ if (idx === 63) {
393
+ return "/";
394
+ }
395
+ // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the tests.
396
+ return undefined;
397
+ }
398
+ static buf2hex(buffer) {
399
+ return Array.prototype.map
400
+ .call(buffer, (x) => ("00" + x.toString(16)).slice(-2))
401
+ .join("");
402
+ }
403
+ static padStartFn(inStr, targetLength, padString) {
404
+ targetLength = targetLength >> 0; //truncate if number or convert non-number to 0;
405
+ padString = String(typeof padString !== "undefined" ? padString : " ");
406
+ if (inStr.length > targetLength) {
407
+ return String(inStr);
408
+ }
409
+ else {
410
+ targetLength = targetLength - inStr.length;
411
+ if (targetLength > padString.length) {
412
+ padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed
413
+ }
414
+ return padString.slice(0, targetLength) + String(inStr);
415
+ }
416
+ }
417
+ static isVersionGreater(v1, v2) {
418
+ try {
419
+ return (0, gt_1.default)(v1, v2);
420
+ }
421
+ catch (e) {
422
+ // one of the two versions is invalid, return true
423
+ RaftLog_1.default.error(`isVersionGreater - invalid version ${v1} or ${v2} ${e}`);
424
+ return true;
425
+ }
426
+ }
427
+ static isVersionEqual(v1, v2) {
428
+ try {
429
+ return (0, eq_1.default)(v1, v2);
430
+ }
431
+ catch (e) {
432
+ // one of the two versions is invalid, return false
433
+ RaftLog_1.default.error(`isVersionEqual - invalid version ${v1} or ${v2} ${e}`);
434
+ return false;
435
+ }
436
+ }
437
+ static withTimeout(ms, promise) {
438
+ let id;
439
+ const timeout = new Promise((_, reject) => {
440
+ id = setTimeout(() => {
441
+ clearTimeout(id);
442
+ reject('Timed out in ' + ms + 'ms.');
443
+ }, ms);
444
+ });
445
+ return Promise.race([
446
+ promise,
447
+ timeout
448
+ ]);
449
+ }
450
+ }
451
+ RaftUtils._isEndianSet = false;
452
+ RaftUtils._isLittleEndian = false;
453
+ exports.default = RaftUtils;
454
+ //# sourceMappingURL=RaftUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftUtils.js","sourceRoot":"","sources":["../src/RaftUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare enum RaftWifiConnState {
2
+ WIFI_CONN_NONE = 0,
3
+ WIFI_CONN_CONNECTED = 1
4
+ }
5
+ export declare class RaftWifiConnStatus {
6
+ connState: RaftWifiConnState;
7
+ isPaused: boolean;
8
+ ipAddress: string;
9
+ hostname: string;
10
+ ssid: string;
11
+ bssid: string;
12
+ validMs: number;
13
+ }
14
+ export declare class RaftSysModInfoWiFi {
15
+ rslt: string;
16
+ isConn: number;
17
+ isPaused: number;
18
+ connState: string;
19
+ SSID: string;
20
+ IP: string;
21
+ Hostname: string;
22
+ WiFiMAC: string;
23
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3
+ //
4
+ // RaftWifiTypes
5
+ // Part of RaftJS
6
+ //
7
+ // Rob Dobson & Chris Greening 2020-2024
8
+ // (C) 2020-2024 All rights reserved
9
+ //
10
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RaftSysModInfoWiFi = exports.RaftWifiConnStatus = exports.RaftWifiConnState = void 0;
13
+ var RaftWifiConnState;
14
+ (function (RaftWifiConnState) {
15
+ RaftWifiConnState[RaftWifiConnState["WIFI_CONN_NONE"] = 0] = "WIFI_CONN_NONE";
16
+ RaftWifiConnState[RaftWifiConnState["WIFI_CONN_CONNECTED"] = 1] = "WIFI_CONN_CONNECTED";
17
+ })(RaftWifiConnState || (exports.RaftWifiConnState = RaftWifiConnState = {}));
18
+ class RaftWifiConnStatus {
19
+ constructor() {
20
+ this.connState = RaftWifiConnState.WIFI_CONN_NONE;
21
+ this.isPaused = false;
22
+ this.ipAddress = '';
23
+ this.hostname = '';
24
+ this.ssid = '';
25
+ this.bssid = '';
26
+ this.validMs = 0;
27
+ }
28
+ }
29
+ exports.RaftWifiConnStatus = RaftWifiConnStatus;
30
+ class RaftSysModInfoWiFi {
31
+ constructor() {
32
+ this.rslt = 'ok';
33
+ this.isConn = 0;
34
+ this.isPaused = 0;
35
+ this.connState = 'None';
36
+ this.SSID = '';
37
+ this.IP = '';
38
+ this.Hostname = '';
39
+ this.WiFiMAC = '';
40
+ }
41
+ }
42
+ exports.RaftSysModInfoWiFi = RaftSysModInfoWiFi;
43
+ //# sourceMappingURL=RaftWifiTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaftWifiTypes.js","sourceRoot":"","sources":["../src/RaftWifiTypes.ts"],"names":[],"mappings":";AAAA,iHAAiH;AACjH,EAAE;AACF,gBAAgB;AAChB,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,oCAAoC;AACpC,EAAE;AACF,iHAAiH;;;AAEjH,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,6EAAc,CAAA;IACd,uFAAmB,CAAA;AACrB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B;AAED,MAAa,kBAAkB;IAA/B;QACE,cAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC;QAC7C,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,EAAE,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;QACd,SAAI,GAAG,EAAE,CAAC;QACV,UAAK,GAAG,EAAE,CAAC;QACX,YAAO,GAAG,CAAC,CAAC;IACd,CAAC;CAAA;AARD,gDAQC;AAED,MAAa,kBAAkB;IAA/B;QACE,SAAI,GAAG,IAAI,CAAC;QACZ,WAAM,GAAG,CAAC,CAAC;QACX,aAAQ,GAAG,CAAC,CAAC;QACb,cAAS,GAAG,MAAM,CAAC;QACnB,SAAI,GAAG,EAAE,CAAC;QACV,OAAE,GAAG,EAAE,CAAC;QACR,aAAQ,GAAG,EAAE,CAAC;QACd,YAAO,GAAG,EAAE,CAAC;IACf,CAAC;CAAA;AATD,gDASC"}
@@ -0,0 +1,7 @@
1
+ declare class TestDataGen {
2
+ start(handleDeviceMsgJson: (msg: string) => void): void;
3
+ private toHex;
4
+ private randInt;
5
+ private onlineFrom;
6
+ }
7
+ export default TestDataGen;