@bian-womp/spark-graph 0.3.45 → 0.3.47

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 (163) hide show
  1. package/lib/cjs/index.cjs +14 -15
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/cjs/src/core/types.d.ts +2 -1
  4. package/lib/cjs/src/core/types.d.ts.map +1 -1
  5. package/lib/cjs/src/runtime/GraphRuntime.d.ts +1 -1
  6. package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
  7. package/lib/cjs/src/runtime/components/NodeExecutor.d.ts.map +1 -1
  8. package/lib/cjs/src/runtime/components/RunContextManager.d.ts +2 -1
  9. package/lib/cjs/src/runtime/components/RunContextManager.d.ts.map +1 -1
  10. package/lib/esm/index.js +14 -15
  11. package/lib/esm/index.js.map +1 -1
  12. package/lib/esm/src/core/types.d.ts +2 -1
  13. package/lib/esm/src/core/types.d.ts.map +1 -1
  14. package/lib/esm/src/runtime/GraphRuntime.d.ts +1 -1
  15. package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
  16. package/lib/esm/src/runtime/components/NodeExecutor.d.ts.map +1 -1
  17. package/lib/esm/src/runtime/components/RunContextManager.d.ts +2 -1
  18. package/lib/esm/src/runtime/components/RunContextManager.d.ts.map +1 -1
  19. package/lib/src/builder/GraphBuilder.d.ts +43 -0
  20. package/lib/src/builder/GraphBuilder.d.ts.map +1 -0
  21. package/lib/src/builder/GraphBuilder.js +284 -0
  22. package/lib/src/builder/GraphBuilder.js.map +1 -0
  23. package/lib/src/builder/Registry.d.ts +93 -0
  24. package/lib/src/builder/Registry.d.ts.map +1 -0
  25. package/lib/src/builder/Registry.js +393 -0
  26. package/lib/src/builder/Registry.js.map +1 -0
  27. package/lib/src/core/categories.d.ts +22 -0
  28. package/lib/src/core/categories.d.ts.map +1 -0
  29. package/lib/src/core/categories.js +2 -0
  30. package/lib/src/core/categories.js.map +1 -0
  31. package/lib/src/core/order.d.ts +7 -0
  32. package/lib/src/core/order.d.ts.map +1 -0
  33. package/lib/src/core/order.js +66 -0
  34. package/lib/src/core/order.js.map +1 -0
  35. package/lib/src/core/type-utils.d.ts +29 -0
  36. package/lib/src/core/type-utils.d.ts.map +1 -0
  37. package/lib/src/core/type-utils.js +97 -0
  38. package/lib/src/core/type-utils.js.map +1 -0
  39. package/lib/src/core/types.d.ts +92 -0
  40. package/lib/src/core/types.d.ts.map +1 -0
  41. package/lib/src/core/types.js +2 -0
  42. package/lib/src/core/types.js.map +1 -0
  43. package/lib/src/examples/arrays.d.ts +5 -0
  44. package/lib/src/examples/arrays.d.ts.map +1 -0
  45. package/lib/src/examples/arrays.js +49 -0
  46. package/lib/src/examples/arrays.js.map +1 -0
  47. package/lib/src/examples/async.d.ts +5 -0
  48. package/lib/src/examples/async.d.ts.map +1 -0
  49. package/lib/src/examples/async.js +91 -0
  50. package/lib/src/examples/async.js.map +1 -0
  51. package/lib/src/examples/progress.d.ts +5 -0
  52. package/lib/src/examples/progress.d.ts.map +1 -0
  53. package/lib/src/examples/progress.js +51 -0
  54. package/lib/src/examples/progress.js.map +1 -0
  55. package/lib/src/examples/run.d.ts +2 -0
  56. package/lib/src/examples/run.d.ts.map +1 -0
  57. package/lib/src/examples/run.js +32 -0
  58. package/lib/src/examples/run.js.map +1 -0
  59. package/lib/src/examples/runMode.d.ts +2 -0
  60. package/lib/src/examples/runMode.d.ts.map +1 -0
  61. package/lib/src/examples/runMode.js +223 -0
  62. package/lib/src/examples/runMode.js.map +1 -0
  63. package/lib/src/examples/shared.d.ts +5 -0
  64. package/lib/src/examples/shared.d.ts.map +1 -0
  65. package/lib/src/examples/shared.js +49 -0
  66. package/lib/src/examples/shared.js.map +1 -0
  67. package/lib/src/examples/simple.d.ts +5 -0
  68. package/lib/src/examples/simple.d.ts.map +1 -0
  69. package/lib/src/examples/simple.js +79 -0
  70. package/lib/src/examples/simple.js.map +1 -0
  71. package/lib/src/examples/snapshot.d.ts +4 -0
  72. package/lib/src/examples/snapshot.d.ts.map +1 -0
  73. package/lib/src/examples/snapshot.js +58 -0
  74. package/lib/src/examples/snapshot.js.map +1 -0
  75. package/lib/src/examples/validation.d.ts +5 -0
  76. package/lib/src/examples/validation.d.ts.map +1 -0
  77. package/lib/src/examples/validation.js +105 -0
  78. package/lib/src/examples/validation.js.map +1 -0
  79. package/lib/src/index.d.ts +27 -0
  80. package/lib/src/index.d.ts.map +1 -0
  81. package/lib/src/index.js +19 -0
  82. package/lib/src/index.js.map +1 -0
  83. package/lib/src/misc/base.d.ts +51 -0
  84. package/lib/src/misc/base.d.ts.map +1 -0
  85. package/lib/src/misc/base.js +1122 -0
  86. package/lib/src/misc/base.js.map +1 -0
  87. package/lib/src/misc/utils/json.d.ts +22 -0
  88. package/lib/src/misc/utils/json.d.ts.map +1 -0
  89. package/lib/src/misc/utils/json.js +239 -0
  90. package/lib/src/misc/utils/json.js.map +1 -0
  91. package/lib/src/misc/utils/merge.d.ts +51 -0
  92. package/lib/src/misc/utils/merge.d.ts.map +1 -0
  93. package/lib/src/misc/utils/merge.js +600 -0
  94. package/lib/src/misc/utils/merge.js.map +1 -0
  95. package/lib/src/plugins/composite.d.ts +22 -0
  96. package/lib/src/plugins/composite.d.ts.map +1 -0
  97. package/lib/src/plugins/composite.js +59 -0
  98. package/lib/src/plugins/composite.js.map +1 -0
  99. package/lib/src/plugins/compute.d.ts +5 -0
  100. package/lib/src/plugins/compute.d.ts.map +1 -0
  101. package/lib/src/plugins/compute.js +39 -0
  102. package/lib/src/plugins/compute.js.map +1 -0
  103. package/lib/src/runtime/Engine.d.ts +28 -0
  104. package/lib/src/runtime/Engine.d.ts.map +1 -0
  105. package/lib/src/runtime/Engine.js +2 -0
  106. package/lib/src/runtime/Engine.js.map +1 -0
  107. package/lib/src/runtime/GraphLifecycleApi.d.ts +46 -0
  108. package/lib/src/runtime/GraphLifecycleApi.d.ts.map +1 -0
  109. package/lib/src/runtime/GraphLifecycleApi.js +2 -0
  110. package/lib/src/runtime/GraphLifecycleApi.js.map +1 -0
  111. package/lib/src/runtime/GraphRuntime.d.ts +94 -0
  112. package/lib/src/runtime/GraphRuntime.d.ts.map +1 -0
  113. package/lib/src/runtime/GraphRuntime.js +729 -0
  114. package/lib/src/runtime/GraphRuntime.js.map +1 -0
  115. package/lib/src/runtime/LocalEngine.d.ts +45 -0
  116. package/lib/src/runtime/LocalEngine.d.ts.map +1 -0
  117. package/lib/src/runtime/LocalEngine.js +89 -0
  118. package/lib/src/runtime/LocalEngine.js.map +1 -0
  119. package/lib/src/runtime/components/EdgePropagator.d.ts +101 -0
  120. package/lib/src/runtime/components/EdgePropagator.d.ts.map +1 -0
  121. package/lib/src/runtime/components/EdgePropagator.js +372 -0
  122. package/lib/src/runtime/components/EdgePropagator.js.map +1 -0
  123. package/lib/src/runtime/components/EventEmitter.d.ts +12 -0
  124. package/lib/src/runtime/components/EventEmitter.d.ts.map +1 -0
  125. package/lib/src/runtime/components/EventEmitter.js +33 -0
  126. package/lib/src/runtime/components/EventEmitter.js.map +1 -0
  127. package/lib/src/runtime/components/Graph.d.ts +211 -0
  128. package/lib/src/runtime/components/Graph.d.ts.map +1 -0
  129. package/lib/src/runtime/components/Graph.js +468 -0
  130. package/lib/src/runtime/components/Graph.js.map +1 -0
  131. package/lib/src/runtime/components/HandleResolver.d.ts +36 -0
  132. package/lib/src/runtime/components/HandleResolver.d.ts.map +1 -0
  133. package/lib/src/runtime/components/HandleResolver.js +231 -0
  134. package/lib/src/runtime/components/HandleResolver.js.map +1 -0
  135. package/lib/src/runtime/components/NodeExecutor.d.ts +110 -0
  136. package/lib/src/runtime/components/NodeExecutor.d.ts.map +1 -0
  137. package/lib/src/runtime/components/NodeExecutor.js +659 -0
  138. package/lib/src/runtime/components/NodeExecutor.js.map +1 -0
  139. package/lib/src/runtime/components/RunContextManager.d.ts +86 -0
  140. package/lib/src/runtime/components/RunContextManager.d.ts.map +1 -0
  141. package/lib/src/runtime/components/RunContextManager.js +302 -0
  142. package/lib/src/runtime/components/RunContextManager.js.map +1 -0
  143. package/lib/src/runtime/components/RuntimeValidatorManager.d.ts +31 -0
  144. package/lib/src/runtime/components/RuntimeValidatorManager.d.ts.map +1 -0
  145. package/lib/src/runtime/components/RuntimeValidatorManager.js +55 -0
  146. package/lib/src/runtime/components/RuntimeValidatorManager.js.map +1 -0
  147. package/lib/src/runtime/components/graph-utils.d.ts +33 -0
  148. package/lib/src/runtime/components/graph-utils.d.ts.map +1 -0
  149. package/lib/src/runtime/components/graph-utils.js +292 -0
  150. package/lib/src/runtime/components/graph-utils.js.map +1 -0
  151. package/lib/src/runtime/components/interfaces.d.ts +54 -0
  152. package/lib/src/runtime/components/interfaces.d.ts.map +1 -0
  153. package/lib/src/runtime/components/interfaces.js +2 -0
  154. package/lib/src/runtime/components/interfaces.js.map +1 -0
  155. package/lib/src/runtime/components/types.d.ts +55 -0
  156. package/lib/src/runtime/components/types.d.ts.map +1 -0
  157. package/lib/src/runtime/components/types.js +2 -0
  158. package/lib/src/runtime/components/types.js.map +1 -0
  159. package/lib/src/runtime/utils.d.ts +67 -0
  160. package/lib/src/runtime/utils.d.ts.map +1 -0
  161. package/lib/src/runtime/utils.js +137 -0
  162. package/lib/src/runtime/utils.js.map +1 -0
  163. package/package.json +2 -2
