@meshflow/core 0.2.9 → 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 +44 -37
- package/index.d.ts +44 -37
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +1 -1
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
|
|
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:
|
|
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,
|
|
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] ?
|
|
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,10 +523,7 @@ 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>;
|
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
|
|
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:
|
|
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,
|
|
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] ?
|
|
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,10 +523,7 @@ 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>;
|
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":
|
|
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":
|
|
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.
|
|
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",
|