dsc gen ts types
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -32,3 +32,5 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
||||
|
||||
# Finder (MacOS) folder config
|
||||
.DS_Store
|
||||
|
||||
.turbo
|
||||
|
||||
3
.vscode/extensions.json
vendored
Normal file
3
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"recommendations": ["biomejs.biome"]
|
||||
}
|
||||
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"typescript.tsdk": "./node_modules/typescript/lib",
|
||||
"typescript.enablePromptUseWorkspaceTsdk": true
|
||||
}
|
||||
"typescript.tsdk": "./node_modules/typescript/lib",
|
||||
"typescript.enablePromptUseWorkspaceTsdk": true,
|
||||
"editor.formatOnSave": true
|
||||
}
|
||||
|
||||
88
biome.jsonc
Normal file
88
biome.jsonc
Normal file
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
|
||||
"vcs": {
|
||||
"enabled": true,
|
||||
"clientKind": "git",
|
||||
"useIgnoreFile": true
|
||||
},
|
||||
"files": {
|
||||
"ignoreUnknown": false,
|
||||
"includes": ["**", "!**/generated", "!!**/dist", "!!**/docs"]
|
||||
},
|
||||
"formatter": {
|
||||
"enabled": true,
|
||||
"formatWithErrors": true,
|
||||
"indentStyle": "space",
|
||||
"indentWidth": 2,
|
||||
"lineEnding": "lf",
|
||||
"lineWidth": 80,
|
||||
"attributePosition": "auto",
|
||||
"bracketSpacing": true,
|
||||
"bracketSameLine": false
|
||||
},
|
||||
"linter": {
|
||||
"enabled": true,
|
||||
"rules": {
|
||||
"style": {
|
||||
"noHeadElement": "off",
|
||||
"useBlockStatements": "off",
|
||||
"useConsistentArrayType": {
|
||||
"level": "error",
|
||||
"options": {
|
||||
"syntax": "generic"
|
||||
}
|
||||
},
|
||||
"noMagicNumbers": "off",
|
||||
"noNestedTernary": "off"
|
||||
},
|
||||
"suspicious": {
|
||||
"noUnknownAtRules": "off",
|
||||
"noConsole": "off",
|
||||
"noShadowRestrictedNames": "off"
|
||||
},
|
||||
"nursery": {
|
||||
"noShadow": "off",
|
||||
"useMaxParams": "off"
|
||||
},
|
||||
"performance": {
|
||||
"noNamespaceImport": "off",
|
||||
"noImgElement": "off",
|
||||
"useTopLevelRegex": "off"
|
||||
},
|
||||
"complexity": {
|
||||
"noExcessiveCognitiveComplexity": "off"
|
||||
}
|
||||
}
|
||||
},
|
||||
"javascript": {
|
||||
"formatter": {
|
||||
"quoteStyle": "single",
|
||||
"jsxQuoteStyle": "single",
|
||||
"trailingCommas": "all"
|
||||
}
|
||||
},
|
||||
"assist": {
|
||||
"enabled": true,
|
||||
"actions": {
|
||||
"source": {
|
||||
"organizeImports": "on"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extends": ["ultracite/core"],
|
||||
"overrides": [
|
||||
{
|
||||
"includes": [
|
||||
"**/{tsconfig,jsconfig}.json",
|
||||
"**/{tsconfig,jsconfig}.*.json",
|
||||
"**/*.jsonc"
|
||||
],
|
||||
"json": {
|
||||
"parser": {
|
||||
"allowComments": true,
|
||||
"allowTrailingCommas": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
325
bun.lock
325
bun.lock
@@ -11,13 +11,42 @@
|
||||
"effect": "^3.19.8",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "2.3.8",
|
||||
"@effect/language-service": "^0.57.1",
|
||||
"@types/bun": "latest",
|
||||
"@typescript/native-preview": "^7.0.0-dev.20251130.1",
|
||||
"quicktype": "^23.2.6",
|
||||
"turbo": "^2.6.1",
|
||||
"typescript": "^5.9.3",
|
||||
"ultracite": "6.3.8",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@biomejs/biome": ["@biomejs/biome@2.3.8", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.3.8", "@biomejs/cli-darwin-x64": "2.3.8", "@biomejs/cli-linux-arm64": "2.3.8", "@biomejs/cli-linux-arm64-musl": "2.3.8", "@biomejs/cli-linux-x64": "2.3.8", "@biomejs/cli-linux-x64-musl": "2.3.8", "@biomejs/cli-win32-arm64": "2.3.8", "@biomejs/cli-win32-x64": "2.3.8" }, "bin": { "biome": "bin/biome" } }, "sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA=="],
|
||||
|
||||
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.3.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww=="],
|
||||
|
||||
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.3.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA=="],
|
||||
|
||||
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.3.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g=="],
|
||||
|
||||
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.3.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA=="],
|
||||
|
||||
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.3.8", "", { "os": "linux", "cpu": "x64" }, "sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw=="],
|
||||
|
||||
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.3.8", "", { "os": "linux", "cpu": "x64" }, "sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA=="],
|
||||
|
||||
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.3.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg=="],
|
||||
|
||||
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.3.8", "", { "os": "win32", "cpu": "x64" }, "sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w=="],
|
||||
|
||||
"@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="],
|
||||
|
||||
"@clack/prompts": ["@clack/prompts@0.11.0", "", { "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw=="],
|
||||
|
||||
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
||||
|
||||
"@effect/cli": ["@effect/cli@0.72.1", "", { "dependencies": { "ini": "^4.1.3", "toml": "^3.0.0", "yaml": "^2.5.0" }, "peerDependencies": { "@effect/platform": "^0.93.0", "@effect/printer": "^0.47.0", "@effect/printer-ansi": "^0.47.0", "effect": "^3.19.3" } }, "sha512-HGDMGD23TxFW9tCSX6g+M2u0robikMA0mP0SqeJMj7FWXTdcQ+cQsJE99bxi9iu+5YID7MIrVJMs8TUwXUV2sg=="],
|
||||
|
||||
"@effect/cluster": ["@effect/cluster@0.54.0", "", { "dependencies": { "kubernetes-types": "^1.30.0" }, "peerDependencies": { "@effect/platform": "^0.93.5", "@effect/rpc": "^0.72.2", "@effect/sql": "^0.48.5", "@effect/workflow": "^0.14.0", "effect": "^3.19.8" } }, "sha512-Hpxn+z1NaDIN+USM3ml7lp3AQtQHN/VRUfiTzyRJp6nVdUVZRylz8PggEq+O9E1TIeG+TXHtv7/Jq7ME2Ahbdg=="],
|
||||
@@ -44,6 +73,20 @@
|
||||
|
||||
"@effect/workflow": ["@effect/workflow@0.14.0", "", { "peerDependencies": { "@effect/experimental": "^0.57.7", "@effect/platform": "^0.93.5", "@effect/rpc": "^0.72.2", "effect": "^3.19.8" } }, "sha512-NPJqScwqe0szAl9IOYNIYnTR7cN00UiMWgOlLD6500ejnjgsaXYnZIWSQZHK54zkOMfsAVVyfuZ0wgVq/K2zMw=="],
|
||||
|
||||
"@glideapps/ts-necessities": ["@glideapps/ts-necessities@2.4.0", "", {}, "sha512-mDC+qosuNa4lxR3ioMBb6CD0XLRsQBplU+zRPUYiMLXKeVPZ6UYphdNG/EGReig0YyfnVlBKZEXl1wzTotYmPA=="],
|
||||
|
||||
"@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
|
||||
|
||||
"@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
|
||||
|
||||
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
|
||||
|
||||
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
|
||||
|
||||
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
|
||||
|
||||
"@mark.probst/typescript-json-schema": ["@mark.probst/typescript-json-schema@0.55.0", "", { "dependencies": { "@types/json-schema": "^7.0.9", "@types/node": "^16.9.2", "glob": "^7.1.7", "path-equal": "^1.1.2", "safe-stable-stringify": "^2.2.0", "ts-node": "^10.9.1", "typescript": "4.9.4", "yargs": "^17.1.1" }, "bin": { "typescript-json-schema": "bin/typescript-json-schema" } }, "sha512-jI48mSnRgFQxXiE/UTUCVCpX8lK3wCFKLF1Ss2aEreboKNuLQGt3e0/YFqWVHe/WENxOaqiJvwOz+L/SrN2+qQ=="],
|
||||
|
||||
"@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="],
|
||||
|
||||
"@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw=="],
|
||||
@@ -86,36 +129,174 @@
|
||||
|
||||
"@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="],
|
||||
|
||||
"@trpc/server": ["@trpc/server@11.7.2", "", { "peerDependencies": { "typescript": ">=5.7.2" } }, "sha512-AgB26PXY69sckherIhCacKLY49rxE2XP5h38vr/KMZTbLCL1p8IuIoKPjALTcugC2kbyQ7Lbqo2JDVfRSmPmfQ=="],
|
||||
|
||||
"@tsconfig/node10": ["@tsconfig/node10@1.0.12", "", {}, "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ=="],
|
||||
|
||||
"@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="],
|
||||
|
||||
"@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="],
|
||||
|
||||
"@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="],
|
||||
|
||||
"@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="],
|
||||
|
||||
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
||||
|
||||
"@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
|
||||
|
||||
"@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20251130.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20251130.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20251130.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20251130.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20251130.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20251130.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20251130.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20251130.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-0DcbBJM5xMvbUWl5ZNprFno6ZlGmkI1RHN4hW1jJza7D5Um0kSs4CU0fx2Z4uNxhY7a37Y6px5LkM3WF6gePQg=="],
|
||||
|
||||
"@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20251130.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-j0h3dgtd/te0r6CKiJWxkb/hrtudWjEbTpuxF3Iki1E87oPtig0mNJyzTgzZFLLWaXM16Iuwb/6Y79j/dWwWmw=="],
|
||||
|
||||
"@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20251130.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZjKkYNjzw8XJtai/R7eUIlRA1MK3xleNEHn+lrI5WJjZqzmOeKHc0xhbzW3E9aIDTd1/9cyt9AcPLvrx5FFvMw=="],
|
||||
|
||||
"@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20251130.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ovlaIVqiJqtuXaP4R/o+ljcFA3pIIMHJ1LN2bqEQYhJJR3nTbx/xvmGtXG2EC3xzrZCgEMY974izascjaziqEg=="],
|
||||
|
||||
"@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20251130.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-FLsbHH4ZqjdZ9t6zawbvt0zx/4YO+XB3+eGBkorTY6uhK66UKkXn4ar9k7ovLjRf1C6Ozjb6qvptf0k9mEJl0Q=="],
|
||||
|
||||
"@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20251130.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Z7qOyRxiyQUPaLPb6VA4FtXLkIj/AOSIgaP1zguaIYXJAkfMkQbhMaViLwFziMIxlH3ysr6jbZsBmsdYhVa9cQ=="],
|
||||
|
||||
"@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20251130.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-a3xBzkixBqg3a2KnYZLPvGlPEbxNXFdfFimiYXx4CJVeiXqJX5U9zhZ2uAxh3oMMW6pDzQmn87AfM4F3FyxDAA=="],
|
||||
|
||||
"@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20251130.1", "", { "os": "win32", "cpu": "x64" }, "sha512-1rJCAv76ScP7inMJPWTN28BuDe55po3BcjQR0/j07hViJPVMn4bI+VlgLV0oZpYOuaM9Uk0ex0e14mr0fwcgQA=="],
|
||||
|
||||
"abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
|
||||
|
||||
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
|
||||
|
||||
"acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="],
|
||||
|
||||
"ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
||||
|
||||
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
||||
|
||||
"arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="],
|
||||
|
||||
"array-back": ["array-back@3.1.0", "", {}, "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q=="],
|
||||
|
||||
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||
|
||||
"base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
||||
|
||||
"brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
|
||||
|
||||
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
||||
|
||||
"browser-or-node": ["browser-or-node@3.0.0", "", {}, "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ=="],
|
||||
|
||||
"buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="],
|
||||
|
||||
"bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="],
|
||||
|
||||
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
||||
|
||||
"chalk-template": ["chalk-template@0.4.0", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg=="],
|
||||
|
||||
"citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="],
|
||||
|
||||
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
||||
|
||||
"collection-utils": ["collection-utils@1.0.1", "", {}, "sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg=="],
|
||||
|
||||
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
||||
|
||||
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
||||
|
||||
"command-line-args": ["command-line-args@5.2.1", "", { "dependencies": { "array-back": "^3.1.0", "find-replace": "^3.0.0", "lodash.camelcase": "^4.3.0", "typical": "^4.0.0" } }, "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg=="],
|
||||
|
||||
"command-line-usage": ["command-line-usage@7.0.3", "", { "dependencies": { "array-back": "^6.2.2", "chalk-template": "^0.4.0", "table-layout": "^4.1.0", "typical": "^7.1.1" } }, "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q=="],
|
||||
|
||||
"commander": ["commander@14.0.2", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="],
|
||||
|
||||
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
||||
|
||||
"confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="],
|
||||
|
||||
"consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="],
|
||||
|
||||
"create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="],
|
||||
|
||||
"cross-fetch": ["cross-fetch@4.1.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw=="],
|
||||
|
||||
"deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="],
|
||||
|
||||
"detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="],
|
||||
|
||||
"diff": ["diff@4.0.2", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="],
|
||||
|
||||
"effect": ["effect@3.19.8", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-OmLw8EfH02vdmyU2fO4uY9He/wepwKI5E/JNpE2pseaWWUbaYOK9UlxIiKP20ZEqQr+S/jSqRDGmpiqD/2DeCQ=="],
|
||||
|
||||
"emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
||||
|
||||
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
|
||||
|
||||
"event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
|
||||
|
||||
"events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="],
|
||||
|
||||
"exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="],
|
||||
|
||||
"fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="],
|
||||
|
||||
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
|
||||
|
||||
"find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="],
|
||||
|
||||
"find-replace": ["find-replace@3.0.0", "", { "dependencies": { "array-back": "^3.0.1" } }, "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ=="],
|
||||
|
||||
"fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="],
|
||||
|
||||
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
|
||||
|
||||
"glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="],
|
||||
|
||||
"graphql": ["graphql@0.11.7", "", { "dependencies": { "iterall": "1.1.3" } }, "sha512-x7uDjyz8Jx+QPbpCFCMQ8lltnQa4p4vSYHx6ADe8rVYRTdsyhCJbvSty5DAsLVmU6cGakl+r8HQYolKHxk/tiw=="],
|
||||
|
||||
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
||||
|
||||
"ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
|
||||
|
||||
"inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="],
|
||||
|
||||
"inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
||||
|
||||
"ini": ["ini@4.1.3", "", {}, "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg=="],
|
||||
|
||||
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
||||
|
||||
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
|
||||
|
||||
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
||||
|
||||
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
||||
|
||||
"is-url": ["is-url@1.2.4", "", {}, "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="],
|
||||
|
||||
"iterall": ["iterall@1.1.3", "", {}, "sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ=="],
|
||||
|
||||
"js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="],
|
||||
|
||||
"jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="],
|
||||
|
||||
"kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="],
|
||||
|
||||
"lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="],
|
||||
|
||||
"lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="],
|
||||
|
||||
"lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="],
|
||||
|
||||
"make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="],
|
||||
|
||||
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
||||
|
||||
"minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
|
||||
|
||||
"minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
|
||||
|
||||
"moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="],
|
||||
|
||||
"msgpackr": ["msgpackr@1.11.5", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA=="],
|
||||
|
||||
"msgpackr-extract": ["msgpackr-extract@3.0.3", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA=="],
|
||||
@@ -124,26 +305,170 @@
|
||||
|
||||
"node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="],
|
||||
|
||||
"node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
|
||||
|
||||
"node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="],
|
||||
|
||||
"nypm": ["nypm@0.6.2", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g=="],
|
||||
|
||||
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
||||
|
||||
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
||||
|
||||
"path-equal": ["path-equal@1.2.5", "", {}, "sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g=="],
|
||||
|
||||
"path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="],
|
||||
|
||||
"path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="],
|
||||
|
||||
"pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
|
||||
|
||||
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
||||
|
||||
"picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
||||
|
||||
"pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
|
||||
|
||||
"pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="],
|
||||
|
||||
"process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="],
|
||||
|
||||
"pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="],
|
||||
|
||||
"quicktype": ["quicktype@23.2.6", "", { "dependencies": { "@glideapps/ts-necessities": "^2.2.3", "chalk": "^4.1.2", "collection-utils": "^1.0.1", "command-line-args": "^5.2.1", "command-line-usage": "^7.0.1", "cross-fetch": "^4.0.0", "graphql": "^0.11.7", "lodash": "^4.17.21", "moment": "^2.30.1", "quicktype-core": "23.2.6", "quicktype-graphql-input": "23.2.6", "quicktype-typescript-input": "23.2.6", "readable-stream": "^4.5.2", "stream-json": "1.8.0", "string-to-stream": "^3.0.1", "typescript": "~5.8.3" }, "bin": { "quicktype": "dist/index.js" } }, "sha512-rlD1jF71bOmDn6SQ/ToLuuRkMQ7maxo5oVTn5dPCl11ymqoJCFCvl7FzRfh+fkDFmWt2etl+JiIEdWImLxferA=="],
|
||||
|
||||
"quicktype-core": ["quicktype-core@23.2.6", "", { "dependencies": { "@glideapps/ts-necessities": "2.2.3", "browser-or-node": "^3.0.0", "collection-utils": "^1.0.1", "cross-fetch": "^4.0.0", "is-url": "^1.2.4", "js-base64": "^3.7.7", "lodash": "^4.17.21", "pako": "^1.0.6", "pluralize": "^8.0.0", "readable-stream": "4.5.2", "unicode-properties": "^1.4.1", "urijs": "^1.19.1", "wordwrap": "^1.0.0", "yaml": "^2.4.1" } }, "sha512-asfeSv7BKBNVb9WiYhFRBvBZHcRutPRBwJMxW0pefluK4kkKu4lv0IvZBwFKvw2XygLcL1Rl90zxWDHYgkwCmA=="],
|
||||
|
||||
"quicktype-graphql-input": ["quicktype-graphql-input@23.2.6", "", { "dependencies": { "collection-utils": "^1.0.1", "graphql": "^0.11.7", "quicktype-core": "23.2.6" } }, "sha512-jHQ8XrEaccZnWA7h/xqUQhfl+0mR5o91T6k3I4QhlnZSLdVnbycrMq4FHa9EaIFcai783JKwSUl1+koAdJq4pg=="],
|
||||
|
||||
"quicktype-typescript-input": ["quicktype-typescript-input@23.2.6", "", { "dependencies": { "@mark.probst/typescript-json-schema": "0.55.0", "quicktype-core": "23.2.6", "typescript": "4.9.5" } }, "sha512-dCNMxR+7PGs9/9Tsth9H6LOQV1G+Tv4sUGT8ZUfDRJ5Hq371qOYLma5BnLX6VxkPu8JT7mAMpQ9VFlxstX6Qaw=="],
|
||||
|
||||
"readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="],
|
||||
|
||||
"require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
|
||||
|
||||
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
||||
|
||||
"safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="],
|
||||
|
||||
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
|
||||
|
||||
"stream-chain": ["stream-chain@2.2.5", "", {}, "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA=="],
|
||||
|
||||
"stream-json": ["stream-json@1.8.0", "", { "dependencies": { "stream-chain": "^2.2.5" } }, "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw=="],
|
||||
|
||||
"string-to-stream": ["string-to-stream@3.0.1", "", { "dependencies": { "readable-stream": "^3.4.0" } }, "sha512-Hl092MV3USJuUCC6mfl9sPzGloA3K5VwdIeJjYIkXY/8K+mUvaeEabWJgArp+xXrsWxCajeT2pc4axbVhIZJyg=="],
|
||||
|
||||
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
||||
|
||||
"string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
|
||||
|
||||
"strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
||||
|
||||
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
||||
|
||||
"table-layout": ["table-layout@4.1.1", "", { "dependencies": { "array-back": "^6.2.2", "wordwrapjs": "^5.1.0" } }, "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA=="],
|
||||
|
||||
"tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="],
|
||||
|
||||
"tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="],
|
||||
|
||||
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
||||
|
||||
"toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="],
|
||||
|
||||
"tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
|
||||
|
||||
"trpc-cli": ["trpc-cli@0.12.1", "", { "dependencies": { "commander": "^14.0.0" }, "peerDependencies": { "@orpc/server": "^1.0.0", "@trpc/server": "^10.45.2 || ^11.0.1", "@valibot/to-json-schema": "^1.1.0", "effect": "^3.14.2 || ^4.0.0", "valibot": "^1.1.0", "zod": "^3.24.0 || ^4.0.0" }, "optionalPeers": ["@orpc/server", "@trpc/server", "@valibot/to-json-schema", "effect", "valibot", "zod"], "bin": { "trpc-cli": "dist/bin.js" } }, "sha512-/D/mIQf3tUrS7ZKJZ1gmSPJn2psAABJfkC5Eevm55SZ4s6KwANOUNlwhAGXN9HT4VSJVfoF2jettevE9vHPQlg=="],
|
||||
|
||||
"ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-script": "dist/bin-script-deprecated.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="],
|
||||
|
||||
"turbo": ["turbo@2.6.1", "", { "optionalDependencies": { "turbo-darwin-64": "2.6.1", "turbo-darwin-arm64": "2.6.1", "turbo-linux-64": "2.6.1", "turbo-linux-arm64": "2.6.1", "turbo-windows-64": "2.6.1", "turbo-windows-arm64": "2.6.1" }, "bin": { "turbo": "bin/turbo" } }, "sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA=="],
|
||||
|
||||
"turbo-darwin-64": ["turbo-darwin-64@2.6.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ=="],
|
||||
|
||||
"turbo-darwin-arm64": ["turbo-darwin-arm64@2.6.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw=="],
|
||||
|
||||
"turbo-linux-64": ["turbo-linux-64@2.6.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw=="],
|
||||
|
||||
"turbo-linux-arm64": ["turbo-linux-arm64@2.6.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA=="],
|
||||
|
||||
"turbo-windows-64": ["turbo-windows-64@2.6.1", "", { "os": "win32", "cpu": "x64" }, "sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ=="],
|
||||
|
||||
"turbo-windows-arm64": ["turbo-windows-arm64@2.6.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q=="],
|
||||
|
||||
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
||||
|
||||
"typical": ["typical@4.0.0", "", {}, "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw=="],
|
||||
|
||||
"ultracite": ["ultracite@6.3.8", "", { "dependencies": { "@clack/prompts": "^0.11.0", "@trpc/server": "^11.7.2", "deepmerge": "^4.3.1", "glob": "^13.0.0", "jsonc-parser": "^3.3.1", "nypm": "^0.6.2", "trpc-cli": "^0.12.1", "zod": "^4.1.13" }, "bin": { "ultracite": "dist/index.js" } }, "sha512-A7q1ubPt6DfNifjhPnK2uZjko2FM/Ic56Mn6toX8go6ZDDFUvg84HJoHkqco1F8Z0iiWmVj5W2tBpbIqmt0M8Q=="],
|
||||
|
||||
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
||||
|
||||
"unicode-properties": ["unicode-properties@1.4.1", "", { "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" } }, "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg=="],
|
||||
|
||||
"unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="],
|
||||
|
||||
"urijs": ["urijs@1.19.11", "", {}, "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="],
|
||||
|
||||
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
|
||||
|
||||
"uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
|
||||
|
||||
"v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="],
|
||||
|
||||
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
|
||||
|
||||
"whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
|
||||
|
||||
"wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
|
||||
|
||||
"wordwrapjs": ["wordwrapjs@5.1.1", "", {}, "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg=="],
|
||||
|
||||
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
||||
|
||||
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||
|
||||
"ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="],
|
||||
|
||||
"y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
|
||||
|
||||
"yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="],
|
||||
|
||||
"yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
|
||||
|
||||
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
|
||||
|
||||
"yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="],
|
||||
|
||||
"zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="],
|
||||
|
||||
"@mark.probst/typescript-json-schema/@types/node": ["@types/node@16.18.126", "", {}, "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw=="],
|
||||
|
||||
"@mark.probst/typescript-json-schema/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="],
|
||||
|
||||
"@mark.probst/typescript-json-schema/typescript": ["typescript@4.9.4", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg=="],
|
||||
|
||||
"command-line-usage/array-back": ["array-back@6.2.2", "", {}, "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw=="],
|
||||
|
||||
"command-line-usage/typical": ["typical@7.3.0", "", {}, "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw=="],
|
||||
|
||||
"node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
|
||||
|
||||
"quicktype/typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
||||
|
||||
"quicktype-core/@glideapps/ts-necessities": ["@glideapps/ts-necessities@2.2.3", "", {}, "sha512-gXi0awOZLHk3TbW55GZLCPP6O+y/b5X1pBXKBVckFONSwF1z1E5ND2BGJsghQFah+pW7pkkyFb2VhUQI2qhL5w=="],
|
||||
|
||||
"quicktype-core/readable-stream": ["readable-stream@4.5.2", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g=="],
|
||||
|
||||
"quicktype-typescript-input/typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="],
|
||||
|
||||
"string-to-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
|
||||
|
||||
"table-layout/array-back": ["array-back@6.2.2", "", {}, "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw=="],
|
||||
|
||||
"unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="],
|
||||
|
||||
"@mark.probst/typescript-json-schema/glob/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
|
||||
}
|
||||
}
|
||||
|
||||
14
package.json
14
package.json
@@ -1,10 +1,16 @@
|
||||
{
|
||||
"name": "winos-config",
|
||||
"version": "0.0.1",
|
||||
"module": "index.ts",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"packageManager": "bun@1.3.3",
|
||||
"scripts": {
|
||||
"prepare": "effect-language-service patch"
|
||||
"prepare": "effect-language-service patch",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"lint:biome": "biome check . --write",
|
||||
"lint:biome:unsafe": "biome check . --unsafe --write",
|
||||
"lint:biome:check": "biome check ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@effect/cli": "^0.72.1",
|
||||
@@ -13,8 +19,12 @@
|
||||
"effect": "^3.19.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "2.3.8",
|
||||
"@effect/language-service": "^0.57.1",
|
||||
"@types/bun": "latest",
|
||||
"typescript": "^5.9.3"
|
||||
"quicktype": "^23.2.6",
|
||||
"turbo": "^2.6.1",
|
||||
"typescript": "^5.9.3",
|
||||
"ultracite": "6.3.8"
|
||||
}
|
||||
}
|
||||
|
||||
131
scripts/gen-dsc-types.ts
Normal file
131
scripts/gen-dsc-types.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
import { Command, FileSystem, Path } from '@effect/platform';
|
||||
import { BunContext, BunRuntime } from '@effect/platform-bun';
|
||||
import { Effect, Logger, LogLevel, pipe, Stream, String } from 'effect';
|
||||
import { convertFromString } from './json-schema-to-effect';
|
||||
|
||||
// Helper function to collect stream output as a string
|
||||
const runString = <E, R>(
|
||||
stream: Stream.Stream<Uint8Array, E, R>,
|
||||
): Effect.Effect<string, E, R> =>
|
||||
stream.pipe(Stream.decodeText(), Stream.runFold(String.empty, String.concat));
|
||||
|
||||
const runCommand = (command: Command.Command) =>
|
||||
pipe(
|
||||
Command.start(command),
|
||||
Effect.flatMap((process) =>
|
||||
Effect.all(
|
||||
[
|
||||
process.exitCode,
|
||||
runString(process.stdout),
|
||||
runString(process.stderr),
|
||||
],
|
||||
{ concurrency: 3 },
|
||||
),
|
||||
),
|
||||
Effect.map(([exitCode, stdout, stderr]) => ({ exitCode, stdout, stderr })),
|
||||
);
|
||||
|
||||
const getDscJsonSchema = (schemaType: string) =>
|
||||
Effect.gen(function* () {
|
||||
const commandParts = ['dsc', 'schema', '--type', schemaType] as const;
|
||||
yield* Effect.logDebug(`Running command: ${commandParts.join(' ')}`);
|
||||
const schemaString = yield* Command.make(...commandParts).pipe(
|
||||
Command.string,
|
||||
);
|
||||
return schemaString.trim();
|
||||
});
|
||||
|
||||
const getPossibleDscSchemaTypes = () =>
|
||||
Effect.gen(function* () {
|
||||
yield* Effect.logDebug('Getting possible DSC schema types...');
|
||||
|
||||
const brokenCommand = Command.make(
|
||||
'dsc',
|
||||
'schema',
|
||||
'--type',
|
||||
'something-that-hopefully-never-exists',
|
||||
);
|
||||
|
||||
const { stderr: brokenCommandOutput } = yield* runCommand(brokenCommand);
|
||||
|
||||
const possibleTypes = brokenCommandOutput
|
||||
.split('\n')
|
||||
.filter((line) => line.includes('possible values:'))
|
||||
.map((line) => {
|
||||
const values = line.match(/\[possible values: (.+)\]/)?.[1];
|
||||
return values?.split(', ') ?? [];
|
||||
})[0];
|
||||
|
||||
if (!possibleTypes) return yield* Effect.die('No possible types found');
|
||||
|
||||
yield* Effect.logDebug(`Found ${possibleTypes.length} schema types`);
|
||||
return possibleTypes;
|
||||
});
|
||||
|
||||
const jsonSchemaToEffectSchema = (params: {
|
||||
jsonSchema: string;
|
||||
name: string;
|
||||
}) =>
|
||||
Effect.gen(function* () {
|
||||
yield* Effect.logDebug(`Converting schema: ${params.name}`);
|
||||
|
||||
const result = convertFromString(params.jsonSchema, params.name);
|
||||
|
||||
yield* Effect.logDebug(
|
||||
`Converted "${params.name}" - types: ${result.typeNames.join(', ')}`,
|
||||
);
|
||||
|
||||
if (result.recursiveTypes.length > 0) {
|
||||
yield* Effect.logInfo(
|
||||
`Recursive types in ${params.name}: ${result.recursiveTypes.join(', ')}`,
|
||||
);
|
||||
}
|
||||
|
||||
return result.code;
|
||||
});
|
||||
|
||||
const genDscTypes = Effect.gen(function* () {
|
||||
yield* Effect.log('Starting DSC types generation...');
|
||||
|
||||
const possibleTypes = yield* getPossibleDscSchemaTypes();
|
||||
yield* Effect.log(`Found schema types: ${possibleTypes.join(', ')}`);
|
||||
|
||||
const fs = yield* FileSystem.FileSystem;
|
||||
const path = yield* Path.Path;
|
||||
|
||||
const outputDir = path.join(process.cwd(), 'src', 'dsc-schema-types');
|
||||
|
||||
yield* Effect.logDebug(`Output directory: ${outputDir}`);
|
||||
|
||||
if (yield* fs.exists(outputDir)) {
|
||||
yield* Effect.log('Removing existing output directory...');
|
||||
yield* fs.remove(outputDir, { recursive: true, force: true });
|
||||
}
|
||||
|
||||
yield* fs.makeDirectory(outputDir, { recursive: true });
|
||||
|
||||
for (const schemaType of possibleTypes) {
|
||||
yield* Effect.logDebug(`Processing: ${schemaType}`);
|
||||
|
||||
const jsonSchema = yield* getDscJsonSchema(schemaType);
|
||||
const effectSchema = yield* jsonSchemaToEffectSchema({
|
||||
jsonSchema,
|
||||
name: schemaType,
|
||||
});
|
||||
|
||||
const outputPath = path.join(outputDir, `${schemaType}.gen.ts`);
|
||||
yield* fs.writeFileString(outputPath, effectSchema);
|
||||
|
||||
yield* Effect.log(`Generated: ${schemaType}.gen.ts`);
|
||||
}
|
||||
|
||||
yield* Effect.log('DSC types generation complete!');
|
||||
});
|
||||
|
||||
BunRuntime.runMain(
|
||||
genDscTypes.pipe(
|
||||
Effect.provide(BunContext.layer),
|
||||
Logger.withMinimumLogLevel(LogLevel.Debug),
|
||||
Effect.scoped,
|
||||
),
|
||||
);
|
||||
672
scripts/json-schema-to-effect.ts
Normal file
672
scripts/json-schema-to-effect.ts
Normal file
@@ -0,0 +1,672 @@
|
||||
/**
|
||||
* JSON Schema to Effect Schema Converter
|
||||
*
|
||||
* Converts JSON Schema to Effect Schema TypeScript code with proper
|
||||
* handling of recursive types using S.suspend() and interface definitions.
|
||||
*/
|
||||
|
||||
// ============================================================================
|
||||
// Types
|
||||
// ============================================================================
|
||||
|
||||
type JsonSchema = {
|
||||
$ref?: string;
|
||||
$defs?: Record<string, JsonSchema>;
|
||||
definitions?: Record<string, JsonSchema>;
|
||||
type?: string | Array<string>;
|
||||
properties?: Record<string, JsonSchema>;
|
||||
required?: Array<string>;
|
||||
items?: JsonSchema;
|
||||
enum?: Array<unknown>;
|
||||
const?: unknown;
|
||||
oneOf?: Array<JsonSchema>;
|
||||
anyOf?: Array<JsonSchema>;
|
||||
allOf?: Array<JsonSchema>;
|
||||
additionalProperties?: boolean | JsonSchema;
|
||||
title?: string;
|
||||
description?: string;
|
||||
default?: unknown;
|
||||
nullable?: boolean;
|
||||
};
|
||||
|
||||
type TypeDefinition = {
|
||||
name: string;
|
||||
schema: JsonSchema;
|
||||
isRecursive: boolean;
|
||||
dependencies: Set<string>;
|
||||
};
|
||||
|
||||
type ConversionContext = {
|
||||
definitions: Map<string, TypeDefinition>;
|
||||
recursiveTypes: Set<string>;
|
||||
currentPath: Array<string>;
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
// Utilities
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* Convert a string to PascalCase for type names
|
||||
*/
|
||||
function toPascalCase(str: string): string {
|
||||
return str
|
||||
.split(/[-_\s]+/)
|
||||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
||||
.join('');
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the definition name from a $ref
|
||||
*/
|
||||
function getRefName(ref: string): string {
|
||||
const parts = ref.split('/');
|
||||
return parts.at(-1) ?? '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a schema is nullable (has null in type array, nullable: true, or null in oneOf/anyOf)
|
||||
*/
|
||||
function isNullable(schema: JsonSchema): boolean {
|
||||
if (schema.nullable) return true;
|
||||
if (Array.isArray(schema.type) && schema.type.includes('null')) return true;
|
||||
// Check for null in oneOf/anyOf
|
||||
const items = schema.oneOf || schema.anyOf;
|
||||
if (items) {
|
||||
return items.some(
|
||||
(s) => s.type === 'null' || ('const' in s && s.const === null),
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the non-null type from a schema
|
||||
*/
|
||||
function getNonNullType(schema: JsonSchema): string | undefined {
|
||||
if (Array.isArray(schema.type)) {
|
||||
const nonNull = schema.type.filter((t) => t !== 'null');
|
||||
return nonNull.length === 1 ? nonNull[0] : undefined;
|
||||
}
|
||||
return schema.type;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Schema Analysis
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* Collect all definitions from the schema
|
||||
*/
|
||||
function collectDefinitions(schema: JsonSchema): Map<string, TypeDefinition> {
|
||||
const definitions = new Map<string, TypeDefinition>();
|
||||
const defs = schema.$defs || schema.definitions || {};
|
||||
|
||||
for (const [name, defSchema] of Object.entries(defs)) {
|
||||
definitions.set(name, {
|
||||
name: toPascalCase(name),
|
||||
schema: defSchema,
|
||||
isRecursive: false,
|
||||
dependencies: new Set(),
|
||||
});
|
||||
}
|
||||
|
||||
return definitions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all $ref dependencies in a schema
|
||||
*/
|
||||
function findDependencies(schema: JsonSchema): Set<string> {
|
||||
const deps = new Set<string>();
|
||||
|
||||
function traverse(s: JsonSchema): void {
|
||||
if (s.$ref) {
|
||||
deps.add(getRefName(s.$ref));
|
||||
}
|
||||
|
||||
if (s.properties) {
|
||||
for (const propSchema of Object.values(s.properties)) {
|
||||
traverse(propSchema);
|
||||
}
|
||||
}
|
||||
|
||||
if (s.items) {
|
||||
traverse(s.items);
|
||||
}
|
||||
|
||||
if (s.oneOf) {
|
||||
for (const item of s.oneOf) {
|
||||
traverse(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (s.anyOf) {
|
||||
for (const item of s.anyOf) {
|
||||
traverse(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (s.allOf) {
|
||||
for (const item of s.allOf) {
|
||||
traverse(item);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof s.additionalProperties === 'object' && s.additionalProperties) {
|
||||
traverse(s.additionalProperties);
|
||||
}
|
||||
}
|
||||
|
||||
traverse(schema);
|
||||
return deps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect recursive types using DFS cycle detection
|
||||
*/
|
||||
function detectRecursiveTypes(
|
||||
definitions: Map<string, TypeDefinition>,
|
||||
): Set<string> {
|
||||
const recursiveTypes = new Set<string>();
|
||||
|
||||
// Build dependency graph
|
||||
for (const [, def] of definitions) {
|
||||
def.dependencies = findDependencies(def.schema);
|
||||
}
|
||||
|
||||
// DFS to detect cycles
|
||||
function hasCycle(
|
||||
name: string,
|
||||
visiting: Set<string>,
|
||||
visited: Set<string>,
|
||||
): boolean {
|
||||
if (visiting.has(name)) {
|
||||
return true;
|
||||
}
|
||||
if (visited.has(name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
visiting.add(name);
|
||||
|
||||
const def = definitions.get(name);
|
||||
if (def) {
|
||||
for (const dep of def.dependencies) {
|
||||
if (hasCycle(dep, visiting, visited)) {
|
||||
recursiveTypes.add(name);
|
||||
recursiveTypes.add(dep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
visiting.delete(name);
|
||||
visited.add(name);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check each definition for cycles
|
||||
for (const name of definitions.keys()) {
|
||||
hasCycle(name, new Set(), new Set());
|
||||
}
|
||||
|
||||
// Also check for direct self-references
|
||||
for (const [name, def] of definitions) {
|
||||
if (def.dependencies.has(name)) {
|
||||
recursiveTypes.add(name);
|
||||
def.isRecursive = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Mark all recursive types
|
||||
for (const name of recursiveTypes) {
|
||||
const def = definitions.get(name);
|
||||
if (def) {
|
||||
def.isRecursive = true;
|
||||
}
|
||||
}
|
||||
|
||||
return recursiveTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Topologically sort definitions (dependencies first)
|
||||
*/
|
||||
function sortDefinitions(
|
||||
definitions: Map<string, TypeDefinition>,
|
||||
recursiveTypes: Set<string>,
|
||||
): Array<TypeDefinition> {
|
||||
const sorted: Array<TypeDefinition> = [];
|
||||
const visited = new Set<string>();
|
||||
|
||||
function visit(name: string): void {
|
||||
if (visited.has(name)) return;
|
||||
visited.add(name);
|
||||
|
||||
const def = definitions.get(name);
|
||||
if (!def) return;
|
||||
|
||||
// Visit non-recursive dependencies first
|
||||
for (const dep of def.dependencies) {
|
||||
if (!(recursiveTypes.has(dep) && recursiveTypes.has(name))) {
|
||||
visit(dep);
|
||||
}
|
||||
}
|
||||
|
||||
sorted.push(def);
|
||||
}
|
||||
|
||||
for (const name of definitions.keys()) {
|
||||
visit(name);
|
||||
}
|
||||
|
||||
return sorted;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Code Generation
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* Generate TypeScript type for a JSON Schema (used for recursive type declarations)
|
||||
*/
|
||||
function generateTsType(schema: JsonSchema, _ctx: ConversionContext): string {
|
||||
if (schema.$ref) {
|
||||
const refName = getRefName(schema.$ref);
|
||||
const pascalName = toPascalCase(refName);
|
||||
return pascalName;
|
||||
}
|
||||
|
||||
const type = getNonNullType(schema);
|
||||
|
||||
if (schema.enum) {
|
||||
return schema.enum.map((v) => JSON.stringify(v)).join(' | ');
|
||||
}
|
||||
|
||||
if (schema.const !== undefined) {
|
||||
return JSON.stringify(schema.const);
|
||||
}
|
||||
|
||||
if (schema.oneOf || schema.anyOf) {
|
||||
const items = schema.oneOf || schema.anyOf || [];
|
||||
const types = items
|
||||
.filter((s) => s.type !== 'null' && !('const' in s && s.const === null))
|
||||
.map((s) => generateTsType(s, _ctx));
|
||||
return types.join(' | ');
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'string':
|
||||
return 'string';
|
||||
case 'number':
|
||||
case 'integer':
|
||||
return 'number';
|
||||
case 'boolean':
|
||||
return 'boolean';
|
||||
case 'null':
|
||||
return 'null';
|
||||
case 'array':
|
||||
if (schema.items) {
|
||||
return `ReadonlyArray<${generateTsType(schema.items, _ctx)}>`;
|
||||
}
|
||||
return 'ReadonlyArray<unknown>';
|
||||
case 'object':
|
||||
if (schema.properties) {
|
||||
const props = Object.entries(schema.properties)
|
||||
.map(([key, propSchema]) => {
|
||||
const isRequired = schema.required?.includes(key) ?? false;
|
||||
const nullable = isNullable(propSchema);
|
||||
const tsType = generateTsType(propSchema, _ctx);
|
||||
const nullSuffix = nullable ? ' | null' : '';
|
||||
const optionalMark = isRequired ? '' : '?';
|
||||
return ` readonly "${key}"${optionalMark}: ${tsType}${nullSuffix}`;
|
||||
})
|
||||
.join(';\n');
|
||||
return `{\n${props}\n}`;
|
||||
}
|
||||
if (
|
||||
schema.additionalProperties === true ||
|
||||
typeof schema.additionalProperties === 'object'
|
||||
) {
|
||||
const valueType =
|
||||
typeof schema.additionalProperties === 'object'
|
||||
? generateTsType(schema.additionalProperties, _ctx)
|
||||
: 'unknown';
|
||||
return `Record<string, ${valueType}>`;
|
||||
}
|
||||
return 'Record<string, unknown>';
|
||||
default:
|
||||
return 'unknown';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate TypeScript interface/type declaration for a recursive type
|
||||
*/
|
||||
function generateTypeDeclaration(
|
||||
name: string,
|
||||
schema: JsonSchema,
|
||||
ctx: ConversionContext,
|
||||
): string {
|
||||
const tsType = generateTsType(schema, ctx);
|
||||
if (tsType.startsWith('{')) {
|
||||
return `interface ${name} ${tsType}`;
|
||||
}
|
||||
return `type ${name} = ${tsType}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate Effect Schema code for a JSON Schema
|
||||
*/
|
||||
function generateEffectSchema(
|
||||
schema: JsonSchema,
|
||||
ctx: ConversionContext,
|
||||
): string {
|
||||
// Handle $ref
|
||||
if (schema.$ref) {
|
||||
const refName = getRefName(schema.$ref);
|
||||
const pascalName = toPascalCase(refName);
|
||||
|
||||
// Check if this is a recursive reference - use S.suspend with explicit return type
|
||||
if (ctx.recursiveTypes.has(refName)) {
|
||||
return `S.suspend((): S.Schema<${pascalName}> => ${pascalName})`;
|
||||
}
|
||||
return pascalName;
|
||||
}
|
||||
|
||||
// Handle nullable types
|
||||
const nullable = isNullable(schema);
|
||||
const type = getNonNullType(schema);
|
||||
|
||||
// Handle enum
|
||||
if (schema.enum) {
|
||||
const literals = schema.enum.map((v) => JSON.stringify(v)).join(', ');
|
||||
const result = `S.Literal(${literals})`;
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
|
||||
// Handle const
|
||||
if (schema.const !== undefined) {
|
||||
const result = `S.Literal(${JSON.stringify(schema.const)})`;
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
|
||||
// Handle oneOf / anyOf (union)
|
||||
if (schema.oneOf || schema.anyOf) {
|
||||
const items = schema.oneOf || schema.anyOf || [];
|
||||
const nonNullItems = items.filter(
|
||||
(s) => s.type !== 'null' && !('const' in s && s.const === null),
|
||||
);
|
||||
|
||||
if (nonNullItems.length === 0) {
|
||||
return 'S.Null';
|
||||
}
|
||||
|
||||
if (nonNullItems.length === 1) {
|
||||
const firstItem = nonNullItems[0];
|
||||
if (!firstItem) return 'S.Unknown';
|
||||
const innerSchema = generateEffectSchema(firstItem, ctx);
|
||||
const hasNull = items.some(
|
||||
(s) => s.type === 'null' || ('const' in s && s.const === null),
|
||||
);
|
||||
return hasNull ? `S.NullOr(${innerSchema})` : innerSchema;
|
||||
}
|
||||
|
||||
const members = nonNullItems
|
||||
.map((s) => generateEffectSchema(s, ctx))
|
||||
.join(', ');
|
||||
const hasNull = items.some(
|
||||
(s) => s.type === 'null' || ('const' in s && s.const === null),
|
||||
);
|
||||
return hasNull ? `S.Union(${members}, S.Null)` : `S.Union(${members})`;
|
||||
}
|
||||
|
||||
// Handle allOf (intersection - we merge properties)
|
||||
if (schema.allOf) {
|
||||
// For simplicity, merge all schemas' properties
|
||||
const merged: JsonSchema = { type: 'object', properties: {}, required: [] };
|
||||
for (const item of schema.allOf) {
|
||||
if (item.properties) {
|
||||
merged.properties = { ...merged.properties, ...item.properties };
|
||||
}
|
||||
if (item.required) {
|
||||
merged.required = [...(merged.required || []), ...item.required];
|
||||
}
|
||||
}
|
||||
return generateEffectSchema(merged, ctx);
|
||||
}
|
||||
|
||||
// Handle by type
|
||||
switch (type) {
|
||||
case 'string': {
|
||||
const result = 'S.String';
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
case 'number':
|
||||
case 'integer': {
|
||||
const result = 'S.Number';
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
case 'boolean': {
|
||||
const result = 'S.Boolean';
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
case 'null':
|
||||
return 'S.Null';
|
||||
case 'array': {
|
||||
const itemSchema = schema.items
|
||||
? generateEffectSchema(schema.items, ctx)
|
||||
: 'S.Unknown';
|
||||
const result = `S.Array(${itemSchema})`;
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
case 'object': {
|
||||
if (schema.properties) {
|
||||
const props = Object.entries(schema.properties)
|
||||
.map(([key, propSchema]) => {
|
||||
const isRequired = schema.required?.includes(key) ?? false;
|
||||
const propNullable = isNullable(propSchema);
|
||||
let propCode = generateEffectSchema(propSchema, ctx);
|
||||
|
||||
// Wrap in optional if not required
|
||||
if (!isRequired) {
|
||||
if (propNullable && !propCode.startsWith('S.NullOr(')) {
|
||||
propCode = `S.NullOr(${propCode})`;
|
||||
}
|
||||
propCode = `S.optional(${propCode})`;
|
||||
}
|
||||
|
||||
return ` "${key}": ${propCode}`;
|
||||
})
|
||||
.join(',\n');
|
||||
const result = `S.Struct({\n${props}\n})`;
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
if (
|
||||
schema.additionalProperties === true ||
|
||||
typeof schema.additionalProperties === 'object'
|
||||
) {
|
||||
const valueSchema =
|
||||
typeof schema.additionalProperties === 'object'
|
||||
? generateEffectSchema(schema.additionalProperties, ctx)
|
||||
: 'S.Unknown';
|
||||
const result = `S.Record({ key: S.String, value: ${valueSchema} })`;
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
// Empty object or any object
|
||||
const result = 'S.Record({ key: S.String, value: S.Unknown })';
|
||||
return nullable ? `S.NullOr(${result})` : result;
|
||||
}
|
||||
default:
|
||||
// Unknown or any type
|
||||
return nullable ? 'S.NullOr(S.Unknown)' : 'S.Unknown';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate non-recursive schema definition (schema + derived type)
|
||||
*/
|
||||
function generateNonRecursiveDefinition(
|
||||
def: TypeDefinition,
|
||||
ctx: ConversionContext,
|
||||
): string {
|
||||
const lines: Array<string> = [];
|
||||
const { name, schema } = def;
|
||||
|
||||
// Add description as JSDoc comment
|
||||
if (schema.description) {
|
||||
lines.push(`/** ${schema.description} */`);
|
||||
}
|
||||
|
||||
// Check if it's an enum type
|
||||
if (schema.enum) {
|
||||
const literals = schema.enum.map((v) => JSON.stringify(v)).join(',\n ');
|
||||
lines.push(`export const ${name} = S.Literal(\n ${literals}\n);`);
|
||||
lines.push(`export type ${name} = S.Schema.Type<typeof ${name}>;`);
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
// Generate the schema
|
||||
const schemaCode = generateEffectSchema(schema, ctx);
|
||||
lines.push(`export const ${name} = ${schemaCode};`);
|
||||
lines.push(`export type ${name} = S.Schema.Type<typeof ${name}>;`);
|
||||
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate recursive schema definition (schema with type assertion to bypass structural checks)
|
||||
*/
|
||||
function generateRecursiveSchemaDefinition(
|
||||
def: TypeDefinition,
|
||||
ctx: ConversionContext,
|
||||
): string {
|
||||
const lines: Array<string> = [];
|
||||
const { name, schema } = def;
|
||||
|
||||
// Add description as JSDoc comment
|
||||
if (schema.description) {
|
||||
lines.push(`/** ${schema.description} */`);
|
||||
}
|
||||
|
||||
// Generate the schema with double type assertion to bypass structural checking
|
||||
const schemaCode = generateEffectSchema(schema, ctx);
|
||||
lines.push(
|
||||
`export const ${name} = ${schemaCode} as unknown as S.Schema<${name}>;`,
|
||||
);
|
||||
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Main Conversion Function
|
||||
// ============================================================================
|
||||
|
||||
export type ConvertOptions = {
|
||||
/** The JSON Schema to convert */
|
||||
schema: JsonSchema;
|
||||
/** The name for the root type (if the schema has no $ref) */
|
||||
rootName?: string;
|
||||
};
|
||||
|
||||
export type ConvertResult = {
|
||||
/** The generated TypeScript code */
|
||||
code: string;
|
||||
/** Names of all generated types */
|
||||
typeNames: Array<string>;
|
||||
/** Names of recursive types */
|
||||
recursiveTypes: Array<string>;
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert a JSON Schema to Effect Schema TypeScript code
|
||||
*/
|
||||
export function convert(options: ConvertOptions): ConvertResult {
|
||||
const { schema, rootName = 'Root' } = options;
|
||||
|
||||
// Collect all definitions
|
||||
const definitions = collectDefinitions(schema);
|
||||
|
||||
// If the root schema is not a $ref, add it as a definition
|
||||
if (!schema.$ref && (schema.type === 'object' || schema.properties)) {
|
||||
definitions.set(rootName, {
|
||||
name: toPascalCase(rootName),
|
||||
schema,
|
||||
isRecursive: false,
|
||||
dependencies: new Set(),
|
||||
});
|
||||
}
|
||||
|
||||
// Detect recursive types
|
||||
const recursiveTypes = detectRecursiveTypes(definitions);
|
||||
|
||||
// Create conversion context
|
||||
const ctx: ConversionContext = {
|
||||
definitions,
|
||||
recursiveTypes,
|
||||
currentPath: [],
|
||||
};
|
||||
|
||||
// Sort definitions topologically
|
||||
const sorted = sortDefinitions(definitions, recursiveTypes);
|
||||
|
||||
// Split into non-recursive and recursive definitions
|
||||
const nonRecursive = sorted.filter((d) => !recursiveTypes.has(d.name));
|
||||
const recursive = sorted.filter((d) => recursiveTypes.has(d.name));
|
||||
|
||||
// Generate code
|
||||
const lines: Array<string> = [
|
||||
'// This file is auto-generated. Do not edit manually.',
|
||||
"import * as S from 'effect/Schema';",
|
||||
'',
|
||||
];
|
||||
|
||||
// 1. Generate non-recursive definitions (schema + type)
|
||||
for (const def of nonRecursive) {
|
||||
lines.push(generateNonRecursiveDefinition(def, ctx));
|
||||
lines.push('');
|
||||
}
|
||||
|
||||
// 2. Generate type declarations for recursive types (before schemas)
|
||||
if (recursive.length > 0) {
|
||||
lines.push('// Recursive type declarations');
|
||||
for (const def of recursive) {
|
||||
lines.push(generateTypeDeclaration(def.name, def.schema, ctx));
|
||||
}
|
||||
lines.push('');
|
||||
|
||||
// 3. Generate schema definitions for recursive types
|
||||
lines.push('// Recursive schema definitions');
|
||||
for (const def of recursive) {
|
||||
lines.push(generateRecursiveSchemaDefinition(def, ctx));
|
||||
lines.push('');
|
||||
}
|
||||
}
|
||||
|
||||
// Handle root $ref
|
||||
if (schema.$ref) {
|
||||
const refName = toPascalCase(getRefName(schema.$ref));
|
||||
const exportName = toPascalCase(rootName);
|
||||
if (refName !== exportName) {
|
||||
lines.push(`export { ${refName} as ${exportName} };`);
|
||||
lines.push('');
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
code: lines.join('\n'),
|
||||
typeNames: sorted.map((d) => d.name),
|
||||
recursiveTypes: Array.from(recursiveTypes).map(toPascalCase),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a JSON Schema string to Effect Schema TypeScript code
|
||||
*/
|
||||
export function convertFromString(
|
||||
jsonSchemaString: string,
|
||||
rootName = 'Root',
|
||||
): ConvertResult {
|
||||
const schema = JSON.parse(jsonSchemaString) as JsonSchema;
|
||||
return convert({ schema, rootName });
|
||||
}
|
||||
42
src/bin.ts
42
src/bin.ts
@@ -1,17 +1,31 @@
|
||||
import { Command } from "@effect/cli"
|
||||
import { BunContext, BunRuntime } from "@effect/platform-bun"
|
||||
import { Console, Effect } from "effect"
|
||||
import { Command } from '@effect/cli';
|
||||
import { BunContext, BunRuntime } from '@effect/platform-bun';
|
||||
import { Effect } from 'effect';
|
||||
import pkg from '../package.json' with { type: 'json' };
|
||||
|
||||
// Define the top-level command
|
||||
const command = Command.make("hello-world", {}, () =>
|
||||
Console.log("Hello World")
|
||||
)
|
||||
const diffCommand = Command.make('diff', {}, () =>
|
||||
Effect.gen(function* () {
|
||||
yield* Effect.log('diff');
|
||||
yield* Effect.log('diff2');
|
||||
}),
|
||||
);
|
||||
|
||||
// Set up the CLI application
|
||||
const cli = Command.run(command, {
|
||||
name: "Hello World CLI",
|
||||
version: "v1.0.0"
|
||||
})
|
||||
const applyCommand = Command.make('apply', {}, () =>
|
||||
Effect.gen(function* () {
|
||||
yield* Effect.log('apply');
|
||||
yield* Effect.log('apply2');
|
||||
}),
|
||||
);
|
||||
|
||||
// Prepare and run the CLI application
|
||||
cli(process.argv).pipe(Effect.provide(BunContext.layer), BunRuntime.runMain)
|
||||
const cliName = 'winos-config';
|
||||
|
||||
const app = Command.make(cliName, {}).pipe(
|
||||
Command.withDescription('NixOS-like tool for windows'),
|
||||
Command.withSubcommands([diffCommand, applyCommand]),
|
||||
);
|
||||
|
||||
const cli = Command.run(app, {
|
||||
name: cliName,
|
||||
version: pkg.version,
|
||||
});
|
||||
cli(process.argv).pipe(Effect.provide(BunContext.layer), BunRuntime.runMain);
|
||||
|
||||
81
src/dsc-schema-types/configuration-get-result.gen.ts
Normal file
81
src/dsc-schema-types/configuration-get-result.gen.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
export const ResourceGetResponse = S.Struct({
|
||||
actualState: S.Unknown,
|
||||
});
|
||||
export type ResourceGetResponse = S.Schema.Type<typeof ResourceGetResponse>;
|
||||
|
||||
export const MessageLevel = S.Literal('error', 'warning', 'information');
|
||||
export type MessageLevel = S.Schema.Type<typeof MessageLevel>;
|
||||
|
||||
export const ResourceMessage = S.Struct({
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
message: S.String,
|
||||
level: MessageLevel,
|
||||
});
|
||||
export type ResourceMessage = S.Schema.Type<typeof ResourceMessage>;
|
||||
|
||||
export const ConfigurationGetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
results: S.Array(
|
||||
S.suspend((): S.Schema<ResourceGetResult> => ResourceGetResult),
|
||||
),
|
||||
messages: S.Array(ResourceMessage),
|
||||
hadErrors: S.Boolean,
|
||||
});
|
||||
export type ConfigurationGetResult = S.Schema.Type<
|
||||
typeof ConfigurationGetResult
|
||||
>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceGetResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: GetResult;
|
||||
};
|
||||
type GetResult = ResourceGetResponse | ReadonlyArray<ResourceGetResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceGetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<GetResult> => GetResult),
|
||||
}) as unknown as S.Schema<ResourceGetResult>;
|
||||
|
||||
export const GetResult = S.Union(
|
||||
ResourceGetResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceGetResult> => ResourceGetResult)),
|
||||
) as unknown as S.Schema<GetResult>;
|
||||
83
src/dsc-schema-types/configuration-set-result.gen.ts
Normal file
83
src/dsc-schema-types/configuration-set-result.gen.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
export const ResourceSetResponse = S.Struct({
|
||||
beforeState: S.Unknown,
|
||||
afterState: S.Unknown,
|
||||
changedProperties: S.optional(S.NullOr(S.Array(S.String))),
|
||||
});
|
||||
export type ResourceSetResponse = S.Schema.Type<typeof ResourceSetResponse>;
|
||||
|
||||
export const MessageLevel = S.Literal('error', 'warning', 'information');
|
||||
export type MessageLevel = S.Schema.Type<typeof MessageLevel>;
|
||||
|
||||
export const ResourceMessage = S.Struct({
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
message: S.String,
|
||||
level: MessageLevel,
|
||||
});
|
||||
export type ResourceMessage = S.Schema.Type<typeof ResourceMessage>;
|
||||
|
||||
export const ConfigurationSetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
results: S.Array(
|
||||
S.suspend((): S.Schema<ResourceSetResult> => ResourceSetResult),
|
||||
),
|
||||
messages: S.Array(ResourceMessage),
|
||||
hadErrors: S.Boolean,
|
||||
});
|
||||
export type ConfigurationSetResult = S.Schema.Type<
|
||||
typeof ConfigurationSetResult
|
||||
>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceSetResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: SetResult;
|
||||
};
|
||||
type SetResult = ResourceSetResponse | ReadonlyArray<ResourceSetResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceSetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<SetResult> => SetResult),
|
||||
}) as unknown as S.Schema<ResourceSetResult>;
|
||||
|
||||
export const SetResult = S.Union(
|
||||
ResourceSetResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceSetResult> => ResourceSetResult)),
|
||||
) as unknown as S.Schema<SetResult>;
|
||||
84
src/dsc-schema-types/configuration-test-result.gen.ts
Normal file
84
src/dsc-schema-types/configuration-test-result.gen.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
export const ResourceTestResponse = S.Struct({
|
||||
desiredState: S.Unknown,
|
||||
actualState: S.Unknown,
|
||||
inDesiredState: S.Boolean,
|
||||
differingProperties: S.Array(S.String),
|
||||
});
|
||||
export type ResourceTestResponse = S.Schema.Type<typeof ResourceTestResponse>;
|
||||
|
||||
export const MessageLevel = S.Literal('error', 'warning', 'information');
|
||||
export type MessageLevel = S.Schema.Type<typeof MessageLevel>;
|
||||
|
||||
export const ResourceMessage = S.Struct({
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
message: S.String,
|
||||
level: MessageLevel,
|
||||
});
|
||||
export type ResourceMessage = S.Schema.Type<typeof ResourceMessage>;
|
||||
|
||||
export const ConfigurationTestResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
results: S.Array(
|
||||
S.suspend((): S.Schema<ResourceTestResult> => ResourceTestResult),
|
||||
),
|
||||
messages: S.Array(ResourceMessage),
|
||||
hadErrors: S.Boolean,
|
||||
});
|
||||
export type ConfigurationTestResult = S.Schema.Type<
|
||||
typeof ConfigurationTestResult
|
||||
>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceTestResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: TestResult;
|
||||
};
|
||||
type TestResult = ResourceTestResponse | ReadonlyArray<ResourceTestResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceTestResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<TestResult> => TestResult),
|
||||
}) as unknown as S.Schema<ResourceTestResult>;
|
||||
|
||||
export const TestResult = S.Union(
|
||||
ResourceTestResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceTestResult> => ResourceTestResult)),
|
||||
) as unknown as S.Schema<TestResult>;
|
||||
99
src/dsc-schema-types/configuration.gen.ts
Normal file
99
src/dsc-schema-types/configuration.gen.ts
Normal file
@@ -0,0 +1,99 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const DataType = S.Literal(
|
||||
'string',
|
||||
'secureString',
|
||||
'int',
|
||||
'bool',
|
||||
'object',
|
||||
'secureObject',
|
||||
'array',
|
||||
);
|
||||
export type DataType = S.Schema.Type<typeof DataType>;
|
||||
|
||||
export const Parameter = S.Struct({
|
||||
type: DataType,
|
||||
defaultValue: S.optional(S.Unknown),
|
||||
allowedValues: S.optional(S.NullOr(S.Array(S.Unknown))),
|
||||
minValue: S.optional(S.NullOr(S.Number)),
|
||||
maxValue: S.optional(S.NullOr(S.Number)),
|
||||
minLength: S.optional(S.NullOr(S.Number)),
|
||||
maxLength: S.optional(S.NullOr(S.Number)),
|
||||
description: S.optional(S.NullOr(S.String)),
|
||||
metadata: S.optional(S.NullOr(S.Record({ key: S.String, value: S.Unknown }))),
|
||||
});
|
||||
export type Parameter = S.Schema.Type<typeof Parameter>;
|
||||
|
||||
export const Resource = S.Struct({
|
||||
type: S.String,
|
||||
name: S.String,
|
||||
dependsOn: S.optional(S.NullOr(S.Array(S.String))),
|
||||
properties: S.optional(
|
||||
S.NullOr(S.Record({ key: S.String, value: S.Unknown })),
|
||||
),
|
||||
metadata: S.optional(S.NullOr(S.Record({ key: S.String, value: S.Unknown }))),
|
||||
});
|
||||
export type Resource = S.Schema.Type<typeof Resource>;
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
export const Configuration = S.Struct({
|
||||
$schema: S.Literal(
|
||||
'https://aka.ms/dsc/schemas/v3/bundled/config/document.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/bundled/config/document.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/bundled/config/document.json',
|
||||
'https://aka.ms/dsc/schemas/v3/bundled/config/document.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/bundled/config/document.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/bundled/config/document.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3/config/document.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/config/document.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/config/document.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/config/document.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/config/document.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/config/document.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/config/document.json',
|
||||
),
|
||||
contentVersion: S.optional(S.NullOr(S.String)),
|
||||
parameters: S.optional(
|
||||
S.NullOr(S.Record({ key: S.String, value: Parameter })),
|
||||
),
|
||||
variables: S.optional(
|
||||
S.NullOr(S.Record({ key: S.String, value: S.Unknown })),
|
||||
),
|
||||
resources: S.Array(Resource),
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
});
|
||||
export type Configuration = S.Schema.Type<typeof Configuration>;
|
||||
42
src/dsc-schema-types/dsc-resource.gen.ts
Normal file
42
src/dsc-schema-types/dsc-resource.gen.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Kind = S.Literal(
|
||||
'adapter',
|
||||
'exporter',
|
||||
'group',
|
||||
'importer',
|
||||
'resource',
|
||||
);
|
||||
export type Kind = S.Schema.Type<typeof Kind>;
|
||||
|
||||
export const Capability = S.Union(
|
||||
S.Literal('get'),
|
||||
S.Literal('set'),
|
||||
S.Literal('setHandlesExist'),
|
||||
S.Literal('whatIf'),
|
||||
S.Literal('test'),
|
||||
S.Literal('delete'),
|
||||
S.Literal('export'),
|
||||
S.Literal('resolve'),
|
||||
);
|
||||
export type Capability = S.Schema.Type<typeof Capability>;
|
||||
|
||||
export const ImplementedAs = S.NullOr(S.String);
|
||||
export type ImplementedAs = S.Schema.Type<typeof ImplementedAs>;
|
||||
|
||||
export const DscResource = S.Struct({
|
||||
type: S.String,
|
||||
kind: S.Struct({}),
|
||||
version: S.String,
|
||||
capabilities: S.Array(Capability),
|
||||
path: S.String,
|
||||
description: S.optional(S.NullOr(S.String)),
|
||||
directory: S.String,
|
||||
implementedAs: S.Struct({}),
|
||||
author: S.optional(S.NullOr(S.String)),
|
||||
properties: S.Array(S.String),
|
||||
requireAdapter: S.optional(S.NullOr(S.String)),
|
||||
manifest: S.optional(S.Unknown),
|
||||
});
|
||||
export type DscResource = S.Schema.Type<typeof DscResource>;
|
||||
58
src/dsc-schema-types/get-result.gen.ts
Normal file
58
src/dsc-schema-types/get-result.gen.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const ResourceGetResponse = S.Struct({
|
||||
actualState: S.Unknown,
|
||||
});
|
||||
export type ResourceGetResponse = S.Schema.Type<typeof ResourceGetResponse>;
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceGetResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: GetResult;
|
||||
};
|
||||
type GetResult = ResourceGetResponse | ReadonlyArray<ResourceGetResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceGetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<GetResult> => GetResult),
|
||||
}) as unknown as S.Schema<ResourceGetResult>;
|
||||
|
||||
export const GetResult = S.Union(
|
||||
ResourceGetResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceGetResult> => ResourceGetResult)),
|
||||
) as unknown as S.Schema<GetResult>;
|
||||
12
src/dsc-schema-types/include.gen.ts
Normal file
12
src/dsc-schema-types/include.gen.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Include = S.Union(
|
||||
S.Struct({
|
||||
configurationFile: S.String,
|
||||
}),
|
||||
S.Struct({
|
||||
configurationContent: S.String,
|
||||
}),
|
||||
);
|
||||
export type Include = S.Schema.Type<typeof Include>;
|
||||
10
src/dsc-schema-types/resolve-result.gen.ts
Normal file
10
src/dsc-schema-types/resolve-result.gen.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const ResolveResult = S.Struct({
|
||||
configuration: S.Unknown,
|
||||
parameters: S.optional(
|
||||
S.NullOr(S.Record({ key: S.String, value: S.Unknown })),
|
||||
),
|
||||
});
|
||||
export type ResolveResult = S.Schema.Type<typeof ResolveResult>;
|
||||
153
src/dsc-schema-types/resource-manifest.gen.ts
Normal file
153
src/dsc-schema-types/resource-manifest.gen.ts
Normal file
@@ -0,0 +1,153 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const Kind = S.Literal(
|
||||
'adapter',
|
||||
'exporter',
|
||||
'group',
|
||||
'importer',
|
||||
'resource',
|
||||
);
|
||||
export type Kind = S.Schema.Type<typeof Kind>;
|
||||
|
||||
export const ArgKind = S.Union(
|
||||
S.String,
|
||||
S.Struct({
|
||||
jsonInputArg: S.String,
|
||||
mandatory: S.optional(S.NullOr(S.Boolean)),
|
||||
}),
|
||||
);
|
||||
export type ArgKind = S.Schema.Type<typeof ArgKind>;
|
||||
|
||||
export const InputKind = S.Union(S.Literal('env'), S.Literal('stdin'));
|
||||
export type InputKind = S.Schema.Type<typeof InputKind>;
|
||||
|
||||
export const GetMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
});
|
||||
export type GetMethod = S.Schema.Type<typeof GetMethod>;
|
||||
|
||||
export const ReturnKind = S.Union(
|
||||
S.Literal('state'),
|
||||
S.Literal('stateAndDiff'),
|
||||
);
|
||||
export type ReturnKind = S.Schema.Type<typeof ReturnKind>;
|
||||
|
||||
export const SetMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
implementsPretest: S.optional(S.NullOr(S.Boolean)),
|
||||
handlesExist: S.optional(S.NullOr(S.Boolean)),
|
||||
return: S.optional(S.NullOr(ReturnKind)),
|
||||
});
|
||||
export type SetMethod = S.Schema.Type<typeof SetMethod>;
|
||||
|
||||
export const TestMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
return: S.optional(S.NullOr(ReturnKind)),
|
||||
});
|
||||
export type TestMethod = S.Schema.Type<typeof TestMethod>;
|
||||
|
||||
export const DeleteMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
});
|
||||
export type DeleteMethod = S.Schema.Type<typeof DeleteMethod>;
|
||||
|
||||
export const ExportMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
});
|
||||
export type ExportMethod = S.Schema.Type<typeof ExportMethod>;
|
||||
|
||||
export const ResolveMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
});
|
||||
export type ResolveMethod = S.Schema.Type<typeof ResolveMethod>;
|
||||
|
||||
export const ValidateMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(ArgKind))),
|
||||
input: S.optional(S.NullOr(InputKind)),
|
||||
});
|
||||
export type ValidateMethod = S.Schema.Type<typeof ValidateMethod>;
|
||||
|
||||
export const ListMethod = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(S.String))),
|
||||
});
|
||||
export type ListMethod = S.Schema.Type<typeof ListMethod>;
|
||||
|
||||
export const ConfigKind = S.Union(S.Literal('full'), S.Literal('sequence'));
|
||||
export type ConfigKind = S.Schema.Type<typeof ConfigKind>;
|
||||
|
||||
export const Adapter = S.Struct({
|
||||
list: S.Struct({}),
|
||||
config: S.Struct({}),
|
||||
});
|
||||
export type Adapter = S.Schema.Type<typeof Adapter>;
|
||||
|
||||
export const SchemaCommand = S.Struct({
|
||||
executable: S.String,
|
||||
args: S.optional(S.NullOr(S.Array(S.String))),
|
||||
});
|
||||
export type SchemaCommand = S.Schema.Type<typeof SchemaCommand>;
|
||||
|
||||
export const SchemaKind = S.Union(
|
||||
S.Struct({
|
||||
command: SchemaCommand,
|
||||
}),
|
||||
S.Struct({
|
||||
embedded: S.Unknown,
|
||||
}),
|
||||
);
|
||||
export type SchemaKind = S.Schema.Type<typeof SchemaKind>;
|
||||
|
||||
export const ResourceManifest = S.Struct({
|
||||
$schema: S.Literal(
|
||||
'https://aka.ms/dsc/schemas/v3/bundled/resource/manifest.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/bundled/resource/manifest.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/bundled/resource/manifest.json',
|
||||
'https://aka.ms/dsc/schemas/v3/bundled/resource/manifest.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/bundled/resource/manifest.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/bundled/resource/manifest.vscode.json',
|
||||
'https://aka.ms/dsc/schemas/v3/resource/manifest.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0/resource/manifest.json',
|
||||
'https://aka.ms/dsc/schemas/v3.0.0/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/resource/manifest.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/resource/manifest.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/resource/manifest.vscode.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/resource/manifest.json',
|
||||
'https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/resource/manifest.json',
|
||||
),
|
||||
type: S.String,
|
||||
kind: S.optional(S.NullOr(Kind)),
|
||||
version: S.String,
|
||||
description: S.optional(S.NullOr(S.String)),
|
||||
tags: S.optional(S.NullOr(S.Array(S.String))),
|
||||
get: S.optional(S.NullOr(GetMethod)),
|
||||
set: S.optional(S.NullOr(SetMethod)),
|
||||
whatIf: S.optional(S.NullOr(SetMethod)),
|
||||
test: S.optional(S.NullOr(TestMethod)),
|
||||
delete: S.optional(S.NullOr(DeleteMethod)),
|
||||
export: S.optional(S.NullOr(ExportMethod)),
|
||||
resolve: S.optional(S.NullOr(ResolveMethod)),
|
||||
validate: S.optional(S.NullOr(ValidateMethod)),
|
||||
adapter: S.optional(S.NullOr(Adapter)),
|
||||
exitCodes: S.optional(S.NullOr(S.Record({ key: S.String, value: S.String }))),
|
||||
schema: S.optional(S.NullOr(SchemaKind)),
|
||||
});
|
||||
export type ResourceManifest = S.Schema.Type<typeof ResourceManifest>;
|
||||
60
src/dsc-schema-types/set-result.gen.ts
Normal file
60
src/dsc-schema-types/set-result.gen.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const ResourceSetResponse = S.Struct({
|
||||
beforeState: S.Unknown,
|
||||
afterState: S.Unknown,
|
||||
changedProperties: S.optional(S.NullOr(S.Array(S.String))),
|
||||
});
|
||||
export type ResourceSetResponse = S.Schema.Type<typeof ResourceSetResponse>;
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceSetResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: SetResult;
|
||||
};
|
||||
type SetResult = ResourceSetResponse | ReadonlyArray<ResourceSetResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceSetResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<SetResult> => SetResult),
|
||||
}) as unknown as S.Schema<ResourceSetResult>;
|
||||
|
||||
export const SetResult = S.Union(
|
||||
ResourceSetResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceSetResult> => ResourceSetResult)),
|
||||
) as unknown as S.Schema<SetResult>;
|
||||
61
src/dsc-schema-types/test-result.gen.ts
Normal file
61
src/dsc-schema-types/test-result.gen.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
// This file is auto-generated. Do not edit manually.
|
||||
import * as S from 'effect/Schema';
|
||||
|
||||
export const ResourceTestResponse = S.Struct({
|
||||
desiredState: S.Unknown,
|
||||
actualState: S.Unknown,
|
||||
inDesiredState: S.Boolean,
|
||||
differingProperties: S.Array(S.String),
|
||||
});
|
||||
export type ResourceTestResponse = S.Schema.Type<typeof ResourceTestResponse>;
|
||||
|
||||
export const Operation = S.Literal('get', 'set', 'test', 'export');
|
||||
export type Operation = S.Schema.Type<typeof Operation>;
|
||||
|
||||
export const ExecutionKind = S.Literal('actual', 'whatIf');
|
||||
export type ExecutionKind = S.Schema.Type<typeof ExecutionKind>;
|
||||
|
||||
export const SecurityContextKind = S.Literal(
|
||||
'current',
|
||||
'elevated',
|
||||
'restricted',
|
||||
);
|
||||
export type SecurityContextKind = S.Schema.Type<typeof SecurityContextKind>;
|
||||
|
||||
export const MicrosoftDscMetadata = S.Struct({
|
||||
version: S.optional(S.NullOr(S.String)),
|
||||
operation: S.optional(S.NullOr(Operation)),
|
||||
executionType: S.optional(S.NullOr(ExecutionKind)),
|
||||
startDatetime: S.optional(S.NullOr(S.String)),
|
||||
endDatetime: S.optional(S.NullOr(S.String)),
|
||||
duration: S.optional(S.NullOr(S.String)),
|
||||
securityContext: S.optional(S.NullOr(SecurityContextKind)),
|
||||
});
|
||||
export type MicrosoftDscMetadata = S.Schema.Type<typeof MicrosoftDscMetadata>;
|
||||
|
||||
export const Metadata = S.Struct({
|
||||
'Microsoft.DSC': S.optional(S.NullOr(MicrosoftDscMetadata)),
|
||||
});
|
||||
export type Metadata = S.Schema.Type<typeof Metadata>;
|
||||
|
||||
// Recursive type declarations
|
||||
type ResourceTestResult = {
|
||||
readonly metadata?: Metadata | null;
|
||||
readonly name: string;
|
||||
readonly type: string;
|
||||
readonly result: TestResult;
|
||||
};
|
||||
type TestResult = ResourceTestResponse | ReadonlyArray<ResourceTestResult>;
|
||||
|
||||
// Recursive schema definitions
|
||||
export const ResourceTestResult = S.Struct({
|
||||
metadata: S.optional(S.NullOr(Metadata)),
|
||||
name: S.String,
|
||||
type: S.String,
|
||||
result: S.suspend((): S.Schema<TestResult> => TestResult),
|
||||
}) as unknown as S.Schema<ResourceTestResult>;
|
||||
|
||||
export const TestResult = S.Union(
|
||||
ResourceTestResponse,
|
||||
S.Array(S.suspend((): S.Schema<ResourceTestResult> => ResourceTestResult)),
|
||||
) as unknown as S.Schema<TestResult>;
|
||||
@@ -1,30 +1,22 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
// Environment setup & latest features
|
||||
"lib": [
|
||||
"ESNext"
|
||||
],
|
||||
"lib": ["ESNext"],
|
||||
"target": "ESNext",
|
||||
"module": "Preserve",
|
||||
"moduleDetection": "force",
|
||||
"jsx": "react-jsx",
|
||||
"allowJs": true,
|
||||
// Bundler mode
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"verbatimModuleSyntax": true,
|
||||
"noEmit": true,
|
||||
// Best practices
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"noImplicitOverride": true,
|
||||
// Some stricter flags
|
||||
"noUnusedParameters": true,
|
||||
"noPropertyAccessFromIndexSignature": true,
|
||||
// Effect-ts
|
||||
// https://www.effect.solutions/tsconfig
|
||||
"plugins": [
|
||||
{
|
||||
"name": "@effect/language-service"
|
||||
@@ -34,6 +26,8 @@
|
||||
"exactOptionalPropertyTypes": true,
|
||||
"noUnusedLocals": true,
|
||||
"sourceMap": true,
|
||||
"resolveJsonModule": true
|
||||
}
|
||||
}
|
||||
"resolveJsonModule": true,
|
||||
"strictNullChecks": true
|
||||
},
|
||||
"exclude": ["node_modules", "dist", "docs"]
|
||||
}
|
||||
|
||||
12
turbo.jsonc
Normal file
12
turbo.jsonc
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "https://turborepo.com/schema.json",
|
||||
"ui": "tui",
|
||||
"tasks": {
|
||||
"lint": {
|
||||
"with": ["lint:biome", "typecheck"]
|
||||
},
|
||||
"typecheck": {},
|
||||
"lint:biome": {},
|
||||
"lint:biome:check": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user