@@ -0,0 +1,97 @@
1
+ export function typed(typeId, value) {
2
+ return { __spark_type: typeId, __spark_value: value };
3
+ }
4
+ export function isTyped(v) {
5
+ return (!!v &&
6
+ typeof v === "object" &&
7
+ Object.prototype.hasOwnProperty.call(v, "__spark_type"));
8
+ }
9
+ export function unwrapTypeId(v) {
10
+ if (isTyped(v))
11
+ return String(v.__spark_type);
12
+ return undefined;
13
+ }
14
+ export function unwrapValue(v) {
15
+ if (isTyped(v))
16
+ return v.__spark_value;
17
+ return v;
18
+ }
19
+ /**
20
+ * Get the full declared type(s) for an input handle (supports union types)
21
+ * Returns the typeId as-is: string for single type, string[] for union types
22
+ */
23
+ export function getInputDeclaredTypes(inputs, handle) {
24
+ const v = inputs ? inputs[handle] : undefined;
25
+ if (!v)
26
+ return undefined;
27
+ if (typeof v === "string")
28
+ return v;
29
+ if (Array.isArray(v))
30
+ return v;
31
+ return v.typeId;
32
+ }
33
+ /**
34
+ * Get the primary (first) type ID for an input handle.
35
+ * For union types, returns the first type in the array.
36
+ * This maintains backward compatibility for code that expects a single type.
37
+ */
38
+ export function getInputTypeId(inputs, handle) {
39
+ const decl = getInputDeclaredTypes(inputs, handle);
40
+ if (!decl)
41
+ return undefined;
42
+ return Array.isArray(decl) ? decl[0] : decl;
43
+ }
44
+ export function isInputPrivate(inputs, handle) {
45
+ const v = inputs ? inputs[handle] : undefined;
46
+ if (!v || typeof v === "string" || Array.isArray(v))
47
+ return false;
48
+ // At this point, v must be an object with optional private/metadata fields
49
+ return !!(typeof v === "object" && v !== null && "private" in v && v.private);
50
+ }
51
+ /**
52
+ * Merge two InputHandleDescriptor values, with dynamic taking precedence.
53
+ * If both have metadata, merge the metadata objects (dynamic overrides static).
54
+ * Supports union types (arrays) in both static and dynamic descriptors.
55
+ */
56
+ export function mergeInputHandleDescriptors(staticDesc, dynamicDesc) {
57
+ // If only one exists, return it
58
+ if (!staticDesc)
59
+ return dynamicDesc;
60
+ if (!dynamicDesc)
61
+ return staticDesc;
62
+ // If both are primitive (string or array), dynamic wins
63
+ if ((typeof staticDesc === "string" || Array.isArray(staticDesc)) &&
64
+ (typeof dynamicDesc === "string" || Array.isArray(dynamicDesc))) {
65
+ return dynamicDesc;
66
+ }
67
+ const staticObj = typeof staticDesc === "string" || Array.isArray(staticDesc)
68
+ ? { typeId: staticDesc }
69
+ : staticDesc;
70
+ const dynamicObj = typeof dynamicDesc === "string" || Array.isArray(dynamicDesc)
71
+ ? { typeId: dynamicDesc }
72
+ : dynamicDesc;
73
+ // Merge: dynamic takes precedence, but merge metadata objects
74
+ const merged = {
75
+ typeId: dynamicObj.typeId ?? staticObj.typeId,
76
+ private: dynamicObj.private ?? staticObj.private,
77
+ };
78
+ // Merge metadata if either has it
79
+ if (staticObj.metadata || dynamicObj.metadata) {
80
+ merged.metadata = {
81
+ ...staticObj.metadata,
82
+ ...dynamicObj.metadata, // Dynamic metadata overrides static
83
+ };
84
+ }
85
+ // Return as InputHandleDescriptor (which accepts object form)
86
+ return merged;
87
+ }
88
+ /**
89
+ * Extract metadata from an InputHandleDescriptor
90
+ */
91
+ export function getInputHandleMetadata(inputs, handle) {
92
+ const v = inputs ? inputs[handle] : undefined;
93
+ if (!v || typeof v === "string" || Array.isArray(v))
94
+ return undefined;
95
+ return v.metadata;
96
+ }
97
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/core/type-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { DataTypeId, NodeTypeId, HandleId, InputHandleDescriptor, NodeCategoryId, ResolvedHandles, ExecutionPolicy, LogLevel } from "@bian-womp/spark-protocol";
2
+ export interface DataTypeDescriptor<T = unknown> {
3
+ id: DataTypeId;
4
+ displayName?: string;
5
+ validate(value: T): boolean;
6
+ helpers?: Record<string, unknown>;
7
+ bakeTarget?: {
8
+ nodeTypeId: NodeTypeId;
9
+ inputHandle: HandleId;
10
+ };
11
+ }
12
+ export type InvalidateReason = "input-changed" | "dependency-changed" | "manual" | "disposed";
13
+ export interface NodeContext<State> {
14
+ state: State;
15
+ setState(next: Partial<State>): void;
16
+ }
17
+ export interface ExecutionContext<State> extends NodeContext<State> {
18
+ nodeId: string;
19
+ environment: Record<string, unknown>;
20
+ runId: string;
21
+ abortSignal: AbortSignal;
22
+ emit: (handle: HandleId, value: unknown) => void;
23
+ invalidateDownstream: () => void;
24
+ execute: (opts?: {
25
+ skipPropagateValues?: boolean;
26
+ propagate?: boolean;
27
+ resolve?: () => void;
28
+ }) => void;
29
+ getInput: (handle: HandleId) => unknown;
30
+ reportProgress?: (value: number) => void;
31
+ setCustomData?: (data: Record<string, unknown>) => void;
32
+ log: (level: LogLevel, message: string, context?: Record<string, unknown>) => void;
33
+ }
34
+ /**
35
+ * Extract State type from ExecutionContext<State>
36
+ */
37
+ export type ExtractStateFromContext<T> = T extends ExecutionContext<infer S> ? S : never;
38
+ /**
39
+ * Extract State type from impl function signature
40
+ */
41
+ export type ExtractStateFromImpl<Impl> = Impl extends (inputs: any, ctx: ExecutionContext<infer State>) => any ? State : never;
42
+ /**
43
+ * Extract Inputs type from impl function signature
44
+ */
45
+ export type ExtractInputsFromImpl<Impl> = Impl extends (inputs: infer I, ctx: any) => any ? I : never;
46
+ export interface RuntimeNodeStats {
47
+ runs: number;
48
+ active: number;
49
+ queued: number;
50
+ lastStartAt?: number;
51
+ lastEndAt?: number;
52
+ lastDurationMs?: number;
53
+ progress: number;
54
+ lastError?: unknown;
55
+ }
56
+ export interface RuntimeEdgeStats {
57
+ runs: number;
58
+ inFlight: boolean;
59
+ lastStartAt?: number;
60
+ lastEndAt?: number;
61
+ lastDurationMs?: number;
62
+ progress: number;
63
+ lastError?: unknown;
64
+ }
65
+ export type TypedValue<T = unknown> = {
66
+ __spark_type: DataTypeId;
67
+ __spark_value: T;
68
+ };
69
+ type InferState<Impl, State> = ExtractStateFromImpl<Impl> extends never ? State : ExtractStateFromImpl<Impl>;
70
+ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescriptor> = Record<string, InputHandleDescriptor>, O extends Record<string, DataTypeId | DataTypeId[]> = Record<string, DataTypeId | DataTypeId[]>, State = unknown, Impl extends (inputs: any, ctx: ExecutionContext<any>) => any = (inputs: Record<string, unknown>, ctx: ExecutionContext<State>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>> {
71
+ id: NodeTypeId;
72
+ categoryId: NodeCategoryId;
73
+ displayName?: string;
74
+ inputs: I;
75
+ outputs: O;
76
+ impl: Impl;
77
+ policy?: Partial<ExecutionPolicy>;
78
+ logLevel?: LogLevel;
79
+ resolveHandles?: (ctx: {
80
+ nodeId: string;
81
+ environment: Record<string, unknown>;
82
+ params?: Record<string, unknown>;
83
+ inputs?: Record<string, unknown>;
84
+ }) => Partial<ResolvedHandles> | Promise<Partial<ResolvedHandles>>;
85
+ inputDefaults?: Record<string, unknown>;
86
+ lifecycle?: {
87
+ prepare?: (params: Record<string, unknown>, ctx: ExecutionContext<InferState<Impl, State>>) => void | Promise<void>;
88
+ dispose?: (ctx: NodeContext<InferState<Impl, State>>) => void;
89
+ };
90
+ }
91
+ export {};
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,eAAe,EACf,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,EAAE,EAAE,UAAU,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,UAAU,CAAC,EAAE;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,QAAQ,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,oBAAoB,GACpB,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,WAAW,CAAC,KAAK;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB,CAAC,KAAK,CAAE,SAAQ,WAAW,CAAC,KAAK,CAAC;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IAEzB,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;QACf,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB,KAAK,IAAI,CAAC;IACX,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD,GAAG,EAAE,CACH,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,IAAI,CAAC;CACX;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,MAAM,CAAC,CAAC,GACxE,CAAC,GACD,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,IAAI,IAAI,IAAI,SAAS,CACpD,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC,KAC/B,GAAG,GACJ,KAAK,GACL,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI,IAAI,SAAS,CACrD,MAAM,EAAE,MAAM,CAAC,EACf,GAAG,EAAE,GAAG,KACL,GAAG,GACJ,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAGD,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI;IACpC,YAAY,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC;CAClB,CAAC;AAGF,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,KAAK,GACnE,KAAK,GACL,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAE/B,MAAM,WAAW,kBAAkB,CACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,MAAM,CACtD,MAAM,EACN,qBAAqB,CACtB,EACD,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAC1D,MAAM,EACN,UAAU,GAAG,UAAU,EAAE,CAC1B,EACD,KAAK,GAAG,OAAO,EACf,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,KACzB,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7E,EAAE,EAAE,UAAU,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAElC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAGpB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,CACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAC3C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;KAC/D,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { GraphDefinition } from "@bian-womp/spark-protocol";
2
+ export declare function createArrayComposeDecomposeDef(): GraphDefinition;
3
+ export declare function createArrayComposeDecomposeRegistry(): import("..").Registry;
4
+ export declare function main(): Promise<void>;
5
+ //# sourceMappingURL=arrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../src/examples/arrays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,wBAAgB,8BAA8B,IAAI,eAAe,CAchE;AAED,wBAAgB,mCAAmC,0BAElD;AAED,wBAAsB,IAAI,kBAsDzB"}
@@ -0,0 +1,49 @@
1
+ import { setupBasicGraphRegistry, createRuntime } from "../misc/base";
2
+ import { LocalEngine } from "../runtime/LocalEngine";
3
+ import { installLogging } from "./shared";
4
+ export function createArrayComposeDecomposeDef() {
5
+ return {
6
+ nodes: [
7
+ { nodeId: "compose", typeId: "base.array.compose" },
8
+ { nodeId: "decompose", typeId: "base.array.decompose" },
9
+ ],
10
+ edges: [
11
+ {
12
+ id: "e_compose_items_to_decompose_items",
13
+ source: { nodeId: "compose", handle: "Items" },
14
+ target: { nodeId: "decompose", handle: "Items" },
15
+ },
16
+ ],
17
+ };
18
+ }
19
+ export function createArrayComposeDecomposeRegistry() {
20
+ return setupBasicGraphRegistry();
21
+ }
22
+ export async function main() {
23
+ console.log("Array compose/decompose example: dynamic handle resolution");
24
+ console.log("- compose(base.array.compose) -> decompose(base.array.decompose)");
25
+ console.log("- Setting compose.Length will dynamically add inputs compose.Item0..ItemN and drive decompose.Item0..ItemN outputs via Items array");
26
+ const runtime = createRuntime(createArrayComposeDecomposeRegistry(), createArrayComposeDecomposeDef());
27
+ const engine = new LocalEngine(runtime, "auto");
28
+ installLogging(engine);
29
+ engine.launch();
30
+ // Compose 3 items and observe decompose dynamic outputs
31
+ engine.setInputs("compose", {
32
+ Length: 3,
33
+ Item0: "alpha",
34
+ Item1: "beta",
35
+ Item2: "gamma",
36
+ });
37
+ await engine.whenIdle();
38
+ console.log("d.Item0..2 =>", engine.getOutput("decompose", "Item0"), engine.getOutput("decompose", "Item1"), engine.getOutput("decompose", "Item2"));
39
+ // Grow to 5 items; dynamic inputs/outputs should expand automatically
40
+ engine.setInputs("compose", { Length: 5, Item3: "delta", Item4: "epsilon" });
41
+ await engine.whenIdle();
42
+ console.log("d.Item0..4 =>", engine.getOutput("decompose", "Item0"), engine.getOutput("decompose", "Item1"), engine.getOutput("decompose", "Item2"), engine.getOutput("decompose", "Item3"), engine.getOutput("decompose", "Item4"));
43
+ // Shrink to 2 items; dynamic outputs should shrink
44
+ engine.setInputs("compose", { Length: 2 });
45
+ await engine.whenIdle();
46
+ console.log("d.Item0..1 =>", engine.getOutput("decompose", "Item0"), engine.getOutput("decompose", "Item1"));
47
+ engine.dispose();
48
+ }
49
+ //# sourceMappingURL=arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../src/examples/arrays.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,KAAK,EAAE;YACL,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE;YACnD,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,EAAE;SACxD;QACD,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,oCAAoC;gBACxC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;gBAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;aACjD;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO,uBAAuB,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CACT,kEAAkE,CACnE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,oIAAoI,CACrI,CAAC;IAEF,MAAM,OAAO,GAAG,aAAa,CAC3B,mCAAmC,EAAE,EACrC,8BAA8B,EAAE,CACjC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,wDAAwD;IACxD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;QAC1B,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CACvC,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CACvC,CAAC;IAEF,mDAAmD;IACnD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CACvC,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GraphDefinition } from "@bian-womp/spark-protocol";
2
+ export declare function createAsyncGraphDef(): GraphDefinition;
3
+ export declare function createAsyncGraphRegistry(id?: string): import("..").Registry;
4
+ export declare function main(): Promise<void>;
5
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/examples/async.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAUjE,wBAAgB,mBAAmB,oBAoDlC;AAED,wBAAgB,wBAAwB,CAAC,EAAE,CAAC,EAAE,MAAM,yBAInD;AAED,wBAAsB,IAAI,kBAmCzB"}
@@ -0,0 +1,91 @@
1
+ import { setupBasicGraphRegistry, registerDelayNode, createRuntime, BaseMathOperation, } from "../misc/base";
2
+ import { LocalEngine } from "../runtime/LocalEngine";
3
+ import { installLogging } from "./shared";
4
+ export function createAsyncGraphDef() {
5
+ const def = {
6
+ nodes: [
7
+ {
8
+ nodeId: "n1",
9
+ typeId: "base.math",
10
+ },
11
+ {
12
+ nodeId: "n2",
13
+ typeId: "async.delay",
14
+ params: { policy: { asyncConcurrency: "queue", maxQueue: 4 } },
15
+ },
16
+ {
17
+ nodeId: "n3",
18
+ typeId: "base.separateXYZ",
19
+ },
20
+ {
21
+ nodeId: "n4",
22
+ typeId: "base.compareXYZ",
23
+ },
24
+ ],
25
+ edges: [
26
+ {
27
+ id: "e1",
28
+ source: { nodeId: "n1", handle: "Result" },
29
+ target: { nodeId: "n2", handle: "Value" },
30
+ },
31
+ // Demonstrate async edge conversion: vec3[] -> float[] using coercion
32
+ {
33
+ id: "e2",
34
+ source: { nodeId: "n4", handle: "XYZ" },
35
+ target: { nodeId: "n1", handle: "A" },
36
+ typeId: "base.vec3[]",
37
+ },
38
+ {
39
+ id: "e3",
40
+ source: { nodeId: "n3", handle: "X" },
41
+ target: { nodeId: "n4", handle: "X" },
42
+ },
43
+ {
44
+ id: "e4",
45
+ source: { nodeId: "n3", handle: "Y" },
46
+ target: { nodeId: "n4", handle: "Y" },
47
+ },
48
+ {
49
+ id: "e5",
50
+ source: { nodeId: "n3", handle: "Z" },
51
+ target: { nodeId: "n4", handle: "Z" },
52
+ },
53
+ ],
54
+ };
55
+ return def;
56
+ }
57
+ export function createAsyncGraphRegistry(id) {
58
+ const registry = setupBasicGraphRegistry(id);
59
+ registerDelayNode(registry);
60
+ return registry;
61
+ }
62
+ export async function main() {
63
+ const runtime = createRuntime(createAsyncGraphRegistry(), createAsyncGraphDef());
64
+ const engine = new LocalEngine(runtime, "auto");
65
+ installLogging(engine);
66
+ engine.launch();
67
+ // Set base ms
68
+ engine.setInputs("n1", { Operation: BaseMathOperation.Add, A: [1], B: [2] });
69
+ engine.setInputs("n2", { DelayMs: 250 });
70
+ // Provide XYZ and route through async conversion edge
71
+ engine.setInputs("n3", {
72
+ XYZ: [
73
+ [1, 2, 3],
74
+ [4, 5, 6],
75
+ [7, 8, 9],
76
+ ],
77
+ });
78
+ // Rapid inputs to n1.B should cancel prior runs (switch)
79
+ // Note: n1.A is edge-driven from n4.XYZ, so we change n1.B instead
80
+ engine.setInputs("n1", { B: [3] });
81
+ engine.setInputs("n1", { B: [4] });
82
+ engine.setInputs("n1", { B: [5] });
83
+ await new Promise((r) => setTimeout(r, 1000));
84
+ engine.setInputs("n1", { B: [10] });
85
+ engine.setInputs("n1", { B: [11] });
86
+ engine.setInputs("n1", { B: [12] });
87
+ await new Promise((r) => setTimeout(r, 1500));
88
+ await engine.whenIdle();
89
+ engine.dispose();
90
+ }
91
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../../src/examples/async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { GraphDefinition } from "@bian-womp/spark-protocol";
2
+ export declare function createProgressGraphDef(): GraphDefinition;
3
+ export declare function createProgressGraphRegistry(id?: string): import("..").Registry;
4
+ export declare function main(): Promise<void>;
5
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/examples/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AASjE,wBAAgB,sBAAsB,oBAsBrC;AAED,wBAAgB,2BAA2B,CAAC,EAAE,CAAC,EAAE,MAAM,yBAItD;AAED,wBAAsB,IAAI,kBAyBzB"}
@@ -0,0 +1,51 @@
1
+ import { registerProgressNodes, setupBasicGraphRegistry, createRuntime, } from "../misc/base";
2
+ import { LocalEngine } from "../runtime/LocalEngine";
3
+ import { installLogging } from "./shared";
4
+ export function createProgressGraphDef() {
5
+ const def = {
6
+ nodes: [
7
+ { nodeId: "steps", typeId: "base.input.number" },
8
+ { nodeId: "delay", typeId: "base.input.number" },
9
+ { nodeId: "work", typeId: "async.progress" },
10
+ ],
11
+ edges: [
12
+ {
13
+ id: "e1",
14
+ source: { nodeId: "steps", handle: "Result" },
15
+ target: { nodeId: "work", handle: "Steps" },
16
+ },
17
+ {
18
+ id: "e2",
19
+ source: { nodeId: "delay", handle: "Result" },
20
+ target: { nodeId: "work", handle: "DelayMs" },
21
+ },
22
+ // not wiring ShouldError to show manual input driven error later
23
+ ],
24
+ };
25
+ return def;
26
+ }
27
+ export function createProgressGraphRegistry(id) {
28
+ const registry = setupBasicGraphRegistry(id);
29
+ registerProgressNodes(registry);
30
+ return registry;
31
+ }
32
+ export async function main() {
33
+ const runtime = createRuntime(createProgressGraphRegistry(), createProgressGraphDef());
34
+ const engine = new LocalEngine(runtime, "auto");
35
+ installLogging(engine);
36
+ engine.launch();
37
+ // Seed initial values
38
+ engine.setInputs("steps", { Value: 12 });
39
+ engine.setInputs("delay", { Value: 80 });
40
+ // Manually set ShouldError on the worker (unwired input)
41
+ engine.setInputs("work", { ShouldError: false });
42
+ // After 2s, trigger an error run
43
+ await new Promise((r) => setTimeout(r, 2000));
44
+ console.log("-- triggering error run --");
45
+ engine.setInputs("work", { ShouldError: true });
46
+ // After 5s, stop and exit
47
+ await new Promise((r) => setTimeout(r, 5000));
48
+ await engine.whenIdle();
49
+ engine.dispose();
50
+ }
51
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/examples/progress.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAoB;QAC3B,KAAK,EAAE;YACL,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE;YAChD,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE;YAChD,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE;SAC7C;QACD,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC7C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;aAC5C;YACD;gBACE,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;gBAC7C,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;aAC9C;YACD,iEAAiE;SAClE;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAAW;IACrD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC7C,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,OAAO,GAAG,aAAa,CAC3B,2BAA2B,EAAE,EAC7B,sBAAsB,EAAE,CACzB,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,sBAAsB;IACtB,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,yDAAyD;IACzD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAEjD,iCAAiC;IACjC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,CAAC,OAAO,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function run(example: string): Promise<void>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/examples/run.ts"],"names":[],"mappings":"AAAA,wBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,iBA0BxC"}
@@ -0,0 +1,32 @@
1
+ export async function run(example) {
2
+ switch (example) {
3
+ case "simple":
4
+ await import("./simple").then((m) => m.main());
5
+ break;
6
+ case "runMode":
7
+ await import("./runMode").then((m) => m.main());
8
+ break;
9
+ case "async":
10
+ await import("./async").then((m) => m.main());
11
+ break;
12
+ case "progress":
13
+ await import("./progress").then((m) => m.main());
14
+ break;
15
+ case "validation":
16
+ await import("./validation").then((m) => m.main());
17
+ break;
18
+ case "snapshot":
19
+ await import("./snapshot").then((m) => m.main());
20
+ break;
21
+ case "arrays":
22
+ await import("./arrays").then((m) => m.main());
23
+ break;
24
+ default:
25
+ throw new Error(`Unknown example: ${example}`);
26
+ }
27
+ }
28
+ const exampleArg = (process.argv && process.argv[2]) || "simple";
29
+ console.log(`Running example: ${exampleArg}`);
30
+ // top-level await is supported by tsx
31
+ run(exampleArg);
32
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/examples/run.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAe;IACvC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,OAAO;YACV,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM;QACR,KAAK,UAAU;YACb,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,YAAY;YACf,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,UAAU;YACb,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AACjE,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;AAE9C,sCAAsC;AACtC,GAAG,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function main(): Promise<void>;
2
+ //# sourceMappingURL=runMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runMode.d.ts","sourceRoot":"","sources":["../../../src/examples/runMode.ts"],"names":[],"mappings":"AA4QA,wBAAsB,IAAI,kBAuBzB"}