@ahrowe/mongo 0.1.3 → 0.2.1

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/db.js CHANGED
@@ -2,7 +2,6 @@
2
2
  import { MongoClient, ObjectId, } from 'mongodb';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import _ from 'lodash';
5
- import { batchify } from './batchify.js';
6
5
  import { OUTBOX_COLLECTION, OutboxOp, OutboxStatus } from './types/outbox.js';
7
6
  const logger = {
8
7
  debug: console.debug,
@@ -19,14 +18,27 @@ let contextProvider = null;
19
18
  export const setOutboxContextProvider = (fn) => {
20
19
  contextProvider = fn;
21
20
  };
22
- /** collectionName → the service's in-process EventEmitter (the relay's routing table). */
23
- const serviceBusRegistry = new Map();
24
- export const getServiceBus = (collectionName) => serviceBusRegistry.get(collectionName);
25
- export const getRegisteredCollections = () => [...serviceBusRegistry.keys()];
21
+ /** collectionName → listeners registered via on()/onPropertiesUpdated() in this process. */
22
+ const listenerRegistry = new Map();
23
+ /** Collections with a service in this process. The relay only claims rows for these. */
24
+ export const getRegisteredCollections = () => [...listenerRegistry.keys()];
25
+ /**
26
+ * Delivers one event to every listener registered for its collection and op in this process,
27
+ * waits for all of them, then rejects with the first failure, if any. The relay calls this per
28
+ * outbox row. Call it yourself only when events reach this process another way, e.g. from a broker.
29
+ */
30
+ export const dispatchEvent = async (collectionName, event) => {
31
+ const listeners = [...(listenerRegistry.get(collectionName) ?? [])].filter((listener) => listener.op === event.op);
32
+ const payload = { ...event, prevDoc: event.prevDoc ?? undefined, meta: event.meta ?? undefined, context: event.context ?? undefined };
33
+ const results = await Promise.allSettled(listeners.map(async (listener) => listener.callback(payload)));
34
+ const failure = results.find((result) => result.status === 'rejected');
35
+ if (failure)
36
+ throw failure.reason;
37
+ };
38
+ /** Test-only: drops every listener on a collection. Not part of the public barrel. */
39
+ export const removeAllListeners = (collectionName) => listenerRegistry.get(collectionName)?.clear();
26
40
  /** Raw outbox collection — used by the relay to claim/mark rows WITHOUT emitting. */
27
41
  export const getOutboxCollection = () => db.collection(OUTBOX_COLLECTION);
28
- /** Drop updatedOn before comparing — skip events when only that field changed. */
29
- const stripNoise = (doc) => _.omit(doc, ['updatedOn']);
30
42
  async function enqueueOutbox(collectionName, session, rows) {
31
43
  if (!rows.length)
32
44
  return;
@@ -43,7 +55,6 @@ async function enqueueOutbox(collectionName, session, rows) {
43
55
  status: OutboxStatus.Pending,
44
56
  attempts: 0,
45
57
  nextAttemptAt: now,
46
- leasedUntil: null,
47
58
  leasedBy: null,
48
59
  lastError: null,
49
60
  createdOn: now,
@@ -52,6 +63,16 @@ async function enqueueOutbox(collectionName, session, rows) {
52
63
  }));
53
64
  await db.collection(OUTBOX_COLLECTION).insertMany(outboxRows, { session });
54
65
  }
66
+ /** Writes validate and record the full document, so they reject options that would return less. */
67
+ function rejectPartialResult(method, options) {
68
+ const { projection, includeResultMetadata } = options;
69
+ if (projection !== undefined || includeResultMetadata) {
70
+ throw new Error(`${method}: projection and includeResultMetadata are not supported on writes. ` +
71
+ 'Read the fields you need with find/findOne afterwards.');
72
+ }
73
+ }
74
+ /** Documents per round trip in updateMany/removeMany. Bounds the documents held in memory at once. */
75
+ const CHUNK_SIZE = 500;
55
76
  // --- guardListener (connection bus only — relay handles listener errors per-row) ---
