diff --git a/package.json b/package.json index 3bece98c2ab..148a7d4c119 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,8 @@ "stats": "webpack --mode production --config scripts/webpack/webpack.prod.js --profile --json > compilation-stats.json", "storybook": "yarn workspace @grafana/ui storybook --ci", "storybook:build": "yarn workspace @grafana/ui storybook:build", - "themes-generate": "esbuild --target=es6 ./scripts/cli/generateSassVariableFiles.ts --bundle --platform=node --tsconfig=./scripts/cli/tsconfig.json | node", + "themes-schema": "typescript-json-schema ./tsconfig.json NewThemeOptions --include 'packages/grafana-data/src/themes/createTheme.ts' --out public/app/features/theme-playground/schema.generated.json", + "themes-generate": "yarn themes-schema && esbuild --target=es6 ./scripts/cli/generateSassVariableFiles.ts --bundle --platform=node --tsconfig=./scripts/cli/tsconfig.json | node", "themes:usage": "eslint . --ignore-pattern '*.test.ts*' --ignore-pattern '*.spec.ts*' --cache --plugin '@grafana' --rule '{ @grafana/theme-token-usage: \"error\" }'", "typecheck": "tsc --noEmit && yarn run packages:typecheck", "plugins:build-bundled": "echo 'bundled plugins are no longer supported'", @@ -247,6 +248,7 @@ "ts-jest": "29.4.0", "ts-node": "10.9.2", "typescript": "5.9.2", + "typescript-json-schema": "^0.65.1", "webpack": "5.101.0", "webpack-assets-manifest": "^5.1.0", "webpack-cli": "6.0.1", diff --git a/project.json b/project.json index 72b1696e616..a4a3fa81c09 100644 --- a/project.json +++ b/project.json @@ -44,7 +44,8 @@ "outputs": [ "{workspaceRoot}/public/sass/_variables.generated.scss", "{workspaceRoot}/public/sass/_variables.dark.generated.scss", - "{workspaceRoot}/public/sass/_variables.light.generated.scss" + "{workspaceRoot}/public/sass/_variables.light.generated.scss", + "{workspaceRoot}/public/app/features/theme-playground/schema.json" ], "cache": true } diff --git a/public/app/features/theme-playground/README.md b/public/app/features/theme-playground/README.md index 7d5f19fdd4c..c0b370c9734 100644 --- a/public/app/features/theme-playground/README.md +++ b/public/app/features/theme-playground/README.md @@ -1,6 +1,3 @@ # Regenerating the schema -The schema for the theme options is generated using [ts-json-schema-generator](https://github.com/vega/ts-json-schema-generator/). To regenerate the schema (e.g. if the `NewThemeOptions` type has changed): - -- remove the `@internal` comment -- run `npx ts-json-schema-generator --path 'packages/grafana-data/src/themes/createTheme.ts' --type 'NewThemeOptions'` +The json schema for the theme options is generated using [typescript-json-schema](https://github.com/YousefED/typescript-json-schema). The schema should be regenerated automatically if the types change. If you need to manually regenerate, run `yarn themes-schema`. diff --git a/public/app/features/theme-playground/ThemePlayground.tsx b/public/app/features/theme-playground/ThemePlayground.tsx index 7c65399feda..fbd6d3809fe 100644 --- a/public/app/features/theme-playground/ThemePlayground.tsx +++ b/public/app/features/theme-playground/ThemePlayground.tsx @@ -15,7 +15,7 @@ import { getNavModel } from '../../core/selectors/navModel'; import { ThemeProvider } from '../../core/utils/ConfigProvider'; import { useSelector } from '../../types/store'; -import schema from './schema.json'; +import schema from './schema.generated.json'; export default function ThemePlayground() { const navIndex = useSelector((state) => state.navIndex); diff --git a/public/app/features/theme-playground/schema.generated.json b/public/app/features/theme-playground/schema.generated.json new file mode 100644 index 00000000000..1b1850a10f3 --- /dev/null +++ b/public/app/features/theme-playground/schema.generated.json @@ -0,0 +1,511 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "DeepPartial>": { + "properties": { + "action": { + "$ref": "#/definitions/DeepPartial<{selected:string;selectedBorder:string;hover:string;hoverOpacity:number;focus:string;disabledBackground:string;disabledText:string;disabledOpacity:number;}>" + }, + "background": { + "$ref": "#/definitions/DeepPartial<{canvas:string;primary:string;secondary:string;elevated:string;}>" + }, + "border": { + "$ref": "#/definitions/DeepPartial<{weak:string;medium:string;strong:string;}>" + }, + "contrastThreshold": { + "type": "number" + }, + "error": { + "$ref": "#/definitions/DeepPartial" + }, + "gradients": { + "$ref": "#/definitions/DeepPartial<{brandVertical:string;brandHorizontal:string;}>" + }, + "hoverFactor": { + "type": "number" + }, + "info": { + "$ref": "#/definitions/DeepPartial" + }, + "mode": { + "enum": ["dark", "light"], + "type": "string" + }, + "primary": { + "$ref": "#/definitions/DeepPartial" + }, + "secondary": { + "$ref": "#/definitions/DeepPartial" + }, + "success": { + "$ref": "#/definitions/DeepPartial" + }, + "text": { + "$ref": "#/definitions/DeepPartial<{primary:string;secondary:string;disabled:string;link:string;maxContrast:string;}>" + }, + "tonalOffset": { + "type": "number" + }, + "warning": { + "$ref": "#/definitions/DeepPartial" + } + }, + "type": "object" + }, + "DeepPartial": { + "properties": { + "border": { + "description": "Used for borders", + "type": "string" + }, + "borderTransparent": { + "description": "Used for weak colored borders like larger alert/banner boxes and smaller badges and tags", + "type": "string" + }, + "contrastText": { + "description": "Text color for text ontop of main", + "type": "string" + }, + "main": { + "description": "Main color", + "type": "string" + }, + "name": { + "description": "color intent (primary, secondary, info, error, etc)", + "type": "string" + }, + "shade": { + "description": "Used for hover", + "type": "string" + }, + "text": { + "description": "Used for text", + "type": "string" + }, + "transparent": { + "description": "Used subtly colored backgrounds", + "type": "string" + } + }, + "type": "object" + }, + "DeepPartial<{brandVertical:string;brandHorizontal:string;}>": { + "properties": { + "brandHorizontal": { + "type": "string" + }, + "brandVertical": { + "type": "string" + } + }, + "type": "object" + }, + "DeepPartial<{canvas:string;primary:string;secondary:string;elevated:string;}>": { + "properties": { + "canvas": { + "description": "Dashboard and body background", + "type": "string" + }, + "elevated": { + "description": "For popovers and menu backgrounds. This is the same color as primary in most light themes but in dark\nthemes it has a brighter shade to help give it contrast against the primary background.", + "type": "string" + }, + "primary": { + "description": "Primary content pane background (panels etc)", + "type": "string" + }, + "secondary": { + "description": "Cards and elements that need to stand out on the primary background", + "type": "string" + } + }, + "type": "object" + }, + "DeepPartial<{primary:string;secondary:string;disabled:string;link:string;maxContrast:string;}>": { + "properties": { + "disabled": { + "type": "string" + }, + "link": { + "type": "string" + }, + "maxContrast": { + "description": "Used for auto white or dark text on colored backgrounds", + "type": "string" + }, + "primary": { + "type": "string" + }, + "secondary": { + "type": "string" + } + }, + "type": "object" + }, + "DeepPartial<{selected:string;selectedBorder:string;hover:string;hoverOpacity:number;focus:string;disabledBackground:string;disabledText:string;disabledOpacity:number;}>": { + "properties": { + "disabledBackground": { + "description": "Used for disabled buttons and inputs", + "type": "string" + }, + "disabledOpacity": { + "description": "Disablerd opacity", + "type": "number" + }, + "disabledText": { + "description": "Disabled text", + "type": "string" + }, + "focus": { + "description": "Used focused menu item / select option", + "type": "string" + }, + "hover": { + "description": "Used for hovered menu item / select option", + "type": "string" + }, + "hoverOpacity": { + "description": "Used for button/colored background hover opacity", + "type": "number" + }, + "selected": { + "description": "Used for selected menu item / select option", + "type": "string" + }, + "selectedBorder": { + "type": "string" + } + }, + "type": "object" + }, + "DeepPartial<{weak:string;medium:string;strong:string;}>": { + "properties": { + "medium": { + "type": "string" + }, + "strong": { + "type": "string" + }, + "weak": { + "type": "string" + } + }, + "type": "object" + }, + "ThemeShapeInput": { + "properties": { + "borderRadius": { + "type": "number" + } + }, + "type": "object" + }, + "ThemeTypographyInput": { + "properties": { + "fontFamily": { + "type": "string" + }, + "fontFamilyMonospace": { + "type": "string" + }, + "fontSize": { + "type": "number" + }, + "fontWeightBold": { + "type": "number" + }, + "fontWeightLight": { + "type": "number" + }, + "fontWeightMedium": { + "type": "number" + }, + "fontWeightRegular": { + "type": "number" + }, + "htmlFontSize": { + "type": "number" + } + }, + "type": "object" + }, + "ThemeVizColor<\"blue\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName_4" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColor<\"green\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName_3" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColor<\"orange\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName_1" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColor<\"purple\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName_5" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColor<\"red\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColor<\"yellow\">": { + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "type": "string" + }, + "name": { + "$ref": "#/definitions/ThemeVizColorShadeName_2" + }, + "primary": { + "type": "boolean" + } + }, + "type": "object" + }, + "ThemeVizColorShadeName": { + "enum": ["dark-red", "light-red", "red", "semi-dark-red", "super-light-red"], + "type": "string" + }, + "ThemeVizColorShadeName_1": { + "enum": ["dark-orange", "light-orange", "orange", "semi-dark-orange", "super-light-orange"], + "type": "string" + }, + "ThemeVizColorShadeName_2": { + "enum": ["dark-yellow", "light-yellow", "semi-dark-yellow", "super-light-yellow", "yellow"], + "type": "string" + }, + "ThemeVizColorShadeName_3": { + "enum": ["dark-green", "green", "light-green", "semi-dark-green", "super-light-green"], + "type": "string" + }, + "ThemeVizColorShadeName_4": { + "enum": ["blue", "dark-blue", "light-blue", "semi-dark-blue", "super-light-blue"], + "type": "string" + }, + "ThemeVizColorShadeName_5": { + "enum": ["dark-purple", "light-purple", "purple", "semi-dark-purple", "super-light-purple"], + "type": "string" + }, + "ThemeVizHue": { + "anyOf": [ + { + "properties": { + "name": { + "const": "red", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"red\">" + }, + "type": "array" + } + }, + "type": "object" + }, + { + "properties": { + "name": { + "const": "orange", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"orange\">" + }, + "type": "array" + } + }, + "type": "object" + }, + { + "properties": { + "name": { + "const": "yellow", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"yellow\">" + }, + "type": "array" + } + }, + "type": "object" + }, + { + "properties": { + "name": { + "const": "green", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"green\">" + }, + "type": "array" + } + }, + "type": "object" + }, + { + "properties": { + "name": { + "const": "blue", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"blue\">" + }, + "type": "array" + } + }, + "type": "object" + }, + { + "properties": { + "name": { + "const": "purple", + "type": "string" + }, + "shades": { + "items": { + "$ref": "#/definitions/ThemeVizColor<\"purple\">" + }, + "type": "array" + } + }, + "type": "object" + } + ] + } + }, + "properties": { + "colors": { + "$ref": "#/definitions/DeepPartial>" + }, + "name": { + "type": "string" + }, + "shape": { + "$ref": "#/definitions/ThemeShapeInput" + }, + "spacing": { + "properties": { + "gridSize": { + "type": "number" + } + }, + "type": "object" + }, + "typography": { + "$ref": "#/definitions/ThemeTypographyInput" + }, + "visualization": { + "properties": { + "hues": { + "items": { + "$ref": "#/definitions/ThemeVizHue" + }, + "type": "array" + }, + "palette": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/public/app/features/theme-playground/schema.json b/public/app/features/theme-playground/schema.json deleted file mode 100644 index 19f507d1c22..00000000000 --- a/public/app/features/theme-playground/schema.json +++ /dev/null @@ -1,526 +0,0 @@ -{ - "$ref": "#/definitions/NewThemeOptions", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "NewThemeOptions": { - "additionalProperties": false, - "properties": { - "colors": { - "additionalProperties": false, - "properties": { - "action": { - "additionalProperties": false, - "properties": { - "disabledBackground": { - "additionalProperties": false, - "type": "object" - }, - "disabledOpacity": { - "additionalProperties": false, - "type": "object" - }, - "disabledText": { - "additionalProperties": false, - "type": "object" - }, - "focus": { - "additionalProperties": false, - "type": "object" - }, - "hover": { - "additionalProperties": false, - "type": "object" - }, - "hoverOpacity": { - "additionalProperties": false, - "type": "object" - }, - "selected": { - "additionalProperties": false, - "type": "object" - }, - "selectedBorder": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "background": { - "additionalProperties": false, - "properties": { - "canvas": { - "additionalProperties": false, - "type": "object" - }, - "elevated": { - "additionalProperties": false, - "type": "object" - }, - "primary": { - "additionalProperties": false, - "type": "object" - }, - "secondary": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "border": { - "additionalProperties": false, - "properties": { - "medium": { - "additionalProperties": false, - "type": "object" - }, - "strong": { - "additionalProperties": false, - "type": "object" - }, - "weak": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "contrastThreshold": { - "additionalProperties": false, - "type": "object" - }, - "error": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "gradients": { - "additionalProperties": false, - "properties": { - "brandHorizontal": { - "additionalProperties": false, - "type": "object" - }, - "brandVertical": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "hoverFactor": { - "additionalProperties": false, - "type": "object" - }, - "info": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "mode": { - "additionalProperties": false, - "type": "object" - }, - "primary": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "secondary": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "success": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "text": { - "additionalProperties": false, - "properties": { - "disabled": { - "additionalProperties": false, - "type": "object" - }, - "link": { - "additionalProperties": false, - "type": "object" - }, - "maxContrast": { - "additionalProperties": false, - "type": "object" - }, - "primary": { - "additionalProperties": false, - "type": "object" - }, - "secondary": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - }, - "tonalOffset": { - "additionalProperties": false, - "type": "object" - }, - "warning": { - "additionalProperties": false, - "properties": { - "border": { - "additionalProperties": false, - "type": "object" - }, - "borderTransparent": { - "additionalProperties": false, - "type": "object" - }, - "contrastText": { - "additionalProperties": false, - "type": "object" - }, - "main": { - "additionalProperties": false, - "type": "object" - }, - "name": { - "additionalProperties": false, - "type": "object" - }, - "shade": { - "additionalProperties": false, - "type": "object" - }, - "text": { - "additionalProperties": false, - "type": "object" - }, - "transparent": { - "additionalProperties": false, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "name": { - "type": "string" - }, - "shape": { - "additionalProperties": false, - "properties": { - "borderRadius": { - "type": "number" - } - }, - "type": "object" - }, - "spacing": { - "additionalProperties": false, - "properties": { - "gridSize": { - "type": "number" - } - }, - "type": "object" - }, - "typography": { - "$ref": "#/definitions/ThemeTypographyInput" - }, - "visualization": { - "$ref": "#/definitions/ThemeVisualizationColorsInput" - } - }, - "type": "object" - }, - "ThemeTypographyInput": { - "additionalProperties": false, - "properties": { - "fontFamily": { - "type": "string" - }, - "fontFamilyMonospace": { - "type": "string" - }, - "fontSize": { - "type": "number" - }, - "fontWeightBold": { - "type": "number" - }, - "fontWeightLight": { - "type": "number" - }, - "fontWeightMedium": { - "type": "number" - }, - "fontWeightRegular": { - "type": "number" - }, - "htmlFontSize": { - "type": "number" - } - }, - "type": "object" - }, - "ThemeVisualizationColorsInput": { - "additionalProperties": false, - "properties": { - "hues": { - "items": { - "$ref": "#/definitions/ThemeVizHue" - }, - "type": "array" - }, - "palette": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "ThemeVizColor": { - "additionalProperties": false, - "properties": { - "aliases": { - "items": { - "type": "string" - }, - "type": "array" - }, - "color": { - "type": "string" - }, - "name": { - "enum": [ - "super-light-red", - "super-light-orange", - "super-light-yellow", - "super-light-green", - "super-light-blue", - "super-light-purple", - "light-red", - "light-orange", - "light-yellow", - "light-green", - "light-blue", - "light-purple", - "red", - "orange", - "yellow", - "green", - "blue", - "purple", - "semi-dark-red", - "semi-dark-orange", - "semi-dark-yellow", - "semi-dark-green", - "semi-dark-blue", - "semi-dark-purple", - "dark-red", - "dark-orange", - "dark-yellow", - "dark-green", - "dark-blue", - "dark-purple" - ], - "type": "string" - }, - "primary": { - "type": "boolean" - } - }, - "required": ["color", "name"], - "type": "object" - }, - "ThemeVizHue": { - "additionalProperties": false, - "properties": { - "name": { - "enum": ["red", "orange", "yellow", "green", "blue", "purple"], - "type": "string" - }, - "shades": { - "items": { - "$ref": "#/definitions/ThemeVizColor%3Calias-498742091-559-644-498742091-0-16072%3E" - }, - "type": "array" - } - }, - "required": ["name", "shades"], - "type": "object" - } - } -} diff --git a/yarn.lock b/yarn.lock index 3f6986db4f0..1d70355375a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9761,6 +9761,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^18.11.9": + version: 18.19.129 + resolution: "@types/node@npm:18.19.129" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10/0db4cb246d6012b1b523661a59c2e8e0b24527f1c02cfa3deb8e0b884492a07f2547c5353f56272b70037408e3dbe690ae923b8073fd7b0814e389148245e59f + languageName: node + linkType: hard + "@types/nodemailer@npm:*": version: 6.4.15 resolution: "@types/nodemailer@npm:6.4.15" @@ -17957,7 +17966,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:^7.0.3, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -18494,6 +18503,7 @@ __metadata: tween-functions: "npm:^1.2.0" type-fest: "npm:^4.18.2" typescript: "npm:5.9.2" + typescript-json-schema: "npm:^0.65.1" uplot: "npm:1.6.32" uuid: "npm:11.1.0" vis-data: "npm:^8.0.0" @@ -25177,6 +25187,13 @@ __metadata: languageName: node linkType: hard +"path-equal@npm:^1.2.5": + version: 1.2.5 + resolution: "path-equal@npm:1.2.5" + checksum: 10/fa4ef398dea6bd7bf36c5fe62b5f5c2c14fe1f1340cf355eb8a40c86577318dfa0401df86464bb0cc33ed227f115b2afec10d1adaa64260dedbbc23d33f3abbb + languageName: node + linkType: hard + "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" @@ -28669,6 +28686,13 @@ __metadata: languageName: node linkType: hard +"safe-stable-stringify@npm:^2.2.0": + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: 10/2697fa186c17c38c3ca5309637b4ac6de2f1c3d282da27cd5e1e3c88eca0fb1f9aea568a6aabdf284111592c8782b94ee07176f17126031be72ab1313ed46c5c + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -31187,7 +31211,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:10.9.2": +"ts-node@npm:10.9.2, ts-node@npm:^10.9.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" dependencies: @@ -31529,6 +31553,24 @@ __metadata: languageName: node linkType: hard +"typescript-json-schema@npm:^0.65.1": + version: 0.65.1 + resolution: "typescript-json-schema@npm:0.65.1" + dependencies: + "@types/json-schema": "npm:^7.0.9" + "@types/node": "npm:^18.11.9" + glob: "npm:^7.1.7" + path-equal: "npm:^1.2.5" + safe-stable-stringify: "npm:^2.2.0" + ts-node: "npm:^10.9.1" + typescript: "npm:~5.5.0" + yargs: "npm:^17.1.1" + bin: + typescript-json-schema: bin/typescript-json-schema + checksum: 10/50a1935378639d5d47e452702766a3fdab22e1d06192f26f81b79e0da504e71af987ff21cb13909479a202aad8d1216a654f16ebda2ee2056b5f859584b4c7d2 + languageName: node + linkType: hard + "typescript-string-operations@npm:^1.4.1": version: 1.5.1 resolution: "typescript-string-operations@npm:1.5.1" @@ -31536,7 +31578,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.5.4": +"typescript@npm:5.5.4, typescript@npm:~5.5.0": version: 5.5.4 resolution: "typescript@npm:5.5.4" bin: @@ -31566,7 +31608,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.5.4#optional!builtin": +"typescript@patch:typescript@npm%3A5.5.4#optional!builtin, typescript@patch:typescript@npm%3A~5.5.0#optional!builtin": version: 5.5.4 resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=379a07" bin: @@ -31655,6 +31697,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10/0097779d94bc0fd26f0418b3a05472410408877279141ded2bd449167be1aed7ea5b76f756562cb3586a07f251b90799bab22d9019ceba49c037c76445f7cddd + languageName: node + linkType: hard + "undici-types@npm:~6.21.0": version: 6.21.0 resolution: "undici-types@npm:6.21.0" @@ -33175,7 +33224,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.1.1, yargs@npm:^17.3.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: