mediafuse 0.1.1 → 0.1.2

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,31 @@
1
+ import type { PluginType, PluginEvent, PluginEventMap, PluginHandlers, PluginManifest, CreateContext } from "./types.js";
2
+ import type { DefinePluginFn } from "./define-plugin.js";
3
+ export interface EmittedEvent<E extends PluginEvent = PluginEvent> {
4
+ event: E;
5
+ data: PluginEventMap[E];
6
+ }
7
+ export interface TestHarnessOptions {
8
+ type?: PluginType;
9
+ config?: Record<string, unknown>;
10
+ manifest?: Partial<PluginManifest>;
11
+ }
12
+ export interface TestHarness {
13
+ name: string;
14
+ type: PluginType;
15
+ registered: boolean;
16
+ handlers: PluginHandlers;
17
+ container: HTMLDivElement | null;
18
+ emitted: EmittedEvent[];
19
+ emit: CreateContext["emit"];
20
+ message: (msg: PluginEventMap["message"]) => void;
21
+ command: (cmd: PluginEventMap["command"]) => void;
22
+ tick: (dt: number) => void;
23
+ resize: (size: PluginEventMap["resize"]) => void;
24
+ config: (manifest: PluginManifest) => void;
25
+ destroy: () => void;
26
+ }
27
+ export declare function createTestHarness(plugin: {
28
+ default: (define: DefinePluginFn) => void;
29
+ } | ((define: DefinePluginFn) => void), options?: TestHarnessOptions): TestHarness;
30
+ export type { PluginType, PluginEvent, PluginEventMap, PluginHandlers, PluginManifest, CreateContext };
31
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC/D,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAYD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE;IAAE,OAAO,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,EAC1F,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAwEb;AAiCD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,101 @@
1
+ function defaultManifest(overrides) {
2
+ return {
3
+ v: 1,
4
+ plugins: [],
5
+ blocks: [],
6
+ config: {},
7
+ ...overrides,
8
+ };
9
+ }
10
+ export function createTestHarness(plugin, options = {}) {
11
+ const allowedType = options.type ?? "overlay";
12
+ const manifest = defaultManifest(options.manifest);
13
+ const pluginConfig = { ...manifest.config, ...options.config };
14
+ let capturedName = "";
15
+ let capturedType = null;
16
+ let capturedHandlers = {};
17
+ let didRegister = false;
18
+ const emitted = [];
19
+ const container = allowedType === "overlay"
20
+ ? createMockDiv()
21
+ : null;
22
+ const emitFn = allowedType === "data"
23
+ ? (event, data) => {
24
+ emitted.push({ event, data });
25
+ }
26
+ : null;
27
+ const register = (type, handlers) => {
28
+ if (type !== allowedType)
29
+ return false;
30
+ capturedType = type;
31
+ capturedHandlers = handlers;
32
+ didRegister = true;
33
+ if (handlers.onCreate) {
34
+ handlers.onCreate({
35
+ container,
36
+ config: pluginConfig,
37
+ emit: emitFn,
38
+ });
39
+ }
40
+ return true;
41
+ };
42
+ const definePlugin = (name, setup) => {
43
+ capturedName = name;
44
+ setup({ register, manifest });
45
+ };
46
+ const pluginFn = typeof plugin === "function" ? plugin : plugin.default;
47
+ pluginFn(definePlugin);
48
+ const fire = (event, data) => {
49
+ const key = `on${event.charAt(0).toUpperCase()}${event.slice(1)}`;
50
+ const handler = capturedHandlers[key];
51
+ if (handler)
52
+ handler(data);
53
+ };
54
+ return {
55
+ get name() { return capturedName; },
56
+ get type() { return capturedType ?? allowedType; },
57
+ get registered() { return didRegister; },
58
+ get handlers() { return capturedHandlers; },
59
+ container,
60
+ emitted,
61
+ emit: emitFn,
62
+ message: (msg) => fire("message", msg),
63
+ command: (cmd) => fire("command", cmd),
64
+ tick: (dt) => fire("tick", dt),
65
+ resize: (size) => fire("resize", size),
66
+ config: (m) => fire("config", m),
67
+ destroy: () => capturedHandlers.onDestroy?.(),
68
+ };
69
+ }
70
+ function createMockDiv() {
71
+ const children = [];
72
+ return {
73
+ tagName: "DIV",
74
+ style: { cssText: "" },
75
+ children,
76
+ childNodes: children,
77
+ appendChild(child) { children.push(child); return child; },
78
+ removeChild(child) {
79
+ const i = children.indexOf(child);
80
+ if (i >= 0)
81
+ children.splice(i, 1);
82
+ return child;
83
+ },
84
+ remove() { },
85
+ innerHTML: "",
86
+ textContent: "",
87
+ querySelector() { return null; },
88
+ querySelectorAll() { return []; },
89
+ addEventListener() { },
90
+ removeEventListener() { },
91
+ setAttribute() { },
92
+ getAttribute() { return null; },
93
+ classList: {
94
+ add() { },
95
+ remove() { },
96
+ toggle() { },
97
+ contains() { return false; },
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mediafuse",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Plugin SDK for MediaFuse stream overlays",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,6 +9,10 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
+ },
13
+ "./testing": {
14
+ "types": "./dist/testing.d.ts",
15
+ "import": "./dist/testing.js"
12
16
  }
13
17
  },
14
18
  "files": [