@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.
Files changed (58) hide show
  1. package/README.md +56 -0
  2. package/dist/client/types.d.ts +6 -1
  3. package/dist/client/types.d.ts.map +1 -1
  4. package/dist/data/record-display-name.d.ts +4 -0
  5. package/dist/data/record-display-name.d.ts.map +1 -0
  6. package/dist/data/record-display-name.js +44 -0
  7. package/dist/data/record-display-name.js.map +1 -0
  8. package/dist/data/record-display-name.test.d.ts +2 -0
  9. package/dist/data/record-display-name.test.d.ts.map +1 -0
  10. package/dist/data/record-display-name.test.js +49 -0
  11. package/dist/data/record-display-name.test.js.map +1 -0
  12. package/dist/data/record-id.d.ts.map +1 -1
  13. package/dist/data/record-id.js +1 -1
  14. package/dist/data/record-id.js.map +1 -1
  15. package/dist/data/record-info.d.ts +30 -0
  16. package/dist/data/record-info.d.ts.map +1 -0
  17. package/dist/data/record-info.js +80 -0
  18. package/dist/data/record-info.js.map +1 -0
  19. package/dist/data/record-info.test.d.ts +2 -0
  20. package/dist/data/record-info.test.d.ts.map +1 -0
  21. package/dist/data/record-info.test.js +61 -0
  22. package/dist/data/record-info.test.js.map +1 -0
  23. package/dist/explorer/raw-collection-records.d.ts +2 -0
  24. package/dist/explorer/raw-collection-records.d.ts.map +1 -1
  25. package/dist/explorer/raw-collection-records.js +19 -14
  26. package/dist/explorer/raw-collection-records.js.map +1 -1
  27. package/dist/explorer/raw-reads.d.ts +2 -2
  28. package/dist/explorer/raw-reads.d.ts.map +1 -1
  29. package/dist/explorer/raw-reads.js +15 -2
  30. package/dist/explorer/raw-reads.js.map +1 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/retrieval/compose-row.d.ts.map +1 -1
  36. package/dist/retrieval/compose-row.js +10 -0
  37. package/dist/retrieval/compose-row.js.map +1 -1
  38. package/dist/retrieval/fetch-item.d.ts.map +1 -1
  39. package/dist/retrieval/fetch-item.js +11 -0
  40. package/dist/retrieval/fetch-item.js.map +1 -1
  41. package/dist/retrieval/fetch-narratives.d.ts.map +1 -1
  42. package/dist/retrieval/fetch-narratives.js +2 -9
  43. package/dist/retrieval/fetch-narratives.js.map +1 -1
  44. package/dist/retrieval/fetch-record-info.d.ts +33 -0
  45. package/dist/retrieval/fetch-record-info.d.ts.map +1 -0
  46. package/dist/retrieval/fetch-record-info.js +39 -0
  47. package/dist/retrieval/fetch-record-info.js.map +1 -0
  48. package/dist/tests/fetch-item.test.js +39 -0
  49. package/dist/tests/fetch-item.test.js.map +1 -1
  50. package/dist/tests/fetch-list.test.js +81 -0
  51. package/dist/tests/fetch-list.test.js.map +1 -1
  52. package/dist/tests/fetch-narratives.test.js +1 -1
  53. package/dist/tests/fetch-narratives.test.js.map +1 -1
  54. package/dist/tests/fetch-record-info.test.d.ts +2 -0
  55. package/dist/tests/fetch-record-info.test.d.ts.map +1 -0
  56. package/dist/tests/fetch-record-info.test.js +67 -0
  57. package/dist/tests/fetch-record-info.test.js.map +1 -0
  58. 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
@@ -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,4 @@
1
+ export declare function resolveMemorixRecordDisplayName(record: Record<string, unknown>, options?: {
2
+ preferredLocale?: string;
3
+ }): string | undefined;
4
+ //# sourceMappingURL=record-display-name.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=record-display-name.test.d.ts.map
@@ -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,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"}
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"}
@@ -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;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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=record-info.test.d.ts.map
@@ -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":"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"}
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 { escapeMongoRegex, mergeMemorixMongoFilters, serializeMemorixDocumentForJson, } from "../data/record-id.js";
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
- if (!searchText?.trim())
82
- return undefined;
83
- const rx = escapeMongoRegex(searchText.trim());
84
- return {
85
- $or: [
86
- { name: { $regex: rx, $options: "i" } },
87
- { title: { $regex: rx, $options: "i" } },
88
- { label: { $regex: rx, $options: "i" } },
89
- { entityId: { $regex: rx, $options: "i" } },
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,