@cadenza.io/service 2.18.3 → 2.19.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.
Files changed (50) hide show
  1. package/README.md +258 -0
  2. package/dist/Cadenza-DCMs7q97.d.mts +1666 -0
  3. package/dist/Cadenza-DCMs7q97.d.ts +1666 -0
  4. package/dist/browser/chunk-4XOTT2KM.mjs +31 -0
  5. package/dist/browser/chunk-4XOTT2KM.mjs.map +1 -0
  6. package/dist/browser/index.js +12256 -4810
  7. package/dist/browser/index.js.map +1 -1
  8. package/dist/browser/index.mjs +14687 -7257
  9. package/dist/browser/index.mjs.map +1 -1
  10. package/dist/browser/nuxt/index.js +166 -0
  11. package/dist/browser/nuxt/index.js.map +1 -0
  12. package/dist/browser/nuxt/index.mjs +121 -0
  13. package/dist/browser/nuxt/index.mjs.map +1 -0
  14. package/dist/browser/react/index.js +179 -0
  15. package/dist/browser/react/index.js.map +1 -0
  16. package/dist/browser/react/index.mjs +140 -0
  17. package/dist/browser/react/index.mjs.map +1 -0
  18. package/dist/browser/vue/index.js +178 -0
  19. package/dist/browser/vue/index.js.map +1 -0
  20. package/dist/browser/vue/index.mjs +140 -0
  21. package/dist/browser/vue/index.mjs.map +1 -0
  22. package/dist/chunk-DBCS4XXY.mjs +31 -0
  23. package/dist/chunk-DBCS4XXY.mjs.map +1 -0
  24. package/dist/index.d.mts +244 -22953
  25. package/dist/index.d.ts +244 -22953
  26. package/dist/index.js +19425 -10960
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +19308 -10894
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/nuxt/index.d.mts +42 -0
  31. package/dist/nuxt/index.d.ts +42 -0
  32. package/dist/nuxt/index.js +173 -0
  33. package/dist/nuxt/index.js.map +1 -0
  34. package/dist/nuxt/index.mjs +121 -0
  35. package/dist/nuxt/index.mjs.map +1 -0
  36. package/dist/react/index.d.mts +52 -0
  37. package/dist/react/index.d.ts +52 -0
  38. package/dist/react/index.js +188 -0
  39. package/dist/react/index.js.map +1 -0
  40. package/dist/react/index.mjs +140 -0
  41. package/dist/react/index.mjs.map +1 -0
  42. package/dist/runtimeProjectionState-CitON2P3.d.mts +6 -0
  43. package/dist/runtimeProjectionState-CitON2P3.d.ts +6 -0
  44. package/dist/vue/index.d.mts +48 -0
  45. package/dist/vue/index.d.ts +48 -0
  46. package/dist/vue/index.js +187 -0
  47. package/dist/vue/index.js.map +1 -0
  48. package/dist/vue/index.mjs +140 -0
  49. package/dist/vue/index.mjs.map +1 -0
  50. package/package.json +62 -6
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/vue/index.ts
21
+ var vue_exports = {};
22
+ __export(vue_exports, {
23
+ createCadenzaVueRuntime: () => createCadenzaVueRuntime,
24
+ useCadenzaProjectionSelector: () => useCadenzaProjectionSelector,
25
+ useCadenzaProjectionState: () => useCadenzaProjectionState,
26
+ useCadenzaRuntime: () => useCadenzaRuntime,
27
+ useCadenzaRuntimeReady: () => useCadenzaRuntimeReady,
28
+ useCadenzaRuntimeState: () => useCadenzaRuntimeState
29
+ });
30
+ module.exports = __toCommonJS(vue_exports);
31
+ var import_vue = require("vue");
32
+
33
+ // src/frontend/runtimeProjectionState.ts
34
+ function cloneProjectionState(value) {
35
+ if (Array.isArray(value)) {
36
+ return value.map((item) => cloneProjectionState(item));
37
+ }
38
+ if (value && typeof value === "object") {
39
+ return Object.fromEntries(
40
+ Object.entries(value).map(([key, nested]) => [
41
+ key,
42
+ cloneProjectionState(nested)
43
+ ])
44
+ );
45
+ }
46
+ return value;
47
+ }
48
+ function resolveInitialProjectionState(value) {
49
+ const resolved = typeof value === "function" ? value() : value;
50
+ return cloneProjectionState(resolved);
51
+ }
52
+ function createProjectionRuntimeSnapshot(runtimeState, initialProjectionState) {
53
+ return {
54
+ ready: runtimeState?.ready ?? false,
55
+ projectionState: runtimeState?.projectionState ?? resolveInitialProjectionState(initialProjectionState)
56
+ };
57
+ }
58
+
59
+ // src/vue/index.ts
60
+ var DEFAULT_SELECTOR_EQUALITY = Object.is;
61
+ var CADENZA_VUE_RUNTIME_KEY = /* @__PURE__ */ Symbol("CadenzaVueRuntime");
62
+ function resolveBootstrapUrl(bootstrapUrl) {
63
+ return typeof bootstrapUrl === "function" ? bootstrapUrl() : bootstrapUrl;
64
+ }
65
+ function resolveHydrationOptions(hydration) {
66
+ if (!hydration) {
67
+ return void 0;
68
+ }
69
+ return typeof hydration === "function" ? hydration() : hydration;
70
+ }
71
+ function getRequiredRuntime() {
72
+ const runtime = (0, import_vue.inject)(CADENZA_VUE_RUNTIME_KEY, null);
73
+ if (!runtime) {
74
+ throw new Error(
75
+ "Cadenza Vue runtime is not installed. Call app.use(runtime) before using Cadenza Vue composables."
76
+ );
77
+ }
78
+ return runtime;
79
+ }
80
+ function createCadenzaVueRuntime(options) {
81
+ const {
82
+ cadenza,
83
+ service,
84
+ bootstrapUrl,
85
+ hydration,
86
+ initialProjectionState,
87
+ commands,
88
+ ...actorOptions
89
+ } = options;
90
+ const browserRuntimeOptions = {
91
+ ...actorOptions,
92
+ initialProjectionState,
93
+ service: {
94
+ ...service,
95
+ bootstrap: {
96
+ url: resolveBootstrapUrl(bootstrapUrl)
97
+ },
98
+ hydration: resolveHydrationOptions(hydration)
99
+ }
100
+ };
101
+ const runtime = cadenza.createBrowserRuntimeActor(browserRuntimeOptions);
102
+ const snapshotRef = (0, import_vue.shallowRef)(
103
+ createProjectionRuntimeSnapshot(
104
+ runtime.getRuntimeState(),
105
+ initialProjectionState
106
+ )
107
+ );
108
+ const unsubscribe = runtime.subscribe((runtimeState) => {
109
+ snapshotRef.value = createProjectionRuntimeSnapshot(
110
+ runtimeState,
111
+ initialProjectionState
112
+ );
113
+ });
114
+ let disposed = false;
115
+ const runtimeCommands = commands ? commands({
116
+ cadenza,
117
+ runtime
118
+ }) : {};
119
+ const runtimeObject = {
120
+ actor: runtime.actor,
121
+ actorHandle: runtime,
122
+ waitUntilReady: runtime.waitUntilReady,
123
+ inquire: runtime.inquire,
124
+ getRuntimeState: runtime.getRuntimeState,
125
+ subscribe: runtime.subscribe,
126
+ snapshot: (0, import_vue.readonly)(snapshotRef),
127
+ projectionState: (0, import_vue.computed)(
128
+ () => snapshotRef.value.projectionState
129
+ ),
130
+ ready: (0, import_vue.computed)(() => snapshotRef.value.ready),
131
+ commands: runtimeCommands,
132
+ install(app) {
133
+ app.provide(CADENZA_VUE_RUNTIME_KEY, runtimeObject);
134
+ app.config.globalProperties.$cadenzaRuntime = runtimeObject;
135
+ },
136
+ dispose() {
137
+ if (disposed) {
138
+ return;
139
+ }
140
+ disposed = true;
141
+ unsubscribe();
142
+ }
143
+ };
144
+ return (0, import_vue.markRaw)(runtimeObject);
145
+ }
146
+ function useCadenzaRuntime() {
147
+ return getRequiredRuntime();
148
+ }
149
+ function useCadenzaRuntimeState() {
150
+ return getRequiredRuntime().snapshot;
151
+ }
152
+ function useCadenzaProjectionState() {
153
+ return getRequiredRuntime().projectionState;
154
+ }
155
+ function useCadenzaProjectionSelector(selector, isEqual = DEFAULT_SELECTOR_EQUALITY) {
156
+ const projectionState = useCadenzaProjectionState();
157
+ const selectedRef = (0, import_vue.shallowRef)(
158
+ selector(projectionState.value)
159
+ );
160
+ (0, import_vue.watch)(
161
+ projectionState,
162
+ (nextProjectionState) => {
163
+ const nextSelected = selector(nextProjectionState);
164
+ if (isEqual(selectedRef.value, nextSelected)) {
165
+ return;
166
+ }
167
+ selectedRef.value = nextSelected;
168
+ },
169
+ {
170
+ flush: "sync"
171
+ }
172
+ );
173
+ return (0, import_vue.readonly)(selectedRef);
174
+ }
175
+ function useCadenzaRuntimeReady() {
176
+ return getRequiredRuntime().ready;
177
+ }
178
+ // Annotate the CommonJS export names for ESM import in node:
179
+ 0 && (module.exports = {
180
+ createCadenzaVueRuntime,
181
+ useCadenzaProjectionSelector,
182
+ useCadenzaProjectionState,
183
+ useCadenzaRuntime,
184
+ useCadenzaRuntimeReady,
185
+ useCadenzaRuntimeState
186
+ });
187
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/vue/index.ts","../../src/frontend/runtimeProjectionState.ts"],"sourcesContent":["import {\n computed,\n inject,\n markRaw,\n readonly,\n shallowRef,\n watch,\n type App,\n type ComputedRef,\n type InjectionKey,\n type ShallowRef,\n} from \"vue\";\n\nimport type CadenzaService from \"../Cadenza\";\nimport type {\n BrowserRuntimeActorHandle,\n BrowserRuntimeActorOptions,\n BrowserRuntimeProjectionBinding,\n BrowserRuntimeServiceOptions,\n} from \"../frontend/createBrowserRuntimeActor\";\nimport {\n createProjectionRuntimeSnapshot,\n type ProjectionRuntimeSnapshot,\n} from \"../frontend/runtimeProjectionState\";\nimport type { HydrationOptions } from \"../utils/bootstrap\";\n\nexport interface CadenzaVueRuntimeState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> extends ProjectionRuntimeSnapshot<TProjectionState> {}\n\nexport interface CadenzaVueRuntime<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n> {\n actor: BrowserRuntimeActorHandle<TProjectionState>[\"actor\"];\n actorHandle: BrowserRuntimeActorHandle<TProjectionState>;\n waitUntilReady: BrowserRuntimeActorHandle<TProjectionState>[\"waitUntilReady\"];\n inquire: BrowserRuntimeActorHandle<TProjectionState>[\"inquire\"];\n getRuntimeState: BrowserRuntimeActorHandle<TProjectionState>[\"getRuntimeState\"];\n subscribe: BrowserRuntimeActorHandle<TProjectionState>[\"subscribe\"];\n snapshot: Readonly<ShallowRef<CadenzaVueRuntimeState<TProjectionState>>>;\n projectionState: ComputedRef<TProjectionState>;\n ready: ComputedRef<boolean>;\n commands: TCommands;\n install: (app: App) => void;\n dispose: () => void;\n}\n\nexport interface CadenzaVueRuntimeOptions<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n> extends Omit<\n BrowserRuntimeActorOptions<TProjectionState>,\n \"service\" | \"initialProjectionState\"\n > {\n cadenza: typeof CadenzaService;\n service: Omit<BrowserRuntimeServiceOptions, \"bootstrap\" | \"hydration\">;\n bootstrapUrl: string | (() => string);\n hydration?: HydrationOptions | (() => HydrationOptions);\n initialProjectionState: TProjectionState | (() => TProjectionState);\n commands?: (context: {\n cadenza: typeof CadenzaService;\n runtime: BrowserRuntimeActorHandle<TProjectionState>;\n }) => TCommands;\n}\n\ntype EqualityComparator<TSelected> = (\n previous: TSelected,\n next: TSelected,\n) => boolean;\n\nconst DEFAULT_SELECTOR_EQUALITY = Object.is;\nconst CADENZA_VUE_RUNTIME_KEY: InjectionKey<CadenzaVueRuntime<any, any>> =\n Symbol(\"CadenzaVueRuntime\");\n\nfunction resolveBootstrapUrl(bootstrapUrl: string | (() => string)): string {\n return typeof bootstrapUrl === \"function\" ? bootstrapUrl() : bootstrapUrl;\n}\n\nfunction resolveHydrationOptions(\n hydration: HydrationOptions | (() => HydrationOptions) | undefined,\n): HydrationOptions | undefined {\n if (!hydration) {\n return undefined;\n }\n\n return typeof hydration === \"function\"\n ? (hydration as () => HydrationOptions)()\n : hydration;\n}\n\nfunction getRequiredRuntime<\n TProjectionState extends Record<string, any>,\n TCommands extends Record<string, any>,\n>(): CadenzaVueRuntime<TProjectionState, TCommands> {\n const runtime = inject(CADENZA_VUE_RUNTIME_KEY, null);\n if (!runtime) {\n throw new Error(\n \"Cadenza Vue runtime is not installed. Call app.use(runtime) before using Cadenza Vue composables.\",\n );\n }\n\n return runtime as CadenzaVueRuntime<TProjectionState, TCommands>;\n}\n\nexport function createCadenzaVueRuntime<\n TProjectionState extends Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n>(options: CadenzaVueRuntimeOptions<TProjectionState, TCommands>) {\n const {\n cadenza,\n service,\n bootstrapUrl,\n hydration,\n initialProjectionState,\n commands,\n ...actorOptions\n } = options;\n const browserRuntimeOptions: BrowserRuntimeActorOptions<TProjectionState> = {\n ...actorOptions,\n initialProjectionState,\n service: {\n ...service,\n bootstrap: {\n url: resolveBootstrapUrl(bootstrapUrl),\n },\n hydration: resolveHydrationOptions(hydration),\n },\n };\n const runtime = cadenza.createBrowserRuntimeActor(browserRuntimeOptions);\n const snapshotRef = shallowRef<CadenzaVueRuntimeState<TProjectionState>>(\n createProjectionRuntimeSnapshot(\n runtime.getRuntimeState(),\n initialProjectionState,\n ),\n );\n const unsubscribe = runtime.subscribe((runtimeState) => {\n snapshotRef.value = createProjectionRuntimeSnapshot(\n runtimeState,\n initialProjectionState,\n );\n });\n let disposed = false;\n const runtimeCommands = commands\n ? commands({\n cadenza,\n runtime,\n })\n : ({} as TCommands);\n const runtimeObject: CadenzaVueRuntime<TProjectionState, TCommands> = {\n actor: runtime.actor,\n actorHandle: runtime,\n waitUntilReady: runtime.waitUntilReady,\n inquire: runtime.inquire,\n getRuntimeState: runtime.getRuntimeState,\n subscribe: runtime.subscribe,\n snapshot: readonly(snapshotRef) as Readonly<\n ShallowRef<CadenzaVueRuntimeState<TProjectionState>>\n >,\n projectionState: computed(\n () => snapshotRef.value.projectionState as TProjectionState,\n ),\n ready: computed(() => snapshotRef.value.ready),\n commands: runtimeCommands,\n install(app: App) {\n app.provide(CADENZA_VUE_RUNTIME_KEY, runtimeObject);\n app.config.globalProperties.$cadenzaRuntime = runtimeObject;\n },\n dispose() {\n if (disposed) {\n return;\n }\n\n disposed = true;\n unsubscribe();\n },\n };\n\n return markRaw(runtimeObject) as CadenzaVueRuntime<TProjectionState, TCommands>;\n}\n\nexport function useCadenzaRuntime<\n TRuntime extends CadenzaVueRuntime<any, any> = CadenzaVueRuntime<any, any>,\n>(): TRuntime {\n return getRequiredRuntime<any, any>() as TRuntime;\n}\n\nexport function useCadenzaRuntimeState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n>(): Readonly<ShallowRef<CadenzaVueRuntimeState<TProjectionState>>> {\n return getRequiredRuntime<TProjectionState, Record<string, any>>().snapshot;\n}\n\nexport function useCadenzaProjectionState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n>(): ComputedRef<TProjectionState> {\n return getRequiredRuntime<TProjectionState, Record<string, any>>()\n .projectionState as ComputedRef<TProjectionState>;\n}\n\nexport function useCadenzaProjectionSelector<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TSelected = TProjectionState,\n>(\n selector: (state: TProjectionState) => TSelected,\n isEqual: EqualityComparator<TSelected> = DEFAULT_SELECTOR_EQUALITY,\n): Readonly<ShallowRef<TSelected>> {\n const projectionState = useCadenzaProjectionState<TProjectionState>();\n const selectedRef = shallowRef<TSelected>(\n selector(projectionState.value as TProjectionState),\n );\n\n watch(\n projectionState,\n (nextProjectionState) => {\n const nextSelected = selector(nextProjectionState as TProjectionState);\n if (isEqual(selectedRef.value, nextSelected)) {\n return;\n }\n\n selectedRef.value = nextSelected;\n },\n {\n flush: \"sync\",\n },\n );\n\n return readonly(selectedRef) as Readonly<ShallowRef<TSelected>>;\n}\n\nexport function useCadenzaRuntimeReady(): ComputedRef<boolean> {\n return getRequiredRuntime<Record<string, any>, Record<string, any>>().ready;\n}\n\nexport type { BrowserRuntimeProjectionBinding };\n\ndeclare module \"vue\" {\n interface ComponentCustomProperties {\n $cadenzaRuntime: CadenzaVueRuntime<any, any>;\n }\n}\n","import type { BrowserRuntimeActorRuntimeState } from \"./createBrowserRuntimeActor\";\n\nexport interface ProjectionRuntimeSnapshot<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> {\n ready: boolean;\n projectionState: TProjectionState;\n}\n\nexport function cloneProjectionState<TProjectionState>(\n value: TProjectionState,\n): TProjectionState {\n if (Array.isArray(value)) {\n return value.map((item) => cloneProjectionState(item)) as TProjectionState;\n }\n\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).map(([key, nested]) => [\n key,\n cloneProjectionState(nested),\n ]),\n ) as TProjectionState;\n }\n\n return value;\n}\n\nexport function resolveInitialProjectionState<\n TProjectionState extends Record<string, any>,\n>(value: TProjectionState | (() => TProjectionState)): TProjectionState {\n const resolved =\n typeof value === \"function\"\n ? (value as () => TProjectionState)()\n : value;\n return cloneProjectionState(resolved);\n}\n\nexport function createProjectionRuntimeSnapshot<\n TProjectionState extends Record<string, any>,\n>(\n runtimeState: BrowserRuntimeActorRuntimeState<TProjectionState> | undefined,\n initialProjectionState: TProjectionState | (() => TProjectionState),\n): ProjectionRuntimeSnapshot<TProjectionState> {\n return {\n ready: runtimeState?.ready ?? false,\n projectionState:\n runtimeState?.projectionState ??\n resolveInitialProjectionState(initialProjectionState),\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,140 @@
1
+ import {
2
+ createProjectionRuntimeSnapshot
3
+ } from "../chunk-DBCS4XXY.mjs";
4
+
5
+ // src/vue/index.ts
6
+ import {
7
+ computed,
8
+ inject,
9
+ markRaw,
10
+ readonly,
11
+ shallowRef,
12
+ watch
13
+ } from "vue";
14
+ var DEFAULT_SELECTOR_EQUALITY = Object.is;
15
+ var CADENZA_VUE_RUNTIME_KEY = /* @__PURE__ */ Symbol("CadenzaVueRuntime");
16
+ function resolveBootstrapUrl(bootstrapUrl) {
17
+ return typeof bootstrapUrl === "function" ? bootstrapUrl() : bootstrapUrl;
18
+ }
19
+ function resolveHydrationOptions(hydration) {
20
+ if (!hydration) {
21
+ return void 0;
22
+ }
23
+ return typeof hydration === "function" ? hydration() : hydration;
24
+ }
25
+ function getRequiredRuntime() {
26
+ const runtime = inject(CADENZA_VUE_RUNTIME_KEY, null);
27
+ if (!runtime) {
28
+ throw new Error(
29
+ "Cadenza Vue runtime is not installed. Call app.use(runtime) before using Cadenza Vue composables."
30
+ );
31
+ }
32
+ return runtime;
33
+ }
34
+ function createCadenzaVueRuntime(options) {
35
+ const {
36
+ cadenza,
37
+ service,
38
+ bootstrapUrl,
39
+ hydration,
40
+ initialProjectionState,
41
+ commands,
42
+ ...actorOptions
43
+ } = options;
44
+ const browserRuntimeOptions = {
45
+ ...actorOptions,
46
+ initialProjectionState,
47
+ service: {
48
+ ...service,
49
+ bootstrap: {
50
+ url: resolveBootstrapUrl(bootstrapUrl)
51
+ },
52
+ hydration: resolveHydrationOptions(hydration)
53
+ }
54
+ };
55
+ const runtime = cadenza.createBrowserRuntimeActor(browserRuntimeOptions);
56
+ const snapshotRef = shallowRef(
57
+ createProjectionRuntimeSnapshot(
58
+ runtime.getRuntimeState(),
59
+ initialProjectionState
60
+ )
61
+ );
62
+ const unsubscribe = runtime.subscribe((runtimeState) => {
63
+ snapshotRef.value = createProjectionRuntimeSnapshot(
64
+ runtimeState,
65
+ initialProjectionState
66
+ );
67
+ });
68
+ let disposed = false;
69
+ const runtimeCommands = commands ? commands({
70
+ cadenza,
71
+ runtime
72
+ }) : {};
73
+ const runtimeObject = {
74
+ actor: runtime.actor,
75
+ actorHandle: runtime,
76
+ waitUntilReady: runtime.waitUntilReady,
77
+ inquire: runtime.inquire,
78
+ getRuntimeState: runtime.getRuntimeState,
79
+ subscribe: runtime.subscribe,
80
+ snapshot: readonly(snapshotRef),
81
+ projectionState: computed(
82
+ () => snapshotRef.value.projectionState
83
+ ),
84
+ ready: computed(() => snapshotRef.value.ready),
85
+ commands: runtimeCommands,
86
+ install(app) {
87
+ app.provide(CADENZA_VUE_RUNTIME_KEY, runtimeObject);
88
+ app.config.globalProperties.$cadenzaRuntime = runtimeObject;
89
+ },
90
+ dispose() {
91
+ if (disposed) {
92
+ return;
93
+ }
94
+ disposed = true;
95
+ unsubscribe();
96
+ }
97
+ };
98
+ return markRaw(runtimeObject);
99
+ }
100
+ function useCadenzaRuntime() {
101
+ return getRequiredRuntime();
102
+ }
103
+ function useCadenzaRuntimeState() {
104
+ return getRequiredRuntime().snapshot;
105
+ }
106
+ function useCadenzaProjectionState() {
107
+ return getRequiredRuntime().projectionState;
108
+ }
109
+ function useCadenzaProjectionSelector(selector, isEqual = DEFAULT_SELECTOR_EQUALITY) {
110
+ const projectionState = useCadenzaProjectionState();
111
+ const selectedRef = shallowRef(
112
+ selector(projectionState.value)
113
+ );
114
+ watch(
115
+ projectionState,
116
+ (nextProjectionState) => {
117
+ const nextSelected = selector(nextProjectionState);
118
+ if (isEqual(selectedRef.value, nextSelected)) {
119
+ return;
120
+ }
121
+ selectedRef.value = nextSelected;
122
+ },
123
+ {
124
+ flush: "sync"
125
+ }
126
+ );
127
+ return readonly(selectedRef);
128
+ }
129
+ function useCadenzaRuntimeReady() {
130
+ return getRequiredRuntime().ready;
131
+ }
132
+ export {
133
+ createCadenzaVueRuntime,
134
+ useCadenzaProjectionSelector,
135
+ useCadenzaProjectionState,
136
+ useCadenzaRuntime,
137
+ useCadenzaRuntimeReady,
138
+ useCadenzaRuntimeState
139
+ };
140
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/vue/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n markRaw,\n readonly,\n shallowRef,\n watch,\n type App,\n type ComputedRef,\n type InjectionKey,\n type ShallowRef,\n} from \"vue\";\n\nimport type CadenzaService from \"../Cadenza\";\nimport type {\n BrowserRuntimeActorHandle,\n BrowserRuntimeActorOptions,\n BrowserRuntimeProjectionBinding,\n BrowserRuntimeServiceOptions,\n} from \"../frontend/createBrowserRuntimeActor\";\nimport {\n createProjectionRuntimeSnapshot,\n type ProjectionRuntimeSnapshot,\n} from \"../frontend/runtimeProjectionState\";\nimport type { HydrationOptions } from \"../utils/bootstrap\";\n\nexport interface CadenzaVueRuntimeState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n> extends ProjectionRuntimeSnapshot<TProjectionState> {}\n\nexport interface CadenzaVueRuntime<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n> {\n actor: BrowserRuntimeActorHandle<TProjectionState>[\"actor\"];\n actorHandle: BrowserRuntimeActorHandle<TProjectionState>;\n waitUntilReady: BrowserRuntimeActorHandle<TProjectionState>[\"waitUntilReady\"];\n inquire: BrowserRuntimeActorHandle<TProjectionState>[\"inquire\"];\n getRuntimeState: BrowserRuntimeActorHandle<TProjectionState>[\"getRuntimeState\"];\n subscribe: BrowserRuntimeActorHandle<TProjectionState>[\"subscribe\"];\n snapshot: Readonly<ShallowRef<CadenzaVueRuntimeState<TProjectionState>>>;\n projectionState: ComputedRef<TProjectionState>;\n ready: ComputedRef<boolean>;\n commands: TCommands;\n install: (app: App) => void;\n dispose: () => void;\n}\n\nexport interface CadenzaVueRuntimeOptions<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n> extends Omit<\n BrowserRuntimeActorOptions<TProjectionState>,\n \"service\" | \"initialProjectionState\"\n > {\n cadenza: typeof CadenzaService;\n service: Omit<BrowserRuntimeServiceOptions, \"bootstrap\" | \"hydration\">;\n bootstrapUrl: string | (() => string);\n hydration?: HydrationOptions | (() => HydrationOptions);\n initialProjectionState: TProjectionState | (() => TProjectionState);\n commands?: (context: {\n cadenza: typeof CadenzaService;\n runtime: BrowserRuntimeActorHandle<TProjectionState>;\n }) => TCommands;\n}\n\ntype EqualityComparator<TSelected> = (\n previous: TSelected,\n next: TSelected,\n) => boolean;\n\nconst DEFAULT_SELECTOR_EQUALITY = Object.is;\nconst CADENZA_VUE_RUNTIME_KEY: InjectionKey<CadenzaVueRuntime<any, any>> =\n Symbol(\"CadenzaVueRuntime\");\n\nfunction resolveBootstrapUrl(bootstrapUrl: string | (() => string)): string {\n return typeof bootstrapUrl === \"function\" ? bootstrapUrl() : bootstrapUrl;\n}\n\nfunction resolveHydrationOptions(\n hydration: HydrationOptions | (() => HydrationOptions) | undefined,\n): HydrationOptions | undefined {\n if (!hydration) {\n return undefined;\n }\n\n return typeof hydration === \"function\"\n ? (hydration as () => HydrationOptions)()\n : hydration;\n}\n\nfunction getRequiredRuntime<\n TProjectionState extends Record<string, any>,\n TCommands extends Record<string, any>,\n>(): CadenzaVueRuntime<TProjectionState, TCommands> {\n const runtime = inject(CADENZA_VUE_RUNTIME_KEY, null);\n if (!runtime) {\n throw new Error(\n \"Cadenza Vue runtime is not installed. Call app.use(runtime) before using Cadenza Vue composables.\",\n );\n }\n\n return runtime as CadenzaVueRuntime<TProjectionState, TCommands>;\n}\n\nexport function createCadenzaVueRuntime<\n TProjectionState extends Record<string, any>,\n TCommands extends Record<string, any> = Record<string, never>,\n>(options: CadenzaVueRuntimeOptions<TProjectionState, TCommands>) {\n const {\n cadenza,\n service,\n bootstrapUrl,\n hydration,\n initialProjectionState,\n commands,\n ...actorOptions\n } = options;\n const browserRuntimeOptions: BrowserRuntimeActorOptions<TProjectionState> = {\n ...actorOptions,\n initialProjectionState,\n service: {\n ...service,\n bootstrap: {\n url: resolveBootstrapUrl(bootstrapUrl),\n },\n hydration: resolveHydrationOptions(hydration),\n },\n };\n const runtime = cadenza.createBrowserRuntimeActor(browserRuntimeOptions);\n const snapshotRef = shallowRef<CadenzaVueRuntimeState<TProjectionState>>(\n createProjectionRuntimeSnapshot(\n runtime.getRuntimeState(),\n initialProjectionState,\n ),\n );\n const unsubscribe = runtime.subscribe((runtimeState) => {\n snapshotRef.value = createProjectionRuntimeSnapshot(\n runtimeState,\n initialProjectionState,\n );\n });\n let disposed = false;\n const runtimeCommands = commands\n ? commands({\n cadenza,\n runtime,\n })\n : ({} as TCommands);\n const runtimeObject: CadenzaVueRuntime<TProjectionState, TCommands> = {\n actor: runtime.actor,\n actorHandle: runtime,\n waitUntilReady: runtime.waitUntilReady,\n inquire: runtime.inquire,\n getRuntimeState: runtime.getRuntimeState,\n subscribe: runtime.subscribe,\n snapshot: readonly(snapshotRef) as Readonly<\n ShallowRef<CadenzaVueRuntimeState<TProjectionState>>\n >,\n projectionState: computed(\n () => snapshotRef.value.projectionState as TProjectionState,\n ),\n ready: computed(() => snapshotRef.value.ready),\n commands: runtimeCommands,\n install(app: App) {\n app.provide(CADENZA_VUE_RUNTIME_KEY, runtimeObject);\n app.config.globalProperties.$cadenzaRuntime = runtimeObject;\n },\n dispose() {\n if (disposed) {\n return;\n }\n\n disposed = true;\n unsubscribe();\n },\n };\n\n return markRaw(runtimeObject) as CadenzaVueRuntime<TProjectionState, TCommands>;\n}\n\nexport function useCadenzaRuntime<\n TRuntime extends CadenzaVueRuntime<any, any> = CadenzaVueRuntime<any, any>,\n>(): TRuntime {\n return getRequiredRuntime<any, any>() as TRuntime;\n}\n\nexport function useCadenzaRuntimeState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n>(): Readonly<ShallowRef<CadenzaVueRuntimeState<TProjectionState>>> {\n return getRequiredRuntime<TProjectionState, Record<string, any>>().snapshot;\n}\n\nexport function useCadenzaProjectionState<\n TProjectionState extends Record<string, any> = Record<string, any>,\n>(): ComputedRef<TProjectionState> {\n return getRequiredRuntime<TProjectionState, Record<string, any>>()\n .projectionState as ComputedRef<TProjectionState>;\n}\n\nexport function useCadenzaProjectionSelector<\n TProjectionState extends Record<string, any> = Record<string, any>,\n TSelected = TProjectionState,\n>(\n selector: (state: TProjectionState) => TSelected,\n isEqual: EqualityComparator<TSelected> = DEFAULT_SELECTOR_EQUALITY,\n): Readonly<ShallowRef<TSelected>> {\n const projectionState = useCadenzaProjectionState<TProjectionState>();\n const selectedRef = shallowRef<TSelected>(\n selector(projectionState.value as TProjectionState),\n );\n\n watch(\n projectionState,\n (nextProjectionState) => {\n const nextSelected = selector(nextProjectionState as TProjectionState);\n if (isEqual(selectedRef.value, nextSelected)) {\n return;\n }\n\n selectedRef.value = nextSelected;\n },\n {\n flush: \"sync\",\n },\n );\n\n return readonly(selectedRef) as Readonly<ShallowRef<TSelected>>;\n}\n\nexport function useCadenzaRuntimeReady(): ComputedRef<boolean> {\n return getRequiredRuntime<Record<string, any>, Record<string, any>>().ready;\n}\n\nexport type { BrowserRuntimeProjectionBinding };\n\ndeclare module \"vue\" {\n interface ComponentCustomProperties {\n $cadenzaRuntime: CadenzaVueRuntime<any, any>;\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cadenza.io/service",
3
- "version": "2.18.3",
3
+ "version": "2.19.1",
4
4
  "description": "This is a lightweight framework for building seamless distributed asynchronous graphs and flows of tasks and signals.",
