@ahrowe/mongo 0.1.2 → 0.2.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/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,14 +55,24 @@ 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,
50
61
  processedOn: null,
62
+ expireAt: null,
51
63
  }));
52
64
  await db.collection(OUTBOX_COLLECTION).insertMany(outboxRows, { session });
53
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;
54
76
  // --- guardListener (connection bus only — relay handles listener errors per-row) ---
55
77
  function guardListener(label, callback) {
56
78
  return (...args) => {
@@ -64,19 +86,19 @@ function guardListener(label, callback) {
64
86
  }
65
87
  };
66
88
  }
67
- 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, } = {}) => {
68
90
  const driver = db.collection(collectionName);
69
91
  const readDriver = readDb.collection(collectionName);
70
92
  const name = driver.collectionName;
71
- const existingBus = serviceBusRegistry.get(name);
72
- if (existingBus) {
73
- 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 ` +
74
96
  'on()/onPropertiesUpdated() listeners registered on either instance still receive ' +
75
97
  'dispatched events. Prefer sharing a single service instance across callers instead ' +
76
98
  'of calling createService again for the same collection.');
77
99
  }
78
- const bus = existingBus ?? new EventEmitter();
79
- serviceBusRegistry.set(name, bus);
100
+ const listeners = existingListeners ?? new Set();
101
+ listenerRegistry.set(name, listeners);
80
102
  function validateSchema(entity) {
81
103
  if (validate) {
82
104
  const result = validate(entity);
@@ -85,12 +107,27 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
85
107
  }
86
108
  return entity;
87
109
  }
88
- async function executeWithTransaction(functionToRun) {
89
- return client.withSession(async (session) => {
90
- return session.withTransaction(async () => {
91
- return functionToRun(session);
92
- });
93
- });
110
+ /**
111
+ * Runs fn in the caller's transaction if their session has one, otherwise in a new one (on
112
+ * their session, if given). A session without a transaction would let a data write commit
113
+ * without its outbox row, or a write that fails validation stay committed.
114
+ */
115
+ async function executeWithTransaction(session, fn) {
116
+ if (session?.inTransaction())
117
+ return fn(session);
118
+ if (session)
119
+ return session.withTransaction(() => fn(session));
120
+ return client.withSession((newSession) => newSession.withTransaction(() => fn(newSession)));
121
+ }
122
+ /** What listeners get of a document. */
123
+ const outboxDoc = (doc) => (toOutboxDoc ? toOutboxDoc(doc) : doc);
124
+ /** The outbox row for an update, or null when listeners would see no change beyond updatedOn. */
125
+ function updatedRow(prevDoc, doc, meta) {
126
+ const prev = outboxDoc(prevDoc);
127
+ const next = outboxDoc(doc);
128
+ if (_.isEqual(_.omit(prev, 'updatedOn'), _.omit(next, 'updatedOn')))
129
+ return null;
130
+ return { op: OutboxOp.Updated, doc: next, prevDoc: prev, meta };
94
131
  }
95
132
  function getUpdateBodyWithUpdatedOn(updateBody) {
96
133
  if (!addUpdatedOnField)
@@ -105,20 +142,23 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
105
142
  function generateId() {
106
143
  return new ObjectId().toHexString();
107
144
  }
108
- // on() registers listeners on the in-process bus. The relay dispatches to them
109
- // and handles per-row errors itself — do NOT wrap with guardListener here, as
110
- // that would swallow errors before the relay's retry/dead-letter logic sees them.
111
- function on(eventName, callback) {
112
- logger.debug(`Called "on" for collection "${name}"\nEvent: ${eventName}`);
113
- return bus.on(eventName, callback);
145
+ // Callbacks are stored as-is: dispatchEvent awaits them and the relay retries on a rejection.
146
+ // Do NOT wrap with guardListener here, that would swallow errors before the relay sees them.
147
+ function on(event, callback) {
148
+ const listener = { op: event, callback };
149
+ listeners.add(listener);
150
+ return () => {
151
+ listeners.delete(listener);
152
+ };
114
153
  }
115
154
  function onPropertiesUpdated(properties, callback) {
116
155
  return on('updated', (evt) => {
117
156
  const newData = evt.doc;
118
157
  const prevData = evt.prevDoc;
119
158
  const hasListedPropertyChanged = !_.isEqual(_.pick(newData, properties), _.pick(prevData, properties));
159
+ // Returned so the relay awaits it: a rejection gets retried instead of going unhandled.
120
160
  if (hasListedPropertyChanged)
121
- callback(evt);
161
+ return callback(evt);
122
162
  });
123
163
  }
124
164
  function findCursor(query, options = {}) {
@@ -140,23 +180,24 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
140
180
  throw new Error(`findOne: More than one document return for query ${JSON.stringify(query)}`);
141
181
  return found?.[0] || null;
142
182
  }
143
- // Core single-document update: read before, atomic write, validate. Shared by
144
- // updateOne and updateMany's per-document reliable path.
145
- async function performSingleUpdate(query, updateBody, session, options = {}) {
146
- const preUpdate = await findOne(query, { session });
147
- const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
148
- const postUpdate = await driver.findOneAndUpdate(query, enhancedUpdateBody, {
149
- ...options,
150
- returnDocument: 'after',
151
- session,
152
- });
153
- if (!postUpdate)
154
- return { preUpdate: null, postUpdate: null };
155
- if (!options.skipValidation)
156
- validateSchema(postUpdate);
157
- return { preUpdate: preUpdate ?? null, postUpdate: postUpdate };
183
+ /**
184
+ * The _ids a multi-document write will touch, read inside its transaction. Reads one past
185
+ * maxBatchSize, so an oversized match fails before anything is loaded or written.
186
+ */
187
+ async function matchIds(method, query, session, maxBatchSize, { collation, hint, let: letVars }) {
188
+ const limit = maxBatchSize === undefined ? undefined : maxBatchSize + 1;
189
+ const matched = await driver
190
+ .find(query, { session, projection: { _id: 1 }, sort: { _id: 1 }, limit, collation, hint, let: letVars })
191
+ .toArray();
192
+ if (maxBatchSize !== undefined && matched.length > maxBatchSize) {
193
+ throw new Error(`${method}: matched more than ${maxBatchSize} documents (maxBatchSize). One transaction processing ` +
194
+ `this many risks MongoDB's transaction lifetime limit.\nQuery: ${JSON.stringify(query)}\n` +
195
+ 'Raise maxBatchSize, or split the work into several calls.');
196
+ }
197
+ return matched.map((doc) => doc._id);
158
198
  }
