cry-db 2.4.33 → 2.4.35
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/README.md +46 -0
- package/dist/mongo.d.mts +97 -20
- package/dist/mongo.d.mts.map +1 -1
- package/dist/mongo.mjs +423 -81
- package/dist/mongo.mjs.map +1 -1
- package/dist/types.d.mts +15 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -315,6 +315,52 @@ users.on('publish', (channel, data) => { /* ... */ });
|
|
|
315
315
|
users.on('publishRev', (channel, data) => { /* ... */ });
|
|
316
316
|
```
|
|
317
317
|
|
|
318
|
+
#### Update payload shape: `data` and `rawUpdate`
|
|
319
|
+
|
|
320
|
+
For `update` / `updateMany` events (and per-item updates inside `batch`
|
|
321
|
+
events), the publish payload carries two complementary fields:
|
|
322
|
+
|
|
323
|
+
| Field | Contents | Mongo operators? |
|
|
324
|
+
|---|---|---|
|
|
325
|
+
| `data` | Clean (sub-)document with the de-bracketed result. Top-level scalar updates produce a flat key/value pair; bracket-by-`_id` paths produce **the full post-update parent array** (no diff, no positional placeholders, no `$[…]`). Nothing is synthesized — values are sliced straight from the post-update document. | **Never** — no `$set`, `$unset`, `$pull`, `$[fN]`, no flat dotted/bracket keys. |
|
|
326
|
+
| `rawUpdate` | The user's update spec exactly as it came in (top-level shorthand or `$set`/`$unset` form, bracket paths preserved). For inspection / replay / audit. | **Allowed** — that's the point. |
|
|
327
|
+
|
|
328
|
+
```ts
|
|
329
|
+
// Sub-field update via bracket-by-_id
|
|
330
|
+
await items.updateOne({ _id: 'r1' }, { 'postavke[p2].kolicina': 99 });
|
|
331
|
+
|
|
332
|
+
// Publish event:
|
|
333
|
+
{
|
|
334
|
+
operation: 'update',
|
|
335
|
+
db: 'mydb',
|
|
336
|
+
collection: 'items',
|
|
337
|
+
data: {
|
|
338
|
+
_id: 'r1',
|
|
339
|
+
postavke: [ // FULL post-update array
|
|
340
|
+
{ _id: 'p1', kolicina: 1 },
|
|
341
|
+
{ _id: 'p2', kolicina: 99 },
|
|
342
|
+
{ _id: 'p3', kolicina: 3 },
|
|
343
|
+
],
|
|
344
|
+
},
|
|
345
|
+
rawUpdate: { 'postavke[p2].kolicina': 99 },
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
`data` only contains fields that were touched by the update (plus `_id`,
|
|
350
|
+
plus `_rev`/`_ts` when revisions are enabled). Sibling fields the update
|
|
351
|
+
did not touch never leak in. For terminal-bracket inserts/removes
|
|
352
|
+
(`arr[id]: [els]` / `arr[id]: undefined`) the parent array is likewise
|
|
353
|
+
emitted in full.
|
|
354
|
+
|
|
355
|
+
For `updateMany` the `data` field is `{ n: number, ok: boolean }` and
|
|
356
|
+
`rawUpdate` is **not** included — mongo's `updateMany` doesn't return the
|
|
357
|
+
list of affected `_id`-s, so the spec on its own is not actionable.
|
|
358
|
+
Subscribers refetch by timestamp via `findNewer*` (the matching
|
|
359
|
+
`publishRev` event always sets `enquireLastTs: true`).
|
|
360
|
+
|
|
361
|
+
For `batch` events (`upsertBatch` / `updateCollections`), each item in
|
|
362
|
+
`payload.data` carries its own `data` (clean) and `rawUpdate` (raw form).
|
|
363
|
+
|
|
318
364
|
### Transactions
|
|
319
365
|
|
|
320
366
|
```ts
|
package/dist/mongo.d.mts
CHANGED
|
@@ -215,7 +215,23 @@ export declare class Mongo extends Db {
|
|
|
215
215
|
private _processSequenceField;
|
|
216
216
|
private _processSequenceFieldForMany;
|
|
217
217
|
private _getFieldsRecursively;
|
|
218
|
-
|
|
218
|
+
/**
|
|
219
|
+
* Build the publish-data slice for an update result. Bracket paths in
|
|
220
|
+
* `inputUpdate` are mapped to their top-level parent array field, whose
|
|
221
|
+
* post-update value is taken straight from `wholerecord` (the document
|
|
222
|
+
* `findOneAndUpdate` returned with `returnDocument: "after"`). Nothing
|
|
223
|
+
* is synthesized — we only slice.
|
|
224
|
+
*
|
|
225
|
+
* Non-bracket keys keep the legacy literal-key lookup, so a mixed update
|
|
226
|
+
* like `{ name: 'X', 'arr[id].f': 1 }` still publishes top-level scalars
|
|
227
|
+
* the way it always has, while bracket-keyed paths now collapse to a
|
|
228
|
+
* top-level parent slice that downstream consumers can apply directly.
|
|
229
|
+
*
|
|
230
|
+
* `inputUpdate` is the user-form snapshot taken AFTER `_processHashedKeys`
|
|
231
|
+
* and BEFORE `_processUpdateObject` — keys may be in top-level shorthand
|
|
232
|
+
* (`{ "arr[id]": v }`) or already wrapped in `$set`/`$unset`/etc.
|
|
233
|
+
*/
|
|
234
|
+
private _buildPublishDelta;
|
|
219
235
|
private _shouldAuditCollection;
|
|
220
236
|
private _publishAndAudit;
|
|
221
237
|
private _makeDataPublication;
|
|
@@ -274,21 +290,25 @@ export declare class Mongo extends Db {
|
|
|
274
290
|
*/
|
|
275
291
|
private static _unquoteBracketId;
|
|
276
292
|
/**
|
|
277
|
-
* Pre-processing pass that VALIDATES
|
|
278
|
-
*
|
|
279
|
-
*
|
|
293
|
+
* Pre-processing pass that VALIDATES element `_id` for terminal bracket-id
|
|
294
|
+
* paths in `$set` whose value is an object (replace) or array of objects
|
|
295
|
+
* (insert).
|
|
280
296
|
*
|
|
281
|
-
*
|
|
297
|
+
* Two rules enforced:
|
|
282
298
|
* 1) `_id` in brackets must be non-empty (empty → throw via `_unquoteBracketId`)
|
|
283
|
-
* 2)
|
|
284
|
-
*
|
|
299
|
+
* 2) every element MUST carry an `_id` that equals the bracket id
|
|
300
|
+
* (missing or mismatched → throw, prevents data corruption / silent renaming)
|
|
285
301
|
*
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* not a typical insert/replace shape).
|
|
302
|
+
* Throws on violation. Skips primitive values (caller knows what they're
|
|
303
|
+
* doing) and `null` (rare, not a typical insert/replace shape).
|
|
289
304
|
*
|
|
290
305
|
* Called BEFORE `_extractArrayInserts`/`_extractArrayRemoves`/`_extractArrayFilters`
|
|
291
|
-
* so downstream code can assume
|
|
306
|
+
* so downstream code can assume every element has an `_id`.
|
|
307
|
+
*
|
|
308
|
+
* Note: auto-fill of missing `_id` from the bracket id was previously supported
|
|
309
|
+
* but was removed because it hid client bugs (e.g. constructing an insert with
|
|
310
|
+
* the wrong field name and silently writing an element identified by the bracket).
|
|
311
|
+
* Always set `_id` explicitly on the client.
|
|
292
312
|
*/
|
|
293
313
|
private _validateAndAutoFillTerminalBracketValues;
|
|
294
314
|
/**
|
|
@@ -335,11 +355,64 @@ export declare class Mongo extends Db {
|
|
|
335
355
|
* for the existing arrayFilters fallback).
|
|
336
356
|
*/
|
|
337
357
|
private _extractArrayRemoves;
|
|
358
|
+
/**
|
|
359
|
+
* Extracts SINGLE-bracket bracket-by-_id paths from `$set`/`$unset`, grouped
|
|
360
|
+
* by `(parentArrayField, elementId)`. Used when pipeline form is needed
|
|
361
|
+
* (because terminal-bracket inserts/removes are present) — these paths must
|
|
362
|
+
* be expressed as `$map` + `$mergeObjects` stages, since mongo does not
|
|
363
|
+
* allow `arrayFilters` to coexist with aggregation pipelines.
|
|
364
|
+
*
|
|
365
|
+
* Path forms detected (mutated out of `$set`/`$unset`):
|
|
366
|
+
* - `$set` `arr[id].field` → sets["field"] = value (sub-field set)
|
|
367
|
+
* - `$set` `arr[id].sub.field` → sets["sub.field"] = value (deep sub-field set)
|
|
368
|
+
* - `$set` `arr[id]` (object value) → replace = value (whole-element replace)
|
|
369
|
+
* - `$unset` `arr[id].field` → unsets.push("field") (sub-field unset)
|
|
370
|
+
*
|
|
371
|
+
* NOT detected (left in `$set`/`$unset` for caller to handle):
|
|
372
|
+
* - paths with NESTED brackets (e.g. `arr[A].sub[B].field`) — caller must
|
|
373
|
+
* reject these when in pipeline mode (still unsupported).
|
|
374
|
+
* - terminal `arr[id]` already removed by `_extractArrayInserts`/`_extractArrayRemoves`.
|
|
375
|
+
*
|
|
376
|
+
* Mutates `update.$set` and `update.$unset`. Returns the grouped ops, or
|
|
377
|
+
* `undefined` if no extractable paths were present.
|
|
378
|
+
*/
|
|
379
|
+
private _extractArraySubFieldUpdates;
|
|
380
|
+
/**
|
|
381
|
+
* Build an aggregation expression that produces a transformed copy of an
|
|
382
|
+
* element, applying the given sets/unsets and (optionally) a whole-element
|
|
383
|
+
* replacement.
|
|
384
|
+
*
|
|
385
|
+
* - `replace`: when set, becomes the new base (full element replacement).
|
|
386
|
+
* - `sets`: dot-paths within element → values; deep-merged via recursive
|
|
387
|
+
* `$mergeObjects`/`$ifNull` so nested updates preserve sibling fields.
|
|
388
|
+
* - `unsets`: dot-paths within element to remove. Implemented via
|
|
389
|
+
* `$arrayToObject($filter($objectToArray(merged), kv.k notIn unsets))` —
|
|
390
|
+
* `$$REMOVE` inside `$mergeObjects` does NOT drop the field (mongo treats
|
|
391
|
+
* it as a missing value and falls through to the previous operand), so
|
|
392
|
+
* the explicit kv-filter is required.
|
|
393
|
+
*
|
|
394
|
+
* The returned expression is suitable as the `in:` argument of `$map`.
|
|
395
|
+
*/
|
|
396
|
+
private static _buildElementMergeExpr;
|
|
397
|
+
/**
|
|
398
|
+
* Translate an update doc's `$inc` and `$currentDate` operators into
|
|
399
|
+
* pipeline-stage equivalents, so revisions (`_rev` increment, `_ts` timestamp)
|
|
400
|
+
* still fire when the rest of the update goes through aggregation pipeline.
|
|
401
|
+
*
|
|
402
|
+
* - `$inc: { f: n }` → `{ $set: { f: { $add: [{ $ifNull: ['$f', 0] }, n] } } }`
|
|
403
|
+
* - `$currentDate: { f: true }` → `{ $set: { f: '$$NOW' } }` (Date)
|
|
404
|
+
* - `$currentDate: { f: { $type: 'date' } }` → same as above
|
|
405
|
+
* - `$currentDate: { f: { $type: 'timestamp' } }` → `{ $set: { f: '$$CLUSTER_TIME' } }` (Timestamp)
|
|
406
|
+
*
|
|
407
|
+
* Mutates `update` (deletes `$inc` and `$currentDate`). Returns 0..2 pipeline stages.
|
|
408
|
+
*/
|
|
409
|
+
private static _drainIncAndCurrentDateToPipelineStages;
|
|
338
410
|
/**
|
|
339
411
|
* Combined bracket-path processing: extracts inserts (`arr[id]: [els]`),
|
|
340
|
-
* removes (`arr[id]: undefined` → `$unset`),
|
|
341
|
-
*
|
|
342
|
-
*
|
|
412
|
+
* removes (`arr[id]: undefined` → `$unset`), sub-field updates
|
|
413
|
+
* (`arr[id].field`, `arr[id].sub.field`, `arr[id]: <obj>`) and arrayFilters.
|
|
414
|
+
* Decides whether mongo update should be sent as a regular doc or as an
|
|
415
|
+
* aggregation pipeline.
|
|
343
416
|
*
|
|
344
417
|
* Returns `{ update, arrayFilters? }`:
|
|
345
418
|
* - `update` is the original update doc OR an aggregation pipeline.
|
|
@@ -349,13 +422,17 @@ export declare class Mongo extends Db {
|
|
|
349
422
|
* Strategy matrix:
|
|
350
423
|
* - no inserts, no removes → existing arrayFilters path (or pure update doc)
|
|
351
424
|
* - removes only → adds `$pull` to update doc; arrayFilters allowed
|
|
352
|
-
* - inserts (± removes) → pipeline form
|
|
353
|
-
*
|
|
425
|
+
* - inserts (± removes) → pipeline form; SINGLE-bracket sub-field paths
|
|
426
|
+
* are also translated to pipeline `$map` + `$mergeObjects`
|
|
427
|
+
* so they coexist with the inserts. NESTED-bracket paths
|
|
428
|
+
* (e.g. `arr[A].sub[B].field`) combined with inserts still
|
|
429
|
+
* throw — caller must split into two operations.
|
|
354
430
|
*
|
|
355
|
-
* The unified pipeline stage atomically filters out elements
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
431
|
+
* The unified per-parent-field pipeline stage atomically filters out elements
|
|
432
|
+
* matching any of (removeIds ∪ insertIds), maps remaining elements through the
|
|
433
|
+
* sub-field merge expression, then appends new elements. Inserts remain
|
|
434
|
+
* idempotent (re-inserting same `_id` no-ops). `$inc` and `$currentDate` are
|
|
435
|
+
* also translated to pipeline stages so revisions (`_rev`/`_ts`) still fire.
|
|
359
436
|
*/
|
|
360
437
|
private _applyBracketProcessing;
|
|
361
438
|
private _processHashedKeys;
|
package/dist/mongo.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"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"}
|