{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/deno-config-deno-json/latest.json",
  "title": "Deno configuration file Schema",
  "description": "A JSON representation of a Deno configuration file.",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/denoland/deno/main/cli/schemas/config-file.v1.json",
    "sourceSha256": "261659506918d409bab308c6b06e011992cf69a63e65b98090798c2182575cfc",
    "fileMatch": [
      "deno.json",
      "deno.jsonc"
    ],
    "parsers": [
      "json",
      "jsonc"
    ]
  },
  "type": "object",
  "properties": {
    "allowScripts": {
      "oneOf": [
        {
          "description": "Whether to allow npm lifecycle scripts.",
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/allowScriptsList"
        },
        {
          "type": "object",
          "description": "Allow or deny config for lifecycle scripts.",
          "properties": {
            "allow": {
              "oneOf": [
                {
                  "description": "Whether to allow running npm lifecycle scripts.",
                  "type": "boolean"
                },
                {
                  "$ref": "#/$defs/allowScriptsList"
                }
              ]
            },
            "deny": {
              "description": "List of npm package constraints to deny running lifecycle scripts for.",
              "$ref": "#/$defs/allowScriptsList"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "compile": {
      "type": "object",
      "description": "Configuration for `deno compile`.",
      "properties": {
        "include": {
          "type": "array",
          "description": "List of additional modules or files/directories to include in the compiled executable.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files/directories to exclude from the compiled executable.",
          "items": {
            "type": "string"
          }
        },
        "permissions": {
          "$ref": "#/$defs/permissionNameOrSet"
        }
      },
      "additionalProperties": false
    },
    "compilerOptions": {
      "type": "object",
      "description": "Instructs the TypeScript compiler how to compile .ts files.",
      "properties": {
        "allowJs": {
          "description": "Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowJs"
        },
        "allowUnreachableCode": {
          "description": "Disable error reporting for unreachable code.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Disable error reporting for unreachable code.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowUnreachableCode"
        },
        "allowUnusedLabels": {
          "description": "Disable error reporting for unused labels.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Disable error reporting for unused labels.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowUnusedLabels"
        },
        "checkJs": {
          "description": "Enable error reporting in type-checked JavaScript files.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Enable error reporting in type-checked JavaScript files.\n\nSee more: https://www.typescriptlang.org/tsconfig#checkJs"
        },
        "emitDecoratorMetadata": {
          "description": "Emit design-type metadata for decorated declarations in source files.",
          "type": "boolean",
          "default": false,
          "deprecated": true,
          "markdownDescription": "Emit design-type metadata for decorated declarations in source files.\n\nSee more: https://www.typescriptlang.org/tsconfig/#emitDecoratorMetadata"
        },
        "erasableSyntaxOnly": {
          "description": "Do not allow runtime constructs that are not part of ECMAScript.",
          "type": [
            "boolean",
            "null"
          ],
          "default": false,
          "markdownDescription": "Do not allow runtime constructs that are not part of ECMAScript.\n\nSee more: https://www.typescriptlang.org/tsconfig#erasableSyntaxOnly"
        },
        "exactOptionalPropertyTypes": {
          "description": "Interpret optional property types as written, rather than adding 'undefined'.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Interpret optional property types as written, rather than adding 'undefined'.\n\nSee more: https://www.typescriptlang.org/tsconfig#exactOptionalPropertyTypes"
        },
        "experimentalDecorators": {
          "description": "Enable experimental support for legacy experimental decorators.",
          "type": "boolean",
          "default": false,
          "deprecated": true,
          "markdownDescription": "Enable experimental support for legacy experimental decorators.\n\nSee more: https://www.typescriptlang.org/tsconfig#experimentalDecorators"
        },
        "isolatedDeclarations": {
          "description": "Require sufficient annotation on exports so other tools can trivially generate declaration files.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Require sufficient annotation on exports so other tools can trivially generate declaration files.\n\nSee more: https://www.typescriptlang.org/tsconfig/#isolatedDeclarations"
        },
        "jsx": {
          "description": "Specify what JSX code is generated.",
          "default": "react",
          "enum": [
            "preserve",
            "react",
            "react-jsx",
            "react-jsxdev",
            "react-native",
            "precompile"
          ]
        },
        "jsxFactory": {
          "description": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'",
          "type": "string",
          "default": "React.createElement",
          "markdownDescription": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'\n\nSee more: https://www.typescriptlang.org/tsconfig#jsxFactory"
        },
        "jsxFragmentFactory": {
          "description": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.",
          "type": "string",
          "default": "React.Fragment",
          "markdownDescription": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.\n\nSee more: https://www.typescriptlang.org/tsconfig#jsxFragmentFactory"
        },
        "jsxImportSource": {
          "description": "Specify module specifier used to import the JSX factory functions when using jsx: 'react-jsx*'.",
          "type": "string",
          "default": "react",
          "markdownDescription": "Specify module specifier used to import the JSX factory functions when using jsx: `react-jsx*`.\n\nSee more: https://www.typescriptlang.org/tsconfig/#jsxImportSource"
        },
        "jsxImportSourceTypes": {
          "description": "Specify module specifier used to import the types for the JSX factory functions when using jsx: 'react-jsx*'. This is the logical equivalent of prefixing an import to the jsxImportSource with `// @deno-types=\"...\"`.",
          "type": "string",
          "default": "@types/react",
          "markdownDescription": "Specify module specifier used to import the types for the JSX factory functions when using jsx: `react-jsx*`. This is the logical equivalent of prefixing an import to the jsxImportSource with `// @deno-types=\"...\"`."
        },
        "jsxPrecompileSkipElements": {
          "description": "Specify list of elements that should be exempt from being precompiled when the jsx 'precompile' transform is used.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "markdownDescription": "Specify list of elements that should be exempt from being precompiled when the jsx `precompile` transform is used."
        },
        "lib": {
          "description": "Specify a set of bundled library declaration files that describe the target runtime environment.",
          "type": "array",
          "uniqueItems": true,
          "default": [
            "deno.window",
            "deno.unstable",
            "node"
          ],
          "items": {
            "type": "string",
            "examples": [
              "deno.ns",
              "deno.window",
              "deno.worker",
              "deno.unstable",
              "dom",
              "dom.iterable",
              "dom.asynciterable",
              "webworker",
              "webworker.importscripts",
              "webworker.iterable",
              "webworker.asynciterable",
              "scripthost",
              "decorators",
              "decorators.legacy",
              "es5",
              "es2015",
              "es2016",
              "es2017",
              "es2018",
              "es2019",
              "es2020",
              "es2021",
              "es2022",
              "es2023",
              "es2024",
              "esnext",
              "node"
            ]
          },
          "markdownDescription": "Specify a set of bundled library declaration files that describe the target runtime environment.\n\nSee more: https://www.typescriptlang.org/tsconfig#lib"
        },
        "module": {
          "description": "Specify what module code is generated.",
          "type": [
            "string",
            "null"
          ],
          "anyOf": [
            {
              "enum": [
                "esnext",
                "nodenext",
                "preserve"
              ]
            },
            {
              "pattern": "^([Ee][Ss][Nn][Ee][Xx][Tt]|[Nn][Oo][Dd][Ee][Nn][Ee][Xx][Tt]|[Pp][Rr][Ee][Ss][Ee][Rr][Vv][Ee])$"
            }
          ],
          "markdownDescription": "Specify what module code is generated.\n\nSee more: https://www.typescriptlang.org/tsconfig#module"
        },
        "moduleResolution": {
          "description": "Specify how TypeScript looks up a file from a given module specifier.",
          "type": [
            "string",
            "null"
          ],
          "anyOf": [
            {
              "enum": [
                "nodenext",
                "bundler"
              ],
              "markdownEnumDescriptions": [
                "This is the recommended setting for libraries and Node.js applications",
                "This is the recommended setting in TypeScript 5.0+ for applications that use a bundler"
              ]
            },
            {
              "pattern": "^([Nn]ode[Nn]ext|[Bb]undler)$"
            }
          ],
          "markdownDescription": "Specify how TypeScript looks up a file from a given module specifier.\n\nSee more: https://www.typescriptlang.org/tsconfig#moduleResolution"
        },
        "noErrorTruncation": {
          "description": "Do not truncate error messages.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Do not truncate error messages.\n\nSee more: https://www.typescriptlang.org/tsconfig#noErrorTruncation"
        },
        "noFallthroughCasesInSwitch": {
          "description": "Enable error reporting for fallthrough cases in switch statements.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Enable error reporting for fallthrough cases in switch statements.\n\nSee more: https://www.typescriptlang.org/tsconfig#noFallthroughCasesInSwitch"
        },
        "noImplicitAny": {
          "description": "Enable error reporting for expressions and declarations with an implied `any` type.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable error reporting for expressions and declarations with an implied `any` type.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitAny"
        },
        "noImplicitOverride": {
          "description": "Ensure overriding members in derived classes are marked with an override modifier.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Ensure overriding members in derived classes are marked with an override modifier.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitOverride"
        },
        "noImplicitReturns": {
          "description": "Enable error reporting for codepaths that do not explicitly return in a function.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Enable error reporting for codepaths that do not explicitly return in a function.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitReturns"
        },
        "noImplicitThis": {
          "description": "Enable error reporting when `this` is given the type `any`.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable error reporting when `this` is given the type `any`.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitThis"
        },
        "noPropertyAccessFromIndexSignature": {
          "description": "Enforces using indexed accessors for keys declared using an indexed type.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Enforces using indexed accessors for keys declared using an indexed type.\n\nSee more: https://www.typescriptlang.org/tsconfig#noPropertyAccessFromIndexSignature"
        },
        "noUncheckedIndexedAccess": {
          "description": "Add `undefined` to a type when accessed using an index.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Add `undefined` to a type when accessed using an index.\n\nSee more: https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess"
        },
        "noUnusedLocals": {
          "description": "Enable error reporting when a local variables aren't read.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Enable error reporting when a local variables aren't read.\n\nSee more: https://www.typescriptlang.org/tsconfig#noUnusedLocals"
        },
        "noUnusedParameters": {
          "description": "Raise an error when a function parameter isn't read",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Raise an error when a function parameter isn't read\n\nSee more: https://www.typescriptlang.org/tsconfig#noUnusedParameters"
        },
        "baseUrl": {
          "description": "Specify the base directory to resolve non-relative module names.",
          "type": [
            "string",
            "null"
          ],
          "markdownDescription": "Specify the base directory to resolve non-relative module names.\n\nIn Deno, this is only applied to bare specifier entries in `compilerOptions.paths` and `compilerOptions.rootDirs`.\n\nSee more: https://www.typescriptlang.org/tsconfig#baseUrl"
        },
        "paths": {
          "description": "Specify a set of entries that re-map imports to additional lookup locations.",
          "type": [
            "object",
            "null"
          ],
          "markdownDescription": "Specify a set of entries that re-map imports to additional lookup locations.\n\nSee more: https://www.typescriptlang.org/tsconfig#paths",
          "additionalProperties": {
            "type": [
              "array",
              "null"
            ],
            "uniqueItems": true,
            "items": {
              "type": [
                "string",
                "null"
              ],
              "description": "Path mapping to be computed relative to baseUrl option."
            }
          }
        },
        "rootDirs": {
          "description": "Declare many “virtual” directories acting as a single root.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "markdownDescription": "Declare many “virtual” directories acting as a single root.\n\nSee more: https://www.typescriptlang.org/tsconfig#rootDirs"
        },
        "skipLibCheck": {
          "description": "Skip type checking all .d.ts files.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Skip type checking all .d.ts files.\n\nSee more: https://www.typescriptlang.org/tsconfig#skipLibCheck"
        },
        "strict": {
          "description": "Enable all strict type checking options.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Enable all strict type checking options.\n\nSee more: https://www.typescriptlang.org/tsconfig#strict"
        },
        "strictBindCallApply": {
          "description": "Check that the arguments for `bind`, `call`, and `apply` methods match the original function.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Check that the arguments for `bind`, `call`, and `apply` methods match the original function.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictBindCallApply"
        },
        "strictBuiltinIteratorReturn": {
          "description": "Built-in iterators are instantiated with a `TReturn` type of undefined instead of `any`.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Built-in iterators are instantiated with a `TReturn` type of undefined instead of `any`.\n\nSee more: https://www.typescriptlang.org/tsconfig/#strictBuiltinIteratorReturn"
        },
        "strictFunctionTypes": {
          "description": "When assigning functions, check to ensure parameters and the return values are subtype-compatible.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "When assigning functions, check to ensure parameters and the return values are subtype-compatible.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictFunctionTypes"
        },
        "strictNullChecks": {
          "description": "When type checking, take into account `null` and `undefined`.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "When type checking, take into account `null` and `undefined`.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictNullChecks"
        },
        "strictPropertyInitialization": {
          "description": "Check for class properties that are declared but not set in the constructor.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Check for class properties that are declared but not set in the constructor.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictPropertyInitialization"
        },
        "types": {
          "description": "Specify type package names to be included without being referenced in a source file.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "markdownDescription": "Specify type package names to be included without being referenced in a source file.\n\nSee more: https://www.typescriptlang.org/tsconfig/#types"
        },
        "useUnknownInCatchVariables": {
          "description": "Default catch clause variables as `unknown` instead of `any`.",
          "type": "boolean",
          "default": true,
          "markdownDescription": "Default catch clause variables as `unknown` instead of `any`.\n\nSee more: https://www.typescriptlang.org/tsconfig#useUnknownInCatchVariables"
        },
        "verbatimModuleSyntax": {
          "description": "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.",
          "type": "boolean",
          "default": false,
          "markdownDescription": "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.\n\nSee more: https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax"
        }
      },
      "additionalProperties": false
    },
    "deploy": {
      "type": "object",
      "description": "Configuration for `deno deploy` and `deno sandbox`.",
      "properties": {
        "org": {
          "type": "string",
          "description": "The organization slug or ID to interact with."
        },
        "app": {
          "type": "string",
          "description": "The application slug or ID to interact with."
        },
        "framework": {
          "type": "string",
          "description": "The framework this application is built with, such as `nextjs` or `fresh`. Part of the build configuration. When specified, takes precedence over all configuration specified in the console."
        },
        "install": {
          "type": "string",
          "description": "The command to install dependencies. Part of the build configuration. When specified, takes precedence over all configuration specified in the console."
        },
        "build": {
          "type": "string",
          "description": "The command to build the application. Part of the build configuration. When specified, takes precedence over all configuration specified in the console."
        },
        "predeploy": {
          "type": "string",
          "description": "The command to run before deploying, usually used to run database migrations. When specified, takes precedence over all configuration specified in the console."
        },
        "runtime": {
          "type": "object",
          "description": "Runtime configuration for the deployed application. When specified, takes precedence over all configuration specified in the console.",
          "properties": {
            "mode": {
              "type": "string",
              "enum": [
                "dynamic",
                "static"
              ],
              "default": "dynamic",
              "description": "The runtime mode. Use 'dynamic' for server-rendered applications or 'static' for pre-built static files."
            },
            "entrypoint": {
              "type": "string",
              "description": "The entrypoint file for dynamic mode (e.g., 'main.ts')."
            },
            "args": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Arguments to pass to the entrypoint for dynamic mode."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory. For dynamic mode, this is the current working directory. For static mode, this is the directory containing static files to serve."
            },
            "spa": {
              "type": "boolean",
              "description": "Enable single-page application mode for static deployments. When enabled, all routes will fall back to index.html.",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "include": {
          "type": "array",
          "description": "List of files, directories or globs that will be included in deployments.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files, directories or globs that will not be included in deployments.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "importMap": {
      "description": "The location of an import map to be used when resolving modules. If an import map is specified as an `--importmap` flag or using \"imports\" and \"scopes\" properties, they will override this value.",
      "type": "string"
    },
    "imports": {
      "description": "A map of specifiers to their remapped specifiers.",
      "type": "object",
      "additionalProperties": {
        "description": "The key is the specifier or partial specifier to match, with a value that represents the target specifier.",
        "type": "string"
      }
    },
    "scopes": {
      "default": {},
      "description": "Define a scope which remaps a specifier in only a specified scope",
      "type": "object",
      "properties": {},
      "additionalProperties": {
        "description": "A definition of a scoped remapping.",
        "type": "object",
        "additionalProperties": {
          "description": "The key is the specifier or partial specifier to match within the referring scope, with a value that represents the target specifier.",
          "type": "string"
        }
      }
    },
    "exclude": {
      "type": "array",
      "description": "List of files, directories or globs that will be ignored by all other configurations. Requires Deno 1.34 or later.",
      "items": {
        "type": "string"
      }
    },
    "lint": {
      "description": "Configuration for linter",
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "description": "List of files, directories or globs that will be linted.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files, directories or globs that will not be linted.",
          "items": {
            "type": "string"
          }
        },
        "plugins": {
          "type": "array",
          "description": "UNSTABLE: List of plugins to load. These can be paths, npm or jsr specifiers",
          "items": {
            "type": "string"
          }
        },
        "rules": {
          "type": "object",
          "properties": {
            "tags": {
              "type": "array",
              "description": "List of tag names that will be run. Empty list disables all tags and will only use rules from `include`.",
              "items": {
                "$ref": "https://catalog.lintel.tools/schemas/schemastore/deno-config-deno-json/_shared/latest--lint-tags.v1.json"
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "exclude": {
              "type": "array",
              "description": "List of rule names that will be excluded from configured tag sets. If the same rule is in `include` it will be run.",
              "items": {
                "$ref": "https://catalog.lintel.tools/schemas/schemastore/deno-config-deno-json/_shared/latest--lint-rules.v1.json"
              },
              "minItems": 0,
              "uniqueItems": true
            },
            "include": {
              "type": "array",
              "description": "List of rule names that will be run. Even if the same rule is in `exclude` it will be run.",
              "items": {
                "$ref": "https://catalog.lintel.tools/schemas/schemastore/deno-config-deno-json/_shared/latest--lint-rules.v1.json"
              },
              "minItems": 0,
              "uniqueItems": true
            }
          }
        },
        "report": {
          "default": "pretty",
          "enum": [
            "pretty",
            "json",
            "compact"
          ],
          "description": "The default report format to use when linting"
        }
      }
    },
    "fmt": {
      "description": "Configuration for formatter",
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "description": "List of files, directories or globs that will be formatted.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files, directories or globs that will not be formatted.",
          "items": {
            "type": "string"
          }
        },
        "useTabs": {
          "description": "Whether to use tabs (true) or spaces (false) for indentation.",
          "type": "boolean",
          "default": false
        },
        "lineWidth": {
          "description": "The width of a line the printer will try to stay under. Note that the printer may exceed this width in certain cases.",
          "type": "number",
          "default": 80
        },
        "indentWidth": {
          "description": "The number of characters for an indent.",
          "type": "number",
          "default": 2
        },
        "singleQuote": {
          "type": "boolean",
          "description": "Whether to use single quote (true) or double quote (false) for quotation.",
          "default": false
        },
        "proseWrap": {
          "description": "Define how prose should be wrapped in Markdown files.",
          "default": "always",
          "enum": [
            "always",
            "never",
            "preserve"
          ]
        },
        "semiColons": {
          "description": "Whether to prefer using semicolons.",
          "type": "boolean",
          "default": true
        },
        "quoteProps": {
          "description": "Change when properties in objects are quoted in JavaScript and TypeScript.",
          "default": "preserve",
          "enum": [
            "asNeeded",
            "consistent",
            "preserve"
          ]
        },
        "newLineKind": {
          "description": "The newline character to use.",
          "default": "lf",
          "enum": [
            "auto",
            "crlf",
            "lf",
            "system"
          ]
        },
        "useBraces": {
          "description": "Whether to use braces for if statements, for statements, and while statements in JavaScript and TypeScript.",
          "default": "whenNotSingleLine",
          "enum": [
            "maintain",
            "whenNotSingleLine",
            "always",
            "preferNone"
          ]
        },
        "bracePosition": {
          "description": "The position of opening braces for blocks in JavaScript and TypeScript.",
          "default": "sameLine",
          "enum": [
            "maintain",
            "sameLine",
            "nextLine",
            "sameLineUnlessHanging"
          ]
        },
        "singleBodyPosition": {
          "description": "The position of the body in single body blocks in JavaScript and TypeScript.",
          "default": "sameLineUnlessHanging",
          "enum": [
            "maintain",
            "sameLine",
            "nextLine",
            "sameLineUnlessHanging"
          ]
        },
        "nextControlFlowPosition": {
          "description": "Where to place the next control flow within a control flow statement in JavaScript and TypeScript.",
          "default": "sameLine",
          "enum": [
            "maintain",
            "sameLine",
            "nextLine"
          ]
        },
        "trailingCommas": {
          "description": "Whether to add trailing commas in JavaScript and TypeScript.",
          "default": "onlyMultiLine",
          "enum": [
            "never",
            "always",
            "onlyMultiLine"
          ]
        },
        "operatorPosition": {
          "description": "Where to place the operator for expressions that span multiple lines in JavaScript and TypeScript.",
          "default": "sameLine",
          "enum": [
            "maintain",
            "sameLine",
            "nextLine"
          ]
        },
        "jsx.bracketPosition": {
          "description": "If the end angle bracket of a jsx open element or self closing element should be on the same or next line when the attributes span multiple lines.",
          "default": "nextLine",
          "enum": [
            "maintain",
            "sameLine",
            "nextLine"
          ]
        },
        "jsx.forceNewLineSurroundingContent": {
          "description": "Forces newlines surrounding the content of JSX elements.",
          "default": false,
          "type": "boolean"
        },
        "jsx.multiLineParens": {
          "description": "Surrounds the top-most JSX element or fragment in parentheses when it spans multiple lines.",
          "default": "prefer",
          "enum": [
            "never",
            "prefer",
            "always"
          ]
        },
        "typeLiteral.separatorKind": {
          "description": "The kind of separator to use in type literals.",
          "default": "semiColon",
          "enum": [
            "comma",
            "semiColon"
          ]
        },
        "spaceAround": {
          "description": "Whether to place spaces around enclosed expressions in JavaScript and TypeScript.",
          "default": false,
          "type": "boolean"
        },
        "spaceSurroundingProperties": {
          "description": "Whether to add a space surrounding the properties of single line object-like nodes in JavaScript and TypeScript.",
          "default": true,
          "type": "boolean"
        },
        "vueComponentCase": {
          "description": "Case style for Vue component tags.",
          "default": "ignore",
          "enum": [
            "ignore",
            "pascal-case",
            "kebab-case"
          ]
        },
        "angularNextControlFlowSameLine": {
          "description": "Whether Angular next control-flow clauses stay on the same line.",
          "default": true,
          "type": "boolean"
        },
        "options": {
          "type": "object",
          "properties": {
            "useTabs": {
              "description": "Whether to use tabs (true) or spaces (false) for indentation.",
              "type": "boolean",
              "default": false
            },
            "lineWidth": {
              "description": "The width of a line the printer will try to stay under. Note that the printer may exceed this width in certain cases.",
              "type": "number",
              "default": 80
            },
            "indentWidth": {
              "description": "The number of characters for an indent.",
              "type": "number",
              "default": 2
            },
            "singleQuote": {
              "type": "boolean",
              "description": "Whether to use single quote (true) or double quote (false) for quotation.",
              "default": false
            },
            "proseWrap": {
              "description": "Define how prose should be wrapped in Markdown files.",
              "default": "always",
              "enum": [
                "always",
                "never",
                "preserve"
              ]
            },
            "semiColons": {
              "description": "Whether to prefer using semicolons.",
              "type": "boolean",
              "default": true
            }
          }
        }
      }
    },
    "minimumDependencyAge": {
      "oneOf": [
        {
          "$ref": "#/$defs/minimumDependencyAgeDate"
        },
        {
          "type": "object",
          "description": "Minimum dependency age config.",
          "properties": {
            "age": {
              "$ref": "#/$defs/minimumDependencyAgeDate"
            },
            "exclude": {
              "type": "array",
              "description": "List of jsr or npm packages to exclude from requiring a minimum dependnecy age.",
              "items": {
                "type": "string",
                "pattern": "^(?:npm:|jsr:).+"
              }
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "nodeModulesDir": {
      "oneOf": [
        {
          "description": "Sets the node_modules management mode for npm packages. Alternatively, use the `--node-modules-dir=<MODE>` flag. Requires Deno 2.0-rc.1 or later.",
          "default": "none",
          "enum": [
            "auto",
            "manual",
            "none"
          ]
        },
        {
          "description": "Enables or disables the use of a local node_modules folder for npm packages. Alternatively, use the `--node-modules-dir` flag or override the config via `--node-modules-dir=false`. Requires Deno 1.34 or later.",
          "type": "boolean",
          "deprecated": false
        }
      ]
    },
    "vendor": {
      "description": "Enables or disables the use of a local vendor folder as a local cache for remote modules and node_modules folder for npm packages. Alternatively, use the `--vendor` flag or override the config via `--vendor=false`. Requires Deno 1.36.1 or later.",
      "type": "boolean"
    },
    "tasks": {
      "description": "Configuration for deno task",
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^[A-Za-z][A-Za-z0-9_\\-:]*$": {
          "oneOf": [
            {
              "type": "string",
              "description": "Command to execute for this task name."
            },
            {
              "type": "object",
              "description": "A definition of a task to execute",
              "properties": {
                "description": {
                  "type": "string",
                  "description": "Description of a task that will be shown when running `deno task` without a task name"
                },
                "command": {
                  "type": "string",
                  "description": "The task to execute"
                },
                "dependencies": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Tasks that should be executed before this task"
                }
              }
            }
          ]
        }
      }
    },
    "test": {
      "description": "Configuration for deno test",
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "description": "List of files, directories or globs that will be searched for tests.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files, directories or globs that will not be searched for tests.",
          "items": {
            "type": "string"
          }
        },
        "permissions": {
          "$ref": "#/$defs/permissionNameOrSet"
        }
      }
    },
    "publish": {
      "oneOf": [
        {
          "description": "Configuration for deno publish",
          "type": "object",
          "properties": {
            "include": {
              "type": "array",
              "description": "List of files, directories or globs that will be included in the published package.",
              "items": {
                "type": "string"
              }
            },
            "exclude": {
              "type": "array",
              "description": "List of files, directories or globs that will be excluded from the published package.",
              "items": {
                "type": "string"
              }
            }
          }
        },
        {
          "description": "Disable publishing this package with deno publish",
          "type": "boolean",
          "const": "false"
        }
      ]
    },
    "bench": {
      "description": "Configuration for deno bench",
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "description": "List of files, directories or globs that will be searched for benchmarks.",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "List of files, directories or globs that will not be searched for benchmarks.",
          "items": {
            "type": "string"
          }
        },
        "permissions": {
          "$ref": "#/$defs/permissionNameOrSet"
        }
      }
    },
    "license": {
      "description": "The SPDX license identifier if this is a JSR package. Specify this or add a license file to the package.",
      "type": [
        "string"
      ]
    },
    "lock": {
      "description": "Whether to use a lock file or the path to use for the lock file. Can be overridden by CLI arguments.",
      "type": [
        "string",
        "boolean",
        "object"
      ],
      "default": true,
      "properties": {
        "path": {
          "type": "string",
          "description": "The path to use for the lock file.",
          "default": "deno.lock"
        },
        "frozen": {
          "type": "boolean",
          "description": "Whether to exit with an error if lock file is out of date.",
          "default": false
        }
      }
    },
    "unstable": {
      "type": "array",
      "description": "List of unstable features to enable.",
      "items": {
        "type": "string",
        "examples": [
          "bare-node-builtins",
          "bundle",
          "byonm",
          "cron",
          "detect-cjs",
          "ffi",
          "fs",
          "fmt-component",
          "fmt-sql",
          "http",
          "kv",
          "net",
          "node-globals",
          "raw-imports",
          "sloppy-imports",
          "unsafe-proto",
          "webgpu",
          "worker-options"
        ]
      }
    },
    "name": {
      "type": "string",
      "description": "The name of this JSR or workspace package."
    },
    "version": {
      "type": "string",
      "description": "The version of this JSR package."
    },
    "exports": {
      "oneOf": [
        {
          "type": "string",
          "description": "The path to the main module of this JSR package.",
          "examples": [
            "./mod.ts",
            "./index.js"
          ],
          "pattern": "^\\./.*$"
        },
        {
          "type": "object",
          "description": "A map of package exports to files in this JSR package.",
          "propertyNames": {
            "description": "Package export name",
            "examples": [
              ".",
              "./foo",
              "./bar"
            ],
            "pattern": "^\\.(/.*)?$"
          },
          "examples": [
            {
              ".": "./mod.ts"
            }
          ],
          "patternProperties": {
            "^\\.(/.*)?$": {
              "type": "string",
              "pattern": "^\\./.*$"
            }
          }
        }
      ]
    },
    "permissions": {
      "type": "object",
      "description": "Named permission sets that can be selected with -P/--permission-set or referenced in \"test\", \"bench\", or \"compile\" permissions. A special name \"default\" is used when -P is passed without a value.",
      "additionalProperties": {
        "$ref": "#/$defs/permissionSet"
      }
    },
    "patch": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "deprecated": true,
      "description": "This unstable property was renamed to \"links\" in Deno 2.3.6."
    },
    "links": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "UNSTABLE: List of relative paths to folders containing JSR packages to use local versions of."
    },
    "workspace": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The members of this workspace."
        },
        {
          "type": "object",
          "properties": {
            "members": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "The members of this workspace."
            }
          }
        }
      ]
    }
  },
  "$defs": {
    "permissionConfigValue": {
      "oneOf": [
        {
          "type": "boolean",
          "description": "Allow or deny the permission."
        },
        {
          "type": "array",
          "description": "Subset of items to allow or deny depending on the context.",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "allowDenyIgnorePermissionConfig": {
      "type": "object",
      "description": "Object form to allow, deny, and/or ignore permissions.",
      "properties": {
        "allow": {
          "$ref": "#/$defs/permissionConfigValue"
        },
        "deny": {
          "$ref": "#/$defs/permissionConfigValue"
        },
        "ignore": {
          "$ref": "#/$defs/permissionConfigValue"
        }
      },
      "additionalProperties": false
    },
    "allowDenyIgnorePermissionConfigValue": {
      "oneOf": [
        {
          "$ref": "#/$defs/permissionConfigValue"
        },
        {
          "$ref": "#/$defs/allowDenyIgnorePermissionConfig"
        }
      ]
    },
    "allowDenyPermissionConfig": {
      "type": "object",
      "description": "Object form to allow and/or deny permissions.",
      "properties": {
        "allow": {
          "$ref": "#/$defs/permissionConfigValue"
        },
        "deny": {
          "$ref": "#/$defs/permissionConfigValue"
        }
      },
      "additionalProperties": false
    },
    "allowDenyPermissionConfigValue": {
      "oneOf": [
        {
          "$ref": "#/$defs/permissionConfigValue"
        },
        {
          "$ref": "#/$defs/allowDenyPermissionConfig"
        }
      ]
    },
    "allowScriptsList": {
      "type": "array",
      "description": "List of npm package constraints to allow or deny for lifecycle scripts.",
      "items": {
        "type": "string",
        "pattern": "^(?:npm:).+"
      }
    },
    "permissionSet": {
      "type": "object",
      "description": "Collection of permissions.",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Allow all permissions for the program to run unrestricted."
        },
        "read": {
          "$ref": "#/$defs/allowDenyIgnorePermissionConfigValue"
        },
        "write": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        },
        "import": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        },
        "env": {
          "$ref": "#/$defs/allowDenyIgnorePermissionConfigValue"
        },
        "net": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        },
        "run": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        },
        "ffi": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        },
        "sys": {
          "$ref": "#/$defs/allowDenyPermissionConfigValue"
        }
      },
      "additionalProperties": false
    },
    "permissionNameOrSet": {
      "description": "A permission set name to use or inline permission set.",
      "anyOf": [
        {
          "type": "string",
          "description": "Permission name."
        },
        {
          "$ref": "#/$defs/permissionSet"
        }
      ]
    },
    "minimumDependencyAgeDate": {
      "oneOf": [
        {
          "description": "(Unstable) The age in minutes, ISO-8601 duration or RFC3339 absolute timestamp (e.g. '120' for two hours, 'P2D' for two days, '2025-09-16' for cutoff date, '2025-09-16T12:00:00+00:00' for cutoff time, '0' to disable).",
          "type": "string"
        },
        {
          "description": "(Unstable) The age in minutes.",
          "type": "number"
        }
      ]
    }
  },
  "required": []
}
