@duplojs/lang 0.0.1-beta.1 → 0.0.1-beta.2
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/at/default.d.ts +1 -1
- package/dist/array/chunk.d.ts +3 -2
- package/dist/array/concat.d.ts +1 -1
- package/dist/array/copyWithin.d.ts +1 -1
- package/dist/array/fill/all.d.ts +1 -1
- package/dist/array/fill/default.d.ts +3 -3
- package/dist/array/filter.d.ts +1 -1
- package/dist/array/findAndReplace.d.ts +1 -1
- package/dist/array/findAndSplice/delete.d.ts +1 -1
- package/dist/array/findAndSplice/insert.d.ts +1 -1
- package/dist/array/insert.d.ts +3 -3
- package/dist/array/length.d.ts +1 -1
- package/dist/array/lengthEqual.d.ts +1 -1
- package/dist/array/map.d.ts +1 -1
- package/dist/array/maxElements.d.ts +1 -1
- package/dist/array/minElements.d.ts +1 -1
- package/dist/array/pop.d.ts +1 -1
- package/dist/array/prepend.d.ts +1 -1
- package/dist/array/push.d.ts +3 -3
- package/dist/array/reverse.d.ts +1 -1
- package/dist/array/shift.d.ts +1 -1
- package/dist/array/sort.d.ts +1 -1
- package/dist/array/splice/delete.d.ts +1 -1
- package/dist/array/splice/insert.d.ts +1 -1
- package/dist/array/unshift.d.ts +3 -3
- package/dist/common/types/index.d.ts +1 -0
- package/dist/common/types/splitPromise.d.ts +1 -0
- package/dist/dataStructure/common/codec.cjs +5 -4
- package/dist/dataStructure/common/codec.d.ts +2 -2
- package/dist/dataStructure/common/codec.mjs +5 -4
- package/dist/dataStructure/common/error.cjs +34 -16
- package/dist/dataStructure/common/error.d.ts +29 -11
- package/dist/dataStructure/common/error.mjs +32 -17
- package/dist/dataStructure/common/errorInterpreter.cjs +45 -0
- package/dist/dataStructure/common/errorInterpreter.d.ts +32 -0
- package/dist/dataStructure/common/errorInterpreter.mjs +45 -0
- package/dist/dataStructure/common/index.d.ts +1 -0
- package/dist/dataStructure/constraint/base.cjs +16 -3
- package/dist/dataStructure/constraint/base.d.ts +8 -4
- package/dist/dataStructure/constraint/base.mjs +16 -3
- package/dist/dataStructure/constraint/defaults/allowedCharacters.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/allowedCharacters.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/arrayLengthEqual.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/arrayLengthEqual.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/betweenThan.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/betweenThan.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/betweenThanOrEqual.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/betweenThanOrEqual.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/email.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/email.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/even.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/even.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/greaterThan.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/greaterThan.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/greaterThanOrEqual.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/greaterThanOrEqual.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/index.d.ts +1 -0
- package/dist/dataStructure/constraint/defaults/integer.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/integer.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/lessThan.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/lessThan.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/lessThanOrEqual.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/lessThanOrEqual.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/maxCharacters.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/maxCharacters.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/maxElements.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/maxElements.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/minCharacters.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/minCharacters.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/minElements.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/minElements.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/multipleOf.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/multipleOf.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/negative.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/negative.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/notEmpty.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/notEmpty.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/notZero.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/notZero.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/odd.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/odd.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/positive.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/positive.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/refine.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/refine.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/safe.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/safe.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/strictNegative.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/strictNegative.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/strictPositive.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/strictPositive.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/stringLengthEqual.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/stringLengthEqual.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/trimmed.cjs +13 -0
- package/dist/dataStructure/constraint/defaults/trimmed.d.ts +10 -0
- package/dist/dataStructure/constraint/defaults/trimmed.mjs +12 -0
- package/dist/dataStructure/constraint/defaults/url.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/url.mjs +1 -1
- package/dist/dataStructure/constraint/defaults/uuid.cjs +1 -1
- package/dist/dataStructure/constraint/defaults/uuid.mjs +1 -1
- package/dist/dataStructure/fundamentalType/base.cjs +3 -3
- package/dist/dataStructure/fundamentalType/base.d.ts +4 -5
- package/dist/dataStructure/fundamentalType/base.mjs +3 -3
- package/dist/dataStructure/fundamentalType/defaults/bigint.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/bigint.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/bigint.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/boolean.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/boolean.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/boolean.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/date.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/date.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/date.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/null.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/null.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/null.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/number.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/number.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/number.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/string.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/string.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/string.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/time.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/time.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/time.mjs +5 -2
- package/dist/dataStructure/fundamentalType/defaults/undefined.cjs +4 -2
- package/dist/dataStructure/fundamentalType/defaults/undefined.d.ts +4 -4
- package/dist/dataStructure/fundamentalType/defaults/undefined.mjs +5 -2
- package/dist/dataStructure/fundamentalType/identifier.d.ts +2 -2
- package/dist/dataStructure/helpers/array.d.ts +1 -1
- package/dist/dataStructure/helpers/bigint.d.ts +1 -1
- package/dist/dataStructure/helpers/boolean.d.ts +1 -1
- package/dist/dataStructure/helpers/date.d.ts +1 -1
- package/dist/dataStructure/helpers/index.d.ts +1 -0
- package/dist/dataStructure/helpers/lazy.d.ts +1 -1
- package/dist/dataStructure/helpers/null.d.ts +1 -1
- package/dist/dataStructure/helpers/number.d.ts +1 -1
- package/dist/dataStructure/helpers/object.d.ts +1 -1
- package/dist/dataStructure/helpers/record.d.ts +1 -1
- package/dist/dataStructure/helpers/string.d.ts +1 -1
- package/dist/dataStructure/helpers/time.d.ts +1 -1
- package/dist/dataStructure/helpers/trimmed.cjs +7 -0
- package/dist/dataStructure/helpers/trimmed.d.ts +2 -0
- package/dist/dataStructure/helpers/trimmed.mjs +7 -0
- package/dist/dataStructure/helpers/undefined.d.ts +1 -1
- package/dist/dataStructure/helpers/union.d.ts +1 -1
- package/dist/dataStructure/index.cjs +38 -0
- package/dist/dataStructure/index.mjs +31 -10
- package/dist/dataStructure/structure/base.cjs +15 -5
- package/dist/dataStructure/structure/base.d.ts +7 -4
- package/dist/dataStructure/structure/base.mjs +15 -5
- package/dist/dataStructure/structure/defaults/array.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/index.d.ts +1 -0
- package/dist/dataStructure/structure/defaults/lazy.cjs +4 -2
- package/dist/dataStructure/structure/defaults/lazy.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/lazy.mjs +4 -2
- package/dist/dataStructure/structure/defaults/nonEncodableString.cjs +17 -0
- package/dist/dataStructure/structure/defaults/nonEncodableString.d.ts +10 -0
- package/dist/dataStructure/structure/defaults/nonEncodableString.mjs +16 -0
- package/dist/dataStructure/structure/defaults/object.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/record.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/type.cjs +1 -1
- package/dist/dataStructure/structure/defaults/type.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/type.mjs +2 -2
- package/dist/dataStructure/structure/defaults/union.cjs +9 -9
- package/dist/dataStructure/structure/defaults/union.d.ts +1 -1
- package/dist/dataStructure/structure/defaults/union.mjs +9 -9
- package/dist/dataStructure/structure/identifier.d.ts +2 -2
- package/dist/dataStructure/structure/types/constraintsValue.d.ts +1 -1
- package/dist/dataStructure/structure/types/structures.d.ts +2 -1
- package/dist/dataStructure/structure/types/value.d.ts +1 -1
- package/dist/dataStructure/type/base.cjs +17 -4
- package/dist/dataStructure/type/base.d.ts +7 -3
- package/dist/dataStructure/type/base.mjs +17 -4
- package/dist/dataStructure/type/defaults/bigintLiteral.cjs +1 -1
- package/dist/dataStructure/type/defaults/bigintLiteral.mjs +1 -1
- package/dist/dataStructure/type/defaults/booleanLiteral.cjs +1 -1
- package/dist/dataStructure/type/defaults/booleanLiteral.mjs +1 -1
- package/dist/dataStructure/type/defaults/numberLiteral.cjs +1 -1
- package/dist/dataStructure/type/defaults/numberLiteral.mjs +1 -1
- package/dist/dataStructure/type/defaults/stringLiteral.cjs +1 -1
- package/dist/dataStructure/type/defaults/stringLiteral.mjs +1 -1
- package/dist/dataStructure/type/identifier.d.ts +2 -2
- package/dist/generator/asyncChunk.d.ts +3 -2
- package/dist/generator/chunk.d.ts +3 -2
- package/dist/generator/types/flat.d.ts +2 -2
- package/dist/invocation/flow/base.d.ts +7 -2
- package/dist/invocation/flow/controller/base.d.ts +1 -0
- package/dist/invocation/flow/controller/defaults/aborter.cjs +35 -0
- package/dist/invocation/flow/controller/defaults/aborter.d.ts +14 -0
- package/dist/invocation/flow/controller/defaults/aborter.mjs +33 -0
- package/dist/invocation/flow/controller/defaults/filter.cjs +5 -3
- package/dist/invocation/flow/controller/defaults/filter.d.ts +1 -1
- package/dist/invocation/flow/controller/defaults/filter.mjs +5 -3
- package/dist/invocation/flow/controller/defaults/index.d.ts +1 -0
- package/dist/invocation/index.cjs +7 -0
- package/dist/invocation/index.mjs +5 -1
- package/dist/kind/types/getName.d.ts +2 -0
- package/dist/kind/types/getNamespaceName.d.ts +3 -0
- package/dist/kind/types/index.d.ts +2 -0
- package/dist/kind/types/remove.d.ts +2 -2
- package/dist/modeling/entity/base.cjs +2 -2
- package/dist/modeling/entity/base.d.ts +14 -10
- package/dist/modeling/entity/base.mjs +2 -2
- package/dist/modeling/entity/index.d.ts +0 -1
- package/dist/modeling/index.cjs +17 -6
- package/dist/modeling/index.d.ts +1 -0
- package/dist/modeling/index.mjs +11 -5
- package/dist/modeling/newType/base.cjs +6 -3
- package/dist/modeling/newType/base.mjs +6 -3
- package/dist/modeling/taggedObject/base.cjs +23 -0
- package/dist/modeling/taggedObject/base.d.ts +32 -0
- package/dist/modeling/taggedObject/base.mjs +21 -0
- package/dist/modeling/taggedObject/helper.cjs +29 -0
- package/dist/modeling/taggedObject/helper.d.ts +14 -0
- package/dist/modeling/taggedObject/helper.mjs +26 -0
- package/dist/modeling/taggedObject/index.d.ts +2 -0
- package/dist/number/betweenThan.d.ts +2 -2
- package/dist/number/betweenThanOrEqual.d.ts +2 -2
- package/dist/number/greaterThan.d.ts +1 -1
- package/dist/number/greaterThanOrEqual.d.ts +1 -1
- package/dist/number/lessThan.d.ts +1 -1
- package/dist/number/lessThanOrEqual.d.ts +1 -1
- package/dist/number/sort.d.ts +1 -1
- package/dist/pattern/index.cjs +12 -0
- package/dist/pattern/index.d.ts +4 -0
- package/dist/pattern/index.mjs +9 -1
- package/dist/pattern/matchWithEntity.cjs +12 -0
- package/dist/pattern/matchWithEntity.d.ts +12 -0
- package/dist/pattern/matchWithEntity.mjs +12 -0
- package/dist/pattern/matchWithEntityOtherwise.cjs +13 -0
- package/dist/pattern/matchWithEntityOtherwise.d.ts +14 -0
- package/dist/pattern/matchWithEntityOtherwise.mjs +13 -0
- package/dist/pattern/matchWithNumberOtherwise.cjs +2 -6
- package/dist/pattern/matchWithNumberOtherwise.mjs +2 -6
- package/dist/pattern/matchWithStringOtherwise.cjs +2 -6
- package/dist/pattern/matchWithStringOtherwise.d.ts +1 -1
- package/dist/pattern/matchWithStringOtherwise.mjs +2 -6
- package/dist/pattern/matchWithTaggedObject.cjs +12 -0
- package/dist/pattern/matchWithTaggedObject.d.ts +12 -0
- package/dist/pattern/matchWithTaggedObject.mjs +12 -0
- package/dist/pattern/matchWithTaggedObjectOtherwise.cjs +13 -0
- package/dist/pattern/matchWithTaggedObjectOtherwise.d.ts +14 -0
- package/dist/pattern/matchWithTaggedObjectOtherwise.mjs +13 -0
- package/dist/string/at.d.ts +2 -2
- package/dist/string/first.d.ts +1 -1
- package/dist/string/index.cjs +3 -0
- package/dist/string/index.mjs +3 -1
- package/dist/string/last.d.ts +1 -1
- package/dist/string/lengthEqual.d.ts +1 -1
- package/dist/string/maxCharacters.d.ts +1 -1
- package/dist/string/minCharacters.d.ts +1 -1
- package/dist/string/padEnd.d.ts +1 -1
- package/dist/string/padStart.d.ts +1 -1
- package/dist/string/pop.d.ts +1 -1
- package/dist/string/shift.d.ts +1 -1
- package/dist/string/slice.d.ts +1 -1
- package/dist/string/substring.d.ts +1 -1
- package/dist/string/trim/default.d.ts +1 -1
- package/dist/string/trim/end.d.ts +1 -1
- package/dist/string/trim/index.d.ts +1 -0
- package/dist/string/trim/is.cjs +6 -0
- package/dist/string/trim/is.d.ts +2 -0
- package/dist/string/trim/is.mjs +6 -0
- package/dist/string/trim/start.d.ts +1 -1
- package/package.json +1 -1
- package/dist/modeling/entity/entityName.cjs +0 -13
- package/dist/modeling/entity/entityName.d.ts +0 -13
- package/dist/modeling/entity/entityName.mjs +0 -13
|
@@ -7,15 +7,16 @@ import * as DCommon from '../../common';
|
|
|
7
7
|
export declare class StructureClass {
|
|
8
8
|
private constructor();
|
|
9
9
|
static init(params: DKind.Remove<Structure>): Structure;
|
|
10
|
-
static addToPrototype<GenericProp extends keyof Structure>(prop: GenericProp, value: Structure[GenericProp]): void;
|
|
10
|
+
static addToPrototype<GenericProp extends keyof Structure>(prop: GenericProp, value: Structure[GenericProp] extends infer InferredValue ? InferredValue extends DCommon.AnyFunction ? (self: Structure, ...rest: Parameters<InferredValue>) => ReturnType<InferredValue> : Structure[GenericProp] : never): void;
|
|
11
11
|
}
|
|
12
12
|
export declare const structureKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/structure", unknown>>;
|
|
13
13
|
export interface StructureDefinition<GenericConstraints extends readonly Constraint<any>[] = readonly Constraint<any>[]> {
|
|
14
|
+
readonly message?: string;
|
|
14
15
|
readonly constraints: readonly [...GenericConstraints];
|
|
15
16
|
}
|
|
16
17
|
export interface Structure<GenericValue extends unknown = unknown, GenericDefinition extends StructureDefinition<readonly Constraint<GenericValue>[]> = StructureDefinition<readonly Constraint<GenericValue>[]>> extends DKind.Kind<typeof structureKind, (GenericValue & StructureConstraintsValue<GenericDefinition["constraints"][number]>)> {
|
|
17
18
|
readonly definition: GenericDefinition;
|
|
18
|
-
addConstraint<const GenericNewConstraints extends DCommon.AnyTuple<Constraint<GenericValue>>>(...args: DCommon.FixDeepFunctionInfer<DCommon.AnyTuple<Constraint<GenericValue>>, GenericNewConstraints>): Structure<
|
|
19
|
+
addConstraint<const GenericNewConstraints extends DCommon.AnyTuple<Constraint<GenericValue>>>(...args: DCommon.FixDeepFunctionInfer<DCommon.AnyTuple<Constraint<GenericValue>>, GenericNewConstraints>): Structure<StructureValue<this>, StructureDefinition<readonly [...this["definition"]["constraints"], ...GenericNewConstraints]>>;
|
|
19
20
|
executeConstraints(data: unknown, errorHandler?: GetErrorHandler): DCommon.MaybePromise<SuccessSymbol | ErrorSymbol>;
|
|
20
21
|
executeCheck(data: unknown, errorHandler?: GetErrorHandler): DCommon.MaybePromise<SuccessSymbol | ErrorSymbol>;
|
|
21
22
|
executeEncode(codecContext: CodecContext, data: unknown, errorHandler?: GetErrorHandler): unknown;
|
|
@@ -23,7 +24,7 @@ export interface Structure<GenericValue extends unknown = unknown, GenericDefini
|
|
|
23
24
|
isAsynchronous(): boolean;
|
|
24
25
|
check(data: unknown): (DEither.Right<"check-success", StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"check-error", Error>);
|
|
25
26
|
asyncCheck(data: unknown): Promise<DEither.Right<"check-success", StructureValue<this>> | DEither.Left<"check-error", Error>>;
|
|
26
|
-
is(data: unknown
|
|
27
|
+
is(data: unknown): data is StructureValue<this>;
|
|
27
28
|
encode<GenericCodecs extends Codecs>(codecs: GenericCodecs, data: StructureValue<this>): (DEither.Right<"encode-success", EncodedValue<StructureValue<this>, GenericCodecs>> | DEither.Left<"async-error", undefined> | DEither.Left<"encode-error", Error>);
|
|
28
29
|
asyncEncode<GenericCodecs extends Codecs>(codecs: GenericCodecs, data: StructureValue<this>): Promise<DEither.Right<"encode-success", EncodedValue<StructureValue<this>, GenericCodecs>> | DEither.Left<"encode-error", Error>>;
|
|
29
30
|
unsafeEncode<GenericCodecs extends Codecs>(codecs: GenericCodecs, data: unknown): (DEither.Right<"encode-success", EncodedValue<StructureValue<this>, GenericCodecs>> | DEither.Left<"async-error", undefined> | DEither.Left<"encode-error", Error>);
|
|
@@ -34,6 +35,8 @@ export interface Structure<GenericValue extends unknown = unknown, GenericDefini
|
|
|
34
35
|
asyncUnsafeDecode(codecs: Codecs, data: unknown): Promise<DEither.Right<"decode-success", StructureValue<this>> | DEither.Left<"decode-error", Error>>;
|
|
35
36
|
contract<GenericValue extends unknown, GenericThis extends this>(...args: DCommon.IsEqual<StructureValue<GenericThis>, GenericValue> extends true ? [] : [] & DCommon.ComputedTypeError<"Contract error.">): Structure<GenericValue>;
|
|
36
37
|
clone(): this;
|
|
38
|
+
setMessage(massage: string): this;
|
|
39
|
+
addMessage(massage: string): this;
|
|
37
40
|
}
|
|
38
41
|
export interface CreateStructureInitParams<GenericStructure extends Structure = Structure> {
|
|
39
42
|
executeCheck(self: GenericStructure, data: unknown, errorHandler?: GetErrorHandler): DCommon.MaybePromise<SuccessSymbol | ErrorSymbol>;
|
|
@@ -45,6 +48,6 @@ export type CreateStructureInitRest<GenericStructure extends Structure = Structu
|
|
|
45
48
|
[Prop in Exclude<keyof GenericStructure, keyof Structure>]: GenericStructure[Prop] extends DCommon.AnyFunction ? (self: GenericStructure, ...args: Parameters<GenericStructure[Prop]>) => ReturnType<GenericStructure[Prop]> : GenericStructure[Prop];
|
|
46
49
|
};
|
|
47
50
|
export interface CreateStructureConstructorParams<GenericKindHandler extends DKind.Handler = DKind.Handler> {
|
|
48
|
-
init<GenericStructure extends (Structure & DKind.Kind<GenericKindHandler>)>(definition: GenericStructure["definition"], params: CreateStructureInitParams<GenericStructure>, ...args: DCommon.IsNever<Exclude<keyof GenericStructure, keyof Structure>> extends true ? [] : [rest: CreateStructureInitRest<GenericStructure>]): GenericStructure
|
|
51
|
+
init<GenericStructure extends (Structure & DKind.Kind<GenericKindHandler>)>(definition: GenericStructure["definition"], params: CreateStructureInitParams<GenericStructure>, ...args: DCommon.IsNever<Exclude<keyof GenericStructure, keyof Structure>> extends true ? [] : [rest: CreateStructureInitRest<GenericStructure>]): NoInfer<GenericStructure>;
|
|
49
52
|
}
|
|
50
53
|
export declare function createStructure<GenericKindHandler extends DKind.Handler, GenericConstructor extends ((...args: any[]) => (Structure & DKind.Kind<GenericKindHandler>))>(kindHandler: GenericKindHandler, createConstructor: (params: CreateStructureConstructorParams<GenericKindHandler>) => GenericConstructor): GenericConstructor;
|
|
@@ -2,6 +2,7 @@ import { bindPrototypeMethods } from "../../common/bindPrototypeMethods.mjs";
|
|
|
2
2
|
import { callThen } from "../../common/callThen.mjs";
|
|
3
3
|
import { left } from "../../either/left/create.mjs";
|
|
4
4
|
import { right } from "../../either/right/create.mjs";
|
|
5
|
+
import { simpleClone } from "../../common/simpleClone.mjs";
|
|
5
6
|
import { createKind } from "../kind.mjs";
|
|
6
7
|
import { ErrorSymbol, SuccessSymbol } from "../common/resultSymbol.mjs";
|
|
7
8
|
import { createGetErrorHandler } from "../common/error.mjs";
|
|
@@ -15,7 +16,9 @@ var StructureClass = class StructureClass {
|
|
|
15
16
|
return self;
|
|
16
17
|
}
|
|
17
18
|
static addToPrototype(prop, value) {
|
|
18
|
-
StructureClass.prototype[prop] = value
|
|
19
|
+
StructureClass.prototype[prop] = typeof value === "function" ? function(...args) {
|
|
20
|
+
return value(this, ...args);
|
|
21
|
+
} : value;
|
|
19
22
|
}
|
|
20
23
|
};
|
|
21
24
|
const structureKind = createKind("structure");
|
|
@@ -34,7 +37,7 @@ function createStructure(kindHandler, createConstructor) {
|
|
|
34
37
|
executeDecode,
|
|
35
38
|
isAsynchronous
|
|
36
39
|
}, ...rest),
|
|
37
|
-
executeConstraints: (data, errorHandler) => definition.constraints.reduce((accumulator, constraint) => callThen(accumulator, (result) => result === ErrorSymbol ? ErrorSymbol : constraint.executeCheck(data, errorHandler)), SuccessSymbol),
|
|
40
|
+
executeConstraints: (data, errorHandler) => definition.constraints.reduce((accumulator, constraint) => callThen(accumulator, (result) => result === ErrorSymbol ? ErrorSymbol : callThen(constraint.executeCheck(data), (constraintResult) => constraintResult === ErrorSymbol ? errorHandler?.().addIssue(self, data, constraint) ?? ErrorSymbol : SuccessSymbol)), SuccessSymbol),
|
|
38
41
|
executeCheck: (data, errorHandler) => callThen(executeCheck(self, data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : self.executeConstraints(data, errorHandler)),
|
|
39
42
|
executeEncode: (codecContext, data, errorHandler) => executeEncode(self, codecContext, data, errorHandler),
|
|
40
43
|
executeDecode: (codecContext, data, errorHandler) => executeDecode(self, codecContext, data, errorHandler),
|
|
@@ -58,8 +61,8 @@ function createStructure(kindHandler, createConstructor) {
|
|
|
58
61
|
if (await self.executeCheck(data, errorHandler) === ErrorSymbol) return left("check-error", errorHandler().createError());
|
|
59
62
|
return right("check-success", data);
|
|
60
63
|
},
|
|
61
|
-
is: (data
|
|
62
|
-
const result = self.executeCheck(data
|
|
64
|
+
is: (data) => {
|
|
65
|
+
const result = self.executeCheck(data);
|
|
63
66
|
if (result instanceof Promise || result === ErrorSymbol) return false;
|
|
64
67
|
return true;
|
|
65
68
|
},
|
|
@@ -94,12 +97,19 @@ function createStructure(kindHandler, createConstructor) {
|
|
|
94
97
|
return right("decode-success", result);
|
|
95
98
|
},
|
|
96
99
|
contract: () => self,
|
|
97
|
-
clone: () => init(definition, {
|
|
100
|
+
clone: () => init(simpleClone(definition), {
|
|
98
101
|
executeCheck,
|
|
99
102
|
executeEncode,
|
|
100
103
|
executeDecode,
|
|
101
104
|
isAsynchronous
|
|
102
105
|
}, ...rest),
|
|
106
|
+
setMessage: (message) => {
|
|
107
|
+
self.definition.message = message;
|
|
108
|
+
return self;
|
|
109
|
+
},
|
|
110
|
+
addMessage: (message) => {
|
|
111
|
+
return self.clone().setMessage(message);
|
|
112
|
+
},
|
|
103
113
|
[kindHandler.runTimeKey]: null,
|
|
104
114
|
[structureKind.runTimeKey]: null
|
|
105
115
|
});
|
|
@@ -15,4 +15,4 @@ export interface ArrayStructureDefinition<GenericConstraints extends readonly Co
|
|
|
15
15
|
}
|
|
16
16
|
export interface ArrayStructure<GenericValue extends readonly unknown[] = readonly unknown[], GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, ArrayStructureDefinition<GenericConstraints>> & DKind.Kind<typeof arrayStructureKind>> {
|
|
17
17
|
}
|
|
18
|
-
export declare const ArrayStructure: <GenericElement extends Structure, const GenericConstraints extends readonly Constraint<readonly StructureValue<GenericElement>[]>[]>(element: GenericElement, constraints: GenericConstraints) => ArrayStructure<readonly StructureValue<GenericElement>[], readonly [...GenericConstraints]
|
|
18
|
+
export declare const ArrayStructure: <GenericElement extends Structure, const GenericConstraints extends readonly Constraint<readonly StructureValue<GenericElement>[]>[]>(element: GenericElement, constraints: GenericConstraints) => NoInfer<ArrayStructure<readonly StructureValue<GenericElement>[], readonly [...GenericConstraints]>>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
const require_callThen = require("../../../common/callThen.cjs");
|
|
1
2
|
const require_memo = require("../../../common/memo.cjs");
|
|
2
3
|
const require_kind = require("../../kind.cjs");
|
|
4
|
+
const require_resultSymbol = require("../../common/resultSymbol.cjs");
|
|
3
5
|
const require_base = require("../base.cjs");
|
|
4
6
|
//#region scripts/dataStructure/structure/defaults/lazy.ts
|
|
5
7
|
const lazyStructureKind = require_kind.createKind("lazy-structure");
|
|
@@ -8,8 +10,8 @@ const LazyStructure = require_base.createStructure(lazyStructureKind, ({ init })
|
|
|
8
10
|
constraints
|
|
9
11
|
}, {
|
|
10
12
|
executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
|
|
11
|
-
executeEncode: (self, codecContext, data, errorHandler) => self.definition.getter.value.executeEncode(codecContext, data, errorHandler),
|
|
12
|
-
executeDecode: (self, codecContext, data, errorHandler) => self.definition.getter.value.executeDecode(codecContext, data, errorHandler),
|
|
13
|
+
executeEncode: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.getter.value.executeEncode(codecContext, data, errorHandler), (encodedData) => encodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : encodedData)),
|
|
14
|
+
executeDecode: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.getter.value.executeDecode(codecContext, data, errorHandler), (decodedData) => decodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(decodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : decodedData)),
|
|
13
15
|
isAsynchronous: (self) => self.definition.getter.value.isAsynchronous()
|
|
14
16
|
}));
|
|
15
17
|
//#endregion
|
|
@@ -9,4 +9,4 @@ export interface LazyStructureDefinition<GenericConstraints extends readonly Con
|
|
|
9
9
|
}
|
|
10
10
|
export interface LazyStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, LazyStructureDefinition<GenericConstraints>> & DKind.Kind<typeof lazyStructureKind>> {
|
|
11
11
|
}
|
|
12
|
-
export declare const LazyStructure: <GenericStructure extends Structure, const GenericConstraints extends readonly Constraint<StructureValue<GenericStructure>>[]>(getStructure: () => GenericStructure, constraints: GenericConstraints) => LazyStructure<StructureValue<GenericStructure>, readonly [...GenericConstraints]
|
|
12
|
+
export declare const LazyStructure: <GenericStructure extends Structure, const GenericConstraints extends readonly Constraint<StructureValue<GenericStructure>>[]>(getStructure: () => GenericStructure, constraints: GenericConstraints) => NoInfer<LazyStructure<StructureValue<GenericStructure>, readonly [...GenericConstraints]>>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { callThen } from "../../../common/callThen.mjs";
|
|
1
2
|
import { memo } from "../../../common/memo.mjs";
|
|
2
3
|
import { createKind } from "../../kind.mjs";
|
|
4
|
+
import { ErrorSymbol } from "../../common/resultSymbol.mjs";
|
|
3
5
|
import { createStructure } from "../base.mjs";
|
|
4
6
|
//#region scripts/dataStructure/structure/defaults/lazy.ts
|
|
5
7
|
const lazyStructureKind = createKind("lazy-structure");
|
|
@@ -8,8 +10,8 @@ const LazyStructure = createStructure(lazyStructureKind, ({ init }) => (getStruc
|
|
|
8
10
|
constraints
|
|
9
11
|
}, {
|
|
10
12
|
executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
|
|
11
|
-
executeEncode: (self, codecContext, data, errorHandler) => self.definition.getter.value.executeEncode(codecContext, data, errorHandler),
|
|
12
|
-
executeDecode: (self, codecContext, data, errorHandler) => self.definition.getter.value.executeDecode(codecContext, data, errorHandler),
|
|
13
|
+
executeEncode: (self, codecContext, data, errorHandler) => callThen(self.definition.getter.value.executeEncode(codecContext, data, errorHandler), (encodedData) => encodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : encodedData)),
|
|
14
|
+
executeDecode: (self, codecContext, data, errorHandler) => callThen(self.definition.getter.value.executeDecode(codecContext, data, errorHandler), (decodedData) => decodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(decodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : decodedData)),
|
|
13
15
|
isAsynchronous: (self) => self.definition.getter.value.isAsynchronous()
|
|
14
16
|
}));
|
|
15
17
|
//#endregion
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const require_kind = require("../../kind.cjs");
|
|
2
|
+
const require_resultSymbol = require("../../common/resultSymbol.cjs");
|
|
3
|
+
const require_base = require("../base.cjs");
|
|
4
|
+
//#region scripts/dataStructure/structure/defaults/nonEncodableString.ts
|
|
5
|
+
const nonEncodableStringStructureKind = require_kind.createKind("non-encodable-string-structure");
|
|
6
|
+
const NonEncodableStringStructure = require_base.createStructure(nonEncodableStringStructureKind, ({ init }) => (value) => init({
|
|
7
|
+
value,
|
|
8
|
+
constraints: []
|
|
9
|
+
}, {
|
|
10
|
+
executeCheck: (self, data, errorHandler) => data === self.definition.value ? require_resultSymbol.SuccessSymbol : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
|
|
11
|
+
executeEncode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
|
|
12
|
+
executeDecode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
|
|
13
|
+
isAsynchronous: () => false
|
|
14
|
+
}));
|
|
15
|
+
//#endregion
|
|
16
|
+
exports.NonEncodableStringStructure = NonEncodableStringStructure;
|
|
17
|
+
exports.nonEncodableStringStructureKind = nonEncodableStringStructureKind;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Structure, StructureDefinition } from '../base';
|
|
2
|
+
import type * as DKind from '../../../kind';
|
|
3
|
+
import type * as DCommon from '../../../common';
|
|
4
|
+
export declare const nonEncodableStringStructureKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/non-encodable-string-structure", unknown>>;
|
|
5
|
+
export interface NonEncodableStringStructureDefinition extends StructureDefinition<readonly []> {
|
|
6
|
+
readonly value: string;
|
|
7
|
+
}
|
|
8
|
+
export interface NonEncodableStringStructure extends DCommon.UnionToIntersection<Structure<String, NonEncodableStringStructureDefinition> & DKind.Kind<typeof nonEncodableStringStructureKind>> {
|
|
9
|
+
}
|
|
10
|
+
export declare const NonEncodableStringStructure: (value: string) => NoInfer<NonEncodableStringStructure>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createKind } from "../../kind.mjs";
|
|
2
|
+
import { ErrorSymbol, SuccessSymbol } from "../../common/resultSymbol.mjs";
|
|
3
|
+
import { createStructure } from "../base.mjs";
|
|
4
|
+
//#region scripts/dataStructure/structure/defaults/nonEncodableString.ts
|
|
5
|
+
const nonEncodableStringStructureKind = createKind("non-encodable-string-structure");
|
|
6
|
+
const NonEncodableStringStructure = createStructure(nonEncodableStringStructureKind, ({ init }) => (value) => init({
|
|
7
|
+
value,
|
|
8
|
+
constraints: []
|
|
9
|
+
}, {
|
|
10
|
+
executeCheck: (self, data, errorHandler) => data === self.definition.value ? SuccessSymbol : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
|
|
11
|
+
executeEncode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
|
|
12
|
+
executeDecode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
|
|
13
|
+
isAsynchronous: () => false
|
|
14
|
+
}));
|
|
15
|
+
//#endregion
|
|
16
|
+
export { NonEncodableStringStructure, nonEncodableStringStructureKind };
|
|
@@ -27,4 +27,4 @@ export interface ObjectStructureDefinition<GenericConstraints extends readonly C
|
|
|
27
27
|
}
|
|
28
28
|
export interface ObjectStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, ObjectStructureDefinition<GenericConstraints>> & DKind.Kind<typeof objectStructureKind>> {
|
|
29
29
|
}
|
|
30
|
-
export declare const ObjectStructure: <GenericShape extends ShapeObjectStructure, const GenericConstraints extends readonly Constraint<ShapeObjectStructureValue<GenericShape>>[]>(shape: GenericShape, constraints: GenericConstraints) => ObjectStructure<ShapeObjectStructureValue<GenericShape>, readonly [...GenericConstraints]
|
|
30
|
+
export declare const ObjectStructure: <GenericShape extends ShapeObjectStructure, const GenericConstraints extends readonly Constraint<ShapeObjectStructureValue<GenericShape>>[]>(shape: GenericShape, constraints: GenericConstraints) => NoInfer<ObjectStructure<ShapeObjectStructureValue<GenericShape>, readonly [...GenericConstraints]>>;
|
|
@@ -16,4 +16,4 @@ export interface RecordStructureDefinition<GenericConstraints extends readonly C
|
|
|
16
16
|
}
|
|
17
17
|
export interface RecordStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, RecordStructureDefinition<GenericConstraints>> & DKind.Kind<typeof recordStructureKind>> {
|
|
18
18
|
}
|
|
19
|
-
export declare const RecordStructure: <GenericKey extends (UnionStructure<string> | TypeStructure<string>), GenericValueStructure extends Structure, const GenericConstraints extends readonly Constraint<RecordStructureValue<GenericKey, GenericValueStructure>>[]>(key: GenericKey, value: GenericValueStructure, constraints: GenericConstraints) => RecordStructure<RecordStructureValue<GenericKey, GenericValueStructure>, readonly [...GenericConstraints]
|
|
19
|
+
export declare const RecordStructure: <GenericKey extends (UnionStructure<string> | TypeStructure<string>), GenericValueStructure extends Structure, const GenericConstraints extends readonly Constraint<RecordStructureValue<GenericKey, GenericValueStructure>>[]>(key: GenericKey, value: GenericValueStructure, constraints: GenericConstraints) => NoInfer<RecordStructure<RecordStructureValue<GenericKey, GenericValueStructure>, readonly [...GenericConstraints]>>;
|
|
@@ -8,7 +8,7 @@ const TypeStructure = require_base.createStructure(typeStructureKind, ({ init })
|
|
|
8
8
|
type,
|
|
9
9
|
constraints
|
|
10
10
|
}, {
|
|
11
|
-
executeCheck: (self, data, errorHandler) => self.definition.type.executeCheck(data, errorHandler),
|
|
11
|
+
executeCheck: (self, data, errorHandler) => require_callThen.callThen(self.definition.type.executeCheck(data), (result) => result === require_resultSymbol.ErrorSymbol ? errorHandler?.().addIssue(self, data, self.definition.type) ?? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol),
|
|
12
12
|
executeEncode: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.executeCheck(data, errorHandler), (result) => {
|
|
13
13
|
if (result === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
|
|
14
14
|
const codec = codecContext.get(self.definition.type.fundamentalType);
|
|
@@ -9,4 +9,4 @@ export interface TypeStructureDefinition<GenericConstraints extends readonly Con
|
|
|
9
9
|
}
|
|
10
10
|
export interface TypeStructure<GenericType extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericType>[] = readonly Constraint<GenericType>[]> extends DCommon.UnionToIntersection<Structure<GenericType, TypeStructureDefinition<GenericConstraints>> & DKind.Kind<typeof typeStructureKind>> {
|
|
11
11
|
}
|
|
12
|
-
export declare const TypeStructure: <GenericType extends Type, const GenericConstraints extends readonly Constraint<TypeValue<GenericType>>[]>(type: GenericType, constraints: GenericConstraints) => TypeStructure<TypeValue<GenericType>, readonly [...GenericConstraints]
|
|
12
|
+
export declare const TypeStructure: <GenericType extends Type, const GenericConstraints extends readonly Constraint<TypeValue<GenericType>>[]>(type: GenericType, constraints: GenericConstraints) => NoInfer<TypeStructure<TypeValue<GenericType>, readonly [...GenericConstraints]>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { callThen } from "../../../common/callThen.mjs";
|
|
2
2
|
import { createKind } from "../../kind.mjs";
|
|
3
|
-
import { ErrorSymbol } from "../../common/resultSymbol.mjs";
|
|
3
|
+
import { ErrorSymbol, SuccessSymbol } from "../../common/resultSymbol.mjs";
|
|
4
4
|
import { createStructure } from "../base.mjs";
|
|
5
5
|
//#region scripts/dataStructure/structure/defaults/type.ts
|
|
6
6
|
const typeStructureKind = createKind("type-structure");
|
|
@@ -8,7 +8,7 @@ const TypeStructure = createStructure(typeStructureKind, ({ init }) => (type, co
|
|
|
8
8
|
type,
|
|
9
9
|
constraints
|
|
10
10
|
}, {
|
|
11
|
-
executeCheck: (self, data, errorHandler) => self.definition.type.executeCheck(data, errorHandler),
|
|
11
|
+
executeCheck: (self, data, errorHandler) => callThen(self.definition.type.executeCheck(data), (result) => result === ErrorSymbol ? errorHandler?.().addIssue(self, data, self.definition.type) ?? ErrorSymbol : SuccessSymbol),
|
|
12
12
|
executeEncode: (self, codecContext, data, errorHandler) => callThen(self.executeCheck(data, errorHandler), (result) => {
|
|
13
13
|
if (result === ErrorSymbol) return ErrorSymbol;
|
|
14
14
|
const codec = codecContext.get(self.definition.type.fundamentalType);
|
|
@@ -14,9 +14,8 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
14
14
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
15
15
|
const result = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
|
|
16
16
|
if (awaitedAccumulator === require_resultSymbol.SuccessSymbol) return awaitedAccumulator;
|
|
17
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler();
|
|
18
|
-
if (
|
|
19
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
17
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
|
|
18
|
+
if (errorHandlers && subErrorHandler) {
|
|
20
19
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
21
20
|
errorHandlers.push(subErrorHandler);
|
|
22
21
|
}
|
|
@@ -25,6 +24,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
25
24
|
return require_callThen.callThen(result, (awaitedResult) => {
|
|
26
25
|
if (awaitedResult === require_resultSymbol.ErrorSymbol) {
|
|
27
26
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
27
|
+
errorHandler?.().addIssue(self, data);
|
|
28
28
|
return require_resultSymbol.ErrorSymbol;
|
|
29
29
|
}
|
|
30
30
|
return require_resultSymbol.SuccessSymbol;
|
|
@@ -34,9 +34,8 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
34
34
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
35
35
|
const encodedData = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
|
|
36
36
|
if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
|
|
37
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler();
|
|
38
|
-
if (
|
|
39
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
37
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
|
|
38
|
+
if (errorHandlers && subErrorHandler) {
|
|
40
39
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
41
40
|
errorHandlers.push(subErrorHandler);
|
|
42
41
|
}
|
|
@@ -45,6 +44,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
45
44
|
return require_callThen.callThen(encodedData, (awaitedEncodedData) => {
|
|
46
45
|
if (awaitedEncodedData === require_resultSymbol.ErrorSymbol) {
|
|
47
46
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
47
|
+
errorHandler?.().addIssue(self, data);
|
|
48
48
|
return require_resultSymbol.ErrorSymbol;
|
|
49
49
|
}
|
|
50
50
|
return require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedEncodedData);
|
|
@@ -54,9 +54,8 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
54
54
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
55
55
|
const decodedData = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
|
|
56
56
|
if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
|
|
57
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler();
|
|
58
|
-
if (
|
|
59
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
57
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
|
|
58
|
+
if (errorHandlers && subErrorHandler) {
|
|
60
59
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
61
60
|
errorHandlers.push(subErrorHandler);
|
|
62
61
|
}
|
|
@@ -65,6 +64,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
|
|
|
65
64
|
return require_callThen.callThen(decodedData, (awaitedDecodedData) => {
|
|
66
65
|
if (awaitedDecodedData === require_resultSymbol.ErrorSymbol) {
|
|
67
66
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
67
|
+
errorHandler?.().addIssue(self, data);
|
|
68
68
|
return require_resultSymbol.ErrorSymbol;
|
|
69
69
|
}
|
|
70
70
|
return require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData);
|
|
@@ -9,4 +9,4 @@ export interface UnionStructureDefinition<GenericConstraints extends readonly Co
|
|
|
9
9
|
}
|
|
10
10
|
export interface UnionStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, UnionStructureDefinition<GenericConstraints>> & DKind.Kind<typeof unionStructureKind>> {
|
|
11
11
|
}
|
|
12
|
-
export declare const UnionStructure: <GenericValues extends DCommon.AnyTuple<Structure>, const GenericConstraints extends readonly Constraint<StructureValue<GenericValues[number]>>[]>(values: GenericValues, constraints: GenericConstraints) => UnionStructure<StructureValue<GenericValues[number]>, readonly [...GenericConstraints]
|
|
12
|
+
export declare const UnionStructure: <GenericValues extends DCommon.AnyTuple<Structure>, const GenericConstraints extends readonly Constraint<StructureValue<GenericValues[number]>>[]>(values: GenericValues, constraints: GenericConstraints) => NoInfer<UnionStructure<StructureValue<GenericValues[number]>, readonly [...GenericConstraints]>>;
|
|
@@ -14,9 +14,8 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
14
14
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
15
15
|
const result = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
|
|
16
16
|
if (awaitedAccumulator === SuccessSymbol) return awaitedAccumulator;
|
|
17
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler();
|
|
18
|
-
if (
|
|
19
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
17
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
|
|
18
|
+
if (errorHandlers && subErrorHandler) {
|
|
20
19
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
21
20
|
errorHandlers.push(subErrorHandler);
|
|
22
21
|
}
|
|
@@ -25,6 +24,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
25
24
|
return callThen(result, (awaitedResult) => {
|
|
26
25
|
if (awaitedResult === ErrorSymbol) {
|
|
27
26
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
27
|
+
errorHandler?.().addIssue(self, data);
|
|
28
28
|
return ErrorSymbol;
|
|
29
29
|
}
|
|
30
30
|
return SuccessSymbol;
|
|
@@ -34,9 +34,8 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
34
34
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
35
35
|
const encodedData = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
|
|
36
36
|
if (awaitedAccumulator !== ErrorSymbol) return awaitedAccumulator;
|
|
37
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler();
|
|
38
|
-
if (
|
|
39
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
37
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
|
|
38
|
+
if (errorHandlers && subErrorHandler) {
|
|
40
39
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
41
40
|
errorHandlers.push(subErrorHandler);
|
|
42
41
|
}
|
|
@@ -45,6 +44,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
45
44
|
return callThen(encodedData, (awaitedEncodedData) => {
|
|
46
45
|
if (awaitedEncodedData === ErrorSymbol) {
|
|
47
46
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
47
|
+
errorHandler?.().addIssue(self, data);
|
|
48
48
|
return ErrorSymbol;
|
|
49
49
|
}
|
|
50
50
|
return callThen(self.executeConstraints(data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedEncodedData);
|
|
@@ -54,9 +54,8 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
54
54
|
const errorHandlers = errorHandler ? [] : void 0;
|
|
55
55
|
const decodedData = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
|
|
56
56
|
if (awaitedAccumulator !== ErrorSymbol) return awaitedAccumulator;
|
|
57
|
-
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler();
|
|
58
|
-
if (
|
|
59
|
-
subErrorHandler().usePath(errorHandler().currentPath);
|
|
57
|
+
const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
|
|
58
|
+
if (errorHandlers && subErrorHandler) {
|
|
60
59
|
subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
|
|
61
60
|
errorHandlers.push(subErrorHandler);
|
|
62
61
|
}
|
|
@@ -65,6 +64,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
|
|
|
65
64
|
return callThen(decodedData, (awaitedDecodedData) => {
|
|
66
65
|
if (awaitedDecodedData === ErrorSymbol) {
|
|
67
66
|
if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
|
|
67
|
+
errorHandler?.().addIssue(self, data);
|
|
68
68
|
return ErrorSymbol;
|
|
69
69
|
}
|
|
70
70
|
return callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedDecodedData);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Structure } from './base';
|
|
2
2
|
export declare const structureIdentifier: {
|
|
3
|
-
<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/array-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/lazy-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/entity-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/record-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/union-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/new-type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@
|
|
4
|
-
<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/array-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/lazy-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/entity-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/record-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/union-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/new-type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@
|
|
3
|
+
<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/array-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/lazy-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/non-encodable-string-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/entity-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/tagged-object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/record-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/union-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/new-type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", String>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", Record<string, unknown>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", readonly unknown[]>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').Entity<string> & Record<string, unknown>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').ObjectTag<string>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').NewType<string, never>>>, GenericInput extends unknown, GenericGroupedKind extends import('../..').UnionToIntersection<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<string, unknown>> ? import('../../kind').Kind<GenericKindHandler, GenericKindHandler["definition"]["value"]> : never>>(kind: GenericKindHandler | GenericKindHandler[]): (input: GenericInput) => input is (import('../..').UnionContain<GenericInput, Structure<unknown, import('..').StructureDefinition<readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>>> extends true ? Extract<Structure<unknown, import('..').StructureDefinition<readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>>, GenericGroupedKind> | Extract<import('..').NonEncodableStringStructure, GenericGroupedKind> | Extract<import('..').ObjectStructure<Record<string, unknown>, readonly import('..').Constraint<Record<string, unknown>, Record<string, unknown>, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').ArrayStructure<readonly unknown[], readonly import('..').Constraint<readonly unknown[], readonly unknown[], import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').TypeStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('../../modeling').EntityStructure<string, Record<string, unknown>>, GenericGroupedKind> | Extract<import('../../modeling').TaggedObjectStructure<import('../../modeling').ObjectTag<string>>, GenericGroupedKind> | Extract<import('..').LazyStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').RecordStructure<Record<string, unknown>, readonly import('..').Constraint<Record<string, unknown>, Record<string, unknown>, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').UnionStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('../../modeling').NewTypeStructure<string, unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> : never) | Extract<GenericInput, GenericGroupedKind>;
|
|
4
|
+
<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/array-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/lazy-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/non-encodable-string-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/entity-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/tagged-object-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/record-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/union-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangModeling/new-type-structure", unknown>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", String>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", Record<string, unknown>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", readonly unknown[]>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').Entity<string> & Record<string, unknown>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').ObjectTag<string>>> | import('../../kind').Handler<import('../../kind').Definition<"@DuplojsLangDataStructure/structure", import('../../modeling').NewType<string, never>>>, GenericInput extends unknown, GenericGroupedKind extends import('../..').UnionToIntersection<GenericKindHandler extends import('../../kind').Handler<import('../../kind').Definition<string, unknown>> ? import('../../kind').Kind<GenericKindHandler, GenericKindHandler["definition"]["value"]> : never>>(input: GenericInput, kind: GenericKindHandler | GenericKindHandler[]): input is (import('../..').UnionContain<GenericInput, Structure<unknown, import('..').StructureDefinition<readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>>> extends true ? Extract<Structure<unknown, import('..').StructureDefinition<readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>>, GenericGroupedKind> | Extract<import('..').NonEncodableStringStructure, GenericGroupedKind> | Extract<import('..').ObjectStructure<Record<string, unknown>, readonly import('..').Constraint<Record<string, unknown>, Record<string, unknown>, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').ArrayStructure<readonly unknown[], readonly import('..').Constraint<readonly unknown[], readonly unknown[], import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').TypeStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('../../modeling').EntityStructure<string, Record<string, unknown>>, GenericGroupedKind> | Extract<import('../../modeling').TaggedObjectStructure<import('../../modeling').ObjectTag<string>>, GenericGroupedKind> | Extract<import('..').LazyStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').RecordStructure<Record<string, unknown>, readonly import('..').Constraint<Record<string, unknown>, Record<string, unknown>, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('..').UnionStructure<unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> | Extract<import('../../modeling').NewTypeStructure<string, unknown, readonly import('..').Constraint<unknown, unknown, import('..').ConstraintDefinition>[]>, GenericGroupedKind> : never) | Extract<GenericInput, GenericGroupedKind>;
|
|
5
5
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ConstraintValue, Constraint } from '../../constraint';
|
|
2
2
|
import type * as DCommon from '../../../common';
|
|
3
|
-
export type StructureConstraintsValue<GenericConstraints extends Constraint> = DCommon.NeverCoalescing<Extract<DCommon.UnionToIntersection<GenericConstraints extends Constraint ? {
|
|
3
|
+
export type StructureConstraintsValue<GenericConstraints extends Constraint> = DCommon.IsNever<GenericConstraints> extends true ? unknown : DCommon.NeverCoalescing<Extract<DCommon.UnionToIntersection<GenericConstraints extends Constraint ? {
|
|
4
4
|
value: ConstraintValue<GenericConstraints>;
|
|
5
5
|
} : never>, {
|
|
6
6
|
value: unknown;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Structure } from '../base';
|
|
2
|
-
import { ObjectStructure, ArrayStructure, LazyStructure, RecordStructure, UnionStructure, TypeStructure } from '../defaults';
|
|
2
|
+
import { ObjectStructure, ArrayStructure, LazyStructure, RecordStructure, UnionStructure, TypeStructure, NonEncodableStringStructure } from '../defaults';
|
|
3
3
|
export interface StructuresStore {
|
|
4
4
|
base: Structure;
|
|
5
5
|
array: ArrayStructure;
|
|
@@ -8,5 +8,6 @@ export interface StructuresStore {
|
|
|
8
8
|
record: RecordStructure;
|
|
9
9
|
union: UnionStructure;
|
|
10
10
|
type: TypeStructure;
|
|
11
|
+
nonEncodableString: NonEncodableStringStructure;
|
|
11
12
|
}
|
|
12
13
|
export type Structures = Extract<StructuresStore[keyof StructuresStore], Structure>;
|
|
@@ -2,4 +2,4 @@ import { structureKind, Structure } from '../base';
|
|
|
2
2
|
import { StructureConstraintsValue } from './constraintsValue';
|
|
3
3
|
import type * as DKind from '../../../kind';
|
|
4
4
|
export type StructureValue<GenericStructure extends Structure> = DKind.GetValue<typeof structureKind, GenericStructure>;
|
|
5
|
-
export type StructureInitialValue<GenericStructure extends Structure
|
|
5
|
+
export type StructureInitialValue<GenericStructure extends Structure, GenericStructureValue = StructureValue<GenericStructure>> = GenericStructureValue extends unknown ? GenericStructureValue extends (infer InferredInitialValue) & StructureConstraintsValue<GenericStructure["definition"]["constraints"][number]> ? InferredInitialValue : GenericStructureValue : never;
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
const require_callThen = require("../../common/callThen.cjs");
|
|
2
|
+
const require_simpleClone = require("../../common/simpleClone.cjs");
|
|
2
3
|
const require_kind = require("../kind.cjs");
|
|
3
4
|
const require_resultSymbol = require("../common/resultSymbol.cjs");
|
|
4
5
|
//#region scripts/dataStructure/type/base.ts
|
|
5
6
|
const typeKind = require_kind.createKind("type");
|
|
6
7
|
function createType(fundamentalType, kindHandler, createConstructor) {
|
|
7
|
-
|
|
8
|
+
const init = (definition, { executeCheck, isAsynchronous }) => {
|
|
8
9
|
const self = {
|
|
10
|
+
fundamentalType,
|
|
9
11
|
definition,
|
|
10
|
-
executeCheck: (data
|
|
12
|
+
executeCheck: (data) => require_callThen.callThen(self.fundamentalType.executeCheck(data), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : executeCheck(self, data)),
|
|
11
13
|
isAsynchronous: () => isAsynchronous(self),
|
|
12
|
-
|
|
14
|
+
clone: () => init(require_simpleClone.simpleClone(definition), {
|
|
15
|
+
executeCheck,
|
|
16
|
+
isAsynchronous
|
|
17
|
+
}),
|
|
18
|
+
setMessage: (message) => {
|
|
19
|
+
self.definition.message = message;
|
|
20
|
+
return self;
|
|
21
|
+
},
|
|
22
|
+
addMessage: (message) => {
|
|
23
|
+
return self.clone().setMessage(message);
|
|
24
|
+
},
|
|
13
25
|
[typeKind.runTimeKey]: null,
|
|
14
26
|
[kindHandler.runTimeKey]: null
|
|
15
27
|
};
|
|
16
28
|
return self;
|
|
17
|
-
}
|
|
29
|
+
};
|
|
30
|
+
return createConstructor({ init });
|
|
18
31
|
}
|
|
19
32
|
//#endregion
|
|
20
33
|
exports.createType = createType;
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { FundamentalType, FundamentalTypeValue } from '../fundamentalType';
|
|
2
|
-
import { ErrorSymbol,
|
|
2
|
+
import { ErrorSymbol, SuccessSymbol } from '../common';
|
|
3
3
|
import type * as DKind from '../../kind';
|
|
4
4
|
import * as DCommon from '../../common';
|
|
5
5
|
export declare const typeKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/type", unknown>>;
|
|
6
6
|
export interface TypeDefinition {
|
|
7
|
+
readonly message?: string;
|
|
7
8
|
}
|
|
8
9
|
export interface Type<GenericFundamentalType extends FundamentalType = FundamentalType, GenericValue extends FundamentalTypeValue<GenericFundamentalType> = FundamentalTypeValue<GenericFundamentalType>, GenericDefinition extends TypeDefinition = TypeDefinition> extends DKind.Kind<typeof typeKind, GenericValue> {
|
|
9
10
|
readonly fundamentalType: GenericFundamentalType;
|
|
10
11
|
readonly definition: GenericDefinition;
|
|
11
|
-
executeCheck(data: unknown
|
|
12
|
+
executeCheck(data: unknown): DCommon.MaybePromise<SuccessSymbol | ErrorSymbol>;
|
|
12
13
|
isAsynchronous(): boolean;
|
|
14
|
+
clone(): this;
|
|
15
|
+
setMessage(massage: string): this;
|
|
16
|
+
addMessage(massage: string): this;
|
|
13
17
|
}
|
|
14
18
|
export interface CreateTypeInitParams<GenericType extends Type = Type, GenericFundamentalType extends FundamentalType = FundamentalType> {
|
|
15
|
-
executeCheck(self: GenericType, data: FundamentalTypeValue<GenericFundamentalType
|
|
19
|
+
executeCheck(self: GenericType, data: FundamentalTypeValue<GenericFundamentalType>): DCommon.MaybePromise<SuccessSymbol | ErrorSymbol>;
|
|
16
20
|
isAsynchronous(self: GenericType): boolean;
|
|
17
21
|
}
|
|
18
22
|
export interface CreateTypeConstructorParams<GenericFundamentalType extends FundamentalType = FundamentalType, GenericKindHandler extends DKind.Handler = DKind.Handler> {
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
import { callThen } from "../../common/callThen.mjs";
|
|
2
|
+
import { simpleClone } from "../../common/simpleClone.mjs";
|
|
2
3
|
import { createKind } from "../kind.mjs";
|
|
3
4
|
import { ErrorSymbol } from "../common/resultSymbol.mjs";
|
|
4
5
|
//#region scripts/dataStructure/type/base.ts
|
|
5
6
|
const typeKind = createKind("type");
|
|
6
7
|
function createType(fundamentalType, kindHandler, createConstructor) {
|
|
7
|
-
|
|
8
|
+
const init = (definition, { executeCheck, isAsynchronous }) => {
|
|
8
9
|
const self = {
|
|
10
|
+
fundamentalType,
|
|
9
11
|
definition,
|
|
10
|
-
executeCheck: (data
|
|
12
|
+
executeCheck: (data) => callThen(self.fundamentalType.executeCheck(data), (result) => result === ErrorSymbol ? ErrorSymbol : executeCheck(self, data)),
|
|
11
13
|
isAsynchronous: () => isAsynchronous(self),
|
|
12
|
-
|
|
14
|
+
clone: () => init(simpleClone(definition), {
|
|
15
|
+
executeCheck,
|
|
16
|
+
isAsynchronous
|
|
17
|
+
}),
|
|
18
|
+
setMessage: (message) => {
|
|
19
|
+
self.definition.message = message;
|
|
20
|
+
return self;
|
|
21
|
+
},
|
|
22
|
+
addMessage: (message) => {
|
|
23
|
+
return self.clone().setMessage(message);
|
|
24
|
+
},
|
|
13
25
|
[typeKind.runTimeKey]: null,
|
|
14
26
|
[kindHandler.runTimeKey]: null
|
|
15
27
|
};
|
|
16
28
|
return self;
|
|
17
|
-
}
|
|
29
|
+
};
|
|
30
|
+
return createConstructor({ init });
|
|
18
31
|
}
|
|
19
32
|
//#endregion
|
|
20
33
|
export { createType, typeKind };
|