@meshflow/core 0.2.8 → 0.3.0

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
@@ -165,6 +165,11 @@ interface MeshFlowGroupNode<P extends MeshPath = MeshPath> {
165
165
  children: Array<P>;
166
166
  dirtySignal: any;
167
167
  meta: Record<string, any>;
168
+ createView: (extraProps?: Record<string, any>) => any;
169
+ }
170
+ interface StandardUITrigger<T> {
171
+ signalCreator: () => T;
172
+ signalTrigger: (signal: T) => void;
168
173
  }
169
174
  interface logicApi<NM, TKeys extends KeysOfUnion<NM>> {
170
175
  slot: {
@@ -178,9 +183,9 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
178
183
  forceNotify?: boolean;
179
184
  logic: (api: logicApi<NM, TKeys>) => any;
180
185
  effect?: (args: any) => any;
181
- effectArgs?: Array<KeysOfUnion<NM>>;
186
+ effectArgs?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
182
187
  cacheStrategy?: "none" | "shallow";
183
- triggerKeys?: TKeys[];
188
+ triggerKeys?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
184
189
  }
185
190
 
186
191
  /**
@@ -189,7 +194,7 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
189
194
  * @template P - 路径联合类型 ("user.name" | "user.age") 也支持number或者symbol
190
195
  * @template S - 业务元数据类型 (默认使用表单的 Meta,但也允许传入 any)
191
196
  */
192
- declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(data: S, options: {
197
+ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Record<string, any> = {}, NM = any>(data: S, options: {
193
198
  config: {
194
199
  useGreedy: boolean;
195
200
  };
@@ -206,7 +211,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
206
211
  condition: (data: any) => boolean;
207
212
  }) => void;
208
213
  };
209
- };
214
+ } & M;
210
215
  plugins: {};
211
216
  }): {
212
217
  SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
@@ -239,6 +244,10 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
239
244
  condition: (data: any) => boolean;
240
245
  }) => void;
241
246
  };
247
+ batchRenderExport: {
248
+ init: any;
249
+ };
250
+ hasRenderGate: () => boolean;
242
251
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
243
252
  onSuccess: (cb: (data: unknown) => void) => () => void;
244
253
  onStart: (cb: (data: {
@@ -256,17 +265,14 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
256
265
  key: (string & {}) | KeysOfUnion<NM>;
257
266
  value: any;
258
267
  }[]) => void;
259
- UITrigger: {
260
- signalCreator: () => T;
261
- signalTrigger: (signal: T) => void;
262
- };
268
+ UITrigger: any;
263
269
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
264
270
  };
265
271
  };
266
272
 
267
273
  declare function useScheduler<T, //ui trigger中定义的类型
268
274
  P extends MeshPath, // 路径类型
269
- NM = any>(config: {
275
+ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
270
276
  useGreedy: boolean;
271
277
  }, dependency: {
272
278
  GetDependencyOrder: () => P[][];
@@ -283,10 +289,7 @@ NM = any>(config: {
283
289
  callOnSuccess: any;
284
290
  callOnStart: any;
285
291
  emit: MeshEmit;
286
- }, UITrigger: {
287
- signalCreator: () => T;
288
- signalTrigger: (signal: T) => void;
289
- }): {
292
+ }, UITrigger: B): {
290
293
  registerNode: (nodeMeta: Omit<MeshFlowTaskNode<P>, "createView" | "proxy">) => MeshFlowTaskNode<P, any, NM>;
291
294
  registerGroupNode: (groupMeta: Omit<MeshFlowGroupNode<P>, "createView">) => MeshFlowGroupNode<P>;
292
295
  GetNodeByPath: (path: P) => MeshFlowTaskNode<P, any, NM>;
@@ -298,14 +301,11 @@ NM = any>(config: {
298
301
  key: KeysOfUnion<NM> | (string & {});
299
302
  value: any;
300
303
  }[]) => void;
301
- UITrigger: {
302
- signalCreator: () => T;
303
- signalTrigger: (signal: T) => void;
304
- };
304
+ UITrigger: B;
305
305
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
306
306
  };
307
307
 
308
- type SchedulerType<T, P extends MeshPath, S, NM> = ReturnType<typeof useEngineInstance<T, P, S, NM>>;
308
+ type SchedulerType<T, P extends MeshPath, S, M extends Record<string, any>, NM> = ReturnType<typeof useEngineInstance<T, P, S, M, NM>>;
309
309
  type BaseEngine<T> = {
310
310
  data: {
311
311
  SetValue: T extends {
@@ -340,6 +340,9 @@ type BaseEngine<T> = {
340
340
  usePlugin: T extends {
341
341
  usePlugin: infer F;
342
342
  } ? F : never;
343
+ hasRenderGate: T extends {
344
+ hasRenderGate: infer F;
345
+ } ? F : never;
343
346
  };
344
347
  dependency: {
345
348
  GetAllDependency: T extends {
@@ -361,20 +364,22 @@ type BaseEngine<T> = {
361
364
  } ? F : never;
362
365
  };
363
366
  };
364
- type TransformModuleKey<T> = T extends `use${infer Rest}` ? Uncapitalize<Rest> : T;
365
- type MapModuleToReturn<K, F, P extends MeshPath> = K extends 'useSchemaValidators' | 'schemaValidators' ? {
367
+ type TransformModuleKey<T> = T extends "useMeshRenderGate" ? "render" : T extends `use${infer Rest}` ? Uncapitalize<Rest> : T;
368
+ type MapModuleToReturn<K, F, P extends MeshPath> = K extends "useSchemaValidators" | "schemaValidators" ? {
366
369
  SetValidators: (path: P, options: {
367
370
  logic: (val: any, GetByPath: (path: P) => any) => any;
368
371
  condition: (data: any) => boolean;
369
372
  }) => void;
370
- } : F extends (...args: any) => infer R ? R : any;
371
- type EngineModules<M, P extends MeshPath> = {
372
- [K in keyof M as TransformModuleKey<string & K>]: MapModuleToReturn<K, M[K], P>;
373
+ } : K extends "useMeshRenderGate" ? F extends (...args: any) => infer R ? R extends (...args: any) => infer R2 ? R2 : R : any : F extends (...args: any) => infer R ? R : any;
374
+ type EngineModules<M extends Record<string, any>, P extends MeshPath> = {
375
+ [K in keyof M as TransformModuleKey<string & K>]: M[K] extends (...args: any) => any ? MapModuleToReturn<K, M[K], P> : M[K] extends Record<string, any> ? EngineModules<M[K], P> : M[K];
376
+ };
377
+ type Engine<T, M extends Record<string, any>, P extends MeshPath> = BaseEngine<T> & {
378
+ modules: EngineModules<M, P>;
373
379
  };
374
- type Engine<T, M, P extends MeshPath> = BaseEngine<T> & EngineModules<M, P>;
375
380
  /** @deprecated 请使用新的 useMeshFlow 别名 */
376
381
  declare const useEngineManager: <const S extends Record<string, any> | any[], T, //UITrigger的类型
377
- M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : InferLeafPath<S> | (string & {})>(id: MeshPath, Schema: S, options: {
382
+ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : InferLeafPath<S> | (string & {})>(id: MeshPath, Schema: S, options: {
378
383
  metaType?: NM;
379
384
  config?: {
380
385
  useGreedy: boolean;
@@ -415,6 +420,10 @@ M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPat
415
420
  condition: (data: any) => boolean;
416
421
  }) => void) | undefined;
417
422
  };
423
+ batchRenderExport: {
424
+ init: any;
425
+ };
426
+ hasRenderGate: () => boolean;
418
427
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
419
428
  onSuccess: (cb: (data: unknown) => void) => () => void;
420
429
  onStart: (cb: (data: {
@@ -432,14 +441,11 @@ M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPat
432
441
  key: (string & {}) | KeysOfUnion<NM>;
433
442
  value: any;
434
443
  }[]) => void;
435
- UITrigger: {
436
- signalCreator: () => T;
437
- signalTrigger: (signal: T) => void;
438
- };
444
+ UITrigger: any;
439
445
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
440
446
  };
441
447
  }, M, P>;
442
- declare const useMeshFlowDefiner: <P extends MeshPath, NM extends Record<string, any> = any>() => <T, M extends Record<string, any>>(id: MeshPath, schema: any, options: {
448
+ 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: {
443
449
  metaType?: NM;
444
450
  UITrigger: {
445
451
  signalCreator: () => T;
@@ -447,15 +453,15 @@ declare const useMeshFlowDefiner: <P extends MeshPath, NM extends Record<string,
447
453
  };
448
454
  modules?: M;
449
455
  config?: any;
450
- }) => Engine<SchedulerType<T, P, any, NM>, M, P>;
456
+ }) => Engine<SchedulerType<T, P, S, M, NM>, M, P>;
451
457
  /**
452
458
  * 获取 Engine 实例
453
459
  * @template M 手动注入的模块映射 (例如 { useHistory: typeof useHistory })
454
460
  * @template P ID 类型 (支持 string | number | symbol)
455
461
  */
456
- declare const useEngine: <M, P extends MeshPath = any, NM = any, S = any, ID extends keyof MeshFlowEngineMap | (MeshPath & {}) = MeshPath>(id: ID) => [M] extends [never] ? (ID extends keyof MeshFlowEngineMap ? MeshFlowEngineMap[ID] : Engine<SchedulerType<any, any, any, any>, {}, P>) : Engine<SchedulerType<any, P, S, NM>, M, P>;
462
+ declare const useEngine: <M extends Record<string, any>, P extends MeshPath = any, NM = any, S = any, ID extends keyof MeshFlowEngineMap | (MeshPath & {}) = MeshPath>(id: ID) => [M] extends [never] ? ID extends keyof MeshFlowEngineMap ? MeshFlowEngineMap[ID] : Engine<SchedulerType<any, any, any, any, any>, {}, P> : Engine<SchedulerType<any, P, S, M, NM>, M, P>;
457
463
  declare const deleteEngine: (id: MeshPath) => void;
458
- declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : (string & {}) | InferLeafPath<S>>(id: MeshPath, Schema: S, options: {
464
+ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : (string & {}) | InferLeafPath<S>>(id: MeshPath, Schema: S, options: {
459
465
  metaType?: NM;
460
466
  config?: {
461
467
  useGreedy: boolean;
@@ -496,6 +502,10 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
496
502
  condition: (data: any) => boolean;
497
503
  }) => void) | undefined;
498
504
  };
505
+ batchRenderExport: {
506
+ init: any;
507
+ };
508
+ hasRenderGate: () => boolean;
499
509
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
500
510
  onSuccess: (cb: (data: unknown) => void) => () => void;
501
511
  onStart: (cb: (data: {
@@ -513,12 +523,9 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
513
523
  key: (string & {}) | KeysOfUnion<NM>;
514
524
  value: any;
515
525
  }[]) => void;
516
- UITrigger: {
517
- signalCreator: () => T;
518
- signalTrigger: (signal: T) => void;
519
- };
526
+ UITrigger: any;
520
527
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
521
528
  };
522
529
  }, M, P>;
523
530
 
524
- export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowEngineMap, type MeshFlowGroupNode, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
531
+ export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowEngineMap, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
package/index.d.ts CHANGED
@@ -165,6 +165,11 @@ interface MeshFlowGroupNode<P extends MeshPath = MeshPath> {
165
165
  children: Array<P>;
166
166
  dirtySignal: any;
167
167
  meta: Record<string, any>;
168
+ createView: (extraProps?: Record<string, any>) => any;
169
+ }
170
+ interface StandardUITrigger<T> {
171
+ signalCreator: () => T;
172
+ signalTrigger: (signal: T) => void;
168
173
  }
169
174
  interface logicApi<NM, TKeys extends KeysOfUnion<NM>> {
170
175
  slot: {
@@ -178,9 +183,9 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
178
183
  forceNotify?: boolean;
179
184
  logic: (api: logicApi<NM, TKeys>) => any;
180
185
  effect?: (args: any) => any;
181
- effectArgs?: Array<KeysOfUnion<NM>>;
186
+ effectArgs?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
182
187
  cacheStrategy?: "none" | "shallow";
183
- triggerKeys?: TKeys[];
188
+ triggerKeys?: Array<KeysOfUnion<NM> | TKeys | (string & {})>;
184
189
  }
185
190
 
186
191
  /**
@@ -189,7 +194,7 @@ interface SetRuleOptions<NM, TKeys extends KeysOfUnion<NM>> {
189
194
  * @template P - 路径联合类型 ("user.name" | "user.age") 也支持number或者symbol
190
195
  * @template S - 业务元数据类型 (默认使用表单的 Meta,但也允许传入 any)
191
196
  */
192
- declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(data: S, options: {
197
+ declare function useEngineInstance<T, P extends MeshPath, S = any, M extends Record<string, any> = {}, NM = any>(data: S, options: {
193
198
  config: {
194
199
  useGreedy: boolean;
195
200
  };
@@ -206,7 +211,7 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
206
211
  condition: (data: any) => boolean;
207
212
  }) => void;
208
213
  };
209
- };
214
+ } & M;
210
215
  plugins: {};
211
216
  }): {
212
217
  SetRule: <TKeys extends KeysOfUnion<NM>>(outDegreePath: P, inDegreePath: P, key: KeysOfUnion<NM> | (string & {}), options: SetRuleOptions<NM, TKeys>) => void;
@@ -239,6 +244,10 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
239
244
  condition: (data: any) => boolean;
240
245
  }) => void;
241
246
  };
247
+ batchRenderExport: {
248
+ init: any;
249
+ };
250
+ hasRenderGate: () => boolean;
242
251
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
243
252
  onSuccess: (cb: (data: unknown) => void) => () => void;
244
253
  onStart: (cb: (data: {
@@ -256,17 +265,14 @@ declare function useEngineInstance<T, P extends MeshPath, S = any, NM = any>(dat
256
265
  key: (string & {}) | KeysOfUnion<NM>;
257
266
  value: any;
258
267
  }[]) => void;
259
- UITrigger: {
260
- signalCreator: () => T;
261
- signalTrigger: (signal: T) => void;
262
- };
268
+ UITrigger: any;
263
269
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
264
270
  };
265
271
  };
266
272
 
267
273
  declare function useScheduler<T, //ui trigger中定义的类型
268
274
  P extends MeshPath, // 路径类型
