@meshflow/core 0.4.2 → 0.4.3

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/index.d.mts CHANGED
@@ -25,9 +25,23 @@ declare class SchemaBucket<P> {
25
25
  isForceNotify(): boolean;
26
26
  setStrategy(type: DefaultStrategy): void;
27
27
  setDefaultRule(value: any): void;
28
- setRules(value: any, DepsArray?: Array<[P, any]>): () => void;
29
- updateDeps(DepsArray: Array<[P, any]>): void;
30
- setRule(value: any, DepsArray?: Array<[P, any]>): (() => void) | undefined;
28
+ setRules(value: {
29
+ value: any;
30
+ targetUid: number;
31
+ triggerUids: number[];
32
+ priority: any;
33
+ logic: any;
34
+ entityId?: any;
35
+ }, DepsArray?: Array<[number, any]>): () => void;
36
+ updateDeps(DepsArray: Array<[number, any]>): void;
37
+ setRule(value: {
38
+ value: any;
39
+ targetUid: number;
40
+ triggerUids: number[];
41
+ priority: any;
42
+ logic: any;
43
+ entityId?: any;
44
+ }, DepsArray?: Array<[number, any]>): (() => void) | undefined;
31
45
  setSideEffect(data: {
32
46
  fn: (args: any[]) => any;
33
47
  args: any[];
@@ -58,81 +72,112 @@ type InferLeafPath<T, Prefix extends string = ""> = Unwrap<T> extends infer Node
58
72
  } ? InferLeafPath<C, Prefix> : N : never : never : never;
59
73
  type KeysOfUnion<T> = T extends any ? keyof T : never;
60
74
 
75
+ /**
76
+ * 🚀 核心内部事件名枚举
77
+ * 使用 const enum 确保编译后直接内联为字符串,零运行时开销
78
+ */
79
+ declare const enum MeshFlowEventsName {
80
+ FlowStart = 0,
81
+ FlowSuccess = 1,
82
+ FlowEnd = 2,
83
+ FlowAbort = 3,
84
+ FlowWait = 4,
85
+ FlowFire = 5,
86
+ NodeStart = 6,
87
+ NodeSuccess = 7,
88
+ NodeProcessing = 8,
89
+ NodeError = 9,
90
+ NodePending = 10,
91
+ NodeRevive = 11,
92
+ NodeIntercept = 12,
93
+ NodeRelease = 13,
94
+ NodeStagnate = 14,
95
+ NodeBucketSuccess = 15,
96
+ EntangleWarn = 16,
97
+ EntangleBlocked = 17
98
+ }
99
+ /**
100
+ * 🧱 基础事件负载定义
101
+ */
61
102
  interface BaseMeshEvents {
62
- "flow:start": {
103
+ [MeshFlowEventsName.FlowStart]: {
63
104
  path: MeshPath;
64
105
  token: symbol;
65
106
  };
66
- "node:start": {
107
+ [MeshFlowEventsName.FlowWait]: {
108
+ type: number;
109
+ detail?: any;
110
+ };
111
+ [MeshFlowEventsName.FlowFire]: {
112
+ path: MeshPath;
113
+ type: number;
114
+ detail?: any;
115
+ };
116
+ [MeshFlowEventsName.NodeStart]: {
67
117
  path: MeshPath;
68
118
  calledBy: number;
69
119
  };
70
- "node:success": {
120
+ [MeshFlowEventsName.NodeSuccess]: {
71
121
  path: MeshPath;
72
122
  calledBy: number;
73
123
  };
74
- "node:processing": {
124
+ [MeshFlowEventsName.NodeProcessing]: {
75
125
  path: MeshPath;
76
126
  calledBy: number;
77
127
  };
78
- "node:error": {
128
+ [MeshFlowEventsName.NodeError]: {
79
129
  path: MeshPath;
80
130
  error: any;
81
131
  };
82
- "node:intercept": {
132
+ [MeshFlowEventsName.NodePending]: {
83
133
  path: MeshPath;
84
- type: number;
85
- detail?: any;
86
134
  };
87
- "node:release": {
135
+ [MeshFlowEventsName.NodeIntercept]: {
88
136
  path: MeshPath;
89
137
  type: number;
90
138
  detail?: any;
91
139
  };
92
- "node:stagnate": {
93
- path: MeshPath;
94
- type: number;
95
- };
96
- "node:pending": {
140
+ [MeshFlowEventsName.NodeRelease]: {
97
141
  path: MeshPath;
98
- };
99
- "flow:wait": {
100
142
  type: number;
101
143
  detail?: any;
102
144
  };
103
- "flow:fire": {
145
+ [MeshFlowEventsName.NodeStagnate]: {
104
146
  path: MeshPath;
105
147
  type: number;
106
- detail?: any;
107
148
  };
108
- "node:bucket:success": {
149
+ [MeshFlowEventsName.NodeBucketSuccess]: {
109
150
  path: MeshPath;
110
151
  key: string;
111
152
  value: any;
112
153
  calledBy: number;
113
154
  };
114
- 'entangle:warn': {
155
+ [MeshFlowEventsName.EntangleWarn]: {
115
156
  path: string;
116
157
  type: 'no_keys' | 'no_level';
117
158
  };
118
- 'entangle:blocked': {
159
+ [MeshFlowEventsName.EntangleBlocked]: {
119
160
  observer: string;
120
161
  target: string;
121
162
  count: number;
122
163
  };
123
164
  }
165
+ /**
166
+ * 🌟 完整事件扩展定义
167
+ * 包含流程控制及“逆转未来”等特殊场景
168
+ */
124
169
  interface MeshEvents extends BaseMeshEvents {
125
- "flow:success": {
170
+ [MeshFlowEventsName.FlowSuccess]: {
126
171
  duration: string;
127
172
  token: symbol;
128
173
  };
129
- "flow:end": {
174
+ [MeshFlowEventsName.FlowEnd]: {
130
175
  type: number;
131
176
  };
132
- "flow:abort": {
177
+ [MeshFlowEventsName.FlowAbort]: {
133
178
  token: symbol;
134
179
  };
135
- "node:revive": {
180
+ [MeshFlowEventsName.NodeRevive]: {
136
181
  path: MeshPath;
137
182
  triggerPath: MeshPath;
138
183
  };
@@ -171,7 +216,7 @@ interface MeshFlowTaskNode<P extends MeshPath = MeshPath, V = any, NM = any> {
171
216
  uid: number;
172
217
  type: string;
173
218
  state: V;
174
- nodeBucket: Record<keyof NM, SchemaBucket<P>>;
219
+ nodeBucket: Record<keyof NM, number>;
175
220
  notifyKeys: Set<keyof NM>;
176
221
  dirtySignal: any;
177
222
  proxy: MeshNodeProxy<MeshFlowTaskNode<P, V, NM>, V, NM>;
@@ -193,9 +238,9 @@ interface StandardUITrigger<T> {
193
238
  signalCreator: () => T;
194
239
  signalTrigger: (signal: T) => void;
195
240
  }
196
- interface logicApi<NM, TKeys extends KeysOfUnion<NM>> {
241
+ interface logicApi<TKeys extends MeshPath> {
197
242
  slot: {
198
- triggerTargets: Array<Record<KeysOfUnion<NM> | TKeys | (string & {}), any>>;
243
+ triggerTargets: Array<Record<TKeys, any>>;
199
244
  affectedTatget: any;
200
245
  };
201
246
  }
@@ -203,28 +248,35 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
203
248
  value?: any;
204
249
  priority?: number;
205
250
  forceNotify?: boolean;
206
- logic: (api: logicApi<NM, TKeys>) => any;
251
+ logic: (api: logicApi<TKeys>) => any;
207
252
  effect?: (args: any) => any;
208
- effectArgs?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
253
+ effectArgs?: Array<KeysOfUnion<NM>>;
209
254
  cacheStrategy?: "none" | "shallow";
210
- triggerKeys?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
255
+ triggerKeys?: Array<TKeys>;
256
+ }
257
+ type EntangleOp = "add" | "intersect" | "union" | "merge" | "remove";
258
+ interface GhostProposalApi<T> {
259
+ set: (key: string, value: any, weight?: number) => void;
260
+ update: (key: string, delta: any, op?: EntangleOp) => void;
261
+ patch: (key: string, patchFn: (oldState: T) => T) => void;
211
262
  }
212
263
  type EntangleGhost<T = any> = {
213
264
  key: string;
214
265
  value?: any;
215
266
  delta?: number | any;
216
267
  weight?: number;
217
- op?: "add" | "intersect" | "union" | "merge" | "remove";
268
+ op?: EntangleOp;
218
269
  patch?: (oldState: T) => T;
219
270
  };
220
- type EntangleArgType<P extends MeshPath> = {
221
- observer: P;
222
- target: P;
223
- triggerKeys: string[];
224
- filter?: (obs: any, tgt: any) => boolean;
225
- emit: (observerState: any, currentState: any) => void | EntangleGhost | undefined | Promise<void | EntangleGhost | undefined>;
271
+ type EntangleArgType<P extends MeshPath, IsProxy extends boolean = boolean> = {
272
+ cause: P;
273
+ impact: P;
274
+ via: string[];
275
+ isProxy?: IsProxy;
276
+ filter?: (cause: IsProxy extends true ? any : MeshFlowTaskNode<P>, impact: IsProxy extends true ? any : MeshFlowTaskNode<P>) => boolean;
277
+ emit: <T>(cause: IsProxy extends true ? any : MeshFlowTaskNode<P>, impact: IsProxy extends true ? any : MeshFlowTaskNode<P>, propose: GhostProposalApi<T>) => void | EntangleGhost<T> | undefined | Promise<void | EntangleGhost<T> | undefined>;
226
278
  };
227
- declare enum TriggerCause {
279
+ declare const enum TriggerCause {
228
280
  CAUSALITY = 0,// 因果推导(正常)
229
281
  INVERSION = 1,// 逆转回跳(纠缠)
230
282
  REPERCUSSION = 2
@@ -265,7 +317,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
265
317
  } & M;
266
318
  plugins: {};
267
319
  }): {
268
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
320
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
269
321
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
270
322
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
271
323
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -286,8 +338,8 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
286
338
  }[]) => void;
287
339
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
288
340
  notifyAll: () => Promise<void>;
289
- GetAllDependency: () => Map<P, Set<P>>;
290
- GetDependencyOrder: () => P[][];
341
+ GetAllDependency: () => number[][];
342
+ GetDependencyOrder: () => number[][];
291
343
  historyExports: Partial<MeshFlowHistory>;
292
344
  formExports: {};
293
345
  validatorExports: {
@@ -314,15 +366,19 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
314
366
  notifyAll: () => Promise<void>;
315
367
  batchNotify: (updates: {
316
368
  path: P;
317
- key: (string & {}) | KeysOfUnion<NM>;
369
+ key: KeysOfUnion<NM> | (string & {});
318
370
  value: any;
319
371
  }[]) => void;
320
372
  useEntangle: (config: EntangleArgType<P>) => void;
321
373
  updateEntangleLevel: () => void;
374
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
375
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
376
+ CancelTask: () => void;
322
377
  UITrigger: any;
323
378
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
324
379
  };
325
380
  destroyPlugin: () => void;
381
+ CancelTask: () => void;
326
382
  };
327
383
 
328
384
  declare function useScheduler<T, //ui trigger中定义的类型
@@ -331,12 +387,12 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
331
387
  useGreedy: boolean;
332
388
  useEntangleStep: number;
333
389
  }, dependency: {
334
- GetDependencyOrder: () => P[][];
335
- GetAllNextDependency: (path: P) => P[];
336
- GetNextDependency: (path: P) => P[];
337
- GetPrevDependency: (path: P) => P[];
338
- GetAllPrevDependency: (path: P) => P[];
339
- GetPathToLevelMap: () => Map<P, number>;
390
+ GetDependencyOrder: () => number[][];
391
+ GetAllNextDependency: (targetUid: number) => number[];
392
+ GetNextDependency: (targetUid: number) => number[];
393
+ GetPrevDependency: (targetUid: number) => number[];
394
+ GetAllPrevDependency: (targetUid: number) => number[];
395
+ GetUidToLevelMap: () => Map<number, number>;
340
396
  }, history: Partial<{
341
397
  pushIntoHistory: any;
342
398
  createHistoryAction: any;
@@ -359,6 +415,9 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
359
415
  }[]) => void;
360
416
  useEntangle: (config: EntangleArgType<P>) => void;
361
417
  updateEntangleLevel: () => void;
418
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
419
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
420
+ CancelTask: () => void;
362
421
  UITrigger: B;
363
422
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
364
423
  };
@@ -452,7 +511,7 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
452
511
  signalTrigger: (signal: T) => void;
453
512
  };
454
513
  }) => Engine<{
455
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
514
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
456
515
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
457
516
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
458
517
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -473,8 +532,8 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
473
532
  }[]) => void;
474
533
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
475
534
  notifyAll: () => Promise<void>;
476
- GetAllDependency: () => Map<P, Set<P>>;
477
- GetDependencyOrder: () => P[][];
535
+ GetAllDependency: () => number[][];
536
+ GetDependencyOrder: () => number[][];
478
537
  historyExports: Partial<MeshFlowHistory>;
479
538
  formExports: {};
480
539
  validatorExports: {
@@ -506,10 +565,14 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
506
565
  }[]) => void;
507
566
  useEntangle: (config: EntangleArgType<P>) => void;
508
567
  updateEntangleLevel: () => void;
568
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
569
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
570
+ CancelTask: () => void;
509
571
  UITrigger: any;
510
572
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
511
573
  };
512
574
  destroyPlugin: () => void;
575
+ CancelTask: () => void;
513
576
  }, M, P>;
514
577
  declare const useMeshFlowDefiner: <P extends MeshPath, S extends Record<string, any> | any[] = any, NM extends Record<string, any> = any>() => <T, M extends Record<string, any>>(id: MeshPath, schema: S, options: {
515
578
  metaType?: NM;
@@ -539,7 +602,7 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
539
602
  signalTrigger: (signal: T) => void;
540
603
  };
541
604
  }) => Engine<{
542
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
605
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
543
606
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
544
607
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
545
608
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -560,8 +623,8 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
560
623
  }[]) => void;
561
624
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
562
625
  notifyAll: () => Promise<void>;
563
- GetAllDependency: () => Map<P, Set<P>>;
564
- GetDependencyOrder: () => P[][];
626
+ GetAllDependency: () => number[][];
627
+ GetDependencyOrder: () => number[][];
565
628
  historyExports: Partial<MeshFlowHistory>;
566
629
  formExports: {};
567
630
  validatorExports: {
@@ -593,10 +656,14 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
593
656
  }[]) => void;
594
657
  useEntangle: (config: EntangleArgType<P>) => void;
595
658
  updateEntangleLevel: () => void;
659
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
660
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
661
+ CancelTask: () => void;
596
662
  UITrigger: any;
597
663
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
598
664
  };
599
665
  destroyPlugin: () => void;
666
+ CancelTask: () => void;
600
667
  }, M, P>;
601
668
 
602
- export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshNodeProxy, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, TriggerCause, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
669
+ export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type GhostProposalApi, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshEmit, type MeshErrorContext, type MeshEvents, MeshFlowEventsName, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshNodeProxy, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, TriggerCause, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
package/index.d.ts CHANGED
@@ -25,9 +25,23 @@ declare class SchemaBucket<P> {
25
25
  isForceNotify(): boolean;
26
26
  setStrategy(type: DefaultStrategy): void;
27
27
  setDefaultRule(value: any): void;
28
- setRules(value: any, DepsArray?: Array<[P, any]>): () => void;
29
- updateDeps(DepsArray: Array<[P, any]>): void;
30
- setRule(value: any, DepsArray?: Array<[P, any]>): (() => void) | undefined;
28
+ setRules(value: {
29
+ value: any;
30
+ targetUid: number;
31
+ triggerUids: number[];
32
+ priority: any;
33
+ logic: any;
34
+ entityId?: any;
35
+ }, DepsArray?: Array<[number, any]>): () => void;
36
+ updateDeps(DepsArray: Array<[number, any]>): void;
37
+ setRule(value: {
38
+ value: any;
39
+ targetUid: number;
40
+ triggerUids: number[];
41
+ priority: any;
42
+ logic: any;
43
+ entityId?: any;
44
+ }, DepsArray?: Array<[number, any]>): (() => void) | undefined;
31
45
  setSideEffect(data: {
32
46
  fn: (args: any[]) => any;
33
47
  args: any[];
@@ -58,81 +72,112 @@ type InferLeafPath<T, Prefix extends string = ""> = Unwrap<T> extends infer Node
58
72
  } ? InferLeafPath<C, Prefix> : N : never : never : never;
59
73
  type KeysOfUnion<T> = T extends any ? keyof T : never;
60
74
 
75
+ /**
76
+ * 🚀 核心内部事件名枚举
77
+ * 使用 const enum 确保编译后直接内联为字符串,零运行时开销
78
+ */
79
+ declare const enum MeshFlowEventsName {
80
+ FlowStart = 0,
81
+ FlowSuccess = 1,
82
+ FlowEnd = 2,
83
+ FlowAbort = 3,
84
+ FlowWait = 4,
85
+ FlowFire = 5,
86
+ NodeStart = 6,
87
+ NodeSuccess = 7,
88
+ NodeProcessing = 8,
89
+ NodeError = 9,
90
+ NodePending = 10,
91
+ NodeRevive = 11,
92
+ NodeIntercept = 12,
93
+ NodeRelease = 13,
94
+ NodeStagnate = 14,
95
+ NodeBucketSuccess = 15,
96
+ EntangleWarn = 16,
97
+ EntangleBlocked = 17
98
+ }
99
+ /**
100
+ * 🧱 基础事件负载定义
101
+ */
61
102
  interface BaseMeshEvents {
62
- "flow:start": {
103
+ [MeshFlowEventsName.FlowStart]: {
63
104
  path: MeshPath;
64
105
  token: symbol;
65
106
  };
66
- "node:start": {
107
+ [MeshFlowEventsName.FlowWait]: {
108
+ type: number;
109
+ detail?: any;
110
+ };
111
+ [MeshFlowEventsName.FlowFire]: {
112
+ path: MeshPath;
113
+ type: number;
114
+ detail?: any;
115
+ };
116
+ [MeshFlowEventsName.NodeStart]: {
67
117
  path: MeshPath;
68
118
  calledBy: number;
69
119
  };
70
- "node:success": {
120
+ [MeshFlowEventsName.NodeSuccess]: {
71
121
  path: MeshPath;
72
122
  calledBy: number;
73
123
  };
74
- "node:processing": {
124
+ [MeshFlowEventsName.NodeProcessing]: {
75
125
  path: MeshPath;
76
126
  calledBy: number;
77
127
  };
78
- "node:error": {
128
+ [MeshFlowEventsName.NodeError]: {
79
129
  path: MeshPath;
80
130
  error: any;
81
131
  };
82
- "node:intercept": {
132
+ [MeshFlowEventsName.NodePending]: {
83
133
  path: MeshPath;
84
- type: number;
85
- detail?: any;
86
134
  };
87
- "node:release": {
135
+ [MeshFlowEventsName.NodeIntercept]: {
88
136
  path: MeshPath;
89
137
  type: number;
90
138
  detail?: any;
91
139
  };
92
- "node:stagnate": {
93
- path: MeshPath;
94
- type: number;
95
- };
96
- "node:pending": {
140
+ [MeshFlowEventsName.NodeRelease]: {
97
141
  path: MeshPath;
98
- };
99
- "flow:wait": {
100
142
  type: number;
101
143
  detail?: any;
102
144
  };
103
- "flow:fire": {
145
+ [MeshFlowEventsName.NodeStagnate]: {
104
146
  path: MeshPath;
105
147
  type: number;
106
- detail?: any;
107
148
  };
108
- "node:bucket:success": {
149
+ [MeshFlowEventsName.NodeBucketSuccess]: {
109
150
  path: MeshPath;
110
151
  key: string;
111
152
  value: any;
112
153
  calledBy: number;
113
154
  };
114
- 'entangle:warn': {
155
+ [MeshFlowEventsName.EntangleWarn]: {
115
156
  path: string;
116
157
  type: 'no_keys' | 'no_level';
117
158
  };
118
- 'entangle:blocked': {
159
+ [MeshFlowEventsName.EntangleBlocked]: {
119
160
  observer: string;
120
161
  target: string;
121
162
  count: number;
122
163
  };
123
164
  }
165
+ /**
166
+ * 🌟 完整事件扩展定义
167
+ * 包含流程控制及“逆转未来”等特殊场景
168
+ */
124
169
  interface MeshEvents extends BaseMeshEvents {
125
- "flow:success": {
170
+ [MeshFlowEventsName.FlowSuccess]: {
126
171
  duration: string;
127
172
  token: symbol;
128
173
  };
129
- "flow:end": {
174
+ [MeshFlowEventsName.FlowEnd]: {
130
175
  type: number;
131
176
  };
132
- "flow:abort": {
177
+ [MeshFlowEventsName.FlowAbort]: {
133
178
  token: symbol;
134
179
  };
135
- "node:revive": {
180
+ [MeshFlowEventsName.NodeRevive]: {
136
181
  path: MeshPath;
137
182
  triggerPath: MeshPath;
138
183
  };
@@ -171,7 +216,7 @@ interface MeshFlowTaskNode<P extends MeshPath = MeshPath, V = any, NM = any> {
171
216
  uid: number;
172
217
  type: string;
173
218
  state: V;
174
- nodeBucket: Record<keyof NM, SchemaBucket<P>>;
219
+ nodeBucket: Record<keyof NM, number>;
175
220
  notifyKeys: Set<keyof NM>;
176
221
  dirtySignal: any;
177
222
  proxy: MeshNodeProxy<MeshFlowTaskNode<P, V, NM>, V, NM>;
@@ -193,9 +238,9 @@ interface StandardUITrigger<T> {
193
238
  signalCreator: () => T;
194
239
  signalTrigger: (signal: T) => void;
195
240
  }
196
- interface logicApi<NM, TKeys extends KeysOfUnion<NM>> {
241
+ interface logicApi<TKeys extends MeshPath> {
197
242
  slot: {
198
- triggerTargets: Array<Record<KeysOfUnion<NM> | TKeys | (string & {}), any>>;
243
+ triggerTargets: Array<Record<TKeys, any>>;
199
244
  affectedTatget: any;
200
245
  };
201
246
  }
@@ -203,28 +248,35 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
203
248
  value?: any;
204
249
  priority?: number;
205
250
  forceNotify?: boolean;
206
- logic: (api: logicApi<NM, TKeys>) => any;
251
+ logic: (api: logicApi<TKeys>) => any;
207
252
  effect?: (args: any) => any;
208
- effectArgs?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
253
+ effectArgs?: Array<KeysOfUnion<NM>>;
209
254
  cacheStrategy?: "none" | "shallow";
210
- triggerKeys?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
255
+ triggerKeys?: Array<TKeys>;
256
+ }
257
+ type EntangleOp = "add" | "intersect" | "union" | "merge" | "remove";
258
+ interface GhostProposalApi<T> {
259
+ set: (key: string, value: any, weight?: number) => void;
260
+ update: (key: string, delta: any, op?: EntangleOp) => void;
261
+ patch: (key: string, patchFn: (oldState: T) => T) => void;
211
262
  }
212
263
  type EntangleGhost<T = any> = {
213
264
  key: string;
214
265
  value?: any;
215
266
  delta?: number | any;
216
267
  weight?: number;
217
- op?: "add" | "intersect" | "union" | "merge" | "remove";
268
+ op?: EntangleOp;
218
269
  patch?: (oldState: T) => T;
219
270
  };
220
- type EntangleArgType<P extends MeshPath> = {
221
- observer: P;
222
- target: P;
223
- triggerKeys: string[];
224
- filter?: (obs: any, tgt: any) => boolean;
225
- emit: (observerState: any, currentState: any) => void | EntangleGhost | undefined | Promise<void | EntangleGhost | undefined>;
271
+ type EntangleArgType<P extends MeshPath, IsProxy extends boolean = boolean> = {
272
+ cause: P;
273
+ impact: P;
274
+ via: string[];
275
+ isProxy?: IsProxy;
276
+ filter?: (cause: IsProxy extends true ? any : MeshFlowTaskNode<P>, impact: IsProxy extends true ? any : MeshFlowTaskNode<P>) => boolean;
277
+ emit: <T>(cause: IsProxy extends true ? any : MeshFlowTaskNode<P>, impact: IsProxy extends true ? any : MeshFlowTaskNode<P>, propose: GhostProposalApi<T>) => void | EntangleGhost<T> | undefined | Promise<void | EntangleGhost<T> | undefined>;
226
278
  };
227
- declare enum TriggerCause {
279
+ declare const enum TriggerCause {
228
280
  CAUSALITY = 0,// 因果推导(正常)
229
281
  INVERSION = 1,// 逆转回跳(纠缠)
230
282
  REPERCUSSION = 2
@@ -265,7 +317,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
265
317
  } & M;
266
318
  plugins: {};
267
319
  }): {
268
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
320
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
269
321
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
270
322
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
271
323
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -286,8 +338,8 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
286
338
  }[]) => void;
287
339
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
288
340
  notifyAll: () => Promise<void>;
289
- GetAllDependency: () => Map<P, Set<P>>;
290
- GetDependencyOrder: () => P[][];
341
+ GetAllDependency: () => number[][];
342
+ GetDependencyOrder: () => number[][];
291
343
  historyExports: Partial<MeshFlowHistory>;
292
344
  formExports: {};
293
345
  validatorExports: {
@@ -314,15 +366,19 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Rec
314
366
  notifyAll: () => Promise<void>;
315
367
  batchNotify: (updates: {
316
368
  path: P;
317
- key: (string & {}) | KeysOfUnion<NM>;
369
+ key: KeysOfUnion<NM> | (string & {});
318
370
  value: any;
319
371
  }[]) => void;
320
372
  useEntangle: (config: EntangleArgType<P>) => void;
321
373
  updateEntangleLevel: () => void;
374
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
375
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
376
+ CancelTask: () => void;
322
377
  UITrigger: any;
323
378
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
324
379
  };
325
380
  destroyPlugin: () => void;
381
+ CancelTask: () => void;
326
382
  };
327
383
 
328
384
  declare function useScheduler<T, //ui trigger中定义的类型
@@ -331,12 +387,12 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
331
387
  useGreedy: boolean;
332
388
  useEntangleStep: number;
333
389
  }, dependency: {
334
- GetDependencyOrder: () => P[][];
335
- GetAllNextDependency: (path: P) => P[];
336
- GetNextDependency: (path: P) => P[];
337
- GetPrevDependency: (path: P) => P[];
338
- GetAllPrevDependency: (path: P) => P[];
339
- GetPathToLevelMap: () => Map<P, number>;
390
+ GetDependencyOrder: () => number[][];
391
+ GetAllNextDependency: (targetUid: number) => number[];
392
+ GetNextDependency: (targetUid: number) => number[];
393
+ GetPrevDependency: (targetUid: number) => number[];
394
+ GetAllPrevDependency: (targetUid: number) => number[];
395
+ GetUidToLevelMap: () => Map<number, number>;
340
396
  }, history: Partial<{
341
397
  pushIntoHistory: any;
342
398
  createHistoryAction: any;
@@ -359,6 +415,9 @@ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
359
415
  }[]) => void;
360
416
  useEntangle: (config: EntangleArgType<P>) => void;
361
417
  updateEntangleLevel: () => void;
418
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
419
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
420
+ CancelTask: () => void;
362
421
  UITrigger: B;
363
422
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
364
423
  };
@@ -452,7 +511,7 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
452
511
  signalTrigger: (signal: T) => void;
453
512
  };
454
513
  }) => Engine<{
455
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
514
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
456
515
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
457
516
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
458
517
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -473,8 +532,8 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
473
532
  }[]) => void;
474
533
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
475
534
  notifyAll: () => Promise<void>;
476
- GetAllDependency: () => Map<P, Set<P>>;
477
- GetDependencyOrder: () => P[][];
535
+ GetAllDependency: () => number[][];
536
+ GetDependencyOrder: () => number[][];
478
537
  historyExports: Partial<MeshFlowHistory>;
479
538
  formExports: {};
480
539
  validatorExports: {
@@ -506,10 +565,14 @@ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>
506
565
  }[]) => void;
507
566
  useEntangle: (config: EntangleArgType<P>) => void;
508
567
  updateEntangleLevel: () => void;
568
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
569
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
570
+ CancelTask: () => void;
509
571
  UITrigger: any;
510
572
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
511
573
  };
512
574
  destroyPlugin: () => void;
575
+ CancelTask: () => void;
513
576
  }, M, P>;
514
577
  declare const useMeshFlowDefiner: <P extends MeshPath, S extends Record<string, any> | any[] = any, NM extends Record<string, any> = any>() => <T, M extends Record<string, any>>(id: MeshPath, schema: S, options: {
515
578
  metaType?: NM;
@@ -539,7 +602,7 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
539
602
  signalTrigger: (signal: T) => void;
540
603
  };
541
604
  }) => Engine<{
542
- SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
605
+ SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
543
606
  SetRules: <TKeys extends KeysOfUnion<NM>>(outDegreePaths: P[], inDegreePath: P, key: (string & {}) | KeysOfUnion<NM>, options: SetRuleOptions<NM, TKeys>) => void;
544
607
  SetStrategy: (path: P, key: KeysOfUnion<NM>, strategy: DefaultStrategy) => void;
545
608
  useEntangle: (config: EntangleArgType<P>) => void;
@@ -560,8 +623,8 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
560
623
  }[]) => void;
561
624
  GetGroupByPath: (path: MeshPath) => MeshFlowGroupNode<MeshPath>;
562
625
  notifyAll: () => Promise<void>;
563
- GetAllDependency: () => Map<P, Set<P>>;
564
- GetDependencyOrder: () => P[][];
626
+ GetAllDependency: () => number[][];
627
+ GetDependencyOrder: () => number[][];
565
628
  historyExports: Partial<MeshFlowHistory>;
566
629
  formExports: {};
567
630
  validatorExports: {
@@ -593,10 +656,14 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
593
656
  }[]) => void;
594
657
  useEntangle: (config: EntangleArgType<P>) => void;
595
658
  updateEntangleLevel: () => void;
659
+ SetBucket: (newBucket: SchemaBucket<P>) => number;
660
+ GetBucket: (bucketId: number) => SchemaBucket<P>;
661
+ CancelTask: () => void;
596
662
  UITrigger: any;
597
663
  UidToNodeMap: MeshFlowTaskNode<P, any, NM>[];
598
664
  };
599
665
  destroyPlugin: () => void;
666
+ CancelTask: () => void;
600
667
  }, M, P>;
601
668
 
602
- export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshNodeProxy, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, TriggerCause, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
669
+ export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type GhostProposalApi, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshEmit, type MeshErrorContext, type MeshEvents, MeshFlowEventsName, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshNodeProxy, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, TriggerCause, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var we=(t=>(t.OR="OR",t.PRIORITY="PRIORITY",t.MERGE="MERGE",t))(we||{}),Te=class{computedRules=[];store={OR:(e,n)=>{let t,i,l=this.computedRules;for(let o=0;o<l.length;o++){let s=l[o],r=s.logic(e);if(r instanceof Promise)return (async()=>{let a=await r;if(s.entityId==="__base__"?i=a:a&&(t=a),typeof t>"u")for(let c=o+1;c<l.length;c++){let w=l[c],h=w.logic(e),p=h instanceof Promise?await h:h;if(w.entityId==="__base__"){i=p;continue}if(p){t=w.value;break}}return typeof t>"u"&&(t=i),{res:t,version:n}})();let u=r;if(s.entityId==="__base__"){i=u;continue}if(u){t=s.value;break}}return typeof t>"u"&&(t=i),{res:t,version:n}},PRIORITY:(e,n)=>{let t,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l].logic(e);if(s instanceof Promise)return (async()=>{let r=await s;if(r!==void 0)return {res:r,version:n};for(let u=l+1;u<i.length;u++){let a=i[u].logic(e),c=a instanceof Promise?await a:a;if(c!==void 0)return {res:c,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,version:n}},MERGE:(e,n)=>{let t,i,l=this.computedRules,o=(r,u)=>r===void 0?u:u===void 0?r:Array.isArray(r)&&Array.isArray(u)?[...u,...r]:typeof r=="object"&&typeof u=="object"?{...u,...r}:r;for(let r=0;r<l.length;r++){let u=l[r],a=u.logic(e);if(a instanceof Promise)return (async()=>{let w=await a,h=(f,g)=>{if(f.entityId==="__base__")i=o(i,g);else if(g){let x=f.value!==void 0?f.value:g;t=o(t,x);}};h(u,w);for(let f=r+1;f<l.length;f++){let g=l[f],x=g.logic(e),O=x instanceof Promise?await x:x;h(g,O);}return {res:o(t,i),version:n}})();let c=a;if(u.entityId==="__base__"){i=o(i,c);continue}if(c){let w=u.value!==void 0?u.value:c;t=o(t,w);}}return {res:o(t,i),version:n}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(n=>Array.from(n)).flat().sort((n,t)=>t.priority-n.priority):this.computedRules=Array.from(e.values()).map(n=>Array.from(n)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},ye=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,n,t){let i=()=>this.rules;this.strategy=new Te(i),this.path=t,this.isValue=n==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let n=new Set;n.add(e),this.rules.set("defaultRules",n);}setRules(e,n){n&&this.updateDeps(n);let t=++this.id,i={...e,entityId:t};for(let l of e.triggerPaths)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerPaths){let o=this.rules.get(l);o&&(o.delete(i),o.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[n,t]of e)this.deps.set(n,t);}setRule(e,n){if(n&&this.updateDeps(n),typeof e.entityId=="string"){this.setDefaultRule(e);return}let t=++this.id,i={...e,entityId:t};if(e)for(let l of e.triggerPaths)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerPaths){let o=this.rules.get(l);o&&(o.delete(i),o.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let n=null;if(e.GetToken&&(n=e.GetToken()),this.pendingPromise&&this.promiseToken!==n&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let t=false;if(typeof e.triggerPath=="string"){t=true;let o=this.deps.get(e.triggerPath),s=e.getStateByPath(e.triggerPath);if(typeof o=="object"||typeof s=="object")t=false;else {let r=Array.from(this.deps.keys());for(let u of r){let a=this.deps.get(u),c=e.getStateByPath(u);if(a!==c){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let i=++this.version,l=this.strategy.evaluate(e,i);if(!(l instanceof Promise)){let{res:o,version:s}=l;return this.finalizeSync(o,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:o,version:s}=await l;return this.finalizeSync(o,s,e,n)}catch(o){throw {path:this.path,error:o}}finally{this.promiseToken===n&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,n,t,i){return i!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((l,o)=>{this.deps.set(o,t.GetRenderSchemaByPath(o));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Re=(d,e,n)=>{let i=l=>{let o=n.triggerPaths.map(u=>{let a=l.GetRenderSchemaByPath(u),c={};return n.triggerKeys.forEach(w=>{c[w]=a[w];}),c}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>o}),Object.defineProperty(s,"affectedTatget",{get:()=>l.GetRenderSchemaByPath(d)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:d,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:i}},be=(d,e,n)=>{if(!d)throw Error("");let t=d,i=(s,r)=>{e.has(s)||e.set(s,new Set),e.get(s).add(r),n.has(r)||n.set(r,new Set),n.get(r).add(s);};return {SetRule:(s,r,u,a)=>{let c=t(r),w=a.triggerKeys||[];w.length==0&&w.push("value");let h=Re(r,u,{...a,triggerPaths:[s],triggerKeys:w}),p=[s].map(f=>[f,t(f).state.value]);if(i(s,r),c.nodeBucket[u])c.nodeBucket[u].setRule(h,p),a.effect&&c.nodeBucket[u].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]});else {let f=c.meta[u],g=new ye(f,u,r);g.setRule(h,p),a.effect&&g.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]}),c.nodeBucket[u]=g;}c.state[u]=c.meta[u],a.forceNotify&&c.nodeBucket[u].forceNotify(),a.cacheStrategy=="none"&&c.nodeBucket[u].setUseCache(false);},SetRules:(s,r,u,a)=>{let c=t(r);for(let f of s)i(f,r);let w=a.triggerKeys||[];w.length==0&&w.push("value");let h=Re(r,u,{...a,triggerPaths:s,triggerKeys:w}),p=s.map(f=>[f,t(f).state.value]);if(c.nodeBucket[u])c.nodeBucket[u].setRules(h,p),a.effect&&c.nodeBucket[u].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]});else {let f=c.meta[u],g=new ye(f,u,r);g.setRules(h,p),a.effect&&g.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]}),c.nodeBucket[u]=g;}c.state[u]=c.meta[u],a.forceNotify&&c.nodeBucket[u].forceNotify(),a.cacheStrategy=="none"&&c.nodeBucket[u].setUseCache(false);}}};var Ae=d=>{let e=d||void 0;if(!e)throw Error("");return {SetStrategy:(t,i,l)=>{e(t).nodeBucket[i].setStrategy(l);}}};function Ge(){let d=new Map,e=new Map,n=new Set,t=(o,s)=>{d.set(o,s);let r=e.get(o);r&&r(s);};return {SetTrace:(o,s)=>{e.set(o,s);let r=d.get(o)||"idle";return s(r),{cancel:()=>{e.delete(o);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(r=>t(r,"idle")),n.clear(),d.clear();}),s.on("node:release",({path:r,type:u})=>{(u==1||u==2)&&(n.add(r),t(r,"pending"));}),s.on("node:pending",({path:r})=>{n.add(r),(!d.has(r)||d.get(r)==="idle")&&t(r,"pending");}),s.on("node:start",({path:r})=>{n.add(r),t(r,"calculating");}),s.on("node:success",({path:r})=>{t(r,"calculated");}),s.on("node:intercept",({path:r,type:u})=>{u==3&&t(r,"calculating"),u==6&&t(r,"idle");}),s.on("node:stagnate",({path:r})=>{t(r,"pending");}),s.on("node:error",({path:r})=>t(r,"error"));}})}}function Oe(d,e,n,t){let i=a=>{let c=d(),w=e(),h=new Set;return c.get(a)?.forEach(p=>h.add(p)),h.size===0?[]:Array.from(h).filter(p=>{let f=w.get(p)||new Set;return !Array.from(f).some(O=>h.has(O))})};return {GetNextDependency:a=>{let c=t();return Array.from(c.get(a)||[])},GetPrevDependency:a=>{let c=n();return Array.from(c.get(a)||[])},GetAllPrevDependency:a=>{let c=e();return Array.from(c.get(a)||[])},GetAllNextDependency:a=>{let c=d();return Array.from(c.get(a)||[])},rebuildDirectDependencyMaps:a=>{let c=new Map,w=new Map;for(let h of a){let p=i(h);c.set(h,new Set(p));for(let f of p)w.has(f)||w.set(f,new Set),w.get(f).add(h);}return {directNextMap:c,directPrevMap:w}}}}function Fe(d){let e=t=>{let i=[],l=[],o=new Map,s=t.size,r=0,u=0;for(let[a,c]of t)c===0&&l.push(a);if(l.length===0&&s>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let a=[];for(let c of l){r++,o.set(c,u);let w=d.get(c);if(w)for(let h of w){let p=t.get(h)-1;t.set(h,p),p===0&&a.push(h);}}l=a,u++;}if(r<s)throw Error("Circular dependency detected");return {steps:i,levelMap:o}};return ()=>{let t=new Map;for(let i of d.keys()){let l=Array.from(d.get(i)||[]);t.has(i)||t.set(i,0);for(let o of l){let s=t.get(o)||0;t.set(o,++s);}}return e(t)}}var ue=()=>{let d=[];return {on:e=>(d.push(e),()=>{let n=d.indexOf(e);n>-1&&d.splice(n,1);}),call:e=>d.forEach(n=>{n(e);})}};function Ke(){let{on:d,call:e}=ue();return {onError:d,callOnError:e}}function Ie(){let{on:d,call:e}=ue();return {onSuccess:d,callOnSuccess:e}}var Ce=()=>{let d=new Set,e=new Map,n=new Set,t=(s,r)=>{e.get(s)?.forEach(u=>u(r));},i=(s,r)=>(e.has(s)||e.set(s,new Set),e.get(s).add(r),()=>e.get(s)?.delete(r));return {usePlugin:s=>{let r=new Set,u=(c,w)=>{let h=i(c,w);return r.add(h),h};s.apply({on:u}),d.add(s);let a=()=>{r.forEach(c=>c()),r.clear(),d.delete(s),n.delete(a);};return n.add(a),a},emit:t,destroyPlugin:()=>{n.forEach(s=>s()),n.clear(),e.clear(),d.clear();}}};function ke(){let{on:d,call:e}=ue();return {onStart:d,callOnStart:e}}var Be=(d={frameQuota:12})=>{let e=performance.now(),n=0,t=false,i=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let l=performance.now();return n++,!!((n>=5||t)&&(n=0,l-e>d.frameQuota||i()))},async yieldToMain(){return new Promise(l=>{ve(()=>{e=performance.now(),n=0,t&&(t=false),l();});})}}},ve=d=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=d,n.postMessage(null);};var xe=(t=>(t[t.CAUSALITY=0]="CAUSALITY",t[t.INVERSION=1]="INVERSION",t[t.REPERCUSSION=2]="REPERCUSSION",t))(xe||{});function Ue(d,e,n,t,i,l){let o=new Map,s=d.useGreedy,r=null;return async(a,c)=>{let h=Symbol("token"),p=a||"__NOTIFY_ALL__";o.set(p,h),r=h;let f=false;l.reset();let g=new Set,x=new Set,O=new Set;c.forEach(C=>{O.add(C),e.GetAllNextDependency(C).forEach(v=>O.add(v));});let G=new Map,R=new Map,V=new Map,b=[],L=n.Turnstile,k=L.volatileLevels.size>0,ee=k?L.hasObserver:()=>false,K=k?L.receiveGhosts:()=>[],N=k?L.resolveGhosts:()=>[],y=k?L.getTriggerKeys:()=>[],M=L?.volatileLevels||new Set,S=-1,P=new Set,T=e.GetPathToLevelMap(),A=0,z=0,q=C=>{e.GetAllNextDependency(C).forEach(ne=>{let j=T.get(ne)||0;j>z&&(z=j);});},Z=new Set;a&&(g.add(a),Z.add(a),q(a),i.flushPathSet.add(a));let re=a?[a]:c;l.shouldYield()&&(i.requestUpdate(),await l.yieldToMain());let ce=re.map(async C=>{if(ee(C)){let v=n.GetNodeByPath(C),ne=y(C);if(ne.length>0){let j=K(v,ne);return j instanceof Promise&&(j=await j),{seed:C,hitTargets:j}}}return {seed:C,hitTargets:[]}});if((await Promise.all(ce)).forEach(({seed:C,hitTargets:v})=>{if(v&&v.length>0){b.push(...v);let ne=T.get(C)||0;S=Math.max(S,ne);}}),(b.length>0||re.length>1)&&(i.requestUpdate(),await l.yieldToMain(),o.get(p)!==h))return;let Pe=b.length>0;c.forEach(C=>{if(!Z.has(C))if(Pe){let v=T.get(C)??0;R.has(v)||R.set(v,new Set),R.get(v).add(C),t.emit("node:stagnate",{path:C,type:2});}else P.add(C),q(C);}),a?A=T.get(a)??0:A=Math.min(...c.map(C=>T.get(C)??0));let ge=performance.now();t.emit("flow:start",{path:p,token:h}),t.callOnStart({path:p});let de=false,me=30,Me=C=>{let{target:v,trigger:ne}=C,j=false,se=false,oe=false,I=n.GetNodeByPath(v),_=I.calledBy,Y=[],Q=[],B=false;if(I.calledBy===1){B=true,j=true,i.flushPathSet.add(v);let m=V.get(v);m&&(Y.push(...m),V.delete(v));}let W=(m,F)=>{let H=T.get(m)??0,J=(_===1||_===2)&&H<=S;J&&g.has(m)&&(g.delete(m),t.emit("node:revive",{path:m,triggerPath:v}));let D=0;if(!(g.has(m)||x.has(m)||P.has(m))){if(G.has(m))D=G.get(m)-1;else {if(H>A&&G.size>me){R.has(H)||R.set(H,new Set),R.get(H).add(m),t.emit("node:intercept",{path:m,type:7});return}let ae=e.GetPrevDependency(m),te=0;for(let ie of ae){if(g.has(ie))continue;(T.get(ie)??0)>A&&te++;}D=te;}if(D<=0){let ae=P.has(m),te=x.has(m);if(ae||te){t.emit("node:intercept",{path:m,type:te?3:3.1});return}G.delete(m);let ie=n.GetNodeByPath(m);J?ie.calledBy=2:ie.calledBy=0,P.add(m),t.emit("node:release",{path:m,type:F,detail:{path:v}});}else G.set(m,D);}},X=(m=[])=>{if(o.get(p)!==h)return;if(m.length){let H={},J=I.proxy;for(let D of m){let ae=(D.args||[]).reduce((te,ie)=>(te[ie]=J[ie],te),{});try{let te=D.fn(ae);te&&typeof te=="object"&&Object.assign(H,te);}catch(te){}}for(let D in H)if(D in I.state)Object.is(I.state[D],H[D])||(I.state[D]=H[D],Y.push(D),j=true,(I.notifyKeys.size===0||I.notifyKeys.has(D))&&(se=true));else throw {error:`wrong effect in ${String(I.path)}`}}j&&i.flushPathSet.add(v);let F=(H=[])=>{if(o.get(p)!==h)return;H&&H.length>0&&(b.push(...H),S=Math.max(S,T.get(v)||0)),Y.length=0,t.emit("node:success",{path:v,calledBy:I.calledBy}),g.add(v);let J=e.GetNextDependency(v);(se||oe)&&(q(v),e.GetAllNextDependency(v).forEach(le=>O.add(le)));let D=n.GetNodeByPath(v),ae=T.get(v)??0,te=M.has(ae)||b.length>0;for(let $ of J){let le=T.get($)??0;if(te&&le>=ae){R.has(le)||R.set(le,new Set),R.get(le).add($),t.emit("node:stagnate",{path:$,type:2});continue}if(g.has($)){t.emit("node:intercept",{path:$,type:2});continue}if(x.has($)||P.has($)){t.emit("node:intercept",{path:$,type:x.has($)?3:3.1});continue}if(se||oe)W($,1);else if(G.has($))W($,2);else {let Se=T.get($);R.has(Se)||R.set(Se,new Set);let Ee=R.get(Se);Ee.has($)||(Ee.add($),t.emit("node:stagnate",{path:$,type:1}));}}x.delete(v),D.calledBy=0,(()=>{if(!f){f=true;let $=x.size,le=P.size;t.emit("flow:fire",{path:v,type:1,detail:{active:$,pending:le,blocked:G.size}}),fe();}})();};if(ee(v)&&Y.length>0){let H=n.GetNodeByPath(v),J=K(H,Y);J instanceof Promise||J&&typeof J.then=="function"?J.then(F).catch(E):F(J);}else F([]);},E=m=>{t.emit("node:error",{path:v,error:m});let F=Symbol("abort");o.set(p,F),P.clear(),G.clear(),x.clear(),V.clear(),t.callOnError(m);},U=(m,F)=>{m!==I.state[F]&&(I.state[F]=m,j=true,Y.push(String(F)),t.emit("node:bucket:success",{path:v,key:String(F),value:m,calledBy:I.calledBy}),(I.notifyKeys.size===0||I.notifyKeys.has(F))&&(se=true)),I.nodeBucket[F].isForceNotify()&&(oe=true),(se||oe)&&q(v);};t.emit("node:start",{path:v,calledBy:I.calledBy});try{let m=[];for(let F in I.nodeBucket){let H=I.nodeBucket[F];if(m.push(...H.getSideEffect()),B){t.emit("node:bucket:success",{path:v,key:String(F),value:I.state[F],calledBy:I.calledBy}),H.isForceNotify()&&(oe=!0),(I.notifyKeys.size===0||I.notifyKeys.has(F))&&q(v);continue}let J=H.evaluate({affectKey:F,triggerPath:ne,GetRenderSchemaByPath:D=>n.GetNodeByPath(D).proxy,getStateByPath:D=>n.GetNodeByPath(D).state,GetToken:()=>h});if(J instanceof Promise){let D=J.then(ae=>{o.get(p)===h&&U(ae,F);});Q.push(D);}else U(J,F);}if(Q.length>0)return Promise.all(Q).then(()=>{X(m);}).catch(E);X(m);return}catch(m){E(m);}},fe=async()=>{if(o.get(p)!==h){f=false;return}f=true;let C=l.getIsFirstFrame(),v=0,ne=()=>s&&C?30:1/0,j=0,se=ne();try{for(;o.get(p)===h;){let oe=j>=se,I=l.shouldYield();if(oe||I){if(j>0&&(v++,(C||v%2===0)&&i.requestUpdate()),await l.yieldToMain(),o.get(p)!==h)break;j=0,C=l.getIsFirstFrame();}if(P.size>0&&x.size<40){for(let _ of P){if(x.size>=40||j>=se)break;let Y=T.get(_)??0,Q=e.GetPrevDependency(_),B=Q.length>1;if((!s||B)&&Y>A){P.delete(_);let E=Q.filter(U=>O.has(U)&&!g.has(U)).length;G.set(_,E||0),t.emit("node:intercept",{path:_,type:E>0?4:5,detail:{targetLevel:Y,currentLevel:A,pendingParentsCount:E}});continue}P.delete(_),x.add(_);let X=n.GetNodeByPath(_);if(t.emit("node:processing",{path:_,calledBy:X.calledBy}),Me({target:_,trigger:a}),j++,j>=se||l.shouldYield())break}if(P.size>0)continue}if(j<se&&s&&G.size>0&&x.size<40){let _=!1,Y=0;for(let[Q,B]of G)if(B<=0){let W=T.get(Q)??0,X=e.GetPrevDependency(Q);if(W>A&&X.length>1)continue;if(G.delete(Q),P.add(Q),Y++,_=!0,t.emit("node:release",{path:Q,type:4}),Y>=se)break}if(Y>0)continue;if(_){if(l.shouldYield()&&(await l.yieldToMain(),o.get(p)!==h))break;continue}}if(x.size===0&&P.size===0){if(b.length>0){let B=!1,W=A,X=Array.from(new Set(b));b.length=0;for(let E of X){let U=n.GetNodeByPath(E),m=N(U);if(m&&m.length>0){B=!0,U.calledBy=1,V.set(E,m),g.delete(E),G.delete(E),P.add(E);let F=T.get(E)??0;F<W&&(W=F),q(E),i.flushPathSet.add(E);}}if(B){if(W<A&&(A=W),i.requestUpdate(),l.shouldYield()&&(await l.yieldToMain(),o.get(p)!==h))break;continue}}let _=new Set;for(let B of R.keys())_.add(B);for(let[B]of G){let W=T.get(B)??0;W>A&&_.add(W);}let Y=Array.from(_).sort((B,W)=>B-W),Q=Y[0];if(Y.length>0&&Q<=z){let B=Y[0];if(B<=z){A=B;let W=R.get(B);W&&(W.forEach(X=>P.add(X)),R.delete(B));for(let[X]of G)(T.get(X)??0)===B&&(G.delete(X),P.add(X),t.emit("node:release",{path:X,type:3,detail:{level:B}}));continue}}else {R.forEach((B,W)=>{B.forEach(X=>{g.add(X),t.emit("node:intercept",{path:X,type:6});});}),R.clear();for(let[B]of G)g.add(B),t.emit("node:intercept",{path:B,type:6});G.clear();break}}P.size>0&&x.size>=40&&t.emit("flow:wait",{type:2});break}}finally{f=false;let oe=x.size+G.size+P.size,I=L.inFlightCount||0;if(!(r===h)){t.emit("flow:abort",{token:h});return}if(i.requestUpdate(),oe===0&&I===0){if(o.get(p)===h&&!de){de=true,t.emit("flow:end",{type:1}),L.resetCounters(),V.clear();let Y=performance.now();S=-1,o.delete(p),t.emit("flow:success",{token:h,duration:(Y-ge).toFixed(2.1)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else {let Y=oe===0&&I>0?3:1;if(t.emit("flow:wait",{type:Y,detail:{nums:x.size,asyncNums:I}}),I>0){let Q=()=>{r===h&&(L.inFlightCount===0?ve(()=>{L.inFlightCount===0?fe():requestAnimationFrame(Q);}):requestAnimationFrame(Q));};requestAnimationFrame(Q);}}}};fe();}}function Ne(d){let{path:e,uid:n,type:t,meta:i,dirtySignal:l,state:o}=d,s=null,r=["path","uid","type","dependOn","nodeBucket"],a={path:e,uid:n,type:t,meta:i,dirtySignal:l,createView:(c={})=>{if(s&&Object.keys(c).length===0)return s;let w=new Proxy(c,{get(h,p){let f=p;return Reflect.has(h,p)?Reflect.get(h,p):f in d.state?d.state[f]:f in d?d[f]:i&&f in i?i[f]:Reflect.get(h,p)},set(h,p,f){let g=p;return g in d.state?(d.state[g]=f,true):Reflect.set(h,p,f)},ownKeys(h){let p=new Set([...Reflect.ownKeys(h),...Object.keys(o||{}),...Object.keys(i||{}),...r]);return Array.from(p)},getOwnPropertyDescriptor(h,p){let f=p;return Reflect.has(h,p)||o&&f in o||i&&f in i||r.includes(f)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(h,p)}});return s=w,w}};return "children"in d?{...a,children:d.children}:{...a,state:d.state,nodeBucket:d.nodeBucket,notifyKeys:d.notifyKeys,dependOn:d.dependOn,calledBy:0,get proxy(){return s}}}var De=(d,e,n,t,i)=>{let l=d.useEntangleStep,o=new Map,s=new Map,r=new Set,u=t,c=0;return {useEntangle:f=>{let{observer:g,target:x,triggerKeys:O,emit:G,filter:R}=f;if(!O||O.length===0){i.emit("entangle:warn",{path:g,type:"no_keys"});return}o.has(g)||o.set(g,new Map);let V=o.get(g);O.forEach(b=>{V.has(b)||V.set(b,[]),V.get(b).push({target:x,emit:G,filter:R,count:0});});},updateEntangleLevel:()=>{let f=n();r.clear();for(let g of o.keys()){let x=f.get(g)||0;r.add(x);}},Turnstile:{volatileLevels:r,get inFlightCount(){return c},get hasPendingGhosts(){for(let f of s.values())if(f.length>0)return true;return false},onSettle:f=>{},hasObserver:f=>o.has(f),getTriggerKeys:f=>{let g=o.get(f);return g?Array.from(g.keys()):[]},receiveGhosts:(f,g=[])=>{let x=f.path,O=[],G=o.get(x);if(!G||g.length===0)return O;let R=new Set;g.forEach(N=>{let y=G.get(N);y&&y.forEach(M=>R.add(M));});let V=N=>N instanceof Promise||N!==null&&typeof N=="object"&&typeof N.then=="function",b=N=>{let y=N.target;if(N.count>=l){i.emit("entangle:blocked",{observer:x,target:y,count:N.count});return}let M=u(y);if(N.filter&&!N.filter(f.proxy,M.proxy))return;let S=N.emit(f.proxy,M.proxy),P=T=>{if(T&&T.key!==void 0){if(T.delta===void 0&&T.value!==void 0&&T.value===M.state[T.key])return;N.count++,s.has(y)||s.set(y,[]),s.get(y).push({weight:1,...T}),O.push(y);}};if(V(S))return c++,(async()=>{try{let T=await S;P(T);}catch(T){i.emit("node:error",{path:x,error:T}),i.onError({path:x,error:T});}finally{c--;}})();P(S);},L=Array.from(R),k=0,ee=false,K=null;for(;k<L.length;k++){if(e.shouldYield()){ee=true;break}let N=b(L[k]);if(N){K=N,ee=true,k++;break}}return ee?(async()=>{K&&await K,e.shouldYield()&&await e.yieldToMain();let N=50;for(;k<L.length;k+=N){let y=L.slice(k,k+N),M=[];for(let S of y){let P=b(S);P&&M.push(P);}if(M.length>0){let S=M.map(async P=>{await P,e.shouldYield()&&await e.yieldToMain();});await Promise.all(S);}e.shouldYield()&&await e.yieldToMain();}return Array.from(new Set(O))})():Array.from(new Set(O))},resolveGhosts:f=>{let g=f.path,x=s.get(g);if(!x||x.length===0)return [];let O=[],G=new Map;for(let R of x)G.has(R.key)||G.set(R.key,[]),G.get(R.key).push(R);for(let[R,V]of G.entries()){let b=f.state[R],L=V.filter(k=>k.patch!==void 0);if(L.length>0)b=L.reduce((k,ee)=>ee.patch(k),b);else {let k=V.filter(K=>K.delta!==void 0),ee=V.filter(K=>K.value!==void 0);ee.length>0&&(b=ee.reduce((N,y)=>(y.weight??1)>=(N.weight??1)?y:N).value),k.length>0&&(b=k.reduce((K,N)=>{switch(N.op||"add"){case "add":return (typeof K=="number"?K:0)+N.delta;case "remove":return Array.isArray(K)?K.filter(M=>M!==N.delta):K;case "intersect":return Array.isArray(K)?K.filter(M=>N.delta.includes(M)):N.delta;case "union":{let M=Array.isArray(K)?K:[],S=Array.isArray(N.delta)?N.delta:[N.delta];return [...new Set([...M,...S])]}case "merge":{let M=typeof K=="object"&&K!==null&&!Array.isArray(K)?K:{},S=typeof N.delta=="object"&&N.delta!==null&&!Array.isArray(N.delta)?N.delta:{};return {...M,...S}}default:return K}},b));}Object.is(f.state[R],b)||(f.state[R]=b,O.push(R));}return s.set(g,[]),O.length>0?O:[]},resetCounters:()=>{for(let f of o.values())for(let g of f.values())g.forEach(x=>x.count=0);}}}};function Ve(d,e,n,t,i){let l=Be(),o=0,s=new Map,r=[],u=[],a=false,c=new Set,h=async()=>{let y=Array.from(c);if(c.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let M of y){let S=b(M);i.signalTrigger(S.dirtySignal);}else "emit"in i&&i.emit(y);},p=()=>{a||(a=true,requestAnimationFrame(()=>{try{for(;c.size>0;)h();}finally{a=false;}}));},{useEntangle:f,updateEntangleLevel:g,Turnstile:x}=De({useEntangleStep:d.useEntangleStep},l,e.GetPathToLevelMap,b,{emit:t.emit,onError:t.callOnError}),O=Ue({useGreedy:d.useGreedy},e,{GetNodeByPath:b,Turnstile:x},t,{requestUpdate:p,flushPathSet:c},l),G=y=>{throw new Error(`[MeshFlow] Duplicate Path: ${y}`)},R=y=>{s.has(y.path)&&G(String(y.path));let M=++o,S={path:y.path,getNode:A=>b(A)},P=(A,z="value")=>{let q=A({...S}),Z=b(y.path);if(n.createHistoryAction&&n.pushIntoHistory){let re=n.createHistoryAction([{path:y.path,value:Z.state[z]},{path:y.path,value:q}],ce=>{let pe=b(ce.path);pe.state[z]=ce.value,k(ce.path);});n.pushIntoHistory(re);}Z.state[z]=q,k(y.path);},T=Ne({uid:M,type:y.type,path:y.path,state:y.state,meta:y.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:y.notifyKeys,dependOn:P});return s.set(T.path,M),r[M]=T,T},V=y=>{s.has(y.path)&&G(String(y.path));let M=++o,S=Ne({uid:M,type:y.type,path:y.path,state:{},meta:y,nodeBucket:{},children:y.children});return s.set(S.path,M),u[M]=S,S};function b(y){let M=s.get(y),S=r[M];if(!S)throw Error("wrong ID");return S}function L(y){let M=s.get(y);return u[M]}let k=y=>{if(!b(y))throw Error("Node undefined");c.add(y),p();let S=e.GetNextDependency(y);ee(S,y);};function ee(y,M){O(M,y);}return {registerNode:R,registerGroupNode:V,GetNodeByPath:b,GetGroupByPath:L,notify:k,notifyAll:async()=>{Promise.resolve().then(async()=>{let y=e.GetDependencyOrder();if(!y||y.length===0)return;let M=y[0];try{O(null,M);}catch(S){throw t.callOnError(S),S}finally{p();}});},batchNotify:y=>{if(!y||y.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let S=n.createHistoryAction([y.map(P=>({path:P.path,key:P.key,value:b(P.path).state[P.key]})),y.map(P=>({path:P.path,key:P.key,value:P.value}))],P=>{let T=new Set;P.forEach(A=>{let z=b(A.path);z.state[A.key]=A.value,c.add(A.path),T.add(A.path);}),p(),T.size>0&&O(null,Array.from(T));});n.pushIntoHistory(S);}let M=new Set;y.forEach(S=>{let P=b(S.path);P.state[S.key]=S.value,c.add(S.path),M.add(S.path);}),p(),M.size>0&&O(null,Array.from(M));},useEntangle:f,updateEntangleLevel:g,UITrigger:i,UidToNodeMap:r}}function Le(d,e){let n=false,t=false,i=false,l=false,o=new Map,s=new Map,r=new Map,u=new Map,a=[],c=new Map,{GetNextDependency:h,GetPrevDependency:p,GetAllPrevDependency:f,GetAllNextDependency:g,rebuildDirectDependencyMaps:x}=Oe(()=>o,()=>s,()=>u,()=>r),O={},G={};if(e.modules.useHistory){let E=e.modules.useHistory,U;E.isMeshModuleInited?U=E:U=E();let{Undo:m,Redo:F,PushIntoHistory:H,CreateHistoryAction:J,updateUndoSize:D,updateRedoSize:ae}=U();O.pushIntoHistory=H,O.createHistoryAction=J,G={Undo:m,Redo:F,updateUndoSize:D,updateRedoSize:ae};}let R=!!e.modules.useMeshRenderGate,V={};if(R){let E=e.modules.useMeshRenderGate.isMeshModuleInited,U=e.modules.useMeshRenderGate;V=(E?U:U())(()=>re);}let{onError:b,callOnError:L}=Ke(),{onSuccess:k,callOnSuccess:ee}=Ie(),{onStart:K,callOnStart:N}=ke(),{emit:y,usePlugin:M,destroyPlugin:S}=Ce(),{SetTrace:P,useTrace:T}=Ge(),A=T();M(A);let z=R?{...V}:{...e.UITrigger},q=Ve({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>a,GetAllNextDependency:g,GetNextDependency:h,GetPrevDependency:p,GetAllPrevDependency:f,GetPathToLevelMap:()=>c},O,{callOnError:L,callOnSuccess:ee,callOnStart:N,emit:y},z),{GetGroupByPath:Z,GetNodeByPath:re,notifyAll:ce,useEntangle:pe,updateEntangleLevel:Pe}=q;R&&V.init();let ge={};if(e.modules.useInternalForm){let{uiSchema:E,GetFormData:U}=e.modules.useInternalForm(q,d);ge={uiSchema:E,GetFormData:U};}let de={};if(e.modules.useSchemaValidators){let{SetValidators:E}=e.modules.useSchemaValidators(re);de={SetValidators:E};}let{SetRule:me,SetRules:Me}=be(re,o,s),{SetStrategy:fe}=Ae(re),C=Fe(o),v=()=>{let E=C();a=E.steps,c=E.levelMap,ne();},ne=()=>{i&&(Pe(),i=false);},j=()=>{l||(l=true,Promise.resolve().then(ne).finally(()=>{l=false;}));},se=()=>{t||(t=true,Promise.resolve().then(()=>{if(v(),n){let{directNextMap:E,directPrevMap:U}=x(a.flat());r=E,u=U;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(E,U,m,F)=>{me(E,U,m,F),n=true,se();},SetRules:(E,U,m,F)=>{Me(E,U,m,F),n=true,se();},SetStrategy:fe,useEntangle:E=>{pe(E),i=true,j();},SetTrace:P,usePlugin:M,SetValue:(E,U,m)=>{ne(),re(E).dependOn(()=>m,U);},GetValue:(E,U="value")=>re(E).proxy[U],SetValues:E=>{ne(),q.batchNotify(E);},GetGroupByPath:Z,notifyAll:async()=>{v(),await ce();},GetAllDependency:()=>o,GetDependencyOrder:()=>a,historyExports:G,formExports:ge,validatorExports:de,batchRenderExport:V,hasRenderGate:()=>R,onError:b,onSuccess:k,onStart:K,scheduler:q,destroyPlugin:S}}var he=new Map,_e=(d,e,n)=>{try{if(he.has(d))throw Error("engineID repeated");let t=Le(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules??{},plugins:{}}),{SetRule:i,SetRules:l,SetValues:o,SetStrategy:s,SetValue:r,GetValue:u,usePlugin:a,useEntangle:c,GetGroupByPath:w,notifyAll:h,SetTrace:p,GetAllDependency:f,GetDependencyOrder:g,historyExports:x,formExports:O,validatorExports:G,batchRenderExport:R,hasRenderGate:V,onError:b,onSuccess:L,onStart:k,scheduler:ee,destroyPlugin:K}=t,N={config:{SetRule:i,SetRules:l,SetStrategy:s,notifyAll:h,SetTrace:p,usePlugin:a,hasRenderGate:V,useEntangle:c},data:{SetValue:r,GetValue:u,SetValues:o,GetGroupByPath:w},dependency:{GetAllDependency:f,GetDependencyOrder:g},hooks:{onError:b,onSuccess:L,onStart:k}},y=(P,T,A)=>{!T||typeof T!="object"||Object.keys(T).forEach(z=>{let q=T[z];if(typeof q=="object"&&q!==null)P[z]=P[z]||{},y(P[z],q,A);else if(typeof q=="function"){let Z=z;if(Z==="useMeshRenderGate")Z="render";else if(Z.startsWith("use")){let re=Z.slice(3);Z=re.charAt(0).toLowerCase()+re.slice(1);}z==="useHistory"&&A.exports.history&&Object.keys(A.exports.history).length>0?P[Z]=A.exports.history:z==="useInternalForm"&&A.exports.form&&Object.keys(A.exports.form).length>0?P[Z]=A.exports.form:z==="useSchemaValidators"&&A.exports.validator&&Object.keys(A.exports.validator).length>0?P[Z]=A.exports.validator:z==="useMeshRenderGate"&&A.exports.render?P[Z]=A.exports.render:P[Z]=q(A.scheduler,A.Schema);}});},M={...N,destroyPlugin:K,modules:{}},S=n.modules;return S&&y(M.modules,S,{scheduler:ee,Schema:e,exports:{history:x,form:O,validator:G,render:R}}),he.set(d,M),M}catch(t){throw Error(t)}},It=()=>(d,e,n)=>He(d,e,n),Ct=d=>{let e=he.get(d);if(!e)throw Error(`[MeshFlow] Engine ID "${String(d)}" not found. Ensure it is initialized with useMeshFlow.`);return e},kt=d=>{he.get(d).destroyPlugin(),he.delete(d);},He=_e;exports.DefaultStrategy=we;exports.TriggerCause=xe;exports.deleteEngine=kt;exports.useEngine=Ct;exports.useEngineManager=_e;exports.useMeshFlow=He;exports.useMeshFlowDefiner=It;exports.useScheduler=Ve;
1
+ 'use strict';var we=(S=>(S[S.FlowStart=0]="FlowStart",S[S.FlowSuccess=1]="FlowSuccess",S[S.FlowEnd=2]="FlowEnd",S[S.FlowAbort=3]="FlowAbort",S[S.FlowWait=4]="FlowWait",S[S.FlowFire=5]="FlowFire",S[S.NodeStart=6]="NodeStart",S[S.NodeSuccess=7]="NodeSuccess",S[S.NodeProcessing=8]="NodeProcessing",S[S.NodeError=9]="NodeError",S[S.NodePending=10]="NodePending",S[S.NodeRevive=11]="NodeRevive",S[S.NodeIntercept=12]="NodeIntercept",S[S.NodeRelease=13]="NodeRelease",S[S.NodeStagnate=14]="NodeStagnate",S[S.NodeBucketSuccess=15]="NodeBucketSuccess",S[S.EntangleWarn=16]="EntangleWarn",S[S.EntangleBlocked=17]="EntangleBlocked",S))(we||{}),Fe=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Fe||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{}),De=class{computedRules=[];store={OR:(e,t)=>{let r,u,c=this.computedRules;for(let i=0;i<c.length;i++){let l=c[i],s=l.logic(e);if(s instanceof Promise)return (async()=>{let M=await s;if(l.entityId==="__base__"?u=M:M&&(r=M),typeof r>"u")for(let n=i+1;n<c.length;n++){let N=c[n],f=N.logic(e),g=f instanceof Promise?await f:f;if(N.entityId==="__base__"){u=g;continue}if(g){r=N.value;break}}return typeof r>"u"&&(r=u),{res:r,version:t}})();let h=s;if(l.entityId==="__base__"){u=h;continue}if(h){r=l.value;break}}return typeof r>"u"&&(r=u),{res:r,version:t}},PRIORITY:(e,t)=>{let r,u=this.computedRules;for(let c=0;c<u.length;c++){let l=u[c].logic(e);if(l instanceof Promise)return (async()=>{let s=await l;if(s!==void 0)return {res:s,version:t};for(let h=c+1;h<u.length;h++){let M=u[h].logic(e),n=M instanceof Promise?await M:M;if(n!==void 0)return {res:n,version:t}}return {res:void 0,version:t}})();if(l!==void 0)return {res:l,version:t}}return {res:r,version:t}},MERGE:(e,t)=>{let r,u,c=this.computedRules,i=(s,h)=>s===void 0?h:h===void 0?s:Array.isArray(s)&&Array.isArray(h)?[...h,...s]:typeof s=="object"&&typeof h=="object"?{...h,...s}:s;for(let s=0;s<c.length;s++){let h=c[s],M=h.logic(e);if(M instanceof Promise)return (async()=>{let N=await M,f=(m,P)=>{if(m.entityId==="__base__")u=i(u,P);else if(P){let R=m.value!==void 0?m.value:P;r=i(r,R);}};f(h,N);for(let m=s+1;m<c.length;m++){let P=c[m],R=P.logic(e),S=R instanceof Promise?await R:R;f(P,S);}return {res:i(r,u),version:t}})();let n=M;if(h.entityId==="__base__"){u=i(u,n);continue}if(n){let N=h.value!==void 0?h.value:n;r=i(r,N);}}return {res:i(r,u),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t){return this.CurrentStrategy(e,t)}},Re=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let u=()=>this.rules;this.strategy=new De(u),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,u={...e,entityId:r};for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(u);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let i=this.rules.get(c);i&&(i.delete(u),i.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r]of e)this.deps.set(t,r);}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,u={...e,entityId:r};if(e)for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(u);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let i=this.rules.get(c);i&&(i.delete(u),i.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true;let i=this.deps.get(e.triggerUid),l=e.getStateByUid(e.triggerUid);if(typeof i=="object"||typeof l=="object")r=false;else {let s=Array.from(this.deps.keys());for(let h of s){let M=this.deps.get(h),n=e.getStateByUid(h);if(M!==n){r=false;break}}}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let u=++this.version,c=this.strategy.evaluate(e,u);if(!(c instanceof Promise)){let{res:i,version:l}=c;return this.finalizeSync(i,l,e,t)}return this.pendingPromise=(async()=>{try{let{res:i,version:l}=await c;return this.finalizeSync(i,l,e,t)}catch(i){throw {path:this.path,error:i}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,u){return u!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((c,i)=>{this.deps.set(i,r.getProxyByUid(i));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var _e=(p,e,t)=>{let u=c=>{let i=t.triggerUids.map(h=>{let M=c.getProxyByUid(h);if(t.triggerKeys.length===0)return M;let n={};return t.triggerKeys.forEach(N=>{n[N]=M[N];}),n}),l=Object.create(null);return Object.defineProperty(l,"triggerTargets",{get:()=>i}),Object.defineProperty(l,"affectedTatget",{get:()=>c.getProxyByUid(p)[e]}),t.logic({slot:l})};return {value:t.value,targetUid:p,triggerUids:t.triggerUids,priority:t.priority??10,logic:u}},He=(p,e,t,r,u,c,i,l)=>{if(!p)throw Error();let s=p,h=(N,f)=>{typeof r[N]>"u"&&(r[N]=[],c[N]=new Set),c[N].add(f),c[N].size>r[N].length&&r[N].push(f),typeof u[f]>"u"&&(u[f]=[],i[f]=new Set),i[f].add(N),i[f].size>u[f].length&&u[f].push(N);};return {SetRule:(N,f,g,m)=>{let P=s(N),R=s(f),S=m.triggerKeys||[],Q=l.get(R.uid)||0,X=l.get(P.uid)||0;Q+=1,X+=1,l.set(R.uid,Q),l.set(P.uid,X);let Y=_e(R.uid,g,{...m,triggerUids:[P.uid],triggerKeys:S}),y=[N].map(V=>{let a=s(V);return [a.uid,a.state.value]});if(h(P.uid,R.uid),typeof R.nodeBucket[g]=="number"){let V=t(R.nodeBucket[g]);V.setRule(Y,y),m.effect&&V.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]});}else {let V=R.meta[g],a=new Re(V,g,f);a.setRule(Y,y),m.effect&&a.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]}),R.nodeBucket[g]=e(a);}R.state[g]=R.meta[g];let q=t(R.nodeBucket[g]);m.forceNotify&&q.forceNotify(),m.cacheStrategy=="none"&&q.setUseCache(false);},SetRules:(N,f,g,m)=>{let P=s(f),R=l.get(P.uid)||0;R+=1,l.set(P.uid,R);let S=[];for(let q of N){let V=s(q);S.push(V.uid);let a=l.get(V.uid)||0;a+=1,l.set(V.uid,a),h(V.uid,P.uid);}let Q=m.triggerKeys||[],X=_e(P.uid,g,{...m,triggerUids:S,triggerKeys:Q}),Y=N.map(q=>{let V=s(q);return [V.uid,V.state.value]});if(typeof P.nodeBucket[g]=="number"){let q=t(P.nodeBucket[g]);q.setRules(X,Y),m.effect&&q.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]});}else {let q=P.meta[g],V=new Re(q,g,f);V.setRules(X,Y),m.effect&&V.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]}),P.nodeBucket[g]=e(V);}P.state[g]=P.meta[g];let y=t(P.nodeBucket[g]);m.forceNotify&&y.forceNotify(),m.cacheStrategy=="none"&&y.setUseCache(false);}}};var Ye=(p,e)=>{let t=p||void 0;if(!t)throw Error();return {SetStrategy:(u,c,i)=>{let l=t(u);e(l.nodeBucket[c]).setStrategy(i);}}};function je(){let p=new Map,e=new Map,t=new Set,r=(i,l)=>{p.set(i,l);let s=e.get(i);s&&s(l);};return {SetTrace:(i,l)=>{e.set(i,l);let s=p.get(i)||"idle";return l(s),{cancel:()=>{e.delete(i);}}},useTrace:()=>({apply:l=>{l.on(0,()=>{t.forEach(s=>r(s,"idle")),t.clear(),p.clear();}),l.on(13,({path:s,type:h})=>{(h==1||h==2)&&(t.add(s),r(s,"pending"));}),l.on(10,({path:s})=>{t.add(s),(!p.has(s)||p.get(s)==="idle")&&r(s,"pending");}),l.on(6,({path:s})=>{t.add(s),r(s,"calculating");}),l.on(7,({path:s})=>{r(s,"calculated");}),l.on(12,({path:s,type:h})=>{h==3&&r(s,"calculating"),h==6&&r(s,"idle");}),l.on(14,({path:s})=>{r(s,"pending");}),l.on(9,({path:s})=>r(s,"error"));}})}}function ze(p,e,t,r){return {GetNextDependency:M=>r()[M]||[],GetPrevDependency:M=>t()[M]||[],GetAllPrevDependency:M=>e()[M]||[],GetAllNextDependency:M=>p()[M]||[],rebuildDirectDependencyMaps:M=>{let n=[],N=[],f=p();for(let g of M){let m=f[g]||[];n[g]=m;for(let P=0;P<m.length;P++){let R=m[P];typeof N[R]>"u"&&(N[R]=[]),N[R].push(g);}}return {directNextMap:n,directPrevMap:N}}}}function qe(p,e){let t=u=>{let c=[],i=[],l=new Map,s=u.size,h=0,M=0;for(let[n,N]of u)N===0&&i.push(n);if(i.length===0&&s>0)throw Error("Circular dependency detected");for(;i.length>0;){c.push([...i]);let n=[];for(let N of i){h++,l.set(N,M);let f=p[N];if(f)for(let g of f){let m=u.get(g)-1;u.set(g,m),m===0&&n.push(g);}}i=n,M++;}if(h<s)throw Error("Circular dependency detected");return {steps:c,levelMap:l}};return ()=>{let u=new Map;for(let c of e.keys()){let i=p[c]||[];u.has(c)||u.set(c,0);for(let l of i){let s=u.get(l)||0;u.set(l,++s);}}return t(u)}}var Ne=()=>{let p=[];return {on:e=>(p.push(e),()=>{let t=p.indexOf(e);t>-1&&p.splice(t,1);}),call:e=>p.forEach(t=>{t(e);})}};function Qe(){let{on:p,call:e}=Ne();return {onError:p,callOnError:e}}function $e(){let{on:p,call:e}=Ne();return {onSuccess:p,callOnSuccess:e}}var Xe=()=>{let p=new Set,e=new Map,t=new Set,r=(l,s)=>{e.get(l)?.forEach(h=>h(s));},u=(l,s)=>(e.has(l)||e.set(l,new Set),e.get(l).add(s),()=>e.get(l)?.delete(s));return {usePlugin:l=>{let s=new Set,h=(n,N)=>{let f=u(n,N);return s.add(f),f};l.apply({on:h}),p.add(l);let M=()=>{s.forEach(n=>n()),s.clear(),p.delete(l),t.delete(M);};return t.add(M),M},emit:r,destroyPlugin:()=>{t.forEach(l=>l()),t.clear(),e.clear(),p.clear();}}};function Ze(){let{on:p,call:e}=Ne();return {onStart:p,callOnStart:e}}var Je=(p={frameQuota:12})=>{let e=performance.now(),t=0,r=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>p.frameQuota||u())},async yieldToMain(){return new Promise(c=>{Be(()=>{e=performance.now(),t=0,r&&(r=false),c();});})}}},Be=p=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=p,t.postMessage(null);};function et(p,e,t,r,u,c){let i=new Map,l=p.useGreedy,s=null,h=()=>{i.clear();},M={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:M};return {TaskRunner:async(f,g)=>{let P=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";i.set(R,P),s=P;let S=false;c.reset();let Q=t.GetMaxUid()+3,X=new Array(Q).fill(0),Y=0,y=new Uint8Array(Q),q=new Int32Array(Q),V=new Int32Array(Q),a=new Int32Array(Q*2),T=0,A=0,k=new Int32Array(Q*2),_=0,O=0,D=new Int32Array(Q*2),b=0,U=0;g.forEach(E=>{X[E]=1,e.GetAllNextDependency(E).forEach(se=>{X[se]=1;});});let K=new Array(Q).fill(null),v=[],o=t.Turnstile,d=new Array(Q).fill(null).map(()=>[]),B=new Array(Q).fill(null).map(()=>[]),H=o.volatileLevels.size>0,ne=H?o.hasObserver:E=>false,le=H?o.receiveGhosts:()=>[],ue=H?o.resolveGhosts:()=>[],Me=H?o.getTriggerKeys:()=>[],Se=o?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),re=0,be=0,ge=E=>{e.GetAllNextDependency(E).forEach(ae=>{let te=ee.get(ae)||0;te>be&&(be=te);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),u.flushPathSet.add(f));let ve=typeof f=="number"?[f]:g;c.shouldYield()&&(u.requestUpdate(),await c.yieldToMain());let Ie=ve.map(async E=>{if(ne(E)){let se=t.GetNodeByUid(E),ae=Me(E);if(ae.length>0){let te=le(se,ae);return te instanceof Promise&&(te=await te),{seed:E,hitTargets:te}}}return {seed:E,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:E,hitTargets:se})=>{if(se&&se.length>0){v.push(...se);let ae=ee.get(E)||0;ye=Math.max(ye,ae);}}),(v.length>0||ve.length>1)&&(u.requestUpdate(),await c.yieldToMain(),i.get(R)!==P))return;let Te=v.length>0;g.forEach(E=>{if(!Ae.has(E))if(Te){let se=ee.get(E)??0;V[E]=se,y[E]&4||(y[E]|=4,D[b++]=E,U++);let ae=t.GetPathByUid(E);n.path=ae,n.type=2,r.emit(14,n);}else y[E]&1||(y[E]|=1,a[T++]=E,A++),ge(E);}),typeof f=="number"?re=ee.get(f)??0:re=Math.min(...g.map(E=>ee.get(E)??0));let Ce=performance.now(),Ee=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=Ee,n.token=P,r.emit(0,n),r.callOnStart({path:Ee});let ke=false,Ke=30,Le=(E,se)=>{let ae=false,te=false,L=false,x=t.GetNodeByUid(E),$=t.GetPathByUid(E),j=x.calledBy,I=d[E];I.length=0;let C=B[E];C.length=0;let G=false;if(x.calledBy===1){G=true,ae=true,u.flushPathSet.add(E);let w=K[E];w&&(I.push(...w),K[E]=null);}let F=(w,Z)=>{let W=ee.get(w)??0,oe=t.GetNodeByUid(w),J=t.GetPathByUid(w),pe=(j===1||j===2)&&W<=ye;pe&&y[w]&16&&(y[w]&=-17,n.path=J,n.triggerPath=$,r.emit(11,n));let ie=0;if(!(y[w]&49)){if(y[w]&2)ie=q[w]-1;else {if(W>re&&O>Ke){V[w]=W,y[w]&4||(y[w]|=4,D[b++]=w,U++),n.path=J,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(w),z=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>re&&z++;}ie=z;}if(ie<=0){let me=(y[w]&1)!==0,z=(y[w]&32)!==0;if(me||z){n.path=J,n.type=z?3:3.1,r.emit(12,n);return}y[w]&2&&(y[w]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[w]&1||(y[w]|=1,a[T++]=w,A++),n.path=J,n.type=Z,M.path=$,r.emit(13,n);}else q[w]=ie,y[w]&2||(y[w]|=2,k[_++]=w,O++);}},de=(w=[])=>{if(i.get(R)!==P)return;if(w.length){let W={},oe=x.proxy;for(let J of w){let pe=(J.args||[]).reduce((ie,me)=>(ie[me]=oe[me],ie),{});try{let ie=J.fn(pe);ie&&typeof ie=="object"&&Object.assign(W,ie);}catch(ie){}}for(let J in W)if(J in x.state)Object.is(x.state[J],W[J])||(x.state[J]=W[J],I.push(J),ae=true,(x.notifyKeys.size===0||x.notifyKeys.has(J))&&(te=true));else throw {error:`wrong effect in ${String(x.path)}`}}ae&&u.flushPathSet.add(E);let Z=(W=[])=>{if(i.get(R)!==P)return;W&&W.length>0&&(v.push(...W),ye=Math.max(ye,ee.get(E)||0)),I.length=0,n.path=$,n.calledBy=x.calledBy,r.emit(7,n),y[E]|=16;let oe=e.GetNextDependency(E);(te||L)&&(ge(E),e.GetAllNextDependency(E).forEach(he=>{X[he]=1;}));let J=t.GetNodeByUid(E),pe=ee.get(E)??0,ie=Se.has(pe)||v.length>0;for(let z of oe){let he=ee.get(z)??0,Pe=t.GetPathByUid(z);if(ie&&he>=pe){V[z]=he,y[z]&4||(y[z]|=4,D[b++]=z,U++),n.path=Pe,n.type=2,r.emit(14,n);continue}if(y[z]&16){n.path=Pe,n.type=2,r.emit(12,n);continue}if(y[z]&32||(y[z]&1)!==0){n.path=Pe,n.type=y[z]&32?3:3.1,r.emit(12,n);continue}if(te||L)F(z,1);else if(y[z]&2)F(z,2);else {let st=ee.get(z);V[z]=st,y[z]&4||(y[z]|=4,D[b++]=z,U++,n.path=Pe,n.type=1,r.emit(14,n));}}y[E]&32&&(y[E]&=-33,Y--),J.calledBy=0,(()=>{if(!S){S=true;let z=Y,he=A,Pe=O;n.path=$,n.type=1,M.active=z,M.pending=he,M.blocked=Pe,r.emit(5,n),Ge();}})();};if(ne(E)&&I.length>0){let W=le(x,I);W instanceof Promise?W.then(Z).catch(ce):Z(W);}else Z([]);},ce=w=>{n.path=$,n.error=w,r.emit(9,n);let Z=Symbol("abort");i.set(R,Z),T=0,A=0,_=0,O=0,b=0,U=0,y.fill(0),Y=0,K.fill(null),r.callOnError(w);},fe=(w,Z)=>{w!==x.state[Z]&&(x.state[Z]=w,ae=true,I.push(String(Z)),n.path=$,n.key=Z,n.value=w,n.calledBy=x.calledBy,r.emit(15,n),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&(te=true)),t.GetBucket(x.nodeBucket[Z]).isForceNotify()&&(L=true),(te||L)&&ge(E);};n.path=$,n.calledBy=x.calledBy,r.emit(6,n);try{let w=[];for(let Z in x.nodeBucket){let W=t.GetBucket(x.nodeBucket[Z]);if(w.push(...W.getSideEffect()),G){r.emit(15,{path:$,key:String(Z),value:x.state[Z],calledBy:x.calledBy}),W.isForceNotify()&&(L=!0),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&ge(E);continue}let oe=W.evaluate({affectKey:Z,triggerUid:se,getProxyByUid:J=>t.GetNodeByUid(J).proxy,getStateByUid:J=>t.GetNodeByUid(J).state,GetToken:()=>P});if(oe instanceof Promise){let J=oe.then(pe=>{i.get(R)===P&&fe(pe,Z);});C.push(J);}else fe(oe,Z);}if(C.length>0)return Promise.all(C).then(()=>{de(w);}).catch(ce);de(w);return}catch(w){ce(w);}},Ge=async()=>{if(i.get(R)!==P){S=false;return}S=true;let E=c.getIsFirstFrame(),se=0,ae=()=>30,te=0,L=ae();try{for(;i.get(R)===P;){let x=te>=L,$=c.shouldYield();if(x||$){if(te>0&&(se++,(E||se%2===0)&&u.requestUpdate()),await c.yieldToMain(),i.get(R)!==P)break;te=0,E=c.getIsFirstFrame();}if(A>0&&Y<40){let j=T,I=0;for(let C=0;C<j;C++){let G=a[C];if((y[G]&1)===0)continue;if(Y>=40||te>=L||c.shouldYield()){for(let W=C;W<T;W++){let oe=a[W];y[oe]&1&&(a[I++]=oe);}T=I,A=I;break}let F=t.GetNodeByUid(G),de=t.GetPathByUid(G),ce=ee.get(G)??0,fe=e.GetPrevDependency(G),w=fe.length>1;if((!l||w)&&ce>re){y[G]&=-2,A--;let W=fe.filter(oe=>X[oe]===1&&(y[oe]&16)===0).length;q[G]=W||0,y[G]&2||(y[G]|=2,k[_++]=G,O++),n.path=de,n.type=W>0?4:5,M.targetLevel=ce,M.currentLevel=re,M.pendingParentsCount=W,r.emit(12,n);continue}y[G]&=-2,A--,(y[G]&32)===0&&(y[G]|=32,Y++),n.path=de,n.calledBy=F.calledBy,r.emit(8,n),Le(G,f),te++;}if(T>j){for(let C=j;C<T;C++){let G=a[C];y[G]&1&&(a[I++]=G);}T=I,A=T;}else T=I;if(A>0&&Y<40)continue}if(te<L&&l&&O>0&&Y<40){let j=!1,I=0,C=0;for(let G=0;G<_;G++){let F=k[G];if((y[F]&2)===0)continue;if(q[F]<=0&&I<L){let ce=ee.get(F)??0,fe=e.GetPrevDependency(F);if(ce<=re||fe.length<=1){y[F]&=-3,O--,y[F]&1||(y[F]|=1,a[T++]=F,A++),I++,j=!0;let w=t.GetPathByUid(F);n.path=w,n.type=4,r.emit(13,n);continue}}k[C++]=F;}if(_=C,I>0)continue;if(j){if(c.shouldYield()&&(await c.yieldToMain(),i.get(R)!==P))break;continue}}if(Y===0&&A===0){if(v.length>0){let I=!1,C=re,G=Array.from(new Set(v));v.length=0;for(let F of G){let de=t.GetNodeByUid(F),ce=ue(de);if(ce&&ce.length>0){I=!0,de.calledBy=1,K[F]=ce,y[F]&=-17,y[F]&2&&(y[F]&=-3,O--),y[F]&1||(y[F]|=1,a[T++]=F,A++);let fe=ee.get(de.uid)??0;fe<C&&(C=fe),ge(de.uid),u.flushPathSet.add(de.uid);}}if(I){if(C<re&&(re=C),u.requestUpdate(),c.shouldYield()&&(await c.yieldToMain(),i.get(R)!==P))break;continue}}let j=1/0;for(let I=0;I<b;I++){let C=D[I];if(y[C]&4){let G=V[C];G<j&&(j=G);}}for(let I=0;I<_;I++){let C=k[I];if(y[C]&2){let G=ee.get(C)??0;G>re&&G<j&&(j=G);}}if(j!==1/0&&j<=be){re=j;let I=0;for(let G=0;G<b;G++){let F=D[G];y[F]&4&&(V[F]===j?(y[F]&=-5,U--,y[F]&1||(y[F]|=1,a[T++]=F,A++)):D[I++]=F);}b=I;let C=0;for(let G=0;G<_;G++){let F=k[G];if(y[F]&2)if((ee.get(F)??0)===j){y[F]&=-3,O--,y[F]&1||(y[F]|=1,a[T++]=F,A++);let ce=t.GetPathByUid(F);n.path=ce,n.type=3,M.level=j,r.emit(13,n);}else k[C++]=F;}_=C;continue}else {for(let I=0;I<b;I++){let C=D[I];if(y[C]&4){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}b=0,U=0;for(let I=0;I<_;I++){let C=k[I];if(y[C]&2){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}_=0,O=0;break}}A>0&&Y>=40&&(n.type=2,r.emit(4,n));break}}finally{S=false;let x=Y+O+A,$=o.inFlightCount||0;if(!(s===P)){n.token=P,r.emit(3,n);return}if(u.requestUpdate(),x===0&&$===0){if(i.get(R)===P&&!ke){ke=true,n.type=1,r.emit(2,n),o.resetCounters(),K.fill(null);let I=performance.now();ye=-1,i.delete(R),n.token=P,n.duration=(I-Ce).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=x===0&&$>0?3:1;if(n.type=I,M.nums=Y,M.asyncNums=$,r.emit(4,n),$>0){let C=()=>{s===P&&(o.inFlightCount===0?Be(()=>{o.inFlightCount===0?Ge():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};Ge();},CancelTask:h}}function Ue(p){let{path:e,uid:t,type:r,meta:u,dirtySignal:c,state:i}=p,l=null,s=["path","uid","type","dependOn","nodeBucket"],M={path:e,uid:t,type:r,meta:u,dirtySignal:c,createView:(n={})=>{if(l&&Object.keys(n).length===0)return l;let N=new Proxy(n,{get(f,g){let m=g;return Reflect.has(f,g)?Reflect.get(f,g):m in p.state?p.state[m]:m in p?p[m]:u&&m in u?u[m]:Reflect.get(f,g)},set(f,g,m){return false},ownKeys(f){let g=new Set([...Reflect.ownKeys(f),...Object.keys(i||{}),...Object.keys(u||{}),...s]);return Array.from(g)},getOwnPropertyDescriptor(f,g){let m=g;return Reflect.has(f,g)||i&&m in i||u&&m in u||s.includes(m)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,g)}});return l=N,N}};return "children"in p?{...M,children:p.children}:{...M,state:p.state,nodeBucket:p.nodeBucket,notifyKeys:p.notifyKeys,dependOn:p.dependOn,calledBy:0,get proxy(){return l}}}var tt=(p,e,t,r,u,c,i)=>{let l=p.useEntangleStep,s=[],h=[],M=new Set,n=r,g=t,m=0,P=0,R=100,S=()=>{let a={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return a.propose={set:(T,A,k=1)=>{A!==a.impactNode.state[T]&&(a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,value:A,weight:k}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true));},update:(T,A,k="add")=>{a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,delta:A,op:k,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);},patch:(T,A)=>{a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,patch:A,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);}},a},Q=Array.from({length:R},S),X=R-1,Y=(a,T,A)=>{let k=T.path,_=a.impact;if(a.count>=l){i.emit("entangle:blocked",{observer:k,target:_,count:a.count});return}let O=n(_),D=a.isProxy?T.proxy:T,b=a.isProxy?O.proxy:O;if(a.filter&&!a.filter(D,b))return;let U,K=true;X<0?(U=S(),K=false):U=Q[X--],U.isDirty=false,U.link=a,U.impactNode=O,U.impactUid=O.uid,U.hitTargetUids=A;let v=a.emit(D,b,U.propose);if(v instanceof Promise||v&&typeof v.then=="function")return m++,(async()=>{try{await v;}catch(o){i.emit("node:error",{path:k,error:o}),i.onError({path:k,error:o});}finally{m--,K&&(Q[++X]=U);}})();K&&(Q[++X]=U);};return {useEntangle:a=>{let{cause:T,impact:A,via:k,emit:_,filter:O,isProxy:D}=a;if(!k||k.length===0){i.emit("entangle:warn",{path:T,type:"no_keys"});return}let U=n(T).uid;s[U]||(s[U]=new Map);let K=s[U];for(let v=0;v<k.length;v++){let o=k[v];K.has(o)||K.set(o,[]),K.get(o).push({impact:A,emit:_,filter:O,count:0,isProxy:!!D});}},updateEntangleLevel:()=>{let a=g();M.clear();for(let T=0;T<s.length;T++)if(s[T]!==void 0){let A=a.get(T)||0;M.add(A);}},Turnstile:{volatileLevels:M,get inFlightCount(){return m},get hasPendingGhosts(){return P>0},hasObserver:a=>s[a]!==void 0,getTriggerKeys:a=>{let T=s[a];return T?Array.from(T.keys()):[]},receiveGhosts:(a,T=[])=>{let A=a.uid,k=[],_=s[A];if(!_||T.length===0)return k;let O=[];for(let v=0;v<T.length;v++){let o=_.get(T[v]);if(o)for(let d=0;d<o.length;d++)O.push(o[d]);}let D=0,b=false,U=null;for(;D<O.length;D++){if(e.shouldYield()){b=true;break}let v=Y(O[D],a,k);if(v){U=v,b=true,D++;break}}let K=()=>{if(k.length<=1)return k;let v=[],o=Object.create(null);for(let d=0;d<k.length;d++){let B=k[d];o[B]||(o[B]=true,v.push(B));}return v};return b?(async()=>{for(U&&await U,e.shouldYield()&&await e.yieldToMain();D<O.length;){let v=[],o=Math.min(D+R,O.length);for(;D<o;D++){let d=Y(O[D],a,k);d&&v.push(d);}v.length>0&&await Promise.all(v.map(async d=>{await d,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return K()})():K()},resolveGhosts:a=>{let T=a.uid,A=h[T];if(!A||A.length===0)return [];let k=[],_=Object.create(null);for(let O=0;O<A.length;O++){let D=A[O];_[D.key]||(_[D.key]=[]),_[D.key].push(D);}for(let O in _){let D=_[O],b=a.state[O],U,K=-1/0,v=false;for(let o=0;o<D.length;o++){let d=D[o];if(d.patch!==void 0&&(b=d.patch(b)),d.value!==void 0){let B=d.weight??1;B>=K&&(K=B,U=d.value,v=true);}}v&&(b=U);for(let o=0;o<D.length;o++){let d=D[o];if(d.delta!==void 0)switch(d.op||"add"){case "add":b=(typeof b=="number"?b:0)+d.delta;break;case "remove":b=Array.isArray(b)?b.filter(H=>H!==d.delta):b;break;case "intersect":b=Array.isArray(b)?b.filter(H=>d.delta.includes(H)):d.delta;break;case "union":{let H=Array.isArray(b)?b:[],ne=Array.isArray(d.delta)?d.delta:[d.delta];b=[...new Set([...H,...ne])];break}case "merge":{let H=typeof b=="object"&&b!==null&&!Array.isArray(b)?b:{},ne=typeof d.delta=="object"&&d.delta!==null&&!Array.isArray(d.delta)?d.delta:{};b={...H,...ne};break}}}Object.is(a.state[O],b)||(a.state[O]=b,k.push(O));}return h[T]=[],P--,k.length>0?k:[]},resetCounters:()=>{for(let a=0;a<s.length;a++){let T=s[a];if(T)for(let A of T.values())for(let k=0;k<A.length;k++)A[k].count=0;}}}}};function nt(p,e,t,r,u){let c=Je(),i=0,l=new Map,s=[],h=[],M=[],n=[],N=false,f=new Set,m=async()=>{let o=Array.from(f);if(f.clear(),"signalTrigger"in u&&typeof u.signalTrigger=="function")for(let d of o){let B=T(d);u.signalTrigger(B.dirtySignal);}else "emit"in u&&u.emit(o);},P=()=>{N||(N=true,requestAnimationFrame(()=>{try{for(;f.size>0;)m();}finally{N=false;}}));},{useEntangle:R,updateEntangleLevel:S,Turnstile:Q}=tt({useEntangleStep:p.useEntangleStep},c,e.GetUidToLevelMap,a,T,A,{emit:r.emit,onError:r.callOnError}),{TaskRunner:X,CancelTask:Y}=et({useGreedy:p.useGreedy},e,{GetNodeByPath:a,GetNodeByUid:T,GetPathByUid:A,GetBucket:O,GetMaxUid:D,Turnstile:Q},r,{requestUpdate:P,flushPathSet:f},c),y=o=>{throw new Error(`[MeshFlow] Duplicate Path: ${o}`)},q=o=>{l.has(o.path)&&y(String(o.path));let d=++i,B={path:o.path,getNode:le=>a(le)},H=(le,ue="value")=>{let Me=le({...B}),Se=a(o.path);if(t.createHistoryAction&&t.pushIntoHistory){let ye=t.createHistoryAction([{path:o.path,value:Se.state[ue]},{path:o.path,value:Me}],ee=>{let re=a(ee.path);re.state[ue]=ee.value,b(ee.path);});t.pushIntoHistory(ye);}Se.state[ue]=Me,b(o.path);},ne=Ue({uid:d,type:o.type,path:o.path,state:o.state,meta:o.meta,nodeBucket:{},dirtySignal:"signalCreator"in u?u.signalCreator():void 0,notifyKeys:o.notifyKeys,dependOn:H});return l.set(ne.path,d),M[d]=ne.path,s[d]=ne,ne},V=o=>{l.has(o.path)&&y(String(o.path));let d=++i,B=Ue({uid:d,type:o.type,path:o.path,state:{},meta:o,nodeBucket:{},children:o.children});return l.set(B.path,d),h[d]=B,B};function a(o){let d=l.get(o),B=s[d];if(!B)throw Error("Wrong id");return B}function T(o){let d=s[o];if(!d)throw Error("Wrong id");return d}function A(o){return M[o]}function k(o){let d=l.get(o);return h[d]}function _(o){return n.push(o)-1}function O(o){let d=n[o];if(!d)throw Error("Wrong id");return d}function D(){return i}let b=o=>{let d=a(o);if(!d)throw Error("Wrong id");f.add(d.uid),P();let B=e.GetNextDependency(d.uid);U(d.uid,B);};function U(o,d){X(o,d);}return {registerNode:q,registerGroupNode:V,GetNodeByPath:a,GetGroupByPath:k,notify:b,notifyAll:async()=>{Promise.resolve().then(async()=>{let o=e.GetDependencyOrder();if(!o||o.length===0)return;let d=o[0];try{X(null,d);}catch(B){throw r.callOnError(B),B}finally{P();}});},batchNotify:o=>{if(!o||o.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([o.map(H=>({path:H.path,key:H.key,value:a(H.path).state[H.key]})),o.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ne=new Set;H.forEach(le=>{let ue=a(le.path);ue.state[le.key]=le.value,f.add(le.path),ne.add(le.uid);}),P(),ne.size>0&&X(null,Array.from(ne));});t.pushIntoHistory(B);}let d=new Set;o.forEach(B=>{let H=a(B.path);H.state[B.key]=B.value,f.add(H.uid),d.add(H.uid);}),P(),d.size>0&&X(null,Array.from(d));},useEntangle:R,updateEntangleLevel:S,SetBucket:_,GetBucket:O,CancelTask:Y,UITrigger:u,UidToNodeMap:s}}function rt(p,e){let t=false,r=false,u=false,c=false,i=new Map,l=[],s=[],h=[],M=[],n=[],N=[],f=[],g=new Map,{GetNextDependency:P,GetPrevDependency:R,GetAllPrevDependency:S,GetAllNextDependency:Q,rebuildDirectDependencyMaps:X}=ze(()=>l,()=>h,()=>N,()=>n),Y={},y={};if(e.modules.useHistory){let L=e.modules.useHistory,x;L.isMeshModuleInited?x=L:x=L();let{Undo:$,Redo:j,PushIntoHistory:I,CreateHistoryAction:C,updateUndoSize:G,updateRedoSize:F}=x();Y.pushIntoHistory=I,Y.createHistoryAction=C,y={Undo:$,Redo:j,updateUndoSize:G,updateRedoSize:F};}let q=!!e.modules.useMeshRenderGate,V={};if(q){let L=e.modules.useMeshRenderGate.isMeshModuleInited,x=e.modules.useMeshRenderGate;V=(L?x:x())(()=>ue);}let{onError:a,callOnError:T}=Qe(),{onSuccess:A,callOnSuccess:k}=$e(),{onStart:_,callOnStart:O}=Ze(),{emit:D,usePlugin:b,destroyPlugin:U}=Xe(),{SetTrace:K,useTrace:v}=je(),o=v();b(o);let d=q?{...V}:{...e.UITrigger},B=nt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:Q,GetNextDependency:P,GetPrevDependency:R,GetAllPrevDependency:S,GetUidToLevelMap:()=>g},Y,{callOnError:T,callOnSuccess:k,callOnStart:O,emit:D},d),{SetBucket:H,GetBucket:ne,GetGroupByPath:le,GetNodeByPath:ue,notifyAll:Me,useEntangle:Se,updateEntangleLevel:ye,CancelTask:ee}=B;q&&V.init();let re={};if(e.modules.useInternalForm){let{uiSchema:L,GetFormData:x}=e.modules.useInternalForm(B,p);re={uiSchema:L,GetFormData:x};}let be={};if(e.modules.useSchemaValidators){let{SetValidators:L}=e.modules.useSchemaValidators(ue);be={SetValidators:L};}let{SetRule:ge,SetRules:Ae}=He(ue,H,ne,l,h,s,M,i),{SetStrategy:ve}=Ye(ue,ne),Ie=qe(l,i),Oe=()=>{let L=Ie();f=L.steps,g=L.levelMap,Te();},Te=()=>{u&&(ye(),u=false);},Ce=()=>{c||(c=true,Promise.resolve().then(Te).finally(()=>{c=false;}));},Ee=()=>{r||(r=true,Promise.resolve().then(()=>{if(Oe(),t){let{directNextMap:L,directPrevMap:x}=X(f.flat());n=L,N=x;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(L,x,$,j)=>{ge(L,x,$,j),t=true,Ee();},SetRules:(L,x,$,j)=>{Ae(L,x,$,j),t=true,Ee();},SetStrategy:ve,useEntangle:L=>{Se(L),u=true,Ce();},SetTrace:K,usePlugin:b,SetValue:(L,x,$)=>{Te(),ue(L).dependOn(()=>$,x);},GetValue:(L,x="value")=>ue(L).proxy[x],SetValues:L=>{Te(),B.batchNotify(L);},GetGroupByPath:le,notifyAll:async()=>{Oe(),await Me();},GetAllDependency:()=>l,GetDependencyOrder:()=>f,historyExports:y,formExports:re,validatorExports:be,batchRenderExport:V,hasRenderGate:()=>q,onError:a,onSuccess:A,onStart:_,scheduler:B,destroyPlugin:U,CancelTask:ee}}var xe=new Map,at=(p,e,t)=>{try{if(xe.has(p))throw Error("engineID repeated");let r=rt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:u,SetRules:c,SetValues:i,SetStrategy:l,SetValue:s,GetValue:h,usePlugin:M,useEntangle:n,GetGroupByPath:N,notifyAll:f,SetTrace:g,GetAllDependency:m,GetDependencyOrder:P,historyExports:R,formExports:S,validatorExports:Q,batchRenderExport:X,hasRenderGate:Y,onError:y,onSuccess:q,onStart:V,scheduler:a,destroyPlugin:T,CancelTask:A}=r,k={config:{SetRule:u,SetRules:c,SetStrategy:l,notifyAll:f,SetTrace:g,usePlugin:M,hasRenderGate:Y,useEntangle:n},data:{SetValue:s,GetValue:h,SetValues:i,GetGroupByPath:N},dependency:{GetAllDependency:m,GetDependencyOrder:P},hooks:{onError:y,onSuccess:q,onStart:V}},_=(b,U,K)=>{!U||typeof U!="object"||Object.keys(U).forEach(v=>{let o=U[v];if(typeof o=="object"&&o!==null)b[v]=b[v]||{},_(b[v],o,K);else if(typeof o=="function"){let d=v;if(d==="useMeshRenderGate")d="render";else if(d.startsWith("use")){let B=d.slice(3);d=B.charAt(0).toLowerCase()+B.slice(1);}v==="useHistory"&&K.exports.history&&Object.keys(K.exports.history).length>0?b[d]=K.exports.history:v==="useInternalForm"&&K.exports.form&&Object.keys(K.exports.form).length>0?b[d]=K.exports.form:v==="useSchemaValidators"&&K.exports.validator&&Object.keys(K.exports.validator).length>0?b[d]=K.exports.validator:v==="useMeshRenderGate"&&K.exports.render?b[d]=K.exports.render:b[d]=o(K.scheduler,K.Schema);}});},O={...k,destroyPlugin:T,CancelTask:A,modules:{}},D=t.modules;return D&&_(O.modules,D,{scheduler:a,Schema:e,exports:{history:R,form:S,validator:Q,render:X}}),xe.set(p,O),O}catch(r){throw Error(r)}},yn=()=>(p,e,t)=>ot(p,e,t),fn=p=>{let e=xe.get(p);if(!e)throw Error("Engine not found.");return e},pn=p=>{let e=xe.get(p);e.destroyPlugin(),e.CancelTask(),xe.delete(p);},ot=at;exports.DefaultStrategy=Ve;exports.MeshFlowEventsName=we;exports.TriggerCause=Fe;exports.deleteEngine=pn;exports.useEngine=fn;exports.useEngineManager=at;exports.useMeshFlow=ot;exports.useMeshFlowDefiner=yn;exports.useScheduler=nt;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- var we=(t=>(t.OR="OR",t.PRIORITY="PRIORITY",t.MERGE="MERGE",t))(we||{}),Te=class{computedRules=[];store={OR:(e,n)=>{let t,i,l=this.computedRules;for(let o=0;o<l.length;o++){let s=l[o],r=s.logic(e);if(r instanceof Promise)return (async()=>{let a=await r;if(s.entityId==="__base__"?i=a:a&&(t=a),typeof t>"u")for(let c=o+1;c<l.length;c++){let w=l[c],h=w.logic(e),p=h instanceof Promise?await h:h;if(w.entityId==="__base__"){i=p;continue}if(p){t=w.value;break}}return typeof t>"u"&&(t=i),{res:t,version:n}})();let u=r;if(s.entityId==="__base__"){i=u;continue}if(u){t=s.value;break}}return typeof t>"u"&&(t=i),{res:t,version:n}},PRIORITY:(e,n)=>{let t,i=this.computedRules;for(let l=0;l<i.length;l++){let s=i[l].logic(e);if(s instanceof Promise)return (async()=>{let r=await s;if(r!==void 0)return {res:r,version:n};for(let u=l+1;u<i.length;u++){let a=i[u].logic(e),c=a instanceof Promise?await a:a;if(c!==void 0)return {res:c,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,version:n}},MERGE:(e,n)=>{let t,i,l=this.computedRules,o=(r,u)=>r===void 0?u:u===void 0?r:Array.isArray(r)&&Array.isArray(u)?[...u,...r]:typeof r=="object"&&typeof u=="object"?{...u,...r}:r;for(let r=0;r<l.length;r++){let u=l[r],a=u.logic(e);if(a instanceof Promise)return (async()=>{let w=await a,h=(f,g)=>{if(f.entityId==="__base__")i=o(i,g);else if(g){let x=f.value!==void 0?f.value:g;t=o(t,x);}};h(u,w);for(let f=r+1;f<l.length;f++){let g=l[f],x=g.logic(e),O=x instanceof Promise?await x:x;h(g,O);}return {res:o(t,i),version:n}})();let c=a;if(u.entityId==="__base__"){i=o(i,c);continue}if(c){let w=u.value!==void 0?u.value:c;t=o(t,w);}}return {res:o(t,i),version:n}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(n=>Array.from(n)).flat().sort((n,t)=>t.priority-n.priority):this.computedRules=Array.from(e.values()).map(n=>Array.from(n)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},ye=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,n,t){let i=()=>this.rules;this.strategy=new Te(i),this.path=t,this.isValue=n==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let n=new Set;n.add(e),this.rules.set("defaultRules",n);}setRules(e,n){n&&this.updateDeps(n);let t=++this.id,i={...e,entityId:t};for(let l of e.triggerPaths)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerPaths){let o=this.rules.get(l);o&&(o.delete(i),o.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[n,t]of e)this.deps.set(n,t);}setRule(e,n){if(n&&this.updateDeps(n),typeof e.entityId=="string"){this.setDefaultRule(e);return}let t=++this.id,i={...e,entityId:t};if(e)for(let l of e.triggerPaths)this.rules.has(l)||this.rules.set(l,new Set),this.rules.get(l).add(i);return this.strategy.updateComputedRules(),()=>{for(let l of e.triggerPaths){let o=this.rules.get(l);o&&(o.delete(i),o.size===0&&(this.rules.delete(l),this.deps.delete(l)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let n=null;if(e.GetToken&&(n=e.GetToken()),this.pendingPromise&&this.promiseToken!==n&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let t=false;if(typeof e.triggerPath=="string"){t=true;let o=this.deps.get(e.triggerPath),s=e.getStateByPath(e.triggerPath);if(typeof o=="object"||typeof s=="object")t=false;else {let r=Array.from(this.deps.keys());for(let u of r){let a=this.deps.get(u),c=e.getStateByPath(u);if(a!==c){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let i=++this.version,l=this.strategy.evaluate(e,i);if(!(l instanceof Promise)){let{res:o,version:s}=l;return this.finalizeSync(o,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:o,version:s}=await l;return this.finalizeSync(o,s,e,n)}catch(o){throw {path:this.path,error:o}}finally{this.promiseToken===n&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,n,t,i){return i!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((l,o)=>{this.deps.set(o,t.GetRenderSchemaByPath(o));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var Re=(d,e,n)=>{let i=l=>{let o=n.triggerPaths.map(u=>{let a=l.GetRenderSchemaByPath(u),c={};return n.triggerKeys.forEach(w=>{c[w]=a[w];}),c}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>o}),Object.defineProperty(s,"affectedTatget",{get:()=>l.GetRenderSchemaByPath(d)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:d,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:i}},be=(d,e,n)=>{if(!d)throw Error("");let t=d,i=(s,r)=>{e.has(s)||e.set(s,new Set),e.get(s).add(r),n.has(r)||n.set(r,new Set),n.get(r).add(s);};return {SetRule:(s,r,u,a)=>{let c=t(r),w=a.triggerKeys||[];w.length==0&&w.push("value");let h=Re(r,u,{...a,triggerPaths:[s],triggerKeys:w}),p=[s].map(f=>[f,t(f).state.value]);if(i(s,r),c.nodeBucket[u])c.nodeBucket[u].setRule(h,p),a.effect&&c.nodeBucket[u].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]});else {let f=c.meta[u],g=new ye(f,u,r);g.setRule(h,p),a.effect&&g.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]}),c.nodeBucket[u]=g;}c.state[u]=c.meta[u],a.forceNotify&&c.nodeBucket[u].forceNotify(),a.cacheStrategy=="none"&&c.nodeBucket[u].setUseCache(false);},SetRules:(s,r,u,a)=>{let c=t(r);for(let f of s)i(f,r);let w=a.triggerKeys||[];w.length==0&&w.push("value");let h=Re(r,u,{...a,triggerPaths:s,triggerKeys:w}),p=s.map(f=>[f,t(f).state.value]);if(c.nodeBucket[u])c.nodeBucket[u].setRules(h,p),a.effect&&c.nodeBucket[u].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]});else {let f=c.meta[u],g=new ye(f,u,r);g.setRules(h,p),a.effect&&g.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[u]}),c.nodeBucket[u]=g;}c.state[u]=c.meta[u],a.forceNotify&&c.nodeBucket[u].forceNotify(),a.cacheStrategy=="none"&&c.nodeBucket[u].setUseCache(false);}}};var Ae=d=>{let e=d||void 0;if(!e)throw Error("");return {SetStrategy:(t,i,l)=>{e(t).nodeBucket[i].setStrategy(l);}}};function Ge(){let d=new Map,e=new Map,n=new Set,t=(o,s)=>{d.set(o,s);let r=e.get(o);r&&r(s);};return {SetTrace:(o,s)=>{e.set(o,s);let r=d.get(o)||"idle";return s(r),{cancel:()=>{e.delete(o);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(r=>t(r,"idle")),n.clear(),d.clear();}),s.on("node:release",({path:r,type:u})=>{(u==1||u==2)&&(n.add(r),t(r,"pending"));}),s.on("node:pending",({path:r})=>{n.add(r),(!d.has(r)||d.get(r)==="idle")&&t(r,"pending");}),s.on("node:start",({path:r})=>{n.add(r),t(r,"calculating");}),s.on("node:success",({path:r})=>{t(r,"calculated");}),s.on("node:intercept",({path:r,type:u})=>{u==3&&t(r,"calculating"),u==6&&t(r,"idle");}),s.on("node:stagnate",({path:r})=>{t(r,"pending");}),s.on("node:error",({path:r})=>t(r,"error"));}})}}function Oe(d,e,n,t){let i=a=>{let c=d(),w=e(),h=new Set;return c.get(a)?.forEach(p=>h.add(p)),h.size===0?[]:Array.from(h).filter(p=>{let f=w.get(p)||new Set;return !Array.from(f).some(O=>h.has(O))})};return {GetNextDependency:a=>{let c=t();return Array.from(c.get(a)||[])},GetPrevDependency:a=>{let c=n();return Array.from(c.get(a)||[])},GetAllPrevDependency:a=>{let c=e();return Array.from(c.get(a)||[])},GetAllNextDependency:a=>{let c=d();return Array.from(c.get(a)||[])},rebuildDirectDependencyMaps:a=>{let c=new Map,w=new Map;for(let h of a){let p=i(h);c.set(h,new Set(p));for(let f of p)w.has(f)||w.set(f,new Set),w.get(f).add(h);}return {directNextMap:c,directPrevMap:w}}}}function Fe(d){let e=t=>{let i=[],l=[],o=new Map,s=t.size,r=0,u=0;for(let[a,c]of t)c===0&&l.push(a);if(l.length===0&&s>0)throw Error("Circular dependency detected");for(;l.length>0;){i.push([...l]);let a=[];for(let c of l){r++,o.set(c,u);let w=d.get(c);if(w)for(let h of w){let p=t.get(h)-1;t.set(h,p),p===0&&a.push(h);}}l=a,u++;}if(r<s)throw Error("Circular dependency detected");return {steps:i,levelMap:o}};return ()=>{let t=new Map;for(let i of d.keys()){let l=Array.from(d.get(i)||[]);t.has(i)||t.set(i,0);for(let o of l){let s=t.get(o)||0;t.set(o,++s);}}return e(t)}}var ue=()=>{let d=[];return {on:e=>(d.push(e),()=>{let n=d.indexOf(e);n>-1&&d.splice(n,1);}),call:e=>d.forEach(n=>{n(e);})}};function Ke(){let{on:d,call:e}=ue();return {onError:d,callOnError:e}}function Ie(){let{on:d,call:e}=ue();return {onSuccess:d,callOnSuccess:e}}var Ce=()=>{let d=new Set,e=new Map,n=new Set,t=(s,r)=>{e.get(s)?.forEach(u=>u(r));},i=(s,r)=>(e.has(s)||e.set(s,new Set),e.get(s).add(r),()=>e.get(s)?.delete(r));return {usePlugin:s=>{let r=new Set,u=(c,w)=>{let h=i(c,w);return r.add(h),h};s.apply({on:u}),d.add(s);let a=()=>{r.forEach(c=>c()),r.clear(),d.delete(s),n.delete(a);};return n.add(a),a},emit:t,destroyPlugin:()=>{n.forEach(s=>s()),n.clear(),e.clear(),d.clear();}}};function ke(){let{on:d,call:e}=ue();return {onStart:d,callOnStart:e}}var Be=(d={frameQuota:12})=>{let e=performance.now(),n=0,t=false,i=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let l=performance.now();return n++,!!((n>=5||t)&&(n=0,l-e>d.frameQuota||i()))},async yieldToMain(){return new Promise(l=>{ve(()=>{e=performance.now(),n=0,t&&(t=false),l();});})}}},ve=d=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=d,n.postMessage(null);};var xe=(t=>(t[t.CAUSALITY=0]="CAUSALITY",t[t.INVERSION=1]="INVERSION",t[t.REPERCUSSION=2]="REPERCUSSION",t))(xe||{});function Ue(d,e,n,t,i,l){let o=new Map,s=d.useGreedy,r=null;return async(a,c)=>{let h=Symbol("token"),p=a||"__NOTIFY_ALL__";o.set(p,h),r=h;let f=false;l.reset();let g=new Set,x=new Set,O=new Set;c.forEach(C=>{O.add(C),e.GetAllNextDependency(C).forEach(v=>O.add(v));});let G=new Map,R=new Map,V=new Map,b=[],L=n.Turnstile,k=L.volatileLevels.size>0,ee=k?L.hasObserver:()=>false,K=k?L.receiveGhosts:()=>[],N=k?L.resolveGhosts:()=>[],y=k?L.getTriggerKeys:()=>[],M=L?.volatileLevels||new Set,S=-1,P=new Set,T=e.GetPathToLevelMap(),A=0,z=0,q=C=>{e.GetAllNextDependency(C).forEach(ne=>{let j=T.get(ne)||0;j>z&&(z=j);});},Z=new Set;a&&(g.add(a),Z.add(a),q(a),i.flushPathSet.add(a));let re=a?[a]:c;l.shouldYield()&&(i.requestUpdate(),await l.yieldToMain());let ce=re.map(async C=>{if(ee(C)){let v=n.GetNodeByPath(C),ne=y(C);if(ne.length>0){let j=K(v,ne);return j instanceof Promise&&(j=await j),{seed:C,hitTargets:j}}}return {seed:C,hitTargets:[]}});if((await Promise.all(ce)).forEach(({seed:C,hitTargets:v})=>{if(v&&v.length>0){b.push(...v);let ne=T.get(C)||0;S=Math.max(S,ne);}}),(b.length>0||re.length>1)&&(i.requestUpdate(),await l.yieldToMain(),o.get(p)!==h))return;let Pe=b.length>0;c.forEach(C=>{if(!Z.has(C))if(Pe){let v=T.get(C)??0;R.has(v)||R.set(v,new Set),R.get(v).add(C),t.emit("node:stagnate",{path:C,type:2});}else P.add(C),q(C);}),a?A=T.get(a)??0:A=Math.min(...c.map(C=>T.get(C)??0));let ge=performance.now();t.emit("flow:start",{path:p,token:h}),t.callOnStart({path:p});let de=false,me=30,Me=C=>{let{target:v,trigger:ne}=C,j=false,se=false,oe=false,I=n.GetNodeByPath(v),_=I.calledBy,Y=[],Q=[],B=false;if(I.calledBy===1){B=true,j=true,i.flushPathSet.add(v);let m=V.get(v);m&&(Y.push(...m),V.delete(v));}let W=(m,F)=>{let H=T.get(m)??0,J=(_===1||_===2)&&H<=S;J&&g.has(m)&&(g.delete(m),t.emit("node:revive",{path:m,triggerPath:v}));let D=0;if(!(g.has(m)||x.has(m)||P.has(m))){if(G.has(m))D=G.get(m)-1;else {if(H>A&&G.size>me){R.has(H)||R.set(H,new Set),R.get(H).add(m),t.emit("node:intercept",{path:m,type:7});return}let ae=e.GetPrevDependency(m),te=0;for(let ie of ae){if(g.has(ie))continue;(T.get(ie)??0)>A&&te++;}D=te;}if(D<=0){let ae=P.has(m),te=x.has(m);if(ae||te){t.emit("node:intercept",{path:m,type:te?3:3.1});return}G.delete(m);let ie=n.GetNodeByPath(m);J?ie.calledBy=2:ie.calledBy=0,P.add(m),t.emit("node:release",{path:m,type:F,detail:{path:v}});}else G.set(m,D);}},X=(m=[])=>{if(o.get(p)!==h)return;if(m.length){let H={},J=I.proxy;for(let D of m){let ae=(D.args||[]).reduce((te,ie)=>(te[ie]=J[ie],te),{});try{let te=D.fn(ae);te&&typeof te=="object"&&Object.assign(H,te);}catch(te){}}for(let D in H)if(D in I.state)Object.is(I.state[D],H[D])||(I.state[D]=H[D],Y.push(D),j=true,(I.notifyKeys.size===0||I.notifyKeys.has(D))&&(se=true));else throw {error:`wrong effect in ${String(I.path)}`}}j&&i.flushPathSet.add(v);let F=(H=[])=>{if(o.get(p)!==h)return;H&&H.length>0&&(b.push(...H),S=Math.max(S,T.get(v)||0)),Y.length=0,t.emit("node:success",{path:v,calledBy:I.calledBy}),g.add(v);let J=e.GetNextDependency(v);(se||oe)&&(q(v),e.GetAllNextDependency(v).forEach(le=>O.add(le)));let D=n.GetNodeByPath(v),ae=T.get(v)??0,te=M.has(ae)||b.length>0;for(let $ of J){let le=T.get($)??0;if(te&&le>=ae){R.has(le)||R.set(le,new Set),R.get(le).add($),t.emit("node:stagnate",{path:$,type:2});continue}if(g.has($)){t.emit("node:intercept",{path:$,type:2});continue}if(x.has($)||P.has($)){t.emit("node:intercept",{path:$,type:x.has($)?3:3.1});continue}if(se||oe)W($,1);else if(G.has($))W($,2);else {let Se=T.get($);R.has(Se)||R.set(Se,new Set);let Ee=R.get(Se);Ee.has($)||(Ee.add($),t.emit("node:stagnate",{path:$,type:1}));}}x.delete(v),D.calledBy=0,(()=>{if(!f){f=true;let $=x.size,le=P.size;t.emit("flow:fire",{path:v,type:1,detail:{active:$,pending:le,blocked:G.size}}),fe();}})();};if(ee(v)&&Y.length>0){let H=n.GetNodeByPath(v),J=K(H,Y);J instanceof Promise||J&&typeof J.then=="function"?J.then(F).catch(E):F(J);}else F([]);},E=m=>{t.emit("node:error",{path:v,error:m});let F=Symbol("abort");o.set(p,F),P.clear(),G.clear(),x.clear(),V.clear(),t.callOnError(m);},U=(m,F)=>{m!==I.state[F]&&(I.state[F]=m,j=true,Y.push(String(F)),t.emit("node:bucket:success",{path:v,key:String(F),value:m,calledBy:I.calledBy}),(I.notifyKeys.size===0||I.notifyKeys.has(F))&&(se=true)),I.nodeBucket[F].isForceNotify()&&(oe=true),(se||oe)&&q(v);};t.emit("node:start",{path:v,calledBy:I.calledBy});try{let m=[];for(let F in I.nodeBucket){let H=I.nodeBucket[F];if(m.push(...H.getSideEffect()),B){t.emit("node:bucket:success",{path:v,key:String(F),value:I.state[F],calledBy:I.calledBy}),H.isForceNotify()&&(oe=!0),(I.notifyKeys.size===0||I.notifyKeys.has(F))&&q(v);continue}let J=H.evaluate({affectKey:F,triggerPath:ne,GetRenderSchemaByPath:D=>n.GetNodeByPath(D).proxy,getStateByPath:D=>n.GetNodeByPath(D).state,GetToken:()=>h});if(J instanceof Promise){let D=J.then(ae=>{o.get(p)===h&&U(ae,F);});Q.push(D);}else U(J,F);}if(Q.length>0)return Promise.all(Q).then(()=>{X(m);}).catch(E);X(m);return}catch(m){E(m);}},fe=async()=>{if(o.get(p)!==h){f=false;return}f=true;let C=l.getIsFirstFrame(),v=0,ne=()=>s&&C?30:1/0,j=0,se=ne();try{for(;o.get(p)===h;){let oe=j>=se,I=l.shouldYield();if(oe||I){if(j>0&&(v++,(C||v%2===0)&&i.requestUpdate()),await l.yieldToMain(),o.get(p)!==h)break;j=0,C=l.getIsFirstFrame();}if(P.size>0&&x.size<40){for(let _ of P){if(x.size>=40||j>=se)break;let Y=T.get(_)??0,Q=e.GetPrevDependency(_),B=Q.length>1;if((!s||B)&&Y>A){P.delete(_);let E=Q.filter(U=>O.has(U)&&!g.has(U)).length;G.set(_,E||0),t.emit("node:intercept",{path:_,type:E>0?4:5,detail:{targetLevel:Y,currentLevel:A,pendingParentsCount:E}});continue}P.delete(_),x.add(_);let X=n.GetNodeByPath(_);if(t.emit("node:processing",{path:_,calledBy:X.calledBy}),Me({target:_,trigger:a}),j++,j>=se||l.shouldYield())break}if(P.size>0)continue}if(j<se&&s&&G.size>0&&x.size<40){let _=!1,Y=0;for(let[Q,B]of G)if(B<=0){let W=T.get(Q)??0,X=e.GetPrevDependency(Q);if(W>A&&X.length>1)continue;if(G.delete(Q),P.add(Q),Y++,_=!0,t.emit("node:release",{path:Q,type:4}),Y>=se)break}if(Y>0)continue;if(_){if(l.shouldYield()&&(await l.yieldToMain(),o.get(p)!==h))break;continue}}if(x.size===0&&P.size===0){if(b.length>0){let B=!1,W=A,X=Array.from(new Set(b));b.length=0;for(let E of X){let U=n.GetNodeByPath(E),m=N(U);if(m&&m.length>0){B=!0,U.calledBy=1,V.set(E,m),g.delete(E),G.delete(E),P.add(E);let F=T.get(E)??0;F<W&&(W=F),q(E),i.flushPathSet.add(E);}}if(B){if(W<A&&(A=W),i.requestUpdate(),l.shouldYield()&&(await l.yieldToMain(),o.get(p)!==h))break;continue}}let _=new Set;for(let B of R.keys())_.add(B);for(let[B]of G){let W=T.get(B)??0;W>A&&_.add(W);}let Y=Array.from(_).sort((B,W)=>B-W),Q=Y[0];if(Y.length>0&&Q<=z){let B=Y[0];if(B<=z){A=B;let W=R.get(B);W&&(W.forEach(X=>P.add(X)),R.delete(B));for(let[X]of G)(T.get(X)??0)===B&&(G.delete(X),P.add(X),t.emit("node:release",{path:X,type:3,detail:{level:B}}));continue}}else {R.forEach((B,W)=>{B.forEach(X=>{g.add(X),t.emit("node:intercept",{path:X,type:6});});}),R.clear();for(let[B]of G)g.add(B),t.emit("node:intercept",{path:B,type:6});G.clear();break}}P.size>0&&x.size>=40&&t.emit("flow:wait",{type:2});break}}finally{f=false;let oe=x.size+G.size+P.size,I=L.inFlightCount||0;if(!(r===h)){t.emit("flow:abort",{token:h});return}if(i.requestUpdate(),oe===0&&I===0){if(o.get(p)===h&&!de){de=true,t.emit("flow:end",{type:1}),L.resetCounters(),V.clear();let Y=performance.now();S=-1,o.delete(p),t.emit("flow:success",{token:h,duration:(Y-ge).toFixed(2.1)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else {let Y=oe===0&&I>0?3:1;if(t.emit("flow:wait",{type:Y,detail:{nums:x.size,asyncNums:I}}),I>0){let Q=()=>{r===h&&(L.inFlightCount===0?ve(()=>{L.inFlightCount===0?fe():requestAnimationFrame(Q);}):requestAnimationFrame(Q));};requestAnimationFrame(Q);}}}};fe();}}function Ne(d){let{path:e,uid:n,type:t,meta:i,dirtySignal:l,state:o}=d,s=null,r=["path","uid","type","dependOn","nodeBucket"],a={path:e,uid:n,type:t,meta:i,dirtySignal:l,createView:(c={})=>{if(s&&Object.keys(c).length===0)return s;let w=new Proxy(c,{get(h,p){let f=p;return Reflect.has(h,p)?Reflect.get(h,p):f in d.state?d.state[f]:f in d?d[f]:i&&f in i?i[f]:Reflect.get(h,p)},set(h,p,f){let g=p;return g in d.state?(d.state[g]=f,true):Reflect.set(h,p,f)},ownKeys(h){let p=new Set([...Reflect.ownKeys(h),...Object.keys(o||{}),...Object.keys(i||{}),...r]);return Array.from(p)},getOwnPropertyDescriptor(h,p){let f=p;return Reflect.has(h,p)||o&&f in o||i&&f in i||r.includes(f)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(h,p)}});return s=w,w}};return "children"in d?{...a,children:d.children}:{...a,state:d.state,nodeBucket:d.nodeBucket,notifyKeys:d.notifyKeys,dependOn:d.dependOn,calledBy:0,get proxy(){return s}}}var De=(d,e,n,t,i)=>{let l=d.useEntangleStep,o=new Map,s=new Map,r=new Set,u=t,c=0;return {useEntangle:f=>{let{observer:g,target:x,triggerKeys:O,emit:G,filter:R}=f;if(!O||O.length===0){i.emit("entangle:warn",{path:g,type:"no_keys"});return}o.has(g)||o.set(g,new Map);let V=o.get(g);O.forEach(b=>{V.has(b)||V.set(b,[]),V.get(b).push({target:x,emit:G,filter:R,count:0});});},updateEntangleLevel:()=>{let f=n();r.clear();for(let g of o.keys()){let x=f.get(g)||0;r.add(x);}},Turnstile:{volatileLevels:r,get inFlightCount(){return c},get hasPendingGhosts(){for(let f of s.values())if(f.length>0)return true;return false},onSettle:f=>{},hasObserver:f=>o.has(f),getTriggerKeys:f=>{let g=o.get(f);return g?Array.from(g.keys()):[]},receiveGhosts:(f,g=[])=>{let x=f.path,O=[],G=o.get(x);if(!G||g.length===0)return O;let R=new Set;g.forEach(N=>{let y=G.get(N);y&&y.forEach(M=>R.add(M));});let V=N=>N instanceof Promise||N!==null&&typeof N=="object"&&typeof N.then=="function",b=N=>{let y=N.target;if(N.count>=l){i.emit("entangle:blocked",{observer:x,target:y,count:N.count});return}let M=u(y);if(N.filter&&!N.filter(f.proxy,M.proxy))return;let S=N.emit(f.proxy,M.proxy),P=T=>{if(T&&T.key!==void 0){if(T.delta===void 0&&T.value!==void 0&&T.value===M.state[T.key])return;N.count++,s.has(y)||s.set(y,[]),s.get(y).push({weight:1,...T}),O.push(y);}};if(V(S))return c++,(async()=>{try{let T=await S;P(T);}catch(T){i.emit("node:error",{path:x,error:T}),i.onError({path:x,error:T});}finally{c--;}})();P(S);},L=Array.from(R),k=0,ee=false,K=null;for(;k<L.length;k++){if(e.shouldYield()){ee=true;break}let N=b(L[k]);if(N){K=N,ee=true,k++;break}}return ee?(async()=>{K&&await K,e.shouldYield()&&await e.yieldToMain();let N=50;for(;k<L.length;k+=N){let y=L.slice(k,k+N),M=[];for(let S of y){let P=b(S);P&&M.push(P);}if(M.length>0){let S=M.map(async P=>{await P,e.shouldYield()&&await e.yieldToMain();});await Promise.all(S);}e.shouldYield()&&await e.yieldToMain();}return Array.from(new Set(O))})():Array.from(new Set(O))},resolveGhosts:f=>{let g=f.path,x=s.get(g);if(!x||x.length===0)return [];let O=[],G=new Map;for(let R of x)G.has(R.key)||G.set(R.key,[]),G.get(R.key).push(R);for(let[R,V]of G.entries()){let b=f.state[R],L=V.filter(k=>k.patch!==void 0);if(L.length>0)b=L.reduce((k,ee)=>ee.patch(k),b);else {let k=V.filter(K=>K.delta!==void 0),ee=V.filter(K=>K.value!==void 0);ee.length>0&&(b=ee.reduce((N,y)=>(y.weight??1)>=(N.weight??1)?y:N).value),k.length>0&&(b=k.reduce((K,N)=>{switch(N.op||"add"){case "add":return (typeof K=="number"?K:0)+N.delta;case "remove":return Array.isArray(K)?K.filter(M=>M!==N.delta):K;case "intersect":return Array.isArray(K)?K.filter(M=>N.delta.includes(M)):N.delta;case "union":{let M=Array.isArray(K)?K:[],S=Array.isArray(N.delta)?N.delta:[N.delta];return [...new Set([...M,...S])]}case "merge":{let M=typeof K=="object"&&K!==null&&!Array.isArray(K)?K:{},S=typeof N.delta=="object"&&N.delta!==null&&!Array.isArray(N.delta)?N.delta:{};return {...M,...S}}default:return K}},b));}Object.is(f.state[R],b)||(f.state[R]=b,O.push(R));}return s.set(g,[]),O.length>0?O:[]},resetCounters:()=>{for(let f of o.values())for(let g of f.values())g.forEach(x=>x.count=0);}}}};function Ve(d,e,n,t,i){let l=Be(),o=0,s=new Map,r=[],u=[],a=false,c=new Set,h=async()=>{let y=Array.from(c);if(c.clear(),"signalTrigger"in i&&typeof i.signalTrigger=="function")for(let M of y){let S=b(M);i.signalTrigger(S.dirtySignal);}else "emit"in i&&i.emit(y);},p=()=>{a||(a=true,requestAnimationFrame(()=>{try{for(;c.size>0;)h();}finally{a=false;}}));},{useEntangle:f,updateEntangleLevel:g,Turnstile:x}=De({useEntangleStep:d.useEntangleStep},l,e.GetPathToLevelMap,b,{emit:t.emit,onError:t.callOnError}),O=Ue({useGreedy:d.useGreedy},e,{GetNodeByPath:b,Turnstile:x},t,{requestUpdate:p,flushPathSet:c},l),G=y=>{throw new Error(`[MeshFlow] Duplicate Path: ${y}`)},R=y=>{s.has(y.path)&&G(String(y.path));let M=++o,S={path:y.path,getNode:A=>b(A)},P=(A,z="value")=>{let q=A({...S}),Z=b(y.path);if(n.createHistoryAction&&n.pushIntoHistory){let re=n.createHistoryAction([{path:y.path,value:Z.state[z]},{path:y.path,value:q}],ce=>{let pe=b(ce.path);pe.state[z]=ce.value,k(ce.path);});n.pushIntoHistory(re);}Z.state[z]=q,k(y.path);},T=Ne({uid:M,type:y.type,path:y.path,state:y.state,meta:y.meta,nodeBucket:{},dirtySignal:"signalCreator"in i?i.signalCreator():void 0,notifyKeys:y.notifyKeys,dependOn:P});return s.set(T.path,M),r[M]=T,T},V=y=>{s.has(y.path)&&G(String(y.path));let M=++o,S=Ne({uid:M,type:y.type,path:y.path,state:{},meta:y,nodeBucket:{},children:y.children});return s.set(S.path,M),u[M]=S,S};function b(y){let M=s.get(y),S=r[M];if(!S)throw Error("wrong ID");return S}function L(y){let M=s.get(y);return u[M]}let k=y=>{if(!b(y))throw Error("Node undefined");c.add(y),p();let S=e.GetNextDependency(y);ee(S,y);};function ee(y,M){O(M,y);}return {registerNode:R,registerGroupNode:V,GetNodeByPath:b,GetGroupByPath:L,notify:k,notifyAll:async()=>{Promise.resolve().then(async()=>{let y=e.GetDependencyOrder();if(!y||y.length===0)return;let M=y[0];try{O(null,M);}catch(S){throw t.callOnError(S),S}finally{p();}});},batchNotify:y=>{if(!y||y.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let S=n.createHistoryAction([y.map(P=>({path:P.path,key:P.key,value:b(P.path).state[P.key]})),y.map(P=>({path:P.path,key:P.key,value:P.value}))],P=>{let T=new Set;P.forEach(A=>{let z=b(A.path);z.state[A.key]=A.value,c.add(A.path),T.add(A.path);}),p(),T.size>0&&O(null,Array.from(T));});n.pushIntoHistory(S);}let M=new Set;y.forEach(S=>{let P=b(S.path);P.state[S.key]=S.value,c.add(S.path),M.add(S.path);}),p(),M.size>0&&O(null,Array.from(M));},useEntangle:f,updateEntangleLevel:g,UITrigger:i,UidToNodeMap:r}}function Le(d,e){let n=false,t=false,i=false,l=false,o=new Map,s=new Map,r=new Map,u=new Map,a=[],c=new Map,{GetNextDependency:h,GetPrevDependency:p,GetAllPrevDependency:f,GetAllNextDependency:g,rebuildDirectDependencyMaps:x}=Oe(()=>o,()=>s,()=>u,()=>r),O={},G={};if(e.modules.useHistory){let E=e.modules.useHistory,U;E.isMeshModuleInited?U=E:U=E();let{Undo:m,Redo:F,PushIntoHistory:H,CreateHistoryAction:J,updateUndoSize:D,updateRedoSize:ae}=U();O.pushIntoHistory=H,O.createHistoryAction=J,G={Undo:m,Redo:F,updateUndoSize:D,updateRedoSize:ae};}let R=!!e.modules.useMeshRenderGate,V={};if(R){let E=e.modules.useMeshRenderGate.isMeshModuleInited,U=e.modules.useMeshRenderGate;V=(E?U:U())(()=>re);}let{onError:b,callOnError:L}=Ke(),{onSuccess:k,callOnSuccess:ee}=Ie(),{onStart:K,callOnStart:N}=ke(),{emit:y,usePlugin:M,destroyPlugin:S}=Ce(),{SetTrace:P,useTrace:T}=Ge(),A=T();M(A);let z=R?{...V}:{...e.UITrigger},q=Ve({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>a,GetAllNextDependency:g,GetNextDependency:h,GetPrevDependency:p,GetAllPrevDependency:f,GetPathToLevelMap:()=>c},O,{callOnError:L,callOnSuccess:ee,callOnStart:N,emit:y},z),{GetGroupByPath:Z,GetNodeByPath:re,notifyAll:ce,useEntangle:pe,updateEntangleLevel:Pe}=q;R&&V.init();let ge={};if(e.modules.useInternalForm){let{uiSchema:E,GetFormData:U}=e.modules.useInternalForm(q,d);ge={uiSchema:E,GetFormData:U};}let de={};if(e.modules.useSchemaValidators){let{SetValidators:E}=e.modules.useSchemaValidators(re);de={SetValidators:E};}let{SetRule:me,SetRules:Me}=be(re,o,s),{SetStrategy:fe}=Ae(re),C=Fe(o),v=()=>{let E=C();a=E.steps,c=E.levelMap,ne();},ne=()=>{i&&(Pe(),i=false);},j=()=>{l||(l=true,Promise.resolve().then(ne).finally(()=>{l=false;}));},se=()=>{t||(t=true,Promise.resolve().then(()=>{if(v(),n){let{directNextMap:E,directPrevMap:U}=x(a.flat());r=E,u=U;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(E,U,m,F)=>{me(E,U,m,F),n=true,se();},SetRules:(E,U,m,F)=>{Me(E,U,m,F),n=true,se();},SetStrategy:fe,useEntangle:E=>{pe(E),i=true,j();},SetTrace:P,usePlugin:M,SetValue:(E,U,m)=>{ne(),re(E).dependOn(()=>m,U);},GetValue:(E,U="value")=>re(E).proxy[U],SetValues:E=>{ne(),q.batchNotify(E);},GetGroupByPath:Z,notifyAll:async()=>{v(),await ce();},GetAllDependency:()=>o,GetDependencyOrder:()=>a,historyExports:G,formExports:ge,validatorExports:de,batchRenderExport:V,hasRenderGate:()=>R,onError:b,onSuccess:k,onStart:K,scheduler:q,destroyPlugin:S}}var he=new Map,_e=(d,e,n)=>{try{if(he.has(d))throw Error("engineID repeated");let t=Le(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules??{},plugins:{}}),{SetRule:i,SetRules:l,SetValues:o,SetStrategy:s,SetValue:r,GetValue:u,usePlugin:a,useEntangle:c,GetGroupByPath:w,notifyAll:h,SetTrace:p,GetAllDependency:f,GetDependencyOrder:g,historyExports:x,formExports:O,validatorExports:G,batchRenderExport:R,hasRenderGate:V,onError:b,onSuccess:L,onStart:k,scheduler:ee,destroyPlugin:K}=t,N={config:{SetRule:i,SetRules:l,SetStrategy:s,notifyAll:h,SetTrace:p,usePlugin:a,hasRenderGate:V,useEntangle:c},data:{SetValue:r,GetValue:u,SetValues:o,GetGroupByPath:w},dependency:{GetAllDependency:f,GetDependencyOrder:g},hooks:{onError:b,onSuccess:L,onStart:k}},y=(P,T,A)=>{!T||typeof T!="object"||Object.keys(T).forEach(z=>{let q=T[z];if(typeof q=="object"&&q!==null)P[z]=P[z]||{},y(P[z],q,A);else if(typeof q=="function"){let Z=z;if(Z==="useMeshRenderGate")Z="render";else if(Z.startsWith("use")){let re=Z.slice(3);Z=re.charAt(0).toLowerCase()+re.slice(1);}z==="useHistory"&&A.exports.history&&Object.keys(A.exports.history).length>0?P[Z]=A.exports.history:z==="useInternalForm"&&A.exports.form&&Object.keys(A.exports.form).length>0?P[Z]=A.exports.form:z==="useSchemaValidators"&&A.exports.validator&&Object.keys(A.exports.validator).length>0?P[Z]=A.exports.validator:z==="useMeshRenderGate"&&A.exports.render?P[Z]=A.exports.render:P[Z]=q(A.scheduler,A.Schema);}});},M={...N,destroyPlugin:K,modules:{}},S=n.modules;return S&&y(M.modules,S,{scheduler:ee,Schema:e,exports:{history:x,form:O,validator:G,render:R}}),he.set(d,M),M}catch(t){throw Error(t)}},It=()=>(d,e,n)=>He(d,e,n),Ct=d=>{let e=he.get(d);if(!e)throw Error(`[MeshFlow] Engine ID "${String(d)}" not found. Ensure it is initialized with useMeshFlow.`);return e},kt=d=>{he.get(d).destroyPlugin(),he.delete(d);},He=_e;export{we as DefaultStrategy,xe as TriggerCause,kt as deleteEngine,Ct as useEngine,_e as useEngineManager,He as useMeshFlow,It as useMeshFlowDefiner,Ve as useScheduler};
1
+ var we=(S=>(S[S.FlowStart=0]="FlowStart",S[S.FlowSuccess=1]="FlowSuccess",S[S.FlowEnd=2]="FlowEnd",S[S.FlowAbort=3]="FlowAbort",S[S.FlowWait=4]="FlowWait",S[S.FlowFire=5]="FlowFire",S[S.NodeStart=6]="NodeStart",S[S.NodeSuccess=7]="NodeSuccess",S[S.NodeProcessing=8]="NodeProcessing",S[S.NodeError=9]="NodeError",S[S.NodePending=10]="NodePending",S[S.NodeRevive=11]="NodeRevive",S[S.NodeIntercept=12]="NodeIntercept",S[S.NodeRelease=13]="NodeRelease",S[S.NodeStagnate=14]="NodeStagnate",S[S.NodeBucketSuccess=15]="NodeBucketSuccess",S[S.EntangleWarn=16]="EntangleWarn",S[S.EntangleBlocked=17]="EntangleBlocked",S))(we||{}),Fe=(r=>(r[r.CAUSALITY=0]="CAUSALITY",r[r.INVERSION=1]="INVERSION",r[r.REPERCUSSION=2]="REPERCUSSION",r))(Fe||{});var Ve=(r=>(r.OR="OR",r.PRIORITY="PRIORITY",r.MERGE="MERGE",r))(Ve||{}),De=class{computedRules=[];store={OR:(e,t)=>{let r,u,c=this.computedRules;for(let i=0;i<c.length;i++){let l=c[i],s=l.logic(e);if(s instanceof Promise)return (async()=>{let M=await s;if(l.entityId==="__base__"?u=M:M&&(r=M),typeof r>"u")for(let n=i+1;n<c.length;n++){let N=c[n],f=N.logic(e),g=f instanceof Promise?await f:f;if(N.entityId==="__base__"){u=g;continue}if(g){r=N.value;break}}return typeof r>"u"&&(r=u),{res:r,version:t}})();let h=s;if(l.entityId==="__base__"){u=h;continue}if(h){r=l.value;break}}return typeof r>"u"&&(r=u),{res:r,version:t}},PRIORITY:(e,t)=>{let r,u=this.computedRules;for(let c=0;c<u.length;c++){let l=u[c].logic(e);if(l instanceof Promise)return (async()=>{let s=await l;if(s!==void 0)return {res:s,version:t};for(let h=c+1;h<u.length;h++){let M=u[h].logic(e),n=M instanceof Promise?await M:M;if(n!==void 0)return {res:n,version:t}}return {res:void 0,version:t}})();if(l!==void 0)return {res:l,version:t}}return {res:r,version:t}},MERGE:(e,t)=>{let r,u,c=this.computedRules,i=(s,h)=>s===void 0?h:h===void 0?s:Array.isArray(s)&&Array.isArray(h)?[...h,...s]:typeof s=="object"&&typeof h=="object"?{...h,...s}:s;for(let s=0;s<c.length;s++){let h=c[s],M=h.logic(e);if(M instanceof Promise)return (async()=>{let N=await M,f=(m,P)=>{if(m.entityId==="__base__")u=i(u,P);else if(P){let R=m.value!==void 0?m.value:P;r=i(r,R);}};f(h,N);for(let m=s+1;m<c.length;m++){let P=c[m],R=P.logic(e),S=R instanceof Promise?await R:R;f(P,S);}return {res:i(r,u),version:t}})();let n=M;if(h.entityId==="__base__"){u=i(u,n);continue}if(n){let N=h.value!==void 0?h.value:n;r=i(r,N);}}return {res:i(r,u),version:t}}};CurrentStrategy=()=>{};CurrentStrategyType="PRIORITY";getRules=()=>{};constructor(e){this.getRules=e,this.CurrentStrategy=this.store.PRIORITY,this.updateComputedRules();}updateComputedRules(){let e=this.getRules();this.CurrentStrategyType==="PRIORITY"||this.CurrentStrategyType==="MERGE"?this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat().sort((t,r)=>r.priority-t.priority):this.computedRules=Array.from(e.values()).map(t=>Array.from(t)).flat();}setStrategy(e){this.CurrentStrategyType=e,this.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,t){return this.CurrentStrategy(e,t)}},Re=class{path;strategy;contract;rules=new Map;isValue=false;id=0;cache=void 0;pendingPromise=null;version=0;deps=new Map;_forceNotify=false;promiseToken=null;useCache=true;effectArray=[];constructor(e,t,r){let u=()=>this.rules;this.strategy=new De(u),this.path=r,this.isValue=t==="value",this.contract=this.inferType(e),this.cache=e,this.setRule({priority:0,entityId:"__base__",logic:()=>e});}setUseCache(e){this.useCache=e;}forceNotify(){this._forceNotify=true;}isForceNotify(){return this._forceNotify}setStrategy(e){this.strategy.setStrategy(e);}setDefaultRule(e){let t=new Set;t.add(e),this.rules.set(-1,t);}setRules(e,t){t&&this.updateDeps(t);let r=++this.id,u={...e,entityId:r};for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(u);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let i=this.rules.get(c);i&&(i.delete(u),i.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}updateDeps(e){for(let[t,r]of e)this.deps.set(t,r);}setRule(e,t){if(t&&this.updateDeps(t),typeof e.entityId=="string"){this.setDefaultRule(e);return}let r=++this.id,u={...e,entityId:r};if(e)for(let c of e.triggerUids)this.rules.has(c)||this.rules.set(c,new Set),this.rules.get(c).add(u);return this.strategy.updateComputedRules(),()=>{for(let c of e.triggerUids){let i=this.rules.get(c);i&&(i.delete(u),i.size===0&&(this.rules.delete(c),this.deps.delete(c)));}this.strategy.updateComputedRules();}}setSideEffect(e){this.effectArray.push(e);}getSideEffect(){return [...this.effectArray]}evaluate(e){let t=null;if(e.GetToken&&(t=e.GetToken()),this.pendingPromise&&this.promiseToken!==t&&(this.pendingPromise=null,this.promiseToken=null),this.pendingPromise)return this.pendingPromise;let r=false;if(typeof e.triggerUid=="number"){r=true;let i=this.deps.get(e.triggerUid),l=e.getStateByUid(e.triggerUid);if(typeof i=="object"||typeof l=="object")r=false;else {let s=Array.from(this.deps.keys());for(let h of s){let M=this.deps.get(h),n=e.getStateByUid(h);if(M!==n){r=false;break}}}}if(r&&this.useCache)return this.cache;this.promiseToken=t;let u=++this.version,c=this.strategy.evaluate(e,u);if(!(c instanceof Promise)){let{res:i,version:l}=c;return this.finalizeSync(i,l,e,t)}return this.pendingPromise=(async()=>{try{let{res:i,version:l}=await c;return this.finalizeSync(i,l,e,t)}catch(i){throw {path:this.path,error:i}}finally{this.promiseToken===t&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,t,r,u){return u!==this.promiseToken||t<this.version?this.cache:(this.cache=e,this.deps.forEach((c,i)=>{this.deps.set(i,r.getProxyByUid(i));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var _e=(p,e,t)=>{let u=c=>{let i=t.triggerUids.map(h=>{let M=c.getProxyByUid(h);if(t.triggerKeys.length===0)return M;let n={};return t.triggerKeys.forEach(N=>{n[N]=M[N];}),n}),l=Object.create(null);return Object.defineProperty(l,"triggerTargets",{get:()=>i}),Object.defineProperty(l,"affectedTatget",{get:()=>c.getProxyByUid(p)[e]}),t.logic({slot:l})};return {value:t.value,targetUid:p,triggerUids:t.triggerUids,priority:t.priority??10,logic:u}},He=(p,e,t,r,u,c,i,l)=>{if(!p)throw Error();let s=p,h=(N,f)=>{typeof r[N]>"u"&&(r[N]=[],c[N]=new Set),c[N].add(f),c[N].size>r[N].length&&r[N].push(f),typeof u[f]>"u"&&(u[f]=[],i[f]=new Set),i[f].add(N),i[f].size>u[f].length&&u[f].push(N);};return {SetRule:(N,f,g,m)=>{let P=s(N),R=s(f),S=m.triggerKeys||[],Q=l.get(R.uid)||0,X=l.get(P.uid)||0;Q+=1,X+=1,l.set(R.uid,Q),l.set(P.uid,X);let Y=_e(R.uid,g,{...m,triggerUids:[P.uid],triggerKeys:S}),y=[N].map(V=>{let a=s(V);return [a.uid,a.state.value]});if(h(P.uid,R.uid),typeof R.nodeBucket[g]=="number"){let V=t(R.nodeBucket[g]);V.setRule(Y,y),m.effect&&V.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]});}else {let V=R.meta[g],a=new Re(V,g,f);a.setRule(Y,y),m.effect&&a.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]}),R.nodeBucket[g]=e(a);}R.state[g]=R.meta[g];let q=t(R.nodeBucket[g]);m.forceNotify&&q.forceNotify(),m.cacheStrategy=="none"&&q.setUseCache(false);},SetRules:(N,f,g,m)=>{let P=s(f),R=l.get(P.uid)||0;R+=1,l.set(P.uid,R);let S=[];for(let q of N){let V=s(q);S.push(V.uid);let a=l.get(V.uid)||0;a+=1,l.set(V.uid,a),h(V.uid,P.uid);}let Q=m.triggerKeys||[],X=_e(P.uid,g,{...m,triggerUids:S,triggerKeys:Q}),Y=N.map(q=>{let V=s(q);return [V.uid,V.state.value]});if(typeof P.nodeBucket[g]=="number"){let q=t(P.nodeBucket[g]);q.setRules(X,Y),m.effect&&q.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]});}else {let q=P.meta[g],V=new Re(q,g,f);V.setRules(X,Y),m.effect&&V.setSideEffect({fn:m.effect,args:m.effectArgs?m.effectArgs:[g]}),P.nodeBucket[g]=e(V);}P.state[g]=P.meta[g];let y=t(P.nodeBucket[g]);m.forceNotify&&y.forceNotify(),m.cacheStrategy=="none"&&y.setUseCache(false);}}};var Ye=(p,e)=>{let t=p||void 0;if(!t)throw Error();return {SetStrategy:(u,c,i)=>{let l=t(u);e(l.nodeBucket[c]).setStrategy(i);}}};function je(){let p=new Map,e=new Map,t=new Set,r=(i,l)=>{p.set(i,l);let s=e.get(i);s&&s(l);};return {SetTrace:(i,l)=>{e.set(i,l);let s=p.get(i)||"idle";return l(s),{cancel:()=>{e.delete(i);}}},useTrace:()=>({apply:l=>{l.on(0,()=>{t.forEach(s=>r(s,"idle")),t.clear(),p.clear();}),l.on(13,({path:s,type:h})=>{(h==1||h==2)&&(t.add(s),r(s,"pending"));}),l.on(10,({path:s})=>{t.add(s),(!p.has(s)||p.get(s)==="idle")&&r(s,"pending");}),l.on(6,({path:s})=>{t.add(s),r(s,"calculating");}),l.on(7,({path:s})=>{r(s,"calculated");}),l.on(12,({path:s,type:h})=>{h==3&&r(s,"calculating"),h==6&&r(s,"idle");}),l.on(14,({path:s})=>{r(s,"pending");}),l.on(9,({path:s})=>r(s,"error"));}})}}function ze(p,e,t,r){return {GetNextDependency:M=>r()[M]||[],GetPrevDependency:M=>t()[M]||[],GetAllPrevDependency:M=>e()[M]||[],GetAllNextDependency:M=>p()[M]||[],rebuildDirectDependencyMaps:M=>{let n=[],N=[],f=p();for(let g of M){let m=f[g]||[];n[g]=m;for(let P=0;P<m.length;P++){let R=m[P];typeof N[R]>"u"&&(N[R]=[]),N[R].push(g);}}return {directNextMap:n,directPrevMap:N}}}}function qe(p,e){let t=u=>{let c=[],i=[],l=new Map,s=u.size,h=0,M=0;for(let[n,N]of u)N===0&&i.push(n);if(i.length===0&&s>0)throw Error("Circular dependency detected");for(;i.length>0;){c.push([...i]);let n=[];for(let N of i){h++,l.set(N,M);let f=p[N];if(f)for(let g of f){let m=u.get(g)-1;u.set(g,m),m===0&&n.push(g);}}i=n,M++;}if(h<s)throw Error("Circular dependency detected");return {steps:c,levelMap:l}};return ()=>{let u=new Map;for(let c of e.keys()){let i=p[c]||[];u.has(c)||u.set(c,0);for(let l of i){let s=u.get(l)||0;u.set(l,++s);}}return t(u)}}var Ne=()=>{let p=[];return {on:e=>(p.push(e),()=>{let t=p.indexOf(e);t>-1&&p.splice(t,1);}),call:e=>p.forEach(t=>{t(e);})}};function Qe(){let{on:p,call:e}=Ne();return {onError:p,callOnError:e}}function $e(){let{on:p,call:e}=Ne();return {onSuccess:p,callOnSuccess:e}}var Xe=()=>{let p=new Set,e=new Map,t=new Set,r=(l,s)=>{e.get(l)?.forEach(h=>h(s));},u=(l,s)=>(e.has(l)||e.set(l,new Set),e.get(l).add(s),()=>e.get(l)?.delete(s));return {usePlugin:l=>{let s=new Set,h=(n,N)=>{let f=u(n,N);return s.add(f),f};l.apply({on:h}),p.add(l);let M=()=>{s.forEach(n=>n()),s.clear(),p.delete(l),t.delete(M);};return t.add(M),M},emit:r,destroyPlugin:()=>{t.forEach(l=>l()),t.clear(),e.clear(),p.clear();}}};function Ze(){let{on:p,call:e}=Ne();return {onStart:p,callOnStart:e}}var Je=(p={frameQuota:12})=>{let e=performance.now(),t=0,r=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>r,reset(){e=performance.now(),t=0,r=true;},shouldYield(){return !r&&(++t&15)!==0?false:!!(performance.now()-e>p.frameQuota||u())},async yieldToMain(){return new Promise(c=>{Be(()=>{e=performance.now(),t=0,r&&(r=false),c();});})}}},Be=p=>{let{port1:e,port2:t}=new MessageChannel;e.onmessage=p,t.postMessage(null);};function et(p,e,t,r,u,c){let i=new Map,l=p.useGreedy,s=null,h=()=>{i.clear();},M={path:null,level:0,targetLevel:0,currentLevel:0,pendingParentsCount:0,active:0,pending:0,blocked:0,nums:0,asyncNums:0},n={path:null,type:0,triggerPath:null,calledBy:0,key:null,value:null,error:null,token:null,duration:null,detail:M};return {TaskRunner:async(f,g)=>{let P=Symbol("token"),R=typeof f=="number"?f:"__NOTIFY_ALL__";i.set(R,P),s=P;let S=false;c.reset();let Q=t.GetMaxUid()+3,X=new Array(Q).fill(0),Y=0,y=new Uint8Array(Q),q=new Int32Array(Q),V=new Int32Array(Q),a=new Int32Array(Q*2),T=0,A=0,k=new Int32Array(Q*2),_=0,O=0,D=new Int32Array(Q*2),b=0,U=0;g.forEach(E=>{X[E]=1,e.GetAllNextDependency(E).forEach(se=>{X[se]=1;});});let K=new Array(Q).fill(null),v=[],o=t.Turnstile,d=new Array(Q).fill(null).map(()=>[]),B=new Array(Q).fill(null).map(()=>[]),H=o.volatileLevels.size>0,ne=H?o.hasObserver:E=>false,le=H?o.receiveGhosts:()=>[],ue=H?o.resolveGhosts:()=>[],Me=H?o.getTriggerKeys:()=>[],Se=o?.volatileLevels||new Set,ye=-1,ee=e.GetUidToLevelMap(),re=0,be=0,ge=E=>{e.GetAllNextDependency(E).forEach(ae=>{let te=ee.get(ae)||0;te>be&&(be=te);});},Ae=new Set;typeof f=="number"&&(y[f]|=16,Ae.add(f),ge(f),u.flushPathSet.add(f));let ve=typeof f=="number"?[f]:g;c.shouldYield()&&(u.requestUpdate(),await c.yieldToMain());let Ie=ve.map(async E=>{if(ne(E)){let se=t.GetNodeByUid(E),ae=Me(E);if(ae.length>0){let te=le(se,ae);return te instanceof Promise&&(te=await te),{seed:E,hitTargets:te}}}return {seed:E,hitTargets:[]}});if((await Promise.all(Ie)).forEach(({seed:E,hitTargets:se})=>{if(se&&se.length>0){v.push(...se);let ae=ee.get(E)||0;ye=Math.max(ye,ae);}}),(v.length>0||ve.length>1)&&(u.requestUpdate(),await c.yieldToMain(),i.get(R)!==P))return;let Te=v.length>0;g.forEach(E=>{if(!Ae.has(E))if(Te){let se=ee.get(E)??0;V[E]=se,y[E]&4||(y[E]|=4,D[b++]=E,U++);let ae=t.GetPathByUid(E);n.path=ae,n.type=2,r.emit(14,n);}else y[E]&1||(y[E]|=1,a[T++]=E,A++),ge(E);}),typeof f=="number"?re=ee.get(f)??0:re=Math.min(...g.map(E=>ee.get(E)??0));let Ce=performance.now(),Ee=typeof R=="number"?t.GetPathByUid(R):"__NOTIFY_ALL__";n.path=Ee,n.token=P,r.emit(0,n),r.callOnStart({path:Ee});let ke=false,Ke=30,Le=(E,se)=>{let ae=false,te=false,L=false,x=t.GetNodeByUid(E),$=t.GetPathByUid(E),j=x.calledBy,I=d[E];I.length=0;let C=B[E];C.length=0;let G=false;if(x.calledBy===1){G=true,ae=true,u.flushPathSet.add(E);let w=K[E];w&&(I.push(...w),K[E]=null);}let F=(w,Z)=>{let W=ee.get(w)??0,oe=t.GetNodeByUid(w),J=t.GetPathByUid(w),pe=(j===1||j===2)&&W<=ye;pe&&y[w]&16&&(y[w]&=-17,n.path=J,n.triggerPath=$,r.emit(11,n));let ie=0;if(!(y[w]&49)){if(y[w]&2)ie=q[w]-1;else {if(W>re&&O>Ke){V[w]=W,y[w]&4||(y[w]|=4,D[b++]=w,U++),n.path=J,n.type=7,r.emit(12,n);return}let me=e.GetPrevDependency(w),z=0;for(let he of me){if(y[he]&16)continue;(ee.get(he)??0)>re&&z++;}ie=z;}if(ie<=0){let me=(y[w]&1)!==0,z=(y[w]&32)!==0;if(me||z){n.path=J,n.type=z?3:3.1,r.emit(12,n);return}y[w]&2&&(y[w]&=-3,O--),pe?oe.calledBy=2:oe.calledBy=0,y[w]&1||(y[w]|=1,a[T++]=w,A++),n.path=J,n.type=Z,M.path=$,r.emit(13,n);}else q[w]=ie,y[w]&2||(y[w]|=2,k[_++]=w,O++);}},de=(w=[])=>{if(i.get(R)!==P)return;if(w.length){let W={},oe=x.proxy;for(let J of w){let pe=(J.args||[]).reduce((ie,me)=>(ie[me]=oe[me],ie),{});try{let ie=J.fn(pe);ie&&typeof ie=="object"&&Object.assign(W,ie);}catch(ie){}}for(let J in W)if(J in x.state)Object.is(x.state[J],W[J])||(x.state[J]=W[J],I.push(J),ae=true,(x.notifyKeys.size===0||x.notifyKeys.has(J))&&(te=true));else throw {error:`wrong effect in ${String(x.path)}`}}ae&&u.flushPathSet.add(E);let Z=(W=[])=>{if(i.get(R)!==P)return;W&&W.length>0&&(v.push(...W),ye=Math.max(ye,ee.get(E)||0)),I.length=0,n.path=$,n.calledBy=x.calledBy,r.emit(7,n),y[E]|=16;let oe=e.GetNextDependency(E);(te||L)&&(ge(E),e.GetAllNextDependency(E).forEach(he=>{X[he]=1;}));let J=t.GetNodeByUid(E),pe=ee.get(E)??0,ie=Se.has(pe)||v.length>0;for(let z of oe){let he=ee.get(z)??0,Pe=t.GetPathByUid(z);if(ie&&he>=pe){V[z]=he,y[z]&4||(y[z]|=4,D[b++]=z,U++),n.path=Pe,n.type=2,r.emit(14,n);continue}if(y[z]&16){n.path=Pe,n.type=2,r.emit(12,n);continue}if(y[z]&32||(y[z]&1)!==0){n.path=Pe,n.type=y[z]&32?3:3.1,r.emit(12,n);continue}if(te||L)F(z,1);else if(y[z]&2)F(z,2);else {let st=ee.get(z);V[z]=st,y[z]&4||(y[z]|=4,D[b++]=z,U++,n.path=Pe,n.type=1,r.emit(14,n));}}y[E]&32&&(y[E]&=-33,Y--),J.calledBy=0,(()=>{if(!S){S=true;let z=Y,he=A,Pe=O;n.path=$,n.type=1,M.active=z,M.pending=he,M.blocked=Pe,r.emit(5,n),Ge();}})();};if(ne(E)&&I.length>0){let W=le(x,I);W instanceof Promise?W.then(Z).catch(ce):Z(W);}else Z([]);},ce=w=>{n.path=$,n.error=w,r.emit(9,n);let Z=Symbol("abort");i.set(R,Z),T=0,A=0,_=0,O=0,b=0,U=0,y.fill(0),Y=0,K.fill(null),r.callOnError(w);},fe=(w,Z)=>{w!==x.state[Z]&&(x.state[Z]=w,ae=true,I.push(String(Z)),n.path=$,n.key=Z,n.value=w,n.calledBy=x.calledBy,r.emit(15,n),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&(te=true)),t.GetBucket(x.nodeBucket[Z]).isForceNotify()&&(L=true),(te||L)&&ge(E);};n.path=$,n.calledBy=x.calledBy,r.emit(6,n);try{let w=[];for(let Z in x.nodeBucket){let W=t.GetBucket(x.nodeBucket[Z]);if(w.push(...W.getSideEffect()),G){r.emit(15,{path:$,key:String(Z),value:x.state[Z],calledBy:x.calledBy}),W.isForceNotify()&&(L=!0),(x.notifyKeys.size===0||x.notifyKeys.has(Z))&&ge(E);continue}let oe=W.evaluate({affectKey:Z,triggerUid:se,getProxyByUid:J=>t.GetNodeByUid(J).proxy,getStateByUid:J=>t.GetNodeByUid(J).state,GetToken:()=>P});if(oe instanceof Promise){let J=oe.then(pe=>{i.get(R)===P&&fe(pe,Z);});C.push(J);}else fe(oe,Z);}if(C.length>0)return Promise.all(C).then(()=>{de(w);}).catch(ce);de(w);return}catch(w){ce(w);}},Ge=async()=>{if(i.get(R)!==P){S=false;return}S=true;let E=c.getIsFirstFrame(),se=0,ae=()=>30,te=0,L=ae();try{for(;i.get(R)===P;){let x=te>=L,$=c.shouldYield();if(x||$){if(te>0&&(se++,(E||se%2===0)&&u.requestUpdate()),await c.yieldToMain(),i.get(R)!==P)break;te=0,E=c.getIsFirstFrame();}if(A>0&&Y<40){let j=T,I=0;for(let C=0;C<j;C++){let G=a[C];if((y[G]&1)===0)continue;if(Y>=40||te>=L||c.shouldYield()){for(let W=C;W<T;W++){let oe=a[W];y[oe]&1&&(a[I++]=oe);}T=I,A=I;break}let F=t.GetNodeByUid(G),de=t.GetPathByUid(G),ce=ee.get(G)??0,fe=e.GetPrevDependency(G),w=fe.length>1;if((!l||w)&&ce>re){y[G]&=-2,A--;let W=fe.filter(oe=>X[oe]===1&&(y[oe]&16)===0).length;q[G]=W||0,y[G]&2||(y[G]|=2,k[_++]=G,O++),n.path=de,n.type=W>0?4:5,M.targetLevel=ce,M.currentLevel=re,M.pendingParentsCount=W,r.emit(12,n);continue}y[G]&=-2,A--,(y[G]&32)===0&&(y[G]|=32,Y++),n.path=de,n.calledBy=F.calledBy,r.emit(8,n),Le(G,f),te++;}if(T>j){for(let C=j;C<T;C++){let G=a[C];y[G]&1&&(a[I++]=G);}T=I,A=T;}else T=I;if(A>0&&Y<40)continue}if(te<L&&l&&O>0&&Y<40){let j=!1,I=0,C=0;for(let G=0;G<_;G++){let F=k[G];if((y[F]&2)===0)continue;if(q[F]<=0&&I<L){let ce=ee.get(F)??0,fe=e.GetPrevDependency(F);if(ce<=re||fe.length<=1){y[F]&=-3,O--,y[F]&1||(y[F]|=1,a[T++]=F,A++),I++,j=!0;let w=t.GetPathByUid(F);n.path=w,n.type=4,r.emit(13,n);continue}}k[C++]=F;}if(_=C,I>0)continue;if(j){if(c.shouldYield()&&(await c.yieldToMain(),i.get(R)!==P))break;continue}}if(Y===0&&A===0){if(v.length>0){let I=!1,C=re,G=Array.from(new Set(v));v.length=0;for(let F of G){let de=t.GetNodeByUid(F),ce=ue(de);if(ce&&ce.length>0){I=!0,de.calledBy=1,K[F]=ce,y[F]&=-17,y[F]&2&&(y[F]&=-3,O--),y[F]&1||(y[F]|=1,a[T++]=F,A++);let fe=ee.get(de.uid)??0;fe<C&&(C=fe),ge(de.uid),u.flushPathSet.add(de.uid);}}if(I){if(C<re&&(re=C),u.requestUpdate(),c.shouldYield()&&(await c.yieldToMain(),i.get(R)!==P))break;continue}}let j=1/0;for(let I=0;I<b;I++){let C=D[I];if(y[C]&4){let G=V[C];G<j&&(j=G);}}for(let I=0;I<_;I++){let C=k[I];if(y[C]&2){let G=ee.get(C)??0;G>re&&G<j&&(j=G);}}if(j!==1/0&&j<=be){re=j;let I=0;for(let G=0;G<b;G++){let F=D[G];y[F]&4&&(V[F]===j?(y[F]&=-5,U--,y[F]&1||(y[F]|=1,a[T++]=F,A++)):D[I++]=F);}b=I;let C=0;for(let G=0;G<_;G++){let F=k[G];if(y[F]&2)if((ee.get(F)??0)===j){y[F]&=-3,O--,y[F]&1||(y[F]|=1,a[T++]=F,A++);let ce=t.GetPathByUid(F);n.path=ce,n.type=3,M.level=j,r.emit(13,n);}else k[C++]=F;}_=C;continue}else {for(let I=0;I<b;I++){let C=D[I];if(y[C]&4){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}b=0,U=0;for(let I=0;I<_;I++){let C=k[I];if(y[C]&2){y[C]|=16;let G=t.GetPathByUid(C);n.path=G,n.type=6,r.emit(12,n);}}_=0,O=0;break}}A>0&&Y>=40&&(n.type=2,r.emit(4,n));break}}finally{S=false;let x=Y+O+A,$=o.inFlightCount||0;if(!(s===P)){n.token=P,r.emit(3,n);return}if(u.requestUpdate(),x===0&&$===0){if(i.get(R)===P&&!ke){ke=true,n.type=1,r.emit(2,n),o.resetCounters(),K.fill(null);let I=performance.now();ye=-1,i.delete(R),n.token=P,n.duration=(I-Ce).toFixed(2.1)+"ms",r.emit(1,n),Promise.resolve().then(()=>{r.callOnSuccess();});}}else {let I=x===0&&$>0?3:1;if(n.type=I,M.nums=Y,M.asyncNums=$,r.emit(4,n),$>0){let C=()=>{s===P&&(o.inFlightCount===0?Be(()=>{o.inFlightCount===0?Ge():requestAnimationFrame(C);}):requestAnimationFrame(C));};requestAnimationFrame(C);}}}};Ge();},CancelTask:h}}function Ue(p){let{path:e,uid:t,type:r,meta:u,dirtySignal:c,state:i}=p,l=null,s=["path","uid","type","dependOn","nodeBucket"],M={path:e,uid:t,type:r,meta:u,dirtySignal:c,createView:(n={})=>{if(l&&Object.keys(n).length===0)return l;let N=new Proxy(n,{get(f,g){let m=g;return Reflect.has(f,g)?Reflect.get(f,g):m in p.state?p.state[m]:m in p?p[m]:u&&m in u?u[m]:Reflect.get(f,g)},set(f,g,m){return false},ownKeys(f){let g=new Set([...Reflect.ownKeys(f),...Object.keys(i||{}),...Object.keys(u||{}),...s]);return Array.from(g)},getOwnPropertyDescriptor(f,g){let m=g;return Reflect.has(f,g)||i&&m in i||u&&m in u||s.includes(m)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,g)}});return l=N,N}};return "children"in p?{...M,children:p.children}:{...M,state:p.state,nodeBucket:p.nodeBucket,notifyKeys:p.notifyKeys,dependOn:p.dependOn,calledBy:0,get proxy(){return l}}}var tt=(p,e,t,r,u,c,i)=>{let l=p.useEntangleStep,s=[],h=[],M=new Set,n=r,g=t,m=0,P=0,R=100,S=()=>{let a={link:null,impactNode:null,impactUid:-1,hitTargetUids:null,isDirty:false,propose:null};return a.propose={set:(T,A,k=1)=>{A!==a.impactNode.state[T]&&(a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,value:A,weight:k}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true));},update:(T,A,k="add")=>{a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,delta:A,op:k,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);},patch:(T,A)=>{a.link.count++,(!h[a.impactUid]||h[a.impactUid].length===0)&&(h[a.impactUid]=[],P++),h[a.impactUid].push({key:T,patch:A,weight:1}),a.isDirty||(a.hitTargetUids.push(a.impactUid),a.isDirty=true);}},a},Q=Array.from({length:R},S),X=R-1,Y=(a,T,A)=>{let k=T.path,_=a.impact;if(a.count>=l){i.emit("entangle:blocked",{observer:k,target:_,count:a.count});return}let O=n(_),D=a.isProxy?T.proxy:T,b=a.isProxy?O.proxy:O;if(a.filter&&!a.filter(D,b))return;let U,K=true;X<0?(U=S(),K=false):U=Q[X--],U.isDirty=false,U.link=a,U.impactNode=O,U.impactUid=O.uid,U.hitTargetUids=A;let v=a.emit(D,b,U.propose);if(v instanceof Promise||v&&typeof v.then=="function")return m++,(async()=>{try{await v;}catch(o){i.emit("node:error",{path:k,error:o}),i.onError({path:k,error:o});}finally{m--,K&&(Q[++X]=U);}})();K&&(Q[++X]=U);};return {useEntangle:a=>{let{cause:T,impact:A,via:k,emit:_,filter:O,isProxy:D}=a;if(!k||k.length===0){i.emit("entangle:warn",{path:T,type:"no_keys"});return}let U=n(T).uid;s[U]||(s[U]=new Map);let K=s[U];for(let v=0;v<k.length;v++){let o=k[v];K.has(o)||K.set(o,[]),K.get(o).push({impact:A,emit:_,filter:O,count:0,isProxy:!!D});}},updateEntangleLevel:()=>{let a=g();M.clear();for(let T=0;T<s.length;T++)if(s[T]!==void 0){let A=a.get(T)||0;M.add(A);}},Turnstile:{volatileLevels:M,get inFlightCount(){return m},get hasPendingGhosts(){return P>0},hasObserver:a=>s[a]!==void 0,getTriggerKeys:a=>{let T=s[a];return T?Array.from(T.keys()):[]},receiveGhosts:(a,T=[])=>{let A=a.uid,k=[],_=s[A];if(!_||T.length===0)return k;let O=[];for(let v=0;v<T.length;v++){let o=_.get(T[v]);if(o)for(let d=0;d<o.length;d++)O.push(o[d]);}let D=0,b=false,U=null;for(;D<O.length;D++){if(e.shouldYield()){b=true;break}let v=Y(O[D],a,k);if(v){U=v,b=true,D++;break}}let K=()=>{if(k.length<=1)return k;let v=[],o=Object.create(null);for(let d=0;d<k.length;d++){let B=k[d];o[B]||(o[B]=true,v.push(B));}return v};return b?(async()=>{for(U&&await U,e.shouldYield()&&await e.yieldToMain();D<O.length;){let v=[],o=Math.min(D+R,O.length);for(;D<o;D++){let d=Y(O[D],a,k);d&&v.push(d);}v.length>0&&await Promise.all(v.map(async d=>{await d,e.shouldYield()&&await e.yieldToMain();})),e.shouldYield()&&await e.yieldToMain();}return K()})():K()},resolveGhosts:a=>{let T=a.uid,A=h[T];if(!A||A.length===0)return [];let k=[],_=Object.create(null);for(let O=0;O<A.length;O++){let D=A[O];_[D.key]||(_[D.key]=[]),_[D.key].push(D);}for(let O in _){let D=_[O],b=a.state[O],U,K=-1/0,v=false;for(let o=0;o<D.length;o++){let d=D[o];if(d.patch!==void 0&&(b=d.patch(b)),d.value!==void 0){let B=d.weight??1;B>=K&&(K=B,U=d.value,v=true);}}v&&(b=U);for(let o=0;o<D.length;o++){let d=D[o];if(d.delta!==void 0)switch(d.op||"add"){case "add":b=(typeof b=="number"?b:0)+d.delta;break;case "remove":b=Array.isArray(b)?b.filter(H=>H!==d.delta):b;break;case "intersect":b=Array.isArray(b)?b.filter(H=>d.delta.includes(H)):d.delta;break;case "union":{let H=Array.isArray(b)?b:[],ne=Array.isArray(d.delta)?d.delta:[d.delta];b=[...new Set([...H,...ne])];break}case "merge":{let H=typeof b=="object"&&b!==null&&!Array.isArray(b)?b:{},ne=typeof d.delta=="object"&&d.delta!==null&&!Array.isArray(d.delta)?d.delta:{};b={...H,...ne};break}}}Object.is(a.state[O],b)||(a.state[O]=b,k.push(O));}return h[T]=[],P--,k.length>0?k:[]},resetCounters:()=>{for(let a=0;a<s.length;a++){let T=s[a];if(T)for(let A of T.values())for(let k=0;k<A.length;k++)A[k].count=0;}}}}};function nt(p,e,t,r,u){let c=Je(),i=0,l=new Map,s=[],h=[],M=[],n=[],N=false,f=new Set,m=async()=>{let o=Array.from(f);if(f.clear(),"signalTrigger"in u&&typeof u.signalTrigger=="function")for(let d of o){let B=T(d);u.signalTrigger(B.dirtySignal);}else "emit"in u&&u.emit(o);},P=()=>{N||(N=true,requestAnimationFrame(()=>{try{for(;f.size>0;)m();}finally{N=false;}}));},{useEntangle:R,updateEntangleLevel:S,Turnstile:Q}=tt({useEntangleStep:p.useEntangleStep},c,e.GetUidToLevelMap,a,T,A,{emit:r.emit,onError:r.callOnError}),{TaskRunner:X,CancelTask:Y}=et({useGreedy:p.useGreedy},e,{GetNodeByPath:a,GetNodeByUid:T,GetPathByUid:A,GetBucket:O,GetMaxUid:D,Turnstile:Q},r,{requestUpdate:P,flushPathSet:f},c),y=o=>{throw new Error(`[MeshFlow] Duplicate Path: ${o}`)},q=o=>{l.has(o.path)&&y(String(o.path));let d=++i,B={path:o.path,getNode:le=>a(le)},H=(le,ue="value")=>{let Me=le({...B}),Se=a(o.path);if(t.createHistoryAction&&t.pushIntoHistory){let ye=t.createHistoryAction([{path:o.path,value:Se.state[ue]},{path:o.path,value:Me}],ee=>{let re=a(ee.path);re.state[ue]=ee.value,b(ee.path);});t.pushIntoHistory(ye);}Se.state[ue]=Me,b(o.path);},ne=Ue({uid:d,type:o.type,path:o.path,state:o.state,meta:o.meta,nodeBucket:{},dirtySignal:"signalCreator"in u?u.signalCreator():void 0,notifyKeys:o.notifyKeys,dependOn:H});return l.set(ne.path,d),M[d]=ne.path,s[d]=ne,ne},V=o=>{l.has(o.path)&&y(String(o.path));let d=++i,B=Ue({uid:d,type:o.type,path:o.path,state:{},meta:o,nodeBucket:{},children:o.children});return l.set(B.path,d),h[d]=B,B};function a(o){let d=l.get(o),B=s[d];if(!B)throw Error("Wrong id");return B}function T(o){let d=s[o];if(!d)throw Error("Wrong id");return d}function A(o){return M[o]}function k(o){let d=l.get(o);return h[d]}function _(o){return n.push(o)-1}function O(o){let d=n[o];if(!d)throw Error("Wrong id");return d}function D(){return i}let b=o=>{let d=a(o);if(!d)throw Error("Wrong id");f.add(d.uid),P();let B=e.GetNextDependency(d.uid);U(d.uid,B);};function U(o,d){X(o,d);}return {registerNode:q,registerGroupNode:V,GetNodeByPath:a,GetGroupByPath:k,notify:b,notifyAll:async()=>{Promise.resolve().then(async()=>{let o=e.GetDependencyOrder();if(!o||o.length===0)return;let d=o[0];try{X(null,d);}catch(B){throw r.callOnError(B),B}finally{P();}});},batchNotify:o=>{if(!o||o.length===0)return;if(t.createHistoryAction&&t.pushIntoHistory){let B=t.createHistoryAction([o.map(H=>({path:H.path,key:H.key,value:a(H.path).state[H.key]})),o.map(H=>({path:H.path,key:H.key,value:H.value}))],H=>{let ne=new Set;H.forEach(le=>{let ue=a(le.path);ue.state[le.key]=le.value,f.add(le.path),ne.add(le.uid);}),P(),ne.size>0&&X(null,Array.from(ne));});t.pushIntoHistory(B);}let d=new Set;o.forEach(B=>{let H=a(B.path);H.state[B.key]=B.value,f.add(H.uid),d.add(H.uid);}),P(),d.size>0&&X(null,Array.from(d));},useEntangle:R,updateEntangleLevel:S,SetBucket:_,GetBucket:O,CancelTask:Y,UITrigger:u,UidToNodeMap:s}}function rt(p,e){let t=false,r=false,u=false,c=false,i=new Map,l=[],s=[],h=[],M=[],n=[],N=[],f=[],g=new Map,{GetNextDependency:P,GetPrevDependency:R,GetAllPrevDependency:S,GetAllNextDependency:Q,rebuildDirectDependencyMaps:X}=ze(()=>l,()=>h,()=>N,()=>n),Y={},y={};if(e.modules.useHistory){let L=e.modules.useHistory,x;L.isMeshModuleInited?x=L:x=L();let{Undo:$,Redo:j,PushIntoHistory:I,CreateHistoryAction:C,updateUndoSize:G,updateRedoSize:F}=x();Y.pushIntoHistory=I,Y.createHistoryAction=C,y={Undo:$,Redo:j,updateUndoSize:G,updateRedoSize:F};}let q=!!e.modules.useMeshRenderGate,V={};if(q){let L=e.modules.useMeshRenderGate.isMeshModuleInited,x=e.modules.useMeshRenderGate;V=(L?x:x())(()=>ue);}let{onError:a,callOnError:T}=Qe(),{onSuccess:A,callOnSuccess:k}=$e(),{onStart:_,callOnStart:O}=Ze(),{emit:D,usePlugin:b,destroyPlugin:U}=Xe(),{SetTrace:K,useTrace:v}=je(),o=v();b(o);let d=q?{...V}:{...e.UITrigger},B=nt({useGreedy:e.config.useGreedy,useEntangleStep:e.config.useEntangleStep||100},{GetDependencyOrder:()=>f,GetAllNextDependency:Q,GetNextDependency:P,GetPrevDependency:R,GetAllPrevDependency:S,GetUidToLevelMap:()=>g},Y,{callOnError:T,callOnSuccess:k,callOnStart:O,emit:D},d),{SetBucket:H,GetBucket:ne,GetGroupByPath:le,GetNodeByPath:ue,notifyAll:Me,useEntangle:Se,updateEntangleLevel:ye,CancelTask:ee}=B;q&&V.init();let re={};if(e.modules.useInternalForm){let{uiSchema:L,GetFormData:x}=e.modules.useInternalForm(B,p);re={uiSchema:L,GetFormData:x};}let be={};if(e.modules.useSchemaValidators){let{SetValidators:L}=e.modules.useSchemaValidators(ue);be={SetValidators:L};}let{SetRule:ge,SetRules:Ae}=He(ue,H,ne,l,h,s,M,i),{SetStrategy:ve}=Ye(ue,ne),Ie=qe(l,i),Oe=()=>{let L=Ie();f=L.steps,g=L.levelMap,Te();},Te=()=>{u&&(ye(),u=false);},Ce=()=>{c||(c=true,Promise.resolve().then(Te).finally(()=>{c=false;}));},Ee=()=>{r||(r=true,Promise.resolve().then(()=>{if(Oe(),t){let{directNextMap:L,directPrevMap:x}=X(f.flat());n=L,N=x;}}).finally(()=>{r=false,t=false;}));};return {SetRule:(L,x,$,j)=>{ge(L,x,$,j),t=true,Ee();},SetRules:(L,x,$,j)=>{Ae(L,x,$,j),t=true,Ee();},SetStrategy:ve,useEntangle:L=>{Se(L),u=true,Ce();},SetTrace:K,usePlugin:b,SetValue:(L,x,$)=>{Te(),ue(L).dependOn(()=>$,x);},GetValue:(L,x="value")=>ue(L).proxy[x],SetValues:L=>{Te(),B.batchNotify(L);},GetGroupByPath:le,notifyAll:async()=>{Oe(),await Me();},GetAllDependency:()=>l,GetDependencyOrder:()=>f,historyExports:y,formExports:re,validatorExports:be,batchRenderExport:V,hasRenderGate:()=>q,onError:a,onSuccess:A,onStart:_,scheduler:B,destroyPlugin:U,CancelTask:ee}}var xe=new Map,at=(p,e,t)=>{try{if(xe.has(p))throw Error("engineID repeated");let r=rt(e,{config:t.config||{useGreedy:!1},UITrigger:t.UITrigger,modules:t.modules??{},plugins:{}}),{SetRule:u,SetRules:c,SetValues:i,SetStrategy:l,SetValue:s,GetValue:h,usePlugin:M,useEntangle:n,GetGroupByPath:N,notifyAll:f,SetTrace:g,GetAllDependency:m,GetDependencyOrder:P,historyExports:R,formExports:S,validatorExports:Q,batchRenderExport:X,hasRenderGate:Y,onError:y,onSuccess:q,onStart:V,scheduler:a,destroyPlugin:T,CancelTask:A}=r,k={config:{SetRule:u,SetRules:c,SetStrategy:l,notifyAll:f,SetTrace:g,usePlugin:M,hasRenderGate:Y,useEntangle:n},data:{SetValue:s,GetValue:h,SetValues:i,GetGroupByPath:N},dependency:{GetAllDependency:m,GetDependencyOrder:P},hooks:{onError:y,onSuccess:q,onStart:V}},_=(b,U,K)=>{!U||typeof U!="object"||Object.keys(U).forEach(v=>{let o=U[v];if(typeof o=="object"&&o!==null)b[v]=b[v]||{},_(b[v],o,K);else if(typeof o=="function"){let d=v;if(d==="useMeshRenderGate")d="render";else if(d.startsWith("use")){let B=d.slice(3);d=B.charAt(0).toLowerCase()+B.slice(1);}v==="useHistory"&&K.exports.history&&Object.keys(K.exports.history).length>0?b[d]=K.exports.history:v==="useInternalForm"&&K.exports.form&&Object.keys(K.exports.form).length>0?b[d]=K.exports.form:v==="useSchemaValidators"&&K.exports.validator&&Object.keys(K.exports.validator).length>0?b[d]=K.exports.validator:v==="useMeshRenderGate"&&K.exports.render?b[d]=K.exports.render:b[d]=o(K.scheduler,K.Schema);}});},O={...k,destroyPlugin:T,CancelTask:A,modules:{}},D=t.modules;return D&&_(O.modules,D,{scheduler:a,Schema:e,exports:{history:R,form:S,validator:Q,render:X}}),xe.set(p,O),O}catch(r){throw Error(r)}},yn=()=>(p,e,t)=>ot(p,e,t),fn=p=>{let e=xe.get(p);if(!e)throw Error("Engine not found.");return e},pn=p=>{let e=xe.get(p);e.destroyPlugin(),e.CancelTask(),xe.delete(p);},ot=at;export{Ve as DefaultStrategy,we as MeshFlowEventsName,Fe as TriggerCause,pn as deleteEngine,fn as useEngine,at as useEngineManager,ot as useMeshFlow,yn as useMeshFlowDefiner,nt as useScheduler};
package/metafile-cjs.json CHANGED
@@ -1 +1 @@
1
- {"inputs":{"utils/core/engine/bucket.ts":{"bytes":20501,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":8165,"imports":[{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useStrategy.ts":{"bytes":526,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/plugins/useExecutionTrace.ts":{"bytes":3723,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useDepenency.ts":{"bytes":6099,"imports":[],"format":"esm"},"utils/core/hooks/useCreateHook.ts":{"bytes":436,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":481,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnSuccess.ts":{"bytes":216,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/plugins/usePlugin.ts":{"bytes":2959,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnStart.ts":{"bytes":210,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/utils/util.ts":{"bytes":5758,"imports":[],"format":"esm"},"utils/core/types/types.ts":{"bytes":5908,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshTask.ts":{"bytes":60113,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":4002,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useSetEntangle.ts":{"bytes":14127,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":12626,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useMeshTask.ts","kind":"import-statement","original":"./useMeshTask"},{"path":"utils/core/engine/useMeshNode.ts","kind":"import-statement","original":"./useMeshNode"},{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/dependency/useSetEntangle.ts","kind":"import-statement","original":"../dependency/useSetEntangle"}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":12256,"imports":[{"path":"utils/core/dependency/useSetRule.ts","kind":"import-statement","original":"../dependency/useSetRule"},{"path":"utils/core/dependency/useStrategy.ts","kind":"import-statement","original":"../dependency/useStrategy"},{"path":"utils/core/plugins/useExecutionTrace.ts","kind":"import-statement","original":"../plugins/useExecutionTrace"},{"path":"utils/core/dependency/useDepenency.ts","kind":"import-statement","original":"../dependency/useDepenency"},{"path":"utils/core/hooks/useOnError.ts","kind":"import-statement","original":"../hooks/useOnError"},{"path":"utils/core/hooks/useOnSuccess.ts","kind":"import-statement","original":"../hooks/useOnSuccess"},{"path":"utils/core/plugins/usePlugin.ts","kind":"import-statement","original":"../plugins/usePlugin"},{"path":"utils/core/hooks/useOnStart.ts","kind":"import-statement","original":"../hooks/useOnStart"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"./useScheduler"},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineManager.ts":{"bytes":11202,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true},{"path":"utils/core/engine/useEngineInstance.ts","kind":"import-statement","original":"./useEngineInstance"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.js":{"imports":[],"exports":["DefaultStrategy","TriggerCause","deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":5020},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1754},"utils/core/dependency/useStrategy.ts":{"bytesInOutput":115},"utils/core/plugins/useExecutionTrace.ts":{"bytesInOutput":760},"utils/core/dependency/useDepenency.ts":{"bytesInOutput":1244},"utils/core/hooks/useCreateHook.ts":{"bytesInOutput":122},"utils/core/hooks/useOnError.ts":{"bytesInOutput":68},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":72},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":424},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":68},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/types/types.ts":{"bytesInOutput":117},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":7679},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":932},"utils/core/dependency/useSetEntangle.ts":{"bytesInOutput":3145},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2496},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2428},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1881}},"bytes":28967}}}
1
+ {"inputs":{"utils/core/types/types.ts":{"bytes":7309,"imports":[{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/bucket.ts":{"bytes":20458,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":9680,"imports":[{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useStrategy.ts":{"bytes":557,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/plugins/useExecutionTrace.ts":{"bytes":3887,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/dependency/useDepenency.ts":{"bytes":6586,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/hooks/useCreateHook.ts":{"bytes":436,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":481,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnSuccess.ts":{"bytes":216,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/plugins/usePlugin.ts":{"bytes":2971,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnStart.ts":{"bytes":210,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/utils/util.ts":{"bytes":6875,"imports":[],"format":"esm"},"utils/core/engine/useMeshTask.ts":{"bytes":82718,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"./bucket","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":4009,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useSetEntangle.ts":{"bytes":13440,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13453,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/useMeshTask.ts","kind":"import-statement","original":"./useMeshTask"},{"path":"utils/core/engine/useMeshNode.ts","kind":"import-statement","original":"./useMeshNode"},{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/dependency/useSetEntangle.ts","kind":"import-statement","original":"../dependency/useSetEntangle"},{"path":"./bucket","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":13112,"imports":[{"path":"utils/core/dependency/useSetRule.ts","kind":"import-statement","original":"../dependency/useSetRule"},{"path":"utils/core/dependency/useStrategy.ts","kind":"import-statement","original":"../dependency/useStrategy"},{"path":"utils/core/plugins/useExecutionTrace.ts","kind":"import-statement","original":"../plugins/useExecutionTrace"},{"path":"utils/core/dependency/useDepenency.ts","kind":"import-statement","original":"../dependency/useDepenency"},{"path":"utils/core/hooks/useOnError.ts","kind":"import-statement","original":"../hooks/useOnError"},{"path":"utils/core/hooks/useOnSuccess.ts","kind":"import-statement","original":"../hooks/useOnSuccess"},{"path":"utils/core/plugins/usePlugin.ts","kind":"import-statement","original":"../plugins/usePlugin"},{"path":"utils/core/hooks/useOnStart.ts","kind":"import-statement","original":"../hooks/useOnStart"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"./useScheduler"},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineManager.ts":{"bytes":11068,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"../utils/util","kind":"import-statement","external":true},{"path":"utils/core/engine/useEngineInstance.ts","kind":"import-statement","original":"./useEngineInstance"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.js":{"imports":[],"exports":["DefaultStrategy","MeshFlowEventsName","TriggerCause","deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/types/types.ts":{"bytesInOutput":735},"utils/core/engine/bucket.ts":{"bytesInOutput":4991},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":2105},"utils/core/dependency/useStrategy.ts":{"bytesInOutput":128},"utils/core/plugins/useExecutionTrace.ts":{"bytesInOutput":663},"utils/core/dependency/useDepenency.ts":{"bytesInOutput":1034},"utils/core/hooks/useCreateHook.ts":{"bytesInOutput":122},"utils/core/hooks/useOnError.ts":{"bytesInOutput":68},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":72},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":424},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":68},"utils/core/utils/util.ts":{"bytesInOutput":462},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":8773},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":891},"utils/core/dependency/useSetEntangle.ts":{"bytesInOutput":4029},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2887},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2501},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1853}},"bytes":32001}}}
package/metafile-esm.json CHANGED
@@ -1 +1 @@
1
- {"inputs":{"utils/core/engine/bucket.ts":{"bytes":20501,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":8165,"imports":[{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useStrategy.ts":{"bytes":526,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/plugins/useExecutionTrace.ts":{"bytes":3723,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useDepenency.ts":{"bytes":6099,"imports":[],"format":"esm"},"utils/core/hooks/useCreateHook.ts":{"bytes":436,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":481,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnSuccess.ts":{"bytes":216,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/plugins/usePlugin.ts":{"bytes":2959,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnStart.ts":{"bytes":210,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/utils/util.ts":{"bytes":5758,"imports":[],"format":"esm"},"utils/core/types/types.ts":{"bytes":5908,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshTask.ts":{"bytes":60113,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":4002,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useSetEntangle.ts":{"bytes":14127,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":12626,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useMeshTask.ts","kind":"import-statement","original":"./useMeshTask"},{"path":"utils/core/engine/useMeshNode.ts","kind":"import-statement","original":"./useMeshNode"},{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/dependency/useSetEntangle.ts","kind":"import-statement","original":"../dependency/useSetEntangle"}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":12256,"imports":[{"path":"utils/core/dependency/useSetRule.ts","kind":"import-statement","original":"../dependency/useSetRule"},{"path":"utils/core/dependency/useStrategy.ts","kind":"import-statement","original":"../dependency/useStrategy"},{"path":"utils/core/plugins/useExecutionTrace.ts","kind":"import-statement","original":"../plugins/useExecutionTrace"},{"path":"utils/core/dependency/useDepenency.ts","kind":"import-statement","original":"../dependency/useDepenency"},{"path":"utils/core/hooks/useOnError.ts","kind":"import-statement","original":"../hooks/useOnError"},{"path":"utils/core/hooks/useOnSuccess.ts","kind":"import-statement","original":"../hooks/useOnSuccess"},{"path":"utils/core/plugins/usePlugin.ts","kind":"import-statement","original":"../plugins/usePlugin"},{"path":"utils/core/hooks/useOnStart.ts","kind":"import-statement","original":"../hooks/useOnStart"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"./useScheduler"},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineManager.ts":{"bytes":11202,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true},{"path":"utils/core/engine/useEngineInstance.ts","kind":"import-statement","original":"./useEngineInstance"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.mjs":{"imports":[],"exports":["DefaultStrategy","TriggerCause","deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":5020},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1754},"utils/core/dependency/useStrategy.ts":{"bytesInOutput":115},"utils/core/plugins/useExecutionTrace.ts":{"bytesInOutput":760},"utils/core/dependency/useDepenency.ts":{"bytesInOutput":1244},"utils/core/hooks/useCreateHook.ts":{"bytesInOutput":122},"utils/core/hooks/useOnError.ts":{"bytesInOutput":68},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":72},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":424},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":68},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/types/types.ts":{"bytesInOutput":117},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":7679},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":932},"utils/core/dependency/useSetEntangle.ts":{"bytesInOutput":3145},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2496},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2428},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1881}},"bytes":28967}}}
1
+ {"inputs":{"utils/core/types/types.ts":{"bytes":7309,"imports":[{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/bucket.ts":{"bytes":20458,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":9680,"imports":[{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useStrategy.ts":{"bytes":557,"imports":[{"path":"../engine/bucket","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/plugins/useExecutionTrace.ts":{"bytes":3887,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/dependency/useDepenency.ts":{"bytes":6586,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"}],"format":"esm"},"utils/core/hooks/useCreateHook.ts":{"bytes":436,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":481,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnSuccess.ts":{"bytes":216,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/plugins/usePlugin.ts":{"bytes":2971,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/hooks/useOnStart.ts":{"bytes":210,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"format":"esm"},"utils/core/utils/util.ts":{"bytes":6875,"imports":[],"format":"esm"},"utils/core/engine/useMeshTask.ts":{"bytes":82718,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"./bucket","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":4009,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/dependency/useSetEntangle.ts":{"bytes":13440,"imports":[{"path":"../types/types","kind":"import-statement","external":true},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13453,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/useMeshTask.ts","kind":"import-statement","original":"./useMeshTask"},{"path":"utils/core/engine/useMeshNode.ts","kind":"import-statement","original":"./useMeshNode"},{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"utils/core/dependency/useSetEntangle.ts","kind":"import-statement","original":"../dependency/useSetEntangle"},{"path":"./bucket","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":13112,"imports":[{"path":"utils/core/dependency/useSetRule.ts","kind":"import-statement","original":"../dependency/useSetRule"},{"path":"utils/core/dependency/useStrategy.ts","kind":"import-statement","original":"../dependency/useStrategy"},{"path":"utils/core/plugins/useExecutionTrace.ts","kind":"import-statement","original":"../plugins/useExecutionTrace"},{"path":"utils/core/dependency/useDepenency.ts","kind":"import-statement","original":"../dependency/useDepenency"},{"path":"utils/core/hooks/useOnError.ts","kind":"import-statement","original":"../hooks/useOnError"},{"path":"utils/core/hooks/useOnSuccess.ts","kind":"import-statement","original":"../hooks/useOnSuccess"},{"path":"utils/core/plugins/usePlugin.ts","kind":"import-statement","original":"../plugins/usePlugin"},{"path":"utils/core/hooks/useOnStart.ts","kind":"import-statement","original":"../hooks/useOnStart"},{"path":"../types/types","kind":"import-statement","external":true},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"./useScheduler"},{"path":"../utils/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineManager.ts":{"bytes":11068,"imports":[{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"../utils/util","kind":"import-statement","external":true},{"path":"utils/core/engine/useEngineInstance.ts","kind":"import-statement","original":"./useEngineInstance"},{"path":"utils/core/types/types.ts","kind":"import-statement","original":"../types/types"},{"path":"utils/core/engine/bucket.ts","kind":"import-statement","original":"../engine/bucket"},{"path":"utils/core/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.mjs":{"imports":[],"exports":["DefaultStrategy","MeshFlowEventsName","TriggerCause","deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/types/types.ts":{"bytesInOutput":735},"utils/core/engine/bucket.ts":{"bytesInOutput":4991},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":2105},"utils/core/dependency/useStrategy.ts":{"bytesInOutput":128},"utils/core/plugins/useExecutionTrace.ts":{"bytesInOutput":663},"utils/core/dependency/useDepenency.ts":{"bytesInOutput":1034},"utils/core/hooks/useCreateHook.ts":{"bytesInOutput":122},"utils/core/hooks/useOnError.ts":{"bytesInOutput":68},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":72},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":424},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":68},"utils/core/utils/util.ts":{"bytesInOutput":462},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":8773},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":891},"utils/core/dependency/useSetEntangle.ts":{"bytesInOutput":4029},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2887},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2501},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1853}},"bytes":32001}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshflow/core",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "A logic orchestration engine utilizing topological scheduling and watermark control to resolve asynchronous race conditions in complex dependency linkages.”",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",