@camera.ui/camera-ui-wasm-motion 0.0.5 → 0.0.7

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.
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_MOTION_AREA = 500;
2
+ export declare const DEFAULT_THRESHOLD = 20;
3
+ export declare const DEFAULT_BLUR_RADIUS = 3;
4
+ export declare const DEFAULT_DILATION_SIZE = 15;
@@ -0,0 +1,5 @@
1
+ export const DEFAULT_MOTION_AREA = 500;
2
+ export const DEFAULT_THRESHOLD = 20;
3
+ export const DEFAULT_BLUR_RADIUS = 3;
4
+ export const DEFAULT_DILATION_SIZE = 15;
5
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}
@@ -1,24 +1,31 @@
1
1
  import type { CameraDevice, CameraStorage, PluginAPI, PluginLogger } from '@camera.ui/types';
2
+ import type { CameraStorageValues } from './types.js';
2
3
  export declare class CameraDetector {
3
- cameraStorage: CameraStorage;
4
+ cameraStorage: CameraStorage<CameraStorageValues>;
4
5
  private api;
5
6
  private cameraDevice;
6
7
  private logger;
7
8
  private started;
8
9
  private closed;
10
+ private restarting;
9
11
  private wasmModule?;
10
- private firstFramePtr;
12
+ private previousFramePtr;
13
+ private framePtr;
14
+ private boxesPtr;
11
15
  private tempPtr;
12
16
  private visitedPtr;
13
17
  private queuePtr;
14
18
  private memoryBuffer;
15
- private lastFrameTime;
16
19
  constructor(cameraDevice: CameraDevice, api: PluginAPI, logger: PluginLogger);
17
20
  start(): Promise<void>;
21
+ private setupMemory;
18
22
  close(): void;
19
- restart(): void;
23
+ restart(): Promise<void>;
24
+ private reset;
20
25
  private startDetection;
21
- private setupFirstFrame;
26
+ private setupPreviousFrame;
22
27
  private getMotionData;
23
28
  private createCameraStorage;
29
+ private unpinSafe;
30
+ private collectSafe;
24
31
  }
package/dist/detector.js CHANGED
@@ -2,11 +2,7 @@ import { instantiate } from '@assemblyscript/loader';
2
2
  import fs from 'node:fs';
3
3
  import { dirname, resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
- const defaultThreshold = 50;
6
- const defaultBlurRadius = 9;
7
- const defaultDilationSize = 3;
8
- const defaultMotionArea = 250;
9
- const defaultReferenceFrameFrequency = 5;
5
+ import { DEFAULT_BLUR_RADIUS, DEFAULT_DILATION_SIZE, DEFAULT_MOTION_AREA, DEFAULT_THRESHOLD } from './defaults.js';
10
6
  const __filename = fileURLToPath(import.meta.url);
11
7
  const __dirname = dirname(__filename);
12
8
  export class CameraDetector {
@@ -16,14 +12,15 @@ export class CameraDetector {
16
12
  logger;
17
13
  started = false;
18
14
  closed = false;
15
+ restarting = false;
19
16
  wasmModule;
20
- firstFramePtr = null;
17
+ previousFramePtr = null;
18
+ framePtr = 0;
19
+ boxesPtr = 0;
21
20
  tempPtr = 0;
22
21
  visitedPtr = 0;
23
22
  queuePtr = 0;
24
- // private boxesPtr = 0;
25
23
  memoryBuffer;
26
- lastFrameTime = 0;
27
24
  constructor(cameraDevice, api, logger) {
28
25
  this.api = api;
29
26
  this.cameraDevice = cameraDevice;
@@ -53,20 +50,11 @@ export class CameraDetector {
53
50
  },
54
51
  env: {
55
52
  abort: (msg, file, line, column) => {
56
- this.logger.error('WASM Error message: ', this.wasmModule.exports.__getString(msg));
57
- this.logger.error('WASM Error file: ', this.wasmModule.exports.__getString(file));
58
- this.logger.error('WASM Error line: ', line);
59
- this.logger.error('WASM Error column: ', column);
53
+ this.logger.warn(`WASM abort message: ${this.wasmModule.exports.__getString(msg)} at ${this.wasmModule.exports.__getString(file)}:${line}:${column}`);
60
54
  },
61
55
  },
62
56
  });
63
- this.memoryBuffer = new Uint8Array(this.wasmModule.exports.memory.buffer);
64
- const width = this.cameraDevice.frameWorkerSettings.resolution;
65
- const maxFrameLength = width * width;
66
- this.tempPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
67
- this.visitedPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
68
- this.queuePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
69
- // this.boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
57
+ this.setupMemory();
70
58
  }
71
59
  this.startDetection().catch((error) => {
72
60
  this.logger.error(this.cameraDevice.name, 'Error generating frames', error);
@@ -74,182 +62,227 @@ export class CameraDetector {
74
62
  });
75
63
  }
76
64
  }
