nedb-engine-client 3.2.2 → 3.3.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/index.d.ts +84 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +120 -9
- package/dist/index.js +120 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -164,10 +164,59 @@ export declare class NedbClient {
|
|
|
164
164
|
* ```
|
|
165
165
|
*/
|
|
166
166
|
put(coll: string, id: string, doc: Record<string, unknown>, opts?: PutOptions): Promise<PutResult>;
|
|
167
|
+
/**
|
|
168
|
+
* Discard a response body we are not going to read.
|
|
169
|
+
*
|
|
170
|
+
* Node's `fetch` (undici) keeps the socket checked out until the body is
|
|
171
|
+
* consumed or cancelled. Every early return that skipped this leaked a
|
|
172
|
+
* connection: `queryFull()` returning `[]` for a missing database is a
|
|
173
|
+
* DOCUMENTED resilient path, so a long-running service leaked one socket per
|
|
174
|
+
* such call until the pool starved. It also kept the event loop alive, which
|
|
175
|
+
* is how this was found — the test suite passed every assertion and then
|
|
176
|
+
* hung forever instead of exiting.
|
|
177
|
+
*/
|
|
178
|
+
private static drain;
|
|
179
|
+
/**
|
|
180
|
+
* Percent-encode one URL path segment.
|
|
181
|
+
*
|
|
182
|
+
* `delete("t", "a/slash")` used to interpolate the id straight into the
|
|
183
|
+
* path, so the `/` split it and the route matched a different id — the call
|
|
184
|
+
* returned false ("no such document") for a document that existed.
|
|
185
|
+
* `encodeURIComponent` encodes `/`, which is exactly what is needed here.
|
|
186
|
+
*/
|
|
187
|
+
private static seg;
|
|
188
|
+
/**
|
|
189
|
+
* Escape a value for use inside a double-quoted NQL string literal.
|
|
190
|
+
*
|
|
191
|
+
* The engine's lexer collapses `\"` to a literal quote and leaves every
|
|
192
|
+
* OTHER backslash alone, so only the quote needs escaping. One case is
|
|
193
|
+
* genuinely unrepresentable: a value ENDING in a backslash produces `...\"`,
|
|
194
|
+
* which the lexer reads as an escaped quote, and the string never
|
|
195
|
+
* terminates. That is why {@link get} prefers the `rows/:coll/:id` route,
|
|
196
|
+
* which takes the id from the URL path and has no quoting to get wrong.
|
|
197
|
+
*/
|
|
198
|
+
private static nqlStr;
|
|
167
199
|
/**
|
|
168
200
|
* Fetch the current version of a document. Returns null if not found.
|
|
201
|
+
*
|
|
202
|
+
* With `asOf`, returns the version at or before that sequence number — the
|
|
203
|
+
* single-document form of time travel.
|
|
204
|
+
*
|
|
205
|
+
* Uses `GET /v1/databases/<db>/rows/<coll>/<id>`, which takes the id from
|
|
206
|
+
* the URL path. This used to build `FROM coll WHERE _id = "..."` and
|
|
207
|
+
* interpolate the id into it, which made every id containing a double quote
|
|
208
|
+
* unreachable: the call returned null — meaning "no such document" — for a
|
|
209
|
+
* document `put()` had stored and `FROM coll` returned. An id ending in a
|
|
210
|
+
* backslash could not be escaped at all.
|
|
211
|
+
*
|
|
212
|
+
* A missing document is `200 {"row": null}` on this route, not 404 —
|
|
213
|
+
* deliberately, so that a 404/405 unambiguously means "the server does not
|
|
214
|
+
* have this route" and the client can fall back to the query path.
|
|
215
|
+
* Requires nedb-engine >= 3.3.0; older servers take the fallback.
|
|
169
216
|
*/
|
|
170
|
-
get(coll: string, id: string): Promise<Record<string, unknown> | null>;
|
|
217
|
+
get(coll: string, id: string, asOf?: number): Promise<Record<string, unknown> | null>;
|
|
218
|
+
/** Pre-3.3.0 fallback for {@link get} — a point lookup built as NQL. */
|
|
219
|
+
private getViaQuery;
|
|
171
220
|
/**
|
|
172
221
|
* Tombstone-delete a document.
|
|
173
222
|
* History is preserved in the DAG; returns true if the document existed.
|
|
@@ -180,13 +229,42 @@ export declare class NedbClient {
|
|
|
180
229
|
* NQL: FROM <coll>
|
|
181
230
|
* [AS OF <seq>]
|
|
182
231
|
* [VALID AS OF "<date>"]
|
|
183
|
-
* [WHERE
|
|
184
|
-
* [ORDER BY field [DESC]]
|
|
185
|
-
* [LIMIT n]
|
|
186
|
-
* [GROUP BY field COUNT|SUM|AVG|MIN|MAX]
|
|
187
|
-
* [TRACE caused_by [REVERSE]]
|
|
232
|
+
* [WHERE <predicate>]
|
|
188
233
|
* [SEARCH "text"]
|
|
234
|
+
* [TRAVERSE <relation>]
|
|
235
|
+
* [TRACE caused_by [REVERSE]]
|
|
236
|
+
* [GROUP BY field [COUNT|SUM f|AVG f|MIN f|MAX f]]
|
|
237
|
+
* [COUNT | SUM f | AVG f | MIN f | MAX f]
|
|
238
|
+
* [HAVING <predicate>]
|
|
239
|
+
* [ORDER BY field [ASC|DESC] (, field [ASC|DESC])*]
|
|
240
|
+
* [LIMIT n] [OFFSET n]
|
|
189
241
|
* ```
|
|
242
|
+
*
|
|
243
|
+
* Clauses are evaluated in SQL's order regardless of how they are written:
|
|
244
|
+
* FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> OFFSET -> LIMIT.
|
|
245
|
+
*
|
|
246
|
+
* `<predicate>` is a full boolean expression (AND binds tighter than OR;
|
|
247
|
+
* parentheses nest to any depth):
|
|
248
|
+
*
|
|
249
|
+
* ```
|
|
250
|
+
* field = != < <= > >= value
|
|
251
|
+
* field [NOT] IN (v1, v2, ...)
|
|
252
|
+
* field [NOT] BETWEEN low AND high // inclusive, as in SQL
|
|
253
|
+
* field [NOT] LIKE|ILIKE "pat" // % any run, _ any one char
|
|
254
|
+
* field IS [NOT] NULL // absent OR explicitly null
|
|
255
|
+
* NOT (...) / (... OR ...) / ...
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* An ordering comparison against a missing or null field is never true, so
|
|
259
|
+
* `WHERE fee < 5` will not return a row that has no `fee`. Use `IS NULL` to
|
|
260
|
+
* select those rows.
|
|
261
|
+
*
|
|
262
|
+
* A clause the server does not implement is REJECTED rather than silently
|
|
263
|
+
* ignored, so a typo throws instead of quietly answering a different
|
|
264
|
+
* question.
|
|
265
|
+
*
|
|
266
|
+
* Requires nedb-engine >= 3.3.0 for IN / BETWEEN / LIKE / IS NULL / OR /
|
|
267
|
+
* NOT / OFFSET / HAVING / multi-key ORDER BY and bare aggregates.
|
|
190
268
|
*/
|
|
191
269
|
query(nql: string): Promise<Record<string, unknown>[]>;
|
|
192
270
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uDAAuD;IACvD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uFAAuF;IACvF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,qBAAa,SAAU,SAAQ,KAAK;aAEhB,MAAM,EAAE,MAAM;aACd,OAAO,EAAE,MAAM;gBADf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;CAKlC;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,EAAE,iBAAiB;YAYrB,KAAK;YAoBL,KAAK;YASL,QAAQ;IAOtB;;;;;;;;OAQG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,SAAS,CAAC;IAqBrB;;;;;;;;;;OAUG;mBACkB,KAAK;IAQ1B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,GAAG;IAIlB;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB;;;;;;;;;;;;;;;;;OAiBG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAkB1C,wEAAwE;YAC1D,WAAW;IAYzB;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAK5D;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBjF,kEAAkE;IAC5D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9C;;;;;;;;;;OAUG;IACG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBjD,wEAAwE;IAClE,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,QAAQ,GAAG,IAAe,GAC/B,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAa3B,iEAAiE;IAC3D,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAMrC,8DAA8D;IACxD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAO7B,iDAAiD;IAC3C,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAO5B,6EAA6E;IACvE,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAWvE,gDAAgD;IAC1C,GAAG,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAYzD,mDAAmD;IAC7C,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAMrC,2DAA2D;IACrD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B,8CAA8C;IACxC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOxC,mDAAmD;IAC7C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,yDAAyD;IACnD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAWvC;AAED,eAAe,UAAU,CAAC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -99,6 +99,7 @@ class NedbClient {
|
|
|
99
99
|
payload.client = opts.clientId;
|
|
100
100
|
let resp = await this.fetch("POST", `/v1/databases/${this.db}/put`, payload, this.writeMs);
|
|
101
101
|
if (resp.status === 404 && this.autoCreate) {
|
|
102
|
+
await NedbClient.drain(resp);
|
|
102
103
|
await this.ensureDb();
|
|
103
104
|
resp = await this.fetch("POST", `/v1/databases/${this.db}/put`, payload, this.writeMs);
|
|
104
105
|
}
|
|
@@ -106,11 +107,88 @@ class NedbClient {
|
|
|
106
107
|
await this.raise(resp);
|
|
107
108
|
return resp.json();
|
|
108
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Discard a response body we are not going to read.
|
|
112
|
+
*
|
|
113
|
+
* Node's `fetch` (undici) keeps the socket checked out until the body is
|
|
114
|
+
* consumed or cancelled. Every early return that skipped this leaked a
|
|
115
|
+
* connection: `queryFull()` returning `[]` for a missing database is a
|
|
116
|
+
* DOCUMENTED resilient path, so a long-running service leaked one socket per
|
|
117
|
+
* such call until the pool starved. It also kept the event loop alive, which
|
|
118
|
+
* is how this was found — the test suite passed every assertion and then
|
|
119
|
+
* hung forever instead of exiting.
|
|
120
|
+
*/
|
|
121
|
+
static async drain(resp) {
|
|
122
|
+
try {
|
|
123
|
+
if (resp.body && !resp.bodyUsed)
|
|
124
|
+
await resp.body.cancel();
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
/* best effort — the socket is being discarded either way */
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Percent-encode one URL path segment.
|
|
132
|
+
*
|
|
133
|
+
* `delete("t", "a/slash")` used to interpolate the id straight into the
|
|
134
|
+
* path, so the `/` split it and the route matched a different id — the call
|
|
135
|
+
* returned false ("no such document") for a document that existed.
|
|
136
|
+
* `encodeURIComponent` encodes `/`, which is exactly what is needed here.
|
|
137
|
+
*/
|
|
138
|
+
static seg(value) {
|
|
139
|
+
return encodeURIComponent(String(value));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Escape a value for use inside a double-quoted NQL string literal.
|
|
143
|
+
*
|
|
144
|
+
* The engine's lexer collapses `\"` to a literal quote and leaves every
|
|
145
|
+
* OTHER backslash alone, so only the quote needs escaping. One case is
|
|
146
|
+
* genuinely unrepresentable: a value ENDING in a backslash produces `...\"`,
|
|
147
|
+
* which the lexer reads as an escaped quote, and the string never
|
|
148
|
+
* terminates. That is why {@link get} prefers the `rows/:coll/:id` route,
|
|
149
|
+
* which takes the id from the URL path and has no quoting to get wrong.
|
|
150
|
+
*/
|
|
151
|
+
static nqlStr(value) {
|
|
152
|
+
return String(value).replace(/"/g, '\\"');
|
|
153
|
+
}
|
|
109
154
|
/**
|
|
110
155
|
* Fetch the current version of a document. Returns null if not found.
|
|
156
|
+
*
|
|
157
|
+
* With `asOf`, returns the version at or before that sequence number — the
|
|
158
|
+
* single-document form of time travel.
|
|
159
|
+
*
|
|
160
|
+
* Uses `GET /v1/databases/<db>/rows/<coll>/<id>`, which takes the id from
|
|
161
|
+
* the URL path. This used to build `FROM coll WHERE _id = "..."` and
|
|
162
|
+
* interpolate the id into it, which made every id containing a double quote
|
|
163
|
+
* unreachable: the call returned null — meaning "no such document" — for a
|
|
164
|
+
* document `put()` had stored and `FROM coll` returned. An id ending in a
|
|
165
|
+
* backslash could not be escaped at all.
|
|
166
|
+
*
|
|
167
|
+
* A missing document is `200 {"row": null}` on this route, not 404 —
|
|
168
|
+
* deliberately, so that a 404/405 unambiguously means "the server does not
|
|
169
|
+
* have this route" and the client can fall back to the query path.
|
|
170
|
+
* Requires nedb-engine >= 3.3.0; older servers take the fallback.
|
|
111
171
|
*/
|
|
112
|
-
async get(coll, id) {
|
|
113
|
-
const
|
|
172
|
+
async get(coll, id, asOf) {
|
|
173
|
+
const qs = asOf !== undefined ? `?as_of=${encodeURIComponent(String(asOf))}` : "";
|
|
174
|
+
const path = `/v1/databases/${this.db}/rows/${NedbClient.seg(coll)}/${NedbClient.seg(id)}${qs}`;
|
|
175
|
+
const resp = await this.fetch("GET", path);
|
|
176
|
+
// The route answers 200 with `row: null` for a missing document,
|
|
177
|
+
// precisely so this cannot be confused with "no such route". A 404/405
|
|
178
|
+
// therefore means the server predates the route.
|
|
179
|
+
if (resp.status === 404 || resp.status === 405) {
|
|
180
|
+
await NedbClient.drain(resp);
|
|
181
|
+
return this.getViaQuery(coll, id, asOf);
|
|
182
|
+
}
|
|
183
|
+
if (!resp.ok)
|
|
184
|
+
await this.raise(resp);
|
|
185
|
+
const body = await resp.json();
|
|
186
|
+
return body.row ?? null;
|
|
187
|
+
}
|
|
188
|
+
/** Pre-3.3.0 fallback for {@link get} — a point lookup built as NQL. */
|
|
189
|
+
async getViaQuery(coll, id, asOf) {
|
|
190
|
+
const asOfClause = asOf !== undefined ? ` AS OF ${Math.trunc(asOf)}` : "";
|
|
191
|
+
const rows = await this.query(`FROM ${coll}${asOfClause} WHERE _id = "${NedbClient.nqlStr(id)}" LIMIT 1`);
|
|
114
192
|
return rows[0] ?? null;
|
|
115
193
|
}
|
|
116
194
|
/**
|
|
@@ -118,9 +196,11 @@ class NedbClient {
|
|
|
118
196
|
* History is preserved in the DAG; returns true if the document existed.
|
|
119
197
|
*/
|
|
120
198
|
async delete(coll, id) {
|
|
121
|
-
const resp = await this.fetch("DELETE", `/v1/databases/${this.db}/rows/${coll}/${id}`, undefined, this.writeMs);
|
|
122
|
-
if (resp.status === 404)
|
|
199
|
+
const resp = await this.fetch("DELETE", `/v1/databases/${this.db}/rows/${NedbClient.seg(coll)}/${NedbClient.seg(id)}`, undefined, this.writeMs);
|
|
200
|
+
if (resp.status === 404) {
|
|
201
|
+
await NedbClient.drain(resp);
|
|
123
202
|
return false;
|
|
203
|
+
}
|
|
124
204
|
if (!resp.ok)
|
|
125
205
|
await this.raise(resp);
|
|
126
206
|
const body = await resp.json();
|
|
@@ -133,13 +213,42 @@ class NedbClient {
|
|
|
133
213
|
* NQL: FROM <coll>
|
|
134
214
|
* [AS OF <seq>]
|
|
135
215
|
* [VALID AS OF "<date>"]
|
|
136
|
-
* [WHERE
|
|
137
|
-
* [ORDER BY field [DESC]]
|
|
138
|
-
* [LIMIT n]
|
|
139
|
-
* [GROUP BY field COUNT|SUM|AVG|MIN|MAX]
|
|
140
|
-
* [TRACE caused_by [REVERSE]]
|
|
216
|
+
* [WHERE <predicate>]
|
|
141
217
|
* [SEARCH "text"]
|
|
218
|
+
* [TRAVERSE <relation>]
|
|
219
|
+
* [TRACE caused_by [REVERSE]]
|
|
220
|
+
* [GROUP BY field [COUNT|SUM f|AVG f|MIN f|MAX f]]
|
|
221
|
+
* [COUNT | SUM f | AVG f | MIN f | MAX f]
|
|
222
|
+
* [HAVING <predicate>]
|
|
223
|
+
* [ORDER BY field [ASC|DESC] (, field [ASC|DESC])*]
|
|
224
|
+
* [LIMIT n] [OFFSET n]
|
|
142
225
|
* ```
|
|
226
|
+
*
|
|
227
|
+
* Clauses are evaluated in SQL's order regardless of how they are written:
|
|
228
|
+
* FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> OFFSET -> LIMIT.
|
|
229
|
+
*
|
|
230
|
+
* `<predicate>` is a full boolean expression (AND binds tighter than OR;
|
|
231
|
+
* parentheses nest to any depth):
|
|
232
|
+
*
|
|
233
|
+
* ```
|
|
234
|
+
* field = != < <= > >= value
|
|
235
|
+
* field [NOT] IN (v1, v2, ...)
|
|
236
|
+
* field [NOT] BETWEEN low AND high // inclusive, as in SQL
|
|
237
|
+
* field [NOT] LIKE|ILIKE "pat" // % any run, _ any one char
|
|
238
|
+
* field IS [NOT] NULL // absent OR explicitly null
|
|
239
|
+
* NOT (...) / (... OR ...) / ...
|
|
240
|
+
* ```
|
|
241
|
+
*
|
|
242
|
+
* An ordering comparison against a missing or null field is never true, so
|
|
243
|
+
* `WHERE fee < 5` will not return a row that has no `fee`. Use `IS NULL` to
|
|
244
|
+
* select those rows.
|
|
245
|
+
*
|
|
246
|
+
* A clause the server does not implement is REJECTED rather than silently
|
|
247
|
+
* ignored, so a typo throws instead of quietly answering a different
|
|
248
|
+
* question.
|
|
249
|
+
*
|
|
250
|
+
* Requires nedb-engine >= 3.3.0 for IN / BETWEEN / LIKE / IS NULL / OR /
|
|
251
|
+
* NOT / OFFSET / HAVING / multi-key ORDER BY and bare aggregates.
|
|
143
252
|
*/
|
|
144
253
|
async query(nql) {
|
|
145
254
|
const result = await this.queryFull(nql);
|
|
@@ -151,6 +260,7 @@ class NedbClient {
|
|
|
151
260
|
async queryFull(nql) {
|
|
152
261
|
const resp = await this.fetch("POST", `/v1/databases/${this.db}/query`, { nql });
|
|
153
262
|
if (resp.status === 400 || resp.status === 404) {
|
|
263
|
+
await NedbClient.drain(resp);
|
|
154
264
|
return { rows: [], count: 0, seq: 0, head: "" };
|
|
155
265
|
}
|
|
156
266
|
if (!resp.ok)
|
|
@@ -227,6 +337,7 @@ class NedbClient {
|
|
|
227
337
|
async batch(ops) {
|
|
228
338
|
let resp = await this.fetch("POST", `/v1/databases/${this.db}/batch`, { ops }, this.writeMs);
|
|
229
339
|
if (resp.status === 404 && this.autoCreate) {
|
|
340
|
+
await NedbClient.drain(resp);
|
|
230
341
|
await this.ensureDb();
|
|
231
342
|
resp = await this.fetch("POST", `/v1/databases/${this.db}/batch`, { ops }, this.writeMs);
|
|
232
343
|
}
|
package/dist/index.js
CHANGED
|
@@ -99,6 +99,7 @@ class NedbClient {
|
|
|
99
99
|
payload.client = opts.clientId;
|
|
100
100
|
let resp = await this.fetch("POST", `/v1/databases/${this.db}/put`, payload, this.writeMs);
|
|
101
101
|
if (resp.status === 404 && this.autoCreate) {
|
|
102
|
+
await NedbClient.drain(resp);
|
|
102
103
|
await this.ensureDb();
|
|
103
104
|
resp = await this.fetch("POST", `/v1/databases/${this.db}/put`, payload, this.writeMs);
|
|
104
105
|
}
|
|
@@ -106,11 +107,88 @@ class NedbClient {
|
|
|
106
107
|
await this.raise(resp);
|
|
107
108
|
return resp.json();
|
|
108
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Discard a response body we are not going to read.
|
|
112
|
+
*
|
|
113
|
+
* Node's `fetch` (undici) keeps the socket checked out until the body is
|
|
114
|
+
* consumed or cancelled. Every early return that skipped this leaked a
|
|
115
|
+
* connection: `queryFull()` returning `[]` for a missing database is a
|
|
116
|
+
* DOCUMENTED resilient path, so a long-running service leaked one socket per
|
|
117
|
+
* such call until the pool starved. It also kept the event loop alive, which
|
|
118
|
+
* is how this was found — the test suite passed every assertion and then
|
|
119
|
+
* hung forever instead of exiting.
|
|
120
|
+
*/
|
|
121
|
+
static async drain(resp) {
|
|
122
|
+
try {
|
|
123
|
+
if (resp.body && !resp.bodyUsed)
|
|
124
|
+
await resp.body.cancel();
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
/* best effort — the socket is being discarded either way */
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Percent-encode one URL path segment.
|
|
132
|
+
*
|
|
133
|
+
* `delete("t", "a/slash")` used to interpolate the id straight into the
|
|
134
|
+
* path, so the `/` split it and the route matched a different id — the call
|
|
135
|
+
* returned false ("no such document") for a document that existed.
|
|
136
|
+
* `encodeURIComponent` encodes `/`, which is exactly what is needed here.
|
|
137
|
+
*/
|
|
138
|
+
static seg(value) {
|
|
139
|
+
return encodeURIComponent(String(value));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Escape a value for use inside a double-quoted NQL string literal.
|
|
143
|
+
*
|
|
144
|
+
* The engine's lexer collapses `\"` to a literal quote and leaves every
|
|
145
|
+
* OTHER backslash alone, so only the quote needs escaping. One case is
|
|
146
|
+
* genuinely unrepresentable: a value ENDING in a backslash produces `...\"`,
|
|
147
|
+
* which the lexer reads as an escaped quote, and the string never
|
|
148
|
+
* terminates. That is why {@link get} prefers the `rows/:coll/:id` route,
|
|
149
|
+
* which takes the id from the URL path and has no quoting to get wrong.
|
|
150
|
+
*/
|
|
151
|
+
static nqlStr(value) {
|
|
152
|
+
return String(value).replace(/"/g, '\\"');
|
|
153
|
+
}
|
|
109
154
|
/**
|
|
110
155
|
* Fetch the current version of a document. Returns null if not found.
|
|
156
|
+
*
|
|
157
|
+
* With `asOf`, returns the version at or before that sequence number — the
|
|
158
|
+
* single-document form of time travel.
|
|
159
|
+
*
|
|
160
|
+
* Uses `GET /v1/databases/<db>/rows/<coll>/<id>`, which takes the id from
|
|
161
|
+
* the URL path. This used to build `FROM coll WHERE _id = "..."` and
|
|
162
|
+
* interpolate the id into it, which made every id containing a double quote
|
|
163
|
+
* unreachable: the call returned null — meaning "no such document" — for a
|
|
164
|
+
* document `put()` had stored and `FROM coll` returned. An id ending in a
|
|
165
|
+
* backslash could not be escaped at all.
|
|
166
|
+
*
|
|
167
|
+
* A missing document is `200 {"row": null}` on this route, not 404 —
|
|
168
|
+
* deliberately, so that a 404/405 unambiguously means "the server does not
|
|
169
|
+
* have this route" and the client can fall back to the query path.
|
|
170
|
+
* Requires nedb-engine >= 3.3.0; older servers take the fallback.
|
|
111
171
|
*/
|
|
112
|
-
async get(coll, id) {
|
|
113
|
-
const
|
|
172
|
+
async get(coll, id, asOf) {
|
|
173
|
+
const qs = asOf !== undefined ? `?as_of=${encodeURIComponent(String(asOf))}` : "";
|
|
174
|
+
const path = `/v1/databases/${this.db}/rows/${NedbClient.seg(coll)}/${NedbClient.seg(id)}${qs}`;
|
|
175
|
+
const resp = await this.fetch("GET", path);
|
|
176
|
+
// The route answers 200 with `row: null` for a missing document,
|
|
177
|
+
// precisely so this cannot be confused with "no such route". A 404/405
|
|
178
|
+
// therefore means the server predates the route.
|
|
179
|
+
if (resp.status === 404 || resp.status === 405) {
|
|
180
|
+
await NedbClient.drain(resp);
|
|
181
|
+
return this.getViaQuery(coll, id, asOf);
|
|
182
|
+
}
|
|
183
|
+
if (!resp.ok)
|
|
184
|
+
await this.raise(resp);
|
|
185
|
+
const body = await resp.json();
|
|
186
|
+
return body.row ?? null;
|
|
187
|
+
}
|
|
188
|
+
/** Pre-3.3.0 fallback for {@link get} — a point lookup built as NQL. */
|
|
189
|
+
async getViaQuery(coll, id, asOf) {
|
|
190
|
+
const asOfClause = asOf !== undefined ? ` AS OF ${Math.trunc(asOf)}` : "";
|
|
191
|
+
const rows = await this.query(`FROM ${coll}${asOfClause} WHERE _id = "${NedbClient.nqlStr(id)}" LIMIT 1`);
|
|
114
192
|
return rows[0] ?? null;
|
|
115
193
|
}
|
|
116
194
|
/**
|
|
@@ -118,9 +196,11 @@ class NedbClient {
|
|
|
118
196
|
* History is preserved in the DAG; returns true if the document existed.
|
|
119
197
|
*/
|
|
120
198
|
async delete(coll, id) {
|
|
121
|
-
const resp = await this.fetch("DELETE", `/v1/databases/${this.db}/rows/${coll}/${id}`, undefined, this.writeMs);
|
|
122
|
-
if (resp.status === 404)
|
|
199
|
+
const resp = await this.fetch("DELETE", `/v1/databases/${this.db}/rows/${NedbClient.seg(coll)}/${NedbClient.seg(id)}`, undefined, this.writeMs);
|
|
200
|
+
if (resp.status === 404) {
|
|
201
|
+
await NedbClient.drain(resp);
|
|
123
202
|
return false;
|
|
203
|
+
}
|
|
124
204
|
if (!resp.ok)
|
|
125
205
|
await this.raise(resp);
|
|
126
206
|
const body = await resp.json();
|
|
@@ -133,13 +213,42 @@ class NedbClient {
|
|
|
133
213
|
* NQL: FROM <coll>
|
|
134
214
|
* [AS OF <seq>]
|
|
135
215
|
* [VALID AS OF "<date>"]
|
|
136
|
-
* [WHERE
|
|
137
|
-
* [ORDER BY field [DESC]]
|
|
138
|
-
* [LIMIT n]
|
|
139
|
-
* [GROUP BY field COUNT|SUM|AVG|MIN|MAX]
|
|
140
|
-
* [TRACE caused_by [REVERSE]]
|
|
216
|
+
* [WHERE <predicate>]
|
|
141
217
|
* [SEARCH "text"]
|
|
218
|
+
* [TRAVERSE <relation>]
|
|
219
|
+
* [TRACE caused_by [REVERSE]]
|
|
220
|
+
* [GROUP BY field [COUNT|SUM f|AVG f|MIN f|MAX f]]
|
|
221
|
+
* [COUNT | SUM f | AVG f | MIN f | MAX f]
|
|
222
|
+
* [HAVING <predicate>]
|
|
223
|
+
* [ORDER BY field [ASC|DESC] (, field [ASC|DESC])*]
|
|
224
|
+
* [LIMIT n] [OFFSET n]
|
|
142
225
|
* ```
|
|
226
|
+
*
|
|
227
|
+
* Clauses are evaluated in SQL's order regardless of how they are written:
|
|
228
|
+
* FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> OFFSET -> LIMIT.
|
|
229
|
+
*
|
|
230
|
+
* `<predicate>` is a full boolean expression (AND binds tighter than OR;
|
|
231
|
+
* parentheses nest to any depth):
|
|
232
|
+
*
|
|
233
|
+
* ```
|
|
234
|
+
* field = != < <= > >= value
|
|
235
|
+
* field [NOT] IN (v1, v2, ...)
|
|
236
|
+
* field [NOT] BETWEEN low AND high // inclusive, as in SQL
|
|
237
|
+
* field [NOT] LIKE|ILIKE "pat" // % any run, _ any one char
|
|
238
|
+
* field IS [NOT] NULL // absent OR explicitly null
|
|
239
|
+
* NOT (...) / (... OR ...) / ...
|
|
240
|
+
* ```
|
|
241
|
+
*
|
|
242
|
+
* An ordering comparison against a missing or null field is never true, so
|
|
243
|
+
* `WHERE fee < 5` will not return a row that has no `fee`. Use `IS NULL` to
|
|
244
|
+
* select those rows.
|
|
245
|
+
*
|
|
246
|
+
* A clause the server does not implement is REJECTED rather than silently
|
|
247
|
+
* ignored, so a typo throws instead of quietly answering a different
|
|
248
|
+
* question.
|
|
249
|
+
*
|
|
250
|
+
* Requires nedb-engine >= 3.3.0 for IN / BETWEEN / LIKE / IS NULL / OR /
|
|
251
|
+
* NOT / OFFSET / HAVING / multi-key ORDER BY and bare aggregates.
|
|
143
252
|
*/
|
|
144
253
|
async query(nql) {
|
|
145
254
|
const result = await this.queryFull(nql);
|
|
@@ -151,6 +260,7 @@ class NedbClient {
|
|
|
151
260
|
async queryFull(nql) {
|
|
152
261
|
const resp = await this.fetch("POST", `/v1/databases/${this.db}/query`, { nql });
|
|
153
262
|
if (resp.status === 400 || resp.status === 404) {
|
|
263
|
+
await NedbClient.drain(resp);
|
|
154
264
|
return { rows: [], count: 0, seq: 0, head: "" };
|
|
155
265
|
}
|
|
156
266
|
if (!resp.ok)
|
|
@@ -227,6 +337,7 @@ class NedbClient {
|
|
|
227
337
|
async batch(ops) {
|
|
228
338
|
let resp = await this.fetch("POST", `/v1/databases/${this.db}/batch`, { ops }, this.writeMs);
|
|
229
339
|
if (resp.status === 404 && this.autoCreate) {
|
|
340
|
+
await NedbClient.drain(resp);
|
|
230
341
|
await this.ensureDb();
|
|
231
342
|
resp = await this.fetch("POST", `/v1/databases/${this.db}/batch`, { ops }, this.writeMs);
|
|
232
343
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|