5
5
  "scripts": {
6
6
  "start": "node --loader ts-node/esm src/index.ts",
@@ -13,16 +13,63 @@
13
13
  "main": "dist/index.js",
14
14
  "module": "dist/index.mjs",
15
15
  "browser": "dist/browser/index.mjs",
16
- "types": "dist/types/index.d.ts",
16
+ "types": "dist/index.d.ts",
17
17
  "exports": {
18
18
  ".": {
19
- "types": "./dist/types/index.d.ts",
19
+ "types": "./dist/index.d.ts",
20
20
  "browser": {
21
21
  "import": "./dist/browser/index.mjs",
22
22
  "require": "./dist/browser/index.js"
23
23
  },
24
- "require": "./dist/index.js",
25
- "import": "./dist/index.mjs"
24
+ "require": {
25
+ "types": "./dist/index.d.ts",
26
+ "default": "./dist/index.js"
27
+ },
28
+ "import": {
29
+ "types": "./dist/index.d.mts",
30
+ "default": "./dist/index.mjs"
31
+ }
32
+ },
33
+ "./nuxt": {
34
+ "types": "./dist/nuxt/index.d.ts",
35
+ "require": {
36
+ "types": "./dist/nuxt/index.d.ts",
37
+ "default": "./dist/nuxt/index.js"
38
+ },
39
+ "import": {
40
+ "types": "./dist/nuxt/index.d.mts",
41
+ "default": "./dist/nuxt/index.mjs"
42
+ }
43
+ },
44
+ "./react": {
45
+ "types": "./dist/react/index.d.ts",
46
+ "browser": {
47
+ "import": "./dist/browser/react/index.mjs",
48
+ "require": "./dist/browser/react/index.js"
49
+ },
50
+ "require": {
51
+ "types": "./dist/react/index.d.ts",
52
+ "default": "./dist/react/index.js"
53
+ },
54
+ "import": {
55
+ "types": "./dist/react/index.d.mts",
56
+ "default": "./dist/react/index.mjs"
57
+ }
58
+ },
59
+ "./vue": {
60
+ "types": "./dist/vue/index.d.ts",
61
+ "browser": {
62
+ "import": "./dist/browser/vue/index.mjs",
63
+ "require": "./dist/browser/vue/index.js"
64
+ },
65
+ "require": {
66
+ "types": "./dist/vue/index.d.ts",
67
+ "default": "./dist/vue/index.js"
68
+ },
69
+ "import": {
70
+ "types": "./dist/vue/index.d.mts",
71
+ "default": "./dist/vue/index.mjs"
72
+ }
26
73
  }
27
74
  },
28
75
  "release": {
@@ -78,7 +125,12 @@
78
125
  "@types/express": "^5.0.3",
79
126
  "@types/lodash-es": "^4.17.12",
80
127
  "@types/node": "^24.0.1",
128
+ "@types/react": "^19.0.0",
129
+ "@types/react-test-renderer": "^19.0.0",
81
130
  "prettier": "3.6.2",
131
+ "react": "^19.0.0",
132
+ "react-test-renderer": "^19.0.0",
133
+ "vue": "^3.5.13",
82
134
  "semantic-release": "^24.2.3",
83
135
  "tsup": "^8.4.0",
84
136
  "tsx": "^4.20.2",
@@ -87,7 +139,7 @@
87
139
  "vitest": "^3.2.3"
88
140
  },
89
141
  "dependencies": {
90
- "@cadenza.io/core": "^3.25.1",
142
+ "@cadenza.io/core": "^3.26.1",
91
143
  "@types/pg": "^8.15.4",
92
144
  "@types/uuid": "^10.0.0",
93
145
  "body-parser": "^2.2.0",
@@ -102,5 +154,9 @@
102
154
  "socket.io-client": "^4.8.1",
103
155
  "uuid": "^10.0.0",
104
156
  "xss": "^1.0.15"
157
+ },
158
+ "peerDependencies": {
159
+ "react": ">=18 <20",
160
+ "vue": ">=3 <4"
105
161
  }
106
162
  }