cry-db 2.4.19 → 2.4.21

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 ADDED
@@ -0,0 +1,299 @@
1
+ # cry-db
2
+
3
+ A MongoDB wrapper library providing a high-level API for database operations with built-in support for revisions, soft-delete, archiving, blocking, auditing, and real-time publish events.
4
+
5
+ ## Architecture
6
+
7
+ ```
8
+ Base Connection management, ObjectId utilities, timestamps
9
+ └─ Db Database selection, collection/index management
10
+ └─ Mongo Full CRUD, soft-delete, archive, block, audit, publish events
11
+ Repo Convenience wrapper around Mongo bound to a single collection
12
+ ```
13
+
14
+ - **`Mongo`** — operates on explicit `(collection, query, ...)` arguments
15
+ - **`Repo<T>`** — wraps a `Mongo` instance with a fixed collection, so every call omits the collection parameter
16
+
17
+ ## Quick Start
18
+
19
+ ```ts
20
+ import { Repo, Mongo } from 'cry-db';
21
+
22
+ // Repo — single-collection convenience class
23
+ const users = new Repo('users', 'mydb');
24
+
25
+ // Mongo — multi-collection class
26
+ const mongo = new Mongo('mydb');
27
+ ```
28
+
29
+ Connection uses `MONGO_URL` env var (default `mongodb://127.0.0.1:27017`) and `MONGO_DB` env var for the database name.
30
+
31
+ ## Record Lifecycle
32
+
33
+ Documents in cry-db have three visibility states controlled by metadata flags. Each state is **opt-in** and **independent** — a record can be in any combination of states simultaneously.
34
+
35
+ | State | Flag | Opt-in | Filtered from queries | Reversible |
36
+ |-----------|------------|--------------------------|------------------------------|------------|
37
+ | Active | _(none)_ | — | No | — |
38
+ | Deleted | `_deleted` | `useSoftDelete(true)` | Yes, unless `returnDeleted` | No (use `hardDelete` to purge) |
39
+ | Archived | `_archived`| `useArchive(true)` | Yes, unless `returnArchived` | Yes (`unarchiveOne`) |
40
+ | Blocked | `_blocked` | — | **No** (always returned) | Yes (`unblockOne`) |
41
+
42
+ **Query filtering rules:**
43
+
44
+ - When **soft-delete** is enabled, all query methods (`find`, `findOne`, `findById`, `findByIds`, `count`, `findNewer`, `findNewerMany`, `findByIdsInManyCollections`) automatically add `{ _deleted: { $exists: false } }` to the query. Pass `{ returnDeleted: true }` in `QueryOpts` to override.
45
+ - When **archive** is enabled, the same query methods automatically add `{ _archived: { $exists: false } }`. Pass `{ returnArchived: true }` to override.
46
+ - Both filters apply independently. A record that is both deleted and archived is hidden by both filters — you need both `returnDeleted` and `returnArchived` to see it.
47
+ - `findAll` bypasses both filters entirely.
48
+
49
+ ## CRUD Operations
50
+
51
+ ### Insert
52
+
53
+ ```ts
54
+ let user = await users.insert({ name: 'Alice', age: 30 });
55
+ // user._id, user._rev, user._ts are set automatically when revisions are enabled
56
+
57
+ let many = await users.insertMany([{ name: 'Bob' }, { name: 'Carol' }]);
58
+ ```
59
+
60
+ ### Query
61
+
62
+ ```ts
63
+ await users.find({ age: { $gte: 25 } });
64
+ await users.find({ age: { $gte: 25 } }, { sort: { name: 1 }, limit: 10, skip: 0 });
65
+ await users.findOne({ name: 'Alice' });
66
+ await users.findById(id);
67
+ await users.findByIds([id1, id2]);
68
+ await users.findAll(query); // bypasses soft-delete/archive filters
69
+ await users.count({ age: { $gte: 25 } });
70
+ ```
71
+
72
+ ### Update
73
+
74
+ ```ts
75
+ await users.updateOne({ name: 'Alice' }, { $set: { age: 31 } });
76
+ await users.update({ active: true }, { $inc: { loginCount: 1 } }); // updateMany
77
+ await users.save({ $set: { age: 31 } }, userId);
78
+ await users.upsert({ email: 'a@b.c' }, { $set: { name: 'Alice' } });
79
+ ```
80
+
81
+ ### Delete
82
+
83
+ ```ts
84
+ await users.deleteOne({ name: 'Alice' }); // soft-delete when enabled, else hard delete
85
+ await users.delete({ inactive: true }); // bulk soft-delete / hard delete
86
+ await users.hardDeleteOne(id); // always physically removes
87
+ await users.hardDelete({}); // physically remove all matching
88
+ ```
89
+
90
+ ### Batch Sync
91
+
92
+ ```ts
93
+ await users.upsertBatch({
94
+ upsert: [{ _id: id1, name: 'Alice' }, { _id: id2, name: 'Bob' }],
95
+ delete: [id3],
96
+ });
97
+ ```
98
+
99
+ ## Features
100
+
101
+ ### Revisions
102
+
103
+ When enabled, every write increments `_rev` and updates the `_ts` (Timestamp) field.
104
+
105
+ ```ts
106
+ users.useRevisions(true);
107
+ ```
108
+
109
+ ### Soft Delete
110
+
111
+ When enabled, `deleteOne` / `delete` set `_deleted: Date` instead of physically removing the document. Query operations automatically exclude deleted records. Deleted records cannot be "undeleted" — use `hardDelete` to purge them permanently.
112
+
113
+ ```ts
114
+ users.useSoftDelete(true);
115
+
116
+ await users.deleteOne({ name: 'Alice' }); // sets _deleted: Date, increments _rev
117
+ await users.delete({ inactive: true }); // bulk soft-delete
118
+ await users.find({}); // excludes deleted
119
+ await users.find({}, { returnDeleted: true }); // includes deleted
120
+ await users.hardDelete({ inactive: true }); // physically removes (bypasses soft-delete)
121
+ ```
122
+
123
+ ### Archive
124
+
125
+ When enabled, query operations automatically exclude records with `_archived` set. Unlike soft-delete, archiving is fully reversible.
126
+
127
+ ```ts
128
+ users.useArchive(true);
129
+
130
+ // Archive by query
131
+ await users.archiveOne({ name: 'Alice' }); // sets _archived: Date, increments _rev
132
+ await users.unarchiveOne({ name: 'Alice' }); // removes _archived, increments _rev
133
+
134
+ // Archive by id
135
+ await users.archiveOneById(id); // archive single record by _id
136
+ await users.unarchiveOneById(id); // unarchive single record by _id
137
+
138
+ // Archive multiple by ids
139
+ await users.archiveManyByIds([id1, id2, id3]); // returns array of archived docs (skips already archived)
140
+ await users.unarchiveManyByIds([id1, id2, id3]); // returns array of unarchived docs (skips non-archived)
141
+
142
+ // Query behavior
143
+ await users.find({}); // excludes archived
144
+ await users.find({}, { returnArchived: true }); // includes archived
145
+ ```
146
+
147
+ Archive and soft-delete are independent — a record can be both archived and deleted. The `returnArchived` and `returnDeleted` options control each filter separately.
148
+
149
+ ### Block
150
+
151
+ Block/unblock sets or removes the `_blocked` field. Blocked records are **not** filtered from queries (unlike deleted/archived).
152
+
153
+ ```ts
154
+ await users.blockOne({ name: 'Alice' });
155
+ await users.unblockOne({ name: 'Alice' });
156
+ ```
157
+
158
+ ### Sequences
159
+
160
+ Auto-incrementing field values managed atomically via a dedicated `_sequences` collection. Use the special string directives `'SEQ_NEXT'` and `'SEQ_LAST'` as field values during insert.
161
+
162
+ | Directive | Behavior |
163
+ |-----------|----------|
164
+ | `'SEQ_NEXT'` | Increment the sequence counter and use the new value |
165
+ | `'SEQ_LAST'` | Use the current sequence value without incrementing |
166
+
167
+ ```ts
168
+ // Single insert — orderNo gets the next sequence value
169
+ await users.insert({ name: 'Alice', orderNo: 'SEQ_NEXT' });
170
+ // => { name: 'Alice', orderNo: 1, _id: ... }
171
+
172
+ await users.insert({ name: 'Bob', orderNo: 'SEQ_NEXT' });
173
+ // => { name: 'Bob', orderNo: 2, _id: ... }
174
+
175
+ // SEQ_LAST returns the current value (no increment)
176
+ await users.insert({ name: 'Carol', orderNo: 'SEQ_LAST' });
177
+ // => { name: 'Carol', orderNo: 2, _id: ... }
178
+ ```
179
+
180
+ Sequences are per-collection per-field. On first use, the sequence auto-seeds from the maximum existing value in the collection. If the collection is emptied, the sequence resets to 0.
181
+
182
+ **Batch inserts** are optimized — a range of sequence numbers is reserved atomically in a single operation, then distributed across the batch:
183
+
184
+ ```ts
185
+ await users.insertMany([
186
+ { name: 'A', orderNo: 'SEQ_NEXT' }, // orderNo: 3
187
+ { name: 'B', orderNo: 'SEQ_LAST' }, // orderNo: 3 (current value after A)
188
+ { name: 'C', orderNo: 'SEQ_NEXT' }, // orderNo: 4
189
+ ]);
190
+ ```
191
+
192
+ Multiple fields can use independent sequences in the same document:
193
+
194
+ ```ts
195
+ await users.insert({ invoiceNo: 'SEQ_NEXT', lineNo: 'SEQ_NEXT' });
196
+ ```
197
+
198
+ To reset a collection's sync sequence:
199
+
200
+ ```ts
201
+ await users.resetCollectionSync();
202
+ ```
203
+
204
+ ### Auditing
205
+
206
+ Records changes to a separate audit log collection.
207
+
208
+ ```ts
209
+ users.useAuditing(true);
210
+ users.auditToCollection('dblog');
211
+ users.auditCollection(); // enable auditing for this repo's collection
212
+
213
+ await users.dbLogGet(entityId); // retrieve audit log for an entity
214
+ await users.dbLogPurge(entityId); // purge audit log
215
+ ```
216
+
217
+ ### Publish Events
218
+
219
+ Real-time events emitted on insert/update/delete for data synchronization.
220
+
221
+ ```ts
222
+ users.emitPublishEvents(true); // full document payloads
223
+ users.emitPublishRevEvents(true); // lightweight revision-only payloads
224
+
225
+ users.on('publish', (channel, data) => { /* ... */ });
226
+ users.on('publishRev', (channel, data) => { /* ... */ });
227
+ ```
228
+
229
+ ### Transactions
230
+
231
+ ```ts
232
+ await users.startTransaction();
233
+ // ... operations ...
234
+ await users.commitTransaction();
235
+ // or
236
+ await users.abortTransaction();
237
+
238
+ // or callback style:
239
+ await users.withTransaction(async (client, session) => {
240
+ // ... operations ...
241
+ });
242
+ ```
243
+
244
+ ## Entity Metadata
245
+
246
+ Every document can have these system fields (managed automatically when the respective feature is enabled):
247
+
248
+ | Field | Type | Description |
249
+ |------------|-----------|-----------------------------------------------|
250
+ | `_id` | ObjectId | Document identifier |
251
+ | `_rev` | number | Revision counter (incremented on each write) |
252
+ | `_ts` | Timestamp | Server timestamp (set on each write) |
253
+ | `_deleted` | Date | Soft-delete timestamp |
254
+ | `_archived`| Date | Archive timestamp |
255
+ | `_blocked` | Date | Block timestamp |
256
+
257
+ ## QueryOpts
258
+
259
+ Options passed to query methods:
260
+
261
+ | Option | Type | Description |
262
+ |-------------------|----------------------|----------------------------------------------|
263
+ | `project` | Projection | Fields to include/exclude |
264
+ | `sort` | Record<string, 1\|-1> | Sort specification |
265
+ | `limit` | number | Max documents to return |
266
+ | `skip` | number | Documents to skip |
267
+ | `collation` | CollationOptions | MongoDB collation options |
268
+ | `readPreference` | ReadPreference | Read preference |
269
+ | `returnDeleted` | boolean | Include soft-deleted records |
270
+ | `returnArchived` | boolean | Include archived records |
271
+
272
+ ## Additional Methods
273
+
274
+ ```ts
275
+ users.distinct<string>('status'); // distinct field values (sorted)
276
+ users.findNewer(timestamp, query, opts); // find records newer than timestamp
277
+ mongo.findNewerMany([{ collection, timestamp }]); // batch findNewer across collections
278
+ mongo.findByIdsInManyCollections([{ collection, ids }]); // batch findByIds across collections
279
+ users.isUnique('email', 'a@b.c', excludeId); // uniqueness check
280
+ users.aggregate(pipeline); // aggregation pipeline
281
+ users.createIndex('name_1', { name: 1 }); // create index
282
+ users.indexes(); // list indexes
283
+ ```
284
+
285
+ ## Environment Variables
286
+
287
+ | Variable | Default | Description |
288
+ |----------|---------|-------------|
289
+ | `MONGO_URL` | `mongodb://127.0.0.1:27017` | MongoDB connection URL |
290
+ | `MONGO_DB` | — | Default database name |
291
+ | `AUDIT_COLLECTIONS` | — | Comma-separated list of collections to audit |
292
+
293
+ ## Testing
294
+
295
+ ```bash
296
+ npm test
297
+ ```
298
+
299
+ Requires a running MongoDB instance on localhost.
package/dist/bic.d.mts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns BIC for a Slovenian IBAN (TRR).
3
+ * If the BIC is unknown, returns an empty string.
4
+ */
5
+ export declare function bic4trr(trr: string): string;
6
+ //# sourceMappingURL=bic.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bic.d.mts","sourceRoot":"","sources":["../src/bic.mts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAe3C"}
package/dist/bic.mjs ADDED
@@ -0,0 +1,48 @@
1
+ // Mapping based on Banka Slovenije list of BIC codes and national identification codes (updated 13 Oct 2025).
2
+ // Source: https://www.bsi.si/sl/placilni-sistemi/placilni-in-transakcijski-racun
3
+ const BIC_BY_2DIGIT = {
4
+ "01": "BSLJSI2X", // Banka Slovenije
5
+ "02": "LJBASI2X", // NLB
6
+ "04": "KBMASI2X", // OTP Banka
7
+ "07": "GORESI2X", // Gorenjska banka
8
+ "10": "BAKOSI2X", // Banka Intesa Sanpaolo
9
+ "19": "SZKBSI2X", // Deželna banka Slovenije
10
+ "29": "BACXSI22", // UniCredit Banka Slovenije
11
+ "30": "LJBASI2X", // NLB (prevzeta oznaka)
12
+ "33": "HAABSI22", // Addiko Bank
13
+ "34": "KSPKSI22", // Banka Sparkasse
14
+ "35": "BFKKSI22", // BKS Banka AG, bančna podružnica
15
+ "38": "SIDRSI22", // SID banka
16
+ "60": "HLONSI22", // Hranilnica LON
17
+ "61": "HDELSI22", // Delavska hranilnica
18
+ "64": "HKVISI22", // Primorska hranilnica Vipava
19
+ "79": "KDDSSI22", // KDD
20
+ };
21
+ const BIC_BY_5DIGIT = {
22
+ "91001": "", // Petrol Pay (BIC not published on the list)
23
+ "91002": "PWSRSI22" // Paywiser
24
+ };
25
+ /**
26
+ * Returns BIC for a Slovenian IBAN (TRR).
27
+ * If the BIC is unknown, returns an empty string.
28
+ */
29
+ export function bic4trr(trr) {
30
+ var _a;
31
+ if (!trr)
32
+ return "";
33
+ const iban = trr.replace(/[^A-Za-z0-9]/g, "").toUpperCase();
34
+ if (!iban.startsWith("SI"))
35
+ return "";
36
+ if (iban.length < 9)
37
+ return "";
38
+ // For SI IBAN: positions 5-9 (0-based 4..8) are the national identification code (2 + 3 digits).
39
+ const national5 = iban.slice(4, 9);
40
+ if (!/^\d{5}$/.test(national5))
41
+ return "";
42
+ const bic5 = BIC_BY_5DIGIT[national5];
43
+ if (bic5 !== undefined)
44
+ return bic5;
45
+ const code2 = national5.slice(0, 2);
46
+ return (_a = BIC_BY_2DIGIT[code2]) !== null && _a !== void 0 ? _a : "";
47
+ }
48
+ //# sourceMappingURL=bic.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bic.mjs","sourceRoot":"","sources":["../src/bic.mts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,iFAAiF;AAEjF,MAAM,aAAa,GAA2B;IAC1C,IAAI,EAAE,UAAU,EAAE,kBAAkB;IACpC,IAAI,EAAE,UAAU,EAAE,MAAM;IACxB,IAAI,EAAE,UAAU,EAAE,YAAY;IAC9B,IAAI,EAAE,UAAU,EAAE,kBAAkB;IACpC,IAAI,EAAE,UAAU,EAAE,wBAAwB;IAC1C,IAAI,EAAE,UAAU,EAAE,0BAA0B;IAC5C,IAAI,EAAE,UAAU,EAAE,4BAA4B;IAC9C,IAAI,EAAE,UAAU,EAAE,wBAAwB;IAC1C,IAAI,EAAE,UAAU,EAAE,cAAc;IAChC,IAAI,EAAE,UAAU,EAAE,kBAAkB;IACpC,IAAI,EAAE,UAAU,EAAE,kCAAkC;IACpD,IAAI,EAAE,UAAU,EAAE,YAAY;IAC9B,IAAI,EAAE,UAAU,EAAE,iBAAiB;IACnC,IAAI,EAAE,UAAU,EAAE,sBAAsB;IACxC,IAAI,EAAE,UAAU,EAAE,8BAA8B;IAChD,IAAI,EAAE,UAAU,EAAE,MAAM;CAC3B,CAAC;AAEF,MAAM,aAAa,GAA2B;IAC1C,OAAO,EAAE,EAAE,EAAS,6CAA6C;IACjE,OAAO,EAAE,UAAU,CAAC,WAAW;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/B,iGAAiG;IACjG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,MAAA,aAAa,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;AACtC,CAAC"}
package/dist/index.d.mts CHANGED
@@ -3,6 +3,7 @@ import { Base } from './base.mjs';
3
3
  import { Mongo } from './mongo.mjs';
