@goatlab/fluent 0.7.5 → 0.7.10
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/BaseConnector.d.ts +8 -31
- package/dist/BaseConnector.js +11 -104
- package/dist/FluentConnectorInterface.d.ts +17 -0
- package/dist/FluentConnectorInterface.js +2 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +8 -12
- package/dist/TypeOrmConnector/TypeOrmConnector.js +183 -546
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +7 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +148 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +6 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +34 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +4 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +12 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +6 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +166 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +8 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +200 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +6 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +207 -0
- package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +3 -3
- package/dist/TypeOrmConnector/test/basic/goat.entity.js +1 -1
- package/dist/TypeOrmConnector/test/docker/docker.d.ts +1 -1
- package/dist/TypeOrmConnector/test/docker/docker.js +3 -4
- package/dist/TypeOrmConnector/test/docker/mongo.d.ts +16 -0
- package/dist/TypeOrmConnector/test/docker/mongo.js +93 -0
- package/dist/TypeOrmConnector/test/docker/mysql.js +1 -1
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +4 -2
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +6 -1
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +3 -2
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +3 -1
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +2 -2
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +2 -1
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +6 -2
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +10 -1
- package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +1 -1
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +3 -2
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +3 -1
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +2 -2
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +2 -1
- package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -1
- package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -8
- package/dist/TypeOrmConnector/test/relations/car/car.output.schema.d.ts +511 -0
- package/dist/TypeOrmConnector/test/relations/car/car.output.schema.js +8 -0
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +4 -2
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +6 -1
- package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +2 -25
- package/dist/TypeOrmConnector/test/relations/car/car.schema.js +3 -8
- package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +1 -1
- package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +435 -35
- package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.d.ts +152 -0
- package/dist/TypeOrmConnector/test/relations/roles/role.output.schema.js +14 -0
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +2 -25
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +2 -10
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +3 -2
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +3 -1
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +2 -2
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +2 -1
- package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +465 -69
- package/dist/TypeOrmConnector/test/relations/user/user.schema.js +54 -5
- package/dist/TypeOrmConnector/util/clearEmpties.d.ts +1 -0
- package/dist/TypeOrmConnector/util/clearEmpties.js +25 -0
- package/dist/TypeOrmConnector/util/extractConditions.d.ts +6 -0
- package/dist/TypeOrmConnector/util/extractConditions.js +80 -0
- package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
- package/dist/TypeOrmConnector/util/extractInclude.js +25 -0
- package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
- package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +42 -0
- package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +4 -0
- package/dist/TypeOrmConnector/util/extractOrderBy.js +18 -0
- package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
- package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +26 -0
- package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +1 -0
- package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +20 -0
- package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
- package/dist/TypeOrmConnector/util/isAnyObject.js +7 -0
- package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
- package/dist/TypeOrmConnector/util/nestQueryResults.js +31 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +2 -1
- package/dist/loadRelations.js +8 -10
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +37 -20
- package/package.json +4 -3
- package/CHANGELOG.md +0 -1072
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +0 -4
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +0 -43
package/dist/types.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { ObjectID } from 'bson';
|
|
2
2
|
export interface AnyObject {
|
|
3
|
-
id?: string;
|
|
4
|
-
_id?: string;
|
|
5
3
|
[key: string]: any;
|
|
6
4
|
}
|
|
7
5
|
declare type Unpacked<T> = T extends (infer U)[] ? U : T;
|
|
6
|
+
export declare type ExpandRecursively<T> = T extends (...args: infer A) => infer R ? (...args: ExpandRecursively<A>) => ExpandRecursively<R> : T extends object ? T extends infer O ? O extends any[] ? {
|
|
7
|
+
[K in keyof Unpacked<O>]: ExpandRecursively<Unpacked<O>[K]>;
|
|
8
|
+
}[] : {
|
|
9
|
+
[K in keyof O]: ExpandRecursively<O[K]>;
|
|
10
|
+
} : never : T;
|
|
8
11
|
export declare type Concrete<Type> = {
|
|
9
12
|
[Property in keyof Type]-?: Type[Property];
|
|
10
13
|
};
|
|
14
|
+
export declare type Subset<T, U> = {
|
|
15
|
+
[key in keyof T]: key extends keyof U ? T[key] : never;
|
|
16
|
+
};
|
|
11
17
|
export declare type QueryFieldSelector<T> = Partial<{
|
|
12
|
-
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Unpacked<Partial<QueryFieldSelector<Concrete<T>[K]>>> :
|
|
18
|
+
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? true | Unpacked<Partial<QueryFieldSelector<Concrete<T>[K]>>> : true | undefined;
|
|
13
19
|
}>;
|
|
14
20
|
export declare type QueryOrderSelector<T> = Partial<{
|
|
15
21
|
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Partial<QueryOrderSelector<Concrete<T>[K]>> : 'asc' | 'desc' | undefined;
|
|
@@ -18,14 +24,16 @@ export declare type QueryOperations<T> = {
|
|
|
18
24
|
[key in LogicOperator]: key extends LogicOperator.in ? T[] : key extends LogicOperator.notIn ? T[] : T;
|
|
19
25
|
};
|
|
20
26
|
export declare type QueryWhereFitler<T> = Partial<{
|
|
21
|
-
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Partial<QueryWhereFitler<Concrete<T>[K]
|
|
27
|
+
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Unpacked<Partial<QueryWhereFitler<Concrete<T>[K]>>> : Unpacked<Partial<QueryOperations<Concrete<T>[K]>>> | T[K];
|
|
22
28
|
}>;
|
|
23
29
|
export declare type QueryInsert<T> = {
|
|
24
30
|
[K in keyof T]: T[K] extends object ? QueryInsert<T[K]> : T[K];
|
|
25
31
|
};
|
|
26
32
|
export declare type ModelRelation<T> = T;
|
|
27
33
|
export declare type QueryIncludeRelation<T> = {
|
|
28
|
-
[K in keyof Partial<T>]: FluentQuery<Unpacked<T[K]>>
|
|
34
|
+
[K in keyof Partial<T>]: (FluentQuery<Unpacked<T[K]>> & {
|
|
35
|
+
withPivot?: true;
|
|
36
|
+
}) | true;
|
|
29
37
|
};
|
|
30
38
|
export declare type FluentQuery<T> = {
|
|
31
39
|
select?: QueryFieldSelector<T>;
|
|
@@ -36,29 +44,38 @@ export declare type FluentQuery<T> = {
|
|
|
36
44
|
orderBy?: QueryOrderSelector<T>[];
|
|
37
45
|
limit?: number;
|
|
38
46
|
offset?: number;
|
|
47
|
+
take?: number;
|
|
39
48
|
include?: QueryIncludeRelation<T>;
|
|
40
49
|
paginated?: Paginator;
|
|
41
50
|
};
|
|
42
51
|
export declare type AddUndefinedIfNullable<T> = T extends null | undefined ? undefined : never;
|
|
43
|
-
export declare type
|
|
44
|
-
[P in keyof T['
|
|
45
|
-
|
|
46
|
-
}
|
|
52
|
+
export declare type GetSelectedFromInclude<T extends FluentQuery<Model>, Model> = {
|
|
53
|
+
[P in keyof T['include']]: T['include'][P] extends object ? NonNullable<Model[P]> extends any[] ? T['include'][P] extends {
|
|
54
|
+
withPivot: true;
|
|
55
|
+
} ? (QueryOutput<T['include'][P], Unpacked<NonNullable<Model[P]>>> & {
|
|
56
|
+
pivot: AnyObject;
|
|
57
|
+
})[] | AddUndefinedIfNullable<Model[P]> : (QueryOutput<T['include'][P], Unpacked<NonNullable<Model[P]>>> & {
|
|
58
|
+
pivot: AnyObject;
|
|
59
|
+
})[] | AddUndefinedIfNullable<Model[P]> : T['include'][P] extends {
|
|
60
|
+
withPivot: true;
|
|
61
|
+
} ? (QueryOutput<T['include'][P], Unpacked<NonNullable<Model[P]>>> & {
|
|
62
|
+
pivot: AnyObject;
|
|
63
|
+
}) | AddUndefinedIfNullable<Model[P]> : QueryOutput<T['include'][P], Unpacked<NonNullable<Model[P]>>> | AddUndefinedIfNullable<Model[P]> : Model[P];
|
|
47
64
|
};
|
|
48
|
-
export declare type
|
|
49
|
-
select: T['select']
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
export declare type
|
|
65
|
+
export declare type GetSelectedFromObject<T extends FluentQuery<Model>, Model> = {
|
|
66
|
+
[P in keyof T['select']]: T['select'][P] extends object ? NonNullable<Model[P]> extends any[] ? QueryOutput<{
|
|
67
|
+
select: T['select'][P];
|
|
68
|
+
}, Unpacked<NonNullable<Model[P]>>>[] | AddUndefinedIfNullable<Model[P]> : QueryOutput<{
|
|
69
|
+
select: T['select'][P];
|
|
70
|
+
}, Unpacked<NonNullable<Model[P]>>> | AddUndefinedIfNullable<Model[P]> : Model[P];
|
|
71
|
+
} & GetSelectedFromInclude<T, Model>;
|
|
72
|
+
export declare type QueryOutput<T extends FluentQuery<Model>, Model> = ExpandRecursively<T extends {
|
|
56
73
|
select: T['select'];
|
|
57
74
|
} ? T extends {
|
|
58
75
|
paginated: T['paginated'];
|
|
59
|
-
} ? PaginatedData<GetSelectedFromObject<T, Model
|
|
76
|
+
} ? PaginatedData<GetSelectedFromObject<T, Model>> : ExpandRecursively<GetSelectedFromObject<T, Model>> : T extends {
|
|
60
77
|
paginated: T['paginated'];
|
|
61
|
-
} ? PaginatedData<
|
|
78
|
+
} ? PaginatedData<Model> : Model & GetSelectedFromInclude<T, Model>>;
|
|
62
79
|
export interface PaginatedData<T> {
|
|
63
80
|
currentPage: number;
|
|
64
81
|
data: T[];
|
|
@@ -103,7 +120,7 @@ export declare enum LogicOperator {
|
|
|
103
120
|
notExists = "notExists"
|
|
104
121
|
}
|
|
105
122
|
export declare type FluentHasManyRelatedAttribute<T> = Partial<{
|
|
106
|
-
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Unpacked<Partial<FluentHasManyRelatedAttribute<Concrete<T>[K]>>> |
|
|
123
|
+
[K in keyof Concrete<T>]: Concrete<T>[K] extends object ? Unpacked<Partial<FluentHasManyRelatedAttribute<Concrete<T>[K]>>> | true : true | undefined;
|
|
107
124
|
}>;
|
|
108
125
|
export declare type FluentHasManyParams<T extends FluentHasManyParams<T>> = {
|
|
109
126
|
repository: new () => InstanceType<T['repository']>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goatlab/fluent",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.10",
|
|
4
4
|
"description": "Readable query Interface & API generator for TS and Node",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"install-p": "yarn",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"build": "tsc"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@goatlab/js-utils": "^0.8.
|
|
19
|
+
"@goatlab/js-utils": "^0.8.6",
|
|
20
20
|
"@loopback/metadata": "^4.1.2",
|
|
21
21
|
"bson": "^4.6.2",
|
|
22
22
|
"graphql": "^16.3.0",
|
|
@@ -27,13 +27,14 @@
|
|
|
27
27
|
"zod": "^3.17.10"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
+
"@types/node": "^18.7.13",
|
|
30
31
|
"cross-spawn": "^7.0.3",
|
|
31
32
|
"detect-port": "^1.3.0",
|
|
32
33
|
"dotenv-cli": "^5.1.0",
|
|
33
34
|
"eslint": "^8.5.0",
|
|
34
35
|
"jest": "^27.5.1",
|
|
35
36
|
"modern-spawn": "^1.0.0",
|
|
36
|
-
"mongodb
|
|
37
|
+
"mongodb": "^4.9.0",
|
|
37
38
|
"mysql2": "^2.3.3",
|
|
38
39
|
"net": "^1.0.2",
|
|
39
40
|
"prettier": "^2.6.1",
|