@x12i/memorix-retrieval 1.21.0 → 1.22.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 +56 -0
- package/dist/client/types.d.ts +6 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/data/record-display-name.d.ts +4 -0
- package/dist/data/record-display-name.d.ts.map +1 -0
- package/dist/data/record-display-name.js +44 -0
- package/dist/data/record-display-name.js.map +1 -0
- package/dist/data/record-display-name.test.d.ts +2 -0
- package/dist/data/record-display-name.test.d.ts.map +1 -0
- package/dist/data/record-display-name.test.js +49 -0
- package/dist/data/record-display-name.test.js.map +1 -0
- package/dist/data/record-id.d.ts.map +1 -1
- package/dist/data/record-id.js +1 -1
- package/dist/data/record-id.js.map +1 -1
- package/dist/data/record-info.d.ts +30 -0
- package/dist/data/record-info.d.ts.map +1 -0
- package/dist/data/record-info.js +80 -0
- package/dist/data/record-info.js.map +1 -0
- package/dist/data/record-info.test.d.ts +2 -0
- package/dist/data/record-info.test.d.ts.map +1 -0
- package/dist/data/record-info.test.js +61 -0
- package/dist/data/record-info.test.js.map +1 -0
- package/dist/explorer/raw-collection-records.d.ts +2 -0
- package/dist/explorer/raw-collection-records.d.ts.map +1 -1
- package/dist/explorer/raw-collection-records.js +19 -14
- package/dist/explorer/raw-collection-records.js.map +1 -1
- package/dist/explorer/raw-reads.d.ts +2 -2
- package/dist/explorer/raw-reads.d.ts.map +1 -1
- package/dist/explorer/raw-reads.js +15 -2
- package/dist/explorer/raw-reads.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/retrieval/compose-row.d.ts.map +1 -1
- package/dist/retrieval/compose-row.js +10 -0
- package/dist/retrieval/compose-row.js.map +1 -1
- package/dist/retrieval/fetch-item.d.ts.map +1 -1
- package/dist/retrieval/fetch-item.js +11 -0
- package/dist/retrieval/fetch-item.js.map +1 -1
- package/dist/retrieval/fetch-narratives.d.ts.map +1 -1
- package/dist/retrieval/fetch-narratives.js +2 -9
- package/dist/retrieval/fetch-narratives.js.map +1 -1
- package/dist/retrieval/fetch-record-info.d.ts +33 -0
- package/dist/retrieval/fetch-record-info.d.ts.map +1 -0
- package/dist/retrieval/fetch-record-info.js +39 -0
- package/dist/retrieval/fetch-record-info.js.map +1 -0
- package/dist/tests/fetch-item.test.js +39 -0
- package/dist/tests/fetch-item.test.js.map +1 -1
- package/dist/tests/fetch-list.test.js +81 -0
- package/dist/tests/fetch-list.test.js.map +1 -1
- package/dist/tests/fetch-narratives.test.js +1 -1
- package/dist/tests/fetch-narratives.test.js.map +1 -1
- package/dist/tests/fetch-record-info.test.d.ts +2 -0
- package/dist/tests/fetch-record-info.test.d.ts.map +1 -0
- package/dist/tests/fetch-record-info.test.js +67 -0
- package/dist/tests/fetch-record-info.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -289,6 +289,62 @@ const page = await fetchMemorixSliceRecords(client, {
|
|
|
289
289
|
});
|
|
290
290
|
```
|
|
291
291
|
|
|
292
|
+
## Record display names
|
|
293
|
+
|
|
294
|
+
Human-readable titles for operators come from **`record.concept.name`** on stored documents (see [MEMORIX-DATABASE-CONVENTIONS.md](./docs/MEMORIX-DATABASE-CONVENTIONS.md)). Memorix read-tier APIs resolve display names centrally — hosts must not scan top-level `id`, `name`, or `data.*` fields.
|
|
295
|
+
|
|
296
|
+
```typescript
|
|
297
|
+
import { resolveMemorixRecordDisplayName } from "@x12i/memorix-retrieval";
|
|
298
|
+
|
|
299
|
+
const displayName = resolveMemorixRecordDisplayName(record, {
|
|
300
|
+
preferredLocale: "en", // optional; for localized concept.name objects
|
|
301
|
+
});
|
|
302
|
+
// string | undefined — never falls back to record id or identity fields
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Supported `concept.name` shapes:** plain string, string array (first non-empty entry), localized object (`{ en: "...", he: "..." }`).
|
|
306
|
+
|
|
307
|
+
**List and item responses** include optional top-level `displayName` (and list rows also expose `recordId` when resolvable):
|
|
308
|
+
|
|
309
|
+
- `fetchMemorixList` / `fetchMemorixListForEntity` → `rows[].displayName`
|
|
310
|
+
- `fetchMemorixItem` / `fetchMemorixItemForEntity` → `displayName`
|
|
311
|
+
- `listMemorixEntityContentTypeDocuments` → `documents[].displayName`
|
|
312
|
+
|
|
313
|
+
When `concept.name` is absent, `displayName` is omitted. Show the record id separately for disambiguation — do not substitute it as the title.
|
|
314
|
+
|
|
315
|
+
### Easy retrieval helpers
|
|
316
|
+
|
|
317
|
+
Use these when you need identity + display name without re-implementing Memorix rules:
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
import {
|
|
321
|
+
fetchMemorixRecordInfoForEntity,
|
|
322
|
+
resolveMemorixRecordInfo,
|
|
323
|
+
resolveMemorixRecordInfoFromRow,
|
|
324
|
+
resolveMemorixRecordInfoFromItem,
|
|
325
|
+
formatMemorixRecordLabel,
|
|
326
|
+
} from "@x12i/memorix-retrieval";
|
|
327
|
+
|
|
328
|
+
// One call: lookup by entity + recordId / entityId / eventId / knowledgeId
|
|
329
|
+
const info = await fetchMemorixRecordInfoForEntity(client, {
|
|
330
|
+
entityName: "vulnerability-groups",
|
|
331
|
+
recordId: "69d216ed358778e93215788d",
|
|
332
|
+
});
|
|
333
|
+
// → { recordId, displayName?, entityId?, identityField?, identityValue? }
|
|
334
|
+
|
|
335
|
+
// From list rows (already stamped with displayName)
|
|
336
|
+
const fromRow = resolveMemorixRecordInfoFromRow(listRow);
|
|
337
|
+
|
|
338
|
+
// From item responses
|
|
339
|
+
const fromItem = resolveMemorixRecordInfoFromItem(itemResponse);
|
|
340
|
+
|
|
341
|
+
// Picker / journal label — name when present, else id
|
|
342
|
+
const label = formatMemorixRecordLabel(info);
|
|
343
|
+
const withSuffix = formatMemorixRecordLabel(info, { includeIdSuffix: true });
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**Search:** `memorixLabelSearchFilter` (used by raw entity reads) includes `concept.name` for string-valued names. Localized-object search is best-effort on the `concept.name` path only.
|
|
347
|
+
|
|
292
348
|
## Record identity
|
|
293
349
|
|
|
294
350
|
```typescript
|
package/dist/client/types.d.ts
CHANGED
|
@@ -90,6 +90,10 @@ export type FetchMemorixListRequest = {
|
|
|
90
90
|
auditRead?: boolean;
|
|
91
91
|
includeSourceRefs?: boolean;
|
|
92
92
|
};
|
|
93
|
+
export type MemorixRecordDisplayFields = {
|
|
94
|
+
recordId?: string;
|
|
95
|
+
displayName?: string;
|
|
96
|
+
};
|
|
93
97
|
export type FetchMemorixListResponse = {
|
|
94
98
|
listId: string;
|
|
95
99
|
entity: string;
|
|
@@ -106,7 +110,7 @@ export type FetchMemorixListResponse = {
|
|
|
106
110
|
direction: "asc" | "desc";
|
|
107
111
|
contentType: string;
|
|
108
112
|
};
|
|
109
|
-
rows: Array<Record<string, unknown
|
|
113
|
+
rows: Array<Record<string, unknown> & MemorixRecordDisplayFields>;
|
|
110
114
|
issues?: import("../errors/issues.js").MemorixRetrievalIssue[];
|
|
111
115
|
source?: import("../runtime/source-provenance.js").MemorixRuntimeSourceRef;
|
|
112
116
|
sources?: import("../runtime/source-provenance.js").MemorixRuntimeSourceRef[];
|
|
@@ -191,6 +195,7 @@ export type FetchMemorixItemResponse = {
|
|
|
191
195
|
entityId?: string;
|
|
192
196
|
eventId?: string;
|
|
193
197
|
knowledgeId?: string;
|
|
198
|
+
displayName?: string;
|
|
194
199
|
sections: Array<{
|
|
195
200
|
id: string;
|
|
196
201
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"record-display-name.d.ts","sourceRoot":"","sources":["../../src/data/record-display-name.ts"],"names":[],"mappings":"AAqBA,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,GAAG,SAAS,CA6BpB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
function trimNonEmpty(value) {
|
|
2
|
+
if (typeof value !== "string")
|
|
3
|
+
return undefined;
|
|
4
|
+
const trimmed = value.trim();
|
|
5
|
+
return trimmed || undefined;
|
|
6
|
+
}
|
|
7
|
+
function resolveLocalizedName(names, preferredLocale) {
|
|
8
|
+
if (preferredLocale) {
|
|
9
|
+
const preferred = trimNonEmpty(names[preferredLocale]);
|
|
10
|
+
if (preferred)
|
|
11
|
+
return preferred;
|
|
12
|
+
}
|
|
13
|
+
for (const value of Object.values(names)) {
|
|
14
|
+
const resolved = trimNonEmpty(value);
|
|
15
|
+
if (resolved)
|
|
16
|
+
return resolved;
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
export function resolveMemorixRecordDisplayName(record, options) {
|
|
21
|
+
const concept = record.concept;
|
|
22
|
+
if (!concept || typeof concept !== "object" || Array.isArray(concept)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const name = concept.name;
|
|
26
|
+
if (name == null)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (typeof name === "string") {
|
|
29
|
+
return trimNonEmpty(name);
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(name)) {
|
|
32
|
+
for (const entry of name) {
|
|
33
|
+
const resolved = trimNonEmpty(entry);
|
|
34
|
+
if (resolved)
|
|
35
|
+
return resolved;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
if (typeof name === "object") {
|
|
40
|
+
return resolveLocalizedName(name, options?.preferredLocale);
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=record-display-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-display-name.js","sourceRoot":"","sources":["../../src/data/record-display-name.ts"],"names":[],"mappings":"AAAA,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAA8B,EAC9B,eAAwB;IAExB,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACvD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,MAA+B,EAC/B,OAAsC;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAI,OAAmC,CAAC,IAAI,CAAC;IACvD,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAEnC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,oBAAoB,CACzB,IAA+B,EAC/B,OAAO,EAAE,eAAe,CACzB,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-display-name.test.d.ts","sourceRoot":"","sources":["../../src/data/record-display-name.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { resolveMemorixRecordDisplayName } from "./record-display-name.js";
|
|
3
|
+
describe("resolveMemorixRecordDisplayName", () => {
|
|
4
|
+
it("returns string concept.name", () => {
|
|
5
|
+
expect(resolveMemorixRecordDisplayName({
|
|
6
|
+
id: "69d216ed358778e93215788d",
|
|
7
|
+
concept: { name: "Group A" },
|
|
8
|
+
})).toBe("Group A");
|
|
9
|
+
});
|
|
10
|
+
it("trims string concept.name", () => {
|
|
11
|
+
expect(resolveMemorixRecordDisplayName({
|
|
12
|
+
concept: { name: " Group A " },
|
|
13
|
+
})).toBe("Group A");
|
|
14
|
+
});
|
|
15
|
+
it("returns first non-empty entry from string array", () => {
|
|
16
|
+
expect(resolveMemorixRecordDisplayName({
|
|
17
|
+
concept: { name: ["", "Primary", "Alias"] },
|
|
18
|
+
})).toBe("Primary");
|
|
19
|
+
});
|
|
20
|
+
it("resolves localized object with preferred locale", () => {
|
|
21
|
+
expect(resolveMemorixRecordDisplayName({ concept: { name: { en: "Group A", he: "קבוצה א" } } }, { preferredLocale: "he" })).toBe("קבוצה א");
|
|
22
|
+
});
|
|
23
|
+
it("falls back to first non-empty localized value", () => {
|
|
24
|
+
expect(resolveMemorixRecordDisplayName({
|
|
25
|
+
concept: { name: { en: "", he: "קבוצה א" } },
|
|
26
|
+
})).toBe("קבוצה א");
|
|
27
|
+
});
|
|
28
|
+
it("returns undefined when concept is absent", () => {
|
|
29
|
+
expect(resolveMemorixRecordDisplayName({
|
|
30
|
+
id: "69d216ed358778e93215788d",
|
|
31
|
+
recordId: "69d216ed358778e93215788d",
|
|
32
|
+
})).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
it("returns undefined when concept.name is empty", () => {
|
|
35
|
+
expect(resolveMemorixRecordDisplayName({
|
|
36
|
+
concept: { name: " " },
|
|
37
|
+
})).toBeUndefined();
|
|
38
|
+
});
|
|
39
|
+
it("never falls back to id or identity fields", () => {
|
|
40
|
+
expect(resolveMemorixRecordDisplayName({
|
|
41
|
+
id: "69d216ed358778e93215788d",
|
|
42
|
+
recordId: "69d216ed358778e93215788d",
|
|
43
|
+
entityId: "ent-1",
|
|
44
|
+
name: "Top-level name",
|
|
45
|
+
title: "Top-level title",
|
|
46
|
+
})).toBeUndefined();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=record-display-name.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-display-name.test.js","sourceRoot":"","sources":["../../src/data/record-display-name.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CACJ,+BAA+B,CAAC;YAC9B,EAAE,EAAE,0BAA0B;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7B,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CACJ,+BAA+B,CAAC;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SACjC,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,+BAA+B,CAAC;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;SAC5C,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,+BAA+B,CAC7B,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EACvD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CACF,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CACJ,+BAA+B,CAAC;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;SAC7C,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CACJ,+BAA+B,CAAC;YAC9B,EAAE,EAAE,0BAA0B;YAC9B,QAAQ,EAAE,0BAA0B;SACrC,CAAC,CACH,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ,+BAA+B,CAAC;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB,CAAC,CACH,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACJ,+BAA+B,CAAC;YAC9B,EAAE,EAAE,0BAA0B;YAC9B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,iBAAiB;SACzB,CAAC,CACH,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +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,
|
|
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,EAAuD,GAC7E,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"}
|
package/dist/data/record-id.js
CHANGED
|
@@ -30,7 +30,7 @@ export function serializeMemorixDocumentForJson(doc) {
|
|
|
30
30
|
export function escapeMongoRegex(value) {
|
|
31
31
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
32
32
|
}
|
|
33
|
-
export function memorixLabelSearchFilter(searchText, fields = ["name", "title", "label", "slug"]) {
|
|
33
|
+
export function memorixLabelSearchFilter(searchText, fields = ["name", "title", "label", "slug", "concept.name"]) {
|
|
34
34
|
const trimmed = searchText?.trim();
|
|
35
35
|
if (!trimmed)
|
|
36
36
|
return undefined;
|
|
@@ -1 +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;
|
|
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,EAAE,cAAc,CAAC;IAE9E,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,30 @@
|
|
|
1
|
+
import type { MemorixTarget } from "../mongo/types.js";
|
|
2
|
+
export type MemorixRecordInfo = {
|
|
3
|
+
recordId: string;
|
|
4
|
+
displayName?: string;
|
|
5
|
+
entityId?: string;
|
|
6
|
+
eventId?: string;
|
|
7
|
+
knowledgeId?: string;
|
|
8
|
+
identityField?: "entityId" | "eventId" | "knowledgeId";
|
|
9
|
+
identityValue?: string;
|
|
10
|
+
};
|
|
11
|
+
export type ResolveMemorixRecordInfoOptions = {
|
|
12
|
+
preferredLocale?: string;
|
|
13
|
+
descriptorIdentityField?: string;
|
|
14
|
+
fallbackFields?: string[];
|
|
15
|
+
};
|
|
16
|
+
export declare function resolveMemorixRecordInfo(target: MemorixTarget, record: Record<string, unknown>, options?: ResolveMemorixRecordInfoOptions): MemorixRecordInfo;
|
|
17
|
+
export declare function resolveMemorixRecordInfoFromRow(row: Record<string, unknown>): MemorixRecordInfo;
|
|
18
|
+
export declare function resolveMemorixRecordInfoFromItem(item: {
|
|
19
|
+
displayName?: string;
|
|
20
|
+
entityId?: string;
|
|
21
|
+
eventId?: string;
|
|
22
|
+
knowledgeId?: string;
|
|
23
|
+
}): MemorixRecordInfo;
|
|
24
|
+
export declare function formatMemorixRecordLabel(info: MemorixRecordInfo, options?: {
|
|
25
|
+
/** When true and both name and id exist, returns `Name (id)`. Default false. */
|
|
26
|
+
includeIdSuffix?: boolean;
|
|
27
|
+
/** Truncate id suffix for display (default: no truncation). */
|
|
28
|
+
maxIdLength?: number;
|
|
29
|
+
}): string;
|
|
30
|
+
//# sourceMappingURL=record-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-info.d.ts","sourceRoot":"","sources":["../../src/data/record-info.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,+BAA+B,GACxC,iBAAiB,CAsBnB;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,iBAAiB,CAwBnB;AAED,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE;IACJ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,iBAAiB,CA6BnB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE;IACR,gFAAgF;IAChF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,MAAM,CAgBR"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { getIdentityFromRecord } from "./identity.js";
|
|
2
|
+
import { resolveMemorixRecordDisplayName } from "./record-display-name.js";
|
|
3
|
+
import { resolveMemorixRecordIdentity } from "./record-identity.js";
|
|
4
|
+
export function resolveMemorixRecordInfo(target, record, options) {
|
|
5
|
+
const identity = resolveMemorixRecordIdentity(target, record, {
|
|
6
|
+
descriptorIdentityField: options?.descriptorIdentityField,
|
|
7
|
+
fallbackFields: options?.fallbackFields,
|
|
8
|
+
});
|
|
9
|
+
const displayName = resolveMemorixRecordDisplayName(record, {
|
|
10
|
+
preferredLocale: options?.preferredLocale,
|
|
11
|
+
});
|
|
12
|
+
const targetIdentity = getIdentityFromRecord(record);
|
|
13
|
+
const info = {
|
|
14
|
+
recordId: identity.recordId,
|
|
15
|
+
...(displayName ? { displayName } : {}),
|
|
16
|
+
};
|
|
17
|
+
if (targetIdentity) {
|
|
18
|
+
info.identityField = targetIdentity.field;
|
|
19
|
+
info.identityValue = targetIdentity.value;
|
|
20
|
+
info[targetIdentity.field] = targetIdentity.value;
|
|
21
|
+
}
|
|
22
|
+
return info;
|
|
23
|
+
}
|
|
24
|
+
export function resolveMemorixRecordInfoFromRow(row) {
|
|
25
|
+
const targetIdentity = getIdentityFromRecord(row);
|
|
26
|
+
const recordId = typeof row.recordId === "string" && row.recordId.trim()
|
|
27
|
+
? row.recordId.trim()
|
|
28
|
+
: targetIdentity?.value ?? "";
|
|
29
|
+
const displayName = typeof row.displayName === "string" && row.displayName.trim()
|
|
30
|
+
? row.displayName.trim()
|
|
31
|
+
: undefined;
|
|
32
|
+
const info = {
|
|
33
|
+
recordId,
|
|
34
|
+
...(displayName ? { displayName } : {}),
|
|
35
|
+
};
|
|
36
|
+
if (targetIdentity) {
|
|
37
|
+
info.identityField = targetIdentity.field;
|
|
38
|
+
info.identityValue = targetIdentity.value;
|
|
39
|
+
info[targetIdentity.field] = targetIdentity.value;
|
|
40
|
+
}
|
|
41
|
+
return info;
|
|
42
|
+
}
|
|
43
|
+
export function resolveMemorixRecordInfoFromItem(item) {
|
|
44
|
+
const identity = item.entityId != null && item.entityId !== ""
|
|
45
|
+
? { field: "entityId", value: item.entityId }
|
|
46
|
+
: item.eventId != null && item.eventId !== ""
|
|
47
|
+
? { field: "eventId", value: item.eventId }
|
|
48
|
+
: item.knowledgeId != null && item.knowledgeId !== ""
|
|
49
|
+
? { field: "knowledgeId", value: item.knowledgeId }
|
|
50
|
+
: null;
|
|
51
|
+
const displayName = typeof item.displayName === "string" && item.displayName.trim()
|
|
52
|
+
? item.displayName.trim()
|
|
53
|
+
: undefined;
|
|
54
|
+
const recordId = identity?.value ?? "";
|
|
55
|
+
const info = {
|
|
56
|
+
recordId,
|
|
57
|
+
...(displayName ? { displayName } : {}),
|
|
58
|
+
};
|
|
59
|
+
if (identity) {
|
|
60
|
+
info.identityField = identity.field;
|
|
61
|
+
info.identityValue = identity.value;
|
|
62
|
+
info[identity.field] = identity.value;
|
|
63
|
+
}
|
|
64
|
+
return info;
|
|
65
|
+
}
|
|
66
|
+
export function formatMemorixRecordLabel(info, options) {
|
|
67
|
+
const id = info.recordId || info.identityValue || "";
|
|
68
|
+
const title = info.displayName?.trim();
|
|
69
|
+
if (title) {
|
|
70
|
+
if (options?.includeIdSuffix && id && id !== title) {
|
|
71
|
+
const suffix = options.maxIdLength && id.length > options.maxIdLength
|
|
72
|
+
? `${id.slice(0, options.maxIdLength)}…`
|
|
73
|
+
: id;
|
|
74
|
+
return `${title} (${suffix})`;
|
|
75
|
+
}
|
|
76
|
+
return title;
|
|
77
|
+
}
|
|
78
|
+
return id;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=record-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-info.js","sourceRoot":"","sources":["../../src/data/record-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-info.test.d.ts","sourceRoot":"","sources":["../../src/data/record-info.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { formatMemorixRecordLabel, resolveMemorixRecordInfo, resolveMemorixRecordInfoFromItem, resolveMemorixRecordInfoFromRow, } from "./record-info.js";
|
|
3
|
+
describe("resolveMemorixRecordInfo", () => {
|
|
4
|
+
it("combines record id, target identity, and concept name", () => {
|
|
5
|
+
expect(resolveMemorixRecordInfo("entity", {
|
|
6
|
+
_id: "507f1f77bcf86cd799439011",
|
|
7
|
+
entityId: "10.0.0.1",
|
|
8
|
+
concept: { name: "Host A" },
|
|
9
|
+
})).toEqual({
|
|
10
|
+
recordId: "507f1f77bcf86cd799439011",
|
|
11
|
+
displayName: "Host A",
|
|
12
|
+
entityId: "10.0.0.1",
|
|
13
|
+
identityField: "entityId",
|
|
14
|
+
identityValue: "10.0.0.1",
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe("resolveMemorixRecordInfoFromRow", () => {
|
|
19
|
+
it("reads stamped list row fields", () => {
|
|
20
|
+
expect(resolveMemorixRecordInfoFromRow({
|
|
21
|
+
recordId: "rec-1",
|
|
22
|
+
displayName: "Group A",
|
|
23
|
+
entityId: "ent-1",
|
|
24
|
+
})).toEqual({
|
|
25
|
+
recordId: "rec-1",
|
|
26
|
+
displayName: "Group A",
|
|
27
|
+
entityId: "ent-1",
|
|
28
|
+
identityField: "entityId",
|
|
29
|
+
identityValue: "ent-1",
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("resolveMemorixRecordInfoFromItem", () => {
|
|
34
|
+
it("reads item response fields", () => {
|
|
35
|
+
expect(resolveMemorixRecordInfoFromItem({
|
|
36
|
+
displayName: "Host A",
|
|
37
|
+
entityId: "10.0.0.1",
|
|
38
|
+
})).toEqual({
|
|
39
|
+
recordId: "10.0.0.1",
|
|
40
|
+
displayName: "Host A",
|
|
41
|
+
entityId: "10.0.0.1",
|
|
42
|
+
identityField: "entityId",
|
|
43
|
+
identityValue: "10.0.0.1",
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("formatMemorixRecordLabel", () => {
|
|
48
|
+
it("prefers display name", () => {
|
|
49
|
+
expect(formatMemorixRecordLabel({
|
|
50
|
+
recordId: "rec-1",
|
|
51
|
+
displayName: "Group A",
|
|
52
|
+
})).toBe("Group A");
|
|
53
|
+
});
|
|
54
|
+
it("falls back to record id when no display name", () => {
|
|
55
|
+
expect(formatMemorixRecordLabel({ recordId: "rec-1" })).toBe("rec-1");
|
|
56
|
+
});
|
|
57
|
+
it("supports optional id suffix for pickers", () => {
|
|
58
|
+
expect(formatMemorixRecordLabel({ recordId: "rec-1", displayName: "Group A" }, { includeIdSuffix: true })).toBe("Group A (rec-1)");
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=record-info.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-info.test.js","sourceRoot":"","sources":["../../src/data/record-info.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CACJ,wBAAwB,CAAC,QAAQ,EAAE;YACjC,GAAG,EAAE,0BAA0B;YAC/B,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B,CAAC,CACH,CAAC,OAAO,CAAC;YACR,QAAQ,EAAE,0BAA0B;YACpC,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,UAAU;YACzB,aAAa,EAAE,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CACJ,+BAA+B,CAAC;YAC9B,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,OAAO;SAClB,CAAC,CACH,CAAC,OAAO,CAAC;YACR,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,OAAO;YACjB,aAAa,EAAE,UAAU;YACzB,aAAa,EAAE,OAAO;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CACJ,gCAAgC,CAAC;YAC/B,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,UAAU;SACrB,CAAC,CACH,CAAC,OAAO,CAAC;YACR,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,UAAU;YACzB,aAAa,EAAE,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CACJ,wBAAwB,CAAC;YACvB,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,SAAS;SACvB,CAAC,CACH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CACJ,wBAAwB,CACtB,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,EAC7C,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CACF,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -35,6 +35,7 @@ export type MemorixRawCollectionRecordsResult = {
|
|
|
35
35
|
id?: string;
|
|
36
36
|
identityField: string;
|
|
37
37
|
source: MemorixRuntimeSourceRef;
|
|
38
|
+
displayName?: string;
|
|
38
39
|
preview: Record<string, unknown>;
|
|
39
40
|
raw?: Record<string, unknown>;
|
|
40
41
|
truncated?: boolean;
|
|
@@ -63,6 +64,7 @@ export type MemorixRawCollectionItemResult = {
|
|
|
63
64
|
id?: string;
|
|
64
65
|
identityField: string;
|
|
65
66
|
source: MemorixRuntimeSourceRef;
|
|
67
|
+
displayName?: string;
|
|
66
68
|
preview: Record<string, unknown>;
|
|
67
69
|
raw?: Record<string, unknown>;
|
|
68
70
|
truncated?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raw-collection-records.d.ts","sourceRoot":"","sources":["../../src/explorer/raw-collection-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAA8B,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"raw-collection-records.d.ts","sourceRoot":"","sources":["../../src/explorer/raw-collection-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { parseMemorixCollectionName } from "../data/collection-parser.js";
|
|
2
|
-
import {
|
|
2
|
+
import { memorixLabelSearchFilter, mergeMemorixMongoFilters, serializeMemorixDocumentForJson, } from "../data/record-id.js";
|
|
3
|
+
import { resolveMemorixRecordDisplayName } from "../data/record-display-name.js";
|
|
3
4
|
import { resolveMemorixRecordIdentity } from "../data/record-identity.js";
|
|
4
5
|
import { memorixCountByTarget, memorixReadByTarget } from "../data/target-read.js";
|
|
5
6
|
import { resolveMemorixIdentityField, resolveMemorixDatabaseName } from "../mongo/target-config.js";
|
|
@@ -47,6 +48,10 @@ function trimLargeDocument(doc, maxBytes) {
|
|
|
47
48
|
}
|
|
48
49
|
function buildPreview(record, identityField) {
|
|
49
50
|
const preview = {};
|
|
51
|
+
const displayName = resolveMemorixRecordDisplayName(record);
|
|
52
|
+
if (displayName) {
|
|
53
|
+
preview.displayName = displayName;
|
|
54
|
+
}
|
|
50
55
|
for (const field of PREVIEW_SCALAR_FIELDS) {
|
|
51
56
|
const value = record[field];
|
|
52
57
|
if (value != null && typeof value !== "object") {
|
|
@@ -78,19 +83,15 @@ function inferFields(records) {
|
|
|
78
83
|
}));
|
|
79
84
|
}
|
|
80
85
|
function buildSearchFilter(searchText) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
{ eventId: { $regex: rx, $options: "i" } },
|
|
91
|
-
{ knowledgeId: { $regex: rx, $options: "i" } },
|
|
92
|
-
],
|
|
93
|
-
};
|
|
86
|
+
return memorixLabelSearchFilter(searchText, [
|
|
87
|
+
"name",
|
|
88
|
+
"title",
|
|
89
|
+
"label",
|
|
90
|
+
"concept.name",
|
|
91
|
+
"entityId",
|
|
92
|
+
"eventId",
|
|
93
|
+
"knowledgeId",
|
|
94
|
+
]);
|
|
94
95
|
}
|
|
95
96
|
function buildSort(sort) {
|
|
96
97
|
if (!sort?.path)
|
|
@@ -158,11 +159,13 @@ export async function fetchMemorixRawCollectionRecords(client, input) {
|
|
|
158
159
|
});
|
|
159
160
|
}
|
|
160
161
|
const recordSource = mongoPayloadSourceRef(input.target, databaseName, input.collectionName, { appId: client.appId });
|
|
162
|
+
const displayName = resolveMemorixRecordDisplayName(serialized);
|
|
161
163
|
return {
|
|
162
164
|
recordId: identity.recordId,
|
|
163
165
|
id: identity.recordId,
|
|
164
166
|
identityField: identity.identityField,
|
|
165
167
|
source: recordSource,
|
|
168
|
+
...(displayName ? { displayName } : {}),
|
|
166
169
|
raw,
|
|
167
170
|
preview: buildPreview(raw, identity.identityField),
|
|
168
171
|
truncated,
|
|
@@ -233,6 +236,7 @@ export async function fetchMemorixRawCollectionItem(client, input) {
|
|
|
233
236
|
});
|
|
234
237
|
}
|
|
235
238
|
const recordSource = mongoPayloadSourceRef(input.target, databaseName, input.collectionName, { appId: client.appId });
|
|
239
|
+
const displayName = resolveMemorixRecordDisplayName(serialized);
|
|
236
240
|
return {
|
|
237
241
|
source,
|
|
238
242
|
mode: "raw-db-inspection",
|
|
@@ -246,6 +250,7 @@ export async function fetchMemorixRawCollectionItem(client, input) {
|
|
|
246
250
|
id: identity.recordId,
|
|
247
251
|
identityField: identity.identityField,
|
|
248
252
|
source: recordSource,
|
|
253
|
+
...(displayName ? { displayName } : {}),
|
|
249
254
|
raw,
|
|
250
255
|
preview: buildPreview(raw, identity.identityField),
|
|
251
256
|
truncated,
|