@owlmeans/mongo-resource 0.1.18-rc.41 → 0.1.18-rc.43
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 +14 -14
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/mongo-resource/SKILL.md +13 -13
- package/build/declarations/types.d.ts +12 -0
- package/build/declarations/types.d.ts.map +1 -0
- package/build/declarations/types.js +2 -0
- package/build/declarations/types.js.map +1 -0
- package/build/declarations.d.ts +4 -9
- package/build/declarations.d.ts.map +1 -1
- package/build/declarations.js +23 -15
- package/build/declarations.js.map +1 -1
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/build/resource.d.ts +1 -1
- package/build/resource.d.ts.map +1 -1
- package/build/resource.js +23 -24
- package/build/resource.js.map +1 -1
- package/build/types.d.ts +6 -1
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +4 -0
- package/build/types.local.d.ts.map +1 -0
- package/build/types.local.js +2 -0
- package/build/types.local.js.map +1 -0
- package/build/utils/consts.local.d.ts +25 -0
- package/build/utils/consts.local.d.ts.map +1 -0
- package/build/utils/consts.local.js +31 -0
- package/build/utils/consts.local.js.map +1 -0
- package/build/utils/criteria/types.d.ts +27 -0
- package/build/utils/criteria/types.d.ts.map +1 -0
- package/build/utils/criteria/types.js +2 -0
- package/build/utils/criteria/types.js.map +1 -0
- package/build/utils/criteria.d.ts +5 -20
- package/build/utils/criteria.d.ts.map +1 -1
- package/build/utils/criteria.js +110 -127
- package/build/utils/criteria.js.map +1 -1
- package/build/utils/indexes/types.d.ts +19 -0
- package/build/utils/indexes/types.d.ts.map +1 -0
- package/build/utils/indexes/types.js +2 -0
- package/build/utils/indexes/types.js.map +1 -0
- package/build/utils/indexes.d.ts +3 -14
- package/build/utils/indexes.d.ts.map +1 -1
- package/build/utils/indexes.js +41 -51
- package/build/utils/indexes.js.map +1 -1
- package/build/utils/life-cycle/types.d.ts +36 -0
- package/build/utils/life-cycle/types.d.ts.map +1 -0
- package/build/utils/life-cycle/types.js +2 -0
- package/build/utils/life-cycle/types.js.map +1 -0
- package/build/utils/life-cycle.d.ts +3 -30
- package/build/utils/life-cycle.d.ts.map +1 -1
- package/build/utils/life-cycle.js +94 -113
- package/build/utils/life-cycle.js.map +1 -1
- package/build/utils/migrations.d.ts.map +1 -1
- package/build/utils/migrations.js +1 -2
- package/build/utils/migrations.js.map +1 -1
- package/build/utils/name.d.ts.map +1 -1
- package/build/utils/name.js +1 -5
- package/build/utils/name.js.map +1 -1
- package/build/utils/refs/types.d.ts +78 -0
- package/build/utils/refs/types.d.ts.map +1 -0
- package/build/utils/refs/types.js +2 -0
- package/build/utils/refs/types.js.map +1 -0
- package/build/utils/refs.d.ts +13 -69
- package/build/utils/refs.d.ts.map +1 -1
- package/build/utils/refs.js +113 -162
- package/build/utils/refs.js.map +1 -1
- package/build/utils/schema/types.d.ts +16 -0
- package/build/utils/schema/types.d.ts.map +1 -0
- package/build/utils/schema/types.js +2 -0
- package/build/utils/schema/types.js.map +1 -0
- package/build/utils/schema.d.ts +3 -11
- package/build/utils/schema.d.ts.map +1 -1
- package/build/utils/schema.js +86 -88
- package/build/utils/schema.js.map +1 -1
- package/build/utils/types.local.d.ts +13 -0
- package/build/utils/types.local.d.ts.map +1 -0
- package/build/utils/types.local.js +2 -0
- package/build/utils/types.local.js.map +1 -0
- package/package.json +9 -9
- package/src/declarations/types.ts +12 -0
- package/src/declarations.ts +27 -22
- package/src/index.ts +3 -0
- package/src/resource.ts +26 -37
- package/src/types.local.ts +5 -0
- package/src/types.ts +7 -3
- package/src/utils/consts.local.ts +35 -0
- package/src/utils/criteria/types.ts +28 -0
- package/src/utils/criteria.ts +120 -133
- package/src/utils/indexes/types.ts +20 -0
- package/src/utils/indexes.ts +42 -50
- package/src/utils/life-cycle/types.ts +39 -0
- package/src/utils/life-cycle.ts +117 -133
- package/src/utils/migrations.ts +3 -17
- package/src/utils/name.ts +1 -6
- package/src/utils/refs/types.ts +79 -0
- package/src/utils/refs.ts +146 -192
- package/src/utils/schema/types.ts +17 -0
- package/src/utils/schema.ts +92 -91
- package/src/utils/types.local.ts +13 -0
- package/tests/context.ts +3 -3
- package/tests/criteria.spec.ts +3 -1
- package/tests/crud.spec.ts +2 -2
- package/tests/indexes.spec.ts +3 -1
- package/tests/refs.spec.ts +5 -3
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Client-side records go in [`@owlmeans/state`](../state).
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/mongo-resource@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/mongo-resource@^0.1.18-rc.43
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
`mongodb` and `ajv` are peer dependencies. The connection service comes from
|
|
@@ -78,7 +78,7 @@ await projects.update({ ...created, title: 'Renamed' }) // rep
|
|
|
78
78
|
await projects.purge({ entityId, status: 'archived' }) // refuses empty criteria
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
`entityId` here is the organization's stable record id, taken from `
|
|
81
|
+
`entityId` here is the organization's stable record id, taken from `makeEntityScope(req).requireEntityKey()` in the
|
|
82
82
|
handler, never from the token. Only `entitySlug` travels on the wire.
|
|
83
83
|
|
|
84
84
|
### References, compound indexes and a domain method
|
|
@@ -135,10 +135,10 @@ idempotent: without transactions an interrupted body can run again.
|
|
|
135
135
|
### Raw driver access with converted references
|
|
136
136
|
|
|
137
137
|
```ts
|
|
138
|
-
import {
|
|
138
|
+
import { mongoRefHelper } from '@owlmeans/mongo-resource'
|
|
139
139
|
|
|
140
140
|
await projects.collection.updateOne(
|
|
141
|
-
{ _id: marshalReference('id', projectId) as never, jobSequence },
|
|
141
|
+
{ _id: mongoRefHelper.marshalReference('id', projectId) as never, jobSequence },
|
|
142
142
|
{ $inc: { jobSequence: 1 }, $set: { updatedAt: new Date() } }
|
|
143
143
|
)
|
|
144
144
|
```
|
|
@@ -242,15 +242,15 @@ database, so each database tracks its own.
|
|
|
242
242
|
| `MongoDbService` | type | Connection service contract implemented by `@owlmeans/mongo` |
|
|
243
243
|
| `MongoTx` | type | Façade handed to migration bodies: `db`, `collection`, `use(alias)`, `ref(alias)` |
|
|
244
244
|
| `MongoReference`, `MongoRefOptions` | type | A declared reference and the `reference()` options (`resource`, `noIndex`) |
|
|
245
|
-
| `criteriaToFilter(criteria, refs)`
|
|
246
|
-
| `
|
|
247
|
-
| `marshalReference(field, value)` |
|
|
248
|
-
| `demarshalReference(value)`,
|
|
249
|
-
| `marshalCriteria(filter, refs)`,
|
|
250
|
-
| `isObjectIdHex(value)` |
|
|
251
|
-
| `convertReferenceField`,
|
|
245
|
+
| `mongoCriteriaHelper` (`MongoCriteriaHelper`) | helper | `.criteriaToFilter(criteria, refs)` — `Criteria<T>` to a Mongo filter, with references converted; `.sortToMongo(sort)` — `Sort<T>[]` to a Mongo sort document (`id` becomes `_id`) |
|
|
246
|
+
| `mongoRefHelper` (`MongoRefHelper`) | helper | The reference conversion layer, members below |
|
|
247
|
+
| `mongoRefHelper.marshalReference(field, value)` | member | String id(s) to `ObjectId` for a write; throws `MisshapedRecord` on non-ids |
|
|
248
|
+
| `mongoRefHelper.demarshalReference(value)`, `.demarshalRefs(record, refs)` | member | `ObjectId` back to strings for one value or a whole document |
|
|
249
|
+
| `mongoRefHelper.marshalCriteria(filter, refs)`, `.identityCriteria(field, id, refs)` | member | Convert a Mongo filter's id-addressed values; build a single-record lookup |
|
|
250
|
+
| `mongoRefHelper.isObjectIdHex(value)` | member | Strict 24-hex test used by the conversion layer |
|
|
251
|
+
| `mongoRefHelper.convertReferenceField`, `.reconcileReferences`, `.refMigrationName`; `makeRefMigration` | member / function | The system reference migration and its boot-time probe |
|
|
252
252
|
| `makeMongoTx`, `makeMongoMigrationStore` | function | The migration façade and the ledger implementation |
|
|
253
|
-
| `
|
|
253
|
+
| `mongoDeclarationHelper` (`MongoDeclarationHelper`), `MongoDeclaration` | helper / type | Module-scope per-alias declarations: `.getDeclaration(alias)`, and `.resetDeclarations(alias?)` — the testing seam |
|
|
254
254
|
| `getSchemaSecureFeilds(schema)` | function | The `secure: true` properties `lock`/`unlock` use when no fields are named |
|
|
255
255
|
| `DEFAULT_DB_ALIAS` | const | `'mongo'` |
|
|
256
256
|
| `DEFAULT_PAGE_SIZE` | const | `100` |
|
|
@@ -275,7 +275,7 @@ database, so each database tracks its own.
|
|
|
275
275
|
- **Expecting `update` to merge.** It replaces the whole document. Pass every field that must survive.
|
|
276
276
|
- **Reading "everything" with `list(where)`.** It stops at 100. Ask with `{ size: 0 }`, or page.
|
|
277
277
|
- **Raw `resource.collection` calls with string ids.** They match nothing against `ObjectId`
|
|
278
|
-
fields. Use `marshalReference`.
|
|
278
|
+
fields. Use `mongoRefHelper.marshalReference`.
|
|
279
279
|
- **Passing `{ ttl }`.** It is refused. Expiring records belong in Redis.
|
|
280
280
|
|
|
281
281
|
## Related packages
|
|
@@ -294,7 +294,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
294
294
|
your project's skill store (`.agents/skills/`):
|
|
295
295
|
|
|
296
296
|
```sh
|
|
297
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
297
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.49
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/mongo-resource",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.43",
|
|
5
|
+
"generatedAt": "2026-10-05T21:03:06.383Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/mongo-resource
|
|
9
9
|
|
|
10
10
|
**Layer:** Infra
|
|
11
|
-
**Install:** `"@owlmeans/mongo-resource": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/mongo-resource": "^0.1.18-rc.43"` in `dependencies` (peers `mongodb`, `ajv`)
|
|
12
12
|
|
|
13
13
|
The Mongo counterpart of [[postgres-resource]]. A collection has no structure of its own, so
|
|
14
14
|
here the resource layer owns the *validator* (`$jsonSchema` from the AJV schema), the indexes,
|
|
@@ -23,11 +23,11 @@ reference**.
|
|
|
23
23
|
| `MongoResource<T>` | `Resource<T>` + `collection`, `db()`/`client()`, `index`/`indexes`, `reference`/`references`, `migration`/`migrations` (the shared `MigratableResource` capability), `lock`/`unlock`, `getDefaults`, and the `dbAlias`/`serviceAlias` it was registered against. Anything naming a collection on another resource's behalf reads *that* resource's `dbAlias`, since two resources in one database can carry different `resourcePrefix`es. |
|
|
24
24
|
| `MongoDbService`, `MongoTx` | Service contract implemented by `@owlmeans/mongo`; the façade handed to migrations (`db`, `collection`, `use(alias)`, `ref(alias)`). |
|
|
25
25
|
| `MongoReference`, `MongoRefOptions` | A declared ObjectId reference and the `reference()` options (`resource`, `noIndex`). |
|
|
26
|
-
| `marshalReference`, `demarshalReference`, `demarshalRefs`, `marshalCriteria`, `identityCriteria`, `isObjectIdHex` | The conversion layer — reuse these wherever raw driver access bypasses the resource. |
|
|
27
|
-
| `criteriaToFilter`, `sortToMongo` | `Criteria<T>` → a mongo filter (references converted, every shared operator rewritten into a mongo expression) and `Sort<T>` → a mongo sort spec. |
|
|
28
|
-
| `
|
|
26
|
+
| `mongoRefHelper` — `marshalReference`, `demarshalReference`, `demarshalRefs`, `marshalCriteria`, `identityCriteria`, `isObjectIdHex` | The conversion layer — reuse these wherever raw driver access bypasses the resource. |
|
|
27
|
+
| `mongoCriteriaHelper` — `criteriaToFilter`, `sortToMongo` | `Criteria<T>` → a mongo filter (references converted, every shared operator rewritten into a mongo expression) and `Sort<T>` → a mongo sort spec. |
|
|
28
|
+
| `makeRefMigration`; `mongoRefHelper` — `convertReferenceField`, `reconcileReferences`, `refMigrationName` | The system reference migration's machinery. |
|
|
29
29
|
| `makeMongoTx`, `makeMongoMigrationStore` | The migration store (ledger) implementation. |
|
|
30
|
-
| `getDeclaration`, `resetDeclarations
|
|
30
|
+
| `mongoDeclarationHelper` — `getDeclaration`, `resetDeclarations`; `MongoDeclaration` | Module-scope migration/reference declarations, keyed by alias; `mongoDeclarationHelper.resetDeclarations(alias?)` is the testing seam. |
|
|
31
31
|
| `getSchemaSecureFeilds` | The `secure: true` schema properties `lock`/`unlock` operate on when the caller names no fields. |
|
|
32
32
|
| `DEFAULT_DB_ALIAS`, `DEFAULT_PAGE_SIZE`, `DEF_MIGRATIONS_COLLECTION`, `DEF_MIGRATION_WAIT`, `DEF_MIGRATION_POLL`, `MONGO_DUPLICATE_KEY` | Constants. |
|
|
33
33
|
|
|
@@ -92,8 +92,8 @@ drift (restored backup, legacy writer), logging a warning. Both paths run with
|
|
|
92
92
|
do).
|
|
93
93
|
|
|
94
94
|
The `@1` in the name is the body's version. The body is shared by every field, so its checksum
|
|
95
|
-
never distinguishes them — **any semantic edit to `convertReferenceField` must
|
|
96
|
-
version suffix** in `refMigrationName`, or every already-applied ledger raises
|
|
95
|
+
never distinguishes them — **any semantic edit to `mongoRefHelper.convertReferenceField` must
|
|
96
|
+
bump the version suffix** in `refMigrationName`, or every already-applied ledger raises
|
|
97
97
|
`MigrationConflict` at boot.
|
|
98
98
|
|
|
99
99
|
### What is NOT a reference — do not declare these
|
|
@@ -114,9 +114,9 @@ trace what the writer actually assigns.
|
|
|
114
114
|
|
|
115
115
|
### Raw driver access bypasses all of this
|
|
116
116
|
|
|
117
|
-
`resource.collection.find/aggregate/findOneAndUpdate` see `ObjectId`s. Marshal filter values
|
|
118
|
-
|
|
119
|
-
`_id`) to strings by hand — or better, stay on the resource API.
|
|
117
|
+
`resource.collection.find/aggregate/findOneAndUpdate` see `ObjectId`s. Marshal filter values with
|
|
118
|
+
`mongoRefHelper.marshalReference(field, value)` and convert read-back documents' reference fields
|
|
119
|
+
(and `_id`) to strings by hand — or better, stay on the resource API.
|
|
120
120
|
|
|
121
121
|
## Migrations
|
|
122
122
|
|
|
@@ -193,9 +193,9 @@ page while lifting the limit contradicts itself and raises
|
|
|
193
193
|
|
|
194
194
|
## Criteria against a collection
|
|
195
195
|
|
|
196
|
-
`criteriaToFilter` rewrites the shared vocabulary ([[resource]]) into mongo
|
|
197
|
-
criteria object selects the same records here as it does in SQL and in memory.
|
|
198
|
-
worth knowing:
|
|
196
|
+
`mongoCriteriaHelper.criteriaToFilter` rewrites the shared vocabulary ([[resource]]) into mongo
|
|
197
|
+
expressions so one criteria object selects the same records here as it does in SQL and in memory.
|
|
198
|
+
Two rewrites are worth knowing:
|
|
199
199
|
|
|
200
200
|
- **`$exists` and `$null` compare against `null`**, not mongo's own `$exists`. The shared question
|
|
201
201
|
is whether a field *has a value*, which the other stores answer as `IS NULL` / `value == null`;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MongoDeclaration } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The per-alias declaration store every mongo resource maker reads and extends — migrations and
|
|
4
|
+
* declared references, keyed by resource alias.
|
|
5
|
+
*/
|
|
6
|
+
export interface MongoDeclarationHelper {
|
|
7
|
+
/** The declaration of an alias, created empty on first use. */
|
|
8
|
+
getDeclaration: (alias: string) => MongoDeclaration;
|
|
9
|
+
/** Testing seam — drops every declaration so a spec can redeclare a resource from scratch. */
|
|
10
|
+
resetDeclarations: (alias?: string) => void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/declarations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,gBAAgB,CAAA;IACnD,8FAA8F;IAC9F,iBAAiB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/declarations/types.ts"],"names":[],"mappings":""}
|
package/build/declarations.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
/** Declared ObjectId references, keyed by field. Registered via `resource.reference()`. */
|
|
6
|
-
references: Map<string, MongoReference>;
|
|
7
|
-
}
|
|
8
|
-
export declare const getDeclaration: (alias: string) => MongoDeclaration;
|
|
9
|
-
/** Testing seam — drops every declaration so a spec can redeclare a resource from scratch. */
|
|
1
|
+
import type { MongoDeclarationHelper } from './declarations/types.js';
|
|
2
|
+
export declare const createMongoDeclarationHelper: () => MongoDeclarationHelper;
|
|
3
|
+
export declare const mongoDeclarationHelper: MongoDeclarationHelper;
|
|
4
|
+
/** @deprecated compat:factory-refactor — use `mongoDeclarationHelper.resetDeclarations(…)` */
|
|
10
5
|
export declare const resetDeclarations: (alias?: string) => void;
|
|
11
6
|
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAiBrE,eAAO,MAAM,4BAA4B,QAAO,sBAqB/C,CAAA;AAED,eAAO,MAAM,sBAAsB,wBAAiC,CAAA;AAEpE,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,IAAuD,CAAA"}
|
package/build/declarations.js
CHANGED
|
@@ -7,22 +7,30 @@ import { createMigrationRegistry } from '@owlmeans/resource';
|
|
|
7
7
|
* that a no-op: every run reads and extends the same registry, so nothing a caller declared
|
|
8
8
|
* by chaining onto an earlier resource object is lost. Losing a migration is silent — the
|
|
9
9
|
* data transformation simply never runs — which is why the store cannot live on the object.
|
|
10
|
+
*
|
|
11
|
+
* Process-wide for the same reason: it stays outside the factory, so every helper built from it
|
|
12
|
+
* reads the one store.
|
|
10
13
|
*/
|
|
11
14
|
const declarations = new Map();
|
|
12
|
-
export const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
export const createMongoDeclarationHelper = () => {
|
|
16
|
+
const getDeclaration = (alias) => {
|
|
17
|
+
let declaration = declarations.get(alias);
|
|
18
|
+
if (declaration == null) {
|
|
19
|
+
declaration = { migrations: createMigrationRegistry(), references: new Map() };
|
|
20
|
+
declarations.set(alias, declaration);
|
|
21
|
+
}
|
|
22
|
+
return declaration;
|
|
23
|
+
};
|
|
24
|
+
const resetDeclarations = (alias) => {
|
|
25
|
+
if (alias == null) {
|
|
26
|
+
declarations.clear();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
declarations.delete(alias);
|
|
30
|
+
};
|
|
31
|
+
return { getDeclaration, resetDeclarations };
|
|
27
32
|
};
|
|
33
|
+
export const mongoDeclarationHelper = createMongoDeclarationHelper();
|
|
34
|
+
/** @deprecated compat:factory-refactor — use `mongoDeclarationHelper.resetDeclarations(…)` */
|
|
35
|
+
export const resetDeclarations = (alias) => mongoDeclarationHelper.resetDeclarations(alias);
|
|
28
36
|
//# sourceMappingURL=declarations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAK5D;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAAkC,IAAI,GAAG,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAA2B,EAAE;IACvE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAoB,EAAE;QACzD,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,WAAW,GAAG,EAAE,UAAU,EAAE,uBAAuB,EAAW,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;YACvF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE;QACjD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,KAAK,EAAE,CAAA;YAEpB,OAAM;QACR,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAA;AAEpE,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export type * from './types.js';
|
|
2
2
|
export * from './consts.js';
|
|
3
3
|
export * from './declarations.js';
|
|
4
|
+
export type * from './declarations/types.js';
|
|
4
5
|
export * from './utils/migrations.js';
|
|
5
6
|
export * from './utils/refs.js';
|
|
7
|
+
export type * from './utils/refs/types.js';
|
|
6
8
|
export * from './utils/criteria.js';
|
|
9
|
+
export type * from './utils/criteria/types.js';
|
|
7
10
|
export * from './resource.js';
|
|
8
11
|
export * from './helper.js';
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,mBAAmB,yBAAyB,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,mBAAmB,uBAAuB,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,mBAAmB,2BAA2B,CAAA;AAC9C,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AAEjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,qBAAqB,CAAA;AAEnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
|
package/build/resource.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ResourceRecord } from '@owlmeans/resource';
|
|
2
2
|
import type { MongoResource } from './types.js';
|
|
3
3
|
export declare const makeMongoResource: <R extends ResourceRecord, T extends MongoResource<R> = MongoResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, collectionName?: string) => T;
|
|
4
4
|
//# sourceMappingURL=resource.d.ts.map
|
package/build/resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuF,KAAK,cAAc,EAAsH,MAAM,oBAAoB,CAAA;AACjQ,OAAO,KAAK,EAAmD,aAAa,EAAW,MAAM,YAAY,CAAA;AAWzG,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAEhE,MAAM,YAAW,MAAM,iBAAmC,MAAM,mBACtD,MAAM,KACtB,CAsRF,CAAA"}
|
package/build/resource.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { appendContextual, assertContext } from '@owlmeans/context';
|
|
2
2
|
import { DEFAULT_DB_ALIAS, DEFAULT_PAGE_SIZE } from './consts.js';
|
|
3
|
-
import { MigrationStage } from '@owlmeans/resource';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { MigrationStage, MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed } from '@owlmeans/resource';
|
|
4
|
+
import { makeMongoLifeCycleUtils } from './utils/life-cycle.js';
|
|
5
|
+
import { mongoDeclarationHelper } from './declarations.js';
|
|
6
6
|
import { ObjectId } from 'mongodb';
|
|
7
|
-
import { MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed } from '@owlmeans/resource';
|
|
8
7
|
import { getSchemaSecureFeilds } from './helper.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { mongoCriteriaHelper } from './utils/criteria.js';
|
|
9
|
+
import { makeRefMigration, mongoRefHelper } from './utils/refs.js';
|
|
11
10
|
export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, collectionName) => {
|
|
12
11
|
const location = `mongo-resource:${alias}`;
|
|
13
12
|
/**
|
|
@@ -15,11 +14,11 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
15
14
|
* declarations live at module scope keyed by alias, so a second maker run for the
|
|
16
15
|
* same alias sees everything already declared for it.
|
|
17
16
|
*/
|
|
18
|
-
const refs = () => getDeclaration(alias).references;
|
|
17
|
+
const refs = () => mongoDeclarationHelper.getDeclaration(alias).references;
|
|
19
18
|
const demarshal = (record) => {
|
|
20
19
|
record.id = record._id instanceof ObjectId ? record._id.toString() : record._id;
|
|
21
20
|
delete record._id;
|
|
22
|
-
return demarshalRefs(record, refs());
|
|
21
|
+
return mongoRefHelper.demarshalRefs(record, refs());
|
|
23
22
|
};
|
|
24
23
|
/**
|
|
25
24
|
* A read addressed either way. An id is matched tolerantly: a string that is not a mongo id
|
|
@@ -27,14 +26,14 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
27
26
|
* that only asked whether the record exists.
|
|
28
27
|
*/
|
|
29
28
|
const filterOf = (idOrWhere) => typeof idOrWhere === 'string'
|
|
30
|
-
? identityCriteria('id', idOrWhere, refs())
|
|
31
|
-
: criteriaToFilter(idOrWhere, refs());
|
|
29
|
+
? mongoRefHelper.identityCriteria('id', idOrWhere, refs())
|
|
30
|
+
: mongoCriteriaHelper.criteriaToFilter(idOrWhere, refs());
|
|
32
31
|
/**
|
|
33
32
|
* The single implementation both overloads of `load` and `get` stand on — an id and a
|
|
34
33
|
* criteria object differ only in how the filter is built.
|
|
35
34
|
*/
|
|
36
35
|
const loadOne = async (idOrWhere, opts) => {
|
|
37
|
-
const sort = sortToMongo(opts?.sort);
|
|
36
|
+
const sort = mongoCriteriaHelper.sortToMongo(opts?.sort);
|
|
38
37
|
const record = await resource.collection.findOne(filterOf(idOrWhere), sort != null ? { sort } : {});
|
|
39
38
|
return record != null ? demarshal(record) : null;
|
|
40
39
|
};
|
|
@@ -48,7 +47,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
48
47
|
}),
|
|
49
48
|
load: loadOne,
|
|
50
49
|
list: async (where, opts) => {
|
|
51
|
-
const filter = criteriaToFilter(where, refs());
|
|
50
|
+
const filter = mongoCriteriaHelper.criteriaToFilter(where, refs());
|
|
52
51
|
const total = await resource.collection.countDocuments(filter);
|
|
53
52
|
/** `size: 0` is the explicit ask for everything; an omitted size pages by default. */
|
|
54
53
|
const size = opts?.size ?? DEFAULT_PAGE_SIZE;
|
|
@@ -61,7 +60,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
61
60
|
return size > 0 ? { items: [], total, page, size } : { items: [], total };
|
|
62
61
|
}
|
|
63
62
|
let cursor = resource.collection.find(filter);
|
|
64
|
-
const sort = sortToMongo(opts?.sort);
|
|
63
|
+
const sort = mongoCriteriaHelper.sortToMongo(opts?.sort);
|
|
65
64
|
if (sort != null) {
|
|
66
65
|
cursor = cursor.sort(sort);
|
|
67
66
|
}
|
|
@@ -71,7 +70,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
71
70
|
const items = (await cursor.toArray()).map(item => demarshal({ ...item }));
|
|
72
71
|
return size > 0 ? { items, total, page, size } : { items, total };
|
|
73
72
|
},
|
|
74
|
-
count: async (where) => await resource.collection.countDocuments(criteriaToFilter(where, refs())),
|
|
73
|
+
count: async (where) => await resource.collection.countDocuments(mongoCriteriaHelper.criteriaToFilter(where, refs())),
|
|
75
74
|
update: async (record, opts) => {
|
|
76
75
|
if (opts?.ttl != null) {
|
|
77
76
|
throw new UnsupportedArgumentError('ttl');
|
|
@@ -88,7 +87,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
88
87
|
* document already carries — so the whole record is replaced without touching its key.
|
|
89
88
|
*/
|
|
90
89
|
delete replace.id;
|
|
91
|
-
const result = await resource.collection.replaceOne(identityCriteria('id', original.id, refs()), _prepareValues(replace, resource.schema, refs()));
|
|
90
|
+
const result = await resource.collection.replaceOne(mongoRefHelper.identityCriteria('id', original.id, refs()), _prepareValues(replace, resource.schema, refs()));
|
|
92
91
|
if (!result.acknowledged) {
|
|
93
92
|
throw new RecordUpdateFailed(`id:${id}`);
|
|
94
93
|
}
|
|
@@ -130,7 +129,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
130
129
|
},
|
|
131
130
|
/** Atomic: the record is handed back by the very operation that removed it. */
|
|
132
131
|
delete: async (id) => {
|
|
133
|
-
const record = await resource.collection.findOneAndDelete(identityCriteria('id', id, refs()));
|
|
132
|
+
const record = await resource.collection.findOneAndDelete(mongoRefHelper.identityCriteria('id', id, refs()));
|
|
134
133
|
return record != null ? demarshal(record) : null;
|
|
135
134
|
},
|
|
136
135
|
take: async (id) => {
|
|
@@ -141,7 +140,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
141
140
|
return record;
|
|
142
141
|
},
|
|
143
142
|
purge: async (where) => {
|
|
144
|
-
const filter = criteriaToFilter(where, refs());
|
|
143
|
+
const filter = mongoCriteriaHelper.criteriaToFilter(where, refs());
|
|
145
144
|
if (Object.keys(filter).length < 1) {
|
|
146
145
|
/** An empty filter here would empty the collection. */
|
|
147
146
|
throw new UnsupportedArgumentError('purge:no-criteria');
|
|
@@ -189,12 +188,12 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
189
188
|
return resource;
|
|
190
189
|
}),
|
|
191
190
|
migration: ((name, apply, stage) => {
|
|
192
|
-
getDeclaration(alias).migrations.register(name, apply, stage);
|
|
191
|
+
mongoDeclarationHelper.getDeclaration(alias).migrations.register(name, apply, stage);
|
|
193
192
|
return resource;
|
|
194
193
|
}),
|
|
195
|
-
migrations: () => getDeclaration(alias).migrations,
|
|
194
|
+
migrations: () => mongoDeclarationHelper.getDeclaration(alias).migrations,
|
|
196
195
|
reference: ((field, opts) => {
|
|
197
|
-
const declaration = getDeclaration(alias);
|
|
196
|
+
const declaration = mongoDeclarationHelper.getDeclaration(alias);
|
|
198
197
|
const options = typeof opts === 'string' ? { resource: opts } : opts ?? {};
|
|
199
198
|
declaration.references.set(field, { field, resource: options.resource, noIndex: options.noIndex });
|
|
200
199
|
/**
|
|
@@ -202,10 +201,10 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
202
201
|
* here rather than at init so it precedes migrations the app declares after its
|
|
203
202
|
* `reference()` calls — the field's type contract is the foundation those build on.
|
|
204
203
|
*/
|
|
205
|
-
declaration.migrations.register(refMigrationName(field), makeRefMigration(field), MigrationStage.Pre);
|
|
204
|
+
declaration.migrations.register(mongoRefHelper.refMigrationName(field), makeRefMigration(field), MigrationStage.Pre);
|
|
206
205
|
return resource;
|
|
207
206
|
}),
|
|
208
|
-
references: () => [...getDeclaration(alias).references.values()]
|
|
207
|
+
references: () => [...mongoDeclarationHelper.getDeclaration(alias).references.values()]
|
|
209
208
|
});
|
|
210
209
|
// Explicit collection name override (decoupled from the registration alias, which may
|
|
211
210
|
// contain characters that aren't valid in a collection name).
|
|
@@ -220,7 +219,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
|
|
|
220
219
|
await mongo.ready();
|
|
221
220
|
const db = await mongo.db(dbAlias);
|
|
222
221
|
const config = mongo.config(dbAlias);
|
|
223
|
-
resource.collection = await initializeCollection(
|
|
222
|
+
resource.collection = await makeMongoLifeCycleUtils(db).initializeCollection(config, resource, context);
|
|
224
223
|
};
|
|
225
224
|
return resource;
|
|
226
225
|
};
|
|
@@ -231,7 +230,7 @@ const _prepareValues = (obj, schema, refs) => {
|
|
|
231
230
|
* undo the conversion.
|
|
232
231
|
*/
|
|
233
232
|
if (refs != null && refs.size > 0) {
|
|
234
|
-
obj = Object.fromEntries(Object.entries(obj).map(([key, value]) => refs.has(key) ? [key, marshalReference(key, value)] : [key, value]));
|
|
233
|
+
obj = Object.fromEntries(Object.entries(obj).map(([key, value]) => refs.has(key) ? [key, mongoRefHelper.marshalReference(key, value)] : [key, value]));
|
|
235
234
|
}
|
|
236
235
|
// @TODO Validate keys from additional properties in the root
|
|
237
236
|
return schema != null ? Object.fromEntries(Object.entries(obj).map(([key, value]) => {
|
package/build/resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Resource, ResourceRecord, ResourceDbService, DbLocker, LockableResource, MigratableResource } from '@owlmeans/resource';
|
|
1
|
+
import type { Resource, ResourceRecord, ResourceDbService, DbLocker, LockableResource, MigratableResource, MigrationRegistry } from '@owlmeans/resource';
|
|
2
2
|
import type { Collection, CreateIndexesOptions, Db, IndexSpecification, MongoClient } from 'mongodb';
|
|
3
3
|
import type { AnySchema } from 'ajv';
|
|
4
4
|
/**
|
|
@@ -79,4 +79,9 @@ export interface MongoResource<T extends ResourceRecord> extends Resource<T>, Lo
|
|
|
79
79
|
}
|
|
80
80
|
export interface MongoDbService extends ResourceDbService<Db, MongoClient>, DbLocker<ResourceRecord> {
|
|
81
81
|
}
|
|
82
|
+
export interface MongoDeclaration {
|
|
83
|
+
migrations: MigrationRegistry<MongoTx>;
|
|
84
|
+
/** Declared ObjectId references, keyed by field. Registered via `resource.reference()`. */
|
|
85
|
+
references: Map<string, MongoReference>;
|
|
86
|
+
}
|
|
82
87
|
//# sourceMappingURL=types.d.ts.map
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACxJ,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,EAAE,CAAA;IACN,wCAAwC;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,yFAAyF;IACzF,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;IACnC,mGAAmG;IACnG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC/F,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAA;IAC5F,UAAU,EAAE,UAAU,CAAA;IACtB,EAAE,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACxF;;;;;;;;;;;OAWG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,KAAK,IAAI,CAAA;IACnE,6CAA6C;IAC7C,UAAU,EAAE,MAAM,cAAc,EAAE,CAAA;IAClC,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;CACnG;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACtC,2FAA2F;IAC3F,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE3E,MAAM,MAAM,MAAM,GAAG,YAAY,CAAA;AAEjC,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.local.js","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operators mongo speaks natively and that mean the same thing here as they do in SQL and in
|
|
3
|
+
* the in-memory engine. Everything else in the shared vocabulary is rewritten below into a
|
|
4
|
+
* mongo expression with the same meaning — a criteria object has to answer identically
|
|
5
|
+
* whichever store it reaches.
|
|
6
|
+
*/
|
|
7
|
+
export declare const NATIVE: Set<string>;
|
|
8
|
+
/** What the SERVER reports about an index rather than what a declaration asks for — never a
|
|
9
|
+
* reason to recreate one. `collation` is here because a collection's default collation is
|
|
10
|
+
* reported on every index in it, including the ones declared without any. */
|
|
11
|
+
export declare const REPORTED_FIELDS: Set<string>;
|
|
12
|
+
export declare const VALID_COLLECTION_NAME: RegExp;
|
|
13
|
+
/**
|
|
14
|
+
* The only shape a stored reference is converted from. Deliberately stricter than
|
|
15
|
+
* `ObjectId.isValid`, which also accepts any 12 character string and would silently
|
|
16
|
+
* swallow short business keys.
|
|
17
|
+
*/
|
|
18
|
+
export declare const HEX24: RegExp;
|
|
19
|
+
/**
|
|
20
|
+
* Operators whose operand is never an id — a 24 hex string under `$regex` is a pattern,
|
|
21
|
+
* not a reference.
|
|
22
|
+
*/
|
|
23
|
+
export declare const OPAQUE_OPERATORS: string[];
|
|
24
|
+
export declare const LOGICAL_OPERATORS: string[];
|
|
25
|
+
//# sourceMappingURL=consts.local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../../src/utils/consts.local.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,MAAM,aAAiF,CAAA;AAEpG;;8EAE8E;AAC9E,eAAO,MAAM,eAAe,aAE1B,CAAA;AAMF,eAAO,MAAM,qBAAqB,QAAqB,CAAA;AAEvD;;;;GAIG;AACH,eAAO,MAAM,KAAK,QAAsB,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAwE,CAAA;AAErG,eAAO,MAAM,iBAAiB,UAA0B,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operators mongo speaks natively and that mean the same thing here as they do in SQL and in
|
|
3
|
+
* the in-memory engine. Everything else in the shared vocabulary is rewritten below into a
|
|
4
|
+
* mongo expression with the same meaning — a criteria object has to answer identically
|
|
5
|
+
* whichever store it reaches.
|
|
6
|
+
*/
|
|
7
|
+
export const NATIVE = new Set(['$eq', '$ne', '$gt', '$gte', '$lt', '$lte', '$in', '$nin', '$regex']);
|
|
8
|
+
/** What the SERVER reports about an index rather than what a declaration asks for — never a
|
|
9
|
+
* reason to recreate one. `collation` is here because a collection's default collation is
|
|
10
|
+
* reported on every index in it, including the ones declared without any. */
|
|
11
|
+
export const REPORTED_FIELDS = new Set([
|
|
12
|
+
'v', 'ns', 'name', 'collation', 'textIndexVersion', '2dsphereIndexVersion', 'background'
|
|
13
|
+
]);
|
|
14
|
+
// Collection names must use only alphanumeric characters, underscore, and hyphen — no
|
|
15
|
+
// colons or other delimiters. This guard enforces the rule for every collection created
|
|
16
|
+
// through makeMongoResource across all projects (common/internal/app), failing fast at
|
|
17
|
+
// initialization rather than silently creating a badly-named collection.
|
|
18
|
+
export const VALID_COLLECTION_NAME = /^[a-zA-Z0-9_-]+$/;
|
|
19
|
+
/**
|
|
20
|
+
* The only shape a stored reference is converted from. Deliberately stricter than
|
|
21
|
+
* `ObjectId.isValid`, which also accepts any 12 character string and would silently
|
|
22
|
+
* swallow short business keys.
|
|
23
|
+
*/
|
|
24
|
+
export const HEX24 = /^[0-9a-fA-F]{24}$/;
|
|
25
|
+
/**
|
|
26
|
+
* Operators whose operand is never an id — a 24 hex string under `$regex` is a pattern,
|
|
27
|
+
* not a reference.
|
|
28
|
+
*/
|
|
29
|
+
export const OPAQUE_OPERATORS = ['$regex', '$options', '$type', '$size', '$mod', '$exists', '$where'];
|
|
30
|
+
export const LOGICAL_OPERATORS = ['$and', '$or', '$nor'];
|
|
31
|
+
//# sourceMappingURL=consts.local.js.map
|