diff --git a/.changeset/great-scissors-pretend.md b/.changeset/great-scissors-pretend.md new file mode 100644 index 000000000000..3a0e643da3a4 --- /dev/null +++ b/.changeset/great-scissors-pretend.md @@ -0,0 +1,6 @@ +--- +"create-cloudflare": minor +"wrangler": minor +--- + +feat: Generate a JSON schema for the Wrangler package & use it in templates diff --git a/.gitignore b/.gitignore index 15dee649e04e..7bdef983f3b6 100644 --- a/.gitignore +++ b/.gitignore @@ -189,6 +189,9 @@ _routes.generated.json packages/quick-edit/vscode packages/quick-edit/web +packages/wrangler/config-schema.json + + # Vendored npm dependencies !vendor/*.tgz diff --git a/.prettierignore b/.prettierignore index 869dc7c3ac89..54c02bcf631f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ +packages/wrangler/config-schema.json packages/wrangler/wrangler-dist/ packages/wrangler/miniflare-dist/ packages/wrangler/emitted-types/ diff --git a/fixtures/pages-workerjs-with-config-file-app/wrangler.toml b/fixtures/pages-workerjs-with-config-file-app/wrangler.toml index da4f969a96f8..d89943fb507e 100644 --- a/fixtures/pages-workerjs-with-config-file-app/wrangler.toml +++ b/fixtures/pages-workerjs-with-config-file-app/wrangler.toml @@ -2,7 +2,7 @@ pages_build_output_dir = "./public" name = "pages-with-config-file-app" compatibility_date = "2024-01-01" -#compatibility_flags = [] +compatibility_flags = [] [vars] VAR1 = "celebrate" diff --git a/packages/create-cloudflare/templates/astro/templates/wrangler.toml b/packages/create-cloudflare/templates/astro/templates/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/astro/templates/wrangler.toml +++ b/packages/create-cloudflare/templates/astro/templates/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/common/js/wrangler.toml b/packages/create-cloudflare/templates/common/js/wrangler.toml index 787313595600..c156a7ad6967 100644 --- a/packages/create-cloudflare/templates/common/js/wrangler.toml +++ b/packages/create-cloudflare/templates/common/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.js" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/common/ts/wrangler.toml b/packages/create-cloudflare/templates/common/ts/wrangler.toml index 81307894ffde..9f450aed829c 100644 --- a/packages/create-cloudflare/templates/common/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/common/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/hello-world-durable-object/js/wrangler.toml b/packages/create-cloudflare/templates/hello-world-durable-object/js/wrangler.toml index fe569a63ef68..a7c9c3c9bd81 100644 --- a/packages/create-cloudflare/templates/hello-world-durable-object/js/wrangler.toml +++ b/packages/create-cloudflare/templates/hello-world-durable-object/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/hello-world-durable-object/ts/wrangler.toml b/packages/create-cloudflare/templates/hello-world-durable-object/ts/wrangler.toml index 0a113403d2db..d17b6bc37aa0 100644 --- a/packages/create-cloudflare/templates/hello-world-durable-object/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/hello-world-durable-object/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/hello-world-python/py/wrangler.toml b/packages/create-cloudflare/templates/hello-world-python/py/wrangler.toml index 43b906d33e83..a2cdc2d87d28 100644 --- a/packages/create-cloudflare/templates/hello-world-python/py/wrangler.toml +++ b/packages/create-cloudflare/templates/hello-world-python/py/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/entry.py" compatibility_flags = ["python_workers"] diff --git a/packages/create-cloudflare/templates/hello-world/js/wrangler.toml b/packages/create-cloudflare/templates/hello-world/js/wrangler.toml index 0111cabd6995..ce0364f6ee79 100644 --- a/packages/create-cloudflare/templates/hello-world/js/wrangler.toml +++ b/packages/create-cloudflare/templates/hello-world/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.js" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/hello-world/ts/wrangler.toml b/packages/create-cloudflare/templates/hello-world/ts/wrangler.toml index b441fa206c17..35be367b6c82 100644 --- a/packages/create-cloudflare/templates/hello-world/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/hello-world/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/next/wrangler.toml b/packages/create-cloudflare/templates/next/wrangler.toml index 4efe6285dfb5..b72f0ba1fbda 100644 --- a/packages/create-cloudflare/templates/next/wrangler.toml +++ b/packages/create-cloudflare/templates/next/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" compatibility_flags = ["nodejs_compat"] diff --git a/packages/create-cloudflare/templates/nuxt/templates/wrangler.toml b/packages/create-cloudflare/templates/nuxt/templates/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/nuxt/templates/wrangler.toml +++ b/packages/create-cloudflare/templates/nuxt/templates/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/openapi/ts/wrangler.toml b/packages/create-cloudflare/templates/openapi/ts/wrangler.toml index 96a248cbe314..f8b38e77114f 100644 --- a/packages/create-cloudflare/templates/openapi/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/openapi/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/pre-existing/js/wrangler.toml b/packages/create-cloudflare/templates/pre-existing/js/wrangler.toml index c2d8aa75d9d6..f5f71d2afefc 100644 --- a/packages/create-cloudflare/templates/pre-existing/js/wrangler.toml +++ b/packages/create-cloudflare/templates/pre-existing/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.js" compatibility_date = "" \ No newline at end of file diff --git a/packages/create-cloudflare/templates/queues/js/wrangler.toml b/packages/create-cloudflare/templates/queues/js/wrangler.toml index 1c6b367e89d0..70c6255d9d10 100644 --- a/packages/create-cloudflare/templates/queues/js/wrangler.toml +++ b/packages/create-cloudflare/templates/queues/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.js" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/queues/ts/wrangler.toml b/packages/create-cloudflare/templates/queues/ts/wrangler.toml index 4eff4f6b2812..5921cfc06cc1 100644 --- a/packages/create-cloudflare/templates/queues/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/queues/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/qwik/templates/wrangler.toml b/packages/create-cloudflare/templates/qwik/templates/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/qwik/templates/wrangler.toml +++ b/packages/create-cloudflare/templates/qwik/templates/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/remix/templates/wrangler.toml b/packages/create-cloudflare/templates/remix/templates/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/remix/templates/wrangler.toml +++ b/packages/create-cloudflare/templates/remix/templates/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/scheduled/js/wrangler.toml b/packages/create-cloudflare/templates/scheduled/js/wrangler.toml index 82e86cb46d7a..e802c6d7dc41 100644 --- a/packages/create-cloudflare/templates/scheduled/js/wrangler.toml +++ b/packages/create-cloudflare/templates/scheduled/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.js" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml b/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml index 9a3e85b28832..a298bd5d4dbc 100644 --- a/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/scheduled/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" main = "src/index.ts" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/svelte/js/wrangler.toml b/packages/create-cloudflare/templates/svelte/js/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/svelte/js/wrangler.toml +++ b/packages/create-cloudflare/templates/svelte/js/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/create-cloudflare/templates/svelte/ts/wrangler.toml b/packages/create-cloudflare/templates/svelte/ts/wrangler.toml index 45c4d116bc8d..9bc1f54a825b 100644 --- a/packages/create-cloudflare/templates/svelte/ts/wrangler.toml +++ b/packages/create-cloudflare/templates/svelte/ts/wrangler.toml @@ -1,3 +1,4 @@ +#:schema node_modules/wrangler/config-schema.json name = "" compatibility_date = "" diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index e91eb20f0360..f86a1b33b7d5 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -47,18 +47,20 @@ "wrangler-dist", "templates", "kv-asset-handler.js", - "Cloudflare_CA.pem" + "Cloudflare_CA.pem", + "config-schema.json" ], "scripts": { "assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts", - "build": "pnpm run clean && pnpm run bundle && pnpm run emit-types", + "build": "pnpm run clean && pnpm run bundle && pnpm run emit-types && pnpm run generate-json-schema", "bundle": "node -r esbuild-register scripts/bundle.ts", "check:lint": "eslint .", "check:type": "tsc", "clean": "rimraf wrangler-dist miniflare-dist emitted-types", "dev": "pnpm run clean && concurrently -c black,blue --kill-others-on-fail false \"pnpm run bundle --watch\" \"pnpm run check:type --watch --preserveWatchOutput\"", "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts", - "prepublishOnly": "SOURCEMAPS=false npm run build", + "generate-json-schema": "pnpm exec ts-json-schema-generator --no-type-check --path src/config/config.ts --type RawConfig --out config-schema.json", + "prepublishOnly": "SOURCEMAPS=false pnpm run build", "start": "pnpm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js", "test": "pnpm run assert-git-version && jest", "test:ci": "pnpm run test", @@ -108,6 +110,7 @@ "resolve.exports": "^2.0.2", "selfsigned": "^2.0.1", "source-map": "0.6.1", + "ts-json-schema-generator": "^1.5.0", "xxhash-wasm": "^1.0.1" }, "devDependencies": { diff --git a/packages/wrangler/src/config/config.ts b/packages/wrangler/src/config/config.ts index aac28c3bf378..a2ab552e2e36 100644 --- a/packages/wrangler/src/config/config.ts +++ b/packages/wrangler/src/config/config.ts @@ -28,7 +28,7 @@ export type RawConfig = Partial> & PagesConfigFields & RawEnvironment & DeprecatedConfigFields & - EnvironmentMap; + EnvironmentMap & { $schema?: string }; // Pages-specific configuration fields export interface PagesConfigFields { @@ -73,7 +73,7 @@ export interface ConfigFields { * * More details at https://developers.cloudflare.com/workers/learning/using-durable-objects#configuring-durable-object-classes-with-migrations * - * @default `[]` + * @default [] */ migrations: { /** A unique identifier for this migration. */ @@ -121,7 +121,7 @@ export interface ConfigFields { * items will be uploaded. Example: include = ["upload_dir"] * * @optional - * @default `[]` + * @default [] */ include?: string[]; @@ -131,7 +131,7 @@ export interface ConfigFields { * uploads. Example: exclude = ["ignore_dir"] * * @optional - * @default `[]` + * @default [] */ exclude?: string[]; } @@ -213,28 +213,28 @@ export interface DevConfig { /** * IP address for the local dev server to listen on, * - * @default `localhost` + * @default localhost */ ip: string; /** * Port for the local dev server to listen on * - * @default `8787` + * @default 8787 */ port: number | undefined; /** * Port for the local dev server's inspector to listen on * - * @default `9229` + * @default 9229 */ inspector_port: number | undefined; /** * Protocol that local wrangler dev server listens to requests on. * - * @default `http` + * @default http */ local_protocol: "http" | "https"; @@ -244,7 +244,7 @@ export interface DevConfig { * Setting this to `http` is not currently implemented for remote mode. * See https://github.com/cloudflare/workers-sdk/issues/583 * - * @default `https` in remote mode; same as local_protocol in local mode. + * @default https */ upstream_protocol: "https" | "http"; @@ -293,7 +293,7 @@ interface EnvironmentMap { * * For more information, see the documentation at https://developers.cloudflare.com/workers/cli-wrangler/configuration#environments * - * @default `{}` + * @default {} */ env?: { [envName: string]: RawEnvironment; diff --git a/packages/wrangler/src/config/validation.ts b/packages/wrangler/src/config/validation.ts index f4fe0da67fca..bf51194a1223 100644 --- a/packages/wrangler/src/config/validation.ts +++ b/packages/wrangler/src/config/validation.ts @@ -126,6 +126,15 @@ export function normalizeAndValidateConfig( "string" ); + // Support explicit JSON schema setting + validateOptionalProperty( + diagnostics, + "", + "$schema", + rawConfig.$schema, + "string" + ); + // TODO: set the default to false to turn on service environments as the default const isLegacyEnv = typeof args["legacy-env"] === "boolean" @@ -272,7 +281,7 @@ export function normalizeAndValidateConfig( diagnostics, "top-level", Object.keys(rawConfig), - [...Object.keys(config), "env"] + [...Object.keys(config), "env", "$schema"] ); experimental(diagnostics, rawConfig, "assets"); diff --git a/packages/wrangler/src/deprecated/index.ts b/packages/wrangler/src/deprecated/index.ts index fae5eab1b581..7f325230046c 100644 --- a/packages/wrangler/src/deprecated/index.ts +++ b/packages/wrangler/src/deprecated/index.ts @@ -35,6 +35,9 @@ export async function buildHandler(buildArgs: BuildArgs) { "--dry-run", "--outdir=dist", ...(buildArgs.env ? ["--env", buildArgs.env] : []), + ...(buildArgs.config ? ["--config", buildArgs.config] : []), + ...(buildArgs.experimentalJsonConfig ? ["--experimental-json-config"] : []), + ...(buildArgs.experimentalVersions ? ["--experimental-versions"] : []), ]).parse(); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06193357fdf0..fa885f8320c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -931,7 +931,7 @@ importers: version: 8.49.0 eslint-config-turbo: specifier: latest - version: 1.11.3(eslint@8.49.0) + version: 1.13.2(eslint@8.49.0) eslint-plugin-import: specifier: 2.26.x version: 2.26.0(@typescript-eslint/parser@6.7.2)(eslint@8.49.0) @@ -1554,6 +1554,9 @@ importers: source-map: specifier: 0.6.1 version: 0.6.1 + ts-json-schema-generator: + specifier: ^1.5.0 + version: 1.5.0 xxhash-wasm: specifier: ^1.0.1 version: 1.0.1 @@ -5772,7 +5775,7 @@ packages: chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 6.0.0(supports-color@9.2.2) @@ -7341,10 +7344,6 @@ packages: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} @@ -8216,7 +8215,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@types/json-schema': 7.0.11 + '@types/json-schema': 7.0.13 '@types/semver': 7.5.1 '@typescript-eslint/scope-manager': 5.59.9 '@typescript-eslint/types': 5.59.9 @@ -8236,7 +8235,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.11 + '@types/json-schema': 7.0.13 '@types/semver': 7.5.1 '@typescript-eslint/scope-manager': 5.59.9 '@typescript-eslint/types': 5.59.9 @@ -8794,7 +8793,7 @@ packages: resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} dependencies: - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 lazystream: 1.0.1 lodash.defaults: 4.2.0 @@ -9613,7 +9612,7 @@ packages: '@npmcli/move-file': 1.1.2 chownr: 2.0.0 fs-minipass: 2.1.0 - glob: 7.2.0 + glob: 7.2.3 infer-owner: 1.0.4 lru-cache: 6.0.0 minipass: 3.3.6 @@ -10188,6 +10187,11 @@ packages: engines: {node: '>=14'} dev: true + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} requiresBuild: true @@ -10959,7 +10963,7 @@ packages: hasBin: true dependencies: commander: 4.1.1 - glob: 7.2.0 + glob: 7.2.3 dev: true /dotenv-cli@7.3.0: @@ -11499,13 +11503,13 @@ packages: eslint: 8.49.0 dev: true - /eslint-config-turbo@1.11.3(eslint@8.49.0): - resolution: {integrity: sha512-v7CHpAHodBKlj+r+R3B2DJlZbCjpZLnK7gO/vCRk/Lc+tlD/f04wM6rmHlerevOlchtmwARilRLBnmzNLffTyQ==} + /eslint-config-turbo@1.13.2(eslint@8.49.0): + resolution: {integrity: sha512-TzvsMwNJx/P4JYw79iFqbyQApnyT050gW7dBxnNeNVl3pVMnT2rwaFo9Q3Hc49Tp5NANxEwYN9RStF50P/IwGA==} peerDependencies: eslint: '>6.6.0' dependencies: eslint: 8.49.0 - eslint-plugin-turbo: 1.11.3(eslint@8.49.0) + eslint-plugin-turbo: 1.13.2(eslint@8.49.0) dev: false /eslint-import-resolver-node@0.3.7: @@ -11932,8 +11936,8 @@ packages: - typescript dev: true - /eslint-plugin-turbo@1.11.3(eslint@8.49.0): - resolution: {integrity: sha512-R5ftTTWQzEYaKzF5g6m/MInCU8pIN+2TLL+S50AYBr1enwUovdZmnZ1HDwFMaxIjJ8x5ah+jvAzql5IJE9VWaA==} + /eslint-plugin-turbo@1.13.2(eslint@8.49.0): + resolution: {integrity: sha512-QNaihF0hTRjfOBd1SLHrftm8V3pOU35CNS/C0/Z6qY1xxdL1PSv4IctEIldSMX7/A1jOPYwMPO7wYwPXgjgp/g==} peerDependencies: eslint: '>6.6.0' dependencies: @@ -13116,7 +13120,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob@8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} @@ -13127,7 +13130,6 @@ packages: inherits: 2.0.4 minimatch: 5.1.1 once: 1.4.0 - dev: true /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -13160,7 +13162,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - glob: 7.2.0 + glob: 7.2.3 ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -13173,7 +13175,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - glob: 7.2.0 + glob: 7.2.3 ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -14495,7 +14497,7 @@ packages: chalk: 4.1.2 ci-info: 3.3.0 deepmerge: 4.2.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-circus: 29.7.0(supports-color@9.2.2) jest-environment-node: 29.7.0 @@ -14535,7 +14537,7 @@ packages: chalk: 4.1.2 ci-info: 3.3.0 deepmerge: 4.2.2 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-circus: 29.7.0(supports-color@9.2.2) jest-environment-node: 29.7.0 @@ -14784,7 +14786,7 @@ packages: chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 - glob: 7.2.0 + glob: 7.2.3 graceful-fs: 4.2.9 jest-haste-map: 29.7.0 jest-message-util: 29.7.0 @@ -16066,7 +16068,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} @@ -18354,7 +18355,7 @@ packages: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: - glob: 7.2.0 + glob: 7.2.3 dev: true /rimraf@3.0.2: @@ -18529,6 +18530,11 @@ packages: ret: 0.1.15 dev: true + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -19425,7 +19431,7 @@ packages: engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.0 + glob: 7.2.3 minimatch: 3.1.2 dev: true @@ -19605,6 +19611,20 @@ packages: engines: {node: '>=6.10'} dev: true + /ts-json-schema-generator@1.5.0: + resolution: {integrity: sha512-RkiaJ6YxGc5EWVPfyHxszTmpGxX8HC2XBvcFlAl1zcvpOG4tjjh+eXioStXJQYTvr9MoK8zCOWzAUlko3K0DiA==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + '@types/json-schema': 7.0.13 + commander: 11.1.0 + glob: 8.0.3 + json5: 2.2.3 + normalize-path: 3.0.0 + safe-stable-stringify: 2.4.3 + typescript: 5.3.3 + dev: false + /ts-node@10.9.2(@types/node@20.1.7)(typescript@4.9.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -19962,7 +19982,6 @@ packages: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true - dev: true /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==}