65
+ setupMemory() {
66
+ if (!this.wasmModule) {
67
+ throw new Error('Wasm not initiated');
68
+ }
69
+ this.memoryBuffer = new Uint8Array(this.wasmModule.exports.memory.buffer);
70
+ const width = this.cameraDevice.frameWorkerSettings.resolution;
71
+ const maxFrameLength = width * width;
72
+ this.tempPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
73
+ this.visitedPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
74
+ this.queuePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
75
+ // this.boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
76
+ }
77
77
  close() {
78
78
  if (this.started && !this.closed) {
79
79
  this.started = false;
80
80
  this.closed = true;
81
81
  this.logger.log(`Stopping motion detection for camera ${this.cameraDevice.name}`);
82
+ this.cameraDevice.updateState('motion', { state: false, detections: [] });
82
83
  }
83
84
  }
84
- restart() {
85
+ async restart() {
86
+ if (this.restarting) {
87
+ return;
88
+ }
89
+ this.restarting = true;
85
90
  this.logger.log(`Restarting motion detection for camera ${this.cameraDevice.name}`);
86
91
  this.close();
92
+ this.reset();
93
+ await new Promise((resolve) => setTimeout(resolve, 1500));
94
+ this.wasmModule = undefined;
87
95
  if (this.cameraDevice.connected) {
88
- this.start();
96
+ await this.start();
89
97
  }
98
+ this.restarting = false;
99
+ }
100
+ reset() {
101
+ // Stellen Sie sicher, dass alle Pointer freigegeben werden
102
+ this.unpinSafe(this.previousFramePtr);
103
+ this.unpinSafe(this.tempPtr);
104
+ this.unpinSafe(this.visitedPtr);
105
+ this.unpinSafe(this.queuePtr);
106
+ this.unpinSafe(this.boxesPtr);
107
+ this.unpinSafe(this.framePtr);
108
+ // Setzen Sie alle Pointer auf null zurück
109
+ this.previousFramePtr = null;
110
+ this.framePtr = 0;
111
+ this.boxesPtr = 0;
112
+ this.tempPtr = 0;
113
+ this.visitedPtr = 0;
114
+ this.queuePtr = 0;
115
+ this.collectSafe();
116
+ // Setzen Sie den memoryBuffer zurück
117
+ this.memoryBuffer = new Uint8Array();
90
118
  }
91
119
  async startDetection() {
92
- try {
93
- for await (const frame of this.cameraDevice.getFrames()) {
94
- if (this.closed) {
95
- break;
96
- }
97
- const frameImage = await frame.toBuffer({
98
- format: {
99
- to: 'gray',
100
- },
120
+ for await (const frame of this.cameraDevice.getFrames()) {
121
+ if (this.closed || this.restarting) {
122
+ break;
123
+ }
124
+ const motionArea = this.cameraStorage.values.area;
125
+ const threshold = this.cameraStorage.values.threshold;
126
+ const blurRadius = this.cameraStorage.values.blurRadius;
127
+ const dilationSize = this.cameraStorage.values.dilationSize;
128
+ const frameImage = await frame.toBuffer({
129
+ format: {
130
+ to: 'gray',
131
+ },
132
+ });
133
+ if (this.closed || this.restarting) {
134
+ break;
135
+ }
136
+ const detections = [];
137
+ const dets = this.getMotionData(frameImage.image, frameImage.info.width, frameImage.info.height, motionArea, threshold, blurRadius, dilationSize);
138
+ for (const det of dets) {
139
+ detections.push({
140
+ label: 'motion',
141
+ confidence: 1,
142
+ boundingBox: [det[0], det[1], det[2], det[3]],
143
+ inputWidth: frameImage.info.width,
144
+ inputHeight: frameImage.info.height,
145
+ origWidth: frame.metadata.origWidth,
146
+ origHeight: frame.metadata.origHeight,
101
147
  });
102
- const detections = [];
103
- const dets = this.getMotionData(frameImage.image, frameImage.info.width, frameImage.info.height);
104
- for (const det of dets) {
105
- detections.push({
106
- label: 'motion',
107
- confidence: 1,
108
- boundingBox: [det[0], det[1], det[2], det[3]],
109
- inputWidth: frameImage.info.width,
110
- inputHeight: frameImage.info.height,
111
- origWidth: frame.metadata.origWidth,
112
- origHeight: frame.metadata.origHeight,
113
- });
114
- }
115
- await this.cameraDevice.updateState('motion', { detections: detections }, frame);
116
148
  }
117
- }
118
- catch (error) {
119
- this.logger.error(this.cameraDevice.name, 'Error generating frames', error);
149
+ await this.cameraDevice.updateState('motion', { detections: detections }, frame);
120
150
  }
121
151
  }
122
- setupFirstFrame(frame, width, height, blurRadius) {
123
- if (this.firstFramePtr !== null) {
124
- this.wasmModule.exports.__unpin(this.firstFramePtr);
125
- this.wasmModule.exports.__collect();
126
- this.firstFramePtr = null;
152
+ setupPreviousFrame(frame, width, height, blurRadius) {
153
+ if (this.previousFramePtr !== null) {
154
+ this.unpinSafe(this.previousFramePtr);
155
+ this.collectSafe();
156
+ this.previousFramePtr = null;
127
157
  }
128
158
  const frameLength = width * height;
129
159
  const framePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(frame));
130
160
  this.wasmModule.exports.stackBlur(framePtr, this.tempPtr, width, height, blurRadius);
131
- this.firstFramePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(new Uint8Array(this.memoryBuffer.buffer, framePtr, frameLength)));
132
- this.wasmModule.exports.__unpin(framePtr);
161
+ this.previousFramePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(new Uint8Array(this.memoryBuffer.buffer, framePtr, frameLength)));
162
+ this.unpinSafe(framePtr);
133
163
  }
134
- getMotionData(frame, width, height) {
164
+ getMotionData(frame, width, height, motionArea, threshold, blurRadius, dilationSize) {
135
165
  if (!this.wasmModule) {
136
166
  throw new Error('Wasm not initiated');
137
167
  }
138
- const motionArea = this.cameraStorage.values.area;
139
- const threshold = this.cameraStorage.values.threshold;
140
- const blurRadius = this.cameraStorage.values.blurRadius;
141
- const dilationSize = this.cameraStorage.values.dilationSize;
142
- const referenceFrameFrequency = this.cameraStorage.values.referenceFrameFrequency;
143
- const now = Date.now();
144
- if (this.firstFramePtr === null || now - this.lastFrameTime > referenceFrameFrequency * 1000) {
145
- this.lastFrameTime = now;
146
- this.setupFirstFrame(frame, width, height, blurRadius);
147
- return [];
168
+ try {
169
+ if (this.previousFramePtr === null) {
170
+ this.setupPreviousFrame(frame, width, height, blurRadius);
171
+ return [];
172
+ }
173
+ const frameLength = width * height;
174
+ this.framePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(frame));
175
+ this.boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(frameLength, this.wasmModule.exports.Uint8Array_ID.value));
176
+ this.wasmModule.exports.stackBlur(this.framePtr, this.tempPtr, width, height, blurRadius);
177
+ this.wasmModule.exports.createMotionMask(this.previousFramePtr, this.framePtr, width, height, threshold);
178
+ this.wasmModule.exports.dilate(this.framePtr, this.tempPtr, width, height, dilationSize);
179
+ const numBoxes = this.wasmModule.exports.findBoundingBoxes(this.framePtr, this.visitedPtr, this.queuePtr, this.boxesPtr, width, height, motionArea);
180
+ const boxes = [];
181
+ const boxesArray = new Int32Array(this.wasmModule.exports.memory.buffer, this.boxesPtr, numBoxes * 4);
182
+ for (let i = 0; i < numBoxes; i++) {
183
+ const x = boxesArray[i * 4];
184
+ const y = boxesArray[i * 4 + 1];
185
+ const w = boxesArray[i * 4 + 2];
186
+ const h = boxesArray[i * 4 + 3];
187
+ boxes.push([x, y, x + w, y + h]);
188
+ }
189
+ this.unpinSafe(this.framePtr);
190
+ this.unpinSafe(this.boxesPtr);
191
+ this.collectSafe();
192
+ this.setupPreviousFrame(frame, width, height, blurRadius);
193
+ return boxes;
148
194
  }
149
- const frameLength = width * height;
150
- const framePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(frame));
151
- const boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(frameLength, this.wasmModule.exports.Uint8Array_ID.value));
152
- this.wasmModule.exports.stackBlur(framePtr, this.tempPtr, width, height, blurRadius);
153
- this.wasmModule.exports.createMotionMask(this.firstFramePtr, framePtr, width, height, threshold);
154
- this.wasmModule.exports.dilate(framePtr, this.tempPtr, width, height, dilationSize);
155
- const numBoxes = this.wasmModule.exports.findBoundingBoxes(framePtr, this.visitedPtr, this.queuePtr, boxesPtr, width, height, motionArea);
156
- const boxes = [];
157
- const boxesArray = new Int32Array(this.wasmModule.exports.memory.buffer, boxesPtr, numBoxes * 4);
158
- for (let i = 0; i < numBoxes; i++) {
159
- const x = boxesArray[i * 4];
160
- const y = boxesArray[i * 4 + 1];
161
- const w = boxesArray[i * 4 + 2];
162
- const h = boxesArray[i * 4 + 3];
163
- boxes.push([x, y, x + w, y + h]);
195
+ catch (error) {
196
+ this.logger.error(this.cameraDevice.name, 'Error generating frames', error);
197
+ return [];
164
198
  }
165
- // console.log('Bounding boxes:', boxes);
166
- this.wasmModule.exports.__unpin(framePtr);
167
- this.wasmModule.exports.__unpin(boxesPtr);
168
- this.wasmModule.exports.__collect();
169
- return boxes;
170
199
  }
171
200
  createCameraStorage() {
172
- let cameraStorage = this.api.storageController.getCameraStorage(this.cameraDevice.id);
173
- if (!cameraStorage) {
174
- cameraStorage = this.api.storageController.createCameraStorage(this, this.cameraDevice.id, {
175
- area: {
176
- type: 'number',
177
- key: 'area',
178
- title: 'Area',
179
- description: 'Minimum area for a motion detection',
180
- store: true,
181
- defaultValue: defaultMotionArea,
182
- minimum: 10,
183
- maximum: 1000,
184
- step: 1,
185
- required: true,
186
- onSet: async (newValue, oldValue) => {
187
- this.logger.log(this.cameraDevice.name, `Motion area changed from ${oldValue} to ${newValue}`);
188
- },
201
+ const cameraStorage = this.api.storageController.createCameraStorage(this, this.cameraDevice.id, {
202
+ area: {
203
+ type: 'number',
204
+ key: 'area',
205
+ title: 'Area',
206
+ description: 'Minimum area for a motion detection',
207
+ store: true,
208
+ defaultValue: DEFAULT_MOTION_AREA,
209
+ minimum: 10,
210
+ maximum: 1000,
211
+ step: 1,
212
+ required: true,
213
+ onSet: async (newValue, oldValue) => {
214
+ this.logger.log(this.cameraDevice.name, `Motion area changed from ${oldValue} to ${newValue}`);
215
+ this.restart();
189
216
  },
190
- threshold: {
191
- type: 'number',
192
- key: 'threshold',
193
- title: 'Threshold',
194
- description: 'Threshold for motion detection',
195
- store: true,
196
- defaultValue: defaultThreshold,
197
- minimum: 1,
198
- maximum: 255,
199
- step: 1,
200
- required: true,
201
- onSet: async (newValue, oldValue) => {
202
- this.logger.log(this.cameraDevice.name, `Motion threshold changed from ${oldValue} to ${newValue}`);
203
- },
217
+ },
218
+ threshold: {
219
+ type: 'number',
220
+ key: 'threshold',
221
+ title: 'Threshold',
222
+ description: 'Threshold for motion detection',
223
+ store: true,
224
+ defaultValue: DEFAULT_THRESHOLD,
225
+ minimum: 1,
226
+ maximum: 255,
227
+ step: 1,
228
+ required: true,
229
+ onSet: async (newValue, oldValue) => {
230
+ this.logger.log(this.cameraDevice.name, `Motion threshold changed from ${oldValue} to ${newValue}`);
231
+ this.restart();
204
232
  },
205
- blurRadius: {
206
- type: 'number',
207
- key: 'blurRadius',
208
- title: 'Blur Radius',
209
- description: 'Blur radius for motion detection',
210
- store: true,
211
- defaultValue: defaultBlurRadius,
212
- minimum: 1,
213
- maximum: 21,
214
- step: 1,
215
- required: true,
216
- onSet: async (newValue, oldValue) => {
217
- this.logger.log(this.cameraDevice.name, `Motion blur radius changed from ${oldValue} to ${newValue}`);
218
- },
233
+ },
234
+ blurRadius: {
235
+ type: 'number',
236
+ key: 'blurRadius',
237
+ title: 'Blur Radius',
238
+ description: 'Blur radius for motion detection',
239
+ store: true,
240
+ defaultValue: DEFAULT_BLUR_RADIUS,
241
+ minimum: 1,
242
+ maximum: 21,
243
+ step: 1,
244
+ required: true,
245
+ onSet: async (newValue, oldValue) => {
246
+ this.logger.log(this.cameraDevice.name, `Motion blur radius changed from ${oldValue} to ${newValue}`);
247
+ this.restart();
219
248
  },
220
- dilationSize: {
221
- type: 'number',
222
- key: 'dilationSize',
223
- title: 'Dilation Size',
224
- description: 'Dilation size for motion detection',
225
- store: true,
226
- defaultValue: defaultDilationSize,
227
- minimum: 1,
228
- maximum: 21,
229
- step: 1,
230
- required: true,
231
- onSet: async (newValue, oldValue) => {
232
- this.logger.log(this.cameraDevice.name, `Motion dilation size changed from ${oldValue} to ${newValue}`);
233
- },
249
+ },
250
+ dilationSize: {
251
+ type: 'number',
252
+ key: 'dilationSize',
253
+ title: 'Dilation Size',
254
+ description: 'Dilation size for motion detection',
255
+ store: true,
256
+ defaultValue: DEFAULT_DILATION_SIZE,
257
+ minimum: 1,
258
+ maximum: 21,
259
+ step: 1,
260
+ required: true,
261
+ onSet: async (newValue, oldValue) => {
262
+ this.logger.log(this.cameraDevice.name, `Motion dilation size changed from ${oldValue} to ${newValue}`);
263
+ this.restart();
234
264
  },
235
- referenceFrameFrequency: {
236
- type: 'number',
237
- key: 'referenceFrameFrequency',
238
- title: 'Reference Frame Frequency',
239
- description: 'Frequency to update the reference frame',
240
- store: true,
241
- defaultValue: defaultReferenceFrameFrequency,
242
- minimum: 1,
243
- maximum: 60,
244
- step: 1,
245
- required: true,
246
- onSet: async (newValue, oldValue) => {
247
- this.logger.log(this.cameraDevice.name, `Motion reference frame frequency changed from ${oldValue}s to ${newValue}s`);
248
- },
249
- },
250
- });
251
- }
265
+ },
266
+ });
252
267
  return cameraStorage;
253
268
  }
269
+ unpinSafe(ptr) {
270
+ if (ptr !== null) {
271
+ try {
272
+ this.wasmModule.exports.__unpin(ptr);
273
+ }
274
+ catch {
275
+ //
276
+ }
277
+ }
278
+ }
279
+ collectSafe() {
280
+ try {
281
+ this.wasmModule.exports.__collect();
282
+ }
283
+ catch {
284
+ //
285
+ }
286
+ }
254
287
  }
255
288
  //# sourceMappingURL=detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface CameraStorageValues {
2
+ area: number;
3
+ threshold: number;
4
+ blurRadius: number;
5
+ dilationSize: number;
6
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -78,6 +78,11 @@ declare namespace __AdaptedExports {
78
78
  /** @type `u32` */
79
79
  get value(): number
80
80
  };
81
+ /** assembly/index/Int32Array_ID */
82
+ export const Int32Array_ID: {
83
+ /** @type `u32` */
84
+ get value(): number
85
+ };
81
86
  /**
82
87
  * assembly/test/blurFrameSIMD
83
88
  * @param framePtr `usize`
@@ -37,6 +37,13 @@ export async function instantiate(module, imports = {}) {
37
37
  return exports.Uint8Array_ID.value >>> 0;
38
38
  }
39
39
  },
40
+ Int32Array_ID: {
41
+ // assembly/index/Int32Array_ID: u32
42
+ valueOf() { return this.value; },
43
+ get value() {
44
+ return exports.Int32Array_ID.value >>> 0;
45
+ }
46
+ },
40
47
  }, exports);
41
48
  function __liftString(pointer) {
42
49
  if (!pointer) return null;
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "WASM Motion",
3
3
  "name": "@camera.ui/camera-ui-wasm-motion",
4
- "version": "0.0.5",
4
+ "version": "0.0.7",
5
5
  "description": "camera.ui wasm motion detection plugin",
6
6
  "author": "seydx (https://github.com/seydx/camera.ui)",
7
7
  "main": "./dist/index.js",
@@ -16,10 +16,10 @@
16
16
  "prepublishOnly": "npm i --package-lock-only && npm run lint && npm run format && npm run build"
17
17
  },
18
18
  "devDependencies": {
19
- "@camera.ui/types": "^0.0.57",
19
+ "@camera.ui/types": "^0.0.58",
20
20
  "@rushstack/eslint-patch": "^1.10.4",
21
21
  "@types/fs-extra": "^11.0.4",
22
- "@types/node": "^22.4.2",
22
+ "@types/node": "^22.5.0",
23
23
  "@types/ws": "^8.5.12",
24
24
  "@typescript-eslint/eslint-plugin": "^8.2.0",
25
25
  "@typescript-eslint/parser": "^8.2.0",
@@ -42,7 +42,7 @@
42
42
  "url": "https://github.com/seydx/camera.ui/issues"
43
43
  },
44
44
  "engines": {
45
- "camera.ui": ">=0.0.1",
45
+ "camera.ui": ">=0.0.17",
46
46
  "node": ">=18.12.0"
47
47
  },
48
48
  "homepage": "https://github.com/seydx/camera.ui#readme",