cry-db 2.4.18 → 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 +299 -0
- package/dist/base.mjs +1 -1
- package/dist/base.mjs.map +1 -1
- package/dist/bic.d.mts +6 -0
- package/dist/bic.d.mts.map +1 -0
- package/dist/bic.mjs +48 -0
- package/dist/bic.mjs.map +1 -0
- package/dist/db.mjs.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/mongo.d.mts +75 -4
- package/dist/mongo.d.mts.map +1 -1
- package/dist/mongo.mjs +508 -122
- package/dist/mongo.mjs.map +1 -1
- package/dist/repo.d.mts +14 -3
- package/dist/repo.d.mts.map +1 -1
- package/dist/repo.mjs +30 -5
- package/dist/repo.mjs.map +1 -1
- package/dist/types.d.mts +11 -3
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
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/base.mjs
CHANGED
|
@@ -26,7 +26,7 @@ const CONNECTION_OPTIONS = {
|
|
|
26
26
|
maxPoolSize: 100,
|
|
27
27
|
// minPoolSize prevents clean tests exit
|
|
28
28
|
// minPoolSize: 5,
|
|
29
|
-
maxIdleTimeMS: 5 * 60 * 1000,
|
|
29
|
+
maxIdleTimeMS: 5 * 60 * 1000, // THIS closes idle connections on server side
|
|
30
30
|
waitQueueTimeoutMS: 10 * 1000
|
|
31
31
|
};
|
|
32
32
|
export class Base {
|
package/dist/base.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.mjs","sourceRoot":"","sources":["../src/base.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGjC,SAAS,KAAK;IAEV,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtD,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAIrC,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC,8CAA8C;AAC9C,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE;IACnC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"base.mjs","sourceRoot":"","sources":["../src/base.mts"],"names":[],"mappings":"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"}
|
package/dist/bic.d.mts
ADDED
|
@@ -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
|
package/dist/bic.mjs.map
ADDED
|
@@ -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/db.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.mjs","sourceRoot":"","sources":["../src/db.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"db.mjs","sourceRoot":"","sources":["../src/db.mts"],"names":[],"mappings":"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"}
|
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
|
-
|
|
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
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
6
|
+
import { bic4trr } from './bic.mjs';
|
|
7
|
+
export { Types, Base, Mongo, Repo, Db, bic4trr, };
|
|
7
8
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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;
|
|
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Collection, AggregateOptions, ClientSession, MongoClient, Timestamp } from 'mongodb';
|
|
1
|
+
import { Collection, AggregateOptions, ClientSession, DistinctOptions, MongoClient, Timestamp } from 'mongodb';
|
|
2
2
|
import { Db } from './db.mjs';
|
|
3
3
|
import { AuditRecord, BatchSpec, CollectionUpdateRequest, CollectionUpdateResult, Entity, GetNewerSpec, Id, IdOrEntity, InsertSpec, MongoEmittedEvents, Projection, QueryOpts, QuerySpec, UpdateSpec, UpsertOptions } from './types.mjs';
|
|
4
4
|
type DebugObject = {
|
|
@@ -7,16 +7,19 @@ 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;
|
|
13
14
|
private auditing;
|
|
14
15
|
private auditCollectionName;
|
|
15
16
|
private auditedCollections;
|
|
17
|
+
private auditedCollectionsLower;
|
|
16
18
|
private emitter;
|
|
17
19
|
private user;
|
|
18
20
|
private audit;
|
|
19
21
|
private syncSupport;
|
|
22
|
+
private _sequencesIndexEnsured;
|
|
20
23
|
constructor(db?: string, url?: string);
|
|
21
24
|
on<U extends keyof MongoEmittedEvents>(evt: U, listener: MongoEmittedEvents[U]): void;
|
|
22
25
|
off<U extends keyof MongoEmittedEvents>(evt: U, listener: MongoEmittedEvents[U]): void;
|
|
@@ -27,6 +30,13 @@ export declare class Mongo extends Db {
|
|
|
27
30
|
usesRevisions(): boolean;
|
|
28
31
|
useSoftDelete(enabled: boolean): boolean;
|
|
29
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;
|
|
30
40
|
useAuditing(enabled: boolean): boolean;
|
|
31
41
|
usesAuditing(): boolean;
|
|
32
42
|
useSync(enabled: boolean): boolean;
|
|
@@ -39,12 +49,16 @@ export declare class Mongo extends Db {
|
|
|
39
49
|
emitsPublishEvents(): boolean;
|
|
40
50
|
emitPublishRevEvents(enabled: boolean): boolean;
|
|
41
51
|
emitsPublishRevEvents(): boolean;
|
|
42
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Returns distinct values for a field. Results are sorted.
|
|
54
|
+
* @param opts - Use `{ collation: { locale: "en", strength: 2 } }` for case-insensitive
|
|
55
|
+
*/
|
|
56
|
+
distinct<T>(collection: string, field: string, opts?: DistinctOptions): Promise<T[]>;
|
|
43
57
|
count<T>(collection: string, query?: QuerySpec<T>, opts?: QueryOpts): Promise<number>;
|
|
44
58
|
find<T>(collection: string, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
|
|
45
59
|
findAll<T>(collection: string, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
|
|
46
60
|
findNewer<T>(collection: string, timestamp: Timestamp | number | string | Date, query?: QuerySpec<T>, opts?: QueryOpts): Promise<T[]>;
|
|
47
|
-
findNewerMany<T>(spec?: GetNewerSpec<T>[]): Promise<Record<string, any[]>>;
|
|
61
|
+
findNewerMany<T>(spec?: GetNewerSpec<T>[], defaultOpts?: QueryOpts): Promise<Record<string, any[]>>;
|
|
48
62
|
latestTimestamps(collections: string[]): Promise<Record<string, Timestamp>>;
|
|
49
63
|
latestTimestamp(collection: string): Promise<Timestamp | undefined>;
|
|
50
64
|
private _createQueryForNewer;
|
|
@@ -78,6 +92,34 @@ export declare class Mongo extends Db {
|
|
|
78
92
|
deleteOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
|
|
79
93
|
blockOne<T>(collection: string, query: QuerySpec<T>): Promise<T>;
|
|
80
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[]>;
|
|
81
123
|
hardDeleteOne<T>(collection: string, query: Id | QuerySpec<T>): Promise<T>;
|
|
82
124
|
delete<T>(collection: string, query: QuerySpec<T>): Promise<{
|
|
83
125
|
ok: boolean;
|
|
@@ -90,7 +132,6 @@ export declare class Mongo extends Db {
|
|
|
90
132
|
testHash<T>(collection: string, query: QuerySpec<T>, field: string | Object, unhashedValue: string | Object): Promise<boolean>;
|
|
91
133
|
aggregate<T>(collection: string, pipeline: object[], opts?: AggregateOptions): Promise<T[]>;
|
|
92
134
|
isUnique<T>(collection: string, field: keyof T, value: string | Partial<T>, id?: Id): Promise<boolean>;
|
|
93
|
-
collectFieldValues<T>(collection: string, field: keyof T, inArray: boolean | undefined, opts: AggregateOptions): Promise<any>;
|
|
94
135
|
dropCollection(collection: string): Promise<void>;
|
|
95
136
|
resetCollectionSync(collection: string): Promise<void>;
|
|
96
137
|
dropCollections(collections: string[]): Promise<void>;
|
|
@@ -112,6 +153,27 @@ export declare class Mongo extends Db {
|
|
|
112
153
|
private _try_once;
|
|
113
154
|
executeTransactionally(collection: string, f: (db: Collection, client: MongoClient) => Promise<any>, useTransaction: boolean | undefined, debugObject: DebugObject): Promise<any>;
|
|
114
155
|
private _findLastSequenceForKey;
|
|
156
|
+
/**
|
|
157
|
+
* Ensures the unique index on _sequences collection exists.
|
|
158
|
+
* Called lazily on first sequence operation.
|
|
159
|
+
*/
|
|
160
|
+
private _ensureSequencesIndex;
|
|
161
|
+
/**
|
|
162
|
+
* Atomically gets the next sequence value for a field in a collection.
|
|
163
|
+
* On first use, auto-seeds from existing data in the collection.
|
|
164
|
+
*/
|
|
165
|
+
private _getNextSequenceValue;
|
|
166
|
+
/**
|
|
167
|
+
* Gets the current (last) sequence value without incrementing.
|
|
168
|
+
* On first use, auto-seeds from existing data in the collection.
|
|
169
|
+
* If collection becomes empty, resets the sequence to 0.
|
|
170
|
+
*/
|
|
171
|
+
private _getLastSequenceValue;
|
|
172
|
+
/**
|
|
173
|
+
* Atomically reserves a range of sequence numbers for batch operations.
|
|
174
|
+
* Returns { start, end } where start is the first reserved value and end is the last.
|
|
175
|
+
*/
|
|
176
|
+
private _reserveSequenceRange;
|
|
115
177
|
private _findSequenceKeys;
|
|
116
178
|
private _processSequenceField;
|
|
117
179
|
private _processSequenceFieldForMany;
|
|
@@ -126,8 +188,17 @@ export declare class Mongo extends Db {
|
|
|
126
188
|
private _sessionOpt;
|
|
127
189
|
private _buildFindOptions;
|
|
128
190
|
private _applyQueryOpts;
|
|
191
|
+
private _hasHashedKeys;
|
|
192
|
+
private _hasSequenceFields;
|
|
129
193
|
private _processUpdateObject;
|
|
130
194
|
private _processHashedKeys;
|
|
195
|
+
/**
|
|
196
|
+
* Removes fields starting with `__` from an object (mutates in place).
|
|
197
|
+
* Used to sanitize input on insert/update operations, preventing clients
|
|
198
|
+
* from writing internal/reserved fields directly to the database.
|
|
199
|
+
* Fields with `__hashed__` prefix are preserved (used for password hashing).
|
|
200
|
+
*/
|
|
201
|
+
private _stripDoubleUnderscoreKeys;
|
|
131
202
|
private _processReturnedObject;
|
|
132
203
|
}
|
|
133
204
|
export {};
|
package/dist/mongo.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAwB,gBAAgB,EAAE,aAAa,EAA2B,WAAW,EAAyC,SAAS,EAA6B,MAAM,SAAS,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"mongo.d.mts","sourceRoot":"","sources":["../src/mongo.mts"],"names":[],"mappings":"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"}
|