@scrypted/server 0.7.92 → 0.7.93

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.

Potentially problematic release.


This version of @scrypted/server might be problematic. Click here for more details.

Files changed (184) hide show
  1. package/package.json +1 -1
  2. package/dist/asynciterable-utils.d.ts +0 -2
  3. package/dist/asynciterable-utils.js +0 -24
  4. package/dist/asynciterable-utils.js.map +0 -1
  5. package/dist/cert.d.ts +0 -6
  6. package/dist/cert.js +0 -75
  7. package/dist/cert.js.map +0 -1
  8. package/dist/collection.d.ts +0 -1
  9. package/dist/collection.js +0 -16
  10. package/dist/collection.js.map +0 -1
  11. package/dist/db-types.d.ts +0 -38
  12. package/dist/db-types.js +0 -45
  13. package/dist/db-types.js.map +0 -1
  14. package/dist/event-registry.d.ts +0 -19
  15. package/dist/event-registry.js +0 -92
  16. package/dist/event-registry.js.map +0 -1
  17. package/dist/http-interfaces.d.ts +0 -3
  18. package/dist/http-interfaces.js +0 -73
  19. package/dist/http-interfaces.js.map +0 -1
  20. package/dist/infer-defaults.d.ts +0 -11
  21. package/dist/infer-defaults.js +0 -119
  22. package/dist/infer-defaults.js.map +0 -1
  23. package/dist/io.d.ts +0 -22
  24. package/dist/io.js +0 -3
  25. package/dist/io.js.map +0 -1
  26. package/dist/level.d.ts +0 -110
  27. package/dist/level.js +0 -135
  28. package/dist/level.js.map +0 -1
  29. package/dist/listen-zero.d.ts +0 -13
  30. package/dist/listen-zero.js +0 -48
  31. package/dist/listen-zero.js.map +0 -1
  32. package/dist/logger.d.ts +0 -29
  33. package/dist/logger.js +0 -78
  34. package/dist/logger.js.map +0 -1
  35. package/dist/media-helpers.d.ts +0 -5
  36. package/dist/media-helpers.js +0 -89
  37. package/dist/media-helpers.js.map +0 -1
  38. package/dist/mixin/mixin-cycle.d.ts +0 -3
  39. package/dist/mixin/mixin-cycle.js +0 -32
  40. package/dist/mixin/mixin-cycle.js.map +0 -1
  41. package/dist/plugin/acl.d.ts +0 -16
  42. package/dist/plugin/acl.js +0 -83
  43. package/dist/plugin/acl.js.map +0 -1
  44. package/dist/plugin/descriptor.d.ts +0 -22
  45. package/dist/plugin/descriptor.js +0 -35
  46. package/dist/plugin/descriptor.js.map +0 -1
  47. package/dist/plugin/media.d.ts +0 -71
  48. package/dist/plugin/media.js +0 -420
  49. package/dist/plugin/media.js.map +0 -1
  50. package/dist/plugin/mediaobject.d.ts +0 -10
  51. package/dist/plugin/mediaobject.js +0 -26
  52. package/dist/plugin/mediaobject.js.map +0 -1
  53. package/dist/plugin/plugin-api.d.ts +0 -106
  54. package/dist/plugin/plugin-api.js +0 -120
  55. package/dist/plugin/plugin-api.js.map +0 -1
  56. package/dist/plugin/plugin-console.d.ts +0 -28
  57. package/dist/plugin/plugin-console.js +0 -291
  58. package/dist/plugin/plugin-console.js.map +0 -1
  59. package/dist/plugin/plugin-debug.d.ts +0 -4
  60. package/dist/plugin/plugin-debug.js +0 -3
  61. package/dist/plugin/plugin-debug.js.map +0 -1
  62. package/dist/plugin/plugin-device.d.ts +0 -54
  63. package/dist/plugin/plugin-device.js +0 -413
  64. package/dist/plugin/plugin-device.js.map +0 -1
  65. package/dist/plugin/plugin-error.d.ts +0 -2
  66. package/dist/plugin/plugin-error.js +0 -7
  67. package/dist/plugin/plugin-error.js.map +0 -1
  68. package/dist/plugin/plugin-host-api.d.ts +0 -43
  69. package/dist/plugin/plugin-host-api.js +0 -177
  70. package/dist/plugin/plugin-host-api.js.map +0 -1
  71. package/dist/plugin/plugin-host.d.ts +0 -45
  72. package/dist/plugin/plugin-host.js +0 -398
  73. package/dist/plugin/plugin-host.js.map +0 -1
  74. package/dist/plugin/plugin-http.d.ts +0 -18
  75. package/dist/plugin/plugin-http.js +0 -120
  76. package/dist/plugin/plugin-http.js.map +0 -1
  77. package/dist/plugin/plugin-lazy-remote.d.ts +0 -31
  78. package/dist/plugin/plugin-lazy-remote.js +0 -75
  79. package/dist/plugin/plugin-lazy-remote.js.map +0 -1
  80. package/dist/plugin/plugin-npm-dependencies.d.ts +0 -8
  81. package/dist/plugin/plugin-npm-dependencies.js +0 -103
  82. package/dist/plugin/plugin-npm-dependencies.js.map +0 -1
  83. package/dist/plugin/plugin-remote-stats.d.ts +0 -8
  84. package/dist/plugin/plugin-remote-stats.js +0 -30
  85. package/dist/plugin/plugin-remote-stats.js.map +0 -1
  86. package/dist/plugin/plugin-remote-websocket.d.ts +0 -29
  87. package/dist/plugin/plugin-remote-websocket.js +0 -152
  88. package/dist/plugin/plugin-remote-websocket.js.map +0 -1
  89. package/dist/plugin/plugin-remote-worker.d.ts +0 -5
  90. package/dist/plugin/plugin-remote-worker.js +0 -348
  91. package/dist/plugin/plugin-remote-worker.js.map +0 -1
  92. package/dist/plugin/plugin-remote.d.ts +0 -75
  93. package/dist/plugin/plugin-remote.js +0 -598
  94. package/dist/plugin/plugin-remote.js.map +0 -1
  95. package/dist/plugin/plugin-repl.d.ts +0 -2
  96. package/dist/plugin/plugin-repl.js +0 -74
  97. package/dist/plugin/plugin-repl.js.map +0 -1
  98. package/dist/plugin/plugin-state-check.d.ts +0 -1
  99. package/dist/plugin/plugin-state-check.js +0 -27
  100. package/dist/plugin/plugin-state-check.js.map +0 -1
  101. package/dist/plugin/plugin-volume.d.ts +0 -3
  102. package/dist/plugin/plugin-volume.js +0 -31
  103. package/dist/plugin/plugin-volume.js.map +0 -1
  104. package/dist/plugin/runtime/child-process-worker.d.ts +0 -20
  105. package/dist/plugin/runtime/child-process-worker.js +0 -42
  106. package/dist/plugin/runtime/child-process-worker.js.map +0 -1
  107. package/dist/plugin/runtime/node-fork-worker.d.ts +0 -9
  108. package/dist/plugin/runtime/node-fork-worker.js +0 -67
  109. package/dist/plugin/runtime/node-fork-worker.js.map +0 -1
  110. package/dist/plugin/runtime/node-thread-worker.d.ts +0 -20
  111. package/dist/plugin/runtime/node-thread-worker.js +0 -73
  112. package/dist/plugin/runtime/node-thread-worker.js.map +0 -1
  113. package/dist/plugin/runtime/python-worker.d.ts +0 -10
  114. package/dist/plugin/runtime/python-worker.js +0 -91
  115. package/dist/plugin/runtime/python-worker.js.map +0 -1
  116. package/dist/plugin/runtime/runtime-worker.d.ts +0 -26
  117. package/dist/plugin/runtime/runtime-worker.js +0 -3
  118. package/dist/plugin/runtime/runtime-worker.js.map +0 -1
  119. package/dist/plugin/socket-serializer.d.ts +0 -5
  120. package/dist/plugin/socket-serializer.js +0 -17
  121. package/dist/plugin/socket-serializer.js.map +0 -1
  122. package/dist/plugin/system.d.ts +0 -39
  123. package/dist/plugin/system.js +0 -216
  124. package/dist/plugin/system.js.map +0 -1
  125. package/dist/rpc-buffer-serializer.d.ts +0 -11
  126. package/dist/rpc-buffer-serializer.js +0 -30
  127. package/dist/rpc-buffer-serializer.js.map +0 -1
  128. package/dist/rpc-serializer.d.ts +0 -24
  129. package/dist/rpc-serializer.js +0 -144
  130. package/dist/rpc-serializer.js.map +0 -1
  131. package/dist/rpc.d.ts +0 -147
  132. package/dist/rpc.js +0 -689
  133. package/dist/rpc.js.map +0 -1
  134. package/dist/runtime.d.ts +0 -103
  135. package/dist/runtime.js +0 -815
  136. package/dist/runtime.js.map +0 -1
  137. package/dist/scrypted-main-exports.d.ts +0 -6
  138. package/dist/scrypted-main-exports.js +0 -57
  139. package/dist/scrypted-main-exports.js.map +0 -1
  140. package/dist/scrypted-main.d.ts +0 -1
  141. package/dist/scrypted-main.js +0 -8
  142. package/dist/scrypted-main.js.map +0 -1
  143. package/dist/scrypted-plugin-main.d.ts +0 -2
  144. package/dist/scrypted-plugin-main.js +0 -43
  145. package/dist/scrypted-plugin-main.js.map +0 -1
  146. package/dist/scrypted-server-main.d.ts +0 -6
  147. package/dist/scrypted-server-main.js +0 -559
  148. package/dist/scrypted-server-main.js.map +0 -1
  149. package/dist/server-settings.d.ts +0 -5
  150. package/dist/server-settings.js +0 -91
  151. package/dist/server-settings.js.map +0 -1
  152. package/dist/services/addresses.d.ts +0 -7
  153. package/dist/services/addresses.js +0 -41
  154. package/dist/services/addresses.js.map +0 -1
  155. package/dist/services/alerts.d.ts +0 -9
  156. package/dist/services/alerts.js +0 -27
  157. package/dist/services/alerts.js.map +0 -1
  158. package/dist/services/cors.d.ts +0 -18
  159. package/dist/services/cors.js +0 -18
  160. package/dist/services/cors.js.map +0 -1
  161. package/dist/services/info.d.ts +0 -5
  162. package/dist/services/info.js +0 -18
  163. package/dist/services/info.js.map +0 -1
  164. package/dist/services/plugin.d.ts +0 -46
  165. package/dist/services/plugin.js +0 -172
  166. package/dist/services/plugin.js.map +0 -1
  167. package/dist/services/service-control.d.ts +0 -8
  168. package/dist/services/service-control.js +0 -39
  169. package/dist/services/service-control.js.map +0 -1
  170. package/dist/services/users.d.ts +0 -19
  171. package/dist/services/users.js +0 -75
  172. package/dist/services/users.js.map +0 -1
  173. package/dist/sleep.d.ts +0 -1
  174. package/dist/sleep.js +0 -8
  175. package/dist/sleep.js.map +0 -1
  176. package/dist/state.d.ts +0 -39
  177. package/dist/state.js +0 -247
  178. package/dist/state.js.map +0 -1
  179. package/dist/threading.d.ts +0 -3
  180. package/dist/threading.js +0 -93
  181. package/dist/threading.js.map +0 -1
  182. package/dist/usertoken.d.ts +0 -11
  183. package/dist/usertoken.js +0 -52
  184. package/dist/usertoken.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"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"}