159
199
  async function upsertOne(query, updateBody, options = {}) {
200
+ rejectPartialResult('upsertOne', options);
160
201
  function buildUpsertBody(body) {
161
202
  const enhanced = getUpdateBodyWithUpdatedOn(body);
162
203
  if (Array.isArray(enhanced))
@@ -169,18 +210,20 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
169
210
  return { ...enhanced, $setOnInsert: setOnInsert };
170
211
  }
171
212
  if (!emitOutboxEvents) {
172
- const enhanced = buildUpsertBody(updateBody);
173
- const postDoc = await driver.findOneAndUpdate(query, enhanced, {
174
- ...options,
175
- upsert: true,
176
- returnDocument: 'after',
177
- session: options.session,
213
+ // Still a transaction: validation runs after the write, so a failure has to roll it back.
214
+ return executeWithTransaction(options.session, async (session) => {
215
+ const postDoc = await driver.findOneAndUpdate(query, buildUpsertBody(updateBody), {
216
+ ...options,
217
+ upsert: true,
218
+ returnDocument: 'after',
219
+ session,
220
+ });
221
+ if (!postDoc)
222
+ throw new Error('upsertOne: findOneAndUpdate returned null unexpectedly');
223
+ if (!options.skipValidation)
224
+ validateSchema(postDoc);
225
+ return postDoc;
178
226
  });
179
- if (!postDoc)
180
- throw new Error('upsertOne: findOneAndUpdate returned null unexpectedly');
181
- if (!options.skipValidation)
182
- validateSchema(postDoc);
183
- return postDoc;
184
227
  }
185
228
  const baseLogic = async (session) => {
186
229
  const prevDoc = await findOne(query, { session });
@@ -196,21 +239,19 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
196
239
  if (!options.skipValidation)
197
240
  validateSchema(postDoc);
198
241
  const wasInsert = prevDoc === null;
199
- if (wasInsert) {
200
- await enqueueOutbox(name, session, [{ op: OutboxOp.Created, doc: postDoc, meta: options.meta }]);
201
- }
202
- else if (!_.isEqual(stripNoise(prevDoc), stripNoise(postDoc))) {
203
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postDoc, prevDoc, meta: options.meta }]);
204
- }
242
+ const row = wasInsert
243
+ ? { op: OutboxOp.Created, doc: outboxDoc(postDoc), meta: options.meta }
244
+ : updatedRow(prevDoc, postDoc, options.meta);
245
+ if (row)
246
+ await enqueueOutbox(name, session, [row]);
205
247
  return postDoc;
206
248
  };