4
4
  import { Repo } from './repo.mjs';
5
5
  import { Db } from './db.mjs';
6
- export { Types, Base, Mongo, Repo, Db, };
6
+ import { bic4trr } from './bic.mjs';
7
+ export { Types, Base, Mongo, Repo, Db, bic4trr, };
7
8
  export type { DbChannel, DbRevChannel } from './types.mjs';
8
9
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAO,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAE9B,OAAO,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,GACL,CAAA;AAED,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAO,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,EACF,OAAO,GACV,CAAA;AAED,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.mjs CHANGED
@@ -3,5 +3,6 @@ import { Base } from './base.mjs';
3
3
  import { Mongo } from './mongo.mjs';
4
4
  import { Repo } from './repo.mjs';
5
5
  import { Db } from './db.mjs';
6
- export { Types, Base, Mongo, Repo, Db, };
6
+ import { bic4trr } from './bic.mjs';
7
+ export { Types, Base, Mongo, Repo, Db, bic4trr, };
7
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAO,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAE9B,OAAO,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,GACL,CAAA"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAO,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,EAAE,EACF,OAAO,GACV,CAAA"}
package/dist/mongo.d.mts CHANGED
@@ -7,6 +7,7 @@ type DebugObject = {
7
7
  export declare class Mongo extends Db {
8
8
  private revisions;
9
9
  private softdelete;
10
+ private softarchive;
10
11
  private session;
11
12
  private emittingPublishEvents;
12
13
  private emittingPublishRevEvents;
@@ -29,6 +30,13 @@ export declare class Mongo extends Db {
29
30
  usesRevisions(): boolean;
30
31
  useSoftDelete(enabled: boolean): boolean;
31
32
  usesSoftDelete(): boolean;
33
+ /**
34
+ * Enable or disable archive filtering.
35
+ * When enabled, query operations exclude records with `_archived` set,
36
+ * unless `returnArchived: true` is passed in opts.
37
+ */
38
+ useArchive(enabled: boolean): boolean;
39
+ usesArchive(): boolean;
32
40
  useAuditing(enabled: boolean): boolean;
33
41
  usesAuditing(): boolean;
34
42
  useSync(enabled: boolean): boolean;
@@ -50,7 +58,7 @@ export declare class Mongo extends Db {
50
58
  find<T>(collection: string, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
51
59
  findAll<T>(collection: string, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
52
60
  findNewer<T>(collection: string, timestamp: Timestamp | number | string | Date, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
53
- findNewerMany<T>(spec?: GetNewerSpec<T>[]): Promise<Record<string, any[]>>;
61
+ findNewerMany<T>(spec?: GetNewerSpec<T>[], defaultOpts?: QueryOpts): Promise<Record<string, any[]>>;
54
62
  latestTimestamps(collections: string[]): Promise<Record<string, Timestamp>>;
55
63
  latestTimestamp(collection: string): Promise<Timestamp | undefined>;
56
64
  private _createQueryForNewer;
@@ -84,6 +92,34 @@ export declare class Mongo extends Db {
84
92
  deleteOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
85
93
  blockOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
86
94
  unblockOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
95
+ /**
96
+ * Archives a single document by setting `_archived` to the current date.
97
+ * Increments `_rev` and updates `_ts`.
98
+ */
99
+ archiveOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
100
+ /**
101
+ * Unarchives a single document by removing the `_archived` field.
102
+ * Increments `_rev` and updates `_ts`.
103
+ */
104
+ unarchiveOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
105
+ /**
106
+ * Archives a single document found by its `_id`.
107
+ */
108
+ archiveOneById<T>(collection: string, id: Id): Promise<T>;
109
+ /**
110
+ * Archives multiple documents found by their `_id`s.
111
+ * Returns the array of archived documents.
112
+ */
113
+ archiveManyByIds<T>(collection: string, ids: Id[]): Promise<T[]>;
114
+ /**
115
+ * Unarchives a single document found by its `_id`.
116
+ */
117
+ unarchiveOneById<T>(collection: string, id: Id): Promise<T>;
118
+ /**
119
+ * Unarchives multiple documents found by their `_id`s.
120
+ * Returns the array of unarchived documents.
121
+ */
122
+ unarchiveManyByIds<T>(collection: string, ids: Id[]): Promise<T[]>;
87
123
  hardDeleteOne<T>(collection: string, query: Id | QuerySpec<T>): Promise<T>;
88
124
  delete<T>(collection: string, query: QuerySpec<T>): Promise<{
89
125
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"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"}