@companion-module/base 1.99.0-nightly-feat-graphics-overhaul-20251222-140818-911eb31 → 2.0.0-0-nightly-feat-2-0-20260118-171756-ca8ab85
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.
- package/CHANGELOG.md +12 -0
- package/README.md +12 -11
- package/assets/manifest.schema.json +1 -1
- package/dist/__mocks__/net.d.ts +31 -0
- package/dist/__mocks__/net.d.ts.map +1 -0
- package/dist/__mocks__/net.js +104 -0
- package/dist/__mocks__/net.js.map +1 -0
- package/dist/__mocks__/util.d.ts +9 -0
- package/dist/__mocks__/util.d.ts.map +1 -0
- package/dist/__mocks__/util.js +39 -0
- package/dist/__mocks__/util.js.map +1 -0
- package/dist/common/json-value.js +1 -2
- package/dist/common/json-value.js.map +1 -1
- package/dist/common/osc.js +1 -2
- package/dist/common/osc.js.map +1 -1
- package/dist/helpers/__tests__/tcp.spec.d.ts +2 -0
- package/dist/helpers/__tests__/tcp.spec.d.ts.map +1 -0
- package/dist/helpers/__tests__/tcp.spec.js +175 -0
- package/dist/helpers/__tests__/tcp.spec.js.map +1 -0
- package/dist/helpers/__tests__/udp.spec.d.ts +2 -0
- package/dist/helpers/__tests__/udp.spec.d.ts.map +1 -0
- package/dist/helpers/__tests__/udp.spec.js +197 -0
- package/dist/helpers/__tests__/udp.spec.js.map +1 -0
- package/dist/helpers/index.js +3 -6
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/tcp.d.ts +1 -1
- package/dist/helpers/tcp.d.ts.map +1 -1
- package/dist/helpers/tcp.js +10 -15
- package/dist/helpers/tcp.js.map +1 -1
- package/dist/helpers/telnet.d.ts +1 -1
- package/dist/helpers/telnet.d.ts.map +1 -1
- package/dist/helpers/telnet.js +6 -11
- package/dist/helpers/telnet.js.map +1 -1
- package/dist/helpers/udp.d.ts +1 -1
- package/dist/helpers/udp.d.ts.map +1 -1
- package/dist/helpers/udp.js +7 -12
- package/dist/helpers/udp.js.map +1 -1
- package/dist/host-api/context.d.ts +59 -0
- package/dist/host-api/context.d.ts.map +1 -0
- package/dist/host-api/{api.js → context.js} +5 -3
- package/dist/host-api/context.js.map +1 -0
- package/dist/host-api/main.d.ts +2 -0
- package/dist/host-api/main.d.ts.map +1 -0
- package/dist/host-api/main.js +2 -0
- package/dist/host-api/main.js.map +1 -0
- package/dist/instance-base.js +1 -2
- package/dist/logging.d.ts +21 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +22 -0
- package/dist/logging.js.map +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +8 -0
- package/dist/main.js.map +1 -0
- package/dist/manifest.js +4 -8
- package/dist/manifest.js.map +1 -1
- package/dist/module-api/__tests__/shared-udp-socket.spec.d.ts +2 -0
- package/dist/module-api/__tests__/shared-udp-socket.spec.d.ts.map +1 -0
- package/dist/module-api/__tests__/shared-udp-socket.spec.js +270 -0
- package/dist/module-api/__tests__/shared-udp-socket.spec.js.map +1 -0
- package/dist/module-api/action.js +1 -2
- package/dist/module-api/base.d.ts +4 -33
- package/dist/module-api/base.d.ts.map +1 -1
- package/dist/module-api/base.js +49 -357
- package/dist/module-api/base.js.map +1 -1
- package/dist/module-api/common.d.ts +2 -8
- package/dist/module-api/common.d.ts.map +1 -1
- package/dist/module-api/common.js +1 -2
- package/dist/module-api/config.js +1 -2
- package/dist/module-api/enums.d.ts +0 -1
- package/dist/module-api/enums.d.ts.map +1 -1
- package/dist/module-api/enums.js +4 -7
- package/dist/module-api/enums.js.map +1 -1
- package/dist/module-api/feedback.d.ts +2 -1
- package/dist/module-api/feedback.d.ts.map +1 -1
- package/dist/module-api/feedback.js +1 -2
- package/dist/module-api/http.js +1 -2
- package/dist/module-api/index.d.ts +0 -2
- package/dist/module-api/index.d.ts.map +1 -1
- package/dist/module-api/index.js +12 -17
- package/dist/module-api/index.js.map +1 -1
- package/dist/module-api/input.d.ts +0 -20
- package/dist/module-api/input.d.ts.map +1 -1
- package/dist/module-api/input.js +1 -2
- package/dist/module-api/preset.d.ts +1 -48
- package/dist/module-api/preset.d.ts.map +1 -1
- package/dist/module-api/preset.js +1 -2
- package/dist/module-api/shared-udp-socket.d.ts +3 -4
- package/dist/module-api/shared-udp-socket.d.ts.map +1 -1
- package/dist/module-api/shared-udp-socket.js +18 -25
- package/dist/module-api/shared-udp-socket.js.map +1 -1
- package/dist/module-api/style.js +1 -2
- package/dist/module-api/upgrade.d.ts +7 -3
- package/dist/module-api/upgrade.d.ts.map +1 -1
- package/dist/module-api/upgrade.js +11 -16
- package/dist/module-api/upgrade.js.map +1 -1
- package/dist/module-api/variable.js +1 -2
- package/dist/util.d.ts +10 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +15 -26
- package/dist/util.js.map +1 -1
- package/generated/validate_manifest.js +961 -1
- package/package.json +25 -36
- package/dist/entrypoint.d.ts +0 -11
- package/dist/entrypoint.d.ts.map +0 -1
- package/dist/entrypoint.js +0 -134
- package/dist/entrypoint.js.map +0 -1
- package/dist/host-api/api.d.ts +0 -402
- package/dist/host-api/api.d.ts.map +0 -1
- package/dist/host-api/api.js.map +0 -1
- package/dist/host-api/ipc-wrapper.d.ts +0 -37
- package/dist/host-api/ipc-wrapper.d.ts.map +0 -1
- package/dist/host-api/ipc-wrapper.js +0 -128
- package/dist/host-api/ipc-wrapper.js.map +0 -1
- package/dist/host-api/versions.d.ts +0 -12
- package/dist/host-api/versions.d.ts.map +0 -1
- package/dist/host-api/versions.js +0 -5
- package/dist/host-api/versions.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -22
- package/dist/index.js.map +0 -1
- package/dist/internal/actions.d.ts +0 -16
- package/dist/internal/actions.d.ts.map +0 -1
- package/dist/internal/actions.js +0 -223
- package/dist/internal/actions.js.map +0 -1
- package/dist/internal/base.d.ts +0 -11
- package/dist/internal/base.d.ts.map +0 -1
- package/dist/internal/base.js +0 -39
- package/dist/internal/base.js.map +0 -1
- package/dist/internal/feedback.d.ts +0 -20
- package/dist/internal/feedback.d.ts.map +0 -1
- package/dist/internal/feedback.js +0 -307
- package/dist/internal/feedback.js.map +0 -1
- package/dist/internal/upgrade.d.ts +0 -15
- package/dist/internal/upgrade.d.ts.map +0 -1
- package/dist/internal/upgrade.js +0 -174
- package/dist/internal/upgrade.js.map +0 -1
- package/dist/module-api/graphics-composite.d.ts +0 -11
- package/dist/module-api/graphics-composite.d.ts.map +0 -1
- package/dist/module-api/graphics-composite.js +0 -3
- package/dist/module-api/graphics-composite.js.map +0 -1
- package/dist/module-api/graphics.d.ts +0 -83
- package/dist/module-api/graphics.d.ts.map +0 -1
- package/dist/module-api/graphics.js +0 -12
- package/dist/module-api/graphics.js.map +0 -1
- package/lib/debounce-fn/index.d.ts +0 -83
- package/lib/debounce-fn/index.js +0 -78
- package/lib/debounce-fn/license +0 -9
- package/lib/debounce-fn/readme.md +0 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/host-api/main.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
package/dist/instance-base.js
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
/**
|
|
3
|
+
* INTERNAL USE ONLY
|
|
4
|
+
*/
|
|
5
|
+
var SURFACE_LOGGER: LoggingSink | undefined;
|
|
6
|
+
}
|
|
7
|
+
export type LogLevel = 'info' | 'warn' | 'error' | 'debug';
|
|
8
|
+
export interface ModuleLogger {
|
|
9
|
+
debug: (message: string) => void;
|
|
10
|
+
info: (message: string) => void;
|
|
11
|
+
warn: (message: string) => void;
|
|
12
|
+
error: (message: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export type LoggingSink = (source: string | undefined, level: LogLevel, message: string) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Create a logger instance
|
|
17
|
+
* @param source The source path to use for the logger
|
|
18
|
+
* @returns A logger instance
|
|
19
|
+
*/
|
|
20
|
+
export declare function createModuleLogger(source?: string): ModuleLogger;
|
|
21
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,cAAc,EAAE,WAAW,GAAG,SAAS,CAAA;CAC3C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAYhG;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAOhE"}
|
package/dist/logging.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const defaultLoggingSink = (source, level, message) => {
|
|
2
|
+
// Default logging implementation for unit testing purposes, this should be replaced by the host application
|
|
3
|
+
console.log(`[${level.toUpperCase()}]${source ? ` [${source}]` : ''} ${message}`);
|
|
4
|
+
};
|
|
5
|
+
function logToSink(source, level, message) {
|
|
6
|
+
const sink = typeof global.SURFACE_LOGGER === 'function' ? global.SURFACE_LOGGER : defaultLoggingSink;
|
|
7
|
+
sink(source, level, message);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a logger instance
|
|
11
|
+
* @param source The source path to use for the logger
|
|
12
|
+
* @returns A logger instance
|
|
13
|
+
*/
|
|
14
|
+
export function createModuleLogger(source) {
|
|
15
|
+
return {
|
|
16
|
+
debug: (message) => logToSink(source, 'debug', message),
|
|
17
|
+
info: (message) => logToSink(source, 'info', message),
|
|
18
|
+
warn: (message) => logToSink(source, 'warn', message),
|
|
19
|
+
error: (message) => logToSink(source, 'error', message),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAkBA,MAAM,kBAAkB,GAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAClE,4GAA4G;IAC5G,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAA;AAClF,CAAC,CAAA;AAED,SAAS,SAAS,CAAC,MAA0B,EAAE,KAAe,EAAE,OAAe;IAC9E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAA;IACrG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IACjD,OAAO;QACN,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/D,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7D,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7D,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;KAC/D,CAAA;AACF,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA"}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './logging.js';
|
|
2
|
+
export * from './module-api/index.js';
|
|
3
|
+
export * from './common/osc.js';
|
|
4
|
+
export * from './common/json-value.js';
|
|
5
|
+
export * from './util.js';
|
|
6
|
+
export * from './helpers/index.js';
|
|
7
|
+
// Note: manifest is not exported here on purpose
|
|
8
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAElC,iDAAiD"}
|
package/dist/manifest.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateManifest = validateManifest;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
1
|
// @ts-expect-error no typings
|
|
6
2
|
// eslint-disable-next-line n/no-missing-import
|
|
7
|
-
|
|
3
|
+
import validateManifestSchema from '../generated/validate_manifest.js';
|
|
8
4
|
/** Validate that a manifest looks correctly populated */
|
|
9
|
-
function validateManifest(manifest, looseChecks) {
|
|
5
|
+
export function validateManifest(manifest, looseChecks) {
|
|
10
6
|
if (!looseChecks) {
|
|
11
7
|
const manifestStr = JSON.stringify(manifest);
|
|
12
8
|
if (manifestStr.includes('companion-module-your-module-name'))
|
|
@@ -27,8 +23,8 @@ function validateManifest(manifest, looseChecks) {
|
|
|
27
23
|
if (manifest.legacyIds.includes(manifest.id)) {
|
|
28
24
|
throw new Error(`Manifest contains itself '${manifest.id}' in legacyIds`);
|
|
29
25
|
}
|
|
30
|
-
if (!(
|
|
31
|
-
const errors =
|
|
26
|
+
if (!validateManifestSchema(manifest)) {
|
|
27
|
+
const errors = validateManifestSchema.errors;
|
|
32
28
|
if (!errors)
|
|
33
29
|
throw new Error(`Manifest failed validation with unknown reason`);
|
|
34
30
|
throw new Error(`Manifest validation failed: ${JSON.stringify(errors)}`);
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,+CAA+C;AAC/C,OAAO,sBAAsB,MAAM,mCAAmC,CAAA;AAItE,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,QAAwB,EAAE,WAAoB;IAC9E,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAA;QAEvG,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAEtF,IAAI,WAAW,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAEjH,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAE/E,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;QAEhF,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;QAElF,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAA;QAC5C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAE9E,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACzE,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-udp-socket.spec.d.ts","sourceRoot":"","sources":["../../../src/module-api/__tests__/shared-udp-socket.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { SharedUdpSocketImpl } from '../shared-udp-socket.js';
|
|
4
|
+
import { createManualPromise } from '../../__mocks__/util.js';
|
|
5
|
+
async function sleepImmediate() {
|
|
6
|
+
return new Promise((resolve) => setImmediate(resolve));
|
|
7
|
+
}
|
|
8
|
+
describe('Shared UDP', () => {
|
|
9
|
+
function createContext() {
|
|
10
|
+
return {
|
|
11
|
+
sharedUdpSocketHandlers: new Map(),
|
|
12
|
+
sharedUdpSocketJoin: vi.fn(() => {
|
|
13
|
+
throw new Error('Not implemented');
|
|
14
|
+
}),
|
|
15
|
+
sharedUdpSocketLeave: vi.fn(() => {
|
|
16
|
+
throw new Error('Not implemented');
|
|
17
|
+
}),
|
|
18
|
+
sharedUdpSocketSend: vi.fn(() => {
|
|
19
|
+
throw new Error('Not implemented');
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
it('call fail before open', () => {
|
|
24
|
+
const ctx = createContext();
|
|
25
|
+
const socket = new SharedUdpSocketImpl(ctx, { type: 'udp4' });
|
|
26
|
+
expect(() => socket.close()).toThrow(/Socket is not open/);
|
|
27
|
+
expect(() => socket.send('', 12, '')).toThrow(/Socket is not open/);
|
|
28
|
+
});
|
|
29
|
+
describe('bind', () => {
|
|
30
|
+
it('ok', async () => {
|
|
31
|
+
const ctx = createContext();
|
|
32
|
+
const socket = new SharedUdpSocketImpl(ctx, { type: 'udp4' });
|
|
33
|
+
expect(socket.eventNames()).toHaveLength(0);
|
|
34
|
+
const sendPromises = [];
|
|
35
|
+
ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
|
|
36
|
+
const sendPromise = createManualPromise();
|
|
37
|
+
sendPromises.push(sendPromise);
|
|
38
|
+
return sendPromise;
|
|
39
|
+
});
|
|
40
|
+
const bindCb = vi.fn();
|
|
41
|
+
socket.bind(5678, '1.2.3.4', bindCb);
|
|
42
|
+
// Opening a second time should fail
|
|
43
|
+
expect(() => socket.bind(5678, '1.2.3.4', bindCb)).toThrow(/Socket is already/);
|
|
44
|
+
await sleepImmediate();
|
|
45
|
+
expect(bindCb).toHaveBeenCalledTimes(0);
|
|
46
|
+
// Check now a listener
|
|
47
|
+
expect(socket.eventNames()).toHaveLength(1);
|
|
48
|
+
expect(socket.listenerCount('listening')).toBe(1);
|
|
49
|
+
// Check call was made
|
|
50
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
|
|
51
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
|
|
52
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
|
|
53
|
+
expect(sendPromises).toHaveLength(1);
|
|
54
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledWith({
|
|
55
|
+
family: 'udp4',
|
|
56
|
+
portNumber: 5678,
|
|
57
|
+
});
|
|
58
|
+
// Mock receive a response
|
|
59
|
+
const handleId = nanoid();
|
|
60
|
+
sendPromises[0].manualResolve(handleId);
|
|
61
|
+
// Verify that opened successfully
|
|
62
|
+
await sleepImmediate();
|
|
63
|
+
expect(bindCb).toHaveBeenCalledTimes(1);
|
|
64
|
+
// Should be tracked now
|
|
65
|
+
expect(ctx.sharedUdpSocketHandlers.get(handleId)).toBe(socket);
|
|
66
|
+
});
|
|
67
|
+
it('error', async () => {
|
|
68
|
+
const ctx = createContext();
|
|
69
|
+
const socket = new SharedUdpSocketImpl(ctx, { type: 'udp4' });
|
|
70
|
+
expect(socket.eventNames()).toHaveLength(0);
|
|
71
|
+
const sendPromises = [];
|
|
72
|
+
ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
|
|
73
|
+
const sendPromise = createManualPromise();
|
|
74
|
+
sendPromises.push(sendPromise);
|
|
75
|
+
return sendPromise;
|
|
76
|
+
});
|
|
77
|
+
const bindCb = vi.fn();
|
|
78
|
+
socket.bind(5678, '1.2.3.4', bindCb);
|
|
79
|
+
await sleepImmediate();
|
|
80
|
+
expect(bindCb).toHaveBeenCalledTimes(0);
|
|
81
|
+
// setup an error listener
|
|
82
|
+
const errorCb = vi.fn();
|
|
83
|
+
socket.on('error', errorCb);
|
|
84
|
+
// Check call was made
|
|
85
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
|
|
86
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
|
|
87
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
|
|
88
|
+
expect(sendPromises).toHaveLength(1);
|
|
89
|
+
// Mock receive a response
|
|
90
|
+
const err = new Error('Some backend failure');
|
|
91
|
+
sendPromises[0].manualReject(err);
|
|
92
|
+
// Verify that opening failed
|
|
93
|
+
await sleepImmediate();
|
|
94
|
+
expect(bindCb).toHaveBeenCalledTimes(0);
|
|
95
|
+
expect(ctx.sharedUdpSocketHandlers.size).toBe(0);
|
|
96
|
+
// Error should have propogated
|
|
97
|
+
expect(errorCb).toHaveBeenCalledTimes(1);
|
|
98
|
+
expect(errorCb).toHaveBeenCalledWith(err);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
async function createAndOpenSocket(ctx) {
|
|
102
|
+
const socket = new SharedUdpSocketImpl(ctx, { type: 'udp4' });
|
|
103
|
+
expect(socket.eventNames()).toHaveLength(0);
|
|
104
|
+
const sendPromises = [];
|
|
105
|
+
ctx.sharedUdpSocketJoin.mockImplementationOnce(async () => {
|
|
106
|
+
const sendPromise = createManualPromise();
|
|
107
|
+
sendPromises.push(sendPromise);
|
|
108
|
+
return sendPromise;
|
|
109
|
+
});
|
|
110
|
+
const bindCb = vi.fn();
|
|
111
|
+
socket.bind(5678, '1.2.3.4', bindCb);
|
|
112
|
+
// Mock receive a response
|
|
113
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(1);
|
|
114
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
|
|
115
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
|
|
116
|
+
expect(sendPromises).toHaveLength(1);
|
|
117
|
+
const handleId = nanoid();
|
|
118
|
+
sendPromises[0].manualResolve(handleId);
|
|
119
|
+
// Verify that opened successfully
|
|
120
|
+
await sleepImmediate();
|
|
121
|
+
expect(bindCb).toHaveBeenCalledTimes(1);
|
|
122
|
+
// Should be tracked now
|
|
123
|
+
expect(ctx.sharedUdpSocketHandlers.get(handleId)).toBe(socket);
|
|
124
|
+
ctx.sharedUdpSocketJoin.mockClear();
|
|
125
|
+
return { socket, handleId };
|
|
126
|
+
}
|
|
127
|
+
describe('send', () => {
|
|
128
|
+
it('ok', async () => {
|
|
129
|
+
const ctx = createContext();
|
|
130
|
+
const { socket, handleId } = await createAndOpenSocket(ctx);
|
|
131
|
+
const sendPromises = [];
|
|
132
|
+
ctx.sharedUdpSocketSend.mockImplementationOnce(async () => {
|
|
133
|
+
const sendPromise = createManualPromise();
|
|
134
|
+
sendPromises.push(sendPromise);
|
|
135
|
+
return sendPromise;
|
|
136
|
+
});
|
|
137
|
+
// Do send
|
|
138
|
+
const sendCb = vi.fn();
|
|
139
|
+
const message = Buffer.from('my fake message');
|
|
140
|
+
socket.send(message, 4789, '4.5.6.7', sendCb);
|
|
141
|
+
// Check callbacks
|
|
142
|
+
await sleepImmediate();
|
|
143
|
+
expect(sendCb).toHaveBeenCalledTimes(0);
|
|
144
|
+
// Check call was made
|
|
145
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(1);
|
|
146
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
|
|
147
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
|
|
148
|
+
expect(sendPromises).toHaveLength(1);
|
|
149
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledWith({
|
|
150
|
+
handleId,
|
|
151
|
+
message,
|
|
152
|
+
address: '4.5.6.7',
|
|
153
|
+
port: 4789,
|
|
154
|
+
});
|
|
155
|
+
// Mock receive a response
|
|
156
|
+
sendPromises[0].manualResolve(null);
|
|
157
|
+
// Verify the calback
|
|
158
|
+
await sleepImmediate();
|
|
159
|
+
expect(sendCb).toHaveBeenCalledTimes(1);
|
|
160
|
+
expect(ctx.sharedUdpSocketHandlers.has(handleId)).toBeTruthy();
|
|
161
|
+
});
|
|
162
|
+
it('error', async () => {
|
|
163
|
+
const ctx = createContext();
|
|
164
|
+
const { socket, handleId } = await createAndOpenSocket(ctx);
|
|
165
|
+
const sendPromises = [];
|
|
166
|
+
ctx.sharedUdpSocketSend.mockImplementationOnce(async () => {
|
|
167
|
+
const sendPromise = createManualPromise();
|
|
168
|
+
sendPromises.push(sendPromise);
|
|
169
|
+
return sendPromise;
|
|
170
|
+
});
|
|
171
|
+
// Do send
|
|
172
|
+
const sendCb = vi.fn();
|
|
173
|
+
const message = Buffer.from('my fake message');
|
|
174
|
+
socket.send(message, 4789, '4.5.6.7', sendCb);
|
|
175
|
+
const errorCb = vi.fn();
|
|
176
|
+
socket.on('error', errorCb);
|
|
177
|
+
// Check callbacks
|
|
178
|
+
await sleepImmediate();
|
|
179
|
+
expect(sendCb).toHaveBeenCalledTimes(0);
|
|
180
|
+
// Check call was made
|
|
181
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(1);
|
|
182
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(0);
|
|
183
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
|
|
184
|
+
expect(sendPromises).toHaveLength(1);
|
|
185
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledWith({
|
|
186
|
+
handleId,
|
|
187
|
+
message,
|
|
188
|
+
address: '4.5.6.7',
|
|
189
|
+
port: 4789,
|
|
190
|
+
});
|
|
191
|
+
// Mock receive a response
|
|
192
|
+
const err = new Error('Some backend failure');
|
|
193
|
+
sendPromises[0].manualReject(err);
|
|
194
|
+
// Verify the calback
|
|
195
|
+
await sleepImmediate();
|
|
196
|
+
expect(sendCb).toHaveBeenCalledTimes(0);
|
|
197
|
+
expect(errorCb).toHaveBeenCalledTimes(1);
|
|
198
|
+
expect(errorCb).toHaveBeenCalledWith(err);
|
|
199
|
+
expect(ctx.sharedUdpSocketHandlers.has(handleId)).toBeTruthy();
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('close', () => {
|
|
203
|
+
it('ok', async () => {
|
|
204
|
+
const ctx = createContext();
|
|
205
|
+
const { socket, handleId } = await createAndOpenSocket(ctx);
|
|
206
|
+
const sendPromises = [];
|
|
207
|
+
ctx.sharedUdpSocketLeave.mockImplementationOnce(async () => {
|
|
208
|
+
const sendPromise = createManualPromise();
|
|
209
|
+
sendPromises.push(sendPromise);
|
|
210
|
+
return sendPromise;
|
|
211
|
+
});
|
|
212
|
+
// Do send
|
|
213
|
+
const closeCb = vi.fn();
|
|
214
|
+
socket.close(closeCb);
|
|
215
|
+
// Check callbacks
|
|
216
|
+
await sleepImmediate();
|
|
217
|
+
expect(closeCb).toHaveBeenCalledTimes(0);
|
|
218
|
+
// Check call was made
|
|
219
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(1);
|
|
220
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
|
|
221
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
|
|
222
|
+
expect(sendPromises).toHaveLength(1);
|
|
223
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledWith({
|
|
224
|
+
handleId,
|
|
225
|
+
});
|
|
226
|
+
// Mock receive a response
|
|
227
|
+
sendPromises[0].manualResolve(null);
|
|
228
|
+
// Verify the calback
|
|
229
|
+
await sleepImmediate();
|
|
230
|
+
expect(closeCb).toHaveBeenCalledTimes(1);
|
|
231
|
+
expect(ctx.sharedUdpSocketHandlers.has(handleId)).toBeFalsy();
|
|
232
|
+
});
|
|
233
|
+
it('error', async () => {
|
|
234
|
+
const ctx = createContext();
|
|
235
|
+
const { socket, handleId } = await createAndOpenSocket(ctx);
|
|
236
|
+
const sendPromises = [];
|
|
237
|
+
ctx.sharedUdpSocketLeave.mockImplementationOnce(async () => {
|
|
238
|
+
const sendPromise = createManualPromise();
|
|
239
|
+
sendPromises.push(sendPromise);
|
|
240
|
+
return sendPromise;
|
|
241
|
+
});
|
|
242
|
+
// Do send
|
|
243
|
+
const closeCb = vi.fn();
|
|
244
|
+
socket.close(closeCb);
|
|
245
|
+
const errorCb = vi.fn();
|
|
246
|
+
socket.on('error', errorCb);
|
|
247
|
+
// Check callbacks
|
|
248
|
+
await sleepImmediate();
|
|
249
|
+
expect(closeCb).toHaveBeenCalledTimes(0);
|
|
250
|
+
// Check call was made
|
|
251
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledTimes(1);
|
|
252
|
+
expect(ctx.sharedUdpSocketSend).toHaveBeenCalledTimes(0);
|
|
253
|
+
expect(ctx.sharedUdpSocketJoin).toHaveBeenCalledTimes(0);
|
|
254
|
+
expect(sendPromises).toHaveLength(1);
|
|
255
|
+
expect(ctx.sharedUdpSocketLeave).toHaveBeenCalledWith({
|
|
256
|
+
handleId,
|
|
257
|
+
});
|
|
258
|
+
// Mock receive a response
|
|
259
|
+
const err = new Error('Some backend failure');
|
|
260
|
+
sendPromises[0].manualReject(err);
|
|
261
|
+
// Verify the calback
|
|
262
|
+
await sleepImmediate();
|
|
263
|
+
expect(closeCb).toHaveBeenCalledTimes(0);
|
|
264
|
+
expect(errorCb).toHaveBeenCalledTimes(1);
|
|
265
|
+
expect(errorCb).toHaveBeenCalledWith(err);
|
|
266
|
+
expect(ctx.sharedUdpSocketHandlers.has(handleId)).toBeFalsy();
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
//# sourceMappingURL=shared-udp-socket.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-udp-socket.spec.js","sourceRoot":"","sources":["../../../src/module-api/__tests__/shared-udp-socket.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { CompanionActionDefinitions, CompanionRecordedAction } from './action.js';
|
|
2
2
|
import type { CompanionFeedbackDefinitions } from './feedback.js';
|
|
3
3
|
import type { CompanionPresetDefinitions } from './preset.js';
|
|
4
|
-
import type { InstanceStatus
|
|
4
|
+
import type { InstanceStatus } from './enums.js';
|
|
5
|
+
import { type LogLevel } from '../logging.js';
|
|
5
6
|
import type { InstanceBaseShared } from '../instance-base.js';
|
|
6
7
|
import type { CompanionVariableDefinition, CompanionVariableValue, CompanionVariableValues } from './variable.js';
|
|
7
8
|
import type { OSCSomeArguments } from '../common/osc.js';
|
|
8
9
|
import type { SomeCompanionConfigField } from './config.js';
|
|
9
10
|
import type { CompanionHTTPRequest, CompanionHTTPResponse } from './http.js';
|
|
10
11
|
import { SharedUdpSocket, SharedUdpSocketMessageCallback, SharedUdpSocketOptions } from './shared-udp-socket.js';
|
|
11
|
-
import { CompanionGraphicsCompositeElementDefinition } from './graphics-composite.js';
|
|
12
12
|
export interface InstanceBaseOptions {
|
|
13
13
|
/**
|
|
14
14
|
* Disable enforcement of variables requiring a definition.
|
|
@@ -25,9 +25,10 @@ export interface InstanceBaseOptions {
|
|
|
25
25
|
*/
|
|
26
26
|
disableNewConfigLayout: boolean;
|
|
27
27
|
}
|
|
28
|
+
export type InstanceConstructor<TConfig, TSecrets> = new (internal: unknown) => InstanceBase<TConfig, TSecrets>;
|
|
28
29
|
export declare abstract class InstanceBase<TConfig, TSecrets = undefined> implements InstanceBaseShared<TConfig, TSecrets> {
|
|
29
30
|
#private;
|
|
30
|
-
|
|
31
|
+
get id(): string;
|
|
31
32
|
get instanceOptions(): InstanceBaseOptions;
|
|
32
33
|
/**
|
|
33
34
|
* The user chosen name for this instance.
|
|
@@ -38,20 +39,6 @@ export declare abstract class InstanceBase<TConfig, TSecrets = undefined> implem
|
|
|
38
39
|
* Create an instance of the module
|
|
39
40
|
*/
|
|
40
41
|
constructor(internal: unknown);
|
|
41
|
-
private _handleInit;
|
|
42
|
-
private _handleDestroy;
|
|
43
|
-
private _handleConfigUpdateAndLabel;
|
|
44
|
-
private _handleExecuteAction;
|
|
45
|
-
private _handleUpdateFeedbacks;
|
|
46
|
-
private _handleUpdateActions;
|
|
47
|
-
private _handleUpgradeActionsAndFeedbacks;
|
|
48
|
-
private _handleGetConfigFields;
|
|
49
|
-
private _handleHttpRequest;
|
|
50
|
-
private _handleLearnAction;
|
|
51
|
-
private _handleLearnFeedback;
|
|
52
|
-
private _handleStartStopRecordActions;
|
|
53
|
-
private _handleSharedUdpSocketMessage;
|
|
54
|
-
private _handleSharedUdpSocketError;
|
|
55
42
|
/**
|
|
56
43
|
* Main initialization function called
|
|
57
44
|
* once the module is OK to start doing things.
|
|
@@ -103,11 +90,6 @@ export declare abstract class InstanceBase<TConfig, TSecrets = undefined> implem
|
|
|
103
90
|
* @param presets The preset definitions
|
|
104
91
|
*/
|
|
105
92
|
setPresetDefinitions(presets: CompanionPresetDefinitions): void;
|
|
106
|
-
/**
|
|
107
|
-
* Set the composite graphics elements for this instance
|
|
108
|
-
* @param compositeElements The composite element definitions
|
|
109
|
-
*/
|
|
110
|
-
setCompositeElementDefinitions(compositeElements: CompanionGraphicsCompositeElementDefinition[]): void;
|
|
111
93
|
/**
|
|
112
94
|
* Set the variable definitions for this instance
|
|
113
95
|
* @param variables The variable definitions
|
|
@@ -124,17 +106,6 @@ export declare abstract class InstanceBase<TConfig, TSecrets = undefined> implem
|
|
|
124
106
|
* @returns The value
|
|
125
107
|
*/
|
|
126
108
|
getVariableValue(variableId: string): CompanionVariableValue | undefined;
|
|
127
|
-
/**
|
|
128
|
-
* @deprecated Companion now handles this for you, for actions and feedbacks. If you need this for another purpose, let us know as we intend to remove this
|
|
129
|
-
*
|
|
130
|
-
* Parse and replace all the variables in a string
|
|
131
|
-
* Note: You must not use this for feedbacks, as your feedback will not update when the variable changes.
|
|
132
|
-
* There is an alternate version of this supplied to each of the action/feedback callbacks that tracks
|
|
133
|
-
* usages properly and will retrigger the feedback when the variables change.
|
|
134
|
-
* @param text The text to parse
|
|
135
|
-
* @returns The string with variables replaced with their values
|
|
136
|
-
*/
|
|
137
|
-
parseVariablesInString(text: string): Promise<string>;
|
|
138
109
|
/**
|
|
139
110
|
* Request all feedbacks of the specified types to be checked for changes
|
|
140
111
|
* @param feedbackTypes The feedback types to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/module-api/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/module-api/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAsB,KAAK,QAAQ,EAAqB,MAAM,eAAe,CAAA;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EACN,eAAe,EAEf,8BAA8B,EAC9B,sBAAsB,EACtB,MAAM,wBAAwB,CAAA;AAG/B,MAAM,WAAW,mBAAmB;IACnC;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC;;;;;;;OAOG;IACH,sBAAsB,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,MAAM,mBAAmB,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAE/G,8BAAsB,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAE,YAAW,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC;;IAMjH,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,IAAW,eAAe,IAAI,mBAAmB,CAEhD;IAED;;;OAGG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;OAEG;gBACS,QAAQ,EAAE,OAAO;IAoB7B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtF;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzE;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI;IAChH,UAAU,CACT,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EACrC,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,UAAU,EAAE,QAAQ,GAAG,SAAS,GAC9B,IAAI;IAKP;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,wBAAwB,EAAE;IAEtD;;;OAGG;IACH,iBAAiB,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAEzG;;;OAGG;IACH,4BAA4B,CAAC,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAEzD;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI/D;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,4BAA4B,GAAG,IAAI;IAIrE;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI/D;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,2BAA2B,EAAE,GAAG,IAAI;IAItE;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAIxD;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAIxE;;;OAGG;IACH,cAAc,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhD;;;OAGG;IACH,kBAAkB,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAG9C;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhD;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAGlD;;;;OAIG;IACH,oBAAoB,CAAC,GAAG,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,uBAAuB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1E;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAI/E;;;;;;;;;OASG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAInE;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB3C;;;;;;;OAOG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,8BAA8B,GAAG,eAAe;IACxG,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAE,8BAA8B,GAAG,eAAe;CAYlH"}
|