@oscarpalmer/atoms 0.212.0 → 0.213.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/color/instance.mjs +0 -1
- package/dist/index.d.mts +46 -38
- package/dist/index.mjs +44 -38
- package/dist/internal/models/plan.model.d.mts +14 -12
- package/dist/internal/string/misc.mjs +0 -1
- package/dist/models.d.mts +3 -3
- package/dist/plan/generate.d.mts +2 -2
- package/dist/plan/generate.mjs +5 -5
- package/dist/plan/index.mjs +1 -1
- package/dist/plan/is.d.mts +31 -2
- package/dist/plan/is.mjs +45 -1
- package/dist/plan/misc.d.mts +21 -2
- package/dist/plan/misc.mjs +32 -2
- package/dist/plan/result.d.mts +6 -6
- package/dist/plan/result.mjs +6 -6
- package/dist/plan/run.d.mts +5 -5
- package/dist/plan/run.mjs +5 -5
- package/dist/promise/models.d.mts +4 -4
- package/dist/result/work/flow.mjs +0 -1
- package/dist/result/work/pipe.mjs +0 -1
- package/dist/value/shake.d.mts +2 -2
- package/package.json +2 -1
- package/dist/internal/plan.d.mts +0 -45
- package/dist/internal/plan.mjs +0 -70
package/dist/color/instance.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -63,7 +63,7 @@ type _NestedValue<Value, Path extends string> = Path extends `${infer ItemKey}.$
|
|
|
63
63
|
/**
|
|
64
64
|
* The nested _(keyed)_ values of an object _(up to 5 levels deep)_
|
|
65
65
|
*/
|
|
66
|
-
export type NestedValues<Value extends PlainObject> = { [Path in NestedKeys<Value>]: NestedValue<Value, Path>; }
|
|
66
|
+
export type NestedValues<Value extends PlainObject> = Simplify<{ [Path in NestedKeys<Value>]: NestedValue<Value, Path>; }>;
|
|
67
67
|
/**
|
|
68
68
|
* The numerical keys of an object
|
|
69
69
|
*/
|
|
@@ -71,7 +71,7 @@ export type NumericalKeys<Value> = { [ItemKey in keyof Value]: ItemKey extends n
|
|
|
71
71
|
/**
|
|
72
72
|
* The numerical values of an object
|
|
73
73
|
*/
|
|
74
|
-
export type NumericalValues<Item extends PlainObject> = { [ItemKey in keyof Item as Item[ItemKey] extends number ? ItemKey : never]: Item[ItemKey]; }
|
|
74
|
+
export type NumericalValues<Item extends PlainObject> = Simplify<{ [ItemKey in keyof Item as Item[ItemKey] extends number ? ItemKey : never]: Item[ItemKey]; }>;
|
|
75
75
|
/**
|
|
76
76
|
* An asynchronous function that can only be called once, returning the same value on subsequent calls
|
|
77
77
|
*/
|
|
@@ -131,7 +131,7 @@ export type Primitive = null | undefined | string | number | boolean | symbol |
|
|
|
131
131
|
/**
|
|
132
132
|
* Set required keys for a type
|
|
133
133
|
*/
|
|
134
|
-
export type RequiredKeys<Model extends object, Keys extends keyof Model> = Required<Pick<Model, Keys>> & Omit<Model, Keys
|
|
134
|
+
export type RequiredKeys<Model extends object, Keys extends keyof Model> = Simplify<Required<Pick<Model, Keys>> & Omit<Model, Keys>>;
|
|
135
135
|
/**
|
|
136
136
|
* Flattens the type to improve type hints in IDEs
|
|
137
137
|
*
|
|
@@ -4597,22 +4597,22 @@ type AsyncPlan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
|
4597
4597
|
*
|
|
4598
4598
|
* @returns Asynchronous generator
|
|
4599
4599
|
*/
|
|
4600
|
-
[Symbol.asyncIterator]: () => AsyncGenerator<Yielded, Returned
|
|
4600
|
+
[Symbol.asyncIterator]: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>;
|
|
4601
4601
|
/**
|
|
4602
4602
|
* Attempt to run the plan to completion
|
|
4603
4603
|
*
|
|
4604
4604
|
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
4605
4605
|
*
|
|
4606
|
-
* @returns
|
|
4606
|
+
* @returns Attempted result
|
|
4607
4607
|
*/
|
|
4608
|
-
attempt(...parameters: Parameters): Promise<Result<
|
|
4608
|
+
attempt(...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
4609
4609
|
/**
|
|
4610
4610
|
* Run the plan to completion
|
|
4611
4611
|
*
|
|
4612
4612
|
* @throws {PlanError<Yielded, Returned>}
|
|
4613
4613
|
* @returns Result
|
|
4614
4614
|
*/
|
|
4615
|
-
run(...parameters: Parameters): Promise<
|
|
4615
|
+
run(...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
4616
4616
|
};
|
|
4617
4617
|
/**
|
|
4618
4618
|
* A plan of execution that can yield intermediate results and eventually return a result
|
|
@@ -4623,26 +4623,28 @@ type Plan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
|
4623
4623
|
*
|
|
4624
4624
|
* @returns Generator
|
|
4625
4625
|
*/
|
|
4626
|
-
[Symbol.iterator]: () => Generator<Yielded, Returned
|
|
4626
|
+
[Symbol.iterator]: (...parameters: Parameters) => Generator<Yielded, Returned>;
|
|
4627
4627
|
/**
|
|
4628
4628
|
* Attempt to run the plan to completion
|
|
4629
4629
|
*
|
|
4630
4630
|
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
4631
4631
|
*
|
|
4632
|
-
* @returns
|
|
4632
|
+
* @returns Attempted result
|
|
4633
4633
|
*/
|
|
4634
|
-
attempt(...parameters: Parameters): Result<
|
|
4634
|
+
attempt(...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
4635
4635
|
/**
|
|
4636
4636
|
* Run the plan to completion
|
|
4637
4637
|
*
|
|
4638
4638
|
* @throws {PlanError<Yielded, Returned>}
|
|
4639
4639
|
* @returns Result
|
|
4640
4640
|
*/
|
|
4641
|
-
run(...parameters: Parameters):
|
|
4641
|
+
run(...parameters: Parameters): PlanReturned<Returned>;
|
|
4642
4642
|
};
|
|
4643
|
-
type
|
|
4644
|
-
type
|
|
4645
|
-
type
|
|
4643
|
+
type PlanOk<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned extends Ok<infer Value> ? Value : Returned;
|
|
4644
|
+
type PlanErrors<Yielded, Returned> = PlanErrorValues<Yielded> | PlanErrorValues<Returned>;
|
|
4645
|
+
type PlanError<Yielded, Returned> = [PlanErrors<Yielded, Returned>] extends [never] ? Error : PlanErrors<Yielded, Returned>;
|
|
4646
|
+
type PlanErrorValues<Original> = Original extends Error ? Original : Original extends Err<infer Error> ? Error : never;
|
|
4647
|
+
type PlanReturned<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned;
|
|
4646
4648
|
//#endregion
|
|
4647
4649
|
//#region src/plan/result.d.ts
|
|
4648
4650
|
/**
|
|
@@ -4652,7 +4654,7 @@ type PlanResult<Returned> = Returned extends Error ? never : Returned extends Er
|
|
|
4652
4654
|
*
|
|
4653
4655
|
* @returns Promised result
|
|
4654
4656
|
*/
|
|
4655
|
-
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned
|
|
4657
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>, ...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
4656
4658
|
/**
|
|
4657
4659
|
* Attempt to run the plan to completion
|
|
4658
4660
|
*
|
|
@@ -4660,7 +4662,7 @@ export declare function asyncAttemptRun<Yielded, Returned, Parameters extends un
|
|
|
4660
4662
|
*
|
|
4661
4663
|
* @returns Promised result
|
|
4662
4664
|
*/
|
|
4663
|
-
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<
|
|
4665
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
4664
4666
|
/**
|
|
4665
4667
|
* Attempt to run the generator to completion
|
|
4666
4668
|
*
|
|
@@ -4668,7 +4670,7 @@ export declare function asyncAttemptRun<Yielded, Returned, Parameters extends un
|
|
|
4668
4670
|
*
|
|
4669
4671
|
* @returns Result
|
|
4670
4672
|
*/
|
|
4671
|
-
export declare function attemptRun<Yielded, Returned>(generator: () => Generator<Yielded, Returned
|
|
4673
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>, ...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
4672
4674
|
/**
|
|
4673
4675
|
* Attempt to run the plan to completion
|
|
4674
4676
|
*
|
|
@@ -4676,7 +4678,7 @@ export declare function attemptRun<Yielded, Returned>(generator: () => Generator
|
|
|
4676
4678
|
*
|
|
4677
4679
|
* @returns Result
|
|
4678
4680
|
*/
|
|
4679
|
-
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<
|
|
4681
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
4680
4682
|
export declare namespace attemptRun {
|
|
4681
4683
|
export var async: typeof asyncAttemptRun;
|
|
4682
4684
|
}
|
|
@@ -4688,28 +4690,28 @@ export declare namespace attemptRun {
|
|
|
4688
4690
|
* @param generator Generator to run
|
|
4689
4691
|
* @returns Result
|
|
4690
4692
|
*/
|
|
4691
|
-
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned
|
|
4693
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>, ...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
4692
4694
|
/**
|
|
4693
4695
|
* Run an asynchronous plan to completion
|
|
4694
4696
|
*
|
|
4695
4697
|
* @param plan Plan to run
|
|
4696
4698
|
* @returns Result
|
|
4697
4699
|
*/
|
|
4698
|
-
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<
|
|
4700
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
4699
4701
|
/**
|
|
4700
4702
|
* Run a generator to completion
|
|
4701
4703
|
*
|
|
4702
4704
|
* @param generator Generator to run
|
|
4703
4705
|
* @returns Result
|
|
4704
4706
|
*/
|
|
4705
|
-
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned
|
|
4707
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>, ...parameters: Parameters): PlanReturned<Returned>;
|
|
4706
4708
|
/**
|
|
4707
4709
|
* Run a plan to completion
|
|
4708
4710
|
*
|
|
4709
4711
|
* @param plan Plan to run
|
|
4710
4712
|
* @returns Result
|
|
4711
4713
|
*/
|
|
4712
|
-
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters):
|
|
4714
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): PlanReturned<Returned>;
|
|
4713
4715
|
export declare namespace asyncRun {
|
|
4714
4716
|
export var attempt: typeof asyncAttemptRun;
|
|
4715
4717
|
}
|
|
@@ -4734,14 +4736,7 @@ export declare function plan<Yielded, Returned, Parameters extends unknown[]>(ge
|
|
|
4734
4736
|
*/
|
|
4735
4737
|
export declare function plan<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>): Plan<Yielded, Returned, Parameters>;
|
|
4736
4738
|
//#endregion
|
|
4737
|
-
//#region src/
|
|
4738
|
-
/**
|
|
4739
|
-
* Create an immediately failing generator
|
|
4740
|
-
*
|
|
4741
|
-
* @param reason Failure reason
|
|
4742
|
-
* @returns Failing generator
|
|
4743
|
-
*/
|
|
4744
|
-
export declare function fail<Reason>(reason: Reason): Generator<unknown, never>;
|
|
4739
|
+
//#region src/plan/is.d.ts
|
|
4745
4740
|
/**
|
|
4746
4741
|
* Is the value an asynchronous generator function?
|
|
4747
4742
|
*
|
|
@@ -4770,13 +4765,26 @@ export declare function isGenerator(value: unknown): value is () => Generator;
|
|
|
4770
4765
|
* @returns `true` if the value is a plan, otherwise `false`
|
|
4771
4766
|
*/
|
|
4772
4767
|
export declare function isPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is Plan<Yielded, Returned, Parameters>;
|
|
4768
|
+
//#endregion
|
|
4769
|
+
//#region src/plan/misc.d.ts
|
|
4773
4770
|
/**
|
|
4774
|
-
* Create an immediately
|
|
4771
|
+
* Create an immediately failing plan
|
|
4772
|
+
*
|
|
4773
|
+
* @param reason Failure reason
|
|
4774
|
+
* @returns Plan failure
|
|
4775
|
+
*/
|
|
4776
|
+
export declare function fail<Reason>(reason: Reason): Generator<Reason, void>;
|
|
4777
|
+
/**
|
|
4778
|
+
* Create an immediately succeeding plan
|
|
4775
4779
|
*
|
|
4776
4780
|
* @param value Success value
|
|
4777
|
-
* @returns
|
|
4781
|
+
* @returns Plan success
|
|
4778
4782
|
*/
|
|
4779
|
-
export declare function succeed<Value>(value: Value): Generator<
|
|
4783
|
+
export declare function succeed<Value>(value: Value): Generator<never, Value>;
|
|
4784
|
+
export declare function succeedResult<Returned>(value: Returned): Generator<never, Ok<Returned>>;
|
|
4785
|
+
export declare namespace succeed {
|
|
4786
|
+
export var result: typeof succeedResult;
|
|
4787
|
+
}
|
|
4780
4788
|
//#endregion
|
|
4781
4789
|
//#region src/internal/aborter.d.ts
|
|
4782
4790
|
type Aborter = {
|
|
@@ -4859,7 +4867,7 @@ export type PromiseStrategy = "complete" | "first";
|
|
|
4859
4867
|
export declare class PromiseTimeoutError extends Error {
|
|
4860
4868
|
constructor();
|
|
4861
4869
|
}
|
|
4862
|
-
export type PromisesItems<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Promise<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Promise<Value> : Promise<Items[ItemsKey]>; };
|
|
4870
|
+
export type PromisesItems<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Promise<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Promise<Value> : Promise<Items[ItemsKey]>; } extends (infer Result) ? Result : never;
|
|
4863
4871
|
/**
|
|
4864
4872
|
* Options for handling multiple _Promises_
|
|
4865
4873
|
*/
|
|
@@ -4874,9 +4882,9 @@ export type PromisesOptions = {
|
|
|
4874
4882
|
strategy?: PromiseStrategy;
|
|
4875
4883
|
};
|
|
4876
4884
|
export type PromisesResult<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? Result<Awaited<Value>> : never; };
|
|
4877
|
-
export type PromisesUnwrapped<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Awaited<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Awaited<Value> : never; };
|
|
4878
|
-
export type PromisesValue<Value> = FulfilledPromise<Value> | RejectedPromise;
|
|
4879
|
-
export type PromisesValues<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? PromisesValue<Awaited<Value>> : never; };
|
|
4885
|
+
export type PromisesUnwrapped<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Awaited<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Awaited<Value> : never; } extends (infer Result) ? Result : never;
|
|
4886
|
+
export type PromisesValue<Value> = (FulfilledPromise<Value> | RejectedPromise);
|
|
4887
|
+
export type PromisesValues<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? PromisesValue<Awaited<Value>> : never; } extends (infer Result) ? Result : never;
|
|
4880
4888
|
/**
|
|
4881
4889
|
* A _Promise_ that was rejected
|
|
4882
4890
|
*/
|
|
@@ -6350,7 +6358,7 @@ export declare function pick<Value extends PlainObject, ValueKey extends keyof V
|
|
|
6350
6358
|
/**
|
|
6351
6359
|
* A shaken object, without any `undefined` values
|
|
6352
6360
|
*/
|
|
6353
|
-
type Shaken<Value extends PlainObject> = { [Key in keyof Value]: Value[Key] extends undefined ? never : Value[Key]
|
|
6361
|
+
type Shaken<Value extends PlainObject> = Simplify<{ [Key in keyof Value as undefined extends Value[Key] ? never : Key]: Value[Key]; } & { [Key in keyof Value as undefined extends Value[Key] ? [Value[Key]] extends [undefined] ? never : Key : never]?: Exclude<Value[Key], undefined>; }>;
|
|
6354
6362
|
/**
|
|
6355
6363
|
* Shake an object, removing all keys with `undefined` values
|
|
6356
6364
|
*
|
package/dist/index.mjs
CHANGED
|
@@ -2756,19 +2756,7 @@ const PLAN_SYMBOL = Symbol("plan");
|
|
|
2756
2756
|
const PLAN_TYPE_PLAN_ASYNC = "asyncPlan";
|
|
2757
2757
|
const PLAN_TYPE_PLAN_SYNC = "plan";
|
|
2758
2758
|
//#endregion
|
|
2759
|
-
//#region src/
|
|
2760
|
-
/**
|
|
2761
|
-
* Create an immediately failing generator
|
|
2762
|
-
*
|
|
2763
|
-
* @param reason Failure reason
|
|
2764
|
-
* @returns Failing generator
|
|
2765
|
-
*/
|
|
2766
|
-
function fail(reason) {
|
|
2767
|
-
return (function* () {
|
|
2768
|
-
yield;
|
|
2769
|
-
throw reason;
|
|
2770
|
-
})();
|
|
2771
|
-
}
|
|
2759
|
+
//#region src/plan/is.ts
|
|
2772
2760
|
/**
|
|
2773
2761
|
* Is the value an asynchronous generator function?
|
|
2774
2762
|
*
|
|
@@ -2811,21 +2799,9 @@ function isPlan(value) {
|
|
|
2811
2799
|
function isPlanInstance(type, value) {
|
|
2812
2800
|
return typeof value === "object" && value !== null && PLAN_SYMBOL in value && value[PLAN_SYMBOL].type === type;
|
|
2813
2801
|
}
|
|
2814
|
-
/**
|
|
2815
|
-
* Create an immediately succeeding generator
|
|
2816
|
-
*
|
|
2817
|
-
* @param value Success value
|
|
2818
|
-
* @returns Succeeding generator
|
|
2819
|
-
*/
|
|
2820
|
-
function succeed(value) {
|
|
2821
|
-
return (function* () {
|
|
2822
|
-
yield;
|
|
2823
|
-
return value;
|
|
2824
|
-
})();
|
|
2825
|
-
}
|
|
2826
2802
|
//#endregion
|
|
2827
2803
|
//#region src/plan/generate.ts
|
|
2828
|
-
async function asyncGenerate(callback, parameters) {
|
|
2804
|
+
async function asyncGenerate(callback, parameters, unwrap) {
|
|
2829
2805
|
const generator = callback(...parameters);
|
|
2830
2806
|
let success = true;
|
|
2831
2807
|
let lastValue;
|
|
@@ -2845,10 +2821,10 @@ async function asyncGenerate(callback, parameters) {
|
|
|
2845
2821
|
} finally {
|
|
2846
2822
|
await generator?.return(lastValue);
|
|
2847
2823
|
}
|
|
2848
|
-
if (success) return lastValue;
|
|
2824
|
+
if (success) return unwrap && isOk(lastValue) ? lastValue.value : lastValue;
|
|
2849
2825
|
throw lastValue;
|
|
2850
2826
|
}
|
|
2851
|
-
function generate(callback, parameters) {
|
|
2827
|
+
function generate(callback, parameters, unwrap) {
|
|
2852
2828
|
const generator = callback(...parameters);
|
|
2853
2829
|
let success = true;
|
|
2854
2830
|
let lastValue;
|
|
@@ -2868,45 +2844,45 @@ function generate(callback, parameters) {
|
|
|
2868
2844
|
} finally {
|
|
2869
2845
|
generator.return(lastValue);
|
|
2870
2846
|
}
|
|
2871
|
-
if (success) return lastValue;
|
|
2847
|
+
if (success) return unwrap && isOk(lastValue) ? lastValue.value : lastValue;
|
|
2872
2848
|
throw lastValue;
|
|
2873
2849
|
}
|
|
2874
2850
|
//#endregion
|
|
2875
2851
|
//#region src/plan/result.ts
|
|
2876
2852
|
function asyncAttemptRun(input, ...parameters) {
|
|
2877
2853
|
if (isAsyncPlan(input)) return input.attempt(...parameters);
|
|
2878
|
-
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters));
|
|
2854
|
+
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters, true));
|
|
2879
2855
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2880
2856
|
}
|
|
2881
2857
|
function attemptRun(input, ...parameters) {
|
|
2882
2858
|
if (isPlan(input)) return input.attempt(...parameters);
|
|
2883
|
-
if (isGenerator(input)) return attempt(() => generate(input, parameters));
|
|
2859
|
+
if (isGenerator(input)) return attempt(() => generate(input, parameters, true));
|
|
2884
2860
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2885
2861
|
}
|
|
2886
2862
|
function attemptRunAsyncPlan(...parameters) {
|
|
2887
|
-
return asyncAttempt(() => this.
|
|
2863
|
+
return asyncAttempt(() => asyncGenerate(this[PLAN_SYMBOL].generator, parameters, true));
|
|
2888
2864
|
}
|
|
2889
2865
|
function attemptRunPlan(...parameters) {
|
|
2890
|
-
return attempt(() => this.
|
|
2866
|
+
return attempt(() => generate(this[PLAN_SYMBOL].generator, parameters, true));
|
|
2891
2867
|
}
|
|
2892
2868
|
attemptRun.async = asyncAttemptRun;
|
|
2893
2869
|
//#endregion
|
|
2894
2870
|
//#region src/plan/run.ts
|
|
2895
2871
|
function asyncRun(input, ...parameters) {
|
|
2896
2872
|
if (isAsyncPlan(input)) return input.run(...parameters);
|
|
2897
|
-
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters);
|
|
2873
|
+
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters, false);
|
|
2898
2874
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2899
2875
|
}
|
|
2900
2876
|
function run(input, ...parameters) {
|
|
2901
2877
|
if (isPlan(input)) return input.run(...parameters);
|
|
2902
|
-
if (isGenerator(input)) return generate(input, parameters);
|
|
2878
|
+
if (isGenerator(input)) return generate(input, parameters, false);
|
|
2903
2879
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
2904
2880
|
}
|
|
2905
2881
|
function runAsyncPlan(...parameters) {
|
|
2906
|
-
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters);
|
|
2882
|
+
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters, false);
|
|
2907
2883
|
}
|
|
2908
2884
|
function runPlan(...parameters) {
|
|
2909
|
-
return generate(this[PLAN_SYMBOL].generator, parameters);
|
|
2885
|
+
return generate(this[PLAN_SYMBOL].generator, parameters, false);
|
|
2910
2886
|
}
|
|
2911
2887
|
asyncRun.attempt = asyncAttemptRun;
|
|
2912
2888
|
run.async = asyncRun;
|
|
@@ -2941,6 +2917,36 @@ function plan(generator) {
|
|
|
2941
2917
|
throw new Error(PLAN_MESSAGE_PLAN_INPUT);
|
|
2942
2918
|
}
|
|
2943
2919
|
//#endregion
|
|
2920
|
+
//#region src/plan/misc.ts
|
|
2921
|
+
/**
|
|
2922
|
+
* Create an immediately failing plan
|
|
2923
|
+
*
|
|
2924
|
+
* @param reason Failure reason
|
|
2925
|
+
* @returns Plan failure
|
|
2926
|
+
*/
|
|
2927
|
+
function fail(reason) {
|
|
2928
|
+
return (function* () {
|
|
2929
|
+
throw reason;
|
|
2930
|
+
})();
|
|
2931
|
+
}
|
|
2932
|
+
/**
|
|
2933
|
+
* Create an immediately succeeding plan
|
|
2934
|
+
*
|
|
2935
|
+
* @param value Success value
|
|
2936
|
+
* @returns Plan success
|
|
2937
|
+
*/
|
|
2938
|
+
function succeed(value) {
|
|
2939
|
+
return (function* () {
|
|
2940
|
+
return value;
|
|
2941
|
+
})();
|
|
2942
|
+
}
|
|
2943
|
+
function succeedResult(value) {
|
|
2944
|
+
return (function* () {
|
|
2945
|
+
return ok(value);
|
|
2946
|
+
})();
|
|
2947
|
+
}
|
|
2948
|
+
succeed.result = succeedResult;
|
|
2949
|
+
//#endregion
|
|
2944
2950
|
//#region src/internal/aborter.ts
|
|
2945
2951
|
function createAborter(value, onAbort) {
|
|
2946
2952
|
if (!(value instanceof AbortSignal)) return;
|
|
@@ -7043,4 +7049,4 @@ var SizedSet = class extends Set {
|
|
|
7043
7049
|
}
|
|
7044
7050
|
};
|
|
7045
7051
|
//#endregion
|
|
7046
|
-
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 };
|
|
7052
|
+
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, succeedResult, 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 };
|
|
@@ -9,22 +9,22 @@ export type AsyncPlan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
|
9
9
|
*
|
|
10
10
|
* @returns Asynchronous generator
|
|
11
11
|
*/
|
|
12
|
-
[Symbol.asyncIterator]: () => AsyncGenerator<Yielded, Returned
|
|
12
|
+
[Symbol.asyncIterator]: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>;
|
|
13
13
|
/**
|
|
14
14
|
* Attempt to run the plan to completion
|
|
15
15
|
*
|
|
16
16
|
* _Returns a promised {@link Result} instead of a raw value or throwing an error_
|
|
17
17
|
*
|
|
18
|
-
* @returns
|
|
18
|
+
* @returns Attempted result
|
|
19
19
|
*/
|
|
20
|
-
attempt(...parameters: Parameters): Promise<Result<
|
|
20
|
+
attempt(...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
21
21
|
/**
|
|
22
22
|
* Run the plan to completion
|
|
23
23
|
*
|
|
24
24
|
* @throws {PlanError<Yielded, Returned>}
|
|
25
25
|
* @returns Result
|
|
26
26
|
*/
|
|
27
|
-
run(...parameters: Parameters): Promise<
|
|
27
|
+
run(...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
28
28
|
};
|
|
29
29
|
type AsyncPlanState = {
|
|
30
30
|
generator(...parameters: unknown[]): AsyncGenerator;
|
|
@@ -47,30 +47,32 @@ export type Plan<Yielded, Returned, Parameters extends unknown[]> = {
|
|
|
47
47
|
*
|
|
48
48
|
* @returns Generator
|
|
49
49
|
*/
|
|
50
|
-
[Symbol.iterator]: () => Generator<Yielded, Returned
|
|
50
|
+
[Symbol.iterator]: (...parameters: Parameters) => Generator<Yielded, Returned>;
|
|
51
51
|
/**
|
|
52
52
|
* Attempt to run the plan to completion
|
|
53
53
|
*
|
|
54
54
|
* _Returns a {@link Result} instead of a raw value or throwing an error_
|
|
55
55
|
*
|
|
56
|
-
* @returns
|
|
56
|
+
* @returns Attempted result
|
|
57
57
|
*/
|
|
58
|
-
attempt(...parameters: Parameters): Result<
|
|
58
|
+
attempt(...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
59
59
|
/**
|
|
60
60
|
* Run the plan to completion
|
|
61
61
|
*
|
|
62
62
|
* @throws {PlanError<Yielded, Returned>}
|
|
63
63
|
* @returns Result
|
|
64
64
|
*/
|
|
65
|
-
run(...parameters: Parameters):
|
|
65
|
+
run(...parameters: Parameters): PlanReturned<Returned>;
|
|
66
66
|
};
|
|
67
|
-
type
|
|
68
|
-
|
|
69
|
-
export type
|
|
67
|
+
export type PlanOk<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned extends Ok<infer Value> ? Value : Returned;
|
|
68
|
+
type PlanErrors<Yielded, Returned> = PlanErrorValues<Yielded> | PlanErrorValues<Returned>;
|
|
69
|
+
export type PlanError<Yielded, Returned> = [PlanErrors<Yielded, Returned>] extends [never] ? Error : PlanErrors<Yielded, Returned>;
|
|
70
|
+
type PlanErrorValues<Original> = Original extends Error ? Original : Original extends Err<infer Error> ? Error : never;
|
|
71
|
+
export type PlanReturned<Returned> = Returned extends Error ? never : Returned extends Err<infer _> ? never : Returned;
|
|
70
72
|
type PlanState = {
|
|
71
73
|
generator(...parameters: unknown[]): Generator;
|
|
72
74
|
} & BaseState<typeof PLAN_TYPE_PLAN_SYNC>;
|
|
73
|
-
export type PlanType = "asyncPlan" | "plan"
|
|
75
|
+
export type PlanType = "asyncPlan" | "plan";
|
|
74
76
|
export declare const GENERATOR_NAME_ASYNC = "AsyncGeneratorFunction";
|
|
75
77
|
export declare const GENERATOR_NAME_SYNC = "GeneratorFunction";
|
|
76
78
|
export declare const PLAN_MESSAGE_PLAN_INPUT = "plan requires a generator function";
|
package/dist/models.d.mts
CHANGED
|
@@ -63,7 +63,7 @@ type _NestedValue<Value, Path extends string> = Path extends `${infer ItemKey}.$
|
|
|
63
63
|
/**
|
|
64
64
|
* The nested _(keyed)_ values of an object _(up to 5 levels deep)_
|
|
65
65
|
*/
|
|
66
|
-
export type NestedValues<Value extends PlainObject> = { [Path in NestedKeys<Value>]: NestedValue<Value, Path>; }
|
|
66
|
+
export type NestedValues<Value extends PlainObject> = Simplify<{ [Path in NestedKeys<Value>]: NestedValue<Value, Path>; }>;
|
|
67
67
|
/**
|
|
68
68
|
* The numerical keys of an object
|
|
69
69
|
*/
|
|
@@ -71,7 +71,7 @@ export type NumericalKeys<Value> = { [ItemKey in keyof Value]: ItemKey extends n
|
|
|
71
71
|
/**
|
|
72
72
|
* The numerical values of an object
|
|
73
73
|
*/
|
|
74
|
-
export type NumericalValues<Item extends PlainObject> = { [ItemKey in keyof Item as Item[ItemKey] extends number ? ItemKey : never]: Item[ItemKey]; }
|
|
74
|
+
export type NumericalValues<Item extends PlainObject> = Simplify<{ [ItemKey in keyof Item as Item[ItemKey] extends number ? ItemKey : never]: Item[ItemKey]; }>;
|
|
75
75
|
/**
|
|
76
76
|
* An asynchronous function that can only be called once, returning the same value on subsequent calls
|
|
77
77
|
*/
|
|
@@ -131,7 +131,7 @@ export type Primitive = null | undefined | string | number | boolean | symbol |
|
|
|
131
131
|
/**
|
|
132
132
|
* Set required keys for a type
|
|
133
133
|
*/
|
|
134
|
-
export type RequiredKeys<Model extends object, Keys extends keyof Model> = Required<Pick<Model, Keys>> & Omit<Model, Keys
|
|
134
|
+
export type RequiredKeys<Model extends object, Keys extends keyof Model> = Simplify<Required<Pick<Model, Keys>> & Omit<Model, Keys>>;
|
|
135
135
|
/**
|
|
136
136
|
* Flattens the type to improve type hints in IDEs
|
|
137
137
|
*
|
package/dist/plan/generate.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
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;
|
|
2
|
+
export declare function asyncGenerate(callback: (...parameters: unknown[]) => AsyncGenerator, parameters: unknown[], unwrap: boolean): Promise<unknown>;
|
|
3
|
+
export declare function generate(callback: (...parameters: unknown[]) => Generator, parameters: unknown[], unwrap: boolean): unknown;
|
|
4
4
|
//#endregion
|
package/dist/plan/generate.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { isError } from "../internal/result/misc.mjs";
|
|
1
|
+
import { isError, isOk } from "../internal/result/misc.mjs";
|
|
2
2
|
//#region src/plan/generate.ts
|
|
3
|
-
async function asyncGenerate(callback, parameters) {
|
|
3
|
+
async function asyncGenerate(callback, parameters, unwrap) {
|
|
4
4
|
const generator = callback(...parameters);
|
|
5
5
|
let success = true;
|
|
6
6
|
let lastValue;
|
|
@@ -20,10 +20,10 @@ async function asyncGenerate(callback, parameters) {
|
|
|
20
20
|
} finally {
|
|
21
21
|
await generator?.return(lastValue);
|
|
22
22
|
}
|
|
23
|
-
if (success) return lastValue;
|
|
23
|
+
if (success) return unwrap && isOk(lastValue) ? lastValue.value : lastValue;
|
|
24
24
|
throw lastValue;
|
|
25
25
|
}
|
|
26
|
-
function generate(callback, parameters) {
|
|
26
|
+
function generate(callback, parameters, unwrap) {
|
|
27
27
|
const generator = callback(...parameters);
|
|
28
28
|
let success = true;
|
|
29
29
|
let lastValue;
|
|
@@ -43,7 +43,7 @@ function generate(callback, parameters) {
|
|
|
43
43
|
} finally {
|
|
44
44
|
generator.return(lastValue);
|
|
45
45
|
}
|
|
46
|
-
if (success) return lastValue;
|
|
46
|
+
if (success) return unwrap && isOk(lastValue) ? lastValue.value : lastValue;
|
|
47
47
|
throw lastValue;
|
|
48
48
|
}
|
|
49
49
|
//#endregion
|
package/dist/plan/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
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 "
|
|
2
|
+
import { isAsyncGenerator, isGenerator } from "./is.mjs";
|
|
3
3
|
import { asyncAttemptRun, attemptRun, attemptRunAsyncPlan, attemptRunPlan } from "./result.mjs";
|
|
4
4
|
import { asyncRun, run, runAsyncPlan, runPlan } from "./run.mjs";
|
|
5
5
|
//#region src/plan/index.ts
|
package/dist/plan/is.d.mts
CHANGED
|
@@ -1,2 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { AsyncPlan, Plan } from "../internal/models/plan.model.mjs";
|
|
2
|
+
//#region src/plan/is.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Is the value an asynchronous generator function?
|
|
5
|
+
*
|
|
6
|
+
* @param value Value to check
|
|
7
|
+
* @returns `true` if the value is an asynchronous generator function, otherwise `false`
|
|
8
|
+
*/
|
|
9
|
+
export declare function isAsyncGenerator(value: unknown): value is () => AsyncGenerator;
|
|
10
|
+
/**
|
|
11
|
+
* Is the value an asynchronous plan?
|
|
12
|
+
*
|
|
13
|
+
* @param value Value to check
|
|
14
|
+
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
15
|
+
*/
|
|
16
|
+
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is AsyncPlan<Yielded, Returned, Parameters>;
|
|
17
|
+
/**
|
|
18
|
+
* Is the value a generator function?
|
|
19
|
+
*
|
|
20
|
+
* @param value Value to check
|
|
21
|
+
* @returns `true` if the value is a generator function, otherwise `false`
|
|
22
|
+
*/
|
|
23
|
+
export declare function isGenerator(value: unknown): value is () => Generator;
|
|
24
|
+
/**
|
|
25
|
+
* Is the value a plan?
|
|
26
|
+
*
|
|
27
|
+
* @param value Value to check
|
|
28
|
+
* @returns `true` if the value is a plan, otherwise `false`
|
|
29
|
+
*/
|
|
30
|
+
export declare function isPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is Plan<Yielded, Returned, Parameters>;
|
|
31
|
+
//#endregion
|
package/dist/plan/is.mjs
CHANGED
|
@@ -1,2 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GENERATOR_NAME_ASYNC, GENERATOR_NAME_SYNC, PLAN_SYMBOL, PLAN_TYPE_PLAN_ASYNC, PLAN_TYPE_PLAN_SYNC } from "../internal/models/plan.model.mjs";
|
|
2
|
+
//#region src/plan/is.ts
|
|
3
|
+
/**
|
|
4
|
+
* Is the value an asynchronous generator function?
|
|
5
|
+
*
|
|
6
|
+
* @param value Value to check
|
|
7
|
+
* @returns `true` if the value is an asynchronous generator function, otherwise `false`
|
|
8
|
+
*/
|
|
9
|
+
function isAsyncGenerator(value) {
|
|
10
|
+
return isGeneratorInstance(GENERATOR_NAME_ASYNC, value);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Is the value an asynchronous plan?
|
|
14
|
+
*
|
|
15
|
+
* @param value Value to check
|
|
16
|
+
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
17
|
+
*/
|
|
18
|
+
function isAsyncPlan(value) {
|
|
19
|
+
return isPlanInstance(PLAN_TYPE_PLAN_ASYNC, value);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Is the value a generator function?
|
|
23
|
+
*
|
|
24
|
+
* @param value Value to check
|
|
25
|
+
* @returns `true` if the value is a generator function, otherwise `false`
|
|
26
|
+
*/
|
|
27
|
+
function isGenerator(value) {
|
|
28
|
+
return isGeneratorInstance(GENERATOR_NAME_SYNC, value);
|
|
29
|
+
}
|
|
30
|
+
function isGeneratorInstance(name, value) {
|
|
31
|
+
return typeof value === "function" && value !== null && value.constructor.name === name && typeof value.prototype.next === "function" && typeof value.prototype.return === "function" && typeof value.prototype.throw === "function";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Is the value a plan?
|
|
35
|
+
*
|
|
36
|
+
* @param value Value to check
|
|
37
|
+
* @returns `true` if the value is a plan, otherwise `false`
|
|
38
|
+
*/
|
|
39
|
+
function isPlan(value) {
|
|
40
|
+
return isPlanInstance(PLAN_TYPE_PLAN_SYNC, value);
|
|
41
|
+
}
|
|
42
|
+
function isPlanInstance(type, value) {
|
|
43
|
+
return typeof value === "object" && value !== null && PLAN_SYMBOL in value && value[PLAN_SYMBOL].type === type;
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
2
46
|
export { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan };
|
package/dist/plan/misc.d.mts
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Ok } from "../internal/models/result.model.mjs";
|
|
2
|
+
//#region src/plan/misc.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Create an immediately failing plan
|
|
5
|
+
*
|
|
6
|
+
* @param reason Failure reason
|
|
7
|
+
* @returns Plan failure
|
|
8
|
+
*/
|
|
9
|
+
export declare function fail<Reason>(reason: Reason): Generator<Reason, void>;
|
|
10
|
+
/**
|
|
11
|
+
* Create an immediately succeeding plan
|
|
12
|
+
*
|
|
13
|
+
* @param value Success value
|
|
14
|
+
* @returns Plan success
|
|
15
|
+
*/
|
|
16
|
+
export declare function succeed<Value>(value: Value): Generator<never, Value>;
|
|
17
|
+
export declare function succeedResult<Returned>(value: Returned): Generator<never, Ok<Returned>>;
|
|
18
|
+
export declare namespace succeed {
|
|
19
|
+
export var result: typeof succeedResult;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
package/dist/plan/misc.mjs
CHANGED
|
@@ -1,2 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ok } from "../internal/result/misc.mjs";
|
|
2
|
+
//#region src/plan/misc.ts
|
|
3
|
+
/**
|
|
4
|
+
* Create an immediately failing plan
|
|
5
|
+
*
|
|
6
|
+
* @param reason Failure reason
|
|
7
|
+
* @returns Plan failure
|
|
8
|
+
*/
|
|
9
|
+
function fail(reason) {
|
|
10
|
+
return (function* () {
|
|
11
|
+
throw reason;
|
|
12
|
+
})();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create an immediately succeeding plan
|
|
16
|
+
*
|
|
17
|
+
* @param value Success value
|
|
18
|
+
* @returns Plan success
|
|
19
|
+
*/
|
|
20
|
+
function succeed(value) {
|
|
21
|
+
return (function* () {
|
|
22
|
+
return value;
|
|
23
|
+
})();
|
|
24
|
+
}
|
|
25
|
+
function succeedResult(value) {
|
|
26
|
+
return (function* () {
|
|
27
|
+
return ok(value);
|
|
28
|
+
})();
|
|
29
|
+
}
|
|
30
|
+
succeed.result = succeedResult;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { fail, succeed, succeedResult };
|
package/dist/plan/result.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from "../internal/models/result.model.mjs";
|
|
2
|
-
import { AsyncPlan, InternalPlan, Plan, PlanError,
|
|
2
|
+
import { AsyncPlan, InternalAsyncPlan, InternalPlan, Plan, PlanError, PlanOk } from "../internal/models/plan.model.mjs";
|
|
3
3
|
//#region src/plan/result.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Attempt to run the generator to completion
|
|
@@ -8,7 +8,7 @@ import { AsyncPlan, InternalPlan, Plan, PlanError, PlanResult } from "../interna
|
|
|
8
8
|
*
|
|
9
9
|
* @returns Promised result
|
|
10
10
|
*/
|
|
11
|
-
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned
|
|
11
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>, ...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
12
12
|
/**
|
|
13
13
|
* Attempt to run the plan to completion
|
|
14
14
|
*
|
|
@@ -16,7 +16,7 @@ export declare function asyncAttemptRun<Yielded, Returned, Parameters extends un
|
|
|
16
16
|
*
|
|
17
17
|
* @returns Promised result
|
|
18
18
|
*/
|
|
19
|
-
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<
|
|
19
|
+
export declare function asyncAttemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<Result<PlanOk<Returned>, PlanError<Yielded, Returned>>>;
|
|
20
20
|
/**
|
|
21
21
|
* Attempt to run the generator to completion
|
|
22
22
|
*
|
|
@@ -24,7 +24,7 @@ export declare function asyncAttemptRun<Yielded, Returned, Parameters extends un
|
|
|
24
24
|
*
|
|
25
25
|
* @returns Result
|
|
26
26
|
*/
|
|
27
|
-
export declare function attemptRun<Yielded, Returned>(generator: () => Generator<Yielded, Returned
|
|
27
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>, ...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
28
28
|
/**
|
|
29
29
|
* Attempt to run the plan to completion
|
|
30
30
|
*
|
|
@@ -32,8 +32,8 @@ export declare function attemptRun<Yielded, Returned>(generator: () => Generator
|
|
|
32
32
|
*
|
|
33
33
|
* @returns Result
|
|
34
34
|
*/
|
|
35
|
-
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<
|
|
36
|
-
export declare function attemptRunAsyncPlan(this:
|
|
35
|
+
export declare function attemptRun<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): Result<PlanOk<Returned>, PlanError<Yielded, Returned>>;
|
|
36
|
+
export declare function attemptRunAsyncPlan(this: InternalAsyncPlan, ...parameters: unknown[]): Promise<unknown>;
|
|
37
37
|
export declare function attemptRunPlan(this: InternalPlan, ...parameters: unknown[]): unknown;
|
|
38
38
|
export declare namespace attemptRun {
|
|
39
39
|
export var async: typeof asyncAttemptRun;
|
package/dist/plan/result.mjs
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
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 "
|
|
2
|
+
import { PLAN_MESSAGE_RUN_INPUT, PLAN_SYMBOL } from "../internal/models/plan.model.mjs";
|
|
3
|
+
import { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan } from "./is.mjs";
|
|
4
4
|
import { asyncGenerate, generate } from "./generate.mjs";
|
|
5
5
|
//#region src/plan/result.ts
|
|
6
6
|
function asyncAttemptRun(input, ...parameters) {
|
|
7
7
|
if (isAsyncPlan(input)) return input.attempt(...parameters);
|
|
8
|
-
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters));
|
|
8
|
+
if (isAsyncGenerator(input)) return asyncAttempt(() => asyncGenerate(input, parameters, true));
|
|
9
9
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
10
10
|
}
|
|
11
11
|
function attemptRun(input, ...parameters) {
|
|
12
12
|
if (isPlan(input)) return input.attempt(...parameters);
|
|
13
|
-
if (isGenerator(input)) return attempt(() => generate(input, parameters));
|
|
13
|
+
if (isGenerator(input)) return attempt(() => generate(input, parameters, true));
|
|
14
14
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
15
15
|
}
|
|
16
16
|
function attemptRunAsyncPlan(...parameters) {
|
|
17
|
-
return asyncAttempt(() => this.
|
|
17
|
+
return asyncAttempt(() => asyncGenerate(this[PLAN_SYMBOL].generator, parameters, true));
|
|
18
18
|
}
|
|
19
19
|
function attemptRunPlan(...parameters) {
|
|
20
|
-
return attempt(() => this.
|
|
20
|
+
return attempt(() => generate(this[PLAN_SYMBOL].generator, parameters, true));
|
|
21
21
|
}
|
|
22
22
|
attemptRun.async = asyncAttemptRun;
|
|
23
23
|
//#endregion
|
package/dist/plan/run.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AsyncPlan, InternalAsyncPlan, InternalPlan, Plan,
|
|
1
|
+
import { AsyncPlan, InternalAsyncPlan, InternalPlan, Plan, PlanReturned } from "../internal/models/plan.model.mjs";
|
|
2
2
|
import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
3
3
|
//#region src/plan/run.d.ts
|
|
4
4
|
/**
|
|
@@ -7,28 +7,28 @@ import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
|
7
7
|
* @param generator Generator to run
|
|
8
8
|
* @returns Result
|
|
9
9
|
*/
|
|
10
|
-
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned
|
|
10
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => AsyncGenerator<Yielded, Returned>, ...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
11
11
|
/**
|
|
12
12
|
* Run an asynchronous plan to completion
|
|
13
13
|
*
|
|
14
14
|
* @param plan Plan to run
|
|
15
15
|
* @returns Result
|
|
16
16
|
*/
|
|
17
|
-
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<
|
|
17
|
+
export declare function asyncRun<Yielded, Returned, Parameters extends unknown[]>(plan: AsyncPlan<Yielded, Returned, Parameters>, ...parameters: Parameters): Promise<PlanReturned<Returned>>;
|
|
18
18
|
/**
|
|
19
19
|
* Run a generator to completion
|
|
20
20
|
*
|
|
21
21
|
* @param generator Generator to run
|
|
22
22
|
* @returns Result
|
|
23
23
|
*/
|
|
24
|
-
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned
|
|
24
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(generator: (...parameters: Parameters) => Generator<Yielded, Returned>, ...parameters: Parameters): PlanReturned<Returned>;
|
|
25
25
|
/**
|
|
26
26
|
* Run a plan to completion
|
|
27
27
|
*
|
|
28
28
|
* @param plan Plan to run
|
|
29
29
|
* @returns Result
|
|
30
30
|
*/
|
|
31
|
-
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters):
|
|
31
|
+
export declare function run<Yielded, Returned, Parameters extends unknown[]>(plan: Plan<Yielded, Returned, Parameters>, ...parameters: Parameters): PlanReturned<Returned>;
|
|
32
32
|
export declare function runAsyncPlan(this: InternalAsyncPlan, ...parameters: unknown[]): Promise<unknown>;
|
|
33
33
|
export declare function runPlan(this: InternalPlan, ...parameters: unknown[]): unknown;
|
|
34
34
|
export declare namespace asyncRun {
|
package/dist/plan/run.mjs
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { PLAN_MESSAGE_RUN_INPUT, PLAN_SYMBOL } from "../internal/models/plan.model.mjs";
|
|
2
|
-
import { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan } from "
|
|
2
|
+
import { isAsyncGenerator, isAsyncPlan, isGenerator, isPlan } from "./is.mjs";
|
|
3
3
|
import { asyncGenerate, generate } from "./generate.mjs";
|
|
4
4
|
import { asyncAttemptRun, attemptRun } from "./result.mjs";
|
|
5
5
|
//#region src/plan/run.ts
|
|
6
6
|
function asyncRun(input, ...parameters) {
|
|
7
7
|
if (isAsyncPlan(input)) return input.run(...parameters);
|
|
8
|
-
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters);
|
|
8
|
+
if (isAsyncGenerator(input)) return asyncGenerate(input, parameters, false);
|
|
9
9
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
10
10
|
}
|
|
11
11
|
function run(input, ...parameters) {
|
|
12
12
|
if (isPlan(input)) return input.run(...parameters);
|
|
13
|
-
if (isGenerator(input)) return generate(input, parameters);
|
|
13
|
+
if (isGenerator(input)) return generate(input, parameters, false);
|
|
14
14
|
throw new Error(PLAN_MESSAGE_RUN_INPUT);
|
|
15
15
|
}
|
|
16
16
|
function runAsyncPlan(...parameters) {
|
|
17
|
-
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters);
|
|
17
|
+
return asyncGenerate(this[PLAN_SYMBOL].generator, parameters, false);
|
|
18
18
|
}
|
|
19
19
|
function runPlan(...parameters) {
|
|
20
|
-
return generate(this[PLAN_SYMBOL].generator, parameters);
|
|
20
|
+
return generate(this[PLAN_SYMBOL].generator, parameters, false);
|
|
21
21
|
}
|
|
22
22
|
asyncRun.attempt = asyncAttemptRun;
|
|
23
23
|
run.async = asyncRun;
|
|
@@ -72,7 +72,7 @@ export type PromiseStrategy = "complete" | "first";
|
|
|
72
72
|
export declare class PromiseTimeoutError extends Error {
|
|
73
73
|
constructor();
|
|
74
74
|
}
|
|
75
|
-
export type PromisesItems<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Promise<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Promise<Value> : Promise<Items[ItemsKey]>; };
|
|
75
|
+
export type PromisesItems<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Promise<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Promise<Value> : Promise<Items[ItemsKey]>; } extends (infer Result) ? Result : never;
|
|
76
76
|
/**
|
|
77
77
|
* Options for handling multiple _Promises_
|
|
78
78
|
*/
|
|
@@ -87,9 +87,9 @@ export type PromisesOptions = {
|
|
|
87
87
|
strategy?: PromiseStrategy;
|
|
88
88
|
};
|
|
89
89
|
export type PromisesResult<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? Result<Awaited<Value>> : never; };
|
|
90
|
-
export type PromisesUnwrapped<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Awaited<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Awaited<Value> : never; };
|
|
91
|
-
export type PromisesValue<Value> = FulfilledPromise<Value> | RejectedPromise;
|
|
92
|
-
export type PromisesValues<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? PromisesValue<Awaited<Value>> : never; };
|
|
90
|
+
export type PromisesUnwrapped<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends GenericCallback ? ReturnType<Items[ItemsKey]> extends Promise<infer Value> ? Awaited<Value> : never : Items[ItemsKey] extends Promise<infer Value> ? Awaited<Value> : never; } extends (infer Result) ? Result : never;
|
|
91
|
+
export type PromisesValue<Value> = (FulfilledPromise<Value> | RejectedPromise);
|
|
92
|
+
export type PromisesValues<Items extends ArrayOrPlainObject> = { [ItemsKey in keyof Items]: Items[ItemsKey] extends Promise<infer Value> ? PromisesValue<Awaited<Value>> : never; } extends (infer Result) ? Result : never;
|
|
93
93
|
/**
|
|
94
94
|
* A _Promise_ that was rejected
|
|
95
95
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isError, isOk } from "../../internal/result/misc.mjs";
|
|
2
2
|
import { asyncAttempt, attempt } from "../../internal/result/attempt.mjs";
|
|
3
3
|
import { asyncFlow, flow } from "../../internal/function/work.mjs";
|
|
4
|
-
import "../index.mjs";
|
|
5
4
|
//#region src/result/work/flow.ts
|
|
6
5
|
function attemptAsyncFlow(...fns) {
|
|
7
6
|
let Flow;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isError, isOk } from "../../internal/result/misc.mjs";
|
|
2
2
|
import { asyncAttempt, attempt } from "../../internal/result/attempt.mjs";
|
|
3
3
|
import { asyncPipe, pipe } from "../../internal/function/work.mjs";
|
|
4
|
-
import "../index.mjs";
|
|
5
4
|
//#region src/result/work/pipe.ts
|
|
6
5
|
async function attemptAsyncPipe(initial, first, ...seconds) {
|
|
7
6
|
return asyncAttempt(() => {
|
package/dist/value/shake.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { PlainObject } from "../models.mjs";
|
|
1
|
+
import { PlainObject, Simplify } from "../models.mjs";
|
|
2
2
|
//#region src/value/shake.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* A shaken object, without any `undefined` values
|
|
5
5
|
*/
|
|
6
|
-
export type Shaken<Value extends PlainObject> = { [Key in keyof Value]: Value[Key] extends undefined ? never : Value[Key]
|
|
6
|
+
export type Shaken<Value extends PlainObject> = Simplify<{ [Key in keyof Value as undefined extends Value[Key] ? never : Key]: Value[Key]; } & { [Key in keyof Value as undefined extends Value[Key] ? [Value[Key]] extends [undefined] ? never : Key : never]?: Exclude<Value[Key], undefined>; }>;
|
|
7
7
|
/**
|
|
8
8
|
* Shake an object, removing all keys with `undefined` values
|
|
9
9
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oscarpalmer/atoms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.213.0",
|
|
4
4
|
"description": "Atomic utilities for making your JavaScript better.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"array",
|
|
@@ -295,6 +295,7 @@
|
|
|
295
295
|
"default": "./dist/value/transform.mjs"
|
|
296
296
|
}
|
|
297
297
|
},
|
|
298
|
+
"sideEffects": false,
|
|
298
299
|
"scripts": {
|
|
299
300
|
"build": "npx vp pack && npm run tsdown:build",
|
|
300
301
|
"tsdown:build": "npx tsdown -c ./tsdown.config.ts",
|
package/dist/internal/plan.d.mts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { AsyncPlan, Plan } from "./models/plan.model.mjs";
|
|
2
|
-
//#region src/internal/plan.d.ts
|
|
3
|
-
/**
|
|
4
|
-
* Create an immediately failing generator
|
|
5
|
-
*
|
|
6
|
-
* @param reason Failure reason
|
|
7
|
-
* @returns Failing generator
|
|
8
|
-
*/
|
|
9
|
-
export declare function fail<Reason>(reason: Reason): Generator<unknown, never>;
|
|
10
|
-
/**
|
|
11
|
-
* Is the value an asynchronous generator function?
|
|
12
|
-
*
|
|
13
|
-
* @param value Value to check
|
|
14
|
-
* @returns `true` if the value is an asynchronous generator function, otherwise `false`
|
|
15
|
-
*/
|
|
16
|
-
export declare function isAsyncGenerator(value: unknown): value is () => AsyncGenerator;
|
|
17
|
-
/**
|
|
18
|
-
* Is the value an asynchronous plan?
|
|
19
|
-
*
|
|
20
|
-
* @param value Value to check
|
|
21
|
-
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
22
|
-
*/
|
|
23
|
-
export declare function isAsyncPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is AsyncPlan<Yielded, Returned, Parameters>;
|
|
24
|
-
/**
|
|
25
|
-
* Is the value a generator function?
|
|
26
|
-
*
|
|
27
|
-
* @param value Value to check
|
|
28
|
-
* @returns `true` if the value is a generator function, otherwise `false`
|
|
29
|
-
*/
|
|
30
|
-
export declare function isGenerator(value: unknown): value is () => Generator;
|
|
31
|
-
/**
|
|
32
|
-
* Is the value a plan?
|
|
33
|
-
*
|
|
34
|
-
* @param value Value to check
|
|
35
|
-
* @returns `true` if the value is a plan, otherwise `false`
|
|
36
|
-
*/
|
|
37
|
-
export declare function isPlan<Yielded = unknown, Returned = unknown, Parameters extends unknown[] = unknown[]>(value: unknown): value is Plan<Yielded, Returned, Parameters>;
|
|
38
|
-
/**
|
|
39
|
-
* Create an immediately succeeding generator
|
|
40
|
-
*
|
|
41
|
-
* @param value Success value
|
|
42
|
-
* @returns Succeeding generator
|
|
43
|
-
*/
|
|
44
|
-
export declare function succeed<Value>(value: Value): Generator<unknown, Value>;
|
|
45
|
-
//#endregion
|
package/dist/internal/plan.mjs
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { GENERATOR_NAME_ASYNC, GENERATOR_NAME_SYNC, PLAN_SYMBOL, PLAN_TYPE_PLAN_ASYNC, PLAN_TYPE_PLAN_SYNC } from "./models/plan.model.mjs";
|
|
2
|
-
//#region src/internal/plan.ts
|
|
3
|
-
/**
|
|
4
|
-
* Create an immediately failing generator
|
|
5
|
-
*
|
|
6
|
-
* @param reason Failure reason
|
|
7
|
-
* @returns Failing generator
|
|
8
|
-
*/
|
|
9
|
-
function fail(reason) {
|
|
10
|
-
return (function* () {
|
|
11
|
-
yield;
|
|
12
|
-
throw reason;
|
|
13
|
-
})();
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Is the value an asynchronous generator function?
|
|
17
|
-
*
|
|
18
|
-
* @param value Value to check
|
|
19
|
-
* @returns `true` if the value is an asynchronous generator function, otherwise `false`
|
|
20
|
-
*/
|
|
21
|
-
function isAsyncGenerator(value) {
|
|
22
|
-
return isGeneratorInstance(GENERATOR_NAME_ASYNC, value);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Is the value an asynchronous plan?
|
|
26
|
-
*
|
|
27
|
-
* @param value Value to check
|
|
28
|
-
* @returns `true` if the value is an asynchronous plan, otherwise `false`
|
|
29
|
-
*/
|
|
30
|
-
function isAsyncPlan(value) {
|
|
31
|
-
return isPlanInstance(PLAN_TYPE_PLAN_ASYNC, value);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Is the value a generator function?
|
|
35
|
-
*
|
|
36
|
-
* @param value Value to check
|
|
37
|
-
* @returns `true` if the value is a generator function, otherwise `false`
|
|
38
|
-
*/
|
|
39
|
-
function isGenerator(value) {
|
|
40
|
-
return isGeneratorInstance(GENERATOR_NAME_SYNC, value);
|
|
41
|
-
}
|
|
42
|
-
function isGeneratorInstance(name, value) {
|
|
43
|
-
return typeof value === "function" && value !== null && value.constructor.name === name && typeof value.prototype.next === "function" && typeof value.prototype.return === "function" && typeof value.prototype.throw === "function";
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Is the value a plan?
|
|
47
|
-
*
|
|
48
|
-
* @param value Value to check
|
|
49
|
-
* @returns `true` if the value is a plan, otherwise `false`
|
|
50
|
-
*/
|
|
51
|
-
function isPlan(value) {
|
|
52
|
-
return isPlanInstance(PLAN_TYPE_PLAN_SYNC, value);
|
|
53
|
-
}
|
|
54
|
-
function isPlanInstance(type, value) {
|
|
55
|
-
return typeof value === "object" && value !== null && PLAN_SYMBOL in value && value[PLAN_SYMBOL].type === type;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create an immediately succeeding generator
|
|
59
|
-
*
|
|
60
|
-
* @param value Success value
|
|
61
|
-
* @returns Succeeding generator
|
|
62
|
-
*/
|
|
63
|
-
function succeed(value) {
|
|
64
|
-
return (function* () {
|
|
65
|
-
yield;
|
|
66
|
-
return value;
|
|
67
|
-
})();
|
|
68
|
-
}
|
|
69
|
-
//#endregion
|
|
70
|
-
export { fail, isAsyncGenerator, isAsyncPlan, isGenerator, isPlan, succeed };
|