@x12i/memorix-service 3.12.3 → 3.12.4
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/activity-ui.js +1 -1
- package/dist/agent-catalog.d.ts +32 -0
- package/dist/agent-catalog.d.ts.map +1 -0
- package/dist/agent-catalog.js +80 -0
- package/dist/agent-catalog.js.map +1 -0
- package/dist/analytics/engine.d.ts.map +1 -1
- package/dist/analytics/engine.js +2 -1
- package/dist/analytics/engine.js.map +1 -1
- package/dist/analytics/state.d.ts +1 -1
- package/dist/analytics/tracker.d.ts +2 -0
- package/dist/analytics/tracker.d.ts.map +1 -1
- package/dist/analytics/tracker.js +15 -8
- package/dist/analytics/tracker.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +22 -1
- package/dist/app.js.map +1 -1
- package/dist/arrivals-backfill.d.ts +23 -0
- package/dist/arrivals-backfill.d.ts.map +1 -0
- package/dist/arrivals-backfill.js +132 -0
- package/dist/arrivals-backfill.js.map +1 -0
- package/dist/arrivals-routes.d.ts +8 -0
- package/dist/arrivals-routes.d.ts.map +1 -0
- package/dist/arrivals-routes.js +17 -0
- package/dist/arrivals-routes.js.map +1 -0
- package/dist/arrivals-ui.d.ts +3 -0
- package/dist/arrivals-ui.d.ts.map +1 -0
- package/dist/arrivals-ui.js +277 -0
- package/dist/arrivals-ui.js.map +1 -0
- package/dist/catalog-bridge.d.ts.map +1 -1
- package/dist/catalog-bridge.js +32 -9
- package/dist/catalog-bridge.js.map +1 -1
- package/dist/catalog-live-ui.js +1 -1
- package/dist/content-arrivals-countex.d.ts +90 -0
- package/dist/content-arrivals-countex.d.ts.map +1 -0
- package/dist/content-arrivals-countex.js +252 -0
- package/dist/content-arrivals-countex.js.map +1 -0
- package/dist/data-changes-ui.js +1 -1
- package/dist/data-changes.d.ts +3 -0
- package/dist/data-changes.d.ts.map +1 -1
- package/dist/data-changes.js +22 -21
- package/dist/data-changes.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -2
- package/dist/errors.js.map +1 -1
- package/dist/hooks-live-ui.js +1 -1
- package/dist/land-v2-guards.d.ts +5 -12
- package/dist/land-v2-guards.d.ts.map +1 -1
- package/dist/land-v2-guards.js +10 -33
- package/dist/land-v2-guards.js.map +1 -1
- package/dist/live-ops-nav.d.ts.map +1 -1
- package/dist/live-ops-nav.js +4 -0
- package/dist/live-ops-nav.js.map +1 -1
- package/dist/nexum-analysis/outbox.d.ts +1 -1
- package/dist/nexum-analysis/reconcile.d.ts.map +1 -1
- package/dist/nexum-analysis/reconcile.js +3 -2
- package/dist/nexum-analysis/reconcile.js.map +1 -1
- package/dist/openapi/openapi.json +47 -2
- package/dist/operational-db.d.ts +2 -2
- package/dist/operational-db.d.ts.map +1 -1
- package/dist/operational-db.js +8 -11
- package/dist/operational-db.js.map +1 -1
- package/dist/platform.d.ts +9 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +16 -7
- package/dist/platform.js.map +1 -1
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +66 -12
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +2 -4
- package/dist/routes/memory.js.map +1 -1
- package/dist/routes/metadata.d.ts.map +1 -1
- package/dist/routes/metadata.js +12 -0
- package/dist/routes/metadata.js.map +1 -1
- package/dist/routes/mgc-landing.d.ts.map +1 -1
- package/dist/routes/mgc-landing.js +64 -94
- package/dist/routes/mgc-landing.js.map +1 -1
- package/dist/routes/workflow.d.ts.map +1 -1
- package/dist/routes/workflow.js +4 -10
- package/dist/routes/workflow.js.map +1 -1
- package/openapi/openapi.json +47 -2
- package/package.json +2 -2
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { createCountex, } from "@x12i/countex";
|
|
2
|
+
import { MemoryCache, MemoryDurable } from "@x12i/countex/adapters/memory";
|
|
3
|
+
import { decodeKey, encodeKey } from "./analytics/engine.js";
|
|
4
|
+
import { ANALYTICS_DATASOURCE_SERVICE } from "./analytics/tracker.js";
|
|
5
|
+
export const CONTENT_ARRIVALS_COUNTER_ID = "content_arrivals";
|
|
6
|
+
export const CONTENT_ARRIVALS_DB = "memorix_content_arrivals";
|
|
7
|
+
const arrivalsMap = {
|
|
8
|
+
counterId: CONTENT_ARRIVALS_COUNTER_ID,
|
|
9
|
+
scope: { path: "$.scope" },
|
|
10
|
+
eventTime: { path: "$.at" },
|
|
11
|
+
subjects: [{ type: "objectType", path: "$.objectType", required: true }],
|
|
12
|
+
metrics: [{ path: "$.contentType", required: true }],
|
|
13
|
+
dimensions: [{ name: "op", path: "$.op" }],
|
|
14
|
+
delta: { path: "$.delta", default: 1 },
|
|
15
|
+
timeframes: ["hour", "day", "all"],
|
|
16
|
+
options: { normalizeValues: false, skipMissingOptionalDimensions: true },
|
|
17
|
+
cardinality: {
|
|
18
|
+
maxDimensionValuesPerName: 8,
|
|
19
|
+
maxSubjectsPerScope: 20_000,
|
|
20
|
+
onLimit: "overflow",
|
|
21
|
+
overflowValue: "__OTHER__",
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const QUERY_LIMIT = 10_000;
|
|
25
|
+
const MAX_HOURS = 168;
|
|
26
|
+
function hourKey(d) {
|
|
27
|
+
return d.toISOString().slice(0, 13);
|
|
28
|
+
}
|
|
29
|
+
export function hourKeysEnding(now, hours) {
|
|
30
|
+
const n = Math.max(1, Math.min(MAX_HOURS, Math.floor(hours)));
|
|
31
|
+
const end = Date.parse(`${hourKey(now)}:00:00.000Z`);
|
|
32
|
+
const keys = [];
|
|
33
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
34
|
+
keys.push(new Date(end - i * 3_600_000).toISOString().slice(0, 13));
|
|
35
|
+
}
|
|
36
|
+
return keys;
|
|
37
|
+
}
|
|
38
|
+
function rowsOf(result) {
|
|
39
|
+
return result.rows.filter((r) => !!r && typeof r === "object" && "keys" in r && typeof r.count === "number");
|
|
40
|
+
}
|
|
41
|
+
function addCell(map, key, op, n) {
|
|
42
|
+
const cur = map.get(key) ?? { created: 0, updated: 0 };
|
|
43
|
+
cur[op] += n;
|
|
44
|
+
map.set(key, cur);
|
|
45
|
+
}
|
|
46
|
+
function sortedTypes(ots) {
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const [objectType, bucket] of ots) {
|
|
49
|
+
const contentTypes = [...bucket.cts.entries()]
|
|
50
|
+
.map(([contentType, cell]) => ({ contentType, created: cell.created, updated: cell.updated }))
|
|
51
|
+
.filter((row) => row.created > 0 || row.updated > 0)
|
|
52
|
+
.sort((a, b) => b.created + b.updated - (a.created + a.updated) || a.contentType.localeCompare(b.contentType, "en"));
|
|
53
|
+
if (contentTypes.length === 0)
|
|
54
|
+
continue;
|
|
55
|
+
const created = contentTypes.reduce((n, row) => n + row.created, 0);
|
|
56
|
+
const updated = contentTypes.reduce((n, row) => n + row.updated, 0);
|
|
57
|
+
out.push({ objectType, created, updated, contentTypes });
|
|
58
|
+
}
|
|
59
|
+
out.sort((a, b) => b.created + b.updated - (a.created + a.updated) || a.objectType.localeCompare(b.objectType, "en"));
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
export async function createContentArrivals(opts) {
|
|
63
|
+
let storage = "memory";
|
|
64
|
+
let durable = new MemoryDurable();
|
|
65
|
+
if (opts?.mongoClient) {
|
|
66
|
+
const { MongoDurable } = await import("@x12i/countex/adapters/mongo");
|
|
67
|
+
durable = new MongoDurable({
|
|
68
|
+
client: opts.mongoClient,
|
|
69
|
+
defaultDb: CONTENT_ARRIVALS_DB,
|
|
70
|
+
});
|
|
71
|
+
storage = "mongo";
|
|
72
|
+
}
|
|
73
|
+
const countex = createCountex({
|
|
74
|
+
maps: [arrivalsMap],
|
|
75
|
+
durable,
|
|
76
|
+
cache: new MemoryCache(),
|
|
77
|
+
flush: {
|
|
78
|
+
everyMs: 5_000,
|
|
79
|
+
maxBufferedCells: 50_000,
|
|
80
|
+
maxBufferedEvents: 20_000,
|
|
81
|
+
flushOnShutdown: true,
|
|
82
|
+
onOverflow: "drop",
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
await countex.init();
|
|
86
|
+
const orgs = new Set();
|
|
87
|
+
let closed = false;
|
|
88
|
+
let pending = Promise.resolve();
|
|
89
|
+
const track = (p) => {
|
|
90
|
+
pending = pending.then(() => p).then(() => undefined, () => undefined);
|
|
91
|
+
};
|
|
92
|
+
const cutoff = new Date().toISOString();
|
|
93
|
+
let backfill = { status: "idle", cutoff: null, hours: null };
|
|
94
|
+
function toCountexEvent(event) {
|
|
95
|
+
const orgId = event.orgId.trim();
|
|
96
|
+
const objectType = event.objectType.trim();
|
|
97
|
+
const contentType = event.contentType.trim();
|
|
98
|
+
if (!orgId || !objectType || !contentType)
|
|
99
|
+
return null;
|
|
100
|
+
if (event.datasourceService === ANALYTICS_DATASOURCE_SERVICE)
|
|
101
|
+
return null;
|
|
102
|
+
if (event.op !== "created" && event.op !== "updated")
|
|
103
|
+
return null;
|
|
104
|
+
const delta = event.delta ?? 1;
|
|
105
|
+
if (!Number.isFinite(delta) || delta === 0)
|
|
106
|
+
return null;
|
|
107
|
+
orgs.add(orgId);
|
|
108
|
+
return {
|
|
109
|
+
scope: orgId,
|
|
110
|
+
at: event.at,
|
|
111
|
+
objectType: encodeKey(objectType),
|
|
112
|
+
contentType: encodeKey(contentType),
|
|
113
|
+
op: event.op,
|
|
114
|
+
delta,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
async function readOrg(orgId, from, to) {
|
|
118
|
+
const result = await countex.query({
|
|
119
|
+
scope: orgId,
|
|
120
|
+
counterId: CONTENT_ARRIVALS_COUNTER_ID,
|
|
121
|
+
format: "table",
|
|
122
|
+
resolveLabels: true,
|
|
123
|
+
timeframe: { type: "hour", from, to },
|
|
124
|
+
groupBy: ["timeframeKey", "subject", "metric", "dim:op"],
|
|
125
|
+
limit: QUERY_LIMIT,
|
|
126
|
+
});
|
|
127
|
+
const hours = new Map();
|
|
128
|
+
for (const row of rowsOf(result)) {
|
|
129
|
+
if (row.count === 0)
|
|
130
|
+
continue;
|
|
131
|
+
const hour = String(row.keys.timeframeKey ?? "");
|
|
132
|
+
const objectType = decodeKey(String(row.keys.subject ?? ""));
|
|
133
|
+
const contentType = decodeKey(String(row.keys.metric ?? ""));
|
|
134
|
+
const op = String(row.keys["dim:op"] ?? "");
|
|
135
|
+
if (!hour || !objectType || !contentType)
|
|
136
|
+
continue;
|
|
137
|
+
if (op !== "created" && op !== "updated")
|
|
138
|
+
continue;
|
|
139
|
+
let ots = hours.get(hour);
|
|
140
|
+
if (!ots) {
|
|
141
|
+
ots = new Map();
|
|
142
|
+
hours.set(hour, ots);
|
|
143
|
+
}
|
|
144
|
+
let bucket = ots.get(objectType);
|
|
145
|
+
if (!bucket) {
|
|
146
|
+
bucket = { cell: { created: 0, updated: 0 }, cts: new Map() };
|
|
147
|
+
ots.set(objectType, bucket);
|
|
148
|
+
}
|
|
149
|
+
addCell(bucket.cts, contentType, op, row.count);
|
|
150
|
+
}
|
|
151
|
+
return { truncated: rowsOf(result).length >= QUERY_LIMIT, hours };
|
|
152
|
+
}
|
|
153
|
+
function record(event) {
|
|
154
|
+
const mapped = toCountexEvent(event);
|
|
155
|
+
if (!mapped || closed)
|
|
156
|
+
return;
|
|
157
|
+
track(countex.ingest(mapped));
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
storage,
|
|
161
|
+
cutoff,
|
|
162
|
+
knownOrgIds: () => [...orgs].sort((a, b) => a.localeCompare(b, "en")),
|
|
163
|
+
backfillStatus: () => ({ ...backfill }),
|
|
164
|
+
setBackfillStatus(next) {
|
|
165
|
+
backfill = { ...next };
|
|
166
|
+
},
|
|
167
|
+
isClosed: () => closed,
|
|
168
|
+
observeWrite(orgId, event) {
|
|
169
|
+
if (event.op !== "created" && event.op !== "updated")
|
|
170
|
+
return;
|
|
171
|
+
record({
|
|
172
|
+
orgId,
|
|
173
|
+
objectType: event.objectType,
|
|
174
|
+
contentType: event.contentType,
|
|
175
|
+
op: event.op,
|
|
176
|
+
at: new Date().toISOString(),
|
|
177
|
+
datasourceService: event.datasourceService,
|
|
178
|
+
});
|
|
179
|
+
},
|
|
180
|
+
record,
|
|
181
|
+
async ingestMany(events) {
|
|
182
|
+
if (closed)
|
|
183
|
+
return;
|
|
184
|
+
const mapped = events.map(toCountexEvent).filter((e) => !!e);
|
|
185
|
+
for (let i = 0; i < mapped.length; i += 500) {
|
|
186
|
+
await countex.ingestBatch(mapped.slice(i, i + 500));
|
|
187
|
+
}
|
|
188
|
+
if (mapped.length > 0)
|
|
189
|
+
await countex.flush();
|
|
190
|
+
},
|
|
191
|
+
async query(opts = {}) {
|
|
192
|
+
await pending;
|
|
193
|
+
await countex.flush().catch(() => undefined);
|
|
194
|
+
const now = opts.now ?? new Date();
|
|
195
|
+
const hours = Math.max(1, Math.min(MAX_HOURS, Math.floor(opts.hours ?? 24)));
|
|
196
|
+
const keys = hourKeysEnding(now, hours);
|
|
197
|
+
const from = keys[0] ?? hourKey(now);
|
|
198
|
+
const to = keys[keys.length - 1] ?? from;
|
|
199
|
+
const requested = opts.orgId?.trim() || "";
|
|
200
|
+
const orgIds = [...new Set([...(opts.orgIds ?? []), ...orgs, ...(requested ? [requested] : [])])].sort((a, b) => a.localeCompare(b, "en"));
|
|
201
|
+
const queried = requested ? [requested] : orgIds;
|
|
202
|
+
const byOrg = new Map();
|
|
203
|
+
let truncated = false;
|
|
204
|
+
await Promise.all(queried.map(async (orgId) => {
|
|
205
|
+
const read = await readOrg(orgId, from, to);
|
|
206
|
+
if (read.truncated)
|
|
207
|
+
truncated = true;
|
|
208
|
+
byOrg.set(orgId, read.hours);
|
|
209
|
+
}));
|
|
210
|
+
const series = keys.map((hour) => {
|
|
211
|
+
const orgRows = [];
|
|
212
|
+
for (const orgId of queried) {
|
|
213
|
+
const objectTypes = sortedTypes(byOrg.get(orgId)?.get(hour) ?? new Map());
|
|
214
|
+
if (objectTypes.length === 0)
|
|
215
|
+
continue;
|
|
216
|
+
orgRows.push({
|
|
217
|
+
orgId,
|
|
218
|
+
created: objectTypes.reduce((n, row) => n + row.created, 0),
|
|
219
|
+
updated: objectTypes.reduce((n, row) => n + row.updated, 0),
|
|
220
|
+
objectTypes,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
orgRows.sort((a, b) => b.created + b.updated - (a.created + a.updated) || a.orgId.localeCompare(b.orgId, "en"));
|
|
224
|
+
return {
|
|
225
|
+
hour,
|
|
226
|
+
created: orgRows.reduce((n, row) => n + row.created, 0),
|
|
227
|
+
updated: orgRows.reduce((n, row) => n + row.updated, 0),
|
|
228
|
+
orgs: orgRows,
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
return {
|
|
232
|
+
ok: true,
|
|
233
|
+
storage,
|
|
234
|
+
generatedAt: now.toISOString(),
|
|
235
|
+
hours,
|
|
236
|
+
from,
|
|
237
|
+
to,
|
|
238
|
+
orgId: requested || null,
|
|
239
|
+
orgIds,
|
|
240
|
+
truncated,
|
|
241
|
+
backfill: { ...backfill },
|
|
242
|
+
series,
|
|
243
|
+
};
|
|
244
|
+
},
|
|
245
|
+
flush: () => countex.flush(),
|
|
246
|
+
async shutdown() {
|
|
247
|
+
closed = true;
|
|
248
|
+
await countex.shutdown().catch(() => undefined);
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=content-arrivals-countex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-arrivals-countex.js","sourceRoot":"","sources":["../src/content-arrivals-countex.ts"],"names":[],"mappings":"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"}
|
package/dist/data-changes-ui.js
CHANGED
|
@@ -88,7 +88,7 @@ export function dataChangesHtml() {
|
|
|
88
88
|
<div class="meta">
|
|
89
89
|
<div><strong>UI</strong> /_live/changes</div>
|
|
90
90
|
<div><strong>API</strong> /_live/api/data-changes</div>
|
|
91
|
-
<div><a href="/_live">← live view</a> · <a href="/_live/activity">activity</a> · <a href="/_live/graph">stored graph</a></div>
|
|
91
|
+
<div><a href="/_live">← live view</a> · <a href="/_live/arrivals">arrivals</a> · <a href="/_live/activity">activity</a> · <a href="/_live/graph">stored graph</a></div>
|
|
92
92
|
</div>
|
|
93
93
|
</header>
|
|
94
94
|
|
package/dist/data-changes.d.ts
CHANGED
|
@@ -40,6 +40,9 @@ export declare function resolveObjectAndContentType(collectionName: string, obje
|
|
|
40
40
|
objectType: string;
|
|
41
41
|
contentType: string;
|
|
42
42
|
};
|
|
43
|
+
export declare function listOperationalOrgIds(client: MongoClient): Promise<string[]>;
|
|
44
|
+
/** Content collections across category databases, keyed the same way as the changes matrix. */
|
|
45
|
+
export declare function listContentCollections(client: MongoClient, orgIds?: readonly string[]): Promise<CollectionChangeTarget[]>;
|
|
43
46
|
export type ScanDataChangesOpts = {
|
|
44
47
|
client: MongoClient;
|
|
45
48
|
/** Limit to one org; default all orgs with an operational DB. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-changes.d.ts","sourceRoot":"","sources":["../src/data-changes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4BxE,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;CAC9D,CAAC;AAMF,+DAA+D;AAC/D,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAsB7C;
|
|
1
|
+
{"version":3,"file":"data-changes.d.ts","sourceRoot":"","sources":["../src/data-changes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4BxE,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,CAAC;AAE9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,sBAAsB,EAAE,CAAC;IAC/B,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;CAC9D,CAAC;AAMF,+DAA+D;AAC/D,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAsB7C;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUlF;AAqED,+FAA+F;AAC/F,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA6BnC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAqF5B"}
|
package/dist/data-changes.js
CHANGED
|
@@ -48,7 +48,7 @@ export function resolveObjectAndContentType(collectionName, objectTypes) {
|
|
|
48
48
|
}
|
|
49
49
|
return { objectType: collectionName, contentType: "" };
|
|
50
50
|
}
|
|
51
|
-
async function
|
|
51
|
+
export async function listOperationalOrgIds(client) {
|
|
52
52
|
const listed = await client.db().admin().listDatabases();
|
|
53
53
|
const ids = new Set();
|
|
54
54
|
for (const db of listed.databases ?? []) {
|
|
@@ -110,36 +110,22 @@ function summarize(rows) {
|
|
|
110
110
|
created: rows.reduce((n, r) => n + r.created, 0),
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
const since1h = new Date(until.getTime() - windowMs("1h")).toISOString();
|
|
117
|
-
const since24h = new Date(until.getTime() - windowMs("24h")).toISOString();
|
|
118
|
-
let orgIds = await listOrgIds(opts.client);
|
|
119
|
-
if (opts.orgId?.trim()) {
|
|
120
|
-
const want = opts.orgId.trim().toLowerCase();
|
|
121
|
-
orgIds = orgIds.filter((id) => id.toLowerCase() === want);
|
|
122
|
-
if (orgIds.length === 0)
|
|
123
|
-
orgIds = [opts.orgId.trim()];
|
|
124
|
-
}
|
|
113
|
+
/** Content collections across category databases, keyed the same way as the changes matrix. */
|
|
114
|
+
export async function listContentCollections(client, orgIds) {
|
|
115
|
+
const ids = orgIds ?? (await listOperationalOrgIds(client));
|
|
125
116
|
const targets = [];
|
|
126
|
-
for (const orgId of
|
|
127
|
-
const objectTypes = await objectTypesForOrg(
|
|
117
|
+
for (const orgId of ids) {
|
|
118
|
+
const objectTypes = await objectTypesForOrg(client, orgId);
|
|
128
119
|
for (const kind of DATABASE_KINDS) {
|
|
129
120
|
const databaseName = databaseNameFor(orgId, kind);
|
|
130
121
|
let names = [];
|
|
131
122
|
try {
|
|
132
|
-
const cols = await
|
|
133
|
-
.db(databaseName)
|
|
134
|
-
.listCollections()
|
|
135
|
-
.toArray();
|
|
123
|
+
const cols = await client.db(databaseName).listCollections().toArray();
|
|
136
124
|
names = cols.map((c) => String(c.name));
|
|
137
125
|
}
|
|
138
126
|
catch {
|
|
139
127
|
continue;
|
|
140
128
|
}
|
|
141
|
-
if (names.length === 0)
|
|
142
|
-
continue;
|
|
143
129
|
for (const collectionName of names) {
|
|
144
130
|
if (!isContentCollectionName(collectionName))
|
|
145
131
|
continue;
|
|
@@ -155,6 +141,21 @@ export async function scanDataChanges(opts) {
|
|
|
155
141
|
}
|
|
156
142
|
}
|
|
157
143
|
}
|
|
144
|
+
return targets;
|
|
145
|
+
}
|
|
146
|
+
export async function scanDataChanges(opts) {
|
|
147
|
+
const until = new Date();
|
|
148
|
+
const untilIso = until.toISOString();
|
|
149
|
+
const since1h = new Date(until.getTime() - windowMs("1h")).toISOString();
|
|
150
|
+
const since24h = new Date(until.getTime() - windowMs("24h")).toISOString();
|
|
151
|
+
let orgIds = await listOperationalOrgIds(opts.client);
|
|
152
|
+
if (opts.orgId?.trim()) {
|
|
153
|
+
const want = opts.orgId.trim().toLowerCase();
|
|
154
|
+
orgIds = orgIds.filter((id) => id.toLowerCase() === want);
|
|
155
|
+
if (orgIds.length === 0)
|
|
156
|
+
orgIds = [opts.orgId.trim()];
|
|
157
|
+
}
|
|
158
|
+
const targets = await listContentCollections(opts.client, orgIds);
|
|
158
159
|
const rows1h = [];
|
|
159
160
|
const rows24h = [];
|
|
160
161
|
const concurrency = 8;
|
package/dist/data-changes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-changes.js","sourceRoot":"","sources":["../src/data-changes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,cAAc,GAA4B;IAC9C,QAAQ;IACR,OAAO;IACP,WAAW;IACX,aAAa;CACL,CAAC;AAEX,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,eAAe;IACf,kBAAkB;IAClB,gBAAgB;CACjB,CAAC,CAAC;AAEH,4EAA4E;AAC5E,SAAS,uBAAuB,CAAC,IAAY;IAC3C,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAsCD,SAAS,QAAQ,CAAC,EAAsB;IACtC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9C,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,2BAA2B,CACzC,cAAsB,EACtB,WAA8B;IAE9B,MAAM,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACpE,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC;QAChC,IACE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;YACjC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EACrC,CAAC;YACD,OAAO;gBACL,UAAU;gBACV,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;aACjD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO;YACL,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACtC,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"data-changes.js","sourceRoot":"","sources":["../src/data-changes.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type ServiceErrorBody = {
|
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
/** Actionable next step for undeclared OT/CT or a rejected metadata ensure handshake. */
|
|
14
|
-
export declare const METADATA_ENSURE_NEXT = "POST /api/metadata/ensure with your metadata pack and confirm:true
|
|
14
|
+
export declare const METADATA_ENSURE_NEXT = "On startup, POST /api/metadata/ensure with your metadata pack and confirm:true. Each content type reports id and profile.allowSnapshotBuckets. pack.agentId must be one of x-memorix-agent-ids. Ensure replaces that agent's catalog: if another writer shares the agent, GET /api/metadata/raw, merge, then ensure. Then retry this write. A 404 on /api/metadata/ensure means this host is older than @x12i/memorix-service@3.7.6.";
|
|
15
15
|
export declare const METADATA_ENSURE_BODY_NEXT = "Call POST /api/metadata/ensure with body { pack: <MetadataPack>, confirm: true }. pack.agentId must be one of x-memorix-agent-ids. Do not invent objectType/contentType on POST /api/data/content.";
|
|
16
16
|
export declare class ServiceError extends Error {
|
|
17
17
|
readonly code: string;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAC/C,CAAC;CACH,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAC/C,CAAC;CACH,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,yaACuY,CAAC;AAEza,eAAO,MAAM,yBAAyB,uMACgK,CAAC;AAEvM,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEf,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,SAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAO/E;AA8FD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAmEA;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BrD"}
|
package/dist/errors.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Actionable next step for undeclared OT/CT or a rejected metadata ensure handshake. */
|
|
2
|
-
export const METADATA_ENSURE_NEXT = "POST /api/metadata/ensure with your metadata pack and confirm:true
|
|
2
|
+
export const METADATA_ENSURE_NEXT = "On startup, POST /api/metadata/ensure with your metadata pack and confirm:true. Each content type reports id and profile.allowSnapshotBuckets. pack.agentId must be one of x-memorix-agent-ids. Ensure replaces that agent's catalog: if another writer shares the agent, GET /api/metadata/raw, merge, then ensure. Then retry this write. A 404 on /api/metadata/ensure means this host is older than @x12i/memorix-service@3.7.6.";
|
|
3
3
|
export const METADATA_ENSURE_BODY_NEXT = "Call POST /api/metadata/ensure with body { pack: <MetadataPack>, confirm: true }. pack.agentId must be one of x-memorix-agent-ids. Do not invent objectType/contentType on POST /api/data/content.";
|
|
4
4
|
export class ServiceError extends Error {
|
|
5
5
|
code;
|
|
@@ -48,6 +48,7 @@ const DATA_PLANE_STATUS = {
|
|
|
48
48
|
MARKDOWN_INVALID: 400,
|
|
49
49
|
MARKDOWN_TOO_LARGE: 400,
|
|
50
50
|
AUDIT_INVALID: 400,
|
|
51
|
+
METADATA_DESCRIPTOR_MISSING: 400,
|
|
51
52
|
BACKFILL_UNAVAILABLE: 503,
|
|
52
53
|
};
|
|
53
54
|
const DATA_PLANE_ERROR_NAMES = new Set([
|
|
@@ -128,7 +129,8 @@ export function mapErrorToHttp(err, correlationId) {
|
|
|
128
129
|
if (isDataPlaneLike(err)) {
|
|
129
130
|
const status = dataPlaneStatus(err.code) ?? 500;
|
|
130
131
|
const details = err.code === "ROUTE_UNKNOWN_OBJECT_TYPE" ||
|
|
131
|
-
err.code === "ROUTE_UNKNOWN_CONTENT_TYPE"
|
|
132
|
+
err.code === "ROUTE_UNKNOWN_CONTENT_TYPE" ||
|
|
133
|
+
err.code === "METADATA_DESCRIPTOR_MISSING"
|
|
132
134
|
? mergeDetails(err.details, { next: METADATA_ENSURE_NEXT })
|
|
133
135
|
: err.details;
|
|
134
136
|
return {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAUA,yFAAyF;AACzF,MAAM,CAAC,MAAM,oBAAoB,GAC/B,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks-live-ui.js
CHANGED
|
@@ -92,7 +92,7 @@ export function hooksLiveHtml() {
|
|
|
92
92
|
<div class="meta">
|
|
93
93
|
<div><strong>UI</strong> /_live/hooks</div>
|
|
94
94
|
<div><strong>API</strong> /_live/api/hooks</div>
|
|
95
|
-
<div><a href="/_live">← live view</a> · <a href="/_live/activity">activity</a> · <a href="/_live/changes">data changes</a></div>
|
|
95
|
+
<div><a href="/_live">← live view</a> · <a href="/_live/activity">activity</a> · <a href="/_live/arrivals">arrivals</a> · <a href="/_live/changes">data changes</a></div>
|
|
96
96
|
</div>
|
|
97
97
|
</header>
|
|
98
98
|
<div class="toolbar">
|
package/dist/land-v2-guards.d.ts
CHANGED
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare function rejectMemoryIngressContentType(body: Record<string, unknown>): {
|
|
4
|
-
deprecated?: string;
|
|
5
|
-
};
|
|
1
|
+
/** Reject Memory ingress contentType. Landing CT comes from metadata. */
|
|
2
|
+
export declare function rejectMemoryIngressContentType(body: Record<string, unknown>): void;
|
|
6
3
|
/**
|
|
7
4
|
* Resolve objectType for commit-page / pages:commit.
|
|
8
|
-
*
|
|
5
|
+
* Require OT or streamId.
|
|
9
6
|
*/
|
|
10
7
|
export declare function requireCommitObjectType(args: {
|
|
11
8
|
objectType?: unknown;
|
|
12
9
|
streamId?: unknown;
|
|
13
10
|
}): {
|
|
14
11
|
objectType: string;
|
|
15
|
-
deprecated?: string;
|
|
16
|
-
};
|
|
17
|
-
/** Workflow OT: required in strict; default work-items in compat/off with deprecation when missing. */
|
|
18
|
-
export declare function resolveWorkflowObjectType(raw: unknown): {
|
|
19
|
-
objectType: string;
|
|
20
|
-
deprecated?: string;
|
|
21
12
|
};
|
|
13
|
+
/** Workflow objectType is required. */
|
|
14
|
+
export declare function resolveWorkflowObjectType(raw: unknown): string;
|
|
22
15
|
//# sourceMappingURL=land-v2-guards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"land-v2-guards.d.ts","sourceRoot":"","sources":["../src/land-v2-guards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"land-v2-guards.d.ts","sourceRoot":"","sources":["../src/land-v2-guards.ts"],"names":[],"mappings":"AAMA,yEAAyE;AACzE,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOlF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAczB;AAED,uCAAuC;AACvC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAI9D"}
|
package/dist/land-v2-guards.js
CHANGED
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* compat: prefer new contract; do not hard-block incomplete legacy calls.
|
|
5
|
-
* strict: reject incomplete / forbidden fields.
|
|
2
|
+
* Memory / workflow ingress guards.
|
|
3
|
+
* Incomplete fields are rejected. Landing content type comes from metadata.
|
|
6
4
|
*/
|
|
7
|
-
import { isLandV2Enabled, isLandV2Strict } from "@x12i/memorix-data";
|
|
8
5
|
import { ServiceError } from "./errors.js";
|
|
9
|
-
|
|
10
|
-
/** Reject (strict) or ignore (compat) Memory ingress contentType. */
|
|
6
|
+
/** Reject Memory ingress contentType. Landing CT comes from metadata. */
|
|
11
7
|
export function rejectMemoryIngressContentType(body) {
|
|
12
|
-
if (!isLandV2Enabled())
|
|
13
|
-
return {};
|
|
14
8
|
if (body.contentType === undefined)
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
throw new ServiceError("VALIDATION", "contentType must not be sent on Memory ingress; landing CT comes from metadata defaults", 400);
|
|
18
|
-
}
|
|
19
|
-
// compat: strip so land path never uses client CT
|
|
20
|
-
delete body.contentType;
|
|
21
|
-
return { deprecated: LAND_V2_DEPRECATION };
|
|
9
|
+
return;
|
|
10
|
+
throw new ServiceError("VALIDATION", "contentType must not be sent on Memory ingress; landing CT comes from metadata defaults", 400);
|
|
22
11
|
}
|
|
23
12
|
/**
|
|
24
13
|
* Resolve objectType for commit-page / pages:commit.
|
|
25
|
-
*
|
|
14
|
+
* Require OT or streamId.
|
|
26
15
|
*/
|
|
27
16
|
export function requireCommitObjectType(args) {
|
|
28
17
|
const ot = typeof args.objectType === "string" ? args.objectType.trim() : "";
|
|
@@ -33,25 +22,13 @@ export function requireCommitObjectType(args) {
|
|
|
33
22
|
// Memory resolveRouteForCommit uses streamId → route.objectType
|
|
34
23
|
return { objectType: "" };
|
|
35
24
|
}
|
|
36
|
-
|
|
37
|
-
throw new ServiceError("VALIDATION", "objectType required (or streamId that resolves a source stream)", 400);
|
|
38
|
-
}
|
|
39
|
-
if (isLandV2Enabled()) {
|
|
40
|
-
return { objectType: ot, deprecated: LAND_V2_DEPRECATION };
|
|
41
|
-
}
|
|
42
|
-
return { objectType: ot };
|
|
25
|
+
throw new ServiceError("VALIDATION", "objectType required (or streamId that resolves a source stream)", 400);
|
|
43
26
|
}
|
|
44
|
-
/** Workflow
|
|
27
|
+
/** Workflow objectType is required. */
|
|
45
28
|
export function resolveWorkflowObjectType(raw) {
|
|
46
29
|
const ot = typeof raw === "string" ? raw.trim() : "";
|
|
47
30
|
if (ot)
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
throw new ServiceError("VALIDATION", "objectType required", 400);
|
|
51
|
-
}
|
|
52
|
-
if (isLandV2Enabled()) {
|
|
53
|
-
return { objectType: "work-items", deprecated: LAND_V2_DEPRECATION };
|
|
54
|
-
}
|
|
55
|
-
return { objectType: "work-items" };
|
|
31
|
+
return ot;
|
|
32
|
+
throw new ServiceError("VALIDATION", "objectType required", 400);
|
|
56
33
|
}
|
|
57
34
|
//# sourceMappingURL=land-v2-guards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"land-v2-guards.js","sourceRoot":"","sources":["../src/land-v2-guards.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"land-v2-guards.js","sourceRoot":"","sources":["../src/land-v2-guards.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,yEAAyE;AACzE,MAAM,UAAU,8BAA8B,CAAC,IAA6B;IAC1E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO;IAC3C,MAAM,IAAI,YAAY,CACpB,YAAY,EACZ,yFAAyF,EACzF,GAAG,CACJ,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAGvC;IACC,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,gEAAgE;QAChE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,YAAY,CACpB,YAAY,EACZ,iEAAiE,EACjE,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,MAAM,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-ops-nav.d.ts","sourceRoot":"","sources":["../src/live-ops-nav.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"live-ops-nav.d.ts","sourceRoot":"","sources":["../src/live-ops-nav.ts"],"names":[],"mappings":"AA0DA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D"}
|