@science-corporation/synapse 0.10.0 → 0.13.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/README.md +40 -18
- package/dist/api/api.d.ts +3186 -1788
- package/dist/api/api.js +9243 -6074
- package/dist/api/api.js.map +1 -1
- package/dist/api/proto.json +273 -77
- package/dist/api-science-device/api.d.ts +3 -0
- package/dist/api-science-device/api.d.ts.map +1 -0
- package/dist/api-science-device/api.js +3822 -0
- package/dist/api-science-device/api.js.map +1 -0
- package/dist/api-science-device/proto.json +258 -0
- package/dist/browser.d.ts +4 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +22 -0
- package/dist/browser.js.map +1 -0
- package/dist/config.d.ts +5 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -17
- package/dist/config.js.map +1 -1
- package/dist/demo.js +48 -125
- package/dist/demo.js.map +1 -1
- package/dist/device.d.ts +20 -8
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +66 -23
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/nodejs.d.ts +8 -0
- package/dist/nodejs.d.ts.map +1 -0
- package/dist/nodejs.js +32 -0
- package/dist/nodejs.js.map +1 -0
- package/dist/nodes/broadband_source.d.ts +11 -0
- package/dist/nodes/broadband_source.d.ts.map +1 -0
- package/dist/nodes/{optical_broadband.js → broadband_source.js} +9 -9
- package/dist/nodes/broadband_source.js.map +1 -0
- package/dist/nodes/disk_writer.d.ts +11 -0
- package/dist/nodes/disk_writer.d.ts.map +1 -0
- package/dist/nodes/{electrical_broadband.js → disk_writer.js} +9 -9
- package/dist/nodes/disk_writer.js.map +1 -0
- package/dist/nodes/index.d.ts +4 -2
- package/dist/nodes/index.d.ts.map +1 -1
- package/dist/nodes/index.js +7 -5
- package/dist/nodes/index.js.map +1 -1
- package/dist/nodes/spike_source.d.ts +11 -0
- package/dist/nodes/spike_source.d.ts.map +1 -0
- package/dist/nodes/spike_source.js +28 -0
- package/dist/nodes/spike_source.js.map +1 -0
- package/dist/nodes/stream_in.js +1 -1
- package/dist/nodes/stream_in.js.map +1 -1
- package/dist/nodes/stream_out.d.ts +2 -2
- package/dist/nodes/stream_out.d.ts.map +1 -1
- package/dist/nodes/stream_out.js +2 -2
- package/dist/nodes/stream_out.js.map +1 -1
- package/dist/science-device-api/api.d.ts +3 -0
- package/dist/science-device-api/api.d.ts.map +1 -0
- package/dist/science-device-api/api.js +3822 -0
- package/dist/science-device-api/api.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/client.d.ts +8 -1
- package/dist/utils/client.d.ts.map +1 -1
- package/dist/utils/client.js +30 -16
- package/dist/utils/client.js.map +1 -1
- package/dist/utils/device-management.d.ts +37 -0
- package/dist/utils/device-management.d.ts.map +1 -0
- package/dist/utils/device-management.js +126 -0
- package/dist/utils/device-management.js.map +1 -0
- package/dist/utils/discover.d.ts +3 -8
- package/dist/utils/discover.d.ts.map +1 -1
- package/dist/utils/discover.js +17 -32
- package/dist/utils/discover.js.map +1 -1
- package/dist/utils/enum.d.ts +1 -1
- package/dist/utils/enum.d.ts.map +1 -1
- package/dist/utils/enum.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ndtp.d.ts +40 -0
- package/dist/utils/ndtp.d.ts.map +1 -0
- package/dist/utils/ndtp.js +140 -0
- package/dist/utils/ndtp.js.map +1 -0
- package/dist/utils/status.d.ts +28 -0
- package/dist/utils/status.d.ts.map +1 -0
- package/dist/utils/status.js +54 -0
- package/dist/utils/status.js.map +1 -0
- package/package.json +31 -5
- package/scripts/postinstall.sh +95 -0
- package/src/api/api.d.ts +3186 -1788
- package/src/api/api.js +9640 -6257
- package/src/api/proto.json +273 -77
- package/src/browser.ts +4 -0
- package/src/config.ts +33 -20
- package/src/demo.ts +44 -34
- package/src/device.ts +83 -36
- package/src/index.ts +5 -2
- package/src/nodes/broadband_source.ts +30 -0
- package/src/nodes/disk_writer.ts +30 -0
- package/src/nodes/index.ts +5 -2
- package/src/nodes/spike_source.ts +30 -0
- package/src/nodes/stream_in.ts +1 -1
- package/src/nodes/stream_out.ts +4 -4
- package/src/utils/client.ts +38 -13
- package/src/utils/discover.ts +25 -45
- package/src/utils/enum.ts +1 -1
- package/src/utils/index.ts +1 -1
- package/src/utils/status.ts +57 -0
- package/synapse-api/.github/workflows/proto-check.yaml +33 -0
- package/synapse-api/README.md +1 -1
- package/synapse-api/api/logging.proto +44 -0
- package/synapse-api/api/node.proto +9 -9
- package/synapse-api/api/nodes/broadband_source.proto +20 -0
- package/synapse-api/api/nodes/signal_config.proto +22 -0
- package/synapse-api/api/nodes/signal_status.proto +18 -0
- package/synapse-api/api/nodes/spectral_filter.proto +0 -1
- package/synapse-api/api/nodes/spike_source.proto +15 -0
- package/synapse-api/api/query.proto +19 -0
- package/synapse-api/api/synapse.proto +5 -2
- package/synapse-api/build.sh +17 -0
- package/dist/channel_mask.d.ts +0 -7
- package/dist/channel_mask.d.ts.map +0 -1
- package/dist/channel_mask.js +0 -14
- package/dist/channel_mask.js.map +0 -1
- package/dist/nodes/electrical_broadband.d.ts +0 -11
- package/dist/nodes/electrical_broadband.d.ts.map +0 -1
- package/dist/nodes/electrical_broadband.js.map +0 -1
- package/dist/nodes/optical_broadband.d.ts +0 -11
- package/dist/nodes/optical_broadband.d.ts.map +0 -1
- package/dist/nodes/optical_broadband.js.map +0 -1
- package/src/nodes/electrical_broadband.ts +0 -30
- package/src/nodes/optical_broadband.ts +0 -30
- package/synapse-api/api/nodes/electrical_broadband.proto +0 -19
- package/synapse-api/api/nodes/optical_broadband.proto +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/utils/discover.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/utils/discover.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,cAAc,GAAG,IAAI,CAAC;AAUrB,MAAM,QAAQ,GAAG,CAAC,SAAS,GAAG,IAAI,EAAyB,EAAE;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,eAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE5B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,KAAuB,EAAE,EAAE;YAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEjC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAe;gBAC7B,IAAI,EAAE,KAAK,CAAC,OAAO;gBACnB,IAAI;gBACJ,UAAU;gBACV,IAAI;gBACJ,MAAM;aACP,CAAC;YAEF,IACE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,EAChH,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjDW,QAAA,QAAQ,YAiDnB"}
|
package/dist/utils/enum.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const getName: (enumType:
|
|
1
|
+
export declare const getName: (enumType: object, value: number | string) => string;
|
|
2
2
|
//# sourceMappingURL=enum.d.ts.map
|
package/dist/utils/enum.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,aAAc,
|
|
1
|
+
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,aAAc,MAAM,SAAS,MAAM,GAAG,MAAM,KAAG,MAOlE,CAAC"}
|
package/dist/utils/enum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,KAAsB,EAAU,EAAE;IAC1E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { discover } from "./discover";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discover = void 0;
|
|
4
|
+
var discover_1 = require("./discover");
|
|
5
|
+
Object.defineProperty(exports, "discover", { enumerable: true, get: function () { return discover_1.discover; } });
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { synapse } from "../api/api";
|
|
2
|
+
export declare const NDTP_VERSION = 1;
|
|
3
|
+
export interface NDTPHeader {
|
|
4
|
+
version: number;
|
|
5
|
+
dataType: synapse.DataType;
|
|
6
|
+
timestamp: bigint;
|
|
7
|
+
seqNumber: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ChannelData {
|
|
10
|
+
channelId: number;
|
|
11
|
+
channelData: bigint[];
|
|
12
|
+
}
|
|
13
|
+
export interface NDTPPayloadBroadband {
|
|
14
|
+
isSigned: boolean;
|
|
15
|
+
bitWidth: number;
|
|
16
|
+
chCount: number;
|
|
17
|
+
sampleRate: number;
|
|
18
|
+
channels: ChannelData[];
|
|
19
|
+
}
|
|
20
|
+
export interface NDTPPayloadSpiketrain {
|
|
21
|
+
binSizeMs: number;
|
|
22
|
+
spikeCounts: number[];
|
|
23
|
+
readonly BIT_WIDTH_BINNED_SPIKES: number;
|
|
24
|
+
}
|
|
25
|
+
export type NDTPPayload = NDTPPayloadBroadband | NDTPPayloadSpiketrain;
|
|
26
|
+
export interface NDTPMessage {
|
|
27
|
+
header: NDTPHeader;
|
|
28
|
+
payload: NDTPPayload;
|
|
29
|
+
crc16: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class NDTPParser {
|
|
32
|
+
private static readonly NDTP_HEADER_SIZE;
|
|
33
|
+
private static crc16;
|
|
34
|
+
private static crc16Verify;
|
|
35
|
+
static unpackHeader(data: Uint8Array): NDTPHeader;
|
|
36
|
+
static unpackBroadband(data: Uint8Array): NDTPPayloadBroadband;
|
|
37
|
+
static unpackSpiketrain(data: Uint8Array): NDTPPayloadSpiketrain;
|
|
38
|
+
static unpack(data: Uint8Array, ignoreCrc?: boolean): NDTPMessage;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ndtp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndtp.d.ts","sourceRoot":"","sources":["../../src/utils/ndtp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoBrC,eAAO,MAAM,YAAY,IAAO,CAAC;AAEjC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C,OAAO,CAAC,MAAM,CAAC,KAAK;IAIpB,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA4BjD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,oBAAoB;IAuC9D,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,qBAAqB;IAmChE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,UAAQ,GAAG,WAAW;CA8BhE"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NDTPParser = exports.NDTP_VERSION = void 0;
|
|
4
|
+
const api_1 = require("../api/api");
|
|
5
|
+
const crc_1 = require("crc");
|
|
6
|
+
// Helper functions for network byte order conversions
|
|
7
|
+
const htonl = (n) => {
|
|
8
|
+
return ((n & 0xff) << 24) | ((n & 0xff00) << 8) | ((n & 0xff0000) >> 8) | ((n & 0xff000000) >> 24);
|
|
9
|
+
};
|
|
10
|
+
const ntohl = htonl;
|
|
11
|
+
const htonll = (n) => {
|
|
12
|
+
if (new Int8Array(new Int16Array([1]).buffer)[0] === 1) {
|
|
13
|
+
// Little endian
|
|
14
|
+
return (BigInt(htonl(Number(n & BigInt(0xffffffff)))) << BigInt(32)) | BigInt(htonl(Number(n >> BigInt(32))));
|
|
15
|
+
}
|
|
16
|
+
return n; // Big endian
|
|
17
|
+
};
|
|
18
|
+
const ntohll = htonll;
|
|
19
|
+
exports.NDTP_VERSION = 0x01;
|
|
20
|
+
class NDTPParser {
|
|
21
|
+
static crc16(data) {
|
|
22
|
+
return (0, crc_1.crc16)(Buffer.from(data));
|
|
23
|
+
}
|
|
24
|
+
static crc16Verify(data, expectedCrc) {
|
|
25
|
+
const calculatedCrc = this.crc16(data);
|
|
26
|
+
return calculatedCrc === expectedCrc;
|
|
27
|
+
}
|
|
28
|
+
static unpackHeader(data) {
|
|
29
|
+
if (data.length < this.NDTP_HEADER_SIZE) {
|
|
30
|
+
throw new Error(`Invalid header size: expected ${this.NDTP_HEADER_SIZE}, got ${data.length}`);
|
|
31
|
+
}
|
|
32
|
+
let offset = 0;
|
|
33
|
+
const version = data[offset++];
|
|
34
|
+
if (version !== exports.NDTP_VERSION) {
|
|
35
|
+
throw new Error(`Invalid version: expected ${exports.NDTP_VERSION}, got ${version}`);
|
|
36
|
+
}
|
|
37
|
+
const dataType = data[offset++];
|
|
38
|
+
// Read timestamp (8 bytes)
|
|
39
|
+
const timestamp = ntohll(new DataView(data.buffer).getBigUint64(offset));
|
|
40
|
+
offset += 8;
|
|
41
|
+
// Read sequence number (2 bytes)
|
|
42
|
+
const seqNumber = new DataView(data.buffer).getUint16(offset);
|
|
43
|
+
return {
|
|
44
|
+
version,
|
|
45
|
+
dataType,
|
|
46
|
+
timestamp,
|
|
47
|
+
seqNumber,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
static unpackBroadband(data) {
|
|
51
|
+
if (data.length < 7) {
|
|
52
|
+
throw new Error("Invalid data size for NDTPPayloadBroadband");
|
|
53
|
+
}
|
|
54
|
+
const bitWidth = data[0] >> 1;
|
|
55
|
+
const isSigned = (data[0] & 1) === 1;
|
|
56
|
+
const numChannels = (data[1] << 16) | (data[2] << 8) | data[3];
|
|
57
|
+
const sampleRate = (data[4] << 16) | (data[5] << 8) | data[6];
|
|
58
|
+
let offset = 7;
|
|
59
|
+
const channels = [];
|
|
60
|
+
for (let i = 0; i < numChannels; i++) {
|
|
61
|
+
// Read channel ID (24 bits)
|
|
62
|
+
const channelId = (data[offset] << 16) | (data[offset + 1] << 8) | data[offset + 2];
|
|
63
|
+
offset += 3;
|
|
64
|
+
// Read number of samples (16 bits)
|
|
65
|
+
const numSamples = (data[offset] << 8) | data[offset + 1];
|
|
66
|
+
offset += 2;
|
|
67
|
+
// Read channel data
|
|
68
|
+
const channelData = [];
|
|
69
|
+
// Note: Implementation of bit-packed data reading would go here
|
|
70
|
+
// This would require a more complex implementation similar to the C++ to_ints function
|
|
71
|
+
channels.push({ channelId, channelData });
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
isSigned,
|
|
75
|
+
bitWidth,
|
|
76
|
+
chCount: numChannels,
|
|
77
|
+
sampleRate,
|
|
78
|
+
channels,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
static unpackSpiketrain(data) {
|
|
82
|
+
if (data.length < 5) {
|
|
83
|
+
throw new Error("Invalid data size for NDTPPayloadSpiketrain");
|
|
84
|
+
}
|
|
85
|
+
const sampleCount = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3];
|
|
86
|
+
const binSizeMs = data[4];
|
|
87
|
+
// Unpack spike counts (4 bits per count)
|
|
88
|
+
const spikeCounts = [];
|
|
89
|
+
const BIT_WIDTH_BINNED_SPIKES = 4;
|
|
90
|
+
// Read packed spike counts
|
|
91
|
+
let byteOffset = 5;
|
|
92
|
+
let bitOffset = 0;
|
|
93
|
+
for (let i = 0; i < sampleCount; i++) {
|
|
94
|
+
const currentByte = data[byteOffset];
|
|
95
|
+
const count = (currentByte >> (4 - bitOffset)) & 0x0f;
|
|
96
|
+
spikeCounts.push(count);
|
|
97
|
+
bitOffset += BIT_WIDTH_BINNED_SPIKES;
|
|
98
|
+
if (bitOffset >= 8) {
|
|
99
|
+
bitOffset = 0;
|
|
100
|
+
byteOffset++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
binSizeMs,
|
|
105
|
+
spikeCounts,
|
|
106
|
+
BIT_WIDTH_BINNED_SPIKES,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
static unpack(data, ignoreCrc = false) {
|
|
110
|
+
if (data.length < this.NDTP_HEADER_SIZE + 2) {
|
|
111
|
+
// +2 for CRC
|
|
112
|
+
throw new Error("Invalid data size for NDTPMessage");
|
|
113
|
+
}
|
|
114
|
+
const header = this.unpackHeader(data.slice(0, this.NDTP_HEADER_SIZE));
|
|
115
|
+
const payloadData = data.slice(this.NDTP_HEADER_SIZE, -2);
|
|
116
|
+
const crc16 = (data[data.length - 2] << 8) | data[data.length - 1];
|
|
117
|
+
// Verify CRC
|
|
118
|
+
if (!ignoreCrc) {
|
|
119
|
+
// Verify CRC here
|
|
120
|
+
}
|
|
121
|
+
let payload;
|
|
122
|
+
if (header.dataType === api_1.synapse.DataType.kBroadband) {
|
|
123
|
+
payload = this.unpackBroadband(payloadData);
|
|
124
|
+
}
|
|
125
|
+
else if (header.dataType === api_1.synapse.DataType.kSpiketrain) {
|
|
126
|
+
payload = this.unpackSpiketrain(payloadData);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
throw new Error("Unsupported data type in NDTP header");
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
header,
|
|
133
|
+
payload,
|
|
134
|
+
crc16,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.NDTPParser = NDTPParser;
|
|
139
|
+
NDTPParser.NDTP_HEADER_SIZE = 12;
|
|
140
|
+
//# sourceMappingURL=ndtp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ndtp.js","sourceRoot":"","sources":["../../src/utils/ndtp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Status as StatusCode } from "@grpc/grpc-js/build/src/constants";
|
|
2
|
+
import { synapse } from "../api/api";
|
|
3
|
+
export interface IStatus {
|
|
4
|
+
code: StatusCode;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
declare class Status implements IStatus {
|
|
8
|
+
code: StatusCode;
|
|
9
|
+
message: string;
|
|
10
|
+
constructor(code?: StatusCode, message?: string);
|
|
11
|
+
ok(): boolean;
|
|
12
|
+
toJSON(): {
|
|
13
|
+
code: StatusCode;
|
|
14
|
+
message: string;
|
|
15
|
+
};
|
|
16
|
+
static fromJSON(json: {
|
|
17
|
+
code: StatusCode;
|
|
18
|
+
message: string;
|
|
19
|
+
}): Status;
|
|
20
|
+
static fromProto(proto: any): Status;
|
|
21
|
+
}
|
|
22
|
+
export declare const fromDeviceStatusCode: (status: synapse.StatusCode) => StatusCode.OK | StatusCode.UNKNOWN | StatusCode.INVALID_ARGUMENT | StatusCode.PERMISSION_DENIED | StatusCode.FAILED_PRECONDITION | StatusCode.UNIMPLEMENTED | StatusCode.INTERNAL;
|
|
23
|
+
export declare const fromDeviceStatus: ({ code, message }: {
|
|
24
|
+
code: synapse.StatusCode;
|
|
25
|
+
message?: string;
|
|
26
|
+
}) => Status;
|
|
27
|
+
export { Status, StatusCode };
|
|
28
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/utils/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,MAAO,YAAW,OAAO;IACV,IAAI,EAAE,UAAU;IAAyB,OAAO,EAAE,MAAM;gBAAxD,IAAI,GAAE,UAA0B,EAAS,OAAO,GAAE,MAAW;IAEhF,EAAE;IAIF,MAAM;;;;IAON,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAI3D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG;CAG5B;AAED,eAAO,MAAM,oBAAoB,WAAY,OAAO,CAAC,UAAU,sLAmB9D,CAAC;AAEF,eAAO,MAAM,gBAAgB,sBAAuB;IAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,WAEjG,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusCode = exports.Status = exports.fromDeviceStatus = exports.fromDeviceStatusCode = void 0;
|
|
4
|
+
const constants_1 = require("@grpc/grpc-js/build/src/constants");
|
|
5
|
+
Object.defineProperty(exports, "StatusCode", { enumerable: true, get: function () { return constants_1.Status; } });
|
|
6
|
+
const api_1 = require("../api/api");
|
|
7
|
+
class Status {
|
|
8
|
+
constructor(code = constants_1.Status.OK, message = "") {
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.message = message;
|
|
11
|
+
}
|
|
12
|
+
ok() {
|
|
13
|
+
return this.code === constants_1.Status.OK;
|
|
14
|
+
}
|
|
15
|
+
toJSON() {
|
|
16
|
+
return {
|
|
17
|
+
code: this.code,
|
|
18
|
+
message: this.message,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
static fromJSON(json) {
|
|
22
|
+
return new Status(json.code, json.message);
|
|
23
|
+
}
|
|
24
|
+
static fromProto(proto) {
|
|
25
|
+
return new Status(proto.code, proto.message);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.Status = Status;
|
|
29
|
+
const fromDeviceStatusCode = (status) => {
|
|
30
|
+
switch (status) {
|
|
31
|
+
case api_1.synapse.StatusCode.kOk:
|
|
32
|
+
return constants_1.Status.OK;
|
|
33
|
+
case api_1.synapse.StatusCode.kInvalidConfiguration:
|
|
34
|
+
return constants_1.Status.INVALID_ARGUMENT;
|
|
35
|
+
case api_1.synapse.StatusCode.kFailedPrecondition:
|
|
36
|
+
return constants_1.Status.FAILED_PRECONDITION;
|
|
37
|
+
case api_1.synapse.StatusCode.kUnimplemented:
|
|
38
|
+
return constants_1.Status.UNIMPLEMENTED;
|
|
39
|
+
case api_1.synapse.StatusCode.kInternalError:
|
|
40
|
+
return constants_1.Status.INTERNAL;
|
|
41
|
+
case api_1.synapse.StatusCode.kPermissionDenied:
|
|
42
|
+
return constants_1.Status.PERMISSION_DENIED;
|
|
43
|
+
case api_1.synapse.StatusCode.kUndefinedError:
|
|
44
|
+
case api_1.synapse.StatusCode.kQueryFailed:
|
|
45
|
+
default:
|
|
46
|
+
return constants_1.Status.UNKNOWN;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.fromDeviceStatusCode = fromDeviceStatusCode;
|
|
50
|
+
const fromDeviceStatus = ({ code, message }) => {
|
|
51
|
+
return new Status((0, exports.fromDeviceStatusCode)(code), message);
|
|
52
|
+
};
|
|
53
|
+
exports.fromDeviceStatus = fromDeviceStatus;
|
|
54
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/utils/status.ts"],"names":[],"mappings":";;;AAAA,iEAAyE;AAwDxD,2FAxDE,kBAAU,OAwDF;AAvD3B,oCAAqC;AAOrC,MAAM,MAAM;IACV,YAAmB,OAAmB,kBAAU,CAAC,EAAE,EAAS,UAAkB,EAAE;QAA7D,SAAI,GAAJ,IAAI,CAA4B;QAAS,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAEpF,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,KAAK,kBAAU,CAAC,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAA2C;QACzD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAU;QACzB,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AA2BQ,wBAAM;AAzBR,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAE,EAAE;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAO,CAAC,UAAU,CAAC,GAAG;YACzB,OAAO,kBAAU,CAAC,EAAE,CAAC;QACvB,KAAK,aAAO,CAAC,UAAU,CAAC,qBAAqB;YAC3C,OAAO,kBAAU,CAAC,gBAAgB,CAAC;QACrC,KAAK,aAAO,CAAC,UAAU,CAAC,mBAAmB;YACzC,OAAO,kBAAU,CAAC,mBAAmB,CAAC;QACxC,KAAK,aAAO,CAAC,UAAU,CAAC,cAAc;YACpC,OAAO,kBAAU,CAAC,aAAa,CAAC;QAClC,KAAK,aAAO,CAAC,UAAU,CAAC,cAAc;YACpC,OAAO,kBAAU,CAAC,QAAQ,CAAC;QAC7B,KAAK,aAAO,CAAC,UAAU,CAAC,iBAAiB;YACvC,OAAO,kBAAU,CAAC,iBAAiB,CAAC;QACtC,KAAK,aAAO,CAAC,UAAU,CAAC,eAAe,CAAC;QACxC,KAAK,aAAO,CAAC,UAAU,CAAC,YAAY,CAAC;QACrC;YACE,OAAO,kBAAU,CAAC,OAAO,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC;AAnBW,QAAA,oBAAoB,wBAmB/B;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAkD,EAAE,EAAE;IACpG,OAAO,IAAI,MAAM,CAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@science-corporation/synapse",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Client library and CLI for the Synapse API",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./browser": {
|
|
14
|
+
"types": "./dist/browser.d.ts",
|
|
15
|
+
"default": "./dist/browser.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
8
18
|
"files": [
|
|
9
19
|
"dist",
|
|
10
20
|
"scripts",
|
|
@@ -12,30 +22,46 @@
|
|
|
12
22
|
"synapse-api"
|
|
13
23
|
],
|
|
14
24
|
"scripts": {
|
|
15
|
-
"dist": "npm run generate && npm run build",
|
|
16
25
|
"build": "./scripts/build.sh",
|
|
17
26
|
"clean": "rm -rf dist src/api",
|
|
27
|
+
"dist": "npm run generate && npm run build",
|
|
18
28
|
"generate": "./scripts/generate.sh",
|
|
19
|
-
"lint": "tsc --noEmit && eslint
|
|
20
|
-
"postinstall": "
|
|
29
|
+
"lint": "tsc --noEmit && eslint .",
|
|
30
|
+
"postinstall": "./scripts/postinstall.sh && npm run dist",
|
|
31
|
+
"test": "tsc --noEmit && jest"
|
|
21
32
|
},
|
|
22
33
|
"repository": {
|
|
23
34
|
"type": "git",
|
|
24
35
|
"url": "git+https://github.com/sciencecorp/synapse-typescript.git"
|
|
25
36
|
},
|
|
26
|
-
"author":
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "Science Corporation",
|
|
39
|
+
"email": "team@science.xyz"
|
|
40
|
+
},
|
|
27
41
|
"bugs": {
|
|
28
42
|
"url": "https://github.com/sciencecorp/synapse-typescript/issues"
|
|
29
43
|
},
|
|
30
44
|
"homepage": "https://github.com/sciencecorp/synapse-typescript#readme",
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18"
|
|
47
|
+
},
|
|
31
48
|
"devDependencies": {
|
|
49
|
+
"@eslint/compat": "^1.2.6",
|
|
50
|
+
"@types/jest": "^29.5.14",
|
|
51
|
+
"@typescript-eslint/eslint-plugin": "^8.23.0",
|
|
52
|
+
"@typescript-eslint/parser": "^8.23.0",
|
|
32
53
|
"eslint": "^9.5.0",
|
|
54
|
+
"eslint-import-resolver-typescript": "^3.7.0",
|
|
55
|
+
"eslint-plugin-import": "^2.31.0",
|
|
56
|
+
"jest": "^29.7.0",
|
|
57
|
+
"ts-jest": "^29.2.5",
|
|
33
58
|
"typescript": "^5.5.2"
|
|
34
59
|
},
|
|
35
60
|
"dependencies": {
|
|
36
61
|
"@grpc/grpc-js": "^1.10.10",
|
|
37
62
|
"@grpc/proto-loader": "^0.7.13",
|
|
38
63
|
"google-protobuf": "^3.21.2",
|
|
64
|
+
"long": "^5.3.1",
|
|
39
65
|
"protobufjs-cli": "^1.1.2",
|
|
40
66
|
"yargs": "^17.7.2"
|
|
41
67
|
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
echo "Postinstall - downloading synapse-api"
|
|
4
|
+
|
|
5
|
+
# If synapse-api directory already exists, skip download
|
|
6
|
+
if [ -d "synapse-api" ]; then
|
|
7
|
+
echo " - synapse-api directory already exists, skipping download"
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
# If we have git, try to update the submodule
|
|
12
|
+
HAS_GIT=false
|
|
13
|
+
if command -v git >/dev/null 2>&1 && git rev-parse --git-dir >/dev/null 2>&1; then
|
|
14
|
+
HAS_GIT=true
|
|
15
|
+
echo " - Git detected, attempting to update submodule..."
|
|
16
|
+
|
|
17
|
+
if git submodule update --init synapse-api; then
|
|
18
|
+
echo " - Successfully updated synapse-api submodule"
|
|
19
|
+
exit 0
|
|
20
|
+
else
|
|
21
|
+
echo " - Failed to update submodule, falling back to download..."
|
|
22
|
+
fi
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# Else, fallback to downloading from github
|
|
27
|
+
echo "Downloading synapse-api..."
|
|
28
|
+
|
|
29
|
+
if [ "$HAS_GIT" = true ]; then
|
|
30
|
+
REF_LIB=$(git rev-parse HEAD)
|
|
31
|
+
else
|
|
32
|
+
REF_LIB=$(node -p "require('./package.json').version")
|
|
33
|
+
if [ -z "$REF_LIB" ]; then
|
|
34
|
+
echo " - Failed to get version from package.json"
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
REF_LIB=v$REF_LIB
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
echo "- Looking up synapse-api ref for synapse-typescript ref $REF_LIB"
|
|
41
|
+
|
|
42
|
+
CURL_OPTS=()
|
|
43
|
+
CURL_OPTS+=(-H "Accept: application/vnd.github+json")
|
|
44
|
+
CURL_OPTS+=(-H "X-GitHub-Api-Version: 2022-11-28")
|
|
45
|
+
if [ -n "$SCIENCE_CORPORATION_SYNAPSE_TOKEN" ]; then
|
|
46
|
+
echo " - Using GitHub token for authentication"
|
|
47
|
+
CURL_OPTS+=(-H "Authorization: Bearer $SCIENCE_CORPORATION_SYNAPSE_TOKEN")
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo " - Fetching synapse-api submodule info..."
|
|
51
|
+
CURL_RESULT=$(curl -s "${CURL_OPTS[@]}" "https://api.github.com/repos/sciencecorp/synapse-typescript/contents/synapse-api?ref=$REF_LIB")
|
|
52
|
+
if [ -z "$CURL_RESULT" ]; then
|
|
53
|
+
echo " - Failed to fetch from GitHub API"
|
|
54
|
+
exit 1
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
echo " - Parsing SHA from response..."
|
|
58
|
+
GREP_RESULT=$(echo "$CURL_RESULT" | grep -o '"sha":\s*"[^"]*"')
|
|
59
|
+
if [ -z "$GREP_RESULT" ]; then
|
|
60
|
+
echo " - Failed to find SHA in API response"
|
|
61
|
+
echo " - API response: $CURL_RESULT"
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
REF_API=$(echo "${GREP_RESULT#*:}" | tr -d '[:space:]"')
|
|
66
|
+
if [ -z "$REF_API" ]; then
|
|
67
|
+
echo " - Failed to parse SHA from API response"
|
|
68
|
+
echo " - API response: $CURL_RESULT"
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
echo "- Found synapse-api ref \"$REF_API\""
|
|
73
|
+
|
|
74
|
+
TMP_DIR=$(mktemp -d)
|
|
75
|
+
if ! curl -s -L "https://github.com/sciencecorp/synapse-api/archive/${REF_API}.zip" -o "$TMP_DIR/synapse-api.zip"; then
|
|
76
|
+
echo " - Failed to download synapse-api"
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
if ! unzip -q "$TMP_DIR/synapse-api.zip" -d "$TMP_DIR"; then
|
|
81
|
+
echo " - Failed to unzip synapse-api"
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
mkdir -p synapse-api
|
|
86
|
+
cp -r "$TMP_DIR/synapse-api-${REF_API}/"* synapse-api/
|
|
87
|
+
|
|
88
|
+
rm "$TMP_DIR/synapse-api.zip"
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if [ ! -f "synapse-api/README.md" ] || [ ! -f "synapse-api/COPYRIGHT" ] || [ ! -d "synapse-api/api" ]; then
|
|
92
|
+
echo " - Failed to download synapse-api - missing required files"
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
echo " - Successfully downloaded synapse-api ref \"$REF_API\""
|