56
77
  function guardListener(label, callback) {
57
78
  return (...args) => {
@@ -65,19 +86,19 @@ function guardListener(label, callback) {
65
86
  }
66
87
  };
67
88
  }
68
- const generateService = (collectionName, validate = null, { addCreatedOnField = true, addUpdatedOnField = true, maxLimit: serviceMaxLimit, maxBatchSize: serviceMaxBatchSize, emitOutboxEvents = true, } = {}) => {
89
+ const generateService = (collectionName, validate = null, { addCreatedOnField = true, addUpdatedOnField = true, maxLimit: serviceMaxLimit, maxBatchSize: serviceMaxBatchSize, emitOutboxEvents = true, toOutboxDoc, } = {}) => {
69
90
  const driver = db.collection(collectionName);
70
91
  const readDriver = readDb.collection(collectionName);
71
92
  const name = driver.collectionName;
72
- const existingBus = serviceBusRegistry.get(name);
73
- if (existingBus) {
74
- logger.warn(`createService('${name}') was already called once — reusing its event bus so ` +
93
+ const existingListeners = listenerRegistry.get(name);
94
+ if (existingListeners) {
95
+ logger.warn(`createService('${name}') was already called once — sharing its listeners so ` +
75
96
  'on()/onPropertiesUpdated() listeners registered on either instance still receive ' +
76
97
  'dispatched events. Prefer sharing a single service instance across callers instead ' +
77
98
  'of calling createService again for the same collection.');
78
99
  }
79
- const bus = existingBus ?? new EventEmitter();
80
- serviceBusRegistry.set(name, bus);
100
+ const listeners = existingListeners ?? new Set();
101
+ listenerRegistry.set(name, listeners);
81
102
  function validateSchema(entity) {
82
103
  if (validate) {
83
104
  const result = validate(entity);
@@ -98,6 +119,18 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
98
119
  return session.withTransaction(() => fn(session));
99
120
  return client.withSession((newSession) => newSession.withTransaction(() => fn(newSession)));
100
121
  }
122
+ /** Whether a write validates what it wrote, so a failure has to roll the write back. */
123
+ const validatesAfterWrite = (options) => !!validate && !options.skipValidation;
124
+ /** What listeners get of a document. */
125
+ const outboxDoc = (doc) => (toOutboxDoc ? toOutboxDoc(doc) : doc);
126
+ /** The outbox row for an update, or null when listeners would see no change beyond updatedOn. */
127
+ function updatedRow(prevDoc, doc, meta) {
128
+ const prev = outboxDoc(prevDoc);
129
+ const next = outboxDoc(doc);
130
+ if (_.isEqual(_.omit(prev, 'updatedOn'), _.omit(next, 'updatedOn')))
131
+ return null;
132
+ return { op: OutboxOp.Updated, doc: next, prevDoc: prev, meta };
133
+ }
101
134
  function getUpdateBodyWithUpdatedOn(updateBody) {
102
135
  if (!addUpdatedOnField)
103
136
  return updateBody;
@@ -111,12 +144,14 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
111
144
  function generateId() {
112
145
  return new ObjectId().toHexString();
113
146
  }
114
- // on() registers listeners on the in-process bus. The relay dispatches to them
115
- // and handles per-row errors itself — do NOT wrap with guardListener here, as
116
- // that would swallow errors before the relay's retry/dead-letter logic sees them.
117
- function on(eventName, callback) {
118
- logger.debug(`Called "on" for collection "${name}"\nEvent: ${eventName}`);
119
- return bus.on(eventName, callback);
147
+ // Callbacks are stored as-is: dispatchEvent awaits them and the relay retries on a rejection.
148
+ // Do NOT wrap with guardListener here, that would swallow errors before the relay sees them.
149
+ function on(event, callback) {
150
+ const listener = { op: event, callback };
151
+ listeners.add(listener);
152
+ return () => {
153
+ listeners.delete(listener);
154
+ };
120
155
  }
121
156
  function onPropertiesUpdated(properties, callback) {
122
157
  return on('updated', (evt) => {
@@ -147,23 +182,24 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
147
182
  throw new Error(`findOne: More than one document return for query ${JSON.stringify(query)}`);
148
183
  return found?.[0] || null;
149
184
  }
150
- // Core single-document update: read before, atomic write, validate. Shared by
151
- // updateOne and updateMany's per-document reliable path.
152
- async function performSingleUpdate(query, updateBody, session, options = {}) {
153
- const preUpdate = await findOne(query, { session });
154
- const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
155
- const postUpdate = await driver.findOneAndUpdate(query, enhancedUpdateBody, {
156
- ...options,
157
- returnDocument: 'after',
158
- session,
159
- });
160
- if (!postUpdate)
161
- return { preUpdate: null, postUpdate: null };
162
- if (!options.skipValidation)
163
- validateSchema(postUpdate);
164
- return { preUpdate: preUpdate ?? null, postUpdate: postUpdate };
185
+ /**
186
+ * The _ids a multi-document write will touch, read inside its transaction. Reads one past
187
+ * maxBatchSize, so an oversized match fails before anything is loaded or written.
188
+ */
189
+ async function matchIds(method, query, session, maxBatchSize, { collation, hint, let: letVars }) {
190
+ const limit = maxBatchSize === undefined ? undefined : maxBatchSize + 1;
191
+ const matched = await driver
192
+ .find(query, { session, projection: { _id: 1 }, sort: { _id: 1 }, limit, collation, hint, let: letVars })
193
+ .toArray();
194
+ if (maxBatchSize !== undefined && matched.length > maxBatchSize) {
195
+ throw new Error(`${method}: matched more than ${maxBatchSize} documents (maxBatchSize). One transaction processing ` +
196
+ `this many risks MongoDB's transaction lifetime limit.\nQuery: ${JSON.stringify(query)}\n` +
197
+ 'Raise maxBatchSize, or split the work into several calls.');
198
+ }
199
+ return matched.map((doc) => doc._id);
165
200
  }
166
201
  async function upsertOne(query, updateBody, options = {}) {
202
+ rejectPartialResult('upsertOne', options);
167
203
  function buildUpsertBody(body) {
168
204
  const enhanced = getUpdateBodyWithUpdatedOn(body);
169
205
  if (Array.isArray(enhanced))
@@ -176,8 +212,7 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
176
212
  return { ...enhanced, $setOnInsert: setOnInsert };
177
213
  }
178
214
  if (!emitOutboxEvents) {
179
- // Still a transaction: validation runs after the write, so a failure has to roll it back.
180
- return executeWithTransaction(options.session, async (session) => {
215
+ const write = async (session) => {
181
216
  const postDoc = await driver.findOneAndUpdate(query, buildUpsertBody(updateBody), {
182
217
  ...options,
183
218
  upsert: true,
@@ -189,7 +224,10 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
189
224
  if (!options.skipValidation)
190
225
  validateSchema(postDoc);
191
226
  return postDoc;
192
- });
227
+ };
228
+ // One findOneAndUpdate is atomic. A transaction of its own only rolls back a write that fails
229
+ // validation, and costs a commit plus WriteConflict retries on a contended document.
230
+ return validatesAfterWrite(options) ? executeWithTransaction(options.session, write) : write(options.session);
193
231
  }
194
232
  const baseLogic = async (session) => {
195
233
  const prevDoc = await findOne(query, { session });
@@ -205,12 +243,11 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
205
243
  if (!options.skipValidation)
206
244
  validateSchema(postDoc);
207
245
  const wasInsert = prevDoc === null;
208
- if (wasInsert) {
209
- await enqueueOutbox(name, session, [{ op: OutboxOp.Created, doc: postDoc, meta: options.meta }]);
210
- }
211
- else if (!_.isEqual(stripNoise(prevDoc), stripNoise(postDoc))) {
212
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postDoc, prevDoc, meta: options.meta }]);
213
- }
246
+ const row = wasInsert
247
+ ? { op: OutboxOp.Created, doc: outboxDoc(postDoc), meta: options.meta }
248
+ : updatedRow(prevDoc, postDoc, options.meta);
249
+ if (row)
250
+ await enqueueOutbox(name, session, [row]);
214
251
  return postDoc;
215
252
  };
216
253
  return executeWithTransaction(options.session, baseLogic);
@@ -218,8 +255,10 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
218
255
  async function updateOne(query, updateBody, options = {}) {
219
256
  if ('upsert' in options)
220
257
  throw new Error('updateOne: upsert option is not allowed. Use insert method instead.');
258
+ rejectPartialResult('updateOne', options);
221
259
  if (!emitOutboxEvents) {
222
- // Lean path: no pre-read, no outbox row. findOneAndUpdate is atomic by itself.
260
+ // Lean path: no pre-read, no outbox row. findOneAndUpdate is atomic by itself, so it only
261
+ // needs a transaction to roll back a write that fails validation, as in upsertOne.
223
262
  const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
224
263
  const run = async (session) => {
225
264
  const result = await driver.findOneAndUpdate(query, enhancedUpdateBody, {
@@ -229,20 +268,29 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
229
268
  });
230
269
  if (!result)
231
270
  return null;
232
- if (!options.skipValidation) {
271
+ if (validatesAfterWrite(options)) {
233
272
  // With returnOriginal the result is the pre-update doc: validate what was written instead.
234
273
  const written = options.returnOriginal ? await driver.findOne({ _id: result._id }, { session }) : result;
235
274
  validateSchema(written);
236
275
  }
237
276
  return result;
238
277
  };
239
- return executeWithTransaction(options.session, run);
278
+ return validatesAfterWrite(options) ? executeWithTransaction(options.session, run) : run(options.session);
240
279
  }
241
280
  const baseUpdateLogic = async (session) => {
242
- const { preUpdate, postUpdate } = await performSingleUpdate(query, updateBody, session, options);
243
- if (preUpdate && postUpdate && !_.isEqual(stripNoise(preUpdate), stripNoise(postUpdate))) {
244
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postUpdate, prevDoc: preUpdate, meta: options.meta }]);
245
- }
281
+ const preUpdate = (await findOne(query, { session }));
282
+ const postUpdate = (await driver.findOneAndUpdate(query, getUpdateBodyWithUpdatedOn(updateBody), {
283
+ ...options,
284
+ returnDocument: 'after',
285
+ session,
286
+ }));
287
+ if (!postUpdate)
288
+ return { preUpdate: null, postUpdate: null };
289
+ if (!options.skipValidation)
290
+ validateSchema(postUpdate);
291
+ const row = preUpdate && updatedRow(preUpdate, postUpdate, options.meta);
292
+ if (row)
293
+ await enqueueOutbox(name, session, [row]);
246
294
  return { preUpdate, postUpdate };
247
295
  };
248
296
  const { preUpdate, postUpdate } = await executeWithTransaction(options.session, baseUpdateLogic);
@@ -251,99 +299,74 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
251
299
  async function updateMany(query, updateBody, options = {}) {
252
300
  if ('upsert' in options)
253
301
  throw new Error('updateMany: upsert option is not allowed. Use insert method instead.');
254
- const skipValidation = options.skipValidation ?? false;
255
- if (!emitOutboxEvents) {
256
- // Fast path: no outbox rows needed — single native bulk write, one sampled doc validated.
257
- const baseLogic = async (session) => {
258
- const entitiesPreUpdate = skipValidation ? [] : await find(query, { ...options, session, limit: 1, projection: { _id: 1 } });
259
- const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
260
- const updateManyRes = await driver.updateMany(query, enhancedUpdateBody, { ...options, session });
261
- if (!skipValidation && entitiesPreUpdate.length > 0) {
262
- const entityPostUpdate = await findOne({ _id: entitiesPreUpdate[0]._id }, { session });
263
- validateSchema(entityPostUpdate);
264
- }
265
- return updateManyRes;
266
- };
267
- const res = await executeWithTransaction(options.session, baseLogic);
302
+ const { skipValidation = false, meta, maxBatchSize = serviceMaxBatchSize, arrayFilters, bypassDocumentValidation, let: letVars } = options;
303
+ const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
304
+ const validates = validatesAfterWrite({ skipValidation });
305
+ if (!emitOutboxEvents && !validates) {
306
+ // Nothing to check or record per document: one native write. Still a transaction: a
307
+ // multi-document update is no retryable write, so a failure midway would stay half applied.
308
+ const res = await executeWithTransaction(options.session, (session) => driver.updateMany(query, enhancedUpdateBody, { ...options, session }));
268
309
  return { ...res, nModified: res.modifiedCount };
269
310
  }
270
- // Reliable path: per-document atomic ops inside one transaction so the whole
271
- // batch rolls back together. Every document is individually validated and gets
272
- // an accurate {prevDoc, doc} pair — not a diff between two independent scans.
273
- // No cap by default — pass maxBatchSize (per-call or via createService) to
274
- // enforce one, recommended once batches risk hitting MongoDB's transaction lifetime limit.
275
- const maxBatchSize = options.maxBatchSize ?? serviceMaxBatchSize;
276
- const baseReliableLogic = async (session) => {
277
- const matchedCount = await driver.countDocuments(query, { session });
278
- if (maxBatchSize !== undefined && matchedCount > maxBatchSize) {
279
- throw new Error(`updateMany: matched ${matchedCount} documents, which exceeds the limit of ${maxBatchSize}. A single transaction processing this many documents risks hitting MongoDB's transaction lifetime limit.\nQuery: ${JSON.stringify(query)}\nUse bulkWrite for larger batch updates (no transaction/validation/event guarantees), or raise maxBatchSize.`);
280
- }
281
- const matchedIds = (await find(query, { session, projection: { _id: 1 }, sort: { _id: 1 } }));
311
+ // Chunks of documents by _id, all inside one transaction, so a failure in any chunk rolls back
312
+ // every chunk. Every document is validated after the write and, with events on, gets an exact
313
+ // {prevDoc, doc} pair: within the transaction nothing else can change it in between.
314
+ const result = await executeWithTransaction(options.session, async (session) => {
315
+ const ids = await matchIds('updateMany', query, session, maxBatchSize, options);
282
316
  let modifiedCount = 0;
283
- await batchify({
284
- dataDelivery: matchedIds,
285
- batchSize: 100,
286
- concurrency: 1,
287
- throwOnError: true,
288
- functionToRun: async ({ _id }) => {
289
- const { preUpdate, postUpdate } = await performSingleUpdate({ _id }, updateBody, session, { skipValidation });
290
- if (postUpdate) {
291
- modifiedCount += 1;
292
- if (preUpdate && !_.isEqual(stripNoise(preUpdate), stripNoise(postUpdate))) {
293
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postUpdate, prevDoc: preUpdate, meta: options.meta }]);
294
- }
295
- }
296
- },
297
- });
298
- return { matchedCount, modifiedCount };
299
- };
300
- const { matchedCount, modifiedCount } = await executeWithTransaction(options.session, baseReliableLogic);
301
- return { acknowledged: true, matchedCount, modifiedCount, nModified: modifiedCount, upsertedCount: 0, upsertedId: null };
317
+ for (const chunk of _.chunk(ids, CHUNK_SIZE)) {
318
+ const byIds = { _id: { $in: chunk } };
319
+ const prevDocs = emitOutboxEvents ? await driver.find(byIds, { session }).toArray() : [];
320
+ const res = await driver.updateMany(byIds, enhancedUpdateBody, { session, arrayFilters, bypassDocumentValidation, let: letVars });
321
+ modifiedCount += res.modifiedCount;
322
+ const docs = await driver.find(byIds, { session, sort: { _id: 1 } }).toArray();
323
+ if (validates)
324
+ docs.forEach((doc) => validateSchema(doc));
325
+ if (emitOutboxEvents) {
326
+ const prevById = new Map(prevDocs.map((doc) => [String(doc._id), doc]));
327
+ await enqueueOutbox(name, session, _.compact(docs.map((doc) => updatedRow(prevById.get(String(doc._id)), doc, meta))));
328
+ }
329
+ }
330
+ return { matchedCount: ids.length, modifiedCount };
331
+ });
332
+ return { acknowledged: true, ...result, nModified: result.modifiedCount, upsertedCount: 0, upsertedId: null };
302
333
  }
303
334
  async function removeOne(query, options = {}) {
335
+ rejectPartialResult('removeOne', options);
304
336
  if (!emitOutboxEvents)
305
337
  return driver.findOneAndDelete(query, options);
306
338
  const baseLogic = async (session) => {
307
339
  const removed = await driver.findOneAndDelete(query, { ...options, session });
308
340
  if (removed)
309
- await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: removed, meta: options.meta }]);
341
+ await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: outboxDoc(removed), meta: options.meta }]);
310
342
  return removed;
311
343
  };
312
344
  return executeWithTransaction(options.session, baseLogic);
313
345
  }
314
346
  async function removeMany(query, options = {}) {
315
- const returnRemoved = options.returnRemoved ?? true;
347
+ rejectPartialResult('removeMany', options);
348
+ const { returnRemoved = true, meta, maxBatchSize = serviceMaxBatchSize } = options;
316
349
  if (!emitOutboxEvents) {
317
350
  const entriesToRemove = returnRemoved ? await find(query, options) : undefined;
318
351
  const deleteRes = await driver.deleteMany(query, options);
319
352
  return { ...deleteRes, results: entriesToRemove };
320
353
  }
321
- // Reliable path: per-document atomic deletes inside one transaction.
322
- const maxBatchSize = options.maxBatchSize ?? serviceMaxBatchSize;
323
- const baseReliableLogic = async (session) => {
324
- const matchedCount = await driver.countDocuments(query, { session });
325
- if (maxBatchSize !== undefined && matchedCount > maxBatchSize) {
326
- throw new Error(`removeMany: matched ${matchedCount} documents, which exceeds the limit of ${maxBatchSize}. A single transaction processing this many documents risks hitting MongoDB's transaction lifetime limit.\nQuery: ${JSON.stringify(query)}\nUse bulkWrite for larger batch removals (no transaction/event guarantees), or raise maxBatchSize.`);
327
- }
328
- const matchedIds = (await find(query, { session, projection: { _id: 1 }, sort: { _id: 1 } }));
354
+ // Chunks of documents by _id inside one transaction, like updateMany.
355
+ const result = await executeWithTransaction(options.session, async (session) => {
356
+ const ids = await matchIds('removeMany', query, session, maxBatchSize, options);
329
357
  const removed = [];
330
- await batchify({
331
- dataDelivery: matchedIds,
332
- batchSize: 100,
333
- concurrency: 1,
334
- throwOnError: true,
335
- functionToRun: async ({ _id }) => {
336
- const deletedDoc = await driver.findOneAndDelete({ _id }, { session });
337
- if (deletedDoc) {
338
- removed.push(deletedDoc);
339
- await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: deletedDoc, meta: options.meta }]);
340
- }
341
- },
342
- });
343
- return { matchedCount, removed };
344
- };
345
- const { removed } = await executeWithTransaction(options.session, baseReliableLogic);
346
- return { acknowledged: true, deletedCount: removed.length, results: returnRemoved ? removed : undefined };
358
+ let deletedCount = 0;
359
+ for (const chunk of _.chunk(ids, CHUNK_SIZE)) {
360
+ const byIds = { _id: { $in: chunk } };
361
+ const docs = (await driver.find(byIds, { session, sort: { _id: 1 } }).toArray());
362
+ deletedCount += (await driver.deleteMany(byIds, { session })).deletedCount;
363
+ await enqueueOutbox(name, session, docs.map((doc) => ({ op: OutboxOp.Removed, doc: outboxDoc(doc), meta })));
364
+ if (returnRemoved)
365
+ removed.push(...docs);
366
+ }
367
+ return { deletedCount, removed };
368
+ });
369
+ return { acknowledged: true, deletedCount: result.deletedCount, results: returnRemoved ? result.removed : undefined };
347
370
  }
