@toolproof-core/schema 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/types/Resource_Genesis.d.ts +3 -0
- package/dist/generated/types/Resource_Genesis.js +1 -0
- package/dist/generated/types/Resource_Job.d.ts +3 -0
- package/dist/generated/types/Resource_Job.js +1 -0
- package/dist/generated/types/Resource_RawStrategy.d.ts +3 -0
- package/dist/generated/types/Resource_RawStrategy.js +1 -0
- package/dist/generated/types/Resource_ResourceType.d.ts +3 -0
- package/dist/generated/types/Resource_ResourceType.js +1 -0
- package/dist/generated/types/Resource_RunnableStrategy.d.ts +3 -0
- package/dist/generated/types/Resource_RunnableStrategy.js +1 -0
- package/dist/generated/types/types.d.ts +1784 -0
- package/dist/generated/types/types.js +1 -0
- package/dist/scripts/_lib/config.d.ts +53 -0
- package/dist/scripts/_lib/config.js +138 -0
- package/dist/scripts/extractSchemas.d.ts +1 -0
- package/dist/scripts/extractSchemas.js +210 -0
- package/dist/scripts/extractSubSchemaWithDefs.d.ts +1 -0
- package/dist/scripts/extractSubSchemaWithDefs.js +187 -0
- package/dist/scripts/generateDependencies.d.ts +1 -0
- package/dist/scripts/generateDependencies.js +106 -0
- package/dist/scripts/generateResourceShells.d.ts +1 -0
- package/dist/scripts/generateResourceShells.js +91 -0
- package/dist/scripts/generateResourceTypeType.d.ts +1 -0
- package/dist/scripts/generateResourceTypeType.js +93 -0
- package/dist/scripts/generateSchemaShims.d.ts +1 -0
- package/dist/scripts/generateSchemaShims.js +105 -0
- package/dist/scripts/generateTypes.d.ts +1 -0
- package/dist/scripts/generateTypes.js +550 -0
- package/dist/scripts/rewriteAnchors.d.ts +1 -0
- package/dist/scripts/rewriteAnchors.js +96 -0
- package/package.json +45 -0
- package/src/Genesis.json +2043 -0
- package/src/Roadmap.json +102 -0
- package/src/generated/dependencies.json +299 -0
- package/src/generated/resourceTypes/Genesis.json +2043 -0
- package/src/generated/resourceTypes/Genesis.ts +2 -0
- package/src/generated/resources/Genesis.json +2962 -0
- package/src/generated/resources/Genesis.ts +2 -0
- package/src/generated/schemas/Genesis.json +1489 -0
- package/src/generated/schemas/Genesis.ts +2 -0
- package/src/generated/schemas/Goal.json +86 -0
- package/src/generated/schemas/Goal.ts +2 -0
- package/src/generated/schemas/Job.json +236 -0
- package/src/generated/schemas/Job.ts +2 -0
- package/src/generated/schemas/RawStrategy.json +667 -0
- package/src/generated/schemas/RawStrategy.ts +2 -0
- package/src/generated/schemas/ResourceType.json +140 -0
- package/src/generated/schemas/ResourceType.ts +2 -0
- package/src/generated/schemas/RunnableStrategy.json +737 -0
- package/src/generated/schemas/RunnableStrategy.ts +2 -0
- package/src/generated/schemas/StrategyRun.json +1025 -0
- package/src/generated/schemas/StrategyRun.ts +2 -0
- package/src/generated/types/Resource_Genesis.d.ts +3 -0
- package/src/generated/types/Resource_Genesis.js +1 -0
- package/src/generated/types/Resource_Job.d.ts +3 -0
- package/src/generated/types/Resource_Job.js +1 -0
- package/src/generated/types/Resource_RawStrategy.d.ts +3 -0
- package/src/generated/types/Resource_RawStrategy.js +1 -0
- package/src/generated/types/Resource_ResourceType.d.ts +3 -0
- package/src/generated/types/Resource_ResourceType.js +1 -0
- package/src/generated/types/Resource_RunnableStrategy.d.ts +3 -0
- package/src/generated/types/Resource_RunnableStrategy.js +1 -0
- package/src/generated/types/types.d.ts +1784 -0
- package/src/generated/types/types.js +1 -0
- package/src/index.ts +1 -0
- package/src/scripts/_lib/config.ts +181 -0
- package/src/scripts/extractSchemas.ts +229 -0
- package/src/scripts/extractSubSchemaWithDefs.ts +196 -0
- package/src/scripts/generateDependencies.ts +120 -0
- package/src/scripts/generateResourceShells.ts +105 -0
- package/src/scripts/generateResourceTypeType.ts +110 -0
- package/src/scripts/generateSchemaShims.ts +115 -0
- package/src/scripts/generateTypes.ts +615 -0
- package/src/scripts/rewriteAnchors.ts +123 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { getConfig } from './_lib/config.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Rewrite anchor-style references to JSON Pointer references in Genesis.json
|
|
7
|
+
*
|
|
8
|
+
* Converts #AnchorName to #/$defs/AnchorName for compatibility with strict
|
|
9
|
+
* JSON Schema validators and downstream tooling. This normalization step runs
|
|
10
|
+
* before both schema extraction and resource envelope generation.
|
|
11
|
+
*
|
|
12
|
+
* The rewritten file is saved under src/genesis/generated/resourceTypes/Genesis.json
|
|
13
|
+
* for use by other scripts.
|
|
14
|
+
*
|
|
15
|
+
* Usage: node ./dist/scripts/rewriteAnchors.js
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
type JSONValue = null | boolean | number | string | JSONValue[] | { [k: string]: JSONValue };
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Pure function to rewrite anchor-style references to JSON Pointer references.
|
|
22
|
+
* Converts #AnchorName to #/$defs/AnchorName for compatibility with strict JSON Schema validators.
|
|
23
|
+
*
|
|
24
|
+
* This function works on a schema object that has $defs at its top level.
|
|
25
|
+
* @param input The schema object to process
|
|
26
|
+
* @returns A new schema object with rewritten references
|
|
27
|
+
*/
|
|
28
|
+
function rewriteAnchorsToPointers(input: any): any {
|
|
29
|
+
if (!input || typeof input !== "object") return input;
|
|
30
|
+
|
|
31
|
+
// Deep clone the input to ensure the function is pure (no side effects on input)
|
|
32
|
+
const root = JSON.parse(JSON.stringify(input));
|
|
33
|
+
|
|
34
|
+
// Build a map of anchors to their definition names
|
|
35
|
+
const defs: Record<string, any> = root.$defs && typeof root.$defs === "object" ? root.$defs : {};
|
|
36
|
+
const anchorToDef: Record<string, string> = {};
|
|
37
|
+
|
|
38
|
+
// For Genesis structure: each def is a Type envelope with nucleusSchema.$anchor
|
|
39
|
+
for (const [defName, defValue] of Object.entries(defs)) {
|
|
40
|
+
if (!defValue || typeof defValue !== "object") continue;
|
|
41
|
+
|
|
42
|
+
// Check if this is a Type envelope (has nucleusSchema property)
|
|
43
|
+
const nucleusSchema = (defValue as any).nucleusSchema;
|
|
44
|
+
if (nucleusSchema && typeof nucleusSchema === "object") {
|
|
45
|
+
// Look for $anchor inside the nucleusSchema
|
|
46
|
+
const anchor = nucleusSchema.$anchor;
|
|
47
|
+
if (typeof anchor === "string" && !anchorToDef[anchor]) {
|
|
48
|
+
anchorToDef[anchor] = defName;
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
// Fallback: check for $anchor at the def level (non-envelope case)
|
|
52
|
+
const anchor = (defValue as any).$anchor;
|
|
53
|
+
if (typeof anchor === "string" && !anchorToDef[anchor]) {
|
|
54
|
+
anchorToDef[anchor] = defName;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Walk the entire tree and rewrite anchor refs to pointer refs
|
|
60
|
+
function walk(node: any): void {
|
|
61
|
+
if (Array.isArray(node)) {
|
|
62
|
+
for (const item of node) walk(item);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!node || typeof node !== "object") return;
|
|
66
|
+
|
|
67
|
+
// Rewrite $ref if it's an anchor-style reference
|
|
68
|
+
if (typeof node.$ref === "string") {
|
|
69
|
+
const ref: string = node.$ref;
|
|
70
|
+
// Match anchor refs: starts with # but not #/ (JSON Pointer syntax)
|
|
71
|
+
if (ref.startsWith("#") && !ref.startsWith("#/")) {
|
|
72
|
+
const anchor = ref.slice(1);
|
|
73
|
+
const defName = anchorToDef[anchor];
|
|
74
|
+
if (defName) {
|
|
75
|
+
node.$ref = `#/$defs/${defName}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Recursively walk all properties
|
|
81
|
+
for (const val of Object.values(node)) {
|
|
82
|
+
walk(val);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
walk(root);
|
|
87
|
+
return root;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async function main() {
|
|
91
|
+
const config = getConfig();
|
|
92
|
+
const genesisSourcePath = config.getSourcePath();
|
|
93
|
+
|
|
94
|
+
// Create a generated/normalized version (anchor refs rewritten to pointers)
|
|
95
|
+
const normalizedPath = config.getNormalizedSourcePath();
|
|
96
|
+
|
|
97
|
+
if (!fs.existsSync(genesisSourcePath)) {
|
|
98
|
+
console.error(`Genesis source file not found at ${genesisSourcePath}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const raw = fs.readFileSync(genesisSourcePath, 'utf-8');
|
|
103
|
+
const genesis = JSON.parse(raw);
|
|
104
|
+
|
|
105
|
+
// Validate structure
|
|
106
|
+
if (!genesis.nucleusSchema || !genesis.nucleusSchema.$defs) {
|
|
107
|
+
console.error('Genesis.json must have nucleusSchema.$defs');
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Rewrite anchors in the nucleusSchema (pure function call)
|
|
112
|
+
genesis.nucleusSchema = rewriteAnchorsToPointers(genesis.nucleusSchema);
|
|
113
|
+
|
|
114
|
+
// Write normalized version
|
|
115
|
+
fs.mkdirSync(path.dirname(normalizedPath), { recursive: true });
|
|
116
|
+
fs.writeFileSync(normalizedPath, JSON.stringify(genesis, null, 4), 'utf-8');
|
|
117
|
+
console.log(`Wrote normalized Genesis with pointer refs to ${normalizedPath}`);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
main().catch((e) => {
|
|
121
|
+
console.error(e);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
});
|