@x12i/memorix-retrieval 1.1.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 +124 -0
- package/catalox-seeds/inputs/entity-descriptors/assets.json +296 -0
- package/catalox-seeds/inputs/entity-descriptors/variabilities-groups.json +312 -0
- package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +419 -0
- package/catalox-seeds/inputs/item-descriptors/asset-detail-item.json +85 -0
- package/catalox-seeds/inputs/item-descriptors/variabilities-group-detail-item.json +87 -0
- package/catalox-seeds/inputs/item-descriptors/vulnerability-detail-item.json +106 -0
- package/catalox-seeds/inputs/list-descriptors/assets-main-list.json +46 -0
- package/catalox-seeds/inputs/list-descriptors/critical-vulnerabilities-list.json +44 -0
- package/catalox-seeds/inputs/list-descriptors/variabilities-groups-main-list.json +43 -0
- package/catalox-seeds/inputs/list-descriptors/vulnerabilities-main-list.json +47 -0
- package/catalox-seeds/inputs/manifest.json +44 -0
- package/catalox-seeds/inputs/memorix-catalog-ids.json +8 -0
- package/catalox-seeds/inputs/memorix-descriptors.bundle.json +1502 -0
- package/catalox-seeds/inputs/memorix-entity-descriptors.catalog.json +1029 -0
- package/catalox-seeds/inputs/memorix-entity-descriptors.items.json +1026 -0
- package/catalox-seeds/inputs/memorix-item-descriptors.catalog.json +283 -0
- package/catalox-seeds/inputs/memorix-item-descriptors.items.json +280 -0
- package/catalox-seeds/inputs/memorix-list-descriptors.catalog.json +185 -0
- package/catalox-seeds/inputs/memorix-list-descriptors.items.json +182 -0
- package/catalox-seeds/inputs/scope.json +4 -0
- package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +1844 -0
- package/dist/client/catalox-like.d.ts +16 -0
- package/dist/client/catalox-like.d.ts.map +1 -0
- package/dist/client/catalox-like.js +2 -0
- package/dist/client/catalox-like.js.map +1 -0
- package/dist/client/create-client.d.ts +3 -0
- package/dist/client/create-client.d.ts.map +1 -0
- package/dist/client/create-client.js +50 -0
- package/dist/client/create-client.js.map +1 -0
- package/dist/client/create-from-env.d.ts +3 -0
- package/dist/client/create-from-env.d.ts.map +1 -0
- package/dist/client/create-from-env.js +10 -0
- package/dist/client/create-from-env.js.map +1 -0
- package/dist/client/types.d.ts +109 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/xronox-like.d.ts +18 -0
- package/dist/client/xronox-like.d.ts.map +1 -0
- package/dist/client/xronox-like.js +2 -0
- package/dist/client/xronox-like.js.map +1 -0
- package/dist/content/fetch-content-object.d.ts +16 -0
- package/dist/content/fetch-content-object.d.ts.map +1 -0
- package/dist/content/fetch-content-object.js +54 -0
- package/dist/content/fetch-content-object.js.map +1 -0
- package/dist/content/map-content-errors.d.ts +5 -0
- package/dist/content/map-content-errors.d.ts.map +1 -0
- package/dist/content/map-content-errors.js +39 -0
- package/dist/content/map-content-errors.js.map +1 -0
- package/dist/content/memorix-content-object.d.ts +21 -0
- package/dist/content/memorix-content-object.d.ts.map +1 -0
- package/dist/content/memorix-content-object.js +54 -0
- package/dist/content/memorix-content-object.js.map +1 -0
- package/dist/content/resolve-content-config.d.ts +19 -0
- package/dist/content/resolve-content-config.d.ts.map +1 -0
- package/dist/content/resolve-content-config.js +37 -0
- package/dist/content/resolve-content-config.js.map +1 -0
- package/dist/data/collection-name.d.ts +4 -0
- package/dist/data/collection-name.d.ts.map +1 -0
- package/dist/data/collection-name.js +23 -0
- package/dist/data/collection-name.js.map +1 -0
- package/dist/data/identity.d.ts +36 -0
- package/dist/data/identity.d.ts.map +1 -0
- package/dist/data/identity.js +68 -0
- package/dist/data/identity.js.map +1 -0
- package/dist/data/memorix-read.d.ts +17 -0
- package/dist/data/memorix-read.d.ts.map +1 -0
- package/dist/data/memorix-read.js +55 -0
- package/dist/data/memorix-read.js.map +1 -0
- package/dist/data/multi-match.d.ts +16 -0
- package/dist/data/multi-match.d.ts.map +1 -0
- package/dist/data/multi-match.js +65 -0
- package/dist/data/multi-match.js.map +1 -0
- package/dist/data/path.d.ts +3 -0
- package/dist/data/path.d.ts.map +1 -0
- package/dist/data/path.js +23 -0
- package/dist/data/path.js.map +1 -0
- package/dist/data/xronox-read.d.ts +13 -0
- package/dist/data/xronox-read.d.ts.map +1 -0
- package/dist/data/xronox-read.js +34 -0
- package/dist/data/xronox-read.js.map +1 -0
- package/dist/descriptors/catalog-ids.d.ts +5 -0
- package/dist/descriptors/catalog-ids.d.ts.map +1 -0
- package/dist/descriptors/catalog-ids.js +5 -0
- package/dist/descriptors/catalog-ids.js.map +1 -0
- package/dist/descriptors/descriptor-types.d.ts +187 -0
- package/dist/descriptors/descriptor-types.d.ts.map +1 -0
- package/dist/descriptors/descriptor-types.js +2 -0
- package/dist/descriptors/descriptor-types.js.map +1 -0
- package/dist/descriptors/load-entity-descriptor.d.ts +4 -0
- package/dist/descriptors/load-entity-descriptor.d.ts.map +1 -0
- package/dist/descriptors/load-entity-descriptor.js +15 -0
- package/dist/descriptors/load-entity-descriptor.js.map +1 -0
- package/dist/descriptors/load-item-descriptor.d.ts +4 -0
- package/dist/descriptors/load-item-descriptor.d.ts.map +1 -0
- package/dist/descriptors/load-item-descriptor.js +15 -0
- package/dist/descriptors/load-item-descriptor.js.map +1 -0
- package/dist/descriptors/load-list-descriptor.d.ts +4 -0
- package/dist/descriptors/load-list-descriptor.d.ts.map +1 -0
- package/dist/descriptors/load-list-descriptor.js +15 -0
- package/dist/descriptors/load-list-descriptor.js.map +1 -0
- package/dist/descriptors/validate-descriptor.d.ts +7 -0
- package/dist/descriptors/validate-descriptor.d.ts.map +1 -0
- package/dist/descriptors/validate-descriptor.js +80 -0
- package/dist/descriptors/validate-descriptor.js.map +1 -0
- package/dist/errors/errors.d.ts +6 -0
- package/dist/errors/errors.d.ts.map +1 -0
- package/dist/errors/errors.js +12 -0
- package/dist/errors/errors.js.map +1 -0
- package/dist/errors/issues.d.ts +14 -0
- package/dist/errors/issues.d.ts.map +1 -0
- package/dist/errors/issues.js +7 -0
- package/dist/errors/issues.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/mongo/connection.d.ts +3 -0
- package/dist/mongo/connection.d.ts.map +1 -0
- package/dist/mongo/connection.js +8 -0
- package/dist/mongo/connection.js.map +1 -0
- package/dist/mongo/env.d.ts +6 -0
- package/dist/mongo/env.d.ts.map +1 -0
- package/dist/mongo/env.js +33 -0
- package/dist/mongo/env.js.map +1 -0
- package/dist/mongo/read-collection.d.ts +14 -0
- package/dist/mongo/read-collection.d.ts.map +1 -0
- package/dist/mongo/read-collection.js +45 -0
- package/dist/mongo/read-collection.js.map +1 -0
- package/dist/mongo/resolve-db.d.ts +6 -0
- package/dist/mongo/resolve-db.d.ts.map +1 -0
- package/dist/mongo/resolve-db.js +9 -0
- package/dist/mongo/resolve-db.js.map +1 -0
- package/dist/mongo/types.d.ts +2 -0
- package/dist/mongo/types.d.ts.map +1 -0
- package/dist/mongo/types.js +2 -0
- package/dist/mongo/types.js.map +1 -0
- package/dist/relations/fetch-relation.d.ts +5 -0
- package/dist/relations/fetch-relation.d.ts.map +1 -0
- package/dist/relations/fetch-relation.js +57 -0
- package/dist/relations/fetch-relation.js.map +1 -0
- package/dist/relations/resolve-relations.d.ts +6 -0
- package/dist/relations/resolve-relations.d.ts.map +1 -0
- package/dist/relations/resolve-relations.js +20 -0
- package/dist/relations/resolve-relations.js.map +1 -0
- package/dist/retrieval/batch-fetch.d.ts +11 -0
- package/dist/retrieval/batch-fetch.d.ts.map +1 -0
- package/dist/retrieval/batch-fetch.js +80 -0
- package/dist/retrieval/batch-fetch.js.map +1 -0
- package/dist/retrieval/compose-item.d.ts +11 -0
- package/dist/retrieval/compose-item.d.ts.map +1 -0
- package/dist/retrieval/compose-item.js +18 -0
- package/dist/retrieval/compose-item.js.map +1 -0
- package/dist/retrieval/compose-row.d.ts +4 -0
- package/dist/retrieval/compose-row.d.ts.map +1 -0
- package/dist/retrieval/compose-row.js +14 -0
- package/dist/retrieval/compose-row.js.map +1 -0
- package/dist/retrieval/fetch-item.d.ts +3 -0
- package/dist/retrieval/fetch-item.d.ts.map +1 -0
- package/dist/retrieval/fetch-item.js +107 -0
- package/dist/retrieval/fetch-item.js.map +1 -0
- package/dist/retrieval/fetch-list.d.ts +3 -0
- package/dist/retrieval/fetch-list.d.ts.map +1 -0
- package/dist/retrieval/fetch-list.js +148 -0
- package/dist/retrieval/fetch-list.js.map +1 -0
- package/dist/retrieval/resolve-fields.d.ts +10 -0
- package/dist/retrieval/resolve-fields.d.ts.map +1 -0
- package/dist/retrieval/resolve-fields.js +52 -0
- package/dist/retrieval/resolve-fields.js.map +1 -0
- package/dist/retrieval/resolve-filters.d.ts +3 -0
- package/dist/retrieval/resolve-filters.d.ts.map +1 -0
- package/dist/retrieval/resolve-filters.js +57 -0
- package/dist/retrieval/resolve-filters.js.map +1 -0
- package/dist/retrieval/resolve-pagination-driver.d.ts +6 -0
- package/dist/retrieval/resolve-pagination-driver.d.ts.map +1 -0
- package/dist/retrieval/resolve-pagination-driver.js +22 -0
- package/dist/retrieval/resolve-pagination-driver.js.map +1 -0
- package/dist/retrieval/resolve-property-source.d.ts +10 -0
- package/dist/retrieval/resolve-property-source.d.ts.map +1 -0
- package/dist/retrieval/resolve-property-source.js +48 -0
- package/dist/retrieval/resolve-property-source.js.map +1 -0
- package/dist/retrieval/resolve-sort.d.ts +14 -0
- package/dist/retrieval/resolve-sort.d.ts.map +1 -0
- package/dist/retrieval/resolve-sort.js +28 -0
- package/dist/retrieval/resolve-sort.js.map +1 -0
- package/dist/tests/collection-env.test.d.ts +2 -0
- package/dist/tests/collection-env.test.d.ts.map +1 -0
- package/dist/tests/collection-env.test.js +44 -0
- package/dist/tests/collection-env.test.js.map +1 -0
- package/dist/tests/content-object.test.d.ts +2 -0
- package/dist/tests/content-object.test.d.ts.map +1 -0
- package/dist/tests/content-object.test.js +39 -0
- package/dist/tests/content-object.test.js.map +1 -0
- package/dist/tests/descriptor-validation.test.d.ts +2 -0
- package/dist/tests/descriptor-validation.test.d.ts.map +1 -0
- package/dist/tests/descriptor-validation.test.js +25 -0
- package/dist/tests/descriptor-validation.test.js.map +1 -0
- package/dist/tests/env.test.d.ts +2 -0
- package/dist/tests/env.test.d.ts.map +1 -0
- package/dist/tests/env.test.js +17 -0
- package/dist/tests/env.test.js.map +1 -0
- package/dist/tests/fetch-item.test.d.ts +2 -0
- package/dist/tests/fetch-item.test.d.ts.map +1 -0
- package/dist/tests/fetch-item.test.js +86 -0
- package/dist/tests/fetch-item.test.js.map +1 -0
- package/dist/tests/fetch-list.test.d.ts +2 -0
- package/dist/tests/fetch-list.test.d.ts.map +1 -0
- package/dist/tests/fetch-list.test.js +85 -0
- package/dist/tests/fetch-list.test.js.map +1 -0
- package/dist/tests/fixtures.d.ts +5 -0
- package/dist/tests/fixtures.d.ts.map +1 -0
- package/dist/tests/fixtures.js +137 -0
- package/dist/tests/fixtures.js.map +1 -0
- package/dist/tests/identity.test.d.ts +2 -0
- package/dist/tests/identity.test.d.ts.map +1 -0
- package/dist/tests/identity.test.js +32 -0
- package/dist/tests/identity.test.js.map +1 -0
- package/dist/tests/multi-match.test.d.ts +2 -0
- package/dist/tests/multi-match.test.d.ts.map +1 -0
- package/dist/tests/multi-match.test.js +31 -0
- package/dist/tests/multi-match.test.js.map +1 -0
- package/dist/tests/read-collection.test.d.ts +2 -0
- package/dist/tests/read-collection.test.d.ts.map +1 -0
- package/dist/tests/read-collection.test.js +19 -0
- package/dist/tests/read-collection.test.js.map +1 -0
- package/dist/tests/relations.test.d.ts +2 -0
- package/dist/tests/relations.test.d.ts.map +1 -0
- package/dist/tests/relations.test.js +77 -0
- package/dist/tests/relations.test.js.map +1 -0
- package/docs/MEMORIX-DATABASE-CONVENTIONS.md +325 -0
- package/package.json +52 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type MemorixRetrievalIssue } from "../errors/issues.js";
|
|
2
|
+
export type MemorixIdentity = {
|
|
3
|
+
entityId?: string;
|
|
4
|
+
eventId?: string;
|
|
5
|
+
};
|
|
6
|
+
export type IdentityValidationResult = {
|
|
7
|
+
ok: true;
|
|
8
|
+
identity: {
|
|
9
|
+
entityId: string;
|
|
10
|
+
eventId?: undefined;
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
13
|
+
ok: true;
|
|
14
|
+
identity: {
|
|
15
|
+
eventId: string;
|
|
16
|
+
entityId?: undefined;
|
|
17
|
+
};
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
issue: MemorixRetrievalIssue;
|
|
21
|
+
};
|
|
22
|
+
export declare function validateMemorixIdentity(record: Record<string, unknown>, context?: {
|
|
23
|
+
entityId?: string;
|
|
24
|
+
eventId?: string;
|
|
25
|
+
path?: string;
|
|
26
|
+
}): IdentityValidationResult;
|
|
27
|
+
export declare function getIdentityFromRecord(record: Record<string, unknown>): {
|
|
28
|
+
field: "entityId" | "eventId";
|
|
29
|
+
value: string;
|
|
30
|
+
} | null;
|
|
31
|
+
export declare function buildIdFilter(field: "entityId" | "eventId", values: string[]): Record<string, unknown>;
|
|
32
|
+
export declare function assertRequestIdentity(entityId?: string, eventId?: string): {
|
|
33
|
+
field: "entityId" | "eventId";
|
|
34
|
+
value: string;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEhD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,wBAAwB,CAoC1B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUzD;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBlD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { throwRetrievalError } from "../errors/errors.js";
|
|
2
|
+
import { createIssue } from "../errors/issues.js";
|
|
3
|
+
export function validateMemorixIdentity(record, context) {
|
|
4
|
+
const entityId = typeof record.entityId === "string" ? record.entityId : undefined;
|
|
5
|
+
const eventId = typeof record.eventId === "string" ? record.eventId : undefined;
|
|
6
|
+
const hasEntity = entityId != null && entityId !== "";
|
|
7
|
+
const hasEvent = eventId != null && eventId !== "";
|
|
8
|
+
if (hasEntity && hasEvent) {
|
|
9
|
+
return {
|
|
10
|
+
ok: false,
|
|
11
|
+
issue: createIssue({
|
|
12
|
+
code: "INVALID_IDENTITY",
|
|
13
|
+
message: "Record has both entityId and eventId",
|
|
14
|
+
path: context?.path,
|
|
15
|
+
entityId,
|
|
16
|
+
eventId,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (!hasEntity && !hasEvent) {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
issue: createIssue({
|
|
24
|
+
code: "INVALID_IDENTITY",
|
|
25
|
+
message: "Record has neither entityId nor eventId",
|
|
26
|
+
path: context?.path,
|
|
27
|
+
entityId: context?.entityId,
|
|
28
|
+
eventId: context?.eventId,
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (hasEntity) {
|
|
33
|
+
return { ok: true, identity: { entityId: entityId } };
|
|
34
|
+
}
|
|
35
|
+
return { ok: true, identity: { eventId: eventId } };
|
|
36
|
+
}
|
|
37
|
+
export function getIdentityFromRecord(record) {
|
|
38
|
+
const result = validateMemorixIdentity(record);
|
|
39
|
+
if (!result.ok)
|
|
40
|
+
return null;
|
|
41
|
+
if ("entityId" in result.identity && result.identity.entityId) {
|
|
42
|
+
return { field: "entityId", value: result.identity.entityId };
|
|
43
|
+
}
|
|
44
|
+
if ("eventId" in result.identity && result.identity.eventId) {
|
|
45
|
+
return { field: "eventId", value: result.identity.eventId };
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
export function buildIdFilter(field, values) {
|
|
50
|
+
if (values.length === 1) {
|
|
51
|
+
return { [field]: values[0] };
|
|
52
|
+
}
|
|
53
|
+
return { [field]: { $in: values } };
|
|
54
|
+
}
|
|
55
|
+
export function assertRequestIdentity(entityId, eventId) {
|
|
56
|
+
const hasEntity = entityId != null && entityId !== "";
|
|
57
|
+
const hasEvent = eventId != null && eventId !== "";
|
|
58
|
+
if (hasEntity && hasEvent) {
|
|
59
|
+
throwRetrievalError("INVALID_REQUEST", "Request must provide exactly one of entityId or eventId");
|
|
60
|
+
}
|
|
61
|
+
if (!hasEntity && !hasEvent) {
|
|
62
|
+
throwRetrievalError("INVALID_REQUEST", "Request must provide entityId or eventId");
|
|
63
|
+
}
|
|
64
|
+
if (hasEntity)
|
|
65
|
+
return { field: "entityId", value: entityId };
|
|
66
|
+
return { field: "eventId", value: eventId };
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/data/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { XronoxReadParams } from "../client/xronox-like.js";
|
|
3
|
+
import type { MemorixEntityDescriptor } from "../descriptors/descriptor-types.js";
|
|
4
|
+
import type { MemorixTarget } from "../mongo/types.js";
|
|
5
|
+
/** Advanced only: Xronox role names when passing a custom `xronox` client. */
|
|
6
|
+
export declare const DEFAULT_MEMORIX_XRONOX_ROLES: Record<MemorixTarget, string>;
|
|
7
|
+
export declare function resolveMemorixXronoxRole(entity: MemorixEntityDescriptor, client: MemorixRetrievalClient): string;
|
|
8
|
+
export type MemorixReadParams = Omit<XronoxReadParams, "dataType" | "sourceType" | "subSourceType" | "role"> & {
|
|
9
|
+
source: string;
|
|
10
|
+
entity: MemorixEntityDescriptor;
|
|
11
|
+
db?: string;
|
|
12
|
+
role?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function memorixRead(client: MemorixRetrievalClient, params: MemorixReadParams): Promise<Record<string, unknown>[]>;
|
|
15
|
+
/** @deprecated Use {@link memorixRead}. */
|
|
16
|
+
export declare const memorixXronoxRead: typeof memorixRead;
|
|
17
|
+
//# sourceMappingURL=memorix-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memorix-read.d.ts","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAGtE,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAGR;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,gBAAgB,EAChB,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,CACrD,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,uBAAuB,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CA+CpC;AAED,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,oBAAc,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { readMemorixCollection } from "../mongo/read-collection.js";
|
|
2
|
+
import { resolveMemorixDbNameForEntity } from "../mongo/resolve-db.js";
|
|
3
|
+
/** Advanced only: Xronox role names when passing a custom `xronox` client. */
|
|
4
|
+
export const DEFAULT_MEMORIX_XRONOX_ROLES = {
|
|
5
|
+
entity: "operational",
|
|
6
|
+
event: "logs",
|
|
7
|
+
};
|
|
8
|
+
export function resolveMemorixXronoxRole(entity, client) {
|
|
9
|
+
const target = entity.target ?? "entity";
|
|
10
|
+
return client.xronoxRoles?.[target] ?? DEFAULT_MEMORIX_XRONOX_ROLES[target];
|
|
11
|
+
}
|
|
12
|
+
export async function memorixRead(client, params) {
|
|
13
|
+
const { entity, db: dbOverride, role: roleOverride, ...readParams } = params;
|
|
14
|
+
const db = dbOverride ?? resolveMemorixDbNameForEntity(entity, client);
|
|
15
|
+
if (client.xronox) {
|
|
16
|
+
const fullParams = {
|
|
17
|
+
dataType: "metadata",
|
|
18
|
+
sourceType: "database",
|
|
19
|
+
subSourceType: "mongo",
|
|
20
|
+
role: roleOverride ?? resolveMemorixXronoxRole(entity, client),
|
|
21
|
+
...readParams,
|
|
22
|
+
source: params.source,
|
|
23
|
+
};
|
|
24
|
+
if (client.xronox.readArray) {
|
|
25
|
+
const rows = await client.xronox.readArray(fullParams);
|
|
26
|
+
return rows.map((r) => r);
|
|
27
|
+
}
|
|
28
|
+
const result = await client.xronox.read(fullParams);
|
|
29
|
+
if (Array.isArray(result)) {
|
|
30
|
+
return result.map((r) => r);
|
|
31
|
+
}
|
|
32
|
+
const rows = [];
|
|
33
|
+
for await (const row of result) {
|
|
34
|
+
rows.push(row);
|
|
35
|
+
}
|
|
36
|
+
return rows;
|
|
37
|
+
}
|
|
38
|
+
if (!client.getMongo) {
|
|
39
|
+
throw new Error("Memorix retrieval client is missing Mongo access. Use createMemorixRetrieval({ catalox }) " +
|
|
40
|
+
"or createMemorixRetrievalFromEnv({ catalox }).");
|
|
41
|
+
}
|
|
42
|
+
const mongo = await client.getMongo();
|
|
43
|
+
return readMemorixCollection(mongo, {
|
|
44
|
+
db,
|
|
45
|
+
collection: params.source,
|
|
46
|
+
query: readParams.query,
|
|
47
|
+
project: readParams.project,
|
|
48
|
+
sort: readParams.sort,
|
|
49
|
+
limit: readParams.limit,
|
|
50
|
+
skip: readParams.skip,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/** @deprecated Use {@link memorixRead}. */
|
|
54
|
+
export const memorixXronoxRead = memorixRead;
|
|
55
|
+
//# sourceMappingURL=memorix-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memorix-read.js","sourceRoot":"","sources":["../../src/data/memorix-read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAGvE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAkC;IACzE,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,MAA+B,EAC/B,MAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;IACzC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9E,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA8B,EAC9B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAC7E,MAAM,EAAE,GAAG,UAAU,IAAI,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,UAAU,GAAqB;YACnC,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,UAAU;YACtB,aAAa,EAAE,OAAO;YACtB,IAAI,EAAE,YAAY,IAAI,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC;YAC9D,GAAG,UAAU;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,4FAA4F;YAC1F,gDAAgD,CACnD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACtC,OAAO,qBAAqB,CAAC,KAAK,EAAE;QAClC,EAAE;QACF,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,IAAI,EAAE,UAAU,CAAC,IAAI;KACtB,CAAC,CAAC;AACL,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { MemorixEntityDescriptor, MemorixMultiMatchRule } from "../descriptors/descriptor-types.js";
|
|
3
|
+
import { type MemorixRetrievalIssue } from "../errors/issues.js";
|
|
4
|
+
export type MultiMatchResult<T> = {
|
|
5
|
+
ok: true;
|
|
6
|
+
records: T[];
|
|
7
|
+
} | {
|
|
8
|
+
ok: false;
|
|
9
|
+
issue: MemorixRetrievalIssue;
|
|
10
|
+
};
|
|
11
|
+
export declare function resolveEffectiveDatePaths(entity: MemorixEntityDescriptor, rule?: MemorixMultiMatchRule, client?: MemorixRetrievalClient): string[];
|
|
12
|
+
export declare function applyMultiMatch<T extends Record<string, unknown>>(records: T[], rule: MemorixMultiMatchRule, entity: MemorixEntityDescriptor, client?: MemorixRetrievalClient, context?: {
|
|
13
|
+
path?: string;
|
|
14
|
+
}): MultiMatchResult<T>;
|
|
15
|
+
export declare function defaultExtensionMultiMatch(mode: "extendFields" | "array"): MemorixMultiMatchRule;
|
|
16
|
+
//# sourceMappingURL=multi-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-match.d.ts","sourceRoot":"","sources":["../../src/data/multi-match.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAEhD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,uBAAuB,EAC/B,IAAI,CAAC,EAAE,qBAAqB,EAC5B,MAAM,CAAC,EAAE,sBAAsB,GAC9B,MAAM,EAAE,CAYV;AAoBD,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,uBAAuB,EAC/B,MAAM,CAAC,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAiCrB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,GAAG,OAAO,GAC7B,qBAAqB,CAKvB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createIssue } from "../errors/issues.js";
|
|
2
|
+
import { getByPath } from "./path.js";
|
|
3
|
+
export function resolveEffectiveDatePaths(entity, rule, client) {
|
|
4
|
+
const primary = rule?.effectiveDatePath ??
|
|
5
|
+
entity.defaults.effectiveDatePath ??
|
|
6
|
+
client?.defaults.effectiveDatePath ??
|
|
7
|
+
"modifiedAt";
|
|
8
|
+
const fallbacks = rule?.fallbackEffectiveDatePaths ??
|
|
9
|
+
entity.defaults.fallbackEffectiveDatePaths ??
|
|
10
|
+
client?.defaults.fallbackEffectiveDatePaths ??
|
|
11
|
+
["capturedAt", "snapshot.capturedAt"];
|
|
12
|
+
return [primary, ...fallbacks.filter((p) => p !== primary)];
|
|
13
|
+
}
|
|
14
|
+
function getEffectiveDate(record, paths) {
|
|
15
|
+
for (const path of paths) {
|
|
16
|
+
const value = getByPath(record, path);
|
|
17
|
+
if (value == null)
|
|
18
|
+
continue;
|
|
19
|
+
const ts = value instanceof Date
|
|
20
|
+
? value.getTime()
|
|
21
|
+
: typeof value === "string" || typeof value === "number"
|
|
22
|
+
? new Date(value).getTime()
|
|
23
|
+
: NaN;
|
|
24
|
+
if (!Number.isNaN(ts))
|
|
25
|
+
return ts;
|
|
26
|
+
}
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
export function applyMultiMatch(records, rule, entity, client, context) {
|
|
30
|
+
const strategy = rule.strategy ?? "last";
|
|
31
|
+
if (records.length === 0) {
|
|
32
|
+
return { ok: true, records: [] };
|
|
33
|
+
}
|
|
34
|
+
if (strategy === "all") {
|
|
35
|
+
return { ok: true, records };
|
|
36
|
+
}
|
|
37
|
+
if (strategy === "ignore") {
|
|
38
|
+
return { ok: true, records: [] };
|
|
39
|
+
}
|
|
40
|
+
if (strategy === "error" && records.length > 1) {
|
|
41
|
+
return {
|
|
42
|
+
ok: false,
|
|
43
|
+
issue: createIssue({
|
|
44
|
+
code: "MULTI_MATCH_ERROR",
|
|
45
|
+
message: `Multiple records (${records.length}) matched; strategy is error`,
|
|
46
|
+
path: context?.path,
|
|
47
|
+
details: { count: records.length },
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const paths = resolveEffectiveDatePaths(entity, rule, client);
|
|
52
|
+
const sorted = [...records].sort((a, b) => getEffectiveDate(b, paths) - getEffectiveDate(a, paths));
|
|
53
|
+
if (strategy === "first") {
|
|
54
|
+
return { ok: true, records: [sorted[sorted.length - 1]] };
|
|
55
|
+
}
|
|
56
|
+
// last (default)
|
|
57
|
+
return { ok: true, records: [sorted[0]] };
|
|
58
|
+
}
|
|
59
|
+
export function defaultExtensionMultiMatch(mode) {
|
|
60
|
+
if (mode === "array") {
|
|
61
|
+
return { strategy: "all" };
|
|
62
|
+
}
|
|
63
|
+
return { strategy: "last" };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=multi-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-match.js","sourceRoot":"","sources":["../../src/data/multi-match.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAA8B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAMtC,MAAM,UAAU,yBAAyB,CACvC,MAA+B,EAC/B,IAA4B,EAC5B,MAA+B;IAE/B,MAAM,OAAO,GACX,IAAI,EAAE,iBAAiB;QACvB,MAAM,CAAC,QAAQ,CAAC,iBAAiB;QACjC,MAAM,EAAE,QAAQ,CAAC,iBAAiB;QAClC,YAAY,CAAC;IACf,MAAM,SAAS,GACb,IAAI,EAAE,0BAA0B;QAChC,MAAM,CAAC,QAAQ,CAAC,0BAA0B;QAC1C,MAAM,EAAE,QAAQ,CAAC,0BAA0B;QAC3C,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACxC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CACvB,MAA+B,EAC/B,KAAe;IAEf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,IAAI,IAAI;YAAE,SAAS;QAC5B,MAAM,EAAE,GACN,KAAK,YAAY,IAAI;YACnB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;YACjB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;gBACtD,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,GAAG,CAAC;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAY,EACZ,IAA2B,EAC3B,MAA+B,EAC/B,MAA+B,EAC/B,OAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,WAAW,CAAC;gBACjB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,qBAAqB,OAAO,CAAC,MAAM,8BAA8B;gBAC1E,IAAI,EAAE,OAAO,EAAE,IAAI;gBACnB,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;aACnC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAClE,CAAC;IAEF,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,iBAAiB;IACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAA8B;IAE9B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/data/path.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAWT;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function getByPath(obj, path) {
|
|
2
|
+
if (!path)
|
|
3
|
+
return obj;
|
|
4
|
+
const parts = path.split(".");
|
|
5
|
+
let current = obj;
|
|
6
|
+
for (const part of parts) {
|
|
7
|
+
if (current == null || typeof current !== "object") {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
current = current[part];
|
|
11
|
+
}
|
|
12
|
+
return current;
|
|
13
|
+
}
|
|
14
|
+
export function resolveDataRoot(dataRoot, record) {
|
|
15
|
+
if (!dataRoot || dataRoot === ".")
|
|
16
|
+
return record;
|
|
17
|
+
const nested = getByPath(record, dataRoot);
|
|
18
|
+
if (nested && typeof nested === "object" && !Array.isArray(nested)) {
|
|
19
|
+
return nested;
|
|
20
|
+
}
|
|
21
|
+
return record;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/data/path.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CACvB,GAA4B,EAC5B,IAAY;IAEZ,IAAI,CAAC,IAAI;QAAE,OAAO,GAAG,CAAC;IACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,MAA+B;IAE/B,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,MAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { XronoxReadParams } from "../client/xronox-like.js";
|
|
3
|
+
import type { MemorixEntityDescriptor } from "../descriptors/descriptor-types.js";
|
|
4
|
+
import type { MemorixTarget } from "../mongo/types.js";
|
|
5
|
+
/** Default Xronox role names for Memorix entity/event databases (see README). */
|
|
6
|
+
export declare const DEFAULT_MEMORIX_XRONOX_ROLES: Record<MemorixTarget, string>;
|
|
7
|
+
export declare function resolveMemorixXronoxRole(entity: MemorixEntityDescriptor, client: MemorixRetrievalClient): string;
|
|
8
|
+
export declare function memorixXronoxRead(client: MemorixRetrievalClient, params: Omit<XronoxReadParams, "dataType" | "sourceType" | "subSourceType"> & {
|
|
9
|
+
source: string;
|
|
10
|
+
entity: MemorixEntityDescriptor;
|
|
11
|
+
role?: string;
|
|
12
|
+
}): Promise<Record<string, unknown>[]>;
|
|
13
|
+
//# sourceMappingURL=xronox-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xronox-read.d.ts","sourceRoot":"","sources":["../../src/data/xronox-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAGtE,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAGR;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC,GAAG;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAyBpC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { resolveEntityTarget } from "../mongo/resolve-db.js";
|
|
2
|
+
/** Default Xronox role names for Memorix entity/event databases (see README). */
|
|
3
|
+
export const DEFAULT_MEMORIX_XRONOX_ROLES = {
|
|
4
|
+
entity: "operational",
|
|
5
|
+
event: "logs",
|
|
6
|
+
};
|
|
7
|
+
export function resolveMemorixXronoxRole(entity, client) {
|
|
8
|
+
const target = resolveEntityTarget(entity);
|
|
9
|
+
return client.xronoxRoles?.[target] ?? DEFAULT_MEMORIX_XRONOX_ROLES[target];
|
|
10
|
+
}
|
|
11
|
+
export async function memorixXronoxRead(client, params) {
|
|
12
|
+
const { entity, role: roleOverride, ...readParams } = params;
|
|
13
|
+
const fullParams = {
|
|
14
|
+
dataType: "metadata",
|
|
15
|
+
sourceType: "database",
|
|
16
|
+
subSourceType: "mongo",
|
|
17
|
+
role: roleOverride ?? resolveMemorixXronoxRole(entity, client),
|
|
18
|
+
...readParams,
|
|
19
|
+
};
|
|
20
|
+
if (client.xronox.readArray) {
|
|
21
|
+
const rows = await client.xronox.readArray(fullParams);
|
|
22
|
+
return rows.map((r) => r);
|
|
23
|
+
}
|
|
24
|
+
const result = await client.xronox.read(fullParams);
|
|
25
|
+
if (Array.isArray(result)) {
|
|
26
|
+
return result.map((r) => r);
|
|
27
|
+
}
|
|
28
|
+
const rows = [];
|
|
29
|
+
for await (const row of result) {
|
|
30
|
+
rows.push(row);
|
|
31
|
+
}
|
|
32
|
+
return rows;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=xronox-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xronox-read.js","sourceRoot":"","sources":["../../src/data/xronox-read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GAAkC;IACzE,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,MAA+B,EAC/B,MAA8B;IAE9B,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAA8B,EAC9B,MAIC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAE7D,MAAM,UAAU,GAAqB;QACnC,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,UAAU;QACtB,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,YAAY,IAAI,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9D,GAAG,UAAU;KACd,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const MEMORIX_APP_ID = "memorix";
|
|
2
|
+
export declare const MEMORIX_ENTITY_DESCRIPTORS_CATALOG = "memorix-entity-descriptors";
|
|
3
|
+
export declare const MEMORIX_LIST_DESCRIPTORS_CATALOG = "memorix-list-descriptors";
|
|
4
|
+
export declare const MEMORIX_ITEM_DESCRIPTORS_CATALOG = "memorix-item-descriptors";
|
|
5
|
+
//# sourceMappingURL=catalog-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-ids.d.ts","sourceRoot":"","sources":["../../src/descriptors/catalog-ids.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,eAAO,MAAM,kCAAkC,+BAA+B,CAAC;AAC/E,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAC3E,eAAO,MAAM,gCAAgC,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const MEMORIX_APP_ID = "memorix";
|
|
2
|
+
export const MEMORIX_ENTITY_DESCRIPTORS_CATALOG = "memorix-entity-descriptors";
|
|
3
|
+
export const MEMORIX_LIST_DESCRIPTORS_CATALOG = "memorix-list-descriptors";
|
|
4
|
+
export const MEMORIX_ITEM_DESCRIPTORS_CATALOG = "memorix-item-descriptors";
|
|
5
|
+
//# sourceMappingURL=catalog-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-ids.js","sourceRoot":"","sources":["../../src/descriptors/catalog-ids.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,MAAM,CAAC,MAAM,kCAAkC,GAAG,4BAA4B,CAAC;AAC/E,MAAM,CAAC,MAAM,gCAAgC,GAAG,0BAA0B,CAAC;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
export type MemorixContentObject = {
|
|
2
|
+
contentKey: string;
|
|
3
|
+
metadata?: Record<string, unknown>;
|
|
4
|
+
preview?: string;
|
|
5
|
+
};
|
|
6
|
+
export type MemorixContentStorageDescriptor = {
|
|
7
|
+
provider: "gcs" | "s3";
|
|
8
|
+
bucket: string;
|
|
9
|
+
prefix?: string;
|
|
10
|
+
maxBytes?: number;
|
|
11
|
+
encoding?: "utf8";
|
|
12
|
+
credentialsRef?: string;
|
|
13
|
+
};
|
|
14
|
+
export type MemorixContentDefaults = {
|
|
15
|
+
format?: "markdown" | "text";
|
|
16
|
+
storage?: MemorixContentStorageDescriptor;
|
|
17
|
+
maxBytes?: number;
|
|
18
|
+
encoding?: "utf8";
|
|
19
|
+
};
|
|
20
|
+
export type MemorixMultiMatchRule = {
|
|
21
|
+
strategy: "last" | "first" | "all" | "error" | "ignore";
|
|
22
|
+
effectiveDatePath?: string;
|
|
23
|
+
fallbackEffectiveDatePaths?: string[];
|
|
24
|
+
};
|
|
25
|
+
export type MemorixContentTypeDescriptor = {
|
|
26
|
+
postfix: string;
|
|
27
|
+
collection?: string;
|
|
28
|
+
dataRoot?: string;
|
|
29
|
+
isCanonical?: boolean;
|
|
30
|
+
effectiveDatePath?: string;
|
|
31
|
+
fallbackEffectiveDatePaths?: string[];
|
|
32
|
+
defaultMultiMatch?: {
|
|
33
|
+
extendFields?: MemorixMultiMatchRule["strategy"];
|
|
34
|
+
array?: MemorixMultiMatchRule["strategy"];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export type MemorixPropertyContentDescriptor = {
|
|
38
|
+
enabled: true;
|
|
39
|
+
objectType: "memorix-content-object";
|
|
40
|
+
format?: "markdown" | "text";
|
|
41
|
+
storage?: MemorixContentStorageDescriptor;
|
|
42
|
+
listBehavior?: {
|
|
43
|
+
returnPreview?: boolean;
|
|
44
|
+
returnMetadata?: boolean;
|
|
45
|
+
returnContentKey?: boolean;
|
|
46
|
+
fetchContent?: false;
|
|
47
|
+
};
|
|
48
|
+
itemBehavior?: {
|
|
49
|
+
returnPreview?: boolean;
|
|
50
|
+
returnMetadata?: boolean;
|
|
51
|
+
returnContentKey?: boolean;
|
|
52
|
+
fetchContentWhenRequested?: boolean;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export type MemorixPropertyDescriptor = {
|
|
56
|
+
label: string;
|
|
57
|
+
source: {
|
|
58
|
+
contentType: string;
|
|
59
|
+
path: string;
|
|
60
|
+
};
|
|
61
|
+
humanReadable: boolean;
|
|
62
|
+
sortable?: boolean;
|
|
63
|
+
filterable?: boolean;
|
|
64
|
+
list?: boolean;
|
|
65
|
+
item?: boolean;
|
|
66
|
+
content?: MemorixPropertyContentDescriptor;
|
|
67
|
+
valueType?: "string" | "number" | "boolean" | "date" | "datetime" | "enum" | "object" | "array" | "content";
|
|
68
|
+
format?: string;
|
|
69
|
+
metadata?: Record<string, unknown>;
|
|
70
|
+
};
|
|
71
|
+
export type MemorixRelationDescriptor = {
|
|
72
|
+
targetEntity: string;
|
|
73
|
+
type: "oneToOne" | "oneToMany" | "manyToOne" | "manyToMany";
|
|
74
|
+
source: {
|
|
75
|
+
contentType: string;
|
|
76
|
+
path: string;
|
|
77
|
+
};
|
|
78
|
+
target: {
|
|
79
|
+
contentType: string;
|
|
80
|
+
path: string;
|
|
81
|
+
};
|
|
82
|
+
defaultMode?: "extendFields" | "array";
|
|
83
|
+
defaultArrayProperty?: string;
|
|
84
|
+
targetFields?: string[];
|
|
85
|
+
};
|
|
86
|
+
export type MemorixEntityDescriptor = {
|
|
87
|
+
id: string;
|
|
88
|
+
entityName: string;
|
|
89
|
+
/** Selects memorix-entities vs memorix-events via env (default: entity). */
|
|
90
|
+
target?: "entity" | "event";
|
|
91
|
+
collectionPrefix: string;
|
|
92
|
+
identity: {
|
|
93
|
+
allowedIdFields: Array<"entityId" | "eventId">;
|
|
94
|
+
requiredExactlyOne: true;
|
|
95
|
+
defaultIdField: "entityId" | "eventId";
|
|
96
|
+
};
|
|
97
|
+
defaults: {
|
|
98
|
+
canonicalContentType: string;
|
|
99
|
+
dataRoot: string;
|
|
100
|
+
effectiveDatePath: string;
|
|
101
|
+
fallbackEffectiveDatePaths: string[];
|
|
102
|
+
};
|
|
103
|
+
contentDefaults?: MemorixContentDefaults;
|
|
104
|
+
contentTypes: Record<string, MemorixContentTypeDescriptor>;
|
|
105
|
+
properties: Record<string, MemorixPropertyDescriptor>;
|
|
106
|
+
relations?: Record<string, MemorixRelationDescriptor>;
|
|
107
|
+
};
|
|
108
|
+
export type MemorixDescriptorFilter = {
|
|
109
|
+
property: string;
|
|
110
|
+
operator?: MemorixFilterOperator;
|
|
111
|
+
value?: unknown;
|
|
112
|
+
default?: unknown;
|
|
113
|
+
};
|
|
114
|
+
export type MemorixFilterOperator = "eq" | "ne" | "in" | "nin" | "gt" | "gte" | "lt" | "lte" | "exists" | "regex";
|
|
115
|
+
export type MemorixFilterInput = {
|
|
116
|
+
property: string;
|
|
117
|
+
operator: MemorixFilterOperator;
|
|
118
|
+
value?: unknown;
|
|
119
|
+
};
|
|
120
|
+
export type MemorixContentExtensionDescriptor = {
|
|
121
|
+
contentType: string;
|
|
122
|
+
mode: "extendFields" | "array";
|
|
123
|
+
join: {
|
|
124
|
+
by: "entityId" | "eventId";
|
|
125
|
+
};
|
|
126
|
+
arrayProperty?: string;
|
|
127
|
+
multiMatch?: MemorixMultiMatchRule;
|
|
128
|
+
onMissing?: {
|
|
129
|
+
includeRow?: boolean;
|
|
130
|
+
defaultValue?: unknown;
|
|
131
|
+
};
|
|
132
|
+
fields?: Record<string, string>;
|
|
133
|
+
};
|
|
134
|
+
export type MemorixRelationIncludeDescriptor = {
|
|
135
|
+
relation: string;
|
|
136
|
+
mode?: "extendFields" | "array";
|
|
137
|
+
arrayProperty?: string;
|
|
138
|
+
limit?: number;
|
|
139
|
+
fields?: string[];
|
|
140
|
+
};
|
|
141
|
+
export type MemorixListDescriptor = {
|
|
142
|
+
id: string;
|
|
143
|
+
entity: string;
|
|
144
|
+
title?: string;
|
|
145
|
+
leadingContentType: string;
|
|
146
|
+
pagination: {
|
|
147
|
+
enabled: true;
|
|
148
|
+
defaultLimit: number;
|
|
149
|
+
maxLimit: number;
|
|
150
|
+
};
|
|
151
|
+
filters?: MemorixDescriptorFilter[];
|
|
152
|
+
fields: string[];
|
|
153
|
+
extensions?: MemorixContentExtensionDescriptor[];
|
|
154
|
+
includeRelations?: MemorixRelationIncludeDescriptor[];
|
|
155
|
+
allowedSorts?: string[];
|
|
156
|
+
defaultSort?: {
|
|
157
|
+
property: string;
|
|
158
|
+
direction: "asc" | "desc";
|
|
159
|
+
};
|
|
160
|
+
allowSortDrivenLeadingOverride?: boolean;
|
|
161
|
+
};
|
|
162
|
+
export type MemorixItemDescriptor = {
|
|
163
|
+
id: string;
|
|
164
|
+
entity: string;
|
|
165
|
+
title?: string;
|
|
166
|
+
identity: {
|
|
167
|
+
idField: "entityId" | "eventId";
|
|
168
|
+
};
|
|
169
|
+
contentTypes: Array<{
|
|
170
|
+
contentType: string;
|
|
171
|
+
required: boolean;
|
|
172
|
+
multiMatch?: MemorixMultiMatchRule;
|
|
173
|
+
}>;
|
|
174
|
+
sections: Array<{
|
|
175
|
+
id: string;
|
|
176
|
+
title: string;
|
|
177
|
+
fields: string[];
|
|
178
|
+
}>;
|
|
179
|
+
includeRelations?: MemorixRelationIncludeDescriptor[];
|
|
180
|
+
content?: {
|
|
181
|
+
allowed: true;
|
|
182
|
+
defaultIncludeFullContent?: boolean;
|
|
183
|
+
allowedFields?: string[];
|
|
184
|
+
maxBytes?: number;
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=descriptor-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-types.d.ts","sourceRoot":"","sources":["../../src/descriptors/descriptor-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptor-types.js","sourceRoot":"","sources":["../../src/descriptors/descriptor-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MemorixRetrievalClient } from "../client/types.js";
|
|
2
|
+
import type { MemorixEntityDescriptor } from "./descriptor-types.js";
|
|
3
|
+
export declare function loadMemorixEntityDescriptor(client: MemorixRetrievalClient, entityDescriptorId: string): Promise<MemorixEntityDescriptor>;
|
|
4
|
+
//# sourceMappingURL=load-entity-descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-entity-descriptor.d.ts","sourceRoot":"","sources":["../../src/descriptors/load-entity-descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAMrE,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,sBAAsB,EAC9B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAoBlC"}
|