@camera.ui/camera-ui-homekit 0.0.27 → 0.0.29

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 (59) hide show
  1. package/bundle.zip +0 -0
  2. package/package.json +17 -34
  3. package/CHANGELOG.md +0 -8
  4. package/CONTRIBUTING.md +0 -1
  5. package/LICENSE.md +0 -22
  6. package/README.md +0 -1
  7. package/dist/camera/accessory.d.ts +0 -28
  8. package/dist/camera/accessory.js +0 -381
  9. package/dist/camera/accessory.js.map +0 -1
  10. package/dist/camera/recordingDelegate.d.ts +0 -27
  11. package/dist/camera/recordingDelegate.js +0 -264
  12. package/dist/camera/recordingDelegate.js.map +0 -1
  13. package/dist/camera/services.d.ts +0 -28
  14. package/dist/camera/services.js +0 -202
  15. package/dist/camera/services.js.map +0 -1
  16. package/dist/camera/sessionWrapper.d.ts +0 -40
  17. package/dist/camera/sessionWrapper.js +0 -517
  18. package/dist/camera/sessionWrapper.js.map +0 -1
  19. package/dist/camera/streamingDelegate.d.ts +0 -14
  20. package/dist/camera/streamingDelegate.js +0 -100
  21. package/dist/camera/streamingDelegate.js.map +0 -1
  22. package/dist/camera/streamingServer.d.ts +0 -26
  23. package/dist/camera/streamingServer.js +0 -145
  24. package/dist/camera/streamingServer.js.map +0 -1
  25. package/dist/constants.d.ts +0 -1
  26. package/dist/constants.js +0 -7
  27. package/dist/constants.js.map +0 -1
  28. package/dist/crypto.d.ts +0 -1
  29. package/dist/crypto.js +0 -34
  30. package/dist/crypto.js.map +0 -1
  31. package/dist/index.d.ts +0 -16
  32. package/dist/index.js +0 -53
  33. package/dist/index.js.map +0 -1
  34. package/dist/types.d.ts +0 -16
  35. package/dist/types.js +0 -2
  36. package/dist/types.js.map +0 -1
  37. package/dist/utils/mac.d.ts +0 -4
  38. package/dist/utils/mac.js +0 -19
  39. package/dist/utils/mac.js.map +0 -1
  40. package/dist/utils/opus-repacketizer.d.ts +0 -7
  41. package/dist/utils/opus-repacketizer.js +0 -163
  42. package/dist/utils/opus-repacketizer.js.map +0 -1
  43. package/dist/utils/processor.d.ts +0 -85
  44. package/dist/utils/processor.js +0 -475
  45. package/dist/utils/processor.js.map +0 -1
  46. package/dist/utils/return-audio-transcoder.d.ts +0 -39
  47. package/dist/utils/return-audio-transcoder.js +0 -82
  48. package/dist/utils/return-audio-transcoder.js.map +0 -1
  49. package/dist/utils/srtp.d.ts +0 -8
  50. package/dist/utils/srtp.js +0 -22
  51. package/dist/utils/srtp.js.map +0 -1
  52. package/dist/utils/utils.d.ts +0 -10
  53. package/dist/utils/utils.js +0 -38
  54. package/dist/utils/utils.js.map +0 -1
  55. package/media/cameraOffline.png +0 -0
  56. package/media/maxStreams.png +0 -0
  57. package/media/noSnapshot.png +0 -0
  58. package/media/privacyMode.png +0 -0
  59. package/scripts/install-optional-deps.js +0 -17
