@owlmeans/mongo-resource 0.1.18-rc.40 → 0.1.18-rc.41
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/mongo-resource/SKILL.md +1 -1
- package/build/utils/indexes.d.ts.map +1 -1
- package/build/utils/indexes.js +4 -2
- package/build/utils/indexes.js.map +1 -1
- package/build/utils/life-cycle.d.ts.map +1 -1
- package/build/utils/life-cycle.js +5 -2
- package/build/utils/life-cycle.js.map +1 -1
- package/build/utils/refs.d.ts.map +1 -1
- package/build/utils/refs.js +5 -2
- package/build/utils/refs.js.map +1 -1
- package/package.json +5 -4
- package/src/utils/indexes.ts +5 -2
- package/src/utils/life-cycle.ts +6 -4
- package/src/utils/refs.ts +6 -4
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.41
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
`mongodb` and `ajv` are peer dependencies. The connection service comes from
|
|
@@ -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.47
|
|
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.41",
|
|
5
|
+
"generatedAt": "2026-10-03T20:05:07.589Z",
|
|
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.41"` 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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../src/utils/indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../src/utils/indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAgBnD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,aAAc,QAAQ,YAAY,QAAQ,KAAG,OAMrE,CAAA;AAED,eAAO,MAAM,aAAa,eAAsB,UAAU,YAAY,aAAa,CAAC,cAAc,CAAC,kBA8BlG,CAAA"}
|
package/build/utils/indexes.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { logger } from '@owlmeans/log';
|
|
2
|
+
const log = logger('mongo-resource');
|
|
1
3
|
/** What the SERVER reports about an index rather than what a declaration asks for — never a
|
|
2
4
|
* reason to recreate one. `collation` is here because a collection's default collation is
|
|
3
5
|
* reported on every index in it, including the ones declared without any. */
|
|
@@ -35,14 +37,14 @@ export const updateIndexes = async (collection, resource) => {
|
|
|
35
37
|
});
|
|
36
38
|
const existing = present.find(_index => _index.name === index.name);
|
|
37
39
|
if (existing == null) {
|
|
38
|
-
|
|
40
|
+
log.debug('Create index', { resource: resource.alias, index: index.name });
|
|
39
41
|
await create();
|
|
40
42
|
return;
|
|
41
43
|
}
|
|
42
44
|
if (!indexChanged(existing, { key: index.index, ...index.options })) {
|
|
43
45
|
return;
|
|
44
46
|
}
|
|
45
|
-
|
|
47
|
+
log.debug('Recreate index', { resource: resource.alias, index: index.name });
|
|
46
48
|
try {
|
|
47
49
|
await collection.dropIndex(index.name);
|
|
48
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/utils/indexes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../src/utils/indexes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,EAAE,EAAE,UAAU,EAAgC,MAAM,SAAS,CAAA;AAW3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,OAC3B,EAAE,UAAU,QAAQ,YAAY,aAAa,CAAC,cAAc,CAAC,YACvD,YAAY,CAAC,GAAG,CAAC,KAC1B,OAAO,CAAC,UAAU,CAmBpB,CAAA;AA8DD,eAAO,MAAM,gBAAgB,OAAc,EAAE,QAAQ,MAAM,YAAY,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAoBxH,CAAA;AAED,eAAO,MAAM,gBAAgB,OAAc,EAAE,QAAQ,MAAM,YAAY,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAaxH,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MigrationStage, runMigrations } from '@owlmeans/resource';
|
|
2
|
+
import { logger } from '@owlmeans/log';
|
|
2
3
|
import { DEF_MIGRATIONS_COLLECTION } from '../consts.js';
|
|
3
4
|
import { getDeclaration } from '../declarations.js';
|
|
4
5
|
import { mongoCollectionName } from './name.js';
|
|
@@ -6,6 +7,7 @@ import { applyReferenceTypes, schemaToMongoSchema } from './schema.js';
|
|
|
6
7
|
import { updateIndexes } from './indexes.js';
|
|
7
8
|
import { makeMongoMigrationStore, makeMongoTx } from './migrations.js';
|
|
8
9
|
import { reconcileReferences } from './refs.js';
|
|
10
|
+
const log = logger('mongo-resource');
|
|
9
11
|
/**
|
|
10
12
|
* Bring a resource's collection to the shape its schema declares.
|
|
11
13
|
*
|
|
@@ -85,8 +87,9 @@ const prepareMigrations = (db, config, resource, name, context) => {
|
|
|
85
87
|
return async (opts) => {
|
|
86
88
|
const report = await runMigrations(resource.alias, registry, store, opts);
|
|
87
89
|
if (report.applied.length > 0) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
log.info('Migrations applied', {
|
|
91
|
+
resource: resource.alias, collection: name, stage: report.stage, applied: report.applied,
|
|
92
|
+
}, { event: 'migration.applied' });
|
|
90
93
|
}
|
|
91
94
|
return report;
|
|
92
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/utils/refs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/utils/refs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAW1D,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,MACR,CAAA;AAEhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,SAAS,OAAO,KAAG,OAehE,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,OASnD,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KAAG,CAY1F,CAAA;AA4BD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,aAChB,QAAQ,GAAG,SAAS,QAAQ,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KAChE,QAAQ,GAAG,SAkBb,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UACpB,MAAM,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KAC3D,QAYF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MAA2B,CAAA;AAE5E,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,UAAW,MAAM,UAAgB,OAAO,KAAG,OAAO,CAAC,IAAI,CAEnF,CAAA;AAeD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,eAAsB,UAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAmBjG,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,eAClB,UAAU,QAAQ,cAAc,EAAE,SAAS,MAAM,KAC5D,OAAO,CAAC,IAAI,CAad,CAAA"}
|
package/build/utils/refs.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { MisshapedRecord } from '@owlmeans/resource';
|
|
2
2
|
import { ObjectId } from 'mongodb';
|
|
3
|
+
import { logger } from '@owlmeans/log';
|
|
4
|
+
const log = logger('mongo-resource');
|
|
3
5
|
/**
|
|
4
6
|
* The only shape a stored reference is converted from. Deliberately stricter than
|
|
5
7
|
* `ObjectId.isValid`, which also accepts any 12 character string and would silently
|
|
@@ -192,8 +194,9 @@ export const reconcileReferences = async (collection, refs, alias) => {
|
|
|
192
194
|
const remnant = await collection.findOne({ [ref.field]: { $type: 'string', $regex: HEX24 } }, { projection: { _id: 1 } });
|
|
193
195
|
if (remnant != null) {
|
|
194
196
|
const converted = await convertReferenceField(collection, ref.field);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
log.warn('Reference field held string ids outside the migration ledger; converted', {
|
|
198
|
+
resource: alias, field: ref.field, converted,
|
|
199
|
+
});
|
|
197
200
|
}
|
|
198
201
|
}
|
|
199
202
|
};
|
package/build/utils/refs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/utils/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/utils/refs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/mongo-resource",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.41",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -27,12 +27,13 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@owlmeans/context": "^0.1.18-rc.32",
|
|
30
|
-
"@owlmeans/
|
|
31
|
-
"@owlmeans/
|
|
30
|
+
"@owlmeans/log": "^0.1.18-rc.0",
|
|
31
|
+
"@owlmeans/resource": "^0.1.18-rc.38",
|
|
32
|
+
"@owlmeans/server-context": "^0.1.18-rc.41"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@owlmeans/dep-config": "workspace:*",
|
|
35
|
-
"@owlmeans/test-integration": "^0.1.18-rc.
|
|
36
|
+
"@owlmeans/test-integration": "^0.1.18-rc.31",
|
|
36
37
|
"@types/bun": "^1.4.0",
|
|
37
38
|
"@types/node": "^26.1.0",
|
|
38
39
|
"mongodb": "^7.5.0",
|
package/src/utils/indexes.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { ResourceRecord } from '@owlmeans/resource'
|
|
2
2
|
import type { MongoResource } from '../types.js'
|
|
3
3
|
import type { Collection, Document } from 'mongodb'
|
|
4
|
+
import { logger } from '@owlmeans/log'
|
|
5
|
+
|
|
6
|
+
const log = logger('mongo-resource')
|
|
4
7
|
|
|
5
8
|
/** What the SERVER reports about an index rather than what a declaration asks for — never a
|
|
6
9
|
* reason to recreate one. `collation` is here because a collection's default collation is
|
|
@@ -42,14 +45,14 @@ export const updateIndexes = async (collection: Collection, resource: MongoResou
|
|
|
42
45
|
})
|
|
43
46
|
const existing = present.find(_index => _index.name === index.name)
|
|
44
47
|
if (existing == null) {
|
|
45
|
-
|
|
48
|
+
log.debug('Create index', { resource: resource.alias, index: index.name })
|
|
46
49
|
await create()
|
|
47
50
|
return
|
|
48
51
|
}
|
|
49
52
|
if (!indexChanged(existing, { key: index.index, ...index.options })) {
|
|
50
53
|
return
|
|
51
54
|
}
|
|
52
|
-
|
|
55
|
+
log.debug('Recreate index', { resource: resource.alias, index: index.name })
|
|
53
56
|
try {
|
|
54
57
|
await collection.dropIndex(index.name)
|
|
55
58
|
} catch (e) {
|
package/src/utils/life-cycle.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MigrationStage, runMigrations } from '@owlmeans/resource'
|
|
2
2
|
import type { DbConfig, MigrationReport, ResourceRecord } from '@owlmeans/resource'
|
|
3
3
|
import type { BasicContext } from '@owlmeans/context'
|
|
4
|
+
import { logger } from '@owlmeans/log'
|
|
4
5
|
import type { MongoReference, MongoResource } from '../types.js'
|
|
5
6
|
import type { Db, Collection, Document, IndexSpecification } from 'mongodb'
|
|
6
7
|
import { DEF_MIGRATIONS_COLLECTION } from '../consts.js'
|
|
@@ -11,6 +12,8 @@ import { updateIndexes } from './indexes.js'
|
|
|
11
12
|
import { makeMongoMigrationStore, makeMongoTx } from './migrations.js'
|
|
12
13
|
import { reconcileReferences } from './refs.js'
|
|
13
14
|
|
|
15
|
+
const log = logger('mongo-resource')
|
|
16
|
+
|
|
14
17
|
/**
|
|
15
18
|
* Bring a resource's collection to the shape its schema declares.
|
|
16
19
|
*
|
|
@@ -109,10 +112,9 @@ const prepareMigrations = (
|
|
|
109
112
|
return async opts => {
|
|
110
113
|
const report = await runMigrations(resource.alias, registry, store, opts)
|
|
111
114
|
if (report.applied.length > 0) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
)
|
|
115
|
+
log.info('Migrations applied', {
|
|
116
|
+
resource: resource.alias, collection: name, stage: report.stage, applied: report.applied,
|
|
117
|
+
}, { event: 'migration.applied' })
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
return report
|
package/src/utils/refs.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { MisshapedRecord } from '@owlmeans/resource'
|
|
2
2
|
import { ObjectId } from 'mongodb'
|
|
3
3
|
import type { Collection, Document } from 'mongodb'
|
|
4
|
+
import { logger } from '@owlmeans/log'
|
|
4
5
|
|
|
5
6
|
import type { MongoReference, MongoTx } from '../types.js'
|
|
6
7
|
|
|
8
|
+
const log = logger('mongo-resource')
|
|
9
|
+
|
|
7
10
|
/**
|
|
8
11
|
* The only shape a stored reference is converted from. Deliberately stricter than
|
|
9
12
|
* `ObjectId.isValid`, which also accepts any 12 character string and would silently
|
|
@@ -233,10 +236,9 @@ export const reconcileReferences = async (
|
|
|
233
236
|
)
|
|
234
237
|
if (remnant != null) {
|
|
235
238
|
const converted = await convertReferenceField(collection, ref.field)
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
)
|
|
239
|
+
log.warn('Reference field held string ids outside the migration ledger; converted', {
|
|
240
|
+
resource: alias, field: ref.field, converted,
|
|
241
|
+
})
|
|
240
242
|
}
|
|
241
243
|
}
|
|
242
244
|
}
|