@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.
Files changed (140) hide show
  1. package/README.md +40 -18
  2. package/dist/api/api.d.ts +3186 -1788
  3. package/dist/api/api.js +9243 -6074
  4. package/dist/api/api.js.map +1 -1
  5. package/dist/api/proto.json +273 -77
  6. package/dist/api-science-device/api.d.ts +3 -0
  7. package/dist/api-science-device/api.d.ts.map +1 -0
  8. package/dist/api-science-device/api.js +3822 -0
  9. package/dist/api-science-device/api.js.map +1 -0
  10. package/dist/api-science-device/proto.json +258 -0
  11. package/dist/browser.d.ts +4 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +22 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/config.d.ts +5 -4
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +27 -17
  18. package/dist/config.js.map +1 -1
  19. package/dist/demo.js +48 -125
  20. package/dist/demo.js.map +1 -1
  21. package/dist/device.d.ts +20 -8
  22. package/dist/device.d.ts.map +1 -1
  23. package/dist/device.js +66 -23
  24. package/dist/device.js.map +1 -1
  25. package/dist/index.d.ts +4 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +5 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/nodejs.d.ts +8 -0
  30. package/dist/nodejs.d.ts.map +1 -0
  31. package/dist/nodejs.js +32 -0
  32. package/dist/nodejs.js.map +1 -0
  33. package/dist/nodes/broadband_source.d.ts +11 -0
  34. package/dist/nodes/broadband_source.d.ts.map +1 -0
  35. package/dist/nodes/{optical_broadband.js → broadband_source.js} +9 -9
  36. package/dist/nodes/broadband_source.js.map +1 -0
  37. package/dist/nodes/disk_writer.d.ts +11 -0
  38. package/dist/nodes/disk_writer.d.ts.map +1 -0
  39. package/dist/nodes/{electrical_broadband.js → disk_writer.js} +9 -9
  40. package/dist/nodes/disk_writer.js.map +1 -0
  41. package/dist/nodes/index.d.ts +4 -2
  42. package/dist/nodes/index.d.ts.map +1 -1
  43. package/dist/nodes/index.js +7 -5
  44. package/dist/nodes/index.js.map +1 -1
  45. package/dist/nodes/spike_source.d.ts +11 -0
  46. package/dist/nodes/spike_source.d.ts.map +1 -0
  47. package/dist/nodes/spike_source.js +28 -0
  48. package/dist/nodes/spike_source.js.map +1 -0
  49. package/dist/nodes/stream_in.js +1 -1
  50. package/dist/nodes/stream_in.js.map +1 -1
  51. package/dist/nodes/stream_out.d.ts +2 -2
  52. package/dist/nodes/stream_out.d.ts.map +1 -1
  53. package/dist/nodes/stream_out.js +2 -2
  54. package/dist/nodes/stream_out.js.map +1 -1
  55. package/dist/science-device-api/api.d.ts +3 -0
  56. package/dist/science-device-api/api.d.ts.map +1 -0
  57. package/dist/science-device-api/api.js +3822 -0
  58. package/dist/science-device-api/api.js.map +1 -0
  59. package/dist/types/index.d.ts +3 -0
  60. package/dist/types/index.d.ts.map +1 -0
  61. package/dist/types/index.js +19 -0
  62. package/dist/types/index.js.map +1 -0
  63. package/dist/types.d.ts +5 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +19 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist/utils/client.d.ts +8 -1
  68. package/dist/utils/client.d.ts.map +1 -1
  69. package/dist/utils/client.js +30 -16
  70. package/dist/utils/client.js.map +1 -1
  71. package/dist/utils/device-management.d.ts +37 -0
  72. package/dist/utils/device-management.d.ts.map +1 -0
  73. package/dist/utils/device-management.js +126 -0
  74. package/dist/utils/device-management.js.map +1 -0
  75. package/dist/utils/discover.d.ts +3 -8
  76. package/dist/utils/discover.d.ts.map +1 -1
  77. package/dist/utils/discover.js +17 -32
  78. package/dist/utils/discover.js.map +1 -1
  79. package/dist/utils/enum.d.ts +1 -1
  80. package/dist/utils/enum.d.ts.map +1 -1
  81. package/dist/utils/enum.js.map +1 -1
  82. package/dist/utils/index.d.ts +1 -1
  83. package/dist/utils/index.d.ts.map +1 -1
  84. package/dist/utils/index.js +3 -0
  85. package/dist/utils/index.js.map +1 -1
  86. package/dist/utils/ndtp.d.ts +40 -0
  87. package/dist/utils/ndtp.d.ts.map +1 -0
  88. package/dist/utils/ndtp.js +140 -0
  89. package/dist/utils/ndtp.js.map +1 -0
  90. package/dist/utils/status.d.ts +28 -0
  91. package/dist/utils/status.d.ts.map +1 -0
  92. package/dist/utils/status.js +54 -0
  93. package/dist/utils/status.js.map +1 -0
  94. package/package.json +31 -5
  95. package/scripts/postinstall.sh +95 -0
  96. package/src/api/api.d.ts +3186 -1788
  97. package/src/api/api.js +9640 -6257
  98. package/src/api/proto.json +273 -77
  99. package/src/browser.ts +4 -0
  100. package/src/config.ts +33 -20
  101. package/src/demo.ts +44 -34
  102. package/src/device.ts +83 -36
  103. package/src/index.ts +5 -2
  104. package/src/nodes/broadband_source.ts +30 -0
  105. package/src/nodes/disk_writer.ts +30 -0
  106. package/src/nodes/index.ts +5 -2
  107. package/src/nodes/spike_source.ts +30 -0
  108. package/src/nodes/stream_in.ts +1 -1
  109. package/src/nodes/stream_out.ts +4 -4
  110. package/src/utils/client.ts +38 -13
  111. package/src/utils/discover.ts +25 -45
  112. package/src/utils/enum.ts +1 -1
  113. package/src/utils/index.ts +1 -1
  114. package/src/utils/status.ts +57 -0
  115. package/synapse-api/.github/workflows/proto-check.yaml +33 -0
  116. package/synapse-api/README.md +1 -1
  117. package/synapse-api/api/logging.proto +44 -0
  118. package/synapse-api/api/node.proto +9 -9
  119. package/synapse-api/api/nodes/broadband_source.proto +20 -0
  120. package/synapse-api/api/nodes/signal_config.proto +22 -0
  121. package/synapse-api/api/nodes/signal_status.proto +18 -0
  122. package/synapse-api/api/nodes/spectral_filter.proto +0 -1
  123. package/synapse-api/api/nodes/spike_source.proto +15 -0
  124. package/synapse-api/api/query.proto +19 -0
  125. package/synapse-api/api/synapse.proto +5 -2
  126. package/synapse-api/build.sh +17 -0
  127. package/dist/channel_mask.d.ts +0 -7
  128. package/dist/channel_mask.d.ts.map +0 -1
  129. package/dist/channel_mask.js +0 -14
  130. package/dist/channel_mask.js.map +0 -1
  131. package/dist/nodes/electrical_broadband.d.ts +0 -11
  132. package/dist/nodes/electrical_broadband.d.ts.map +0 -1
  133. package/dist/nodes/electrical_broadband.js.map +0 -1
  134. package/dist/nodes/optical_broadband.d.ts +0 -11
  135. package/dist/nodes/optical_broadband.d.ts.map +0 -1
  136. package/dist/nodes/optical_broadband.js.map +0 -1
  137. package/src/nodes/electrical_broadband.ts +0 -30
  138. package/src/nodes/optical_broadband.ts +0 -30
  139. package/synapse-api/api/nodes/electrical_broadband.proto +0 -19
  140. 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,eAAe,GAAG,IAAI,CAAC;AAQ7B,MAAM,mBAAmB;CAMxB;AAED,MAAM,oBAAoB,GAAiB;IACzC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,eAAe;CAC3B,CAAC;AAEK,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,oBAAoB,EAAkC,EAAE;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,eAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChD,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,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;YAC3B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YACjE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC9B,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;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzDW,QAAA,QAAQ,YAyDnB"}
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"}
@@ -1,2 +1,2 @@
1
- export declare const getName: (enumType: any, value: number | string) => string;
1
+ export declare const getName: (enumType: object, value: number | string) => string;
2
2
  //# sourceMappingURL=enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,aAAc,GAAG,SAAS,MAAM,GAAG,MAAM,KAAG,MAO/D,CAAC"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/utils/enum.ts"],"names":[],"mappings":";;;AAAO,MAAM,OAAO,GAAG,CAAC,QAAa,EAAE,KAAsB,EAAU,EAAE;IACvE,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"}
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"}
@@ -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"}
@@ -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
@@ -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.10.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 --ext .ts,.tsx .",
20
- "postinstall": "git submodule update --init && npm run dist"
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": "team@science.xyz",
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\""