207
- if (options.session)
208
- return baseLogic(options.session);
209
- return executeWithTransaction(baseLogic);
249
+ return executeWithTransaction(options.session, baseLogic);
210
250
  }
211
251
  async function updateOne(query, updateBody, options = {}) {
212
252
  if ('upsert' in options)
213
253
  throw new Error('updateOne: upsert option is not allowed. Use insert method instead.');
254
+ rejectPartialResult('updateOne', options);
214
255
  if (!emitOutboxEvents) {
215
256
  // Lean path: no pre-read, no outbox row. findOneAndUpdate is atomic by itself.
216
257
  const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
@@ -222,128 +263,105 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
222
263
  });
223
264
  if (!result)
224
265
  return null;
225
- if (!options.skipValidation)
226
- validateSchema(result);
266
+ if (!options.skipValidation) {
267
+ // With returnOriginal the result is the pre-update doc: validate what was written instead.
268
+ const written = options.returnOriginal ? await driver.findOne({ _id: result._id }, { session }) : result;
269
+ validateSchema(written);
270
+ }
227
271
  return result;
228
272
  };
229
- if (options.session)
230
- return run(options.session);
231
- return executeWithTransaction(run);
273
+ return executeWithTransaction(options.session, run);
232
274
  }
233
275
  const baseUpdateLogic = async (session) => {
234
- const { preUpdate, postUpdate } = await performSingleUpdate(query, updateBody, session, options);
235
- if (preUpdate && postUpdate && !_.isEqual(stripNoise(preUpdate), stripNoise(postUpdate))) {
236
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postUpdate, prevDoc: preUpdate, meta: options.meta }]);
237
- }
276
+ const preUpdate = (await findOne(query, { session }));
277
+ const postUpdate = (await driver.findOneAndUpdate(query, getUpdateBodyWithUpdatedOn(updateBody), {
278
+ ...options,
279
+ returnDocument: 'after',
280
+ session,
281
+ }));
282
+ if (!postUpdate)
283
+ return { preUpdate: null, postUpdate: null };
284
+ if (!options.skipValidation)
285
+ validateSchema(postUpdate);
286
+ const row = preUpdate && updatedRow(preUpdate, postUpdate, options.meta);
287
+ if (row)
288
+ await enqueueOutbox(name, session, [row]);
238
289
  return { preUpdate, postUpdate };
239
290
  };
240
- const { preUpdate, postUpdate } = options.session
241
- ? await baseUpdateLogic(options.session)
242
- : await executeWithTransaction(baseUpdateLogic);
291
+ const { preUpdate, postUpdate } = await executeWithTransaction(options.session, baseUpdateLogic);
243
292
  return options.returnOriginal ? preUpdate : postUpdate;
244
293
  }
