@akanjs/constant 0.9.42 → 0.9.44
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/cjs/src/baseGql.js +104 -66
- package/cjs/src/classMeta.js +36 -21
- package/cjs/src/constantDecorator.js +30 -3
- package/cjs/src/fieldMeta.js +2 -2
- package/cjs/src/filterMeta.js +15 -3
- package/cjs/src/scalar.js +4 -11
- package/cjs/src/types.js +0 -6
- package/esm/src/baseGql.js +101 -64
- package/esm/src/classMeta.js +36 -21
- package/esm/src/constantDecorator.js +30 -3
- package/esm/src/fieldMeta.js +2 -2
- package/esm/src/filterMeta.js +15 -3
- package/esm/src/scalar.js +4 -11
- package/esm/src/types.js +0 -6
- package/package.json +1 -1
- package/src/baseGql.d.ts +7 -5
- package/src/classMeta.d.ts +3 -11
- package/src/constantDecorator.d.ts +21 -5
- package/src/filterMeta.d.ts +2 -2
- package/src/scalar.d.ts +14 -8
- package/src/types.d.ts +14 -23
package/src/scalar.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { type Dayjs, type Enum, Float, type GqlScalar, ID, Int, JSON, type SingleFieldType, type Type, Upload } from "@akanjs/base";
|
|
3
3
|
import type { AccumulatorOperator } from "mongoose";
|
|
4
|
-
import { type
|
|
4
|
+
import { type SortType } from "./types";
|
|
5
5
|
export declare const scalarExampleMap: Map<MapConstructor | typeof Int | typeof Upload | typeof Float | typeof ID | typeof JSON | StringConstructor | BooleanConstructor | DateConstructor, string | number | boolean | object>;
|
|
6
6
|
export declare const getScalarExample: (ref: GqlScalar) => string | number | boolean | object | null;
|
|
7
7
|
export declare const getGqlTypeStr: (ref: GqlScalar) => string;
|
|
@@ -9,7 +9,7 @@ export interface ConstantClassMeta {
|
|
|
9
9
|
refName: string;
|
|
10
10
|
modelRef: any;
|
|
11
11
|
type: "input" | "full" | "light" | "scalar";
|
|
12
|
-
modelType: "data" | "ephemeral" | "
|
|
12
|
+
modelType: "data" | "ephemeral" | "insight";
|
|
13
13
|
hasTextField: boolean;
|
|
14
14
|
}
|
|
15
15
|
export interface ConstantFilterMeta {
|
|
@@ -40,7 +40,11 @@ export interface FilterArgMeta extends FilterArgProps {
|
|
|
40
40
|
export declare const fieldTypes: readonly ["email", "password", "url"];
|
|
41
41
|
export type FieldType = (typeof fieldTypes)[number];
|
|
42
42
|
export type ReturnType<T extends SingleFieldType = SingleFieldType> = (of?: any) => T | [T] | [[T]] | Map<string, any>;
|
|
43
|
-
export interface ConstantFieldProps {
|
|
43
|
+
export interface ConstantFieldProps<Metadata extends {
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
} = {
|
|
46
|
+
[key: string]: any;
|
|
47
|
+
}> {
|
|
44
48
|
nullable?: boolean;
|
|
45
49
|
ref?: string;
|
|
46
50
|
refPath?: string;
|
|
@@ -55,14 +59,18 @@ export interface ConstantFieldProps {
|
|
|
55
59
|
select?: boolean;
|
|
56
60
|
minlength?: number;
|
|
57
61
|
maxlength?: number;
|
|
58
|
-
query?: QueryOf<any> | (() => QueryOf<any>);
|
|
59
62
|
accumulate?: AccumulatorOperator;
|
|
60
63
|
example?: string | number | boolean | Dayjs | string[] | number[] | boolean[] | Dayjs[];
|
|
61
64
|
of?: GqlScalar;
|
|
62
65
|
validate?: (value: any, model: any) => boolean;
|
|
63
66
|
text?: "search" | "filter";
|
|
67
|
+
meta?: Metadata;
|
|
64
68
|
}
|
|
65
|
-
export type ConstantFieldMeta
|
|
69
|
+
export type ConstantFieldMeta<Metadata extends {
|
|
70
|
+
[key: string]: any;
|
|
71
|
+
} = {
|
|
72
|
+
[key: string]: any;
|
|
73
|
+
}> = ConstantFieldProps<Metadata> & {
|
|
66
74
|
nullable: boolean;
|
|
67
75
|
default: any;
|
|
68
76
|
fieldType: "property" | "hidden" | "resolve";
|
|
@@ -78,6 +86,7 @@ export type ConstantFieldMeta = ConstantFieldProps & {
|
|
|
78
86
|
isArray: boolean;
|
|
79
87
|
optArrDepth: number;
|
|
80
88
|
isMap: boolean;
|
|
89
|
+
meta: Metadata;
|
|
81
90
|
};
|
|
82
91
|
export declare const getClassMeta: (modelRef: Type) => ConstantClassMeta;
|
|
83
92
|
export declare const getFieldMetas: (modelRef: Type) => ConstantFieldMeta[];
|
|
@@ -86,6 +95,3 @@ export declare const getFieldMetaMap: (modelRef: Type) => Map<string, ConstantFi
|
|
|
86
95
|
export declare const setFieldMetaMap: (modelRef: Type, metadataMap: Map<string, ConstantFieldMeta>) => void;
|
|
87
96
|
export declare const getFieldMetaMapOnPrototype: (prototype: object) => Map<string, ConstantFieldMeta>;
|
|
88
97
|
export declare const setFieldMetaMapOnPrototype: (prototype: object, metadataMap: Map<string, ConstantFieldMeta>) => void;
|
|
89
|
-
export declare const getQueryMap: (modelRef: Type) => {
|
|
90
|
-
[key: string]: QueryOf<any> | undefined | (() => QueryOf<any>);
|
|
91
|
-
};
|
package/src/types.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { type BaseObject, Dayjs, enumOf } from "@akanjs/base";
|
|
1
|
+
import { type BaseObject, Dayjs, enumOf, type GetStateObject } from "@akanjs/base";
|
|
2
2
|
import type { FilterQuery, HydratedDocument, ProjectionType } from "mongoose";
|
|
3
3
|
export type { FilterQuery as QueryOf };
|
|
4
|
-
type
|
|
5
|
-
type OptionalKeys<T> = T extends {
|
|
6
|
-
[key: string]: any;
|
|
7
|
-
} ? {
|
|
8
|
-
[K in keyof T]-?: null extends T[K] ? K : never;
|
|
9
|
-
}[keyof T] : never;
|
|
10
|
-
type ObjectToId<O, D = Dayjs> = O extends BaseObject ? string : O extends BaseObject[] ? string[] : O extends Dayjs ? D : O extends {
|
|
4
|
+
type ObjectToId<O> = O extends BaseObject ? string : O extends BaseObject[] ? string[] : O extends Dayjs ? Dayjs : O extends {
|
|
11
5
|
[key: string]: any;
|
|
12
6
|
} ? DocumentModel<O> : O;
|
|
7
|
+
type NullToUndefinedWithObjectToId<T, StateKeys extends keyof GetStateObject<T> = keyof GetStateObject<T>> = {
|
|
8
|
+
[K in StateKeys as null extends T[K] ? never : K]: ObjectToId<T[K]>;
|
|
9
|
+
} & {
|
|
10
|
+
[K in StateKeys as null extends T[K] ? K : never]?: ObjectToId<Exclude<T[K], null>> | undefined;
|
|
11
|
+
};
|
|
12
|
+
export type DocumentModel<T> = T extends (infer S)[] ? DocumentModel<S>[] : T extends string | number | boolean | Dayjs ? T : T extends Map<infer K, infer V> ? Map<K, DocumentModel<V>> : NullToUndefinedWithObjectToId<T>;
|
|
13
|
+
export type FieldState<T> = T extends {
|
|
14
|
+
id: string;
|
|
15
|
+
} ? T | null : T;
|
|
16
|
+
export type DefaultOf<S> = {
|
|
17
|
+
[K in keyof S]: FieldState<S[K]>;
|
|
18
|
+
};
|
|
13
19
|
export interface SortType {
|
|
14
20
|
[key: string]: {
|
|
15
21
|
[key: string]: number;
|
|
@@ -30,24 +36,9 @@ export interface FindQueryOption<Sort, Obj> {
|
|
|
30
36
|
sample?: boolean;
|
|
31
37
|
select?: ProjectionType<Obj>;
|
|
32
38
|
}
|
|
33
|
-
export type DocumentModel<T, D = Dayjs> = T extends (infer S)[] ? DocumentModel<S>[] : T extends string ? T : T extends number ? T : T extends boolean ? T : T extends Dayjs ? T : T extends Map<infer K, infer V> ? Map<K, DocumentModel<V, D>> : Optional<{
|
|
34
|
-
[K in keyof GetStateObject<T>]: T[K] extends infer S ? S extends null ? undefined : ObjectToId<T[K], D> : never;
|
|
35
|
-
}, OptionalKeys<GetStateObject<T>>>;
|
|
36
|
-
export interface ListOption {
|
|
37
|
-
limit?: number;
|
|
38
|
-
skip?: number;
|
|
39
|
-
sort?: string;
|
|
40
|
-
}
|
|
41
|
-
export declare const defaultListOption: ListOption;
|
|
42
39
|
export type GetPlainObject<T, O extends string> = Omit<{
|
|
43
40
|
[K in keyof T as T[K] extends (...args: any) => any ? never : K extends keyof HydratedDocument<any> ? never : K]: T[K];
|
|
44
41
|
}, O>;
|
|
45
|
-
export type GetStateObject<T> = Omit<{
|
|
46
|
-
[K in keyof T as T[K] extends (...args: any) => any ? never : K]: T[K];
|
|
47
|
-
}, "prototype">;
|
|
48
|
-
export type GetActionObject<T> = Omit<{
|
|
49
|
-
[K in keyof T as T[K] extends (...args: any) => any ? K : never]: T[K];
|
|
50
|
-
}, "prototype">;
|
|
51
42
|
export interface ProtoFile {
|
|
52
43
|
id: string;
|
|
53
44
|
filename: string;
|