motion-master-client 0.0.3 → 0.0.6

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 (118) hide show
  1. package/README.md +123 -49
  2. package/package.json +21 -6
  3. package/src/{index.ts → index.d.ts} +23 -22
  4. package/src/index.js +27 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/cia402.d.ts +30 -0
  7. package/src/lib/cia402.js +112 -0
  8. package/src/lib/cia402.js.map +1 -0
  9. package/src/lib/device-log-line.d.ts +5 -0
  10. package/src/lib/device-log-line.js +3 -0
  11. package/src/lib/device-log-line.js.map +1 -0
  12. package/src/lib/{device-parameter.ts → device-parameter.d.ts} +56 -69
  13. package/src/lib/device-parameter.js +39 -0
  14. package/src/lib/device-parameter.js.map +1 -0
  15. package/src/lib/device.d.ts +8 -0
  16. package/src/lib/device.js +3 -0
  17. package/src/lib/device.js.map +1 -0
  18. package/src/lib/examples/get-firmware-version-for-all-devices.d.ts +1 -0
  19. package/src/lib/examples/get-firmware-version-for-all-devices.js +15 -0
  20. package/src/lib/examples/get-firmware-version-for-all-devices.js.map +1 -0
  21. package/src/lib/hardware-description.d.ts +37 -0
  22. package/src/lib/hardware-description.js +48 -0
  23. package/src/lib/hardware-description.js.map +1 -0
  24. package/src/lib/logger.d.ts +1 -0
  25. package/src/lib/logger.js +8 -0
  26. package/src/lib/logger.js.map +1 -0
  27. package/src/lib/monitoring-config.d.ts +6 -0
  28. package/src/lib/monitoring-config.js +3 -0
  29. package/src/lib/monitoring-config.js.map +1 -0
  30. package/src/lib/monitoring-entry.d.ts +9 -0
  31. package/src/lib/monitoring-entry.js +3 -0
  32. package/src/lib/monitoring-entry.js.map +1 -0
  33. package/src/lib/motion-master-client.d.ts +18 -0
  34. package/src/lib/motion-master-client.js +73 -0
  35. package/src/lib/motion-master-client.js.map +1 -0
  36. package/src/lib/motion-master-pub-sub-client.d.ts +16 -0
  37. package/src/lib/motion-master-pub-sub-client.js +68 -0
  38. package/src/lib/motion-master-pub-sub-client.js.map +1 -0
  39. package/src/lib/motion-master-pub-sub-socket.d.ts +28 -0
  40. package/src/lib/motion-master-pub-sub-socket.js +3 -0
  41. package/src/lib/motion-master-pub-sub-socket.js.map +1 -0
  42. package/src/lib/motion-master-pub-sub-web-socket.d.ts +13 -0
  43. package/src/lib/motion-master-pub-sub-web-socket.js +61 -0
  44. package/src/lib/motion-master-pub-sub-web-socket.js.map +1 -0
  45. package/src/lib/motion-master-pub-sub-worker-socket.d.ts +13 -0
  46. package/src/lib/motion-master-pub-sub-worker-socket.js +37 -0
  47. package/src/lib/motion-master-pub-sub-worker-socket.js.map +1 -0
  48. package/src/lib/motion-master-req-res-client.d.ts +956 -0
  49. package/src/lib/motion-master-req-res-client.js +1521 -0
  50. package/src/lib/motion-master-req-res-client.js.map +1 -0
  51. package/src/lib/motion-master-req-res-socket.d.ts +38 -0
  52. package/src/lib/motion-master-req-res-socket.js +3 -0
  53. package/src/lib/motion-master-req-res-socket.js.map +1 -0
  54. package/src/lib/motion-master-req-res-web-socket.d.ts +20 -0
  55. package/src/lib/motion-master-req-res-web-socket.js +100 -0
  56. package/src/lib/motion-master-req-res-web-socket.js.map +1 -0
  57. package/src/lib/motion-master-req-res-worker-socket.d.ts +15 -0
  58. package/src/lib/motion-master-req-res-worker-socket.js +53 -0
  59. package/src/lib/motion-master-req-res-worker-socket.js.map +1 -0
  60. package/src/lib/motion-master.proto.js +5 -3
  61. package/src/lib/operators.d.ts +21 -0
  62. package/src/lib/operators.js +71 -0
  63. package/src/lib/operators.js.map +1 -0
  64. package/src/lib/options.d.ts +34 -0
  65. package/src/lib/options.js +38 -0
  66. package/src/lib/options.js.map +1 -0
  67. package/src/lib/parameter.d.ts +65 -0
  68. package/src/lib/parameter.js +70 -0
  69. package/src/lib/parameter.js.map +1 -0
  70. package/src/lib/request-status-resolver.d.ts +4 -0
  71. package/src/lib/request-status-resolver.js +345 -0
  72. package/src/lib/request-status-resolver.js.map +1 -0
  73. package/src/lib/system-log-line.d.ts +8 -0
  74. package/src/lib/system-log-line.js +3 -0
  75. package/src/lib/system-log-line.js.map +1 -0
  76. package/src/lib/types.d.ts +50 -0
  77. package/src/lib/types.js +23 -0
  78. package/src/lib/types.js.map +1 -0
  79. package/src/lib/urls.d.ts +3 -0
  80. package/src/lib/urls.js +10 -0
  81. package/src/lib/urls.js.map +1 -0
  82. package/src/lib/util.d.ts +30 -0
  83. package/src/lib/util.js +279 -0
  84. package/src/lib/util.js.map +1 -0
  85. package/.babelrc +0 -3
  86. package/.eslintrc.json +0 -18
  87. package/jest.config.ts +0 -15
  88. package/motion-master.proto +0 -1822
  89. package/src/lib/device-log-line.ts +0 -5
  90. package/src/lib/device-parameter.spec.ts +0 -85
  91. package/src/lib/hardware-description.spec.ts +0 -223
  92. package/src/lib/hardware-description.ts +0 -79
  93. package/src/lib/logger.ts +0 -5
  94. package/src/lib/monitoring-config.ts +0 -6
  95. package/src/lib/monitoring-entry.ts +0 -11
  96. package/src/lib/motion-master-client.ts +0 -94
  97. package/src/lib/motion-master-pub-sub-client.ts +0 -94
  98. package/src/lib/motion-master-pub-sub-socket.ts +0 -33
  99. package/src/lib/motion-master-pub-sub-web-socket.ts +0 -71
  100. package/src/lib/motion-master-pub-sub-worker-socket.ts +0 -58
  101. package/src/lib/motion-master-req-res-client.spec.ts +0 -126
  102. package/src/lib/motion-master-req-res-client.ts +0 -1990
  103. package/src/lib/motion-master-req-res-socket.ts +0 -45
  104. package/src/lib/motion-master-req-res-web-socket.ts +0 -119
  105. package/src/lib/motion-master-req-res-worker-socket.ts +0 -63
  106. package/src/lib/operators.ts +0 -93
  107. package/src/lib/options.ts +0 -12
  108. package/src/lib/parameter.spec.ts +0 -81
  109. package/src/lib/parameter.ts +0 -119
  110. package/src/lib/request-status-resolver.ts +0 -380
  111. package/src/lib/system-log-line.ts +0 -8
  112. package/src/lib/types.ts +0 -58
  113. package/src/lib/urls.ts +0 -6
  114. package/src/lib/util.ts +0 -261
  115. package/tsconfig.json +0 -22
  116. package/tsconfig.lib.json +0 -10
  117. package/tsconfig.spec.json +0 -20
  118. package/typedoc.json +0 -10
