Skip to content

Commit 7bd4a16

Browse files
committed
v2.16.2: Add raw-prepend planner hints; fix upsert() rows order bug
1 parent 689de55 commit 7bd4a16

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+694
-268
lines changed

docs/classes/AllowIf.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Defined in: [src/ent/rules/Rule.ts:43](https://github.com/clickup/ent-framework/
3535

3636
| Parameter | Type |
3737
| ------ | ------ |
38-
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `Promise`\<`boolean`\> |
38+
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `boolean` \| `Promise`\<`boolean`\> |
3939

4040
#### Returns
4141

docs/classes/Batcher.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Batcher is similar to DataLoader, but with a few important differences:
2727

2828
### new Batcher()
2929

30-
> **new Batcher**\<`TInput`, `TOutput`\>(`runner`, `batchDelayMs`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
30+
> **new Batcher**\<`TInput`, `TOutput`\>(`runner`, `batchDelayMs`, `disableBatching`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
3131
3232
Defined in: [src/abstract/Batcher.ts:90](https://github.com/clickup/ent-framework/blob/master/src/abstract/Batcher.ts#L90)
3333

@@ -37,6 +37,7 @@ Defined in: [src/abstract/Batcher.ts:90](https://github.com/clickup/ent-framewor
3737
| ------ | ------ |
3838
| `runner` | [`Runner`](Runner.md)\<`TInput`, `TOutput`\> |
3939
| `batchDelayMs` | `MaybeCallable`\<`number`\> |
40+
| `disableBatching` | `boolean` |
4041

4142
#### Returns
4243

@@ -60,7 +61,7 @@ Defined in: [src/abstract/Batcher.ts:32](https://github.com/clickup/ent-framewor
6061

6162
> **run**(`input`, `annotation`): `Promise`\<`TOutput`\>
6263
63-
Defined in: [src/abstract/Batcher.ts:95](https://github.com/clickup/ent-framework/blob/master/src/abstract/Batcher.ts#L95)
64+
Defined in: [src/abstract/Batcher.ts:96](https://github.com/clickup/ent-framework/blob/master/src/abstract/Batcher.ts#L96)
6465

6566
#### Parameters
6667

docs/classes/Client.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,19 +227,22 @@ Calls swallowedErrorLogger() doing some preliminary amendment.
227227

228228
### batcher()
229229

230-
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
230+
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `disableBatching`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
231231
232-
Defined in: [src/abstract/Client.ts:179](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L179)
232+
Defined in: [src/abstract/Client.ts:182](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L182)
233+
234+
Batcher is per-Client per-query-type
235+
per-table-name-and-shape-and-disableBatching:
233236

234-
Batcher is per-Client per-query-type per-table-name-and-shape:
235237
- Per-Client means that batchers are removed as soon as the Client is
236238
removed, i.e. the Client owns all the batchers for all tables.
237239
- Per-query-type means that the batcher for a SELECT query is different
238240
from the batcher for an INSERT query (obviously).
239-
- Per-table-name-and-shape means that each table has its own set of
240-
batchers (obviously). Also, some queries may be complex (like UPDATE), so
241-
the batcher also depends on the "shape" - the list of fields we're
242-
updating.
241+
- Per-table-name-and-shape-and-disableBatching means that each table has
242+
its own set of batchers (obviously). Also, some queries may be complex
243+
(like UPDATE), so the batcher also depends on the "shape" - the list of
244+
fields we're updating. Plus, for some inputs, we want to disable batching
245+
at all - that produces a separate Batcher instance.
243246

244247
Also, for every Batcher, there is exactly one Runner (which knows how to
245248
build the actual query in the context of the current Client). Batchers are
@@ -264,6 +267,7 @@ All that means that in a 1000-Shard 20-table Cluster we'll eventually have
264267
| `_QueryClass` | `Function` |
265268
| `_schema` | [`Schema`](Schema.md)\<`TTable`, [`UniqueKey`](../type-aliases/UniqueKey.md)\<`TTable`\>\> |
266269
| `_additionalShape` | `string` |
270+
| `disableBatching` | `boolean` |
267271
| `runnerCreator` | () => [`Runner`](Runner.md)\<`TInput`, `TOutput`\> |
268272

269273
#### Returns
@@ -276,7 +280,7 @@ All that means that in a 1000-Shard 20-table Cluster we'll eventually have
276280

277281
> **prewarm**(): `void`
278282
279-
Defined in: [src/abstract/Client.ts:199](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L199)
283+
Defined in: [src/abstract/Client.ts:207](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L207)
280284

281285
A convenience method to put connections prewarming logic to. The idea is to
282286
keep the needed number of open connections and also, in each connection,

docs/classes/DenyIf.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Defined in: [src/ent/rules/Rule.ts:43](https://github.com/clickup/ent-framework/
3737

3838
| Parameter | Type |
3939
| ------ | ------ |
40-
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `Promise`\<`boolean`\> |
40+
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `boolean` \| `Promise`\<`boolean`\> |
4141

4242
#### Returns
4343

docs/classes/Or.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Defined in: [src/ent/predicates/Or.ts:14](https://github.com/clickup/ent-framewo
3232

3333
| Parameter | Type |
3434
| ------ | ------ |
35-
| ...`predicates` | readonly ([`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `Promise`\<`boolean`\>)[] |
35+
| ...`predicates` | readonly ([`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `boolean` \| `Promise`\<`boolean`\>)[] |
3636

3737
#### Returns
3838

@@ -51,7 +51,7 @@ Defined in: [src/ent/predicates/Or.ts:14](https://github.com/clickup/ent-framewo
5151

5252
> **check**(`vc`, `input`): `Promise`\<`boolean`\>
5353
54-
Defined in: [src/ent/predicates/Or.ts:26](https://github.com/clickup/ent-framework/blob/master/src/ent/predicates/Or.ts#L26)
54+
Defined in: [src/ent/predicates/Or.ts:27](https://github.com/clickup/ent-framework/blob/master/src/ent/predicates/Or.ts#L27)
5555

5656
#### Parameters
5757

docs/classes/PgClient.md

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,22 @@ Calls swallowedErrorLogger() doing some preliminary amendment.
149149

150150
### batcher()
151151

152-
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
152+
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `disableBatching`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
153153
154-
Defined in: [src/abstract/Client.ts:179](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L179)
154+
Defined in: [src/abstract/Client.ts:182](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L182)
155+
156+
Batcher is per-Client per-query-type
157+
per-table-name-and-shape-and-disableBatching:
155158

156-
Batcher is per-Client per-query-type per-table-name-and-shape:
157159
- Per-Client means that batchers are removed as soon as the Client is
158160
removed, i.e. the Client owns all the batchers for all tables.
159161
- Per-query-type means that the batcher for a SELECT query is different
160162
from the batcher for an INSERT query (obviously).
161-
- Per-table-name-and-shape means that each table has its own set of
162-
batchers (obviously). Also, some queries may be complex (like UPDATE), so
163-
the batcher also depends on the "shape" - the list of fields we're
164-
updating.
163+
- Per-table-name-and-shape-and-disableBatching means that each table has
164+
its own set of batchers (obviously). Also, some queries may be complex
165+
(like UPDATE), so the batcher also depends on the "shape" - the list of
166+
fields we're updating. Plus, for some inputs, we want to disable batching
167+
at all - that produces a separate Batcher instance.
165168

166169
Also, for every Batcher, there is exactly one Runner (which knows how to
167170
build the actual query in the context of the current Client). Batchers are
@@ -186,6 +189,7 @@ All that means that in a 1000-Shard 20-table Cluster we'll eventually have
186189
| `_QueryClass` | `Function` |
187190
| `_schema` | [`Schema`](Schema.md)\<`TTable`, [`UniqueKey`](../type-aliases/UniqueKey.md)\<`TTable`\>\> |
188191
| `_additionalShape` | `string` |
192+
| `disableBatching` | `boolean` |
189193
| `runnerCreator` | () => [`Runner`](Runner.md)\<`TInput`, `TOutput`\> |
190194

191195
#### Returns
@@ -202,7 +206,7 @@ All that means that in a 1000-Shard 20-table Cluster we'll eventually have
202206

203207
> **prewarm**(): `void`
204208
205-
Defined in: [src/abstract/Client.ts:199](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L199)
209+
Defined in: [src/abstract/Client.ts:207](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L207)
206210

207211
A convenience method to put connections prewarming logic to. The idea is to
208212
keep the needed number of open connections and also, in each connection,
@@ -305,7 +309,7 @@ should expect that role() returns the actual master/replica role.
305309

306310
> **shardNos**(): `Promise`\<readonly `number`[]\>
307311
308-
Defined in: [src/pg/PgClient.ts:402](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L402)
312+
Defined in: [src/pg/PgClient.ts:408](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L408)
309313

310314
Returns all Shard numbers discoverable via the connection to the Client's
311315
database.
@@ -324,7 +328,7 @@ database.
324328

325329
> **ping**(`__namedParameters`): `Promise`\<`void`\>
326330
327-
Defined in: [src/pg/PgClient.ts:426](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L426)
331+
Defined in: [src/pg/PgClient.ts:432](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L432)
328332

329333
Sends a read or write test query to the server. Tells the server to sit and
330334
wait for at least the provided number of milliseconds.
@@ -349,7 +353,7 @@ wait for at least the provided number of milliseconds.
349353

350354
> **shardNoByID**(`id`): `number`
351355
352-
Defined in: [src/pg/PgClient.ts:444](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L444)
356+
Defined in: [src/pg/PgClient.ts:450](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L450)
353357

354358
Extracts Shard number from an ID.
355359

@@ -373,7 +377,7 @@ Extracts Shard number from an ID.
373377

374378
> **withShard**(`no`): `this`
375379
376-
Defined in: [src/pg/PgClient.ts:500](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L500)
380+
Defined in: [src/pg/PgClient.ts:506](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L506)
377381

378382
Creates a new Client which is namespaced to the provided Shard number. The
379383
new Client will share the same connection pool with the parent's Client.
@@ -398,7 +402,7 @@ new Client will share the same connection pool with the parent's Client.
398402

399403
> **role**(): [`ClientRole`](../type-aliases/ClientRole.md)
400404
401-
Defined in: [src/pg/PgClient.ts:511](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L511)
405+
Defined in: [src/pg/PgClient.ts:517](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L517)
402406

403407
Returns the Client's role reported after the last successful query. Master
404408
and replica roles may switch online unpredictably, without reconnecting, so
@@ -418,7 +422,7 @@ we only know the role after a query.
418422

419423
> **connectionIssue**(): `null` \| [`ClientConnectionIssue`](../interfaces/ClientConnectionIssue.md)
420424
421-
Defined in: [src/pg/PgClient.ts:515](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L515)
425+
Defined in: [src/pg/PgClient.ts:521](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L521)
422426

423427
Returns a non-nullable value if the Client couldn't connect to the server
424428
(or it could, but the load balancer reported the remote server as not

docs/classes/PgClientPool.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,22 @@ Defined in: [src/pg/PgClientPool.ts:75](https://github.com/clickup/ent-framework
5454

5555
### batcher()
5656

57-
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
57+
> **batcher**\<`TInput`, `TOutput`, `TTable`\>(`_QueryClass`, `_schema`, `_additionalShape`, `disableBatching`, `runnerCreator`): [`Batcher`](Batcher.md)\<`TInput`, `TOutput`\>
5858
59-
Defined in: [src/abstract/Client.ts:179](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L179)
59+
Defined in: [src/abstract/Client.ts:182](https://github.com/clickup/ent-framework/blob/master/src/abstract/Client.ts#L182)
60+
61+
Batcher is per-Client per-query-type
62+
per-table-name-and-shape-and-disableBatching:
6063

61-
Batcher is per-Client per-query-type per-table-name-and-shape:
6264
- Per-Client means that batchers are removed as soon as the Client is
6365
removed, i.e. the Client owns all the batchers for all tables.
6466
- Per-query-type means that the batcher for a SELECT query is different
6567
from the batcher for an INSERT query (obviously).
66-
- Per-table-name-and-shape means that each table has its own set of
67-
batchers (obviously). Also, some queries may be complex (like UPDATE), so
68-
the batcher also depends on the "shape" - the list of fields we're
69-
updating.
68+
- Per-table-name-and-shape-and-disableBatching means that each table has
69+
its own set of batchers (obviously). Also, some queries may be complex
70+
(like UPDATE), so the batcher also depends on the "shape" - the list of
71+
fields we're updating. Plus, for some inputs, we want to disable batching
72+
at all - that produces a separate Batcher instance.
7073

7174
Also, for every Batcher, there is exactly one Runner (which knows how to
7275
build the actual query in the context of the current Client). Batchers are
@@ -91,6 +94,7 @@ All that means that in a 1000-Shard 20-table Cluster we'll eventually have
9194
| `_QueryClass` | `Function` |
9295
| `_schema` | [`Schema`](Schema.md)\<`TTable`, [`UniqueKey`](../type-aliases/UniqueKey.md)\<`TTable`\>\> |
9396
| `_additionalShape` | `string` |
97+
| `disableBatching` | `boolean` |
9498
| `runnerCreator` | () => [`Runner`](Runner.md)\<`TInput`, `TOutput`\> |
9599

96100
#### Returns
@@ -145,7 +149,7 @@ should expect that role() returns the actual master/replica role.
145149

146150
> **shardNos**(): `Promise`\<readonly `number`[]\>
147151
148-
Defined in: [src/pg/PgClient.ts:402](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L402)
152+
Defined in: [src/pg/PgClient.ts:408](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L408)
149153

150154
Returns all Shard numbers discoverable via the connection to the Client's
151155
database.
@@ -164,7 +168,7 @@ database.
164168

165169
> **ping**(`__namedParameters`): `Promise`\<`void`\>
166170
167-
Defined in: [src/pg/PgClient.ts:426](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L426)
171+
Defined in: [src/pg/PgClient.ts:432](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L432)
168172

169173
Sends a read or write test query to the server. Tells the server to sit and
170174
wait for at least the provided number of milliseconds.
@@ -189,7 +193,7 @@ wait for at least the provided number of milliseconds.
189193

190194
> **shardNoByID**(`id`): `number`
191195
192-
Defined in: [src/pg/PgClient.ts:444](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L444)
196+
Defined in: [src/pg/PgClient.ts:450](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L450)
193197

194198
Extracts Shard number from an ID.
195199

@@ -213,7 +217,7 @@ Extracts Shard number from an ID.
213217

214218
> **withShard**(`no`): `this`
215219
216-
Defined in: [src/pg/PgClient.ts:500](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L500)
220+
Defined in: [src/pg/PgClient.ts:506](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L506)
217221

218222
Creates a new Client which is namespaced to the provided Shard number. The
219223
new Client will share the same connection pool with the parent's Client.
@@ -238,7 +242,7 @@ new Client will share the same connection pool with the parent's Client.
238242

239243
> **role**(): [`ClientRole`](../type-aliases/ClientRole.md)
240244
241-
Defined in: [src/pg/PgClient.ts:511](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L511)
245+
Defined in: [src/pg/PgClient.ts:517](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L517)
242246

243247
Returns the Client's role reported after the last successful query. Master
244248
and replica roles may switch online unpredictably, without reconnecting, so
@@ -258,7 +262,7 @@ we only know the role after a query.
258262

259263
> **connectionIssue**(): `null` \| [`ClientConnectionIssue`](../interfaces/ClientConnectionIssue.md)
260264
261-
Defined in: [src/pg/PgClient.ts:515](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L515)
265+
Defined in: [src/pg/PgClient.ts:521](https://github.com/clickup/ent-framework/blob/master/src/pg/PgClient.ts#L521)
262266

263267
Returns a non-nullable value if the Client couldn't connect to the server
264268
(or it could, but the load balancer reported the remote server as not

docs/classes/PgQuerySelect.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# Class: PgQuerySelect\<TTable\>
88

9-
Defined in: [src/pg/PgQuerySelect.ts:12](https://github.com/clickup/ent-framework/blob/master/src/pg/PgQuerySelect.ts#L12)
9+
Defined in: [src/pg/PgQuerySelect.ts:35](https://github.com/clickup/ent-framework/blob/master/src/pg/PgQuerySelect.ts#L35)
1010

1111
A convenient base class for most (but not all) of the queries, where the
1212
Runner instance is the same for different query input shapes. If the query
@@ -78,7 +78,7 @@ Defined in: [src/abstract/QueryBase.ts:33](https://github.com/clickup/ent-framew
7878

7979
> **run**(`client`, `annotation`): `Promise`\<[`Row`](../type-aliases/Row.md)\<`TTable`\>[]\>
8080
81-
Defined in: [src/abstract/QueryBase.ts:37](https://github.com/clickup/ent-framework/blob/master/src/abstract/QueryBase.ts#L37)
81+
Defined in: [src/pg/PgQuerySelect.ts:44](https://github.com/clickup/ent-framework/blob/master/src/pg/PgQuerySelect.ts#L44)
8282

8383
#### Parameters
8484

@@ -91,6 +91,6 @@ Defined in: [src/abstract/QueryBase.ts:37](https://github.com/clickup/ent-framew
9191

9292
`Promise`\<[`Row`](../type-aliases/Row.md)\<`TTable`\>[]\>
9393

94-
#### Inherited from
94+
#### Overrides
9595

9696
[`QueryBase`](QueryBase.md).[`run`](QueryBase.md#run)

docs/classes/PgRunner.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,10 @@ one input to process, not many.
9494

9595
> `abstract` `optional` **runBatch**(`inputs`, `annotations`): `Promise`\<`Map`\<`string`, `TOutput`\>\>
9696
97-
Defined in: [src/abstract/Runner.ts:38](https://github.com/clickup/ent-framework/blob/master/src/abstract/Runner.ts#L38)
97+
Defined in: [src/abstract/Runner.ts:39](https://github.com/clickup/ent-framework/blob/master/src/abstract/Runner.ts#L39)
9898

99-
Typically issues complex queries with magic.
99+
Typically issues complex queries with magic. If the method is not defined,
100+
then the runner doesn't support batching, so only runSingle() will be used.
100101

101102
#### Parameters
102103

@@ -119,7 +120,7 @@ Typically issues complex queries with magic.
119120

120121
> **key**(`_input`): `string`
121122
122-
Defined in: [src/abstract/Runner.ts:76](https://github.com/clickup/ent-framework/blob/master/src/abstract/Runner.ts#L76)
123+
Defined in: [src/abstract/Runner.ts:77](https://github.com/clickup/ent-framework/blob/master/src/abstract/Runner.ts#L77)
123124

124125
Returns a batch-dedupping key for the input. By default, no dedupping is
125126
performed (i.e. all inputs are processed individually and not collapsed

docs/classes/Require.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Defined in: [src/ent/rules/Rule.ts:43](https://github.com/clickup/ent-framework/
3535

3636
| Parameter | Type |
3737
| ------ | ------ |
38-
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `Promise`\<`boolean`\> |
38+
| `predicate` | [`Predicate`](../interfaces/Predicate.md)\<`TInput`\> \| (`vc`, `input`) => `boolean` \| `Promise`\<`boolean`\> |
3939

4040
#### Returns
4141

0 commit comments

Comments
 (0)