@nest-boot/graphql-connection 7.2.1 → 7.4.0
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/connection-query-builder.d.ts +1 -0
- package/dist/connection-query-builder.js +24 -54
- package/dist/connection-query-builder.js.map +1 -1
- package/dist/connection.builder.d.ts +8 -7
- package/dist/connection.builder.js +19 -157
- package/dist/connection.builder.js.map +1 -1
- package/dist/enums/index.d.ts +0 -1
- package/dist/enums/index.js +0 -1
- package/dist/enums/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/connection-args.interface.d.ts +2 -0
- package/dist/interfaces/connection-builder-options.interface.d.ts +4 -0
- package/dist/interfaces/{replacement-args.interface.js → connection-builder-options.interface.js} +1 -1
- package/dist/interfaces/connection-builder-options.interface.js.map +1 -0
- package/dist/interfaces/connection-metadata.interface.d.ts +5 -2
- package/dist/interfaces/field-options.interface.d.ts +7 -19
- package/dist/interfaces/index.d.ts +1 -1
- package/dist/interfaces/index.js +1 -1
- package/dist/interfaces/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/create-connection-args.d.ts +6 -0
- package/dist/utils/create-connection-args.js +80 -0
- package/dist/utils/create-connection-args.js.map +1 -0
- package/dist/utils/create-connection.d.ts +6 -0
- package/dist/utils/create-connection.js +55 -0
- package/dist/utils/create-connection.js.map +1 -0
- package/dist/utils/create-edge.d.ts +4 -0
- package/dist/utils/create-edge.js +37 -0
- package/dist/utils/create-edge.js.map +1 -0
- package/dist/utils/create-filter.d.ts +10 -0
- package/dist/utils/create-filter.js +69 -0
- package/dist/utils/create-filter.js.map +1 -0
- package/dist/utils/create-order.d.ts +8 -0
- package/dist/utils/create-order.js +50 -0
- package/dist/utils/create-order.js.map +1 -0
- package/dist/utils/index.d.ts +5 -1
- package/dist/utils/index.js +5 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +10 -8
- package/dist/enums/comparator-operator.enum.d.ts +0 -11
- package/dist/enums/comparator-operator.enum.js +0 -16
- package/dist/enums/comparator-operator.enum.js.map +0 -1
- package/dist/interfaces/replacement-args.interface.d.ts +0 -9
- package/dist/interfaces/replacement-args.interface.js.map +0 -1
- package/dist/interfaces/search-syntax-field-options.interface.d.ts +0 -12
- package/dist/interfaces/search-syntax-field-options.interface.js +0 -3
- package/dist/interfaces/search-syntax-field-options.interface.js.map +0 -1
- package/dist/scripts/generate-cst-dts.d.ts +0 -1
- package/dist/scripts/generate-cst-dts.js +0 -8
- package/dist/scripts/generate-cst-dts.js.map +0 -1
- package/dist/search-syntax.lexer.d.ts +0 -5
- package/dist/search-syntax.lexer.js +0 -13
- package/dist/search-syntax.lexer.js.map +0 -1
- package/dist/search-syntax.parser.d.ts +0 -6
- package/dist/search-syntax.parser.js +0 -91
- package/dist/search-syntax.parser.js.map +0 -1
- package/dist/search-syntax.visitor.d.ts +0 -24
- package/dist/search-syntax.visitor.js +0 -325
- package/dist/search-syntax.visitor.js.map +0 -1
- package/dist/tokens/Comma.d.ts +0 -1
- package/dist/tokens/Comma.js +0 -9
- package/dist/tokens/Comma.js.map +0 -1
- package/dist/tokens/Identifier.d.ts +0 -1
- package/dist/tokens/Identifier.js +0 -14
- package/dist/tokens/Identifier.js.map +0 -1
- package/dist/tokens/UnquotedLiteral.d.ts +0 -1
- package/dist/tokens/UnquotedLiteral.js +0 -11
- package/dist/tokens/UnquotedLiteral.js.map +0 -1
- package/dist/tokens/WhiteSpace.d.ts +0 -1
- package/dist/tokens/WhiteSpace.js +0 -12
- package/dist/tokens/WhiteSpace.js.map +0 -1
- package/dist/tokens/Wildcard.d.ts +0 -1
- package/dist/tokens/Wildcard.js +0 -9
- package/dist/tokens/Wildcard.js.map +0 -1
- package/dist/tokens/brackets/LeftBracket.d.ts +0 -1
- package/dist/tokens/brackets/LeftBracket.js +0 -9
- package/dist/tokens/brackets/LeftBracket.js.map +0 -1
- package/dist/tokens/brackets/RightBracket.d.ts +0 -1
- package/dist/tokens/brackets/RightBracket.js +0 -9
- package/dist/tokens/brackets/RightBracket.js.map +0 -1
- package/dist/tokens/brackets/index.d.ts +0 -3
- package/dist/tokens/brackets/index.js +0 -23
- package/dist/tokens/brackets/index.js.map +0 -1
- package/dist/tokens/comparators/Comparator.d.ts +0 -1
- package/dist/tokens/comparators/Comparator.js +0 -9
- package/dist/tokens/comparators/Comparator.js.map +0 -1
- package/dist/tokens/comparators/Equal.d.ts +0 -1
- package/dist/tokens/comparators/Equal.js +0 -11
- package/dist/tokens/comparators/Equal.js.map +0 -1
- package/dist/tokens/comparators/GreaterThan.d.ts +0 -1
- package/dist/tokens/comparators/GreaterThan.js +0 -11
- package/dist/tokens/comparators/GreaterThan.js.map +0 -1
- package/dist/tokens/comparators/GreaterThanOrEqual.d.ts +0 -1
- package/dist/tokens/comparators/GreaterThanOrEqual.js +0 -11
- package/dist/tokens/comparators/GreaterThanOrEqual.js.map +0 -1
- package/dist/tokens/comparators/LessThan.d.ts +0 -1
- package/dist/tokens/comparators/LessThan.js +0 -11
- package/dist/tokens/comparators/LessThan.js.map +0 -1
- package/dist/tokens/comparators/LessThanOrEqual.d.ts +0 -1
- package/dist/tokens/comparators/LessThanOrEqual.js +0 -11
- package/dist/tokens/comparators/LessThanOrEqual.js.map +0 -1
- package/dist/tokens/comparators/index.d.ts +0 -7
- package/dist/tokens/comparators/index.js +0 -38
- package/dist/tokens/comparators/index.js.map +0 -1
- package/dist/tokens/connectives/And.d.ts +0 -1
- package/dist/tokens/connectives/And.js +0 -11
- package/dist/tokens/connectives/And.js.map +0 -1
- package/dist/tokens/connectives/Not.d.ts +0 -1
- package/dist/tokens/connectives/Not.js +0 -11
- package/dist/tokens/connectives/Not.js.map +0 -1
- package/dist/tokens/connectives/Or.d.ts +0 -1
- package/dist/tokens/connectives/Or.js +0 -11
- package/dist/tokens/connectives/Or.js.map +0 -1
- package/dist/tokens/connectives/index.d.ts +0 -4
- package/dist/tokens/connectives/index.js +0 -25
- package/dist/tokens/connectives/index.js.map +0 -1
- package/dist/tokens/fields/Field.d.ts +0 -1
- package/dist/tokens/fields/Field.js +0 -9
- package/dist/tokens/fields/Field.js.map +0 -1
- package/dist/tokens/fields/NestedField.d.ts +0 -1
- package/dist/tokens/fields/NestedField.js +0 -13
- package/dist/tokens/fields/NestedField.js.map +0 -1
- package/dist/tokens/fields/index.d.ts +0 -3
- package/dist/tokens/fields/index.js +0 -23
- package/dist/tokens/fields/index.js.map +0 -1
- package/dist/tokens/index.d.ts +0 -1
- package/dist/tokens/index.js +0 -31
- package/dist/tokens/index.js.map +0 -1
- package/dist/tokens/values/Date.d.ts +0 -1
- package/dist/tokens/values/Date.js +0 -12
- package/dist/tokens/values/Date.js.map +0 -1
- package/dist/tokens/values/False.d.ts +0 -1
- package/dist/tokens/values/False.js +0 -13
- package/dist/tokens/values/False.js.map +0 -1
- package/dist/tokens/values/Null.d.ts +0 -1
- package/dist/tokens/values/Null.js +0 -13
- package/dist/tokens/values/Null.js.map +0 -1
- package/dist/tokens/values/Number.d.ts +0 -1
- package/dist/tokens/values/Number.js +0 -13
- package/dist/tokens/values/Number.js.map +0 -1
- package/dist/tokens/values/QuotedString.d.ts +0 -1
- package/dist/tokens/values/QuotedString.js +0 -11
- package/dist/tokens/values/QuotedString.js.map +0 -1
- package/dist/tokens/values/True.d.ts +0 -1
- package/dist/tokens/values/True.js +0 -13
- package/dist/tokens/values/True.js.map +0 -1
- package/dist/tokens/values/Value.d.ts +0 -1
- package/dist/tokens/values/Value.js +0 -9
- package/dist/tokens/values/Value.js.map +0 -1
- package/dist/tokens/values/index.d.ts +0 -7
- package/dist/tokens/values/index.js +0 -32
- package/dist/tokens/values/index.js.map +0 -1
- package/dist/utils/infer-type.d.ts +0 -1
- package/dist/utils/infer-type.js +0 -14
- package/dist/utils/infer-type.js.map +0 -1
|
@@ -17,6 +17,7 @@ export declare class ConnectionQueryBuilder<Entity extends object, Hint extends
|
|
|
17
17
|
private readonly optionFilterQuery;
|
|
18
18
|
private readonly cursorFilterQuery;
|
|
19
19
|
private readonly queryStringFilterQuery;
|
|
20
|
+
private readonly argsFilterQuery;
|
|
20
21
|
private readonly totalCountFilterQuery;
|
|
21
22
|
private readonly allFilterQuery;
|
|
22
23
|
constructor(entityManager: EntityManager, connectionClass: ConnectionClass<Entity>, args: ConnectionArgsInterface<Entity>, options?: ConnectionFindOptions<Entity, Hint, Fields, Excludes> | undefined);
|
|
@@ -8,35 +8,10 @@ const core_1 = require("@mikro-orm/core");
|
|
|
8
8
|
const compact_1 = __importDefault(require("lodash/compact"));
|
|
9
9
|
const get_1 = __importDefault(require("lodash/get"));
|
|
10
10
|
const set_1 = __importDefault(require("lodash/set"));
|
|
11
|
+
const search_syntax_1 = require("search-syntax");
|
|
11
12
|
const cursor_1 = require("./cursor");
|
|
12
13
|
const enums_1 = require("./enums");
|
|
13
14
|
const graphql_connection_constants_1 = require("./graphql-connection.constants");
|
|
14
|
-
const search_syntax_lexer_1 = require("./search-syntax.lexer");
|
|
15
|
-
const search_syntax_parser_1 = require("./search-syntax.parser");
|
|
16
|
-
const search_syntax_visitor_1 = require("./search-syntax.visitor");
|
|
17
|
-
function entityPropertyToSimpleType(type) {
|
|
18
|
-
switch (type) {
|
|
19
|
-
case "boolean":
|
|
20
|
-
case "BooleanType":
|
|
21
|
-
return "boolean";
|
|
22
|
-
case "number":
|
|
23
|
-
case "IntegerType":
|
|
24
|
-
case "SmallIntType":
|
|
25
|
-
case "MediumIntType":
|
|
26
|
-
case "FloatType":
|
|
27
|
-
case "DoubleType":
|
|
28
|
-
return "number";
|
|
29
|
-
case "Date":
|
|
30
|
-
case "DateType":
|
|
31
|
-
case "DateTimeType":
|
|
32
|
-
return "date";
|
|
33
|
-
case "bigint":
|
|
34
|
-
case "BigIntType":
|
|
35
|
-
return "bigint";
|
|
36
|
-
default:
|
|
37
|
-
return "string";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
15
|
class ConnectionQueryBuilder {
|
|
41
16
|
constructor(entityManager, connectionClass, args, options) {
|
|
42
17
|
this.entityManager = entityManager;
|
|
@@ -49,6 +24,7 @@ class ConnectionQueryBuilder {
|
|
|
49
24
|
this.optionFilterQuery = null;
|
|
50
25
|
this.cursorFilterQuery = null;
|
|
51
26
|
this.queryStringFilterQuery = null;
|
|
27
|
+
this.argsFilterQuery = null;
|
|
52
28
|
this.totalCountFilterQuery = null;
|
|
53
29
|
this.allFilterQuery = null;
|
|
54
30
|
this.metadata = Reflect.getMetadata(graphql_connection_constants_1.GRAPHQL_CONNECTION_METADATA, connectionClass);
|
|
@@ -64,11 +40,17 @@ class ConnectionQueryBuilder {
|
|
|
64
40
|
this.optionFilterQuery = this.options?.where ?? null;
|
|
65
41
|
this.cursorFilterQuery = this.getCursorFilterQuery();
|
|
66
42
|
this.queryStringFilterQuery = this.getQueryStringToFilterQuery();
|
|
67
|
-
this.
|
|
43
|
+
this.argsFilterQuery = this.args.filter ?? null;
|
|
44
|
+
this.totalCountFilterQuery = this.mergeFilterQuery((0, compact_1.default)([
|
|
45
|
+
this.optionFilterQuery,
|
|
46
|
+
this.queryStringFilterQuery,
|
|
47
|
+
this.argsFilterQuery,
|
|
48
|
+
]));
|
|
68
49
|
this.allFilterQuery = this.mergeFilterQuery((0, compact_1.default)([
|
|
69
50
|
this.cursorFilterQuery,
|
|
70
51
|
this.optionFilterQuery,
|
|
71
52
|
this.queryStringFilterQuery,
|
|
53
|
+
this.argsFilterQuery,
|
|
72
54
|
]));
|
|
73
55
|
}
|
|
74
56
|
getLimit() {
|
|
@@ -163,35 +145,23 @@ class ConnectionQueryBuilder {
|
|
|
163
145
|
getQueryStringToFilterQuery() {
|
|
164
146
|
if (typeof this.args.query !== "undefined" &&
|
|
165
147
|
this.args.query.trim() !== "") {
|
|
166
|
-
const {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
148
|
+
const { fieldOptionsMap, filterQuerySchema } = this.metadata;
|
|
149
|
+
// 构建 ParseOptions,只包含 filterable 的字段
|
|
150
|
+
const fields = {};
|
|
151
|
+
for (const [key, options] of fieldOptionsMap) {
|
|
152
|
+
if (options.filterable === true) {
|
|
153
|
+
fields[key] = {
|
|
154
|
+
type: options.type,
|
|
155
|
+
array: options.array,
|
|
156
|
+
searchable: options.searchable,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
170
159
|
}
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
: fieldOptions.field;
|
|
175
|
-
const prop = (0, get_1.default)(entityMetadata.properties, replacedField.split(".").join(".targetMeta.properties."));
|
|
176
|
-
result.set(fieldOptions.field, {
|
|
177
|
-
field: fieldOptions.field,
|
|
178
|
-
type: fieldOptions.type ??
|
|
179
|
-
entityPropertyToSimpleType(prop?.type),
|
|
180
|
-
replacement: fieldOptions
|
|
181
|
-
.replacement,
|
|
182
|
-
array: fieldOptions.array ?? prop?.array,
|
|
183
|
-
fulltext: fieldOptions.fulltext ??
|
|
184
|
-
entityMetadata.indexes.some(({ type, properties }) => type === "fulltext" && properties === replacedField),
|
|
185
|
-
searchable: fieldOptions.searchable,
|
|
186
|
-
filterable: fieldOptions.filterable,
|
|
187
|
-
});
|
|
188
|
-
return result;
|
|
189
|
-
}, new Map()));
|
|
190
|
-
search_syntax_parser_1.searchSyntaxParser.input = search_syntax_lexer_1.searchSyntaxLexer.tokenize(this.args.query).tokens;
|
|
191
|
-
if (search_syntax_parser_1.searchSyntaxParser.errors.length > 0) {
|
|
192
|
-
throw Error(search_syntax_parser_1.searchSyntaxParser.errors[0].message);
|
|
160
|
+
const rawFilter = (0, search_syntax_1.parse)(this.args.query, { fields });
|
|
161
|
+
if (rawFilter === null) {
|
|
162
|
+
return null;
|
|
193
163
|
}
|
|
194
|
-
return
|
|
164
|
+
return filterQuerySchema.parse(rawFilter);
|
|
195
165
|
}
|
|
196
166
|
return null;
|
|
197
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-query-builder.js","sourceRoot":"","sources":["../src/connection-query-builder.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"connection-query-builder.js","sourceRoot":"","sources":["../src/connection-query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import type { EntityClass } from "@mikro-orm/core";
|
|
1
|
+
import type { EntityClass, FilterQuery } from "@mikro-orm/core";
|
|
2
2
|
import { type Type } from "@nestjs/common";
|
|
3
|
-
import {
|
|
3
|
+
import { GraphQLScalarType } from "graphql";
|
|
4
|
+
import { ConnectionArgsInterface, ConnectionBuilderOptions, ConnectionInterface, EdgeInterface, FieldOptions, OrderFieldType, OrderInterface } from "./interfaces";
|
|
4
5
|
type ConnectionBuildResult<Entity extends object> = {
|
|
5
6
|
Connection: Type<ConnectionInterface<Entity>>;
|
|
6
7
|
ConnectionArgs: Type<ConnectionArgsInterface<Entity>>;
|
|
7
8
|
Edge: Type<EdgeInterface<Entity>>;
|
|
8
9
|
Order: Type<OrderInterface<Entity>>;
|
|
9
10
|
OrderField?: OrderFieldType<Entity>;
|
|
10
|
-
|
|
11
|
+
Filter: GraphQLScalarType<FilterQuery<Entity>>;
|
|
12
|
+
} & Record<`${EntityClass<Entity>["name"]}Connection`, Type<ConnectionInterface<Entity>>> & Record<`${EntityClass<Entity>["name"]}ConnectionArgs`, Type<ConnectionArgsInterface<Entity>>> & Record<`${EntityClass<Entity>["name"]}Edge`, Type<EdgeInterface<Entity>>> & Record<`${EntityClass<Entity>["name"]}Order`, Type<OrderInterface<Entity>>> & Record<`${EntityClass<Entity>["name"]}OrderField`, OrderFieldType<Entity>> & Record<`${EntityClass<Entity>["name"]}Filter`, GraphQLScalarType<FilterQuery<Entity>>>;
|
|
11
13
|
export declare class ConnectionBuilder<Entity extends object> {
|
|
12
14
|
private readonly entityClass;
|
|
13
15
|
private readonly entityName;
|
|
16
|
+
private readonly options;
|
|
14
17
|
private readonly fieldOptionsMap;
|
|
15
|
-
constructor(entityClass: EntityClass<Entity>);
|
|
16
|
-
|
|
17
|
-
private get sortableFields();
|
|
18
|
-
addField<Field extends string = never, Type extends "string" | "number" | "bigint" | "boolean" | "date" = never>(options: FieldOptions<Entity, Field, Type>): this;
|
|
18
|
+
constructor(entityClass: EntityClass<Entity>, options?: Partial<ConnectionBuilderOptions>);
|
|
19
|
+
addField<Type extends "string" | "number" | "boolean" | "date" = never, Field extends string = never>(options: FieldOptions<Entity, Type, Field>): this;
|
|
19
20
|
build(): ConnectionBuildResult<Entity>;
|
|
20
21
|
}
|
|
21
22
|
export {};
|
|
@@ -1,184 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.ConnectionBuilder = void 0;
|
|
13
|
-
const
|
|
14
|
-
const inflection_1 = require("inflection");
|
|
15
|
-
const enums_1 = require("./enums");
|
|
16
|
-
const graphql_connection_constants_1 = require("./graphql-connection.constants");
|
|
17
|
-
const objects_1 = require("./objects");
|
|
4
|
+
const utils_1 = require("./utils");
|
|
18
5
|
class ConnectionBuilder {
|
|
19
|
-
constructor(entityClass) {
|
|
6
|
+
constructor(entityClass, options) {
|
|
20
7
|
this.entityClass = entityClass;
|
|
21
8
|
this.fieldOptionsMap = new Map();
|
|
22
9
|
this.entityName = entityClass.name;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
10
|
+
this.options = {
|
|
11
|
+
...options,
|
|
12
|
+
filter: {
|
|
13
|
+
maxDepth: 5,
|
|
14
|
+
maxConditions: 20,
|
|
15
|
+
maxOrBranches: 5,
|
|
16
|
+
maxArrayLength: 100,
|
|
17
|
+
...options?.filter,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
29
20
|
}
|
|
30
21
|
addField(options) {
|
|
31
22
|
this.fieldOptionsMap.set(options.field, options);
|
|
32
23
|
return this;
|
|
33
24
|
}
|
|
34
25
|
build() {
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
let Edge = class Edge {
|
|
41
|
-
};
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, graphql_1.Field)(() => builder.entityClass, {
|
|
44
|
-
description: `The item at the end of ${builder.entityName}Edge.`,
|
|
45
|
-
}),
|
|
46
|
-
__metadata("design:type", Object)
|
|
47
|
-
], Edge.prototype, "node", void 0);
|
|
48
|
-
__decorate([
|
|
49
|
-
(0, graphql_1.Field)(() => String, {
|
|
50
|
-
complexity: 0,
|
|
51
|
-
description: `A cursor for use in pagination.`,
|
|
52
|
-
}),
|
|
53
|
-
__metadata("design:type", String)
|
|
54
|
-
], Edge.prototype, "cursor", void 0);
|
|
55
|
-
Edge = __decorate([
|
|
56
|
-
(0, graphql_1.ObjectType)(`${builder.entityName}Edge`, {
|
|
57
|
-
description: `An auto-generated type which holds one ${builder.entityName} and a cursor during pagination.`,
|
|
58
|
-
})
|
|
59
|
-
], Edge);
|
|
60
|
-
let Connection = class Connection {
|
|
61
|
-
};
|
|
62
|
-
__decorate([
|
|
63
|
-
(0, graphql_1.Field)(() => [Edge], { complexity: 0, description: `A list of edges.` }),
|
|
64
|
-
__metadata("design:type", Array)
|
|
65
|
-
], Connection.prototype, "edges", void 0);
|
|
66
|
-
__decorate([
|
|
67
|
-
(0, graphql_1.Field)(() => objects_1.PageInfo, {
|
|
68
|
-
complexity: 0,
|
|
69
|
-
description: `Information to aid in pagination.`,
|
|
70
|
-
}),
|
|
71
|
-
__metadata("design:type", objects_1.PageInfo)
|
|
72
|
-
], Connection.prototype, "pageInfo", void 0);
|
|
73
|
-
__decorate([
|
|
74
|
-
(0, graphql_1.Field)(() => graphql_1.Int, {
|
|
75
|
-
complexity: 0,
|
|
76
|
-
description: `Identifies the total count of items in the connection.`,
|
|
77
|
-
}),
|
|
78
|
-
__metadata("design:type", Number)
|
|
79
|
-
], Connection.prototype, "totalCount", void 0);
|
|
80
|
-
Connection = __decorate([
|
|
81
|
-
Reflect.metadata(graphql_connection_constants_1.GRAPHQL_CONNECTION_METADATA, {
|
|
82
|
-
entityClass: builder.entityClass,
|
|
83
|
-
fieldOptionsMap: builder.fieldOptionsMap,
|
|
84
|
-
}),
|
|
85
|
-
(0, graphql_1.ObjectType)(`${builder.entityName}Connection`, {
|
|
86
|
-
isAbstract: true,
|
|
87
|
-
description: `An auto-generated type for paginating through multiple ${pluralizeEntityName}.`,
|
|
88
|
-
})
|
|
89
|
-
], Connection);
|
|
90
|
-
const OrderField = builder.sortableFields.reduce((result, fieldOptions) => {
|
|
91
|
-
return {
|
|
92
|
-
...result,
|
|
93
|
-
[(0, inflection_1.underscore)(fieldOptions.field).toUpperCase()]: fieldOptions.replacement ??
|
|
94
|
-
fieldOptions.field,
|
|
95
|
-
};
|
|
96
|
-
}, { ID: "id" });
|
|
97
|
-
(0, graphql_1.registerEnumType)(OrderField, {
|
|
98
|
-
name: `${builder.entityName}OrderField`,
|
|
99
|
-
description: `Properties by which ${humanizeEntityName} connections can be ordered.`,
|
|
100
|
-
});
|
|
101
|
-
let Order = class Order {
|
|
102
|
-
};
|
|
103
|
-
__decorate([
|
|
104
|
-
(0, graphql_1.Field)(() => OrderField, {
|
|
105
|
-
description: `The field to order ${humanizeAndPluralizeAndEntityName} by.`,
|
|
106
|
-
}),
|
|
107
|
-
__metadata("design:type", String)
|
|
108
|
-
], Order.prototype, "field", void 0);
|
|
109
|
-
__decorate([
|
|
110
|
-
(0, graphql_1.Field)(() => enums_1.OrderDirection, { description: `The ordering direction.` }),
|
|
111
|
-
__metadata("design:type", String)
|
|
112
|
-
], Order.prototype, "direction", void 0);
|
|
113
|
-
Order = __decorate([
|
|
114
|
-
(0, graphql_1.InputType)(`${builder.entityName}Order`, {
|
|
115
|
-
description: `Ordering options for ${humanizeEntityName} connections`,
|
|
116
|
-
})
|
|
117
|
-
], Order);
|
|
118
|
-
let ConnectionArgs = class ConnectionArgs {
|
|
119
|
-
};
|
|
120
|
-
__decorate([
|
|
121
|
-
(0, graphql_1.Field)(() => String, {
|
|
122
|
-
nullable: true,
|
|
123
|
-
...(builder.filterableFields.length > 0
|
|
124
|
-
? {
|
|
125
|
-
description: `Apply one or multiple filters to the query.\nSupported filter parameters:\n${builder.filterableFields
|
|
126
|
-
.map(({ field }) => `\`${String(field)}\``)
|
|
127
|
-
.join(", ")}`,
|
|
128
|
-
}
|
|
129
|
-
: {}),
|
|
130
|
-
}),
|
|
131
|
-
__metadata("design:type", String)
|
|
132
|
-
], ConnectionArgs.prototype, "query", void 0);
|
|
133
|
-
__decorate([
|
|
134
|
-
(0, graphql_1.Field)(() => graphql_1.Int, {
|
|
135
|
-
nullable: true,
|
|
136
|
-
description: "Returns up to the first `n` elements from the list.",
|
|
137
|
-
}),
|
|
138
|
-
__metadata("design:type", Number)
|
|
139
|
-
], ConnectionArgs.prototype, "first", void 0);
|
|
140
|
-
__decorate([
|
|
141
|
-
(0, graphql_1.Field)(() => graphql_1.Int, {
|
|
142
|
-
nullable: true,
|
|
143
|
-
description: "Returns up to the last `n` elements from the list.",
|
|
144
|
-
}),
|
|
145
|
-
__metadata("design:type", Number)
|
|
146
|
-
], ConnectionArgs.prototype, "last", void 0);
|
|
147
|
-
__decorate([
|
|
148
|
-
(0, graphql_1.Field)(() => String, {
|
|
149
|
-
description: `Returns the elements that come after the specified cursor.`,
|
|
150
|
-
nullable: true,
|
|
151
|
-
}),
|
|
152
|
-
__metadata("design:type", String)
|
|
153
|
-
], ConnectionArgs.prototype, "after", void 0);
|
|
154
|
-
__decorate([
|
|
155
|
-
(0, graphql_1.Field)(() => String, {
|
|
156
|
-
description: `Returns the elements that come before the specified cursor.`,
|
|
157
|
-
nullable: true,
|
|
158
|
-
}),
|
|
159
|
-
__metadata("design:type", String)
|
|
160
|
-
], ConnectionArgs.prototype, "before", void 0);
|
|
161
|
-
__decorate([
|
|
162
|
-
(0, graphql_1.Field)(() => Order, {
|
|
163
|
-
nullable: true,
|
|
164
|
-
description: `Ordering options for the returned topics.`,
|
|
165
|
-
}),
|
|
166
|
-
__metadata("design:type", Order)
|
|
167
|
-
], ConnectionArgs.prototype, "orderBy", void 0);
|
|
168
|
-
ConnectionArgs = __decorate([
|
|
169
|
-
(0, graphql_1.ArgsType)(`${builder.entityName}ConnectionArgs`)
|
|
170
|
-
], ConnectionArgs);
|
|
26
|
+
const Edge = (0, utils_1.createEdge)(this.entityClass, this.entityName);
|
|
27
|
+
const { Order, OrderField } = (0, utils_1.createOrder)(this.entityName, this.fieldOptionsMap);
|
|
28
|
+
const { Filter, filterQuerySchema } = (0, utils_1.createFilter)(this.entityName, this.fieldOptionsMap, this.options?.filter);
|
|
29
|
+
const Connection = (0, utils_1.createConnection)(this.entityClass, this.entityName, Edge, this.fieldOptionsMap, filterQuerySchema);
|
|
30
|
+
const ConnectionArgs = (0, utils_1.createConnectionArgs)(this.entityName, this.fieldOptionsMap, Order, Filter);
|
|
171
31
|
return {
|
|
172
32
|
Connection,
|
|
173
33
|
ConnectionArgs,
|
|
174
34
|
Edge,
|
|
175
35
|
Order,
|
|
176
36
|
OrderField,
|
|
37
|
+
Filter,
|
|
177
38
|
[`${this.entityName}Connection`]: Connection,
|
|
178
39
|
[`${this.entityName}ConnectionArgs`]: ConnectionArgs,
|
|
179
40
|
[`${this.entityName}Edge`]: Edge,
|
|
180
41
|
[`${this.entityName}Order`]: Order,
|
|
181
42
|
[`${this.entityName}OrderField`]: OrderField,
|
|
43
|
+
[`${this.entityName}Filter`]: Filter,
|
|
182
44
|
};
|
|
183
45
|
}
|
|
184
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.builder.js","sourceRoot":"","sources":["../src/connection.builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.builder.js","sourceRoot":"","sources":["../src/connection.builder.ts"],"names":[],"mappings":";;;AAcA,mCAMiB;AAyBjB,MAAa,iBAAiB;IAU5B,YACmB,WAAgC,EACjD,OAA2C;QAD1B,gBAAW,GAAX,WAAW,CAAqB;QANlC,oBAAe,GAAG,IAAI,GAAG,EAGvC,CAAC;QAMF,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,OAAO;YACV,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC;gBACX,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,CAAC;gBAChB,cAAc,EAAE,GAAG;gBACnB,GAAG,OAAO,EAAE,MAAM;aACnB;SACF,CAAC;IACJ,CAAC;IAED,QAAQ,CAGN,OAA0C;QAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAA,mBAAW,EACvC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,CACrB,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,oBAAY,EAChD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO,EAAE,MAAM,CACrB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wBAAgB,EACjC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,EACJ,IAAI,CAAC,eAAe,EACpB,iBAAiB,CAClB,CAAC;QAEF,MAAM,cAAc,GAAG,IAAA,4BAAoB,EACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,EACpB,KAAK,EACL,MAAM,CACP,CAAC;QAEF,OAAO;YACL,UAAU;YACV,cAAc;YACd,IAAI;YACJ,KAAK;YACL,UAAU;YACV,MAAM;YACN,CAAC,GAAG,IAAI,CAAC,UAAU,YAAY,CAAC,EAAE,UAAU;YAC5C,CAAC,GAAG,IAAI,CAAC,UAAU,gBAAgB,CAAC,EAAE,cAAc;YACpD,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,CAAC,EAAE,IAAI;YAChC,CAAC,GAAG,IAAI,CAAC,UAAU,OAAO,CAAC,EAAE,KAAK;YAClC,CAAC,GAAG,IAAI,CAAC,UAAU,YAAY,CAAC,EAAE,UAAU;YAC5C,CAAC,GAAG,IAAI,CAAC,UAAU,QAAQ,CAAC,EAAE,MAAM;SACJ,CAAC;IACrC,CAAC;CACF;AAhFD,8CAgFC"}
|
package/dist/enums/index.d.ts
CHANGED
package/dist/enums/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./comparator-operator.enum"), exports);
|
|
18
17
|
__exportStar(require("./order-direction.enum"), exports);
|
|
19
18
|
__exportStar(require("./paging-type.enum"), exports);
|
|
20
19
|
//# sourceMappingURL=index.js.map
|
package/dist/enums/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,qDAAmC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./enums"), exports);
|
|
|
20
20
|
__exportStar(require("./graphql-connection.module"), exports);
|
|
21
21
|
__exportStar(require("./interfaces"), exports);
|
|
22
22
|
__exportStar(require("./objects"), exports);
|
|
23
|
+
__exportStar(require("./utils"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,0CAAwB;AACxB,8DAA4C;AAC5C,+CAA6B;AAC7B,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,0CAAwB;AACxB,8DAA4C;AAC5C,+CAA6B;AAC7B,4CAA0B;AAC1B,0CAAwB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FilterQuery } from "@mikro-orm/core";
|
|
1
2
|
import { OrderInterface } from "./order.interface";
|
|
2
3
|
export interface ConnectionArgsInterface<Entity extends object> {
|
|
3
4
|
after?: string;
|
|
@@ -5,5 +6,6 @@ export interface ConnectionArgsInterface<Entity extends object> {
|
|
|
5
6
|
first?: number;
|
|
6
7
|
last?: number;
|
|
7
8
|
query?: string;
|
|
9
|
+
filter?: FilterQuery<Entity>;
|
|
8
10
|
orderBy?: OrderInterface<Entity>;
|
|
9
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-builder-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/connection-builder-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { EntityClass } from "@mikro-orm/core";
|
|
1
|
+
import { EntityClass, FilterQuery } from "@mikro-orm/core";
|
|
2
|
+
import type { FieldType } from "mikro-orm-filter-query-schema";
|
|
3
|
+
import type { ZodType } from "zod";
|
|
2
4
|
import { FieldOptions } from "./field-options.interface";
|
|
3
5
|
export interface ConnectionMetadata<Entity extends object> {
|
|
4
6
|
entityClass: EntityClass<Entity>;
|
|
5
|
-
fieldOptionsMap: Map<string, FieldOptions<Entity,
|
|
7
|
+
fieldOptionsMap: Map<string, FieldOptions<Entity, FieldType, string>>;
|
|
8
|
+
filterQuerySchema: ZodType<FilterQuery<Entity>>;
|
|
6
9
|
}
|
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { AutoPath } from "@mikro-orm/core/typings";
|
|
3
|
-
import { ReplacementArgs } from "./replacement-args.interface";
|
|
1
|
+
import type { FieldType, ReplacementCallbackFieldOptions as FilterReplacementCallbackFieldOptions, ReplacementFieldOptions as FilterReplacementFieldOptions, SimpleFieldOptions as FilterSimpleFieldOptions } from "mikro-orm-filter-query-schema";
|
|
4
2
|
export interface BaseFieldOptions {
|
|
5
|
-
array?: boolean;
|
|
6
|
-
fulltext?: boolean;
|
|
7
|
-
searchable?: boolean;
|
|
8
3
|
filterable?: boolean;
|
|
4
|
+
searchable?: boolean;
|
|
9
5
|
}
|
|
10
|
-
export interface SortableFieldOptions
|
|
6
|
+
export interface SortableFieldOptions {
|
|
11
7
|
sortable?: boolean;
|
|
12
8
|
}
|
|
13
|
-
export interface SimpleFieldOptions<Entity extends object,
|
|
14
|
-
field: AutoPath<Entity, Fields>;
|
|
15
|
-
sortable?: boolean;
|
|
9
|
+
export interface SimpleFieldOptions<Entity extends object, Type extends FieldType = never> extends FilterSimpleFieldOptions<Entity, Type>, BaseFieldOptions, SortableFieldOptions {
|
|
16
10
|
}
|
|
17
|
-
export interface ReplacementFieldOptions<Entity extends object,
|
|
18
|
-
field: string;
|
|
19
|
-
replacement: AutoPath<Entity, Fields>;
|
|
20
|
-
sortable?: boolean;
|
|
11
|
+
export interface ReplacementFieldOptions<Entity extends object, Type extends FieldType = never, Field extends string = never> extends FilterReplacementFieldOptions<Entity, Type, Field>, BaseFieldOptions, SortableFieldOptions {
|
|
21
12
|
}
|
|
22
|
-
export interface ReplacementFunctionFieldOptions<Entity extends object, Type extends
|
|
23
|
-
field: string;
|
|
24
|
-
type: Type;
|
|
25
|
-
replacement?: (args: ReplacementArgs<Type>) => FilterQuery<Entity>;
|
|
13
|
+
export interface ReplacementFunctionFieldOptions<Entity extends object, Type extends FieldType = never> extends FilterReplacementCallbackFieldOptions<Entity, Type>, BaseFieldOptions, SortableFieldOptions {
|
|
26
14
|
}
|
|
27
|
-
export type FieldOptions<Entity extends object,
|
|
15
|
+
export type FieldOptions<Entity extends object, Type extends FieldType = never, Field extends string = never> = SimpleFieldOptions<Entity, Type> | ReplacementFieldOptions<Entity, Type, Field> | ReplacementFunctionFieldOptions<Entity, Type>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export * from "./connection.interface";
|
|
2
2
|
export * from "./connection-args.interface";
|
|
3
|
+
export * from "./connection-builder-options.interface";
|
|
3
4
|
export * from "./connection-metadata.interface";
|
|
4
5
|
export * from "./edge.interface";
|
|
5
6
|
export * from "./field-options.interface";
|
|
6
7
|
export * from "./order.interface";
|
|
7
8
|
export * from "./order-field.type";
|
|
8
|
-
export * from "./replacement-args.interface";
|
package/dist/interfaces/index.js
CHANGED
|
@@ -16,10 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./connection.interface"), exports);
|
|
18
18
|
__exportStar(require("./connection-args.interface"), exports);
|
|
19
|
+
__exportStar(require("./connection-builder-options.interface"), exports);
|
|
19
20
|
__exportStar(require("./connection-metadata.interface"), exports);
|
|
20
21
|
__exportStar(require("./edge.interface"), exports);
|
|
21
22
|
__exportStar(require("./field-options.interface"), exports);
|
|
22
23
|
__exportStar(require("./order.interface"), exports);
|
|
23
24
|
__exportStar(require("./order-field.type"), exports);
|
|
24
|
-
__exportStar(require("./replacement-args.interface"), exports);
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,8DAA4C;AAC5C,kEAAgD;AAChD,mDAAiC;AACjC,4DAA0C;AAC1C,oDAAkC;AAClC,qDAAmC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,8DAA4C;AAC5C,yEAAuD;AACvD,kEAAgD;AAChD,mDAAiC;AACjC,4DAA0C;AAC1C,oDAAkC;AAClC,qDAAmC"}
|