graphile-connection-filter 1.4.0 → 1.5.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/esm/plugins/ConnectionFilterArgPlugin.d.ts +4 -3
- package/esm/plugins/ConnectionFilterArgPlugin.js +8 -7
- package/esm/plugins/ConnectionFilterAttributesPlugin.js +2 -2
- package/esm/plugins/ConnectionFilterBackwardRelationsPlugin.d.ts +2 -2
- package/esm/plugins/ConnectionFilterBackwardRelationsPlugin.js +2 -2
- package/esm/plugins/ConnectionFilterComputedAttributesPlugin.d.ts +1 -1
- package/esm/plugins/ConnectionFilterComputedAttributesPlugin.js +1 -1
- package/esm/plugins/ConnectionFilterForwardRelationsPlugin.d.ts +1 -1
- package/esm/plugins/ConnectionFilterForwardRelationsPlugin.js +1 -1
- package/esm/plugins/operatorApply.js +1 -1
- package/esm/utils.js +4 -4
- package/package.json +4 -4
- package/plugins/ConnectionFilterArgPlugin.d.ts +4 -3
- package/plugins/ConnectionFilterArgPlugin.js +8 -7
- package/plugins/ConnectionFilterAttributesPlugin.js +2 -2
- package/plugins/ConnectionFilterBackwardRelationsPlugin.d.ts +2 -2
- package/plugins/ConnectionFilterBackwardRelationsPlugin.js +2 -2
- package/plugins/ConnectionFilterComputedAttributesPlugin.d.ts +1 -1
- package/plugins/ConnectionFilterComputedAttributesPlugin.js +1 -1
- package/plugins/ConnectionFilterForwardRelationsPlugin.d.ts +1 -1
- package/plugins/ConnectionFilterForwardRelationsPlugin.js +1 -1
- package/plugins/operatorApply.js +1 -1
- package/utils.js +4 -4
|
@@ -3,9 +3,10 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
3
3
|
/**
|
|
4
4
|
* ConnectionFilterArgPlugin
|
|
5
5
|
*
|
|
6
|
-
* Adds the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Adds the `where` argument (name configurable via
|
|
7
|
+
* `connectionFilterArgumentName`, default `'where'`) to connection and
|
|
8
|
+
* simple collection fields. Uses `applyPlan` to create a PgCondition
|
|
9
|
+
* that child filter fields can add WHERE clauses to.
|
|
9
10
|
*
|
|
10
11
|
* This runs before PgConnectionArgOrderByPlugin so that filters are applied
|
|
11
12
|
* before ordering (important for e.g. full-text search rank ordering).
|
|
@@ -4,9 +4,10 @@ const version = '1.0.0';
|
|
|
4
4
|
/**
|
|
5
5
|
* ConnectionFilterArgPlugin
|
|
6
6
|
*
|
|
7
|
-
* Adds the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Adds the `where` argument (name configurable via
|
|
8
|
+
* `connectionFilterArgumentName`, default `'where'`) to connection and
|
|
9
|
+
* simple collection fields. Uses `applyPlan` to create a PgCondition
|
|
10
|
+
* that child filter fields can add WHERE clauses to.
|
|
10
11
|
*
|
|
11
12
|
* This runs before PgConnectionArgOrderByPlugin so that filters are applied
|
|
12
13
|
* before ordering (important for e.g. full-text search rank ordering).
|
|
@@ -14,7 +15,7 @@ const version = '1.0.0';
|
|
|
14
15
|
export const ConnectionFilterArgPlugin = {
|
|
15
16
|
name: 'ConnectionFilterArgPlugin',
|
|
16
17
|
version,
|
|
17
|
-
description: 'Adds the
|
|
18
|
+
description: 'Adds the `where` argument to connection and list fields',
|
|
18
19
|
before: ['PgConnectionArgOrderByPlugin'],
|
|
19
20
|
schema: {
|
|
20
21
|
hooks: {
|
|
@@ -59,7 +60,7 @@ export const ConnectionFilterArgPlugin = {
|
|
|
59
60
|
applyPlan: EXPORTABLE((PgCondition, isEmpty, attributeCodec) => function (_, $connection, fieldArg) {
|
|
60
61
|
const $pgSelect = $connection.getSubplan();
|
|
61
62
|
fieldArg.apply($pgSelect, (queryBuilder, value) => {
|
|
62
|
-
// If
|
|
63
|
+
// If where is null/undefined or empty {}, treat as "no filter" — skip
|
|
63
64
|
if (value == null || isEmpty(value))
|
|
64
65
|
return;
|
|
65
66
|
const condition = new PgCondition(queryBuilder);
|
|
@@ -75,7 +76,7 @@ export const ConnectionFilterArgPlugin = {
|
|
|
75
76
|
: {
|
|
76
77
|
applyPlan: EXPORTABLE((PgCondition, isEmpty, attributeCodec) => function (_, $pgSelect, fieldArg) {
|
|
77
78
|
fieldArg.apply($pgSelect, (queryBuilder, value) => {
|
|
78
|
-
// If
|
|
79
|
+
// If where is null/undefined or empty {}, treat as "no filter" — skip
|
|
79
80
|
if (value == null || isEmpty(value))
|
|
80
81
|
return;
|
|
81
82
|
const condition = new PgCondition(queryBuilder);
|
|
@@ -89,7 +90,7 @@ export const ConnectionFilterArgPlugin = {
|
|
|
89
90
|
}, [PgCondition, isEmpty, attributeCodec]),
|
|
90
91
|
}),
|
|
91
92
|
},
|
|
92
|
-
}, `Adding connection
|
|
93
|
+
}, `Adding connection where arg '${argName}' to field '${fieldName}' of '${Self.name}'`);
|
|
93
94
|
},
|
|
94
95
|
},
|
|
95
96
|
},
|
|
@@ -54,11 +54,11 @@ export const ConnectionFilterAttributesPlugin = {
|
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
if (isEmpty(value)) {
|
|
57
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
57
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
58
58
|
}
|
|
59
59
|
if (!connectionFilterAllowNullInput &&
|
|
60
60
|
value === null) {
|
|
61
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
61
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
62
62
|
}
|
|
63
63
|
const condition = new PgCondition(queryBuilder);
|
|
64
64
|
condition.extensions.pgFilterAttribute = colSpec;
|
|
@@ -8,7 +8,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
8
8
|
*
|
|
9
9
|
* For unique backward relations (one-to-one), a single filter field is added:
|
|
10
10
|
* ```graphql
|
|
11
|
-
* allClients(
|
|
11
|
+
* allClients(where: {
|
|
12
12
|
* profileByClientId: { bio: { includes: "engineer" } }
|
|
13
13
|
* }) { ... }
|
|
14
14
|
* ```
|
|
@@ -16,7 +16,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
16
16
|
* For non-unique backward relations (one-to-many), a "many" filter type is added
|
|
17
17
|
* with `some`, `every`, and `none` sub-fields:
|
|
18
18
|
* ```graphql
|
|
19
|
-
* allClients(
|
|
19
|
+
* allClients(where: {
|
|
20
20
|
* ordersByClientId: { some: { total: { greaterThan: 1000 } } }
|
|
21
21
|
* }) { ... }
|
|
22
22
|
* ```
|
|
@@ -9,7 +9,7 @@ const version = '1.0.0';
|
|
|
9
9
|
*
|
|
10
10
|
* For unique backward relations (one-to-one), a single filter field is added:
|
|
11
11
|
* ```graphql
|
|
12
|
-
* allClients(
|
|
12
|
+
* allClients(where: {
|
|
13
13
|
* profileByClientId: { bio: { includes: "engineer" } }
|
|
14
14
|
* }) { ... }
|
|
15
15
|
* ```
|
|
@@ -17,7 +17,7 @@ const version = '1.0.0';
|
|
|
17
17
|
* For non-unique backward relations (one-to-many), a "many" filter type is added
|
|
18
18
|
* with `some`, `every`, and `none` sub-fields:
|
|
19
19
|
* ```graphql
|
|
20
|
-
* allClients(
|
|
20
|
+
* allClients(where: {
|
|
21
21
|
* ordersByClientId: { some: { total: { greaterThan: 1000 } } }
|
|
22
22
|
* }) { ... }
|
|
23
23
|
* ```
|
|
@@ -11,7 +11,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
11
11
|
*
|
|
12
12
|
* This plugin adds a `fullName` filter field to `PersonFilter`, typed as `StringFilter`,
|
|
13
13
|
* allowing queries like:
|
|
14
|
-
* { people(
|
|
14
|
+
* { people(where: { fullName: { startsWith: "John" } }) { ... } }
|
|
15
15
|
*
|
|
16
16
|
* Controlled by the `connectionFilterComputedColumns` schema option (default: true).
|
|
17
17
|
* Requires the `filterBy` behavior on the pgResource to be enabled.
|
|
@@ -12,7 +12,7 @@ const version = '1.0.0';
|
|
|
12
12
|
*
|
|
13
13
|
* This plugin adds a `fullName` filter field to `PersonFilter`, typed as `StringFilter`,
|
|
14
14
|
* allowing queries like:
|
|
15
|
-
* { people(
|
|
15
|
+
* { people(where: { fullName: { startsWith: "John" } }) { ... } }
|
|
16
16
|
*
|
|
17
17
|
* Controlled by the `connectionFilterComputedColumns` schema option (default: true).
|
|
18
18
|
* Requires the `filterBy` behavior on the pgResource to be enabled.
|
|
@@ -38,7 +38,7 @@ export function makeApplyFromOperatorSpec(build, _typeName, fieldName, spec, _ty
|
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
40
|
if (!connectionFilterAllowNullInput && value === null) {
|
|
41
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
41
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
42
42
|
}
|
|
43
43
|
// Optionally transform the input value
|
|
44
44
|
const resolvedInput = resolveInput ? resolveInput(value) : value;
|
package/esm/utils.js
CHANGED
|
@@ -88,9 +88,9 @@ export function makeAssertAllowed(build) {
|
|
|
88
88
|
const { options, EXPORTABLE } = build;
|
|
89
89
|
const { connectionFilterAllowNullInput, } = options;
|
|
90
90
|
const assertAllowed = EXPORTABLE((connectionFilterAllowNullInput, isEmpty) => function (value, mode) {
|
|
91
|
-
// Reject empty objects in nested
|
|
91
|
+
// Reject empty objects in nested where contexts (and/or/not, relation filters)
|
|
92
92
|
if (mode === 'object' && isEmpty(value)) {
|
|
93
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
93
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
94
94
|
}
|
|
95
95
|
if (mode === 'list') {
|
|
96
96
|
const arr = value;
|
|
@@ -98,14 +98,14 @@ export function makeAssertAllowed(build) {
|
|
|
98
98
|
const l = arr.length;
|
|
99
99
|
for (let i = 0; i < l; i++) {
|
|
100
100
|
if (isEmpty(arr[i])) {
|
|
101
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
101
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
// For all modes, check null
|
|
107
107
|
if (!connectionFilterAllowNullInput && value === null) {
|
|
108
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
108
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
109
109
|
}
|
|
110
110
|
}, [connectionFilterAllowNullInput, isEmpty]);
|
|
111
111
|
return assertAllowed;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "graphile-connection-filter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "PostGraphile v5 native connection filter plugin - adds advanced filtering to connections",
|
|
5
5
|
"author": "Constructive <developers@constructive.io>",
|
|
6
6
|
"homepage": "https://github.com/constructive-io/constructive",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.19.11",
|
|
44
|
-
"graphile-test": "^4.
|
|
44
|
+
"graphile-test": "^4.9.0",
|
|
45
45
|
"makage": "^0.3.0",
|
|
46
|
-
"pgsql-test": "^4.
|
|
46
|
+
"pgsql-test": "^4.9.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@dataplan/pg": "1.0.0",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"pg-sql2": "5.0.0",
|
|
55
55
|
"postgraphile": "5.0.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "1b3af3c5189b9ca2e765b9239a4b287099e64a03"
|
|
58
58
|
}
|
|
@@ -3,9 +3,10 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
3
3
|
/**
|
|
4
4
|
* ConnectionFilterArgPlugin
|
|
5
5
|
*
|
|
6
|
-
* Adds the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Adds the `where` argument (name configurable via
|
|
7
|
+
* `connectionFilterArgumentName`, default `'where'`) to connection and
|
|
8
|
+
* simple collection fields. Uses `applyPlan` to create a PgCondition
|
|
9
|
+
* that child filter fields can add WHERE clauses to.
|
|
9
10
|
*
|
|
10
11
|
* This runs before PgConnectionArgOrderByPlugin so that filters are applied
|
|
11
12
|
* before ordering (important for e.g. full-text search rank ordering).
|
|
@@ -7,9 +7,10 @@ const version = '1.0.0';
|
|
|
7
7
|
/**
|
|
8
8
|
* ConnectionFilterArgPlugin
|
|
9
9
|
*
|
|
10
|
-
* Adds the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Adds the `where` argument (name configurable via
|
|
11
|
+
* `connectionFilterArgumentName`, default `'where'`) to connection and
|
|
12
|
+
* simple collection fields. Uses `applyPlan` to create a PgCondition
|
|
13
|
+
* that child filter fields can add WHERE clauses to.
|
|
13
14
|
*
|
|
14
15
|
* This runs before PgConnectionArgOrderByPlugin so that filters are applied
|
|
15
16
|
* before ordering (important for e.g. full-text search rank ordering).
|
|
@@ -17,7 +18,7 @@ const version = '1.0.0';
|
|
|
17
18
|
exports.ConnectionFilterArgPlugin = {
|
|
18
19
|
name: 'ConnectionFilterArgPlugin',
|
|
19
20
|
version,
|
|
20
|
-
description: 'Adds the
|
|
21
|
+
description: 'Adds the `where` argument to connection and list fields',
|
|
21
22
|
before: ['PgConnectionArgOrderByPlugin'],
|
|
22
23
|
schema: {
|
|
23
24
|
hooks: {
|
|
@@ -62,7 +63,7 @@ exports.ConnectionFilterArgPlugin = {
|
|
|
62
63
|
applyPlan: EXPORTABLE((PgCondition, isEmpty, attributeCodec) => function (_, $connection, fieldArg) {
|
|
63
64
|
const $pgSelect = $connection.getSubplan();
|
|
64
65
|
fieldArg.apply($pgSelect, (queryBuilder, value) => {
|
|
65
|
-
// If
|
|
66
|
+
// If where is null/undefined or empty {}, treat as "no filter" — skip
|
|
66
67
|
if (value == null || isEmpty(value))
|
|
67
68
|
return;
|
|
68
69
|
const condition = new PgCondition(queryBuilder);
|
|
@@ -78,7 +79,7 @@ exports.ConnectionFilterArgPlugin = {
|
|
|
78
79
|
: {
|
|
79
80
|
applyPlan: EXPORTABLE((PgCondition, isEmpty, attributeCodec) => function (_, $pgSelect, fieldArg) {
|
|
80
81
|
fieldArg.apply($pgSelect, (queryBuilder, value) => {
|
|
81
|
-
// If
|
|
82
|
+
// If where is null/undefined or empty {}, treat as "no filter" — skip
|
|
82
83
|
if (value == null || isEmpty(value))
|
|
83
84
|
return;
|
|
84
85
|
const condition = new PgCondition(queryBuilder);
|
|
@@ -92,7 +93,7 @@ exports.ConnectionFilterArgPlugin = {
|
|
|
92
93
|
}, [PgCondition, utils_1.isEmpty, attributeCodec]),
|
|
93
94
|
}),
|
|
94
95
|
},
|
|
95
|
-
}, `Adding connection
|
|
96
|
+
}, `Adding connection where arg '${argName}' to field '${fieldName}' of '${Self.name}'`);
|
|
96
97
|
},
|
|
97
98
|
},
|
|
98
99
|
},
|
|
@@ -57,11 +57,11 @@ exports.ConnectionFilterAttributesPlugin = {
|
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
if (isEmpty(value)) {
|
|
60
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
60
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
61
61
|
}
|
|
62
62
|
if (!connectionFilterAllowNullInput &&
|
|
63
63
|
value === null) {
|
|
64
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
64
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
65
65
|
}
|
|
66
66
|
const condition = new PgCondition(queryBuilder);
|
|
67
67
|
condition.extensions.pgFilterAttribute = colSpec;
|
|
@@ -8,7 +8,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
8
8
|
*
|
|
9
9
|
* For unique backward relations (one-to-one), a single filter field is added:
|
|
10
10
|
* ```graphql
|
|
11
|
-
* allClients(
|
|
11
|
+
* allClients(where: {
|
|
12
12
|
* profileByClientId: { bio: { includes: "engineer" } }
|
|
13
13
|
* }) { ... }
|
|
14
14
|
* ```
|
|
@@ -16,7 +16,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
16
16
|
* For non-unique backward relations (one-to-many), a "many" filter type is added
|
|
17
17
|
* with `some`, `every`, and `none` sub-fields:
|
|
18
18
|
* ```graphql
|
|
19
|
-
* allClients(
|
|
19
|
+
* allClients(where: {
|
|
20
20
|
* ordersByClientId: { some: { total: { greaterThan: 1000 } } }
|
|
21
21
|
* }) { ... }
|
|
22
22
|
* ```
|
|
@@ -12,7 +12,7 @@ const version = '1.0.0';
|
|
|
12
12
|
*
|
|
13
13
|
* For unique backward relations (one-to-one), a single filter field is added:
|
|
14
14
|
* ```graphql
|
|
15
|
-
* allClients(
|
|
15
|
+
* allClients(where: {
|
|
16
16
|
* profileByClientId: { bio: { includes: "engineer" } }
|
|
17
17
|
* }) { ... }
|
|
18
18
|
* ```
|
|
@@ -20,7 +20,7 @@ const version = '1.0.0';
|
|
|
20
20
|
* For non-unique backward relations (one-to-many), a "many" filter type is added
|
|
21
21
|
* with `some`, `every`, and `none` sub-fields:
|
|
22
22
|
* ```graphql
|
|
23
|
-
* allClients(
|
|
23
|
+
* allClients(where: {
|
|
24
24
|
* ordersByClientId: { some: { total: { greaterThan: 1000 } } }
|
|
25
25
|
* }) { ... }
|
|
26
26
|
* ```
|
|
@@ -11,7 +11,7 @@ import type { GraphileConfig } from 'graphile-config';
|
|
|
11
11
|
*
|
|
12
12
|
* This plugin adds a `fullName` filter field to `PersonFilter`, typed as `StringFilter`,
|
|
13
13
|
* allowing queries like:
|
|
14
|
-
* { people(
|
|
14
|
+
* { people(where: { fullName: { startsWith: "John" } }) { ... } }
|
|
15
15
|
*
|
|
16
16
|
* Controlled by the `connectionFilterComputedColumns` schema option (default: true).
|
|
17
17
|
* Requires the `filterBy` behavior on the pgResource to be enabled.
|
|
@@ -15,7 +15,7 @@ const version = '1.0.0';
|
|
|
15
15
|
*
|
|
16
16
|
* This plugin adds a `fullName` filter field to `PersonFilter`, typed as `StringFilter`,
|
|
17
17
|
* allowing queries like:
|
|
18
|
-
* { people(
|
|
18
|
+
* { people(where: { fullName: { startsWith: "John" } }) { ... } }
|
|
19
19
|
*
|
|
20
20
|
* Controlled by the `connectionFilterComputedColumns` schema option (default: true).
|
|
21
21
|
* Requires the `filterBy` behavior on the pgResource to be enabled.
|
package/plugins/operatorApply.js
CHANGED
|
@@ -41,7 +41,7 @@ function makeApplyFromOperatorSpec(build, _typeName, fieldName, spec, _type) {
|
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
if (!connectionFilterAllowNullInput && value === null) {
|
|
44
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
44
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
45
45
|
}
|
|
46
46
|
// Optionally transform the input value
|
|
47
47
|
const resolvedInput = resolveInput ? resolveInput(value) : value;
|
package/utils.js
CHANGED
|
@@ -95,9 +95,9 @@ function makeAssertAllowed(build) {
|
|
|
95
95
|
const { options, EXPORTABLE } = build;
|
|
96
96
|
const { connectionFilterAllowNullInput, } = options;
|
|
97
97
|
const assertAllowed = EXPORTABLE((connectionFilterAllowNullInput, isEmpty) => function (value, mode) {
|
|
98
|
-
// Reject empty objects in nested
|
|
98
|
+
// Reject empty objects in nested where contexts (and/or/not, relation filters)
|
|
99
99
|
if (mode === 'object' && isEmpty(value)) {
|
|
100
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
100
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
101
101
|
}
|
|
102
102
|
if (mode === 'list') {
|
|
103
103
|
const arr = value;
|
|
@@ -105,14 +105,14 @@ function makeAssertAllowed(build) {
|
|
|
105
105
|
const l = arr.length;
|
|
106
106
|
for (let i = 0; i < l; i++) {
|
|
107
107
|
if (isEmpty(arr[i])) {
|
|
108
|
-
throw Object.assign(new Error('Empty objects are forbidden in
|
|
108
|
+
throw Object.assign(new Error('Empty objects are forbidden in where argument input.'), {});
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
// For all modes, check null
|
|
114
114
|
if (!connectionFilterAllowNullInput && value === null) {
|
|
115
|
-
throw Object.assign(new Error('Null literals are forbidden in
|
|
115
|
+
throw Object.assign(new Error('Null literals are forbidden in where argument input.'), {});
|
|
116
116
|
}
|
|
117
117
|
}, [connectionFilterAllowNullInput, isEmpty]);
|
|
118
118
|
return assertAllowed;
|