@sprucelabs/data-stores 28.3.137 → 28.3.139
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/build/esm/types/query.types.d.ts +34 -13
- package/build/types/query.types.d.ts +34 -13
- package/package.json +2 -2
@@ -1,11 +1,10 @@
|
|
1
|
-
import { QuerySelector } from '../databases/mongo.types';
|
2
|
-
type QueryPredicate<Query, K extends keyof Query> = Query[K] | QuerySelector<Query[K]> | string;
|
1
|
+
import { QuerySelector, RootQuerySelector } from '../databases/mongo.types';
|
3
2
|
type Obj = Record<string, any>;
|
4
|
-
export type QueryBuilder<Query> = {
|
5
|
-
[K in
|
3
|
+
export type QueryBuilder<Query, Keys extends Paths<Query> = Paths<Query>> = {
|
4
|
+
[K in Keys]?: QuerySelector<TypeAtPath<Query, K>> | TypeAtPath<Query, K>;
|
6
5
|
} & {
|
7
6
|
id?: string | QuerySelector<string>;
|
8
|
-
}
|
7
|
+
} & RootQuerySelector<Query>;
|
9
8
|
export interface QuerySortField {
|
10
9
|
field: string;
|
11
10
|
direction: 'asc' | 'desc';
|
@@ -16,15 +15,37 @@ export interface QueryOptions {
|
|
16
15
|
sort?: QuerySortField[];
|
17
16
|
includeFields?: string[];
|
18
17
|
}
|
19
|
-
export type FlattenAndPathKeys<O extends Obj, T extends Obj = PathKeys<O>> = Flatten<T>;
|
20
|
-
export type Flatten<T extends Obj> = Pick<T, NonObjectKeysOf<T>> & UnionToIntersection<ObjectValuesOf<T>>;
|
21
18
|
export type PathKeys<Query extends Obj, Prefix extends string = ''> = {
|
22
19
|
[K in Extract<keyof Query, string> as `${Prefix}${K}`]: Query[K] extends Obj ? PathKeys<Query[K], `${K}.`> : Query[K];
|
23
20
|
};
|
24
|
-
type
|
25
|
-
type
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
|
22
|
+
type Prev = [
|
23
|
+
never,
|
24
|
+
0,
|
25
|
+
1,
|
26
|
+
2,
|
27
|
+
3,
|
28
|
+
4,
|
29
|
+
5,
|
30
|
+
6,
|
31
|
+
7,
|
32
|
+
8,
|
33
|
+
9,
|
34
|
+
10,
|
35
|
+
11,
|
36
|
+
12,
|
37
|
+
13,
|
38
|
+
14,
|
39
|
+
15,
|
40
|
+
16,
|
41
|
+
17,
|
42
|
+
18,
|
43
|
+
19,
|
44
|
+
20,
|
45
|
+
...0[]
|
46
|
+
];
|
47
|
+
type Paths<T, D extends number = 3> = [D] extends [never] ? never : T extends object ? {
|
48
|
+
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K], Prev[D]>> : never;
|
49
|
+
}[keyof T] : '';
|
50
|
+
type TypeAtPath<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
30
51
|
export {};
|
@@ -1,11 +1,10 @@
|
|
1
|
-
import { QuerySelector } from '../databases/mongo.types';
|
2
|
-
type QueryPredicate<Query, K extends keyof Query> = Query[K] | QuerySelector<Query[K]> | string;
|
1
|
+
import { QuerySelector, RootQuerySelector } from '../databases/mongo.types';
|
3
2
|
type Obj = Record<string, any>;
|
4
|
-
export type QueryBuilder<Query> = {
|
5
|
-
[K in
|
3
|
+
export type QueryBuilder<Query, Keys extends Paths<Query> = Paths<Query>> = {
|
4
|
+
[K in Keys]?: QuerySelector<TypeAtPath<Query, K>> | TypeAtPath<Query, K>;
|
6
5
|
} & {
|
7
6
|
id?: string | QuerySelector<string>;
|
8
|
-
}
|
7
|
+
} & RootQuerySelector<Query>;
|
9
8
|
export interface QuerySortField {
|
10
9
|
field: string;
|
11
10
|
direction: 'asc' | 'desc';
|
@@ -16,15 +15,37 @@ export interface QueryOptions {
|
|
16
15
|
sort?: QuerySortField[];
|
17
16
|
includeFields?: string[];
|
18
17
|
}
|
19
|
-
export type FlattenAndPathKeys<O extends Obj, T extends Obj = PathKeys<O>> = Flatten<T>;
|
20
|
-
export type Flatten<T extends Obj> = Pick<T, NonObjectKeysOf<T>> & UnionToIntersection<ObjectValuesOf<T>>;
|
21
18
|
export type PathKeys<Query extends Obj, Prefix extends string = ''> = {
|
22
19
|
[K in Extract<keyof Query, string> as `${Prefix}${K}`]: Query[K] extends Obj ? PathKeys<Query[K], `${K}.`> : Query[K];
|
23
20
|
};
|
24
|
-
type
|
25
|
-
type
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
|
22
|
+
type Prev = [
|
23
|
+
never,
|
24
|
+
0,
|
25
|
+
1,
|
26
|
+
2,
|
27
|
+
3,
|
28
|
+
4,
|
29
|
+
5,
|
30
|
+
6,
|
31
|
+
7,
|
32
|
+
8,
|
33
|
+
9,
|
34
|
+
10,
|
35
|
+
11,
|
36
|
+
12,
|
37
|
+
13,
|
38
|
+
14,
|
39
|
+
15,
|
40
|
+
16,
|
41
|
+
17,
|
42
|
+
18,
|
43
|
+
19,
|
44
|
+
20,
|
45
|
+
...0[]
|
46
|
+
];
|
47
|
+
type Paths<T, D extends number = 3> = [D] extends [never] ? never : T extends object ? {
|
48
|
+
[K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K], Prev[D]>> : never;
|
49
|
+
}[keyof T] : '';
|
50
|
+
type TypeAtPath<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TypeAtPath<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
30
51
|
export {};
|
package/package.json
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
"publishConfig": {
|
4
4
|
"access": "public"
|
5
5
|
},
|
6
|
-
"version": "28.3.
|
6
|
+
"version": "28.3.139",
|
7
7
|
"files": [
|
8
8
|
"build/**/*",
|
9
9
|
"!build/__tests__",
|
@@ -79,7 +79,7 @@
|
|
79
79
|
"@sprucelabs/resolve-path-aliases": "^2.0.456",
|
80
80
|
"@sprucelabs/semantic-release": "^5.0.2",
|
81
81
|
"@sprucelabs/test": "^9.0.50",
|
82
|
-
"@sprucelabs/test-utils": "^5.1.
|
82
|
+
"@sprucelabs/test-utils": "^5.1.430",
|
83
83
|
"@types/lodash": "^4.17.10",
|
84
84
|
"@types/node": "^22.7.5",
|
85
85
|
"chokidar-cli": "^3.0.0",
|