269
- NM = any>(config: {
275
+ B extends Record<string, any> = StandardUITrigger<T>, NM = any>(config: {
270
276
  useGreedy: boolean;
271
277
  }, dependency: {
272
278
  GetDependencyOrder: () => P[][];
@@ -283,10 +289,7 @@ NM = any>(config: {
283
289
  callOnSuccess: any;
284
290
  callOnStart: any;
285
291
  emit: MeshEmit;
286
- }, UITrigger: {
287
- signalCreator: () => T;
288
- signalTrigger: (signal: T) => void;
289
- }): {
292
+ }, UITrigger: B): {
290
293
  registerNode: (nodeMeta: Omit<MeshFlowTaskNode<P>, "createView" | "proxy">) => MeshFlowTaskNode<P, any, NM>;
291
294
  registerGroupNode: (groupMeta: Omit<MeshFlowGroupNode<P>, "createView">) => MeshFlowGroupNode<P>;
292
295
  GetNodeByPath: (path: P) => MeshFlowTaskNode<P, any, NM>;
@@ -298,14 +301,11 @@ NM = any>(config: {
298
301
  key: KeysOfUnion<NM> | (string & {});
299
302
  value: any;
300
303
  }[]) => void;
301
- UITrigger: {
302
- signalCreator: () => T;
303
- signalTrigger: (signal: T) => void;
304
- };
304
+ UITrigger: B;
305
305
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
306
306
  };
307
307
 
308
- type SchedulerType<T, P extends MeshPath, S, NM> = ReturnType<typeof useEngineInstance<T, P, S, NM>>;
308
+ type SchedulerType<T, P extends MeshPath, S, M extends Record<string, any>, NM> = ReturnType<typeof useEngineInstance<T, P, S, M, NM>>;
309
309
  type BaseEngine<T> = {
310
310
  data: {
311
311
  SetValue: T extends {
@@ -340,6 +340,9 @@ type BaseEngine<T> = {
340
340
  usePlugin: T extends {
341
341
  usePlugin: infer F;
342
342
  } ? F : never;
343
+ hasRenderGate: T extends {
344
+ hasRenderGate: infer F;
345
+ } ? F : never;
343
346
  };
344
347
  dependency: {
345
348
  GetAllDependency: T extends {
@@ -361,20 +364,22 @@ type BaseEngine<T> = {
361
364
  } ? F : never;
362
365
  };
363
366
  };
364
- type TransformModuleKey<T> = T extends `use${infer Rest}` ? Uncapitalize<Rest> : T;
365
- type MapModuleToReturn<K, F, P extends MeshPath> = K extends 'useSchemaValidators' | 'schemaValidators' ? {
367
+ type TransformModuleKey<T> = T extends "useMeshRenderGate" ? "render" : T extends `use${infer Rest}` ? Uncapitalize<Rest> : T;
368
+ type MapModuleToReturn<K, F, P extends MeshPath> = K extends "useSchemaValidators" | "schemaValidators" ? {
366
369
  SetValidators: (path: P, options: {
367
370
  logic: (val: any, GetByPath: (path: P) => any) => any;
368
371
  condition: (data: any) => boolean;
369
372
  }) => void;
370
- } : F extends (...args: any) => infer R ? R : any;
371
- type EngineModules<M, P extends MeshPath> = {
372
- [K in keyof M as TransformModuleKey<string & K>]: MapModuleToReturn<K, M[K], P>;
373
+ } : K extends "useMeshRenderGate" ? F extends (...args: any) => infer R ? R extends (...args: any) => infer R2 ? R2 : R : any : F extends (...args: any) => infer R ? R : any;
374
+ type EngineModules<M extends Record<string, any>, P extends MeshPath> = {
375
+ [K in keyof M as TransformModuleKey<string & K>]: M[K] extends (...args: any) => any ? MapModuleToReturn<K, M[K], P> : M[K] extends Record<string, any> ? EngineModules<M[K], P> : M[K];
376
+ };
377
+ type Engine<T, M extends Record<string, any>, P extends MeshPath> = BaseEngine<T> & {
378
+ modules: EngineModules<M, P>;
373
379
  };
374
- type Engine<T, M, P extends MeshPath> = BaseEngine<T> & EngineModules<M, P>;
375
380
  /** @deprecated 请使用新的 useMeshFlow 别名 */
376
381
  declare const useEngineManager: <const S extends Record<string, any> | any[], T, //UITrigger的类型
377
- M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : InferLeafPath<S> | (string & {})>(id: MeshPath, Schema: S, options: {
382
+ M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : InferLeafPath<S> | (string & {})>(id: MeshPath, Schema: S, options: {
378
383
  metaType?: NM;
379
384
  config?: {
380
385
  useGreedy: boolean;
@@ -415,6 +420,10 @@ M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPat
415
420
  condition: (data: any) => boolean;
416
421
  }) => void) | undefined;
417
422
  };
423
+ batchRenderExport: {
424
+ init: any;
425
+ };
426
+ hasRenderGate: () => boolean;
418
427
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
419
428
  onSuccess: (cb: (data: unknown) => void) => () => void;
420
429
  onStart: (cb: (data: {
@@ -432,14 +441,11 @@ M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPat
432
441
  key: (string & {}) | KeysOfUnion<NM>;
433
442
  value: any;
434
443
  }[]) => void;
435
- UITrigger: {
436
- signalCreator: () => T;
437
- signalTrigger: (signal: T) => void;
438
- };
444
+ UITrigger: any;
439
445
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
440
446
  };
441
447
  }, M, P>;
442
- declare const useMeshFlowDefiner: <P extends MeshPath, NM extends Record<string, any> = any>() => <T, M extends Record<string, any>>(id: MeshPath, schema: any, options: {
448
+ 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: {
443
449
  metaType?: NM;
444
450
  UITrigger: {
445
451
  signalCreator: () => T;
@@ -447,15 +453,15 @@ declare const useMeshFlowDefiner: <P extends MeshPath, NM extends Record<string,
447
453
  };
448
454
  modules?: M;
449
455
  config?: any;
450
- }) => Engine<SchedulerType<T, P, any, NM>, M, P>;
456
+ }) => Engine<SchedulerType<T, P, S, M, NM>, M, P>;
451
457
  /**
452
458
  * 获取 Engine 实例
453
459
  * @template M 手动注入的模块映射 (例如 { useHistory: typeof useHistory })
454
460
  * @template P ID 类型 (支持 string | number | symbol)
455
461
  */
456
- declare const useEngine: <M, P extends MeshPath = any, NM = any, S = any, ID extends keyof MeshFlowEngineMap | (MeshPath & {}) = MeshPath>(id: ID) => [M] extends [never] ? (ID extends keyof MeshFlowEngineMap ? MeshFlowEngineMap[ID] : Engine<SchedulerType<any, any, any, any>, {}, P>) : Engine<SchedulerType<any, P, S, NM>, M, P>;
462
+ declare const useEngine: <M extends Record<string, any>, P extends MeshPath = any, NM = any, S = any, ID extends keyof MeshFlowEngineMap | (MeshPath & {}) = MeshPath>(id: ID) => [M] extends [never] ? ID extends keyof MeshFlowEngineMap ? MeshFlowEngineMap[ID] : Engine<SchedulerType<any, any, any, any, any>, {}, P> : Engine<SchedulerType<any, P, S, M, NM>, M, P>;
457
463
  declare const deleteEngine: (id: MeshPath) => void;
458
- declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M extends Record<string, any>, NM extends Record<string, any>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : (string & {}) | InferLeafPath<S>>(id: MeshPath, Schema: S, options: {
464
+ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M extends Record<string, any>, NM extends Record<string, any> = InferLeafType<S>, P extends MeshPath = [InferLeafPath<S>] extends [never] ? MeshPath : (string & {}) | InferLeafPath<S>>(id: MeshPath, Schema: S, options: {
459
465
  metaType?: NM;
460
466
  config?: {
461
467
  useGreedy: boolean;
@@ -496,6 +502,10 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
496
502
  condition: (data: any) => boolean;
497
503
  }) => void) | undefined;
498
504
  };
505
+ batchRenderExport: {
506
+ init: any;
507
+ };
508
+ hasRenderGate: () => boolean;
499
509
  onError: (cb: (error: MeshErrorContext) => void) => () => void;
500
510
  onSuccess: (cb: (data: unknown) => void) => () => void;
501
511
  onStart: (cb: (data: {
@@ -513,12 +523,9 @@ declare const useMeshFlow: <const S extends Record<string, any> | any[], T, M ex
513
523
  key: (string & {}) | KeysOfUnion<NM>;
514
524
  value: any;
515
525
  }[]) => void;
516
- UITrigger: {
517
- signalCreator: () => T;
518
- signalTrigger: (signal: T) => void;
519
- };
526
+ UITrigger: any;
520
527
  UidToNodeMap: Map<number, MeshFlowTaskNode<P, any, NM>>;
521
528
  };
522
529
  }, M, P>;
523
530
 
524
- export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowEngineMap, type MeshFlowGroupNode, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
531
+ export { type BaseEngine, DefaultStrategy, type Engine, type EngineModules, type InferLeafPath, type InferLeafType, type MapModuleToReturn, type MeshErrorContext, type MeshEvents, type MeshFlowEngineMap, type MeshFlowGroupNode, type MeshFlowTaskNode, type MeshPath, type SchedulerType, SchemaBucket, type SetRuleOptions, type TransformModuleKey, deleteEngine, useEngine, useEngineManager, useMeshFlow, useMeshFlowDefiner, useScheduler };
package/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var ee=class{computedRules=[];store={OR:(e,n)=>{let t,u,r=this.computedRules;for(let l=0;l<r.length;l++){let s=r[l],o=s.logic(e);if(o instanceof Promise)return (async()=>{let a=await o;if(s.entityId==="__base__"?u=a:a&&(t=a),typeof t>"u")for(let f=l+1;f<r.length;f++){let g=r[f],y=g.logic(e),h=y instanceof Promise?await y:y;if(g.entityId==="__base__"){u=h;continue}if(h){t=g.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}})();let c=o;if(s.entityId==="__base__"){u=c;continue}if(c){t=s.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}},PRIORITY:(e,n)=>{let t,u=this.computedRules;for(let r=0;r<u.length;r++){let s=u[r].logic(e);if(s instanceof Promise)return (async()=>{let o=await s;if(o!==void 0)return {res:o,version:n};for(let c=r+1;c<u.length;c++){let a=u[c].logic(e),f=a instanceof Promise?await a:a;if(f!==void 0)return {res:f,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,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.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.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},J=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 u=()=>this.rules;this.strategy=new ee(u),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,u={...e,entityId:t};for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let l=this.rules.get(r);l&&(l.delete(u),l.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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,u={...e,entityId:t};if(e)for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let l=this.rules.get(r);l&&(l.delete(u),l.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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 l=this.deps.get(e.triggerPath),s=e.GetValueByPath(e.triggerPath);if(typeof l=="object"||typeof s=="object")t=false;else {let o=Array.from(this.deps.keys());for(let c of o){let a=this.deps.get(c),f=e.GetValueByPath(c);if(a!==f){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let u=++this.version,r=this.strategy.evaluate(e,u);if(!(r instanceof Promise)){let{res:l,version:s}=r;return this.finalizeSync(l,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:l,version:s}=await r;return this.finalizeSync(l,s,e,n)}catch(l){throw {path:this.path,error:l}}finally{this.promiseToken===n&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,n,t,u){return u!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((r,l)=>{this.deps.set(l,t.GetValueByPath(l));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var ne=(i,e,n)=>{let u=r=>{let l=n.triggerPaths.map(c=>{let a=r.GetValueByPath(c),f={};return n.triggerKeys.forEach(g=>{f[g]=a[g];}),f}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>r.GetRenderSchemaByPath(i)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:i,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:u}},re=(i,e,n)=>{if(!i)throw Error("");let t=i,u=(s,o)=>{e.has(s)||e.set(s,new Set),e.get(s).add(o),n.has(o)||n.set(o,new Set),n.get(o).add(s);};return {SetRule:(s,o,c,a)=>{let f=t(o),g=a.triggerKeys||[];g.length==0&&g.push("value");let y=ne(o,c,{...a,triggerPaths:[s],triggerKeys:g}),h=[s].map(P=>[P,t(P).state.value]);if(u(s,o),f.nodeBucket[c])f.nodeBucket[c].setRule(y,h),a.effect&&f.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let P=f.meta[c],m=new J(P,c,o);m.setRule(y,h),a.effect&&m.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),f.nodeBucket[c]=m;}f.state[c]=f.meta[c],a.forceNotify&&f.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&f.nodeBucket[c].setUseCache(false);},SetRules:(s,o,c,a)=>{let f=t(o);for(let P of s)u(P,o);let g=a.triggerKeys||[];g.length==0&&g.push("value");let y=ne(o,c,{...a,triggerPaths:s,triggerKeys:g}),h=s.map(P=>[P,t(P).state.value]);if(f.nodeBucket[c])f.nodeBucket[c].setRules(y,h),a.effect&&f.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let P=f.meta[c],m=new J(P,c,o);m.setRules(y,h),a.effect&&m.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),f.nodeBucket[c]=m;}f.state[c]=f.meta[c],a.forceNotify&&f.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&f.nodeBucket[c].setUseCache(false);}}};var se=i=>{let e=i||void 0;if(!e)throw Error("");return {SetStrategy:(t,u,r)=>{e(t).nodeBucket[u].setStrategy(r);}}};function ae(){let i=new Map,e=new Map,n=new Set,t=(l,s)=>{i.set(l,s);let o=e.get(l);o&&o(s);};return {SetTrace:(l,s)=>{e.set(l,s);let o=i.get(l)||"idle";return s(o),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(o=>t(o,"idle")),n.clear(),i.clear();}),s.on("node:release",({path:o,type:c})=>{(c==1||c==2)&&(n.add(o),t(o,"pending"));}),s.on("node:pending",({path:o})=>{n.add(o),(!i.has(o)||i.get(o)==="idle")&&t(o,"pending");}),s.on("node:start",({path:o})=>{n.add(o),t(o,"calculating");}),s.on("node:success",({path:o})=>{t(o,"calculated");}),s.on("node:intercept",({path:o,type:c})=>{c==3&&t(o,"calculating"),c==6&&t(o,"idle");}),s.on("node:stagnate",({path:o})=>{t(o,"pending");}),s.on("node:error",({path:o})=>t(o,"error"));}})}}function oe(i,e,n,t){let u=a=>{let f=i(),g=e(),y=new Set;return f.get(a)?.forEach(h=>y.add(h)),y.size===0?[]:Array.from(y).filter(h=>{let P=g.get(h)||new Set;return !Array.from(P).some(S=>y.has(S))})};return {GetNextDependency:a=>{let f=t();return Array.from(f.get(a)||[])},GetPrevDependency:a=>{let f=n();return Array.from(f.get(a)||[])},GetAllPrevDependency:a=>{let f=e();return Array.from(f.get(a)||[])},GetAllNextDependency:a=>{let f=i();return Array.from(f.get(a)||[])},rebuildDirectDependencyMaps:a=>{let f=new Map,g=new Map;for(let y of a){let h=u(y);f.set(y,new Set(h));for(let P of h)g.has(P)||g.set(P,new Set),g.get(P).add(y);}return {directNextMap:f,directPrevMap:g}}}}function ie(i){let e=t=>{let u=[],r=[],l=new Map,s=t.size,o=0,c=0;for(let[a,f]of t)f===0&&r.push(a);if(r.length===0&&s>0)throw Error("Circular dependency detected");for(;r.length>0;){u.push([...r]);let a=[];for(let f of r){o++,l.set(f,c);let g=i.get(f);if(g)for(let y of g){let h=t.get(y)-1;t.set(y,h),h===0&&a.push(y);}}r=a,c++;}if(o<s)throw Error("Circular dependency detected");return {steps:u,levelMap:l}};return ()=>{let t=new Map;for(let u of i.keys()){let r=Array.from(i.get(u)||[]);t.has(u)||t.set(u,0);for(let l of r){let s=t.get(l)||0;t.set(l,++s);}}return e(t)}}var X=()=>{let i=[];return {on:e=>(i.push(e),()=>{let n=i.indexOf(e);n>-1&&i.splice(n,1);}),call:e=>i.forEach(n=>{n(e);})}};function le(){let{on:i,call:e}=X();return {onError:i,callOnError:e}}function ce(){let{on:i,call:e}=X();return {onSuccess:i,callOnSuccess:e}}var ue=()=>{let i=new Set,e=new Map,n=(r,l)=>{e.get(r)?.forEach(s=>s(l));},t=(r,l)=>(e.has(r)||e.set(r,new Set),e.get(r).add(l),()=>e.get(r).delete(l));return {usePlugin:r=>{let l=new Set,s=(o,c)=>{let a=t(o,c);return l.add(a),a};return r.apply({on:s}),i.add(r),()=>{l.forEach(o=>o()),l.clear(),i.delete(r);}},emit:n}};function fe(){let{on:i,call:e}=X();return {onStart:i,callOnStart:e}}var de=(i={frameQuota:12})=>{let e=performance.now(),n=0,t=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let r=performance.now();return n++,!!((n>=5||t)&&(n=0,r-e>i.frameQuota||u()))},async yieldToMain(){return new Promise(r=>{me(()=>{e=performance.now(),n=0,t&&(t=false),r();});})}}},me=i=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=i,n.postMessage(null);};function ye(i,e,n,t,u){let r=new Map,l=i.useGreedy,s=de();return async(c,a)=>{let g=Symbol("token"),y=c||"__NOTIFY_ALL__";r.set(y,g);let h=false;s.reset();let P=new Set,m=new Set,z=new Set;a.forEach(G=>{z.add(G),e.GetAllNextDependency(G).forEach(w=>z.add(w));});let S=new Map,K=new Map,E=new Set,B=e.GetPathToLevelMap(),j=0,q=0,d=G=>{e.GetAllNextDependency(G).forEach($=>{let I=B.get($)||0;I>q&&(q=I);});};c?(j=B.get(c)??0,d(c),P.add(c)):a.forEach(G=>d(G)),a.forEach(G=>{E.add(G);});let x=performance.now();t.emit("flow:start",{path:y}),t.callOnStart({path:y});let T=false,O=30,H=G=>{let{target:w,trigger:$}=G,I=false,k=false,U=n.GetNodeByPath(w),W=[],b=(p,M)=>{if(P.has(p)||m.has(p)||E.has(p))return;let _=0,v=B.get(p)??0;if(S.has(p))_=S.get(p)-1;else {if(v>j&&S.size>O){K.has(v)||K.set(v,new Set),K.get(v).add(p),t.emit("node:intercept",{path:p,type:7});return}let C=e.GetPrevDependency(p),F=0;for(let N of C){if(P.has(N))continue;(B.get(N)??0)>j&&F++;}_=F;}if(_<=0){let C=E.has(p),F=m.has(p);if(C||F){t.emit("node:intercept",{path:p,type:F?3:3.1});return}S.delete(p),E.add(p),t.emit("node:release",{path:p,type:M,detail:{path:w}});}else S.set(p,_);},L=(p=[])=>{if(r.get(y)!==g)return;if(p.length){let v={},C=U.proxy;for(let F of p){let N=(F.args||[]).reduce((A,Y)=>(A[Y]=C[Y],A),{});try{let A=F.fn(N);A&&typeof A=="object"&&Object.assign(v,A);}catch(A){}}for(let F in v)if(F in U.state)U.state[F]=v[F];else throw {error:`wrong effect in ${String(U.path)}`};I=true;}I&&u.flushPathSet.add(w),t.emit("node:success",{path:w}),P.add(w);let M=e.GetNextDependency(w);(I||k)&&e.GetAllNextDependency(w).forEach(C=>z.add(C));for(let v of M){if(P.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(m.has(v)||E.has(v)){t.emit("node:intercept",{path:v,type:m.has(v)?3:3.1});continue}if(I||k)b(v,1);else if(S.has(v))b(v,2);else {let F=B.get(v);K.has(F)||K.set(F,new Set);let N=K.get(F);N.has(v)||(N.add(v),t.emit("node:stagnate",{path:v,type:1}));}}m.delete(w),(async()=>{if(!h){let v=m.size,C=E.size;t.emit("flow:fire",{path:w,type:1,detail:{active:v,pending:C,blocked:S.size}}),D();}})();},V=p=>{t.emit("node:error",{path:w,error:p});let M=Symbol("abort");r.set(y,M),E.clear(),S.clear(),m.clear(),t.callOnError(p);},R=(p,M)=>{let _=false;p!==U.state[M]&&(U.state[M]=p,I=true,t.emit("node:bucket:success",{path:w,key:String(M),value:p}),U.notifyKeys.has(M)&&(_=true)),U.nodeBucket[M].isForceNotify()&&(k=true),(_||k)&&d(w);};t.emit("node:start",{path:w});try{let p=[];for(let M in U.nodeBucket){let _=U.nodeBucket[M];p.push(..._.getSideEffect());let v=_.evaluate({affectKey:M,triggerPath:$,GetRenderSchemaByPath:C=>n.GetNodeByPath(C).proxy,GetValueByPath:C=>n.GetNodeByPath(C).state,GetToken:()=>g});if(v instanceof Promise){let C=v.then(F=>{r.get(y)===g&&R(F,M);});W.push(C);}else R(v,M);}if(W.length>0)return Promise.all(W).then(()=>{L(p);}).catch(V);L(p);return}catch(p){V(p);}},D=async()=>{if(r.get(y)!==g){h=false;return}h=true;let G=s.getIsFirstFrame(),w=0,$=()=>l&&G?30:1/0,I=0,k=$();try{for(;r.get(y)===g;){let U=I>=k,W=s.shouldYield();if(U||W){if(I>0&&(w++,(G||w%2===0)&&u.requestUpdate()),await s.yieldToMain(),r.get(y)!==g)break;I=0,G=s.getIsFirstFrame();}if(E.size>0&&m.size<5){for(let b of E){if(m.size>=5||I>=k)break;let L=B.get(b)??0,V=e.GetPrevDependency(b),R=V.length>1;if((!l||R)&&L>j){E.delete(b);let M=V.filter(_=>z.has(_)&&!P.has(_)).length;S.set(b,M||0),t.emit("node:intercept",{path:b,type:M>0?4:5,detail:{targetLevel:L,currentLevel:j,pendingParentsCount:M}});continue}if(E.delete(b),m.add(b),t.emit("node:processing",{path:b}),H({target:b,trigger:c}),I++,I>=k||s.shouldYield())break}if(E.size>0)continue}if(I<k&&l&&S.size>0&&m.size<5){let b=!1,L=0;for(let[V,R]of S)if(R<=0){let p=B.get(V)??0,M=e.GetPrevDependency(V);if(p>j&&M.length>1)continue;if(S.delete(V),E.add(V),L++,b=!0,t.emit("node:release",{path:V,type:4}),L>=k)break}if(L>0)continue;if(b){if(s.shouldYield()&&(await s.yieldToMain(),r.get(y)!==g))break;continue}}if(m.size===0&&E.size===0){let b=new Set;for(let R of K.keys())b.add(R);for(let[R]of S){let p=B.get(R)??0;p>j&&b.add(p);}let L=Array.from(b).sort((R,p)=>R-p),V=L[0];if(L.length>0&&V<=q){let R=L[0];if(R<=q){j=R;let p=K.get(R);p&&(p.forEach(M=>E.add(M)),K.delete(R));for(let[M]of S)(B.get(M)??0)===R&&(S.delete(M),E.add(M),t.emit("node:release",{path:M,type:3,detail:{level:R}}));continue}}else {K.forEach((R,p)=>{R.forEach(M=>{P.add(M),t.emit("node:intercept",{path:M,type:6});});}),K.clear();for(let[R]of S)P.add(R),t.emit("node:intercept",{path:R,type:6});S.clear();break}}E.size>0&&m.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(h=false,m.size+S.size+E.size===0){if(r.get(y)===g&&!T){T=true,t.emit("flow:end",{type:1}),u.requestUpdate();let W=performance.now();t.emit("flow:success",{duration:(W-x).toFixed(2)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:m.size}});}};D();}}function te(i){let{path:e,uid:n,type:t,meta:u,dirtySignal:r,triggerUI:l,state:s}=i,o=null,a={path:e,uid:n,type:t,meta:u,dirtySignal:r,createView:(f={})=>{let g=new Proxy(f,{get(y,h){let P=h;return P in i.state?i.state[P]:P in i?i[P]:u&&P in u?u[P]:Reflect.get(y,h)},set(y,h,P){let m=h;return m in i.state?(i.state[m]=P,true):Reflect.set(y,h,P)},ownKeys(y){let h=new Set([...Reflect.ownKeys(y),...Object.keys(s||{}),...Object.keys(u||{})]);return Array.from(h)},getOwnPropertyDescriptor(y,h){return s&&h in s||u&&h in u?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(y,h)}});return o=g,g}};return "children"in i?{...a,children:i.children}:{...a,state:i.state,nodeBucket:i.nodeBucket,notifyKeys:i.notifyKeys,dependOn:i.dependOn,get proxy(){return o}}}function pe(i,e,n,t,u){let r=0,l=new Map,s=new Map,o=new Map,c=false,a=new Set,g=async()=>{let d=Array.from(a);a.clear();for(let x of d){let T=S(x);u.signalTrigger(T.dirtySignal);}},y=()=>{c||(c=true,requestAnimationFrame(()=>{try{for(;a.size>0;)g();}finally{c=false;}}));},h=ye({useGreedy:i.useGreedy},e,{GetNodeByPath:S},t,{requestUpdate:y,flushPathSet:a}),P=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},m=d=>{l.has(d.path)&&P(String(d.path));let x=++r,T={path:d.path,getNode:D=>S(D)},O=(D,G="value")=>{let w=D({...T}),$=S(d.path);if(n.createHistoryAction&&n.pushIntoHistory){let I=n.createHistoryAction([{path:d.path,value:$.state[G]},{path:d.path,value:w}],k=>{let U=S(k.path);U.state[G]=k.value,E(k.path);});n.pushIntoHistory(I);}$.state[G]=w,E(d.path);};d.notifyKeys.size==0&&d.notifyKeys.add("value");let H=te({uid:x,path:d.path,state:d.state,meta:d.meta,nodeBucket:d.nodeBucket,dirtySignal:d.dirtySignal,notifyKeys:d.notifyKeys,dependOn:O});return l.set(H.path,x),s.set(x,H),H},z=d=>{l.has(d.path)&&P(String(d.path));let x=++r,T=te({uid:x,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return l.set(T.path,x),o.set(x,T),T};function S(d){let x=l.get(d),T=s.get(x);if(!T)throw Error("wrong ID");return T}function K(d){let x=l.get(d);return o.get(x)}let E=d=>{if(!S(d))throw Error("Node undefined");a.add(d),y();let T=e.GetNextDependency(d);B(T,d);};function B(d,x){h(x,d);}return {registerNode:m,registerGroupNode:z,GetNodeByPath:S,GetGroupByPath:K,notify:E,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let x=d[0];try{h(null,x);}catch(T){throw t.callOnError(T),T}finally{y();}});},batchNotify:d=>{if(!d||d.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let T=n.createHistoryAction([d.map(O=>({path:O.path,key:O.key,value:S(O.path).state[O.key]})),d.map(O=>({path:O.path,key:O.key,value:O.value}))],O=>{let H=new Set;O.forEach(D=>{let G=S(D.path);G.state[D.key]=D.value,a.add(D.path),H.add(D.path);}),y(),H.size>0&&h(null,Array.from(H));});n.pushIntoHistory(T);}let x=new Set;d.forEach(T=>{let O=S(T.path);O.state[T.key]=T.value,a.add(T.path),x.add(T.path);}),y(),x.size>0&&h(null,Array.from(x));},UITrigger:u,UidToNodeMap:s}}function he(i,e){let n=false,t=false,u=new Map,r=new Map,l=new Map,s=new Map,o=[],c=new Map,{GetNextDependency:f,GetPrevDependency:g,GetAllPrevDependency:y,GetAllNextDependency:h,rebuildDirectDependencyMaps:P}=oe(()=>u,()=>r,()=>s,()=>l),m={},z={};if(e.modules.useHistory){let{Undo:N,Redo:A,PushIntoHistory:Y,CreateHistoryAction:Q,initCanUndo:ge,initCanRedo:Pe}=e.modules.useHistory();m.pushIntoHistory=Y,m.createHistoryAction=Q,z={Undo:N,Redo:A,initCanUndo:ge,initCanRedo:Pe};}let{onError:S,callOnError:K}=le(),{onSuccess:E,callOnSuccess:B}=ce(),{onStart:j,callOnStart:q}=fe(),{emit:d,usePlugin:x}=ue(),{SetTrace:T,useTrace:O}=ae(),H=O();x(H);let D=pe({useGreedy:e.config.useGreedy},{GetDependencyOrder:()=>o,GetAllNextDependency:h,GetNextDependency:f,GetPrevDependency:g,GetAllPrevDependency:y,GetPathToLevelMap:()=>c},m,{callOnError:K,callOnSuccess:B,callOnStart:q,emit:d},e.UITrigger),{GetGroupByPath:G,GetNodeByPath:w,notifyAll:$}=D,I={};if(e.modules.useInternalForm){let{uiSchema:N,GetFormData:A}=e.modules.useInternalForm(D,i);I={uiSchema:N,GetFormData:A};}let k={};if(e.modules.useSchemaValidators){let{SetValidators:N}=e.modules.useSchemaValidators(w);k={SetValidators:N};}let{SetRule:U,SetRules:W}=re(w,u,r),{SetStrategy:b}=se(w),L=ie(u),V=()=>{let N=L();o=N.steps,c=N.levelMap;},R=()=>{t||(t=true,Promise.resolve().then(()=>{if(V(),n){let{directNextMap:N,directPrevMap:A}=P(o.flat());l=N,s=A;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(N,A,Y,Q)=>{U(N,A,Y,Q),n=true,R();},SetRules:(N,A,Y,Q)=>{W(N,A,Y,Q),n=true,R();},SetStrategy:b,SetTrace:T,usePlugin:x,SetValue:(N,A,Y)=>{w(N).dependOn(()=>Y,A);},GetValue:(N,A="value")=>w(N)[A],SetValues:N=>{D.batchNotify(N);},GetGroupByPath:G,notifyAll:async()=>{V(),await $();},GetAllDependency:()=>u,GetDependencyOrder:()=>o,historyExports:z,formExports:I,validatorExports:k,onError:S,onSuccess:E,onStart:j,scheduler:D}}var Z=new Map,Se=(i,e,n)=>{try{if(typeof n.UITrigger.signalCreator!="function"||typeof n.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(Z.has(i))throw Error("engineID repeated");let t=he(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules||{},plugins:{}}),{SetRule:u,SetRules:r,SetValues:l,SetStrategy:s,SetValue:o,GetValue:c,usePlugin:a,GetGroupByPath:f,notifyAll:g,SetTrace:y,GetAllDependency:h,GetDependencyOrder:P,historyExports:m,formExports:z,validatorExports:S,onError:K,onSuccess:E,onStart:B,scheduler:j}=t,d={...{config:{SetRule:u,SetRules:r,SetStrategy:s,notifyAll:g,SetTrace:y,usePlugin:a},data:{SetValue:o,GetValue:c,SetValues:l,GetGroupByPath:f},dependency:{GetAllDependency:h,GetDependencyOrder:P},hooks:{onError:K,onSuccess:E,onStart:B}}},x=n.modules;return x&&Object.keys(x).forEach(T=>{let O=T;if(O.startsWith("use")){let H=O.slice(3);O=H.charAt(0).toLowerCase()+H.slice(1);}T==="useHistory"&&m?Object.keys(m).length>0&&(d[O]=m):T==="useInternalForm"?Object.keys(z).length>0&&(d[O]=z):T==="useSchemaValidators"?Object.keys(S).length>0&&(d[O]=S):d[O]=x[T](j,e);}),Z.set(i,d),d}catch(t){throw Error(t)}},et=()=>(i,e,n)=>Te(i,e,n),tt=i=>{let e=Z.get(i);if(e)return e;throw Error("[MeshFlow] Engine ID not found.")},nt=i=>{Z.delete(i);},Te=Se;exports.deleteEngine=nt;exports.useEngine=tt;exports.useEngineManager=Se;exports.useMeshFlow=Te;exports.useMeshFlowDefiner=et;exports.useScheduler=pe;
1
+ 'use strict';var re=class{computedRules=[];store={OR:(e,n)=>{let t,u,r=this.computedRules;for(let o=0;o<r.length;o++){let s=r[o],i=s.logic(e);if(i instanceof Promise)return (async()=>{let a=await i;if(s.entityId==="__base__"?u=a:a&&(t=a),typeof t>"u")for(let d=o+1;d<r.length;d++){let P=r[d],f=P.logic(e),p=f instanceof Promise?await f:f;if(P.entityId==="__base__"){u=p;continue}if(p){t=P.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}})();let c=i;if(s.entityId==="__base__"){u=c;continue}if(c){t=s.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}},PRIORITY:(e,n)=>{let t,u=this.computedRules;for(let r=0;r<u.length;r++){let s=u[r].logic(e);if(s instanceof Promise)return (async()=>{let i=await s;if(i!==void 0)return {res:i,version:n};for(let c=r+1;c<u.length;c++){let a=u[c].logic(e),d=a instanceof Promise?await a:a;if(d!==void 0)return {res:d,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,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.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.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},ee=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 u=()=>this.rules;this.strategy=new re(u),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,u={...e,entityId:t};for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let o=this.rules.get(r);o&&(o.delete(u),o.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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,u={...e,entityId:t};if(e)for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let o=this.rules.get(r);o&&(o.delete(u),o.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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.GetValueByPath(e.triggerPath);if(typeof o=="object"||typeof s=="object")t=false;else {let i=Array.from(this.deps.keys());for(let c of i){let a=this.deps.get(c),d=e.GetValueByPath(c);if(a!==d){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let u=++this.version,r=this.strategy.evaluate(e,u);if(!(r instanceof Promise)){let{res:o,version:s}=r;return this.finalizeSync(o,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:o,version:s}=await r;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,u){return u!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((r,o)=>{this.deps.set(o,t.GetValueByPath(o));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var ae=(l,e,n)=>{let u=r=>{let o=n.triggerPaths.map(c=>{let a=r.GetValueByPath(c),d={};return n.triggerKeys.forEach(P=>{d[P]=a[P];}),d}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>o}),Object.defineProperty(s,"affectedTatget",{get:()=>r.GetRenderSchemaByPath(l)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:l,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:u}},oe=(l,e,n)=>{if(!l)throw Error("");let t=l,u=(s,i)=>{e.has(s)||e.set(s,new Set),e.get(s).add(i),n.has(i)||n.set(i,new Set),n.get(i).add(s);};return {SetRule:(s,i,c,a)=>{let d=t(i),P=a.triggerKeys||[];P.length==0&&P.push("value");let f=ae(i,c,{...a,triggerPaths:[s],triggerKeys:P}),p=[s].map(h=>[h,t(h).state.value]);if(u(s,i),d.nodeBucket[c])d.nodeBucket[c].setRule(f,p),a.effect&&d.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let h=d.meta[c],S=new ee(h,c,i);S.setRule(f,p),a.effect&&S.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),d.nodeBucket[c]=S;}d.state[c]=d.meta[c],a.forceNotify&&d.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&d.nodeBucket[c].setUseCache(false);},SetRules:(s,i,c,a)=>{let d=t(i);for(let h of s)u(h,i);let P=a.triggerKeys||[];P.length==0&&P.push("value");let f=ae(i,c,{...a,triggerPaths:s,triggerKeys:P}),p=s.map(h=>[h,t(h).state.value]);if(d.nodeBucket[c])d.nodeBucket[c].setRules(f,p),a.effect&&d.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let h=d.meta[c],S=new ee(h,c,i);S.setRules(f,p),a.effect&&S.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),d.nodeBucket[c]=S;}d.state[c]=d.meta[c],a.forceNotify&&d.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&d.nodeBucket[c].setUseCache(false);}}};var ie=l=>{let e=l||void 0;if(!e)throw Error("");return {SetStrategy:(t,u,r)=>{e(t).nodeBucket[u].setStrategy(r);}}};function le(){let l=new Map,e=new Map,n=new Set,t=(o,s)=>{l.set(o,s);let i=e.get(o);i&&i(s);};return {SetTrace:(o,s)=>{e.set(o,s);let i=l.get(o)||"idle";return s(i),{cancel:()=>{e.delete(o);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(i=>t(i,"idle")),n.clear(),l.clear();}),s.on("node:release",({path:i,type:c})=>{(c==1||c==2)&&(n.add(i),t(i,"pending"));}),s.on("node:pending",({path:i})=>{n.add(i),(!l.has(i)||l.get(i)==="idle")&&t(i,"pending");}),s.on("node:start",({path:i})=>{n.add(i),t(i,"calculating");}),s.on("node:success",({path:i})=>{t(i,"calculated");}),s.on("node:intercept",({path:i,type:c})=>{c==3&&t(i,"calculating"),c==6&&t(i,"idle");}),s.on("node:stagnate",({path:i})=>{t(i,"pending");}),s.on("node:error",({path:i})=>t(i,"error"));}})}}function ce(l,e,n,t){let u=a=>{let d=l(),P=e(),f=new Set;return d.get(a)?.forEach(p=>f.add(p)),f.size===0?[]:Array.from(f).filter(p=>{let h=P.get(p)||new Set;return !Array.from(h).some(M=>f.has(M))})};return {GetNextDependency:a=>{let d=t();return Array.from(d.get(a)||[])},GetPrevDependency:a=>{let d=n();return Array.from(d.get(a)||[])},GetAllPrevDependency:a=>{let d=e();return Array.from(d.get(a)||[])},GetAllNextDependency:a=>{let d=l();return Array.from(d.get(a)||[])},rebuildDirectDependencyMaps:a=>{let d=new Map,P=new Map;for(let f of a){let p=u(f);d.set(f,new Set(p));for(let h of p)P.has(h)||P.set(h,new Set),P.get(h).add(f);}return {directNextMap:d,directPrevMap:P}}}}function ue(l){let e=t=>{let u=[],r=[],o=new Map,s=t.size,i=0,c=0;for(let[a,d]of t)d===0&&r.push(a);if(r.length===0&&s>0)throw Error("Circular dependency detected");for(;r.length>0;){u.push([...r]);let a=[];for(let d of r){i++,o.set(d,c);let P=l.get(d);if(P)for(let f of P){let p=t.get(f)-1;t.set(f,p),p===0&&a.push(f);}}r=a,c++;}if(i<s)throw Error("Circular dependency detected");return {steps:u,levelMap:o}};return ()=>{let t=new Map;for(let u of l.keys()){let r=Array.from(l.get(u)||[]);t.has(u)||t.set(u,0);for(let o of r){let s=t.get(o)||0;t.set(o,++s);}}return e(t)}}var Z=()=>{let l=[];return {on:e=>(l.push(e),()=>{let n=l.indexOf(e);n>-1&&l.splice(n,1);}),call:e=>l.forEach(n=>{n(e);})}};function de(){let{on:l,call:e}=Z();return {onError:l,callOnError:e}}function fe(){let{on:l,call:e}=Z();return {onSuccess:l,callOnSuccess:e}}var ye=()=>{let l=new Set,e=new Map,n=(r,o)=>{e.get(r)?.forEach(s=>s(o));},t=(r,o)=>(e.has(r)||e.set(r,new Set),e.get(r).add(o),()=>e.get(r).delete(o));return {usePlugin:r=>{let o=new Set,s=(i,c)=>{let a=t(i,c);return o.add(a),a};return r.apply({on:s}),l.add(r),()=>{o.forEach(i=>i()),o.clear(),l.delete(r);}},emit:n}};function he(){let{on:l,call:e}=Z();return {onStart:l,callOnStart:e}}var pe=(l={frameQuota:12})=>{let e=performance.now(),n=0,t=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let r=performance.now();return n++,!!((n>=5||t)&&(n=0,r-e>l.frameQuota||u()))},async yieldToMain(){return new Promise(r=>{Te(()=>{e=performance.now(),n=0,t&&(t=false),r();});})}}},Te=l=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=l,n.postMessage(null);};function ge(l,e,n,t,u){let r=new Map,o=l.useGreedy,s=pe();return async(c,a)=>{let P=Symbol("token"),f=c||"__NOTIFY_ALL__";r.set(f,P);let p=false;s.reset();let h=new Set,S=new Set,Y=new Set;a.forEach(w=>{Y.add(w),e.GetAllNextDependency(w).forEach(m=>Y.add(m));});let M=new Map,C=new Map,E=new Set,L=e.GetPathToLevelMap(),j=0,q=0,y=w=>{e.GetAllNextDependency(w).forEach(F=>{let G=L.get(F)||0;G>q&&(q=G);});};c?(j=L.get(c)??0,y(c),h.add(c)):a.forEach(w=>y(w)),a.forEach(w=>{E.add(w);});let N=performance.now();t.emit("flow:start",{path:f}),t.callOnStart({path:f});let x=false,b=30,z=w=>{let{target:m,trigger:F}=w,G=false,R=false,D=n.GetNodeByPath(m),$=[],I=(g,T)=>{if(h.has(g)||S.has(g)||E.has(g))return;let B=0,v=L.get(g)??0;if(M.has(g))B=M.get(g)-1;else {if(v>j&&M.size>b){C.has(v)||C.set(v,new Set),C.get(v).add(g),t.emit("node:intercept",{path:g,type:7});return}let U=e.GetPrevDependency(g),k=0;for(let Q of U){if(h.has(Q))continue;(L.get(Q)??0)>j&&k++;}B=k;}if(B<=0){let U=E.has(g),k=S.has(g);if(U||k){t.emit("node:intercept",{path:g,type:k?3:3.1});return}M.delete(g),E.add(g),t.emit("node:release",{path:g,type:T,detail:{path:m}});}else M.set(g,B);},_=(g=[])=>{if(r.get(f)!==P)return;if(g.length){let v={},U=D.proxy;for(let k of g){let Q=(k.args||[]).reduce((W,ne)=>(W[ne]=U[ne],W),{});try{let W=k.fn(Q);W&&typeof W=="object"&&Object.assign(v,W);}catch(W){}}for(let k in v)if(k in D.state)D.state[k]=v[k];else throw {error:`wrong effect in ${String(D.path)}`};G=true;}G&&u.flushPathSet.add(m),t.emit("node:success",{path:m}),h.add(m);let T=e.GetNextDependency(m);(G||R)&&e.GetAllNextDependency(m).forEach(U=>Y.add(U));for(let v of T){if(h.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(S.has(v)||E.has(v)){t.emit("node:intercept",{path:v,type:S.has(v)?3:3.1});continue}if(G||R)I(v,1);else if(M.has(v))I(v,2);else {let k=L.get(v);C.has(k)||C.set(k,new Set);let Q=C.get(k);Q.has(v)||(Q.add(v),t.emit("node:stagnate",{path:v,type:1}));}}S.delete(m),(async()=>{if(!p){let v=S.size,U=E.size;t.emit("flow:fire",{path:m,type:1,detail:{active:v,pending:U,blocked:M.size}}),A();}})();},H=g=>{t.emit("node:error",{path:m,error:g});let T=Symbol("abort");r.set(f,T),E.clear(),M.clear(),S.clear(),t.callOnError(g);},O=(g,T)=>{let B=false;g!==D.state[T]&&(D.state[T]=g,G=true,t.emit("node:bucket:success",{path:m,key:String(T),value:g}),D.notifyKeys.has(T)&&(B=true)),D.nodeBucket[T].isForceNotify()&&(R=true),(B||R)&&y(m);};t.emit("node:start",{path:m});try{let g=[];for(let T in D.nodeBucket){let B=D.nodeBucket[T];g.push(...B.getSideEffect());let v=B.evaluate({affectKey:T,triggerPath:F,GetRenderSchemaByPath:U=>n.GetNodeByPath(U).proxy,GetValueByPath:U=>n.GetNodeByPath(U).state,GetToken:()=>P});if(v instanceof Promise){let U=v.then(k=>{r.get(f)===P&&O(k,T);});$.push(U);}else O(v,T);}if($.length>0)return Promise.all($).then(()=>{_(g);}).catch(H);_(g);return}catch(g){H(g);}},A=async()=>{if(r.get(f)!==P){p=false;return}p=true;let w=s.getIsFirstFrame(),m=0,F=()=>o&&w?30:1/0,G=0,R=F();try{for(;r.get(f)===P;){let D=G>=R,$=s.shouldYield();if(D||$){if(G>0&&(m++,(w||m%2===0)&&u.requestUpdate()),await s.yieldToMain(),r.get(f)!==P)break;G=0,w=s.getIsFirstFrame();}if(E.size>0&&S.size<5){for(let I of E){if(S.size>=5||G>=R)break;let _=L.get(I)??0,H=e.GetPrevDependency(I),O=H.length>1;if((!o||O)&&_>j){E.delete(I);let T=H.filter(B=>Y.has(B)&&!h.has(B)).length;M.set(I,T||0),t.emit("node:intercept",{path:I,type:T>0?4:5,detail:{targetLevel:_,currentLevel:j,pendingParentsCount:T}});continue}if(E.delete(I),S.add(I),t.emit("node:processing",{path:I}),z({target:I,trigger:c}),G++,G>=R||s.shouldYield())break}if(E.size>0)continue}if(G<R&&o&&M.size>0&&S.size<5){let I=!1,_=0;for(let[H,O]of M)if(O<=0){let g=L.get(H)??0,T=e.GetPrevDependency(H);if(g>j&&T.length>1)continue;if(M.delete(H),E.add(H),_++,I=!0,t.emit("node:release",{path:H,type:4}),_>=R)break}if(_>0)continue;if(I){if(s.shouldYield()&&(await s.yieldToMain(),r.get(f)!==P))break;continue}}if(S.size===0&&E.size===0){let I=new Set;for(let O of C.keys())I.add(O);for(let[O]of M){let g=L.get(O)??0;g>j&&I.add(g);}let _=Array.from(I).sort((O,g)=>O-g),H=_[0];if(_.length>0&&H<=q){let O=_[0];if(O<=q){j=O;let g=C.get(O);g&&(g.forEach(T=>E.add(T)),C.delete(O));for(let[T]of M)(L.get(T)??0)===O&&(M.delete(T),E.add(T),t.emit("node:release",{path:T,type:3,detail:{level:O}}));continue}}else {C.forEach((O,g)=>{O.forEach(T=>{h.add(T),t.emit("node:intercept",{path:T,type:6});});}),C.clear();for(let[O]of M)h.add(O),t.emit("node:intercept",{path:O,type:6});M.clear();break}}E.size>0&&S.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(p=false,S.size+M.size+E.size===0){if(r.get(f)===P&&!x){x=true,t.emit("flow:end",{type:1}),u.requestUpdate();let $=performance.now();t.emit("flow:success",{duration:($-N).toFixed(2.1)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:S.size}});}};A();}}function se(l){let{path:e,uid:n,type:t,meta:u,dirtySignal:r,state:o}=l,s=null,i=["path","uid","type","dependOn","nodeBucket"],a={path:e,uid:n,type:t,meta:u,dirtySignal:r,createView:(d={})=>{if(s&&Object.keys(d).length===0)return s;let P=new Proxy(d,{get(f,p){let h=p;return Reflect.has(f,p)?Reflect.get(f,p):h in l.state?l.state[h]:h in l?l[h]:u&&h in u?u[h]:Reflect.get(f,p)},set(f,p,h){let S=p;return S in l.state?(l.state[S]=h,true):Reflect.set(f,p,h)},ownKeys(f){let p=new Set([...Reflect.ownKeys(f),...Object.keys(o||{}),...Object.keys(u||{}),...i]);return Array.from(p)},getOwnPropertyDescriptor(f,p){let h=p;return Reflect.has(f,p)||o&&h in o||u&&h in u||i.includes(h)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,p)}});return s=P,P}};return "children"in l?{...a,children:l.children}:{...a,state:l.state,nodeBucket:l.nodeBucket,notifyKeys:l.notifyKeys,dependOn:l.dependOn,get proxy(){return s}}}function Pe(l,e,n,t,u){let r=0,o=new Map,s=new Map,i=new Map,c=false,a=new Set,P=async()=>{let y=Array.from(a);if(a.clear(),"signalTrigger"in u&&typeof u.signalTrigger=="function")for(let N of y){let x=M(N);u.signalTrigger(x.dirtySignal);}else u.emit(y);},f=()=>{c||(c=true,requestAnimationFrame(()=>{try{for(;a.size>0;)P();}finally{c=false;}}));},p=ge({useGreedy:l.useGreedy},e,{GetNodeByPath:M},t,{requestUpdate:f,flushPathSet:a}),h=y=>{throw new Error(`[MeshFlow] Duplicate Path: ${y}`)},S=y=>{o.has(y.path)&&h(String(y.path));let N=++r,x={path:y.path,getNode:A=>M(A)},b=(A,w="value")=>{let m=A({...x}),F=M(y.path);if(n.createHistoryAction&&n.pushIntoHistory){let G=n.createHistoryAction([{path:y.path,value:F.state[w]},{path:y.path,value:m}],R=>{let D=M(R.path);D.state[w]=R.value,E(R.path);});n.pushIntoHistory(G);}F.state[w]=m,E(y.path);};y.notifyKeys.size==0&&y.notifyKeys.add("value");let z=se({uid:N,path:y.path,state:y.state,meta:y.meta,nodeBucket:y.nodeBucket,dirtySignal:y.dirtySignal,notifyKeys:y.notifyKeys,dependOn:b});return o.set(z.path,N),s.set(N,z),z},Y=y=>{o.has(y.path)&&h(String(y.path));let N=++r,x=se({uid:N,path:y.path,state:{},meta:y,nodeBucket:{},children:y.children});return o.set(x.path,N),i.set(N,x),x};function M(y){let N=o.get(y),x=s.get(N);if(!x)throw Error("wrong ID");return x}function C(y){let N=o.get(y);return i.get(N)}let E=y=>{if(!M(y))throw Error("Node undefined");a.add(y),f();let x=e.GetNextDependency(y);L(x,y);};function L(y,N){p(N,y);}return {registerNode:S,registerGroupNode:Y,GetNodeByPath:M,GetGroupByPath:C,notify:E,notifyAll:async()=>{Promise.resolve().then(async()=>{let y=e.GetDependencyOrder();if(!y||y.length===0)return;let N=y[0];try{p(null,N);}catch(x){throw t.callOnError(x),x}finally{f();}});},batchNotify:y=>{if(!y||y.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let x=n.createHistoryAction([y.map(b=>({path:b.path,key:b.key,value:M(b.path).state[b.key]})),y.map(b=>({path:b.path,key:b.key,value:b.value}))],b=>{let z=new Set;b.forEach(A=>{let w=M(A.path);w.state[A.key]=A.value,a.add(A.path),z.add(A.path);}),f(),z.size>0&&p(null,Array.from(z));});n.pushIntoHistory(x);}let N=new Set;y.forEach(x=>{let b=M(x.path);b.state[x.key]=x.value,a.add(x.path),N.add(x.path);}),f(),N.size>0&&p(null,Array.from(N));},UITrigger:u,UidToNodeMap:s}}function me(l,e){let n=false,t=false,u=new Map,r=new Map,o=new Map,s=new Map,i=[],c=new Map,{GetNextDependency:d,GetPrevDependency:P,GetAllPrevDependency:f,GetAllNextDependency:p,rebuildDirectDependencyMaps:h}=ce(()=>u,()=>r,()=>s,()=>o),S={},Y={};if(e.modules.useHistory){let{Undo:K,Redo:V,PushIntoHistory:X,CreateHistoryAction:J,initCanUndo:Me,initCanRedo:Se}=e.modules.useHistory();S.pushIntoHistory=X,S.createHistoryAction=J,Y={Undo:K,Redo:V,initCanUndo:Me,initCanRedo:Se};}let M=!!e.modules.useMeshRenderGate,C={};if(M){let K=e.modules.useMeshRenderGate.isMeshModuleInited,V=e.modules.useMeshRenderGate;C=(K?V:V())(()=>R);}let{onError:E,callOnError:L}=de(),{onSuccess:j,callOnSuccess:q}=fe(),{onStart:y,callOnStart:N}=he(),{emit:x,usePlugin:b}=ye(),{SetTrace:z,useTrace:A}=le(),w=A();b(w);let m=M?{...C}:{...e.UITrigger},F=Pe({useGreedy:e.config.useGreedy},{GetDependencyOrder:()=>i,GetAllNextDependency:p,GetNextDependency:d,GetPrevDependency:P,GetAllPrevDependency:f,GetPathToLevelMap:()=>c},S,{callOnError:L,callOnSuccess:q,callOnStart:N,emit:x},m),{GetGroupByPath:G,GetNodeByPath:R,notifyAll:D}=F;M&&C.init();let $={};if(e.modules.useInternalForm){let{uiSchema:K,GetFormData:V}=e.modules.useInternalForm(F,l);$={uiSchema:K,GetFormData:V};}let I={};if(e.modules.useSchemaValidators){let{SetValidators:K}=e.modules.useSchemaValidators(R);I={SetValidators:K};}let{SetRule:_,SetRules:H}=oe(R,u,r),{SetStrategy:O}=ie(R),g=ue(u),T=()=>{let K=g();i=K.steps,c=K.levelMap;},B=()=>{t||(t=true,Promise.resolve().then(()=>{if(T(),n){let{directNextMap:K,directPrevMap:V}=h(i.flat());o=K,s=V;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(K,V,X,J)=>{_(K,V,X,J),n=true,B();},SetRules:(K,V,X,J)=>{H(K,V,X,J),n=true,B();},SetStrategy:O,SetTrace:z,usePlugin:b,SetValue:(K,V,X)=>{R(K).dependOn(()=>X,V);},GetValue:(K,V="value")=>R(K)[V],SetValues:K=>{F.batchNotify(K);},GetGroupByPath:G,notifyAll:async()=>{T(),await D();},GetAllDependency:()=>u,GetDependencyOrder:()=>i,historyExports:Y,formExports:$,validatorExports:I,batchRenderExport:C,hasRenderGate:()=>M,onError:E,onSuccess:j,onStart:y,scheduler:F}}var te=new Map,xe=(l,e,n)=>{try{if(typeof n.UITrigger.signalCreator!="function"||typeof n.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(te.has(l))throw Error("engineID repeated");let t=me(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules??{},plugins:{}}),{SetRule:u,SetRules:r,SetValues:o,SetStrategy:s,SetValue:i,GetValue:c,usePlugin:a,GetGroupByPath:d,notifyAll:P,SetTrace:f,GetAllDependency:p,GetDependencyOrder:h,historyExports:S,formExports:Y,validatorExports:M,batchRenderExport:C,hasRenderGate:E,onError:L,onSuccess:j,onStart:q,scheduler:y}=t,N={config:{SetRule:u,SetRules:r,SetStrategy:s,notifyAll:P,SetTrace:f,usePlugin:a,hasRenderGate:E},data:{SetValue:i,GetValue:c,SetValues:o,GetGroupByPath:d},dependency:{GetAllDependency:p,GetDependencyOrder:h},hooks:{onError:L,onSuccess:j,onStart:q}},x=(A,w,m)=>{!w||typeof w!="object"||Object.keys(w).forEach(F=>{let G=w[F];if(typeof G=="object"&&G!==null)A[F]=A[F]||{},x(A[F],G,m);else if(typeof G=="function"){let R=F;if(R==="useMeshRenderGate")R="render";else if(R.startsWith("use")){let D=R.slice(3);R=D.charAt(0).toLowerCase()+D.slice(1);}F==="useHistory"&&m.exports.history&&Object.keys(m.exports.history).length>0?A[R]=m.exports.history:F==="useInternalForm"&&m.exports.form&&Object.keys(m.exports.form).length>0?A[R]=m.exports.form:F==="useSchemaValidators"&&m.exports.validator&&Object.keys(m.exports.validator).length>0?A[R]=m.exports.validator:F==="useMeshRenderGate"&&m.exports.render?A[R]=m.exports.render:A[R]=G(m.scheduler,m.Schema);}});},b={...N,modules:{}},z=n.modules;return z&&x(b.modules,z,{scheduler:y,Schema:e,exports:{history:S,form:Y,validator:M,render:C}}),te.set(l,b),b}catch(t){throw Error(t)}},rt=()=>(l,e,n)=>Re(l,e,n),st=l=>{let e=te.get(l);if(e)return e;throw Error("[MeshFlow] Engine ID not found.")},at=l=>{te.delete(l);},Re=xe;exports.deleteEngine=at;exports.useEngine=st;exports.useEngineManager=xe;exports.useMeshFlow=Re;exports.useMeshFlowDefiner=rt;exports.useScheduler=Pe;
package/index.mjs CHANGED
@@ -1 +1 @@
1
- var ee=class{computedRules=[];store={OR:(e,n)=>{let t,u,r=this.computedRules;for(let l=0;l<r.length;l++){let s=r[l],o=s.logic(e);if(o instanceof Promise)return (async()=>{let a=await o;if(s.entityId==="__base__"?u=a:a&&(t=a),typeof t>"u")for(let f=l+1;f<r.length;f++){let g=r[f],y=g.logic(e),h=y instanceof Promise?await y:y;if(g.entityId==="__base__"){u=h;continue}if(h){t=g.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}})();let c=o;if(s.entityId==="__base__"){u=c;continue}if(c){t=s.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}},PRIORITY:(e,n)=>{let t,u=this.computedRules;for(let r=0;r<u.length;r++){let s=u[r].logic(e);if(s instanceof Promise)return (async()=>{let o=await s;if(o!==void 0)return {res:o,version:n};for(let c=r+1;c<u.length;c++){let a=u[c].logic(e),f=a instanceof Promise?await a:a;if(f!==void 0)return {res:f,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,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.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.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},J=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 u=()=>this.rules;this.strategy=new ee(u),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,u={...e,entityId:t};for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let l=this.rules.get(r);l&&(l.delete(u),l.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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,u={...e,entityId:t};if(e)for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let l=this.rules.get(r);l&&(l.delete(u),l.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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 l=this.deps.get(e.triggerPath),s=e.GetValueByPath(e.triggerPath);if(typeof l=="object"||typeof s=="object")t=false;else {let o=Array.from(this.deps.keys());for(let c of o){let a=this.deps.get(c),f=e.GetValueByPath(c);if(a!==f){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let u=++this.version,r=this.strategy.evaluate(e,u);if(!(r instanceof Promise)){let{res:l,version:s}=r;return this.finalizeSync(l,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:l,version:s}=await r;return this.finalizeSync(l,s,e,n)}catch(l){throw {path:this.path,error:l}}finally{this.promiseToken===n&&(this.pendingPromise=null,this.promiseToken=null);}})(),this.pendingPromise}finalizeSync(e,n,t,u){return u!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((r,l)=>{this.deps.set(l,t.GetValueByPath(l));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var ne=(i,e,n)=>{let u=r=>{let l=n.triggerPaths.map(c=>{let a=r.GetValueByPath(c),f={};return n.triggerKeys.forEach(g=>{f[g]=a[g];}),f}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>l}),Object.defineProperty(s,"affectedTatget",{get:()=>r.GetRenderSchemaByPath(i)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:i,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:u}},re=(i,e,n)=>{if(!i)throw Error("");let t=i,u=(s,o)=>{e.has(s)||e.set(s,new Set),e.get(s).add(o),n.has(o)||n.set(o,new Set),n.get(o).add(s);};return {SetRule:(s,o,c,a)=>{let f=t(o),g=a.triggerKeys||[];g.length==0&&g.push("value");let y=ne(o,c,{...a,triggerPaths:[s],triggerKeys:g}),h=[s].map(P=>[P,t(P).state.value]);if(u(s,o),f.nodeBucket[c])f.nodeBucket[c].setRule(y,h),a.effect&&f.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let P=f.meta[c],m=new J(P,c,o);m.setRule(y,h),a.effect&&m.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),f.nodeBucket[c]=m;}f.state[c]=f.meta[c],a.forceNotify&&f.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&f.nodeBucket[c].setUseCache(false);},SetRules:(s,o,c,a)=>{let f=t(o);for(let P of s)u(P,o);let g=a.triggerKeys||[];g.length==0&&g.push("value");let y=ne(o,c,{...a,triggerPaths:s,triggerKeys:g}),h=s.map(P=>[P,t(P).state.value]);if(f.nodeBucket[c])f.nodeBucket[c].setRules(y,h),a.effect&&f.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let P=f.meta[c],m=new J(P,c,o);m.setRules(y,h),a.effect&&m.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),f.nodeBucket[c]=m;}f.state[c]=f.meta[c],a.forceNotify&&f.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&f.nodeBucket[c].setUseCache(false);}}};var se=i=>{let e=i||void 0;if(!e)throw Error("");return {SetStrategy:(t,u,r)=>{e(t).nodeBucket[u].setStrategy(r);}}};function ae(){let i=new Map,e=new Map,n=new Set,t=(l,s)=>{i.set(l,s);let o=e.get(l);o&&o(s);};return {SetTrace:(l,s)=>{e.set(l,s);let o=i.get(l)||"idle";return s(o),{cancel:()=>{e.delete(l);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(o=>t(o,"idle")),n.clear(),i.clear();}),s.on("node:release",({path:o,type:c})=>{(c==1||c==2)&&(n.add(o),t(o,"pending"));}),s.on("node:pending",({path:o})=>{n.add(o),(!i.has(o)||i.get(o)==="idle")&&t(o,"pending");}),s.on("node:start",({path:o})=>{n.add(o),t(o,"calculating");}),s.on("node:success",({path:o})=>{t(o,"calculated");}),s.on("node:intercept",({path:o,type:c})=>{c==3&&t(o,"calculating"),c==6&&t(o,"idle");}),s.on("node:stagnate",({path:o})=>{t(o,"pending");}),s.on("node:error",({path:o})=>t(o,"error"));}})}}function oe(i,e,n,t){let u=a=>{let f=i(),g=e(),y=new Set;return f.get(a)?.forEach(h=>y.add(h)),y.size===0?[]:Array.from(y).filter(h=>{let P=g.get(h)||new Set;return !Array.from(P).some(S=>y.has(S))})};return {GetNextDependency:a=>{let f=t();return Array.from(f.get(a)||[])},GetPrevDependency:a=>{let f=n();return Array.from(f.get(a)||[])},GetAllPrevDependency:a=>{let f=e();return Array.from(f.get(a)||[])},GetAllNextDependency:a=>{let f=i();return Array.from(f.get(a)||[])},rebuildDirectDependencyMaps:a=>{let f=new Map,g=new Map;for(let y of a){let h=u(y);f.set(y,new Set(h));for(let P of h)g.has(P)||g.set(P,new Set),g.get(P).add(y);}return {directNextMap:f,directPrevMap:g}}}}function ie(i){let e=t=>{let u=[],r=[],l=new Map,s=t.size,o=0,c=0;for(let[a,f]of t)f===0&&r.push(a);if(r.length===0&&s>0)throw Error("Circular dependency detected");for(;r.length>0;){u.push([...r]);let a=[];for(let f of r){o++,l.set(f,c);let g=i.get(f);if(g)for(let y of g){let h=t.get(y)-1;t.set(y,h),h===0&&a.push(y);}}r=a,c++;}if(o<s)throw Error("Circular dependency detected");return {steps:u,levelMap:l}};return ()=>{let t=new Map;for(let u of i.keys()){let r=Array.from(i.get(u)||[]);t.has(u)||t.set(u,0);for(let l of r){let s=t.get(l)||0;t.set(l,++s);}}return e(t)}}var X=()=>{let i=[];return {on:e=>(i.push(e),()=>{let n=i.indexOf(e);n>-1&&i.splice(n,1);}),call:e=>i.forEach(n=>{n(e);})}};function le(){let{on:i,call:e}=X();return {onError:i,callOnError:e}}function ce(){let{on:i,call:e}=X();return {onSuccess:i,callOnSuccess:e}}var ue=()=>{let i=new Set,e=new Map,n=(r,l)=>{e.get(r)?.forEach(s=>s(l));},t=(r,l)=>(e.has(r)||e.set(r,new Set),e.get(r).add(l),()=>e.get(r).delete(l));return {usePlugin:r=>{let l=new Set,s=(o,c)=>{let a=t(o,c);return l.add(a),a};return r.apply({on:s}),i.add(r),()=>{l.forEach(o=>o()),l.clear(),i.delete(r);}},emit:n}};function fe(){let{on:i,call:e}=X();return {onStart:i,callOnStart:e}}var de=(i={frameQuota:12})=>{let e=performance.now(),n=0,t=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let r=performance.now();return n++,!!((n>=5||t)&&(n=0,r-e>i.frameQuota||u()))},async yieldToMain(){return new Promise(r=>{me(()=>{e=performance.now(),n=0,t&&(t=false),r();});})}}},me=i=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=i,n.postMessage(null);};function ye(i,e,n,t,u){let r=new Map,l=i.useGreedy,s=de();return async(c,a)=>{let g=Symbol("token"),y=c||"__NOTIFY_ALL__";r.set(y,g);let h=false;s.reset();let P=new Set,m=new Set,z=new Set;a.forEach(G=>{z.add(G),e.GetAllNextDependency(G).forEach(w=>z.add(w));});let S=new Map,K=new Map,E=new Set,B=e.GetPathToLevelMap(),j=0,q=0,d=G=>{e.GetAllNextDependency(G).forEach($=>{let I=B.get($)||0;I>q&&(q=I);});};c?(j=B.get(c)??0,d(c),P.add(c)):a.forEach(G=>d(G)),a.forEach(G=>{E.add(G);});let x=performance.now();t.emit("flow:start",{path:y}),t.callOnStart({path:y});let T=false,O=30,H=G=>{let{target:w,trigger:$}=G,I=false,k=false,U=n.GetNodeByPath(w),W=[],b=(p,M)=>{if(P.has(p)||m.has(p)||E.has(p))return;let _=0,v=B.get(p)??0;if(S.has(p))_=S.get(p)-1;else {if(v>j&&S.size>O){K.has(v)||K.set(v,new Set),K.get(v).add(p),t.emit("node:intercept",{path:p,type:7});return}let C=e.GetPrevDependency(p),F=0;for(let N of C){if(P.has(N))continue;(B.get(N)??0)>j&&F++;}_=F;}if(_<=0){let C=E.has(p),F=m.has(p);if(C||F){t.emit("node:intercept",{path:p,type:F?3:3.1});return}S.delete(p),E.add(p),t.emit("node:release",{path:p,type:M,detail:{path:w}});}else S.set(p,_);},L=(p=[])=>{if(r.get(y)!==g)return;if(p.length){let v={},C=U.proxy;for(let F of p){let N=(F.args||[]).reduce((A,Y)=>(A[Y]=C[Y],A),{});try{let A=F.fn(N);A&&typeof A=="object"&&Object.assign(v,A);}catch(A){}}for(let F in v)if(F in U.state)U.state[F]=v[F];else throw {error:`wrong effect in ${String(U.path)}`};I=true;}I&&u.flushPathSet.add(w),t.emit("node:success",{path:w}),P.add(w);let M=e.GetNextDependency(w);(I||k)&&e.GetAllNextDependency(w).forEach(C=>z.add(C));for(let v of M){if(P.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(m.has(v)||E.has(v)){t.emit("node:intercept",{path:v,type:m.has(v)?3:3.1});continue}if(I||k)b(v,1);else if(S.has(v))b(v,2);else {let F=B.get(v);K.has(F)||K.set(F,new Set);let N=K.get(F);N.has(v)||(N.add(v),t.emit("node:stagnate",{path:v,type:1}));}}m.delete(w),(async()=>{if(!h){let v=m.size,C=E.size;t.emit("flow:fire",{path:w,type:1,detail:{active:v,pending:C,blocked:S.size}}),D();}})();},V=p=>{t.emit("node:error",{path:w,error:p});let M=Symbol("abort");r.set(y,M),E.clear(),S.clear(),m.clear(),t.callOnError(p);},R=(p,M)=>{let _=false;p!==U.state[M]&&(U.state[M]=p,I=true,t.emit("node:bucket:success",{path:w,key:String(M),value:p}),U.notifyKeys.has(M)&&(_=true)),U.nodeBucket[M].isForceNotify()&&(k=true),(_||k)&&d(w);};t.emit("node:start",{path:w});try{let p=[];for(let M in U.nodeBucket){let _=U.nodeBucket[M];p.push(..._.getSideEffect());let v=_.evaluate({affectKey:M,triggerPath:$,GetRenderSchemaByPath:C=>n.GetNodeByPath(C).proxy,GetValueByPath:C=>n.GetNodeByPath(C).state,GetToken:()=>g});if(v instanceof Promise){let C=v.then(F=>{r.get(y)===g&&R(F,M);});W.push(C);}else R(v,M);}if(W.length>0)return Promise.all(W).then(()=>{L(p);}).catch(V);L(p);return}catch(p){V(p);}},D=async()=>{if(r.get(y)!==g){h=false;return}h=true;let G=s.getIsFirstFrame(),w=0,$=()=>l&&G?30:1/0,I=0,k=$();try{for(;r.get(y)===g;){let U=I>=k,W=s.shouldYield();if(U||W){if(I>0&&(w++,(G||w%2===0)&&u.requestUpdate()),await s.yieldToMain(),r.get(y)!==g)break;I=0,G=s.getIsFirstFrame();}if(E.size>0&&m.size<5){for(let b of E){if(m.size>=5||I>=k)break;let L=B.get(b)??0,V=e.GetPrevDependency(b),R=V.length>1;if((!l||R)&&L>j){E.delete(b);let M=V.filter(_=>z.has(_)&&!P.has(_)).length;S.set(b,M||0),t.emit("node:intercept",{path:b,type:M>0?4:5,detail:{targetLevel:L,currentLevel:j,pendingParentsCount:M}});continue}if(E.delete(b),m.add(b),t.emit("node:processing",{path:b}),H({target:b,trigger:c}),I++,I>=k||s.shouldYield())break}if(E.size>0)continue}if(I<k&&l&&S.size>0&&m.size<5){let b=!1,L=0;for(let[V,R]of S)if(R<=0){let p=B.get(V)??0,M=e.GetPrevDependency(V);if(p>j&&M.length>1)continue;if(S.delete(V),E.add(V),L++,b=!0,t.emit("node:release",{path:V,type:4}),L>=k)break}if(L>0)continue;if(b){if(s.shouldYield()&&(await s.yieldToMain(),r.get(y)!==g))break;continue}}if(m.size===0&&E.size===0){let b=new Set;for(let R of K.keys())b.add(R);for(let[R]of S){let p=B.get(R)??0;p>j&&b.add(p);}let L=Array.from(b).sort((R,p)=>R-p),V=L[0];if(L.length>0&&V<=q){let R=L[0];if(R<=q){j=R;let p=K.get(R);p&&(p.forEach(M=>E.add(M)),K.delete(R));for(let[M]of S)(B.get(M)??0)===R&&(S.delete(M),E.add(M),t.emit("node:release",{path:M,type:3,detail:{level:R}}));continue}}else {K.forEach((R,p)=>{R.forEach(M=>{P.add(M),t.emit("node:intercept",{path:M,type:6});});}),K.clear();for(let[R]of S)P.add(R),t.emit("node:intercept",{path:R,type:6});S.clear();break}}E.size>0&&m.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(h=false,m.size+S.size+E.size===0){if(r.get(y)===g&&!T){T=true,t.emit("flow:end",{type:1}),u.requestUpdate();let W=performance.now();t.emit("flow:success",{duration:(W-x).toFixed(2)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:m.size}});}};D();}}function te(i){let{path:e,uid:n,type:t,meta:u,dirtySignal:r,triggerUI:l,state:s}=i,o=null,a={path:e,uid:n,type:t,meta:u,dirtySignal:r,createView:(f={})=>{let g=new Proxy(f,{get(y,h){let P=h;return P in i.state?i.state[P]:P in i?i[P]:u&&P in u?u[P]:Reflect.get(y,h)},set(y,h,P){let m=h;return m in i.state?(i.state[m]=P,true):Reflect.set(y,h,P)},ownKeys(y){let h=new Set([...Reflect.ownKeys(y),...Object.keys(s||{}),...Object.keys(u||{})]);return Array.from(h)},getOwnPropertyDescriptor(y,h){return s&&h in s||u&&h in u?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(y,h)}});return o=g,g}};return "children"in i?{...a,children:i.children}:{...a,state:i.state,nodeBucket:i.nodeBucket,notifyKeys:i.notifyKeys,dependOn:i.dependOn,get proxy(){return o}}}function pe(i,e,n,t,u){let r=0,l=new Map,s=new Map,o=new Map,c=false,a=new Set,g=async()=>{let d=Array.from(a);a.clear();for(let x of d){let T=S(x);u.signalTrigger(T.dirtySignal);}},y=()=>{c||(c=true,requestAnimationFrame(()=>{try{for(;a.size>0;)g();}finally{c=false;}}));},h=ye({useGreedy:i.useGreedy},e,{GetNodeByPath:S},t,{requestUpdate:y,flushPathSet:a}),P=d=>{throw new Error(`[MeshFlow] Duplicate Path: ${d}`)},m=d=>{l.has(d.path)&&P(String(d.path));let x=++r,T={path:d.path,getNode:D=>S(D)},O=(D,G="value")=>{let w=D({...T}),$=S(d.path);if(n.createHistoryAction&&n.pushIntoHistory){let I=n.createHistoryAction([{path:d.path,value:$.state[G]},{path:d.path,value:w}],k=>{let U=S(k.path);U.state[G]=k.value,E(k.path);});n.pushIntoHistory(I);}$.state[G]=w,E(d.path);};d.notifyKeys.size==0&&d.notifyKeys.add("value");let H=te({uid:x,path:d.path,state:d.state,meta:d.meta,nodeBucket:d.nodeBucket,dirtySignal:d.dirtySignal,notifyKeys:d.notifyKeys,dependOn:O});return l.set(H.path,x),s.set(x,H),H},z=d=>{l.has(d.path)&&P(String(d.path));let x=++r,T=te({uid:x,path:d.path,state:{},meta:d,nodeBucket:{},children:d.children});return l.set(T.path,x),o.set(x,T),T};function S(d){let x=l.get(d),T=s.get(x);if(!T)throw Error("wrong ID");return T}function K(d){let x=l.get(d);return o.get(x)}let E=d=>{if(!S(d))throw Error("Node undefined");a.add(d),y();let T=e.GetNextDependency(d);B(T,d);};function B(d,x){h(x,d);}return {registerNode:m,registerGroupNode:z,GetNodeByPath:S,GetGroupByPath:K,notify:E,notifyAll:async()=>{Promise.resolve().then(async()=>{let d=e.GetDependencyOrder();if(!d||d.length===0)return;let x=d[0];try{h(null,x);}catch(T){throw t.callOnError(T),T}finally{y();}});},batchNotify:d=>{if(!d||d.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let T=n.createHistoryAction([d.map(O=>({path:O.path,key:O.key,value:S(O.path).state[O.key]})),d.map(O=>({path:O.path,key:O.key,value:O.value}))],O=>{let H=new Set;O.forEach(D=>{let G=S(D.path);G.state[D.key]=D.value,a.add(D.path),H.add(D.path);}),y(),H.size>0&&h(null,Array.from(H));});n.pushIntoHistory(T);}let x=new Set;d.forEach(T=>{let O=S(T.path);O.state[T.key]=T.value,a.add(T.path),x.add(T.path);}),y(),x.size>0&&h(null,Array.from(x));},UITrigger:u,UidToNodeMap:s}}function he(i,e){let n=false,t=false,u=new Map,r=new Map,l=new Map,s=new Map,o=[],c=new Map,{GetNextDependency:f,GetPrevDependency:g,GetAllPrevDependency:y,GetAllNextDependency:h,rebuildDirectDependencyMaps:P}=oe(()=>u,()=>r,()=>s,()=>l),m={},z={};if(e.modules.useHistory){let{Undo:N,Redo:A,PushIntoHistory:Y,CreateHistoryAction:Q,initCanUndo:ge,initCanRedo:Pe}=e.modules.useHistory();m.pushIntoHistory=Y,m.createHistoryAction=Q,z={Undo:N,Redo:A,initCanUndo:ge,initCanRedo:Pe};}let{onError:S,callOnError:K}=le(),{onSuccess:E,callOnSuccess:B}=ce(),{onStart:j,callOnStart:q}=fe(),{emit:d,usePlugin:x}=ue(),{SetTrace:T,useTrace:O}=ae(),H=O();x(H);let D=pe({useGreedy:e.config.useGreedy},{GetDependencyOrder:()=>o,GetAllNextDependency:h,GetNextDependency:f,GetPrevDependency:g,GetAllPrevDependency:y,GetPathToLevelMap:()=>c},m,{callOnError:K,callOnSuccess:B,callOnStart:q,emit:d},e.UITrigger),{GetGroupByPath:G,GetNodeByPath:w,notifyAll:$}=D,I={};if(e.modules.useInternalForm){let{uiSchema:N,GetFormData:A}=e.modules.useInternalForm(D,i);I={uiSchema:N,GetFormData:A};}let k={};if(e.modules.useSchemaValidators){let{SetValidators:N}=e.modules.useSchemaValidators(w);k={SetValidators:N};}let{SetRule:U,SetRules:W}=re(w,u,r),{SetStrategy:b}=se(w),L=ie(u),V=()=>{let N=L();o=N.steps,c=N.levelMap;},R=()=>{t||(t=true,Promise.resolve().then(()=>{if(V(),n){let{directNextMap:N,directPrevMap:A}=P(o.flat());l=N,s=A;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(N,A,Y,Q)=>{U(N,A,Y,Q),n=true,R();},SetRules:(N,A,Y,Q)=>{W(N,A,Y,Q),n=true,R();},SetStrategy:b,SetTrace:T,usePlugin:x,SetValue:(N,A,Y)=>{w(N).dependOn(()=>Y,A);},GetValue:(N,A="value")=>w(N)[A],SetValues:N=>{D.batchNotify(N);},GetGroupByPath:G,notifyAll:async()=>{V(),await $();},GetAllDependency:()=>u,GetDependencyOrder:()=>o,historyExports:z,formExports:I,validatorExports:k,onError:S,onSuccess:E,onStart:j,scheduler:D}}var Z=new Map,Se=(i,e,n)=>{try{if(typeof n.UITrigger.signalCreator!="function"||typeof n.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(Z.has(i))throw Error("engineID repeated");let t=he(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules||{},plugins:{}}),{SetRule:u,SetRules:r,SetValues:l,SetStrategy:s,SetValue:o,GetValue:c,usePlugin:a,GetGroupByPath:f,notifyAll:g,SetTrace:y,GetAllDependency:h,GetDependencyOrder:P,historyExports:m,formExports:z,validatorExports:S,onError:K,onSuccess:E,onStart:B,scheduler:j}=t,d={...{config:{SetRule:u,SetRules:r,SetStrategy:s,notifyAll:g,SetTrace:y,usePlugin:a},data:{SetValue:o,GetValue:c,SetValues:l,GetGroupByPath:f},dependency:{GetAllDependency:h,GetDependencyOrder:P},hooks:{onError:K,onSuccess:E,onStart:B}}},x=n.modules;return x&&Object.keys(x).forEach(T=>{let O=T;if(O.startsWith("use")){let H=O.slice(3);O=H.charAt(0).toLowerCase()+H.slice(1);}T==="useHistory"&&m?Object.keys(m).length>0&&(d[O]=m):T==="useInternalForm"?Object.keys(z).length>0&&(d[O]=z):T==="useSchemaValidators"?Object.keys(S).length>0&&(d[O]=S):d[O]=x[T](j,e);}),Z.set(i,d),d}catch(t){throw Error(t)}},et=()=>(i,e,n)=>Te(i,e,n),tt=i=>{let e=Z.get(i);if(e)return e;throw Error("[MeshFlow] Engine ID not found.")},nt=i=>{Z.delete(i);},Te=Se;export{nt as deleteEngine,tt as useEngine,Se as useEngineManager,Te as useMeshFlow,et as useMeshFlowDefiner,pe as useScheduler};
1
+ var re=class{computedRules=[];store={OR:(e,n)=>{let t,u,r=this.computedRules;for(let o=0;o<r.length;o++){let s=r[o],i=s.logic(e);if(i instanceof Promise)return (async()=>{let a=await i;if(s.entityId==="__base__"?u=a:a&&(t=a),typeof t>"u")for(let d=o+1;d<r.length;d++){let P=r[d],f=P.logic(e),p=f instanceof Promise?await f:f;if(P.entityId==="__base__"){u=p;continue}if(p){t=P.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}})();let c=i;if(s.entityId==="__base__"){u=c;continue}if(c){t=s.value;break}}return typeof t>"u"&&(t=u),{res:t,version:n}},PRIORITY:(e,n)=>{let t,u=this.computedRules;for(let r=0;r<u.length;r++){let s=u[r].logic(e);if(s instanceof Promise)return (async()=>{let i=await s;if(i!==void 0)return {res:i,version:n};for(let c=r+1;c<u.length;c++){let a=u[c].logic(e),d=a instanceof Promise?await a:a;if(d!==void 0)return {res:d,version:n}}return {res:void 0,version:n}})();if(s!==void 0)return {res:s,version:n}}return {res:t,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.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.CurrentStrategy=this.store[e],this.updateComputedRules();}evaluate(e,n){return this.CurrentStrategy(e,n)}},ee=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 u=()=>this.rules;this.strategy=new re(u),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,u={...e,entityId:t};for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let o=this.rules.get(r);o&&(o.delete(u),o.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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,u={...e,entityId:t};if(e)for(let r of e.triggerPaths)this.rules.has(r)||this.rules.set(r,new Set),this.rules.get(r).add(u);return this.strategy.updateComputedRules(),()=>{for(let r of e.triggerPaths){let o=this.rules.get(r);o&&(o.delete(u),o.size===0&&(this.rules.delete(r),this.deps.delete(r)));}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.GetValueByPath(e.triggerPath);if(typeof o=="object"||typeof s=="object")t=false;else {let i=Array.from(this.deps.keys());for(let c of i){let a=this.deps.get(c),d=e.GetValueByPath(c);if(a!==d){t=false;break}}}}if(t&&this.useCache)return this.cache;this.promiseToken=n;let u=++this.version,r=this.strategy.evaluate(e,u);if(!(r instanceof Promise)){let{res:o,version:s}=r;return this.finalizeSync(o,s,e,n)}return this.pendingPromise=(async()=>{try{let{res:o,version:s}=await r;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,u){return u!==this.promiseToken||n<this.version?this.cache:(this.cache=e,this.deps.forEach((r,o)=>{this.deps.set(o,t.GetValueByPath(o));}),e)}inferType(e){return Array.isArray(e)?"array":typeof e}};var ae=(l,e,n)=>{let u=r=>{let o=n.triggerPaths.map(c=>{let a=r.GetValueByPath(c),d={};return n.triggerKeys.forEach(P=>{d[P]=a[P];}),d}),s=Object.create(null);return Object.defineProperty(s,"triggerTargets",{get:()=>o}),Object.defineProperty(s,"affectedTatget",{get:()=>r.GetRenderSchemaByPath(l)[e]}),n.logic({slot:s})};return {value:n.value,targetPath:l,triggerPaths:n.triggerPaths,priority:n.priority??10,logic:u}},oe=(l,e,n)=>{if(!l)throw Error("");let t=l,u=(s,i)=>{e.has(s)||e.set(s,new Set),e.get(s).add(i),n.has(i)||n.set(i,new Set),n.get(i).add(s);};return {SetRule:(s,i,c,a)=>{let d=t(i),P=a.triggerKeys||[];P.length==0&&P.push("value");let f=ae(i,c,{...a,triggerPaths:[s],triggerKeys:P}),p=[s].map(h=>[h,t(h).state.value]);if(u(s,i),d.nodeBucket[c])d.nodeBucket[c].setRule(f,p),a.effect&&d.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let h=d.meta[c],S=new ee(h,c,i);S.setRule(f,p),a.effect&&S.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),d.nodeBucket[c]=S;}d.state[c]=d.meta[c],a.forceNotify&&d.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&d.nodeBucket[c].setUseCache(false);},SetRules:(s,i,c,a)=>{let d=t(i);for(let h of s)u(h,i);let P=a.triggerKeys||[];P.length==0&&P.push("value");let f=ae(i,c,{...a,triggerPaths:s,triggerKeys:P}),p=s.map(h=>[h,t(h).state.value]);if(d.nodeBucket[c])d.nodeBucket[c].setRules(f,p),a.effect&&d.nodeBucket[c].setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]});else {let h=d.meta[c],S=new ee(h,c,i);S.setRules(f,p),a.effect&&S.setSideEffect({fn:a.effect,args:a.effectArgs?a.effectArgs:[c]}),d.nodeBucket[c]=S;}d.state[c]=d.meta[c],a.forceNotify&&d.nodeBucket[c].forceNotify(),a.cacheStrategy=="none"&&d.nodeBucket[c].setUseCache(false);}}};var ie=l=>{let e=l||void 0;if(!e)throw Error("");return {SetStrategy:(t,u,r)=>{e(t).nodeBucket[u].setStrategy(r);}}};function le(){let l=new Map,e=new Map,n=new Set,t=(o,s)=>{l.set(o,s);let i=e.get(o);i&&i(s);};return {SetTrace:(o,s)=>{e.set(o,s);let i=l.get(o)||"idle";return s(i),{cancel:()=>{e.delete(o);}}},useTrace:()=>({apply:s=>{s.on("flow:start",()=>{n.forEach(i=>t(i,"idle")),n.clear(),l.clear();}),s.on("node:release",({path:i,type:c})=>{(c==1||c==2)&&(n.add(i),t(i,"pending"));}),s.on("node:pending",({path:i})=>{n.add(i),(!l.has(i)||l.get(i)==="idle")&&t(i,"pending");}),s.on("node:start",({path:i})=>{n.add(i),t(i,"calculating");}),s.on("node:success",({path:i})=>{t(i,"calculated");}),s.on("node:intercept",({path:i,type:c})=>{c==3&&t(i,"calculating"),c==6&&t(i,"idle");}),s.on("node:stagnate",({path:i})=>{t(i,"pending");}),s.on("node:error",({path:i})=>t(i,"error"));}})}}function ce(l,e,n,t){let u=a=>{let d=l(),P=e(),f=new Set;return d.get(a)?.forEach(p=>f.add(p)),f.size===0?[]:Array.from(f).filter(p=>{let h=P.get(p)||new Set;return !Array.from(h).some(M=>f.has(M))})};return {GetNextDependency:a=>{let d=t();return Array.from(d.get(a)||[])},GetPrevDependency:a=>{let d=n();return Array.from(d.get(a)||[])},GetAllPrevDependency:a=>{let d=e();return Array.from(d.get(a)||[])},GetAllNextDependency:a=>{let d=l();return Array.from(d.get(a)||[])},rebuildDirectDependencyMaps:a=>{let d=new Map,P=new Map;for(let f of a){let p=u(f);d.set(f,new Set(p));for(let h of p)P.has(h)||P.set(h,new Set),P.get(h).add(f);}return {directNextMap:d,directPrevMap:P}}}}function ue(l){let e=t=>{let u=[],r=[],o=new Map,s=t.size,i=0,c=0;for(let[a,d]of t)d===0&&r.push(a);if(r.length===0&&s>0)throw Error("Circular dependency detected");for(;r.length>0;){u.push([...r]);let a=[];for(let d of r){i++,o.set(d,c);let P=l.get(d);if(P)for(let f of P){let p=t.get(f)-1;t.set(f,p),p===0&&a.push(f);}}r=a,c++;}if(i<s)throw Error("Circular dependency detected");return {steps:u,levelMap:o}};return ()=>{let t=new Map;for(let u of l.keys()){let r=Array.from(l.get(u)||[]);t.has(u)||t.set(u,0);for(let o of r){let s=t.get(o)||0;t.set(o,++s);}}return e(t)}}var Z=()=>{let l=[];return {on:e=>(l.push(e),()=>{let n=l.indexOf(e);n>-1&&l.splice(n,1);}),call:e=>l.forEach(n=>{n(e);})}};function de(){let{on:l,call:e}=Z();return {onError:l,callOnError:e}}function fe(){let{on:l,call:e}=Z();return {onSuccess:l,callOnSuccess:e}}var ye=()=>{let l=new Set,e=new Map,n=(r,o)=>{e.get(r)?.forEach(s=>s(o));},t=(r,o)=>(e.has(r)||e.set(r,new Set),e.get(r).add(o),()=>e.get(r).delete(o));return {usePlugin:r=>{let o=new Set,s=(i,c)=>{let a=t(i,c);return o.add(a),a};return r.apply({on:s}),l.add(r),()=>{o.forEach(i=>i()),o.clear(),l.delete(r);}},emit:n}};function he(){let{on:l,call:e}=Z();return {onStart:l,callOnStart:e}}var pe=(l={frameQuota:12})=>{let e=performance.now(),n=0,t=false,u=()=>!!navigator?.scheduling?.isInputPending?.({includeContinuous:true});return {getIsFirstFrame:()=>t,reset(){e=performance.now(),n=0,t=true;},shouldYield(){let r=performance.now();return n++,!!((n>=5||t)&&(n=0,r-e>l.frameQuota||u()))},async yieldToMain(){return new Promise(r=>{Te(()=>{e=performance.now(),n=0,t&&(t=false),r();});})}}},Te=l=>{let{port1:e,port2:n}=new MessageChannel;e.onmessage=l,n.postMessage(null);};function ge(l,e,n,t,u){let r=new Map,o=l.useGreedy,s=pe();return async(c,a)=>{let P=Symbol("token"),f=c||"__NOTIFY_ALL__";r.set(f,P);let p=false;s.reset();let h=new Set,S=new Set,Y=new Set;a.forEach(w=>{Y.add(w),e.GetAllNextDependency(w).forEach(m=>Y.add(m));});let M=new Map,C=new Map,E=new Set,L=e.GetPathToLevelMap(),j=0,q=0,y=w=>{e.GetAllNextDependency(w).forEach(F=>{let G=L.get(F)||0;G>q&&(q=G);});};c?(j=L.get(c)??0,y(c),h.add(c)):a.forEach(w=>y(w)),a.forEach(w=>{E.add(w);});let N=performance.now();t.emit("flow:start",{path:f}),t.callOnStart({path:f});let x=false,b=30,z=w=>{let{target:m,trigger:F}=w,G=false,R=false,D=n.GetNodeByPath(m),$=[],I=(g,T)=>{if(h.has(g)||S.has(g)||E.has(g))return;let B=0,v=L.get(g)??0;if(M.has(g))B=M.get(g)-1;else {if(v>j&&M.size>b){C.has(v)||C.set(v,new Set),C.get(v).add(g),t.emit("node:intercept",{path:g,type:7});return}let U=e.GetPrevDependency(g),k=0;for(let Q of U){if(h.has(Q))continue;(L.get(Q)??0)>j&&k++;}B=k;}if(B<=0){let U=E.has(g),k=S.has(g);if(U||k){t.emit("node:intercept",{path:g,type:k?3:3.1});return}M.delete(g),E.add(g),t.emit("node:release",{path:g,type:T,detail:{path:m}});}else M.set(g,B);},_=(g=[])=>{if(r.get(f)!==P)return;if(g.length){let v={},U=D.proxy;for(let k of g){let Q=(k.args||[]).reduce((W,ne)=>(W[ne]=U[ne],W),{});try{let W=k.fn(Q);W&&typeof W=="object"&&Object.assign(v,W);}catch(W){}}for(let k in v)if(k in D.state)D.state[k]=v[k];else throw {error:`wrong effect in ${String(D.path)}`};G=true;}G&&u.flushPathSet.add(m),t.emit("node:success",{path:m}),h.add(m);let T=e.GetNextDependency(m);(G||R)&&e.GetAllNextDependency(m).forEach(U=>Y.add(U));for(let v of T){if(h.has(v)){t.emit("node:intercept",{path:v,type:2});continue}if(S.has(v)||E.has(v)){t.emit("node:intercept",{path:v,type:S.has(v)?3:3.1});continue}if(G||R)I(v,1);else if(M.has(v))I(v,2);else {let k=L.get(v);C.has(k)||C.set(k,new Set);let Q=C.get(k);Q.has(v)||(Q.add(v),t.emit("node:stagnate",{path:v,type:1}));}}S.delete(m),(async()=>{if(!p){let v=S.size,U=E.size;t.emit("flow:fire",{path:m,type:1,detail:{active:v,pending:U,blocked:M.size}}),A();}})();},H=g=>{t.emit("node:error",{path:m,error:g});let T=Symbol("abort");r.set(f,T),E.clear(),M.clear(),S.clear(),t.callOnError(g);},O=(g,T)=>{let B=false;g!==D.state[T]&&(D.state[T]=g,G=true,t.emit("node:bucket:success",{path:m,key:String(T),value:g}),D.notifyKeys.has(T)&&(B=true)),D.nodeBucket[T].isForceNotify()&&(R=true),(B||R)&&y(m);};t.emit("node:start",{path:m});try{let g=[];for(let T in D.nodeBucket){let B=D.nodeBucket[T];g.push(...B.getSideEffect());let v=B.evaluate({affectKey:T,triggerPath:F,GetRenderSchemaByPath:U=>n.GetNodeByPath(U).proxy,GetValueByPath:U=>n.GetNodeByPath(U).state,GetToken:()=>P});if(v instanceof Promise){let U=v.then(k=>{r.get(f)===P&&O(k,T);});$.push(U);}else O(v,T);}if($.length>0)return Promise.all($).then(()=>{_(g);}).catch(H);_(g);return}catch(g){H(g);}},A=async()=>{if(r.get(f)!==P){p=false;return}p=true;let w=s.getIsFirstFrame(),m=0,F=()=>o&&w?30:1/0,G=0,R=F();try{for(;r.get(f)===P;){let D=G>=R,$=s.shouldYield();if(D||$){if(G>0&&(m++,(w||m%2===0)&&u.requestUpdate()),await s.yieldToMain(),r.get(f)!==P)break;G=0,w=s.getIsFirstFrame();}if(E.size>0&&S.size<5){for(let I of E){if(S.size>=5||G>=R)break;let _=L.get(I)??0,H=e.GetPrevDependency(I),O=H.length>1;if((!o||O)&&_>j){E.delete(I);let T=H.filter(B=>Y.has(B)&&!h.has(B)).length;M.set(I,T||0),t.emit("node:intercept",{path:I,type:T>0?4:5,detail:{targetLevel:_,currentLevel:j,pendingParentsCount:T}});continue}if(E.delete(I),S.add(I),t.emit("node:processing",{path:I}),z({target:I,trigger:c}),G++,G>=R||s.shouldYield())break}if(E.size>0)continue}if(G<R&&o&&M.size>0&&S.size<5){let I=!1,_=0;for(let[H,O]of M)if(O<=0){let g=L.get(H)??0,T=e.GetPrevDependency(H);if(g>j&&T.length>1)continue;if(M.delete(H),E.add(H),_++,I=!0,t.emit("node:release",{path:H,type:4}),_>=R)break}if(_>0)continue;if(I){if(s.shouldYield()&&(await s.yieldToMain(),r.get(f)!==P))break;continue}}if(S.size===0&&E.size===0){let I=new Set;for(let O of C.keys())I.add(O);for(let[O]of M){let g=L.get(O)??0;g>j&&I.add(g);}let _=Array.from(I).sort((O,g)=>O-g),H=_[0];if(_.length>0&&H<=q){let O=_[0];if(O<=q){j=O;let g=C.get(O);g&&(g.forEach(T=>E.add(T)),C.delete(O));for(let[T]of M)(L.get(T)??0)===O&&(M.delete(T),E.add(T),t.emit("node:release",{path:T,type:3,detail:{level:O}}));continue}}else {C.forEach((O,g)=>{O.forEach(T=>{h.add(T),t.emit("node:intercept",{path:T,type:6});});}),C.clear();for(let[O]of M)h.add(O),t.emit("node:intercept",{path:O,type:6});M.clear();break}}E.size>0&&S.size>=5&&t.emit("flow:wait",{type:2});break}}finally{if(p=false,S.size+M.size+E.size===0){if(r.get(f)===P&&!x){x=true,t.emit("flow:end",{type:1}),u.requestUpdate();let $=performance.now();t.emit("flow:success",{duration:($-N).toFixed(2.1)+"ms"}),Promise.resolve().then(()=>{t.callOnSuccess();});}}else t.emit("flow:wait",{type:1,detail:{nums:S.size}});}};A();}}function se(l){let{path:e,uid:n,type:t,meta:u,dirtySignal:r,state:o}=l,s=null,i=["path","uid","type","dependOn","nodeBucket"],a={path:e,uid:n,type:t,meta:u,dirtySignal:r,createView:(d={})=>{if(s&&Object.keys(d).length===0)return s;let P=new Proxy(d,{get(f,p){let h=p;return Reflect.has(f,p)?Reflect.get(f,p):h in l.state?l.state[h]:h in l?l[h]:u&&h in u?u[h]:Reflect.get(f,p)},set(f,p,h){let S=p;return S in l.state?(l.state[S]=h,true):Reflect.set(f,p,h)},ownKeys(f){let p=new Set([...Reflect.ownKeys(f),...Object.keys(o||{}),...Object.keys(u||{}),...i]);return Array.from(p)},getOwnPropertyDescriptor(f,p){let h=p;return Reflect.has(f,p)||o&&h in o||u&&h in u||i.includes(h)?{enumerable:true,configurable:true}:Reflect.getOwnPropertyDescriptor(f,p)}});return s=P,P}};return "children"in l?{...a,children:l.children}:{...a,state:l.state,nodeBucket:l.nodeBucket,notifyKeys:l.notifyKeys,dependOn:l.dependOn,get proxy(){return s}}}function Pe(l,e,n,t,u){let r=0,o=new Map,s=new Map,i=new Map,c=false,a=new Set,P=async()=>{let y=Array.from(a);if(a.clear(),"signalTrigger"in u&&typeof u.signalTrigger=="function")for(let N of y){let x=M(N);u.signalTrigger(x.dirtySignal);}else u.emit(y);},f=()=>{c||(c=true,requestAnimationFrame(()=>{try{for(;a.size>0;)P();}finally{c=false;}}));},p=ge({useGreedy:l.useGreedy},e,{GetNodeByPath:M},t,{requestUpdate:f,flushPathSet:a}),h=y=>{throw new Error(`[MeshFlow] Duplicate Path: ${y}`)},S=y=>{o.has(y.path)&&h(String(y.path));let N=++r,x={path:y.path,getNode:A=>M(A)},b=(A,w="value")=>{let m=A({...x}),F=M(y.path);if(n.createHistoryAction&&n.pushIntoHistory){let G=n.createHistoryAction([{path:y.path,value:F.state[w]},{path:y.path,value:m}],R=>{let D=M(R.path);D.state[w]=R.value,E(R.path);});n.pushIntoHistory(G);}F.state[w]=m,E(y.path);};y.notifyKeys.size==0&&y.notifyKeys.add("value");let z=se({uid:N,path:y.path,state:y.state,meta:y.meta,nodeBucket:y.nodeBucket,dirtySignal:y.dirtySignal,notifyKeys:y.notifyKeys,dependOn:b});return o.set(z.path,N),s.set(N,z),z},Y=y=>{o.has(y.path)&&h(String(y.path));let N=++r,x=se({uid:N,path:y.path,state:{},meta:y,nodeBucket:{},children:y.children});return o.set(x.path,N),i.set(N,x),x};function M(y){let N=o.get(y),x=s.get(N);if(!x)throw Error("wrong ID");return x}function C(y){let N=o.get(y);return i.get(N)}let E=y=>{if(!M(y))throw Error("Node undefined");a.add(y),f();let x=e.GetNextDependency(y);L(x,y);};function L(y,N){p(N,y);}return {registerNode:S,registerGroupNode:Y,GetNodeByPath:M,GetGroupByPath:C,notify:E,notifyAll:async()=>{Promise.resolve().then(async()=>{let y=e.GetDependencyOrder();if(!y||y.length===0)return;let N=y[0];try{p(null,N);}catch(x){throw t.callOnError(x),x}finally{f();}});},batchNotify:y=>{if(!y||y.length===0)return;if(n.createHistoryAction&&n.pushIntoHistory){let x=n.createHistoryAction([y.map(b=>({path:b.path,key:b.key,value:M(b.path).state[b.key]})),y.map(b=>({path:b.path,key:b.key,value:b.value}))],b=>{let z=new Set;b.forEach(A=>{let w=M(A.path);w.state[A.key]=A.value,a.add(A.path),z.add(A.path);}),f(),z.size>0&&p(null,Array.from(z));});n.pushIntoHistory(x);}let N=new Set;y.forEach(x=>{let b=M(x.path);b.state[x.key]=x.value,a.add(x.path),N.add(x.path);}),f(),N.size>0&&p(null,Array.from(N));},UITrigger:u,UidToNodeMap:s}}function me(l,e){let n=false,t=false,u=new Map,r=new Map,o=new Map,s=new Map,i=[],c=new Map,{GetNextDependency:d,GetPrevDependency:P,GetAllPrevDependency:f,GetAllNextDependency:p,rebuildDirectDependencyMaps:h}=ce(()=>u,()=>r,()=>s,()=>o),S={},Y={};if(e.modules.useHistory){let{Undo:K,Redo:V,PushIntoHistory:X,CreateHistoryAction:J,initCanUndo:Me,initCanRedo:Se}=e.modules.useHistory();S.pushIntoHistory=X,S.createHistoryAction=J,Y={Undo:K,Redo:V,initCanUndo:Me,initCanRedo:Se};}let M=!!e.modules.useMeshRenderGate,C={};if(M){let K=e.modules.useMeshRenderGate.isMeshModuleInited,V=e.modules.useMeshRenderGate;C=(K?V:V())(()=>R);}let{onError:E,callOnError:L}=de(),{onSuccess:j,callOnSuccess:q}=fe(),{onStart:y,callOnStart:N}=he(),{emit:x,usePlugin:b}=ye(),{SetTrace:z,useTrace:A}=le(),w=A();b(w);let m=M?{...C}:{...e.UITrigger},F=Pe({useGreedy:e.config.useGreedy},{GetDependencyOrder:()=>i,GetAllNextDependency:p,GetNextDependency:d,GetPrevDependency:P,GetAllPrevDependency:f,GetPathToLevelMap:()=>c},S,{callOnError:L,callOnSuccess:q,callOnStart:N,emit:x},m),{GetGroupByPath:G,GetNodeByPath:R,notifyAll:D}=F;M&&C.init();let $={};if(e.modules.useInternalForm){let{uiSchema:K,GetFormData:V}=e.modules.useInternalForm(F,l);$={uiSchema:K,GetFormData:V};}let I={};if(e.modules.useSchemaValidators){let{SetValidators:K}=e.modules.useSchemaValidators(R);I={SetValidators:K};}let{SetRule:_,SetRules:H}=oe(R,u,r),{SetStrategy:O}=ie(R),g=ue(u),T=()=>{let K=g();i=K.steps,c=K.levelMap;},B=()=>{t||(t=true,Promise.resolve().then(()=>{if(T(),n){let{directNextMap:K,directPrevMap:V}=h(i.flat());o=K,s=V;}}).finally(()=>{t=false,n=false;}));};return {SetRule:(K,V,X,J)=>{_(K,V,X,J),n=true,B();},SetRules:(K,V,X,J)=>{H(K,V,X,J),n=true,B();},SetStrategy:O,SetTrace:z,usePlugin:b,SetValue:(K,V,X)=>{R(K).dependOn(()=>X,V);},GetValue:(K,V="value")=>R(K)[V],SetValues:K=>{F.batchNotify(K);},GetGroupByPath:G,notifyAll:async()=>{T(),await D();},GetAllDependency:()=>u,GetDependencyOrder:()=>i,historyExports:Y,formExports:$,validatorExports:I,batchRenderExport:C,hasRenderGate:()=>M,onError:E,onSuccess:j,onStart:y,scheduler:F}}var te=new Map,xe=(l,e,n)=>{try{if(typeof n.UITrigger.signalCreator!="function"||typeof n.UITrigger.signalTrigger!="function")throw Error("ui trigger undefined");if(te.has(l))throw Error("engineID repeated");let t=me(e,{config:n.config||{useGreedy:!1},UITrigger:n.UITrigger,modules:n.modules??{},plugins:{}}),{SetRule:u,SetRules:r,SetValues:o,SetStrategy:s,SetValue:i,GetValue:c,usePlugin:a,GetGroupByPath:d,notifyAll:P,SetTrace:f,GetAllDependency:p,GetDependencyOrder:h,historyExports:S,formExports:Y,validatorExports:M,batchRenderExport:C,hasRenderGate:E,onError:L,onSuccess:j,onStart:q,scheduler:y}=t,N={config:{SetRule:u,SetRules:r,SetStrategy:s,notifyAll:P,SetTrace:f,usePlugin:a,hasRenderGate:E},data:{SetValue:i,GetValue:c,SetValues:o,GetGroupByPath:d},dependency:{GetAllDependency:p,GetDependencyOrder:h},hooks:{onError:L,onSuccess:j,onStart:q}},x=(A,w,m)=>{!w||typeof w!="object"||Object.keys(w).forEach(F=>{let G=w[F];if(typeof G=="object"&&G!==null)A[F]=A[F]||{},x(A[F],G,m);else if(typeof G=="function"){let R=F;if(R==="useMeshRenderGate")R="render";else if(R.startsWith("use")){let D=R.slice(3);R=D.charAt(0).toLowerCase()+D.slice(1);}F==="useHistory"&&m.exports.history&&Object.keys(m.exports.history).length>0?A[R]=m.exports.history:F==="useInternalForm"&&m.exports.form&&Object.keys(m.exports.form).length>0?A[R]=m.exports.form:F==="useSchemaValidators"&&m.exports.validator&&Object.keys(m.exports.validator).length>0?A[R]=m.exports.validator:F==="useMeshRenderGate"&&m.exports.render?A[R]=m.exports.render:A[R]=G(m.scheduler,m.Schema);}});},b={...N,modules:{}},z=n.modules;return z&&x(b.modules,z,{scheduler:y,Schema:e,exports:{history:S,form:Y,validator:M,render:C}}),te.set(l,b),b}catch(t){throw Error(t)}},rt=()=>(l,e,n)=>Re(l,e,n),st=l=>{let e=te.get(l);if(e)return e;throw Error("[MeshFlow] Engine ID not found.")},at=l=>{te.delete(l);},Re=xe;export{at as deleteEngine,st as useEngine,xe as useEngineManager,Re as useMeshFlow,rt as useMeshFlowDefiner,Pe as useScheduler};
package/metafile-cjs.json CHANGED
@@ -1 +1 @@
1
- {"inputs":{"utils/core/engine/bucket.ts":{"bytes":16822,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":7991,"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":437,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":507,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"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":1793,"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/engine/useMeshTask.ts":{"bytes":35494,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":3248,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13342,"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/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":9032,"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":8441,"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/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.js":{"imports":[],"exports":["deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":4228},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1745},"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":121},"utils/core/hooks/useOnError.ts":{"bytesInOutput":67},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":71},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":316},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":67},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":4827},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":764},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2228},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":1860},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1304}},"bytes":20318}}}
1
+ {"inputs":{"utils/core/engine/bucket.ts":{"bytes":16822,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":8109,"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":437,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":507,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"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":1793,"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/engine/useMeshTask.ts":{"bytes":35496,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":3831,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13582,"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/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":10118,"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":12698,"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/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.js":{"imports":[],"exports":["deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":4229},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1747},"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":121},"utils/core/hooks/useOnError.ts":{"bytesInOutput":67},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":71},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":316},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":67},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":4832},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":921},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2301},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2083},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1861}},"bytes":21336}}}
package/metafile-esm.json CHANGED
@@ -1 +1 @@
1
- {"inputs":{"utils/core/engine/bucket.ts":{"bytes":16822,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":7991,"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":437,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":507,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"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":1793,"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/engine/useMeshTask.ts":{"bytes":35494,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":3248,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13342,"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/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":9032,"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":8441,"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/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.mjs":{"imports":[],"exports":["deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":4228},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1745},"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":121},"utils/core/hooks/useOnError.ts":{"bytesInOutput":67},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":71},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":316},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":67},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":4827},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":764},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2228},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":1860},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1304}},"bytes":20318}}}
1
+ {"inputs":{"utils/core/engine/bucket.ts":{"bytes":16822,"imports":[],"format":"esm"},"utils/core/dependency/useSetRule.ts":{"bytes":8109,"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":437,"imports":[],"format":"esm"},"utils/core/hooks/useOnError.ts":{"bytes":507,"imports":[{"path":"utils/core/hooks/useCreateHook.ts","kind":"import-statement","original":"./useCreateHook"}],"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":1793,"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/engine/useMeshTask.ts":{"bytes":35496,"imports":[{"path":"utils/core/utils/util.ts","kind":"import-statement","original":"../utils/util"},{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useMeshNode.ts":{"bytes":3831,"imports":[{"path":"../types/types","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useScheduler.ts":{"bytes":13582,"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/util","kind":"import-statement","external":true}],"format":"esm"},"utils/core/engine/useEngineInstance.ts":{"bytes":10118,"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":12698,"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/engine/useScheduler.ts","kind":"import-statement","original":"../engine/useScheduler"}],"format":"esm"}},"outputs":{"lib-dist/index.mjs":{"imports":[],"exports":["deleteEngine","useEngine","useEngineManager","useMeshFlow","useMeshFlowDefiner","useScheduler"],"entryPoint":"utils/core/engine/useEngineManager.ts","inputs":{"utils/core/engine/bucket.ts":{"bytesInOutput":4229},"utils/core/dependency/useSetRule.ts":{"bytesInOutput":1747},"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":121},"utils/core/hooks/useOnError.ts":{"bytesInOutput":67},"utils/core/hooks/useOnSuccess.ts":{"bytesInOutput":71},"utils/core/plugins/usePlugin.ts":{"bytesInOutput":316},"utils/core/hooks/useOnStart.ts":{"bytesInOutput":67},"utils/core/utils/util.ts":{"bytesInOutput":472},"utils/core/engine/useMeshTask.ts":{"bytesInOutput":4832},"utils/core/engine/useMeshNode.ts":{"bytesInOutput":921},"utils/core/engine/useScheduler.ts":{"bytesInOutput":2301},"utils/core/engine/useEngineInstance.ts":{"bytesInOutput":2083},"utils/core/engine/useEngineManager.ts":{"bytesInOutput":1861}},"bytes":21336}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshflow/core",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
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",