348
371
  async function insert(entitiesToCreate, options = {}) {
349
372
  const isMultiInsert = Array.isArray(entitiesToCreate);
@@ -354,15 +377,22 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
354
377
  ...(addCreatedOnField ? { createdOn: entity.createdOn || new Date() } : {}),
355
378
  });
356
379
  const validateFunction = options.skipValidation ? (e) => e : validateSchema;
357
- const baseInsertLogic = async (session) => {
380
+ const write = async (session) => {
358
381
  const parsedEntities = newEntities.map((entity) => validateFunction(preInsert(entity)));
359
382
  await driver.insertMany(parsedEntities, { ...options, session });
360
- if (emitOutboxEvents) {
361
- await enqueueOutbox(name, session, parsedEntities.map((doc) => ({ op: OutboxOp.Created, doc, meta: options.meta })));
362
- }
363
- return isMultiInsert ? parsedEntities : parsedEntities[0];
383
+ return parsedEntities;
364
384
  };
365
- return executeWithTransaction(options.session, baseInsertLogic);
385
+ // One document and no outbox row: validation ran before the write, so there is nothing to roll back.
386
+ const inserted = !emitOutboxEvents && newEntities.length === 1
387
+ ? await write(options.session)
388
+ : await executeWithTransaction(options.session, async (session) => {
389
+ const parsedEntities = await write(session);
390
+ if (emitOutboxEvents) {
391
+ await enqueueOutbox(name, session, parsedEntities.map((doc) => ({ op: OutboxOp.Created, doc: outboxDoc(doc), meta: options.meta })));
392
+ }
393
+ return parsedEntities;
394
+ });
395
+ return isMultiInsert ? inserted : inserted[0];
366
396
  }
