@x12i/memorix-retrieval 1.6.5 → 1.8.0
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 +115 -59
- package/dist/client/types.d.ts +2 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/data/collection-parser.d.ts +14 -0
- package/dist/data/collection-parser.d.ts.map +1 -0
- package/dist/data/collection-parser.js +31 -0
- package/dist/data/collection-parser.js.map +1 -0
- package/dist/data/identity.d.ts +15 -4
- package/dist/data/identity.d.ts.map +1 -1
- package/dist/data/identity.js +22 -12
- package/dist/data/identity.js.map +1 -1
- package/dist/data/memorix-read.d.ts.map +1 -1
- package/dist/data/memorix-read.js +1 -0
- package/dist/data/memorix-read.js.map +1 -1
- package/dist/data/record-identity.d.ts +11 -0
- package/dist/data/record-identity.d.ts.map +1 -0
- package/dist/data/record-identity.js +50 -0
- package/dist/data/record-identity.js.map +1 -0
- package/dist/data/target-read.d.ts +19 -0
- package/dist/data/target-read.d.ts.map +1 -0
- package/dist/data/target-read.js +85 -0
- package/dist/data/target-read.js.map +1 -0
- package/dist/descriptors/descriptor-types.d.ts +22 -6
- package/dist/descriptors/descriptor-types.d.ts.map +1 -1
- package/dist/descriptors/discover-entities.d.ts +1 -1
- package/dist/descriptors/discover-entities.d.ts.map +1 -1
- package/dist/descriptors/load-slice-descriptor.d.ts +6 -0
- package/dist/descriptors/load-slice-descriptor.d.ts.map +1 -0
- package/dist/descriptors/load-slice-descriptor.js +20 -0
- package/dist/descriptors/load-slice-descriptor.js.map +1 -0
- package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
- package/dist/descriptors/validate-descriptor.js +5 -2
- package/dist/descriptors/validate-descriptor.js.map +1 -1
- package/dist/explorer/collection-inventory.d.ts +1 -0
- package/dist/explorer/collection-inventory.d.ts.map +1 -1
- package/dist/explorer/collection-inventory.js +20 -13
- package/dist/explorer/collection-inventory.js.map +1 -1
- package/dist/explorer/collection-records.d.ts +46 -0
- package/dist/explorer/collection-records.d.ts.map +1 -0
- package/dist/explorer/collection-records.js +106 -0
- package/dist/explorer/collection-records.js.map +1 -0
- package/dist/explorer/entity-graph.d.ts +21 -0
- package/dist/explorer/entity-graph.d.ts.map +1 -1
- package/dist/explorer/entity-graph.js +124 -12
- package/dist/explorer/entity-graph.js.map +1 -1
- package/dist/explorer/health.d.ts +43 -10
- package/dist/explorer/health.d.ts.map +1 -1
- package/dist/explorer/health.js +216 -102
- package/dist/explorer/health.js.map +1 -1
- package/dist/explorer/inventory-policy.d.ts +10 -0
- package/dist/explorer/inventory-policy.d.ts.map +1 -0
- package/dist/explorer/inventory-policy.js +20 -0
- package/dist/explorer/inventory-policy.js.map +1 -0
- package/dist/explorer/raw-collection-records.d.ts +62 -0
- package/dist/explorer/raw-collection-records.d.ts.map +1 -0
- package/dist/explorer/raw-collection-records.js +218 -0
- package/dist/explorer/raw-collection-records.js.map +1 -0
- package/dist/explorer/unified-inventory.d.ts +82 -0
- package/dist/explorer/unified-inventory.d.ts.map +1 -0
- package/dist/explorer/unified-inventory.js +544 -0
- package/dist/explorer/unified-inventory.js.map +1 -0
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/mongo/env.d.ts +1 -0
- package/dist/mongo/env.d.ts.map +1 -1
- package/dist/mongo/env.js +14 -0
- package/dist/mongo/env.js.map +1 -1
- package/dist/mongo/resolve-db.d.ts +2 -0
- package/dist/mongo/resolve-db.d.ts.map +1 -1
- package/dist/mongo/resolve-db.js +2 -0
- package/dist/mongo/resolve-db.js.map +1 -1
- package/dist/mongo/target-config.d.ts +28 -0
- package/dist/mongo/target-config.d.ts.map +1 -0
- package/dist/mongo/target-config.js +31 -0
- package/dist/mongo/target-config.js.map +1 -0
- package/dist/mongo/types.d.ts +1 -1
- package/dist/mongo/types.d.ts.map +1 -1
- package/dist/retrieval/batch-fetch.d.ts +6 -4
- package/dist/retrieval/batch-fetch.d.ts.map +1 -1
- package/dist/retrieval/batch-fetch.js +1 -1
- package/dist/retrieval/batch-fetch.js.map +1 -1
- package/dist/retrieval/fetch-item.d.ts.map +1 -1
- package/dist/retrieval/fetch-item.js +4 -2
- package/dist/retrieval/fetch-item.js.map +1 -1
- package/dist/retrieval/fetch-list.d.ts.map +1 -1
- package/dist/retrieval/fetch-list.js +5 -1
- package/dist/retrieval/fetch-list.js.map +1 -1
- package/dist/retrieval/fetch-slices.d.ts +85 -0
- package/dist/retrieval/fetch-slices.d.ts.map +1 -0
- package/dist/retrieval/fetch-slices.js +332 -0
- package/dist/retrieval/fetch-slices.js.map +1 -0
- package/dist/retrieval/resolve-fields.js +1 -1
- package/dist/retrieval/resolve-fields.js.map +1 -1
- package/dist/retrieval/runtime-filters.d.ts +9 -0
- package/dist/retrieval/runtime-filters.d.ts.map +1 -0
- package/dist/retrieval/runtime-filters.js +139 -0
- package/dist/retrieval/runtime-filters.js.map +1 -0
- package/dist/retrieval/slice-filters.d.ts +12 -0
- package/dist/retrieval/slice-filters.d.ts.map +1 -0
- package/dist/retrieval/slice-filters.js +153 -0
- package/dist/retrieval/slice-filters.js.map +1 -0
- package/dist/tests/collection-inventory.test.js +1 -0
- package/dist/tests/collection-inventory.test.js.map +1 -1
- package/dist/tests/collection-parser.test.d.ts +2 -0
- package/dist/tests/collection-parser.test.d.ts.map +1 -0
- package/dist/tests/collection-parser.test.js +77 -0
- package/dist/tests/collection-parser.test.js.map +1 -0
- package/dist/tests/entity-graph.test.js +2 -1
- package/dist/tests/entity-graph.test.js.map +1 -1
- package/dist/tests/fetch-list.test.js +1 -0
- package/dist/tests/fetch-list.test.js.map +1 -1
- package/dist/tests/load-slice-descriptor.test.d.ts +2 -0
- package/dist/tests/load-slice-descriptor.test.d.ts.map +1 -0
- package/dist/tests/load-slice-descriptor.test.js +58 -0
- package/dist/tests/load-slice-descriptor.test.js.map +1 -0
- package/dist/tests/slice-filters.test.d.ts +2 -0
- package/dist/tests/slice-filters.test.d.ts.map +1 -0
- package/dist/tests/slice-filters.test.js +36 -0
- package/dist/tests/slice-filters.test.js.map +1 -0
- package/docs/DATA-TIER-CONTRACT.md +34 -7
- package/docs/EXPLORER-HOST-APIS.md +13 -10
- package/docs/MEMORIX-CATALOX-CONTRACTS.md +5 -3
- package/docs/MEMORIX-DATABASE-CONVENTIONS.md +24 -2
- package/package.json +4 -2
- package/dist/data/xronox-read.d.ts +0 -13
- package/dist/data/xronox-read.d.ts.map +0 -1
- package/dist/data/xronox-read.js +0 -34
- package/dist/data/xronox-read.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
# @x12i/memorix-retrieval
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
@x12i/memorix-retrieval is the read-side runtime data tier for Memorix.
|
|
4
|
+
|
|
5
|
+
It loads Catalox descriptors, inventories Mongo databases, resolves collection bindings, reads mapped and unmapped records, executes list/slice descriptors, composes item views, builds graph/inventory views, and returns Explorer/API-ready JSON.
|
|
4
6
|
|
|
5
7
|
## Positioning
|
|
6
8
|
|
|
7
9
|
| Package | Role |
|
|
8
10
|
|---------|------|
|
|
9
|
-
| `@x12i/memorix-retrieval` | **
|
|
11
|
+
| `@x12i/memorix-retrieval` | **Runtime reads/views** — Catalox descriptors + Mongo reads → lists, items, inventory, slices, graph, health |
|
|
12
|
+
| `@x12i/memorix-descriptors` | Descriptor writes, slice schema, inventory ignore policy |
|
|
13
|
+
| `@x12i/memorix-completion` | Payload writes |
|
|
10
14
|
|
|
11
|
-
**
|
|
15
|
+
Retrieval does **not** write descriptors and does **not** write Memorix payload documents.
|
|
12
16
|
|
|
13
17
|
## Quick start
|
|
14
18
|
|
|
15
|
-
Set `MONGO_URI`. Database names, entity
|
|
19
|
+
Set `MONGO_URI`. Database names, entity/event/knowledge routing, and collection resolution are handled internally.
|
|
16
20
|
|
|
17
21
|
```bash
|
|
18
22
|
MONGO_URI=mongodb://localhost:27017
|
|
@@ -44,47 +48,122 @@ const item = await fetchMemorixItemForEntity(client, {
|
|
|
44
48
|
await client.close?.();
|
|
45
49
|
```
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
## Targets: entity, event, knowledge
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
| Target | Default DB | Identity field | Env override |
|
|
54
|
+
|--------|------------|----------------|--------------|
|
|
55
|
+
| `entity` | `memorix-entities` | `entityId` | `MEMORIX_ENTITIES_DB` |
|
|
56
|
+
| `event` | `memorix-events` | `eventId` | `MEMORIX_EVENTS_DB` |
|
|
57
|
+
| `knowledge` | `memorix-knowledge` | `knowledgeId` | `MEMORIX_KNOWLEDGE_DB` |
|
|
50
58
|
|
|
51
59
|
```typescript
|
|
52
60
|
import {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
resolveMemorixDatabaseName,
|
|
62
|
+
resolveMemorixIdentityField,
|
|
63
|
+
resolveMemorixTargetFromDescriptor,
|
|
56
64
|
} from "@x12i/memorix-retrieval";
|
|
65
|
+
```
|
|
57
66
|
|
|
58
|
-
|
|
67
|
+
## Unified inventory
|
|
59
68
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
One API powers Catalox-first and DB-first Explorer inventory modes:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { buildMemorixUnifiedInventory } from "@x12i/memorix-retrieval";
|
|
73
|
+
|
|
74
|
+
const inventory = await buildMemorixUnifiedInventory(client, {
|
|
75
|
+
sourceLens: "catalox-first", // or "db-first"
|
|
76
|
+
targets: ["entity", "event", "knowledge"],
|
|
77
|
+
includeExactCounts: false,
|
|
63
78
|
});
|
|
79
|
+
```
|
|
64
80
|
|
|
65
|
-
|
|
81
|
+
Returns normalized rows, issues, per-target summaries, and suggested actions.
|
|
82
|
+
|
|
83
|
+
## Catalox-first vs DB-first
|
|
84
|
+
|
|
85
|
+
- **Catalox-first** — start from entity descriptors and declared content types; append orphan Mongo collections.
|
|
86
|
+
- **DB-first** — start from Mongo collections (parsed with last-dash rule); append missing Catalox-declared collections.
|
|
87
|
+
|
|
88
|
+
Both lenses use the same `MemorixUnifiedInventory` shape.
|
|
89
|
+
|
|
90
|
+
## Last-dash collection parsing
|
|
91
|
+
|
|
92
|
+
Collection names follow `<objectName>-<contentType>` where the **last** dash is the separator (object names may contain dashes):
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { parseMemorixCollectionName } from "@x12i/memorix-retrieval";
|
|
96
|
+
|
|
97
|
+
parseMemorixCollectionName("topology-cidr-graphs-scoped");
|
|
98
|
+
// objectName = "topology-cidr-graphs", contentType = "scoped"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Raw collection records
|
|
102
|
+
|
|
103
|
+
Read Mongo directly without a Catalox descriptor:
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { fetchMemorixRawCollectionRecords } from "@x12i/memorix-retrieval";
|
|
107
|
+
|
|
108
|
+
const raw = await fetchMemorixRawCollectionRecords(client, {
|
|
109
|
+
target: "entity",
|
|
110
|
+
collectionName: "assets-snapshots",
|
|
111
|
+
page: { limit: 50, offset: 0 },
|
|
112
|
+
});
|
|
66
113
|
```
|
|
67
114
|
|
|
68
|
-
|
|
115
|
+
Open records from inventory rows with descriptor or raw fallback:
|
|
69
116
|
|
|
70
117
|
```typescript
|
|
71
|
-
import {
|
|
118
|
+
import { fetchMemorixCollectionRecords } from "@x12i/memorix-retrieval";
|
|
72
119
|
|
|
73
|
-
const
|
|
74
|
-
|
|
120
|
+
const records = await fetchMemorixCollectionRecords(client, {
|
|
121
|
+
entityName: "assets",
|
|
122
|
+
contentType: "snapshots",
|
|
123
|
+
mode: "auto",
|
|
124
|
+
});
|
|
75
125
|
```
|
|
76
126
|
|
|
77
|
-
|
|
127
|
+
## Slice execution
|
|
128
|
+
|
|
129
|
+
List descriptors with `kind: "slice"` are executable saved views:
|
|
130
|
+
|
|
131
|
+
Slice descriptors use the canonical shape from `@x12i/memorix-descriptors` (`entityName`, `target`, `contentType`, `filter`, `ui.group`). Create slices with `createSliceDescriptor` in descriptors; execute them here with `fetchMemorixSliceRecords`.
|
|
78
132
|
|
|
79
133
|
```typescript
|
|
80
|
-
import {
|
|
134
|
+
import {
|
|
135
|
+
fetchMemorixSlices,
|
|
136
|
+
fetchMemorixSliceRecords,
|
|
137
|
+
fetchMemorixSliceItem,
|
|
138
|
+
loadMemorixSliceDescriptor,
|
|
139
|
+
} from "@x12i/memorix-retrieval";
|
|
81
140
|
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
141
|
+
const slices = await fetchMemorixSlices(client, { includeHealth: true });
|
|
142
|
+
const page = await fetchMemorixSliceRecords(client, {
|
|
143
|
+
sliceId: "critical-vulnerabilities",
|
|
144
|
+
page: { limit: 50, offset: 0 },
|
|
85
145
|
});
|
|
86
146
|
```
|
|
87
147
|
|
|
148
|
+
## Record identity
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { resolveMemorixRecordIdentity } from "@x12i/memorix-retrieval";
|
|
152
|
+
|
|
153
|
+
const { id, identityField, source } = resolveMemorixRecordIdentity("knowledge", record);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Resolution order: descriptor identity field → target default (`entityId` / `eventId` / `knowledgeId`) → `id` → Mongo `_id`.
|
|
157
|
+
|
|
158
|
+
## Health model
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
import { getMemorixRetrievalHealth } from "@x12i/memorix-retrieval";
|
|
162
|
+
|
|
163
|
+
const health = await getMemorixRetrievalHealth(client, { includeInventory: true });
|
|
164
|
+
// health.catalox, health.mongo.targets, health.descriptors, health.inventory
|
|
165
|
+
```
|
|
166
|
+
|
|
88
167
|
## Documentation
|
|
89
168
|
|
|
90
169
|
| Doc | Purpose |
|
|
@@ -93,54 +172,29 @@ const client = await createMemorixRetrievalFromEnv({
|
|
|
93
172
|
| [XRONOX-DATA-TIER-REQUIREMENTS.md](docs/XRONOX-DATA-TIER-REQUIREMENTS.md) | Xronox API/env requirements for Memorix data tier |
|
|
94
173
|
| [MEMORIX-CATALOX-CONTRACTS.md](docs/MEMORIX-CATALOX-CONTRACTS.md) | Descriptor catalogs, JSON formats, cross-component sync |
|
|
95
174
|
| [MEMORIX-DATABASE-CONVENTIONS.md](docs/MEMORIX-DATABASE-CONVENTIONS.md) | Mongo DB names, collections, env vars |
|
|
96
|
-
| [EXPLORER-HOST-APIS.md](docs/EXPLORER-HOST-APIS.md) | Graph, raw reads,
|
|
175
|
+
| [EXPLORER-HOST-APIS.md](docs/EXPLORER-HOST-APIS.md) | Graph, raw reads, inventory, slices (Explorer hosts) |
|
|
97
176
|
|
|
98
177
|
## Advanced (optional)
|
|
99
178
|
|
|
100
179
|
| Option / env | Purpose |
|
|
101
180
|
|--------------|---------|
|
|
102
|
-
| `MEMORIX_ENTITIES_DB` / `MEMORIX_EVENTS_DB` | Non-default database names
|
|
103
|
-
| `MEMORIX_ENTITIES_COLLECTION_*` / `MEMORIX_EVENTS_COLLECTION_*` | Per-type collection overrides |
|
|
181
|
+
| `MEMORIX_ENTITIES_DB` / `MEMORIX_EVENTS_DB` / `MEMORIX_KNOWLEDGE_DB` | Non-default database names |
|
|
182
|
+
| `MEMORIX_ENTITIES_COLLECTION_*` / `MEMORIX_EVENTS_COLLECTION_*` / `MEMORIX_KNOWLEDGE_COLLECTION_*` | Per-type collection overrides |
|
|
104
183
|
| `CATALOX_APP_ID` / `MEMORIX_APP_ID` | Catalox app namespace (default: `memorix`) |
|
|
105
|
-
| `memorixDb` | Code overrides for entity/event DB names |
|
|
184
|
+
| `memorixDb` | Code overrides for entity/event/knowledge DB names |
|
|
106
185
|
| `xronox` | Inject a pre-configured Xronox client instead of built-in Mongo reads |
|
|
107
|
-
| `mongo` | Reuse an existing `MongoClient` |
|
|
108
|
-
| `processEnv` | Custom env object (default: `process.env`) |
|
|
109
|
-
|
|
110
|
-
Entity descriptors declare `target: "entity" | "event"` (default `entity`):
|
|
111
|
-
|
|
112
|
-
| Descriptor | Database |
|
|
113
|
-
|------------|----------|
|
|
114
|
-
| `assets`, `variabilities-groups` | `memorix-entities` |
|
|
115
|
-
| `vulnerabilities` | `memorix-events` |
|
|
116
186
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Explorer **record counts** use the entity's **snapshots** collection when that content type is declared (e.g. `assets-snapshots`). Set `MEMORIX_ENTITIES_DB` / `MEMORIX_EVENTS_DB` when data is not in the default DB names — see [EXPLORER-HOST-APIS.md](docs/EXPLORER-HOST-APIS.md#snapshot-record-counts-explorer-records).
|
|
187
|
+
Entity descriptors declare `target: "entity" | "event" | "knowledge"` (default `entity`).
|
|
120
188
|
|
|
121
189
|
## Catalox seeds
|
|
122
190
|
|
|
123
191
|
Source of truth: `catalox-seeds/inputs/`
|
|
124
192
|
|
|
125
|
-
Seed **helpers** live in the package (`buildMemorixRetrievalSeedManifest`, `checkMemorixRetrievalSeedNeeds`, …). **Scripts** in `scripts/` call those helpers — seeding is not part of runtime retrieval.
|
|
126
|
-
|
|
127
193
|
```bash
|
|
128
|
-
npm run catalox:seed:build
|
|
194
|
+
npm run catalox:seed:build
|
|
129
195
|
npm run catalox:seed:memorix-retrieval:validate
|
|
130
|
-
npm run catalox:seed:memorix-retrieval:apply
|
|
131
|
-
npm run catalox:seed:ensure
|
|
132
|
-
npm run catalox:seed:ensure -- --dry-run
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Every seeded item shares scope from `catalox-seeds/inputs/scope.json`:
|
|
136
|
-
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"scope": {
|
|
140
|
-
"domains": ["network", "vulnerabilities"],
|
|
141
|
-
"agents": ["neo"]
|
|
142
|
-
}
|
|
143
|
-
}
|
|
196
|
+
npm run catalox:seed:memorix-retrieval:apply
|
|
197
|
+
npm run catalox:seed:ensure
|
|
144
198
|
```
|
|
145
199
|
|
|
146
200
|
## Build, test, and live smoke
|
|
@@ -154,12 +208,14 @@ Live checks (require `.env` with `MONGO_URI` and Catalox/Firestore credentials):
|
|
|
154
208
|
|
|
155
209
|
```bash
|
|
156
210
|
npm run mongo:check-collections
|
|
211
|
+
npm run mongo:inventory -- --sourceLens db-first --includeExactCounts
|
|
212
|
+
npm run mongo:inventory -- --sourceLens catalox-first
|
|
213
|
+
npm run smoke:retrieval -- --inventory --targets entity,event,knowledge
|
|
214
|
+
npm run smoke:retrieval -- --raw-records --target entity --collection assets-snapshots --limit 5
|
|
215
|
+
npm run smoke:retrieval -- --slice assets-open-slice --limit 5
|
|
157
216
|
npm run smoke:retrieval -- --list assets-main-list --limit 5
|
|
158
|
-
npm run smoke:retrieval -- --entity vulnerabilities --list critical-vulnerabilities-list --skip-graph
|
|
159
217
|
```
|
|
160
218
|
|
|
161
|
-
Smoke runs discovery, health, list/item (by id and by entity defaults), and optionally the entity graph.
|
|
162
|
-
|
|
163
219
|
## Publish
|
|
164
220
|
|
|
165
221
|
```bash
|
package/dist/client/types.d.ts
CHANGED
|
@@ -136,6 +136,7 @@ export type FetchMemorixItemRequest = {
|
|
|
136
136
|
itemDescriptorId: string;
|
|
137
137
|
entityId?: string;
|
|
138
138
|
eventId?: string;
|
|
139
|
+
knowledgeId?: string;
|
|
139
140
|
content?: {
|
|
140
141
|
include: boolean;
|
|
141
142
|
fields?: string[];
|
|
@@ -148,6 +149,7 @@ export type FetchMemorixItemResponse = {
|
|
|
148
149
|
entity: string;
|
|
149
150
|
entityId?: string;
|
|
150
151
|
eventId?: string;
|
|
152
|
+
knowledgeId?: string;
|
|
151
153
|
sections: Array<{
|
|
152
154
|
id: string;
|
|
153
155
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ParsedMemorixCollectionName = {
|
|
2
|
+
ok: true;
|
|
3
|
+
collectionName: string;
|
|
4
|
+
objectName: string;
|
|
5
|
+
contentType: string;
|
|
6
|
+
separatorIndex: number;
|
|
7
|
+
} | {
|
|
8
|
+
ok: false;
|
|
9
|
+
collectionName: string;
|
|
10
|
+
reason: "missing-dash" | "empty-object-name" | "empty-content-type";
|
|
11
|
+
};
|
|
12
|
+
/** Parse `<objectName>-<contentType>` using the last dash as the separator. */
|
|
13
|
+
export declare function parseMemorixCollectionName(collectionName: string): ParsedMemorixCollectionName;
|
|
14
|
+
//# sourceMappingURL=collection-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-parser.d.ts","sourceRoot":"","sources":["../../src/data/collection-parser.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,2BAA2B,GACnC;IACE,EAAE,EAAE,IAAI,CAAC;IACT,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;CACrE,CAAC;AAYN,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,GACrB,2BAA2B,CAkB7B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { parseMemorixCollectionName as parseFromDescriptors } from "@x12i/memorix-descriptors/collections/parse";
|
|
2
|
+
function unparseableReason(collectionName) {
|
|
3
|
+
const separatorIndex = collectionName.lastIndexOf("-");
|
|
4
|
+
if (separatorIndex < 0)
|
|
5
|
+
return "missing-dash";
|
|
6
|
+
if (separatorIndex === 0)
|
|
7
|
+
return "empty-object-name";
|
|
8
|
+
if (separatorIndex >= collectionName.length - 1)
|
|
9
|
+
return "empty-content-type";
|
|
10
|
+
return "empty-object-name";
|
|
11
|
+
}
|
|
12
|
+
/** Parse `<objectName>-<contentType>` using the last dash as the separator. */
|
|
13
|
+
export function parseMemorixCollectionName(collectionName) {
|
|
14
|
+
const parsed = parseFromDescriptors(collectionName);
|
|
15
|
+
if (parsed.parseStatus === "unparseable") {
|
|
16
|
+
return {
|
|
17
|
+
ok: false,
|
|
18
|
+
collectionName,
|
|
19
|
+
reason: unparseableReason(collectionName),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const separatorIndex = collectionName.lastIndexOf("-");
|
|
23
|
+
return {
|
|
24
|
+
ok: true,
|
|
25
|
+
collectionName,
|
|
26
|
+
objectName: parsed.objectName,
|
|
27
|
+
contentType: parsed.contentType,
|
|
28
|
+
separatorIndex,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=collection-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-parser.js","sourceRoot":"","sources":["../../src/data/collection-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,IAAI,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAgBjH,SAAS,iBAAiB,CACxB,cAAsB;IAEtB,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,cAAc,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC9C,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACrD,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC7E,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CACxC,cAAsB;IAEtB,MAAM,MAAM,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,cAAc;YACd,MAAM,EAAE,iBAAiB,CAAC,cAAc,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,cAAc;QACd,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc;KACf,CAAC;AACJ,CAAC"}
|
package/dist/data/identity.d.ts
CHANGED
|
@@ -2,18 +2,28 @@ import { type MemorixRetrievalIssue } from "../errors/issues.js";
|
|
|
2
2
|
export type MemorixIdentity = {
|
|
3
3
|
entityId?: string;
|
|
4
4
|
eventId?: string;
|
|
5
|
+
knowledgeId?: string;
|
|
5
6
|
};
|
|
6
7
|
export type IdentityValidationResult = {
|
|
7
8
|
ok: true;
|
|
8
9
|
identity: {
|
|
9
10
|
entityId: string;
|
|
10
11
|
eventId?: undefined;
|
|
12
|
+
knowledgeId?: undefined;
|
|
11
13
|
};
|
|
12
14
|
} | {
|
|
13
15
|
ok: true;
|
|
14
16
|
identity: {
|
|
15
17
|
eventId: string;
|
|
16
18
|
entityId?: undefined;
|
|
19
|
+
knowledgeId?: undefined;
|
|
20
|
+
};
|
|
21
|
+
} | {
|
|
22
|
+
ok: true;
|
|
23
|
+
identity: {
|
|
24
|
+
knowledgeId: string;
|
|
25
|
+
entityId?: undefined;
|
|
26
|
+
eventId?: undefined;
|
|
17
27
|
};
|
|
18
28
|
} | {
|
|
19
29
|
ok: false;
|
|
@@ -22,15 +32,16 @@ export type IdentityValidationResult = {
|
|
|
22
32
|
export declare function validateMemorixIdentity(record: Record<string, unknown>, context?: {
|
|
23
33
|
entityId?: string;
|
|
24
34
|
eventId?: string;
|
|
35
|
+
knowledgeId?: string;
|
|
25
36
|
path?: string;
|
|
26
37
|
}): IdentityValidationResult;
|
|
27
38
|
export declare function getIdentityFromRecord(record: Record<string, unknown>): {
|
|
28
|
-
field: "entityId" | "eventId";
|
|
39
|
+
field: "entityId" | "eventId" | "knowledgeId";
|
|
29
40
|
value: string;
|
|
30
41
|
} | null;
|
|
31
|
-
export declare function buildIdFilter(field: "entityId" | "eventId", values: string[]): Record<string, unknown>;
|
|
32
|
-
export declare function assertRequestIdentity(entityId?: string, eventId?: string): {
|
|
33
|
-
field: "entityId" | "eventId";
|
|
42
|
+
export declare function buildIdFilter(field: "entityId" | "eventId" | "knowledgeId", values: string[]): Record<string, unknown>;
|
|
43
|
+
export declare function assertRequestIdentity(entityId?: string, eventId?: string, knowledgeId?: string): {
|
|
44
|
+
field: "entityId" | "eventId" | "knowledgeId";
|
|
34
45
|
value: string;
|
|
35
46
|
};
|
|
36
47
|
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GAC1F;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GAC1F;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GAC1F;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEhD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACrF,wBAAwB,CA2C1B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAazE;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,EAC7C,MAAM,EAAE,MAAM,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAelE"}
|
package/dist/data/identity.js
CHANGED
|
@@ -3,26 +3,29 @@ import { createIssue } from "../errors/issues.js";
|
|
|
3
3
|
export function validateMemorixIdentity(record, context) {
|
|
4
4
|
const entityId = typeof record.entityId === "string" ? record.entityId : undefined;
|
|
5
5
|
const eventId = typeof record.eventId === "string" ? record.eventId : undefined;
|
|
6
|
+
const knowledgeId = typeof record.knowledgeId === "string" ? record.knowledgeId : undefined;
|
|
6
7
|
const hasEntity = entityId != null && entityId !== "";
|
|
7
8
|
const hasEvent = eventId != null && eventId !== "";
|
|
8
|
-
|
|
9
|
+
const hasKnowledge = knowledgeId != null && knowledgeId !== "";
|
|
10
|
+
const count = [hasEntity, hasEvent, hasKnowledge].filter(Boolean).length;
|
|
11
|
+
if (count > 1) {
|
|
9
12
|
return {
|
|
10
13
|
ok: false,
|
|
11
14
|
issue: createIssue({
|
|
12
15
|
code: "INVALID_IDENTITY",
|
|
13
|
-
message: "Record has
|
|
16
|
+
message: "Record has multiple identity fields",
|
|
14
17
|
path: context?.path,
|
|
15
18
|
entityId,
|
|
16
19
|
eventId,
|
|
17
20
|
}),
|
|
18
21
|
};
|
|
19
22
|
}
|
|
20
|
-
if (
|
|
23
|
+
if (count === 0) {
|
|
21
24
|
return {
|
|
22
25
|
ok: false,
|
|
23
26
|
issue: createIssue({
|
|
24
27
|
code: "INVALID_IDENTITY",
|
|
25
|
-
message: "Record has
|
|
28
|
+
message: "Record has no entityId, eventId, or knowledgeId",
|
|
26
29
|
path: context?.path,
|
|
27
30
|
entityId: context?.entityId,
|
|
28
31
|
eventId: context?.eventId,
|
|
@@ -32,7 +35,10 @@ export function validateMemorixIdentity(record, context) {
|
|
|
32
35
|
if (hasEntity) {
|
|
33
36
|
return { ok: true, identity: { entityId: entityId } };
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
if (hasEvent) {
|
|
39
|
+
return { ok: true, identity: { eventId: eventId } };
|
|
40
|
+
}
|
|
41
|
+
return { ok: true, identity: { knowledgeId: knowledgeId } };
|
|
36
42
|
}
|
|
37
43
|
export function getIdentityFromRecord(record) {
|
|
38
44
|
const result = validateMemorixIdentity(record);
|
|
@@ -44,6 +50,9 @@ export function getIdentityFromRecord(record) {
|
|
|
44
50
|
if ("eventId" in result.identity && result.identity.eventId) {
|
|
45
51
|
return { field: "eventId", value: result.identity.eventId };
|
|
46
52
|
}
|
|
53
|
+
if ("knowledgeId" in result.identity && result.identity.knowledgeId) {
|
|
54
|
+
return { field: "knowledgeId", value: result.identity.knowledgeId };
|
|
55
|
+
}
|
|
47
56
|
return null;
|
|
48
57
|
}
|
|
49
58
|
export function buildIdFilter(field, values) {
|
|
@@ -52,17 +61,18 @@ export function buildIdFilter(field, values) {
|
|
|
52
61
|
}
|
|
53
62
|
return { [field]: { $in: values } };
|
|
54
63
|
}
|
|
55
|
-
export function assertRequestIdentity(entityId, eventId) {
|
|
64
|
+
export function assertRequestIdentity(entityId, eventId, knowledgeId) {
|
|
56
65
|
const hasEntity = entityId != null && entityId !== "";
|
|
57
66
|
const hasEvent = eventId != null && eventId !== "";
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
throwRetrievalError("INVALID_REQUEST", "Request must provide entityId or eventId");
|
|
67
|
+
const hasKnowledge = knowledgeId != null && knowledgeId !== "";
|
|
68
|
+
const count = [hasEntity, hasEvent, hasKnowledge].filter(Boolean).length;
|
|
69
|
+
if (count !== 1) {
|
|
70
|
+
throwRetrievalError("INVALID_REQUEST", "Request must provide exactly one of entityId, eventId, or knowledgeId");
|
|
63
71
|
}
|
|
64
72
|
if (hasEntity)
|
|
65
73
|
return { field: "entityId", value: entityId };
|
|
66
|
-
|
|
74
|
+
if (hasEvent)
|
|
75
|
+
return { field: "eventId", value: eventId };
|
|
76
|
+
return { field: "knowledgeId", value: knowledgeId };
|
|
67
77
|
}
|
|
68
78
|
//# sourceMappingURL=identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAA8B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAA8B,MAAM,qBAAqB,CAAC;AAc9E,MAAM,UAAU,uBAAuB,CACrC,MAA+B,EAC/B,OAAsF;IAEtF,MAAM,QAAQ,GACZ,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,WAAW,GACf,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEzE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,WAAW,CAAC;gBACjB,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,qCAAqC;gBAC9C,IAAI,EAAE,OAAO,EAAE,IAAI;gBACnB,QAAQ;gBACR,OAAO;aACR,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,WAAW,CAAC;gBACjB,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,iDAAiD;gBAC1D,IAAI,EAAE,OAAO,EAAE,IAAI;gBACnB,QAAQ,EAAE,OAAO,EAAE,QAAQ;gBAC3B,OAAO,EAAE,OAAO,EAAE,OAAO;aAC1B,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAS,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAQ,EAAE,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAY,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA+B;IAE/B,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACpE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAA6C,EAC7C,MAAgB;IAEhB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAiB,EACjB,OAAgB,EAChB,WAAoB;IAEpB,MAAM,SAAS,GAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEzE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,mBAAmB,CACjB,iBAAiB,EACjB,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAS,EAAE,CAAC;IAC9D,IAAI,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAQ,EAAE,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAY,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorix-read.d.ts","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAIlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memorix-read.d.ts","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAIlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAItE,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAGR;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,gBAAgB,EAChB,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,CACrD,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAoDpC;AAED,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,oBAAc,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { resolveMemorixDbNameForEntity } from "../mongo/resolve-db.js";
|
|
|
5
5
|
export const DEFAULT_MEMORIX_XRONOX_ROLES = {
|
|
6
6
|
entity: "memorix_entities",
|
|
7
7
|
event: "memorix_events",
|
|
8
|
+
knowledge: "memorix_knowledge",
|
|
8
9
|
};
|
|
9
10
|
export function resolveMemorixXronoxRole(entity, client) {
|
|
10
11
|
const target = entity.target ?? "entity";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memorix-read.js","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAGvE,gFAAgF;AAChF,MAAM,CAAC,MAAM,4BAA4B,GAAkC;IACzE,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"memorix-read.js","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MemorixTarget } from "../mongo/types.js";
|
|
2
|
+
export type MemorixRecordIdentity = {
|
|
3
|
+
id: string;
|
|
4
|
+
identityField: string;
|
|
5
|
+
source: "descriptor" | "target-default" | "fallback" | "mongo-id";
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveMemorixRecordIdentity(target: MemorixTarget, record: Record<string, unknown>, options?: {
|
|
8
|
+
descriptorIdentityField?: string;
|
|
9
|
+
fallbackFields?: string[];
|
|
10
|
+
}): MemorixRecordIdentity;
|
|
11
|
+
//# sourceMappingURL=record-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-identity.d.ts","sourceRoot":"","sources":["../../src/data/record-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG,gBAAgB,GAAG,UAAU,GAAG,UAAU,CAAC;CACnE,CAAC;AAwBF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;IACR,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GACA,qBAAqB,CAgCvB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ObjectId } from "mongodb";
|
|
2
|
+
import { resolveMemorixIdentityField } from "../mongo/target-config.js";
|
|
3
|
+
const DEFAULT_FALLBACK_FIELDS = ["id"];
|
|
4
|
+
function stringifyId(value) {
|
|
5
|
+
if (value == null)
|
|
6
|
+
return null;
|
|
7
|
+
if (typeof value === "string") {
|
|
8
|
+
const trimmed = value.trim();
|
|
9
|
+
return trimmed ? trimmed : null;
|
|
10
|
+
}
|
|
11
|
+
if (value instanceof ObjectId)
|
|
12
|
+
return value.toHexString();
|
|
13
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
14
|
+
return String(value);
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function readField(record, field) {
|
|
19
|
+
return stringifyId(record[field]);
|
|
20
|
+
}
|
|
21
|
+
export function resolveMemorixRecordIdentity(target, record, options) {
|
|
22
|
+
if (options?.descriptorIdentityField) {
|
|
23
|
+
const id = readField(record, options.descriptorIdentityField);
|
|
24
|
+
if (id) {
|
|
25
|
+
return {
|
|
26
|
+
id,
|
|
27
|
+
identityField: options.descriptorIdentityField,
|
|
28
|
+
source: "descriptor",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const targetField = resolveMemorixIdentityField(target);
|
|
33
|
+
const targetId = readField(record, targetField);
|
|
34
|
+
if (targetId) {
|
|
35
|
+
return { id: targetId, identityField: targetField, source: "target-default" };
|
|
36
|
+
}
|
|
37
|
+
const fallbacks = options?.fallbackFields ?? [...DEFAULT_FALLBACK_FIELDS];
|
|
38
|
+
for (const field of fallbacks) {
|
|
39
|
+
const id = readField(record, field);
|
|
40
|
+
if (id) {
|
|
41
|
+
return { id, identityField: field, source: "fallback" };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const mongoId = readField(record, "_id");
|
|
45
|
+
if (mongoId) {
|
|
46
|
+
return { id: mongoId, identityField: "_id", source: "mongo-id" };
|
|
47
|
+
}
|
|
48
|
+
return { id: "", identityField: targetField, source: "target-default" };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=record-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-identity.js","sourceRoot":"","sources":["../../src/data/record-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAQxE,MAAM,uBAAuB,GAAG,CAAC,IAAI,CAAU,CAAC;AAEhD,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAChB,MAA+B,EAC/B,KAAa;IAEb,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAqB,EACrB,MAA+B,EAC/B,OAGC;IAED,IAAI,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC9D,IAAI,EAAE,EAAE,CAAC;YACP,OAAO;gBACL,EAAE;gBACF,aAAa,EAAE,OAAO,CAAC,uBAAuB;gBAC9C,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAChF,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC;IAC1E,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { MemorixTarget } from "../mongo/types.js";
|
|
3
|
+
export type TargetReadParams = {
|
|
4
|
+
target: MemorixTarget;
|
|
5
|
+
collection: string;
|
|
6
|
+
query?: Record<string, unknown>;
|
|
7
|
+
project?: string[];
|
|
8
|
+
sort?: Record<string, 1 | -1> | string | string[];
|
|
9
|
+
limit?: number;
|
|
10
|
+
skip?: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function memorixReadByTarget(client: MemorixRetrievalClient, params: TargetReadParams): Promise<Record<string, unknown>[]>;
|
|
13
|
+
export declare function memorixCountByTarget(client: MemorixRetrievalClient, params: {
|
|
14
|
+
target: MemorixTarget;
|
|
15
|
+
collection: string;
|
|
16
|
+
query?: Record<string, unknown>;
|
|
17
|
+
estimated?: boolean;
|
|
18
|
+
}): Promise<number>;
|
|
19
|
+
//# sourceMappingURL=target-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-read.d.ts","sourceRoot":"","sources":["../../src/data/target-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAKjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAyDpC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE;IACN,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|