@superbee/core 0.1.6 → 0.2.0-pre.10
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 +127 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/backend.d.ts +16 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +112 -47
- package/dist/backend.js.map +1 -1
- package/dist/bundle-ops.d.ts +42 -0
- package/dist/bundle-ops.d.ts.map +1 -0
- package/dist/bundle-ops.js +88 -0
- package/dist/bundle-ops.js.map +1 -0
- package/dist/bundle.d.ts +10 -28
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +12 -69
- package/dist/bundle.js.map +1 -1
- package/dist/document-codec.d.ts +6 -1
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +8 -4
- package/dist/document-codec.js.map +1 -1
- package/dist/document-field-actions.d.ts +107 -0
- package/dist/document-field-actions.d.ts.map +1 -0
- package/dist/document-field-actions.js +302 -0
- package/dist/document-field-actions.js.map +1 -0
- package/dist/document-mutation.d.ts +61 -3
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +116 -25
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts +0 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +7 -4
- package/dist/document-write-policy.js.map +1 -1
- package/dist/engine.d.ts +3 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +6 -4
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +19 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +10 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +162 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1113 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-host.d.ts +15 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +20 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-identity.d.ts +86 -4
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +338 -102
- package/dist/filesystem-identity.js.map +1 -1
- package/dist/filesystem-lock.d.ts +16 -3
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +323 -77
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/filesystem.d.ts +17 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +18 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/freshness.d.ts +10 -7
- package/dist/freshness.d.ts.map +1 -1
- package/dist/freshness.js +14 -11
- package/dist/freshness.js.map +1 -1
- package/dist/frontmatter-contract.d.ts +2 -2
- package/dist/frontmatter-contract.js +2 -2
- package/dist/frontmatter.d.ts +11 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +20 -7
- package/dist/frontmatter.js.map +1 -1
- package/dist/governed-body-write.d.ts +106 -0
- package/dist/governed-body-write.d.ts.map +1 -0
- package/dist/governed-body-write.js +251 -0
- package/dist/governed-body-write.js.map +1 -0
- package/dist/heads-digest.d.ts +32 -0
- package/dist/heads-digest.d.ts.map +1 -0
- package/dist/heads-digest.js +37 -0
- package/dist/heads-digest.js.map +1 -0
- package/dist/host-policy-snapshot.d.ts +9 -0
- package/dist/host-policy-snapshot.d.ts.map +1 -0
- package/dist/host-policy-snapshot.js +33 -0
- package/dist/host-policy-snapshot.js.map +1 -0
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +216 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +396 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +142 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +241 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +250 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +557 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +411 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +29 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -6
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +197 -0
- package/dist/indexeddb-backend.d.ts.map +1 -0
- package/dist/indexeddb-backend.js +1183 -0
- package/dist/indexeddb-backend.js.map +1 -0
- package/dist/journaled-backend.d.ts +467 -0
- package/dist/journaled-backend.d.ts.map +1 -0
- package/dist/journaled-backend.js +389 -0
- package/dist/journaled-backend.js.map +1 -0
- package/dist/kind-coverage.d.ts +99 -0
- package/dist/kind-coverage.d.ts.map +1 -0
- package/dist/kind-coverage.js +186 -0
- package/dist/kind-coverage.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +15 -0
- package/dist/kind-field-mutation.d.ts.map +1 -0
- package/dist/kind-field-mutation.js +160 -0
- package/dist/kind-field-mutation.js.map +1 -0
- package/dist/kinds.d.ts +31 -1
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +86 -17
- package/dist/kinds.js.map +1 -1
- package/dist/links.d.ts +1 -1
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +5 -10
- package/dist/links.js.map +1 -1
- package/dist/managed-document-metadata.d.ts +2 -0
- package/dist/managed-document-metadata.d.ts.map +1 -0
- package/dist/managed-document-metadata.js +9 -0
- package/dist/managed-document-metadata.js.map +1 -0
- package/dist/meaningful-change-time.d.ts +6 -6
- package/dist/meaningful-change-time.d.ts.map +1 -1
- package/dist/meaningful-change-time.js +12 -13
- package/dist/meaningful-change-time.js.map +1 -1
- package/dist/memory-backend.d.ts +2 -2
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +32 -16
- package/dist/memory-backend.js.map +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +2 -2
- package/dist/mutation.js.map +1 -1
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +2 -1
- package/dist/page.js.map +1 -1
- package/dist/paths.d.ts +6 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +35 -33
- package/dist/paths.js.map +1 -1
- package/dist/platform.d.ts +239 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +82 -0
- package/dist/platform.js.map +1 -0
- package/dist/portable-export.d.ts +119 -0
- package/dist/portable-export.d.ts.map +1 -0
- package/dist/portable-export.js +501 -0
- package/dist/portable-export.js.map +1 -0
- package/dist/publication-filesystem.d.ts +1 -1
- package/dist/publication-filesystem.d.ts.map +1 -1
- package/dist/publication-filesystem.js +1 -1
- package/dist/publication-filesystem.js.map +1 -1
- package/dist/query-filter.d.ts +7 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +24 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/recipes.d.ts +3 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +4 -4
- package/dist/recipes.js.map +1 -1
- package/dist/remote-backend.d.ts +114 -22
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +285 -44
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-document-codec.d.ts +15 -0
- package/dist/remote-document-codec.d.ts.map +1 -0
- package/dist/remote-document-codec.js +103 -0
- package/dist/remote-document-codec.js.map +1 -0
- package/dist/remote-error.d.ts +38 -0
- package/dist/remote-error.d.ts.map +1 -0
- package/dist/remote-error.js +59 -0
- package/dist/remote-error.js.map +1 -0
- package/dist/remote-operations.d.ts +63 -0
- package/dist/remote-operations.d.ts.map +1 -0
- package/dist/remote-operations.js +125 -0
- package/dist/remote-operations.js.map +1 -0
- package/dist/remote-parsers.d.ts +86 -0
- package/dist/remote-parsers.d.ts.map +1 -0
- package/dist/remote-parsers.js +181 -0
- package/dist/remote-parsers.js.map +1 -0
- package/dist/remote.d.ts +7 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +6 -1
- package/dist/remote.js.map +1 -1
- package/dist/sha256.d.ts +21 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +114 -0
- package/dist/sha256.js.map +1 -0
- package/dist/storage.d.ts +8 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +11 -2
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +40 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/uncertain-write.d.ts +178 -0
- package/dist/uncertain-write.d.ts.map +1 -0
- package/dist/uncertain-write.js +198 -0
- package/dist/uncertain-write.js.map +1 -0
- package/dist/version-transport.d.ts +7 -0
- package/dist/version-transport.d.ts.map +1 -1
- package/dist/version-transport.js +9 -0
- package/dist/version-transport.js.map +1 -1
- package/dist/versioning.d.ts +18 -7
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +23 -14
- package/dist/versioning.js.map +1 -1
- package/package.json +75 -4
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/** Read-only measurements over canonical documents and the already-loaded Kind registry. */
|
|
2
|
+
import { isStandardDocumentSetField } from "./document-field-actions.js";
|
|
3
|
+
import { freshnessHorizonMs, projectKindForAuthoring, readKindField, resolveKindFieldCoordinate } from "./kinds.js";
|
|
4
|
+
import { extractMarkdownLinks, parseLinksFromDoc } from "./links.js";
|
|
5
|
+
import { isManagedDocumentMetadataField } from "./managed-document-metadata.js";
|
|
6
|
+
import { parseTimestamp } from "./freshness.js";
|
|
7
|
+
const SENTINELS = new Set(["unknown", "n/a", "na", "none", "tbd", "null", "-", "?"]);
|
|
8
|
+
const EXAMPLES = 3;
|
|
9
|
+
const DOMAIN_LIMIT = 15;
|
|
10
|
+
const DAY = 86400000;
|
|
11
|
+
const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
12
|
+
const ratio = (n, total) => total ? Math.round(n / total * 10000) / 10000 : null;
|
|
13
|
+
const empty = (value) => value == null || (typeof value === "string" && value.trim() === "") ||
|
|
14
|
+
(Array.isArray(value) ? value.length === 0 : typeof value === "object" && Object.keys(value).length === 0);
|
|
15
|
+
const sentinel = (value) => typeof value === "string" && SENTINELS.has(value.trim().toLowerCase());
|
|
16
|
+
const filled = (value) => !empty(value) && !sentinel(value);
|
|
17
|
+
const envelope = (key) => isManagedDocumentMetadataField(key) || isStandardDocumentSetField(key, "0.2") || key === "sources" || key === "tags";
|
|
18
|
+
function bodyProse(body) {
|
|
19
|
+
// Lossless line measurement, not Markdown rendering: every ATX heading is ignored;
|
|
20
|
+
// a Related heading excludes its descendants until the next same/higher-level heading.
|
|
21
|
+
let relatedLevel;
|
|
22
|
+
for (const line of body.split("\n")) {
|
|
23
|
+
const text = line.trim();
|
|
24
|
+
const heading = /^(#{1,6})[ \t]+(.+?)\s*#*\s*$/.exec(text);
|
|
25
|
+
if (heading) {
|
|
26
|
+
const level = heading[1].length;
|
|
27
|
+
if (relatedLevel !== undefined && level <= relatedLevel)
|
|
28
|
+
relatedLevel = undefined;
|
|
29
|
+
if (heading[2].trim().toLowerCase() === "related" && relatedLevel === undefined)
|
|
30
|
+
relatedLevel = level;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (relatedLevel !== undefined)
|
|
34
|
+
continue;
|
|
35
|
+
const prose = text.replace(/^[-*] +/, "");
|
|
36
|
+
if (!prose)
|
|
37
|
+
continue;
|
|
38
|
+
const links = extractMarkdownLinks(prose);
|
|
39
|
+
if (!(links.length === 1 && prose === `[${links[0].text}](${links[0].href})`))
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
function fieldStats(docs, value) {
|
|
45
|
+
let present = 0, sentinels = 0, used = 0;
|
|
46
|
+
for (const doc of docs) {
|
|
47
|
+
const v = value(doc);
|
|
48
|
+
if (v !== undefined)
|
|
49
|
+
used++;
|
|
50
|
+
if (filled(v))
|
|
51
|
+
present++;
|
|
52
|
+
else if (sentinel(v))
|
|
53
|
+
sentinels++;
|
|
54
|
+
}
|
|
55
|
+
return { present: used, filled: present, sentinel: sentinels, empty: docs.length - present - sentinels, rate: ratio(present, docs.length) };
|
|
56
|
+
}
|
|
57
|
+
function checkedOn(kind, docs, now) {
|
|
58
|
+
const buckets = { future: 0, "0-7d": 0, "8-30d": 0, "31-90d": 0, "91-180d": 0, "181-365d": 0, ">365d": 0 };
|
|
59
|
+
let missing = 0, invalid = 0, older = 0;
|
|
60
|
+
const horizon = freshnessHorizonMs(kind);
|
|
61
|
+
for (const doc of docs) {
|
|
62
|
+
const value = doc.frontmatter.checked_on;
|
|
63
|
+
if (!filled(value)) {
|
|
64
|
+
missing++;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// checked_on is domain date metadata, not the edition's meaningful-change clock.
|
|
68
|
+
const ms = typeof value === "string" ? parseTimestamp(/^\d{4}-\d{2}-\d{2}$/.test(value) ? `${value}T00:00:00Z` : value, "0.2") : null;
|
|
69
|
+
if (ms === null) {
|
|
70
|
+
invalid++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const ageMs = now.getTime() - ms;
|
|
74
|
+
const days = Math.floor(ageMs / DAY);
|
|
75
|
+
const bucket = days < 0 ? "future" : days <= 7 ? "0-7d" : days <= 30 ? "8-30d" : days <= 90 ? "31-90d" : days <= 180 ? "91-180d" : days <= 365 ? "181-365d" : ">365d";
|
|
76
|
+
buckets[bucket]++;
|
|
77
|
+
if (horizon !== undefined && ageMs > horizon)
|
|
78
|
+
older++;
|
|
79
|
+
}
|
|
80
|
+
return { clock: "checked_on", horizon: kind.freshnessHorizon ?? null, horizon_ms: horizon ?? null, missing, invalid, buckets, older_than_horizon: horizon === undefined ? null : older };
|
|
81
|
+
}
|
|
82
|
+
function sourceStats(docs) {
|
|
83
|
+
const domains = new Map();
|
|
84
|
+
const distribution = { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5+": 0 };
|
|
85
|
+
let total = 0, zero = 0, invalid = 0, nonUrl = 0;
|
|
86
|
+
for (const doc of docs) {
|
|
87
|
+
const raw = doc.frontmatter.sources;
|
|
88
|
+
const list = Array.isArray(raw) ? raw : raw == null ? [] : [raw];
|
|
89
|
+
let count = 0;
|
|
90
|
+
for (const item of list) {
|
|
91
|
+
const resource = typeof item === "string" ? item : item && typeof item === "object" && !Array.isArray(item) ? item.resource : undefined;
|
|
92
|
+
if (typeof resource !== "string" || !filled(resource)) {
|
|
93
|
+
invalid++;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
count++;
|
|
97
|
+
try {
|
|
98
|
+
const domain = new URL(resource).hostname.toLowerCase().replace(/^www\./, "");
|
|
99
|
+
if (!domain) {
|
|
100
|
+
nonUrl++;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
domains.set(domain, (domains.get(domain) ?? 0) + 1);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
nonUrl++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (!count)
|
|
110
|
+
zero++;
|
|
111
|
+
total += count;
|
|
112
|
+
distribution[count >= 5 ? "5+" : String(count)]++;
|
|
113
|
+
}
|
|
114
|
+
const ordered = [...domains].sort((a, b) => b[1] - a[1] || compare(a[0], b[0]));
|
|
115
|
+
return { zero, total, invalid_entries: invalid, non_url_resources: nonUrl, per_record: distribution, distinct_domains: domains.size, domains_shown: Math.min(domains.size, DOMAIN_LIMIT), top_domains: ordered.slice(0, DOMAIN_LIMIT).map(([domain, sources]) => ({ domain, sources })) };
|
|
116
|
+
}
|
|
117
|
+
/** All records are grouped by actual type; path prefixes never infer a Kind or hide nested records. */
|
|
118
|
+
export function kindCoverage(registry, documents, options) {
|
|
119
|
+
if (!Number.isFinite(options.now.getTime()))
|
|
120
|
+
throw new TypeError("Coverage now must be a valid date");
|
|
121
|
+
const docs = [...documents].sort((a, b) => compare(a.id, b.id));
|
|
122
|
+
const index = new Map(docs.map((doc) => [doc.id, doc]));
|
|
123
|
+
const edges = new Map(docs.map((doc) => [doc.id, parseLinksFromDoc(doc)]));
|
|
124
|
+
const inbound = new Set([...edges.values()].flat().map((link) => link.to));
|
|
125
|
+
const groups = new Map();
|
|
126
|
+
for (const doc of docs) {
|
|
127
|
+
const type = doc.frontmatter.type;
|
|
128
|
+
const group = groups.get(type) ?? [];
|
|
129
|
+
group.push(doc);
|
|
130
|
+
groups.set(type, group);
|
|
131
|
+
}
|
|
132
|
+
const kinds = [...registry.kinds.values()].filter((kind) => options.kind === undefined || kind.governs === options.kind).map((kind) => {
|
|
133
|
+
const records = groups.get(kind.governs) ?? [];
|
|
134
|
+
const authoring = projectKindForAuthoring(options.okfVersion, kind);
|
|
135
|
+
const fields = [...new Set([...authoring.fields.required, ...authoring.fields.optional])].sort(compare);
|
|
136
|
+
const stats = fields.map((field) => ({ field, required: authoring.fields.required.includes(field), ...fieldStats(records, (doc) => readKindField(options.okfVersion, kind, doc.frontmatter, field)) }));
|
|
137
|
+
const declaredStorage = new Set(fields.map((field) => resolveKindFieldCoordinate(options.okfVersion, kind, field)?.storageField ?? field));
|
|
138
|
+
const undeclared = new Map(), envelopes = new Map();
|
|
139
|
+
for (const doc of records)
|
|
140
|
+
for (const key of Object.keys(doc.frontmatter)) {
|
|
141
|
+
if (envelope(key)) {
|
|
142
|
+
envelopes.set(key, (envelopes.get(key) ?? 0) + 1);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (!declaredStorage.has(key)) {
|
|
146
|
+
const ids = undeclared.get(key) ?? [];
|
|
147
|
+
ids.push(doc.id);
|
|
148
|
+
undeclared.set(key, ids);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const relations = new Map();
|
|
152
|
+
let citations = 0, dangling = 0, withLinks = 0;
|
|
153
|
+
const danglingExamples = [];
|
|
154
|
+
for (const doc of records) {
|
|
155
|
+
const links = edges.get(doc.id);
|
|
156
|
+
if (links.length)
|
|
157
|
+
withLinks++;
|
|
158
|
+
for (const link of links) {
|
|
159
|
+
const target = index.get(link.to);
|
|
160
|
+
if (!target) {
|
|
161
|
+
dangling++;
|
|
162
|
+
if (danglingExamples.length < EXAMPLES)
|
|
163
|
+
danglingExamples.push(doc.id);
|
|
164
|
+
}
|
|
165
|
+
if (!Object.hasOwn(kind.links ?? {}, link.text)) {
|
|
166
|
+
citations++;
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const targetKind = target?.frontmatter.type ?? null;
|
|
170
|
+
const key = JSON.stringify([link.text, targetKind]);
|
|
171
|
+
const row = relations.get(key) ?? { relation: link.text, target_kind: targetKind, target_matches: targetKind === null ? null : targetKind === kind.links[link.text], records: new Set(), links: 0 };
|
|
172
|
+
row.records.add(doc.id);
|
|
173
|
+
row.links++;
|
|
174
|
+
relations.set(key, row);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const used = new Set([...relations.values()].map((row) => row.relation));
|
|
178
|
+
return { governs: kind.governs, records: records.length,
|
|
179
|
+
coverage: { fields: stats, body_prose: { filled: records.filter((doc) => bodyProse(doc.body)).length, rate: ratio(records.filter((doc) => bodyProse(doc.body)).length, records.length) } },
|
|
180
|
+
drift: { undeclared: [...undeclared].sort(([a], [b]) => compare(a, b)).map(([key, ids]) => ({ key, records: ids.length, rate: ratio(ids.length, records.length), examples: ids.slice(0, EXAMPLES), examples_total: ids.length })), declared_unused: stats.filter((row) => row.present === 0).map((row) => row.field), envelope: [...envelopes].sort(([a], [b]) => compare(a, b)).map(([key, records]) => ({ key, records })) },
|
|
181
|
+
links: { with_links: withLinks, typed: [...relations.values()].sort((a, b) => compare(a.relation, b.relation) || compare(a.target_kind ?? "", b.target_kind ?? "")).map((row) => ({ relation: row.relation, target_kind: row.target_kind, target_matches: row.target_matches, records: row.records.size, links: row.links, rate: ratio(row.records.size, records.length) })), untyped_citations: citations, declared_never_used: Object.keys(kind.links ?? {}).filter((relation) => !used.has(relation)).sort(compare), dangling, dangling_examples: danglingExamples, no_inbound: records.filter((doc) => !inbound.has(doc.id)).length },
|
|
182
|
+
freshness: checkedOn(kind, records, options.now), sources: sourceStats(records) };
|
|
183
|
+
});
|
|
184
|
+
return { now: options.now.toISOString(), documents: docs.length, undeclared_kinds: [...groups.keys()].filter((type) => !registry.kinds.has(type)).sort(compare), kinds };
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=kind-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-coverage.js","sourceRoot":"","sources":["../src/kind-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
import type { OkfDocument } from "./types.js";
|
|
3
|
+
import type { DocumentMutationCandidate } from "./document-mutation.js";
|
|
4
|
+
export declare class KindFieldMutationConflict extends InvalidInputError {
|
|
5
|
+
}
|
|
6
|
+
export interface KindFieldMutation {
|
|
7
|
+
governs: string;
|
|
8
|
+
field: string;
|
|
9
|
+
action: "add" | "remove";
|
|
10
|
+
required?: boolean;
|
|
11
|
+
values?: string[];
|
|
12
|
+
okfVersion: "0.1" | "0.2";
|
|
13
|
+
}
|
|
14
|
+
export declare function prepareKindFieldMutation(existing: OkfDocument, input: KindFieldMutation, okfVersion: "0.1" | "0.2"): DocumentMutationCandidate;
|
|
15
|
+
//# sourceMappingURL=kind-field-mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-field-mutation.d.ts","sourceRoot":"","sources":["../src/kind-field-mutation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,qBAAa,yBAA0B,SAAQ,iBAAiB;CAAG;AACnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC;CAC3B;AA+BD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,yBAAyB,CA4G9I"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/** Pure Kind schema editing. The mutation engine supplies the fresh convention. */
|
|
2
|
+
import { RESERVED_KIND_FIELD_NAMES } from "./kinds.js";
|
|
3
|
+
import { InvalidInputError } from "./errors.js";
|
|
4
|
+
export class KindFieldMutationConflict extends InvalidInputError {
|
|
5
|
+
}
|
|
6
|
+
/** Normalize a possibly-absent/malformed `fields.<list>` into a fresh string[]. */
|
|
7
|
+
function toStringList(v) {
|
|
8
|
+
return Array.isArray(v) ? v.map((x) => String(x)) : [];
|
|
9
|
+
}
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
12
|
+
return false;
|
|
13
|
+
const prototype = Object.getPrototypeOf(value);
|
|
14
|
+
return prototype === Object.prototype || prototype === null;
|
|
15
|
+
}
|
|
16
|
+
function hasOwn(record, key) {
|
|
17
|
+
return Object.prototype.hasOwnProperty.call(record, key);
|
|
18
|
+
}
|
|
19
|
+
function setOwn(record, key, value) {
|
|
20
|
+
Object.defineProperty(record, key, { value, enumerable: true, configurable: true, writable: true });
|
|
21
|
+
}
|
|
22
|
+
function cloneRecord(record) {
|
|
23
|
+
const clone = {};
|
|
24
|
+
for (const [key, value] of Object.entries(record))
|
|
25
|
+
setOwn(clone, key, value);
|
|
26
|
+
return clone;
|
|
27
|
+
}
|
|
28
|
+
function deleteOwn(record, key) {
|
|
29
|
+
return hasOwn(record, key) && delete record[key];
|
|
30
|
+
}
|
|
31
|
+
export function prepareKindFieldMutation(existing, input, okfVersion) {
|
|
32
|
+
if (typeof input.field !== "string" || input.field.trim() === "" || !["add", "remove"].includes(input.action))
|
|
33
|
+
throw new InvalidInputError("A Kind field mutation requires add/remove and a nonempty field name.");
|
|
34
|
+
if (input.action === "add" && RESERVED_KIND_FIELD_NAMES.includes(input.field))
|
|
35
|
+
throw new InvalidInputError(`'${input.field}' is reserved and cannot be added as a Kind field.`);
|
|
36
|
+
if (input.values !== undefined && (!Array.isArray(input.values) || input.values.length === 0 || input.values.some(value => typeof value !== "string" || value.trim() === "")))
|
|
37
|
+
throw new InvalidInputError("Kind enum values must be nonempty strings.");
|
|
38
|
+
if (input.action === "remove" && (input.required || input.values !== undefined))
|
|
39
|
+
throw new InvalidInputError("required/values apply to Kind field add, not remove.");
|
|
40
|
+
const fm = existing.frontmatter;
|
|
41
|
+
if (okfVersion !== input.okfVersion)
|
|
42
|
+
throw new KindFieldMutationConflict("The bundle format changed while editing the Kind; reload the Kind.");
|
|
43
|
+
const currentGoverns = typeof fm.governs === "string" ? fm.governs.trim() : "";
|
|
44
|
+
if (currentGoverns !== input.governs)
|
|
45
|
+
throw new KindFieldMutationConflict(`'${existing.id}' no longer governs '${input.governs}'; it now governs '${currentGoverns}'. Reload the Kind.`);
|
|
46
|
+
const fieldsObj = isRecord(fm.fields) ? cloneRecord(fm.fields) : {};
|
|
47
|
+
const required = toStringList(fieldsObj.required);
|
|
48
|
+
const optional = toStringList(fieldsObj.optional);
|
|
49
|
+
const valuesMap = hasOwn(fieldsObj, "values") && isRecord(fieldsObj.values)
|
|
50
|
+
? cloneRecord(fieldsObj.values)
|
|
51
|
+
: {};
|
|
52
|
+
const descriptionsMap = hasOwn(fieldsObj, "descriptions") && isRecord(fieldsObj.descriptions)
|
|
53
|
+
? cloneRecord(fieldsObj.descriptions)
|
|
54
|
+
: undefined;
|
|
55
|
+
const rawValueDescriptions = hasOwn(fieldsObj, "value_descriptions")
|
|
56
|
+
? fieldsObj.value_descriptions
|
|
57
|
+
: undefined;
|
|
58
|
+
let valueDescriptionsMap;
|
|
59
|
+
let valueDescriptionsChanged = false;
|
|
60
|
+
let descriptionDeleted = false;
|
|
61
|
+
if (input.action === "add") {
|
|
62
|
+
const targetList = input.required ? required : optional;
|
|
63
|
+
const otherList = input.required ? optional : required;
|
|
64
|
+
// Re-classifying an existing field (e.g. `add --required` a currently-optional field) moves it.
|
|
65
|
+
const otherIdx = otherList.indexOf(input.field);
|
|
66
|
+
if (otherIdx >= 0)
|
|
67
|
+
otherList.splice(otherIdx, 1);
|
|
68
|
+
if (!targetList.includes(input.field))
|
|
69
|
+
targetList.push(input.field);
|
|
70
|
+
if (input.values) {
|
|
71
|
+
const vals = input.values;
|
|
72
|
+
const prev = hasOwn(valuesMap, input.field) && Array.isArray(valuesMap[input.field])
|
|
73
|
+
? valuesMap[input.field].map(String)
|
|
74
|
+
: undefined;
|
|
75
|
+
// Collision-resistant comparison: `prev.join(" ") !==
|
|
76
|
+
// vals.join(" ")` conflated DIFFERENT enum lists that happen to join to the same string
|
|
77
|
+
// — e.g. ["a b","c"] and ["a","b c"] BOTH become "a b c" — so `--values "a,b c"` over an
|
|
78
|
+
// existing ["a b","c"] wrongly reported changed:false. Length + element-wise instead; no
|
|
79
|
+
// delimiter choice can ever collide.
|
|
80
|
+
const same = !!prev && prev.length === vals.length && prev.every((v, i) => v === vals[i]);
|
|
81
|
+
if (!same)
|
|
82
|
+
setOwn(valuesMap, input.field, vals);
|
|
83
|
+
if (isRecord(rawValueDescriptions) && hasOwn(rawValueDescriptions, input.field)) {
|
|
84
|
+
const rawFieldDescriptions = rawValueDescriptions[input.field];
|
|
85
|
+
if (isRecord(rawFieldDescriptions)) {
|
|
86
|
+
const retained = {};
|
|
87
|
+
for (const [value, description] of Object.entries(rawFieldDescriptions)) {
|
|
88
|
+
if (vals.includes(value))
|
|
89
|
+
setOwn(retained, value, description);
|
|
90
|
+
}
|
|
91
|
+
if (Object.keys(retained).length !== Object.keys(rawFieldDescriptions).length) {
|
|
92
|
+
valueDescriptionsMap = cloneRecord(rawValueDescriptions);
|
|
93
|
+
if (Object.keys(retained).length > 0)
|
|
94
|
+
setOwn(valueDescriptionsMap, input.field, retained);
|
|
95
|
+
else
|
|
96
|
+
deleteOwn(valueDescriptionsMap, input.field);
|
|
97
|
+
valueDescriptionsChanged = true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
for (const list of [required, optional]) {
|
|
105
|
+
const idx = list.indexOf(input.field);
|
|
106
|
+
if (idx >= 0)
|
|
107
|
+
list.splice(idx, 1);
|
|
108
|
+
}
|
|
109
|
+
deleteOwn(valuesMap, input.field);
|
|
110
|
+
if (descriptionsMap)
|
|
111
|
+
descriptionDeleted = deleteOwn(descriptionsMap, input.field);
|
|
112
|
+
if (isRecord(rawValueDescriptions) && hasOwn(rawValueDescriptions, input.field)) {
|
|
113
|
+
const rawFieldDescriptions = rawValueDescriptions[input.field];
|
|
114
|
+
if (isRecord(rawFieldDescriptions)) {
|
|
115
|
+
valueDescriptionsMap = cloneRecord(rawValueDescriptions);
|
|
116
|
+
deleteOwn(valueDescriptionsMap, input.field);
|
|
117
|
+
valueDescriptionsChanged = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Rebuild `fields` FROM the original raw object, replacing only the three keys this command
|
|
122
|
+
// owns (required/optional/values, omitted when now-empty so the convention stays clean).
|
|
123
|
+
// Every OTHER sibling key — `terminal` today, any future declaration key — passes through
|
|
124
|
+
// VERBATIM, matching the registry's lenient-parse posture: an unrelated `kind field` edit
|
|
125
|
+
// must never destroy a declaration it doesn't understand (regression-pinned in
|
|
126
|
+
// kind.test.ts). `changed`/no-op detection is `mutateDoc`'s job (structural comparison
|
|
127
|
+
// against the existing doc, ignoring timestamp — this command never refreshes it).
|
|
128
|
+
const newFields = { ...fieldsObj };
|
|
129
|
+
if (required.length > 0)
|
|
130
|
+
newFields.required = required;
|
|
131
|
+
else
|
|
132
|
+
delete newFields.required;
|
|
133
|
+
if (optional.length > 0)
|
|
134
|
+
newFields.optional = optional;
|
|
135
|
+
else
|
|
136
|
+
delete newFields.optional;
|
|
137
|
+
if (Object.keys(valuesMap).length > 0)
|
|
138
|
+
newFields.values = valuesMap;
|
|
139
|
+
else
|
|
140
|
+
delete newFields.values;
|
|
141
|
+
if (descriptionsMap && descriptionDeleted) {
|
|
142
|
+
if (Object.keys(descriptionsMap).length > 0)
|
|
143
|
+
newFields.descriptions = descriptionsMap;
|
|
144
|
+
else
|
|
145
|
+
delete newFields.descriptions;
|
|
146
|
+
}
|
|
147
|
+
if (valueDescriptionsMap && valueDescriptionsChanged) {
|
|
148
|
+
if (Object.keys(valueDescriptionsMap).length > 0)
|
|
149
|
+
newFields.value_descriptions = valueDescriptionsMap;
|
|
150
|
+
else
|
|
151
|
+
delete newFields.value_descriptions;
|
|
152
|
+
}
|
|
153
|
+
const newFm = { ...fm };
|
|
154
|
+
if (Object.keys(newFields).length > 0)
|
|
155
|
+
newFm.fields = newFields;
|
|
156
|
+
else
|
|
157
|
+
delete newFm.fields;
|
|
158
|
+
return { frontmatter: newFm, body: existing.body };
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=kind-field-mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kind-field-mutation.js","sourceRoot":"","sources":["../src/kind-field-mutation.ts"],"names":[],"mappings":"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"}
|
package/dist/kinds.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { ValidationWarning } from "./validation.js";
|
|
|
2
2
|
import type { ConceptId, Frontmatter, OkfDocument } from "./types.js";
|
|
3
3
|
/** The bundle-relative prefix a kind convention doc MUST live under to be discovered. */
|
|
4
4
|
export declare const CONVENTIONS_PREFIX = "conventions/";
|
|
5
|
+
/**
|
|
6
|
+
* True for an id `loadKinds` reads a convention from: under {@link CONVENTIONS_PREFIX} exactly as
|
|
7
|
+
* spelled (case-sensitive). A case variant is not a convention id; a host that fences folded ids
|
|
8
|
+
* refuses it rather than let it govern after a case-insensitive checkout.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isConventionId(id: string): boolean;
|
|
5
11
|
/** The OKF `type` value a kind convention doc itself carries. */
|
|
6
12
|
export declare const CONVENTION_TYPE = "Convention";
|
|
7
13
|
/** A kind's declared required/optional fields and any enum-restricted field values. */
|
|
@@ -85,6 +91,14 @@ export interface KindConvention {
|
|
|
85
91
|
* privileges a kind by name; display-only, no engine behavior. Set from `browse_collapsed: true`.
|
|
86
92
|
*/
|
|
87
93
|
browseCollapsed?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* The kind's place in the bundle's reading order, when the convention declares one (`order: 20`).
|
|
96
|
+
* A finite number; integers in practice. Kinds that declare an order come first, ascending, ties
|
|
97
|
+
* by convention id; kinds without one follow by id. The registry's `Map` insertion order is that
|
|
98
|
+
* reading order, so every consumer that iterates the registry sees it without a second sort.
|
|
99
|
+
* Display and listing only: no engine behavior, and never a field on instances.
|
|
100
|
+
*/
|
|
101
|
+
order?: number;
|
|
88
102
|
/**
|
|
89
103
|
* The bundle-declared claim vocabulary, when this kind declares one. Absent for every kind that
|
|
90
104
|
* does not — a bundle with no `claim:` declaration behaves exactly as it did before the key
|
|
@@ -94,7 +108,11 @@ export interface KindConvention {
|
|
|
94
108
|
}
|
|
95
109
|
/** The result of {@link loadKinds}: the built registry plus any non-fatal warnings collected along the way. */
|
|
96
110
|
export interface KindRegistry {
|
|
97
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* `governs -> KindConvention`. On a duplicate `governs`, the first-by-id declaration wins.
|
|
113
|
+
* Insertion order is the bundle's reading order (see {@link compareReadingOrder}): declared
|
|
114
|
+
* `order` ascending with ties by id, then the undeclared by id.
|
|
115
|
+
*/
|
|
98
116
|
kinds: Map<string, KindConvention>;
|
|
99
117
|
/** Malformed/duplicate/unparseable conventions are SKIPPED, never thrown — collected here instead. */
|
|
100
118
|
warnings: ValidationWarning[];
|
|
@@ -107,6 +125,12 @@ export interface KindRegistry {
|
|
|
107
125
|
export declare function buildKindRegistry(docs: readonly OkfDocument[], initialWarnings?: readonly ValidationWarning[], options?: {
|
|
108
126
|
okfVersion?: string;
|
|
109
127
|
}): KindRegistry;
|
|
128
|
+
/**
|
|
129
|
+
* The bundle's reading order over kinds: conventions with a declared `order` first, ascending,
|
|
130
|
+
* ties by id; then conventions without one, by id. A bundle that declares no `order` anywhere
|
|
131
|
+
* therefore iterates by id exactly as it did before the field existed.
|
|
132
|
+
*/
|
|
133
|
+
export declare function compareReadingOrder(a: Pick<KindConvention, "id" | "order">, b: Pick<KindConvention, "id" | "order">): number;
|
|
110
134
|
/** Stable product-level name for a Kind's workflow progress field. */
|
|
111
135
|
export declare const PROGRESS_STATUS_FIELD = "progress_status";
|
|
112
136
|
/** Producer-qualified v0.2 storage coordinate for Superbee workflow progress. */
|
|
@@ -158,6 +182,11 @@ export declare function projectLogicalKindFields(okfVersion: string | undefined,
|
|
|
158
182
|
* workflow coordinate never becomes something an author has to learn.
|
|
159
183
|
*/
|
|
160
184
|
export declare function projectKindForAuthoring(okfVersion: string | undefined, kind: KindConvention): KindConvention;
|
|
185
|
+
type KindFieldWarningCode = "KIND_FIELD_MISSING" | "KIND_FIELD_VALUE" | "KIND_FIELD_ARITY";
|
|
186
|
+
/** Whether a Kind finding names a frontmatter coordinate rather than a body heading. */
|
|
187
|
+
export declare function isKindFieldValidationWarning(warning: ValidationWarning): warning is ValidationWarning & {
|
|
188
|
+
code: KindFieldWarningCode;
|
|
189
|
+
};
|
|
161
190
|
/** Project Kind-validation findings into the same authoring vocabulary as the Kind schema. */
|
|
162
191
|
export declare function projectKindValidationWarnings(okfVersion: string | undefined, kind: KindConvention, warnings: ValidationWarning[]): ValidationWarning[];
|
|
163
192
|
/**
|
|
@@ -242,4 +271,5 @@ export declare function isTerminal(kind: KindConvention, frontmatter: Frontmatte
|
|
|
242
271
|
* explicit rather than defaulted here, since `writeDocVersioned` already guarantees one).
|
|
243
272
|
*/
|
|
244
273
|
export declare function kindConventionDoc(kind: KindConvention, prose: string, timestamp: string): OkfDocument;
|
|
274
|
+
export {};
|
|
245
275
|
//# sourceMappingURL=kinds.d.ts.map
|
package/dist/kinds.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../src/kinds.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtE,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,iEAAiE;AACjE,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,EAAE,EAAE,SAAS,CAAC;IACd,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qGAAqG;IACrG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,+GAA+G;AAC/G,MAAM,WAAW,YAAY;IAC3B
|
|
1
|
+
{"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../src/kinds.ts"],"names":[],"mappings":"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"}
|