@superbee/core 0.2.0-pre.24 → 0.2.0-pre.25
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
CHANGED
|
@@ -1066,3 +1066,17 @@ and bound String/ID inputs. GraphQL execution is deferred to the later GraphQL p
|
|
|
1066
1066
|
`graphql_scope_unsupported` refuses even a well-formed read body before transport. Syntax alone
|
|
1067
1067
|
does not establish resource-scoped traversal. Mutations and malformed extension bodies are refused
|
|
1068
1068
|
by the engine wrapper; caller hooks cannot enable them.
|
|
1069
|
+
|
|
1070
|
+
## Declared Kind model
|
|
1071
|
+
|
|
1072
|
+
`@superbee/core/domain-model` exports `projectDomainModelV0(registry)` and its
|
|
1073
|
+
readonly input/output types. Pass a canonical registry from `buildKindRegistry`
|
|
1074
|
+
(`@superbee/core/kinds`) or `loadKinds`; the projection performs no parsing or I/O.
|
|
1075
|
+
It returns deeply frozen JSON with deterministically ordered Kind definitions,
|
|
1076
|
+
declared relationships, registry warnings and informational outside-scope endpoints.
|
|
1077
|
+
Structurally malformed inputs throw `TypeError`.
|
|
1078
|
+
|
|
1079
|
+
The v0 shape preserves authored array order and warning metadata. It does not
|
|
1080
|
+
include `fields.types` or derived `freshnessHorizonMs`; adapters that already add
|
|
1081
|
+
these fields keep that enrichment. Projection does not establish snapshot coherence,
|
|
1082
|
+
authorization or permission to disclose a bundle's declarations.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** Consumed structural shape of Superbee's canonical KindConvention; not a convention schema. */
|
|
2
|
+
export interface CanonicalKindInputV0 {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly title: string;
|
|
5
|
+
readonly governs: string;
|
|
6
|
+
readonly description?: string;
|
|
7
|
+
readonly path?: string;
|
|
8
|
+
readonly fields: {
|
|
9
|
+
readonly required: readonly string[];
|
|
10
|
+
readonly optional: readonly string[];
|
|
11
|
+
readonly values: Readonly<Record<string, readonly string[]>>;
|
|
12
|
+
readonly terminal: Readonly<Record<string, readonly string[]>>;
|
|
13
|
+
readonly descriptions: Readonly<Record<string, string>>;
|
|
14
|
+
readonly valueDescriptions?: Readonly<Record<string, Readonly<Record<string, string>>>>;
|
|
15
|
+
};
|
|
16
|
+
readonly links?: Readonly<Record<string, string>>;
|
|
17
|
+
readonly linkDescriptions?: Readonly<Record<string, string>>;
|
|
18
|
+
readonly expectsInbound?: Readonly<Record<string, string>>;
|
|
19
|
+
readonly sections?: readonly string[];
|
|
20
|
+
readonly freshnessHorizon?: string;
|
|
21
|
+
readonly browseCollapsed?: boolean;
|
|
22
|
+
readonly claim?: {
|
|
23
|
+
readonly ownerField?: string;
|
|
24
|
+
readonly stateField?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Pass buildKindRegistry/loadKinds output; CLI `kinds --json` is not a lossless substitute. */
|
|
28
|
+
export interface CanonicalKindRegistryInputV0 {
|
|
29
|
+
readonly kinds: ReadonlyMap<string, CanonicalKindInputV0>;
|
|
30
|
+
readonly warnings: readonly {
|
|
31
|
+
readonly code: string;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
readonly field?: string;
|
|
34
|
+
readonly severity?: string;
|
|
35
|
+
}[];
|
|
36
|
+
}
|
|
37
|
+
export interface DomainRelationshipV0 {
|
|
38
|
+
readonly id: string;
|
|
39
|
+
readonly kind: "outbound" | "inbound-expectation";
|
|
40
|
+
readonly declaredBy: string;
|
|
41
|
+
/** Declaration key and exact relationship label, relative to its Convention frontmatter. */
|
|
42
|
+
readonly path: readonly ["links" | "expects_inbound", string];
|
|
43
|
+
readonly label: string;
|
|
44
|
+
readonly fromKind: string;
|
|
45
|
+
readonly toKind: string;
|
|
46
|
+
/** Null means undeclared within this input scope, not globally invalid. */
|
|
47
|
+
readonly fromId: string | null;
|
|
48
|
+
readonly toId: string | null;
|
|
49
|
+
readonly description?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface DomainModelDiagnosticV0 {
|
|
52
|
+
readonly code: "KIND_OUTSIDE_SCOPE";
|
|
53
|
+
readonly severity: "info";
|
|
54
|
+
readonly relationshipId: string;
|
|
55
|
+
readonly declaredBy: string;
|
|
56
|
+
readonly path: DomainRelationshipV0["path"];
|
|
57
|
+
readonly endpoint: "from" | "to";
|
|
58
|
+
readonly kind: string;
|
|
59
|
+
readonly message: string;
|
|
60
|
+
}
|
|
61
|
+
export interface DomainModelV0 {
|
|
62
|
+
readonly schemaVersion: 0;
|
|
63
|
+
readonly kinds: readonly CanonicalKindInputV0[];
|
|
64
|
+
readonly relationships: readonly DomainRelationshipV0[];
|
|
65
|
+
readonly registryWarnings: CanonicalKindRegistryInputV0["warnings"];
|
|
66
|
+
readonly diagnostics: readonly DomainModelDiagnosticV0[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Project admitted canonical definitions, not CLI authoring rows or raw Markdown.
|
|
70
|
+
* Structural checks protect the projection boundary; core remains semantic authority.
|
|
71
|
+
*/
|
|
72
|
+
export declare function projectDomainModelV0(registry: CanonicalKindRegistryInputV0): DomainModelV0;
|
|
73
|
+
//# sourceMappingURL=domain-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-model.d.ts","sourceRoot":"","sources":["../src/domain-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/** Read-only projection of a caller-built canonical Superbee KindRegistry. No parsing or I/O. */
|
|
2
|
+
const compare = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
3
|
+
function invalid(path, expected) {
|
|
4
|
+
throw new TypeError(`Invalid canonical Kind registry: ${path} must be ${expected}`);
|
|
5
|
+
}
|
|
6
|
+
function record(value, path) {
|
|
7
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)
|
|
8
|
+
|| ![Object.prototype, null].includes(Object.getPrototypeOf(value))) {
|
|
9
|
+
invalid(path, "a plain record");
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
function string(value, path) {
|
|
14
|
+
if (typeof value !== "string")
|
|
15
|
+
invalid(path, "a string");
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function strings(value, path) {
|
|
19
|
+
if (!Array.isArray(value))
|
|
20
|
+
invalid(path, "an array of strings");
|
|
21
|
+
return Object.freeze(Array.from(value, (entry, i) => string(entry, `${path}[${i}]`)));
|
|
22
|
+
}
|
|
23
|
+
function dictionary(value, path, convert) {
|
|
24
|
+
record(value, path);
|
|
25
|
+
return Object.freeze(Object.fromEntries(Object.keys(value).sort(compare)
|
|
26
|
+
.map((key) => [key, convert(value[key], `${path}[${JSON.stringify(key)}]`)])));
|
|
27
|
+
}
|
|
28
|
+
function textMap(value, path) { return dictionary(value, path, string); }
|
|
29
|
+
function listMap(value, path) { return dictionary(value, path, strings); }
|
|
30
|
+
// Canonical warnings are preserved, including future JSON metadata. Never parse their messages.
|
|
31
|
+
function jsonCopy(value, path, ancestors = new Set()) {
|
|
32
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
33
|
+
return value;
|
|
34
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
35
|
+
return value;
|
|
36
|
+
if (typeof value !== "object")
|
|
37
|
+
invalid(path, "JSON data");
|
|
38
|
+
if (ancestors.has(value))
|
|
39
|
+
invalid(path, "acyclic JSON data");
|
|
40
|
+
ancestors.add(value);
|
|
41
|
+
try {
|
|
42
|
+
if (Array.isArray(value))
|
|
43
|
+
return Object.freeze(Array.from(value, (item, i) => jsonCopy(item, `${path}[${i}]`, ancestors)));
|
|
44
|
+
record(value, path);
|
|
45
|
+
return Object.freeze(Object.fromEntries(Object.keys(value).sort(compare)
|
|
46
|
+
.filter((key) => value[key] !== undefined)
|
|
47
|
+
.map((key) => [key, jsonCopy(value[key], `${path}[${JSON.stringify(key)}]`, ancestors)])));
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
ancestors.delete(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function kindCopy(input) {
|
|
54
|
+
record(input, "kind");
|
|
55
|
+
const id = string(input.id, "kind.id");
|
|
56
|
+
const governs = string(input.governs, `${id}.governs`);
|
|
57
|
+
if (!id.trim() || !governs.trim())
|
|
58
|
+
invalid("kind.id and governs", "non-empty strings");
|
|
59
|
+
const fields = record(input.fields, `${id}.fields`);
|
|
60
|
+
const node = {
|
|
61
|
+
id,
|
|
62
|
+
title: string(input.title, `${id}.title`),
|
|
63
|
+
governs,
|
|
64
|
+
fields: {
|
|
65
|
+
required: strings(fields.required, `${id}.fields.required`),
|
|
66
|
+
optional: strings(fields.optional, `${id}.fields.optional`),
|
|
67
|
+
values: listMap(fields.values, `${id}.fields.values`),
|
|
68
|
+
terminal: listMap(fields.terminal, `${id}.fields.terminal`),
|
|
69
|
+
descriptions: textMap(fields.descriptions, `${id}.fields.descriptions`),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
if (fields.valueDescriptions !== undefined) {
|
|
73
|
+
node.fields.valueDescriptions = dictionary(fields.valueDescriptions, `${id}.fields.valueDescriptions`, textMap);
|
|
74
|
+
}
|
|
75
|
+
Object.freeze(node.fields);
|
|
76
|
+
for (const key of ["description", "path", "freshnessHorizon"]) {
|
|
77
|
+
if (input[key] !== undefined)
|
|
78
|
+
node[key] = string(input[key], `${id}.${key}`);
|
|
79
|
+
}
|
|
80
|
+
for (const key of ["links", "linkDescriptions", "expectsInbound"]) {
|
|
81
|
+
if (input[key] !== undefined)
|
|
82
|
+
node[key] = textMap(input[key], `${id}.${key}`);
|
|
83
|
+
}
|
|
84
|
+
if (input.sections !== undefined)
|
|
85
|
+
node.sections = strings(input.sections, `${id}.sections`);
|
|
86
|
+
if (input.browseCollapsed !== undefined) {
|
|
87
|
+
if (typeof input.browseCollapsed !== "boolean")
|
|
88
|
+
invalid(`${id}.browseCollapsed`, "a boolean");
|
|
89
|
+
node.browseCollapsed = input.browseCollapsed;
|
|
90
|
+
}
|
|
91
|
+
if (input.claim !== undefined) {
|
|
92
|
+
record(input.claim, `${id}.claim`);
|
|
93
|
+
node.claim = Object.freeze(Object.fromEntries(["ownerField", "stateField"]
|
|
94
|
+
.filter((key) => input.claim[key] !== undefined)
|
|
95
|
+
.map((key) => [key, string(input.claim[key], `${id}.claim.${key}`)])));
|
|
96
|
+
}
|
|
97
|
+
return Object.freeze(node);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Project admitted canonical definitions, not CLI authoring rows or raw Markdown.
|
|
101
|
+
* Structural checks protect the projection boundary; core remains semantic authority.
|
|
102
|
+
*/
|
|
103
|
+
export function projectDomainModelV0(registry) {
|
|
104
|
+
record(registry, "registry");
|
|
105
|
+
if (!(registry.kinds instanceof Map))
|
|
106
|
+
invalid("registry.kinds", "a Map");
|
|
107
|
+
if (!Array.isArray(registry.warnings))
|
|
108
|
+
invalid("registry.warnings", "an array");
|
|
109
|
+
const byName = new Map();
|
|
110
|
+
const ids = new Set();
|
|
111
|
+
for (const [name, input] of registry.kinds) {
|
|
112
|
+
const node = kindCopy(input);
|
|
113
|
+
if (name !== node.governs)
|
|
114
|
+
invalid(`Map key ${String(name)}`, "equal to its Kind's governs");
|
|
115
|
+
if (ids.has(node.id))
|
|
116
|
+
invalid(`kind.id ${node.id}`, "unique in the registry");
|
|
117
|
+
ids.add(node.id);
|
|
118
|
+
byName.set(name, node);
|
|
119
|
+
}
|
|
120
|
+
const kinds = Object.freeze([...byName.values()].sort((a, b) => compare(a.id, b.id)));
|
|
121
|
+
const relationships = [];
|
|
122
|
+
const diagnostics = [];
|
|
123
|
+
for (const node of kinds) {
|
|
124
|
+
for (const [key, kind] of [["links", "outbound"], ["expectsInbound", "inbound-expectation"]]) {
|
|
125
|
+
for (const [label, other] of Object.entries(node[key] ?? {}).sort(([a], [b]) => compare(a, b))) {
|
|
126
|
+
const fromKind = kind === "outbound" ? node.governs : other;
|
|
127
|
+
const toKind = kind === "outbound" ? other : node.governs;
|
|
128
|
+
const id = JSON.stringify([kind, node.id, label]);
|
|
129
|
+
// Source paths address canonical declarations, not JS property names or filesystem paths.
|
|
130
|
+
const path = Object.freeze([key === "links" ? "links" : "expects_inbound", label]);
|
|
131
|
+
const edge = {
|
|
132
|
+
id, kind, declaredBy: node.id, path, label, fromKind, toKind,
|
|
133
|
+
fromId: byName.get(fromKind)?.id ?? null,
|
|
134
|
+
toId: byName.get(toKind)?.id ?? null,
|
|
135
|
+
};
|
|
136
|
+
if (kind === "outbound" && Object.hasOwn(node.linkDescriptions ?? {}, label)) {
|
|
137
|
+
edge.description = node.linkDescriptions[label];
|
|
138
|
+
}
|
|
139
|
+
relationships.push(Object.freeze(edge));
|
|
140
|
+
for (const [endpoint, name] of [["from", fromKind], ["to", toKind]]) {
|
|
141
|
+
if (byName.has(name))
|
|
142
|
+
continue;
|
|
143
|
+
diagnostics.push(Object.freeze({
|
|
144
|
+
code: "KIND_OUTSIDE_SCOPE", severity: "info", relationshipId: id,
|
|
145
|
+
declaredBy: node.id, path, endpoint, kind: name,
|
|
146
|
+
message: `Kind ${JSON.stringify(name)} is not declared in the supplied registry.`,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const registryWarnings = Object.freeze(Array.from(registry.warnings, (warning, i) => {
|
|
153
|
+
record(warning, `warnings[${i}]`);
|
|
154
|
+
string(warning.code, `warnings[${i}].code`);
|
|
155
|
+
string(warning.message, `warnings[${i}].message`);
|
|
156
|
+
for (const key of ["field", "severity"]) {
|
|
157
|
+
if (warning[key] !== undefined)
|
|
158
|
+
string(warning[key], `warnings[${i}].${key}`);
|
|
159
|
+
}
|
|
160
|
+
return jsonCopy(warning, `warnings[${i}]`);
|
|
161
|
+
}));
|
|
162
|
+
return Object.freeze({
|
|
163
|
+
schemaVersion: 0, kinds,
|
|
164
|
+
relationships: Object.freeze(relationships),
|
|
165
|
+
registryWarnings,
|
|
166
|
+
diagnostics: Object.freeze(diagnostics),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=domain-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-model.js","sourceRoot":"","sources":["../src/domain-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export interface RestJsonCursor {
|
|
|
14
14
|
}
|
|
15
15
|
export declare const restJsonProfile: SourceProfile<ConnectorSource, RestJsonCursor>;
|
|
16
16
|
/** Contract-1 composition helpers for explicitly trusted standalone source plugins. */
|
|
17
|
-
export declare const SOURCE_PLUGIN_CORE_VERSION = "0.2.0-pre.
|
|
17
|
+
export declare const SOURCE_PLUGIN_CORE_VERSION = "0.2.0-pre.25";
|
|
18
18
|
export interface SourcePluginHelpers {
|
|
19
19
|
readonly restJsonProfile: typeof restJsonProfile;
|
|
20
20
|
readonly nextLinkTarget: typeof nextLinkTarget;
|
|
@@ -196,7 +196,7 @@ export const restJsonProfile = Object.freeze({
|
|
|
196
196
|
},
|
|
197
197
|
});
|
|
198
198
|
/** Contract-1 composition helpers for explicitly trusted standalone source plugins. */
|
|
199
|
-
export const SOURCE_PLUGIN_CORE_VERSION = "0.2.0-pre.
|
|
199
|
+
export const SOURCE_PLUGIN_CORE_VERSION = "0.2.0-pre.25";
|
|
200
200
|
export { nextLinkTarget };
|
|
201
201
|
export const SOURCE_PROFILES = Object.freeze([restJsonProfile].map(profile => Object.freeze({ id: profile.id, version: profile.version, kind: profile.kind })));
|
|
202
202
|
/** Inert lookup. Extensions are explicit caller imports, never discovered or executed here. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superbee/core",
|
|
3
|
-
"version": "0.2.0-pre.
|
|
3
|
+
"version": "0.2.0-pre.25",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OKF store engine \u2014 bundle I/O, cross-links, derived backlinks, freshness, and versioned writes.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -210,6 +210,10 @@
|
|
|
210
210
|
"./source-profiles": {
|
|
211
211
|
"types": "./dist/source-profiles/index.d.ts",
|
|
212
212
|
"default": "./dist/source-profiles/index.js"
|
|
213
|
+
},
|
|
214
|
+
"./domain-model": {
|
|
215
|
+
"types": "./dist/domain-model.d.ts",
|
|
216
|
+
"default": "./dist/domain-model.js"
|
|
213
217
|
}
|
|
214
218
|
},
|
|
215
219
|
"files": [
|