@oscarpalmer/atoms 0.210.0 → 0.211.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/dist/array/sort.d.mts +1 -1
- package/dist/color/models.d.mts +10 -10
- package/dist/index.d.mts +109 -47
- package/dist/index.mjs +77 -41
- package/dist/internal/aborter.d.mts +1 -1
- package/dist/internal/models/plan.model.d.mts +27 -10
- package/dist/internal/models/result.model.d.mts +2 -2
- package/dist/internal/plan.d.mts +4 -4
- package/dist/internal/plan.mjs +2 -0
- package/dist/internal/subscription.d.mts +2 -2
- package/dist/internal/value/handlers.d.mts +3 -3
- package/dist/internal/value/set.mjs +1 -1
- package/dist/models.d.mts +3 -3
- package/dist/plan/generate.d.mts +4 -0
- package/dist/plan/generate.mjs +50 -0
- package/dist/plan/index.d.mts +7 -32
- package/dist/plan/index.mjs +7 -59
- package/dist/plan/result.d.mts +41 -0
- package/dist/plan/result.mjs +24 -0
- package/dist/plan/run.d.mts +41 -0
- package/dist/plan/run.mjs +26 -0
- package/dist/promise/models.d.mts +2 -2
- package/package.json +1 -1
package/dist/array/sort.d.mts
CHANGED
package/dist/color/models.d.mts
CHANGED
|
@@ -187,16 +187,16 @@ export type Color = {
|
|
|
187
187
|
unsubscribe(): void;
|
|
188
188
|
};
|
|
189
189
|
export type ColorChanges = {
|
|
190
|
-
"*"
|
|
191
|
-
alpha
|
|
192
|
-
hex
|
|
193
|
-
hexa
|
|
194
|
-
hsl
|
|
195
|
-
hsla
|
|
196
|
-
hwb
|
|
197
|
-
hwba
|
|
198
|
-
rgb
|
|
199
|
-
rgba
|
|
190
|
+
"*"(value: Color): void;
|
|
191
|
+
alpha(value: number): void;
|
|
192
|
+
hex(value: string): void;
|
|
193
|
+
hexa(value: string): void;
|
|
194
|
+
hsl(value: HSLColor): void;
|
|
195
|
+
hsla(value: HSLAColor): void;
|
|
196
|
+
hwb(value: HWBColor): void;
|
|
197
|
+
hwba(value: HWBAColor): void;
|
|
198
|
+
rgb(value: RGBColor): void;
|
|
199
|
+
rgba(value: RGBAColor): void;
|
|
200
200
|
};
|
|
201
201
|
export type ColorDefaults = {
|
|
202
202
|
alpha: Alpha;
|
package/dist/index.d.mts
CHANGED
|
@@ -90,7 +90,7 @@ export type OnceAsync<Callback extends GenericAsyncCallback> = {
|
|
|
90
90
|
* @param parameters Callback parameters
|
|
91
91
|
* @returns Call result
|
|
92
92
|
*/
|
|
93
|
-
run
|
|
93
|
+
run(...parameters: Parameters<Callback>): ReturnType<Callback>;
|
|
94
94
|
} & OnceProperties;
|
|
95
95
|
/**
|
|
96
96
|
* A callback function that can only be called once, returning the same value on subsequent calls
|
|
@@ -102,7 +102,7 @@ export type Once<Callback extends GenericCallback> = {
|
|
|
102
102
|
* @param parameters Callback parameters
|
|
103
103
|
* @returns Call result
|
|
104
104
|
*/
|
|
105
|
-
run
|
|
105
|
+
run(...parameters: Parameters<Callback>): ReturnType<Callback>;
|
|
106
106
|
} & OnceProperties;
|
|
107
107
|
type OnceProperties = {
|
|
108
108
|
/**
|
|
@@ -116,7 +116,7 @@ type OnceProperties = {
|
|
|
116
116
|
/**
|
|
117
117
|
* Clear the callback's cached value
|
|
118
118
|
*/
|
|
119
|
-
clear
|
|
119
|
+
clear(): void;
|
|
120
120
|
};
|
|
121
121
|
/**
|
|
122
122
|
* A generic object
|
|
@@ -2615,7 +2615,7 @@ export type ArrayValueSorter<Item> = {
|
|
|
2615
2615
|
/**
|
|
2616
2616
|
* Value to sort by
|
|
2617
2617
|
*/
|
|
2618
|
-
value
|
|
2618
|
+
value(item: Item): unknown;
|
|
2619
2619
|
};
|
|
2620
2620
|
/**
|
|
2621
2621
|
* Comparator to use when comparing items and values
|
|
@@ -3711,14 +3711,14 @@ export type ResultMatch<Value, Returned, E = Error> = {
|
|
|
3711
3711
|
* @param original Original error, if available
|
|
3712
3712
|
* @returns Value to return
|
|
3713
3713
|
*/
|
|
3714
|
-
error
|
|
3714
|
+
error(error: E, original?: Error): Returned;
|
|
3715
3715
|
/**
|
|
3716
3716
|
* Callback for ok result
|
|
3717
3717
|
*
|
|
3718
3718
|
* @param value Ok value
|
|
3719
3719
|
* @returns Value to return
|
|
3720
3720
|
*/
|
|
3721
|
-
ok
|
|
3721
|
+
ok(value: Value): Returned;
|
|
3722
3722
|
};
|
|
3723
3723
|
/**
|
|
3724
3724
|
* Unwrap a result value
|
|
@@ -4257,9 +4257,9 @@ type BaseHandler = {
|
|
|
4257
4257
|
handlers: WeakMap<WeakKey, string | GenericCallback>;
|
|
4258
4258
|
options: BaseHandlerOptions;
|
|
4259
4259
|
owner: GenericCallback;
|
|
4260
|
-
deregister
|
|
4261
|
-
get
|
|
4262
|
-
register
|
|
4260
|
+
deregister(constructor: Constructor): void;
|
|
4261
|
+
get(first: unknown, second: unknown): string | GenericCallback | undefined;
|
|
4262
|
+
register(constructor: Constructor, handler?: string | GenericCallback): void;
|
|
4263
4263
|
};
|
|
4264
4264
|
type BaseHandlerOptions = {
|
|
4265
4265
|
callback: GenericCallback;
|
|
@@ -4591,86 +4591,148 @@ export declare function setValue<Data extends PlainObject>(data: Data, path: str
|
|
|
4591
4591
|
/**
|
|
4592
4592
|
* An asynchronous plan of execution that can yield intermediate results and eventually return a result
|
|
4593
4593
|
*/
|
|
4594
|
-
type AsyncPlan<Yielded, Returned> = {
|
|
4594
|
+
type AsyncPlan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
4595
4595
|
/**
|
|
4596
4596
|
* Get the asynchronous generator for the plan
|
|
4597
4597
|
*
|
|
4598
4598
|
* @returns Asynchronous generator
|
|
4599
4599
|
*/
|
|
4600
4600
|
[Symbol.asyncIterator]: () => AsyncGenerator<Yielded, Returned, unknown>;
|
|
4601
|
+
/**
|
|
4602
|
+
* Attempt to run the plan to completion
|
|
4603
|
+
*
|
|
4604
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
4605
|
+
*
|
|
4606
|
+
* @returns Promised result
|
|
4607
|
+
*/
|
|
4608
|
+
attempt(...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
4601
4609
|
/**
|
|
4602
4610
|
* Run the plan to completion
|
|
4603
4611
|
*
|
|
4604
4612
|
* @throws {PlanError<Yielded, Returned>}
|
|
4605
4613
|
* @returns Result
|
|
4606
4614
|
*/
|
|
4607
|
-
run:
|
|
4615
|
+
run(...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
4608
4616
|
};
|
|
4609
4617
|
/**
|
|
4610
4618
|
* A plan of execution that can yield intermediate results and eventually return a result
|
|
4611
4619
|
*/
|
|
4612
|
-
type Plan<Yielded, Returned> = {
|
|
4620
|
+
type Plan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
4613
4621
|
/**
|
|
4614
4622
|
* Get the generator for the plan
|
|
4615
4623
|
*
|
|
4616
4624
|
* @returns Generator
|
|
4617
4625
|
*/
|
|
4618
4626
|
[Symbol.iterator]: () => Generator<Yielded, Returned, unknown>;
|
|
4627
|
+
/**
|
|
4628
|
+
* Attempt to run the plan to completion
|
|
4629
|
+
*
|
|
4630
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
4631
|
+
*
|
|
4632
|
+
* @returns Result
|
|
4633
|
+
*/
|
|
4634
|
+
attempt(...parameters: Parameters): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
4619
4635
|
/**
|
|
4620
4636
|
* Run the plan to completion
|
|
4621
4637
|
*
|
|
4622
4638
|
* @throws {PlanError<Yielded, Returned>}
|
|
4623
4639
|
* @returns Result
|
|
4624
4640
|
*/
|
|
4625
|
-
run:
|
|
4641
|
+
run(...parameters: Parameters): PlanResult<Returned>;
|
|
4626
4642
|
};
|
|
4627
|
-
type PlanErrorValues<Original> = Original extends Error ? Original : never;
|
|
4643
|
+
type PlanErrorValues<Original> = Original extends Error ? Original : Original extends Err<infer Error> ? Error : Original extends Result<infer _, infer Error> ? Error : never;
|
|
4628
4644
|
type PlanError<Yielded, Returned> = PlanErrorValues<Yielded> | PlanErrorValues<Returned> | Error;
|
|
4629
|
-
type PlanResult<Returned> = Returned extends Error ? never : Returned;
|
|
4645
|
+
type PlanResult<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned extends Ok<infer Value> ? Value : Returned extends Result<infer Value, infer _> ? Value : Returned;
|
|
4630
4646
|
//#endregion
|
|
4631
|
-
//#region src/plan/
|
|
4647
|
+
//#region src/plan/result.d.ts
|
|
4632
4648
|
/**
|
|
4633
|
-
*
|
|
4649
|
+
* Attempt to run the generator to completion
|
|
4634
4650
|
*
|
|
4635
|
-
* @
|
|
4636
|
-
*
|
|
4651
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
4652
|
+
*
|
|
4653
|
+
* @returns Promised result
|
|
4637
4654
|
*/
|
|
4638
|
-
export declare function
|
|
4655
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned, unknown>, ...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
4639
4656
|
/**
|
|
4640
|
-
*
|
|
4657
|
+
* Attempt to run the plan to completion
|
|
4641
4658
|
*
|
|
4642
|
-
* @
|
|
4643
|
-
*
|
|
4659
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
4660
|
+
*
|
|
4661
|
+
* @returns Promised result
|
|
4644
4662
|
*/
|
|
4645
|
-
export declare function
|
|
4663
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
4664
|
+
/**
|
|
4665
|
+
* Attempt to run the generator to completion
|
|
4666
|
+
*
|
|
4667
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
4668
|
+
*
|
|
4669
|
+
* @returns Result
|
|
4670
|
+
*/
|
|
4671
|
+
export declare function attemptRun<Yielded, Returned>(generator: () => Generator<Yielded, Returned, unknown>, ...parameters: Parameters<typeof generator>): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
4672
|
+
/**
|
|
4673
|
+
* Attempt to run the plan to completion
|
|
4674
|
+
*
|
|
4675
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
4676
|
+
*
|
|
4677
|
+
* @returns Result
|
|
4678
|
+
*/
|
|
4679
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
4680
|
+
export declare namespace attemptRun {
|
|
4681
|
+
export var async: typeof asyncAttemptRun;
|
|
4682
|
+
}
|
|
4683
|
+
//#endregion
|
|
4684
|
+
//#region src/plan/run.d.ts
|
|
4646
4685
|
/**
|
|
4647
4686
|
* Run an asynchronous generator to completion
|
|
4648
4687
|
*
|
|
4649
4688
|
* @param generator Generator to run
|
|
4650
4689
|
* @returns Result
|
|
4651
4690
|
*/
|
|
4652
|
-
export declare function
|
|
4691
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned, unknown>, ...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
4653
4692
|
/**
|
|
4654
4693
|
* Run an asynchronous plan to completion
|
|
4655
4694
|
*
|
|
4656
4695
|
* @param plan Plan to run
|
|
4657
4696
|
* @returns Result
|
|
4658
4697
|
*/
|
|
4659
|
-
export declare function
|
|
4698
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
4660
4699
|
/**
|
|
4661
4700
|
* Run a generator to completion
|
|
4662
4701
|
*
|
|
4663
4702
|
* @param generator Generator to run
|
|
4664
4703
|
* @returns Result
|
|
4665
4704
|
*/
|
|
4666
|
-
export declare function run<Yielded, Returned>(generator: () => Generator<Yielded, Returned
|
|
4705
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned, unknown>, ...parameters: Parameters): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
4667
4706
|
/**
|
|
4668
4707
|
* Run a plan to completion
|
|
4669
4708
|
*
|
|
4670
4709
|
* @param plan Plan to run
|
|
4671
4710
|
* @returns Result
|
|
4672
4711
|
*/
|
|
4673
|
-
export declare function run<Yielded, Returned>(plan: Plan<Yielded, Returned
|
|
4712
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
4713
|
+
export declare namespace asyncRun {
|
|
4714
|
+
export var attempt: typeof asyncAttemptRun;
|
|
4715
|
+
}
|
|
4716
|
+
export declare namespace run {
|
|
4717
|
+
export var async: typeof asyncRun;
|
|
4718
|
+
export var attempt: typeof attemptRun;
|
|
4719
|
+
}
|
|
4720
|
+
//#endregion
|
|
4721
|
+
//#region src/plan/index.d.ts
|
|
4722
|
+
/**
|
|
4723
|
+
* Create a plan for an asynchronous generator function
|
|
4724
|
+
*
|
|
4725
|
+
* @param generator Generator to plan for
|
|
4726
|
+
* @returns Generator plan
|
|
4727
|
+
*/
|
|
4728
|
+
export declare function plan<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>): AsyncPlan<Yielded, Returned, Parameters>;
|
|
4729
|
+
/**
|
|
4730
|
+
* Create a plan for a generator function
|
|
4731
|
+
*
|
|
4732
|
+
* @param generator Generator to plan for
|
|
4733
|
+
* @returns Generator plan
|
|
4734
|
+
*/
|
|
4735
|
+
export declare function plan<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>): Plan<Yielded, Returned, Parameters>;
|
|
4674
4736
|
//#endregion
|
|
4675
4737
|
//#region src/internal/plan.d.ts
|
|
4676
4738
|
/**
|
|
@@ -4679,7 +4741,7 @@ export declare function run<Yielded, Returned>(plan: Plan<Yielded, Returned>): P
|
|
|
4679
4741
|
* @param reason Failure reason
|
|
4680
4742
|
* @returns Failing generator
|
|
4681
4743
|
*/
|
|
4682
|
-
export declare function fail<Reason>(reason: Reason): Generator<
|
|
4744
|
+
export declare function fail<Reason>(reason: Reason): Generator<unknown, never>;
|
|
4683
4745
|
/**
|
|
4684
4746
|
* Is the value an asynchronous generator function?
|
|
4685
4747
|
*
|
|
@@ -4693,7 +4755,7 @@ export declare function isAsyncGenerator(value: unknown): value is () => AsyncGe
|
|
|
4693
4755
|
* @param value Value to check
|
|
4694
4756
|
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
4695
4757
|
*/
|
|
4696
|
-
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown>(value: unknown): value is AsyncPlan<Yielded, Returned>;
|
|
4758
|
+
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is AsyncPlan<Yielded, Returned, Parameters>;
|
|
4697
4759
|
/**
|
|
4698
4760
|
* Is the value a generator function?
|
|
4699
4761
|
*
|
|
@@ -4707,20 +4769,20 @@ export declare function isGenerator(value: unknown): value is () => Generator;
|
|
|
4707
4769
|
* @param value Value to check
|
|
4708
4770
|
* @returns `true` if the value is a plan, otherwise `false`
|
|
4709
4771
|
*/
|
|
4710
|
-
export declare function isPlan<Yielded = unknown, Returned = unknown>(value: unknown): value is Plan<Yielded, Returned>;
|
|
4772
|
+
export declare function isPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is Plan<Yielded, Returned, Parameters>;
|
|
4711
4773
|
/**
|
|
4712
4774
|
* Create an immediately succeeding generator
|
|
4713
4775
|
*
|
|
4714
4776
|
* @param value Success value
|
|
4715
4777
|
* @returns Succeeding generator
|
|
4716
4778
|
*/
|
|
4717
|
-
export declare function succeed<Value>(value: Value): Generator<
|
|
4779
|
+
export declare function succeed<Value>(value: Value): Generator<unknown, Value>;
|
|
4718
4780
|
//#endregion
|
|
4719
4781
|
//#region src/internal/aborter.d.ts
|
|
4720
4782
|
type Aborter = {
|
|
4721
4783
|
callback: GenericCallback;
|
|
4784
|
+
cancel(): void;
|
|
4722
4785
|
signal: AbortSignal;
|
|
4723
|
-
cancel: () => void;
|
|
4724
4786
|
};
|
|
4725
4787
|
//#endregion
|
|
4726
4788
|
//#region src/promise/constants.d.ts
|
|
@@ -4759,8 +4821,8 @@ export type PromiseData = {
|
|
|
4759
4821
|
result: ArrayOrPlainObject;
|
|
4760
4822
|
};
|
|
4761
4823
|
export type PromiseHandlers = {
|
|
4762
|
-
resolve
|
|
4763
|
-
reject
|
|
4824
|
+
resolve(value: unknown[]): void;
|
|
4825
|
+
reject(reason: unknown): void;
|
|
4764
4826
|
};
|
|
4765
4827
|
/**
|
|
4766
4828
|
* Options for a _Promise_-handling function
|
|
@@ -6556,14 +6618,14 @@ type Subscriptions<Value = unknown> = {
|
|
|
6556
6618
|
/**
|
|
6557
6619
|
* Clear all subscriptions
|
|
6558
6620
|
*/
|
|
6559
|
-
clear
|
|
6621
|
+
clear(): void;
|
|
6560
6622
|
/**
|
|
6561
6623
|
* Create _(or retrieve)_ a subscription
|
|
6562
6624
|
*
|
|
6563
6625
|
* @param parameters Subscription parameters
|
|
6564
6626
|
* @returns Tuple holding subsccription and existing boolean
|
|
6565
6627
|
*/
|
|
6566
|
-
create
|
|
6628
|
+
create(parameters: SubscriptionParameters): [Subscription, boolean];
|
|
6567
6629
|
};
|
|
6568
6630
|
/**
|
|
6569
6631
|
* Parameters for creating a subscription store
|
|
@@ -6983,16 +7045,16 @@ type Color = {
|
|
|
6983
7045
|
unsubscribe(): void;
|
|
6984
7046
|
};
|
|
6985
7047
|
type ColorChanges = {
|
|
6986
|
-
"*"
|
|
6987
|
-
alpha
|
|
6988
|
-
hex
|
|
6989
|
-
hexa
|
|
6990
|
-
hsl
|
|
6991
|
-
hsla
|
|
6992
|
-
hwb
|
|
6993
|
-
hwba
|
|
6994
|
-
rgb
|
|
6995
|
-
rgba
|
|
7048
|
+
"*"(value: Color): void;
|
|
7049
|
+
alpha(value: number): void;
|
|
7050
|
+
hex(value: string): void;
|
|
7051
|
+
hexa(value: string): void;
|
|
7052
|
+
hsl(value: HSLColor): void;
|
|
7053
|
+
hsla(value: HSLAColor): void;
|
|
7054
|
+
hwb(value: HWBColor): void;
|
|
7055
|
+
hwba(value: HWBAColor): void;
|
|
7056
|
+
rgb(value: RGBColor): void;
|
|
7057
|
+
rgba(value: RGBAColor): void;
|
|
6996
7058
|
};
|
|
6997
7059
|
type ColorWithAlpha = {
|
|
6998
7060
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -2737,7 +2737,7 @@ function setValue(data, path, value, ignoreCase) {
|
|
|
2737
2737
|
let next = unwrap(handleValue(target, currentPath, null, true, shouldIgnoreCase), void 0);
|
|
2738
2738
|
if (typeof next !== "object" || next === null) {
|
|
2739
2739
|
const nextPath = paths[index + 1];
|
|
2740
|
-
if (SET_EXPRESSION_INDEX.test(nextPath)) next = Array.from({ length:
|
|
2740
|
+
if (SET_EXPRESSION_INDEX.test(nextPath)) next = Array.from({ length: +nextPath + 1 }, () => void 0);
|
|
2741
2741
|
else next = {};
|
|
2742
2742
|
target[currentPath] = next;
|
|
2743
2743
|
}
|
|
@@ -2765,6 +2765,7 @@ const PLAN_TYPE_PLAN_SYNC = "plan";
|
|
|
2765
2765
|
*/
|
|
2766
2766
|
function fail(reason) {
|
|
2767
2767
|
return (function* () {
|
|
2768
|
+
yield;
|
|
2768
2769
|
throw reason;
|
|
2769
2770
|
})();
|
|
2770
2771
|
}
|
|
@@ -2818,33 +2819,14 @@ function isPlanInstance(type, value) {
|
|
|
2818
2819
|
*/
|
|
2819
2820
|
function succeed(value) {
|
|
2820
2821
|
return (function* () {
|
|
2822
|
+
yield;
|
|
2821
2823
|
return value;
|
|
2822
2824
|
})();
|
|
2823
2825
|
}
|
|
2824
2826
|
//#endregion
|
|
2825
|
-
//#region src/plan/
|
|
2826
|
-
function
|
|
2827
|
-
|
|
2828
|
-
generator,
|
|
2829
|
-
type: PLAN_TYPE_PLAN_ASYNC
|
|
2830
|
-
};
|
|
2831
|
-
}
|
|
2832
|
-
AsyncPlan.prototype[Symbol.asyncIterator] = function() {
|
|
2833
|
-
return this[PLAN_SYMBOL].generator();
|
|
2834
|
-
};
|
|
2835
|
-
AsyncPlan.prototype.run = runAsyncPlan;
|
|
2836
|
-
function Plan(generator) {
|
|
2837
|
-
this[PLAN_SYMBOL] = {
|
|
2838
|
-
generator,
|
|
2839
|
-
type: PLAN_TYPE_PLAN_SYNC
|
|
2840
|
-
};
|
|
2841
|
-
}
|
|
2842
|
-
Plan.prototype[Symbol.iterator] = function() {
|
|
2843
|
-
return this[PLAN_SYMBOL].generator();
|
|
2844
|
-
};
|
|
2845
|
-
Plan.prototype.run = runPlan;
|
|
2846
|
-
async function asyncExecute(callback) {
|
|
2847
|
-
const generator = callback();
|
|
2827
|
+
//#region src/plan/generate.ts
|
|
2828
|
+
async function asyncGenerate(callback, parameters) {
|
|
2829
|
+
const generator = callback(...parameters);
|
|
2848
2830
|
let success = true;
|
|
2849
2831
|
let lastValue;
|
|
2850
2832
|
try {
|
|
@@ -2853,6 +2835,7 @@ async function asyncExecute(callback) {
|
|
|
2853
2835
|
const { done } = next;
|
|
2854
2836
|
let { value } = next;
|
|
2855
2837
|
if (value instanceof Error) throw value;
|
|
2838
|
+
if (isError(value)) throw value.error;
|
|
2856
2839
|
lastValue = value;
|
|
2857
2840
|
if (done === true) break;
|
|
2858
2841
|
}
|
|
@@ -2860,21 +2843,22 @@ async function asyncExecute(callback) {
|
|
|
2860
2843
|
lastValue = error;
|
|
2861
2844
|
success = false;
|
|
2862
2845
|
} finally {
|
|
2863
|
-
generator?.return(lastValue);
|
|
2846
|
+
await generator?.return(lastValue);
|
|
2864
2847
|
}
|
|
2865
2848
|
if (success) return lastValue;
|
|
2866
2849
|
throw lastValue;
|
|
2867
2850
|
}
|
|
2868
|
-
function
|
|
2869
|
-
const generator = callback();
|
|
2851
|
+
function generate(callback, parameters) {
|
|
2852
|
+
const generator = callback(...parameters);
|
|
2870
2853
|
let success = true;
|
|
2871
2854
|
let lastValue;
|
|
2872
2855
|
try {
|
|
2873
2856
|
while (true) {
|
|
2874
2857
|
const next = generator.next(lastValue);
|
|
2875
2858
|
const done = next.done === true;
|
|
2876
|
-
|
|
2859
|
+
const { value } = next;
|
|
2877
2860
|
if (value instanceof Error) throw value;
|
|
2861
|
+
if (isError(value)) throw value.error;
|
|
2878
2862
|
lastValue = value;
|
|
2879
2863
|
if (done) break;
|
|
2880
2864
|
}
|
|
@@ -2887,22 +2871,74 @@ function execute(callback) {
|
|
|
2887
2871
|
if (success) return lastValue;
|
|
2888
2872
|
throw lastValue;
|
|
2889
2873
|
}
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2874
|
+
//#endregion
|
|
2875
|
+
//#region src/plan/result.ts
|
|
2876
|
+
function asyncAttemptRun(input, ...parameters) {
|
|
2877
|
+
if (isAsyncPlan(input)) return input.attempt(...parameters);
|
|
2878
|
+
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters));
|
|
2879
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2880
|
+
}
|
|
2881
|
+
function attemptRun(input, ...parameters) {
|
|
2882
|
+
if (isPlan(input)) return input.attempt(...parameters);
|
|
2883
|
+
if (isGenerator(input)) return attempt(() => generate(input, parameters));
|
|
2884
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2894
2885
|
}
|
|
2895
|
-
function
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2886
|
+
function attemptRunAsyncPlan(...parameters) {
|
|
2887
|
+
return asyncAttempt(() => this.run(...parameters));
|
|
2888
|
+
}
|
|
2889
|
+
function attemptRunPlan(...parameters) {
|
|
2890
|
+
return attempt(() => this.run(...parameters));
|
|
2891
|
+
}
|
|
2892
|
+
attemptRun.async = asyncAttemptRun;
|
|
2893
|
+
//#endregion
|
|
2894
|
+
//#region src/plan/run.ts
|
|
2895
|
+
function asyncRun(input, ...parameters) {
|
|
2896
|
+
if (isAsyncPlan(input)) return input.run(...parameters);
|
|
2897
|
+
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters);
|
|
2898
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2899
|
+
}
|
|
2900
|
+
function run(input, ...parameters) {
|
|
2901
|
+
if (isPlan(input)) return input.run(...parameters);
|
|
2902
|
+
if (isGenerator(input)) return generate(input, parameters);
|
|
2899
2903
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2900
2904
|
}
|
|
2901
|
-
function runAsyncPlan() {
|
|
2902
|
-
return
|
|
2905
|
+
function runAsyncPlan(...parameters) {
|
|
2906
|
+
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters);
|
|
2907
|
+
}
|
|
2908
|
+
function runPlan(...parameters) {
|
|
2909
|
+
return generate(this[PLAN_SYMBOL].generator, parameters);
|
|
2910
|
+
}
|
|
2911
|
+
asyncRun.attempt = asyncAttemptRun;
|
|
2912
|
+
run.async = asyncRun;
|
|
2913
|
+
run.attempt = attemptRun;
|
|
2914
|
+
//#endregion
|
|
2915
|
+
//#region src/plan/index.ts
|
|
2916
|
+
function AsyncPlan(generator) {
|
|
2917
|
+
this[PLAN_SYMBOL] = {
|
|
2918
|
+
generator,
|
|
2919
|
+
type: PLAN_TYPE_PLAN_ASYNC
|
|
2920
|
+
};
|
|
2921
|
+
}
|
|
2922
|
+
AsyncPlan.prototype[Symbol.asyncIterator] = function() {
|
|
2923
|
+
return this[PLAN_SYMBOL].generator();
|
|
2924
|
+
};
|
|
2925
|
+
AsyncPlan.prototype.attempt = attemptRunAsyncPlan;
|
|
2926
|
+
AsyncPlan.prototype.run = runAsyncPlan;
|
|
2927
|
+
function Plan(generator) {
|
|
2928
|
+
this[PLAN_SYMBOL] = {
|
|
2929
|
+
generator,
|
|
2930
|
+
type: PLAN_TYPE_PLAN_SYNC
|
|
2931
|
+
};
|
|
2903
2932
|
}
|
|
2904
|
-
function
|
|
2905
|
-
return
|
|
2933
|
+
Plan.prototype[Symbol.iterator] = function() {
|
|
2934
|
+
return this[PLAN_SYMBOL].generator();
|
|
2935
|
+
};
|
|
2936
|
+
Plan.prototype.attempt = attemptRunPlan;
|
|
2937
|
+
Plan.prototype.run = runPlan;
|
|
2938
|
+
function plan(generator) {
|
|
2939
|
+
if (isAsyncGenerator(generator)) return new AsyncPlan(generator);
|
|
2940
|
+
if (isGenerator(generator)) return new Plan(generator);
|
|
2941
|
+
throw new Error(PLAN_MESSAGE_PLAN_INPUT);
|
|
2906
2942
|
}
|
|
2907
2943
|
//#endregion
|
|
2908
2944
|
//#region src/internal/aborter.ts
|
|
@@ -7005,4 +7041,4 @@ var SizedSet = class extends Set {
|
|
|
7005
7041
|
}
|
|
7006
7042
|
};
|
|
7007
7043
|
//#endregion
|
|
7008
|
-
export { CancelablePromise, Logger, PromiseTimeoutError, QueueError, RetryError, SORT_DIRECTION_ASCENDING, SORT_DIRECTION_DESCENDING, SizedMap, SizedSet, push as append, push, assert, assertCondition, assertDefined, assertInstanceOf, assertIs, assertProperty, assign, asyncAttempt, asyncDebounce, asyncFlow, asyncMatchResult, asyncOnce, asyncPipe, asyncThrottle, attempt, attemptAsyncFlow, attemptAsyncPipe, attemptFlow, attemptPipe, attemptPromise, average, beacon, between, camelCase, cancelable, capitalize, ceil, chunk, clamp, clone, compact, compare, copy, count, debounce, deburr, dedent, delay, deregisterCloner, deregisterComparator, deregisterEqualizer, diff, difference, drop, endsWith, endsWithArray, equal, error, exclude, exists, fail, filter, filterAndMap, filterAndMap as select, find, findLast, first, firstOrDefault, flatFreeze, flatten, floor, flow, freeze, fromQuery, toPromise as fromResult, toPromise, fuzzy, fuzzyMatch, getArray, getArrayComparison, getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getNumber, getRandomBoolean, getRandomCharacters, getRandomColor, getRandomFloatingNumber as getRandomFloat, getRandomHex, getRandomInteger, getRandomItem, getRandomItems, getRgbColor, getRgbaColor, getSortedIndex, getString, getTimedPromise, getUuid, getValue, groupArraysBy, groupBy, handleResult, hasValue, hasValueResult, herald, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, ignoreKey, inMap, inSet, includes, includesArray, indexOf, indexOfArray, initializeAssigner, initializeCloner, initializeEqualizer, initializeMerger, initializeNormalizer, initializeSorter, initializeTemplater, initializeTransformer, insert, interpolate, intersection, isArrayOrPlainObject, isAsyncGenerator, isAsyncOnce, isAsyncPlan, isBeacon, isBeaconSubscription, isColor, isConstructor, isEmpty, isError, isFrozen, isFulfilled, isFuzzy, isGenerator, isHerald, isHeraldEvents, isHeraldSubscription, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isInstanceOf, isKey, isKeyedQueue, isLogger, isNonArrayOrPlainObject, isNonConstructor, isNonEmpty, isNonInstanceOf, isNonKey, isNonNullable, isNonNullableOrEmpty, isNonNullableOrWhitespace, isNonNumber, isNonNumerical, isNonObject, isNonPlainObject, isNonPrimitive, isNonTemplateStringsArray, isNonTypedArray, isNullable, isNullableOrEmpty, isNullableOrWhitespace, isNumber, isNumerical, isObject, isObservable, isOk, isOnce, isPlainObject, isPlan, isPrimitive, isQueue, isQueueInstance, isRejected, isResult, isRgbColor, isRgbaColor, isSorted, isSubscription, isSubscriptions, isTemplateStringsArray, isTimeLogger, isTypedArray, join, kebabCase, keyedQueue, last, lastIndexOf, lastOrDefault, lowerCase, mapAndFilter, mapAndFilter as reverseSelect, matchResult, max, median, memoize, merge, min, move, moveIndices, moveToIndex, noop, normalize, ok, omit, once, parse, partition, pascalCase, pick, pipe, plan, promises, queue, range, registerCloner, registerComparator, registerEqualizer, resultPromises, retry, reverse, rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba, round, run, setValue, settlePromise, shake, shuffle, single, slice, smush, snakeCase, sort, splice, startsWith, startsWithArray, subscriptions, succeed, sum, swap, take, template, throttle, timed, times, titleCase, toMap, toMapArrays, toQuery, toRecord, toRecordArrays, toResult, toSet, toggle, transform, trim, truncate, tryDecode, tryEncode, union, unique, unsmush, unwrap, update, upperCase, words };
|
|
7044
|
+
export { CancelablePromise, Logger, PromiseTimeoutError, QueueError, RetryError, SORT_DIRECTION_ASCENDING, SORT_DIRECTION_DESCENDING, SizedMap, SizedSet, push as append, push, assert, assertCondition, assertDefined, assertInstanceOf, assertIs, assertProperty, assign, asyncAttempt, asyncAttemptRun, asyncDebounce, asyncFlow, asyncMatchResult, asyncOnce, asyncPipe, asyncRun, asyncThrottle, attempt, attemptAsyncFlow, attemptAsyncPipe, attemptFlow, attemptPipe, attemptPromise, attemptRun, average, beacon, between, camelCase, cancelable, capitalize, ceil, chunk, clamp, clone, compact, compare, copy, count, debounce, deburr, dedent, delay, deregisterCloner, deregisterComparator, deregisterEqualizer, diff, difference, drop, endsWith, endsWithArray, equal, error, exclude, exists, fail, filter, filterAndMap, filterAndMap as select, find, findLast, first, firstOrDefault, flatFreeze, flatten, floor, flow, freeze, fromQuery, toPromise as fromResult, toPromise, fuzzy, fuzzyMatch, getArray, getArrayComparison, getColor, getForegroundColor, getHexColor, getHexaColor, getHslColor, getHslaColor, getHwbColor, getHwbaColor, getNormalizedHex, getNumber, getRandomBoolean, getRandomCharacters, getRandomColor, getRandomFloatingNumber as getRandomFloat, getRandomHex, getRandomInteger, getRandomItem, getRandomItems, getRgbColor, getRgbaColor, getSortedIndex, getString, getTimedPromise, getUuid, getValue, groupArraysBy, groupBy, handleResult, hasValue, hasValueResult, herald, hexToHsl, hexToHsla, hexToHwb, hexToHwba, hexToRgb, hexToRgba, hslToHex, hslToHwb, hslToHwba, hslToRgb, hslToRgba, hwbToHex, hwbToHsl, hwbToHsla, hwbToRgb, hwbToRgba, ignoreKey, inMap, inSet, includes, includesArray, indexOf, indexOfArray, initializeAssigner, initializeCloner, initializeEqualizer, initializeMerger, initializeNormalizer, initializeSorter, initializeTemplater, initializeTransformer, insert, interpolate, intersection, isArrayOrPlainObject, isAsyncGenerator, isAsyncOnce, isAsyncPlan, isBeacon, isBeaconSubscription, isColor, isConstructor, isEmpty, isError, isFrozen, isFulfilled, isFuzzy, isGenerator, isHerald, isHeraldEvents, isHeraldSubscription, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isInstanceOf, isKey, isKeyedQueue, isLogger, isNonArrayOrPlainObject, isNonConstructor, isNonEmpty, isNonInstanceOf, isNonKey, isNonNullable, isNonNullableOrEmpty, isNonNullableOrWhitespace, isNonNumber, isNonNumerical, isNonObject, isNonPlainObject, isNonPrimitive, isNonTemplateStringsArray, isNonTypedArray, isNullable, isNullableOrEmpty, isNullableOrWhitespace, isNumber, isNumerical, isObject, isObservable, isOk, isOnce, isPlainObject, isPlan, isPrimitive, isQueue, isQueueInstance, isRejected, isResult, isRgbColor, isRgbaColor, isSorted, isSubscription, isSubscriptions, isTemplateStringsArray, isTimeLogger, isTypedArray, join, kebabCase, keyedQueue, last, lastIndexOf, lastOrDefault, lowerCase, mapAndFilter, mapAndFilter as reverseSelect, matchResult, max, median, memoize, merge, min, move, moveIndices, moveToIndex, noop, normalize, ok, omit, once, parse, partition, pascalCase, pick, pipe, plan, promises, queue, range, registerCloner, registerComparator, registerEqualizer, resultPromises, retry, reverse, rgbToHex, rgbToHsl, rgbToHsla, rgbToHwb, rgbToHwba, round, run, setValue, settlePromise, shake, shuffle, single, slice, smush, snakeCase, sort, splice, startsWith, startsWithArray, subscriptions, succeed, sum, swap, take, template, throttle, timed, times, titleCase, toMap, toMapArrays, toQuery, toRecord, toRecordArrays, toResult, toSet, toggle, transform, trim, truncate, tryDecode, tryEncode, union, unique, unsmush, unwrap, update, upperCase, words };
|
|
@@ -2,8 +2,8 @@ import { GenericCallback } from "../models.mjs";
|
|
|
2
2
|
//#region src/internal/aborter.d.ts
|
|
3
3
|
export type Aborter = {
|
|
4
4
|
callback: GenericCallback;
|
|
5
|
+
cancel(): void;
|
|
5
6
|
signal: AbortSignal;
|
|
6
|
-
cancel: () => void;
|
|
7
7
|
};
|
|
8
8
|
export declare function createAborter(value: unknown, onAbort: () => void): Aborter | undefined;
|
|
9
9
|
//#endregion
|
|
@@ -1,57 +1,74 @@
|
|
|
1
|
+
import { Err, Ok, Result } from "./result.model.mjs";
|
|
1
2
|
//#region src/internal/models/plan.model.d.ts
|
|
2
3
|
/**
|
|
3
4
|
* An asynchronous plan of execution that can yield intermediate results and eventually return a result
|
|
4
5
|
*/
|
|
5
|
-
export type AsyncPlan<Yielded, Returned> = {
|
|
6
|
+
export type AsyncPlan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
6
7
|
/**
|
|
7
8
|
* Get the asynchronous generator for the plan
|
|
8
9
|
*
|
|
9
10
|
* @returns Asynchronous generator
|
|
10
11
|
*/
|
|
11
12
|
[Symbol.asyncIterator]: () => AsyncGenerator<Yielded, Returned, unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Attempt to run the plan to completion
|
|
15
|
+
*
|
|
16
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
17
|
+
*
|
|
18
|
+
* @returns Promised result
|
|
19
|
+
*/
|
|
20
|
+
attempt(...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
12
21
|
/**
|
|
13
22
|
* Run the plan to completion
|
|
14
23
|
*
|
|
15
24
|
* @throws {PlanError<Yielded, Returned>}
|
|
16
25
|
* @returns Result
|
|
17
26
|
*/
|
|
18
|
-
run:
|
|
27
|
+
run(...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
19
28
|
};
|
|
20
29
|
type AsyncPlanState = {
|
|
21
|
-
generator:
|
|
30
|
+
generator(...parameters: unknown[]): AsyncGenerator;
|
|
22
31
|
} & BaseState<typeof PLAN_TYPE_PLAN_ASYNC>;
|
|
23
32
|
type BaseState<Type extends PlanType> = {
|
|
24
33
|
type: Type;
|
|
25
34
|
};
|
|
26
35
|
export type InternalAsyncPlan = {
|
|
27
36
|
[PLAN_SYMBOL]: AsyncPlanState;
|
|
28
|
-
} & AsyncPlan<never, never>;
|
|
37
|
+
} & AsyncPlan<never, never, unknown[]>;
|
|
29
38
|
export type InternalPlan = {
|
|
30
39
|
[PLAN_SYMBOL]: PlanState;
|
|
31
|
-
} & Plan<never, never>;
|
|
40
|
+
} & Plan<never, never, unknown[]>;
|
|
32
41
|
/**
|
|
33
42
|
* A plan of execution that can yield intermediate results and eventually return a result
|
|
34
43
|
*/
|
|
35
|
-
export type Plan<Yielded, Returned> = {
|
|
44
|
+
export type Plan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
36
45
|
/**
|
|
37
46
|
* Get the generator for the plan
|
|
38
47
|
*
|
|
39
48
|
* @returns Generator
|
|
40
49
|
*/
|
|
41
50
|
[Symbol.iterator]: () => Generator<Yielded, Returned, unknown>;
|
|
51
|
+
/**
|
|
52
|
+
* Attempt to run the plan to completion
|
|
53
|
+
*
|
|
54
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
55
|
+
*
|
|
56
|
+
* @returns Result
|
|
57
|
+
*/
|
|
58
|
+
attempt(...parameters: Parameters): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
42
59
|
/**
|
|
43
60
|
* Run the plan to completion
|
|
44
61
|
*
|
|
45
62
|
* @throws {PlanError<Yielded, Returned>}
|
|
46
63
|
* @returns Result
|
|
47
64
|
*/
|
|
48
|
-
run:
|
|
65
|
+
run(...parameters: Parameters): PlanResult<Returned>;
|
|
49
66
|
};
|
|
50
|
-
type PlanErrorValues<Original> = Original extends Error ? Original : never;
|
|
67
|
+
type PlanErrorValues<Original> = Original extends Error ? Original : Original extends Err<infer Error> ? Error : Original extends Result<infer _, infer Error> ? Error : never;
|
|
51
68
|
export type PlanError<Yielded, Returned> = PlanErrorValues<Yielded> | PlanErrorValues<Returned> | Error;
|
|
52
|
-
export type PlanResult<Returned> = Returned extends Error ? never : Returned;
|
|
69
|
+
export type PlanResult<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned extends Ok<infer Value> ? Value : Returned extends Result<infer Value, infer _> ? Value : Returned;
|
|
53
70
|
type PlanState = {
|
|
54
|
-
generator:
|
|
71
|
+
generator(...parameters: unknown[]): Generator;
|
|
55
72
|
} & BaseState<typeof PLAN_TYPE_PLAN_SYNC>;
|
|
56
73
|
export type PlanType = "asyncPlan" | "plan" | "stop";
|
|
57
74
|
export declare const GENERATOR_NAME_ASYNC = "AsyncGeneratorFunction";
|
|
@@ -43,14 +43,14 @@ export type ResultMatch<Value, Returned, E = Error> = {
|
|
|
43
43
|
* @param original Original error, if available
|
|
44
44
|
* @returns Value to return
|
|
45
45
|
*/
|
|
46
|
-
error
|
|
46
|
+
error(error: E, original?: Error): Returned;
|
|
47
47
|
/**
|
|
48
48
|
* Callback for ok result
|
|
49
49
|
*
|
|
50
50
|
* @param value Ok value
|
|
51
51
|
* @returns Value to return
|
|
52
52
|
*/
|
|
53
|
-
ok
|
|
53
|
+
ok(value: Value): Returned;
|
|
54
54
|
};
|
|
55
55
|
/**
|
|
56
56
|
* Unwrap a result value
|
package/dist/internal/plan.d.mts
CHANGED
|
@@ -6,7 +6,7 @@ import { AsyncPlan, Plan } from "./models/plan.model.mjs";
|
|
|
6
6
|
* @param reason Failure reason
|
|
7
7
|
* @returns Failing generator
|
|
8
8
|
*/
|
|
9
|
-
export declare function fail<Reason>(reason: Reason): Generator<
|
|
9
|
+
export declare function fail<Reason>(reason: Reason): Generator<unknown, never>;
|
|
10
10
|
/**
|
|
11
11
|
* Is the value an asynchronous generator function?
|
|
12
12
|
*
|
|
@@ -20,7 +20,7 @@ export declare function isAsyncGenerator(value: unknown): value is () => AsyncGe
|
|
|
20
20
|
* @param value Value to check
|
|
21
21
|
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
22
22
|
*/
|
|
23
|
-
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown>(value: unknown): value is AsyncPlan<Yielded, Returned>;
|
|
23
|
+
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is AsyncPlan<Yielded, Returned, Parameters>;
|
|
24
24
|
/**
|
|
25
25
|
* Is the value a generator function?
|
|
26
26
|
*
|
|
@@ -34,12 +34,12 @@ export declare function isGenerator(value: unknown): value is () => Generator;
|
|
|
34
34
|
* @param value Value to check
|
|
35
35
|
* @returns `true` if the value is a plan, otherwise `false`
|
|
36
36
|
*/
|
|
37
|
-
export declare function isPlan<Yielded = unknown, Returned = unknown>(value: unknown): value is Plan<Yielded, Returned>;
|
|
37
|
+
export declare function isPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is Plan<Yielded, Returned, Parameters>;
|
|
38
38
|
/**
|
|
39
39
|
* Create an immediately succeeding generator
|
|
40
40
|
*
|
|
41
41
|
* @param value Success value
|
|
42
42
|
* @returns Succeeding generator
|
|
43
43
|
*/
|
|
44
|
-
export declare function succeed<Value>(value: Value): Generator<
|
|
44
|
+
export declare function succeed<Value>(value: Value): Generator<unknown, Value>;
|
|
45
45
|
//#endregion
|
package/dist/internal/plan.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import { GENERATOR_NAME_ASYNC, GENERATOR_NAME_SYNC, PLAN_SYMBOL, PLAN_TYPE_PLAN_
|
|
|
8
8
|
*/
|
|
9
9
|
function fail(reason) {
|
|
10
10
|
return (function* () {
|
|
11
|
+
yield;
|
|
11
12
|
throw reason;
|
|
12
13
|
})();
|
|
13
14
|
}
|
|
@@ -61,6 +62,7 @@ function isPlanInstance(type, value) {
|
|
|
61
62
|
*/
|
|
62
63
|
function succeed(value) {
|
|
63
64
|
return (function* () {
|
|
65
|
+
yield;
|
|
64
66
|
return value;
|
|
65
67
|
})();
|
|
66
68
|
}
|
|
@@ -65,14 +65,14 @@ export type Subscriptions<Value = unknown> = {
|
|
|
65
65
|
/**
|
|
66
66
|
* Clear all subscriptions
|
|
67
67
|
*/
|
|
68
|
-
clear
|
|
68
|
+
clear(): void;
|
|
69
69
|
/**
|
|
70
70
|
* Create _(or retrieve)_ a subscription
|
|
71
71
|
*
|
|
72
72
|
* @param parameters Subscription parameters
|
|
73
73
|
* @returns Tuple holding subsccription and existing boolean
|
|
74
74
|
*/
|
|
75
|
-
create
|
|
75
|
+
create(parameters: SubscriptionParameters): [Subscription, boolean];
|
|
76
76
|
};
|
|
77
77
|
/**
|
|
78
78
|
* Parameters for creating a subscription store
|
|
@@ -4,9 +4,9 @@ type BaseHandler = {
|
|
|
4
4
|
handlers: WeakMap<WeakKey, string | GenericCallback>;
|
|
5
5
|
options: BaseHandlerOptions;
|
|
6
6
|
owner: GenericCallback;
|
|
7
|
-
deregister
|
|
8
|
-
get
|
|
9
|
-
register
|
|
7
|
+
deregister(constructor: Constructor): void;
|
|
8
|
+
get(first: unknown, second: unknown): string | GenericCallback | undefined;
|
|
9
|
+
register(constructor: Constructor, handler?: string | GenericCallback): void;
|
|
10
10
|
};
|
|
11
11
|
type BaseHandlerOptions = {
|
|
12
12
|
callback: GenericCallback;
|
|
@@ -21,7 +21,7 @@ function setValue(data, path, value, ignoreCase) {
|
|
|
21
21
|
let next = unwrap(handleValue(target, currentPath, null, true, shouldIgnoreCase), void 0);
|
|
22
22
|
if (typeof next !== "object" || next === null) {
|
|
23
23
|
const nextPath = paths[index + 1];
|
|
24
|
-
if (SET_EXPRESSION_INDEX.test(nextPath)) next = Array.from({ length:
|
|
24
|
+
if (SET_EXPRESSION_INDEX.test(nextPath)) next = Array.from({ length: +nextPath + 1 }, () => void 0);
|
|
25
25
|
else next = {};
|
|
26
26
|
target[currentPath] = next;
|
|
27
27
|
}
|
package/dist/models.d.mts
CHANGED
|
@@ -90,7 +90,7 @@ export type OnceAsync<Callback extends GenericAsyncCallback> = {
|
|
|
90
90
|
* @param parameters Callback parameters
|
|
91
91
|
* @returns Call result
|
|
92
92
|
*/
|
|
93
|
-
run
|
|
93
|
+
run(...parameters: Parameters<Callback>): ReturnType<Callback>;
|
|
94
94
|
} & OnceProperties;
|
|
95
95
|
/**
|
|
96
96
|
* A callback function that can only be called once, returning the same value on subsequent calls
|
|
@@ -102,7 +102,7 @@ export type Once<Callback extends GenericCallback> = {
|
|
|
102
102
|
* @param parameters Callback parameters
|
|
103
103
|
* @returns Call result
|
|
104
104
|
*/
|
|
105
|
-
run
|
|
105
|
+
run(...parameters: Parameters<Callback>): ReturnType<Callback>;
|
|
106
106
|
} & OnceProperties;
|
|
107
107
|
type OnceProperties = {
|
|
108
108
|
/**
|
|
@@ -116,7 +116,7 @@ type OnceProperties = {
|
|
|
116
116
|
/**
|
|
117
117
|
* Clear the callback's cached value
|
|
118
118
|
*/
|
|
119
|
-
clear
|
|
119
|
+
clear(): void;
|
|
120
120
|
};
|
|
121
121
|
/**
|
|
122
122
|
* A generic object
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region src/plan/generate.d.ts
|
|
2
|
+
export declare function asyncGenerate(callback: (...parameters: unknown[]) => AsyncGenerator, parameters: unknown[]): Promise<unknown>;
|
|
3
|
+
export declare function generate(callback: (...parameters: unknown[]) => Generator, parameters: unknown[]): unknown;
|
|
4
|
+
//#endregion
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isError } from "../internal/result/misc.mjs";
|
|
2
|
+
//#region src/plan/generate.ts
|
|
3
|
+
async function asyncGenerate(callback, parameters) {
|
|
4
|
+
const generator = callback(...parameters);
|
|
5
|
+
let success = true;
|
|
6
|
+
let lastValue;
|
|
7
|
+
try {
|
|
8
|
+
while (true) {
|
|
9
|
+
const next = await generator.next(lastValue);
|
|
10
|
+
const { done } = next;
|
|
11
|
+
let { value } = next;
|
|
12
|
+
if (value instanceof Error) throw value;
|
|
13
|
+
if (isError(value)) throw value.error;
|
|
14
|
+
lastValue = value;
|
|
15
|
+
if (done === true) break;
|
|
16
|
+
}
|
|
17
|
+
} catch (error) {
|
|
18
|
+
lastValue = error;
|
|
19
|
+
success = false;
|
|
20
|
+
} finally {
|
|
21
|
+
await generator?.return(lastValue);
|
|
22
|
+
}
|
|
23
|
+
if (success) return lastValue;
|
|
24
|
+
throw lastValue;
|
|
25
|
+
}
|
|
26
|
+
function generate(callback, parameters) {
|
|
27
|
+
const generator = callback(...parameters);
|
|
28
|
+
let success = true;
|
|
29
|
+
let lastValue;
|
|
30
|
+
try {
|
|
31
|
+
while (true) {
|
|
32
|
+
const next = generator.next(lastValue);
|
|
33
|
+
const done = next.done === true;
|
|
34
|
+
const { value } = next;
|
|
35
|
+
if (value instanceof Error) throw value;
|
|
36
|
+
if (isError(value)) throw value.error;
|
|
37
|
+
lastValue = value;
|
|
38
|
+
if (done) break;
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
lastValue = error;
|
|
42
|
+
success = false;
|
|
43
|
+
} finally {
|
|
44
|
+
generator.return(lastValue);
|
|
45
|
+
}
|
|
46
|
+
if (success) return lastValue;
|
|
47
|
+
throw lastValue;
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { asyncGenerate, generate };
|
package/dist/plan/index.d.mts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { AsyncPlan, Plan
|
|
1
|
+
import { AsyncPlan, Plan } from "../internal/models/plan.model.mjs";
|
|
2
|
+
import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
3
|
+
import { asyncRun, run } from "./run.mjs";
|
|
2
4
|
//#region src/plan/index.d.ts
|
|
3
5
|
/**
|
|
4
6
|
* Create a plan for an asynchronous generator function
|
|
@@ -6,40 +8,13 @@ import { AsyncPlan, Plan, PlanError, PlanResult } from "../internal/models/plan.
|
|
|
6
8
|
* @param generator Generator to plan for
|
|
7
9
|
* @returns Generator plan
|
|
8
10
|
*/
|
|
9
|
-
export declare function plan<Yielded, Returned>(generator: () => AsyncGenerator<Yielded, Returned>): AsyncPlan<Yielded, Returned>;
|
|
11
|
+
export declare function plan<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>): AsyncPlan<Yielded, Returned, Parameters>;
|
|
10
12
|
/**
|
|
11
13
|
* Create a plan for a generator function
|
|
12
14
|
*
|
|
13
15
|
* @param generator Generator to plan for
|
|
14
16
|
* @returns Generator plan
|
|
15
17
|
*/
|
|
16
|
-
export declare function plan<Yielded, Returned>(generator: () => Generator<Yielded, Returned>): Plan<Yielded, Returned>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
* @param generator Generator to run
|
|
21
|
-
* @returns Result
|
|
22
|
-
*/
|
|
23
|
-
export declare function run<Yielded, Returned>(generator: () => AsyncGenerator<Yielded, Returned>): Promise<PlanResult<Returned> | PlanError<Yielded, Returned>>;
|
|
24
|
-
/**
|
|
25
|
-
* Run an asynchronous plan to completion
|
|
26
|
-
*
|
|
27
|
-
* @param plan Plan to run
|
|
28
|
-
* @returns Result
|
|
29
|
-
*/
|
|
30
|
-
export declare function run<Yielded, Returned>(plan: AsyncPlan<Yielded, Returned>): Promise<PlanResult<Returned> | PlanError<Yielded, Returned>>;
|
|
31
|
-
/**
|
|
32
|
-
* Run a generator to completion
|
|
33
|
-
*
|
|
34
|
-
* @param generator Generator to run
|
|
35
|
-
* @returns Result
|
|
36
|
-
*/
|
|
37
|
-
export declare function run<Yielded, Returned>(generator: () => Generator<Yielded, Returned>): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
38
|
-
/**
|
|
39
|
-
* Run a plan to completion
|
|
40
|
-
*
|
|
41
|
-
* @param plan Plan to run
|
|
42
|
-
* @returns Result
|
|
43
|
-
*/
|
|
44
|
-
export declare function run<Yielded, Returned>(plan: Plan<Yielded, Returned>): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
45
|
-
//#endregion
|
|
18
|
+
export declare function plan<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>): Plan<Yielded, Returned, Parameters>;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { asyncAttemptRun, asyncRun, attemptRun, run };
|
package/dist/plan/index.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { PLAN_MESSAGE_PLAN_INPUT,
|
|
2
|
-
import { isAsyncGenerator,
|
|
1
|
+
import { PLAN_MESSAGE_PLAN_INPUT, PLAN_SYMBOL, PLAN_TYPE_PLAN_ASYNC, PLAN_TYPE_PLAN_SYNC } from "../internal/models/plan.model.mjs";
|
|
2
|
+
import { isAsyncGenerator, isGenerator } from "../internal/plan.mjs";
|
|
3
|
+
import { asyncAttemptRun, attemptRun, attemptRunAsyncPlan, attemptRunPlan } from "./result.mjs";
|
|
4
|
+
import { asyncRun, run, runAsyncPlan, runPlan } from "./run.mjs";
|
|
3
5
|
//#region src/plan/index.ts
|
|
4
6
|
function AsyncPlan(generator) {
|
|
5
7
|
this[PLAN_SYMBOL] = {
|
|
@@ -10,6 +12,7 @@ function AsyncPlan(generator) {
|
|
|
10
12
|
AsyncPlan.prototype[Symbol.asyncIterator] = function() {
|
|
11
13
|
return this[PLAN_SYMBOL].generator();
|
|
12
14
|
};
|
|
15
|
+
AsyncPlan.prototype.attempt = attemptRunAsyncPlan;
|
|
13
16
|
AsyncPlan.prototype.run = runAsyncPlan;
|
|
14
17
|
function Plan(generator) {
|
|
15
18
|
this[PLAN_SYMBOL] = {
|
|
@@ -20,67 +23,12 @@ function Plan(generator) {
|
|
|
20
23
|
Plan.prototype[Symbol.iterator] = function() {
|
|
21
24
|
return this[PLAN_SYMBOL].generator();
|
|
22
25
|
};
|
|
26
|
+
Plan.prototype.attempt = attemptRunPlan;
|
|
23
27
|
Plan.prototype.run = runPlan;
|
|
24
|
-
async function asyncExecute(callback) {
|
|
25
|
-
const generator = callback();
|
|
26
|
-
let success = true;
|
|
27
|
-
let lastValue;
|
|
28
|
-
try {
|
|
29
|
-
while (true) {
|
|
30
|
-
const next = await generator.next(lastValue);
|
|
31
|
-
const { done } = next;
|
|
32
|
-
let { value } = next;
|
|
33
|
-
if (value instanceof Error) throw value;
|
|
34
|
-
lastValue = value;
|
|
35
|
-
if (done === true) break;
|
|
36
|
-
}
|
|
37
|
-
} catch (error) {
|
|
38
|
-
lastValue = error;
|
|
39
|
-
success = false;
|
|
40
|
-
} finally {
|
|
41
|
-
generator?.return(lastValue);
|
|
42
|
-
}
|
|
43
|
-
if (success) return lastValue;
|
|
44
|
-
throw lastValue;
|
|
45
|
-
}
|
|
46
|
-
function execute(callback) {
|
|
47
|
-
const generator = callback();
|
|
48
|
-
let success = true;
|
|
49
|
-
let lastValue;
|
|
50
|
-
try {
|
|
51
|
-
while (true) {
|
|
52
|
-
const next = generator.next(lastValue);
|
|
53
|
-
const done = next.done === true;
|
|
54
|
-
let { value } = next;
|
|
55
|
-
if (value instanceof Error) throw value;
|
|
56
|
-
lastValue = value;
|
|
57
|
-
if (done) break;
|
|
58
|
-
}
|
|
59
|
-
} catch (error) {
|
|
60
|
-
lastValue = error;
|
|
61
|
-
success = false;
|
|
62
|
-
} finally {
|
|
63
|
-
generator.return(lastValue);
|
|
64
|
-
}
|
|
65
|
-
if (success) return lastValue;
|
|
66
|
-
throw lastValue;
|
|
67
|
-
}
|
|
68
28
|
function plan(generator) {
|
|
69
29
|
if (isAsyncGenerator(generator)) return new AsyncPlan(generator);
|
|
70
30
|
if (isGenerator(generator)) return new Plan(generator);
|
|
71
31
|
throw new Error(PLAN_MESSAGE_PLAN_INPUT);
|
|
72
32
|
}
|
|
73
|
-
function run(input) {
|
|
74
|
-
if (isAsyncPlan(input) || isPlan(input)) return input.run();
|
|
75
|
-
if (isAsyncGenerator(input)) return asyncExecute(input);
|
|
76
|
-
if (isGenerator(input)) return execute(input);
|
|
77
|
-
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
78
|
-
}
|
|
79
|
-
function runAsyncPlan() {
|
|
80
|
-
return asyncExecute(this[PLAN_SYMBOL].generator);
|
|
81
|
-
}
|
|
82
|
-
function runPlan() {
|
|
83
|
-
return execute(this[PLAN_SYMBOL].generator);
|
|
84
|
-
}
|
|
85
33
|
//#endregion
|
|
86
|
-
export { plan, run };
|
|
34
|
+
export { asyncAttemptRun, asyncRun, attemptRun, plan, run };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Result } from "../internal/models/result.model.mjs";
|
|
2
|
+
import { AsyncPlan, InternalPlan, Plan, PlanError, PlanResult } from "../internal/models/plan.model.mjs";
|
|
3
|
+
//#region src/plan/result.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Attempt to run the generator to completion
|
|
6
|
+
*
|
|
7
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
8
|
+
*
|
|
9
|
+
* @returns Promised result
|
|
10
|
+
*/
|
|
11
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned, unknown>, ...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
12
|
+
/**
|
|
13
|
+
* Attempt to run the plan to completion
|
|
14
|
+
*
|
|
15
|
+
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
16
|
+
*
|
|
17
|
+
* @returns Promised result
|
|
18
|
+
*/
|
|
19
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<PlanResult<Returned>, PlanError<Yielded, Returned>>>;
|
|
20
|
+
/**
|
|
21
|
+
* Attempt to run the generator to completion
|
|
22
|
+
*
|
|
23
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
24
|
+
*
|
|
25
|
+
* @returns Result
|
|
26
|
+
*/
|
|
27
|
+
export declare function attemptRun<Yielded, Returned>(generator: () => Generator<Yielded, Returned, unknown>, ...parameters: Parameters<typeof generator>): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
28
|
+
/**
|
|
29
|
+
* Attempt to run the plan to completion
|
|
30
|
+
*
|
|
31
|
+
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
32
|
+
*
|
|
33
|
+
* @returns Result
|
|
34
|
+
*/
|
|
35
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<PlanResult<Returned>, PlanError<Yielded, Returned>>;
|
|
36
|
+
export declare function attemptRunAsyncPlan(this: InternalPlan, ...parameters: unknown[]): Promise<unknown>;
|
|
37
|
+
export declare function attemptRunPlan(this: InternalPlan, ...parameters: unknown[]): unknown;
|
|
38
|
+
export declare namespace attemptRun {
|
|
39
|
+
export var async: typeof asyncAttemptRun;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { asyncAttempt, attempt } from "../internal/result/attempt.mjs";
|
|
2
|
+
import { PLAN_MESSAGE_RUN_INPUT } from "../internal/models/plan.model.mjs";
|
|
3
|
+
import { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan } from "../internal/plan.mjs";
|
|
4
|
+
import { asyncGenerate, generate } from "./generate.mjs";
|
|
5
|
+
//#region src/plan/result.ts
|
|
6
|
+
function asyncAttemptRun(input, ...parameters) {
|
|
7
|
+
if (isAsyncPlan(input)) return input.attempt(...parameters);
|
|
8
|
+
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters));
|
|
9
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
10
|
+
}
|
|
11
|
+
function attemptRun(input, ...parameters) {
|
|
12
|
+
if (isPlan(input)) return input.attempt(...parameters);
|
|
13
|
+
if (isGenerator(input)) return attempt(() => generate(input, parameters));
|
|
14
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
15
|
+
}
|
|
16
|
+
function attemptRunAsyncPlan(...parameters) {
|
|
17
|
+
return asyncAttempt(() => this.run(...parameters));
|
|
18
|
+
}
|
|
19
|
+
function attemptRunPlan(...parameters) {
|
|
20
|
+
return attempt(() => this.run(...parameters));
|
|
21
|
+
}
|
|
22
|
+
attemptRun.async = asyncAttemptRun;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { asyncAttemptRun, attemptRun, attemptRunAsyncPlan, attemptRunPlan };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AsyncPlan, InternalAsyncPlan, InternalPlan, Plan, PlanError, PlanResult } from "../internal/models/plan.model.mjs";
|
|
2
|
+
import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
3
|
+
//#region src/plan/run.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Run an asynchronous generator to completion
|
|
6
|
+
*
|
|
7
|
+
* @param generator Generator to run
|
|
8
|
+
* @returns Result
|
|
9
|
+
*/
|
|
10
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned, unknown>, ...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
11
|
+
/**
|
|
12
|
+
* Run an asynchronous plan to completion
|
|
13
|
+
*
|
|
14
|
+
* @param plan Plan to run
|
|
15
|
+
* @returns Result
|
|
16
|
+
*/
|
|
17
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<PlanResult<Returned>>;
|
|
18
|
+
/**
|
|
19
|
+
* Run a generator to completion
|
|
20
|
+
*
|
|
21
|
+
* @param generator Generator to run
|
|
22
|
+
* @returns Result
|
|
23
|
+
*/
|
|
24
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned, unknown>, ...parameters: Parameters): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
25
|
+
/**
|
|
26
|
+
* Run a plan to completion
|
|
27
|
+
*
|
|
28
|
+
* @param plan Plan to run
|
|
29
|
+
* @returns Result
|
|
30
|
+
*/
|
|
31
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): PlanResult<Returned> | PlanError<Yielded, Returned>;
|
|
32
|
+
export declare function runAsyncPlan(this: InternalAsyncPlan, ...parameters: unknown[]): Promise<unknown>;
|
|
33
|
+
export declare function runPlan(this: InternalPlan, ...parameters: unknown[]): unknown;
|
|
34
|
+
export declare namespace asyncRun {
|
|
35
|
+
export var attempt: typeof asyncAttemptRun;
|
|
36
|
+
}
|
|
37
|
+
export declare namespace run {
|
|
38
|
+
export var async: typeof asyncRun;
|
|
39
|
+
export var attempt: typeof attemptRun;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PLAN_MESSAGE_RUN_INPUT, PLAN_SYMBOL } from "../internal/models/plan.model.mjs";
|
|
2
|
+
import { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan } from "../internal/plan.mjs";
|
|
3
|
+
import { asyncGenerate, generate } from "./generate.mjs";
|
|
4
|
+
import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
5
|
+
//#region src/plan/run.ts
|
|
6
|
+
function asyncRun(input, ...parameters) {
|
|
7
|
+
if (isAsyncPlan(input)) return input.run(...parameters);
|
|
8
|
+
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters);
|
|
9
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
10
|
+
}
|
|
11
|
+
function run(input, ...parameters) {
|
|
12
|
+
if (isPlan(input)) return input.run(...parameters);
|
|
13
|
+
if (isGenerator(input)) return generate(input, parameters);
|
|
14
|
+
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
15
|
+
}
|
|
16
|
+
function runAsyncPlan(...parameters) {
|
|
17
|
+
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters);
|
|
18
|
+
}
|
|
19
|
+
function runPlan(...parameters) {
|
|
20
|
+
return generate(this[PLAN_SYMBOL].generator, parameters);
|
|
21
|
+
}
|
|
22
|
+
asyncRun.attempt = asyncAttemptRun;
|
|
23
|
+
run.async = asyncRun;
|
|
24
|
+
run.attempt = attemptRun;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { asyncRun, run, runAsyncPlan, runPlan };
|
|
@@ -34,8 +34,8 @@ export type PromiseData = {
|
|
|
34
34
|
result: ArrayOrPlainObject;
|
|
35
35
|
};
|
|
36
36
|
export type PromiseHandlers = {
|
|
37
|
-
resolve
|
|
38
|
-
reject
|
|
37
|
+
resolve(value: unknown[]): void;
|
|
38
|
+
reject(reason: unknown): void;
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
41
|
* Options for a _Promise_-handling function
|