@x12i/map-store-client 0.1.3 → 0.1.5
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 +155 -1
- package/dist/estate/analytics.d.ts +50 -0
- package/dist/estate/analytics.d.ts.map +1 -0
- package/dist/estate/analytics.js +128 -0
- package/dist/estate/analytics.js.map +1 -0
- package/dist/estate/census.d.ts +123 -0
- package/dist/estate/census.d.ts.map +1 -0
- package/dist/estate/census.js +275 -0
- package/dist/estate/census.js.map +1 -0
- package/dist/estate/client.d.ts +66 -0
- package/dist/estate/client.d.ts.map +1 -0
- package/dist/estate/client.js +10 -0
- package/dist/estate/client.js.map +1 -0
- package/dist/estate/content.d.ts +91 -0
- package/dist/estate/content.d.ts.map +1 -0
- package/dist/estate/content.js +251 -0
- package/dist/estate/content.js.map +1 -0
- package/dist/estate/contract.d.ts +76 -0
- package/dist/estate/contract.d.ts.map +1 -0
- package/dist/estate/contract.js +291 -0
- package/dist/estate/contract.js.map +1 -0
- package/dist/estate/decisions.d.ts +32 -0
- package/dist/estate/decisions.d.ts.map +1 -0
- package/dist/estate/decisions.js +113 -0
- package/dist/estate/decisions.js.map +1 -0
- package/dist/estate/ids.d.ts +3 -0
- package/dist/estate/ids.d.ts.map +1 -0
- package/dist/estate/ids.js +6 -0
- package/dist/estate/ids.js.map +1 -0
- package/dist/estate/index.d.ts +30 -0
- package/dist/estate/index.d.ts.map +1 -0
- package/dist/estate/index.js +19 -0
- package/dist/estate/index.js.map +1 -0
- package/dist/estate/localStories.d.ts +28 -0
- package/dist/estate/localStories.d.ts.map +1 -0
- package/dist/estate/localStories.js +980 -0
- package/dist/estate/localStories.js.map +1 -0
- package/dist/estate/pack.d.ts +45 -0
- package/dist/estate/pack.d.ts.map +1 -0
- package/dist/estate/pack.js +83 -0
- package/dist/estate/pack.js.map +1 -0
- package/dist/estate/predictedAttack.d.ts +79 -0
- package/dist/estate/predictedAttack.d.ts.map +1 -0
- package/dist/estate/predictedAttack.js +321 -0
- package/dist/estate/predictedAttack.js.map +1 -0
- package/dist/estate/readState.d.ts +33 -0
- package/dist/estate/readState.d.ts.map +1 -0
- package/dist/estate/readState.js +58 -0
- package/dist/estate/readState.js.map +1 -0
- package/dist/estate/stories.d.ts +93 -0
- package/dist/estate/stories.d.ts.map +1 -0
- package/dist/estate/stories.js +224 -0
- package/dist/estate/stories.js.map +1 -0
- package/dist/estate/verdictReason.d.ts +17 -0
- package/dist/estate/verdictReason.d.ts.map +1 -0
- package/dist/estate/verdictReason.js +49 -0
- package/dist/estate/verdictReason.js.map +1 -0
- package/dist/fetch.d.ts +2 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +13 -3
- package/dist/fetch.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/queries.d.ts +98 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +180 -0
- package/dist/queries.js.map +1 -0
- package/package.json +14 -1
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tier-0 census records. Three processes count published lander rows and each
|
|
3
|
+
* save one content record. They do not read AI products. They are not
|
|
4
|
+
* `estate-analytics` and they are not a bag total.
|
|
5
|
+
*
|
|
6
|
+
* One GET per board, after `working/bootstrap` has pinned the session:
|
|
7
|
+
* `security-map` / `tier0-analytics` / `working/{vulnerability,asset,estate}-census`.
|
|
8
|
+
* `data.kind` selects the record.
|
|
9
|
+
*
|
|
10
|
+
* `produced: true` and `value: 0` is a finished empty count.
|
|
11
|
+
* `produced: false` and `value: 0` means that source was not read.
|
|
12
|
+
* A missing field is the bucket `absent`. A missing KEV flag is `absent`, not `false`.
|
|
13
|
+
*/
|
|
14
|
+
import { asRecord } from '../util';
|
|
15
|
+
import { contentData } from './content';
|
|
16
|
+
import { objectIdBody } from './ids';
|
|
17
|
+
import { classifyReadError, isPlaceholderRecord } from './readState';
|
|
18
|
+
export const EMPTY_VULNERABILITY_ROWS = [];
|
|
19
|
+
export const EMPTY_ASSET_ROWS = [];
|
|
20
|
+
export const TIER0_TARGETS = {
|
|
21
|
+
vulnerability: {
|
|
22
|
+
recordId: 'working/vulnerability-census',
|
|
23
|
+
kind: 'vulnerability-census',
|
|
24
|
+
},
|
|
25
|
+
asset: {
|
|
26
|
+
recordId: 'working/asset-census',
|
|
27
|
+
kind: 'asset-census',
|
|
28
|
+
},
|
|
29
|
+
estate: {
|
|
30
|
+
recordId: 'working/estate-census',
|
|
31
|
+
kind: 'estate-census',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const unproduced = () => ({ value: 0, produced: false });
|
|
35
|
+
/** A figure the census has not produced is absent, not zero. */
|
|
36
|
+
export function tier0Value(metric) {
|
|
37
|
+
if (!metric?.produced)
|
|
38
|
+
return null;
|
|
39
|
+
return metric.value;
|
|
40
|
+
}
|
|
41
|
+
export function publishedCount(value) {
|
|
42
|
+
return value == null ? '—' : value.toLocaleString();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* List figure. A loaded census uses its own number, including a finished `0`.
|
|
46
|
+
* A missing row on a loaded census is unavailable.
|
|
47
|
+
* Before that document exists, the lander figure keeps the column from going blank.
|
|
48
|
+
*/
|
|
49
|
+
export function censusOrLander(censusReady, censusRow, censusValue, landerValue) {
|
|
50
|
+
if (!censusReady)
|
|
51
|
+
return landerValue ?? null;
|
|
52
|
+
if (!censusRow)
|
|
53
|
+
return null;
|
|
54
|
+
return censusValue ?? null;
|
|
55
|
+
}
|
|
56
|
+
function metricOf(value) {
|
|
57
|
+
const rec = asRecord(value);
|
|
58
|
+
if (!rec ||
|
|
59
|
+
typeof rec.produced !== 'boolean' ||
|
|
60
|
+
typeof rec.value !== 'number' ||
|
|
61
|
+
!Number.isFinite(rec.value)) {
|
|
62
|
+
return unproduced();
|
|
63
|
+
}
|
|
64
|
+
return { value: rec.value, produced: rec.produced };
|
|
65
|
+
}
|
|
66
|
+
function readMetric(source, key) {
|
|
67
|
+
if (!source || !Object.prototype.hasOwnProperty.call(source, key))
|
|
68
|
+
return unproduced();
|
|
69
|
+
return metricOf(source[key]);
|
|
70
|
+
}
|
|
71
|
+
/** A row count. A wrapped metric counts only when that metric was produced. */
|
|
72
|
+
function countOf(value) {
|
|
73
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
74
|
+
return value;
|
|
75
|
+
const rec = asRecord(value);
|
|
76
|
+
if (!rec || rec.produced !== true || typeof rec.value !== 'number' || !Number.isFinite(rec.value)) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return rec.value;
|
|
80
|
+
}
|
|
81
|
+
function textOf(value) {
|
|
82
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
83
|
+
}
|
|
84
|
+
function metricMap(value) {
|
|
85
|
+
const rec = asRecord(value);
|
|
86
|
+
if (!rec)
|
|
87
|
+
return null;
|
|
88
|
+
const out = {};
|
|
89
|
+
for (const [key, raw] of Object.entries(rec)) {
|
|
90
|
+
if (!key)
|
|
91
|
+
continue;
|
|
92
|
+
out[key] = metricOf(raw);
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
function groupsOf(value) {
|
|
97
|
+
const rec = asRecord(value);
|
|
98
|
+
if (!rec)
|
|
99
|
+
return {};
|
|
100
|
+
const out = {};
|
|
101
|
+
for (const [key, raw] of Object.entries(rec)) {
|
|
102
|
+
const buckets = metricMap(raw);
|
|
103
|
+
if (buckets)
|
|
104
|
+
out[key] = buckets;
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
function vulnerabilityRows(value) {
|
|
109
|
+
if (!Array.isArray(value))
|
|
110
|
+
return [];
|
|
111
|
+
const rows = [];
|
|
112
|
+
for (const item of value) {
|
|
113
|
+
const rec = asRecord(item);
|
|
114
|
+
const id = textOf(rec?.id);
|
|
115
|
+
if (!rec || !id)
|
|
116
|
+
continue;
|
|
117
|
+
rows.push({
|
|
118
|
+
id,
|
|
119
|
+
cveId: textOf(rec.cveId),
|
|
120
|
+
label: textOf(rec.label),
|
|
121
|
+
affectedAssets: countOf(rec.affectedAssets),
|
|
122
|
+
findings: countOf(rec.findings),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return rows;
|
|
126
|
+
}
|
|
127
|
+
function assetRows(value) {
|
|
128
|
+
if (!Array.isArray(value))
|
|
129
|
+
return [];
|
|
130
|
+
const rows = [];
|
|
131
|
+
for (const item of value) {
|
|
132
|
+
const rec = asRecord(item);
|
|
133
|
+
const id = textOf(rec?.id);
|
|
134
|
+
if (!rec || !id)
|
|
135
|
+
continue;
|
|
136
|
+
rows.push({
|
|
137
|
+
id,
|
|
138
|
+
label: textOf(rec.label),
|
|
139
|
+
findings: countOf(rec.findings),
|
|
140
|
+
distinctCves: countOf(rec.distinctCves),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return rows;
|
|
144
|
+
}
|
|
145
|
+
/** Parse one census body. A mismatched `data.kind` is not that board's record. */
|
|
146
|
+
export function parseTier0Census(page, kind) {
|
|
147
|
+
const data = contentData(page);
|
|
148
|
+
if (!data || data.kind !== kind)
|
|
149
|
+
return null;
|
|
150
|
+
const totals = asRecord(data.totals);
|
|
151
|
+
const groups = groupsOf(data.groups);
|
|
152
|
+
if (kind === 'vulnerability-census') {
|
|
153
|
+
return {
|
|
154
|
+
kind,
|
|
155
|
+
totals: {
|
|
156
|
+
findings: readMetric(totals, 'findings'),
|
|
157
|
+
vulnerabilities: readMetric(totals, 'vulnerabilities'),
|
|
158
|
+
distinctCves: readMetric(totals, 'distinctCves'),
|
|
159
|
+
},
|
|
160
|
+
rows: vulnerabilityRows(data.rows),
|
|
161
|
+
groups,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
if (kind === 'asset-census') {
|
|
165
|
+
return {
|
|
166
|
+
kind,
|
|
167
|
+
totals: {
|
|
168
|
+
assets: readMetric(totals, 'assets'),
|
|
169
|
+
findings: readMetric(totals, 'findings'),
|
|
170
|
+
},
|
|
171
|
+
rows: assetRows(data.rows),
|
|
172
|
+
groups,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const subjects = asRecord(totals?.subjects);
|
|
176
|
+
const bags = asRecord(totals?.bags);
|
|
177
|
+
return {
|
|
178
|
+
kind,
|
|
179
|
+
totals: {
|
|
180
|
+
subjects: {
|
|
181
|
+
endpointAssets: readMetric(subjects, 'endpointAssets'),
|
|
182
|
+
findings: readMetric(subjects, 'findings'),
|
|
183
|
+
alerts: readMetric(subjects, 'alerts'),
|
|
184
|
+
zones: readMetric(subjects, 'zones'),
|
|
185
|
+
devices: readMetric(subjects, 'devices'),
|
|
186
|
+
unresolvedSubjects: readMetric(subjects, 'unresolvedSubjects'),
|
|
187
|
+
},
|
|
188
|
+
bags: {
|
|
189
|
+
hypothesizedPaths: readMetric(bags, 'hypothesizedPaths'),
|
|
190
|
+
reachabilityClaims: readMetric(bags, 'reachabilityClaims'),
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
rows: [],
|
|
194
|
+
groups,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* One client-API read of `security-map` / `tier0-analytics`.
|
|
199
|
+
* `declared-empty` is a missing record. `undeclared` means the content type is not registered.
|
|
200
|
+
* `placeholder` is a land with no census. A transport failure is `error` and is not logged here.
|
|
201
|
+
*/
|
|
202
|
+
export async function loadTier0CensusResult(client, board, signal) {
|
|
203
|
+
const target = TIER0_TARGETS[board];
|
|
204
|
+
if (signal?.aborted)
|
|
205
|
+
return { state: 'declared-empty', data: null };
|
|
206
|
+
try {
|
|
207
|
+
const page = await client.getContent({
|
|
208
|
+
objectType: 'security-map',
|
|
209
|
+
contentType: 'tier0-analytics',
|
|
210
|
+
recordId: target.recordId,
|
|
211
|
+
discriminatorValue: target.kind,
|
|
212
|
+
});
|
|
213
|
+
if (signal?.aborted)
|
|
214
|
+
return { state: 'declared-empty', data: null };
|
|
215
|
+
const body = contentData(page);
|
|
216
|
+
if (isPlaceholderRecord(body))
|
|
217
|
+
return { state: 'placeholder', data: null };
|
|
218
|
+
const parsed = parseTier0Census(page, target.kind);
|
|
219
|
+
return parsed ? { state: 'ready', data: parsed } : { state: 'declared-empty', data: null };
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
const kind = classifyReadError(err);
|
|
223
|
+
if (kind === 'error')
|
|
224
|
+
return { state: 'error', data: null, error: err };
|
|
225
|
+
return { state: kind, data: null };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* One client-API read of `security-map` / `tier0-analytics`.
|
|
230
|
+
* A missing record, an unregistered content type, a placeholder land, or a failed read yields null.
|
|
231
|
+
* Use {@link loadTier0CensusResult} to tell those apart.
|
|
232
|
+
*/
|
|
233
|
+
export async function loadTier0Census(client, board, signal) {
|
|
234
|
+
const result = await loadTier0CensusResult(client, board, signal);
|
|
235
|
+
if (result.state === 'error') {
|
|
236
|
+
console.warn(`tier0-analytics ${TIER0_TARGETS[board].recordId} unavailable`, result.error);
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
return result.data;
|
|
240
|
+
}
|
|
241
|
+
/** Dialog lookup. `rows[].id` is the lander record id. */
|
|
242
|
+
export function censusEntryById(rows, id) {
|
|
243
|
+
const want = id.trim();
|
|
244
|
+
if (!want)
|
|
245
|
+
return null;
|
|
246
|
+
const body = objectIdBody(want);
|
|
247
|
+
for (const row of rows) {
|
|
248
|
+
if (row.id === want || row.id === body || objectIdBody(row.id) === body)
|
|
249
|
+
return row;
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* CVE dialog join. The panel's key is the CVE text. Use the lander id when that
|
|
255
|
+
* id is the CVE, otherwise the single census row that publishes this `cveId`.
|
|
256
|
+
* Several rows for one CVE stay unresolved here. Each dialog still matches by id.
|
|
257
|
+
*/
|
|
258
|
+
export function vulnerabilityEntryForCve(rows, cveId) {
|
|
259
|
+
const direct = censusEntryById(rows, cveId);
|
|
260
|
+
if (direct)
|
|
261
|
+
return direct;
|
|
262
|
+
const key = cveId.trim().toUpperCase();
|
|
263
|
+
if (!key)
|
|
264
|
+
return null;
|
|
265
|
+
let hit = null;
|
|
266
|
+
for (const row of rows) {
|
|
267
|
+
if ((row.cveId ?? '').toUpperCase() !== key)
|
|
268
|
+
continue;
|
|
269
|
+
if (hit)
|
|
270
|
+
return null;
|
|
271
|
+
hit = row;
|
|
272
|
+
}
|
|
273
|
+
return hit;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=census.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"census.js","sourceRoot":"","sources":["../../src/estate/census.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The slice of `@x12i/memorix-client-api-client` these reads use.
|
|
3
|
+
* Pass the client you already build with `createMemorixReadClient`. Any object with these
|
|
4
|
+
* methods works, so this package does not depend on the Memorix client.
|
|
5
|
+
*
|
|
6
|
+
* The browser reaches it through the app proxy (this repo proxies `/memorix-client`).
|
|
7
|
+
* These reads never call Memorix itself.
|
|
8
|
+
*/
|
|
9
|
+
export type ContentFilter = {
|
|
10
|
+
field: string;
|
|
11
|
+
op: 'eq';
|
|
12
|
+
value: string | number | boolean;
|
|
13
|
+
} | {
|
|
14
|
+
field: string;
|
|
15
|
+
op: 'exists';
|
|
16
|
+
value: true;
|
|
17
|
+
};
|
|
18
|
+
/** Arguments of `data.listContent` and `data.getContent`. */
|
|
19
|
+
export type ContentRead = {
|
|
20
|
+
objectType: string;
|
|
21
|
+
contentType: string;
|
|
22
|
+
recordId?: string;
|
|
23
|
+
discriminatorValue?: string;
|
|
24
|
+
filter?: ContentFilter[];
|
|
25
|
+
limit?: number;
|
|
26
|
+
cursor?: string;
|
|
27
|
+
include?: {
|
|
28
|
+
markdown?: boolean;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/** `data` on the Memorix read client. */
|
|
32
|
+
export interface EstateData {
|
|
33
|
+
listContent(query: ContentRead): Promise<unknown>;
|
|
34
|
+
getContent(query: ContentRead): Promise<unknown>;
|
|
35
|
+
readStory(query: {
|
|
36
|
+
objectType: string;
|
|
37
|
+
recordId: string;
|
|
38
|
+
template: string;
|
|
39
|
+
}): Promise<unknown>;
|
|
40
|
+
}
|
|
41
|
+
/** One story function from `functions(objectType)`. */
|
|
42
|
+
export type ObjectTypeFunction = {
|
|
43
|
+
id: string;
|
|
44
|
+
template?: string | null;
|
|
45
|
+
question?: string | null;
|
|
46
|
+
pageStory?: boolean;
|
|
47
|
+
};
|
|
48
|
+
/** Catalog and record reads on the Memorix read client. */
|
|
49
|
+
export interface EstateCatalog {
|
|
50
|
+
functions(objectType: string): Promise<ObjectTypeFunction[]>;
|
|
51
|
+
getContentType(objectType: string, contentType: string): Promise<unknown>;
|
|
52
|
+
listContentTypes(objectType: string): Promise<unknown>;
|
|
53
|
+
listRecords(objectType: string, query: {
|
|
54
|
+
filter?: {
|
|
55
|
+
recordId: string;
|
|
56
|
+
};
|
|
57
|
+
limit?: number;
|
|
58
|
+
representation?: string;
|
|
59
|
+
}): Promise<unknown>;
|
|
60
|
+
listRecordContentTypes(recordId: string): Promise<unknown>;
|
|
61
|
+
}
|
|
62
|
+
/** `analytics` on the Memorix read client. */
|
|
63
|
+
export interface EstateAnalyticsApi {
|
|
64
|
+
sourceCensus(): Promise<unknown>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/estate/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,aAAa,GACrB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GAC7D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAC;AAEjD,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChG;AAED,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,WAAW,CACT,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAChF,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5D;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The slice of `@x12i/memorix-client-api-client` these reads use.
|
|
3
|
+
* Pass the client you already build with `createMemorixReadClient`. Any object with these
|
|
4
|
+
* methods works, so this package does not depend on the Memorix client.
|
|
5
|
+
*
|
|
6
|
+
* The browser reaches it through the app proxy (this repo proxies `/memorix-client`).
|
|
7
|
+
* These reads never call Memorix itself.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/estate/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memorix content reads behind the lists.
|
|
3
|
+
* Business fields live on `record.data`. Narrative text lives on `_markdown.content`.
|
|
4
|
+
* The scope reason lives on the envelope `_metadata`, so each row carries it out.
|
|
5
|
+
*/
|
|
6
|
+
import type { ContentFilter, EstateCatalog, EstateData } from './client';
|
|
7
|
+
import { type ReadResult } from './readState';
|
|
8
|
+
export type ContentData = Record<string, unknown>;
|
|
9
|
+
/** A Memorix document envelope. Its facts are `data`, never the envelope itself. */
|
|
10
|
+
export declare function isDocumentEnvelope(value: Record<string, unknown>): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Business fields. Prefer `record.data` or `page.data`.
|
|
13
|
+
* An envelope without `data` is not facts. A flat body that is not an envelope still is.
|
|
14
|
+
*/
|
|
15
|
+
export declare function contentData(page: unknown): ContentData | null;
|
|
16
|
+
/** `_markdown.content` on a record or a `{ record }` page. Empty when the head has none. */
|
|
17
|
+
export declare function documentMarkdown(page: unknown): string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Envelope `_metadata.scopeReason`, for example `OUTSIDE_SNAPSHOT`.
|
|
20
|
+
* It is not a field inside `data`, so list reads lose it unless it is copied out.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readScopeReason(envelope: unknown): string | null;
|
|
23
|
+
export type ContentRow = {
|
|
24
|
+
recordId: string;
|
|
25
|
+
data: ContentData;
|
|
26
|
+
markdown: string | null;
|
|
27
|
+
/** `_metadata.scopeReason` from the envelope. Null when the record carries none. */
|
|
28
|
+
scopeReason: string | null;
|
|
29
|
+
};
|
|
30
|
+
export type ListContentInput = {
|
|
31
|
+
objectType: string;
|
|
32
|
+
contentType: string;
|
|
33
|
+
filter?: ContentFilter[];
|
|
34
|
+
/** Ask for `_markdown`. The analysis pages do. Table lists do not. */
|
|
35
|
+
includeMarkdown?: boolean;
|
|
36
|
+
/** Pages of `pageSize` to follow. Defaults to 20. */
|
|
37
|
+
maxPages?: number;
|
|
38
|
+
/** Defaults to 200. */
|
|
39
|
+
pageSize?: number;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Every record of one content type on one object type, following `pageInfo.nextCursor`.
|
|
43
|
+
* `declared-empty` is a 404. `undeclared` is a content type the pack does not register.
|
|
44
|
+
* A placeholder land is `placeholder` and carries no rows. Anything else is `error`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function listContentResult(client: EstateData, input: ListContentInput): Promise<ReadResult<ContentRow[]>>;
|
|
47
|
+
/**
|
|
48
|
+
* Every record of one content type on one object type, following `pageInfo.nextCursor`.
|
|
49
|
+
* A 404, an undeclared content type, or a placeholder land is an empty list.
|
|
50
|
+
* Anything else is thrown. Use {@link listContentResult} to tell those apart.
|
|
51
|
+
*/
|
|
52
|
+
export declare function listContent(client: EstateData, input: ListContentInput): Promise<ContentRow[]>;
|
|
53
|
+
export type ReadContentInput = {
|
|
54
|
+
objectType: string;
|
|
55
|
+
contentType: string;
|
|
56
|
+
recordId: string;
|
|
57
|
+
includeMarkdown?: boolean;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* One record. Names the discriminator instance when the pack marks it required.
|
|
61
|
+
* `declared-empty` is a miss. `undeclared` means the pack does not register the content type.
|
|
62
|
+
* `placeholder` is a land that occupies the address without a product.
|
|
63
|
+
*/
|
|
64
|
+
export declare function readContentResult(data: EstateData, catalog: EstateCatalog, input: ReadContentInput): Promise<ReadResult<ContentRow>>;
|
|
65
|
+
/**
|
|
66
|
+
* One record. Names the discriminator instance when the pack marks it required.
|
|
67
|
+
* A miss, an undeclared content type, or a placeholder land is null.
|
|
68
|
+
* Anything else is thrown. Use {@link readContentResult} to tell those apart.
|
|
69
|
+
*/
|
|
70
|
+
export declare function readContent(data: EstateData, catalog: EstateCatalog, input: ReadContentInput): Promise<ContentRow | null>;
|
|
71
|
+
export type RecordContentInput = ReadContentInput & {
|
|
72
|
+
/**
|
|
73
|
+
* Ask for one instance, for example `{ field: 'decisionType', value: 'asset-triage' }`.
|
|
74
|
+
* Without one, a required discriminator is matched with `exists` so every instance comes back.
|
|
75
|
+
*/
|
|
76
|
+
discriminator?: {
|
|
77
|
+
field: string;
|
|
78
|
+
value: string;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Every sibling of one content type on one record.
|
|
83
|
+
* `getContent` answers 404 when several records share the id, so this lists with a filter instead.
|
|
84
|
+
*/
|
|
85
|
+
export declare function listRecordContent(data: EstateData, catalog: EstateCatalog, input: RecordContentInput): Promise<ContentRow[]>;
|
|
86
|
+
/**
|
|
87
|
+
* `data.displayName` on the inventory row for this subject.
|
|
88
|
+
* One `listContent` of `inventory` filtered by record id. Null when the row has no name.
|
|
89
|
+
*/
|
|
90
|
+
export declare function inventoryDisplayName(client: EstateData, objectType: string, recordId: string): Promise<string | null>;
|
|
91
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/estate/content.ts"],"names":[],"mappings":"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"}
|