245
294
  async function updateMany(query, updateBody, options = {}) {
246
295
  if ('upsert' in options)
247
296
  throw new Error('updateMany: upsert option is not allowed. Use insert method instead.');
248
- const skipValidation = options.skipValidation ?? false;
249
- if (!emitOutboxEvents) {
250
- // Fast path: no outbox rows needed — single native bulk write, one sampled doc validated.
251
- const baseLogic = async (session) => {
252
- const entitiesPreUpdate = skipValidation ? [] : await find(query, { ...options, session, limit: 1, projection: { _id: 1 } });
253
- const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
254
- const updateManyRes = await driver.updateMany(query, enhancedUpdateBody, { ...options, session });
255
- if (!skipValidation && entitiesPreUpdate.length > 0) {
256
- const entityPostUpdate = await findOne({ _id: entitiesPreUpdate[0]._id }, { session });
257
- validateSchema(entityPostUpdate);
258
- }
259
- return updateManyRes;
260
- };
261
- const res = options.session ? await baseLogic(options.session) : await executeWithTransaction(baseLogic);
297
+ const { skipValidation = false, meta, maxBatchSize = serviceMaxBatchSize, arrayFilters, bypassDocumentValidation, let: letVars } = options;
298
+ const enhancedUpdateBody = getUpdateBodyWithUpdatedOn(updateBody);
299
+ const validates = !!validate && !skipValidation;
300
+ if (!emitOutboxEvents && !validates) {
301
+ // Nothing to check or record per document: one native write. Still a transaction: a
302
+ // multi-document update is no retryable write, so a failure midway would stay half applied.
303
+ const res = await executeWithTransaction(options.session, (session) => driver.updateMany(query, enhancedUpdateBody, { ...options, session }));
262
304
  return { ...res, nModified: res.modifiedCount };
263
305
  }
264
- // Reliable path: per-document atomic ops inside one transaction so the whole
265
- // batch rolls back together. Every document is individually validated and gets
266
- // an accurate {prevDoc, doc} pair — not a diff between two independent scans.
267
- // No cap by default — pass maxBatchSize (per-call or via createService) to
268
- // enforce one, recommended once batches risk hitting MongoDB's transaction lifetime limit.
269
- const maxBatchSize = options.maxBatchSize ?? serviceMaxBatchSize;
270
- const baseReliableLogic = async (session) => {
271
- const matchedCount = await driver.countDocuments(query, { session });
272
- if (maxBatchSize !== undefined && matchedCount > maxBatchSize) {
273
- 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.`);
274
- }
275
- const matchedIds = (await find(query, { session, projection: { _id: 1 }, sort: { _id: 1 } }));
306
+ // Chunks of documents by _id, all inside one transaction, so a failure in any chunk rolls back
307
+ // every chunk. Every document is validated after the write and, with events on, gets an exact
308
+ // {prevDoc, doc} pair: within the transaction nothing else can change it in between.
309
+ const result = await executeWithTransaction(options.session, async (session) => {
310
+ const ids = await matchIds('updateMany', query, session, maxBatchSize, options);
276
311
  let modifiedCount = 0;
277
- await batchify({
278
- dataDelivery: matchedIds,
279
- batchSize: 100,
280
- concurrency: 1,
281
- throwOnError: true,
282
- functionToRun: async ({ _id }) => {
283
- const { preUpdate, postUpdate } = await performSingleUpdate({ _id }, updateBody, session, { skipValidation });
284
- if (postUpdate) {
285
- modifiedCount += 1;
286
- if (preUpdate && !_.isEqual(stripNoise(preUpdate), stripNoise(postUpdate))) {
287
- await enqueueOutbox(name, session, [{ op: OutboxOp.Updated, doc: postUpdate, prevDoc: preUpdate, meta: options.meta }]);
288
- }
289
- }
290
- },
291
- });
292
- return { matchedCount, modifiedCount };
293
- };
294
- const { matchedCount, modifiedCount } = options.session
295
- ? await baseReliableLogic(options.session)
296
- : await executeWithTransaction(baseReliableLogic);
297
- return { acknowledged: true, matchedCount, modifiedCount, nModified: modifiedCount, upsertedCount: 0, upsertedId: null };
312
+ for (const chunk of _.chunk(ids, CHUNK_SIZE)) {
313
+ const byIds = { _id: { $in: chunk } };
314
+ const prevDocs = emitOutboxEvents ? await driver.find(byIds, { session }).toArray() : [];
315
+ const res = await driver.updateMany(byIds, enhancedUpdateBody, { session, arrayFilters, bypassDocumentValidation, let: letVars });
316
+ modifiedCount += res.modifiedCount;
317
+ const docs = await driver.find(byIds, { session, sort: { _id: 1 } }).toArray();
318
+ if (validates)
319
+ docs.forEach((doc) => validateSchema(doc));
320
+ if (emitOutboxEvents) {
321
+ const prevById = new Map(prevDocs.map((doc) => [String(doc._id), doc]));
322
+ await enqueueOutbox(name, session, _.compact(docs.map((doc) => updatedRow(prevById.get(String(doc._id)), doc, meta))));
323
+ }
324
+ }
325
+ return { matchedCount: ids.length, modifiedCount };
326
+ });
327
+ return { acknowledged: true, ...result, nModified: result.modifiedCount, upsertedCount: 0, upsertedId: null };
298
328
  }
299
329
  async function removeOne(query, options = {}) {
330
+ rejectPartialResult('removeOne', options);
300
331
  if (!emitOutboxEvents)
301
332
  return driver.findOneAndDelete(query, options);
302
333
  const baseLogic = async (session) => {
303
334
  const removed = await driver.findOneAndDelete(query, { ...options, session });
304
335
  if (removed)
305
- await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: removed, meta: options.meta }]);
336
+ await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: outboxDoc(removed), meta: options.meta }]);
306
337
  return removed;
307
338
  };
308
- if (options.session)
309
- return baseLogic(options.session);
310
- return executeWithTransaction(baseLogic);
339
+ return executeWithTransaction(options.session, baseLogic);
311
340
  }
312
341
  async function removeMany(query, options = {}) {
313
- const returnRemoved = options.returnRemoved ?? true;
342
+ rejectPartialResult('removeMany', options);
343
+ const { returnRemoved = true, meta, maxBatchSize = serviceMaxBatchSize } = options;
314
344
  if (!emitOutboxEvents) {
315
345
  const entriesToRemove = returnRemoved ? await find(query, options) : undefined;
316
346
  const deleteRes = await driver.deleteMany(query, options);
317
347
  return { ...deleteRes, results: entriesToRemove };
318
348
  }
319
- // Reliable path: per-document atomic deletes inside one transaction.
320
- const maxBatchSize = options.maxBatchSize ?? serviceMaxBatchSize;
321
- const baseReliableLogic = async (session) => {
322
- const matchedCount = await driver.countDocuments(query, { session });
323
- if (maxBatchSize !== undefined && matchedCount > maxBatchSize) {
324
- 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.`);
325
- }
326
- const matchedIds = (await find(query, { session, projection: { _id: 1 }, sort: { _id: 1 } }));
349
+ // Chunks of documents by _id inside one transaction, like updateMany.
350
+ const result = await executeWithTransaction(options.session, async (session) => {
351
+ const ids = await matchIds('removeMany', query, session, maxBatchSize, options);
327
352
  const removed = [];
328
- await batchify({
329
- dataDelivery: matchedIds,
330
- batchSize: 100,
331
- concurrency: 1,
332
- throwOnError: true,
333
- functionToRun: async ({ _id }) => {
334
- const deletedDoc = await driver.findOneAndDelete({ _id }, { session });
335
- if (deletedDoc) {
336
- removed.push(deletedDoc);
337
- await enqueueOutbox(name, session, [{ op: OutboxOp.Removed, doc: deletedDoc, meta: options.meta }]);
338
- }
339
- },
340
- });
341
- return { matchedCount, removed };
342
- };
343
- const { removed } = options.session
344
- ? await baseReliableLogic(options.session)
345
- : await executeWithTransaction(baseReliableLogic);
346
- return { acknowledged: true, deletedCount: removed.length, results: returnRemoved ? removed : undefined };
353
+ let deletedCount = 0;
354
+ for (const chunk of _.chunk(ids, CHUNK_SIZE)) {
355
+ const byIds = { _id: { $in: chunk } };
356
+ const docs = (await driver.find(byIds, { session, sort: { _id: 1 } }).toArray());
357
+ deletedCount += (await driver.deleteMany(byIds, { session })).deletedCount;
358
+ await enqueueOutbox(name, session, docs.map((doc) => ({ op: OutboxOp.Removed, doc: outboxDoc(doc), meta })));
359
+ if (returnRemoved)
360
+ removed.push(...docs);
361
+ }
362
+ return { deletedCount, removed };
363
+ });
364
+ return { acknowledged: true, deletedCount: result.deletedCount, results: returnRemoved ? result.removed : undefined };
347
365
  }
