@x12i/memorix-service 3.12.4 → 3.13.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 +1 -1
- package/dist/anomaly/catalog.d.ts +4 -0
- package/dist/anomaly/catalog.d.ts.map +1 -0
- package/dist/anomaly/catalog.js +315 -0
- package/dist/anomaly/catalog.js.map +1 -0
- package/dist/anomaly/descriptors.d.ts +11 -0
- package/dist/anomaly/descriptors.d.ts.map +1 -0
- package/dist/anomaly/descriptors.js +113 -0
- package/dist/anomaly/descriptors.js.map +1 -0
- package/dist/anomaly/index.d.ts +6 -0
- package/dist/anomaly/index.d.ts.map +1 -0
- package/dist/anomaly/index.js +5 -0
- package/dist/anomaly/index.js.map +1 -0
- package/dist/anomaly/records.d.ts +28 -0
- package/dist/anomaly/records.d.ts.map +1 -0
- package/dist/anomaly/records.js +384 -0
- package/dist/anomaly/records.js.map +1 -0
- package/dist/anomaly/types.d.ts +116 -0
- package/dist/anomaly/types.d.ts.map +1 -0
- package/dist/anomaly/types.js +24 -0
- package/dist/anomaly/types.js.map +1 -0
- package/dist/anomaly/values.d.ts +31 -0
- package/dist/anomaly/values.d.ts.map +1 -0
- package/dist/anomaly/values.js +171 -0
- package/dist/anomaly/values.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +12 -0
- package/dist/app.js.map +1 -1
- package/dist/catalog-bridge.d.ts +18 -0
- package/dist/catalog-bridge.d.ts.map +1 -1
- package/dist/catalog-bridge.js +85 -0
- package/dist/catalog-bridge.js.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -1
- package/dist/knowledge-upstream.d.ts +32 -0
- package/dist/knowledge-upstream.d.ts.map +1 -1
- package/dist/knowledge-upstream.js +86 -2
- package/dist/knowledge-upstream.js.map +1 -1
- package/dist/mcp/nexum-tools.d.ts +1 -1
- package/dist/mcp/nexum-tools.d.ts.map +1 -1
- package/dist/mcp/nexum-tools.js +39 -22
- package/dist/mcp/nexum-tools.js.map +1 -1
- package/dist/nexum-analysis/enqueue.d.ts.map +1 -1
- package/dist/nexum-analysis/enqueue.js +2 -1
- package/dist/nexum-analysis/enqueue.js.map +1 -1
- package/dist/nexum-analysis/knowledge-read.d.ts +45 -0
- package/dist/nexum-analysis/knowledge-read.d.ts.map +1 -0
- package/dist/nexum-analysis/knowledge-read.js +26 -0
- package/dist/nexum-analysis/knowledge-read.js.map +1 -0
- package/dist/openapi/openapi.json +18354 -17718
- package/dist/patches/access.d.ts +15 -0
- package/dist/patches/access.d.ts.map +1 -0
- package/dist/patches/access.js +27 -0
- package/dist/patches/access.js.map +1 -0
- package/dist/patches/engine.d.ts +67 -0
- package/dist/patches/engine.d.ts.map +1 -0
- package/dist/patches/engine.js +966 -0
- package/dist/patches/engine.js.map +1 -0
- package/dist/patches/guards.d.ts +23 -0
- package/dist/patches/guards.d.ts.map +1 -0
- package/dist/patches/guards.js +77 -0
- package/dist/patches/guards.js.map +1 -0
- package/dist/patches/legacy-rows.d.ts +56 -0
- package/dist/patches/legacy-rows.d.ts.map +1 -0
- package/dist/patches/legacy-rows.js +162 -0
- package/dist/patches/legacy-rows.js.map +1 -0
- package/dist/patches/ops.d.ts +24 -0
- package/dist/patches/ops.d.ts.map +1 -0
- package/dist/patches/ops.js +204 -0
- package/dist/patches/ops.js.map +1 -0
- package/dist/patches/parse.d.ts +5 -0
- package/dist/patches/parse.d.ts.map +1 -0
- package/dist/patches/parse.js +323 -0
- package/dist/patches/parse.js.map +1 -0
- package/dist/patches/paths.d.ts +38 -0
- package/dist/patches/paths.d.ts.map +1 -0
- package/dist/patches/paths.js +204 -0
- package/dist/patches/paths.js.map +1 -0
- package/dist/patches/service.d.ts +16 -0
- package/dist/patches/service.d.ts.map +1 -0
- package/dist/patches/service.js +128 -0
- package/dist/patches/service.js.map +1 -0
- package/dist/patches/store.d.ts +87 -0
- package/dist/patches/store.d.ts.map +1 -0
- package/dist/patches/store.js +27 -0
- package/dist/patches/store.js.map +1 -0
- package/dist/patches/types.d.ts +112 -0
- package/dist/patches/types.d.ts.map +1 -0
- package/dist/patches/types.js +5 -0
- package/dist/patches/types.js.map +1 -0
- package/dist/platform.d.ts +8 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +98 -4
- package/dist/platform.js.map +1 -1
- package/dist/routes/anomaly.d.ts +5 -0
- package/dist/routes/anomaly.d.ts.map +1 -0
- package/dist/routes/anomaly.js +308 -0
- package/dist/routes/anomaly.js.map +1 -0
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +190 -202
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/knowledge.d.ts.map +1 -1
- package/dist/routes/knowledge.js +6 -22
- package/dist/routes/knowledge.js.map +1 -1
- package/dist/routes/metadata.d.ts.map +1 -1
- package/dist/routes/metadata.js +28 -1
- package/dist/routes/metadata.js.map +1 -1
- package/dist/routes/patches.d.ts +7 -0
- package/dist/routes/patches.d.ts.map +1 -0
- package/dist/routes/patches.js +111 -0
- package/dist/routes/patches.js.map +1 -0
- package/dist/routes/subject-roots-backfill.d.ts +4 -0
- package/dist/routes/subject-roots-backfill.d.ts.map +1 -0
- package/dist/routes/subject-roots-backfill.js +15 -0
- package/dist/routes/subject-roots-backfill.js.map +1 -0
- package/dist/single-read-discriminator.d.ts +17 -0
- package/dist/single-read-discriminator.d.ts.map +1 -0
- package/dist/single-read-discriminator.js +67 -0
- package/dist/single-read-discriminator.js.map +1 -0
- package/dist/subject-roots-backfill.d.ts +24 -0
- package/dist/subject-roots-backfill.d.ts.map +1 -0
- package/dist/subject-roots-backfill.js +133 -0
- package/dist/subject-roots-backfill.js.map +1 -0
- package/dist/write-precondition.d.ts +5 -1
- package/dist/write-precondition.d.ts.map +1 -1
- package/dist/write-precondition.js +11 -3
- package/dist/write-precondition.js.map +1 -1
- package/dist/writes/content-write.d.ts +170 -0
- package/dist/writes/content-write.d.ts.map +1 -0
- package/dist/writes/content-write.js +569 -0
- package/dist/writes/content-write.js.map +1 -0
- package/dist/writes/effects.d.ts +13 -0
- package/dist/writes/effects.d.ts.map +1 -0
- package/dist/writes/effects.js +28 -0
- package/dist/writes/effects.js.map +1 -0
- package/dist/writes/error-shape.d.ts +11 -0
- package/dist/writes/error-shape.d.ts.map +1 -0
- package/dist/writes/error-shape.js +100 -0
- package/dist/writes/error-shape.js.map +1 -0
- package/dist/writes/receipt-store.d.ts +81 -0
- package/dist/writes/receipt-store.d.ts.map +1 -0
- package/dist/writes/receipt-store.js +171 -0
- package/dist/writes/receipt-store.js.map +1 -0
- package/dist/writes/worker.d.ts +9 -0
- package/dist/writes/worker.d.ts.map +1 -0
- package/dist/writes/worker.js +20 -0
- package/dist/writes/worker.js.map +1 -0
- package/openapi/openapi.json +18354 -17718
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/patches/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write guards installed by an applied patch. A content write that brings the fixed shape back is 400 `PATCH_GUARD`.
|
|
3
|
+
*/
|
|
4
|
+
import type { Db } from "mongodb";
|
|
5
|
+
export declare function invalidatePatchGuards(orgId: string): void;
|
|
6
|
+
export type GuardedWrite = {
|
|
7
|
+
op: string;
|
|
8
|
+
objectType: string;
|
|
9
|
+
contentType: string;
|
|
10
|
+
record?: Record<string, unknown>;
|
|
11
|
+
patch?: unknown;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Reject a content write that matches an installed guard.
|
|
15
|
+
* `readCurrent` is called only for a `patch` op that a guard could see.
|
|
16
|
+
*/
|
|
17
|
+
export declare function assertPatchGuards(args: {
|
|
18
|
+
db: Db;
|
|
19
|
+
orgId: string;
|
|
20
|
+
write: GuardedWrite;
|
|
21
|
+
readCurrent?: () => Promise<Record<string, unknown> | null>;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/patches/guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEzD;AA6BD,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CAC7D,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { applyPatchOps } from "@x12i/memorix-data";
|
|
2
|
+
import { ServiceError } from "../errors.js";
|
|
3
|
+
import { evaluatePredicate, isPlainObject } from "./paths.js";
|
|
4
|
+
import { PATCHES_COLLECTION } from "./store.js";
|
|
5
|
+
const CACHE_MS = 5_000;
|
|
6
|
+
const cache = new Map();
|
|
7
|
+
export function invalidatePatchGuards(orgId) {
|
|
8
|
+
cache.delete(orgId);
|
|
9
|
+
}
|
|
10
|
+
async function activeGuards(db, orgId) {
|
|
11
|
+
const hit = cache.get(orgId);
|
|
12
|
+
if (hit && Date.now() - hit.at < CACHE_MS)
|
|
13
|
+
return hit.items;
|
|
14
|
+
const docs = await db
|
|
15
|
+
.collection(PATCHES_COLLECTION)
|
|
16
|
+
.find({ orgId, guardsActive: true }, { projection: { patchId: 1, objectType: 1, contentTypes: 1, guards: 1 } })
|
|
17
|
+
.toArray();
|
|
18
|
+
const items = docs.map((doc) => ({
|
|
19
|
+
patchId: doc.patchId,
|
|
20
|
+
objectType: doc.objectType,
|
|
21
|
+
contentTypes: doc.contentTypes,
|
|
22
|
+
guards: doc.guards ?? [],
|
|
23
|
+
}));
|
|
24
|
+
cache.set(orgId, { at: Date.now(), items });
|
|
25
|
+
return items;
|
|
26
|
+
}
|
|
27
|
+
/** The record as a guard sees it: `metadata` and `properties` are `_metadata`. */
|
|
28
|
+
function guardView(record) {
|
|
29
|
+
if (record._metadata !== undefined)
|
|
30
|
+
return record;
|
|
31
|
+
const metadata = record.metadata ?? record.properties;
|
|
32
|
+
return metadata === undefined ? record : { ...record, _metadata: metadata };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Reject a content write that matches an installed guard.
|
|
36
|
+
* `readCurrent` is called only for a `patch` op that a guard could see.
|
|
37
|
+
*/
|
|
38
|
+
export async function assertPatchGuards(args) {
|
|
39
|
+
const { write } = args;
|
|
40
|
+
if (write.op === "remove")
|
|
41
|
+
return;
|
|
42
|
+
const items = (await activeGuards(args.db, args.orgId)).filter((item) => item.objectType === write.objectType && item.contentTypes.includes(write.contentType));
|
|
43
|
+
if (!items.length)
|
|
44
|
+
return;
|
|
45
|
+
let record;
|
|
46
|
+
if (write.op === "patch") {
|
|
47
|
+
const current = await args.readCurrent?.().catch(() => null);
|
|
48
|
+
if (!current || !Array.isArray(write.patch) || write.patch.length === 0)
|
|
49
|
+
return;
|
|
50
|
+
try {
|
|
51
|
+
record = applyPatchOps(current, write.patch);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
record = write.record;
|
|
59
|
+
}
|
|
60
|
+
if (!isPlainObject(record))
|
|
61
|
+
return;
|
|
62
|
+
const view = guardView(record);
|
|
63
|
+
for (const item of items) {
|
|
64
|
+
for (const guard of item.guards) {
|
|
65
|
+
if (!evaluatePredicate(view, guard.rejectWhen))
|
|
66
|
+
continue;
|
|
67
|
+
const predicate = guard.rejectWhen;
|
|
68
|
+
throw new ServiceError("PATCH_GUARD", guard.message, 400, {
|
|
69
|
+
patchId: item.patchId,
|
|
70
|
+
field: "path" in predicate ? predicate.path : `data..${predicate.key}`,
|
|
71
|
+
rejectWhen: predicate,
|
|
72
|
+
retryable: false,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/patches/guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* After `POST /api/metadata/ensure` changes the catalog, list stored rows that no longer fit:
|
|
3
|
+
* a discriminator that rows lack, a field that became required, or an enum that no longer
|
|
4
|
+
* holds a stored value. Ensure reports them; it does not patch data.
|
|
5
|
+
*/
|
|
6
|
+
import type { MongoClient } from "mongodb";
|
|
7
|
+
import type { UnifiedMetadataClient } from "@x12i/memorix-metadata-runtime";
|
|
8
|
+
type Discriminator = {
|
|
9
|
+
path: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
defaultValue?: string;
|
|
12
|
+
allowedValues?: string[];
|
|
13
|
+
};
|
|
14
|
+
type FieldRule = {
|
|
15
|
+
path: string;
|
|
16
|
+
contentType?: string;
|
|
17
|
+
required: boolean;
|
|
18
|
+
enum?: string[];
|
|
19
|
+
when?: {
|
|
20
|
+
path: string;
|
|
21
|
+
equals: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
type ObjectTypeRules = {
|
|
25
|
+
dataCategory: string;
|
|
26
|
+
contentTypes: Map<string, {
|
|
27
|
+
discriminator?: Discriminator;
|
|
28
|
+
}>;
|
|
29
|
+
fields: FieldRule[];
|
|
30
|
+
};
|
|
31
|
+
export type CatalogRules = Map<string, ObjectTypeRules>;
|
|
32
|
+
export type LegacyRowsEntry = {
|
|
33
|
+
objectType: string;
|
|
34
|
+
contentType: string;
|
|
35
|
+
reason: "DISCRIMINATOR_MISSING" | "FIELD_MISSING" | "ENUM_VALUE_INVALID";
|
|
36
|
+
path: string;
|
|
37
|
+
count: number;
|
|
38
|
+
allowedValues?: string[];
|
|
39
|
+
values?: unknown[];
|
|
40
|
+
suggestedPatch?: Record<string, unknown>;
|
|
41
|
+
};
|
|
42
|
+
/** Discriminator, required-field, and enum rules for the named object types. */
|
|
43
|
+
export declare function catalogRules(metadata: Pick<UnifiedMetadataClient, "resolveEffective">, agentIds: string[], objectTypes: Set<string>): CatalogRules;
|
|
44
|
+
/**
|
|
45
|
+
* Rows that the rules in `after` no longer accept and that `before` did.
|
|
46
|
+
* `allowedValuesFor` names the discriminator values the pack declares, for a suggested patch.
|
|
47
|
+
*/
|
|
48
|
+
export declare function findLegacyRows(args: {
|
|
49
|
+
client: MongoClient;
|
|
50
|
+
orgId: string;
|
|
51
|
+
before: CatalogRules;
|
|
52
|
+
after: CatalogRules;
|
|
53
|
+
allowedValuesFor?: (objectType: string, contentType: string, path: string) => string[] | undefined;
|
|
54
|
+
}): Promise<LegacyRowsEntry[]>;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=legacy-rows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-rows.d.ts","sourceRoot":"","sources":["../../src/patches/legacy-rows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1G,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,uBAAuB,GAAG,eAAe,GAAG,oBAAoB,CAAC;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,CAAC;AAYF,gFAAgF;AAChF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,EACzD,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,YAAY,CAiDd;AAyBD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;CACpG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAkE7B"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { contentCollectionName, databaseNameFor } from "@x12i/memorix-data";
|
|
2
|
+
function isPlainObject(value) {
|
|
3
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
function strings(raw) {
|
|
6
|
+
if (!Array.isArray(raw))
|
|
7
|
+
return undefined;
|
|
8
|
+
const out = raw.filter((v) => typeof v === "string");
|
|
9
|
+
return out.length ? out : undefined;
|
|
10
|
+
}
|
|
11
|
+
/** Discriminator, required-field, and enum rules for the named object types. */
|
|
12
|
+
export function catalogRules(metadata, agentIds, objectTypes) {
|
|
13
|
+
const rules = new Map();
|
|
14
|
+
for (const entry of metadata.resolveEffective(agentIds).effective ?? []) {
|
|
15
|
+
if (entry.kind !== "object-types")
|
|
16
|
+
continue;
|
|
17
|
+
const def = entry.definition;
|
|
18
|
+
const id = String(def.id ?? entry.id);
|
|
19
|
+
if (!objectTypes.has(id))
|
|
20
|
+
continue;
|
|
21
|
+
const contentTypes = new Map();
|
|
22
|
+
for (const raw of Array.isArray(def.contentTypes) ? def.contentTypes : []) {
|
|
23
|
+
if (typeof raw === "string") {
|
|
24
|
+
contentTypes.set(raw, {});
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (!isPlainObject(raw) || typeof raw.id !== "string")
|
|
28
|
+
continue;
|
|
29
|
+
const disc = raw.discriminator;
|
|
30
|
+
contentTypes.set(raw.id, {
|
|
31
|
+
...(isPlainObject(disc) && typeof disc.path === "string" && disc.path
|
|
32
|
+
? {
|
|
33
|
+
discriminator: {
|
|
34
|
+
path: disc.path,
|
|
35
|
+
required: disc.required === true,
|
|
36
|
+
...(typeof disc.defaultValue === "string" && disc.defaultValue ? { defaultValue: disc.defaultValue } : {}),
|
|
37
|
+
...(strings(disc.allowedValues) ? { allowedValues: strings(disc.allowedValues) } : {}),
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
: {}),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const fields = [];
|
|
44
|
+
for (const raw of Array.isArray(def.fields) ? def.fields : []) {
|
|
45
|
+
if (!isPlainObject(raw) || typeof raw.path !== "string" || !raw.path)
|
|
46
|
+
continue;
|
|
47
|
+
const when = raw.when;
|
|
48
|
+
fields.push({
|
|
49
|
+
path: raw.path,
|
|
50
|
+
...(typeof raw.contentType === "string" ? { contentType: raw.contentType } : {}),
|
|
51
|
+
required: raw.required === true,
|
|
52
|
+
...(strings(raw.enum) ? { enum: strings(raw.enum) } : {}),
|
|
53
|
+
...(isPlainObject(when) && typeof when.path === "string" && typeof when.equals === "string"
|
|
54
|
+
? { when: { path: when.path, equals: when.equals } }
|
|
55
|
+
: {}),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
rules.set(id, {
|
|
59
|
+
dataCategory: typeof def.dataCategory === "string" ? def.dataCategory : "entity",
|
|
60
|
+
contentTypes,
|
|
61
|
+
fields,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return rules;
|
|
65
|
+
}
|
|
66
|
+
function sameField(a, b) {
|
|
67
|
+
return (a.path === b.path &&
|
|
68
|
+
a.contentType === b.contentType &&
|
|
69
|
+
a.when?.path === b.when?.path &&
|
|
70
|
+
a.when?.equals === b.when?.equals);
|
|
71
|
+
}
|
|
72
|
+
function discriminatorTightened(before, after) {
|
|
73
|
+
if (after.defaultValue)
|
|
74
|
+
return false;
|
|
75
|
+
if (!before)
|
|
76
|
+
return true;
|
|
77
|
+
if (before.path !== after.path)
|
|
78
|
+
return true;
|
|
79
|
+
if (before.defaultValue)
|
|
80
|
+
return true;
|
|
81
|
+
return !before.required && after.required;
|
|
82
|
+
}
|
|
83
|
+
function enumNarrowed(before, after) {
|
|
84
|
+
if (!after.enum)
|
|
85
|
+
return false;
|
|
86
|
+
if (!before?.enum)
|
|
87
|
+
return true;
|
|
88
|
+
return before.enum.some((value) => !after.enum.includes(value));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Rows that the rules in `after` no longer accept and that `before` did.
|
|
92
|
+
* `allowedValuesFor` names the discriminator values the pack declares, for a suggested patch.
|
|
93
|
+
*/
|
|
94
|
+
export async function findLegacyRows(args) {
|
|
95
|
+
const out = [];
|
|
96
|
+
for (const [objectType, rules] of args.after) {
|
|
97
|
+
const prior = args.before.get(objectType);
|
|
98
|
+
const db = args.client.db(databaseNameFor(args.orgId, rules.dataCategory));
|
|
99
|
+
for (const [contentType, ct] of rules.contentTypes) {
|
|
100
|
+
const coll = db.collection(contentCollectionName(objectType, contentType));
|
|
101
|
+
const disc = ct.discriminator;
|
|
102
|
+
if (disc && discriminatorTightened(prior?.contentTypes.get(contentType)?.discriminator, disc)) {
|
|
103
|
+
const count = await coll.countDocuments({
|
|
104
|
+
$or: [{ [disc.path]: { $in: [null, ""] } }, { $expr: { $eq: ["$_id", "$recordId"] } }],
|
|
105
|
+
});
|
|
106
|
+
if (count > 0) {
|
|
107
|
+
const allowed = disc.allowedValues ?? args.allowedValuesFor?.(objectType, contentType, disc.path);
|
|
108
|
+
const select = { objectType, contentTypes: [contentType], discriminator: { absent: true } };
|
|
109
|
+
out.push({
|
|
110
|
+
objectType,
|
|
111
|
+
contentType,
|
|
112
|
+
reason: "DISCRIMINATOR_MISSING",
|
|
113
|
+
path: disc.path,
|
|
114
|
+
count,
|
|
115
|
+
...(allowed ? { allowedValues: allowed } : {}),
|
|
116
|
+
...(allowed?.length === 1
|
|
117
|
+
? {
|
|
118
|
+
suggestedPatch: {
|
|
119
|
+
select,
|
|
120
|
+
ops: [{ op: "setDiscriminator", value: allowed[0], onExisting: "deleteLegacy" }],
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
: {}),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const field of rules.fields) {
|
|
128
|
+
if (field.contentType && field.contentType !== contentType)
|
|
129
|
+
continue;
|
|
130
|
+
const was = prior?.fields.find((f) => sameField(f, field));
|
|
131
|
+
const gate = field.when ? { [field.when.path]: field.when.equals } : {};
|
|
132
|
+
if (field.required && !was?.required) {
|
|
133
|
+
const filter = { ...gate, [field.path]: { $in: [null, ""] } };
|
|
134
|
+
const count = await coll.countDocuments(filter);
|
|
135
|
+
if (count > 0) {
|
|
136
|
+
out.push({ objectType, contentType, reason: "FIELD_MISSING", path: field.path, count });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (enumNarrowed(was, field)) {
|
|
140
|
+
const filter = { ...gate, [field.path]: { $exists: true, $nin: [...field.enum, null] } };
|
|
141
|
+
const count = await coll.countDocuments(filter);
|
|
142
|
+
if (count > 0) {
|
|
143
|
+
const values = (await coll.distinct(field.path, filter))
|
|
144
|
+
.filter((value) => typeof value !== "string" || !field.enum.includes(value))
|
|
145
|
+
.slice(0, 20);
|
|
146
|
+
out.push({
|
|
147
|
+
objectType,
|
|
148
|
+
contentType,
|
|
149
|
+
reason: "ENUM_VALUE_INVALID",
|
|
150
|
+
path: field.path,
|
|
151
|
+
count,
|
|
152
|
+
allowedValues: field.enum,
|
|
153
|
+
values,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=legacy-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-rows.js","sourceRoot":"","sources":["../../src/patches/legacy-rows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PatchOp } from "./types.js";
|
|
2
|
+
export type OpsResult = {
|
|
3
|
+
/** The record after the ops. Roots other than `data`, `context`, and `_metadata` are as stored. */
|
|
4
|
+
record: Record<string, unknown>;
|
|
5
|
+
discriminator?: {
|
|
6
|
+
value: string;
|
|
7
|
+
onExisting: "skip" | "replace" | "deleteLegacy";
|
|
8
|
+
};
|
|
9
|
+
deleteRecord?: "tombstone" | "purge";
|
|
10
|
+
/** Set when an op cannot run without losing a value, for example a rename onto an existing key. */
|
|
11
|
+
conflict?: string;
|
|
12
|
+
};
|
|
13
|
+
/** Remove empty objects, empty arrays, nulls, and empty strings below `value`. `value` itself stays. */
|
|
14
|
+
export declare function pruneBelow(value: unknown): void;
|
|
15
|
+
export declare function applyOps(stored: Record<string, unknown>, ops: PatchOp[], options: {
|
|
16
|
+
discriminatorPath?: string;
|
|
17
|
+
}): OpsResult;
|
|
18
|
+
export declare function bodyChanged(before: Record<string, unknown>, after: Record<string, unknown>): boolean;
|
|
19
|
+
/** Path-level diff of the body roots. An absent value is `null`. */
|
|
20
|
+
export declare function bodyDiff(before: Record<string, unknown>, after: Record<string, unknown>): {
|
|
21
|
+
before: Record<string, unknown>;
|
|
22
|
+
after: Record<string, unknown>;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/patches/ops.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,SAAS,GAAG;IACtB,mGAAmG;IACnG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAA;KAAE,CAAC;IACnF,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACrC,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAa/C;AASD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,OAAO,EAAE,EACd,OAAO,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC,SAAS,CA+GX;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEpG;AAUD,oEAAoE;AACpE,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAiBrE"}
|