package/dist/sleep.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function sleep(ms: number): Promise<void>;
package/dist/sleep.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sleep = void 0;
4
- async function sleep(ms) {
5
- await new Promise(resolve => setTimeout(resolve, ms));
6
- }
7
- exports.sleep = sleep;
8
- //# sourceMappingURL=sleep.js.map
package/dist/sleep.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":";;;AAAO,KAAK,UAAU,KAAK,CAAC,EAAU;IAClC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,sBAEC"}
package/dist/state.d.ts DELETED
@@ -1,39 +0,0 @@
1
- /// <reference types="lodash" />
2
- import { EventDetails, EventListenerOptions, EventListenerRegister, ScryptedInterface, SystemDeviceState } from "@scrypted/types";
3
- import { PluginDevice } from "./db-types";
4
- import { EventRegistry } from "./event-registry";
5
- import { ScryptedRuntime } from "./runtime";
6
- export declare class ScryptedStateManager extends EventRegistry {
7
- scrypted: ScryptedRuntime;
8
- upserts: Set<string>;
9
- upsertThrottle: import("lodash").DebouncedFunc<() => void>;
10
- constructor(scrypted: ScryptedRuntime);
11
- getImplementerId(pluginDevice: PluginDevice, eventInterface: ScryptedInterface | string): Promise<string>;
12
- notifyInterfaceEventFromMixin(pluginDevice: PluginDevice, eventInterface: ScryptedInterface | string, value: any, mixinId: string): Promise<void>;
13
- setPluginDeviceStateFromMixin(pluginDevice: PluginDevice, property: string, value: any, eventInterface: ScryptedInterface, mixinId: string): Promise<boolean>;
14
- setPluginDeviceState(device: PluginDevice, property: string, value: any, eventInterface?: ScryptedInterface): boolean;
15
- updateDescriptor(device: PluginDevice): void;
16
- removeDevice(id: string): void;
17
- notifyInterfaceEvent(device: PluginDevice, eventInterface: ScryptedInterface | string, value: any, mixinId?: string): void;
18
- setState(id: string, property: string, value: any): boolean;
19
- getSystemState(): {
20
- [id: string]: {
21
- [property: string]: SystemDeviceState;
22
- };
23
- };
24
- listenDevice(id: string, options: string | EventListenerOptions, callback: (eventDetails: EventDetails, eventData: any) => void): EventListenerRegister;
25
- refreshThrottles: {
26
- [id: string]: RefreshThrottle;
27
- };
28
- getOrCreateRefreshThrottle(id: string, refreshInterface: string, userInitiated: boolean): RefreshThrottle;
29
- refresh(id: string, refreshInterface: string, userInitiated: boolean): Promise<void>;
30
- }
31
- interface RefreshThrottle {
32
- promise: Promise<void>;
33
- refreshInterface: string;
34
- userInitiated: boolean;
35
- tailRefresh: boolean;
36
- }
37
- export declare function setState(pluginDevice: PluginDevice, property: string, value: any): boolean;
38
- export declare function getState(pluginDevice: PluginDevice, property: string): any;
39
- export {};
package/dist/state.js DELETED
@@ -1,247 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getState = exports.setState = exports.ScryptedStateManager = void 0;
7
- const types_1 = require("@scrypted/types");
8
- const throttle_1 = __importDefault(require("lodash/throttle"));
9
- const event_registry_1 = require("./event-registry");
10
- const descriptor_1 = require("./plugin/descriptor");
11
- const plugin_device_1 = require("./plugin/plugin-device");
12
- const sleep_1 = require("./sleep");
13
- class ScryptedStateManager extends event_registry_1.EventRegistry {
14
- scrypted;
15
- upserts = new Set();
16
- upsertThrottle = (0, throttle_1.default)(() => {
17
- const ids = [...this.upserts.values()];
18
- this.upserts.clear();
19
- for (const id of ids) {
20
- try {
21
- const pluginDevice = this.scrypted.findPluginDeviceById(id);
22
- // may have been deleted
23
- if (pluginDevice)
24
- this.scrypted.datastore.upsert(pluginDevice);
25
- }
26
- catch (e) {
27
- console.error('save state error', e);
28
- }
29
- }
30
- }, 30000, {
31
- leading: false,
32
- trailing: true,
33
- });
34
- constructor(scrypted) {
35
- super();
36
- this.scrypted = scrypted;
37
- }
38
- async getImplementerId(pluginDevice, eventInterface) {
39
- if (!eventInterface)
40
- throw new Error(`ScryptedInterface is required`);
41
- const device = this.scrypted.getDevice(pluginDevice._id);
42
- if (!device)
43
- throw new Error(`device ${pluginDevice._id} not found?`);
44
- const implementerId = await device[plugin_device_1.QueryInterfaceSymbol](eventInterface);
45
- return implementerId;
46
- }
47
- async notifyInterfaceEventFromMixin(pluginDevice, eventInterface, value, mixinId) {
48
- // TODO: figure out how to clean this up this hack. For now,
49
- // Settings interface is allowed to bubble from mixin devices..
50
- // TODO: mixin masking of property-less events is disabled due to ObjectDetector.
51
- // Running opencv and tensorflow-lite masks one or the other object events.
52
- // Need to think this through more.
53
- if (false && eventInterface !== types_1.ScryptedInterface.Settings) {
54
- const implementerId = await this.getImplementerId(pluginDevice, eventInterface);
55
- if (implementerId !== mixinId) {
56
- const event = (0, event_registry_1.getMixinEventName)({
57
- event: eventInterface,
58
- mixinId,
59
- });
60
- this.notifyEventDetails(pluginDevice._id, {
61
- eventId: undefined,
62
- eventInterface,
63
- eventTime: Date.now(),
64
- mixinId,
65
- }, value, event);
66
- return;
67
- }
68
- }
69
- this.notify(pluginDevice?._id, Date.now(), eventInterface, undefined, value);
70
- }
71
- async setPluginDeviceStateFromMixin(pluginDevice, property, value, eventInterface, mixinId) {
72
- // TODO: crashing here. send descriptor from python too.
73
- eventInterface = eventInterface || descriptor_1.propertyInterfaces[property];
74
- const implementerId = await this.getImplementerId(pluginDevice, eventInterface);
75
- if (implementerId !== mixinId) {
76
- const event = (0, event_registry_1.getMixinEventName)({
77
- event: eventInterface,
78
- mixinId,
79
- });
80
- this.scrypted.getDeviceLogger(pluginDevice).log('i', `${property}: ${value} (mixin)`);
81
- this.notifyEventDetails(pluginDevice._id, {
82
- eventId: undefined,
83
- eventInterface,
84
- eventTime: Date.now(),
85
- mixinId,
86
- property,
87
- }, value, event);
88
- return false;
89
- }
90
- return this.setPluginDeviceState(pluginDevice, property, value, eventInterface);
91
- }
92
- setPluginDeviceState(device, property, value, eventInterface) {
93
- eventInterface = eventInterface || descriptor_1.propertyInterfaces[property];
94
- if (!eventInterface)
95
- throw new Error(`eventInterface must be provided`);
96
- const changed = setState(device, property, value);
97
- if (eventInterface !== types_1.ScryptedInterface.ScryptedDevice) {
98
- if (this.notify(device?._id, Date.now(), eventInterface, property, value, { changed }) && device) {
99
- this.scrypted.getDeviceLogger(device).log('i', `${property}: ${value}`);
100
- }
101
- }
102
- this.upserts.add(device._id);
103
- this.upsertThrottle();
104
- return changed;
105
- }
106
- updateDescriptor(device) {
107
- this.notify(device._id, undefined, types_1.ScryptedInterface.ScryptedDevice, undefined, device.state, { changed: true });
108
- }
109
- removeDevice(id) {
110
- this.notify(undefined, undefined, types_1.ScryptedInterface.ScryptedDevice, types_1.ScryptedInterfaceProperty.id, id, { changed: true });
111
- }
112
- notifyInterfaceEvent(device, eventInterface, value, mixinId) {
113
- this.notify(device?._id, Date.now(), eventInterface, undefined, value, {
114
- changed: true,
115
- mixinId,
116
- });
117
- }
118
- setState(id, property, value) {
119
- const device = this.scrypted.pluginDevices[id];
120
- if (!device)
121
- throw new Error(`device not found for id ${id}`);
122
- return this.setPluginDeviceState(device, property, value);
123
- }
124
- getSystemState() {
125
- const systemState = {};
126
- for (const pluginDevice of Object.values(this.scrypted.pluginDevices)) {
127
- systemState[pluginDevice._id] = pluginDevice.state;
128
- }
129
- return systemState;
130
- }
131
- listenDevice(id, options, callback) {
132
- let { denoise, event, watch } = (options || {});
133
- if (!event && typeof options === 'string')
134
- event = options;
135
- if (!event)
136
- event = undefined;
137
- let polling = true;
138
- const device = this.scrypted.getDevice(id);
139
- if (device.interfaces.includes(types_1.ScryptedInterface.Refresh)) {
140
- (async () => {
141
- while (polling && !watch) {
142
- // listen is not user initiated. an explicit refresh call would be.
143
- try {
144
- await this.refresh(id, event, false);
145
- }
146
- catch (e) {
147
- console.error('refresh ended by exception', e);
148
- break;
149
- }
150
- }
151
- })();
152
- }
153
- let lastData = undefined;
154
- let cb = (eventDetails, eventData) => {
155
- if (denoise && lastData === eventData)
156
- return;
157
- callback?.(eventDetails, eventData);
158
- };
159
- const wrappedRegister = super.listenDevice(id, options, cb);
160
- return new event_registry_1.EventListenerRegisterImpl(() => {
161
- wrappedRegister.removeListener();
162
- cb = undefined;
163
- callback = undefined;
164
- polling = false;
165
- });
166
- }
167
- refreshThrottles = {};
168
- getOrCreateRefreshThrottle(id, refreshInterface, userInitiated) {
169
- let throttle = this.refreshThrottles[id];
170
- if (throttle) {
171
- if (userInitiated)
172
- throttle.userInitiated = true;
173
- if (throttle.refreshInterface !== refreshInterface)
174
- throttle.refreshInterface = undefined;
175
- throttle.tailRefresh = true;
176
- return throttle;
177
- }
178
- const device = this.scrypted.getDevice(id);
179
- const logger = this.scrypted.getDeviceLogger(this.scrypted.findPluginDeviceById(id));
180
- if (!device.interfaces.includes(types_1.ScryptedInterface.Refresh))
181
- throw new Error('device does not implement refresh');
182
- // further refreshes will block
183
- const ret = this.refreshThrottles[id] = {
184
- promise: (async () => {
185
- let timeout = 30000;
186
- try {
187
- timeout = await device.getRefreshFrequency() * 1000;
188
- }
189
- catch (e) {
190
- }
191
- await (0, sleep_1.sleep)(timeout);
192
- try {
193
- const rt = this.refreshThrottles[id];
194
- if (!rt.tailRefresh)
195
- return;
196
- await device[plugin_device_1.RefreshSymbol](rt.refreshInterface, rt.userInitiated);
197
- }
198
- catch (e) {
199
- logger.log('e', 'Refresh failed');
200
- logger.log('e', e.toString());
201
- }
202
- finally {
203
- delete this.refreshThrottles[id];
204
- }
205
- })(),
206
- userInitiated,
207
- refreshInterface,
208
- tailRefresh: false,
209
- };
210
- // initial refresh does not block
211
- const promise = device[plugin_device_1.RefreshSymbol](ret.refreshInterface, ret.userInitiated);
212
- return {
213
- promise,
214
- refreshInterface,
215
- userInitiated,
216
- tailRefresh: false,
217
- };
218
- }
219
- async refresh(id, refreshInterface, userInitiated) {
220
- const throttle = this.getOrCreateRefreshThrottle(id, refreshInterface, userInitiated);
221
- return throttle.promise;
222
- }
223
- }
224
- exports.ScryptedStateManager = ScryptedStateManager;
225
- function isSameValue(value1, value2) {
226
- return value1 === value2 || JSON.stringify(value1) === JSON.stringify(value2);
227
- }
228
- function setState(pluginDevice, property, value) {
229
- // device may have been deleted.
230
- if (!pluginDevice.state)
231
- return;
232
- if (!pluginDevice.state[property])
233
- pluginDevice.state[property] = {};
234
- const state = pluginDevice.state[property];
235
- const changed = !isSameValue(value, state.value);
236
- state.value = value;
237
- return changed;
238
- }
239
- exports.setState = setState;
240
- function getState(pluginDevice, property) {
241
- const ret = pluginDevice.state?.[property]?.value;
242
- if (typeof ret === 'object')
243
- return JSON.parse(JSON.stringify(ret));
244
- return ret;
245
- }
246
- exports.getState = getState;
247
- //# sourceMappingURL=state.js.map
package/dist/state.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function newThread<T>(thread: () => Promise<T>): Promise<T>;
2
- export declare function newThread<V, T>(params: V, thread: (params: V) => Promise<T>): Promise<T>;
3
- export declare function newThread<M, V, T>(modules: M, params: V, thread: (params: M & V) => Promise<T>): Promise<T>;
package/dist/threading.js DELETED
@@ -1,93 +0,0 @@
1
- "use strict";
2
- // WARNING: threading.ts does not work because RpcPeer transpilation does not include readonly static properties in the class definition
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.newThread = void 0;
8
- const worker_threads_1 = __importDefault(require("worker_threads"));
9
- const rpc_1 = require("./rpc");
10
- const v8_1 = __importDefault(require("v8"));
11
- async function newThread(...args) {
12
- let params = {};
13
- let modules = {};
14
- let thread;
15
- if (args[2]) {
16
- modules = args[0];
17
- params = args[1];
18
- thread = args[2];
19
- }
20
- else if (args[1]) {
21
- params = args[0];
22
- thread = args[1];
23
- }
24
- else {
25
- thread = args[0];
26
- }
27
- const m = (customRequire, RpcPeer) => {
28
- if (customRequire) {
29
- const g = global;
30
- g[customRequire] = g.require;
31
- }
32
- const thread_v8 = global.require('v8');
33
- const thread_worker_threads = global.require('worker_threads');
34
- const thread_vm = global.require('vm');
35
- const mainPeer = new RpcPeer('thread', 'main', (message, reject) => {
36
- try {
37
- thread_worker_threads.parentPort.postMessage(thread_v8.serialize(message));
38
- }
39
- catch (e) {
40
- reject?.(e);
41
- }
42
- });
43
- mainPeer.transportSafeArgumentTypes.add(Buffer.name);
44
- mainPeer.transportSafeArgumentTypes.add(Uint8Array.name);
45
- thread_worker_threads.parentPort.on('message', (message) => mainPeer.handleMessage(thread_v8.deserialize(message)));
46
- mainPeer.params.eval = async (script, moduleNames, paramNames, ...paramValues) => {
47
- const f = thread_vm.compileFunction(`return (${script})`, paramNames, {
48
- filename: 'script.js',
49
- });
50
- const params = {};
51
- for (const module of moduleNames) {
52
- params[module] = global.require(module);
53
- }
54
- for (let i = 0; i < paramNames.length; i++) {
55
- params[paramNames[i]] = paramValues[i];
56
- }
57
- const c = await f(...paramValues);
58
- return await c(params);
59
- };
60
- };
61
- const rpcSource = (0, rpc_1.getEvalSource)();
62
- let customRequire = params.customRequire || '';
63
- const workerSource = `
64
- const {RpcPeer} = ${rpcSource};
65
-
66
- (${m})("${customRequire}", RpcPeer)`;
67
- const worker = new worker_threads_1.default.Worker(workerSource, {
68
- eval: true,
69
- });
70
- const threadPeer = new rpc_1.RpcPeer('main', 'thread', (message, reject) => {
71
- try {
72
- worker.postMessage(v8_1.default.serialize(message));
73
- }
74
- catch (e) {
75
- reject?.(e);
76
- }
77
- });
78
- threadPeer.transportSafeArgumentTypes.add(Buffer.name);
79
- threadPeer.transportSafeArgumentTypes.add(Uint8Array.name);
80
- worker.on('message', (message) => threadPeer.handleMessage(v8_1.default.deserialize(message)));
81
- const e = await threadPeer.getParam('eval');
82
- const moduleNames = Object.keys(modules);
83
- const paramNames = Object.keys(params);
84
- const paramValues = Object.values(params);
85
- try {
86
- return await e(thread.toString(), moduleNames, paramNames, ...paramValues);
87
- }
88
- finally {
89
- worker.terminate();
90
- }
91
- }
92
- exports.newThread = newThread;
93
- //# sourceMappingURL=threading.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"threading.js","sourceRoot":"","sources":["../src/threading.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare const ONE_DAY_MILLISECONDS = 86400000;
2
- export declare const ONE_YEAR_MILLISECONDS: number;
3
- export declare class UserToken {
4
- username: string;
5
- aclId: string;
6
- timestamp: number;
7
- duration: number;
8
- constructor(username: string, aclId: string, timestamp?: number, duration?: number);
9
- static validateToken(token: string): UserToken;
10
- toString(): string;
11
- }
package/dist/usertoken.js DELETED
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserToken = exports.ONE_YEAR_MILLISECONDS = exports.ONE_DAY_MILLISECONDS = void 0;
4
- exports.ONE_DAY_MILLISECONDS = 86400000;
5
- exports.ONE_YEAR_MILLISECONDS = exports.ONE_DAY_MILLISECONDS * 365;
6
- class UserToken {
7
- username;
8
- aclId;
9
- timestamp;
10
- duration;
11
- constructor(username, aclId, timestamp = Date.now(), duration = exports.ONE_DAY_MILLISECONDS) {
12
- this.username = username;
13
- this.aclId = aclId;
14
- this.timestamp = timestamp;
15
- this.duration = duration;
16
- }
17
- static validateToken(token) {
18
- if (!token)
19
- throw new Error('Token not found.');
20
- let json;
21
- try {
22
- json = JSON.parse(token);
23
- }
24
- catch (e) {
25
- throw new Error('Token malformed, unparseable.');
26
- }
27
- let { u, a, t, d } = json;
28
- u = u?.toString();
29
- t = parseInt(t?.toString());
30
- d = parseInt(d?.toString());
31
- a = a?.toString();
32
- if (!u || !t || !d)
33
- throw new Error('Token malformed, missing properties.');
34
- if (d > exports.ONE_YEAR_MILLISECONDS)
35
- throw new Error('Token duration too long.');
36
- if (t > Date.now())
37
- throw new Error('Token from the future.');
38
- if (t + d < Date.now())
39
- throw new Error('Token expired.');
40
- return new UserToken(u, a, t, d);
41
- }
42
- toString() {
43
- return JSON.stringify({
44
- u: this.username,
45
- a: this.aclId,
46
- t: this.timestamp,
47
- d: this.duration,
48
- });
49
- }
50
- }
51
- exports.UserToken = UserToken;
52
- //# sourceMappingURL=usertoken.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usertoken.js","sourceRoot":"","sources":["../src/usertoken.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAChC,QAAA,qBAAqB,GAAG,4BAAoB,GAAG,GAAG,CAAC;AAEhE,MAAa,SAAS;IACC;IAAyB;IAAsB;IAA+B;IAAjG,YAAmB,QAAgB,EAAS,KAAa,EAAS,YAAY,IAAI,CAAC,GAAG,EAAE,EAAS,WAAW,4BAAoB;QAA7G,aAAQ,GAAR,QAAQ,CAAQ;QAAS,UAAK,GAAL,KAAK,CAAQ;QAAS,cAAS,GAAT,SAAS,CAAa;QAAS,aAAQ,GAAR,QAAQ,CAAuB;IAChI,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAa;QAC9B,IAAI,CAAC,KAAK;YACN,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAExC,IAAI,IAKH,CAAC;QACF,IAAI;YACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,OAAO,CAAC,EAAE;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;QACD,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QAC1B,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;QAClB,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5B,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5B,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,6BAAqB;YACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,OAAO,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,CAAC,EAAE,IAAI,CAAC,QAAQ;YAChB,CAAC,EAAE,IAAI,CAAC,KAAK;YACb,CAAC,EAAE,IAAI,CAAC,SAAS;YACjB,CAAC,EAAE,IAAI,CAAC,QAAQ;SACnB,CAAC,CAAA;IACN,CAAC;CACJ;AA5CD,8BA4CC"}