akanjs 2.3.5-rc.8 → 2.3.5
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/base/base.ts +6 -2
- package/base/primitiveRegistry.ts +50 -46
- package/base/symbols.ts +16 -11
- package/base/types.ts +12 -0
- package/constant/constantRegistry.ts +10 -9
- package/constant/deserialize.ts +7 -7
- package/constant/fieldInfo.ts +173 -31
- package/constant/getDefault.ts +2 -2
- package/constant/immerify.ts +2 -2
- package/constant/purify.ts +19 -4
- package/constant/serialize.ts +6 -5
- package/constant/types.ts +9 -1
- package/constant/via.ts +312 -57
- package/dictionary/dictInfo.ts +28 -38
- package/dictionary/locale.ts +36 -38
- package/document/by.ts +84 -21
- package/document/database.ts +53 -18
- package/document/databaseRegistry.ts +7 -3
- package/document/filterMeta.ts +26 -14
- package/document/into.ts +71 -76
- package/document/types.ts +4 -2
- package/fetch/fetchType/endpointFetch.type.ts +6 -3
- package/fetch/fetchType/sliceFetch.type.ts +24 -13
- package/package.json +1 -1
- package/service/predefinedAdaptor/compress.adaptor.ts +9 -9
- package/service/predefinedAdaptor/database.adaptor.ts +3 -7
- package/service/serve.ts +17 -52
- package/service/types.ts +61 -21
- package/signal/endpoint.ts +2 -1
- package/signal/endpointInfo.ts +53 -23
- package/signal/internal.ts +2 -1
- package/signal/internalInfo.ts +71 -23
- package/signal/serverSignal.ts +23 -57
- package/signal/slice.ts +35 -35
- package/signal/sliceInfo.ts +63 -47
- package/signal/types.ts +23 -17
- package/store/action.ts +57 -44
- package/store/state.ts +47 -36
- package/store/stateBuilder.ts +3 -3
- package/store/store.ts +61 -15
- package/store/types.ts +16 -6
- package/types/base/base.d.ts +5 -1
- package/types/base/primitiveRegistry.d.ts +43 -38
- package/types/base/symbols.d.ts +5 -0
- package/types/base/types.d.ts +1 -0
- package/types/constant/constantRegistry.d.ts +3 -8
- package/types/constant/deserialize.d.ts +2 -2
- package/types/constant/fieldInfo.d.ts +41 -20
- package/types/constant/immerify.d.ts +2 -2
- package/types/constant/purify.d.ts +3 -2
- package/types/constant/serialize.d.ts +2 -2
- package/types/constant/types.d.ts +6 -1
- package/types/constant/via.d.ts +143 -22
- package/types/dictionary/dictInfo.d.ts +18 -11
- package/types/dictionary/locale.d.ts +23 -16
- package/types/document/by.d.ts +44 -7
- package/types/document/database.d.ts +9 -7
- package/types/document/databaseRegistry.d.ts +5 -4
- package/types/document/filterMeta.d.ts +18 -11
- package/types/document/into.d.ts +46 -19
- package/types/document/types.d.ts +3 -2
- package/types/fetch/fetchType/endpointFetch.type.d.ts +2 -2
- package/types/fetch/fetchType/sliceFetch.type.d.ts +11 -11
- package/types/service/serve.d.ts +4 -5
- package/types/service/serviceModule.d.ts +5 -5
- package/types/service/types.d.ts +23 -5
- package/types/signal/endpoint.d.ts +2 -1
- package/types/signal/endpointInfo.d.ts +40 -15
- package/types/signal/internal.d.ts +2 -1
- package/types/signal/internalInfo.d.ts +46 -12
- package/types/signal/serverSignal.d.ts +15 -12
- package/types/signal/slice.d.ts +8 -6
- package/types/signal/sliceInfo.d.ts +41 -20
- package/types/signal/types.d.ts +23 -17
- package/types/store/action.d.ts +25 -22
- package/types/store/baseSt.d.ts +42 -13
- package/types/store/state.d.ts +23 -26
- package/types/store/stateBuilder.d.ts +2 -2
- package/types/store/store.d.ts +17 -5
- package/types/store/types.d.ts +9 -3
- package/ui/Signal/makeExample.ts +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import dayjsLib, { type Dayjs } from "dayjs";
|
|
2
|
+
import { CLIENT_VALUE, DEFAULT_VALUE, EXAMPLE_VALUE, PURIFIED_VALUE, SERVER_VALUE } from "./symbols.d.ts";
|
|
2
3
|
import type { Cls } from "./types.d.ts";
|
|
3
4
|
export type { Dayjs };
|
|
4
5
|
/** Shared dayjs factory re-export used by Akan documents, services, stores, and UI. */
|
|
@@ -16,17 +17,14 @@ export declare class PrimitiveRegistry {
|
|
|
16
17
|
static getNames(): string[];
|
|
17
18
|
static getAll(): (typeof PrimitiveScalar)[];
|
|
18
19
|
}
|
|
19
|
-
export declare const PRIMITIVE_SERVER_VALUE: unique symbol;
|
|
20
|
-
export declare const PRIMITIVE_CLIENT_VALUE: unique symbol;
|
|
21
|
-
export declare const PRIMITIVE_DEFAULT_VALUE: unique symbol;
|
|
22
|
-
export declare const PRIMITIVE_EXAMPLE_VALUE: unique symbol;
|
|
23
20
|
export type PrimitiveValue = string | number | boolean | Dayjs | Date | null | undefined;
|
|
24
21
|
export declare class PrimitiveScalar {
|
|
25
22
|
static refName: string;
|
|
26
|
-
static [
|
|
27
|
-
static [
|
|
28
|
-
static [
|
|
29
|
-
static [
|
|
23
|
+
static [SERVER_VALUE]: unknown;
|
|
24
|
+
static [CLIENT_VALUE]: unknown;
|
|
25
|
+
static [DEFAULT_VALUE]: unknown;
|
|
26
|
+
static [PURIFIED_VALUE]: unknown;
|
|
27
|
+
static [EXAMPLE_VALUE]: unknown;
|
|
30
28
|
static validate(value: PrimitiveValue): boolean;
|
|
31
29
|
static parseValue(value: PrimitiveValue): PrimitiveValue;
|
|
32
30
|
static serializeValue(value: PrimitiveValue): PrimitiveValue;
|
|
@@ -43,10 +41,11 @@ export declare class PrimitiveScalar {
|
|
|
43
41
|
/** Integer primitive scalar. Accepts safe integer numbers after parsing. */
|
|
44
42
|
export declare class Int extends PrimitiveScalar {
|
|
45
43
|
static refName: "Int";
|
|
46
|
-
static [
|
|
47
|
-
static [
|
|
48
|
-
static [
|
|
49
|
-
static [
|
|
44
|
+
static [SERVER_VALUE]: number;
|
|
45
|
+
static [CLIENT_VALUE]: number;
|
|
46
|
+
static [DEFAULT_VALUE]: number;
|
|
47
|
+
static [PURIFIED_VALUE]: number;
|
|
48
|
+
static [EXAMPLE_VALUE]: number;
|
|
50
49
|
static validate(value: string | number): boolean;
|
|
51
50
|
static parseValue(input: string | number): number;
|
|
52
51
|
static serializeValue(value: number): number;
|
|
@@ -54,10 +53,11 @@ export declare class Int extends PrimitiveScalar {
|
|
|
54
53
|
/** Floating point primitive scalar. Accepts finite numbers after parsing. */
|
|
55
54
|
export declare class Float extends PrimitiveScalar {
|
|
56
55
|
static refName: "Float";
|
|
57
|
-
static [
|
|
58
|
-
static [
|
|
59
|
-
static [
|
|
60
|
-
static [
|
|
56
|
+
static [SERVER_VALUE]: number;
|
|
57
|
+
static [CLIENT_VALUE]: number;
|
|
58
|
+
static [DEFAULT_VALUE]: number;
|
|
59
|
+
static [PURIFIED_VALUE]: number;
|
|
60
|
+
static [EXAMPLE_VALUE]: number;
|
|
61
61
|
static validate(value: string | number): boolean;
|
|
62
62
|
static parseValue(input: string | number): number;
|
|
63
63
|
static serializeValue(value: number): number;
|
|
@@ -65,10 +65,11 @@ export declare class Float extends PrimitiveScalar {
|
|
|
65
65
|
/** 24-character hexadecimal id primitive used by Akan document and signal models. */
|
|
66
66
|
export declare class ID extends PrimitiveScalar {
|
|
67
67
|
static refName: "ID";
|
|
68
|
-
static [
|
|
69
|
-
static [
|
|
70
|
-
static [
|
|
71
|
-
static [
|
|
68
|
+
static [SERVER_VALUE]: string;
|
|
69
|
+
static [CLIENT_VALUE]: string;
|
|
70
|
+
static [DEFAULT_VALUE]: string;
|
|
71
|
+
static [PURIFIED_VALUE]: string;
|
|
72
|
+
static [EXAMPLE_VALUE]: string;
|
|
72
73
|
static validate(value: string): boolean;
|
|
73
74
|
static parseValue(input: string): string;
|
|
74
75
|
static serializeValue(value: string): string;
|
|
@@ -79,24 +80,26 @@ export declare class ID extends PrimitiveScalar {
|
|
|
79
80
|
/** Open object primitive for intentionally flexible payloads or metadata blobs. */
|
|
80
81
|
export declare class Any extends PrimitiveScalar {
|
|
81
82
|
static refName: "Any";
|
|
82
|
-
static [
|
|
83
|
-
static [
|
|
83
|
+
static [DEFAULT_VALUE]: object | null;
|
|
84
|
+
static [EXAMPLE_VALUE]: object;
|
|
84
85
|
}
|
|
85
86
|
export declare class Upload extends PrimitiveScalar {
|
|
86
87
|
static refName: "Upload";
|
|
87
|
-
static [
|
|
88
|
-
static [
|
|
89
|
-
static [
|
|
90
|
-
static [
|
|
88
|
+
static [SERVER_VALUE]: File;
|
|
89
|
+
static [CLIENT_VALUE]: File;
|
|
90
|
+
static [DEFAULT_VALUE]: File | null;
|
|
91
|
+
static [PURIFIED_VALUE]: File;
|
|
92
|
+
static [EXAMPLE_VALUE]: string;
|
|
91
93
|
__TEMP_TYPE__: "Upload";
|
|
92
94
|
}
|
|
93
95
|
declare global {
|
|
94
96
|
interface StringConstructor {
|
|
95
97
|
refName: "String";
|
|
96
|
-
[
|
|
97
|
-
[
|
|
98
|
-
[
|
|
99
|
-
[
|
|
98
|
+
[SERVER_VALUE]: string;
|
|
99
|
+
[CLIENT_VALUE]: string;
|
|
100
|
+
[DEFAULT_VALUE]: string;
|
|
101
|
+
[PURIFIED_VALUE]: string;
|
|
102
|
+
[EXAMPLE_VALUE]: string;
|
|
100
103
|
validate(value: string): boolean;
|
|
101
104
|
parseValue(input: string): string;
|
|
102
105
|
serializeValue(value: string): string;
|
|
@@ -106,10 +109,11 @@ declare global {
|
|
|
106
109
|
}
|
|
107
110
|
interface BooleanConstructor {
|
|
108
111
|
refName: "Boolean";
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
112
|
-
[
|
|
112
|
+
[SERVER_VALUE]: boolean;
|
|
113
|
+
[CLIENT_VALUE]: boolean;
|
|
114
|
+
[DEFAULT_VALUE]: boolean;
|
|
115
|
+
[PURIFIED_VALUE]: boolean;
|
|
116
|
+
[EXAMPLE_VALUE]: boolean;
|
|
113
117
|
validate(value: boolean | number): boolean;
|
|
114
118
|
parseValue(input: boolean | number): boolean | number;
|
|
115
119
|
serializeValue(value: boolean | number): boolean | number;
|
|
@@ -119,10 +123,11 @@ declare global {
|
|
|
119
123
|
}
|
|
120
124
|
interface DateConstructor {
|
|
121
125
|
refName: "Date";
|
|
122
|
-
[
|
|
123
|
-
[
|
|
124
|
-
[
|
|
125
|
-
[
|
|
126
|
+
[SERVER_VALUE]: Dayjs;
|
|
127
|
+
[CLIENT_VALUE]: Dayjs;
|
|
128
|
+
[DEFAULT_VALUE]: Dayjs;
|
|
129
|
+
[PURIFIED_VALUE]: Dayjs;
|
|
130
|
+
[EXAMPLE_VALUE]: string;
|
|
126
131
|
validate(value: Date): boolean;
|
|
127
132
|
parseValue(input: Date): Dayjs;
|
|
128
133
|
serializeValue(value: Dayjs | Date): Date;
|
package/types/base/symbols.d.ts
CHANGED
|
@@ -9,3 +9,8 @@ export declare const STATE_META: unique symbol;
|
|
|
9
9
|
export declare const STATE_INIT_META: unique symbol;
|
|
10
10
|
export declare const STATE_DERIVED_META: unique symbol;
|
|
11
11
|
export declare const ACTION_META: unique symbol;
|
|
12
|
+
export declare const SERVER_VALUE: unique symbol;
|
|
13
|
+
export declare const CLIENT_VALUE: unique symbol;
|
|
14
|
+
export declare const DEFAULT_VALUE: unique symbol;
|
|
15
|
+
export declare const EXAMPLE_VALUE: unique symbol;
|
|
16
|
+
export declare const PURIFIED_VALUE: unique symbol;
|
package/types/base/types.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export type ObjectAssign<Objects extends object[], Acc = unknown> = Objects exte
|
|
|
33
33
|
infer First extends object,
|
|
34
34
|
...infer Rest extends object[]
|
|
35
35
|
] ? ObjectAssign<Rest, Assign<Acc, First>> : Acc;
|
|
36
|
+
export type ObjectAssignKeyOfObjects<T extends object[], Key extends PropertyKey, Acc = Record<never, never>> = T extends [infer First extends object, ...infer Rest extends object[]] ? Key extends keyof First ? First[Key] extends object ? ObjectAssignKeyOfObjects<Rest, Key, Assign<Acc, First[Key]>> : ObjectAssignKeyOfObjects<Rest, Key, Acc> : ObjectAssignKeyOfObjects<Rest, Key, Acc> : Acc;
|
|
36
37
|
export type MergeAll<T extends object[], Acc = unknown> = T extends [
|
|
37
38
|
infer First extends object,
|
|
38
39
|
...infer Rest extends object[]
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { type Cls, type EnumInstance,
|
|
2
|
-
import { type ConstantCls, type FieldObject, type PurifiedModel } from ".";
|
|
1
|
+
import { type Cls, type EnumInstance, type GetStateObject, type PrimitiveScalar } from "akanjs/base";
|
|
2
|
+
import { type ConstantCls, type ConstantModelRef, type FieldObject, type PurifiedModel } from ".";
|
|
3
3
|
import type { ConstantType, DefaultOf, DocumentModel, QueryOf } from "./types.d.ts";
|
|
4
|
-
type ConstantModelRef<FieldObj extends FieldObject = FieldObject> = Cls<unknown, {
|
|
5
|
-
[FIELD_META]: FieldObj;
|
|
6
|
-
modelType: ConstantType;
|
|
7
|
-
}>;
|
|
8
4
|
/** Runtime registry for Akan constant model metadata, refs, enums, and generated model contracts. */
|
|
9
5
|
export declare class ConstantRegistry {
|
|
10
6
|
static database: Map<string, ConstantModel<string, any, any, any, any, any, FieldObject, Capitalize<string>, GetStateObject<{
|
|
@@ -49,7 +45,7 @@ export declare class ConstantRegistry {
|
|
|
49
45
|
allowEmpty?: AllowEmpty;
|
|
50
46
|
}): AllowEmpty extends true ? ScalarConstantModel | undefined : ScalarConstantModel;
|
|
51
47
|
static getModelRef(refName: string, modelType?: ConstantType): Cls | typeof PrimitiveScalar;
|
|
52
|
-
static buildModel<T extends string, InputRef extends ConstantModelRef, ObjectRef extends ConstantModelRef, FullFieldObj extends FieldObject, FullRef extends ConstantModelRef<FullFieldObj>, LightRef extends ConstantModelRef, InsightRef extends ConstantModelRef, Input = InstanceType<InputRef>, Obj = InstanceType<ObjectRef>, Full = InstanceType<FullRef>, Light = InstanceType<LightRef>, Insight = InstanceType<InsightRef>>(refName: T, inputRef: InputRef, objectRef: ObjectRef, fullRef: FullRef, lightRef: LightRef, insightRef: InsightRef, constExports: Record<string, unknown>): ConstantModel<T, Input, Obj, Full, Light, Insight, FullFieldObj, Capitalize<T>, DefaultOf<Full>, DefaultOf<Input>, GetStateObject<Full>, GetStateObject<Input>, DefaultOf<Insight>, PurifiedModel<Input>, DocumentModel<Full>, DocumentModel<Input>, QueryOf<DocumentModel<Full>>, GetStateObject<Light>, GetStateObject<Insight>>;
|
|
48
|
+
static buildModel<T extends string, InputRef extends ConstantModelRef, ObjectRef extends ConstantModelRef, FullFieldObj extends FieldObject, FullRef extends ConstantModelRef<any, FullFieldObj>, LightRef extends ConstantModelRef, InsightRef extends ConstantModelRef, Input = InstanceType<InputRef>, Obj = InstanceType<ObjectRef>, Full = InstanceType<FullRef>, Light = InstanceType<LightRef>, Insight = InstanceType<InsightRef>>(refName: T, inputRef: InputRef, objectRef: ObjectRef, fullRef: FullRef, lightRef: LightRef, insightRef: InsightRef, constExports: Record<string, unknown>): ConstantModel<T, Input, Obj, Full, Light, Insight, FullFieldObj, Capitalize<T>, DefaultOf<Full>, DefaultOf<Input>, GetStateObject<Full>, GetStateObject<Input>, DefaultOf<Insight>, PurifiedModel<Input>, DocumentModel<Full>, DocumentModel<Input>, QueryOf<DocumentModel<Full>>, GetStateObject<Light>, GetStateObject<Insight>>;
|
|
53
49
|
static buildScalar<T extends string, Model>(refName: T, Model: Cls<Model>, constExports: Record<string, unknown>): ScalarConstantModel<T, Model, DefaultOf<Model>, DocumentModel<Model>, PurifiedModel<Model>>;
|
|
54
50
|
static serialize<Value>(modelRef: Cls | Cls[], value: Value, nullable?: boolean): Value;
|
|
55
51
|
static deserialize<Value>(modelRef: Cls | Cls[], value: Value, nullable?: boolean): Value;
|
|
@@ -86,4 +82,3 @@ export interface ScalarConstantModel<T extends string = string, Model = any, _De
|
|
|
86
82
|
_Doc: _Doc;
|
|
87
83
|
_PurifiedInput: _PurifiedInput;
|
|
88
84
|
}
|
|
89
|
-
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PrimitiveScalar } from "akanjs/base";
|
|
2
|
-
import { type
|
|
3
|
-
export declare const deserialize: (argRef:
|
|
2
|
+
import { type ConstantModelRef } from ".";
|
|
3
|
+
export declare const deserialize: (argRef: ConstantModelRef | PrimitiveScalar, arrDepth: number, value: unknown, { key, nullable, convertFn }: {
|
|
4
4
|
key?: string;
|
|
5
5
|
nullable?: boolean;
|
|
6
6
|
convertFn?: (value: unknown) => unknown;
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
import { type Any, type Cls, type Dayjs, type EnumInstance, type Float, Int,
|
|
2
|
-
import type {
|
|
1
|
+
import { type Any, CLIENT_VALUE, type Cls, type Dayjs, type EnumInstance, type Float, Int, type PrimitiveScalar, SERVER_VALUE, type SingleValue, type UnCls } from "akanjs/base";
|
|
2
|
+
import type { BaseObject } from "./types.d.ts";
|
|
3
|
+
import type { ConstantModelRef } from "./via.d.ts";
|
|
3
4
|
export type ParamFieldType = (typeof PrimitiveScalar & {
|
|
4
|
-
[
|
|
5
|
+
[CLIENT_VALUE]: string | number | boolean | Dayjs;
|
|
5
6
|
}) | EnumInstance<string, any>;
|
|
6
7
|
export type ConstantFieldType = typeof PrimitiveScalar | Cls | MapConstructor | EnumInstance<string, number>;
|
|
7
8
|
export type ConstantFieldTypeInput = ConstantFieldType | ConstantFieldType[] | ConstantFieldType[][] | ConstantFieldType[][][];
|
|
8
|
-
export type FieldToValue<Field, MapValue = any> = Field extends null ? FieldToValue<Exclude<Field, null>> | null : Field extends MapConstructor ? Map<string, FieldToValue<MapValue>> : Field extends (infer F)[] ? FieldToValue<F>[] : Field extends {
|
|
9
|
-
[
|
|
10
|
-
} ? V : Field extends
|
|
9
|
+
export type FieldToValue<Field, MapValue = any> = Field extends null ? FieldToValue<Exclude<Field, null>> | null : Field extends MapConstructor ? Map<string, FieldToValue<MapValue>> : Field extends (infer F)[] ? FieldToValue<F>[] : Field extends typeof PrimitiveScalar | StringConstructor | BooleanConstructor | DateConstructor ? Field[typeof SERVER_VALUE] : Field extends ConstantModelRef ? UnCls<Field> : Field extends {
|
|
10
|
+
[SERVER_VALUE]: infer V;
|
|
11
|
+
} ? V : Field extends Cls ? UnCls<Field> : never;
|
|
11
12
|
export interface FieldInfoObject {
|
|
12
|
-
[key: string]: FieldInfo<any, ConstantFieldTypeInput | null, any>;
|
|
13
|
+
[key: string]: FieldInfo<any, ConstantFieldTypeInput | null, any, any, any, boolean, boolean, boolean, boolean, boolean, boolean, boolean>;
|
|
13
14
|
}
|
|
14
15
|
export type ExtractFieldInfoObject<Obj extends FieldInfoObject> = {
|
|
15
|
-
[K in keyof Obj]: Obj[K]
|
|
16
|
+
[K in keyof Obj]: unknown extends Obj[K]["explicitType"] ? FieldToValue<Obj[K]["value"], Obj[K]["mapValue"]> : Obj[K]["explicitType"];
|
|
16
17
|
};
|
|
18
|
+
type FieldKindSource<Value> = NonNullable<SingleValue<Value>>;
|
|
19
|
+
type IsNullableValue<Value> = null extends Value ? true : false;
|
|
20
|
+
type FieldInfoValue<Value, ExplicitType, MapValue> = unknown extends ExplicitType ? FieldToValue<Value, MapValue> : ExplicitType;
|
|
17
21
|
export type ConstantFieldKind = "property" | "hidden" | "secret" | "resolve";
|
|
18
22
|
export interface ConstantFieldProps<FieldType extends ConstantFieldKind = ConstantFieldKind, FieldValue = any, MapValue = any, Metadata = {
|
|
19
23
|
[key: string]: any;
|
|
@@ -43,15 +47,23 @@ export interface ConstantFieldProps<FieldType extends ConstantFieldKind = Consta
|
|
|
43
47
|
}
|
|
44
48
|
export declare const fieldPresets: readonly ["email", "password", "url"];
|
|
45
49
|
export type FieldPreset = (typeof fieldPresets)[number];
|
|
46
|
-
declare class FieldInfo<FieldType extends ConstantFieldKind = any, Value extends ConstantFieldTypeInput | null = null, ExplicitType = unknown, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never> {
|
|
50
|
+
declare class FieldInfo<FieldType extends ConstantFieldKind = any, Value extends ConstantFieldTypeInput | null = null, ExplicitType = unknown, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never, KindSource = FieldKindSource<Value>, IsRelation extends boolean = UnCls<KindSource> extends BaseObject ? true : false, IsEnum extends boolean = KindSource extends EnumInstance<string, any> ? true : false, IsPrimitive extends boolean = KindSource extends typeof PrimitiveScalar ? true : false, IsMap extends boolean = KindSource extends MapConstructor ? true : false, IsScalar extends boolean = IsRelation extends true ? false : IsEnum extends true ? false : IsPrimitive extends true ? false : IsMap extends true ? false : true, IsHidden extends boolean = FieldType extends "hidden" ? true : false, IsSecret extends boolean = FieldType extends "secret" ? true : false> {
|
|
47
51
|
readonly value: Value;
|
|
48
52
|
readonly type: ConstantFieldTypeInput;
|
|
49
53
|
readonly option: ConstantFieldProps;
|
|
50
54
|
explicitType: ExplicitType;
|
|
55
|
+
mapValue: MapValue;
|
|
56
|
+
_isEnum: IsEnum;
|
|
57
|
+
_isPrimitive: IsPrimitive;
|
|
58
|
+
_isScalar: IsScalar;
|
|
59
|
+
_isRelation: IsRelation;
|
|
60
|
+
_isHidden: IsHidden;
|
|
61
|
+
_isSecret: IsSecret;
|
|
62
|
+
_isMap: IsMap;
|
|
51
63
|
constructor(value: Value, option: ConstantFieldProps<FieldType, any, MapValue>);
|
|
52
64
|
optional(): FieldInfo<FieldType, Value | null, ExplicitType | null, MapValue>;
|
|
53
65
|
meta(meta: ConstantFieldProps["meta"]): this;
|
|
54
|
-
toField(): ConstantField<FieldType, Value, ExplicitType, MapValue,
|
|
66
|
+
toField(): ConstantField<FieldType, Value, ExplicitType, MapValue, IsNullableValue<FieldInfoValue<Value, ExplicitType, MapValue>>, IsRelation, IsEnum, IsPrimitive, IsScalar, IsHidden, IsSecret, IsMap, {
|
|
55
67
|
[key: string]: any;
|
|
56
68
|
}>;
|
|
57
69
|
}
|
|
@@ -77,7 +89,7 @@ interface ConstantFieldBuildProps<FieldType extends ConstantFieldKind = any, Fie
|
|
|
77
89
|
of?: MapValue;
|
|
78
90
|
validate?: (value: FieldValue, model: any) => boolean;
|
|
79
91
|
text?: "search" | "filter";
|
|
80
|
-
modelRef:
|
|
92
|
+
modelRef: ConstantModelRef;
|
|
81
93
|
arrDepth: number;
|
|
82
94
|
optArrDepth: number;
|
|
83
95
|
meta: Metadata;
|
|
@@ -88,11 +100,13 @@ export interface FieldProps extends ConstantFieldBuildProps {
|
|
|
88
100
|
isArray: boolean;
|
|
89
101
|
isMap: boolean;
|
|
90
102
|
}
|
|
103
|
+
type ConstantFieldFromInfoParts<FieldType extends ConstantFieldKind, Value extends ConstantFieldTypeInput | null, ExplicitType, MapValue, IsRelation extends boolean, IsEnum extends boolean, IsPrimitive extends boolean, IsMap extends boolean, IsScalar extends boolean, IsHidden extends boolean, IsSecret extends boolean, _FieldValue = FieldInfoValue<Value, ExplicitType, MapValue>> = ConstantField<FieldType, Value, _FieldValue, MapValue, IsNullableValue<_FieldValue>, IsRelation, IsEnum, IsPrimitive, IsScalar, IsHidden, IsSecret, IsMap>;
|
|
104
|
+
type ConstantFieldFromInfo<Info> = Info extends FieldInfo<infer FieldType, infer Value, infer ExplicitType, infer MapValue, infer _KindSource, infer IsRelation, infer IsEnum, infer IsPrimitive, infer IsMap, infer IsScalar, infer IsHidden, infer IsSecret> ? ConstantFieldFromInfoParts<FieldType, Value, ExplicitType, MapValue, IsRelation, IsEnum, IsPrimitive, IsMap, IsScalar, IsHidden, IsSecret> : never;
|
|
91
105
|
export type FieldInfoObjectToFieldObject<Obj extends FieldInfoObject> = {
|
|
92
|
-
[K in keyof Obj]: Obj[K]
|
|
106
|
+
[K in keyof Obj]: ConstantFieldFromInfo<Obj[K]>;
|
|
93
107
|
};
|
|
94
108
|
/** Runtime metadata for a single Akan constant field. */
|
|
95
|
-
export declare class ConstantField<FieldType extends ConstantFieldKind = ConstantFieldKind, Value extends ConstantFieldTypeInput | null = any, FieldValue = any, MapValue = any, Nullable extends boolean =
|
|
109
|
+
export declare class ConstantField<FieldType extends ConstantFieldKind = ConstantFieldKind, Value extends ConstantFieldTypeInput | null = any, FieldValue = any, MapValue = any, Nullable extends boolean = boolean, IsRelation extends boolean = boolean, IsEnum extends boolean = boolean, IsPrimitive extends boolean = boolean, IsScalar extends boolean = boolean, IsHidden extends boolean = boolean, IsSecret extends boolean = boolean, IsMap extends boolean = boolean, Metadata = {
|
|
96
110
|
[key: string]: any;
|
|
97
111
|
}> implements ConstantFieldBuildProps<FieldType, FieldValue, MapValue, Metadata> {
|
|
98
112
|
static getBaseModelField(): FieldObject;
|
|
@@ -118,14 +132,21 @@ export declare class ConstantField<FieldType extends ConstantFieldKind = Constan
|
|
|
118
132
|
readonly of?: MapValue;
|
|
119
133
|
readonly validate?: (value: FieldValue, model: any) => boolean;
|
|
120
134
|
readonly text?: "search" | "filter";
|
|
121
|
-
readonly modelRef:
|
|
135
|
+
readonly modelRef: ConstantModelRef;
|
|
122
136
|
readonly arrDepth: number;
|
|
123
137
|
readonly optArrDepth: number;
|
|
124
138
|
readonly meta: Metadata;
|
|
139
|
+
_isScalar: IsScalar;
|
|
140
|
+
_isRelation: IsRelation;
|
|
141
|
+
_isEnum: IsEnum;
|
|
142
|
+
_isPrimitive: IsPrimitive;
|
|
143
|
+
_isHidden: IsHidden;
|
|
144
|
+
_isSecret: IsSecret;
|
|
145
|
+
_isMap: IsMap;
|
|
125
146
|
constructor(props: ConstantFieldBuildProps<FieldType, FieldValue, MapValue, Metadata>);
|
|
126
|
-
static fromFieldInfo<FieldType extends ConstantFieldKind = any, Value extends ConstantFieldTypeInput | null = null, FieldValue = any, MapValue = any, Nullable extends boolean = false, Metadata = {
|
|
147
|
+
static fromFieldInfo<FieldType extends ConstantFieldKind = any, Value extends ConstantFieldTypeInput | null = null, FieldValue = any, MapValue = any, Nullable extends boolean = IsNullableValue<FieldInfoValue<Value, FieldValue, MapValue>>, KindSource = FieldKindSource<Value>, IsRelation extends boolean = false, IsEnum extends boolean = false, IsPrimitive extends boolean = false, IsMap extends boolean = false, IsScalar extends boolean = false, IsHidden extends boolean = false, IsSecret extends boolean = false, Metadata = {
|
|
127
148
|
[key: string]: any;
|
|
128
|
-
}>(fieldInfo: FieldInfo<FieldType, Value, FieldValue, MapValue>): ConstantField<FieldType, Value, FieldValue, MapValue, Nullable, Metadata>;
|
|
149
|
+
}>(fieldInfo: FieldInfo<FieldType, Value, FieldValue, MapValue, KindSource, IsRelation, IsEnum, IsPrimitive, IsMap, IsScalar, IsHidden, IsSecret>): ConstantField<FieldType, Value, FieldValue, MapValue, Nullable, IsRelation, IsEnum, IsPrimitive, IsScalar, IsHidden, IsSecret, IsMap, Metadata>;
|
|
129
150
|
get isClass(): boolean;
|
|
130
151
|
get isScalar(): boolean;
|
|
131
152
|
get isArray(): boolean;
|
|
@@ -143,12 +164,12 @@ type FieldOption<Value extends ConstantFieldTypeInput, MapValue = Value extends
|
|
|
143
164
|
export type PlainTypeToFieldType<PlainType> = PlainType extends [infer First, ...infer Rest] ? PlainTypeToFieldType<First>[] : PlainType extends number ? typeof Int | typeof Float : PlainType extends string ? StringConstructor : typeof Any;
|
|
144
165
|
/** Builds a stored property field with optional validation, default, ref, text, and metadata options. */
|
|
145
166
|
export declare const field: {
|
|
146
|
-
<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"property", Value, ExplicitType, MapValue>;
|
|
147
|
-
hidden<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"hidden", Value | null, ExplicitType | null, MapValue>;
|
|
148
|
-
secret<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"secret", Value | null, ExplicitType | null, MapValue>;
|
|
167
|
+
<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"property", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, false>;
|
|
168
|
+
hidden<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"hidden", Value | null, ExplicitType | null, MapValue, SingleValue<Value> & {}, UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false, SingleValue<Value> & {} extends infer T ? T extends SingleValue<Value> & {} ? T extends EnumInstance<string, any> ? true : false : never : never, SingleValue<Value> & {} extends infer T_1 ? T_1 extends SingleValue<Value> & {} ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, SingleValue<Value> & {} extends infer T_2 ? T_2 extends SingleValue<Value> & {} ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) ? T_3 extends true ? false : (SingleValue<Value> & {} extends infer T_4 ? T_4 extends SingleValue<Value> & {} ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (SingleValue<Value> & {} extends infer T_12 ? T_12 extends SingleValue<Value> & {} ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (SingleValue<Value> & {} extends infer T_6 ? T_6 extends SingleValue<Value> & {} ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (SingleValue<Value> & {} extends infer T_11 ? T_11 extends SingleValue<Value> & {} ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (SingleValue<Value> & {} extends infer T_8 ? T_8 extends SingleValue<Value> & {} ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (SingleValue<Value> & {} extends infer T_10 ? T_10 extends SingleValue<Value> & {} ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, true, false>;
|
|
169
|
+
secret<ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>): FieldInfo<"secret", Value | null, ExplicitType | null, MapValue, SingleValue<Value> & {}, UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false, SingleValue<Value> & {} extends infer T ? T extends SingleValue<Value> & {} ? T extends EnumInstance<string, any> ? true : false : never : never, SingleValue<Value> & {} extends infer T_1 ? T_1 extends SingleValue<Value> & {} ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, SingleValue<Value> & {} extends infer T_2 ? T_2 extends SingleValue<Value> & {} ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<SingleValue<Value> & {}> extends BaseObject ? true : false) ? T_3 extends true ? false : (SingleValue<Value> & {} extends infer T_4 ? T_4 extends SingleValue<Value> & {} ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (SingleValue<Value> & {} extends infer T_12 ? T_12 extends SingleValue<Value> & {} ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (SingleValue<Value> & {} extends infer T_6 ? T_6 extends SingleValue<Value> & {} ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (SingleValue<Value> & {} extends infer T_11 ? T_11 extends SingleValue<Value> & {} ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (SingleValue<Value> & {} extends infer T_8 ? T_8 extends SingleValue<Value> & {} ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (SingleValue<Value> & {} extends infer T_10 ? T_10 extends SingleValue<Value> & {} ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, true>;
|
|
149
170
|
};
|
|
150
171
|
/** Builds a resolved field that is derived rather than treated as a stored property. */
|
|
151
|
-
export declare const resolve: <ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>) => FieldInfo<"resolve", Value, ExplicitType, MapValue>;
|
|
172
|
+
export declare const resolve: <ExplicitType, Value extends ConstantFieldTypeInput = PlainTypeToFieldType<ExplicitType>, MapValue = Value extends MapConstructor ? typeof PrimitiveScalar : never>(value: Value, option?: FieldOption<Value, MapValue>) => FieldInfo<"resolve", Value, ExplicitType, MapValue, FieldKindSource<Value>, UnCls<FieldKindSource<Value>> extends BaseObject ? true : false, FieldKindSource<Value> extends infer T ? T extends FieldKindSource<Value> ? T extends EnumInstance<string, any> ? true : false : never : never, FieldKindSource<Value> extends infer T_1 ? T_1 extends FieldKindSource<Value> ? T_1 extends typeof PrimitiveScalar ? true : false : never : never, FieldKindSource<Value> extends infer T_2 ? T_2 extends FieldKindSource<Value> ? T_2 extends MapConstructor ? true : false : never : never, (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) extends infer T_3 ? T_3 extends (UnCls<FieldKindSource<Value>> extends BaseObject ? true : false) ? T_3 extends true ? false : (FieldKindSource<Value> extends infer T_4 ? T_4 extends FieldKindSource<Value> ? T_4 extends EnumInstance<string, any> ? true : false : never : never) extends infer T_5 ? T_5 extends (FieldKindSource<Value> extends infer T_12 ? T_12 extends FieldKindSource<Value> ? T_12 extends EnumInstance<string, any> ? true : false : never : never) ? T_5 extends true ? false : (FieldKindSource<Value> extends infer T_6 ? T_6 extends FieldKindSource<Value> ? T_6 extends typeof PrimitiveScalar ? true : false : never : never) extends infer T_7 ? T_7 extends (FieldKindSource<Value> extends infer T_11 ? T_11 extends FieldKindSource<Value> ? T_11 extends typeof PrimitiveScalar ? true : false : never : never) ? T_7 extends true ? false : (FieldKindSource<Value> extends infer T_8 ? T_8 extends FieldKindSource<Value> ? T_8 extends MapConstructor ? true : false : never : never) extends infer T_9 ? T_9 extends (FieldKindSource<Value> extends infer T_10 ? T_10 extends FieldKindSource<Value> ? T_10 extends MapConstructor ? true : false : never : never) ? T_9 extends true ? false : true : never : never : never : never : never : never : never : never, false, false>;
|
|
152
173
|
export type FieldBuilder = typeof field;
|
|
153
174
|
export type FieldResolver = typeof resolve;
|
|
154
175
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const immerify: <T extends object>(modelRef:
|
|
1
|
+
import type { ConstantModelRef } from ".";
|
|
2
|
+
export declare const immerify: <T extends object>(modelRef: ConstantModelRef, objOrArr: T) => T;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Dayjs, type GetStateObject, type Upload } from "akanjs/base";
|
|
2
|
-
import { type BaseObject, type
|
|
2
|
+
import { type BaseObject, type ConstantModelRef, type DefaultOf, type DefaultOfSchema } from ".";
|
|
3
3
|
type Purified<O> = O extends BaseObject ? string : O extends BaseObject[] ? string[] : O extends Dayjs ? Dayjs : O extends object ? PurifiedModel<O> : O;
|
|
4
4
|
type PurifiedWithObjectToId<T, StateKeys extends keyof GetStateObject<T> = keyof GetStateObject<T>> = {
|
|
5
5
|
[K in StateKeys as null extends T[K] ? never : K]: Purified<T[K]>;
|
|
@@ -8,5 +8,6 @@ type PurifiedWithObjectToId<T, StateKeys extends keyof GetStateObject<T> = keyof
|
|
|
8
8
|
};
|
|
9
9
|
export type PurifiedModel<T> = T extends Upload[] ? FileList : T extends (infer S)[] ? PurifiedModel<S>[] : T extends string | number | boolean | Dayjs | File ? T : T extends Map<infer K, infer V> ? Map<K, PurifiedModel<V>> : PurifiedWithObjectToId<T>;
|
|
10
10
|
export type PurifyFunc<Input, _DefaultInput = DefaultOf<Input>, _PurifiedInput = PurifiedModel<Input>> = (self: _DefaultInput, isChild?: boolean) => _PurifiedInput | null;
|
|
11
|
-
export
|
|
11
|
+
export type PurifyFuncV2<Input, RelationKey extends string = never, _DefaultInput = DefaultOfSchema<Input, RelationKey>, _PurifiedInput = PurifiedModel<Input>> = (self: _DefaultInput, isChild?: boolean) => _PurifiedInput | null;
|
|
12
|
+
export declare const makePurify: <I>(modelRef: ConstantModelRef<I>) => PurifyFunc<I>;
|
|
12
13
|
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type Dayjs, type PrimitiveScalar } from "akanjs/base";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ConstantModelRef } from ".";
|
|
3
3
|
export type Serialized<O> = O extends (infer V)[] ? Serialized<V>[] : O extends Dayjs ? Date : O extends Map<infer K, infer V> ? {
|
|
4
4
|
[key in K & string]: Serialized<V>;
|
|
5
5
|
} : O extends object ? {
|
|
6
6
|
[K in keyof O]: Serialized<O[K]>;
|
|
7
7
|
} : O;
|
|
8
|
-
export declare const serialize: (argRef:
|
|
8
|
+
export declare const serialize: (argRef: ConstantModelRef | PrimitiveScalar, arrDepth: number, value: unknown, serializeType: "input" | "object" | undefined, { nullable, key }: {
|
|
9
9
|
nullable?: boolean;
|
|
10
10
|
key?: string;
|
|
11
11
|
}) => object[] | null;
|
|
@@ -14,6 +14,9 @@ export type FieldState<T> = T extends {
|
|
|
14
14
|
export type DefaultOf<S> = GetStateObject<{
|
|
15
15
|
[K in keyof S]: FieldState<S[K]>;
|
|
16
16
|
}>;
|
|
17
|
+
export type DefaultOfSchema<Schema, RelationKey = never> = [RelationKey] extends [never] ? Schema : {
|
|
18
|
+
[K in keyof Schema]: Schema[K] | (K extends RelationKey ? null : never);
|
|
19
|
+
};
|
|
17
20
|
export type GetPlainObject<T, O extends string> = Omit<{
|
|
18
21
|
[K in keyof T as T[K] extends (...args: never[]) => unknown ? never : K extends "set" | "save" | "refresh" ? never : K]: T[K];
|
|
19
22
|
}, O>;
|
|
@@ -67,7 +70,9 @@ export declare const DEFAULT_PAGE_SIZE = 20;
|
|
|
67
70
|
export interface TextDoc {
|
|
68
71
|
[key: string]: string | TextDoc;
|
|
69
72
|
}
|
|
70
|
-
export type NonFunctionalKeys<T> =
|
|
73
|
+
export type NonFunctionalKeys<T> = {
|
|
74
|
+
[K in keyof T]: T[K] extends (...args: never[]) => unknown ? never : K;
|
|
75
|
+
}[keyof T];
|
|
71
76
|
export declare const unsetDate: Dayjs;
|
|
72
77
|
export declare const MAX_INT = 2147483647;
|
|
73
78
|
declare const Responsive_base: import("akanjs/base").EnumInstance<"responsive", "xl" | "lg" | "md" | "sm" | "xs">;
|
package/types/constant/via.d.ts
CHANGED
|
@@ -1,19 +1,70 @@
|
|
|
1
|
-
import { type Cls, type EnumInstance, FIELD_META, type
|
|
2
|
-
import {
|
|
3
|
-
import { type PurifyFunc } from "./purify.d.ts";
|
|
4
|
-
import type { BaseInsight, BaseObject, ConstantType, DefaultOf, NonFunctionalKeys } from "./types.d.ts";
|
|
1
|
+
import { CLIENT_VALUE, type Cls, DEFAULT_VALUE, type EnumInstance, FIELD_META, type ObjectAssign, type ObjectAssignKeyOfObjects, PURIFIED_VALUE, SERVER_VALUE } from "akanjs/base";
|
|
2
|
+
import { type ExtractFieldInfoObject, type FieldBuilder, type FieldInfoObject, type FieldInfoObjectToFieldObject, type FieldObject, type FieldResolver } from "./fieldInfo.d.ts";
|
|
3
|
+
import { type PurifiedModel, type PurifyFunc } from "./purify.d.ts";
|
|
4
|
+
import type { BaseInsight, BaseObject, ConstantType, DefaultOf, DefaultOfSchema, NonFunctionalKeys } from "./types.d.ts";
|
|
5
5
|
type BaseFields = "id" | "createdAt" | "updatedAt" | "removedAt";
|
|
6
6
|
type OmitBase<T> = Omit<T, BaseFields>;
|
|
7
|
+
type MergeOwnSchemas<Models extends object[]> = ObjectAssignKeyOfObjects<Models, "_OwnSchema">;
|
|
8
|
+
type MergeOwnFieldObjects<Models extends object[]> = ObjectAssignKeyOfObjects<Models, "_OwnFieldObj">;
|
|
9
|
+
type MergeWithOwnSchemas<Models extends object[], OwnSchema extends object> = ObjectAssign<[
|
|
10
|
+
MergeOwnSchemas<Models>,
|
|
11
|
+
OwnSchema
|
|
12
|
+
]>;
|
|
13
|
+
type MergeWithOwnFieldObjects<Models extends object[], OwnFieldObj extends object> = ObjectAssign<[
|
|
14
|
+
MergeOwnFieldObjects<Models>,
|
|
15
|
+
OwnFieldObj
|
|
16
|
+
]>;
|
|
17
|
+
type BuiltSchema<BuildField extends (builder: FieldBuilder) => FieldInfoObject> = ExtractFieldInfoObject<ReturnType<BuildField>>;
|
|
18
|
+
type BuiltFieldObject<BuildField extends (builder: FieldBuilder) => FieldInfoObject> = FieldInfoObjectToFieldObject<ReturnType<BuildField>>;
|
|
19
|
+
type ResolvedSchema<ResolveField extends (resolve: FieldResolver) => FieldInfoObject> = ExtractFieldInfoObject<ReturnType<ResolveField>>;
|
|
20
|
+
type ResolvedFieldObject<ResolveField extends (resolve: FieldResolver) => FieldInfoObject> = FieldInfoObjectToFieldObject<ReturnType<ResolveField>>;
|
|
21
|
+
type ConstantSetReturn<Self, Schema> = Self extends Schema & ConstantMethods<Schema> & infer Model ? unknown extends Model ? Self : Model : Self;
|
|
7
22
|
export interface ConstantMethods<Schema = any> {
|
|
8
|
-
set:
|
|
23
|
+
set<Self extends Schema & ConstantMethods<Schema>>(this: Self, obj: Partial<Schema>): ConstantSetReturn<Self, Schema>;
|
|
9
24
|
}
|
|
10
|
-
|
|
25
|
+
type DatabaseSchemaOf<Schema, HiddenKey> = {
|
|
26
|
+
[K in keyof Schema]: K extends HiddenKey ? NonNullable<Schema[K]> : Schema[K];
|
|
27
|
+
};
|
|
28
|
+
export interface ConstantStatics<Schema = any, OwnSchema = Schema, OwnFieldObj extends FieldObject = FieldObject, OptionalKey = never, RelationKey = never, PrimitiveKey = never, ScalarKey = never, EnumKey = never, MapKey = never, HiddenKey = never, SecretKey = never, ModelType extends ConstantType = ConstantType> {
|
|
29
|
+
[FIELD_META]: FieldObject;
|
|
30
|
+
getDefault: () => DefaultOfSchema<Schema, RelationKey>;
|
|
31
|
+
purify: PurifyFunc<Schema>;
|
|
32
|
+
modelType: ConstantType;
|
|
33
|
+
children: Set<ConstantModelRef>;
|
|
34
|
+
relations: Set<ConstantModelRef>;
|
|
35
|
+
enums: Set<EnumInstance>;
|
|
36
|
+
text: {
|
|
37
|
+
search: Set<string>;
|
|
38
|
+
filter: Set<string>;
|
|
39
|
+
children: {
|
|
40
|
+
search: Set<string>;
|
|
41
|
+
filter: Set<string>;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
_OptionalKey: OptionalKey;
|
|
45
|
+
_RelationKey: RelationKey;
|
|
46
|
+
_PrimitiveKey: PrimitiveKey;
|
|
47
|
+
_ScalarKey: ScalarKey;
|
|
48
|
+
_EnumKey: EnumKey;
|
|
49
|
+
_MapKey: MapKey;
|
|
50
|
+
_HiddenKey: HiddenKey;
|
|
51
|
+
_SecretKey: SecretKey;
|
|
52
|
+
_OwnSchema: OwnSchema;
|
|
53
|
+
_OwnFieldObj: OwnFieldObj;
|
|
54
|
+
_DatabaseSchema: DatabaseSchemaOf<Schema, HiddenKey>;
|
|
55
|
+
_ModelType: ModelType;
|
|
56
|
+
[SERVER_VALUE]: Schema;
|
|
57
|
+
[CLIENT_VALUE]: Schema;
|
|
58
|
+
[DEFAULT_VALUE]: DefaultOfSchema<Schema, RelationKey>;
|
|
59
|
+
[PURIFIED_VALUE]: PurifiedModel<Schema>;
|
|
60
|
+
}
|
|
61
|
+
export interface DatabaseConstantStatics<Schema = any, FieldObj extends FieldObject = FieldObject> {
|
|
11
62
|
[FIELD_META]: FieldObj;
|
|
12
63
|
getDefault: () => DefaultOf<Schema>;
|
|
13
64
|
purify: PurifyFunc<Schema>;
|
|
14
65
|
modelType: ConstantType;
|
|
15
|
-
children: Set<
|
|
16
|
-
relations: Set<
|
|
66
|
+
children: Set<ConstantModelRef>;
|
|
67
|
+
relations: Set<ConstantModelRef>;
|
|
17
68
|
enums: Set<EnumInstance>;
|
|
18
69
|
text: {
|
|
19
70
|
search: Set<string>;
|
|
@@ -24,32 +75,102 @@ export interface ConstantStatics<Schema = any, FieldObj extends FieldObject = Fi
|
|
|
24
75
|
};
|
|
25
76
|
};
|
|
26
77
|
_DatabaseSchema: {
|
|
27
|
-
[K in keyof Schema]: K extends keyof FieldObj ? FieldObj[K] extends
|
|
78
|
+
[K in keyof Schema]: K extends keyof FieldObj ? FieldObj[K]["fieldType"] extends "hidden" ? NonNullable<Schema[K]> : Schema[K] : Schema[K];
|
|
28
79
|
};
|
|
29
80
|
}
|
|
30
|
-
export type
|
|
81
|
+
export type ConstantModelRef<Schema = any, FieldObj extends FieldObject = FieldObject, ModelType extends ConstantType = ConstantType> = Cls<Schema, {
|
|
82
|
+
[FIELD_META]: FieldObj;
|
|
83
|
+
modelType: ModelType;
|
|
84
|
+
children: Set<ConstantModelRef>;
|
|
85
|
+
relations: Set<ConstantModelRef>;
|
|
86
|
+
enums: Set<EnumInstance>;
|
|
87
|
+
text: {
|
|
88
|
+
search: Set<string>;
|
|
89
|
+
filter: Set<string>;
|
|
90
|
+
children: {
|
|
91
|
+
search: Set<string>;
|
|
92
|
+
filter: Set<string>;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
}>;
|
|
96
|
+
export type DocumentConstantModelRef<Schema = any, FieldObj extends FieldObject = FieldObject, ModelType extends ConstantType = ConstantType, DatabaseSchema = DatabaseSchemaOf<Schema, never>> = Cls<Schema, {
|
|
97
|
+
[FIELD_META]: FieldObj;
|
|
98
|
+
modelType: ModelType;
|
|
99
|
+
_DatabaseSchema: DatabaseSchema;
|
|
100
|
+
_ModelType: ModelType;
|
|
101
|
+
}>;
|
|
102
|
+
type FieldFlag = "nullable" | "_isRelation" | "_isPrimitive" | "_isScalar" | "_isEnum" | "_isHidden" | "_isSecret" | "_isMap";
|
|
103
|
+
type TrueFieldFlag<Flag extends FieldFlag> = {
|
|
104
|
+
readonly [K in Flag]: true;
|
|
105
|
+
};
|
|
106
|
+
type KeysByFlag<FieldObj extends FieldObject, Flag extends FieldFlag> = {
|
|
107
|
+
[K in keyof FieldObj]: FieldObj[K] extends TrueFieldFlag<Flag> ? K : never;
|
|
108
|
+
}[keyof FieldObj];
|
|
109
|
+
type OptionalKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "nullable">;
|
|
110
|
+
type RelationKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isRelation">;
|
|
111
|
+
type PrimitiveKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isPrimitive">;
|
|
112
|
+
type ScalarKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isScalar">;
|
|
113
|
+
type EnumKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isEnum">;
|
|
114
|
+
type HiddenKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isHidden">;
|
|
115
|
+
type SecretKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isSecret">;
|
|
116
|
+
type MapKeys<FieldObj extends FieldObject> = KeysByFlag<FieldObj, "_isMap">;
|
|
117
|
+
type ConstantKeyChannelMap = {
|
|
118
|
+
optional: unknown;
|
|
119
|
+
relation: unknown;
|
|
120
|
+
primitive: unknown;
|
|
121
|
+
scalar: unknown;
|
|
122
|
+
enum: unknown;
|
|
123
|
+
map: unknown;
|
|
124
|
+
hidden: unknown;
|
|
125
|
+
secret: unknown;
|
|
126
|
+
};
|
|
127
|
+
type IsBroadFieldObject<FieldObj extends FieldObject> = string extends keyof FieldObj ? true : false;
|
|
128
|
+
type ConstantKeyChannels<FieldObj extends FieldObject> = IsBroadFieldObject<FieldObj> extends true ? {
|
|
129
|
+
optional: never;
|
|
130
|
+
relation: never;
|
|
131
|
+
primitive: never;
|
|
132
|
+
scalar: never;
|
|
133
|
+
enum: never;
|
|
134
|
+
map: never;
|
|
135
|
+
hidden: never;
|
|
136
|
+
secret: never;
|
|
137
|
+
} : {
|
|
138
|
+
optional: OptionalKeys<FieldObj>;
|
|
139
|
+
relation: RelationKeys<FieldObj>;
|
|
140
|
+
primitive: PrimitiveKeys<FieldObj>;
|
|
141
|
+
scalar: ScalarKeys<FieldObj>;
|
|
142
|
+
enum: EnumKeys<FieldObj>;
|
|
143
|
+
map: MapKeys<FieldObj>;
|
|
144
|
+
hidden: HiddenKeys<FieldObj>;
|
|
145
|
+
secret: SecretKeys<FieldObj>;
|
|
146
|
+
};
|
|
147
|
+
export type ConstantCls<Schema = any, FieldObj extends FieldObject = FieldObject, OwnSchema = Schema, OwnFieldObj extends FieldObject = FieldObj, ModelType extends ConstantType = ConstantType, _Channels extends ConstantKeyChannelMap = ConstantKeyChannels<FieldObj>> = (new (obj?: Partial<Schema>) => Schema & ConstantMethods<Schema>) & ConstantStatics<Schema, OwnSchema, OwnFieldObj, _Channels["optional"], _Channels["relation"], _Channels["primitive"], _Channels["scalar"], _Channels["enum"], _Channels["map"], _Channels["hidden"], _Channels["secret"], ModelType>;
|
|
31
148
|
declare global {
|
|
32
|
-
interface DateConstructor extends
|
|
149
|
+
interface DateConstructor extends DatabaseConstantStatics<unknown> {
|
|
33
150
|
}
|
|
34
|
-
interface StringConstructor extends
|
|
151
|
+
interface StringConstructor extends DatabaseConstantStatics<unknown> {
|
|
35
152
|
}
|
|
36
|
-
interface BooleanConstructor extends
|
|
153
|
+
interface BooleanConstructor extends DatabaseConstantStatics<unknown> {
|
|
37
154
|
}
|
|
38
|
-
interface MapConstructor extends
|
|
155
|
+
interface MapConstructor extends DatabaseConstantStatics<unknown> {
|
|
39
156
|
}
|
|
40
157
|
}
|
|
41
158
|
/** Builds Akan constant models such as scalar, input, object, light, full, and insight classes. */
|
|
42
|
-
export declare function via<Obj extends BaseObject, ObjFieldObj extends FieldObject, K extends NonFunctionalKeys<OmitBase<Obj>>, ResolveField extends (resolve: FieldResolver) => FieldInfoObject, LightModels extends Cls[],
|
|
159
|
+
export declare function via<Obj extends BaseObject, ObjFieldObj extends FieldObject, K extends NonFunctionalKeys<OmitBase<Obj>>, ResolveField extends (resolve: FieldResolver) => FieldInfoObject, LightModels extends Cls[], _DirectSchema extends object = ObjectAssign<[Pick<Obj, K> & BaseObject, ResolvedSchema<ResolveField>]>, _Schema extends object = MergeWithOwnSchemas<LightModels, _DirectSchema>, _DirectFieldObj extends FieldObject = ObjectAssign<[
|
|
160
|
+
Pick<ObjFieldObj, K & keyof ObjFieldObj>,
|
|
161
|
+
ResolvedFieldObject<ResolveField>
|
|
162
|
+
]>, _FieldObj extends FieldObject = MergeWithOwnFieldObjects<LightModels, _DirectFieldObj> & FieldObject>(modelRef: Cls<Obj, {
|
|
43
163
|
[FIELD_META]: ObjFieldObj;
|
|
44
|
-
}>, fields: readonly K[], resolveField: ResolveField, ...lightModelRefs: LightModels): ConstantCls<_Schema, _FieldObj>;
|
|
45
|
-
export declare function via<BuildField extends (builder: FieldBuilder) => FieldInfoObject,
|
|
46
|
-
export declare function via<
|
|
47
|
-
export declare function via<
|
|
164
|
+
}>, fields: readonly K[], resolveField: ResolveField, ...lightModelRefs: LightModels): ConstantCls<_Schema, _FieldObj, _Schema, _FieldObj, "light">;
|
|
165
|
+
export declare function via<BuildField extends (builder: FieldBuilder) => FieldInfoObject, _DirectSchema extends object = BuiltSchema<BuildField>, _DirectFieldObj extends FieldObject = BuiltFieldObject<BuildField>>(buildField: BuildField): ConstantCls<_DirectSchema, _DirectFieldObj, _DirectSchema, _DirectFieldObj, "input" | "scalar">;
|
|
166
|
+
export declare function via<BuildField extends (builder: FieldBuilder) => FieldInfoObject, FirstInput extends Cls, Inputs extends Cls[], _DirectSchema extends object = BuiltSchema<BuildField>, _InputRefs extends Cls[] = [FirstInput, ...Inputs], _Schema extends object = MergeWithOwnSchemas<_InputRefs, _DirectSchema>, _DirectFieldObj extends FieldObject = BuiltFieldObject<BuildField>, _FieldObj extends FieldObject = MergeWithOwnFieldObjects<_InputRefs, _DirectFieldObj> & FieldObject>(buildField: BuildField, firstExtendInputRef: FirstInput, ...extendInputRefs: Inputs): ConstantCls<_Schema, _FieldObj, _Schema, _FieldObj, "input">;
|
|
167
|
+
export declare function via<Full extends BaseObject, BuildField extends (builder: FieldBuilder) => FieldInfoObject, Insights extends Cls[], _DirectSchema extends object = ObjectAssign<[BaseInsight, BuiltSchema<BuildField>]>, _Schema extends object = MergeWithOwnSchemas<Insights, _DirectSchema>, _DirectFieldObj extends FieldObject = BuiltFieldObject<BuildField>, _FieldObj extends FieldObject = MergeWithOwnFieldObjects<Insights, _DirectFieldObj> & FieldObject>(modelRef: Cls<Full>, buildField: BuildField, ...extendInsightRefs: Insights): ConstantCls<_Schema, _FieldObj, _Schema, _FieldObj, "insight">;
|
|
168
|
+
export declare function via<Input, InputFieldObj extends FieldObject, BuildField extends (builder: FieldBuilder) => FieldInfoObject, ObjectModels extends Cls[], _DirectSchema extends object = ObjectAssign<[Input & object, BaseObject, BuiltSchema<BuildField>]>, _Schema extends object = MergeWithOwnSchemas<ObjectModels, _DirectSchema>, _DirectFieldObj extends FieldObject = ObjectAssign<[InputFieldObj, BuiltFieldObject<BuildField>]>, _FieldObj extends FieldObject = MergeWithOwnFieldObjects<ObjectModels, _DirectFieldObj> & FieldObject>(inputRef: Cls<Input, {
|
|
48
169
|
[FIELD_META]: InputFieldObj;
|
|
49
|
-
}>, buildField: BuildField, ...extendObjectRefs: ObjectModels): ConstantCls<_Schema, _FieldObj>;
|
|
50
|
-
export declare function via<Obj, ObjFieldObj extends FieldObject, Light, LightFieldObj extends FieldObject, ResolveField extends (resolve: FieldResolver) => FieldInfoObject, FullModels extends Cls[],
|
|
170
|
+
}>, buildField: BuildField, ...extendObjectRefs: ObjectModels): ConstantCls<_Schema, _FieldObj, _Schema, _FieldObj, "object">;
|
|
171
|
+
export declare function via<Obj, ObjFieldObj extends FieldObject, Light, LightFieldObj extends FieldObject, ResolveField extends (resolve: FieldResolver) => FieldInfoObject, FullModels extends Cls[], _DirectSchema extends object = ObjectAssign<[Obj & object, Light & object, ResolvedSchema<ResolveField>]>, _Schema extends object = MergeWithOwnSchemas<FullModels, _DirectSchema>, _DirectFieldObj extends FieldObject = ObjectAssign<[ObjFieldObj, LightFieldObj, ResolvedFieldObject<ResolveField>]>, _FieldObj extends FieldObject = MergeWithOwnFieldObjects<FullModels, _DirectFieldObj> & FieldObject>(objectRef: Cls<Obj, {
|
|
51
172
|
[FIELD_META]: ObjFieldObj;
|
|
52
173
|
}>, lightModelRef: Cls<Light, {
|
|
53
174
|
[FIELD_META]: LightFieldObj;
|
|
54
|
-
}>, resolveField: ResolveField, ...fullModelRefs: FullModels): ConstantCls<_Schema, _FieldObj>;
|
|
175
|
+
}>, resolveField: ResolveField, ...fullModelRefs: FullModels): ConstantCls<_Schema, _FieldObj, _Schema, _FieldObj, "full">;
|
|
55
176
|
export {};
|