348
366
  async function insert(entitiesToCreate, options = {}) {
349
367
  const isMultiInsert = Array.isArray(entitiesToCreate);
@@ -358,11 +376,11 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
358
376
  const parsedEntities = newEntities.map((entity) => validateFunction(preInsert(entity)));
359
377
  await driver.insertMany(parsedEntities, { ...options, session });
360
378
  if (emitOutboxEvents) {
361
- await enqueueOutbox(name, session, parsedEntities.map((doc) => ({ op: OutboxOp.Created, doc, meta: options.meta })));
379
+ await enqueueOutbox(name, session, parsedEntities.map((doc) => ({ op: OutboxOp.Created, doc: outboxDoc(doc), meta: options.meta })));
362
380
  }
363
381
  return isMultiInsert ? parsedEntities : parsedEntities[0];
364
382
  };
365
- return options.session ? baseInsertLogic(options.session) : executeWithTransaction(baseInsertLogic);
383
+ return executeWithTransaction(options.session, baseInsertLogic);
366
384
  }
367
385
  async function count(query, options = {}) {
368
386
  return options.preferReadFromSecondary ? readDriver.countDocuments(query) : driver.countDocuments(query);
@@ -387,6 +405,10 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
387
405
  async function bulkWrite(operations, options = {}) {
388
406
  if (!options.allowBulkwrite)
389
407
  throw new Error('Bulkwrite not allowed');
408
+ if (emitOutboxEvents) {
409
+ throw new Error(`bulkWrite: '${name}' emits outbox events, and bulkWrite writes none, so its listeners would miss ` +
410
+ 'these changes. Use the write methods, or a service created with emitOutboxEvents: false.');
411
+ }
390
412
  return driver.bulkWrite(operations, options);
391
413
  }
392
414
  return {
@@ -409,7 +431,6 @@ const generateService = (collectionName, validate = null, { addCreatedOnField =
409
431
  dropIndex,
410
432
  on,
411
433
  onPropertiesUpdated,
412
- eventBus: bus,
413
434
  bulkWrite,
414
435
  };
415
436
  };
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"}