@xmachines/play-vue 1.0.0-beta.1

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/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # @xmachines/play-vue
2
+
3
+ Vue renderer component for XMachines Play architecture.
4
+
5
+ This package keeps Vue as passive infrastructure: it observes actor signals and forwards events, but does not enforce business policy.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @xmachines/play-vue vue
11
+ ```
12
+
13
+ ## Current Exports
14
+
15
+ - `PlayRenderer` (Vue component)
16
+ - `PlayRendererProps` (type)
17
+
18
+ ## Usage
19
+
20
+ ```vue
21
+ <script setup lang="ts">
22
+ import { PlayRenderer } from "@xmachines/play-vue";
23
+ import { definePlayer } from "@xmachines/play-xstate";
24
+ import { defineCatalog } from "@xmachines/play-catalog";
25
+
26
+ // Define catalog
27
+ const catalog = defineCatalog({
28
+ home: { component: "Home", props: { title: "string" } },
29
+ login: { component: "Login", props: { error: "string?" } },
30
+ dashboard: { component: "Dashboard", props: { userId: "string" } },
31
+ });
32
+
33
+ // Create actor
34
+ const actor = definePlayer({ machine: authMachine, catalog })();
35
+ actor.start();
36
+
37
+ // Define component map
38
+ const components = {
39
+ Home: HomeComponent,
40
+ Login: LoginComponent,
41
+ Dashboard: DashboardComponent,
42
+ };
43
+ </script>
44
+
45
+ <template>
46
+ <PlayRenderer :actor="actor" :components="components">
47
+ <template #fallback>
48
+ <div>Loading...</div>
49
+ </template>
50
+ </PlayRenderer>
51
+ </template>
52
+ ```
53
+
54
+ ## API
55
+
56
+ ### PlayRenderer
57
+
58
+ Main renderer component that observes `actor.currentView` signal and dynamically renders catalog components.
59
+
60
+ **Props:**
61
+
62
+ - `actor` (required) - Actor instance with `currentView` signal
63
+ - `components` (required) - Map of component names to Vue components
64
+ - `fallback` (optional) - Slot shown when `currentView` is null
65
+
66
+ **Component Props:**
67
+
68
+ Each rendered component receives:
69
+
70
+ - All props from `view.props` (spread via `v-bind`)
71
+ - `send` function for sending events to actor
72
+
73
+ **Example Component:**
74
+
75
+ ```vue
76
+ <script setup lang="ts">
77
+ import type { AbstractActor } from "@xmachines/play-actor";
78
+
79
+ defineProps<{
80
+ userId: string;
81
+ send: AbstractActor<any>["send"];
82
+ }>();
83
+
84
+ function handleClick() {
85
+ send({ type: "user.click", payload: { action: "details" } });
86
+ }
87
+ </script>
88
+
89
+ <template>
90
+ <div>
91
+ <h1>User: {{ userId }}</h1>
92
+ <button @click="handleClick">View Details</button>
93
+ </div>
94
+ </template>
95
+ ```
96
+
97
+ ## Features
98
+
99
+ - **Signal Bridge:** Uses TC39 Signal.subtle.Watcher to bridge actor signals to Vue reactivity
100
+ - **Dynamic Rendering:** Renders components based on `actor.currentView.component` string
101
+ - **Type Safe:** Full TypeScript support with generic type inference
102
+ - **Error Handling:** Gracefully handles missing components and null catalogs
103
+ - **One-Shot Re-Watch:** Implements proper signal watcher pattern with microtask batching
104
+
105
+ ## Canonical Watcher Lifecycle
106
+
107
+ Use the same watcher flow as other adapters/packages:
108
+
109
+ 1. `notify`
110
+ 2. `queueMicrotask`
111
+ 3. `getPending()`
112
+ 4. read actor signals and update framework-local state
113
+ 5. re-arm with `watch(...)` or `watch()`
114
+
115
+ Watcher notify is one-shot. Re-arm is required for continuous observation.
116
+
117
+ ## Cleanup Contract
118
+
119
+ Cleanup must be explicit:
120
+
121
+ - Call `unwatch(...)` during Vue lifecycle teardown (`onUnmounted`).
122
+ - Treat renderer/provider disposal as deterministic teardown, not GC-only cleanup.
123
+ - Keep actor-driven routing and view decisions in the actor layer.
124
+
125
+ ## Architecture
126
+
127
+ PlayRenderer follows the XMachines Play architecture principles:
128
+
129
+ 1. **Actor Authority:** Actor decides all state transitions
130
+ 2. **Passive Infrastructure:** Renderer observes signals, sends events
131
+ 3. **Signal-Only Reactivity:** Business logic state lives in actor signals
132
+
133
+ Signals are reactivity substrate only. They are not a business mutation channel.
134
+
135
+ ## License
136
+
137
+ MIT
@@ -0,0 +1,8 @@
1
+ import e from "./PlayRenderer.vue2.js";
2
+ /* empty css */
3
+ import o from "./_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ o(e, [["__scopeId", "data-v-275eda6e"]]);
5
+ export {
6
+ m as default
7
+ };
8
+ //# sourceMappingURL=PlayRenderer.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayRenderer.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,48 @@
1
+ import { defineComponent as m, toRaw as a, ref as d, onUnmounted as p, computed as f, h as l } from "vue";
2
+ import { Signal as v } from "@xmachines/play-signals";
3
+ const g = m({
4
+ name: "PlayRenderer",
5
+ props: {
6
+ actor: {
7
+ type: Object,
8
+ required: !0
9
+ },
10
+ components: {
11
+ type: Object,
12
+ required: !0
13
+ }
14
+ },
15
+ setup(t, { slots: r }) {
16
+ const n = a(t.actor), i = n.currentView.get(), e = d(i), o = new v.subtle.Watcher(() => {
17
+ queueMicrotask(() => {
18
+ o.getPending(), e.value = n.currentView.get(), o.watch(n.currentView);
19
+ });
20
+ });
21
+ o.watch(n.currentView), p(() => {
22
+ o.unwatch(n.currentView);
23
+ });
24
+ const s = n.send.bind(n), c = f(() => {
25
+ if (!e.value) return null;
26
+ if (!t.components)
27
+ return console.error(
28
+ `Components catalog is ${t.components === null ? "null" : "undefined"}. Cannot render component "${e.value.component}".`
29
+ ), null;
30
+ const u = a(t.components[e.value.component]);
31
+ return u || (console.error(
32
+ `Component "${e.value.component}" not found in catalog. Available components: ${Object.keys(t.components).join(", ")}`
33
+ ), null);
34
+ });
35
+ return () => e.value ? c.value ? l(c.value, {
36
+ ...e.value.props,
37
+ send: s
38
+ }) : l(
39
+ "div",
40
+ { class: "play-renderer-error" },
41
+ `Component "${e.value.component}" not found in catalog`
42
+ ) : r.fallback ? r.fallback() : null;
43
+ }
44
+ });
45
+ export {
46
+ g as default
47
+ };
48
+ //# sourceMappingURL=PlayRenderer.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayRenderer.vue2.js","sources":["../src/PlayRenderer.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * PlayRenderer - Main Vue renderer component for XMachines Play architecture\n *\n * Architecture (per RESEARCH.md Pattern 1):\n * - Subscribes to actor.currentView signal via Signal.subtle.Watcher\n * - Dynamically renders catalog components based on view.component string\n * - Forwards user events to actor via actor.send()\n * - Vue ref only for triggering renders, NOT business logic\n *\n * Signal bridge uses one-shot re-watch pattern:\n * TC39 Signal watchers stop watching after notification, so watcher.watch()\n * must be called inside a microtask after getPending() to re-arm for the\n * next notification.\n *\n * CRITICAL: Never call signal.get() or signal.set() inside the Watcher's\n * notify callback. The callback runs synchronously during the signal graph's\n * dirty-propagation phase. All reads must be deferred to a queueMicrotask.\n *\n * @invariant Actor Authority - Actor decides all state transitions via guards\n * @invariant Passive Infrastructure - Component observes signals, sends events\n * @invariant Signal-Only Reactivity - Business logic state lives in actor signals\n */\n\nimport { defineComponent, ref, computed, toRaw, onUnmounted, h, type PropType } from \"vue\";\nimport { Signal } from \"@xmachines/play-signals\";\nimport type { PlayRendererProps } from \"./types.js\";\nimport type { AbstractActor, Viewable } from \"@xmachines/play-actor\";\nimport type { AnyActorLogic } from \"xstate\";\nimport type { Component } from \"vue\";\n\nexport default defineComponent({\n\tname: \"PlayRenderer\",\n\tprops: {\n\t\tactor: {\n\t\t\ttype: Object as PropType<AbstractActor<AnyActorLogic> & Viewable>,\n\t\t\trequired: true,\n\t\t},\n\t\tcomponents: {\n\t\t\ttype: Object as PropType<Record<string, Component>>,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tsetup(props, { slots }) {\n\t\t// Unwrap actor from Vue's reactive proxy to access raw Signal objects\n\t\t// CRITICAL: toRaw() preserves Signal's 'this' binding for .get() and watcher operations\n\t\tconst actor = toRaw(props.actor);\n\n\t\t// Get initial value from unwrapped signal\n\t\tconst initialView = actor.currentView.get();\n\n\t\t// Vue ref for triggering re-renders (NOT business logic state)\n\t\t// Signal is source of truth, ref is just Vue's render trigger\n\t\tconst view = ref<{ component: string; props: Record<string, unknown> } | null>(initialView);\n\n\t\t// Signal watcher for bridging TC39 Signals to Vue reactivity\n\t\t// Created immediately (not in onMounted) so signal changes during the\n\t\t// synchronous mount phase are captured.\n\t\t//\n\t\t// The notify callback runs synchronously during the signal graph's\n\t\t// dirty-propagation phase. NEVER read (.get()) or write (.set()) signals\n\t\t// inside it. Only schedule a microtask to do the actual work.\n\t\tconst watcher = new Signal.subtle.Watcher(() => {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\t// Step 1: Acknowledge notification (clears watcher's dirty flags)\n\t\t\t\twatcher.getPending();\n\n\t\t\t\t// Step 2: Read signal value (safe — notification phase is over)\n\t\t\t\tview.value = actor.currentView.get();\n\n\t\t\t\t// Step 3: Re-watch for next notification (one-shot pattern)\n\t\t\t\t// TC39 watchers stop notifying after first notification until re-armed\n\t\t\t\twatcher.watch(actor.currentView);\n\t\t\t});\n\t\t});\n\n\t\t// Start watching the signal\n\t\twatcher.watch(actor.currentView);\n\n\t\tonUnmounted(() => {\n\t\t\t// Unwatch to stop receiving notifications\n\t\t\twatcher.unwatch(actor.currentView);\n\t\t});\n\n\t\t// Bind send function to actor for correct 'this' context\n\t\tconst sendBound = actor.send.bind(actor);\n\n\t\t// Compute Component from view.component lookup\n\t\tconst ResolvedComponent = computed(() => {\n\t\t\tif (!view.value) return null;\n\n\t\t\t// Handle null/undefined components catalog gracefully\n\t\t\tif (!props.components) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`Components catalog is ${props.components === null ? \"null\" : \"undefined\"}. ` +\n\t\t\t\t\t\t`Cannot render component \"${view.value.component}\".`,\n\t\t\t\t);\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Look up component from catalog\n\t\t\tconst comp = toRaw(props.components[view.value.component]);\n\n\t\t\tif (!comp) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`Component \"${view.value.component}\" not found in catalog. ` +\n\t\t\t\t\t\t`Available components: ${Object.keys(props.components).join(\", \")}`,\n\t\t\t\t);\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn comp;\n\t\t});\n\n\t\t// Use render function to avoid Vue 3.5 SFC template <slot> + jsdom renderSlot crash\n\t\treturn () => {\n\t\t\t// No view — show fallback slot\n\t\t\tif (!view.value) {\n\t\t\t\treturn slots.fallback ? slots.fallback() : null;\n\t\t\t}\n\n\t\t\t// View exists but component not found\n\t\t\tif (!ResolvedComponent.value) {\n\t\t\t\treturn h(\n\t\t\t\t\t\"div\",\n\t\t\t\t\t{ class: \"play-renderer-error\" },\n\t\t\t\t\t`Component \"${view.value.component}\" not found in catalog`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Render matched component dynamically\n\t\t\treturn h(ResolvedComponent.value, {\n\t\t\t\t...view.value.props,\n\t\t\t\tsend: sendBound,\n\t\t\t});\n\t\t};\n\t},\n});\n</script>\n\n<style scoped>\n.play-renderer-error {\n\tpadding: 1rem;\n\tbackground-color: #fee;\n\tborder: 1px solid #fcc;\n\tborder-radius: 4px;\n\tcolor: #c00;\n\tfont-family: monospace;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","props","slots","actor","toRaw","initialView","view","ref","watcher","Signal","onUnmounted","sendBound","ResolvedComponent","computed","comp","h"],"mappings":";;AA+BA,MAAAA,IAAeC,EAAgB;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AAAA,IACN,OAAO;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,IAEX,YAAY;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EACX;AAAA,EAED,MAAMC,GAAO,EAAE,OAAAC,KAAS;AAGvB,UAAMC,IAAQC,EAAMH,EAAM,KAAK,GAGzBI,IAAcF,EAAM,YAAY,IAAA,GAIhCG,IAAOC,EAAkEF,CAAW,GASpFG,IAAU,IAAIC,EAAO,OAAO,QAAQ,MAAM;AAC/C,qBAAe,MAAM;AAEpB,QAAAD,EAAQ,WAAA,GAGRF,EAAK,QAAQH,EAAM,YAAY,IAAA,GAI/BK,EAAQ,MAAML,EAAM,WAAW;AAAA,MAChC,CAAC;AAAA,IACF,CAAC;AAGD,IAAAK,EAAQ,MAAML,EAAM,WAAW,GAE/BO,EAAY,MAAM;AAEjB,MAAAF,EAAQ,QAAQL,EAAM,WAAW;AAAA,IAClC,CAAC;AAGD,UAAMQ,IAAYR,EAAM,KAAK,KAAKA,CAAK,GAGjCS,IAAoBC,EAAS,MAAM;AACxC,UAAI,CAACP,EAAK,MAAO,QAAO;AAGxB,UAAI,CAACL,EAAM;AACV,uBAAQ;AAAA,UACP,yBAAyBA,EAAM,eAAe,OAAO,SAAS,WAAW,8BAC5CK,EAAK,MAAM,SAAS;AAAA,QAAA,GAE3C;AAIR,YAAMQ,IAAOV,EAAMH,EAAM,WAAWK,EAAK,MAAM,SAAS,CAAC;AAEzD,aAAKQ,MACJ,QAAQ;AAAA,QACP,cAAcR,EAAK,MAAM,SAAS,iDACR,OAAO,KAAKL,EAAM,UAAU,EAAE,KAAK,IAAI,CAAC;AAAA,MAAA,GAE5D;AAAA,IAIT,CAAC;AAGD,WAAO,MAEDK,EAAK,QAKLM,EAAkB,QAShBG,EAAEH,EAAkB,OAAO;AAAA,MACjC,GAAGN,EAAK,MAAM;AAAA,MACd,MAAMK;AAAA,IAAA,CACN,IAXOI;AAAA,MACN;AAAA,MACA,EAAE,OAAO,sBAAA;AAAA,MACT,cAAcT,EAAK,MAAM,SAAS;AAAA,IAAA,IAR5BJ,EAAM,WAAWA,EAAM,SAAA,IAAa;AAAA,EAkB9C;AACD,CAAC;"}
@@ -0,0 +1,10 @@
1
+ const s = (t, e) => {
2
+ const o = t.__vccOpts || t;
3
+ for (const [r, c] of e)
4
+ o[r] = c;
5
+ return o;
6
+ };
7
+ export {
8
+ s as default
9
+ };
10
+ //# sourceMappingURL=_plugin-vue_export-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_plugin-vue_export-helper.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ .play-renderer-error[data-v-275eda6e]{padding:1rem;background-color:#fee;border:1px solid #fcc;border-radius:4px;color:#c00;font-family:monospace}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @xmachines/play-vue - Vue renderer for XMachines Play architecture
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { default as PlayRenderer } from "./PlayRenderer.vue";
7
+ export type { PlayRendererProps } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ import { default as a } from "./PlayRenderer.vue.js";
2
+ export {
3
+ a as PlayRenderer
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * TypeScript type definitions for play-vue
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { AbstractActor, Viewable } from "@xmachines/play-actor";
7
+ import type { Component } from "vue";
8
+ import type { AnyActorLogic } from "xstate";
9
+ /**
10
+ * Props for PlayRenderer component
11
+ *
12
+ * @property actor - Actor instance with currentView signal (requires Viewable capability)
13
+ * @property components - Map of component names to Vue components
14
+ */
15
+ export interface PlayRendererProps {
16
+ /** Actor instance with currentView signal (requires Viewable capability) */
17
+ actor: AbstractActor<AnyActorLogic> & Viewable;
18
+ /** Map of component names to Vue components */
19
+ components: Record<string, Component>;
20
+ }
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC,4EAA4E;IAC5E,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;IAE/C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@xmachines/play-vue",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "Vue renderer for XMachines Play architecture",
5
+ "keywords": [
6
+ "reactive",
7
+ "renderer",
8
+ "state-machine",
9
+ "vue",
10
+ "xmachines"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git@gitlab.com:xmachin-es/xmachines-js.git"
16
+ },
17
+ "type": "module",
18
+ "main": "./dist/index.js",
19
+ "types": "./dist/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ }
25
+ },
26
+ "scripts": {
27
+ "build": "vite build && tsc --build --force",
28
+ "clean": "rm -rf dist",
29
+ "typecheck": "tsc --noEmit",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "dependencies": {
35
+ "@xmachines/play-actor": "1.0.0-beta.1",
36
+ "@xmachines/play-catalog": "1.0.0-beta.1",
37
+ "@xmachines/play-signals": "1.0.0-beta.1"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^25.4.0",
41
+ "@vitejs/plugin-vue": "^6.0.4",
42
+ "@vue/test-utils": "^2.4.6",
43
+ "jsdom": "^28.0.0",
44
+ "typescript": "^5.7.0",
45
+ "vitest": "^4.0.18",
46
+ "vue": "^3.5.30"
47
+ },
48
+ "peerDependencies": {
49
+ "vue": "^3.5.30"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ }
54
+ }
@@ -0,0 +1,150 @@
1
+ <script lang="ts">
2
+ /**
3
+ * PlayRenderer - Main Vue renderer component for XMachines Play architecture
4
+ *
5
+ * Architecture (per RESEARCH.md Pattern 1):
6
+ * - Subscribes to actor.currentView signal via Signal.subtle.Watcher
7
+ * - Dynamically renders catalog components based on view.component string
8
+ * - Forwards user events to actor via actor.send()
9
+ * - Vue ref only for triggering renders, NOT business logic
10
+ *
11
+ * Signal bridge uses one-shot re-watch pattern:
12
+ * TC39 Signal watchers stop watching after notification, so watcher.watch()
13
+ * must be called inside a microtask after getPending() to re-arm for the
14
+ * next notification.
15
+ *
16
+ * CRITICAL: Never call signal.get() or signal.set() inside the Watcher's
17
+ * notify callback. The callback runs synchronously during the signal graph's
18
+ * dirty-propagation phase. All reads must be deferred to a queueMicrotask.
19
+ *
20
+ * @invariant Actor Authority - Actor decides all state transitions via guards
21
+ * @invariant Passive Infrastructure - Component observes signals, sends events
22
+ * @invariant Signal-Only Reactivity - Business logic state lives in actor signals
23
+ */
24
+
25
+ import { defineComponent, ref, computed, toRaw, onUnmounted, h, type PropType } from "vue";
26
+ import { Signal } from "@xmachines/play-signals";
27
+ import type { PlayRendererProps } from "./types.js";
28
+ import type { AbstractActor, Viewable } from "@xmachines/play-actor";
29
+ import type { AnyActorLogic } from "xstate";
30
+ import type { Component } from "vue";
31
+
32
+ export default defineComponent({
33
+ name: "PlayRenderer",
34
+ props: {
35
+ actor: {
36
+ type: Object as PropType<AbstractActor<AnyActorLogic> & Viewable>,
37
+ required: true,
38
+ },
39
+ components: {
40
+ type: Object as PropType<Record<string, Component>>,
41
+ required: true,
42
+ },
43
+ },
44
+ setup(props, { slots }) {
45
+ // Unwrap actor from Vue's reactive proxy to access raw Signal objects
46
+ // CRITICAL: toRaw() preserves Signal's 'this' binding for .get() and watcher operations
47
+ const actor = toRaw(props.actor);
48
+
49
+ // Get initial value from unwrapped signal
50
+ const initialView = actor.currentView.get();
51
+
52
+ // Vue ref for triggering re-renders (NOT business logic state)
53
+ // Signal is source of truth, ref is just Vue's render trigger
54
+ const view = ref<{ component: string; props: Record<string, unknown> } | null>(initialView);
55
+
56
+ // Signal watcher for bridging TC39 Signals to Vue reactivity
57
+ // Created immediately (not in onMounted) so signal changes during the
58
+ // synchronous mount phase are captured.
59
+ //
60
+ // The notify callback runs synchronously during the signal graph's
61
+ // dirty-propagation phase. NEVER read (.get()) or write (.set()) signals
62
+ // inside it. Only schedule a microtask to do the actual work.
63
+ const watcher = new Signal.subtle.Watcher(() => {
64
+ queueMicrotask(() => {
65
+ // Step 1: Acknowledge notification (clears watcher's dirty flags)
66
+ watcher.getPending();
67
+
68
+ // Step 2: Read signal value (safe — notification phase is over)
69
+ view.value = actor.currentView.get();
70
+
71
+ // Step 3: Re-watch for next notification (one-shot pattern)
72
+ // TC39 watchers stop notifying after first notification until re-armed
73
+ watcher.watch(actor.currentView);
74
+ });
75
+ });
76
+
77
+ // Start watching the signal
78
+ watcher.watch(actor.currentView);
79
+
80
+ onUnmounted(() => {
81
+ // Unwatch to stop receiving notifications
82
+ watcher.unwatch(actor.currentView);
83
+ });
84
+
85
+ // Bind send function to actor for correct 'this' context
86
+ const sendBound = actor.send.bind(actor);
87
+
88
+ // Compute Component from view.component lookup
89
+ const ResolvedComponent = computed(() => {
90
+ if (!view.value) return null;
91
+
92
+ // Handle null/undefined components catalog gracefully
93
+ if (!props.components) {
94
+ console.error(
95
+ `Components catalog is ${props.components === null ? "null" : "undefined"}. ` +
96
+ `Cannot render component "${view.value.component}".`,
97
+ );
98
+ return null;
99
+ }
100
+
101
+ // Look up component from catalog
102
+ const comp = toRaw(props.components[view.value.component]);
103
+
104
+ if (!comp) {
105
+ console.error(
106
+ `Component "${view.value.component}" not found in catalog. ` +
107
+ `Available components: ${Object.keys(props.components).join(", ")}`,
108
+ );
109
+ return null;
110
+ }
111
+
112
+ return comp;
113
+ });
114
+
115
+ // Use render function to avoid Vue 3.5 SFC template <slot> + jsdom renderSlot crash
116
+ return () => {
117
+ // No view — show fallback slot
118
+ if (!view.value) {
119
+ return slots.fallback ? slots.fallback() : null;
120
+ }
121
+
122
+ // View exists but component not found
123
+ if (!ResolvedComponent.value) {
124
+ return h(
125
+ "div",
126
+ { class: "play-renderer-error" },
127
+ `Component "${view.value.component}" not found in catalog`,
128
+ );
129
+ }
130
+
131
+ // Render matched component dynamically
132
+ return h(ResolvedComponent.value, {
133
+ ...view.value.props,
134
+ send: sendBound,
135
+ });
136
+ };
137
+ },
138
+ });
139
+ </script>
140
+
141
+ <style scoped>
142
+ .play-renderer-error {
143
+ padding: 1rem;
144
+ background-color: #fee;
145
+ border: 1px solid #fcc;
146
+ border-radius: 4px;
147
+ color: #c00;
148
+ font-family: monospace;
149
+ }
150
+ </style>
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @xmachines/play-vue - Vue renderer for XMachines Play architecture
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ // Re-export the Vue component (will be handled by build tools like Vite)
8
+ export { default as PlayRenderer } from "./PlayRenderer.vue";
9
+ export type { PlayRendererProps } from "./types.js";
package/src/types.ts ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TypeScript type definitions for play-vue
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ import type { AbstractActor, Viewable } from "@xmachines/play-actor";
8
+ import type { Component } from "vue";
9
+ import type { AnyActorLogic } from "xstate";
10
+
11
+ /**
12
+ * Props for PlayRenderer component
13
+ *
14
+ * @property actor - Actor instance with currentView signal (requires Viewable capability)
15
+ * @property components - Map of component names to Vue components
16
+ */
17
+ export interface PlayRendererProps {
18
+ /** Actor instance with currentView signal (requires Viewable capability) */
19
+ actor: AbstractActor<AnyActorLogic> & Viewable;
20
+
21
+ /** Map of component names to Vue components */
22
+ components: Record<string, Component>;
23
+ }
@@ -0,0 +1,5 @@
1
+ declare module "*.vue" {
2
+ import type { DefineComponent } from "vue";
3
+ const component: DefineComponent<{}, {}, unknown>;
4
+ export default component;
5
+ }
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Tests for PlayRenderer component
3
+ * Validates signal reactivity, component rendering, and error handling
4
+ */
5
+
6
+ import { describe, test, expect, vi } from "vitest";
7
+ import { mount, flushPromises } from "@vue/test-utils";
8
+ import { Signal } from "@xmachines/play-signals";
9
+ import type { AbstractActor, Viewable } from "@xmachines/play-actor";
10
+ import PlayRenderer from "../src/PlayRenderer.vue";
11
+
12
+ // Test components
13
+ const TestHome = {
14
+ name: "TestHome",
15
+ template: '<div data-testid="home">Home Component</div>',
16
+ };
17
+
18
+ const TestLogin = {
19
+ name: "TestLogin",
20
+ template: '<div data-testid="login">Login Component</div>',
21
+ };
22
+
23
+ const TestDashboard = {
24
+ name: "TestDashboard",
25
+ props: ["userId", "send"],
26
+ template: '<div data-testid="dashboard">Dashboard: {{ userId }}</div>',
27
+ };
28
+
29
+ // Mock actor factory
30
+ function createMockActor(
31
+ initialView: { component: string; props: unknown } | null,
32
+ ): AbstractActor<unknown> & Viewable {
33
+ const currentViewSignal = new Signal.State(initialView);
34
+
35
+ return {
36
+ currentView: currentViewSignal,
37
+ send: vi.fn(),
38
+ start: vi.fn(),
39
+ stop: vi.fn(),
40
+ getSnapshot: vi.fn(),
41
+ subscribe: vi.fn(),
42
+ state: new Signal.State({ value: "idle", context: {} } as unknown),
43
+ currentRoute: new Signal.Computed(() => null),
44
+ } as unknown;
45
+ }
46
+
47
+ describe("PlayRenderer", () => {
48
+ describe("initial rendering", () => {
49
+ test("mounts with initial view", () => {
50
+ const actor = createMockActor({ component: "TestHome", props: {} });
51
+ const components = { TestHome };
52
+
53
+ const wrapper = mount(PlayRenderer, {
54
+ props: { actor, components },
55
+ });
56
+
57
+ expect(wrapper.find('[data-testid="home"]').exists()).toBe(true);
58
+ });
59
+
60
+ test("renders matched component", () => {
61
+ const actor = createMockActor({ component: "TestLogin", props: {} });
62
+ const components = { TestLogin };
63
+
64
+ const wrapper = mount(PlayRenderer, {
65
+ props: { actor, components },
66
+ });
67
+
68
+ expect(wrapper.find('[data-testid="login"]').exists()).toBe(true);
69
+ });
70
+
71
+ test("passes props to rendered component", () => {
72
+ const actor = createMockActor({
73
+ component: "TestDashboard",
74
+ props: { userId: "user123" },
75
+ });
76
+ const components = { TestDashboard };
77
+
78
+ const wrapper = mount(PlayRenderer, {
79
+ props: { actor, components },
80
+ });
81
+
82
+ expect(wrapper.find('[data-testid="dashboard"]').text()).toContain("user123");
83
+ });
84
+
85
+ test("passes bound send function to component", () => {
86
+ const sendSpy = vi.fn();
87
+ const actor = createMockActor({
88
+ component: "TestDashboard",
89
+ props: { userId: "user123" },
90
+ });
91
+ actor.send = sendSpy;
92
+
93
+ const TestComponent = {
94
+ props: ["send"],
95
+ template: "<button @click=\"send({ type: 'test' })\">Click</button>",
96
+ };
97
+
98
+ const components = { TestComponent };
99
+ const wrapper = mount(PlayRenderer, {
100
+ props: {
101
+ actor: {
102
+ ...actor,
103
+ currentView: new Signal.State({ component: "TestComponent", props: {} }),
104
+ },
105
+ components,
106
+ },
107
+ });
108
+
109
+ wrapper.find("button").trigger("click");
110
+ expect(sendSpy).toHaveBeenCalledWith({ type: "test" });
111
+ });
112
+ });
113
+
114
+ describe("signal reactivity", () => {
115
+ test("updates when currentView signal changes", async () => {
116
+ const actor = createMockActor({ component: "TestHome", props: {} });
117
+ const components = { TestHome, TestLogin };
118
+
119
+ const wrapper = mount(PlayRenderer, {
120
+ props: { actor, components },
121
+ });
122
+
123
+ expect(wrapper.find('[data-testid="home"]').exists()).toBe(true);
124
+
125
+ // Change the signal value
126
+ actor.currentView.set({ component: "TestLogin", props: {} });
127
+
128
+ // Wait for: microtask (watcher callback) → Vue reactivity flush → DOM update
129
+ await flushPromises();
130
+
131
+ expect(wrapper.find('[data-testid="login"]').exists()).toBe(true);
132
+ expect(wrapper.find('[data-testid="home"]').exists()).toBe(false);
133
+ });
134
+
135
+ test("re-watches signal after notification (one-shot pattern validation)", async () => {
136
+ const actor = createMockActor({ component: "TestHome", props: {} });
137
+ const components = { TestHome, TestLogin, TestDashboard };
138
+
139
+ const wrapper = mount(PlayRenderer, {
140
+ props: { actor, components },
141
+ });
142
+
143
+ // First change
144
+ actor.currentView.set({ component: "TestLogin", props: {} });
145
+ await flushPromises();
146
+ expect(wrapper.find('[data-testid="login"]').exists()).toBe(true);
147
+
148
+ // Second change - validates re-watch worked
149
+ actor.currentView.set({ component: "TestDashboard", props: { userId: "user456" } });
150
+ await flushPromises();
151
+ expect(wrapper.find('[data-testid="dashboard"]').exists()).toBe(true);
152
+ expect(wrapper.find('[data-testid="login"]').exists()).toBe(false);
153
+ });
154
+ });
155
+
156
+ describe("error handling", () => {
157
+ test("shows fallback when view is null", () => {
158
+ const actor = createMockActor(null);
159
+ const components = { TestHome };
160
+
161
+ const wrapper = mount(PlayRenderer, {
162
+ props: { actor, components },
163
+ slots: {
164
+ fallback: '<div data-testid="fallback">Loading...</div>',
165
+ },
166
+ });
167
+
168
+ expect(wrapper.find('[data-testid="fallback"]').exists()).toBe(true);
169
+ });
170
+
171
+ test("logs error and shows message when component not found", () => {
172
+ const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
173
+ const actor = createMockActor({ component: "UnknownComponent", props: {} });
174
+ const components = { TestHome };
175
+
176
+ const wrapper = mount(PlayRenderer, {
177
+ props: { actor, components },
178
+ });
179
+
180
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
181
+ expect.stringContaining('Component "UnknownComponent" not found in catalog'),
182
+ );
183
+ expect(wrapper.find(".play-renderer-error").exists()).toBe(true);
184
+ expect(wrapper.find(".play-renderer-error").text()).toContain("UnknownComponent");
185
+
186
+ consoleErrorSpy.mockRestore();
187
+ });
188
+
189
+ test("handles null components catalog gracefully", () => {
190
+ const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
191
+ const actor = createMockActor({ component: "TestHome", props: {} });
192
+
193
+ mount(PlayRenderer, {
194
+ props: { actor, components: null as unknown },
195
+ global: {
196
+ config: {
197
+ warnHandler: () => {},
198
+ },
199
+ },
200
+ });
201
+
202
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
203
+ expect.stringContaining("Components catalog is null"),
204
+ );
205
+
206
+ consoleErrorSpy.mockRestore();
207
+ });
208
+ });
209
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "extends": "@xmachines/shared/tsconfig",
3
+ "compilerOptions": {
4
+ "composite": true,
5
+ "rootDir": "./src",
6
+ "outDir": "./dist",
7
+ "emitDeclarationOnly": true
8
+ },
9
+ "references": [
10
+ { "path": "../play-actor" },
11
+ { "path": "../play-catalog" },
12
+ { "path": "../play-signals" }
13
+ ],
14
+ "include": ["src/**/*"]
15
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/xstate/dist/declarations/src/inspection.d.ts","../../node_modules/xstate/dist/declarations/src/system.d.ts","../../node_modules/xstate/dist/declarations/src/StateMachine.d.ts","../../node_modules/xstate/dist/declarations/src/StateNode.d.ts","../../node_modules/xstate/dist/declarations/src/State.d.ts","../../node_modules/xstate/dist/declarations/src/actions/raise.d.ts","../../node_modules/xstate/dist/declarations/src/actions/send.d.ts","../../node_modules/xstate/dist/declarations/src/actors/promise.d.ts","../../node_modules/xstate/dist/declarations/src/symbolObservable.d.ts","../../node_modules/xstate/dist/declarations/src/createActor.d.ts","../../node_modules/xstate/dist/declarations/src/guards.d.ts","../../node_modules/xstate/dist/declarations/src/types.d.ts","../../node_modules/xstate/dist/declarations/src/spawn.d.ts","../../node_modules/xstate/dist/declarations/src/actions/assign.d.ts","../../node_modules/xstate/dist/declarations/src/actions/cancel.d.ts","../../node_modules/xstate/dist/declarations/src/actions/emit.d.ts","../../node_modules/xstate/dist/declarations/src/actions/spawnChild.d.ts","../../node_modules/xstate/dist/declarations/src/actions/stopChild.d.ts","../../node_modules/xstate/dist/declarations/src/actions/enqueueActions.d.ts","../../node_modules/xstate/dist/declarations/src/actions/log.d.ts","../../node_modules/xstate/dist/declarations/src/actions.d.ts","../../node_modules/xstate/dist/declarations/src/actors/callback.d.ts","../../node_modules/xstate/dist/declarations/src/actors/observable.d.ts","../../node_modules/xstate/dist/declarations/src/actors/transition.d.ts","../../node_modules/xstate/dist/declarations/src/actors/index.d.ts","../../node_modules/xstate/dist/declarations/src/assert.d.ts","../../node_modules/xstate/dist/declarations/src/createMachine.d.ts","../../node_modules/xstate/dist/declarations/src/getNextSnapshot.d.ts","../../node_modules/xstate/dist/declarations/src/setup.d.ts","../../node_modules/xstate/dist/declarations/src/SimulatedClock.d.ts","../../node_modules/xstate/dist/declarations/src/stateUtils.d.ts","../../node_modules/xstate/dist/declarations/src/toPromise.d.ts","../../node_modules/xstate/dist/declarations/src/utils.d.ts","../../node_modules/xstate/dist/declarations/src/transition.d.ts","../../node_modules/xstate/dist/declarations/src/waitFor.d.ts","../../node_modules/xstate/dist/declarations/src/index.d.ts","../../node_modules/xstate/dist/xstate.cjs.d.mts","../../node_modules/signal-polyfill/dist/graph.d.ts","../../node_modules/signal-polyfill/dist/equality.d.ts","../../node_modules/signal-polyfill/dist/signal.d.ts","../../node_modules/signal-polyfill/dist/computed.d.ts","../../node_modules/signal-polyfill/dist/wrapper.d.ts","../../node_modules/signal-polyfill/dist/index.d.ts","../play-signals/dist/types.d.ts","../play-signals/dist/index.d.ts","../play-actor/dist/abstract-actor.d.ts","../play-actor/dist/index.d.ts","../../node_modules/@vue/shared/dist/shared.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","../../node_modules/@vue/reactivity/dist/reactivity.d.ts","../../node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../node_modules/vue/dist/vue.d.mts","./src/types.ts","./src/index.ts","./src/vue-shim.d.ts","../../node_modules/@types/aria-query/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/deep-eql/index.d.ts","../../node_modules/assertion-error/index.d.ts","../../node_modules/@types/chai/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/unist/index.d.ts","../../node_modules/@types/hast/index.d.ts","../../node_modules/@types/http-cache-semantics/index.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/@types/node/web-globals/blob.d.ts","../../node_modules/@types/node/web-globals/console.d.ts","../../node_modules/@types/node/web-globals/crypto.d.ts","../../node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/@types/node/web-globals/encoding.d.ts","../../node_modules/@types/node/web-globals/events.d.ts","../../node_modules/undici-types/utility.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client-stats.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/round-robin-pool.d.ts","../../node_modules/undici-types/h2c-client.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-call-history.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/snapshot-agent.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/cache-interceptor.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/@types/node/web-globals/importmeta.d.ts","../../node_modules/@types/node/web-globals/messaging.d.ts","../../node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/@types/node/web-globals/performance.d.ts","../../node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/@types/node/web-globals/timers.d.ts","../../node_modules/@types/node/web-globals/url.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/inspector.generated.d.ts","../../node_modules/@types/node/inspector/promises.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/buffer/index.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/path/posix.d.ts","../../node_modules/@types/node/path/win32.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/quic.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/sqlite.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/test/reporters.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/util/types.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/normalize-package-data/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../node_modules/@types/which/index.d.ts","../../node_modules/@types/ws/index.d.ts","../../node_modules/@types/yauzl/index.d.ts"],"fileIdsList":[[129,155,218,226,230,233,235,236,237,250],[155,218,226,230,233,235,236,237,250],[129,130,142,143,144,155,218,226,230,233,235,236,237,250],[129,130,155,218,226,230,233,235,236,237,250],[146,147,155,218,226,230,233,235,236,237,250],[150,155,218,226,230,233,235,236,237,250],[155,215,216,218,226,230,233,235,236,237,250],[155,217,218,226,230,233,235,236,237,250],[218,226,230,233,235,236,237,250],[155,218,226,230,233,235,236,237,250,258],[155,218,219,224,226,229,230,233,235,236,237,239,250,255,267],[155,218,219,220,226,229,230,233,235,236,237,250],[155,218,221,226,230,233,235,236,237,250,268],[155,218,222,223,226,230,233,235,236,237,241,250],[155,218,223,226,230,233,235,236,237,250,255,264],[155,218,224,226,229,230,233,235,236,237,239,250],[155,217,218,225,226,230,233,235,236,237,250],[155,218,226,227,230,233,235,236,237,250],[155,218,226,228,229,230,233,235,236,237,250],[155,217,218,226,229,230,233,235,236,237,250],[155,218,226,229,230,231,233,235,236,237,250,255,267],[155,218,226,229,230,231,233,235,236,237,250,255,258],[155,205,218,226,229,230,232,233,235,236,237,239,250,255,267],[155,218,226,229,230,232,233,235,236,237,239,250,255,264,267],[155,218,226,230,232,233,234,235,236,237,250,255,264,267],[153,154,155,156,157,158,159,160,161,162,163,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],[155,218,226,229,230,233,235,236,237,250],[155,218,226,230,233,235,237,250],[155,218,226,230,233,235,236,237,238,250,267],[155,218,226,229,230,233,235,236,237,239,250,255],[155,218,226,230,233,235,236,237,241,250],[155,218,226,230,233,235,236,237,242,250],[155,218,226,229,230,233,235,236,237,245,250],[155,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],[155,218,226,230,233,235,236,237,247,250],[155,218,226,230,233,235,236,237,248,250],[155,218,223,226,230,233,235,236,237,239,250,258],[155,218,226,229,230,233,235,236,237,250,251],[155,218,226,230,233,235,236,237,250,252,268,271],[155,218,226,229,230,233,235,236,237,250,255,257,258],[155,218,226,230,233,235,236,237,250,256,258],[155,218,226,230,233,235,236,237,250,258,268],[155,218,226,230,233,235,236,237,250,259],[155,215,218,226,230,233,235,236,237,250,255,261,267],[155,218,226,230,233,235,236,237,250,255,260],[155,218,226,229,230,233,235,236,237,250,262,263],[155,218,226,230,233,235,236,237,250,262,263],[155,218,223,226,230,233,235,236,237,239,250,255,264],[155,218,226,230,233,235,236,237,250,265],[155,218,226,230,233,235,236,237,239,250,266],[155,218,226,230,232,233,235,236,237,248,250,267],[155,218,226,230,233,235,236,237,250,268,269],[155,218,223,226,230,233,235,236,237,250,269],[155,218,226,230,233,235,236,237,250,255,270],[155,218,226,230,233,235,236,237,238,250,271],[155,218,226,230,233,235,236,237,250,272],[155,218,221,226,230,233,235,236,237,250],[155,218,223,226,230,233,235,236,237,250],[155,218,226,230,233,235,236,237,250,268],[155,205,218,226,230,233,235,236,237,250],[155,218,226,230,233,235,236,237,250,267],[155,218,226,230,233,235,236,237,250,273],[155,218,226,230,233,235,236,237,245,250],[155,218,226,230,233,235,236,237,250,263],[155,205,218,226,229,230,231,233,235,236,237,245,250,255,258,267,270,271,273],[155,218,226,230,233,235,236,237,250,255,274],[155,218,226,230,233,235,236,237,250,278],[135,155,218,226,230,233,235,236,237,250,277],[155,218,226,229,230,232,233,234,235,236,237,239,250,255,264,267,274,275],[155,218,226,229,230,233,235,236,237,250,255,275],[128,129,130,155,218,226,230,233,235,236,237,250],[131,155,218,226,230,233,235,236,237,250],[128,155,218,226,230,233,235,236,237,250],[128,133,134,136,155,218,226,230,233,235,236,237,250],[133,134,135,136,155,218,226,230,233,235,236,237,250],[118,119,155,218,226,230,233,235,236,237,250],[122,155,218,226,230,233,235,236,237,250],[118,120,121,155,218,226,230,233,235,236,237,250],[155,170,173,176,177,218,226,230,233,235,236,237,250,267],[155,173,218,226,230,233,235,236,237,250,255,267],[155,173,177,218,226,230,233,235,236,237,250,267],[155,218,226,230,233,235,236,237,250,255],[155,167,218,226,230,233,235,236,237,250],[155,171,218,226,230,233,235,236,237,250],[155,169,170,173,218,226,230,233,235,236,237,250,267],[155,218,226,230,233,235,236,237,239,250,264],[155,218,226,230,233,235,236,237,250,275],[155,167,218,226,230,233,235,236,237,250,275],[155,169,173,218,226,230,233,235,236,237,239,250,267],[155,164,165,166,168,172,218,226,229,230,233,235,236,237,250,255,267],[155,173,182,190,218,226,230,233,235,236,237,250],[155,165,171,218,226,230,233,235,236,237,250],[155,173,199,200,218,226,230,233,235,236,237,250],[155,165,168,173,218,226,230,233,235,236,237,250,258,267,275],[155,173,218,226,230,233,235,236,237,250],[155,169,173,218,226,230,233,235,236,237,250,267],[155,164,218,226,230,233,235,236,237,250],[155,167,168,169,171,172,173,174,175,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,218,226,230,233,235,236,237,250],[155,173,192,195,218,226,230,233,235,236,237,250],[155,173,182,183,184,218,226,230,233,235,236,237,250],[155,171,173,183,185,218,226,230,233,235,236,237,250],[155,172,218,226,230,233,235,236,237,250],[155,165,167,173,218,226,230,233,235,236,237,250],[155,173,177,183,185,218,226,230,233,235,236,237,250],[155,177,218,226,230,233,235,236,237,250],[155,171,173,176,218,226,230,233,235,236,237,250,267],[155,165,169,173,182,218,226,230,233,235,236,237,250],[155,173,192,218,226,230,233,235,236,237,250],[155,185,218,226,230,233,235,236,237,250],[155,167,173,199,218,226,230,233,235,236,237,250,258,273,275],[132,136,155,218,226,230,233,235,236,237,250],[82,155,218,226,230,233,235,236,237,250],[83,84,92,155,218,226,230,233,235,236,237,250],[82,84,85,92,155,218,226,230,233,235,236,237,250],[83,92,155,218,226,230,233,235,236,237,250],[86,87,94,95,96,97,98,99,100,155,218,226,230,233,235,236,237,250],[92,93,155,218,226,230,233,235,236,237,250],[92,155,218,226,230,233,235,236,237,250],[86,87,91,92,94,95,96,97,98,155,218,226,230,233,235,236,237,250],[82,92,155,218,226,230,233,235,236,237,250],[88,92,102,103,104,155,218,226,230,233,235,236,237,250],[82,89,92,155,218,226,230,233,235,236,237,250],[81,82,83,84,85,90,91,92,93,101,105,106,107,108,109,110,111,112,113,114,115,155,218,226,230,233,235,236,237,250],[83,86,87,91,92,94,95,96,97,98,99,100,155,218,226,230,233,235,236,237,250],[84,85,92,155,218,226,230,233,235,236,237,250],[81,92,155,218,226,230,233,235,236,237,250],[81,82,83,84,85,86,87,88,90,91,93,94,155,218,226,230,233,235,236,237,250],[84,92,155,218,226,230,233,235,236,237,250],[116,155,218,226,230,233,235,236,237,250],[117,125,155,218,226,230,233,235,236,237,250],[126,155,218,226,230,233,235,236,237,250],[123,124,155,218,226,230,233,235,236,237,250],[138,140,155,218,226,230,233,235,236,237,250],[117,127,137,155,218,226,230,233,235,236,237,250],[137,155,218,226,230,233,235,236,237,250]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a22045e94ed099cf2d521ae47f8b0b2e50033fa0b24838c42a6a312fc7755f2","impliedFormat":1},{"version":"1723af1fd61438370ef2f9b162c21925d7d8263f02ea3786701207a2697bc570","impliedFormat":1},{"version":"f978ab920c44da04b106e19376eac3d5873680407778be96a6597feb930a7c92","impliedFormat":1},{"version":"92b81364ea40c145da7f730f660350935e49334a18faafbe7f86105763e6e486","impliedFormat":1},{"version":"672c3ab666d58c2e16ade2836c496278da896764c8f91143ad5c51fab2b9367b","impliedFormat":1},{"version":"d2617b18ac1e533346f2a3a054a2c6f31f86f909242e93c7a6b98c635e0f8792","impliedFormat":1},{"version":"bb892dcd5d3c7b31e1c251bb43384e0eac9604b32b54f27f682b78ba0fa6d257","impliedFormat":1},{"version":"9e49b5ba3cfc1de785d7c3941ea1bccb32e61b880af78748013a9bce376d9817","impliedFormat":1},{"version":"e653259e64adbe8acf9c33dc1a525ac1d1a1dd0f82580f73d81543f948485a86","impliedFormat":1},{"version":"65ec5e77d12a9fef085314729cfa5459a863e2d190184a418fb89b8f3d39a0c9","impliedFormat":1},{"version":"1c328efb6045370a8303b4d2bf3fb67e226a07e9391f9044e40f791faa545c82","impliedFormat":1},{"version":"7c2d9cbddddfa130bd953bf59a3556ef0e9494e70585feb54a60866845555ea6","impliedFormat":1},{"version":"9dc0ec853f1e803bdf9d2dcc69509f8dae488100664915ab1dd9ffbb732291ba","impliedFormat":1},{"version":"1559b4a59a19b452d5bc46c1f584d99f2775f6d016af0177a5a2150d4955676d","impliedFormat":1},{"version":"245b103ea8c3b19f25cc0b9bb8acc1330b55f0f04338b2d83e236869a6d99e71","impliedFormat":1},{"version":"a2553ad8aacc78a09e9d91d91f9bf21bb4ea98c45f44475c45ea9cc8a5a8b0d9","impliedFormat":1},{"version":"0bb0ba4030a0b3ada4eadf14ca3450653ec4a0e78ffa26ab742ac1548032b200","impliedFormat":1},{"version":"a0af6c85115a5c705af405fd8d3018cc681a9d86e2758395dd8fafd264e93e77","impliedFormat":1},{"version":"dd927c1c69750111f7b88dea99168831251b699486ed211b8f48d3d7790bdd10","impliedFormat":1},{"version":"d6e0a302299f70d42fb6068e4f9f98f95bf63e0d17f96ae0bc54c0fb61b00b92","impliedFormat":1},{"version":"98a7e602735736dee031310c9b49c16988ac523895c628eb358ab9d0c98c47ae","impliedFormat":1},{"version":"d77b19a94143dd761991f7f7f25f8dab258d3eb3e19b85048ba3d41f83d5de41","impliedFormat":1},{"version":"507057a5b3bd68b3056cfb09e9de27601a99e339907cf0fd0b03d5dd840b4c4a","impliedFormat":1},{"version":"3f246c5f9ac101ccef1e1aad6719b6dd1449461b071dea904856780cac690c94","impliedFormat":1},{"version":"24ca5a7d5faa57d04f86e622e614931bf6aeb2d50dfbb8bab1ff319630347407","impliedFormat":1},{"version":"dcca19a81187a21482680d12d92840af02cea5a06e3620d86c3e633242424c42","impliedFormat":1},{"version":"d5144eb14cb4d9292b841699fb53e9a6641b64d926170043412f1e5293bba369","impliedFormat":1},{"version":"6af618a43f82b685b70b919a00aea9ff6bc2d574c016278b2413631f8ab7ce76","impliedFormat":1},{"version":"68baace0098c248dbee92001664c7eff0dc40182d61a255ba053ea9d68c749fb","impliedFormat":1},{"version":"b58d89b47b1fa76ce57bf1179e53f9d6f5118a301943cb4dea5987d72d529ce9","impliedFormat":1},{"version":"a0982cf55aad440267fc9432f3a12e3a67c497a34cac47f38a3e5a04156b46c1","impliedFormat":1},{"version":"8549892f753971e3ec5f8bad0bd9f74d1a8521f573fd006cfd00d3c27490f444","impliedFormat":1},{"version":"1d5454555a8ee7f7660b48a9d7cf3270d260d3bc61350d79b7c5e2700b7aa20a","impliedFormat":1},{"version":"68cc279fd82ace672f68b6996223f2d6125d81ca544510a52f59f911051d4068","impliedFormat":1},{"version":"7cdbd04d7f3657409c1cab924650dfe5ca74735d45e4f746cab2c571074f580f","impliedFormat":1},{"version":"84c91746cd45d714dec0cd2d4f410810324e2152e4ed674aedad6c1e71aca5cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"07be608f316f64514f5cc650b9f10053e31390743c385e64d6c7734ca48b53f5","impliedFormat":99},{"version":"39432baa20744a664f57d01b9de0af90fe70b8af955409c048e656fcfcc42efa","impliedFormat":99},{"version":"b7df6bfab8fc477f016d607ec9ff6dd71ff7b33c8bd3262f6886cb7f1fd39fa9","impliedFormat":99},{"version":"cf6598943fca6f9b06215c442627a0eacddac06547cee9f785f6c2c64e15a723","impliedFormat":99},{"version":"dc24da4a8d1af9a2ea908142e11a09c4574cb4d1135060aeda42a5f016961623","impliedFormat":99},{"version":"77537cefd19cb6912cd4d70abe9f159ded70463db9dfba43d78b96d425c31960","impliedFormat":99},{"version":"bdbddfd86263082484c4c624553f4cb2a248c404bf79e0287c384e818f93d9b8","impliedFormat":99},{"version":"fb3e0eb6865633b0d5013bee9cd4922ff3b6a84d4f7e75de7dfe69143757bd63","impliedFormat":99},{"version":"d81945250ea61e8e922e39a550313d34c2de3a62c381c6dab7049921c69c4e51","impliedFormat":99},{"version":"470b9a38f26d9c9e8ff9853e7989be4cc2185feced3c10699b06774bbc3b3f4a","impliedFormat":99},{"version":"f468b74459f1ad4473b36a36d49f2b255f3c6b5d536c81239c2b2971df089eaf","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"524a409ad72186b7f6cb16898c349465cfa876f641d6cb6137b3123d5cfca619","impliedFormat":1},{"version":"ebe84ad8344962b7117a3b95065f47383215020eaf1b626463863b45b4d16e62","impliedFormat":1},{"version":"de5abbc02627403ac5796572520dc2b42df54f1257e7218a9ef37509d9b56972","impliedFormat":1},{"version":"bc41b74f965a6bf0a038e32753c6920aad2f2fed97cd32a105e9677070ed50e5","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"88ad1af02cacc61bf79683b021d326eeafc91231660a06495c5046d4649ec3a2","impliedFormat":1},{"version":"c0191592be8eb7906f99ac4b8798d80a585b94001ea1a5f50d6ce5b0d13a5c62","impliedFormat":99},{"version":"5cedbed37d6cc1c4202635c917268bf3589cb19eb53cbb79547965a2c57eb2a6","signature":"81a80200bb33420dacd2dedb90ad03413e39b4ab46ac0ebdd98bb94b74b02fd1","impliedFormat":99},{"version":"2a85ad5d08b418880be1df3bb9098f261f9653db1ef96482d3de5fd700b279cb","signature":"63fbafd986437917987e8a73cb22d3b36341e11d45c471826a4917f6a31ae7d1","impliedFormat":99},{"version":"bccda4f7050068c11d5400f09b32dc7d917ba793e9ad209eb852dcfec982de3d","impliedFormat":99},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"4f6ae308c5f2901f2988c817e1511520619e9025b9b12cc7cce2ab2e6ffed78a","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fad5618174d74a34ee006406d4eb37e8d07dd62eb1315dbf52f48d31a337547","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b50a819485ffe0d237bf0d131e92178d14d11e2aa873d73615a9ec578b341f5","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"12d602a8fe4c2f2ba4f7804f5eda8ba07e0c83bf5cf0cda8baffa2e9967bfb77","affectsGlobalScope":true,"impliedFormat":1},{"version":"f96a48183254c00d24575401f1a761b4ce4927d927407e7862a83e06ce5d6964","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"8db46b61a690f15b245cf16270db044dc047dce9f93b103a59f50262f677ea1f","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"42a05d8f239f74587d4926aba8cc54792eed8e8a442c7adc9b38b516642aadfe","impliedFormat":1},{"version":"e843c4c3582948689477a98129c080d2a6919cf44b6b1eed8f992642fe141cf5","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"266bee0a41e9c3ba335583e21e9277ae03822402cf5e8e1d99f5196853613b98","affectsGlobalScope":true,"impliedFormat":1},{"version":"386606f8a297988535cb1401959041cfa7f59d54b8a9ed09738e65c98684c976","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"9cc9d479fb2283d21495e1eb22dccce6cbeaa1e2d87832fe390f6b61b1ff537d","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"90a278f5fab7557e69e97056c0841adf269c42697194f0bd5c5e69152637d4b3","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"3e4e0959c67965a12a0976d58ba1ef64c49d852aaaf0e91148a64d3681ca22c9","impliedFormat":1},{"version":"1edcf2f36fc332615846bde6dcc71a8fe526065505bc5e3dcfd65a14becdf698","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"1c7573c37465af751be31717e70588b16a272a974e790427fc9558b8e9b199d1","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"ca279fadaa088b63f123c86ffb4dda5116f8dba23e6e93e63a2b48262320be38","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"cca8917838a876e2d7016c9b6af57cbf11fdf903c5fdd8e613fa31840b2957bf","impliedFormat":1},{"version":"d91ae55e4282c22b9c21bc26bd3ef637d3fe132507b10529ae68bf76f5de785b","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"bc9b17634d5e75b9040d8b414bb5bc936273e8100212816e905e39948cd9de96","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"4c5e90ddbcd177ad3f2ffc909ae217c87820f1e968f6959e4b6ba38a8cec935e","impliedFormat":1},{"version":"b70dd9a44e1ac42f030bb12e7d79117eac7cb74170d72d381a1e7913320af23a","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"7d2a0ba1297be385a89b5515b88cd31b4a1eeef5236f710166dc1b36b1741e1b","impliedFormat":1},{"version":"9cbfee0d2998dc92715f33d94e0cf9650b5e07f74cb40331dcccbbeaf4f36872","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"74d5a87c3616cd5d8691059d531504403aa857e09cbaecb1c64dfb9ace0db185","impliedFormat":1}],"root":[[138,140]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"importHelpers":false,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./dist","removeComments":false,"rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[130,1],[129,2],[141,2],[145,3],[142,1],[143,4],[144,1],[148,5],[146,2],[149,2],[151,6],[152,2],[215,7],[216,7],[217,8],[155,9],[218,10],[219,11],[220,12],[153,2],[221,13],[222,14],[223,15],[224,16],[225,17],[226,18],[227,18],[228,19],[229,20],[230,21],[231,22],[156,2],[154,2],[232,23],[233,24],[234,25],[275,26],[235,27],[236,28],[237,27],[238,29],[239,30],[241,31],[242,32],[243,32],[244,32],[245,33],[246,34],[247,35],[248,36],[249,37],[250,38],[251,38],[252,39],[253,2],[254,2],[255,40],[256,41],[257,40],[258,42],[259,43],[260,44],[261,45],[262,46],[263,47],[264,48],[265,49],[266,50],[267,51],[268,52],[269,53],[270,54],[271,55],[272,56],[157,27],[158,2],[159,57],[160,58],[161,2],[162,59],[163,2],[206,60],[207,61],[208,62],[209,62],[210,63],[211,2],[212,10],[213,64],[214,61],[273,65],[274,66],[276,2],[279,67],[277,2],[278,68],[280,2],[150,2],[281,2],[282,69],[283,70],[131,71],[132,72],[133,73],[134,74],[136,75],[128,2],[147,2],[240,2],[135,2],[121,76],[119,2],[118,2],[123,77],[120,76],[122,78],[79,2],[80,2],[14,2],[13,2],[2,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[3,2],[23,2],[24,2],[4,2],[25,2],[29,2],[26,2],[27,2],[28,2],[30,2],[31,2],[32,2],[5,2],[33,2],[34,2],[35,2],[36,2],[6,2],[40,2],[37,2],[38,2],[39,2],[41,2],[7,2],[42,2],[47,2],[48,2],[43,2],[44,2],[45,2],[46,2],[8,2],[52,2],[49,2],[50,2],[51,2],[53,2],[9,2],[54,2],[55,2],[56,2],[58,2],[57,2],[59,2],[60,2],[10,2],[61,2],[62,2],[63,2],[11,2],[64,2],[65,2],[66,2],[67,2],[68,2],[1,2],[69,2],[70,2],[12,2],[74,2],[72,2],[77,2],[76,2],[71,2],[75,2],[73,2],[78,2],[182,79],[194,80],[179,81],[195,82],[204,83],[170,84],[171,85],[169,86],[203,87],[198,88],[202,89],[173,90],[191,91],[172,92],[201,93],[167,94],[168,88],[174,95],[175,2],[181,96],[178,95],[165,97],[205,98],[196,99],[185,100],[184,95],[186,101],[189,102],[183,103],[187,104],[199,87],[176,105],[177,106],[190,107],[166,82],[193,108],[192,95],[180,106],[188,109],[197,2],[164,2],[200,110],[137,111],[110,112],[85,113],[83,114],[84,115],[101,116],[94,117],[95,118],[96,118],[99,119],[100,118],[86,118],[87,118],[97,118],[98,118],[102,120],[105,121],[103,120],[88,120],[104,120],[106,118],[90,122],[107,115],[108,118],[91,118],[116,123],[81,118],[109,124],[93,118],[111,125],[89,2],[82,126],[112,118],[114,118],[92,127],[113,128],[115,118],[117,129],[126,130],[127,131],[125,132],[124,2],[139,133],[138,134],[140,135]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}
package/vite.config.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { defineConfig } from "vite";
2
+ import vue from "@vitejs/plugin-vue";
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ build: {
7
+ lib: {
8
+ entry: "src/index.ts",
9
+ formats: ["es"],
10
+ fileName: "index",
11
+ },
12
+ rollupOptions: {
13
+ // Externalize all dependencies — consumers provide them
14
+ external: ["vue", /^@xmachines\//],
15
+ output: {
16
+ preserveModules: true,
17
+ preserveModulesRoot: "src",
18
+ entryFileNames: "[name].js",
19
+ },
20
+ },
21
+ sourcemap: true,
22
+ },
23
+ });
@@ -0,0 +1,19 @@
1
+ import { defineConfig } from "vitest/config";
2
+ import vue from "@vitejs/plugin-vue";
3
+ import { xmAliases } from "../shared/config/vite-aliases.ts";
4
+
5
+ export default defineConfig({
6
+ plugins: [vue()],
7
+ resolve: { alias: xmAliases(import.meta.url) },
8
+ test: {
9
+ globals: true,
10
+ environment: "jsdom",
11
+ // Timeouts for stability (from Phase 16.13 pattern)
12
+ testTimeout: 30000,
13
+ hookTimeout: 20000,
14
+ teardownTimeout: 15000,
15
+ // Sequential execution for framework router stability
16
+ isolate: false,
17
+ fileParallelism: false,
18
+ },
19
+ });