@@ -1,71 +0,0 @@
1
- import { BehaviorSubject, Subject } from "rxjs";
2
- import { webSocket, WebSocketSubject, WebSocketSubjectConfig } from "rxjs/webSocket";
3
- import { logger } from "./logger";
4
- import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
5
- import { MotionMasterMessage } from "./types";
6
-
7
- export class MotionMasterPubSubWebSocket implements MotionMasterPubSubSocket {
8
-
9
- readonly opened$ = new BehaviorSubject<boolean>(false);
10
-
11
- readonly data$ = new Subject<[string, MotionMasterMessage]>();
12
-
13
- private webSocket$?: WebSocketSubject<[string, MotionMasterMessage]>;
14
-
15
- private _url?: string;
16
-
17
- get url(): string | undefined {
18
- return this._url;
19
- }
20
-
21
- open(url: string): void {
22
- if (this.opened$.getValue() === true) {
23
- throw new Error('MotionMasterPubSubWebSocket is already opened!');
24
- }
25
-
26
- this._url = url;
27
-
28
- this.webSocket$ = this.createWebSocket(url);
29
-
30
- this.webSocket$.subscribe({
31
- next: (value) => this.data$.next(value),
32
- error: () => {
33
- // ignore
34
- },
35
- });
36
- }
37
-
38
- close(): void {
39
- this.webSocket$?.unsubscribe();
40
- }
41
-
42
- private createWebSocket(url: string) {
43
- const decoder = new TextDecoder('utf-8');
44
-
45
- const webSocketConfig: WebSocketSubjectConfig<[string, MotionMasterMessage]> = {
46
- binaryType: 'arraybuffer',
47
- closeObserver: {
48
- next: () => {
49
- this.opened$.next(false);
50
- logger.info(`Connection closed ${url}`);
51
- },
52
- },
53
- deserializer: (e: MessageEvent<ArrayBuffer>): [string, MotionMasterMessage] => {
54
- const end = new Uint8Array(e.data, 0, 1)[0] + 1;
55
- const topic = decoder.decode(e.data.slice(1, end)); // topic starts from the 2nd byte
56
- const message = MotionMasterMessage.decode(new Uint8Array(e.data.slice(end)));
57
- return [topic, message];
58
- },
59
- openObserver: {
60
- next: () => {
61
- this.opened$.next(true);
62
- logger.info(`Connection opened ${url}`);
63
- },
64
- },
65
- url,
66
- };
67
-
68
- return webSocket(webSocketConfig);
69
- }
70
-
71
- }
@@ -1,58 +0,0 @@
1
- import { BehaviorSubject, Subject } from "rxjs";
2
- import { logger } from "./logger";
3
- import { MotionMasterPubSubSocket } from "./motion-master-pub-sub-socket";
4
- import { selectMotionMasterMessageByTopic, selectMotionMasterMessageStatusByKey } from "./operators";
5
- import { MotionMasterMessage } from "./types";
6
-
7
- export class MotionMasterPubSubWorkerSocket implements MotionMasterPubSubSocket {
8
-
9
- opened$ = new BehaviorSubject(false);
10
-
11
- data$ = new Subject<[string, MotionMasterMessage]>();
12
-
13
- readonly notification$ = this.data$.pipe(
14
- selectMotionMasterMessageByTopic('notification'),
15
- );
16
-
17
- readonly systemEvent$ = this.notification$.pipe(
18
- selectMotionMasterMessageStatusByKey<MotionMasterMessage.Status.SystemEvent>('systemEvent'),
19
- );
20
-
21
- readonly deviceEvent$ = this.notification$.pipe(
22
- selectMotionMasterMessageStatusByKey<MotionMasterMessage.Status.DeviceEvent>('deviceEvent'),
23
- );
24
-
25
- private _url?: string;
26
-
27
- constructor(
28
- public readonly worker: Worker,
29
- ) { }
30
-
31
- get url(): string | undefined {
32
- return this._url;
33
- }
34
-
35
- open(url: string): void {
36
- this._url = url;
37
-
38
- this.worker.onmessage = ({ data }) => {
39
- if ('opened' in data) {
40
- const { opened } = data;
41
- this.opened$.next(opened);
42
- logger.info(opened ? `Opened pub/sub 🔌 ${url}` : `Closed pub/sub 🔌 ${url}`);
43
- } else if ('topic' in data) {
44
- const { topic, messages }: { topic: string, messages: MotionMasterMessage[] } = data;
45
- messages.forEach((message) => this.data$.next([topic, message]));
46
- }
47
- }
48
-
49
- this.worker.postMessage({
50
- open: { url }
51
- });
52
- }
53
-
54
- close(): void {
55
- this.worker.postMessage({ close: true })
56
- }
57
-
58
- }
@@ -1,126 +0,0 @@
1
- import { TestScheduler } from "rxjs/testing";
2
- import { MotionMasterReqResClient } from "./motion-master-req-res-client";
3
- import { MotionMasterReqResSocket } from "./motion-master-req-res-socket";
4
-
5
- describe('MotionMasterReqResClient', () => {
6
-
7
- let reqResClient: MotionMasterReqResClient;
8
- let testScheduler: TestScheduler;
9
-
10
- beforeEach(() => {
11
- const socket = jest.fn() as unknown as MotionMasterReqResSocket;
12
- socket.send = jest.fn();
13
- reqResClient = new MotionMasterReqResClient(socket);
14
-
15
- testScheduler = new TestScheduler((actual, expected) => {
16
- return expect(actual).toEqual(expected);
17
- });
18
- });
19
-
20
- describe('pingSystem', () => {
21
- it('should send PingSystem request message and return EMPTY observable', (done) => {
22
- testScheduler.run(({ expectObservable }) => {
23
- const result = reqResClient.pingSystem('pingSystemMessageId');
24
-
25
- expect(reqResClient.socket.send).toBeCalledTimes(1);
26
- expect(reqResClient.socket.send).toBeCalledWith({
27
- id: 'pingSystemMessageId',
28
- request: {
29
- pingSystem: {},
30
- },
31
- });
32
- expectObservable(result).toBe('|');
33
-
34
- done();
35
- });
36
- });
37
- });
38
-
39
- describe('pingSystemAsync', () => {
40
- it('should send PingSystem request message and return a promise of undefined', async () => {
41
- const result = await reqResClient.pingSystemAsync('pingSystemAsyncMessageId');
42
-
43
- expect(reqResClient.socket.send).toBeCalledTimes(1);
44
- expect(reqResClient.socket.send).toBeCalledWith({
45
- id: 'pingSystemAsyncMessageId',
46
- request: {
47
- pingSystem: {},
48
- },
49
- });
50
- expect(result).toBeUndefined();
51
- });
52
- });
53
-
54
- describe('getSystemVersion', () => {
55
- it('should send GetSystemVersion request message and return an observable of SystemVersion status', (done) => {
56
- testScheduler.run(({ hot, expectObservable }) => {
57
- const message$ = hot('a', {
58
- a: {
59
- "id": "getSystemVersionMessageId",
60
- "status": {
61
- "systemVersion": {
62
- "version": "4.8.4"
63
- },
64
- "type": "systemVersion"
65
- },
66
- "type": "status"
67
- }
68
- });
69
- Object.defineProperty(reqResClient.socket, 'message$', { value: message$ });
70
-
71
- const result = reqResClient.getSystemVersion(1000, 'getSystemVersionMessageId');
72
-
73
- expect(reqResClient.socket.send).toBeCalledTimes(1);
74
- expect(reqResClient.socket.send).toBeCalledWith({
75
- id: 'getSystemVersionMessageId',
76
- request: {
77
- getSystemVersion: {},
78
- },
79
- });
80
- expectObservable(result).toBe('(s|)', {
81
- s: {
82
- version: '4.8.4',
83
- request: 'succeeded',
84
- messageId: 'getSystemVersionMessageId'
85
- }
86
- });
87
-
88
- done();
89
- });
90
- });
91
- });
92
-
93
- describe('getSystemVersionAsync', () => {
94
- it('should send GetSystemVersion request message and return a promise of version', (done) => {
95
- testScheduler.run(({ hot }) => {
96
- const message$ = hot('a', {
97
- a: {
98
- "id": "getSystemVersionAsyncMessageId",
99
- "status": {
100
- "systemVersion": {
101
- "version": "4.8.4"
102
- },
103
- "type": "systemVersion"
104
- },
105
- "type": "status"
106
- }
107
- });
108
- Object.defineProperty(reqResClient.socket, 'message$', { value: message$ });
109
-
110
- reqResClient.getSystemVersionAsync(1000, 'getSystemVersionAsyncMessageId').then((result) => {
111
- expect(reqResClient.socket.send).toBeCalledTimes(1);
112
- expect(reqResClient.socket.send).toBeCalledWith({
113
- id: 'getSystemVersionAsyncMessageId',
114
- request: {
115
- getSystemVersion: {},
116
- },
117
- });
118
- expect(result).toBe('4.8.4');
119
-
120
- done();
121
- });
122
- });
123
- });
124
- });
125
-
126
- });