@@ -1,100 +0,0 @@
1
- import { FFMpegHardware } from '@camera.ui/common/cameraUtils';
2
- import { readFile } from 'node:fs';
3
- import { dirname, resolve } from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- import { promisify } from 'node:util';
6
- import { StreamingSessionWrapper } from './sessionWrapper.js';
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = dirname(__filename);
9
- function getDurationSeconds(start) {
10
- return (Date.now() - start) / 1000;
11
- }
12
- const readFileAsync = promisify(readFile);
13
- const noSnapshotPath = resolve(__dirname, '../../media/noSnapshot.png');
14
- export class StreamingDelegate {
15
- cameraAccessory;
16
- cameraDevice;
17
- logger;
18
- sessions = {};
19
- ffmpegHardware;
20
- constructor(cameraAccessory, cameraDevice, logger) {
21
- this.cameraAccessory = cameraAccessory;
22
- this.cameraDevice = cameraDevice;
23
- this.logger = logger;
24
- this.ffmpegHardware = new FFMpegHardware();
25
- }
26
- async handleSnapshotRequest(request, callback) {
27
- try {
28
- this.logger.log(this.cameraAccessory.logPrefix, 'Fetching snapshot', request);
29
- const snapshot = await this.cameraDevice.snapshot();
30
- let snapshotBuffer = snapshot ? Buffer.from(snapshot) : undefined;
31
- if (!snapshotBuffer || snapshotBuffer.length === 0) {
32
- this.logger.log(this.cameraAccessory.logPrefix, 'No snapshot available, sending offline image');
33
- snapshotBuffer = await readFileAsync(noSnapshotPath);
34
- }
35
- callback(undefined, snapshotBuffer);
36
- }
37
- catch (error) {
38
- this.logger.error(this.cameraAccessory.logPrefix, 'Error fetching snapshot', error);
39
- callback(error);
40
- }
41
- }
42
- async prepareStream(request, callback) {
43
- const start = Date.now();
44
- this.logger.debug(this.cameraAccessory.logPrefix, 'Preparing Stream');
45
- const ffmpegPath = await this.cameraAccessory.api.coreManager.getFFmpegPath();
46
- this.ffmpegHardware.setFfmpegPath(ffmpegPath);
47
- try {
48
- const session = new StreamingSessionWrapper(this.cameraAccessory, this.cameraDevice, request, start, this.ffmpegHardware, this.logger);
49
- await session.prepare();
50
- this.sessions[request.sessionID] = session;
51
- this.logger.debug(this.cameraAccessory.logPrefix, `Stream Prepared (${getDurationSeconds(start)}s)`);
52
- callback(undefined, {
53
- audio: {
54
- port: session.audioSplitter.port,
55
- ssrc: session.audioSsrc,
56
- srtp_key: session.audioSrtp.srtpKey,
57
- srtp_salt: session.audioSrtp.srtpSalt,
58
- },
59
- video: {
60
- port: session.videoSplitter.port,
61
- ssrc: session.videoSsrc,
62
- srtp_key: session.videoSrtp.srtpKey,
63
- srtp_salt: session.videoSrtp.srtpSalt,
64
- },
65
- });
66
- }
67
- catch (error) {
68
- this.logger.error(this.cameraAccessory.logPrefix, `Failed to prepare stream (${getDurationSeconds(start)}s)`, error);
69
- callback(error);
70
- }
71
- }
72
- async handleStreamRequest(request, callback) {
73
- const sessionID = request.sessionID;
74
- const session = this.sessions[sessionID];
75
- const requestType = request.type;
76
- if (!session) {
77
- callback(new Error('Cannot find session for stream ' + sessionID));
78
- return;
79
- }
80
- if (requestType === "start" /* StreamRequestTypes.START */) {
81
- this.logger.debug(this.cameraAccessory.logPrefix, `Starting stream (${getDurationSeconds(session.start)}s)`);
82
- try {
83
- await session.activate(request);
84
- }
85
- catch (error) {
86
- this.logger.error(this.cameraAccessory.logPrefix, 'Failed to starting stream', error);
87
- callback(new Error('Failed to activate stream'));
88
- return;
89
- }
90
- this.logger.log(this.cameraAccessory.logPrefix, `Streaming started (${getDurationSeconds(session.start)}s)`);
91
- }
92
- else if (requestType === "stop" /* StreamRequestTypes.STOP */) {
93
- this.logger.log(this.cameraAccessory.logPrefix, 'Stopped Live Stream');
94
- session.stop();
95
- delete this.sessions[sessionID];
96
- }
97
- callback();
98
- }
99
- }
100
- //# sourceMappingURL=streamingDelegate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamingDelegate.js","sourceRoot":"","sources":["../../src/camera/streamingDelegate.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import type { CameraDevice, LoggerService } from '@camera.ui/types';
2
- import type { Accessory } from 'hap-nodejs';
3
- import type { MP4Atom } from '../types.js';
4
- import type { CameraAccessory } from './accessory.js';
5
- export declare class MP4StreamingServer {
6
- debugMode: boolean;
7
- destroyed: boolean;
8
- private logger;
9
- private accessory;
10
- private cameraAccessory;
11
- private cameraDevice;
12
- private server?;
13
- private socket?;
14
- private childProcess?;
15
- private connectPromise?;
16
- private connectResolve?;
17
- private connectReject?;
18
- private isRemoteServer;
19
- constructor(logger: LoggerService, accessory: Accessory, cameraAccessory: CameraAccessory, cameraDevice: CameraDevice);
20
- createServer(ffmpegPath: string, ffmpegInput: Array<string>, videoOutputArgs: Array<string>, audioOutputArgs: Array<string>): Promise<void>;
21
- connectToServer(prebufferUrl: string): Promise<void>;
22
- destroy(): Promise<void>;
23
- generator(): AsyncGenerator<MP4Atom>;
24
- private handleConnection;
25
- private read;
26
- }
@@ -1,145 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { once } from 'node:events';
3
- import { createServer, Socket } from 'node:net';
4
- export class MP4StreamingServer {
5
- debugMode = false;
6
- destroyed = false;
7
- logger;
8
- accessory;
9
- cameraAccessory;
10
- cameraDevice;
11
- server;
12
- socket;
13
- childProcess;
14
- connectPromise;
15
- connectResolve;
16
- connectReject;
17
- isRemoteServer = false;
18
- constructor(logger, accessory, cameraAccessory, cameraDevice) {
19
- this.logger = logger;
20
- this.accessory = accessory;
21
- this.cameraAccessory = cameraAccessory;
22
- this.cameraDevice = cameraDevice;
23
- }
24
- async createServer(ffmpegPath, ffmpegInput, videoOutputArgs, audioOutputArgs) {
25
- this.isRemoteServer = false;
26
- this.connectPromise = new Promise((resolve, reject) => {
27
- this.connectResolve = resolve;
28
- this.connectReject = reject;
29
- });
30
- this.server = createServer(this.handleConnection.bind(this));
31
- const ffmpeg = ffmpegPath;
32
- const args = [
33
- ...ffmpegInput,
34
- ...videoOutputArgs,
35
- ...audioOutputArgs,
36
- '-fflags',
37
- '+genpts',
38
- '-reset_timestamps',
39
- '1',
40
- '-movflags',
41
- 'frag_keyframe+empty_moov+default_base_moof+skip_sidx+skip_trailer',
42
- '-f',
43
- 'mp4',
44
- ];
45
- const promise = once(this.server, 'listening');
46
- this.server.listen(); // listen on random port
47
- await promise;
48
- if (this.destroyed) {
49
- return;
50
- }
51
- const port = this.server.address().port;
52
- args.push('tcp://127.0.0.1:' + port);
53
- this.logger.debug(this.cameraAccessory.logPrefix, 'Recording command:', args.join(' '));
54
- this.childProcess = spawn(ffmpeg, args, { env: process.env, stdio: this.debugMode ? 'pipe' : 'ignore' });
55
- if (this.debugMode) {
56
- this.childProcess.stdout?.on('data', (data) => this.logger.debug(this.cameraAccessory.logPrefix, data.toString()));
57
- this.childProcess.stderr?.on('data', (data) => this.logger.debug(this.cameraAccessory.logPrefix, data.toString()));
58
- }
59
- }
60
- async connectToServer(prebufferUrl) {
61
- this.isRemoteServer = true;
62
- this.connectPromise = new Promise((resolve, reject) => {
63
- this.connectResolve = resolve;
64
- this.connectReject = reject;
65
- });
66
- const socketUrl = new URL(prebufferUrl);
67
- const socket = new Socket();
68
- this.handleConnection(socket);
69
- const promise = once(socket, 'connect');
70
- socket.connect(parseInt(socketUrl.port), socketUrl.hostname);
71
- await promise;
72
- this.logger.debug(this.cameraAccessory.logPrefix, 'Recording command: Remote server');
73
- }
74
- async destroy() {
75
- this.socket?.destroy();
76
- this.childProcess?.kill('SIGKILL');
77
- this.server = undefined;
78
- this.socket = undefined;
79
- this.childProcess = undefined;
80
- if (this.connectPromise) {
81
- this.connectReject?.(new Error('Destroyed'));
82
- this.connectPromise = undefined;
83
- }
84
- this.destroyed = true;
85
- }
86
- async *generator() {
87
- await this.connectPromise;
88
- this.connectPromise = undefined;
89
- if (!this.socket || (!this.isRemoteServer && !this.childProcess)) {
90
- throw new Error('Unexpected state!');
91
- }
92
- while (true) {
93
- const header = await this.read(8);
94
- const length = header.readInt32BE(0) - 8;
95
- const type = header.subarray(4).toString();
96
- const data = await this.read(length);
97
- yield {
98
- header: header,
99
- length: length,
100
- type: type,
101
- data: data,
102
- };
103
- }
104
- }
105
- handleConnection(socket) {
106
- this.server?.close(); // don't accept any further clients
107
- this.socket = socket;
108
- this.connectResolve?.();
109
- }
110
- async read(length) {
111
- if (!this.socket) {
112
- throw Error('FFMPEG tried reading from closed socket!');
113
- }
114
- if (!length) {
115
- return Buffer.alloc(0);
116
- }
117
- const value = this.socket.read(length);
118
- if (value) {
119
- return value;
120
- }
121
- return new Promise((resolve, reject) => {
122
- const readHandler = () => {
123
- const value = this.socket.read(length);
124
- if (value) {
125
- cleanup();
126
- resolve(value);
127
- }
128
- };
129
- const endHandler = () => {
130
- cleanup();
131
- reject(new Error(`FFMPEG socket closed during read for ${length} bytes!`));
132
- };
133
- const cleanup = () => {
134
- this.socket?.removeListener('readable', readHandler);
135
- this.socket?.removeListener('close', endHandler);
136
- };
137
- if (!this.socket) {
138
- throw new Error('FFMPEG socket is closed now!');
139
- }
140
- this.socket.on('readable', readHandler);
141
- this.socket.on('close', endHandler);
142
- });
143
- }
144
- }
145
- //# sourceMappingURL=streamingServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamingServer.js","sourceRoot":"","sources":["../../src/camera/streamingServer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const baseAdvertiser: string[];
package/dist/constants.js DELETED
@@ -1,7 +0,0 @@
1
- export const baseAdvertiser = [
2
- `${"ciao" /* MDNSAdvertiser.CIAO */} (recommended)`,
3
- `${"avahi" /* MDNSAdvertiser.AVAHI */} (recommended, Linux only)`,
4
- `${"bonjour-hap" /* MDNSAdvertiser.BONJOUR */} (deprecated)`,
5
- `${"resolved" /* MDNSAdvertiser.RESOLVED */} (experimental)`,
6
- ];
7
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,GAAG,gCAAmB,gBAAgB;IACtC,GAAG,kCAAoB,4BAA4B;IACnD,GAAG,0CAAsB,eAAe;IACxC,GAAG,wCAAuB,iBAAiB;CAC5C,CAAC"}
package/dist/crypto.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/crypto.js DELETED
@@ -1,34 +0,0 @@
1
- import crypto from 'node:crypto';
2
- if (!crypto.getCiphers().includes('chacha20-poly1305')) {
3
- try {
4
- const { default: chacha } = await import('chacha');
5
- const originalGetCiphers = crypto.getCiphers;
6
- const originalCreateCipheriv = crypto.createCipheriv;
7
- const originalCreateDecipheriv = crypto.createDecipheriv;
8
- crypto.getCiphers = () => {
9
- const ciphers = originalGetCiphers();
10
- ciphers.push('chacha20-poly1305');
11
- return ciphers;
12
- };
13
- crypto.createCipheriv = (algorithm, key, iv, options) => {
14
- if (algorithm !== 'chacha20-poly1305') {
15
- return originalCreateCipheriv(algorithm, key, iv, options);
16
- }
17
- else {
18
- return chacha.createCipher(key, iv);
19
- }
20
- };
21
- crypto.createDecipheriv = (algorithm, key, iv, options) => {
22
- if (algorithm !== 'chacha20-poly1305') {
23
- return originalCreateDecipheriv(algorithm, key, iv, options);
24
- }
25
- else {
26
- return chacha.createDecipher(key, iv);
27
- }
28
- };
29
- }
30
- catch {
31
- //
32
- }
33
- }
34
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7C,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;QACrD,MAAM,wBAAwB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEzD,MAAM,CAAC,UAAU,GAAG,GAAa,EAAE;YACjC,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEF,MAAM,CAAC,cAAc,GAAG,CAAC,SAAc,EAAE,GAAQ,EAAE,EAAO,EAAE,OAAY,EAAE,EAAE;YAC1E,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;gBACtC,OAAO,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,GAAG,CAAC,SAAc,EAAE,GAAQ,EAAE,EAAO,EAAE,OAAa,EAAE,EAAE;YAC7E,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;gBACtC,OAAO,wBAAwB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,EAAE;IACJ,CAAC;AACH,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import type { BasePlugin, CameraDevice, FormSubmitResponse, LoggerService, PluginAPI } from '@camera.ui/types';
2
- import type { Accessory, MacAddress } from 'hap-nodejs';
3
- export default class HomeKit implements BasePlugin {
4
- publishedExternalAccessories: Map<MacAddress, Accessory>;
5
- logger: LoggerService;
6
- api: PluginAPI;
7
- private readonly cameras;
8
- private accessories;
9
- constructor(logger: LoggerService, api: PluginAPI);
10
- configureCameras(cameras: CameraDevice[]): void;
11
- onFormSubmit(actionId: string, payload: any): Promise<FormSubmitResponse | void>;
12
- private start;
13
- private stop;
14
- private configureCamera;
15
- private removeCamera;
16
- }
package/dist/index.js DELETED
@@ -1,53 +0,0 @@
1
- await import('./crypto.js');
2
- import { HAPStorage } from 'hap-nodejs';
3
- import { resolve } from 'node:path';
4
- import { CameraAccessory } from './camera/accessory.js';
5
- export default class HomeKit {
6
- publishedExternalAccessories = new Map();
7
- logger;
8
- api;
9
- cameras = new Map();
10
- accessories = new Map();
11
- constructor(logger, api) {
12
- this.logger = logger;
13
- this.api = api;
14
- HAPStorage.setCustomStoragePath(resolve(this.api.storagePath, 'accessories'));
15
- this.api.on('finishLaunching', this.start.bind(this));
16
- this.api.on('shutdown', this.stop.bind(this));
17
- }
18
- configureCameras(cameras) {
19
- for (const camera of cameras) {
20
- this.configureCamera(camera);
21
- }
22
- }
23
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- async onFormSubmit(actionId, payload) { }
25
- async start() {
26
- this.api.deviceManager.on('cameraSelected', async (cameraDevice) => {
27
- await this.configureCamera(cameraDevice);
28
- });
29
- this.api.deviceManager.on('cameraDeselected', async (cameraId) => {
30
- await this.removeCamera(cameraId);
31
- });
32
- }
33
- async stop() {
34
- await Promise.all(Array.from(this.accessories.values()).map((accessory) => accessory.teardown()));
35
- }
36
- async configureCamera(cameraDevice) {
37
- this.logger.log('Configuring camera:', cameraDevice.name);
38
- const cameraAccessory = new CameraAccessory(this, cameraDevice);
39
- this.cameras.set(cameraDevice.id, cameraDevice);
40
- this.accessories.set(cameraDevice.id, cameraAccessory);
41
- }
42
- async removeCamera(cameraId) {
43
- const cameraDevice = this.cameras.get(cameraId);
44
- if (cameraDevice) {
45
- this.logger.log('Removing camera:', cameraDevice.name);
46
- await this.accessories.get(cameraId)?.teardown(true);
47
- this.cameras.delete(cameraId);
48
- this.accessories.delete(cameraId);
49
- this.api.storageController.removeCameraStorage(cameraId);
50
- }
51
- }
52
- }
53
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export type MP4Atom = {
2
- header: Buffer;
3
- length: number;
4
- type: string;
5
- data: Buffer;
6
- };
7
- export interface CameraStorageValues {
8
- accessoryPin: string;
9
- accessoryPortOverride: number;
10
- advertiseAddress?: string;
11
- republishId: string;
12
- useHardwareAcceleration: boolean;
13
- transcodeStreaming: boolean;
14
- transcodeRecording: boolean;
15
- advertiser: string;
16
- }
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- export type MacAddress = string;
2
- export declare function validMacAddress(address: string): boolean;
3
- export declare function generate(data: string | Buffer | NodeJS.TypedArray | DataView): MacAddress;
4
- export declare function randomPinCode(): string;
package/dist/utils/mac.js DELETED
@@ -1,19 +0,0 @@
1
- import crypto from 'node:crypto';
2
- const validMac = /^([0-9A-F]{2}:){5}([0-9A-F]{2})$/;
3
- function rd() {
4
- return Math.round(Math.random() * 100000) % 10;
5
- }
6
- export function validMacAddress(address) {
7
- return validMac.test(address);
8
- }
9
- export function generate(data) {
10
- const sha1sum = crypto.createHash('sha1');
11
- sha1sum.update(data);
12
- const s = sha1sum.digest('hex');
13
- let i = 0;
14
- return 'xx:xx:xx:xx:xx:xx'.replace(/[x]/g, () => s[i++]).toUpperCase();
15
- }
16
- export function randomPinCode() {
17
- return `${rd()}${rd()}${rd()}-${rd()}${rd()}-${rd()}${rd()}${rd()}`;
18
- }
19
- //# sourceMappingURL=mac.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mac.js","sourceRoot":"","sources":["../../src/utils/mac.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AAEpD,SAAS,EAAE;IACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AACjD,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAoD;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACtE,CAAC"}
@@ -1,7 +0,0 @@
1
- import type { RtpPacket } from 'werift';
2
- export declare class OpusRepacketizer {
3
- framesPerPacket: number;
4
- private depacketized;
5
- constructor(framesPerPacket: number);
6
- repacketize(packet: RtpPacket): RtpPacket | undefined;
7
- }