367
397
  async function count(query, options = {}) {
368
398
  return options.preferReadFromSecondary ? readDriver.countDocuments(query) : driver.countDocuments(query);
@@ -387,6 +417,10 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
387
417
  async function bulkWrite(operations, options = {}) {
388
418
  if (!options.allowBulkwrite)
389
419
  throw new Error('Bulkwrite not allowed');
420
+ if (emitOutboxEvents) {
421
+ throw new Error(`bulkWrite: '${name}' emits outbox events, and bulkWrite writes none, so its listeners would miss ` +
422
+ 'these changes. Use the write methods, or a service created with emitOutboxEvents: false.');
423
+ }
390
424
  return driver.bulkWrite(operations, options);
391
425
  }
392
426
  return {
@@ -409,7 +443,6 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
409
443
  dropIndex,
410
444
  on,
411
445
  onPropertiesUpdated,
412
- eventBus: bus,
413
446
  bulkWrite,
414
447
  };
415
448
  };
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { connect, createService, withSession, startSession, disconnect, setOutboxContextProvider, getServiceBus, getRegisteredCollections, getOutboxCollection, type DbService, type IndexSpec, type NestedPaths, } from './db.js';
1
+ export { connect, createService, withSession, startSession, disconnect, setOutboxContextProvider, dispatchEvent, getRegisteredCollections, getOutboxCollection, type DbService, type IndexSpec, type NestedPaths, type ServiceOptions, } from './db.js';
2
2
  export { default } from './db.js';
3
3
  export { startOutboxRelay, type OutboxRelay, type OutboxRelayOptions } from './outboxRelay.js';
4
- export { OUTBOX_COLLECTION, OutboxOp, OutboxStatus, type OutboxRow } from './types/outbox.js';
4
+ export { OUTBOX_COLLECTION, OutboxOp, OutboxStatus, type OutboxEvent, type OutboxRow } from './types/outbox.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { connect, createService, withSession, startSession, disconnect, setOutboxContextProvider, getServiceBus, getRegisteredCollections, getOutboxCollection, } from './db.js';
1
+ export { connect, createService, withSession, startSession, disconnect, setOutboxContextProvider, dispatchEvent, getRegisteredCollections, getOutboxCollection, } from './db.js';
2
2
  export { default } from './db.js';
3
3
  export { startOutboxRelay } from './outboxRelay.js';
4
4
  export { OUTBOX_COLLECTION, OutboxOp, OutboxStatus } from './types/outbox.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAA6C,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,mBAAmB,GAKpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAA6C,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAoC,MAAM,mBAAmB,CAAC"}