diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1282da6fe6d..4854c730a64 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,7 +25,7 @@ - [Compatible Language Servers and Tools](#compatible-language-servers-and-tools) - [`redhat-developer/yaml-language-server`](#redhat-developeryaml-language-server) - [`tamasfe/taplo`](#tamasfetaplo) - - [`tombi-toml/tombi](#tombi-toml-tombi) + - [`tombi-toml/tombi`](#tombi-toml-tombi) - [`Microsoft/vscode-json-languageservice`](#microsoftvscode-json-languageservice) - [Other](#other) - [Troubleshooting](#troubleshooting) diff --git a/src/negative_test/pep-723/3.toml b/src/negative_test/pep-723/3.toml index d65a3fe511f..01e2059209c 100644 --- a/src/negative_test/pep-723/3.toml +++ b/src/negative_test/pep-723/3.toml @@ -1,3 +1,3 @@ #:schema ../../schemas/json/pep-723.json -[tool.pyright] +[pyright] strict = 42 diff --git a/src/schema-validation.jsonc b/src/schema-validation.jsonc index c5f13bba462..d4281a644eb 100644 --- a/src/schema-validation.jsonc +++ b/src/schema-validation.jsonc @@ -277,7 +277,8 @@ "metaschema-draft-07-unofficial-strict.json", "glazewm.json", "youtrack-app.json", - "cinnamon-spice-settings.json" + "cinnamon-spice-settings.json", + "pnpm-workspace.json" ], "fileMatchConflict": [ // Name conflicts must be avoided. Do not add additional items here diff --git a/src/schemas/json/cargo.json b/src/schemas/json/cargo.json index c4dbd10b5f7..4077af1e710 100644 --- a/src/schemas/json/cargo.json +++ b/src/schemas/json/cargo.json @@ -846,23 +846,64 @@ } ] }, + "SplitDebuginfo": { + "title": "SplitDebuginfo", + "description": "The split-debuginfo setting controls the -C split-debuginfo flag which controls whether debug information, if generated, is either placed in the executable itself or adjacent to it. This can be useful for reducing the size of the executable, but may make it harder to debug the executable.", + "oneOf": [ + { + "type": "string", + "enum": ["off"], + "description": "This is the default for platforms with ELF binaries and windows-gnu (not Windows MSVC and not macOS). This typically means that DWARF debug information can be found in the final artifact in sections of the executable. This option is not supported on Windows MSVC. On macOS this options prevents the final execution of dsymutil to generate debuginfo." + }, + { + "type": "string", + "enum": ["packed"], + "description": "This is the default for Windows MSVC and macOS. The term \"packed\" here means that all the debug information is packed into a separate file from the main executable. On Windows MSVC this is a *.pdb file, on macOS this is a *.dSYM folder, and on other platforms this is a *.dwp file." + }, + { + "type": "string", + "enum": ["unpacked"], + "description": "This means that debug information will be found in separate files for each compilation unit (object file). This is not supported on Windows MSVC. On macOS this means the original object files will contain debug information. On other Unix platforms this means that *.dwo files will contain debug information." + } + ] + }, "Profile": { "title": "Profile", "type": "object", "properties": { - "codegen-units": { - "description": "The `codegen-units` setting controls the [`-C codegen-units` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units) which\ncontrols how many \"code generation units\" a crate will be split into. More\ncode generation units allows more of a crate to be processed in parallel\npossibly reducing compile time, but may produce slower code.\n\nThis option takes an integer greater than 0.\n\nThe default is 256 for [incremental](https://doc.rust-lang.org/cargo/reference/profiles.html#incremental) builds, and 16 for\nnon-incremental builds.", - "type": "integer", - "format": "uint32", - "minimum": 0, + "opt-level": { + "$ref": "#/definitions/OptLevel" + }, + "debug": { + "$ref": "#/definitions/DebugLevel" + }, + "split-debuginfo": { + "$ref": "#/definitions/SplitDebuginfo", "x-taplo": { "links": { - "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units" + "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#split-debuginfo" } } }, - "debug": { - "$ref": "#/definitions/DebugLevel" + "strip": { + "description": "The strip option controls the -C strip flag, which directs rustc to strip either symbols or debuginfo from a binary.", + "oneOf": [ + { + "type": "string", + "enum": ["none", "debuginfo", "symbols"], + "default": "none" + }, + { + "type": "boolean", + "enum": [true], + "description": "Equivalent to \"symbols\"." + }, + { + "type": "boolean", + "enum": [false], + "description": "Equivalent to \"none\"." + } + ] }, "debug-assertions": { "description": "The `debug-assertions` setting controls the [`-C debug-assertions` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#debug-assertions) which\nturns `cfg(debug_assertions)` [conditional compilation](https://doc.rust-lang.org/reference/conditional-compilation.html#debug_assertions) on or off. Debug\nassertions are intended to include runtime validation which is only available\nin debug/development builds. These may be things that are too expensive or\notherwise undesirable in a release build. Debug assertions enables the\n[`debug_assert!` macro](https://doc.rust-lang.org/std/macro.debug_assert.html) in the standard library.", @@ -873,12 +914,21 @@ } } }, - "dir-name": { - "type": "string", + "overflow-checks": { + "description": "The `overflow-checks` setting controls the [`-C overflow-checks` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#overflow-checks) which\ncontrols the behavior of [runtime integer overflow](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow). When overflow-checks are\nenabled, a panic will occur on overflow.", + "type": "boolean", "x-taplo": { - "hidden": true + "links": { + "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#overflow-checks" + } } }, + "lto": { + "$ref": "#/definitions/Lto" + }, + "panic": { + "$ref": "#/definitions/Panic" + }, "incremental": { "description": "The `incremental` setting controls the [`-C incremental` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#incremental) which controls\nwhether or not incremental compilation is enabled. Incremental compilation\ncauses `rustc` to to save additional information to disk which will be reused\nwhen recompiling the crate, improving re-compile times. The additional\ninformation is stored in the `target` directory.\n\nThe valid options are:\n\n* `true`: enabled\n* `false`: disabled\n\nIncremental compilation is only used for workspace members and \"path\"\ndependencies.\n\nThe incremental value can be overridden globally with the `CARGO_INCREMENTAL`\n[environment variable](https://doc.rust-lang.org/cargo/reference/environment-variables.html) or the [`build.incremental`](https://doc.rust-lang.org/cargo/reference/config.html#buildincremental) config variable.", "type": "boolean", @@ -888,24 +938,23 @@ } } }, - "inherits": { - "type": "string", + "codegen-units": { + "description": "The `codegen-units` setting controls the [`-C codegen-units` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units) which\ncontrols how many \"code generation units\" a crate will be split into. More\ncode generation units allows more of a crate to be processed in parallel\npossibly reducing compile time, but may produce slower code.\n\nThis option takes an integer greater than 0.\n\nThe default is 256 for [incremental](https://doc.rust-lang.org/cargo/reference/profiles.html#incremental) builds, and 16 for\nnon-incremental builds.", + "type": "integer", + "format": "uint32", + "minimum": 0, "x-taplo": { - "hidden": true + "links": { + "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units" + } } }, - "lto": { - "$ref": "#/definitions/Lto" - }, - "opt-level": { - "$ref": "#/definitions/OptLevel" - }, - "overflow-checks": { - "description": "The `overflow-checks` setting controls the [`-C overflow-checks` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#overflow-checks) which\ncontrols the behavior of [runtime integer overflow](https://doc.rust-lang.org/reference/expressions/operator-expr.html#overflow). When overflow-checks are\nenabled, a panic will occur on overflow.", + "rpath": { + "description": "The `rpath` setting controls the [`-C rpath` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#rpath) which controls\nwhether or not [`rpath`](https://en.wikipedia.org/wiki/Rpath) is enabled.", "type": "boolean", "x-taplo": { "links": { - "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#overflow-checks" + "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#rpath" } } }, @@ -922,16 +971,16 @@ } } }, - "panic": { - "$ref": "#/definitions/Panic" + "dir-name": { + "type": "string", + "x-taplo": { + "hidden": true + } }, - "rpath": { - "description": "The `rpath` setting controls the [`-C rpath` flag](https://doc.rust-lang.org/rustc/codegen-options/index.html#rpath) which controls\nwhether or not [`rpath`](https://en.wikipedia.org/wiki/Rpath) is enabled.", - "type": "boolean", + "inherits": { + "type": "string", "x-taplo": { - "links": { - "key": "https://doc.rust-lang.org/cargo/reference/profiles.html#rpath" - } + "hidden": true } } }, diff --git a/src/schemas/json/pep-723.json b/src/schemas/json/pep-723.json index c147315c0b2..1f152150f35 100644 --- a/src/schemas/json/pep-723.json +++ b/src/schemas/json/pep-723.json @@ -49,76 +49,10 @@ }, "x-tombi-table-keys-order": "ascending", "properties": { - "black": { - "$ref": "https://json.schemastore.org/partial-black.json" - }, - "cibuildwheel": { - "$ref": "https://json.schemastore.org/partial-cibuildwheel.json" - }, - "mypy": { - "$ref": "https://json.schemastore.org/partial-mypy.json" - }, - "ruff": { - "$ref": "https://json.schemastore.org/ruff.json" - }, - "hatch": { - "$ref": "https://json.schemastore.org/hatch.json" - }, - "maturin": { - "$ref": "https://json.schemastore.org/maturin.json", - "title": "Maturin", - "description": "Build and publish crates with pyo3, cffi and uniffi bindings as well as rust binaries as python packages" - }, - "scikit-build": { - "$ref": "https://json.schemastore.org/partial-scikit-build.json" - }, - "setuptools": { - "$ref": "https://json.schemastore.org/partial-setuptools.json" - }, - "setuptools_scm": { - "$ref": "https://json.schemastore.org/partial-setuptools-scm.json" - }, - "poe": { - "$ref": "https://json.schemastore.org/partial-poe.json" - }, - "poetry": { - "$ref": "https://json.schemastore.org/partial-poetry.json" - }, - "pdm": { - "$ref": "https://json.schemastore.org/partial-pdm.json" - }, - "pyright": { - "$ref": "https://json.schemastore.org/partial-pyright.json" - }, - "repo-review": { - "$ref": "https://json.schemastore.org/partial-repo-review.json" - }, - "taskipy": { - "$ref": "https://json.schemastore.org/partial-taskipy.json", - "title": "Task Runner", - "description": "The complementary task runner for python." - }, - "tombi": { - "$ref": "https://json.schemastore.org/tombi.json", - "title": "TOML Toolkit", - "description": "Tombi (鳶) is a toolkit for TOML; providing a formatter/linter and language server" - }, - "tox": { - "$ref": "https://json.schemastore.org/partial-tox.json" - }, "uv": { "$ref": "https://json.schemastore.org/uv.json" } - }, - "examples": [ - { - "tool": { - "isort": { - "profile": "black" - } - } - } - ] + } } } } diff --git a/src/schemas/json/pnpm-workspace.json b/src/schemas/json/pnpm-workspace.json index 29207cf0738..4e03392dec0 100644 --- a/src/schemas/json/pnpm-workspace.json +++ b/src/schemas/json/pnpm-workspace.json @@ -265,6 +265,434 @@ } }, "additionalProperties": false + }, + "hoist": { + "description": "When true, all dependencies are hoisted to node_modules/.pnpm/node_modules.", + "type": "boolean" + }, + "hoist-workspace-packages": { + "description": "When true, packages from the workspaces are symlinked to either /node_modules/.pnpm/node_modules or to /node_modules depending on other hoisting settings (hoist-pattern and public-hoist-pattern).", + "type": "boolean" + }, + "hoist-pattern": { + "description": "Tells pnpm which packages should be hoisted to node_modules/.pnpm/node_modules", + "type": "array", + "items": { + "type": "string" + } + }, + "public-hoist-pattern": { + "description": "Unlike hoist-pattern, which hoists dependencies to a hidden modules directory inside the virtual store, public-hoist-pattern hoists dependencies matching the pattern to the root modules directory.", + "type": "array", + "items": { + "type": "string" + } + }, + "shamefully-hoist": { + "description": "By default, pnpm creates a semistrict node_modules, meaning dependencies have access to undeclared dependencies but modules outside of node_modules do not.", + "type": "boolean" + }, + "modules-dir": { + "description": "The directory in which dependencies will be installed (instead of node_modules).", + "type": "string" + }, + "node-linker": { + "description": "Defines what linker should be used for installing Node packages.", + "oneOf": [ + { + "type": "string", + "enum": ["isolated", "hoisted", "pnp"] + } + ] + }, + "symlink": { + "description": "When symlink is set to false, pnpm creates a virtual store directory without any symlinks. It is a useful setting together with node-linker=pnp.", + "type": "boolean" + }, + "enable-modules-dir": { + "description": "When false, pnpm will not write any files to the modules directory (node_modules).", + "type": "boolean" + }, + "virtual-store-dir": { + "description": "The directory with links to the store.", + "type": "string" + }, + "virtual-store-dir-max-length": { + "description": "Sets the maximum allowed length of directory names inside the virtual store directory (node_modules/.pnpm).", + "type": "number" + }, + "package-import-method": { + "description": "Controls the way packages are imported from the store (if you want to disable symlinks inside node_modules, then you need to change the node-linker setting, not this one).", + "oneOf": [ + { + "type": "string", + "enum": ["auto", "hardlink", "copy", "clone", "clone-or-copy"] + } + ] + }, + "modules-cache-max-age": { + "description": "The time in minutes after which orphan packages from the modules directory should be removed.", + "type": "number" + }, + "dlx-cache-max-age": { + "description": "The time in minutes after which dlx cache expires.", + "type": "number" + }, + "store-dir": { + "description": "The location where all the packages are saved on the disk.", + "type": "string" + }, + "verify-store-integrity": { + "description": "By default, if a file in the store has been modified, the content of this file is checked before linking it to a project's node_modules. ", + "type": "boolean" + }, + "strict-store-pkg-content-check": { + "description": "Some registries allow the exact same content to be published under different package names and/or versions. ", + "type": "boolean" + }, + "lockfile": { + "description": "When set to false, pnpm won't read or generate a pnpm-lock.yaml file.", + "type": "boolean" + }, + "prefer-frozen-lockfile": { + "description": "When set to true and the available pnpm-lock.yaml satisfies the package.json dependencies directive, a headless installation is performed.", + "type": "boolean" + }, + "lockfile-include-tarball-url": { + "description": "Add the full URL to the package's tarball to every entry in pnpm-lock.yaml.", + "type": "boolean" + }, + "git-branch-lockfile": { + "description": "When set to true, the generated lockfile name after installation will be named based on the current branch name to completely avoid merge conflicts.", + "type": "boolean" + }, + "merge-git-branch-lockfiles-branch-pattern": { + "description": "This configuration matches the current branch name to determine whether to merge all git branch lockfile files. ", + "type": ["array", "null"] + }, + "peers-suffix-max-length": { + "description": "Max length of the peer IDs suffix added to dependency keys in the lockfile. If the suffix is longer, it is replaced with a hash.", + "type": "number" + }, + "registry": { + "description": "The base URL of the npm package registry (trailing slash included).", + "type": "string" + }, + "ca": { + "description": "The Certificate Authority signing certificate that is trusted for SSL connections to the registry.", + "type": "string" + }, + "cafile": { + "description": "A path to a file containing one or multiple Certificate Authority signing certificates.", + "type": "string" + }, + "cert": { + "description": "A client certificate to pass when accessing the registry.", + "type": "string" + }, + "key": { + "description": "A client key to pass when accessing the registry.", + "type": "string" + }, + "git-shallow-hosts": { + "description": "When fetching dependencies that are Git repositories, if the host is listed in this setting, pnpm will use shallow cloning to fetch only the needed commit, not all the history.", + "type": "array", + "items": { + "type": "string" + } + }, + "https-proxy": { + "description": "A proxy to use for outgoing HTTPS requests. If the HTTPS_PROXY, https_proxy, HTTP_PROXY or http_proxy environment variables are set, their values will be used instead.", + "type": "string" + }, + "proxy": { + "description": "A proxy to use for outgoing http requests. If the HTTP_PROXY or http_proxy environment variables are set, proxy settings will be honored by the underlying request library.", + "type": "string" + }, + "local-address": { + "description": "The IP address of the local interface to use when making connections to the npm registry.", + "type": "string" + }, + "maxsockets": { + "description": "The maximum number of connections to use per origin (protocol/host/port combination).", + "type": "number" + }, + "noproxy": { + "description": "A comma-separated string of domain extensions that a proxy should not be used for.", + "type": "string" + }, + "strict-ssl": { + "description": "Whether or not to do SSL key validation when making requests to the registry via HTTPS.", + "type": "boolean" + }, + "network-concurrency": { + "description": "Controls the maximum number of HTTP(S) requests to process simultaneously.", + "type": "number" + }, + "fetch-retries": { + "description": "How many times to retry if pnpm fails to fetch from the registry.", + "type": "number" + }, + "fetch-retry-factor": { + "description": "The exponential factor for retry backoff.", + "type": "number" + }, + "fetch-retry-mintimeout": { + "description": "The minimum (base) timeout for retrying requests.", + "type": "number" + }, + "fetch-retry-maxtimeout": { + "description": "The maximum fallback timeout to ensure the retry factor does not make requests too long.", + "type": "number" + }, + "fetch-timeout": { + "description": "The maximum amount of time to wait for HTTP requests to complete.", + "type": "number" + }, + "auto-install-peers": { + "description": "When true, any missing non-optional peer dependencies are automatically installed.", + "type": "boolean" + }, + "dedupe-peer-dependents": { + "description": "When this setting is set to true, packages with peer dependencies will be deduplicated after peers resolution.", + "type": "boolean" + }, + "strict-peer-dependencies": { + "description": "If this is enabled, commands will fail if there is a missing or invalid peer dependency in the tree.", + "type": "boolean" + }, + "resolve-peers-from-workspace-root": { + "description": "When enabled, dependencies of the root workspace project are used to resolve peer dependencies of any projects in the workspace.", + "type": "boolean" + }, + "color": { + "description": "Controls colors in the output.", + "oneOf": [ + { + "type": "string", + "enum": ["always", "auto", "never"] + } + ] + }, + "loglevel": { + "description": "Any logs at or higher than the given level will be shown. ", + "oneOf": [ + { + "type": "string", + "enum": ["debug", "info", "warn", "error"] + } + ] + }, + "use-beta-cli": { + "description": "Experimental option that enables beta features of the CLI.", + "type": "boolean" + }, + "recursive-install": { + "description": "If this is enabled, the primary behaviour of pnpm install becomes that of pnpm install -r, meaning the install is performed on all workspace or subdirectory packages.", + "type": "boolean" + }, + "engine-strict": { + "description": "If this is enabled, pnpm will not install any package that claims to not be compatible with the current Node version.", + "type": "boolean" + }, + "npm-path": { + "description": "The location of the npm binary that pnpm uses for some actions, like publishing.", + "type": "string" + }, + "package-manager-strict": { + "description": "If this setting is disabled, pnpm will not fail if a different package manager is specified in the packageManager field of package.json. When enabled, only the package name is checked (since pnpm v9.2.0), so you can still run any version of pnpm regardless of the version specified in the packageManager field.", + "type": "boolean" + }, + "package-manager-strict-version": { + "description": "When enabled, pnpm will fail if its version doesn't exactly match the version specified in the packageManager field of package.json.", + "type": "boolean" + }, + "manage-package-manager-versions": { + "description": "When enabled, pnpm will automatically download and run the version of pnpm specified in the packageManager field of package.json.", + "type": "boolean" + }, + "ignore-scripts": { + "description": "Do not execute any scripts defined in the project package.json and its dependencies.", + "type": "boolean" + }, + "ignore-dep-scripts": { + "description": "Do not execute any scripts of the installed packages. Scripts of the projects are executed.", + "type": "boolean" + }, + "child-concurrency": { + "description": "The maximum number of child processes to allocate simultaneously to build node_modules.", + "type": "number" + }, + "side-effects-cache": { + "description": "Use and cache the results of (pre/post)install hooks.", + "type": "boolean" + }, + "side-effects-cache-readonly": { + "description": "Only use the side effects cache if present, do not create it for new packages.", + "type": "boolean" + }, + "unsafe-perm": { + "description": "Set to true to enable UID/GID switching when running package scripts. If set explicitly to false, then installing as a non-root user will fail.", + "type": "boolean" + }, + "node-options": { + "description": "Options to pass through to Node.js via the NODE_OPTIONS environment variable.", + "type": "string" + }, + "verify-deps-before-run": { + "description": "This setting allows the checking of the state of dependencies before running scripts.", + "oneOf": [ + { + "type": ["string", "boolean"], + "enum": ["install", "warn", "error", "prompt", false] + } + ] + }, + "strict-dep-builds": { + "description": "When strict-dep-builds is enabled, the installation will exit with a non-zero exit code if any dependencies have unreviewed build scripts (aka postinstall scripts).", + "type": "boolean" + }, + "use-node-version": { + "description": "Specifies which exact Node.js version should be used for the project's runtime.", + "type": "string" + }, + "node-version": { + "description": "The Node.js version to use when checking a package's engines setting.", + "type": "string" + }, + "link-workspace-packages": { + "description": "If this is enabled, locally available packages are linked to node_modules instead of being downloaded from the registry.", + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": ["deep"] + } + ] + }, + "inject-workspace-packages": { + "description": "Enables hard-linking of all local workspace dependencies instead of symlinking them.", + "type": "boolean" + }, + "sync-injected-deps-after-scripts": { + "description": "Injected workspace dependencies are collections of hardlinks, which don't add or remove the files when their sources change.", + "type": "boolean" + }, + "prefer-workspace-packages": { + "description": "If this is enabled, local packages from the workspace are preferred over packages from the registry, even if there is a newer version of the package in the registry.", + "type": "boolean" + }, + "shared-workspace-lockfile": { + "description": "If this is enabled, pnpm creates a single pnpm-lock.yaml file in the root of the workspace.", + "type": "boolean" + }, + "save-workspace-protocol": { + "description": "This setting controls how dependencies that are linked from the workspace are added to package.json.", + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": ["rolling"] + } + ] + }, + "include-workspace-root": { + "description": "When executing commands recursively in a workspace, execute them on the root workspace project as well.", + "type": "boolean" + }, + "ignore-workspace-cycles": { + "description": "When set to true, no workspace cycle warnings will be printed.", + "type": "boolean" + }, + "disallow-workspace-cycles": { + "description": "When set to true, installation will fail if the workspace has cycles.", + "type": "boolean" + }, + "force-legacy-deploy": { + "description": "By default, pnpm deploy will try creating a dedicated lockfile from a shared lockfile for deployment. If this setting is set to true, the legacy deploy behavior will be used.", + "type": "boolean" + }, + "save-prefix": { + "description": "Configure how versions of packages installed to a package.json file get prefixed.", + "oneOf": [ + { + "type": "string", + "enum": ["^", "~", ""] + } + ] + }, + "tag": { + "description": "If you pnpm add a package and you don't provide a specific version, then it will install the package at the version registered under the tag from this setting.", + "type": "string" + }, + "global-dir": { + "description": "Specify a custom directory to store global packages.", + "type": "string" + }, + "global-bin-dir": { + "description": "Allows to set the target directory for the bin files of globally installed packages.", + "type": "string" + }, + "state-dir": { + "description": "The location where all the packages are saved on the disk.", + "type": "string" + }, + "cache-dir": { + "description": "The location of the cache (package metadata and dlx).", + "type": "string" + }, + "use-stderr": { + "description": "When true, all the output is written to stderr.", + "type": "boolean" + }, + "update-notifier": { + "description": "When true, pnpm will check for updates to the installed packages and notify the user.", + "type": "boolean" + }, + "prefer-symlinked-executables": { + "description": "Create symlinks to executables in node_modules/.bin instead of command shims. This setting is ignored on Windows, where only command shims work.", + "type": "boolean" + }, + "ignore-compatibility-db": { + "description": "During installation the dependencies of some packages are automatically patched. If you want to disable this, set this config to false.", + "type": "boolean" + }, + "resolution-mode": { + "description": "Determines how pnpm resolves dependencies, See https://pnpm.io/npmrc#resolution-mode", + "oneOf": [ + { + "type": "string", + "enum": ["highest", "time-based", "lowest-direct"] + } + ] + }, + "registry-supports-time-field": { + "description": "Set this to true if the registry that you are using returns the \"time\" field in the abbreviated metadata.", + "type": "boolean" + }, + "extend-node-path": { + "description": "When false, the NODE_PATH environment variable is not set in the command shims.", + "type": "boolean" + }, + "deploy-all-files": { + "description": "When deploying a package or installing a local package, all files of the package are copied.", + "type": "boolean" + }, + "dedupe-direct-deps": { + "description": "When set to true, dependencies that are already symlinked to the root node_modules directory of the workspace will not be symlinked to subproject node_modules directories.", + "type": "boolean" + }, + "dedupe-injected-deps": { + "description": "When this setting is enabled, dependencies that are injected will be symlinked from the workspace whenever possible.", + "type": "boolean" + }, + "optimistic-repeat-install": { + "description": "When enabled, a fast check will be performed before proceeding to installation. This way a repeat install or an install on a project with everything up-to-date becomes a lot faster.", + "type": "boolean" } }, "additionalProperties": false diff --git a/src/schemas/json/pyproject.json b/src/schemas/json/pyproject.json index 2dc3d76b18c..ae9208df132 100644 --- a/src/schemas/json/pyproject.json +++ b/src/schemas/json/pyproject.json @@ -855,7 +855,8 @@ "tool": { "type": "object", "additionalProperties": { - "type": "object" + "type": "object", + "additionalProperties": true }, "title": "Tool-specific configuration", "description": "Every tool that is used by the project can have users specify configuration data as long as they use a sub-table within `[tool]`. Generally a project can use the subtable `tool.$NAME` if, and only if, they own the entry for `$NAME` in the Cheeseshop/PyPI.",