@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.
Files changed (104) hide show
  1. package/README.md +14 -14
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/mongo-resource/SKILL.md +13 -13
  4. package/build/declarations/types.d.ts +12 -0
  5. package/build/declarations/types.d.ts.map +1 -0
  6. package/build/declarations/types.js +2 -0
  7. package/build/declarations/types.js.map +1 -0
  8. package/build/declarations.d.ts +4 -9
  9. package/build/declarations.d.ts.map +1 -1
  10. package/build/declarations.js +23 -15
  11. package/build/declarations.js.map +1 -1
  12. package/build/index.d.ts +3 -0
  13. package/build/index.d.ts.map +1 -1
  14. package/build/index.js.map +1 -1
  15. package/build/resource.d.ts +1 -1
  16. package/build/resource.d.ts.map +1 -1
  17. package/build/resource.js +23 -24
  18. package/build/resource.js.map +1 -1
  19. package/build/types.d.ts +6 -1
  20. package/build/types.d.ts.map +1 -1
  21. package/build/types.local.d.ts +4 -0
  22. package/build/types.local.d.ts.map +1 -0
  23. package/build/types.local.js +2 -0
  24. package/build/types.local.js.map +1 -0
  25. package/build/utils/consts.local.d.ts +25 -0
  26. package/build/utils/consts.local.d.ts.map +1 -0
  27. package/build/utils/consts.local.js +31 -0
  28. package/build/utils/consts.local.js.map +1 -0
  29. package/build/utils/criteria/types.d.ts +27 -0
  30. package/build/utils/criteria/types.d.ts.map +1 -0
  31. package/build/utils/criteria/types.js +2 -0
  32. package/build/utils/criteria/types.js.map +1 -0
  33. package/build/utils/criteria.d.ts +5 -20
  34. package/build/utils/criteria.d.ts.map +1 -1
  35. package/build/utils/criteria.js +110 -127
  36. package/build/utils/criteria.js.map +1 -1
  37. package/build/utils/indexes/types.d.ts +19 -0
  38. package/build/utils/indexes/types.d.ts.map +1 -0
  39. package/build/utils/indexes/types.js +2 -0
  40. package/build/utils/indexes/types.js.map +1 -0
  41. package/build/utils/indexes.d.ts +3 -14
  42. package/build/utils/indexes.d.ts.map +1 -1
  43. package/build/utils/indexes.js +41 -51
  44. package/build/utils/indexes.js.map +1 -1
  45. package/build/utils/life-cycle/types.d.ts +36 -0
  46. package/build/utils/life-cycle/types.d.ts.map +1 -0
  47. package/build/utils/life-cycle/types.js +2 -0
  48. package/build/utils/life-cycle/types.js.map +1 -0
  49. package/build/utils/life-cycle.d.ts +3 -30
  50. package/build/utils/life-cycle.d.ts.map +1 -1
  51. package/build/utils/life-cycle.js +94 -113
  52. package/build/utils/life-cycle.js.map +1 -1
  53. package/build/utils/migrations.d.ts.map +1 -1
  54. package/build/utils/migrations.js +1 -2
  55. package/build/utils/migrations.js.map +1 -1
  56. package/build/utils/name.d.ts.map +1 -1
  57. package/build/utils/name.js +1 -5
  58. package/build/utils/name.js.map +1 -1
  59. package/build/utils/refs/types.d.ts +78 -0
  60. package/build/utils/refs/types.d.ts.map +1 -0
  61. package/build/utils/refs/types.js +2 -0
  62. package/build/utils/refs/types.js.map +1 -0
  63. package/build/utils/refs.d.ts +13 -69
  64. package/build/utils/refs.d.ts.map +1 -1
  65. package/build/utils/refs.js +113 -162
  66. package/build/utils/refs.js.map +1 -1
  67. package/build/utils/schema/types.d.ts +16 -0
  68. package/build/utils/schema/types.d.ts.map +1 -0
  69. package/build/utils/schema/types.js +2 -0
  70. package/build/utils/schema/types.js.map +1 -0
  71. package/build/utils/schema.d.ts +3 -11
  72. package/build/utils/schema.d.ts.map +1 -1
  73. package/build/utils/schema.js +86 -88
  74. package/build/utils/schema.js.map +1 -1
  75. package/build/utils/types.local.d.ts +13 -0
  76. package/build/utils/types.local.d.ts.map +1 -0
  77. package/build/utils/types.local.js +2 -0
  78. package/build/utils/types.local.js.map +1 -0
  79. package/package.json +9 -9
  80. package/src/declarations/types.ts +12 -0
  81. package/src/declarations.ts +27 -22
  82. package/src/index.ts +3 -0
  83. package/src/resource.ts +26 -37
  84. package/src/types.local.ts +5 -0
  85. package/src/types.ts +7 -3
  86. package/src/utils/consts.local.ts +35 -0
  87. package/src/utils/criteria/types.ts +28 -0
  88. package/src/utils/criteria.ts +120 -133
  89. package/src/utils/indexes/types.ts +20 -0
  90. package/src/utils/indexes.ts +42 -50
  91. package/src/utils/life-cycle/types.ts +39 -0
  92. package/src/utils/life-cycle.ts +117 -133
  93. package/src/utils/migrations.ts +3 -17
  94. package/src/utils/name.ts +1 -6
  95. package/src/utils/refs/types.ts +79 -0
  96. package/src/utils/refs.ts +146 -192
  97. package/src/utils/schema/types.ts +17 -0
  98. package/src/utils/schema.ts +92 -91
  99. package/src/utils/types.local.ts +13 -0
  100. package/tests/context.ts +3 -3
  101. package/tests/criteria.spec.ts +3 -1
  102. package/tests/crud.spec.ts +2 -2
  103. package/tests/indexes.spec.ts +3 -1
  104. 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.41
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 `requireEntityKey(req)` in the
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 { marshalReference } from '@owlmeans/mongo-resource'
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)` | function | `Criteria<T>` to a Mongo filter, with references converted |
246
- | `sortToMongo(sort)` | function | `Sort<T>[]` to a Mongo sort document (`id` becomes `_id`) |
247
- | `marshalReference(field, value)` | function | String id(s) to `ObjectId` for a write; throws `MisshapedRecord` on non-ids |
248
- | `demarshalReference(value)`, `demarshalRefs(record, refs)` | function | `ObjectId` back to strings for one value or a whole document |
249
- | `marshalCriteria(filter, refs)`, `identityCriteria(field, id, refs)` | function | Convert a Mongo filter's id-addressed values; build a single-record lookup |
250
- | `isObjectIdHex(value)` | function | Strict 24-hex test used by the conversion layer |
251
- | `convertReferenceField`, `makeRefMigration`, `reconcileReferences`, `refMigrationName` | function | The system reference migration and its boot-time probe |
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
- | `getDeclaration(alias)`, `resetDeclarations(alias?)`, `MongoDeclaration` | function / type | Module-scope per-alias declarations; `resetDeclarations` is the testing seam |
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.47
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
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/mongo-resource",
4
- "version": "0.1.18-rc.41",
5
- "generatedAt": "2026-10-03T20:05:07.589Z",
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.41"` in `dependencies` (peers `mongodb`, `ajv`)
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
- | `convertReferenceField`, `makeRefMigration`, `reconcileReferences`, `refMigrationName` | The system reference migration's machinery. |
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`, `MongoDeclaration` | Module-scope migration/reference declarations, keyed by alias; `resetDeclarations(alias?)` is the testing seam. |
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 bump the
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
- with `marshalReference(field, value)` and convert read-back documents' reference fields (and
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 expressions so one
197
- criteria object selects the same records here as it does in SQL and in memory. Two rewrites are
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/declarations/types.ts"],"names":[],"mappings":""}
@@ -1,11 +1,6 @@
1
- import type { MigrationRegistry } from '@owlmeans/resource';
2
- import type { MongoReference, MongoTx } from './types.js';
3
- export interface MongoDeclaration {
4
- migrations: MigrationRegistry<MongoTx>;
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":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzD,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;AAaD,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,gBAQ9C,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,IAOlD,CAAA"}
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"}
@@ -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 getDeclaration = (alias) => {
13
- let declaration = declarations.get(alias);
14
- if (declaration == null) {
15
- declaration = { migrations: createMigrationRegistry(), references: new Map() };
16
- declarations.set(alias, declaration);
17
- }
18
- return declaration;
19
- };
20
- /** Testing seam — drops every declaration so a spec can redeclare a resource from scratch. */
21
- export const resetDeclarations = (alias) => {
22
- if (alias == null) {
23
- declarations.clear();
24
- return;
25
- }
26
- declarations.delete(alias);
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;AAW5D;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAkC,IAAI,GAAG,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAoB,EAAE;IAChE,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,WAAW,GAAG,EAAE,UAAU,EAAE,uBAAuB,EAAW,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;QACvF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAM;IACR,CAAC;IACD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,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
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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.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"}
@@ -1,4 +1,4 @@
1
- import type { ResourceRecord } from '@owlmeans/resource';
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
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACuC,cAAc,EAChE,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAmD,aAAa,EAAW,MAAM,YAAY,CAAA;AAkBzG,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"}
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 { initializeCollection } from './utils/life-cycle.js';
5
- import { getDeclaration } from './declarations.js';
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 { criteriaToFilter, sortToMongo } from './utils/criteria.js';
10
- import { demarshalRefs, identityCriteria, makeRefMigration, marshalReference, refMigrationName } from './utils/refs.js';
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(db, config, resource, context);
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]) => {
@@ -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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,cAAc,EAA+G,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEjQ,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAqE,MAAM,SAAS,CAAA;AAErG,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAIlE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAG/B,KAAa,EAAE,OAAO,GAAW,gBAAgB,EAAE,YAAY,GAAW,gBAAgB,EAC1F,cAAuB,EACpB,EAAE;IACL,MAAM,QAAQ,GAAG,kBAAkB,KAAK,EAAE,CAAA;IAE1C;;;;OAIG;IACH,MAAM,IAAI,GAAG,GAAgC,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAA;IAEvG,MAAM,SAAS,GAAG,CAA8B,MAAgC,EAAQ,EAAE;QACxF,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAa,CAAA;QACzF,OAAO,MAAM,CAAC,GAAG,CAAA;QACjB,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC,CAAA;IAED;;;;OAIG;IACH,MAAM,QAAQ,GAAG,CAAC,SAA+B,EAAY,EAAE,CAC7D,OAAO,SAAS,KAAK,QAAQ;QAC3B,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1D,CAAC,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7D;;;OAGG;IACH,MAAM,OAAO,GAAG,KAAK,EACnB,SAA+B,EAAE,IAAsB,EACpC,EAAE;QACrB,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAClD,CAAA;QAED,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAClE,CAAC,CAAA;IAED,MAAM,QAAQ,GAAM,gBAAgB,CAAI,KAAK,EAAE;QAC7C,GAAG,EAAE,CAAC,KAAK,EAAE,SAA+B,EAAE,IAAsB,EAAc,EAAE;YAClF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC7C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,kBAAkB,CAC1B,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CACtE,CAAA;YACH,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC,CAAa;QAEd,IAAI,EAAE,OAAoB;QAE1B,IAAI,EAAE,KAAK,EAAE,KAAmB,EAAE,IAAqB,EAA0B,EAAE;YACjF,MAAM,MAAM,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAClE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;YAE9D,sFAAsF;YACtF,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,iBAAiB,CAAA;YAC5C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;YAC5B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,yFAAyF;gBACzF,MAAM,IAAI,wBAAwB,CAAC,mBAAmB,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;YAC3E,CAAC;YAED,IAAI,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACxD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC;YACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC/C,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAkB,CAAC,CAAC,CAAA;YAE1F,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACnE,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,KAAmB,EAAmB,EAAE,CACpD,MAAM,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/F,MAAM,EAAE,KAAK,EAAE,MAAkB,EAAE,IAAmB,EAAc,EAAE;YACpE,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;YACpB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;YAED,uFAAuF;YACvF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAEvC,MAAM,OAAO,GAAa,EAAE,GAAG,MAAM,EAAE,CAAA;YACvC;;;eAGG;YACH,OAAO,OAAO,CAAC,EAAE,CAAA;YAEjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,CACjD,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAY,EAAE,IAAI,EAAE,CAAC,EACpE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,MAA6B,EAAE,IAAI,EAAE,CAAC,CACxE,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC1C,CAAC;YAED,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAY,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,MAAkB,EAAE,IAAmB,EAAc,EAAE,CAClE,MAAM,CAAC,EAAE,IAAI,IAAI;YACf,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;YACrC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAEzC,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,MAAM,GAAwC,QAAQ,CAAC,MAAiC,CAAA;YAC9F,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/E,IAAK,KAAiC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;oBACvD,OAAO,QAAQ,CAAA;gBACjB,CAAC;gBACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAG,KAAiC,CAAC,OAAO,EAAE,CAAA;YAC3E,CAAC,EAAE,EAAE,CAAC,CAAA;QACR,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAkB,EAAE,IAAmB,EAAc,EAAE;YACpE,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,EAAE,CAAA;YAClB,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;gBACjD,GAAG,QAAQ,CAAC,WAAW,EAAE;gBACzB,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAA6B,EAAE,IAAI,EAAE,CAAC;aAC1E,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAA;YAC1C,CAAC;YAED,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,+EAA+E;QAC/E,MAAM,EAAE,KAAK,EAAE,EAAU,EAAqB,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAE5G,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAClE,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,EAAU,EAAc,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACxC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,KAAkB,EAAmB,EAAE;YACnD,MAAM,MAAM,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YAClE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,uDAAuD;gBACvD,MAAM,IAAI,wBAAwB,CAAC,mBAAmB,CAAC,CAAA;YACzD,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAA;QACpE,CAAC;QAED,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC7B,MAAM,KAAK,qBAAqB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;YACvD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,WAAW,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACvE,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YAEtE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,KAAK,qBAAqB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;YACvD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,WAAW,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACzE,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YAEtE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;YACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;YACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED;;;;WAIG;QACH,KAAK,EAAE,CAAC,CAAC,IAAY,EAAE,KAAyB,EAAE,OAA8B,EAAE,EAAE;YAClF,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;YACzC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/C,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAe;QAEhB,SAAS,EAAE,CAAC,CAAC,IAAY,EAAE,KAAqC,EAAE,KAAsB,EAAE,EAAE;YAC1F,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACpF,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAmB;QAEpB,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU;QAEzE,SAAS,EAAE,CAAC,CAAC,KAAa,EAAE,IAA+B,EAAE,EAAE;YAC7D,MAAM,WAAW,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAChE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;YAC1E,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAClG;;;;eAIG;YACH,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAA;YAEpH,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAmB;QAEpB,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1E,CAAC,CAAA;IAEhB,sFAAsF;IACtF,8DAA8D;IAC9D,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAA;IAChC,CAAC;IACD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAA;IAEpC,QAAQ,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,aAAa,CAAkB,QAAQ,CAAC,GAAc,EAAE,QAAQ,CAAC,CAAA;QACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAiB,YAAY,IAAI,OAAO,CAAC,CAAA;QACtE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,QAAQ,CAAC,UAAU,GAAG,MAAM,uBAAuB,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAC1E,MAAM,EAAE,QAAoD,EAAE,OAAO,CACtE,CAAA;IACH,CAAC,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,GAAM,EAAE,MAA0B,EAAE,IAAkC,EACnE,EAAE;IACL;;;;OAIG;IACH,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAClF,CAAM,CAAA;IACT,CAAC;IACD,6DAA6D;IAC7D,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAClF,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,KAAe,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,kFAAkF;QAClF,wEAAwE;QACxE,+EAA+E;QAC/E,yEAAyE;QACzE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAe,CAAC,CAAC,CAAA;YACzC,CAAC;YAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrF,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACpE,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,oBAA2C,CAAC,CAAC,CAAA;gBAC5F,CAAC,CAAC,CAAC,CAAA;gBAEH,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACrB,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,IAAoC,CAAC,CAAC,CAAA;QAC3E,CAAC;aAAM,IAAI,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,EAAG,KAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAA4B,CAAC,CAAC,CAAC,CAAA;QAC1G,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;IAChD,CAAC,CAAC,CAAM,CAAC,CAAC,CAAC,GAAG,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAI,KAAQ,EAAE,MAA0B,EAAE,EAAE;IACtE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,cAAc,CAAC,KAAY,EAAE,MAA6B,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,GAAG,KAAK,EAAE,CAAA;IACnB,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAA;IACf,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,kEAAkE;IAClE,OAAO,GAAG,KAAK,EAAE,CAAA;AACnB,CAAC,CAAA"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAC5F,MAAM,oBAAoB,CAAA;AAC3B,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"}
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,4 @@
1
+ import type { ServerConfig, ServerContext } from '@owlmeans/server-context';
2
+ export type Config = ServerConfig;
3
+ export type Context<C extends Config = Config> = ServerContext<C>;
4
+ //# sourceMappingURL=types.local.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.local.js.map
@@ -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