@x12i/memorix-descriptors 0.1.0 → 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 +386 -41
- package/dist/admin/create-admin.d.ts +5 -2
- package/dist/admin/create-admin.d.ts.map +1 -1
- package/dist/admin/create-admin.js +19 -4
- package/dist/admin/create-admin.js.map +1 -1
- package/dist/audit/log.d.ts +17 -0
- package/dist/audit/log.d.ts.map +1 -0
- package/dist/audit/log.js +12 -0
- package/dist/audit/log.js.map +1 -0
- package/dist/catalog/ensure-catalogs.d.ts +3 -0
- package/dist/catalog/ensure-catalogs.d.ts.map +1 -0
- package/dist/catalog/ensure-catalogs.js +32 -0
- package/dist/catalog/ensure-catalogs.js.map +1 -0
- package/dist/catalox/client.d.ts.map +1 -1
- package/dist/catalox/client.js +22 -1
- package/dist/catalox/client.js.map +1 -1
- package/dist/catalox/version.d.ts +8 -0
- package/dist/catalox/version.d.ts.map +1 -0
- package/dist/catalox/version.js +33 -0
- package/dist/catalox/version.js.map +1 -0
- package/dist/cli/index.js +319 -89
- package/dist/cli/index.js.map +1 -1
- package/dist/collections/mongo-create.d.ts +6 -0
- package/dist/collections/mongo-create.d.ts.map +1 -0
- package/dist/collections/mongo-create.js +20 -0
- package/dist/collections/mongo-create.js.map +1 -0
- package/dist/collections/resolve.d.ts +1 -2
- package/dist/collections/resolve.d.ts.map +1 -1
- package/dist/collections/resolve.js +24 -19
- package/dist/collections/resolve.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/mutations/common.d.ts +4 -1
- package/dist/mutations/common.d.ts.map +1 -1
- package/dist/mutations/common.js +5 -2
- package/dist/mutations/common.js.map +1 -1
- package/dist/mutations/content-type.d.ts.map +1 -1
- package/dist/mutations/content-type.js +24 -17
- package/dist/mutations/content-type.js.map +1 -1
- package/dist/mutations/entity.d.ts.map +1 -1
- package/dist/mutations/entity.js +30 -30
- package/dist/mutations/entity.js.map +1 -1
- package/dist/mutations/execute.d.ts +19 -0
- package/dist/mutations/execute.d.ts.map +1 -0
- package/dist/mutations/execute.js +131 -0
- package/dist/mutations/execute.js.map +1 -0
- package/dist/mutations/item.d.ts.map +1 -1
- package/dist/mutations/item.js +23 -17
- package/dist/mutations/item.js.map +1 -1
- package/dist/mutations/list.d.ts.map +1 -1
- package/dist/mutations/list.js +23 -17
- package/dist/mutations/list.js.map +1 -1
- package/dist/mutations/mapping.d.ts.map +1 -1
- package/dist/mutations/mapping.js +23 -17
- package/dist/mutations/mapping.js.map +1 -1
- package/dist/mutations/property.d.ts.map +1 -1
- package/dist/mutations/property.js +25 -36
- package/dist/mutations/property.js.map +1 -1
- package/dist/mutations/relation.d.ts.map +1 -1
- package/dist/mutations/relation.js +23 -26
- package/dist/mutations/relation.js.map +1 -1
- package/dist/mutations/rename-entity.d.ts +11 -0
- package/dist/mutations/rename-entity.d.ts.map +1 -0
- package/dist/mutations/rename-entity.js +181 -0
- package/dist/mutations/rename-entity.js.map +1 -0
- package/dist/reconcile/index.d.ts +8 -0
- package/dist/reconcile/index.d.ts.map +1 -1
- package/dist/reconcile/index.js +67 -2
- package/dist/reconcile/index.js.map +1 -1
- package/dist/tests/fixtures.d.ts +54 -0
- package/dist/tests/fixtures.d.ts.map +1 -0
- package/dist/tests/fixtures.js +79 -0
- package/dist/tests/fixtures.js.map +1 -0
- package/dist/tests/helpers/live.d.ts +7 -0
- package/dist/tests/helpers/live.d.ts.map +1 -0
- package/dist/tests/helpers/live.js +31 -0
- package/dist/tests/helpers/live.js.map +1 -0
- package/dist/tests/integrity.test.d.ts +2 -0
- package/dist/tests/integrity.test.d.ts.map +1 -0
- package/dist/tests/integrity.test.js +49 -0
- package/dist/tests/integrity.test.js.map +1 -0
- package/dist/tests/live/catalox.live.test.d.ts +2 -0
- package/dist/tests/live/catalox.live.test.d.ts.map +1 -0
- package/dist/tests/live/catalox.live.test.js +110 -0
- package/dist/tests/live/catalox.live.test.js.map +1 -0
- package/dist/tests/mutations.test.d.ts +2 -0
- package/dist/tests/mutations.test.d.ts.map +1 -0
- package/dist/tests/mutations.test.js +99 -0
- package/dist/tests/mutations.test.js.map +1 -0
- package/dist/tests/seeds.test.d.ts +2 -0
- package/dist/tests/seeds.test.d.ts.map +1 -0
- package/dist/tests/seeds.test.js +57 -0
- package/dist/tests/seeds.test.js.map +1 -0
- package/dist/tests/setup.d.ts +2 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/tests/setup.js +6 -0
- package/dist/tests/setup.js.map +1 -0
- package/dist/tests/validation.test.js +3 -62
- package/dist/tests/validation.test.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/tests/helpers/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAGlF,MAAM,UAAU,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACrE,OAAO,CACL,GAAG,CAAC,oBAAoB,KAAK,GAAG;QAChC,GAAG,CAAC,8BAA8B,KAAK,GAAG,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,IAAI,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,0EAA0E,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,KAAK,GAAG,MAAM,8BAA8B,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,IAAI,WAA+C,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,wBAAwB,EAAE,CAAC;QACjC,WAAW,GAAG,MAAM,mCAAmC,CAAC;YACtD,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,OAAO,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity.test.d.ts","sourceRoot":"","sources":["../../src/tests/integrity.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { validateDescriptorSnapshot } from "../integrity/validate.js";
|
|
3
|
+
import { assetsEntityFixture, sampleSnapshot } from "./fixtures.js";
|
|
4
|
+
describe("validateDescriptorSnapshot", () => {
|
|
5
|
+
it("accepts a connected minimal graph", () => {
|
|
6
|
+
const report = validateDescriptorSnapshot(sampleSnapshot());
|
|
7
|
+
expect(report.valid).toBe(true);
|
|
8
|
+
expect(report.errors).toHaveLength(0);
|
|
9
|
+
});
|
|
10
|
+
it("flags missing default list descriptor", () => {
|
|
11
|
+
const snapshot = sampleSnapshot();
|
|
12
|
+
snapshot.entityDescriptors.assets = {
|
|
13
|
+
...assetsEntityFixture,
|
|
14
|
+
defaultListDescriptorId: "missing-list",
|
|
15
|
+
};
|
|
16
|
+
const report = validateDescriptorSnapshot(snapshot);
|
|
17
|
+
expect(report.valid).toBe(false);
|
|
18
|
+
expect(report.errors.some((e) => e.code === "MISSING_DEFAULT_LIST")).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
it("flags non-human-readable list fields", () => {
|
|
21
|
+
const snapshot = sampleSnapshot();
|
|
22
|
+
snapshot.listDescriptors["assets-main-list"] = {
|
|
23
|
+
...snapshot.listDescriptors["assets-main-list"],
|
|
24
|
+
fields: ["hostName"],
|
|
25
|
+
};
|
|
26
|
+
const report = validateDescriptorSnapshot(snapshot);
|
|
27
|
+
expect(report.valid).toBe(false);
|
|
28
|
+
expect(report.errors.some((e) => e.code === "NON_HUMAN_READABLE_LIST_FIELD" ||
|
|
29
|
+
e.code === "INVALID_LIST_DESCRIPTOR")).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it("flags unknown relation target", () => {
|
|
32
|
+
const snapshot = sampleSnapshot();
|
|
33
|
+
snapshot.entityDescriptors.assets = {
|
|
34
|
+
...assetsEntityFixture,
|
|
35
|
+
relations: {
|
|
36
|
+
toMissing: {
|
|
37
|
+
targetEntity: "not-real",
|
|
38
|
+
type: "oneToMany",
|
|
39
|
+
source: { contentType: "snapshots", path: "data.id" },
|
|
40
|
+
target: { contentType: "snapshots", path: "data.id" },
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const report = validateDescriptorSnapshot(snapshot);
|
|
45
|
+
expect(report.valid).toBe(false);
|
|
46
|
+
expect(report.orphans.danglingReferences.length).toBeGreaterThan(0);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=integrity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrity.test.js","sourceRoot":"","sources":["../../src/tests/integrity.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,0BAA0B,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG;YAClC,GAAG,mBAAmB;YACtB,uBAAuB,EAAE,cAAc;SACxC,CAAC;QACF,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAAG;YAC7C,GAAG,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAE;YAChD,MAAM,EAAE,CAAC,UAAU,CAAC;SACrB,CAAC;QACF,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CACJ,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,+BAA+B;YAC1C,CAAC,CAAC,IAAI,KAAK,yBAAyB,CACvC,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG;YAClC,GAAG,mBAAmB;YACtB,SAAS,EAAE;gBACT,SAAS,EAAE;oBACT,YAAY,EAAE,UAAU;oBACxB,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACrD,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;iBACtD;aACF;SACF,CAAC;QACF,MAAM,MAAM,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalox.live.test.d.ts","sourceRoot":"","sources":["../../../src/tests/live/catalox.live.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { MEMORIX_ENTITY_DESCRIPTORS_CATALOG, MEMORIX_ITEM_DESCRIPTORS_CATALOG, MEMORIX_LIST_DESCRIPTORS_CATALOG, } from "../../catalog/ids.js";
|
|
3
|
+
import { createLiveAdmin, isLiveTestsEnabled, liveSkipReason, smokeEntityName, } from "../helpers/live.js";
|
|
4
|
+
import { createMemorixDescriptorAdminFromEnv } from "../../admin/create-admin.js";
|
|
5
|
+
const live = isLiveTestsEnabled();
|
|
6
|
+
const skipReason = liveSkipReason() ?? undefined;
|
|
7
|
+
describe.runIf(live)("live catalox / memorix-descriptors", () => {
|
|
8
|
+
it("loads admin and validates deployed descriptor graph", async () => {
|
|
9
|
+
const admin = await createLiveAdmin();
|
|
10
|
+
const report = await admin.validateMemorixDescriptors();
|
|
11
|
+
expect(report.counts.entityDescriptors).toBeGreaterThan(0);
|
|
12
|
+
expect(report.counts.listDescriptors).toBeGreaterThan(0);
|
|
13
|
+
expect(report.counts.itemDescriptors).toBeGreaterThan(0);
|
|
14
|
+
if (!report.valid) {
|
|
15
|
+
console.warn("Integrity warnings/errors (graph may have known legacy issues):", JSON.stringify({ errorCount: report.errors.length, warningCount: report.warnings.length }, null, 2));
|
|
16
|
+
}
|
|
17
|
+
expect(report.counts.entityDescriptors).toBeGreaterThanOrEqual(3);
|
|
18
|
+
}, 120_000);
|
|
19
|
+
it("loads smoke entity descriptor from Catalox", async () => {
|
|
20
|
+
const admin = await createLiveAdmin();
|
|
21
|
+
const entityName = smokeEntityName();
|
|
22
|
+
const snapshot = await admin.loadSnapshot();
|
|
23
|
+
const entity = snapshot.entityDescriptors[entityName];
|
|
24
|
+
expect(entity, `entity descriptor "${entityName}"`).toBeDefined();
|
|
25
|
+
expect(entity?.defaultListDescriptorId).toBeTruthy();
|
|
26
|
+
expect(entity?.defaultItemDescriptorId).toBeTruthy();
|
|
27
|
+
const listId = String(entity?.defaultListDescriptorId);
|
|
28
|
+
const itemId = String(entity?.defaultItemDescriptorId);
|
|
29
|
+
expect(snapshot.listDescriptors[listId]).toBeDefined();
|
|
30
|
+
expect(snapshot.itemDescriptors[itemId]).toBeDefined();
|
|
31
|
+
}, 60_000);
|
|
32
|
+
it("lists catalog items for entity, list, and item descriptors", async () => {
|
|
33
|
+
const admin = await createLiveAdmin();
|
|
34
|
+
const entityPage = await admin.catalox.listCatalogItems(MEMORIX_ENTITY_DESCRIPTORS_CATALOG, { limit: 50 });
|
|
35
|
+
expect(entityPage.listOutcome).not.toBe("mapping_blocked");
|
|
36
|
+
expect(entityPage.items.length).toBeGreaterThan(0);
|
|
37
|
+
const listPage = await admin.catalox.listCatalogItems(MEMORIX_LIST_DESCRIPTORS_CATALOG, { limit: 50 });
|
|
38
|
+
expect(listPage.items.length).toBeGreaterThan(0);
|
|
39
|
+
const itemPage = await admin.catalox.listCatalogItems(MEMORIX_ITEM_DESCRIPTORS_CATALOG, { limit: 50 });
|
|
40
|
+
expect(itemPage.items.length).toBeGreaterThan(0);
|
|
41
|
+
}, 60_000);
|
|
42
|
+
it("builds descriptor graph with default-list edges", async () => {
|
|
43
|
+
const admin = await createLiveAdmin();
|
|
44
|
+
const graph = await admin.getDescriptorGraph();
|
|
45
|
+
const entityName = smokeEntityName();
|
|
46
|
+
expect(graph.nodes.some((n) => n.id === entityName && n.kind === "entity")).toBe(true);
|
|
47
|
+
expect(graph.edges.some((e) => e.from === entityName && e.kind === "default-list")).toBe(true);
|
|
48
|
+
}, 60_000);
|
|
49
|
+
it("resolves collection name for smoke entity canonical content type", async () => {
|
|
50
|
+
const admin = await createLiveAdmin();
|
|
51
|
+
const entityName = smokeEntityName();
|
|
52
|
+
const snapshot = await admin.loadSnapshot();
|
|
53
|
+
const entity = snapshot.entityDescriptors[entityName];
|
|
54
|
+
const canonical = String(entity.defaults?.canonicalContentType ??
|
|
55
|
+
"snapshots");
|
|
56
|
+
const collection = await admin.resolveCollection(entityName, canonical);
|
|
57
|
+
expect(collection).toBeTruthy();
|
|
58
|
+
expect(collection).toMatch(/^[a-z0-9-]+$/);
|
|
59
|
+
}, 60_000);
|
|
60
|
+
it("dry-run addProperty on smoke entity does not write", async () => {
|
|
61
|
+
const admin = await createLiveAdmin();
|
|
62
|
+
const entityName = smokeEntityName();
|
|
63
|
+
const snapshot = await admin.loadSnapshot();
|
|
64
|
+
const entity = snapshot.entityDescriptors[entityName];
|
|
65
|
+
const canonical = String(entity.defaults?.canonicalContentType ??
|
|
66
|
+
Object.keys(entity.contentTypes)[0] ??
|
|
67
|
+
"snapshots");
|
|
68
|
+
const propKey = `_live-test-prop-${Date.now()}`;
|
|
69
|
+
const result = await admin.addProperty(entityName, propKey, {
|
|
70
|
+
label: "Live Test Property",
|
|
71
|
+
source: { contentType: canonical, path: "data._live_test" },
|
|
72
|
+
humanReadable: true,
|
|
73
|
+
}, { dryRun: true, addToDefaultList: false, addToDefaultItem: false });
|
|
74
|
+
expect(result.dryRun).toBe(true);
|
|
75
|
+
expect(result.cataloxWrites.length).toBeGreaterThan(0);
|
|
76
|
+
expect(result.errors.some((e) => ["ENTITY_NOT_FOUND", "VALIDATION_FAILED", "UNKNOWN_CONTENT_TYPE"].includes(e.code))).toBe(false);
|
|
77
|
+
}, 60_000);
|
|
78
|
+
it("reconcileDescriptorsWithMongo returns inventory when xronox is configured", async () => {
|
|
79
|
+
if (!process.env.MONGO_URI?.trim()) {
|
|
80
|
+
console.warn("Skipping reconcile — MONGO_URI not set in .env");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const admin = await createMemorixDescriptorAdminFromEnv();
|
|
84
|
+
try {
|
|
85
|
+
const result = await admin.reconcileDescriptorsWithMongo();
|
|
86
|
+
expect(result.inventory.entries).toBeDefined();
|
|
87
|
+
expect(Array.isArray(result.suggestions)).toBe(true);
|
|
88
|
+
expect(result.inventory.scannedAt).toBeTruthy();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
92
|
+
if (message.includes("data tier") ||
|
|
93
|
+
message.includes("xronox") ||
|
|
94
|
+
message.includes("Xronox")) {
|
|
95
|
+
console.warn("Skipping reconcile assertion — Xronox not configured:", message);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
throw err;
|
|
99
|
+
}
|
|
100
|
+
}, 180_000);
|
|
101
|
+
});
|
|
102
|
+
describe("live test gate", () => {
|
|
103
|
+
it.skipIf(live)("skipped — live tests disabled", () => {
|
|
104
|
+
expect(skipReason).toBeTruthy();
|
|
105
|
+
});
|
|
106
|
+
it.runIf(!live)("documents how to enable live tests", () => {
|
|
107
|
+
expect(liveSkipReason()).toMatch(/FIRESTORE_LIVE_TESTS/);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=catalox.live.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalox.live.test.js","sourceRoot":"","sources":["../../../src/tests/live/catalox.live.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutations.test.d.ts","sourceRoot":"","sources":["../../src/tests/mutations.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { addContentType } from "../mutations/content-type.js";
|
|
3
|
+
import { addProperty, removeProperty } from "../mutations/property.js";
|
|
4
|
+
import { registerEntityDescriptor } from "../mutations/entity.js";
|
|
5
|
+
import { emptySnapshot, sampleSnapshot } from "./fixtures.js";
|
|
6
|
+
function mockCtx(snapshot = sampleSnapshot()) {
|
|
7
|
+
return {
|
|
8
|
+
catalox: {},
|
|
9
|
+
env: process.env,
|
|
10
|
+
loadSnapshot: async () => snapshot,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
describe("content type mutations (dry-run)", () => {
|
|
14
|
+
it("rejects duplicate content type keys", async () => {
|
|
15
|
+
const result = await addContentType(mockCtx(), "assets", { key: "snapshots", postfix: "snapshots" }, { dryRun: true });
|
|
16
|
+
expect(result.ok).toBe(false);
|
|
17
|
+
expect(result.errors[0]?.code).toBe("CONTENT_TYPE_EXISTS");
|
|
18
|
+
});
|
|
19
|
+
it("plans add of a new content type", async () => {
|
|
20
|
+
const result = await addContentType(mockCtx(), "assets", { key: "enrichment", postfix: "enrichment" }, { dryRun: true, skipMongo: true });
|
|
21
|
+
expect(result.ok).toBe(true);
|
|
22
|
+
expect(result.cataloxWrites).toHaveLength(1);
|
|
23
|
+
expect(result.data?.key).toBe("enrichment");
|
|
24
|
+
});
|
|
25
|
+
it("blocks removal when content type is referenced by a property", async () => {
|
|
26
|
+
const snapshot = sampleSnapshot();
|
|
27
|
+
const assets = snapshot.entityDescriptors.assets;
|
|
28
|
+
snapshot.entityDescriptors.assets = {
|
|
29
|
+
...assets,
|
|
30
|
+
properties: {
|
|
31
|
+
...assets.properties,
|
|
32
|
+
enrichmentFlag: {
|
|
33
|
+
label: "Enrichment",
|
|
34
|
+
source: { contentType: "analysis", path: "data.flag" },
|
|
35
|
+
humanReadable: true,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const result = await import("../mutations/content-type.js").then((m) => m.removeContentType(mockCtx(snapshot), "assets", "analysis", { dryRun: true }));
|
|
40
|
+
expect(result.ok).toBe(false);
|
|
41
|
+
expect(result.errors[0]?.code).toBe("CONTENT_TYPE_IN_USE");
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe("property mutations (dry-run)", () => {
|
|
45
|
+
it("adds a property and cascades to default list/item", async () => {
|
|
46
|
+
const result = await addProperty(mockCtx(), "assets", "agentType", {
|
|
47
|
+
label: "Agent Type",
|
|
48
|
+
source: { contentType: "snapshots", path: "data.agent_type" },
|
|
49
|
+
humanReadable: true,
|
|
50
|
+
}, { dryRun: true, addToDefaultList: true, addToDefaultItem: true });
|
|
51
|
+
expect(result.ok).toBe(true);
|
|
52
|
+
expect(result.cataloxWrites.length).toBeGreaterThanOrEqual(1);
|
|
53
|
+
});
|
|
54
|
+
it("blocks removal when property path is used in a relation", async () => {
|
|
55
|
+
const snapshot = sampleSnapshot();
|
|
56
|
+
snapshot.entityDescriptors.assets = {
|
|
57
|
+
...snapshot.entityDescriptors.assets,
|
|
58
|
+
relations: {
|
|
59
|
+
linked: {
|
|
60
|
+
targetEntity: "assets",
|
|
61
|
+
type: "oneToMany",
|
|
62
|
+
source: { contentType: "snapshots", path: "data.ipAddress" },
|
|
63
|
+
target: { contentType: "snapshots", path: "data.id" },
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
const result = await removeProperty(mockCtx(snapshot), "assets", "ipAddress", { dryRun: true });
|
|
68
|
+
expect(result.ok).toBe(false);
|
|
69
|
+
expect(result.errors[0]?.code).toBe("PROPERTY_IN_RELATION");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe("registerEntityDescriptor (dry-run)", () => {
|
|
73
|
+
it("rejects duplicate entity registration", async () => {
|
|
74
|
+
const result = await registerEntityDescriptor(mockCtx(), {
|
|
75
|
+
entityName: "assets",
|
|
76
|
+
target: "entity",
|
|
77
|
+
collectionPrefix: "assets",
|
|
78
|
+
canonicalContentType: { key: "snapshots", postfix: "snapshots" },
|
|
79
|
+
}, { dryRun: true });
|
|
80
|
+
expect(result.ok).toBe(false);
|
|
81
|
+
expect(result.errors[0]?.code).toBe("ENTITY_EXISTS");
|
|
82
|
+
});
|
|
83
|
+
it("registers a new knowledge entity graph in dry-run", async () => {
|
|
84
|
+
const result = await registerEntityDescriptor(mockCtx(emptySnapshot()), {
|
|
85
|
+
entityName: "impact-stories",
|
|
86
|
+
target: "knowledge",
|
|
87
|
+
collectionPrefix: "impact-stories",
|
|
88
|
+
canonicalContentType: {
|
|
89
|
+
key: "narratives",
|
|
90
|
+
postfix: "narratives",
|
|
91
|
+
collection: "impact-stories-narratives",
|
|
92
|
+
},
|
|
93
|
+
identity: { idField: "knowledgeId" },
|
|
94
|
+
}, { dryRun: true });
|
|
95
|
+
expect(result.ok).toBe(true);
|
|
96
|
+
expect(result.cataloxWrites).toHaveLength(3);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=mutations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutations.test.js","sourceRoot":"","sources":["../../src/tests/mutations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.test.d.ts","sourceRoot":"","sources":["../../src/tests/seeds.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { buildDescriptorSeedManifest } from "../seeds/index.js";
|
|
6
|
+
import { sampleSnapshot } from "./fixtures.js";
|
|
7
|
+
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
8
|
+
const retrievalInputs = resolve(packageRoot, "..", "memorix-retrieval", "catalox-seeds", "inputs");
|
|
9
|
+
describe("buildDescriptorSeedManifest", () => {
|
|
10
|
+
it("builds manifest items from an in-memory snapshot", async () => {
|
|
11
|
+
const manifest = await buildDescriptorSeedManifest(sampleSnapshot(), {
|
|
12
|
+
domains: ["network"],
|
|
13
|
+
agents: ["neo"],
|
|
14
|
+
});
|
|
15
|
+
expect(manifest.items.length).toBeGreaterThanOrEqual(3);
|
|
16
|
+
expect(manifest.items.some((i) => i.catalogId.includes("entity"))).toBe(true);
|
|
17
|
+
expect(manifest.catalogs.some((c) => c.catalogId.includes("entity"))).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it.skipIf(!existsSync(retrievalInputs))("round-trips memorix-retrieval catalox-seeds/inputs when sibling repo exists", async () => {
|
|
20
|
+
const { createSeedInputsReader, loadMemorixRetrievalSeedScopeFromInputs } = await import("@x12i/memorix-retrieval");
|
|
21
|
+
const readJson = createSeedInputsReader(retrievalInputs);
|
|
22
|
+
const scope = await loadMemorixRetrievalSeedScopeFromInputs(retrievalInputs);
|
|
23
|
+
const snapshot = {
|
|
24
|
+
entityDescriptors: {},
|
|
25
|
+
listDescriptors: {},
|
|
26
|
+
itemDescriptors: {},
|
|
27
|
+
completionMappings: {},
|
|
28
|
+
};
|
|
29
|
+
for (const file of [
|
|
30
|
+
"entity-descriptors/assets.json",
|
|
31
|
+
"entity-descriptors/vulnerabilities.json",
|
|
32
|
+
"entity-descriptors/variabilities-groups.json",
|
|
33
|
+
"list-descriptors/assets-main-list.json",
|
|
34
|
+
"item-descriptors/asset-detail-item.json",
|
|
35
|
+
]) {
|
|
36
|
+
const data = await readJson(file);
|
|
37
|
+
const id = String(data.id);
|
|
38
|
+
if (file.startsWith("entity-descriptors/")) {
|
|
39
|
+
snapshot.entityDescriptors[id] = data;
|
|
40
|
+
}
|
|
41
|
+
else if (file.startsWith("list-descriptors/")) {
|
|
42
|
+
snapshot.listDescriptors[id] = data;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
snapshot.itemDescriptors[id] = data;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const manifest = await buildDescriptorSeedManifest(snapshot, scope);
|
|
49
|
+
expect(manifest.items.length).toBeGreaterThanOrEqual(5);
|
|
50
|
+
const entityIds = manifest.items
|
|
51
|
+
.filter((i) => i.catalogId.includes("entity"))
|
|
52
|
+
.map((i) => String(i.data.id));
|
|
53
|
+
expect(entityIds).toContain("assets");
|
|
54
|
+
expect(entityIds).toContain("vulnerabilities");
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=seeds.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.test.js","sourceRoot":"","sources":["../../src/tests/seeds.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/tests/setup.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { config } from "dotenv";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
5
|
+
config({ path: resolve(packageRoot, ".env") });
|
|
6
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tests/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjF,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -2,62 +2,8 @@ import { describe, expect, it } from "vitest";
|
|
|
2
2
|
import { defaultItemDescriptorId, defaultListDescriptorId, isKebabCase, singularizeEntityName, validateMemorixEntityDescriptor, validateMemorixEntityListDescriptor, validateMemorixItemDescriptor, } from "../validation/descriptor-validation.js";
|
|
3
3
|
import { validateDescriptorSnapshot } from "../integrity/validate.js";
|
|
4
4
|
import { buildDescriptorGraph } from "../integrity/graph.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
assets: {
|
|
8
|
-
id: "assets",
|
|
9
|
-
entityName: "assets",
|
|
10
|
-
target: "entity",
|
|
11
|
-
defaultListDescriptorId: "assets-main-list",
|
|
12
|
-
defaultItemDescriptorId: "asset-detail-item",
|
|
13
|
-
collectionPrefix: "assets",
|
|
14
|
-
identity: {
|
|
15
|
-
allowedIdFields: ["entityId", "eventId"],
|
|
16
|
-
requiredExactlyOne: true,
|
|
17
|
-
defaultIdField: "entityId",
|
|
18
|
-
},
|
|
19
|
-
defaults: {
|
|
20
|
-
canonicalContentType: "snapshots",
|
|
21
|
-
dataRoot: "data",
|
|
22
|
-
effectiveDatePath: "capturedAt",
|
|
23
|
-
fallbackEffectiveDatePaths: [],
|
|
24
|
-
},
|
|
25
|
-
contentTypes: {
|
|
26
|
-
snapshots: {
|
|
27
|
-
postfix: "snapshots",
|
|
28
|
-
collection: "assets-snapshots",
|
|
29
|
-
isCanonical: true,
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
properties: {
|
|
33
|
-
ipAddress: {
|
|
34
|
-
label: "IP Address",
|
|
35
|
-
source: { contentType: "snapshots", path: "data.ip_address" },
|
|
36
|
-
humanReadable: true,
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
listDescriptors: {
|
|
42
|
-
"assets-main-list": {
|
|
43
|
-
id: "assets-main-list",
|
|
44
|
-
entity: "assets",
|
|
45
|
-
leadingContentType: "snapshots",
|
|
46
|
-
pagination: { enabled: true, defaultLimit: 50, maxLimit: 200 },
|
|
47
|
-
fields: ["ipAddress"],
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
itemDescriptors: {
|
|
51
|
-
"asset-detail-item": {
|
|
52
|
-
id: "asset-detail-item",
|
|
53
|
-
entity: "assets",
|
|
54
|
-
identity: { idField: "entityId" },
|
|
55
|
-
contentTypes: [{ contentType: "snapshots", required: true }],
|
|
56
|
-
sections: [{ id: "summary", title: "Summary", fields: ["ipAddress"] }],
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
completionMappings: {},
|
|
60
|
-
});
|
|
5
|
+
import { emptySnapshot, sampleSnapshot } from "./fixtures.js";
|
|
6
|
+
import { registerEntityDescriptor } from "../mutations/entity.js";
|
|
61
7
|
describe("descriptor validation helpers", () => {
|
|
62
8
|
it("validates kebab-case entity names", () => {
|
|
63
9
|
expect(isKebabCase("impact-stories")).toBe(true);
|
|
@@ -86,15 +32,10 @@ describe("descriptor validation helpers", () => {
|
|
|
86
32
|
});
|
|
87
33
|
describe("register entity plan", () => {
|
|
88
34
|
it("projects entity + default list/item writes", async () => {
|
|
89
|
-
const { registerEntityDescriptor } = await import("../mutations/entity.js");
|
|
90
|
-
const snapshot = sampleSnapshot();
|
|
91
|
-
snapshot.entityDescriptors = {};
|
|
92
|
-
snapshot.listDescriptors = {};
|
|
93
|
-
snapshot.itemDescriptors = {};
|
|
94
35
|
const result = await registerEntityDescriptor({
|
|
95
36
|
catalox: {},
|
|
96
37
|
env: process.env,
|
|
97
|
-
loadSnapshot: async () =>
|
|
38
|
+
loadSnapshot: async () => emptySnapshot(),
|
|
98
39
|
}, {
|
|
99
40
|
entityName: "impact-stories",
|
|
100
41
|
target: "knowledge",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/tests/validation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,WAAW,EACX,qBAAqB,EACrB,+BAA+B,EAC/B,mCAAmC,EACnC,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/tests/validation.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -61,6 +61,8 @@ export type DescriptorMutationError = {
|
|
|
61
61
|
};
|
|
62
62
|
export type DescriptorMutationResult<T = unknown> = {
|
|
63
63
|
ok: boolean;
|
|
64
|
+
/** Whether the projected full descriptor graph passes integrity validation. */
|
|
65
|
+
graphValid: boolean;
|
|
64
66
|
dryRun: boolean;
|
|
65
67
|
data?: T;
|
|
66
68
|
warnings: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x12i/memorix-descriptors",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Manage Memorix entity, list, and item descriptors in Catalox",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,20 +20,25 @@
|
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc",
|
|
23
|
-
"test": "vitest run",
|
|
23
|
+
"test": "vitest run --exclude 'src/tests/live/**'",
|
|
24
|
+
"test:live": "vitest run src/tests/live",
|
|
25
|
+
"test:all": "vitest run",
|
|
26
|
+
"validate:seeds": "node scripts/validate-descriptor-seeds.mjs",
|
|
24
27
|
"prepublishOnly": "npm run build"
|
|
25
28
|
},
|
|
26
29
|
"engines": {
|
|
27
30
|
"node": ">=18.0.0"
|
|
28
31
|
},
|
|
29
32
|
"dependencies": {
|
|
30
|
-
"@x12i/catalox": ">=5.0.0"
|
|
33
|
+
"@x12i/catalox": ">=5.0.0",
|
|
34
|
+
"mongodb": "^6.21.0"
|
|
31
35
|
},
|
|
32
36
|
"devDependencies": {
|
|
33
37
|
"@types/node": "^20.14.0",
|
|
34
38
|
"@x12i/catalox": "^5.0.0",
|
|
35
39
|
"@x12i/memorix-retrieval": "file:../memorix-retrieval",
|
|
36
40
|
"@x12i/xronox": "^3.9.0",
|
|
41
|
+
"dotenv": "^16.4.5",
|
|
37
42
|
"typescript": "^5.6.0",
|
|
38
43
|
"vitest": "^2.1.0"
|
|
39
44
|
},
|