@x12i/memorix-retrieval 1.1.0 → 1.4.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 +64 -24
- package/catalox-seeds/inputs/entity-descriptors/assets.json +2 -0
- package/catalox-seeds/inputs/entity-descriptors/variabilities-groups.json +2 -0
- package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +2 -0
- package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +6 -0
- package/dist/client/catalox-adapter.d.ts +9 -0
- package/dist/client/catalox-adapter.d.ts.map +1 -0
- package/dist/client/catalox-adapter.js +42 -0
- package/dist/client/catalox-adapter.js.map +1 -0
- package/dist/client/catalox-like.d.ts +16 -0
- package/dist/client/catalox-like.d.ts.map +1 -1
- package/dist/client/create-client.js +2 -2
- package/dist/client/create-client.js.map +1 -1
- package/dist/client/create-stack-from-env.d.ts +21 -0
- package/dist/client/create-stack-from-env.d.ts.map +1 -0
- package/dist/client/create-stack-from-env.js +32 -0
- package/dist/client/create-stack-from-env.js.map +1 -0
- package/dist/client/types.d.ts +5 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/data/record-id.d.ts +6 -0
- package/dist/data/record-id.d.ts.map +1 -0
- package/dist/data/record-id.js +49 -0
- package/dist/data/record-id.js.map +1 -0
- package/dist/descriptors/content-type-labels.d.ts +7 -0
- package/dist/descriptors/content-type-labels.d.ts.map +1 -0
- package/dist/descriptors/content-type-labels.js +26 -0
- package/dist/descriptors/content-type-labels.js.map +1 -0
- package/dist/descriptors/descriptor-types.d.ts +4 -0
- package/dist/descriptors/descriptor-types.d.ts.map +1 -1
- package/dist/descriptors/discover-entities.d.ts +28 -0
- package/dist/descriptors/discover-entities.d.ts.map +1 -0
- package/dist/descriptors/discover-entities.js +94 -0
- package/dist/descriptors/discover-entities.js.map +1 -0
- package/dist/descriptors/resolve-app-id.d.ts +4 -0
- package/dist/descriptors/resolve-app-id.d.ts.map +1 -0
- package/dist/descriptors/resolve-app-id.js +8 -0
- package/dist/descriptors/resolve-app-id.js.map +1 -0
- package/dist/descriptors/resolve-default-descriptors.d.ts +11 -0
- package/dist/descriptors/resolve-default-descriptors.d.ts.map +1 -0
- package/dist/descriptors/resolve-default-descriptors.js +22 -0
- package/dist/descriptors/resolve-default-descriptors.js.map +1 -0
- package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
- package/dist/descriptors/validate-descriptor.js +11 -0
- package/dist/descriptors/validate-descriptor.js.map +1 -1
- package/dist/explorer/entity-graph.d.ts +61 -0
- package/dist/explorer/entity-graph.d.ts.map +1 -0
- package/dist/explorer/entity-graph.js +155 -0
- package/dist/explorer/entity-graph.js.map +1 -0
- package/dist/explorer/health.d.ts +14 -0
- package/dist/explorer/health.d.ts.map +1 -0
- package/dist/explorer/health.js +70 -0
- package/dist/explorer/health.js.map +1 -0
- package/dist/explorer/raw-reads.d.ts +25 -0
- package/dist/explorer/raw-reads.d.ts.map +1 -0
- package/dist/explorer/raw-reads.js +78 -0
- package/dist/explorer/raw-reads.js.map +1 -0
- package/dist/explorer/scoped-workspace.d.ts +24 -0
- package/dist/explorer/scoped-workspace.d.ts.map +1 -0
- package/dist/explorer/scoped-workspace.js +217 -0
- package/dist/explorer/scoped-workspace.js.map +1 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/mongo/read-collection.d.ts +1 -0
- package/dist/mongo/read-collection.d.ts.map +1 -1
- package/dist/mongo/read-collection.js +6 -0
- package/dist/mongo/read-collection.js.map +1 -1
- package/dist/retrieval/fetch-for-entity.d.ts +18 -0
- package/dist/retrieval/fetch-for-entity.d.ts.map +1 -0
- package/dist/retrieval/fetch-for-entity.js +21 -0
- package/dist/retrieval/fetch-for-entity.js.map +1 -0
- package/dist/retrieval/fetch-list.d.ts.map +1 -1
- package/dist/retrieval/fetch-list.js +16 -1
- package/dist/retrieval/fetch-list.js.map +1 -1
- package/dist/retrieval/resolve-filters.d.ts +2 -0
- package/dist/retrieval/resolve-filters.d.ts.map +1 -1
- package/dist/retrieval/resolve-filters.js +24 -3
- package/dist/retrieval/resolve-filters.js.map +1 -1
- package/dist/retrieval/resolve-list-search.d.ts +6 -0
- package/dist/retrieval/resolve-list-search.d.ts.map +1 -0
- package/dist/retrieval/resolve-list-search.js +25 -0
- package/dist/retrieval/resolve-list-search.js.map +1 -0
- package/dist/seeds/build-manifest.d.ts +8 -0
- package/dist/seeds/build-manifest.d.ts.map +1 -0
- package/dist/seeds/build-manifest.js +83 -0
- package/dist/seeds/build-manifest.js.map +1 -0
- package/dist/seeds/check-needs-seed.d.ts +10 -0
- package/dist/seeds/check-needs-seed.d.ts.map +1 -0
- package/dist/seeds/check-needs-seed.js +66 -0
- package/dist/seeds/check-needs-seed.js.map +1 -0
- package/dist/seeds/default-seed-spec.d.ts +12 -0
- package/dist/seeds/default-seed-spec.d.ts.map +1 -0
- package/dist/seeds/default-seed-spec.js +89 -0
- package/dist/seeds/default-seed-spec.js.map +1 -0
- package/dist/seeds/merge-for-apply.d.ts +28 -0
- package/dist/seeds/merge-for-apply.d.ts.map +1 -0
- package/dist/seeds/merge-for-apply.js +31 -0
- package/dist/seeds/merge-for-apply.js.map +1 -0
- package/dist/seeds/paths.d.ts +10 -0
- package/dist/seeds/paths.d.ts.map +1 -0
- package/dist/seeds/paths.js +40 -0
- package/dist/seeds/paths.js.map +1 -0
- package/dist/seeds/seed-types.d.ts +57 -0
- package/dist/seeds/seed-types.d.ts.map +1 -0
- package/dist/seeds/seed-types.js +2 -0
- package/dist/seeds/seed-types.js.map +1 -0
- package/dist/tests/descriptor-validation.test.js +15 -0
- package/dist/tests/descriptor-validation.test.js.map +1 -1
- package/dist/tests/fixtures.d.ts.map +1 -1
- package/dist/tests/fixtures.js +2 -0
- package/dist/tests/fixtures.js.map +1 -1
- package/dist/tests/relations.test.js +3 -0
- package/dist/tests/relations.test.js.map +1 -1
- package/dist/tests/resolve-app-id.test.d.ts +2 -0
- package/dist/tests/resolve-app-id.test.d.ts.map +1 -0
- package/dist/tests/resolve-app-id.test.js +19 -0
- package/dist/tests/resolve-app-id.test.js.map +1 -0
- package/dist/tests/resolve-filters.test.d.ts +2 -0
- package/dist/tests/resolve-filters.test.d.ts.map +1 -0
- package/dist/tests/resolve-filters.test.js +47 -0
- package/dist/tests/resolve-filters.test.js.map +1 -0
- package/dist/tests/seed-check.test.d.ts +2 -0
- package/dist/tests/seed-check.test.d.ts.map +1 -0
- package/dist/tests/seed-check.test.js +47 -0
- package/dist/tests/seed-check.test.js.map +1 -0
- package/dist/tests/seed-manifest.test.d.ts +2 -0
- package/dist/tests/seed-manifest.test.d.ts.map +1 -0
- package/dist/tests/seed-manifest.test.js +80 -0
- package/dist/tests/seed-manifest.test.js.map +1 -0
- package/docs/DATA-TIER-CONTRACT.md +138 -0
- package/docs/EXPLORER-HOST-APIS.md +50 -0
- package/docs/MEMORIX-CATALOX-CONTRACTS.md +540 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -6,19 +6,48 @@ Descriptor-driven retrieval/composition layer for Memorix entity and event data.
|
|
|
6
6
|
|
|
7
7
|
| Package | Role |
|
|
8
8
|
|---------|------|
|
|
9
|
-
| `@x12i/memorix` |
|
|
10
|
-
| `@x12i/memorix-retrieval` | Descriptor-driven lists, items, relations, and content-object reads |
|
|
9
|
+
| `@x12i/memorix-retrieval` | **The** data tier: Catalox descriptors + Mongo reads → lists, items, graph, health |
|
|
11
10
|
|
|
12
11
|
**Catalox** defines what to fetch. This package reads Mongo and composes API-ready JSON. **@x12i/helpers** fetches external content objects when needed.
|
|
13
12
|
|
|
14
13
|
## Quick start
|
|
15
14
|
|
|
16
|
-
Set `MONGO_URI
|
|
15
|
+
Set `MONGO_URI`. Database names, entity vs event routing, and collection resolution are handled internally.
|
|
17
16
|
|
|
18
17
|
```bash
|
|
19
18
|
MONGO_URI=mongodb://localhost:27017
|
|
20
19
|
```
|
|
21
20
|
|
|
21
|
+
### Host apps (Catalox + Mongo)
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import {
|
|
25
|
+
createMemorixRetrievalStackFromEnv,
|
|
26
|
+
fetchMemorixListForEntity,
|
|
27
|
+
fetchMemorixItemForEntity,
|
|
28
|
+
} from "@x12i/memorix-retrieval";
|
|
29
|
+
|
|
30
|
+
const { client, appId } = await createMemorixRetrievalStackFromEnv({
|
|
31
|
+
cataloxContext: { superAdmin: true, actor: { type: "service", id: "my-api" } },
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const list = await fetchMemorixListForEntity(client, {
|
|
35
|
+
entityName: "assets",
|
|
36
|
+
page: { limit: 50, offset: 0 },
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const item = await fetchMemorixItemForEntity(client, {
|
|
40
|
+
entityName: "assets",
|
|
41
|
+
entityId: "10.150.68.31",
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
await client.close?.();
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
App id resolves: option → `CATALOX_APP_ID` → `MEMORIX_APP_ID` → `memorix`.
|
|
48
|
+
|
|
49
|
+
### Bring your own Catalox client
|
|
50
|
+
|
|
22
51
|
```typescript
|
|
23
52
|
import {
|
|
24
53
|
createMemorixRetrievalFromEnv,
|
|
@@ -33,18 +62,13 @@ const list = await fetchMemorixList(client, {
|
|
|
33
62
|
page: { limit: 50, offset: 0 },
|
|
34
63
|
});
|
|
35
64
|
|
|
36
|
-
const item = await fetchMemorixItem(client, {
|
|
37
|
-
itemDescriptorId: "asset-detail-item",
|
|
38
|
-
entityId: "10.150.68.31",
|
|
39
|
-
});
|
|
40
|
-
|
|
41
65
|
await client.close?.();
|
|
42
66
|
```
|
|
43
67
|
|
|
44
|
-
Lazy connect (
|
|
68
|
+
Lazy connect (no upfront `await`):
|
|
45
69
|
|
|
46
70
|
```typescript
|
|
47
|
-
import { createMemorixRetrieval
|
|
71
|
+
import { createMemorixRetrieval } from "@x12i/memorix-retrieval";
|
|
48
72
|
|
|
49
73
|
const client = createMemorixRetrieval({ catalox });
|
|
50
74
|
// connects to Mongo on first read using MONGO_URI
|
|
@@ -61,14 +85,22 @@ const client = await createMemorixRetrievalFromEnv({
|
|
|
61
85
|
});
|
|
62
86
|
```
|
|
63
87
|
|
|
64
|
-
##
|
|
88
|
+
## Documentation
|
|
65
89
|
|
|
66
|
-
|
|
90
|
+
| Doc | Purpose |
|
|
91
|
+
|-----|---------|
|
|
92
|
+
| [DATA-TIER-CONTRACT.md](docs/DATA-TIER-CONTRACT.md) | Public API surface (what hosts may call) |
|
|
93
|
+
| [MEMORIX-CATALOX-CONTRACTS.md](docs/MEMORIX-CATALOX-CONTRACTS.md) | Descriptor catalogs, JSON formats, cross-component sync |
|
|
94
|
+
| [MEMORIX-DATABASE-CONVENTIONS.md](docs/MEMORIX-DATABASE-CONVENTIONS.md) | Mongo DB names, collections, env vars |
|
|
95
|
+
| [EXPLORER-HOST-APIS.md](docs/EXPLORER-HOST-APIS.md) | Graph, raw reads, scoped workspace (Explorer hosts) |
|
|
67
96
|
|
|
68
|
-
|
|
69
|
-
|
|
97
|
+
## Advanced (optional)
|
|
98
|
+
|
|
99
|
+
| Option / env | Purpose |
|
|
100
|
+
|--------------|---------|
|
|
70
101
|
| `MEMORIX_ENTITIES_DB` / `MEMORIX_EVENTS_DB` | Non-default database names |
|
|
71
102
|
| `MEMORIX_ENTITIES_COLLECTION_*` / `MEMORIX_EVENTS_COLLECTION_*` | Per-type collection overrides |
|
|
103
|
+
| `CATALOX_APP_ID` / `MEMORIX_APP_ID` | Catalox app namespace (default: `memorix`) |
|
|
72
104
|
| `memorixDb` | Code overrides for entity/event DB names |
|
|
73
105
|
| `xronox` | Inject a pre-configured Xronox client instead of built-in Mongo reads |
|
|
74
106
|
| `mongo` | Reuse an existing `MongoClient` |
|
|
@@ -81,15 +113,20 @@ Entity descriptors declare `target: "entity" | "event"` (default `entity`):
|
|
|
81
113
|
| `assets`, `variabilities-groups` | `memorix-entities` |
|
|
82
114
|
| `vulnerabilities` | `memorix-events` |
|
|
83
115
|
|
|
84
|
-
|
|
116
|
+
Each entity descriptor must define `defaultListDescriptorId` and `defaultItemDescriptorId` (Option A wiring).
|
|
85
117
|
|
|
86
118
|
## Catalox seeds
|
|
87
119
|
|
|
88
120
|
Source of truth: `catalox-seeds/inputs/`
|
|
89
121
|
|
|
122
|
+
Seed **helpers** live in the package (`buildMemorixRetrievalSeedManifest`, `checkMemorixRetrievalSeedNeeds`, …). **Scripts** in `scripts/` call those helpers — seeding is not part of runtime retrieval.
|
|
123
|
+
|
|
90
124
|
```bash
|
|
125
|
+
npm run catalox:seed:build # build manifest from inputs
|
|
91
126
|
npm run catalox:seed:memorix-retrieval:validate
|
|
92
|
-
npm run catalox:seed:memorix-retrieval:apply
|
|
127
|
+
npm run catalox:seed:memorix-retrieval:apply # always apply
|
|
128
|
+
npm run catalox:seed:ensure # apply only if catalog items missing
|
|
129
|
+
npm run catalox:seed:ensure -- --dry-run
|
|
93
130
|
```
|
|
94
131
|
|
|
95
132
|
Every seeded item shares scope from `catalox-seeds/inputs/scope.json`:
|
|
@@ -103,22 +140,25 @@ Every seeded item shares scope from `catalox-seeds/inputs/scope.json`:
|
|
|
103
140
|
}
|
|
104
141
|
```
|
|
105
142
|
|
|
143
|
+
## Build, test, and live smoke
|
|
144
|
+
|
|
106
145
|
```bash
|
|
107
|
-
npm run
|
|
108
|
-
npm
|
|
146
|
+
npm run build
|
|
147
|
+
npm test
|
|
109
148
|
```
|
|
110
149
|
|
|
111
|
-
|
|
150
|
+
Live checks (require `.env` with `MONGO_URI` and Catalox/Firestore credentials):
|
|
112
151
|
|
|
113
152
|
```bash
|
|
114
|
-
npm run
|
|
115
|
-
npm
|
|
153
|
+
npm run mongo:check-collections
|
|
154
|
+
npm run smoke:retrieval -- --list assets-main-list --limit 5
|
|
155
|
+
npm run smoke:retrieval -- --entity vulnerabilities --list critical-vulnerabilities-list --skip-graph
|
|
116
156
|
```
|
|
117
157
|
|
|
118
|
-
|
|
158
|
+
Smoke runs discovery, health, list/item (by id and by entity defaults), and optionally the entity graph.
|
|
119
159
|
|
|
120
|
-
|
|
160
|
+
## Publish
|
|
121
161
|
|
|
122
162
|
```bash
|
|
123
|
-
|
|
163
|
+
npm run build && npm test && npm publish
|
|
124
164
|
```
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "variabilities-groups",
|
|
3
3
|
"entityName": "variabilities-groups",
|
|
4
|
+
"defaultListDescriptorId": "variabilities-groups-main-list",
|
|
5
|
+
"defaultItemDescriptorId": "variabilities-group-detail-item",
|
|
4
6
|
"target": "entity",
|
|
5
7
|
"collectionPrefix": "variabilities-groups",
|
|
6
8
|
"identity": {
|
|
@@ -249,6 +249,8 @@
|
|
|
249
249
|
"data": {
|
|
250
250
|
"id": "assets",
|
|
251
251
|
"entityName": "assets",
|
|
252
|
+
"defaultListDescriptorId": "assets-main-list",
|
|
253
|
+
"defaultItemDescriptorId": "asset-detail-item",
|
|
252
254
|
"target": "entity",
|
|
253
255
|
"collectionPrefix": "assets",
|
|
254
256
|
"identity": {
|
|
@@ -557,6 +559,8 @@
|
|
|
557
559
|
"data": {
|
|
558
560
|
"id": "variabilities-groups",
|
|
559
561
|
"entityName": "variabilities-groups",
|
|
562
|
+
"defaultListDescriptorId": "variabilities-groups-main-list",
|
|
563
|
+
"defaultItemDescriptorId": "variabilities-group-detail-item",
|
|
560
564
|
"target": "entity",
|
|
561
565
|
"collectionPrefix": "variabilities-groups",
|
|
562
566
|
"identity": {
|
|
@@ -881,6 +885,8 @@
|
|
|
881
885
|
"data": {
|
|
882
886
|
"id": "vulnerabilities",
|
|
883
887
|
"entityName": "vulnerabilities",
|
|
888
|
+
"defaultListDescriptorId": "vulnerabilities-main-list",
|
|
889
|
+
"defaultItemDescriptorId": "vulnerability-detail-item",
|
|
884
890
|
"target": "event",
|
|
885
891
|
"collectionPrefix": "vulnerabilities",
|
|
886
892
|
"identity": {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CataloxBound } from "@x12i/catalox";
|
|
2
|
+
import type { CataloxLike } from "./catalox-like.js";
|
|
3
|
+
/**
|
|
4
|
+
* Wrap a {@link CataloxBound} (context already applied) as {@link CataloxLike}
|
|
5
|
+
* for {@link createMemorixRetrieval}. Ignores the per-call `context.appId` —
|
|
6
|
+
* use the bound's fixed app context when creating the bound.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createCataloxAdapterFromBound(bound: CataloxBound): CataloxLike;
|
|
9
|
+
//# sourceMappingURL=catalox-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalox-adapter.d.ts","sourceRoot":"","sources":["../../src/client/catalox-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAc3B;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAmC9E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function mapGetItemResult(result) {
|
|
2
|
+
if (result.outcome === "found") {
|
|
3
|
+
return { outcome: "found", item: { data: result.item.data ?? {} } };
|
|
4
|
+
}
|
|
5
|
+
if (result.outcome === "not_found") {
|
|
6
|
+
return { outcome: "not_found" };
|
|
7
|
+
}
|
|
8
|
+
return { outcome: "mapping_blocked" };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Wrap a {@link CataloxBound} (context already applied) as {@link CataloxLike}
|
|
12
|
+
* for {@link createMemorixRetrieval}. Ignores the per-call `context.appId` —
|
|
13
|
+
* use the bound's fixed app context when creating the bound.
|
|
14
|
+
*/
|
|
15
|
+
export function createCataloxAdapterFromBound(bound) {
|
|
16
|
+
return {
|
|
17
|
+
async getCatalogItem(_context, catalogId, itemId) {
|
|
18
|
+
const result = await bound.getCatalogItem(catalogId, itemId);
|
|
19
|
+
return mapGetItemResult(result);
|
|
20
|
+
},
|
|
21
|
+
async listCatalogItems(_context, catalogId, options) {
|
|
22
|
+
const limit = Math.max(1, options?.limit ?? 200);
|
|
23
|
+
const list = await bound.listCatalogItems(catalogId, {
|
|
24
|
+
limit,
|
|
25
|
+
offset: options?.offset,
|
|
26
|
+
});
|
|
27
|
+
if (list.listOutcome === "mapping_blocked") {
|
|
28
|
+
return { items: [], hasMore: false };
|
|
29
|
+
}
|
|
30
|
+
const items = list.items.map((item) => ({
|
|
31
|
+
id: String(item.itemId),
|
|
32
|
+
data: item.data ?? {},
|
|
33
|
+
title: item.title,
|
|
34
|
+
}));
|
|
35
|
+
return {
|
|
36
|
+
items,
|
|
37
|
+
hasMore: Boolean(list.nextCursor) || items.length >= limit,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=catalox-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalox-adapter.js","sourceRoot":"","sources":["../../src/client/catalox-adapter.ts"],"names":[],"mappings":"AAOA,SAAS,gBAAgB,CACvB,MAA2D;IAE3D,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAmB;IAC/D,OAAO;QACL,KAAK,CAAC,cAAc,CAClB,QAAQ,EACR,SAAS,EACT,MAAM;YAEN,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,gBAAgB,CACpB,QAAQ,EACR,SAAS,EACT,OAAO;YAEP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE;gBACnD,KAAK;gBACL,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,WAAW,KAAK,iBAAiB,EAAE,CAAC;gBAC3C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACvC,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC,CAAC;YACJ,OAAO;gBACL,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;aAC3D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -8,9 +8,25 @@ export type CataloxCatalogItemResult = {
|
|
|
8
8
|
} | {
|
|
9
9
|
outcome: "mapping_blocked";
|
|
10
10
|
};
|
|
11
|
+
export type CataloxCatalogListItem = {
|
|
12
|
+
id: string;
|
|
13
|
+
data: Record<string, unknown>;
|
|
14
|
+
title?: string;
|
|
15
|
+
};
|
|
16
|
+
export type CataloxCatalogListResult = {
|
|
17
|
+
items: CataloxCatalogListItem[];
|
|
18
|
+
hasMore: boolean;
|
|
19
|
+
};
|
|
11
20
|
export type CataloxLike = {
|
|
12
21
|
getCatalogItem(context: {
|
|
13
22
|
appId?: string;
|
|
14
23
|
}, catalogId: string, itemId: string): Promise<CataloxCatalogItemResult>;
|
|
24
|
+
listCatalogItems?(context: {
|
|
25
|
+
appId?: string;
|
|
26
|
+
}, catalogId: string, options?: {
|
|
27
|
+
limit?: number;
|
|
28
|
+
offset?: number;
|
|
29
|
+
cursor?: string;
|
|
30
|
+
}): Promise<CataloxCatalogListResult>;
|
|
15
31
|
};
|
|
16
32
|
//# sourceMappingURL=catalox-like.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalox-like.d.ts","sourceRoot":"","sources":["../../src/client/catalox-like.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,GAC7D;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GACxB;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CACZ,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"catalox-like.d.ts","sourceRoot":"","sources":["../../src/client/catalox-like.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,GAC7D;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GACxB;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CACZ,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACrC,gBAAgB,CAAC,CACf,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7D,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveMemorixAppId } from "../descriptors/resolve-app-id.js";
|
|
2
2
|
import { connectMemorixMongo } from "../mongo/connection.js";
|
|
3
3
|
const DEFAULT_MAX_PAGE_LIMIT = 500;
|
|
4
4
|
const DEFAULT_CONTENT_MAX_BYTES = 5 * 1024 * 1024;
|
|
@@ -26,7 +26,7 @@ export function createMemorixRetrieval(options) {
|
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
28
|
return {
|
|
29
|
-
appId: options.appId
|
|
29
|
+
appId: resolveMemorixAppId({ appId: options.appId }, processEnv),
|
|
30
30
|
catalox: options.catalox,
|
|
31
31
|
xronox: options.xronox,
|
|
32
32
|
contentReaders: options.contentReaders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-client.js","sourceRoot":"","sources":["../../src/client/create-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-client.js","sourceRoot":"","sources":["../../src/client/create-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAM7D,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,UAAU,sBAAsB,CACpC,OAAsC;IAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IAErD,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACxC,IAAI,YAAY,GAAgC,IAAI,CAAC;IAErD,MAAM,QAAQ,GAAG,KAAK,IAA0B,EAAE;QAChD,IAAI,WAAW;YAAE,OAAO,WAAW,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7D,WAAW,GAAG,MAAM,CAAC;gBACrB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,WAAW,GAAG,IAAI,CAAC;YACnB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC;QAChE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC/C,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QACzC,QAAQ,EAAE;YACR,oBAAoB,EAClB,QAAQ,CAAC,oBAAoB,IAAI,WAAW;YAC9C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,YAAY;YAC7D,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B,IAAI;gBACjE,YAAY;gBACZ,qBAAqB;aACtB;YACD,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,sBAAsB;YAC7D,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,yBAAyB;SACvE;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CataloxBound, CataloxContext } from "@x12i/catalox";
|
|
2
|
+
import type { CataloxLike, MemorixRetrievalClient } from "./types.js";
|
|
3
|
+
export type MemorixRetrievalStack = {
|
|
4
|
+
appId: string;
|
|
5
|
+
cataloxBound: CataloxBound;
|
|
6
|
+
catalox: CataloxLike;
|
|
7
|
+
client: MemorixRetrievalClient;
|
|
8
|
+
};
|
|
9
|
+
export type CreateMemorixRetrievalStackFromEnvOptions = {
|
|
10
|
+
appId?: string;
|
|
11
|
+
cataloxContext?: Omit<CataloxContext, "appId"> & {
|
|
12
|
+
appId?: string;
|
|
13
|
+
};
|
|
14
|
+
processEnv?: NodeJS.ProcessEnv;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* One-shot wiring: Catalox from env → bound context → adapter → retrieval client.
|
|
18
|
+
* Use this in host apps (e.g. memorix-explorer API) to avoid duplicating Catalox setup.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createMemorixRetrievalStackFromEnv(options?: CreateMemorixRetrievalStackFromEnvOptions): Promise<MemorixRetrievalStack>;
|
|
21
|
+
//# sourceMappingURL=create-stack-from-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-stack-from-env.d.ts","sourceRoot":"","sources":["../../src/client/create-stack-from-env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIlE,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,OAAO,GAAE,yCAA8C,GACtD,OAAO,CAAC,qBAAqB,CAAC,CA2BhC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createCataloxFromEnv } from "@x12i/catalox";
|
|
2
|
+
import { resolveMemorixAppId } from "../descriptors/resolve-app-id.js";
|
|
3
|
+
import { createCataloxAdapterFromBound } from "./catalox-adapter.js";
|
|
4
|
+
import { createMemorixRetrievalFromEnv } from "./create-from-env.js";
|
|
5
|
+
/**
|
|
6
|
+
* One-shot wiring: Catalox from env → bound context → adapter → retrieval client.
|
|
7
|
+
* Use this in host apps (e.g. memorix-explorer API) to avoid duplicating Catalox setup.
|
|
8
|
+
*/
|
|
9
|
+
export async function createMemorixRetrievalStackFromEnv(options = {}) {
|
|
10
|
+
const processEnv = options.processEnv ?? process.env;
|
|
11
|
+
const appId = resolveMemorixAppId({
|
|
12
|
+
appId: options.appId?.trim() || options.cataloxContext?.appId?.trim(),
|
|
13
|
+
}, processEnv);
|
|
14
|
+
const { catalox } = createCataloxFromEnv();
|
|
15
|
+
const ctx = {
|
|
16
|
+
...(options.cataloxContext ?? {}),
|
|
17
|
+
appId,
|
|
18
|
+
actor: options.cataloxContext?.actor ?? {
|
|
19
|
+
type: "service",
|
|
20
|
+
id: "memorix-retrieval",
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const cataloxBound = catalox.withContext(ctx);
|
|
24
|
+
const cataloxAdapter = createCataloxAdapterFromBound(cataloxBound);
|
|
25
|
+
const client = await createMemorixRetrievalFromEnv({
|
|
26
|
+
appId,
|
|
27
|
+
catalox: cataloxAdapter,
|
|
28
|
+
processEnv,
|
|
29
|
+
});
|
|
30
|
+
return { appId, cataloxBound, catalox: cataloxAdapter, client };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=create-stack-from-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-stack-from-env.js","sourceRoot":"","sources":["../../src/client/create-stack-from-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAgBrE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,UAAqD,EAAE;IAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IACrD,MAAM,KAAK,GAAG,mBAAmB,CAC/B;QACE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;KACtE,EACD,UAAU,CACX,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAmB;QAC1B,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;QACjC,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,IAAI;YACtC,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,mBAAmB;SACxB;KACF,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,6BAA6B,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC;QACjD,KAAK;QACL,OAAO,EAAE,cAAc;QACvB,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { createS3Client } from "@x12i/helpers/s3";
|
|
|
4
4
|
import type { CataloxLike } from "./catalox-like.js";
|
|
5
5
|
import type { XronoxLike } from "./xronox-like.js";
|
|
6
6
|
import type { MemorixTarget } from "../mongo/types.js";
|
|
7
|
-
export type { CataloxLike } from "./catalox-like.js";
|
|
7
|
+
export type { CataloxLike, CataloxCatalogListItem, CataloxCatalogListResult } from "./catalox-like.js";
|
|
8
8
|
export type { XronoxLike, XronoxReadParams } from "./xronox-like.js";
|
|
9
9
|
export type ContentReaders = {
|
|
10
10
|
gcs?: ReturnType<typeof createGcsClient>;
|
|
@@ -62,6 +62,9 @@ export type FetchMemorixListRequest = {
|
|
|
62
62
|
direction: "asc" | "desc";
|
|
63
63
|
};
|
|
64
64
|
filters?: Array<import("../descriptors/descriptor-types.js").MemorixFilterInput>;
|
|
65
|
+
/** Case-insensitive match across human-readable list fields on the driver content type. */
|
|
66
|
+
searchText?: string;
|
|
67
|
+
includeTotal?: boolean;
|
|
65
68
|
includeExtensions?: string[];
|
|
66
69
|
includeRelations?: string[];
|
|
67
70
|
};
|
|
@@ -73,6 +76,7 @@ export type FetchMemorixListResponse = {
|
|
|
73
76
|
offset: number;
|
|
74
77
|
count: number;
|
|
75
78
|
hasMore: boolean;
|
|
79
|
+
total?: number;
|
|
76
80
|
};
|
|
77
81
|
sort?: {
|
|
78
82
|
property: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function resolveMemorixRecordIdFilter(recordId: string): Record<string, unknown>;
|
|
2
|
+
export declare function serializeMemorixDocumentForJson(doc: Record<string, unknown>): Record<string, unknown>;
|
|
3
|
+
export declare function escapeMongoRegex(value: string): string;
|
|
4
|
+
export declare function memorixLabelSearchFilter(searchText: string | undefined, fields?: readonly string[]): Record<string, unknown> | undefined;
|
|
5
|
+
export declare function mergeMemorixMongoFilters(...filters: Array<Record<string, unknown> | undefined>): Record<string, unknown>;
|
|
6
|
+
//# sourceMappingURL=record-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-id.d.ts","sourceRoot":"","sources":["../../src/data/record-id.ts"],"names":[],"mappings":"AAEA,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAiBD,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,GAAE,SAAS,MAAM,EAAuC,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAED,wBAAgB,wBAAwB,CACtC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,GACrD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ObjectId } from "mongodb";
|
|
2
|
+
export function resolveMemorixRecordIdFilter(recordId) {
|
|
3
|
+
const trimmed = recordId.trim();
|
|
4
|
+
if (/^[a-fA-F0-9]{24}$/.test(trimmed)) {
|
|
5
|
+
return { _id: new ObjectId(trimmed) };
|
|
6
|
+
}
|
|
7
|
+
return { _id: trimmed };
|
|
8
|
+
}
|
|
9
|
+
function serializeValue(value) {
|
|
10
|
+
if (value == null)
|
|
11
|
+
return value;
|
|
12
|
+
if (value instanceof ObjectId)
|
|
13
|
+
return value.toHexString();
|
|
14
|
+
if (value instanceof Date)
|
|
15
|
+
return value.toISOString();
|
|
16
|
+
if (Array.isArray(value))
|
|
17
|
+
return value.map(serializeValue);
|
|
18
|
+
if (typeof value === "object") {
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const [k, v] of Object.entries(value)) {
|
|
21
|
+
out[k] = serializeValue(v);
|
|
22
|
+
}
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
export function serializeMemorixDocumentForJson(doc) {
|
|
28
|
+
return serializeValue(doc);
|
|
29
|
+
}
|
|
30
|
+
export function escapeMongoRegex(value) {
|
|
31
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
32
|
+
}
|
|
33
|
+
export function memorixLabelSearchFilter(searchText, fields = ["name", "title", "label", "slug"]) {
|
|
34
|
+
const trimmed = searchText?.trim();
|
|
35
|
+
if (!trimmed)
|
|
36
|
+
return undefined;
|
|
37
|
+
const rx = escapeMongoRegex(trimmed);
|
|
38
|
+
const or = fields.map((field) => ({ [field]: { $regex: rx, $options: "i" } }));
|
|
39
|
+
return or.length === 1 ? or[0] : { $or: or };
|
|
40
|
+
}
|
|
41
|
+
export function mergeMemorixMongoFilters(...filters) {
|
|
42
|
+
const parts = filters.filter((f) => Boolean(f) && Object.keys(f).length > 0);
|
|
43
|
+
if (parts.length === 0)
|
|
44
|
+
return {};
|
|
45
|
+
if (parts.length === 1)
|
|
46
|
+
return parts[0];
|
|
47
|
+
return { $and: parts };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=record-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-id.js","sourceRoot":"","sources":["../../src/data/record-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,UAAU,4BAA4B,CAC1C,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,GAA4B;IAE5B,OAAO,cAAc,CAAC,GAAG,CAA4B,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAA8B,EAC9B,SAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IAE9D,MAAM,OAAO,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,GAAG,OAAmD;IAEtD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAC1B,CAAC,CAAC,EAAgC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAC9E,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Human-readable titles for common Memorix content-type keys. */
|
|
2
|
+
export declare const MEMORIX_CONTENT_TYPE_LABELS: Record<string, string>;
|
|
3
|
+
export declare function memorixContentTypeLabel(contentType: string): string;
|
|
4
|
+
export declare function listEntityContentTypeKeys(entity: import("./descriptor-types.js").MemorixEntityDescriptor): string[];
|
|
5
|
+
/** Primary badge count slice: scoped when defined, otherwise canonical. */
|
|
6
|
+
export declare function primaryEntityContentType(entity: import("./descriptor-types.js").MemorixEntityDescriptor): string;
|
|
7
|
+
//# sourceMappingURL=content-type-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-type-labels.d.ts","sourceRoot":"","sources":["../../src/descriptors/content-type-labels.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW9D,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,uBAAuB,EAAE,uBAAuB,GAC9D,MAAM,EAAE,CAEV;AAED,2EAA2E;AAC3E,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,uBAAuB,EAAE,uBAAuB,GAC9D,MAAM,CAGR"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Human-readable titles for common Memorix content-type keys. */
|
|
2
|
+
export const MEMORIX_CONTENT_TYPE_LABELS = {
|
|
3
|
+
scoped: "Scoped records",
|
|
4
|
+
snapshots: "Snapshots",
|
|
5
|
+
narratives: "Narratives",
|
|
6
|
+
web: "Web",
|
|
7
|
+
"web-scoped": "Web (scoped)",
|
|
8
|
+
raw: "Raw",
|
|
9
|
+
inference: "Inference",
|
|
10
|
+
analytics: "Analytics",
|
|
11
|
+
foresights: "Foresights",
|
|
12
|
+
analysis: "Analysis",
|
|
13
|
+
};
|
|
14
|
+
export function memorixContentTypeLabel(contentType) {
|
|
15
|
+
return MEMORIX_CONTENT_TYPE_LABELS[contentType] ?? contentType;
|
|
16
|
+
}
|
|
17
|
+
export function listEntityContentTypeKeys(entity) {
|
|
18
|
+
return Object.keys(entity.contentTypes);
|
|
19
|
+
}
|
|
20
|
+
/** Primary badge count slice: scoped when defined, otherwise canonical. */
|
|
21
|
+
export function primaryEntityContentType(entity) {
|
|
22
|
+
if (entity.contentTypes.scoped)
|
|
23
|
+
return "scoped";
|
|
24
|
+
return entity.defaults.canonicalContentType;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=content-type-labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-type-labels.js","sourceRoot":"","sources":["../../src/descriptors/content-type-labels.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,2BAA2B,GAA2B;IACjE,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,GAAG,EAAE,KAAK;IACV,YAAY,EAAE,cAAc;IAC5B,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO,2BAA2B,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA+D;IAE/D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB,CACtC,MAA+D;IAE/D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;AAC9C,CAAC"}
|
|
@@ -86,6 +86,10 @@ export type MemorixRelationDescriptor = {
|
|
|
86
86
|
export type MemorixEntityDescriptor = {
|
|
87
87
|
id: string;
|
|
88
88
|
entityName: string;
|
|
89
|
+
/** Default list view for this entity (memorix-list-descriptors item id). */
|
|
90
|
+
defaultListDescriptorId: string;
|
|
91
|
+
/** Default record detail view (memorix-item-descriptors item id). */
|
|
92
|
+
defaultItemDescriptorId: string;
|
|
89
93
|
/** Selects memorix-entities vs memorix-events via env (default: entity). */
|
|
90
94
|
target?: "entity" | "event";
|
|
91
95
|
collectionPrefix: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor-types.d.ts","sourceRoot":"","sources":["../../src/descriptors/descriptor-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"descriptor-types.d.ts","sourceRoot":"","sources":["../../src/descriptors/descriptor-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,+BAA+B,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE;QAClB,YAAY,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACjD,KAAK,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;KAC3C,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,+BAA+B,CAAC;IAC1C,YAAY,CAAC,EAAE;QACb,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,YAAY,CAAC,EAAE,KAAK,CAAC;KACtB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;KACrC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,gCAAgC,CAAC;IAC3C,SAAS,CAAC,EACN,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;IAC5D,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,uBAAuB,EAAE,MAAM,CAAC;IAChC,qEAAqE;IACrE,uBAAuB,EAAE,MAAM,CAAC;IAChC,4EAA4E;IAC5E,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE;QACR,eAAe,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QAC/C,kBAAkB,EAAE,IAAI,CAAC;QACzB,cAAc,EAAE,UAAU,GAAG,SAAS,CAAC;KACxC,CAAC;IACF,QAAQ,EAAE;QACR,oBAAoB,EAAE,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,0BAA0B,EAAE,MAAM,EAAE,CAAC;KACtC,CAAC;IACF,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC;IAC/B,IAAI,EAAE;QACJ,EAAE,EAAE,UAAU,GAAG,SAAS,CAAC;KAC5B,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE;QACV,OAAO,EAAE,IAAI,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,iCAAiC,EAAE,CAAC;IACjD,gBAAgB,CAAC,EAAE,gCAAgC,EAAE,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;KAC3B,CAAC;IACF,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;KACjC,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,qBAAqB,CAAC;KACpC,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,gCAAgC,EAAE,CAAC;IACtD,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,IAAI,CAAC;QACd,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { MemorixEntityDescriptor } from "./descriptor-types.js";
|
|
3
|
+
import { validateMemorixEntityDescriptor } from "./validate-descriptor.js";
|
|
4
|
+
export type MemorixEntityDescriptorSummary = {
|
|
5
|
+
id: string;
|
|
6
|
+
entityName: string;
|
|
7
|
+
label: string;
|
|
8
|
+
defaultListDescriptorId: string;
|
|
9
|
+
defaultItemDescriptorId: string;
|
|
10
|
+
target?: "entity" | "event";
|
|
11
|
+
};
|
|
12
|
+
export type DiscoverMemorixEntitiesResult = {
|
|
13
|
+
summaries: MemorixEntityDescriptorSummary[];
|
|
14
|
+
source: "catalox" | "none";
|
|
15
|
+
catalogId: string;
|
|
16
|
+
hint?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function discoverMemorixEntities(client: MemorixRetrievalClient): Promise<DiscoverMemorixEntitiesResult>;
|
|
19
|
+
export declare function loadMemorixEntityDescriptorByName(client: MemorixRetrievalClient, entityName: string): Promise<MemorixEntityDescriptor>;
|
|
20
|
+
export declare function entityDescriptorConnections(entity: MemorixEntityDescriptor): Array<{
|
|
21
|
+
id: string;
|
|
22
|
+
targetEntityName: string;
|
|
23
|
+
relationType: string;
|
|
24
|
+
sourceProperty: string;
|
|
25
|
+
targetProperty: string;
|
|
26
|
+
}>;
|
|
27
|
+
export { validateMemorixEntityDescriptor };
|
|
28
|
+
//# sourceMappingURL=discover-entities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-entities.d.ts","sourceRoot":"","sources":["../../src/descriptors/discover-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAKjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAEL,+BAA+B,EAChC,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,8BAA8B,GAAG;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAC5C,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAmCF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,6BAA6B,CAAC,CAoCxC;AAED,wBAAsB,iCAAiC,CACrD,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,uBAAuB,CAAC,CAalC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,uBAAuB,GAC9B,KAAK,CAAC;IACP,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAkBD;AAED,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|