From b846c7c1ff212dac8fa5f4668a5c8bea74ff9b74 Mon Sep 17 00:00:00 2001 From: Yusuke Iinuma Date: Mon, 10 Jun 2024 00:07:11 +0900 Subject: [PATCH 01/62] Add ninjs 1.4 (#3849) * npm run grunt new_schema * Add ninjs-1.4 * Copy from https://iptc.org/std/ninjs/ninjs-schema_1.4.json * Copy from src/test/ninjs-1.3 * Update for 1.4 * Ignore validation errors because strict error fails error message: `Error: strict mode: required property "linkedrights" is not defined` * Ignore validation errors because unknown keyword error fails * Remove unused file * Add a test for properties available since ninjs-1.4 --- src/api/json/catalog.json | 1 + src/schema-validation.json | 4 + src/schemas/json/ninjs-1.4.json | 611 ++++++++++++++++++++ src/test/ninjs-1.4/001_ninjs_example.json | 32 + src/test/ninjs-1.4/002_schema.json | 8 + src/test/ninjs-1.4/003_schema_only.json | 6 + src/test/ninjs-1.4/004_headlines.json | 13 + src/test/ninjs-1.4/005_altids.json | 26 + src/test/ninjs-1.4/006_genre.json | 22 + src/test/ninjs-1.4/007_trust_indicator.json | 12 + src/test/ninjs-1.4/008_regex_bug.json | 25 + src/test/ninjs-1.4/009_rights.json | 7 + 12 files changed, 767 insertions(+) create mode 100644 src/schemas/json/ninjs-1.4.json create mode 100644 src/test/ninjs-1.4/001_ninjs_example.json create mode 100644 src/test/ninjs-1.4/002_schema.json create mode 100644 src/test/ninjs-1.4/003_schema_only.json create mode 100644 src/test/ninjs-1.4/004_headlines.json create mode 100644 src/test/ninjs-1.4/005_altids.json create mode 100644 src/test/ninjs-1.4/006_genre.json create mode 100644 src/test/ninjs-1.4/007_trust_indicator.json create mode 100644 src/test/ninjs-1.4/008_regex_bug.json create mode 100644 src/test/ninjs-1.4/009_rights.json diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 44b736e0c66..ac6c46acb19 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -3159,6 +3159,7 @@ "url": "https://json.schemastore.org/ninjs-2.0.json", "versions": { "2.0": "https://json.schemastore.org/ninjs-2.0.json", + "1.4": "https://json.schemastore.org/ninjs-1.4.json", "1.3": "https://json.schemastore.org/ninjs-1.3.json", "1.2": "https://json.schemastore.org/ninjs-1.2.json", "1.1": "https://json.schemastore.org/ninjs-1.1.json", diff --git a/src/schema-validation.json b/src/schema-validation.json index 2d7ac5a5a1c..ec7a8e2862f 100644 --- a/src/schema-validation.json +++ b/src/schema-validation.json @@ -132,6 +132,7 @@ "nest-cli.json", "netlify.json", "nightwatch.json", + "ninjs-1.4.json", "ninjs-2.0.json", "now.json", "npmpackagejsonlintrc.json", @@ -741,6 +742,9 @@ "minecraft-texture-mcmeta.json": { "externalSchema": ["partial-fusion-texture-metadata.json"] }, + "ninjs-1.4.json": { + "unknownKeywords": ["description_old"] + }, "ninjs-2.0.json": { "externalSchema": ["geojson.json"], "unknownKeywords": ["name"] diff --git a/src/schemas/json/ninjs-1.4.json b/src/schemas/json/ninjs-1.4.json new file mode 100644 index 00000000000..c82235711c6 --- /dev/null +++ b/src/schemas/json/ninjs-1.4.json @@ -0,0 +1,611 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json#", + "type": "object", + "title": "IPTC ninjs - News in JSON - version 1.4 (approved, 18 May 2022)", + "description": "A news item as JSON object -- copyright 2022 IPTC - International Press Telecommunications Council - www.iptc.org - This document is published under the Creative Commons Attribution 4.0 license, see http://creativecommons.org/licenses/by/4.0/", + "additionalProperties": false, + "required": ["uri"], + "patternProperties": { + "^description_[a-zA-Z0-9_]+": { + "title": "Description", + "description_old": "A free-form textual description of the content of the item. (The string appended to description_ in the property name should reflect the format of the text). nar:description", + "description": "A free-form textual description of the content of the item. (The string appended to description_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:description", + "type": "string" + }, + "^body_[a-zA-Z0-9_]+": { + "title": "Body", + "description": "The textual content of the news object. (The string appended to body_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _). nar:inlineData or nar:inlineXML", + "type": "string" + }, + "^headline_[a-zA-Z0-9_]+": { + "title": "Extra headlines", + "description": "Additional headlines or strings of that type can be handled here. This is not replacing the main headline-property in ninjs. (The string appended to headline_ in the property name should reflect the format and/or the purpose of the text, separating the parts with _) nar:headline with roles issue #13. (Added in 1.3)", + "type": "string" + } + }, + "properties": { + "$standard": { + "title": "Standard", + "type": "object", + "description": "An object with information about standard, version and schema this instance is valid against. nar:standard, nar:standardversion and xml:schema issue #43. (Added in version 1.3)", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "title": "Name of standard.", + "description": "For example ninjs. nar:standard" + }, + "version": { + "type": "string", + "title": "Version of standard.", + "description": "For example 1.3. nar:standardversion" + }, + "schema": { + "type": "string", + "format": "uri", + "title": "Schema", + "description": "The uri of the json schema to use for validation." + } + } + }, + "uri": { + "title": "Uniform Resource Identifier", + "description": "The identifier for this news object. nar:newsItem@guid", + "type": "string", + "format": "uri" + }, + "type": { + "title": "Type", + "description": "The generic news type of this news object. (Value 'component' added in version 1.2 as issue #21.). nar:itemClass", + "type": "string", + "enum": [ + "text", + "audio", + "video", + "picture", + "graphic", + "composite", + "component" + ] + }, + "mimetype": { + "title": "MIME type", + "description": "A MIME type which applies to this news object. nar:contentType", + "type": "string" + }, + "representationtype": { + "title": "Representation type", + "description": "Indicates how complete this representation of a news item is. No mapping to nar. Specific for ninjs.", + "type": "string", + "enum": ["complete", "incomplete"] + }, + "profile": { + "title": "Profile", + "description": "An identifier for the structure of the news object. This can be any string but we suggest something identifying the structure of the content such as 'text-only' or 'text-photo'. Profiles are typically provider-specific. nar:profile", + "type": "string" + }, + "version": { + "title": "Version", + "description": "The version of the news object which is identified by the uri property. nar:newsItem@version", + "type": "string" + }, + "firstcreated": { + "title": "First created", + "description": "Indicates when the first version of the item was created. (Added in version 1.2 from issue #5). nar:firstCreated", + "type": "string", + "format": "date-time" + }, + "versioncreated": { + "title": "Version created", + "description": "The date and time when this version of the news object was created. nar:versionCreated", + "type": "string", + "format": "date-time" + }, + "contentcreated": { + "title": "Content created", + "description": "The date and time when the content of this ninjs object was originally created. For example an old photo that is now handled as a ninjs object. nar:contentCreated (Added in 1.4)", + "type": "string", + "format": "date-time" + }, + "embargoed": { + "title": "Embargoed", + "description": "The date and time before which all versions of the news object are embargoed. If absent, this object is not embargoed. nar:embargoed", + "type": "string", + "format": "date-time" + }, + "pubstatus": { + "title": "Publication status", + "description": "The publishing status of the news object, its value is *usable* by default. nar:pubStatus", + "type": "string", + "enum": ["usable", "withheld", "canceled"] + }, + "urgency": { + "title": "Urgency", + "description": "The editorial urgency of the content from 1 to 9. 1 represents the highest urgency, 9 the lowest. nar:urgency", + "type": "number" + }, + "copyrightholder": { + "title": "Copyright holder", + "description": "The person or organisation claiming the intellectual property for the content. nar:copyrightHolder", + "type": "string" + }, + "copyrightnotice": { + "title": "Copyright notice", + "description": "Any necessary copyright notice for claiming the intellectual property for the content. nar:copyrightNotice", + "type": "string" + }, + "usageterms": { + "title": "Usage terms", + "description": "A natural-language statement about the usage terms pertaining to the content. nar:usageTerms", + "type": "string" + }, + "ednote": { + "title": "Editorial note", + "description": "A note that is intended to be read by internal staff at the receiving organisation, but not published to the end-user. (Added in version 1.2 from issue #6.) . ednote: nar:edNote", + "type": "string" + }, + "language": { + "title": "Language", + "description": "The human language used by the content. The value should follow IETF BCP47. nar:language", + "type": "string" + }, + "person": { + "title": "Person", + "description": "An individual human being. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of a person", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the person", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the person", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the person in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "organisation": { + "title": "Organisation", + "description": "An administrative and functional structure which may act as as a business, as a political party or not-for-profit party. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the organisation", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the organisation", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the organisation", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the organisation in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + }, + "symbols": { + "title": "Symbols", + "description": "Symbols used for a financial instrument linked to the organisation at a specific market place", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "ticker": { + "title": "Ticker", + "description": "Ticker symbol used for the financial instrument", + "type": "string" + }, + "exchange": { + "title": "Exchange", + "description": "Identifier for the marketplace which uses the ticker symbols of the ticker property", + "type": "string" + } + } + } + } + } + } + }, + "place": { + "title": "Place", + "description": "A named location. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "patternProperties": { + "^geometry_[a-zA-Z0-9_]+": { + "description": "An object holding geo data of this place. Could be of any relevant geo data JSON object definition.", + "type": "object" + } + }, + "properties": { + "name": { + "title": "Name", + "description": "The name of the place", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the place", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the place", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the place in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "subject": { + "title": "Subject", + "description": "A concept with a relationship to the content. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the subject", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the subject", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the subject", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the subject in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "event": { + "title": "Event", + "description": "Something which happens in a planned or unplanned manner. nar:?", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the event", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the event", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the event", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the event in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "object": { + "title": "Object", + "description": "Something material, excluding persons. nar:subject", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the object", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the object", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the object", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the object in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "infosource": { + "title": "Info source", + "description": "A party (person or organisation) which originated, modified, enhanced, distributed, aggregated or supplied the content or provided some information used to create or enhance the content. (Added in version 1.2 according to issue #15.) . infosource: nar:infoSource", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the infosource", + "type": "string" + }, + "rel": { + "title": "Relationship", + "description": "The relationship of the content of the news object to the infosource", + "type": "string" + }, + "scheme": { + "title": "Schema", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the infosource", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the infosource in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "title": { + "title": "Title", + "description": "A short natural-language name for the item. (Added in version 1.2 according to issue #9). nar:itemMeta/title", + "type": "string" + }, + "byline": { + "title": "Byline", + "description": "The name(s) of the creator(s) of the content. nar:by", + "type": "string" + }, + "headline": { + "title": "Headline", + "description": "A brief and snappy introduction to the content, designed to catch the reader's attention. nar:headline", + "type": "string" + }, + "slugline": { + "title": "Slugline", + "description": "A human-readable identifier for the item. (Added in version 1.2 from issue #4.). nar:slugline", + "type": "string" + }, + "located": { + "title": "Located", + "description": "The name of the location from which the content originates. nar:located", + "type": "string" + }, + "charcount": { + "title": "Character count", + "description": "The total character count in the article excluding figure captions. (Added in version 1.2 according to issue #27.). nar:charcount", + "type": "number" + }, + "wordcount": { + "title": "Word count", + "description": "The total number of words in the article excluding figure captions. (Added in version 1.2 according to issue #27.). nar:wordcount", + "type": "number" + }, + "renditions": { + "title": "Renditions", + "description": "Wrapper for different renditions of the news object. nar:remoteContent", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9_]+": { + "description": "A specific rendition of the content of the news object. (Description changed in version 1.2 according to issue #17.)", + "type": "object", + "additionalProperties": false, + "properties": { + "href": { + "title": "href", + "description": "The URL for accessing the rendition as a resource. nar:remoteContent@ref", + "type": "string", + "format": "uri" + }, + "mimetype": { + "title": "mimetype", + "description": "A MIME type which applies to the rendition. nar:remoteContent@contenttype", + "type": "string" + }, + "title": { + "title": "Title", + "description": "A title for the link to the rendition resource", + "type": "string" + }, + "height": { + "title": "Height", + "description": "For still and moving images: the height of the display area measured in pixels. nar:remoteContent@height", + "type": "number" + }, + "width": { + "title": "Width", + "description": "For still and moving images: the width of the display area measured in pixels. nar:remoteContent@width", + "type": "number" + }, + "sizeinbytes": { + "title": "Size in bytes", + "description": "The size of the rendition resource in bytes", + "type": "number" + }, + "duration": { + "title": "Duration", + "description": "The total time duration of the content in seconds. (Added in version 1.2. Issue #18). nar:remoteContent@duration", + "type": "number" + }, + "format": { + "title": "Format", + "description": "A refinement of a generic content type (i.e. IANA MIME type) by a literal string value. (Added in version 1.2. Issue #18). nar:remoteContent@contenttypevariant and nar:remoteContent@format", + "type": "string" + } + } + } + } + }, + "associations": { + "description": "Content of news objects which are associated with this news object. nar:link", + "type": "object", + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9_]+": { + "$ref": "#" + } + } + }, + "altids": { + "title": "Alternative id", + "description": "Alternative identifiers of the item. It is up to the individual provider to name and set type on the alternative identifiers they like to use. nar:altId issue #3. (Added in version 1.3)", + "type": "object", + "additionalProperties": true + }, + "trustindicator": { + "title": "Trust indicator", + "description": "An array of objects to allow links to documents about trust indicators. (nar:link) issue #44. (Added in version 1.3)", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the trust indicator", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the trust indicator in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + }, + "title": { + "title": "Title", + "description": "The title of the resource being referenced.", + "type": "string" + }, + "href": { + "title": "href", + "description": "The URL for accessing the trust indicator resource.", + "type": "string", + "format": "uri" + } + } + } + }, + "genre": { + "title": "Genre", + "description": "A nature, intellectual or journalistic form of the content. nar:genre. (Added in version 1.3)", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "title": "Name", + "description": "The name of the genre", + "type": "string" + }, + "scheme": { + "title": "Scheme", + "description": "The identifier of a scheme (= controlled vocabulary) which includes a code for the genre. Normally http://cv.iptc.org/newscodes/genre/", + "type": "string", + "format": "uri" + }, + "code": { + "title": "Code", + "description": "The code for the genre in a scheme (= controlled vocabulary) which is identified by the scheme property", + "type": "string" + } + } + } + }, + "expires": { + "title": "Expires", + "description": "The date and time after which the Item is no longer considered editorially relevant by its provider. nar:expires (Added in 1.4)", + "type": "string", + "format": "date-time" + }, + "rightsinfo": { + "title": "Rights information", + "type": "object", + "description": "Expression of rights to be applied to content. nar:rightsInfo (Added in 1.4)", + "properties": { + "langid": { + "type": "string", + "title": "Language id", + "description": "Identifier for the Rights Expression language used. nar:@langid", + "format": "uri" + }, + "linkedrights": { + "title": "Linked rights", + "description": "A link from the current Item to Web resource with rights related information. nar:link", + "type": "string", + "format": "uri" + }, + "encodedrights": { + "title": "Encoded Rights", + "additionalProperties": false, + "type": "string", + "description": "Contains a rights expression as defined by a Rights Expression Language. nar:rightsExpressionXML or nar:rightsExpressionData" + } + }, + "oneOf": [ + { + "required": ["linkedrights"] + }, + { + "required": ["encodedrights"] + } + ] + } + } +} diff --git a/src/test/ninjs-1.4/001_ninjs_example.json b/src/test/ninjs-1.4/001_ninjs_example.json new file mode 100644 index 00000000000..e2ed7932763 --- /dev/null +++ b/src/test/ninjs-1.4/001_ninjs_example.json @@ -0,0 +1,32 @@ +{ + "$standard": { + "name": "ninjs", + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json", + "version": "1.4" + }, + "altids": { + "etag": "(ap):686897696a7c876b7e", + "friendlykey": "(ap)", + "iid": "(reuters)", + "itemid": "(ap):f40b0304-0454-4ba2-a84d-686378279ba4", + "otr": "(reuters)", + "rpid": "(reuters)", + "sid": "(reuters)", + "tpcid": "(reuters)", + "tpguid": "(reuters)", + "transref": "(ap)", + "videoid": "(ap)" + }, + "description_caption_xhtml": "Extensible description test", + "headline": "Test of three new properties", + "headline_test_text": "Extensible headline test", + "trustindicator": [ + { + "code": "editorialPolicy", + "href": "https://www.bbc.com/editorialguidelines/guidelines/editorial-standards", + "scheme": "http://cv.iptc.org/newscodes/trustindicator/", + "title": "The BBC's Editorial Standards" + } + ], + "uri": "http://ninjs.example.com/newsitems/ninjs1-3-tests" +} diff --git a/src/test/ninjs-1.4/002_schema.json b/src/test/ninjs-1.4/002_schema.json new file mode 100644 index 00000000000..51e75040c35 --- /dev/null +++ b/src/test/ninjs-1.4/002_schema.json @@ -0,0 +1,8 @@ +{ + "$standard": { + "name": "ninjs", + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json", + "version": "1.4" + }, + "uri": "urn:002-schema" +} diff --git a/src/test/ninjs-1.4/003_schema_only.json b/src/test/ninjs-1.4/003_schema_only.json new file mode 100644 index 00000000000..914b575636c --- /dev/null +++ b/src/test/ninjs-1.4/003_schema_only.json @@ -0,0 +1,6 @@ +{ + "$standard": { + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json" + }, + "uri": "urn:003-schema-only" +} diff --git a/src/test/ninjs-1.4/004_headlines.json b/src/test/ninjs-1.4/004_headlines.json new file mode 100644 index 00000000000..7a9fce0f475 --- /dev/null +++ b/src/test/ninjs-1.4/004_headlines.json @@ -0,0 +1,13 @@ +{ + "$standard": { + "name": "ninjs", + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json", + "version": "1.4" + }, + "headline": "Test of three new properties", + "headline_1_2_3_4_5_": "Numbers are also fine", + "headline______": "This is also valid", + "headline_anystring": "We do not specify the string after headline_", + "headline_test_text": "Extensible headline test", + "uri": "urn:004-headlines-test" +} diff --git a/src/test/ninjs-1.4/005_altids.json b/src/test/ninjs-1.4/005_altids.json new file mode 100644 index 00000000000..b759d8f63fb --- /dev/null +++ b/src/test/ninjs-1.4/005_altids.json @@ -0,0 +1,26 @@ +{ + "$standard": { + "name": "ninjs", + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json", + "version": "1.4" + }, + "altids": { + "additionalProperties": true, + "anyid": { + "we": "can even have objects" + }, + "etag": "(ap):686897696a7c876b7e", + "friendlykey": "(ap)", + "iid": "(reuters)", + "itemid": "(ap):f40b0304-0454-4ba2-a84d-686378279ba4", + "orArrays": ["because", "altids", "has"], + "otr": "(reuters)", + "rpid": "(reuters)", + "sid": "(reuters)", + "tpcid": "(reuters)", + "tpguid": "(reuters)", + "transref": "(ap)", + "videoid": "(ap)" + }, + "uri": "urn:005_altids" +} diff --git a/src/test/ninjs-1.4/006_genre.json b/src/test/ninjs-1.4/006_genre.json new file mode 100644 index 00000000000..9f4c322969c --- /dev/null +++ b/src/test/ninjs-1.4/006_genre.json @@ -0,0 +1,22 @@ +{ + "genre": [ + { + "code": "Current", + "name": "Current", + "scheme": "http://cv.iptc.org/newscodes/genre/" + }, + { + "code": "From_the_Scene", + "name": "From the Scene", + "scheme": "http://cv.iptc.org/newscodes/genre/" + }, + { + "name": "Fact Check" + }, + { + "code": "notrecommended:but-punctuation-is-allowed" + } + ], + "headline": "test headline", + "uri": "urn:006_genre" +} diff --git a/src/test/ninjs-1.4/007_trust_indicator.json b/src/test/ninjs-1.4/007_trust_indicator.json new file mode 100644 index 00000000000..55a5b2bcd21 --- /dev/null +++ b/src/test/ninjs-1.4/007_trust_indicator.json @@ -0,0 +1,12 @@ +{ + "headline": "test headline", + "trustindicator": [ + { + "code": "editorialPolicy", + "href": "https://www.bbc.com/editorialguidelines/guidelines/editorial-standards", + "scheme": "http://cv.iptc.org/newscodes/trustindicator/", + "title": "The BBC's Editorial Standards" + } + ], + "uri": "urn:007-trust-indicator" +} diff --git a/src/test/ninjs-1.4/008_regex_bug.json b/src/test/ninjs-1.4/008_regex_bug.json new file mode 100644 index 00000000000..320fcdb81ba --- /dev/null +++ b/src/test/ninjs-1.4/008_regex_bug.json @@ -0,0 +1,25 @@ +{ + "$standard": { + "name": "ninjs", + "schema": "http://www.iptc.org/std/ninjs/ninjs-schema_1.4.json", + "version": "1.4" + }, + "associations": { + "_#$^-éééash-陣": { + "uri": "urn:embedded-association" + } + }, + "body_test-bad-characters-#$^-éééash-陣": "This is actually valid in ninjs 1.0, 1.1, 1.2, 1.3 and 1.4, due to a bug in the patternProperties regex. But we can't change it without potentially breaking some implementations so the fix will have to wait for 2.0", + "description_test-bad-characters-#$^-陣": "This is actually valid in ninjs 1.0, 1.1, 1.2, 1.3 and 1.4, due to a bug in the patternProperties regex. But we can't change it without potentially breaking some implementations so the fix will have to wait for 2.0", + "headline_test-bad-characters-#$^-陣": "This is actually valid in ninjs 1.0, 1.1, 1.2, 1.3 and 1.4, due to a bug in the patternProperties regex. But we can't change it without potentially breaking some implementations so the fix will have to wait for 2.0", + "place": [ + { + "geometry_test-bad-characters-#$^-éééash-陣": {}, + "name": "The below geometry field is actually valid in ninjs 1.0, 1.1, 1.2, 1.3 and 1.4, due to a bug in the patternProperties regex. But we can't change it without potentially breaking some implementations so the fix will have to wait for 2.0" + } + ], + "renditions": { + "a#$^-éééash-陣": {} + }, + "uri": "urn:008-regex-bug" +} diff --git a/src/test/ninjs-1.4/009_rights.json b/src/test/ninjs-1.4/009_rights.json new file mode 100644 index 00000000000..904b6d8502d --- /dev/null +++ b/src/test/ninjs-1.4/009_rights.json @@ -0,0 +1,7 @@ +{ + "rightsinfo": { + "langid": "http://w3.org/ns/odrl/2/", + "linkedrights": "http://tt.se/rights" + }, + "uri": "urn:009_rights" +} From afe815b677d1e09eadfcb0be55eb246a3df35668 Mon Sep 17 00:00:00 2001 From: Igor Khramtsov Date: Mon, 10 Jun 2024 08:05:20 +0400 Subject: [PATCH 02/62] feat(catalog): add EAS config schema (#3848) * feat(catalog): add EAS config schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update description to meet requirements --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/api/json/catalog.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index ac6c46acb19..906ceee52d8 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -1924,6 +1924,12 @@ "46.0.0": "https://json.schemastore.org/expo-46.0.0.json" } }, + { + "name": "EAS config", + "description": "The EAS config (eas.json) validation and documentation", + "fileMatch": ["eas.json"], + "url": "https://raw.githubusercontent.com/expo/eas-cli/main/packages/eas-json/schema/eas.schema.json" + }, { "name": "ezd task runner", "description": "ezd task runner. Documentation: https://gitlab.com/sbenv/veroxis/ezd-rs", From 0f03a5d8b9fb743434213dffbedcf6e939e6d75f Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 10 Jun 2024 12:20:18 -0400 Subject: [PATCH 03/62] cibuildwheel: update for 2.19 (#3850) Signed-off-by: Henry Schreiner --- src/schemas/json/partial-cibuildwheel.json | 67 +++++++++++++++++++++- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/src/schemas/json/partial-cibuildwheel.json b/src/schemas/json/partial-cibuildwheel.json index 28d39ffb30c..2344fcbe1ff 100644 --- a/src/schemas/json/partial-cibuildwheel.json +++ b/src/schemas/json/partial-cibuildwheel.json @@ -90,10 +90,10 @@ }, "build-frontend": { "default": "default", - "description": "Set the tool to use to build, either \"pip\" (default for now) or \"build\"", + "description": "Set the tool to use to build, either \"pip\" (default for now), \"build\", or \"build[uv]\"", "oneOf": [ { - "enum": ["pip", "build", "default"] + "enum": ["pip", "build", "build[uv]", "default"] }, { "type": "string", @@ -103,13 +103,17 @@ "type": "string", "pattern": "^build; ?args:" }, + { + "type": "string", + "pattern": "^build\\[uv\\]; ?args:" + }, { "type": "object", "additionalProperties": false, "required": ["name"], "properties": { "name": { - "enum": ["pip", "build"] + "enum": ["pip", "build", "build[uv]"] }, "args": { "type": "array", @@ -232,6 +236,12 @@ ], "title": "CIBW_ENVIRONMENT_PASS" }, + "free-threaded-support": { + "type": "boolean", + "default": false, + "description": "The project supports free-threaded builds of Python (PEP703)", + "title": "CIBW_FREE_THREADED_SUPPORT" + }, "manylinux-aarch64-image": { "type": "string", "description": "Specify alternative manylinux / musllinux container images", @@ -466,6 +476,9 @@ "config-settings": { "$ref": "#/properties/config-settings" }, + "container-engine": { + "$ref": "#/properties/container-engine" + }, "dependency-versions": { "$ref": "#/properties/dependency-versions" }, @@ -554,6 +567,9 @@ "config-settings": { "$ref": "#/properties/config-settings" }, + "container-engine": { + "$ref": "#/properties/container-engine" + }, "environment": { "$ref": "#/properties/environment" }, @@ -728,6 +744,51 @@ "$ref": "#/properties/test-requires" } } + }, + "pyodide": { + "type": "object", + "additionalProperties": false, + "properties": { + "archs": { + "$ref": "#/properties/archs" + }, + "before-all": { + "$ref": "#/properties/before-all" + }, + "before-build": { + "$ref": "#/properties/before-build" + }, + "before-test": { + "$ref": "#/properties/before-test" + }, + "build-frontend": { + "$ref": "#/properties/build-frontend" + }, + "build-verbosity": { + "$ref": "#/properties/build-verbosity" + }, + "config-settings": { + "$ref": "#/properties/config-settings" + }, + "dependency-versions": { + "$ref": "#/properties/dependency-versions" + }, + "environment": { + "$ref": "#/properties/environment" + }, + "repair-wheel-command": { + "$ref": "#/properties/repair-wheel-command" + }, + "test-command": { + "$ref": "#/properties/test-command" + }, + "test-extras": { + "$ref": "#/properties/test-extras" + }, + "test-requires": { + "$ref": "#/properties/test-requires" + } + } } } } From 85b32e72a50b38d3df13a82c4fbf9ce9038b4d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kriszti=C3=A1n=20G=C3=B6drei?= Date: Mon, 10 Jun 2024 18:22:02 +0200 Subject: [PATCH 04/62] Containerisation config (#3845) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: align pipeline models (#1) * add `title`, `summary`, `description` to pipelines and stages. * add `abort_on_fail` and `should_always_run` to the `StageModel` * create separate `WorkflowStageConfigModel` with the `run_if` property * Update bitrise.yml schema (#2) * Update bitrise.yml JSON schema (#3) * Fix id property (#4) * Run prettier:fix for bitrise.json schema (#5) * Add top-level services and containers * Add 'with' step list item model * Add EnvModel * Run prettier * Add missing types --------- Co-authored-by: Bálint --- src/schemas/json/bitrise.json | 138 +++++++++++++++++++++++++--------- 1 file changed, 102 insertions(+), 36 deletions(-) diff --git a/src/schemas/json/bitrise.json b/src/schemas/json/bitrise.json index 4ee012f30a6..420838a8623 100644 --- a/src/schemas/json/bitrise.json +++ b/src/schemas/json/bitrise.json @@ -15,15 +15,7 @@ "type": "string" }, "envs": { - "items": { - "patternProperties": { - ".*": { - "additionalProperties": true - } - }, - "type": "object" - }, - "type": "array" + "$ref": "#/definitions/EnvModel" } }, "additionalProperties": false, @@ -71,6 +63,22 @@ "description": { "type": "string" }, + "services": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/ContainerModel" + } + }, + "type": "object" + }, + "containers": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/ContainerModel" + } + }, + "type": "object" + }, "app": { "$ref": "#/definitions/AppModel" }, @@ -137,6 +145,31 @@ "additionalProperties": false, "type": "object" }, + "ContainerModel": { + "required": ["image"], + "properties": { + "image": { + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/DockerCredentialModel" + }, + "ports": { + "type": "array", + "items": { + "type": "string" + } + }, + "envs": { + "$ref": "#/definitions/EnvModel" + }, + "options": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, "DepsModel": { "properties": { "brew": { @@ -161,6 +194,33 @@ "additionalProperties": false, "type": "object" }, + "DockerCredentialModel": { + "required": ["username", "password"], + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "server": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object" + }, + "EnvModel": { + "items": { + "patternProperties": { + ".*": { + "additionalProperties": true + } + }, + "type": "object" + }, + "type": "array" + }, "GoStepToolkitModel": { "required": ["package_name"], "properties": { @@ -315,26 +375,10 @@ "type": "object" }, "inputs": { - "items": { - "patternProperties": { - ".*": { - "additionalProperties": true - } - }, - "type": "object" - }, - "type": "array" + "$ref": "#/definitions/EnvModel" }, "outputs": { - "items": { - "patternProperties": { - ".*": { - "additionalProperties": true - } - }, - "type": "object" - }, - "type": "array" + "$ref": "#/definitions/EnvModel" } }, "additionalProperties": false, @@ -453,6 +497,33 @@ "additionalProperties": false, "type": "object" }, + "WithModel": { + "required": ["steps"], + "properties": { + "container": { + "type": "string" + }, + "services": { + "type": "array", + "items": { + "type": "string" + } + }, + "steps": { + "items": { + "patternProperties": { + ".*": { + "$ref": "#/definitions/StepModel" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "additionalProperties": false, + "type": "object" + }, "WorkflowStageConfigModel": { "properties": { "run_if": { @@ -486,19 +557,14 @@ "type": "array" }, "envs": { - "items": { - "patternProperties": { - ".*": { - "additionalProperties": true - } - }, - "type": "object" - }, - "type": "array" + "$ref": "#/definitions/EnvModel" }, "steps": { "items": { "patternProperties": { + "^with$": { + "$ref": "#/definitions/WithModel" + }, ".*": { "$ref": "#/definitions/StepModel" } From 45ac24530c463066ba87a70cd41bdd5418a239c0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:05:08 -0700 Subject: [PATCH 05/62] [pre-commit.ci] pre-commit autoupdate (#3851) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fef5f144be4..d83fe35c4dd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: 'https://github.com/rbubley/mirrors-prettier' - rev: 'v3.3.0' + rev: 'v3.3.1' hooks: - id: 'prettier' types_or: ['yaml', 'json', 'javascript', 'css', 'markdown'] From c0e7f4622ecfa5f45fa0741d1dd8b8ce8263a4a8 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Mon, 10 Jun 2024 23:33:55 +0200 Subject: [PATCH 06/62] Added more fly fields (#3840) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/schemas/json/fly.json | 476 +++++++++++++++++++++++++++++--------- src/test/fly/fly.json | 216 ++++++++++++++--- 2 files changed, 552 insertions(+), 140 deletions(-) diff --git a/src/schemas/json/fly.json b/src/schemas/json/fly.json index 1ab6cf4be4a..d5c6f6d0170 100644 --- a/src/schemas/json/fly.json +++ b/src/schemas/json/fly.json @@ -17,6 +17,7 @@ } } }, + "services": { "description": "Configure the mapping of ports from the public Fly proxy to your application.\n\nYou can have:\n* **No services section**: The application has no mappings to the external internet - typically apps like databases or background job workers that talk over 6PN private networking to other apps.\n* **One services section**: One internal port mapped to one external port on the internet.\n* **Multiple services sections**: Map multiple internal ports to multiple external ports.", "type": "object", @@ -174,6 +175,43 @@ } } }, + "machine_checks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "array", + "items": { + "type": "string" + } + }, + "entrypoint": { + "type": "array", + "items": { + "type": "string" + } + }, + "image": { + "type": "string" + }, + "kill_signal": { + "type": "string" + }, + "kill_timeout": { + "type": "string", + "pattern": "^\\d+s$" + } + }, + "required": [ + "command", + "entrypoint", + "image", + "kill_signal", + "kill_timeout" + ] + } + }, "tcp_checks": { "description": "Basic TCP connection health checks. This is the default check that runs against the configured `internal_port`.", "type": "array", @@ -227,77 +265,156 @@ } }, "http_checks": { - "description": "HTTP-based health checks run against the `internal_port`. These checks will pass when receiving a 2xx response. Any other response is considered a failure.", + "$ref": "#/definitions/http_checks" + } + } + }, + "mounts": { + "type": "object", + "x-taplo": { + "links": { + "key": "https://fly.io/docs/reference/configuration/#the-mounts-section" + } + }, + "description": "Mount [persistent storage volumes](https://fly.io/docs/reference/volumes) previously setup via `flyctl`. Both settings are required. Example:\n\n```toml\n[mounts]\n source = \"myapp_data\"\n destination = \"/data\"\n```", + "required": ["source", "destination"], + "additionalProperties": false, + "properties": { + "source": { + "description": "The name of the volume to mount as shown in `fly volumes list`.\n\nA volume of this name *must exist* in each of the app regions. If there's more than one volume in the target region with the same one, one will be picked randomly.", + "type": "string" + }, + "snapshot_retention": { + "description": "The number of snapshots to retain for the volume. Snapshots are taken daily.", + "type": "integer" + }, + "destination": { + "description": "The path at which the `source` volume should be mounted in the running app VM.", + "type": "string" + }, + "processes": { + "description": "The name of the process(es) to which this mount should be applied. See [multiple processes](https://community.fly.io/t/preview-multi-process-apps-get-your-workers-here/2316).", "type": "array", - "x-taplo": { - "links": { - "key": "https://fly.io/docs/reference/configuration/#services-http_checks" + "items": { + "type": "string", + "minLength": 1 + } + }, + "initial_size": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" } - }, + ], + "description": "The size of the volume to be created on first deploy." + }, + "auto_extend_size_threshold": { + "type": "integer", + "description": "The usage percentage threshold that triggers volume extension." + }, + "auto_extend_size_increment": { + "type": "string", + "description": "The size increment by which to extend the volume." + }, + "auto_extend_size_limit": { + "type": "string", + "description": "The total amount to extend a volume." + } + } + }, + "metrics": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "description": "Port on which the application exposes metrics data." + }, + "path": { + "type": "string", + "description": "Path under which the metrics are exposed, typically '/metrics'." + }, + "processes": { + "type": "array", "items": { - "type": "object", - "properties": { - "grace_period": { - "description": "The time to wait after a VM starts before checking its health. Units are milliseconds unless you specify them like `10s` or `1m`.", - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ] - }, - "interval": { - "description": "Length of the pause between connectivity checks. Units are milliseconds unless you specify them like `10s` or `1m`.", - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ] - }, - "restart_limit": { - "default": 0, - "description": "The number of consecutive check failures to allow before attempting to restart the VM. The default is `0`, which disables restarts based on failed health checks.", + "type": "string" + }, + "description": "List of process names that this metrics configuration applies to." + } + } + }, + "http_checks": { + "description": "HTTP-based health checks run against the `internal_port`. These checks will pass when receiving a 2xx response. Any other response is considered a failure.", + "type": "array", + "x-taplo": { + "links": { + "key": "https://fly.io/docs/reference/configuration/#services-http_checks" + } + }, + "items": { + "type": "object", + "properties": { + "grace_period": { + "description": "The time to wait after a VM starts before checking its health. Units are milliseconds unless you specify them like `10s` or `1m`.", + "oneOf": [ + { "type": "integer" }, - "timeout": { - "description": "The maximum time a connection can take before being reported as failing its healthcheck. Units are milliseconds unless you specify them like `10s` or `1m`.", - "oneOf": [ - { - "type": "integer" - }, - { - "type": "string" - } - ] - }, - "method": { - "description": "The HTTP method to be used for the check.", + { "type": "string" + } + ] + }, + "interval": { + "description": "Length of the pause between connectivity checks. Units are milliseconds unless you specify them like `10s` or `1m`.", + "oneOf": [ + { + "type": "integer" }, - "path": { - "description": "The path of the URL to be requested.", + { "type": "string" + } + ] + }, + "restart_limit": { + "default": 0, + "description": "The number of consecutive check failures to allow before attempting to restart the VM. The default is `0`, which disables restarts based on failed health checks.", + "type": "integer" + }, + "timeout": { + "description": "The maximum time a connection can take before being reported as failing its healthcheck. Units are milliseconds unless you specify them like `10s` or `1m`.", + "oneOf": [ + { + "type": "integer" }, - "protocol": { - "description": "The protocol to be used (`http` or `https`)", - "type": "string", - "enum": ["http", "https"] - }, - "tls_skip_verify": { - "type": "boolean", - "default": false, - "description": "When set to `true` (and `protocol` is set to `https`), skip verifying the certificates sent by the server." - }, - "headers": { - "type": "object", - "description": "Set key/value pairs of HTTP headers to pass along with the check request." + { + "type": "string" } - } + ] + }, + "method": { + "description": "The HTTP method to be used for the check.", + "type": "string" + }, + "path": { + "description": "The path of the URL to be requested.", + "type": "string" + }, + "protocol": { + "description": "The protocol to be used (`http` or `https`)", + "type": "string", + "enum": ["http", "https"] + }, + "tls_skip_verify": { + "type": "boolean", + "default": false, + "description": "When set to `true` (and `protocol` is set to `https`), skip verifying the certificates sent by the server." + }, + "headers": { + "type": "object", + "description": "Set key/value pairs of HTTP headers to pass along with the check request." } } } @@ -305,10 +422,177 @@ }, "description": "https://fly.io/docs/reference/configuration", "properties": { + "files": { + "type": "array", + "items": { + "type": "object", + "properties": { + "guest_path": { + "type": "string", + "description": "The path in the guest where the file will be written." + }, + "raw_value": { + "type": "string", + "description": "Base64 encoded content to be written to the file." + }, + "secret_name": { + "type": "string", + "description": "The name of the secret whose value will be written to the file." + }, + "local_path": { + "type": "string", + "description": "Local path of the file to be written to the guest." + }, + "processes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of process names that this file configuration applies to." + } + }, + "required": ["guest_path"] + } + }, + "http_service": { + "type": "object", + "properties": { + "internal_port": { + "type": "integer", + "description": "The port this service (and application) will use to communicate with clients. Default is 8080.", + "default": 8080 + }, + "force_https": { + "type": "boolean", + "description": "A Boolean which determines whether to enforce HTTP to HTTPS redirects." + }, + "auto_stop_machines": { + "type": "boolean", + "description": "Whether to automatically stop an application’s Machines when there’s excess capacity, per region." + }, + "auto_start_machines": { + "type": "boolean", + "description": "Whether to automatically start an application’s Machines when a new request is made to the application and there’s no excess capacity, per region." + }, + "min_machines_running": { + "type": "integer", + "description": "The number of Machines to keep running, in the primary region only, when `auto_stop_machines` is true." + }, + "concurrency": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Specifies what metric is used to determine when to auto start or stop, or when a given Machine should receive more or less traffic (load balancing).", + "enum": ["connections", "requests"] + }, + "soft_limit": { + "type": "integer", + "description": "When a Fly Machine is at or over this number of concurrent connections or requests, the system will deprioritize sending new traffic to that Machine." + }, + "hard_limit": { + "type": "integer", + "description": "When a Fly Machine is at or over this number of concurrent connections or requests, the system will stop sending new traffic to that Machine." + } + } + }, + "http_options": { + "type": "object", + "properties": { + "response": { + "type": "object", + "properties": { + "pristine": { + "type": "boolean", + "description": "Configures Fly Proxy to not add any Fly headers to HTTP responses." + }, + "headers": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { "type": "boolean" }, + { "type": "string" }, + { "type": "array", "items": { "type": "string" } } + ] + }, + "description": "Add or remove HTTP response headers." + } + } + }, + "h2_backend": { + "type": "boolean", + "description": "Indicates whether the app supports HTTP/2 cleartext (H2C) with prior knowledge or not." + } + } + }, + "tls_options": { + "type": "object", + "properties": { + "alpn": { + "type": "array", + "items": { + "type": "string" + } + }, + "versions": { + "type": "array", + "items": { + "type": "string" + } + }, + "default_self_signed": { + "type": "boolean", + "description": "When `true`, serve a self-signed certificate if no certificate exists. Default is `false`.", + "default": false + } + } + }, + "checks": { + "$ref": "#/definitions/http_checks" + } + } + }, + "primary_region": { + "type": "string", + "description": "The primary region where the application will be deployed. This setting also sets the PRIMARY_REGION environment variable." + }, + "console_command": { + "type": "string", + "description": "Command to run when you execute 'fly console'. This opens your framework's console in a new, dedicated Machine." + }, + "swap_size_mb": { + "type": "integer", + "description": "Size in megabytes for the swap file on the VM. Helps in handling memory spikes." + }, + "metrics": { + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/metrics" + } + }, + { + "$ref": "#/definitions/metrics" + } + ] + }, + "http_checks": { + "$ref": "#/definitions/http_checks" + }, + "processes": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, "app": { "description": "Fly.io application name", "type": "string" }, + "host_dedication_id": { + "type": "string" + }, "vm": { "type": "array", "x-taplo": { @@ -360,7 +644,17 @@ "enum": ["a10", "a100-40gb", "a100-80gb", "l40s"] }, "kernel_args": { - "type": "string" + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "string" + } + ] }, "host_dedication_id": { "type": "string" @@ -405,7 +699,7 @@ "key": "https://fly.io/docs/reference/configuration/#the-statics-sections" } }, - "anyOf": [ + "oneOf": [ { "$ref": "#/definitions/statics" }, @@ -444,6 +738,10 @@ "description": "Command to run after a build, with access to the production environment, but before deployment. Non-zero exit status will abort the deployment.\n\n```toml\n[deploy]\n release_command =\"bundle exec rails db:migrate\"\n```", "type": "string" }, + "max_unavailable": { + "description": "For rolling deploys, you can use max_unavailable to control how many Machines can be down at a time.", + "type": "number" + }, "strategy": { "description": "Strategy for replacing VMs during a deployment.", "type": "string", @@ -468,57 +766,19 @@ } }, "mounts": { - "type": "object", - "x-taplo": { - "links": { - "key": "https://fly.io/docs/reference/configuration/#the-mounts-section" - } - }, - "description": "Mount [persistent storage volumes](https://fly.io/docs/reference/volumes) previously setup via `flyctl`. Both settings are required. Example:\n\n```toml\n[mounts]\n source = \"myapp_data\"\n destination = \"/data\"\n```", - "required": ["source", "destination"], - "additionalProperties": false, - "properties": { - "source": { - "description": "The name of the volume to mount as shown in `fly volumes list`.\n\nA volume of this name *must exist* in each of the app regions. If there's more than one volume in the target region with the same one, one will be picked randomly.", - "type": "string" - }, - "destination": { - "description": "The path at which the `source` volume should be mounted in the running app VM.", - "type": "string" + "oneOf": [ + { + "$ref": "#/definitions/mounts" }, - "processes": { - "description": "The name of the process(es) to which this mount should be applied. See [multiple processes](https://community.fly.io/t/preview-multi-process-apps-get-your-workers-here/2316).", + { "type": "array", "items": { - "type": "string", - "minLength": 1 + "$ref": "#/definitions/mounts" } - }, - "initial_size": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ], - "description": "The size of the volume to be created on first deploy." - }, - "auto_extend_size_threshold": { - "type": "integer", - "description": "The usage percentage threshold that triggers volume extension." - }, - "auto_extend_size_increment": { - "type": "string", - "description": "The size increment by which to extend the volume." - }, - "auto_extend_size_limit": { - "type": "string", - "description": "The total amount to extend a volume." } - } + ] }, + "experimental": { "description": "Flags and features that are subject to change, deprecation or promotion to the main configuration.", "type": "object", diff --git a/src/test/fly/fly.json b/src/test/fly/fly.json index d9f9ad3c2df..48f7cf6b62e 100644 --- a/src/test/fly/fly.json +++ b/src/test/fly/fly.json @@ -1,59 +1,211 @@ { - "app": "foobar", + "app": "foo", "build": { "args": { - "key": "value" - } + "param1": "value1", + "param2": "value2" + }, + "build-target": "target", + "builder": "dockerfile", + "buildpacks": ["packme", "well"], + "dockerfile": "Dockerfile", + "ignorefile": ".gitignore", + "image": "foo/fighter" + }, + + "console_command": "/bin/bash", + "deploy": { + "max_unavailable": 0.2, + "release_command": "release command", + "strategy": "rolling" + }, + "env": { + "FOO": "BAR" }, "experimental": { - "allowed_public_ports": [], "auto_rollback": true, - "cmd": "foobar.sh", - "entrypoint": "sh" + "cmd": ["cmd"], + "enable_consul": true, + "enable_etcd": true, + "entrypoint": ["entrypoint"], + "exec": ["exec"] + }, + "files": [ + { + "guest_path": "/path/to/hello.txt", + "raw_value": "aGVsbG8gd29ybGQK" + }, + { + "guest_path": "/path/to/secret.txt", + "secret_name": "SUPER_SECRET" + }, + { + "guest_path": "/path/to/config.yaml", + "local_path": "/local/path/config.yaml", + "processes": ["web"] + } + ], + "host_dedication_id": "06031957", + "http_service": { + "auto_start_machines": false, + "auto_stop_machines": false, + "checks": [ + { + "grace_period": "2s", + "headers": { + "My-Custom-Header": "whatever" + }, + "interval": "1m21s", + "method": "GET", + "path": "/", + "protocol": "https", + "timeout": "7s", + "tls_server_name": "sni2.com", + "tls_skip_verify": true + } + ], + "concurrency": { + "hard_limit": 10, + "soft_limit": 4, + "type": "requests" + }, + "force_https": true, + "http_options": { + "compress": true, + "response": { + "headers": { + "fly-request-id": false, + "fly-wasnt-here": "yes, it was", + "multi-valued": ["value1", "value2"] + } + } + }, + "internal_port": 8080, + "machine_checks": [ + { + "command": ["curl", "https://fly.io"], + "entrypoint": ["/bin/sh"], + "image": "curlimages/curl", + "kill_signal": "SIGKILL", + "kill_timeout": "5s" + } + ], + "min_machines_running": 0, + "tls_options": { + "alpn": ["h2", "http/1.1"], + "default_self_signed": false, + "versions": ["TLSv1.2", "TLSv1.3"] + } }, - "kill_signal": "SIGINT", - "kill_timeout": 5, - "mounts": { - "auto_extend_size_increment": "1GB", - "auto_extend_size_limit": "5GB", - "auto_extend_size_threshold": 80, - "destination": "/data", - "initial_size": "20GB", - "processes": ["disk"], - "source": "myapp_data" + "kill_signal": "SIGTERM", + "kill_timeout": "3s", + "metrics": [ + { + "path": "/metrics", + "port": 9999 + }, + { + "path": "/metrics", + "port": 9998, + "processes": ["web"] + } + ], + "mounts": [ + { + "destination": "/data", + "initial_size": "30gb", + "snapshot_retention": 17, + "source": "data" + } + ], + "primary_region": "sea", + "processes": { + "task": "task all day", + "web": "run web" }, - "processes": [], "services": [ { - "auto_start_machines": true, - "auto_stop_machines": true, - "concurrency": { "hard_limit": 25, "soft_limit": 20 }, + "auto_start_machines": false, + "auto_stop_machines": false, + "concurrency": { + "hard_limit": 22, + "soft_limit": 13, + "type": "requests" + }, + "http_checks": [ + { + "grace_period": "2s", + "headers": { + "My-Custom-Header": "whatever" + }, + "interval": "1m21s", + "method": "GET", + "path": "/", + "protocol": "https", + "timeout": "7s", + "tls_server_name": "sni.com", + "tls_skip_verify": true + }, + { + "interval": "33s", + "method": "POST", + "path": "/check2", + "timeout": "10s" + } + ], + "internal_port": 8081, + "machine_checks": [ + { + "command": ["curl", "https://fly.io"], + "entrypoint": ["/bin/sh"], + "image": "curlimages/curl", + "kill_signal": "SIGKILL", + "kill_timeout": "5s" + } + ], "min_machines_running": 1, "ports": [ { - "force_https": false, + "end_port": 200, + "force_https": true, "handlers": ["http"], - "port": 80 - }, + "port": 80, + "start_port": 100 + } + ], + "processes": ["app"], + "protocol": "tcp", + "tcp_checks": [ { - "force_https": false, - "handlers": ["tls", "http"], - "port": 443 + "grace_period": "1s", + "interval": "21s", + "timeout": "4s" } ] } ], + "statics": [ + { + "guest_path": "/path/to/statics", + "url_prefix": "/static-assets" + } + ], + "swap_size_mb": 512, "vm": [ { "cpu_kind": "performance", - "cpus": 4, + "cpus": 8, "gpu_kind": "a100-40gb", - "gpus": 1, - "host_dedication_id": "customer-id", - "kernel_args": "no-hlt=true", - "memory": "2gb", + "gpus": 2, + "host_dedication_id": "isolated-xxx", + "kernel_args": ["quiet"], + "memory": "8gb", + "memory_mb": 8192, "processes": ["app"], - "size": "shared-cpu-2x" + "size": "shared-cpu-1x" + }, + { + "memory_mb": 4096 } ] } From 221dafc12b8ac41fc3cd6b1b632987cbc510658d Mon Sep 17 00:00:00 2001 From: Michael Osofsky Date: Mon, 10 Jun 2024 20:15:52 -0400 Subject: [PATCH 07/62] Updated ABC-Plan JSON Schema to Versions 2.0.0 and 3.0.0 (#3852) Co-authored-by: Michael Osofsky Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/api/json/catalog.json | 8 +- .../abc-suppply-plan-extraneous-key.json | 3 +- ...c-supply-plan-missing-schema-property.json | 298 ++++++++ .../abc-suppply-plan-extraneous-property.json | 207 ++++++ ...pply-plan-invalid-fractional-lot-size.json | 54 ++ .../abc-suppply-plan-invalid-planDate.json | 260 +++++++ ...ppply-plan-invalid-strings-as-numbers.json | 77 ++ ...c-supply-plan-missing-schema-property.json | 6 + .../abc-suppply-plan-extraneous-property.json | 10 + ...pply-plan-invalid-fractional-lot-size.json | 152 ++++ .../abc-suppply-plan-invalid-planDate.json | 7 + ...ppply-plan-invalid-strings-as-numbers.json | 297 ++++++++ src/schema-validation.json | 30 + src/schemas/json/abc-supply-plan-2.0.0.json | 569 +++++++++++++++ src/schemas/json/abc-supply-plan-3.0.0.json | 669 ++++++++++++++++++ .../abc-supply-plan.json | 299 ++++++++ .../abc-supply-plan.json | 297 ++++++++ 17 files changed, 3238 insertions(+), 5 deletions(-) create mode 100644 src/negative_test/abc-supply-plan-2.0.0/abc-supply-plan-missing-schema-property.json create mode 100644 src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-extraneous-property.json create mode 100644 src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-fractional-lot-size.json create mode 100644 src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-planDate.json create mode 100644 src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-strings-as-numbers.json create mode 100644 src/negative_test/abc-supply-plan-3.0.0/abc-supply-plan-missing-schema-property.json create mode 100644 src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-extraneous-property.json create mode 100644 src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-fractional-lot-size.json create mode 100644 src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-planDate.json create mode 100644 src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-strings-as-numbers.json create mode 100644 src/schemas/json/abc-supply-plan-2.0.0.json create mode 100644 src/schemas/json/abc-supply-plan-3.0.0.json create mode 100644 src/test/abc-supply-plan-2.0.0/abc-supply-plan.json create mode 100644 src/test/abc-supply-plan-3.0.0/abc-supply-plan.json diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 906ceee52d8..a23239b4aa3 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -104,10 +104,12 @@ { "name": "ABCSupplyPlan", "description": "ABCSupplyPlan representing all the state for performing inventory optimization and expiry analysis in ABC-Plan MasterPlanner", - "fileMatch": ["abc-supply-plan-1.0.0.yml", "abc-supply-plan-1.0.0.yaml"], - "url": "https://json.schemastore.org/abc-supply-plan-1.0.0.json", + "fileMatch": ["abc-supply-plan-*.json"], + "url": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", "versions": { - "1.0.0": "https://json.schemastore.org/abc-supply-plan-1.0.0.json" + "1.0.0": "https://json.schemastore.org/abc-supply-plan-1.0.0.json", + "2.0.0": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "3.0.0": "https://json.schemastore.org/abc-supply-plan-3.0.0.json" } }, { diff --git a/src/negative_test/abc-supply-plan-1.0.0/abc-suppply-plan-extraneous-key.json b/src/negative_test/abc-supply-plan-1.0.0/abc-suppply-plan-extraneous-key.json index 1060b16ecc3..a4c0209cf52 100644 --- a/src/negative_test/abc-supply-plan-1.0.0/abc-suppply-plan-extraneous-key.json +++ b/src/negative_test/abc-supply-plan-1.0.0/abc-suppply-plan-extraneous-key.json @@ -201,6 +201,5 @@ }, "this_is_an_invalid_key": { "this_is_an_invalid_object_key": "this_is_an_invalid_object_value" - }, - "timestamp": 1673628020309 + } } diff --git a/src/negative_test/abc-supply-plan-2.0.0/abc-supply-plan-missing-schema-property.json b/src/negative_test/abc-supply-plan-2.0.0/abc-supply-plan-missing-schema-property.json new file mode 100644 index 00000000000..081f5092e70 --- /dev/null +++ b/src/negative_test/abc-supply-plan-2.0.0/abc-supply-plan-missing-schema-property.json @@ -0,0 +1,298 @@ +{ + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-03-01": 0, + "2020-04-01": 2117, + "2020-05-01": 2214, + "2020-06-01": 2285, + "2020-07-01": 2516, + "2020-08-01": 2675, + "2020-09-01": 2833, + "2020-10-01": 3006, + "2020-11-01": 3196, + "2020-12-01": 3414, + "2021-01-01": 3630, + "2021-02-01": 3859, + "2021-03-01": 4105, + "2021-04-01": 4369, + "2021-05-01": 4651, + "2021-06-01": 4948, + "2021-07-01": 5263, + "2021-08-01": 5600, + "2021-09-01": 5959, + "2021-10-01": 6341, + "2021-11-01": 6748, + "2021-12-01": 7180, + "2022-01-01": 7639, + "2022-02-01": 8128, + "2022-03-01": 8648, + "2022-04-01": 9202, + "2022-05-01": 9791, + "2022-06-01": 10417 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-03-01": 0, + "2020-04-01": 0, + "2020-05-01": 0, + "2020-06-01": 0, + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0, + "2021-05-01": 0, + "2021-06-01": 0, + "2021-07-01": 0, + "2021-08-01": 0, + "2021-09-01": 0, + "2021-10-01": 0, + "2021-11-01": 0, + "2021-12-01": 0, + "2022-01-01": 0, + "2022-02-01": 0, + "2022-03-01": 0, + "2022-04-01": 0, + "2022-05-01": 0, + "2022-06-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2021-03-31", + "firmOrderName": "Sep Firm Order", + "firmOrderQuantity": 2000, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-05-31", + "firmOrderName": "Nov Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2020-11-01", + "releaseDate": "2020-12-01" + }, + { + "expirationDate": "2021-08-31", + "firmOrderName": "Feb Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2021-02-01", + "releaseDate": "2021-03-01" + }, + { + "expirationDate": "2021-07-31", + "firmOrderName": "Jan Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2021-01-01", + "releaseDate": "2021-02-01" + }, + { + "expirationDate": "2021-06-30", + "firmOrderName": "Dec Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2020-12-01", + "releaseDate": "2021-01-01" + } + ], + "firmingPeriod": 6, + "initialInventories": [ + { + "expirationDate": "2020-07-31", + "initialInventoryQuantity": 8000, + "lotNumber": "old lot", + "manufactureDate": "2020-01-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 1, + "lotSize": 2000, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-03-01": 0, + "2020-04-01": 0, + "2020-05-01": 0, + "2020-06-01": 0, + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0, + "2021-05-01": 0, + "2021-06-01": 0, + "2021-07-01": 0, + "2021-08-01": 0, + "2021-09-01": 0, + "2021-10-01": 0, + "2021-11-01": 0, + "2021-12-01": 0, + "2022-01-01": 0, + "2022-02-01": 0, + "2022-03-01": 0, + "2022-04-01": 0, + "2022-05-01": 0, + "2022-06-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 4, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": "DP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 1, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": "API", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 2, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": "2020-03-01", + "planNotes": "{\"blocks\":[{\"key\":\"8o58p\",\"text\":\"Plan for March 2020\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 30 + }, + "2-3": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 0.5 + } + } +} diff --git a/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-extraneous-property.json b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-extraneous-property.json new file mode 100644 index 00000000000..97d0af8873c --- /dev/null +++ b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-extraneous-property.json @@ -0,0 +1,207 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "decimalPrecision": 0, + "demand": { + "2020-07-01": 100, + "2020-08-01": 125, + "2020-09-01": 150, + "2020-10-01": 175, + "2020-11-01": 200, + "2020-12-01": 110, + "2021-01-01": 140, + "2021-02-01": 130, + "2021-03-01": 205, + "2021-04-01": 210 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2020-11-30", + "firmOrderName": "May Order", + "firmOrderQuantity": 105, + "manufactureDate": "2020-05-01", + "releaseDate": "2020-07-01" + }, + { + "expirationDate": "2020-12-31", + "firmOrderName": "June Order", + "firmOrderQuantity": 103, + "manufactureDate": "2020-06-01", + "releaseDate": "2020-08-01" + }, + { + "expirationDate": "2021-01-31", + "firmOrderName": "July Order", + "firmOrderQuantity": 200, + "manufactureDate": "2020-07-01", + "releaseDate": "2020-09-01" + }, + { + "expirationDate": "2021-02-28", + "firmOrderName": "August Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-08-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-03-31", + "firmOrderName": "September Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-11-01" + } + ], + "firmingPeriod": 3, + "initialInventories": [ + { + "expirationDate": "2020-09-30", + "initialInventoryQuantity": 109, + "lotNumber": "Lot C4R1", + "manufactureDate": "2020-03-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 98, + "lotNumber": "Lot C4R2", + "manufactureDate": "2020-04-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 93, + "lotNumber": "Lot C4R3", + "manufactureDate": "2020-04-01" + } + ], + "leadTime": 2, + "lotSize": 100, + "materialColor": "#3D85C6", + "materialShape": "circle", + "otherDemand": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": { + "2020-10-01": 500, + "2020-11-01": 200 + }, + "shelfLife": 6, + "showQuantitiesAs": "Units", + "stopshipBuffer": 0, + "targetMFC": 3, + "timeAggregateType": "Monthly", + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": "DP", + "actuals": {}, + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLife": 0, + "showQuantitiesAs": "Units", + "stopshipBuffer": 0, + "targetMFC": 0, + "timeAggregateType": "Monthly", + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": "API", + "actuals": {}, + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLife": 0, + "showQuantitiesAs": "Units", + "stopshipBuffer": 0, + "targetMFC": 0, + "timeAggregateType": "Monthly", + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": "2020-07-01", + "planNotes": "{\"blocks\":[{\"key\":\"2rrdv\",\"text\":\"Æ\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "percentAllocations": [ + { + "endDate": null, + "percentAllocation": 1, + "startDate": null + } + ], + "percentYield": 1, + "recipe": 30 + }, + "2-3": { + "percentAllocations": [ + { + "endDate": null, + "percentAllocation": 1, + "startDate": null + } + ], + "percentYield": 1, + "recipe": 0.5 + } + }, + "this_is_an_invalid_property": { + "this_is_an_invalid_object_property": "this_is_an_invalid_object_value" + }, + "timestamp": 1673628020309 +} diff --git a/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-fractional-lot-size.json b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-fractional-lot-size.json new file mode 100644 index 00000000000..3977b682d38 --- /dev/null +++ b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-fractional-lot-size.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 1.25, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + } + }, + "planDate": "2024-05-01", + "planNotes": "{\"blocks\":[{\"key\":\"b442\",\"text\":\"\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {} +} diff --git a/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-planDate.json b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-planDate.json new file mode 100644 index 00000000000..eb63f33b128 --- /dev/null +++ b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-planDate.json @@ -0,0 +1,260 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-07-01": 100, + "2020-08-01": 125, + "2020-09-01": 150, + "2020-10-01": 175, + "2020-11-01": 200, + "2020-12-01": 110, + "2021-01-01": 140, + "2021-02-01": 130, + "2021-03-01": 205, + "2021-04-01": 210 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2020-11-30", + "firmOrderName": "May Order", + "firmOrderQuantity": 105, + "manufactureDate": "2020-05-01", + "releaseDate": "2020-07-01" + }, + { + "expirationDate": "2020-12-31", + "firmOrderName": "June Order", + "firmOrderQuantity": 103, + "manufactureDate": "2020-06-01", + "releaseDate": "2020-08-01" + }, + { + "expirationDate": "2021-01-31", + "firmOrderName": "July Order", + "firmOrderQuantity": 200, + "manufactureDate": "2020-07-01", + "releaseDate": "2020-09-01" + }, + { + "expirationDate": "2021-02-28", + "firmOrderName": "August Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-08-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-03-31", + "firmOrderName": "September Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-11-01" + } + ], + "firmingPeriod": 3, + "initialInventories": [ + { + "expirationDate": "2020-09-30", + "initialInventoryQuantity": 109, + "lotNumber": "Lot C4R1", + "manufactureDate": "2020-03-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 98, + "lotNumber": "Lot C4R2", + "manufactureDate": "2020-04-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 93, + "lotNumber": "Lot C4R3", + "manufactureDate": "2020-04-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 2, + "lotSize": 100, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": { + "2020-10-01": 500, + "2020-11-01": 200 + }, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 3, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": "DP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 1, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": "API", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 2, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": 1111, + "planNotes": "{\"blocks\":[{\"key\":\"d4m4a\",\"text\":\"`July 2020 base plan`\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 30 + }, + "2-3": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 0.5 + } + } +} diff --git a/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-strings-as-numbers.json b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-strings-as-numbers.json new file mode 100644 index 00000000000..13987b97536 --- /dev/null +++ b/src/negative_test/abc-supply-plan-2.0.0/abc-suppply-plan-invalid-strings-as-numbers.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": 22222, + "actuals": {}, + "currency": 44444, + "decimalPrecision": 0, + "demand": { + "2024-05-01": 1 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2024-05-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2024-05-31", + "firmOrderName": 66666, + "firmOrderQuantity": 1, + "manufactureDate": "2024-05-01", + "releaseDate": "2024-05-01" + } + ], + "firmingPeriod": 0, + "initialInventories": [ + { + "expirationDate": "2024-05-31", + "initialInventoryQuantity": 1, + "lotNumber": 55555, + "manufactureDate": "2024-05-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 1, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2024-05-01": 1 + }, + "otherDemandAnnotation": { + "2024-05-01": 77777 + }, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": 33333, + "x": 258, + "y": 75 + } + }, + "planDate": "2024-05-01", + "planNotes": "{\"blocks\":[{\"key\":\"cnktc\",\"text\":\"11111\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {} +} diff --git a/src/negative_test/abc-supply-plan-3.0.0/abc-supply-plan-missing-schema-property.json b/src/negative_test/abc-supply-plan-3.0.0/abc-supply-plan-missing-schema-property.json new file mode 100644 index 00000000000..5ea11ab05e7 --- /dev/null +++ b/src/negative_test/abc-supply-plan-3.0.0/abc-supply-plan-missing-schema-property.json @@ -0,0 +1,6 @@ +{ + "abcMaterialsMap": {}, + "planDate": "2020-03-01", + "planNotes": "{\"blocks\":[{\"key\":\"8o58p\",\"text\":\"Plan for March 2020\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {} +} diff --git a/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-extraneous-property.json b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-extraneous-property.json new file mode 100644 index 00000000000..e84df45feff --- /dev/null +++ b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-extraneous-property.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "abcMaterialsMap": {}, + "planDate": "2020-03-01", + "planNotes": "{\"blocks\":[{\"key\":\"8o58p\",\"text\":\"Plan for March 2020\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {}, + "this_is_an_invalid_property": { + "this_is_an_invalid_object_property": "this_is_an_invalid_object_value" + } +} diff --git a/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-fractional-lot-size.json b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-fractional-lot-size.json new file mode 100644 index 00000000000..0e8ba0e4e28 --- /dev/null +++ b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-fractional-lot-size.json @@ -0,0 +1,152 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-07-01": 100, + "2020-08-01": 125, + "2020-09-01": 150, + "2020-10-01": 175, + "2020-11-01": 200, + "2020-12-01": 110, + "2021-01-01": 140, + "2021-02-01": 130, + "2021-03-01": 205, + "2021-04-01": 210 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2020-11-30", + "firmOrderName": "May Order", + "firmOrderQuantity": 105, + "manufactureDate": "2020-05-01", + "releaseDate": "2020-07-01" + }, + { + "expirationDate": "2020-12-31", + "firmOrderName": "June Order", + "firmOrderQuantity": 103, + "manufactureDate": "2020-06-01", + "releaseDate": "2020-08-01" + }, + { + "expirationDate": "2021-01-31", + "firmOrderName": "July Order", + "firmOrderQuantity": 200, + "manufactureDate": "2020-07-01", + "releaseDate": "2020-09-01" + }, + { + "expirationDate": "2021-02-28", + "firmOrderName": "August Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-08-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-03-31", + "firmOrderName": "September Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-11-01" + } + ], + "firmingPeriod": 3, + "initialInventories": [ + { + "expirationDate": "2020-09-30", + "initialInventoryQuantity": 109, + "lotNumber": "Lot C4R1", + "manufactureDate": "2020-03-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 98, + "lotNumber": "Lot C4R2", + "manufactureDate": "2020-04-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 93, + "lotNumber": "Lot C4R3", + "manufactureDate": "2020-04-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 2, + "lotSize": 100.8, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": { + "2020-10-01": 500, + "2020-11-01": 200 + }, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 3, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + } + }, + "planDate": "2020-07-01", + "planNotes": "{\"blocks\":[{\"key\":\"d4m4a\",\"text\":\"`July 2020 base plan`\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {} +} diff --git a/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-planDate.json b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-planDate.json new file mode 100644 index 00000000000..14e906e2845 --- /dev/null +++ b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-planDate.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "abcMaterialsMap": {}, + "planDate": 1715443874, + "planNotes": "{\"blocks\":[{\"key\":\"d4m4a\",\"text\":\"`July 2020 base plan`\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": {} +} diff --git a/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-strings-as-numbers.json b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-strings-as-numbers.json new file mode 100644 index 00000000000..e0845a9c0f3 --- /dev/null +++ b/src/negative_test/abc-supply-plan-3.0.0/abc-suppply-plan-invalid-strings-as-numbers.json @@ -0,0 +1,297 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": 1, + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-07-01": 100, + "2020-08-01": 125, + "2020-09-01": 150, + "2020-10-01": 175, + "2020-11-01": 200, + "2020-12-01": 110, + "2021-01-01": 140, + "2021-02-01": 130, + "2021-03-01": 205, + "2021-04-01": 210 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2020-11-30", + "firmOrderName": 11, + "firmOrderQuantity": 105, + "manufactureDate": "2020-05-01", + "releaseDate": "2020-07-01" + }, + { + "expirationDate": "2020-12-31", + "firmOrderName": 12, + "firmOrderQuantity": 103, + "manufactureDate": "2020-06-01", + "releaseDate": "2020-08-01" + }, + { + "expirationDate": "2021-01-31", + "firmOrderName": 13, + "firmOrderQuantity": 200, + "manufactureDate": "2020-07-01", + "releaseDate": "2020-09-01" + }, + { + "expirationDate": "2021-02-28", + "firmOrderName": 14, + "firmOrderQuantity": 100, + "manufactureDate": "2020-08-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-03-31", + "firmOrderName": 15, + "firmOrderQuantity": 100, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-11-01" + } + ], + "firmingPeriod": 3, + "initialInventories": [ + { + "expirationDate": "2020-09-30", + "initialInventoryQuantity": 109, + "lotNumber": 20, + "manufactureDate": "2020-03-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 98, + "lotNumber": 21, + "manufactureDate": "2020-04-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 93, + "lotNumber": 22, + "manufactureDate": "2020-04-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 2, + "lotSize": 100, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": { + "2020-10-01": 500, + "2020-11-01": 200 + }, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 3, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": 2, + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 1, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": 3, + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 2, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": "2020-07-01", + "planNotes": "{\"blocks\":[{\"key\":\"d4m4a\",\"text\":\"`July 2020 base plan`\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "allocationMethod": "PercentAllocation", + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "priorityAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "recipe": 30 + }, + "2-3": { + "allocationMethod": "PercentAllocation", + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "priorityAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "recipe": 0.5 + } + } +} diff --git a/src/schema-validation.json b/src/schema-validation.json index ec7a8e2862f..eba49ea84af 100644 --- a/src/schema-validation.json +++ b/src/schema-validation.json @@ -384,6 +384,36 @@ "abcHasUninterruptedTimeDependentValues" ] }, + "abc-supply-plan-2.0.0.json": { + "unknownFormat": ["abc-draft-js_RawDraftContentState"], + "unknownKeywords": [ + "abcIsFirstDayOfMonth", + "abcIsLastDayOfMonth", + "abcIsAfter0001-01-01", + "abcIsBefore9999-12-31", + "abcDoMaterialIDsExist", + "abcIsAcyclic", + "abcIsValidColor", + "abcHasNonOverlappingTimeDependentValues", + "abcHasUninterruptedTimeDependentValues" + ] + }, + "abc-supply-plan-3.0.0.json": { + "unknownFormat": ["abc-draft-js_RawDraftContentState"], + "unknownKeywords": [ + "abcIsFirstDayOfMonth", + "abcIsLastDayOfMonth", + "abcIsAfter0001-01-01", + "abcIsBefore9999-12-31", + "abcDoMaterialIDsExist", + "abcIsAcyclic", + "abcAreAllocationMethodsHomogeneous", + "abcIsValidColor", + "abcNoDuplicateValuesForOrderingProperty", + "abcHasNonOverlappingTimeDependentValues", + "abcHasUninterruptedTimeDependentValues" + ] + }, "anywork-ac-1.0.json": { "externalSchema": ["base.json"], "unknownKeywords": [] diff --git a/src/schemas/json/abc-supply-plan-2.0.0.json b/src/schemas/json/abc-supply-plan-2.0.0.json new file mode 100644 index 00000000000..7092d058890 --- /dev/null +++ b/src/schemas/json/abc-supply-plan-2.0.0.json @@ -0,0 +1,569 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "title": "ABCSupplyPlan JSON Schema", + "description": "Schema defining the structure of ABCSupplyPlan used for managing plan data in ABC-Plan's MasterPlanner.", + "properties": { + "$schema": { + "description": "Link to https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "type": "string", + "enum": ["https://json.schemastore.org/abc-supply-plan-2.0.0.json"] + }, + "planDate": { + "type": "string", + "format": "date", + "title": "Plan Date", + "description": "The start date for the plan. Format: first day of a month.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "organizationID": { + "type": "string", + "title": "Organization ID", + "description": "The identifier for the organization to which the plan belongs." + }, + "planNotes": { + "type": "string", + "format": "abc-draft-js_RawDraftContentState", + "title": "Plan Notes", + "description": "Notes or comments about the plan in a specified format. Since there is no JSON Schema for draft-js, the underlying component for mui-rte, format abc-draft-js_RawDraftContentState is enforced by calling https://draftjs.org/docs/api-reference-data-conversion/#convertfromraw. see also: https://github.com/facebookarchive/draft-js/issues/2071 and https://github.com/facebookarchive/draft-js/issues/1544" + }, + "abcMaterialsMap": { + "type": "object", + "patternProperties": { + "^\\d+$": { + "$ref": "#/definitions/ABCMaterialState" + } + }, + "additionalProperties": false, + "title": "ABC Materials Map", + "description": "A mapping of material IDs to their respective states within the ABC system." + }, + "recipeMap": { + "type": "object", + "patternProperties": { + "^\\d+-\\d+$": { + "$ref": "#/definitions/RecipeState" + } + }, + "additionalProperties": false, + "title": "Recipe Map", + "description": "A mapping of recipes, representing the relationships and dependencies between materials.", + "abcDoMaterialIDsExist": true, + "abcIsAcyclic": true + } + }, + "required": [ + "$schema", + "planDate", + "planNotes", + "abcMaterialsMap", + "recipeMap" + ], + "additionalProperties": false, + "type": "object", + "definitions": { + "ABCMaterialState": { + "type": "object", + "title": "ABC Material State", + "description": "Represents the state of a material in the system including its attributes and planning parameters.", + "properties": { + "x": { + "type": "number", + "title": "X Coordinate", + "description": "The X coordinate position of the material in a graphical representation." + }, + "y": { + "type": "number", + "title": "Y Coordinate", + "description": "The Y coordinate position of the material in a graphical representation." + }, + "ordering": { + "type": "number", + "title": "Ordering", + "description": "Numeric value representing the order or sequence of the material." + }, + "abcMaterialName": { + "type": "string", + "minLength": 1, + "title": "Material Name", + "description": "The name of the material." + }, + "uom": { + "type": "string", + "minLength": 1, + "title": "Unit of Measure", + "description": "The unit of measure used for the material." + }, + "materialShape": { + "type": "string", + "enum": [ + "circle", + "square", + "diamond", + "rectangle", + "parallelogram", + "trapezoid", + "triangle", + "pentagon", + "hexagon" + ], + "title": "Material Shape", + "description": "The shape of the material represented graphically." + }, + "materialColor": { + "$ref": "#/definitions/Color" + }, + "doExpiryCarryover": { + "type": "boolean", + "title": "Expiry Carryover", + "description": "Indicates whether to carry over the expiry information for the material." + }, + "isCapacityConstraintNode": { + "type": "boolean", + "title": "Capacity Constraint Node", + "description": "Determines if the material is a node where capacity constraints are applied." + }, + "inventoryMethod": { + "type": "string", + "enum": ["TargetMFC", "MinimumInventory"], + "title": "Inventory Method", + "description": "The method used for managing inventory levels, either target months forward coverage or minimum inventory." + }, + "decimalPrecision": { + "type": "integer", + "minimum": 0, + "maximum": 5, + "title": "Decimal Precision", + "description": "The precision of decimal places allowed for numerical entries related to the material." + }, + "currency": { + "type": "string", + "minLength": 1, + "title": "Currency", + "description": "The currency used for pricing and cost calculations of the material." + }, + "unitCost": { + "type": "number", + "minimum": 0, + "title": "Unit Cost", + "description": "The cost per unit of the material." + }, + "lotSize": { + "$comment": "Require integer until we fix https://gitlab.com/abc-plan/abc-plan-server/-/issues/9", + "type": "integer", + "minimum": 0, + "title": "Lot Size", + "description": "Batch size for orders. Must be greater than 0 to plan, etc. The strictly non-negative requirement is a known issue being addressed." + }, + "leadTime": { + "type": "integer", + "minimum": 0, + "title": "Lead Time", + "description": "Delay between Manufacture Date and Release Date. Format: non-negative integer." + }, + "firmingPeriod": { + "type": "integer", + "minimum": 0, + "title": "Firming Period", + "description": "Time during which no Planned Orders are allowed. Format: non-negative integer." + }, + "targetMFC": { + "type": "integer", + "minimum": 0, + "title": "Target MFC", + "description": "Target Months Forward Coverage refers to a dynamic safety stock level—a buffer quantity of inventory designed to mitigate the risk of stock-outs caused by variability in Demand. In essence, it represents the number of months of Demand that could be satisfied assuming no additional material is manufactured. Format: non-negative integer." + }, + "minimumInventory": { + "type": "integer", + "minimum": 0, + "title": "Minimum Inventory", + "description": "Minimum Inventory denotes the lowest stock level to prevent outages, triggering restock. Format: non-negative integer." + }, + "shelfLives": { + "$ref": "#/definitions/NonNegativeNonNegativeIntegerTimeDependentValues", + "title": "Shelf Lives", + "description": "List of shelf life values, each defined for a specific period of time." + }, + "stopshipBuffers": { + "$ref": "#/definitions/NonNegativeNonNegativeIntegerTimeDependentValues", + "title": "Stopship Buffers", + "description": "Buffers to account for stopship scenarios, listed for different periods." + }, + "initialInventories": { + "type": "array", + "items": { + "$ref": "#/definitions/InitialInventory" + }, + "title": "Initial Inventories", + "description": "List of initial inventory records, each associated with specific lot and dates." + }, + "firmOrders": { + "type": "array", + "items": { + "$ref": "#/definitions/FirmOrder" + }, + "title": "Firm Orders", + "description": "List of firm orders with their respective quantities and dates." + }, + "demand": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Demand", + "description": "Map of demand values with specific dates as keys." + }, + "otherDemand": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Other Demand", + "description": "Map of other types of demand not included in the primary demand values." + }, + "otherDemandAnnotation": { + "$ref": "#/definitions/AnnotationMap", + "title": "Other Demand Annotation", + "description": "Annotations related to other demand entries, providing additional context." + }, + "actuals": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Actuals", + "description": "Map of actual quantities, corresponding to real data collected." + }, + "plannedOrders": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Planned Orders", + "description": "Map of planned order quantities, anticipated ahead of time." + }, + "expiryAdjustments": { + "$ref": "#/definitions/NegativeDateMap", + "title": "Expiry Adjustments", + "description": "Adjustments made to account for expired materials, reducing quantities." + }, + "timeAggregateType": { + "type": "string", + "enum": ["Annual", "Quarterly", "Monthly"], + "title": "Time Aggregate Type", + "description": "The aggregation level for planning and reporting, e.g., annual, quarterly, or monthly." + }, + "showQuantitiesAs": { + "type": "string", + "enum": ["Units", "Lots", "Cost"], + "title": "Show Quantities As", + "description": "Defines how quantities are represented, e.g., in units, lots, or cost." + }, + "expiryAnalysisType": { + "type": "string", + "enum": ["Expiration", "Stopship"], + "title": "Expiry Analysis Type", + "description": "Determines the type of analysis to be performed on expiry data, focusing on expiration or stopship scenarios." + }, + "timeDependentPlanningParameters": { + "type": "boolean", + "title": "Time Dependent Planning Parameters", + "description": "Indicates whether planning parameters are dependent on time, necessitating different values at different periods." + } + }, + "required": [ + "x", + "y", + "ordering", + "abcMaterialName", + "uom", + "materialShape", + "materialColor", + "doExpiryCarryover", + "isCapacityConstraintNode", + "inventoryMethod", + "decimalPrecision", + "currency", + "unitCost", + "lotSize", + "leadTime", + "firmingPeriod", + "targetMFC", + "minimumInventory" + ], + "additionalProperties": false + }, + "RecipeState": { + "type": "object", + "title": "Recipe State", + "description": "Defines a recipe within the system, including its components and yields.", + "properties": { + "recipe": { + "type": "number", + "exclusiveMinimum": 0, + "title": "Recipe ID", + "description": "Unique identifier of the recipe." + }, + "percentAllocations": { + "$ref": "#/definitions/PercentTimeDependentValues", + "title": "Percent Allocations", + "description": "Percentage allocations of materials to the recipe over different periods." + }, + "percentYield": { + "type": "number", + "minimum": 0, + "title": "Percent Yield", + "description": "The yield percentage of the recipe, indicating efficiency." + } + }, + "required": ["recipe", "percentAllocations", "percentYield"], + "additionalProperties": false + }, + "PositiveDateMap": { + "type": "object", + "title": "Positive Date Map", + "description": "Mapping of dates to positive numerical values, typically representing demand or supply quantities.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "number", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "NegativeDateMap": { + "type": "object", + "title": "Negative Date Map", + "description": "Mapping of dates to negative numerical values, typically representing adjustments or reductions.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "number", + "maximum": 0 + } + }, + "additionalProperties": false + }, + "AnnotationMap": { + "type": "object", + "title": "Annotation Map", + "description": "Mapping of dates to annotations, providing context or explanations for numerical data entries.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Color": { + "type": "string", + "title": "Color", + "description": "Colors may be specified in any string-based format supported by the Color constructor documented at https://www.npmjs.com/package/color", + "abcIsValidColor": "true" + }, + "TemplateTimeDependentValue": { + "$comment": "additionalProperties is true because this object acts as a template and is merged with other type definitions to specify valid date ranges for time-dependent values.", + "type": "object", + "title": "Template Time Dependent Value", + "description": "Base template for defining time-dependent values, specifying the valid date ranges for such values.", + "properties": { + "startDate": { + "title": "Start Date", + "description": "The start date for the time-dependent value. Must be the first day of a month and within a valid date range.", + "oneOf": [ + { + "type": "string", + "format": "date", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + { + "type": "null" + } + ] + }, + "endDate": { + "title": "End Date", + "description": "The end date for the time-dependent value. Must be the last day of a month and within a valid date range.", + "oneOf": [ + { + "type": "string", + "format": "date", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + { + "type": "null" + } + ] + } + }, + "required": ["startDate", "endDate"], + "additionalProperties": true + }, + "PercentValueConstraints": { + "$comment": "additionalProperties is true because it is a template and gets merged with other types", + "type": "object", + "title": "Percent Value Constraints", + "description": "Constraints for percentage values, defining the valid range as 0% to 100%.", + "properties": { + "timeDependentValue": { + "description": "During a particular period of time for this recipe, how much of the downstream consumption is allocated to the upstream material. Format: 0-1 which correspond to 0%-100%.", + "type": "number", + "minimum": 0, + "maximum": 1 + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "PercentTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/PercentValueConstraints" + } + ], + "title": "Percent Time Dependent Value", + "description": "Defines a time-specific percentage value within a valid date range, adhering to percentage constraints." + }, + "PercentTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/PercentTimeDependentValue" + }, + "title": "Percent Time Dependent Values", + "description": "Array of time-dependent percentage values, each specifying the allocation for a given period.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "NonNegativeIntegerConstraints": { + "$comment": "additionalProperties is true because this object acts as a template and is merged with other type definitions to enforce non-negative integer constraints in various scenarios.", + "type": "object", + "title": "Non-Negative Integer Constraints", + "description": "Defines constraints for integer values to ensure they are non-negative, used in various time-dependent value configurations.", + "properties": { + "timeDependentValue": { + "type": "integer", + "minimum": 0, + "title": "Time Dependent Value", + "description": "An integer value that cannot be negative, typically representing quantities or counts in a time-dependent context." + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "NonNegativeIntegerTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/NonNegativeIntegerConstraints" + } + ], + "title": "Non-Negative Integer Time Dependent Value", + "description": "Defines a time-specific integer value within a valid date range, ensuring it is non-negative." + }, + "NonNegativeNonNegativeIntegerTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/NonNegativeIntegerTimeDependentValue" + }, + "title": "Non-Negative Integer Time Dependent Values", + "description": "Array of time-dependent integer values, ensuring each is non-negative.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "InitialInventory": { + "type": "object", + "title": "Initial Inventory", + "description": "Defines the initial inventory of a material, including lot number and associated dates.", + "properties": { + "lotNumber": { + "type": "string", + "minLength": 1, + "title": "Lot Number", + "description": "The identifier for the lot number of the inventory item. It must be at least 1 character in length." + }, + "initialInventoryQuantity": { + "type": "number", + "minimum": 0, + "title": "Initial Inventory Quantity", + "description": "The quantity of the inventory item when first recorded. This must be a non-negative number." + }, + "manufactureDate": { + "type": "string", + "format": "date", + "title": "Manufacture Date", + "description": "The date the item was manufactured. This date must be the first day of a month and fall within a valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "expirationDate": { + "type": "string", + "format": "date", + "title": "Expiration Date", + "description": "The date the item will expire. This date must be the last day of a month and fall within a valid date range.", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + } + }, + "required": [ + "lotNumber", + "initialInventoryQuantity", + "manufactureDate", + "expirationDate" + ], + "additionalProperties": false + }, + "FirmOrder": { + "type": "object", + "title": "Firm Order", + "description": "Defines a firm order within the system, including order details and relevant dates.", + "properties": { + "firmOrderName": { + "type": "string", + "title": "Firm Order Name", + "description": "The name or identifier of the firm order." + }, + "firmOrderQuantity": { + "type": "number", + "minimum": 0, + "title": "Firm Order Quantity", + "description": "The quantity specified in the firm order. Must be a non-negative value." + }, + "manufactureDate": { + "type": "string", + "format": "date", + "title": "Manufacture Date", + "description": "The date the goods are scheduled to be manufactured. Must be the first day of the month and within valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "releaseDate": { + "type": "string", + "format": "date", + "title": "Release Date", + "description": "The date the goods are scheduled to be released. Must be the first day of the month and within valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "expirationDate": { + "type": "string", + "format": "date", + "title": "Expiration Date", + "description": "The expiration date of the product. Must be the last day of the month and within valid date range.", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + } + }, + "required": [ + "firmOrderName", + "firmOrderQuantity", + "manufactureDate", + "releaseDate", + "expirationDate" + ], + "additionalProperties": false + } + } +} diff --git a/src/schemas/json/abc-supply-plan-3.0.0.json b/src/schemas/json/abc-supply-plan-3.0.0.json new file mode 100644 index 00000000000..fb6c60e52e0 --- /dev/null +++ b/src/schemas/json/abc-supply-plan-3.0.0.json @@ -0,0 +1,669 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "title": "ABCSupplyPlan JSON Schema", + "description": "Schema defining the structure of ABCSupplyPlan used for managing plan data in ABC-Plan's MasterPlanner.", + "properties": { + "$schema": { + "description": "Link to https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "type": "string", + "enum": ["https://json.schemastore.org/abc-supply-plan-3.0.0.json"] + }, + "planDate": { + "type": "string", + "format": "date", + "title": "Plan Date", + "description": "The start date for the plan. Format: first day of a month.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "organizationID": { + "type": "string", + "title": "Organization ID", + "description": "The identifier for the organization to which the plan belongs." + }, + "planNotes": { + "type": "string", + "format": "abc-draft-js_RawDraftContentState", + "title": "Plan Notes", + "description": "Notes or comments about the plan in a specified format. Since there is no JSON Schema for draft-js, the underlying component for mui-rte, format abc-draft-js_RawDraftContentState is enforced by calling https://draftjs.org/docs/api-reference-data-conversion/#convertfromraw. see also: https://github.com/facebookarchive/draft-js/issues/2071 and https://github.com/facebookarchive/draft-js/issues/1544" + }, + "abcMaterialsMap": { + "type": "object", + "patternProperties": { + "^\\d+$": { + "$ref": "#/definitions/ABCMaterialState" + } + }, + "additionalProperties": false, + "title": "ABC Materials Map", + "description": "A mapping of material IDs to their respective states within the ABC system.", + "abcNoDuplicateValuesForOrderingProperty": true + }, + "recipeMap": { + "type": "object", + "patternProperties": { + "^\\d+-\\d+$": { + "$ref": "#/definitions/RecipeState" + } + }, + "additionalProperties": false, + "title": "Recipe Map", + "description": "A mapping of recipes, representing the acyclic relationships among materials. abcAreAllocationMethodsHomogeneous requires no mixing of Allocation Methods. A downstream material cannot have mixed upstream recipes. An upstream material cannot have mixed downstream recipes.", + "abcDoMaterialIDsExist": true, + "abcIsAcyclic": true, + "abcAreAllocationMethodsHomogeneous": true + } + }, + "required": [ + "$schema", + "planDate", + "planNotes", + "abcMaterialsMap", + "recipeMap" + ], + "additionalProperties": false, + "type": "object", + "definitions": { + "ABCMaterialState": { + "type": "object", + "title": "ABC Material State", + "description": "Represents the state of a material in the system including its attributes and planning parameters.", + "properties": { + "x": { + "type": "number", + "title": "X Coordinate", + "description": "The X coordinate position of the material in a graphical representation." + }, + "y": { + "type": "number", + "title": "Y Coordinate", + "description": "The Y coordinate position of the material in a graphical representation." + }, + "ordering": { + "type": "number", + "title": "Ordering", + "description": "Numeric value representing the order or sequence of the material." + }, + "abcMaterialName": { + "type": "string", + "minLength": 1, + "title": "Material Name", + "description": "The name of the material." + }, + "uom": { + "type": "string", + "minLength": 1, + "title": "Unit of Measure", + "description": "The unit of measure used for the material." + }, + "materialShape": { + "type": "string", + "enum": [ + "circle", + "square", + "diamond", + "rectangle", + "parallelogram", + "trapezoid", + "triangle", + "pentagon", + "hexagon" + ], + "title": "Material Shape", + "description": "The shape of the material represented graphically." + }, + "materialColor": { + "$ref": "#/definitions/Color" + }, + "doExpiryCarryover": { + "type": "boolean", + "title": "Expiry Carryover", + "description": "Indicates whether to carry over the expiry information for the material." + }, + "isCapacityConstraintNode": { + "type": "boolean", + "title": "Capacity Constraint Node", + "description": "Determines if the material is a node where capacity constraints are applied." + }, + "inventoryMethod": { + "type": "string", + "enum": ["TargetMFC", "MinimumInventory"], + "title": "Inventory Method", + "description": "The method used for managing inventory levels, either target months forward coverage or minimum inventory." + }, + "decimalPrecision": { + "type": "integer", + "minimum": 0, + "maximum": 5, + "title": "Decimal Precision", + "description": "The precision of decimal places allowed for numerical entries related to the material." + }, + "currency": { + "type": "string", + "minLength": 1, + "title": "Currency", + "description": "The currency used for pricing and cost calculations of the material." + }, + "unitCost": { + "type": "number", + "minimum": 0, + "title": "Unit Cost", + "description": "The cost per unit of the material." + }, + "lotSize": { + "$comment": "Require integer until we fix https://gitlab.com/abc-plan/abc-plan-server/-/issues/9", + "type": "integer", + "minimum": 0, + "title": "Lot Size", + "description": "Batch size for orders. Must be greater than 0 to plan, etc. The strictly non-negative requirement is a known issue being addressed." + }, + "leadTime": { + "type": "integer", + "minimum": 0, + "title": "Lead Time", + "description": "Delay between Manufacture Date and Release Date. Format: non-negative integer." + }, + "firmingPeriod": { + "type": "integer", + "minimum": 0, + "title": "Firming Period", + "description": "Time during which no Planned Orders are allowed. Format: non-negative integer." + }, + "targetMFC": { + "type": "integer", + "minimum": 0, + "title": "Target MFC", + "description": "Target Months Forward Coverage refers to a dynamic safety stock level—a buffer quantity of inventory designed to mitigate the risk of stock-outs caused by variability in Demand. In essence, it represents the number of months of Demand that could be satisfied assuming no additional material is manufactured. Format: non-negative integer." + }, + "minimumInventory": { + "type": "integer", + "minimum": 0, + "title": "Minimum Inventory", + "description": "Minimum Inventory denotes the lowest stock level to prevent outages, triggering restock. Format: non-negative integer." + }, + "planningFrequencies": { + "$ref": "#/definitions/PositiveIntegerTimeDependentValues", + "title": "Planning Frequencies", + "description": "List of planning frequency values, each defined for a specific period of time." + }, + "shelfLives": { + "$ref": "#/definitions/NonNegativeIntegerTimeDependentValues", + "title": "Shelf Lives", + "description": "List of shelf life values, each defined for a specific period of time." + }, + "stopshipBuffers": { + "$ref": "#/definitions/NonNegativeIntegerTimeDependentValues", + "title": "Stopship Buffers", + "description": "Buffers to account for stopship scenarios, listed for different periods." + }, + "initialInventories": { + "type": "array", + "items": { + "$ref": "#/definitions/InitialInventory" + }, + "title": "Initial Inventories", + "description": "List of initial inventory records, each associated with specific lot and dates." + }, + "firmOrders": { + "type": "array", + "items": { + "$ref": "#/definitions/FirmOrder" + }, + "title": "Firm Orders", + "description": "List of firm orders with their respective quantities and dates." + }, + "demand": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Demand", + "description": "Map of demand values with specific dates as keys." + }, + "otherDemand": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Other Demand", + "description": "Map of other types of demand not included in the primary demand values." + }, + "otherDemandAnnotation": { + "$ref": "#/definitions/AnnotationMap", + "title": "Other Demand Annotation", + "description": "Annotations related to other demand entries, providing additional context." + }, + "actuals": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Actuals", + "description": "Map of actual quantities, corresponding to real data collected." + }, + "plannedOrders": { + "$ref": "#/definitions/PositiveDateMap", + "title": "Planned Orders", + "description": "Map of planned order quantities, anticipated ahead of time." + }, + "expiryAdjustments": { + "$ref": "#/definitions/NegativeDateMap", + "title": "Expiry Adjustments", + "description": "Adjustments made to account for expired materials, reducing quantities." + }, + "timeAggregateType": { + "type": "string", + "enum": ["Annual", "Quarterly", "Monthly"], + "title": "Time Aggregate Type", + "description": "The aggregation level for planning and reporting, e.g., annual, quarterly, or monthly." + }, + "showQuantitiesAs": { + "type": "string", + "enum": ["Units", "Lots", "Cost"], + "title": "Show Quantities As", + "description": "Defines how quantities are represented, e.g., in units, lots, or cost." + }, + "expiryAnalysisType": { + "type": "string", + "enum": ["Expiration", "Stopship"], + "title": "Expiry Analysis Type", + "description": "Determines the type of analysis to be performed on expiry data, focusing on expiration or stopship scenarios." + }, + "timeDependentPlanningParameters": { + "type": "boolean", + "title": "Time Dependent Planning Parameters", + "description": "Indicates whether planning parameters are dependent on time, necessitating different values at different periods." + } + }, + "required": [ + "x", + "y", + "ordering", + "abcMaterialName", + "uom", + "materialShape", + "materialColor", + "doExpiryCarryover", + "isCapacityConstraintNode", + "inventoryMethod", + "decimalPrecision", + "currency", + "unitCost", + "lotSize", + "leadTime", + "firmingPeriod", + "targetMFC", + "minimumInventory" + ], + "additionalProperties": false + }, + "RecipeState": { + "type": "object", + "title": "Recipe State", + "description": "Defines a recipe within the system, including its components and yields.", + "properties": { + "recipe": { + "type": "number", + "exclusiveMinimum": 0, + "title": "Recipe ID", + "description": "Unique identifier of the recipe." + }, + "allocationMethod": { + "type": "string", + "enum": ["PercentAllocation", "PriorityAllocation"], + "title": "Consumption Allocation", + "description": "Method for allocating downstream consumption to upstream materials." + }, + "percentAllocations": { + "$ref": "#/definitions/PercentTimeDependentValues", + "title": "Percent Allocations", + "description": "Percentage allocations of materials to the recipe over different periods." + }, + "priorityAllocations": { + "$ref": "#/definitions/NonNegativeNumberTimeDependentValues", + "title": "Priority Allocations", + "description": "Priority allocations of materials to the recipe over different periods." + }, + "percentYield": { + "type": "number", + "minimum": 0, + "title": "Percent Yield", + "description": "The yield percentage of the recipe, indicating efficiency." + } + }, + "required": [ + "recipe", + "allocationMethod", + "percentAllocations", + "priorityAllocations", + "percentYield" + ], + "additionalProperties": false + }, + "PositiveDateMap": { + "type": "object", + "title": "Positive Date Map", + "description": "Mapping of dates to positive numerical values, typically representing demand or supply quantities.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "number", + "minimum": 0 + } + }, + "additionalProperties": false + }, + "NegativeDateMap": { + "type": "object", + "title": "Negative Date Map", + "description": "Mapping of dates to negative numerical values, typically representing adjustments or reductions.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "number", + "maximum": 0 + } + }, + "additionalProperties": false + }, + "AnnotationMap": { + "type": "object", + "title": "Annotation Map", + "description": "Mapping of dates to annotations, providing context or explanations for numerical data entries.", + "patternProperties": { + "^\\d{4}-(0[1-9]|1[0-2])-01$": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Color": { + "type": "string", + "title": "Color", + "description": "Colors may be specified in any string-based format supported by the Color constructor documented at https://www.npmjs.com/package/color", + "abcIsValidColor": "true" + }, + "TemplateTimeDependentValue": { + "$comment": "additionalProperties is true because this object acts as a template and is merged with other type definitions to specify valid date ranges for time-dependent values.", + "type": "object", + "title": "Template Time Dependent Value", + "description": "Base template for defining time-dependent values, specifying the valid date ranges for such values.", + "properties": { + "startDate": { + "title": "Start Date", + "description": "The start date for the time-dependent value. Must be the first day of a month and within a valid date range.", + "oneOf": [ + { + "type": "string", + "format": "date", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + { + "type": "null" + } + ] + }, + "endDate": { + "title": "End Date", + "description": "The end date for the time-dependent value. Must be the last day of a month and within a valid date range.", + "oneOf": [ + { + "type": "string", + "format": "date", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + { + "type": "null" + } + ] + } + }, + "required": ["startDate", "endDate"], + "additionalProperties": true + }, + "PercentValueConstraints": { + "$comment": "additionalProperties is true because it is a template and gets merged with other types", + "type": "object", + "title": "Percent Value Constraints", + "description": "Constraints for percentage values, defining the valid range as 0% to 100%.", + "properties": { + "timeDependentValue": { + "description": "During a particular period of time for this recipe, how much of the downstream consumption is allocated to the upstream material. Format: 0-1 which correspond to 0%-100%.", + "type": "number", + "minimum": 0, + "maximum": 1 + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "PercentTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/PercentValueConstraints" + } + ], + "title": "Percent Time Dependent Value", + "description": "Defines a time-specific percentage value within a valid date range, adhering to percentage constraints." + }, + "PercentTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/PercentTimeDependentValue" + }, + "title": "Percent Time Dependent Values", + "description": "Array of time-dependent percentage values, each specifying the allocation for a given period.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "NonNegativeIntegerConstraints": { + "$comment": "additionalProperties is true because this object acts as a template and is merged with other type definitions to enforce non-negative integer constraints in various scenarios.", + "type": "object", + "title": "Non-Negative Integer Constraints", + "description": "Defines constraints for integer values to ensure they are non-negative, used in various time-dependent value configurations.", + "properties": { + "timeDependentValue": { + "type": "integer", + "minimum": 0, + "title": "Time Dependent Value", + "description": "An integer value that cannot be negative, typically representing quantities or counts in a time-dependent context." + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "NonNegativeIntegerTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/NonNegativeIntegerConstraints" + } + ], + "title": "Non-Negative Integer Time Dependent Value", + "description": "Defines a time-specific integer value within a valid date range, ensuring it is non-negative." + }, + "NonNegativeIntegerTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/NonNegativeIntegerTimeDependentValue" + }, + "title": "Non-Negative Integer Time Dependent Values", + "description": "Array of time-dependent integer values, ensuring each is non-negative.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "NonNegativeNumberConstraints": { + "$comment": "additionalProperties is true to allow merging this object with other type definitions to enforce non-negative number constraints in various scenarios.", + "type": "object", + "title": "Non-Negative Number Constraints", + "description": "Defines constraints for numbers to ensure they are non-negative, used in various contexts.", + "properties": { + "timeDependentValue": { + "type": "number", + "minimum": 0, + "title": "Non-Negative Number", + "description": "A non-negative number, used in various contexts to represent quantities or counts." + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "NonNegativeNumberTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/NonNegativeNumberConstraints" + } + ], + "title": "Non-Negative Number Time Dependent Value", + "description": "Defines a time-specific number within a valid range, ensuring it is non-negative." + }, + "NonNegativeNumberTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/NonNegativeNumberTimeDependentValue" + }, + "title": "Non-Negative Number Time Dependent Values", + "description": "Array of time-dependent non-negative numbers.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "PositiveIntegerConstraints": { + "$comment": "additionalProperties is set to true because this object acts as a template and is merged with other type definitions to enforce positive integer constraints in various scenarios.", + "type": "object", + "title": "Positive Integer Constraints", + "description": "Defines constraints for integer values to ensure they are positive, used in various configurations where a strictly positive value is required.", + "properties": { + "timeDependentValue": { + "type": "integer", + "minimum": 1, + "title": "Time Dependent Value", + "description": "An integer value that must be positive, typically representing quantities or counts in contexts where zero is not a valid value." + } + }, + "required": ["timeDependentValue"], + "additionalProperties": true + }, + "PositiveIntegerTimeDependentValue": { + "allOf": [ + { + "$ref": "#/definitions/TemplateTimeDependentValue" + }, + { + "$ref": "#/definitions/PositiveIntegerConstraints" + } + ], + "title": "Positive Integer Time Dependent Value", + "description": "Defines a time-specific integer value that must always be positive, ensuring it meets the requirements of scenarios where zero or negative numbers are not permitted." + }, + "PositiveIntegerTimeDependentValues": { + "type": "array", + "items": { + "$ref": "#/definitions/PositiveIntegerTimeDependentValue" + }, + "title": "Positive Integer Time Dependent Values", + "description": "Array of time-dependent integer values, ensuring each is positive. This setup is intended for scenarios where values must always be greater than zero.", + "abcHasNonOverlappingTimeDependentValues": "true", + "abcHasUninterruptedTimeDependentValues": "true" + }, + "InitialInventory": { + "type": "object", + "title": "Initial Inventory", + "description": "Defines the initial inventory of a material, including lot number and associated dates.", + "properties": { + "lotNumber": { + "type": "string", + "minLength": 1, + "title": "Lot Number", + "description": "The identifier for the lot number of the inventory item. It must be at least 1 character in length." + }, + "initialInventoryQuantity": { + "type": "number", + "minimum": 0, + "title": "Initial Inventory Quantity", + "description": "The quantity of the inventory item when first recorded. This must be a non-negative number." + }, + "manufactureDate": { + "type": "string", + "format": "date", + "title": "Manufacture Date", + "description": "The date the item was manufactured. This date must be the first day of a month and fall within a valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "expirationDate": { + "type": "string", + "format": "date", + "title": "Expiration Date", + "description": "The date the item will expire. This date must be the last day of a month and fall within a valid date range.", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + } + }, + "required": [ + "lotNumber", + "initialInventoryQuantity", + "manufactureDate", + "expirationDate" + ], + "additionalProperties": false + }, + "FirmOrder": { + "type": "object", + "title": "Firm Order", + "description": "Defines a firm order within the system, including order details and relevant dates.", + "properties": { + "firmOrderName": { + "type": "string", + "title": "Firm Order Name", + "description": "The name or identifier of the firm order." + }, + "firmOrderQuantity": { + "type": "number", + "minimum": 0, + "title": "Firm Order Quantity", + "description": "The quantity specified in the firm order. Must be a non-negative value." + }, + "manufactureDate": { + "type": "string", + "format": "date", + "title": "Manufacture Date", + "description": "The date the goods are scheduled to be manufactured. Must be the first day of the month and within valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "releaseDate": { + "type": "string", + "format": "date", + "title": "Release Date", + "description": "The date the goods are scheduled to be released. Must be the first day of the month and within valid date range.", + "abcIsFirstDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + }, + "expirationDate": { + "type": "string", + "format": "date", + "title": "Expiration Date", + "description": "The expiration date of the product. Must be the last day of the month and within valid date range.", + "abcIsLastDayOfMonth": true, + "abcIsAfter0001-01-01": true, + "abcIsBefore9999-12-31": true + } + }, + "required": [ + "firmOrderName", + "firmOrderQuantity", + "manufactureDate", + "releaseDate", + "expirationDate" + ], + "additionalProperties": false + } + } +} diff --git a/src/test/abc-supply-plan-2.0.0/abc-supply-plan.json b/src/test/abc-supply-plan-2.0.0/abc-supply-plan.json new file mode 100644 index 00000000000..942d63da6a2 --- /dev/null +++ b/src/test/abc-supply-plan-2.0.0/abc-supply-plan.json @@ -0,0 +1,299 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-2.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-03-01": 0, + "2020-04-01": 2117, + "2020-05-01": 2214, + "2020-06-01": 2285, + "2020-07-01": 2516, + "2020-08-01": 2675, + "2020-09-01": 2833, + "2020-10-01": 3006, + "2020-11-01": 3196, + "2020-12-01": 3414, + "2021-01-01": 3630, + "2021-02-01": 3859, + "2021-03-01": 4105, + "2021-04-01": 4369, + "2021-05-01": 4651, + "2021-06-01": 4948, + "2021-07-01": 5263, + "2021-08-01": 5600, + "2021-09-01": 5959, + "2021-10-01": 6341, + "2021-11-01": 6748, + "2021-12-01": 7180, + "2022-01-01": 7639, + "2022-02-01": 8128, + "2022-03-01": 8648, + "2022-04-01": 9202, + "2022-05-01": 9791, + "2022-06-01": 10417 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-03-01": 0, + "2020-04-01": 0, + "2020-05-01": 0, + "2020-06-01": 0, + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0, + "2021-05-01": 0, + "2021-06-01": 0, + "2021-07-01": 0, + "2021-08-01": 0, + "2021-09-01": 0, + "2021-10-01": 0, + "2021-11-01": 0, + "2021-12-01": 0, + "2022-01-01": 0, + "2022-02-01": 0, + "2022-03-01": 0, + "2022-04-01": 0, + "2022-05-01": 0, + "2022-06-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2021-03-31", + "firmOrderName": "Sep Firm Order", + "firmOrderQuantity": 2000, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-05-31", + "firmOrderName": "Nov Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2020-11-01", + "releaseDate": "2020-12-01" + }, + { + "expirationDate": "2021-08-31", + "firmOrderName": "Feb Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2021-02-01", + "releaseDate": "2021-03-01" + }, + { + "expirationDate": "2021-07-31", + "firmOrderName": "Jan Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2021-01-01", + "releaseDate": "2021-02-01" + }, + { + "expirationDate": "2021-06-30", + "firmOrderName": "Dec Firm Order", + "firmOrderQuantity": 4000, + "manufactureDate": "2020-12-01", + "releaseDate": "2021-01-01" + } + ], + "firmingPeriod": 6, + "initialInventories": [ + { + "expirationDate": "2020-07-31", + "initialInventoryQuantity": 8000, + "lotNumber": "old lot", + "manufactureDate": "2020-01-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 1, + "lotSize": 2000, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-03-01": 0, + "2020-04-01": 0, + "2020-05-01": 0, + "2020-06-01": 0, + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0, + "2021-05-01": 0, + "2021-06-01": 0, + "2021-07-01": 0, + "2021-08-01": 0, + "2021-09-01": 0, + "2021-10-01": 0, + "2021-11-01": 0, + "2021-12-01": 0, + "2022-01-01": 0, + "2022-02-01": 0, + "2022-03-01": 0, + "2022-04-01": 0, + "2022-05-01": 0, + "2022-06-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 4, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": "DP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 1, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": "API", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 2, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": "2020-03-01", + "planNotes": "{\"blocks\":[{\"key\":\"8o58p\",\"text\":\"Plan for March 2020\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 30 + }, + "2-3": { + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "recipe": 0.5 + } + } +} diff --git a/src/test/abc-supply-plan-3.0.0/abc-supply-plan.json b/src/test/abc-supply-plan-3.0.0/abc-supply-plan.json new file mode 100644 index 00000000000..ca8604ef760 --- /dev/null +++ b/src/test/abc-supply-plan-3.0.0/abc-supply-plan.json @@ -0,0 +1,297 @@ +{ + "$schema": "https://json.schemastore.org/abc-supply-plan-3.0.0.json", + "abcMaterialsMap": { + "1": { + "abcMaterialName": "FDP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": { + "2020-07-01": 100, + "2020-08-01": 125, + "2020-09-01": 150, + "2020-10-01": 175, + "2020-11-01": 200, + "2020-12-01": 110, + "2021-01-01": 140, + "2021-02-01": 130, + "2021-03-01": 205, + "2021-04-01": 210 + }, + "doExpiryCarryover": false, + "expiryAdjustments": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "expiryAnalysisType": "Expiration", + "firmOrders": [ + { + "expirationDate": "2020-11-30", + "firmOrderName": "May Order", + "firmOrderQuantity": 105, + "manufactureDate": "2020-05-01", + "releaseDate": "2020-07-01" + }, + { + "expirationDate": "2020-12-31", + "firmOrderName": "June Order", + "firmOrderQuantity": 103, + "manufactureDate": "2020-06-01", + "releaseDate": "2020-08-01" + }, + { + "expirationDate": "2021-01-31", + "firmOrderName": "July Order", + "firmOrderQuantity": 200, + "manufactureDate": "2020-07-01", + "releaseDate": "2020-09-01" + }, + { + "expirationDate": "2021-02-28", + "firmOrderName": "August Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-08-01", + "releaseDate": "2020-10-01" + }, + { + "expirationDate": "2021-03-31", + "firmOrderName": "September Order", + "firmOrderQuantity": 100, + "manufactureDate": "2020-09-01", + "releaseDate": "2020-11-01" + } + ], + "firmingPeriod": 3, + "initialInventories": [ + { + "expirationDate": "2020-09-30", + "initialInventoryQuantity": 109, + "lotNumber": "Lot C4R1", + "manufactureDate": "2020-03-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 98, + "lotNumber": "Lot C4R2", + "manufactureDate": "2020-04-01" + }, + { + "expirationDate": "2020-10-31", + "initialInventoryQuantity": 93, + "lotNumber": "Lot C4R3", + "manufactureDate": "2020-04-01" + } + ], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 2, + "lotSize": 100, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 0, + "otherDemand": { + "2020-07-01": 0, + "2020-08-01": 0, + "2020-09-01": 0, + "2020-10-01": 0, + "2020-11-01": 0, + "2020-12-01": 0, + "2021-01-01": 0, + "2021-02-01": 0, + "2021-03-01": 0, + "2021-04-01": 0 + }, + "otherDemandAnnotation": {}, + "plannedOrders": { + "2020-10-01": 500, + "2020-11-01": 200 + }, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 6 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 3, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "bottle", + "x": 258, + "y": 75 + }, + "2": { + "abcMaterialName": "DP", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 1, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "tab", + "x": 258, + "y": 275 + }, + "3": { + "abcMaterialName": "API", + "actuals": {}, + "currency": "USD", + "decimalPrecision": 0, + "demand": {}, + "doExpiryCarryover": false, + "expiryAdjustments": {}, + "expiryAnalysisType": "Expiration", + "firmOrders": [], + "firmingPeriod": 0, + "initialInventories": [], + "inventoryMethod": "TargetMFC", + "isCapacityConstraintNode": false, + "leadTime": 0, + "lotSize": 0, + "materialColor": "#3D85C6", + "materialShape": "circle", + "minimumInventory": 0, + "ordering": 2, + "otherDemand": {}, + "otherDemandAnnotation": {}, + "plannedOrders": {}, + "planningFrequencies": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "shelfLives": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "showQuantitiesAs": "Units", + "stopshipBuffers": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 0 + } + ], + "targetMFC": 0, + "timeAggregateType": "Monthly", + "timeDependentPlanningParameters": false, + "unitCost": 0, + "uom": "mg", + "x": 258, + "y": 475 + } + }, + "planDate": "2020-07-01", + "planNotes": "{\"blocks\":[{\"key\":\"d4m4a\",\"text\":\"`July 2020 base plan`\",\"type\":\"unstyled\",\"depth\":0,\"inlineStyleRanges\":[],\"entityRanges\":[],\"data\":{}}],\"entityMap\":{}}", + "recipeMap": { + "1-2": { + "allocationMethod": "PercentAllocation", + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "priorityAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "recipe": 30 + }, + "2-3": { + "allocationMethod": "PercentAllocation", + "percentAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "percentYield": 1, + "priorityAllocations": [ + { + "endDate": null, + "startDate": null, + "timeDependentValue": 1 + } + ], + "recipe": 0.5 + } + } +} From 199d64519416bbe9abb329d97e5d49d60b080fa3 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Tue, 11 Jun 2024 20:35:11 +0200 Subject: [PATCH 08/62] Align bundleDependencies in package.json with npm docs (#3854) --- src/schemas/json/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/schemas/json/package.json b/src/schemas/json/package.json index 42c8f3c114e..d7ed12610c4 100644 --- a/src/schemas/json/package.json +++ b/src/schemas/json/package.json @@ -616,7 +616,7 @@ } } }, - "bundledDependencies": { + "bundleDependencies": { "description": "Array of package names that will be bundled when publishing the package.", "oneOf": [ { @@ -630,8 +630,8 @@ } ] }, - "bundleDependencies": { - "description": "DEPRECATED: This field is honored, but \"bundledDependencies\" is the correct field name.", + "bundledDependencies": { + "description": "DEPRECATED: This field is honored, but \"bundleDependencies\" is the correct field name.", "oneOf": [ { "type": "array", From 362331201ee9887b7aaf993086d3d9f326fd1825 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:47:47 -0700 Subject: [PATCH 09/62] Bump braces from 3.0.2 to 3.0.3 (#3855) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 535f45c3d8e..227ed1c1133 100644 --- a/package-lock.json +++ b/package-lock.json @@ -752,12 +752,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1779,9 +1779,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" From 33c8b890c59c3cb0e6f980b72fd7a3eebd13e834 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 12 Jun 2024 15:21:43 +0100 Subject: [PATCH 10/62] Update all contributors schema (#3853) * Remove enum of valid contribution types * Add commitType property * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Use anyOf for contribution types array --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/schemas/json/all-contributors.json | 84 +++++++++++-------- src/test/all-contributors/commit-type.json | 32 +++++++ .../custom-contribution-type.json} | 2 +- 3 files changed, 81 insertions(+), 37 deletions(-) create mode 100644 src/test/all-contributors/commit-type.json rename src/{negative_test/all-contributors/invalid-contribution.json => test/all-contributors/custom-contribution-type.json} (95%) diff --git a/src/schemas/json/all-contributors.json b/src/schemas/json/all-contributors.json index 6a1f1fa869d..cd9e7ec66b3 100644 --- a/src/schemas/json/all-contributors.json +++ b/src/schemas/json/all-contributors.json @@ -59,6 +59,11 @@ ], "default": "angular" }, + "commitType": { + "description": "UNDOCUMENTED: Sets Conventional Commits commit type to be used by the all contributors bot. See https://www.conventionalcommits.org.", + "type": "string", + "default": "docs" + }, "contributorsPerLine": { "title": "Maximum number of columns for the contributors table", "type": "number", @@ -148,42 +153,49 @@ "type": "array", "minItems": 1, "items": { - "type": "string", - "minLength": 0, - "enum": [ - "a11y", - "audio", - "blog", - "bug", - "business", - "code", - "content", - "data", - "design", - "doc", - "eventOrganizing", - "example", - "financial", - "fundingFinding", - "ideas", - "infra", - "maintenance", - "mentoring", - "platform", - "plugin", - "projectManagement", - "promotion", - "question", - "research", - "review", - "security", - "talk", - "test", - "tool", - "translation", - "tutorial", - "userTesting", - "video" + "anyOf": [ + { + "type": "string", + "enum": [ + "a11y", + "audio", + "blog", + "bug", + "business", + "code", + "content", + "data", + "design", + "doc", + "eventOrganizing", + "example", + "financial", + "fundingFinding", + "ideas", + "infra", + "maintenance", + "mentoring", + "platform", + "plugin", + "projectManagement", + "promotion", + "question", + "research", + "review", + "security", + "talk", + "test", + "tool", + "translation", + "tutorial", + "userTesting", + "video" + ] + }, + { + "type": "string", + "minLength": 0 + } ] } } diff --git a/src/test/all-contributors/commit-type.json b/src/test/all-contributors/commit-type.json new file mode 100644 index 00000000000..e4dbe66eea8 --- /dev/null +++ b/src/test/all-contributors/commit-type.json @@ -0,0 +1,32 @@ +{ + "badgeTemplate": "[![All Contributors](https://img.shields.io/github/all-contributors/<%= projectOwner %>/<%= projectName %>?color=ee8449&style=flat-square)](#contributors)", + "commit": false, + "commitType": "docs", + "contributorTemplate": "\">\" width=\"<%= options.imageSize %>px;\" alt=\"\"/>
<%= contributor.name %>
", + "contributors": [ + { + "avatar_url": "https://avatars1.githubusercontent.com/u/26386270?v=4", + "contributions": ["code", "doc"], + "login": "EndBug", + "name": "Federico Grandi", + "profile": "https://github.com/EndBug" + } + ], + "contributorsPerLine": 7, + "contributorsSortAlphabetically": false, + "files": ["README.md", "CONTRIBUTING.md"], + "imageSize": 100, + "linkToUsage": true, + "projectName": "all-contributors", + "projectOwner": "all-contributors", + "repoHost": "https://github.com", + "repoType": "github", + "skipCi": true, + "types": { + "custom": { + "description": "A custom contribution type.", + "link": "[<%= symbol %>](<%= url %> \"<%= description %>\"),", + "symbol": "🔭" + } + } +} diff --git a/src/negative_test/all-contributors/invalid-contribution.json b/src/test/all-contributors/custom-contribution-type.json similarity index 95% rename from src/negative_test/all-contributors/invalid-contribution.json rename to src/test/all-contributors/custom-contribution-type.json index fc90603f281..91759432134 100644 --- a/src/negative_test/all-contributors/invalid-contribution.json +++ b/src/test/all-contributors/custom-contribution-type.json @@ -5,7 +5,7 @@ "contributors": [ { "avatar_url": "https://avatars1.githubusercontent.com/u/26386270?v=4", - "contributions": ["code", "doc", "jokes"], + "contributions": ["code", "doc", "custom"], "login": "EndBug", "name": "Federico Grandi", "profile": "https://github.com/EndBug" From 2056822098f20e0411c793b4e0054236e4ed32c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=A4u=C3=9Fler?= Date: Thu, 13 Jun 2024 19:10:12 +0200 Subject: [PATCH 11/62] Add cache-warmup config schema (#3856) --- src/api/json/catalog.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index a23239b4aa3..b41ac307695 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -892,6 +892,16 @@ "fileMatch": ["CMakePresets.json", "CMakeUserPresets.json"], "url": "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json" }, + { + "name": "Cache Warmup config", + "description": "Cache Warmup config", + "fileMatch": [ + "cache-warmup.json", + "cache-warmup.yaml", + "cache-warmup.yml" + ], + "url": "https://raw.githubusercontent.com/eliashaeussler/cache-warmup/main/res/cache-warmup-config.schema.json" + }, { "name": "Calqulus pipeline", "description": "Qualisys Calqulus pipeline", From 3930e794b2abb91e37cbabfb448398afeeb617d6 Mon Sep 17 00:00:00 2001 From: InSync Date: Fri, 14 Jun 2024 00:10:47 +0700 Subject: [PATCH 12/62] Update `partial-pyright.json` (#3857) --- src/schemas/json/partial-pyright.json | 903 +++++++++++++++++++------- 1 file changed, 655 insertions(+), 248 deletions(-) diff --git a/src/schemas/json/partial-pyright.json b/src/schemas/json/partial-pyright.json index e095df0907b..45750faf9bb 100644 --- a/src/schemas/json/partial-pyright.json +++ b/src/schemas/json/partial-pyright.json @@ -7,128 +7,43 @@ "definitions": { "diagnostic": { "anyOf": [ - { - "type": "boolean" - }, + { "type": "boolean" }, { "type": "string", "enum": ["none", "information", "warning", "error"] } ] - } - }, - "properties": { - "extends": { - "$id": "#/properties/extends", - "type": "string", - "title": "Path to configuration file that this configuration extends", - "description": "Path to another `.json` or `.toml` file that is used as a \"base configuration\", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", - "x-intellij-html-description": "Path to another .json or .toml file that is used as a "base configuration", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", - "pattern": "^(.*)$" }, - "include": { - "$id": "#/properties/include", - "type": "array", - "title": "Files and directories included in type analysis", - "description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", - "x-intellij-html-description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed.", - "items": { - "$id": "#/properties/include/items", - "type": "string", - "description": "File or directory to include in type analysis", - "pattern": "^(.*)$" - } - }, - "exclude": { - "$id": "#/properties/exclude", - "type": "array", - "title": "Files and directories excluded from type analysis", - "description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", - "x-intellij-html-description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: **/node_modules, **/__pycache__, **/.* and any virtual environment directories.", - "items": { - "$id": "#/properties/exclude/items", - "type": "string", - "title": "File or directory to exclude from type analysis", - "pattern": "^(.*)$" - } - }, - "ignore": { - "$id": "#/properties/ignore", - "type": "array", - "title": "Files and directories whose diagnostics are suppressed", - "description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", - "x-intellij-html-description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", - "items": { - "$id": "#/properties/ignore/items", - "type": "string", - "title": "File or directory where diagnostics should be suppressed", - "pattern": "^(.*)$" - } - }, - "strict": { - "$id": "#/properties/strict", + "extraPaths": { "type": "array", - "title": "Files and directories that should use \"strict\" type checking rules", - "description": "Paths of directories or files that should use \"strict\" analysis if they are included. This is the same as manually adding a `# pyright: strict` comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", - "x-intellij-html-description": "Paths of directories or files that should use "strict" analysis if they are included. This is the same as manually adding a # pyright: strict comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", + "title": "Additional import search resolution paths", + "description": "Additional search paths that will be used when searching for modules imported by files.", "items": { - "$id": "#/properties/strict/items", "type": "string", - "title": "File or directory that should use \"strict\" type checking rules", + "title": "Additional import search resolution path", + "default": "", "pattern": "^(.*)$" } }, - "defineConstant": { - "$id": "#/properties/defineConstant", - "type": "object", - "title": "Identifiers that should be treated as constants", - "description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, `{ \"DEBUG\": true }` indicates that pyright should assume that the identifier `DEBUG` will always be equal to `True`. If this identifier is used within a conditional expression (such as `if not DEBUG:`) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. `my_module.DEBUG`) are also supported.", - "x-intellij-html-description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, { "DEBUG": true } indicates that pyright should assume that the identifier DEBUG will always be equal to True. If this identifier is used within a conditional expression (such as if not DEBUG:) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. my_module.DEBUG) are also supported.", - "properties": {}, - "additionalProperties": { - "type": ["string", "boolean"], - "title": "Value of constant (boolean or string)" - } - }, - "typeCheckingMode": { - "$id": "#/properties/typeCheckingMode", - "type": "string", - "enum": ["off", "basic", "standard", "strict"], - "title": "Specifies the default rule set to use for type checking", - "description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to `off`, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", - "x-intellij-html-description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to off, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", - "default": "standard" - }, - "useLibraryCodeForTypes": { - "$id": "#/properties/useLibraryCodeForTypes", - "type": "boolean", - "title": "Use library implementations to extract type information when type stub is not present", - "description": "Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible.", - "default": true - }, - "typeshedPath": { - "$id": "#/properties/typeshedPath", + "pythonVersion": { "type": "string", - "title": "Path to directory containing `typeshed` type stub files", - "description": "Path to a directory that contains `typeshed` type stub files. Pyright ships with a bundled copy of `typeshed` type stubs. If you want to use a different version of `typeshed` stubs, you can clone the `typeshed` GitHub repo (https://github.com/python/typeshed) to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to `typeshed`.", - "markdownDescription": "Path to a directory that contains `typeshed` type stub files. Pyright ships with a bundled copy of `typeshed` type stubs. If you want to use a different version of `typeshed` stubs, you can clone [the `typeshed` GitHub repo](https://github.com/python/typeshed) to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to `typeshed`.", - "x-intellij-html-description": "Path to a directory that contains typeshed type stub files. Pyright ships with a bundled copy of typeshed type stubs. If you want to use a different version of typeshed stubs, you can clone the typeshed GitHub repo to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to typeshed.", + "title": "Python version to assume during type analysis", + "description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format `M.m` where `M` is the major version and `m` is the minor (e.g. `3.0` or `3.6`). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", + "x-intellij-html-description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format M.m where M is the major version and m is the minor (e.g. 3.0 or 3.6). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", "default": "", - "pattern": "^(.*)$" + "examples": ["3.7"], + "pattern": "^3\\.[0-9]+$" }, - "stubPath": { - "$id": "#/properties/stubPath", - "$comment": "There is a discrepancy between the description in the configuration documentation file and the default value as specified in the schema. Both are kept here for later inspections.", + "pythonPlatform": { "type": "string", - "title": "Path to directory containing custom type stub files", - "description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is `./typings` (`typingsPath` is now deprecated).", - "x-intellij-html-description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is ./typings (typingsPath is now deprecated).", + "title": "Python platform to assume during type analysis", + "description": "Specifies the target platform that will be used to execute the source code. Should be one of `Windows`, `Darwin`, `Linux`, or `All`. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", + "x-intellij-html-description": "Specifies the target platform that will be used to execute the source code. Should be one of Windows, Darwin, Linux, or All. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", "default": "", - "examples": ["src/typestubs"], - "pattern": "^(.*)$" + "examples": ["Linux"], + "pattern": "^(Linux|Windows|Darwin|All)$" }, "disableBytesTypePromotions": { - "$id": "#/properties/disableBytesTypePromotions", "type": "boolean", "title": "Do not treat `bytearray` and `memoryview` as implicit subtypes of `bytes`", "description": "Disables legacy behavior where `bytearray` and `memoryview` are considered subtypes of bytes. PEP 688 deprecates this behavior, but this switch is provided to restore the older behavior.", @@ -137,7 +52,6 @@ "default": false }, "strictListInference": { - "$id": "#/properties/strictListInference", "type": "boolean", "title": "Infer strict types for list expressions", "description": "When inferring the type of a list, use strict type assumptions. For example, the expression `[1, 'a', 3.4]` could be inferred to be of type `list[Any]` or `list[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", @@ -145,7 +59,6 @@ "default": false }, "strictSetInference": { - "$id": "#/properties/strictSetInference", "type": "boolean", "title": "Infer strict types for set expressions", "description": "When inferring the type of a set, use strict type assumptions. For example, the expression `{1, 'a', 3.4}` could be inferred to be of type `set[Any]` or `set[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", @@ -153,7 +66,6 @@ "default": false }, "strictDictionaryInference": { - "$id": "#/properties/strictDictionaryInference", "type": "boolean", "title": "Infer strict types for dictionary expressions", "description": "When inferring the type of a dictionary's keys and values, use strict type assumptions. For example, the expression `{'a': 1, 'b': 'a'}` could be inferred to be of type `dict[str, Any]` or `dict[str, int | str]`. If this setting is `true`, it will use the latter (stricter) type.", @@ -161,14 +73,12 @@ "default": false }, "analyzeUnannotatedFunctions": { - "$id": "#/properties/analyzeUnannotatedFunctions", "type": "boolean", "title": "Analyze and report diagnostics for functions that have no annotations", "description": "Analyze and report errors for functions and methods that have no type annotations for input parameters or return types.", "default": true }, "strictParameterNoneValue": { - "$id": "#/properties/strictParameterNoneValue", "type": "boolean", "title": "Allow implicit Optional when default parameter value is None", "description": "PEP 484 indicates that when a function parameter is assigned a default value of `None`, its type should implicitly be `Optional` even if the explicit type is not. When enabled, this rule requires that parameter type annotations use `Optional` explicitly in this case.", @@ -177,14 +87,12 @@ "default": true }, "enableExperimentalFeatures": { - "$id": "#/properties/enableExperimentalFeatures", "type": "boolean", "title": "Enable the use of experimental features that are not part of the Python typing spec", "description": "Enables a set of experimental (mostly undocumented) features that correspond to proposed or exploratory changes to the Python typing standard. These features will likely change or be removed, so they should not be used except for experimentation purposes.", "default": false }, "enableTypeIgnoreComments": { - "$id": "#/properties/enableTypeIgnoreComments", "type": "boolean", "title": "Allow `# type: ignore` comments", "description": "PEP 484 defines support for `# type: ignore` comments. This switch enables or disables support for these comments. This does not affect `# pyright: ignore` comments.", @@ -193,7 +101,6 @@ "default": true }, "deprecateTypingAliases": { - "$id": "#/properties/deprecateTypingAliases", "type": "boolean", "title": "Treat typing-specific aliases to standard types as deprecated", "description": "PEP 585 indicates that aliases to types in standard collections that were introduced solely to support generics are deprecated as of Python 3.9. This switch controls whether these are treated as deprecated. This applies only when `pythonVersion` is 3.9 or newer. The default value for this setting is `false` but may be switched to `true` in the future.", @@ -202,120 +109,102 @@ "default": false }, "reportGeneralTypeIssues": { - "$id": "#/properties/reportGeneralTypeIssues", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of general type issues", "description": "Generate or suppress diagnostics for general type inconsistencies, unsupported operations, argument/parameter mismatches, etc. This covers all of the basic type-checking rules not covered by other rules. It does not include syntax errors.", "default": "error" }, "reportPropertyTypeMismatch": { - "$id": "#/properties/reportPropertyTypeMismatch", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of property getter/setter type mismatches", "description": "Generate or suppress diagnostics for properties where the type of the value passed to the setter is not assignable to the value returned by the getter. Such mismatches violate the intended use of properties, which are meant to act like variables.", "default": "none" }, "reportFunctionMemberAccess": { - "$id": "#/properties/reportFunctionMemberAccess", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of member accesses on function objects", "description": "Generate or suppress diagnostics for non-standard member accesses for functions.", "default": "error" }, "reportMissingImports": { - "$id": "#/properties/reportMissingImports", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of imports that cannot be resolved", "description": "Generate or suppress diagnostics for imports that have no corresponding imported python file or type stub file.", "default": "error" }, "reportMissingModuleSource": { - "$id": "#/properties/reportMissingModuleSource", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of imports that cannot be resolved to source files", "description": "Generate or suppress diagnostics for imports that have no corresponding source file. This happens when a type stub is found, but the module source file was not found, indicating that the code may fail at runtime when using this execution environment. Type checking will be done using the type stub.", "default": "warning" }, - "reportInvalidTypeForm": { - "$id": "#/properties/reportInvalidTypeForm", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of type expressions that use an invalid form", "description": "Generate or suppress diagnostics for type annotations that use invalid type expression forms or are semantically invalid.", "default": "error" }, "reportMissingTypeStubs": { - "$id": "#/properties/reportMissingTypeStubs", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of imports that cannot be resolved to type stub files", "description": "Generate or suppress diagnostics for imports that have no corresponding type stub file (either a typeshed file or a custom type stub). The type checker requires type stubs to do its best job at analysis.", "default": "none" }, "reportImportCycles": { - "$id": "#/properties/reportImportCycles", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of module imports that create cycles in import graph", "description": "Generate or suppress diagnostics for cyclical import chains. These are not errors in Python, but they do slow down type analysis and often hint at architectural layering issues. Generally, they should be avoided. Note that there are import cycles in the typeshed stdlib typestub files that are ignored by this setting.", "default": "none" }, "reportUnusedImport": { - "$id": "#/properties/reportUnusedImport", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of imported symbols that are not referenced within the source file", "description": "Generate or suppress diagnostics for an imported symbol that is not referenced within that file.", "default": "none" }, "reportUnusedClass": { - "$id": "#/properties/reportUnusedClass", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of private classes that are not accessed", "description": "Generate or suppress diagnostics for a class with a private name (starting with an underscore) that is not accessed.", "default": "none" }, "reportUnusedFunction": { - "$id": "#/properties/reportUnusedFunction", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of private functions or methods that are not accessed", "description": "Generate or suppress diagnostics for a function or method with a private name (starting with an underscore) that is not accessed.", "default": "none" }, "reportUnusedVariable": { - "$id": "#/properties/reportUnusedVariable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of local variables that are not accessed", "description": "Generate or suppress diagnostics for a variable that is not accessed. Variables whose names begin with an underscore are exempt from this check.", "default": "none" }, "reportDuplicateImport": { - "$id": "#/properties/reportDuplicateImport", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of symbols or modules that are imported more than once", "description": "Generate or suppress diagnostics for an imported symbol or module that is imported more than once.", "default": "none" }, "reportWildcardImportFromLibrary": { - "$id": "#/properties/reportWildcardImportFromLibrary", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of wildcard import from external library", "description": "Generate or suppress diagnostics for a wildcard import from an external library. The use of this language feature is highly discouraged and can result in bugs when the library is updated.", "default": "warning" }, "reportAbstractUsage": { - "$id": "#/properties/reportAbstractUsage", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempted instantiation of abstract class", "description": "Generate or suppress diagnostics for the attempted instantiate an abstract or protocol class or use of an abstract method.", "default": "error" }, "reportArgumentType": { - "$id": "#/properties/reportArgumentType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of incompatible argument type", "description": "Generate or suppress diagnostics for argument type incompatibilities when evaluating a call expression.", "default": "error" }, "reportAssertTypeFailure": { - "$id": "#/properties/reportAssertTypeFailure", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of type mismatch detected by `typing.assert_type` call", "description": "Generate or suppress diagnostics for a type mismatch detected by the `typing.assert_type` call.", @@ -323,56 +212,48 @@ "default": "error" }, "reportAssignmentType": { - "$id": "#/properties/reportAssignmentType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of type incompatibilities for assignments", "description": "Generate or suppress diagnostics for assignment type incompatibility.", "default": "error" }, "reportAttributeAccessIssue": { - "$id": "#/properties/reportAttributeAccessIssue", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of issues related to attribute accesses", "description": "Generate or suppress diagnostics related to attribute accesses.", "default": "error" }, "reportCallIssue": { - "$id": "#/properties/reportCallIssue", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of issues related to call expressions and arguments", "description": "Generate or suppress diagnostics related to call expressions and arguments passed to a call target.", "default": "error" }, "reportInconsistentOverload": { - "$id": "#/properties/reportInconsistentOverload", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of inconsistencies between function overload signatures", "description": "Generate or suppress diagnostics for an overloaded function that has overload signatures that are inconsistent with each other or with the implementation.", "default": "error" }, "reportIndexIssue": { - "$id": "#/properties/reportIndexIssue", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of issues related to index operations and expressions", "description": "Generate or suppress diagnostics related to index operations and expressions.", "default": "error" }, "reportInvalidTypeArguments": { - "$id": "#/properties/reportInvalidTypeArguments", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of invalid type argument usage", "description": "Generate or suppress diagnostics for invalid type argument usage.", "default": "error" }, "reportNoOverloadImplementation": { - "$id": "#/properties/reportNoOverloadImplementation", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of an overloaded function or method with a missing implementation", "description": "Generate or suppress diagnostics for an overloaded function or method if the implementation is not provided.", "default": "error" }, "reportOperatorIssue": { - "$id": "#/properties/reportOperatorIssue", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of diagnostics related to unary and binary operators", "description": "Generate or suppress diagnostics related to the use of unary or binary operators (like `*` or `not`).", @@ -380,7 +261,6 @@ "default": "error" }, "reportOptionalSubscript": { - "$id": "#/properties/reportOptionalSubscript", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to subscript (index) a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to subscript (index) a variable with an `Optional` type.", @@ -388,7 +268,6 @@ "default": "error" }, "reportOptionalMemberAccess": { - "$id": "#/properties/reportOptionalMemberAccess", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to access a member of a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to access a member of a variable with an `Optional` type.", @@ -396,7 +275,6 @@ "default": "error" }, "reportOptionalCall": { - "$id": "#/properties/reportOptionalCall", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to call a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to call a variable with an `Optional` type.", @@ -404,7 +282,6 @@ "default": "error" }, "reportOptionalIterable": { - "$id": "#/properties/reportOptionalIterable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as an iterable value", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an iterable value (e.g. within a `for` statement).", @@ -412,7 +289,6 @@ "default": "error" }, "reportOptionalContextManager": { - "$id": "#/properties/reportOptionalContextManager", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as a parameter to a `with` statement", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as a context manager (as a parameter to a `with` statement).", @@ -420,7 +296,6 @@ "default": "error" }, "reportOptionalOperand": { - "$id": "#/properties/reportOptionalOperand", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as an operand for a binary or unary operator", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an operand to a unary operator (like `~` or `not`) or the left-hand operator of a binary operator (like `*`, `==`, `or`).", @@ -428,21 +303,18 @@ "default": "error" }, "reportRedeclaration": { - "$id": "#/properties/reportRedeclaration", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to declare the type of a symbol multiple times", "description": "Generate or suppress diagnostics for a symbol that has more than one type declaration.", "default": "error" }, "reportReturnType": { - "$id": "#/properties/reportReturnType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of function return type incompatibility", "description": "Generate or suppress diagnostics related to function return type compatibility.", "default": "error" }, "reportTypedDictNotRequiredAccess": { - "$id": "#/properties/reportTypedDictNotRequiredAccess", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to access a non-required key in a `TypedDict` without a check for its presence", "description": "Generate or suppress diagnostics for an attempt to access a non-required field within a `TypedDict` without first checking whether it is present.", @@ -450,28 +322,24 @@ "default": "error" }, "reportUntypedFunctionDecorator": { - "$id": "#/properties/reportUntypedFunctionDecorator", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of function decorators without type annotations, which obscure function types", "description": "Generate or suppress diagnostics for function decorators that have no type annotations. These obscure the function type, defeating many type analysis features.", "default": "none" }, "reportUntypedClassDecorator": { - "$id": "#/properties/reportUntypedClassDecorator", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of class decorators without type annotations, which obscure class types", "description": "Generate or suppress diagnostics for class decorators that have no type annotations. These obscure the class type, defeating many type analysis features.", "default": "none" }, "reportUntypedBaseClass": { - "$id": "#/properties/reportUntypedBaseClass", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of a base class of an unknown type, which obscures most type checking for the class", "description": "Generate or suppress diagnostics for base classes whose type cannot be determined statically. These obscure the class type, defeating many type analysis features.", "default": "none" }, "reportUntypedNamedTuple": { - "$id": "#/properties/reportUntypedNamedTuple", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of a named tuple definition that does not contain type information", "description": "Generate or suppress diagnostics when `namedtuple` is used rather than `NamedTuple`. The former contains no type information, whereas the latter does.", @@ -479,7 +347,6 @@ "default": "none" }, "reportPrivateUsage": { - "$id": "#/properties/reportPrivateUsage", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of private variables and functions used outside of the owning class or module and usage of protected members outside of subclasses", "description": "Generate or suppress diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore (`_`) and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.", @@ -487,14 +354,12 @@ "default": "none" }, "reportTypeCommentUsage": { - "$id": "#/properties/reportTypeCommentUsage", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of deprecated type comment usage", "description": "Prior to Python 3.5, the grammar did not support type annotations, so types needed to be specified using type comments. Python 3.5 eliminated the need for function type comments, and Python 3.6 eliminated the need for variable type comments. Future versions of Python will likely deprecate all support for type comments. If enabled, this check will flag any type comment usage unless it is required for compatibility with the specified language version.", "default": "none" }, "reportPrivateImportUsage": { - "$id": "#/properties/reportPrivateImportUsage", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of improper usage of symbol imported from a `py.typed` module that is not re-exported from that module", "description": "Generate or suppress diagnostics for use of a symbol from a `py.typed` module that is not meant to be exported from that module.", @@ -502,35 +367,30 @@ "default": "error" }, "reportConstantRedefinition": { - "$id": "#/properties/reportConstantRedefinition", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to redefine variables that are in all-caps", "description": "Generate or suppress diagnostics for attempts to redefine variables whose names are all-caps with underscores and numerals.", "default": "none" }, "reportDeprecated": { - "$id": "#/properties/reportDeprecated", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of use of deprecated class or function", "description": "Generate or suppress diagnostics for use of a class or function that has been marked as deprecated.", "default": "none" }, "reportIncompatibleMethodOverride": { - "$id": "#/properties/reportIncompatibleMethodOverride", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of method overrides in subclasses that redefine the method in an incompatible way", "description": "Generate or suppress diagnostics for methods that override a method of the same name in a base class in an incompatible manner (wrong number of parameters, incompatible parameter types, or incompatible return type).", "default": "error" }, "reportIncompatibleVariableOverride": { - "$id": "#/properties/reportIncompatibleVariableOverride", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of overrides in subclasses that redefine a variable in an incompatible way", "description": "Generate or suppress diagnostics for class variable declarations that override a symbol of the same name in a base class with a type that is incompatible with the base class symbol type.", "default": "error" }, "reportInconsistentConstructor": { - "$id": "#/properties/reportInconsistentConstructor", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `__init__` and `__new__` methods whose signatures are inconsistent", "description": "Generate or suppress diagnostics when an `__init__` method signature is inconsistent with a `__new__` signature.", @@ -538,21 +398,18 @@ "default": "none" }, "reportOverlappingOverload": { - "$id": "#/properties/reportOverlappingOverload", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of function overloads that overlap in signature and obscure each other or do not agree on return type", "description": "Generate or suppress diagnostics for function overloads that overlap in signature and obscure each other or have incompatible return types.", "default": "error" }, "reportPossiblyUnboundVariable": { - "$id": "#/properties/reportPossiblyUnboundVariable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use variable that is possibly unbound on some code paths", "description": "Generate or suppress diagnostics for variables that are possibly unbound on some code paths.", "default": "error" }, "reportMissingSuperCall": { - "$id": "#/properties/reportMissingSuperCall", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of missing call to parent class for inherited `__init__` methods", "description": "Generate or suppress diagnostics for `__init__`, `__init_subclass__`, `__enter__` and `__exit__` methods in a subclass that fail to call through to the same-named method on a base class.", @@ -560,7 +417,6 @@ "default": "none" }, "reportUninitializedInstanceVariable": { - "$id": "#/properties/reportUninitializedInstanceVariable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of instance variables that are not initialized in the constructor", "description": "Generate or suppress diagnostics for instance variables within a class that are not initialized or declared within the class body or the `__init__` method.", @@ -568,49 +424,42 @@ "default": "none" }, "reportInvalidStringEscapeSequence": { - "$id": "#/properties/reportInvalidStringEscapeSequence", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of invalid escape sequences used within string literals", "description": "Generate or suppress diagnostics for invalid escape sequences used within string literals. The Python specification indicates that such sequences will generate a syntax error in future versions.", "default": "warning" }, "reportUnknownParameterType": { - "$id": "#/properties/reportUnknownParameterType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting input and return parameters whose types are unknown", "description": "Generate or suppress diagnostics for input or return parameters for functions or methods that have an unknown type.", "default": "none" }, "reportUnknownArgumentType": { - "$id": "#/properties/reportUnknownArgumentType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting argument expressions whose types are unknown", "description": "Generate or suppress diagnostics for call arguments for functions or methods that have an unknown type.", "default": "none" }, "reportUnknownLambdaType": { - "$id": "#/properties/reportUnknownLambdaType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting input and return parameters for lambdas whose types are unknown", "description": "Generate or suppress diagnostics for input or return parameters for lambdas that have an unknown type.", "default": "none" }, "reportUnknownVariableType": { - "$id": "#/properties/reportUnknownVariableType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting local variables whose types are unknown", "description": "Generate or suppress diagnostics for variables that have an unknown type.", "default": "none" }, "reportUnknownMemberType": { - "$id": "#/properties/reportUnknownMemberType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting class and instance variables whose types are unknown", "description": "Generate or suppress diagnostics for class or instance variables that have an unknown type.", "default": "none" }, "reportMissingParameterType": { - "$id": "#/properties/reportMissingParameterType", "$ref": "#/definitions/diagnostic", "title": "Controls reporting input parameters that are missing a type annotation", "description": "Generate or suppress diagnostics for input parameters for functions or methods that are missing a type annotation. The `self` and `cls` parameters used within methods are exempt from this check.", @@ -618,14 +467,12 @@ "default": "none" }, "reportMissingTypeArgument": { - "$id": "#/properties/reportMissingTypeArgument", "$ref": "#/definitions/diagnostic", "title": "Controls reporting generic class reference with missing type arguments", "description": "Generate or suppress diagnostics when a generic class is used without providing explicit or implicit type arguments.", "default": "none" }, "reportInvalidTypeVarUse": { - "$id": "#/properties/reportInvalidTypeVarUse", "$ref": "#/definitions/diagnostic", "title": "Controls reporting improper use of type variables within function signatures", "description": "Generate or suppress diagnostics when a `TypeVar` is used inappropriately (e.g. if a `TypeVar` appears only once) within a generic function signature.", @@ -633,14 +480,12 @@ "default": "warning" }, "reportCallInDefaultInitializer": { - "$id": "#/properties/reportCallInDefaultInitializer", "$ref": "#/definitions/diagnostic", "title": "Controls reporting usage of function calls within a default value initializer expression", "description": "Generate or suppress diagnostics for function calls, list expressions, set expressions, or dictionary expressions within a default value initialization expression. Such calls can mask expensive operations that are performed at module initialization time.", "default": "none" }, "reportUnnecessaryIsInstance": { - "$id": "#/properties/reportUnnecessaryIsInstance", "$ref": "#/definitions/diagnostic", "title": "Controls reporting calls to `isinstance` or `issubclass` where the result is statically determined to be always true", "description": "Generate or suppress diagnostics for `isinstance` or `issubclass` calls where the result is statically determined to be always true. Such calls are often indicative of a programming error.", @@ -648,7 +493,6 @@ "default": "none" }, "reportUnnecessaryCast": { - "$id": "#/properties/reportUnnecessaryCast", "$ref": "#/definitions/diagnostic", "title": "Controls reporting calls to `cast` that are unnecessary", "description": "Generate or suppress diagnostics for `cast` calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.", @@ -656,7 +500,6 @@ "default": "none" }, "reportUnnecessaryComparison": { - "$id": "#/properties/reportUnnecessaryComparison", "$ref": "#/definitions/diagnostic", "title": "Controls reporting the use of `==` or `!=` comparisons that are unnecessary", "description": "Generate or suppress diagnostics for `==` or `!=` comparisons or other conditional expressions that are statically determined to always evaluate to `False` or `True`. Such comparisons are sometimes indicative of a programming error.", @@ -664,7 +507,6 @@ "default": "none" }, "reportUnnecessaryContains": { - "$id": "#/properties/reportUnnecessaryContains", "$ref": "#/definitions/diagnostic", "title": "Controls reporting the use of `in` operations that are unnecessary", "description": "Generate or suppress diagnostics for `in` operations that are statically determined to always evaluate to `False` or `True`. Such operations are sometimes indicative of a programming error.", @@ -672,7 +514,6 @@ "default": "none" }, "reportAssertAlwaysTrue": { - "$id": "#/properties/reportAssertAlwaysTrue", "$ref": "#/definitions/diagnostic", "title": "Controls reporting `assert` expressions that will always evaluate to `True`", "description": "Generate or suppress diagnostics for `assert` statement that will provably always assert. This can be indicative of a programming error.", @@ -680,7 +521,6 @@ "default": "warning" }, "reportSelfClsParameterName": { - "$id": "#/properties/reportSelfClsParameterName", "$ref": "#/definitions/diagnostic", "title": "Controls reporting missing or misnamed `self` parameters", "description": "Generate or suppress diagnostics for a missing or misnamed `self` parameter in instance methods and `cls` parameter in class methods. Instance methods in metaclasses (classes that derive from `type`) are allowed to use `cls` for instance methods.", @@ -688,42 +528,36 @@ "default": "warning" }, "reportImplicitStringConcatenation": { - "$id": "#/properties/reportImplicitStringConcatenation", "$ref": "#/definitions/diagnostic", "title": "Controls reporting usage of implicit concatenation of string literals", "description": "Generate or suppress diagnostics for two or more string literals that follow each other, indicating an implicit concatenation. This is considered a bad practice and often masks bugs such as missing commas.", "default": "none" }, "reportUnboundVariable": { - "$id": "#/properties/reportUnboundVariable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an unbound variable", "description": "Generate or suppress diagnostics for unbound variables.", "default": "error" }, "reportUnhashable": { - "$id": "#/properties/reportUnhashable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of unhashable object in container that requires hashability", "description": "Generate or suppress diagnostics for the use of an unhashable object in a container that requires hashability.", "default": "error" }, "reportUndefinedVariable": { - "$id": "#/properties/reportUndefinedVariable", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an undefined variable", "description": "Generate or suppress diagnostics for undefined variables.", "default": "error" }, "reportInvalidStubStatement": { - "$id": "#/properties/reportInvalidStubStatement", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of type stub statements that do not conform to PEP 484", "description": "Generate or suppress diagnostics for statements that are syntactically correct but have no purpose within a type stub file.", "default": "none" }, "reportIncompleteStub": { - "$id": "#/properties/reportIncompleteStub", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of incomplete type stubs that declare a module-level `__getattr__` function", "description": "Generate or suppress diagnostics for a module-level `__getattr__` call in a type stub file, indicating that it is incomplete.", @@ -731,7 +565,6 @@ "default": "none" }, "reportUnsupportedDunderAll": { - "$id": "#/properties/reportUnsupportedDunderAll", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of unsupported operations performed on `__all__`", "description": "Generate or suppress diagnostics for statements that define or manipulate `__all__` in a way that is not allowed by a static type checker, thus rendering the contents of `__all__` to be unknown or incorrect. Also reports names within the `__all__` list that are not present in the module namespace.", @@ -739,7 +572,6 @@ "default": "warning" }, "reportUnusedCallResult": { - "$id": "#/properties/reportUnusedCallResult", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of call expressions whose results are not consumed", "description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is not `None`.", @@ -747,7 +579,6 @@ "default": "none" }, "reportUnusedCoroutine": { - "$id": "#/properties/reportUnusedCoroutine", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of call expressions that returns `Coroutine` whose results are not consumed", "description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is a `Coroutine`. This identifies a common error where an `await` keyword is mistakenly omitted.", @@ -755,7 +586,6 @@ "default": "error" }, "reportUnusedExcept": { - "$id": "#/properties/reportUnusedExcept", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of unreachable except clauses", "description": "Generate or suppress diagnostics for an `except` clause that will never be reached.", @@ -763,14 +593,12 @@ "default": "error" }, "reportUnusedExpression": { - "$id": "#/properties/reportUnusedExpression", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of simple expressions whose value is not used in any way", "description": "Generate or suppress diagnostics for simple expressions whose results are not used in any way.", "default": "warning" }, "reportUnnecessaryTypeIgnoreComment": { - "$id": "#/properties/reportUnnecessaryTypeIgnoreComment", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `# type: ignore` comments that have no effect", "description": "Generate or suppress diagnostics for a `# type: ignore` or `# pyright: ignore` comment that would have no effect if removed.", @@ -778,7 +606,6 @@ "default": "none" }, "reportMatchNotExhaustive": { - "$id": "#/properties/reportMatchNotExhaustive", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `match` statements that do not exhaustively match all possible values", "description": "Generate or suppress diagnostics for a `match` statement that does not provide cases that exhaustively match against all potential types of the target expression.", @@ -786,55 +613,395 @@ "default": "none" }, "reportShadowedImports": { - "$id": "#/properties/reportShadowedImports", "$ref": "#/definitions/diagnostic", "title": "Controls reporting of shadowed imports of stdlib modules", "description": "Generate or suppress diagnostics for files that are overriding a module in the stdlib.", "default": "none" }, "reportImplicitOverride": { - "$id": "#/properties/reportImplicitOverride", "$ref": "#/definitions/diagnostic", "title": "Controls reporting overridden methods that are missing an `@override` decorator", "description": "Generate or suppress diagnostics for overridden methods in a class that are missing an explicit `@override` decorator.", "x-intellij-html-description": "Generate or suppress diagnostics for overridden methods in a class that are missing an explicit @override decorator.", "default": "none" + } + }, + "properties": { + "extends": { + "type": "string", + "title": "Path to configuration file that this configuration extends", + "description": "Path to another `.json` or `.toml` file that is used as a \"base configuration\", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", + "x-intellij-html-description": "Path to another .json or .toml file that is used as a "base configuration", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", + "pattern": "^(.*)$" }, - "extraPaths": { - "$id": "#/properties/extraPaths", + "include": { "type": "array", - "title": "Additional import search resolution paths", - "description": "Additional search paths that will be used when searching for modules imported by files.", + "title": "Files and directories included in type analysis", + "description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", + "x-intellij-html-description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed.", "items": { - "$id": "#/properties/extraPaths/items", "type": "string", - "title": "Additional import search resolution path", - "default": "", + "description": "File or directory to include in type analysis", "pattern": "^(.*)$" } }, - "pythonVersion": { - "$id": "#/properties/pythonVersion", + "exclude": { + "type": "array", + "title": "Files and directories excluded from type analysis", + "description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", + "x-intellij-html-description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: **/node_modules, **/__pycache__, **/.* and any virtual environment directories.", + "items": { + "type": "string", + "title": "File or directory to exclude from type analysis", + "pattern": "^(.*)$" + } + }, + "ignore": { + "type": "array", + "title": "Files and directories whose diagnostics are suppressed", + "description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", + "x-intellij-html-description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", + "items": { + "type": "string", + "title": "File or directory where diagnostics should be suppressed", + "pattern": "^(.*)$" + } + }, + "strict": { + "type": "array", + "title": "Files and directories that should use \"strict\" type checking rules", + "description": "Paths of directories or files that should use \"strict\" analysis if they are included. This is the same as manually adding a `# pyright: strict` comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", + "x-intellij-html-description": "Paths of directories or files that should use "strict" analysis if they are included. This is the same as manually adding a # pyright: strict comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", + "items": { + "type": "string", + "title": "File or directory that should use \"strict\" type checking rules", + "pattern": "^(.*)$" + } + }, + "defineConstant": { + "type": "object", + "title": "Identifiers that should be treated as constants", + "description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, `{ \"DEBUG\": true }` indicates that pyright should assume that the identifier `DEBUG` will always be equal to `True`. If this identifier is used within a conditional expression (such as `if not DEBUG:`) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. `my_module.DEBUG`) are also supported.", + "x-intellij-html-description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, { "DEBUG": true } indicates that pyright should assume that the identifier DEBUG will always be equal to True. If this identifier is used within a conditional expression (such as if not DEBUG:) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. my_module.DEBUG) are also supported.", + "properties": {}, + "additionalProperties": { + "type": ["string", "boolean"], + "title": "Value of constant (boolean or string)" + } + }, + "typeCheckingMode": { "type": "string", - "title": "Python version to assume during type analysis", - "description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format `M.m` where `M` is the major version and `m` is the minor (e.g. `3.0` or `3.6`). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", - "x-intellij-html-description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format M.m where M is the major version and m is the minor (e.g. 3.0 or 3.6). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", + "enum": ["off", "basic", "standard", "strict"], + "title": "Specifies the default rule set to use for type checking", + "description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to `off`, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", + "x-intellij-html-description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to off, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", + "default": "standard" + }, + "useLibraryCodeForTypes": { + "type": "boolean", + "title": "Use library implementations to extract type information when type stub is not present", + "description": "Determines whether pyright reads, parses and analyzes library code to extract type information in the absence of type stub files. Type information will typically be incomplete. We recommend using type stubs where possible.", + "default": true + }, + "typeshedPath": { + "type": "string", + "title": "Path to directory containing `typeshed` type stub files", + "description": "Path to a directory that contains `typeshed` type stub files. Pyright ships with a bundled copy of `typeshed` type stubs. If you want to use a different version of `typeshed` stubs, you can clone the `typeshed` GitHub repo (https://github.com/python/typeshed) to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to `typeshed`.", + "markdownDescription": "Path to a directory that contains `typeshed` type stub files. Pyright ships with a bundled copy of `typeshed` type stubs. If you want to use a different version of `typeshed` stubs, you can clone [the `typeshed` GitHub repo](https://github.com/python/typeshed) to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to `typeshed`.", + "x-intellij-html-description": "Path to a directory that contains typeshed type stub files. Pyright ships with a bundled copy of typeshed type stubs. If you want to use a different version of typeshed stubs, you can clone the typeshed GitHub repo to a local directory and reference the location with this path. This option is useful if you're actively contributing updates to typeshed.", "default": "", - "examples": ["3.7"], - "pattern": "^3\\.[0-9]+$" + "pattern": "^(.*)$" }, - "pythonPlatform": { - "$id": "#/properties/pythonPlatform", + "stubPath": { + "$comment": "There is a discrepancy between the description in the configuration documentation file and the default value as specified in the schema. Both are kept here for later inspections.", "type": "string", - "title": "Python platform to assume during type analysis", - "description": "Specifies the target platform that will be used to execute the source code. Should be one of `Windows`, `Darwin`, `Linux`, or `All`. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", - "x-intellij-html-description": "Specifies the target platform that will be used to execute the source code. Should be one of Windows, Darwin, Linux, or All. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", + "title": "Path to directory containing custom type stub files", + "description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is `./typings` (`typingsPath` is now deprecated).", + "x-intellij-html-description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is ./typings (typingsPath is now deprecated).", "default": "", - "examples": ["Linux"], - "pattern": "^(Linux|Windows|Darwin|All)$" + "examples": ["src/typestubs"], + "pattern": "^(.*)$" + }, + "disableBytesTypePromotions": { + "$ref": "#/definitions/disableBytesTypePromotions" + }, + "strictListInference": { + "$ref": "#/definitions/strictListInference" + }, + "strictSetInference": { + "$ref": "#/definitions/strictSetInference" + }, + "strictDictionaryInference": { + "$ref": "#/definitions/strictDictionaryInference" + }, + "analyzeUnannotatedFunctions": { + "$ref": "#/definitions/analyzeUnannotatedFunctions" + }, + "strictParameterNoneValue": { + "$ref": "#/definitions/strictParameterNoneValue" + }, + "enableExperimentalFeatures": { + "$ref": "#/definitions/enableExperimentalFeatures" + }, + "enableTypeIgnoreComments": { + "$ref": "#/definitions/enableTypeIgnoreComments" + }, + "deprecateTypingAliases": { + "$ref": "#/definitions/deprecateTypingAliases" + }, + "reportGeneralTypeIssues": { + "$ref": "#/definitions/reportGeneralTypeIssues" + }, + "reportPropertyTypeMismatch": { + "$ref": "#/definitions/reportPropertyTypeMismatch" + }, + "reportFunctionMemberAccess": { + "$ref": "#/definitions/reportFunctionMemberAccess" + }, + "reportMissingImports": { + "$ref": "#/definitions/reportMissingImports" + }, + "reportMissingModuleSource": { + "$ref": "#/definitions/reportMissingModuleSource" + }, + "reportInvalidTypeForm": { + "$ref": "#/definitions/reportInvalidTypeForm" + }, + "reportMissingTypeStubs": { + "$ref": "#/definitions/reportMissingTypeStubs" + }, + "reportImportCycles": { + "$ref": "#/definitions/reportImportCycles" + }, + "reportUnusedImport": { + "$ref": "#/definitions/reportUnusedImport" + }, + "reportUnusedClass": { + "$ref": "#/definitions/reportUnusedClass" + }, + "reportUnusedFunction": { + "$ref": "#/definitions/reportUnusedFunction" + }, + "reportUnusedVariable": { + "$ref": "#/definitions/reportUnusedVariable" + }, + "reportDuplicateImport": { + "$ref": "#/definitions/reportDuplicateImport" + }, + "reportWildcardImportFromLibrary": { + "$ref": "#/definitions/reportWildcardImportFromLibrary" + }, + "reportAbstractUsage": { + "$ref": "#/definitions/reportAbstractUsage" + }, + "reportArgumentType": { + "$ref": "#/definitions/reportArgumentType" + }, + "reportAssertTypeFailure": { + "$ref": "#/definitions/reportAssertTypeFailure" + }, + "reportAssignmentType": { + "$ref": "#/definitions/reportAssignmentType" + }, + "reportAttributeAccessIssue": { + "$ref": "#/definitions/reportAttributeAccessIssue" + }, + "reportCallIssue": { + "$ref": "#/definitions/reportCallIssue" + }, + "reportInconsistentOverload": { + "$ref": "#/definitions/reportInconsistentOverload" + }, + "reportIndexIssue": { + "$ref": "#/definitions/reportIndexIssue" + }, + "reportInvalidTypeArguments": { + "$ref": "#/definitions/reportInvalidTypeArguments" + }, + "reportNoOverloadImplementation": { + "$ref": "#/definitions/reportNoOverloadImplementation" + }, + "reportOperatorIssue": { + "$ref": "#/definitions/reportOperatorIssue" + }, + "reportOptionalSubscript": { + "$ref": "#/definitions/reportOptionalSubscript" + }, + "reportOptionalMemberAccess": { + "$ref": "#/definitions/reportOptionalMemberAccess" + }, + "reportOptionalCall": { + "$ref": "#/definitions/reportOptionalCall" + }, + "reportOptionalIterable": { + "$ref": "#/definitions/reportOptionalIterable" + }, + "reportOptionalContextManager": { + "$ref": "#/definitions/reportOptionalContextManager" + }, + "reportOptionalOperand": { + "$ref": "#/definitions/reportOptionalOperand" + }, + "reportRedeclaration": { + "$ref": "#/definitions/reportRedeclaration" + }, + "reportReturnType": { + "$ref": "#/definitions/reportReturnType" + }, + "reportTypedDictNotRequiredAccess": { + "$ref": "#/definitions/reportTypedDictNotRequiredAccess" + }, + "reportUntypedFunctionDecorator": { + "$ref": "#/definitions/reportUntypedFunctionDecorator" + }, + "reportUntypedClassDecorator": { + "$ref": "#/definitions/reportUntypedClassDecorator" + }, + "reportUntypedBaseClass": { + "$ref": "#/definitions/reportUntypedBaseClass" + }, + "reportUntypedNamedTuple": { + "$ref": "#/definitions/reportUntypedNamedTuple" + }, + "reportPrivateUsage": { + "$ref": "#/definitions/reportPrivateUsage" + }, + "reportTypeCommentUsage": { + "$ref": "#/definitions/reportTypeCommentUsage" + }, + "reportPrivateImportUsage": { + "$ref": "#/definitions/reportPrivateImportUsage" + }, + "reportConstantRedefinition": { + "$ref": "#/definitions/reportConstantRedefinition" + }, + "reportDeprecated": { + "$ref": "#/definitions/reportDeprecated" + }, + "reportIncompatibleMethodOverride": { + "$ref": "#/definitions/reportIncompatibleMethodOverride" + }, + "reportIncompatibleVariableOverride": { + "$ref": "#/definitions/reportIncompatibleVariableOverride" + }, + "reportInconsistentConstructor": { + "$ref": "#/definitions/reportInconsistentConstructor" + }, + "reportOverlappingOverload": { + "$ref": "#/definitions/reportOverlappingOverload" + }, + "reportPossiblyUnboundVariable": { + "$ref": "#/definitions/reportPossiblyUnboundVariable" + }, + "reportMissingSuperCall": { + "$ref": "#/definitions/reportMissingSuperCall" + }, + "reportUninitializedInstanceVariable": { + "$ref": "#/definitions/reportUninitializedInstanceVariable" + }, + "reportInvalidStringEscapeSequence": { + "$ref": "#/definitions/reportInvalidStringEscapeSequence" + }, + "reportUnknownParameterType": { + "$ref": "#/definitions/reportUnknownParameterType" + }, + "reportUnknownArgumentType": { + "$ref": "#/definitions/reportUnknownArgumentType" + }, + "reportUnknownLambdaType": { + "$ref": "#/definitions/reportUnknownLambdaType" + }, + "reportUnknownVariableType": { + "$ref": "#/definitions/reportUnknownVariableType" + }, + "reportUnknownMemberType": { + "$ref": "#/definitions/reportUnknownMemberType" + }, + "reportMissingParameterType": { + "$ref": "#/definitions/reportMissingParameterType" + }, + "reportMissingTypeArgument": { + "$ref": "#/definitions/reportMissingTypeArgument" + }, + "reportInvalidTypeVarUse": { + "$ref": "#/definitions/reportInvalidTypeVarUse" + }, + "reportCallInDefaultInitializer": { + "$ref": "#/definitions/reportCallInDefaultInitializer" + }, + "reportUnnecessaryIsInstance": { + "$ref": "#/definitions/reportUnnecessaryIsInstance" + }, + "reportUnnecessaryCast": { + "$ref": "#/definitions/reportUnnecessaryCast" + }, + "reportUnnecessaryComparison": { + "$ref": "#/definitions/reportUnnecessaryComparison" + }, + "reportUnnecessaryContains": { + "$ref": "#/definitions/reportUnnecessaryContains" + }, + "reportAssertAlwaysTrue": { + "$ref": "#/definitions/reportAssertAlwaysTrue" + }, + "reportSelfClsParameterName": { + "$ref": "#/definitions/reportSelfClsParameterName" + }, + "reportImplicitStringConcatenation": { + "$ref": "#/definitions/reportImplicitStringConcatenation" + }, + "reportUnboundVariable": { + "$ref": "#/definitions/reportUnboundVariable" + }, + "reportUnhashable": { + "$ref": "#/definitions/reportUnhashable" + }, + "reportUndefinedVariable": { + "$ref": "#/definitions/reportUndefinedVariable" + }, + "reportInvalidStubStatement": { + "$ref": "#/definitions/reportInvalidStubStatement" + }, + "reportIncompleteStub": { + "$ref": "#/definitions/reportIncompleteStub" + }, + "reportUnsupportedDunderAll": { + "$ref": "#/definitions/reportUnsupportedDunderAll" + }, + "reportUnusedCallResult": { + "$ref": "#/definitions/reportUnusedCallResult" + }, + "reportUnusedCoroutine": { + "$ref": "#/definitions/reportUnusedCoroutine" + }, + "reportUnusedExcept": { + "$ref": "#/definitions/reportUnusedExcept" + }, + "reportUnusedExpression": { + "$ref": "#/definitions/reportUnusedExpression" + }, + "reportUnnecessaryTypeIgnoreComment": { + "$ref": "#/definitions/reportUnnecessaryTypeIgnoreComment" + }, + "reportMatchNotExhaustive": { + "$ref": "#/definitions/reportMatchNotExhaustive" + }, + "reportShadowedImports": { + "$ref": "#/definitions/reportShadowedImports" + }, + "reportImplicitOverride": { + "$ref": "#/definitions/reportImplicitOverride" + }, + "extraPaths": { + "$ref": "#/definitions/extraPaths" + }, + "pythonVersion": { + "$ref": "#/definitions/pythonVersion" + }, + "pythonPlatform": { + "$ref": "#/definitions/pythonPlatform" }, "venvPath": { - "$id": "#/properties/venvPath", "type": "string", "title": "Path to directory containing a folder of virtual environments", "description": "Path to a directory containing one or more subdirectories, each of which contains a virtual environment. When used in conjunction with a `venv` setting, pyright will search for imports in the virtual environment's site-packages directory rather than the paths specified by the default Python interpreter. If you are working on a project with other developers, it is best not to specify this setting in the config file, since this path will typically differ for each developer. Instead, it can be specified on the command line or in a per-user setting.", @@ -843,7 +1010,6 @@ "pattern": "^(.*)$" }, "venv": { - "$id": "#/properties/venv", "type": "string", "title": "Name of virtual environment subdirectory within `venvPath`", "description": "Used in conjunction with the `venvPath`, specifies the virtual environment to use.", @@ -853,64 +1019,305 @@ "pattern": "^(.*)$" }, "verboseOutput": { - "$id": "#/properties/verboseOutput", "type": "boolean", "title": "Output verbose logging", "description": "Specifies whether output logs should be verbose. This is useful when diagnosing certain problems like import resolution issues.", "default": false }, "executionEnvironments": { - "$id": "#/properties/executionEnvironments", "type": "array", "title": "Analysis settings to use for specified subdirectories of code", "description": "Specifies a list of execution environments. Execution environments are searched from start to finish by comparing the path of a source file with the root path specified in the execution environment.", "items": { - "$id": "#/properties/executionEnvironments/items", "type": "object", "title": "Analysis settings to use for specified subdirectories of code", "required": ["root"], "properties": { "root": { - "$id": "#/properties/executionEnvironments/items/properties/root", "type": "string", "title": "Path to code subdirectory to which these settings apply", "description": "Root path for the code that will execute within this execution environment.", "default": "", "pattern": "^(.*)$" }, + "disableBytesTypePromotions": { + "$ref": "#/definitions/disableBytesTypePromotions" + }, + "strictListInference": { + "$ref": "#/definitions/strictListInference" + }, + "strictSetInference": { + "$ref": "#/definitions/strictSetInference" + }, + "strictDictionaryInference": { + "$ref": "#/definitions/strictDictionaryInference" + }, + "analyzeUnannotatedFunctions": { + "$ref": "#/definitions/analyzeUnannotatedFunctions" + }, + "strictParameterNoneValue": { + "$ref": "#/definitions/strictParameterNoneValue" + }, + "enableExperimentalFeatures": { + "$ref": "#/definitions/enableExperimentalFeatures" + }, + "enableTypeIgnoreComments": { + "$ref": "#/definitions/enableTypeIgnoreComments" + }, + "deprecateTypingAliases": { + "$ref": "#/definitions/deprecateTypingAliases" + }, + "reportGeneralTypeIssues": { + "$ref": "#/definitions/reportGeneralTypeIssues" + }, + "reportPropertyTypeMismatch": { + "$ref": "#/definitions/reportPropertyTypeMismatch" + }, + "reportFunctionMemberAccess": { + "$ref": "#/definitions/reportFunctionMemberAccess" + }, + "reportMissingImports": { + "$ref": "#/definitions/reportMissingImports" + }, + "reportMissingModuleSource": { + "$ref": "#/definitions/reportMissingModuleSource" + }, + "reportInvalidTypeForm": { + "$ref": "#/definitions/reportInvalidTypeForm" + }, + "reportMissingTypeStubs": { + "$ref": "#/definitions/reportMissingTypeStubs" + }, + "reportImportCycles": { + "$ref": "#/definitions/reportImportCycles" + }, + "reportUnusedImport": { + "$ref": "#/definitions/reportUnusedImport" + }, + "reportUnusedClass": { + "$ref": "#/definitions/reportUnusedClass" + }, + "reportUnusedFunction": { + "$ref": "#/definitions/reportUnusedFunction" + }, + "reportUnusedVariable": { + "$ref": "#/definitions/reportUnusedVariable" + }, + "reportDuplicateImport": { + "$ref": "#/definitions/reportDuplicateImport" + }, + "reportWildcardImportFromLibrary": { + "$ref": "#/definitions/reportWildcardImportFromLibrary" + }, + "reportAbstractUsage": { + "$ref": "#/definitions/reportAbstractUsage" + }, + "reportArgumentType": { + "$ref": "#/definitions/reportArgumentType" + }, + "reportAssertTypeFailure": { + "$ref": "#/definitions/reportAssertTypeFailure" + }, + "reportAssignmentType": { + "$ref": "#/definitions/reportAssignmentType" + }, + "reportAttributeAccessIssue": { + "$ref": "#/definitions/reportAttributeAccessIssue" + }, + "reportCallIssue": { + "$ref": "#/definitions/reportCallIssue" + }, + "reportInconsistentOverload": { + "$ref": "#/definitions/reportInconsistentOverload" + }, + "reportIndexIssue": { + "$ref": "#/definitions/reportIndexIssue" + }, + "reportInvalidTypeArguments": { + "$ref": "#/definitions/reportInvalidTypeArguments" + }, + "reportNoOverloadImplementation": { + "$ref": "#/definitions/reportNoOverloadImplementation" + }, + "reportOperatorIssue": { + "$ref": "#/definitions/reportOperatorIssue" + }, + "reportOptionalSubscript": { + "$ref": "#/definitions/reportOptionalSubscript" + }, + "reportOptionalMemberAccess": { + "$ref": "#/definitions/reportOptionalMemberAccess" + }, + "reportOptionalCall": { + "$ref": "#/definitions/reportOptionalCall" + }, + "reportOptionalIterable": { + "$ref": "#/definitions/reportOptionalIterable" + }, + "reportOptionalContextManager": { + "$ref": "#/definitions/reportOptionalContextManager" + }, + "reportOptionalOperand": { + "$ref": "#/definitions/reportOptionalOperand" + }, + "reportRedeclaration": { + "$ref": "#/definitions/reportRedeclaration" + }, + "reportReturnType": { + "$ref": "#/definitions/reportReturnType" + }, + "reportTypedDictNotRequiredAccess": { + "$ref": "#/definitions/reportTypedDictNotRequiredAccess" + }, + "reportUntypedFunctionDecorator": { + "$ref": "#/definitions/reportUntypedFunctionDecorator" + }, + "reportUntypedClassDecorator": { + "$ref": "#/definitions/reportUntypedClassDecorator" + }, + "reportUntypedBaseClass": { + "$ref": "#/definitions/reportUntypedBaseClass" + }, + "reportUntypedNamedTuple": { + "$ref": "#/definitions/reportUntypedNamedTuple" + }, + "reportPrivateUsage": { + "$ref": "#/definitions/reportPrivateUsage" + }, + "reportTypeCommentUsage": { + "$ref": "#/definitions/reportTypeCommentUsage" + }, + "reportPrivateImportUsage": { + "$ref": "#/definitions/reportPrivateImportUsage" + }, + "reportConstantRedefinition": { + "$ref": "#/definitions/reportConstantRedefinition" + }, + "reportDeprecated": { + "$ref": "#/definitions/reportDeprecated" + }, + "reportIncompatibleMethodOverride": { + "$ref": "#/definitions/reportIncompatibleMethodOverride" + }, + "reportIncompatibleVariableOverride": { + "$ref": "#/definitions/reportIncompatibleVariableOverride" + }, + "reportInconsistentConstructor": { + "$ref": "#/definitions/reportInconsistentConstructor" + }, + "reportOverlappingOverload": { + "$ref": "#/definitions/reportOverlappingOverload" + }, + "reportPossiblyUnboundVariable": { + "$ref": "#/definitions/reportPossiblyUnboundVariable" + }, + "reportMissingSuperCall": { + "$ref": "#/definitions/reportMissingSuperCall" + }, + "reportUninitializedInstanceVariable": { + "$ref": "#/definitions/reportUninitializedInstanceVariable" + }, + "reportInvalidStringEscapeSequence": { + "$ref": "#/definitions/reportInvalidStringEscapeSequence" + }, + "reportUnknownParameterType": { + "$ref": "#/definitions/reportUnknownParameterType" + }, + "reportUnknownArgumentType": { + "$ref": "#/definitions/reportUnknownArgumentType" + }, + "reportUnknownLambdaType": { + "$ref": "#/definitions/reportUnknownLambdaType" + }, + "reportUnknownVariableType": { + "$ref": "#/definitions/reportUnknownVariableType" + }, + "reportUnknownMemberType": { + "$ref": "#/definitions/reportUnknownMemberType" + }, + "reportMissingParameterType": { + "$ref": "#/definitions/reportMissingParameterType" + }, + "reportMissingTypeArgument": { + "$ref": "#/definitions/reportMissingTypeArgument" + }, + "reportInvalidTypeVarUse": { + "$ref": "#/definitions/reportInvalidTypeVarUse" + }, + "reportCallInDefaultInitializer": { + "$ref": "#/definitions/reportCallInDefaultInitializer" + }, + "reportUnnecessaryIsInstance": { + "$ref": "#/definitions/reportUnnecessaryIsInstance" + }, + "reportUnnecessaryCast": { + "$ref": "#/definitions/reportUnnecessaryCast" + }, + "reportUnnecessaryComparison": { + "$ref": "#/definitions/reportUnnecessaryComparison" + }, + "reportUnnecessaryContains": { + "$ref": "#/definitions/reportUnnecessaryContains" + }, + "reportAssertAlwaysTrue": { + "$ref": "#/definitions/reportAssertAlwaysTrue" + }, + "reportSelfClsParameterName": { + "$ref": "#/definitions/reportSelfClsParameterName" + }, + "reportImplicitStringConcatenation": { + "$ref": "#/definitions/reportImplicitStringConcatenation" + }, + "reportUnboundVariable": { + "$ref": "#/definitions/reportUnboundVariable" + }, + "reportUnhashable": { + "$ref": "#/definitions/reportUnhashable" + }, + "reportUndefinedVariable": { + "$ref": "#/definitions/reportUndefinedVariable" + }, + "reportInvalidStubStatement": { + "$ref": "#/definitions/reportInvalidStubStatement" + }, + "reportIncompleteStub": { + "$ref": "#/definitions/reportIncompleteStub" + }, + "reportUnsupportedDunderAll": { + "$ref": "#/definitions/reportUnsupportedDunderAll" + }, + "reportUnusedCallResult": { + "$ref": "#/definitions/reportUnusedCallResult" + }, + "reportUnusedCoroutine": { + "$ref": "#/definitions/reportUnusedCoroutine" + }, + "reportUnusedExcept": { + "$ref": "#/definitions/reportUnusedExcept" + }, + "reportUnusedExpression": { + "$ref": "#/definitions/reportUnusedExpression" + }, + "reportUnnecessaryTypeIgnoreComment": { + "$ref": "#/definitions/reportUnnecessaryTypeIgnoreComment" + }, + "reportMatchNotExhaustive": { + "$ref": "#/definitions/reportMatchNotExhaustive" + }, + "reportShadowedImports": { + "$ref": "#/definitions/reportShadowedImports" + }, + "reportImplicitOverride": { + "$ref": "#/definitions/reportImplicitOverride" + }, "extraPaths": { - "$id": "#/properties/executionEnvironments/items/properties/extraPaths", - "type": "array", - "title": "Additional import search resolution paths", - "description": "Additional search paths (in addition to the root path) that will be used when searching for modules imported by files within this execution environment. If specified, this overrides the default `extraPaths` setting when resolving imports for files within this execution environment. Note that each file's execution environment mapping is independent, so if file A is in one execution environment and imports a second file B within a second execution environment, any imports from B will use the `extraPaths` in the second execution environment.", - "x-intellij-html-description": "Additional search paths (in addition to the root path) that will be used when searching for modules imported by files within this execution environment. If specified, this overrides the default extraPaths setting when resolving imports for files within this execution environment. Note that each file's execution environment mapping is independent, so if file A is in one execution environment and imports a second file B within a second execution environment, any imports from B will use the extraPaths in the second execution environment.", - "items": { - "$id": "#/properties/executionEnvironments/items/properties/extraPaths/items", - "type": "string", - "title": "Additional import search resolution path", - "default": "", - "pattern": "^(.*)$" - } + "$ref": "#/definitions/extraPaths" }, "pythonVersion": { - "$id": "#/properties/executionEnvironments/items/properties/pythonVersion", - "type": "string", - "title": "Python version to assume during type analysis", - "description": "The version of Python used for this execution environment. If not specified, the global `pythonVersion` setting is used instead.", - "x-intellij-html-description": "The version of Python used for this execution environment. If not specified, the global pythonVersion setting is used instead.", - "default": "", - "examples": ["3.7"], - "pattern": "^3\\.[0-9]+$" + "$ref": "#/definitions/pythonVersion" }, "pythonPlatform": { - "$id": "#/properties/executionEnvironments/items/properties/pythonPlatform", - "type": "string", - "title": "Python platform to assume during type analysis", - "description": "Specifies the target platform that will be used for this execution environment. If not specified, the global `pythonPlatform` setting is used instead.", - "x-intellij-html-description": "Specifies the target platform that will be used for this execution environment. If not specified, the global pythonPlatform setting is used instead.", - "default": "", - "examples": ["Linux"], - "pattern": "^(Linux|Windows|Darwin|All)$" + "$ref": "#/definitions/pythonPlatform" } } } From e124c62d72dd4469ee871d2a2c3179fe821c19e3 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 13 Jun 2024 10:11:19 -0700 Subject: [PATCH 13/62] Update tsconfig.json (#3858) Via https://github.com/microsoft/TypeScript/pull/56723 --- src/schemas/json/tsconfig.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/schemas/json/tsconfig.json b/src/schemas/json/tsconfig.json index 2326ece8b32..268d78763e1 100644 --- a/src/schemas/json/tsconfig.json +++ b/src/schemas/json/tsconfig.json @@ -954,9 +954,11 @@ "ESNext.String", "ESNext.Symbol", "DOM", + "DOM.AsyncIterable", "DOM.Iterable", "ScriptHost", "WebWorker", + "WebWorker.AsyncIterable", "WebWorker.ImportScripts", "Webworker.Iterable", "ES7", From c0ad17683e20c45aa75feede4ee02e7db85bbac2 Mon Sep 17 00:00:00 2001 From: Mads Kristensen Date: Thu, 13 Jun 2024 11:38:08 -0700 Subject: [PATCH 14/62] Redirect catalog URLs to github raw --- src/Web.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Web.config b/src/Web.config index aabe9c43392..36b429b3c2d 100644 --- a/src/Web.config +++ b/src/Web.config @@ -51,6 +51,12 @@ --> + + + + + + From 2ebabc1b29fa9bb4ff09e2adeec9237362e6b286 Mon Sep 17 00:00:00 2001 From: Mads Kristensen Date: Thu, 13 Jun 2024 11:43:06 -0700 Subject: [PATCH 15/62] Fixed redirection attribute --- src/Web.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Web.config b/src/Web.config index 36b429b3c2d..1059e59680f 100644 --- a/src/Web.config +++ b/src/Web.config @@ -54,7 +54,7 @@ - + From db6c203ab1019638659c9d38d0442809e2bcf42b Mon Sep 17 00:00:00 2001 From: derrike <26290287+derrike@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:07:17 -0500 Subject: [PATCH 16/62] Added Landing Zone Accelerator on AWS schemas (#3859) * Added Landing Zone Accelerator on AWS schemas * fix descriptions in LZA on AWS schemas --- src/api/json/catalog.json | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index b41ac307695..849b717ed6f 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -1437,6 +1437,78 @@ "fileMatch": ["samconfig.toml", "samconfig.yaml", "samconfig.yml"], "url": "https://raw.githubusercontent.com/aws/aws-sam-cli/master/schema/samcli.json" }, + { + "name": "Landing Zone Accelerator on AWS - Accounts Config", + "description": "Used to manage all of the AWS accounts within the AWS Organization", + "fileMatch": ["accounts-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/accounts-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/accounts-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Customizations Config", + "description": "Used to manage configuration of custom applications, third-party firewall appliances, and CloudFormation stacks", + "fileMatch": ["customizations-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/customizations-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/customizations-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Global Config", + "description": "Used to manage all of the global properties that can be inherited across the AWS Organization", + "fileMatch": ["global-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/global-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/global-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - IAM Config", + "description": "Used to manage all of the IAM resources across the AWS Organization", + "fileMatch": ["iam-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/iam-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/iam-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Network Config", + "description": "Used to manage and implement network resources to establish a WAN/LAN architecture to support cloud operations and application workloads in AWS", + "fileMatch": ["network-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/network-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/network-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Organization Config", + "description": "Used to manage all of the organization units in the AWS Organization", + "fileMatch": ["organization-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/organization-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/organization-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Replacements Config", + "description": "Used to manage all of the replacement values across the configuration files", + "fileMatch": ["replacements-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/replacements-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/replacements-config.json" + } + }, + { + "name": "Landing Zone Accelerator on AWS - Security Config", + "description": "Used to manage configuration of AWS security services", + "fileMatch": ["security-config.yaml"], + "url": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/security-config.json", + "versions": { + "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/security-config.json" + } + }, { "name": "chisel-slices.json", "description": "Canonical Chisel slices definition file", From 04c60adb36c6d47fe8b139dbc5a1e9b04d4e888b Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Fri, 14 Jun 2024 18:08:49 +0200 Subject: [PATCH 17/62] Add CodeRabbit JSON schema to the catalog (#3861) CodeRabbit maintains their own schema externally. --- src/api/json/catalog.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 849b717ed6f..b4d0920bf59 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -506,6 +506,12 @@ "fileMatch": ["buf.work.yaml"], "url": "https://json.schemastore.org/buf.work.json" }, + { + "name": "CodeRabbit", + "description": "Supercharge your entire team with AI-driven contextual feedback & smart chat", + "fileMatch": [".coderabbit.yaml"], + "url": "https://coderabbit.ai/integrations/schema.v2.json" + }, { "name": "CodeCV", "description": "CV format specification", From 1e3506b92e4bda5570f4c7ac2b11a619b11fc93e Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Fri, 14 Jun 2024 18:09:15 +0200 Subject: [PATCH 18/62] Add HTML-validate schema to the catalog (#3862) HTML-vlidate maintain their own JSON schema externally. --- src/api/json/catalog.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index b4d0920bf59..cfbae216051 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -2514,6 +2514,12 @@ "fileMatch": [".htmlhintrc"], "url": "https://json.schemastore.org/htmlhint.json" }, + { + "name": ".htmlvalidate", + "description": "HTML-validate is an offline HTML5 validator", + "fileMatch": [".htmlvalidate.json"], + "url": "https://html-validate.org/schemas/config.json" + }, { "name": "Ory Hydra configuration", "description": "Ory Hydra configuration file", From 1f337422bd42d9b4db656223830a32896ad5279c Mon Sep 17 00:00:00 2001 From: Samir Boulema Date: Fri, 14 Jun 2024 09:09:39 -0700 Subject: [PATCH 19/62] Add token, uuid as field mapping types (#3863) Co-authored-by: Samir Boulema --- src/schemas/json/mongodb-atlas-search-index-definition.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/schemas/json/mongodb-atlas-search-index-definition.json b/src/schemas/json/mongodb-atlas-search-index-definition.json index 7404a759cd8..91dd364857e 100644 --- a/src/schemas/json/mongodb-atlas-search-index-definition.json +++ b/src/schemas/json/mongodb-atlas-search-index-definition.json @@ -189,7 +189,9 @@ "numberFacet", "objectId", "string", - "stringFacet" + "stringFacet", + "token", + "uuid" ] }, "analyzer": { From 9d091b5aa6773c539407b172ea8b40826c958710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Staudt?= Date: Fri, 14 Jun 2024 18:10:28 +0200 Subject: [PATCH 20/62] Match files "*.patch.yaml" & "*.patch.yml" to JSONPatch schema (#3865) --- src/api/json/catalog.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index cfbae216051..2e2c0ccd343 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -2764,7 +2764,7 @@ { "name": "JSONPatch", "description": "JSONPatch files", - "fileMatch": ["*.patch", "*.patch.json"], + "fileMatch": ["*.patch", "*.patch.json", "*.patch.yml", "*.patch.yaml"], "url": "https://json.schemastore.org/json-patch.json" }, { From 9f41e44514dddbe9c5dca604055bafb72ba514c2 Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Fri, 14 Jun 2024 22:34:00 +0200 Subject: [PATCH 21/62] Add Changesets config file schema to the catalog (#3860) Changesets maintain their own schema externally. --- src/api/json/catalog.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 2e2c0ccd343..fee7c5489ad 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -1515,6 +1515,12 @@ "v1.7.0": "https://raw.githubusercontent.com/awslabs/landing-zone-accelerator-on-aws/v1.7.0/source/packages/@aws-accelerator/config/lib/schemas/security-config.json" } }, + { + "name": "Changesets", + "description": "A way to manage your versioning and changelogs with a focus on monorepos", + "fileMatch": ["**/.changeset/config.json"], + "url": "https://unpkg.com/@changesets/config/schema.json" + }, { "name": "chisel-slices.json", "description": "Canonical Chisel slices definition file", From 025cd9990feb3f4925c8b56a13e3d785fe2fcb51 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Fri, 14 Jun 2024 22:26:39 -0400 Subject: [PATCH 22/62] Update ruff's JSON schema (#3866) This updates ruff's JSON schema to [2d6d85e99364ab19082d5735829b6ce9d5b01c07](https://github.com/astral-sh/ruff/commit/2d6d85e99364ab19082d5735829b6ce9d5b01c07) --- src/schemas/json/ruff.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/schemas/json/ruff.json b/src/schemas/json/ruff.json index ec4204df5f9..a37ec0ea1a2 100644 --- a/src/schemas/json/ruff.json +++ b/src/schemas/json/ruff.json @@ -1731,6 +1731,7 @@ }, "ignore-init-module-imports": { "description": "Avoid automatically removing unused imports in `__init__.py` files. Such imports will still be flagged, but with a dedicated message suggesting that the import is either added to the module's `__all__` symbol, or re-exported with a redundant alias (e.g., `import os as os`).\n\nThis option is enabled by default, but you can opt-in to removal of imports via an unsafe fix.", + "deprecated": true, "type": ["boolean", "null"] }, "isort": { @@ -2094,7 +2095,7 @@ }, "PythonVersion": { "type": "string", - "enum": ["py37", "py38", "py39", "py310", "py311", "py312"] + "enum": ["py37", "py38", "py39", "py310", "py311", "py312", "py313"] }, "Quote": { "oneOf": [ @@ -2179,6 +2180,8 @@ "ASYNC100", "ASYNC101", "ASYNC102", + "ASYNC11", + "ASYNC116", "B", "B0", "B00", @@ -2221,6 +2224,7 @@ "B035", "B9", "B90", + "B901", "B904", "B905", "B909", @@ -2558,6 +2562,7 @@ "FURB148", "FURB15", "FURB152", + "FURB154", "FURB157", "FURB16", "FURB161", @@ -2723,6 +2728,7 @@ "PLC02", "PLC020", "PLC0205", + "PLC0206", "PLC0208", "PLC04", "PLC041", @@ -3068,10 +3074,14 @@ "PYI054", "PYI055", "PYI056", + "PYI057", "PYI058", "PYI059", "PYI06", "PYI062", + "PYI063", + "PYI064", + "PYI066", "Q", "Q0", "Q00", @@ -3435,6 +3445,7 @@ "github", "gitlab", "pylint", + "rdjson", "azure", "sarif" ] From cede345dd378c9f0e1c3a1eaf85054ebd1f72eb2 Mon Sep 17 00:00:00 2001 From: Natale Toscano <46127615+Vorelli@users.noreply.github.com> Date: Sat, 15 Jun 2024 05:27:59 -0600 Subject: [PATCH 23/62] Add mprocs config schema (#3867) * Add mprocs config schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix name of file * Point to local file * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix spelling --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/api/json/catalog.json | 6 + src/schema-validation.json | 1 + src/schemas/json/mprocs-0.6.4.json | 209 +++++++++++++++++++++++++++++ src/test/mprocs-0.6.4/0001.json | 16 +++ src/test/mprocs-0.6.4/0002.yml | 8 ++ src/test/mprocs-0.6.4/0003.yml | 24 ++++ src/test/mprocs-0.6.4/0004.yml | 19 +++ src/test/mprocs-0.6.4/0005.yml | 19 +++ src/test/mprocs-0.6.4/0006.yml | 20 +++ 9 files changed, 322 insertions(+) create mode 100644 src/schemas/json/mprocs-0.6.4.json create mode 100644 src/test/mprocs-0.6.4/0001.json create mode 100644 src/test/mprocs-0.6.4/0002.yml create mode 100644 src/test/mprocs-0.6.4/0003.yml create mode 100644 src/test/mprocs-0.6.4/0004.yml create mode 100644 src/test/mprocs-0.6.4/0005.yml create mode 100644 src/test/mprocs-0.6.4/0006.yml diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index fee7c5489ad..4564811f14d 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -6494,6 +6494,12 @@ "description": "Qt Creator project json file", "fileMatch": ["**/.qtcreator/project.json"], "url": "https://download.qt.io/official_releases/qtcreator/latest/installer_source/jsonschemas/project.json" + }, + { + "name": "mprocs Configuration file", + "description": "mprocs (https://github.com/pvolok/mprocs) Configuration file using JSON/YAML", + "fileMatch": ["mprocs.json", "mprocs.yaml", "mprocs.yml"], + "url": "https://json.schemastore.org/mprocs-0.6.4.json" } ] } diff --git a/src/schema-validation.json b/src/schema-validation.json index eba49ea84af..709e6ca39e0 100644 --- a/src/schema-validation.json +++ b/src/schema-validation.json @@ -129,6 +129,7 @@ "minecraft-recipe.json", "minecraft-template-pool.json", "mtad.json", + "mprocs-0.6.4.json", "nest-cli.json", "netlify.json", "nightwatch.json", diff --git a/src/schemas/json/mprocs-0.6.4.json b/src/schemas/json/mprocs-0.6.4.json new file mode 100644 index 00000000000..8a4f6bb5db2 --- /dev/null +++ b/src/schemas/json/mprocs-0.6.4.json @@ -0,0 +1,209 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://gist.githubusercontent.com/Vorelli/54255d010838ed9f71dd98f800a6595c/raw/217102af8baa2245578ea14a5f8cfd639f908bfe/mprocs-schema-0.6.4.json", + "title": "mprocs Configuration Schema", + "description": "Schema for mprocs (https://github.com/pvolok/mprocs) configuration files (YAML/JSON).", + "type": "object", + "properties": { + "procs": { + "type": "object", + "description": "Processes to run. Only allowed in local config.", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "object", + "title": "Process Configuration", + "properties": { + "shell": { + "description": "Shell command to run (exactly one of shell or cmd must be provided).", + "oneOf": [ + { + "$ref": "#/definitions/selectOperator" + }, + { + "type": "string" + } + ] + }, + "cmd": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of command and args to run (exactly one of shell or cmd must be provided)." + }, + "cwd": { + "type": "string", + "description": "Set working directory for the process. Prefix will be replaced with the path of the directory where the config is located." + }, + "env": { + "type": "object", + "description": "Set env variables. Object keys are variable names. Assign variable to null, to clear variables inherited from parent process.", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + }, + { + "$ref": "#/definitions/selectOperator" + } + ] + } + }, + "add_path": { + "description": "Add entries to the PATH environment variable.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "$ref": "#/definitions/selectOperator" + } + ] + }, + "autostart": { + "type": "boolean", + "description": "Start process when mprocs starts. Default: true." + }, + "autorestart": { + "type": "boolean", + "description": "Restart process when it exits. Default: false. Note: If process exits within 1 second of starting, it will not be restarted." + }, + "stop": { + "description": "A way to stop a process (using `x` key or when quitting mprocs).", + "oneOf": [ + { + "enum": ["SIGINT", "SIGTERM", "SIGKILL", "hard-kill"] + }, + { + "type": "object", + "properties": { + "send-keys": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["send-keys"] + } + ] + } + }, + "oneOf": [ + { + "required": ["shell"] + }, + { + "required": ["cmd"] + } + ], + "additionalProperties": false + } + } + }, + "hide_keymap_window": { + "type": "boolean", + "description": "Hide the pane at the bottom of the screen showing key bindings." + }, + "mouse_scroll_speed": { + "type": "integer", + "description": "Number of lines to scroll per one mouse scroll." + }, + "proc_list_width": { + "type": "integer", + "description": "Process list window width." + }, + "keymap_procs": { + "$ref": "#/definitions/keymap", + "description": "Key bindings for process list." + }, + "keymap_term": { + "$ref": "#/definitions/keymap", + "description": "Key bindings for terminal window." + }, + "keymap_copy": { + "$ref": "#/definitions/keymap", + "description": "Key bindings for copy mode." + } + }, + "definitions": { + "c": { + "type": "string", + "description": "Command to run when keybind is triggered." + }, + "keymap": { + "type": "object", + "description": "Keymap configuration", + "properties": { + "reset": { + "type": "boolean", + "description": "Clear key bindings from previous levels." + } + }, + "patternProperties": { + "^<[^>]+>$": { + "description": "Keybind to target", + "oneOf": [ + { + "type": "null" + }, + { + "type": "object", + "properties": { + "c": { + "$ref": "#/definitions/c" + }, + "cmds": { + "type": "array", + "description": "Commands to run when keybind is triggered.", + "items": { + "type": "object", + "properties": { + "c": { + "$ref": "#/definitions/c" + } + }, + "required": ["c"] + } + } + }, + "required": ["c"] + } + ] + } + } + }, + "selectOperator": { + "type": "object", + "description": "Operator for OS-specific configurations", + "properties": { + "$else": { + "description": "Default value", + "type": "string" + }, + "$select": { + "description": "This is the parameter select is targeting.", + "const": "os" + } + }, + "patternProperties": { + "^(windows|macos|linux|android|freebsd|openbsd|netbsd|dragonfly|solaris|illumos|ios)$": { + "type": "string", + "description": "Value specific to OS" + } + }, + "required": ["$select"], + "additionalProperties": false + } + }, + "additionalProperties": false +} diff --git a/src/test/mprocs-0.6.4/0001.json b/src/test/mprocs-0.6.4/0001.json new file mode 100644 index 00000000000..8b99e54929e --- /dev/null +++ b/src/test/mprocs-0.6.4/0001.json @@ -0,0 +1,16 @@ +{ + "procs": { + "next": { + "autorestart": true, + "autostart": true, + "cwd": "/next", + "shell": "bun dev" + }, + "proxy": { + "autorestart": true, + "autostart": true, + "cwd": "/next", + "shell": "bun proxy" + } + } +} diff --git a/src/test/mprocs-0.6.4/0002.yml b/src/test/mprocs-0.6.4/0002.yml new file mode 100644 index 00000000000..01755ce879f --- /dev/null +++ b/src/test/mprocs-0.6.4/0002.yml @@ -0,0 +1,8 @@ +procs: + simple_process: + shell: "echo 'Hello, World!'" + array_command: + cmd: ['ls', '-la'] +hide_keymap_window: true +mouse_scroll_speed: 3 +proc_list_width: 30 diff --git a/src/test/mprocs-0.6.4/0003.yml b/src/test/mprocs-0.6.4/0003.yml new file mode 100644 index 00000000000..730ca47e190 --- /dev/null +++ b/src/test/mprocs-0.6.4/0003.yml @@ -0,0 +1,24 @@ +procs: + web_server: + shell: 'python manage.py runserver' + cwd: '/web_project' + env: + DEBUG: 'True' + PORT: '8000' + add_path: '/usr/local/bin' + autostart: true + autorestart: true + stop: 'SIGINT' + database: + cmd: ['postgres', '-D', '/usr/local/var/postgres'] + env: + POSTGRES_USER: 'admin' + POSTGRES_PASSWORD: null + background_task: + shell: 'node worker.js' + stop: + send-keys: ['q', 'Enter'] + +keymap_procs: + '': { c: 'prev-proc' } + '': { c: 'next-proc' } diff --git a/src/test/mprocs-0.6.4/0004.yml b/src/test/mprocs-0.6.4/0004.yml new file mode 100644 index 00000000000..2865003214f --- /dev/null +++ b/src/test/mprocs-0.6.4/0004.yml @@ -0,0 +1,19 @@ +procs: + cross_platform_echo: + shell: + $select: os + windows: 'echo %GREETING%' + $else: 'echo $GREETING' + env: + GREETING: + $select: os + windows: 'Hello from Windows!' + macos: 'Hello from macOS!' + linux: 'Hello from Linux!' + $else: 'Hello from an unknown OS!' + +keymap_term: + reset: true + '': { c: 'copy-mode' } + +mouse_scroll_speed: 2 diff --git a/src/test/mprocs-0.6.4/0005.yml b/src/test/mprocs-0.6.4/0005.yml new file mode 100644 index 00000000000..c5943c0e18d --- /dev/null +++ b/src/test/mprocs-0.6.4/0005.yml @@ -0,0 +1,19 @@ +keymap_procs: + '': { c: 'term-focus' } + '': { c: 'procs-focus' } + '': + c: 'batch' + cmds: + - { c: 'stop-proc' } + - { c: 'start-proc' } + +keymap_term: + '': { c: 'send-keys', args: ['tmux', 'prefix'] } + +keymap_copy: + '': { c: 'paste' } + '': { c: 'page-down' } + '': { c: 'page-up' } + +hide_keymap_window: false +proc_list_width: 40 diff --git a/src/test/mprocs-0.6.4/0006.yml b/src/test/mprocs-0.6.4/0006.yml new file mode 100644 index 00000000000..7fc346da9f8 --- /dev/null +++ b/src/test/mprocs-0.6.4/0006.yml @@ -0,0 +1,20 @@ +procs: + graceful_stop: + cmd: ['node', 'server.js'] + stop: 'SIGTERM' + force_stop: + shell: 'python long_running_script.py' + stop: 'SIGKILL' + custom_stop: + shell: 'ruby worker.rb' + stop: + send-keys: ['q', 'Enter'] + hard_kill: + cmd: ['java', '-jar', 'application.jar'] + stop: 'hard-kill' + +mouse_scroll_speed: 1 +proc_list_width: 35 + +keymap_procs: + '': { c: 'reload-config' } From be2f9a2be5d0056fbaa97bd6be95ec30ed580a90 Mon Sep 17 00:00:00 2001 From: Peter Flook Date: Sat, 15 Jun 2024 19:28:41 +0800 Subject: [PATCH 24/62] Add in Open Data Contract Standard (ODCS) JSON schema (#3868) --- src/api/json/catalog.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 4564811f14d..cb399da5ef2 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -3448,6 +3448,15 @@ "fileMatch": ["**/META-INF/rewrite/*.yml"], "url": "https://raw.githubusercontent.com/openrewrite/rewrite/main/rewrite-core/openrewrite.json" }, + { + "name": "Open Data Contract Standard (ODCS))", + "description": "Open Data Contract Standard contract file", + "fileMatch": ["*.odcs.yaml", "*.odcs.yml"], + "url": "https://raw.githubusercontent.com/bitol-io/open-data-contract-standard/main/schema/odcs-json-schema-latest.json", + "versions": { + "v2.2.2": "https://github.com/bitol-io/open-data-contract-standard/blob/main/schema/odcs-json-schema-v2.2.2.json" + } + }, { "name": "Outblocks project configuration", "description": "Outblocks project configuration files", From db0c679e2e8e95a15e256cfff218b8f2d55af33f Mon Sep 17 00:00:00 2001 From: squid233 <60126026+squid233@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:29:36 +0800 Subject: [PATCH 25/62] Add mkdocs-1.6.json (#3869) * Add mkdocs-1.6.json * Update mkdocs-1.6.json * Update catalog.json * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update mkdocs-1.6.json Fix "id" to "$id" * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update mkdocs-1.6.json Add negative test * Update mkdocs-1.6 Update negative test * Update mkdocs-1.6 negative test --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/api/json/catalog.json | 8 +- src/negative_test/mkdocs-1.6/extra_js.yml | 4 + src/negative_test/mkdocs-1.6/mkdocs.yml | 2 + src/schemas/json/mkdocs-1.6.json | 298 ++++++++++++++++++++++ src/test/mkdocs-1.0/alter.yml | 13 + src/test/mkdocs-1.6/mkdocs-test.yml | 34 +++ src/test/mkdocs-1.6/validation.yml | 6 + 7 files changed, 363 insertions(+), 2 deletions(-) create mode 100644 src/negative_test/mkdocs-1.6/extra_js.yml create mode 100644 src/negative_test/mkdocs-1.6/mkdocs.yml create mode 100644 src/schemas/json/mkdocs-1.6.json create mode 100644 src/test/mkdocs-1.0/alter.yml create mode 100644 src/test/mkdocs-1.6/mkdocs-test.yml create mode 100644 src/test/mkdocs-1.6/validation.yml diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index cb399da5ef2..bb7c7dada6b 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -3156,10 +3156,14 @@ "url": "https://json.schemastore.org/minecraft-trim-pattern.json" }, { - "name": "MkDocs Configuration 1.0", + "name": "mkdocs.yml", "description": "MkDocs configuration file", "fileMatch": ["mkdocs.yml"], - "url": "https://json.schemastore.org/mkdocs-1.0.json" + "url": "https://json.schemastore.org/mkdocs-1.6.json", + "versions": { + "1.0": "https://json.schemastore.org/mkdocs-1.0.json", + "1.6": "https://json.schemastore.org/mkdocs-1.6.json" + } }, { "name": "MLOS Configs", diff --git a/src/negative_test/mkdocs-1.6/extra_js.yml b/src/negative_test/mkdocs-1.6/extra_js.yml new file mode 100644 index 00000000000..64e549a826b --- /dev/null +++ b/src/negative_test/mkdocs-1.6/extra_js.yml @@ -0,0 +1,4 @@ +site_name: test +extra_javascript: + - test.js + - type: module # no path diff --git a/src/negative_test/mkdocs-1.6/mkdocs.yml b/src/negative_test/mkdocs-1.6/mkdocs.yml new file mode 100644 index 00000000000..312ed1ed0f8 --- /dev/null +++ b/src/negative_test/mkdocs-1.6/mkdocs.yml @@ -0,0 +1,2 @@ +# no site_name +site_author: me diff --git a/src/schemas/json/mkdocs-1.6.json b/src/schemas/json/mkdocs-1.6.json new file mode 100644 index 00000000000..9fe3fff9430 --- /dev/null +++ b/src/schemas/json/mkdocs-1.6.json @@ -0,0 +1,298 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/mkdocs-1.6.json", + "definitions": { + "validationValues": { + "type": "string", + "enum": ["warn", "info", "ignore"] + }, + "validationAbsoluteLinkValues": { + "type": "string", + "enum": ["warn", "info", "ignore", "relative_to_docs"] + } + }, + "description": "JSON schema for MkDocs configuration file", + "title": "MkDocs Configuration", + "type": "object", + "properties": { + "site_name": { + "description": "This is a required setting, and should be a string that is used as the main title for the project documentation.\nhttps://www.mkdocs.org/user-guide/configuration/#site_name", + "type": "string" + }, + "site_url": { + "description": "Set the canonical URL of the site. This will add a link tag with the canonical URL to the head section of each HTML page. If the 'root' of the MkDocs site will be within a subdirectory of a domain, be sure to include that subdirectory in the setting (https://example.com/foo/).\nhttps://www.mkdocs.org/user-guide/configuration/#site_url", + "type": "string" + }, + "repo_url": { + "description": "When set, provides a link to your repository (GitHub, Bitbucket, GitLab, ...) on each page.\nhttps://www.mkdocs.org/user-guide/configuration/#repo_url", + "type": "string" + }, + "repo_name": { + "description": "When set, provides the name for the link to your repository on each page.\nhttps://www.mkdocs.org/user-guide/configuration/#repo_name", + "type": "string" + }, + "edit_uri": { + "description": "The path from the base repo_url to the docs directory when directly viewing a page, accounting for specifics of the repository host (e.g. GitHub, Bitbucket, etc), the branch, and the docs directory itself.\nhttps://www.mkdocs.org/user-guide/configuration/#edit_uri", + "type": "string" + }, + "edit_uri_template": { + "description": "The more flexible variant of edit_uri.\nhttps://www.mkdocs.org/user-guide/configuration/#edit_uri_template", + "type": "string" + }, + "site_description": { + "description": "Set the site description. This will add a meta tag to the generated HTML header.\nhttps://www.mkdocs.org/user-guide/configuration/#site_description", + "type": "string" + }, + "site_author": { + "description": "Set the name of the author. This will add a meta tag to the generated HTML header.\nhttps://www.mkdocs.org/user-guide/configuration/#site_author", + "type": "string" + }, + "copyright": { + "description": "Set the copyright information to be included in the documentation by the theme.\nhttps://www.mkdocs.org/user-guide/configuration/#copyright", + "type": "string" + }, + "remote_branch": { + "default": "gh-pages", + "description": "Set the remote branch to commit to when using gh-deploy to deploy to GitHub Pages. This option can be overridden by a command line option in gh-deploy.\nhttps://www.mkdocs.org/user-guide/configuration/#remote_branch", + "type": "string" + }, + "remote_name": { + "default": "origin", + "description": "Set the remote name to push to when using gh-deploy to deploy to GitHub Pages. This option can be overridden by a command line option in gh-deploy.\nhttps://www.mkdocs.org/user-guide/configuration/#remote_name", + "type": "string" + }, + "nav": { + "description": "This setting is used to determine the format and layout of the global navigation for the site.\nhttps://www.mkdocs.org/user-guide/configuration/#nav", + "type": "array", + "items": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + } + }, + "exclude_docs": { + "description": "This config defines patterns of files (under docs_dir) to not be picked up into the built site.\nhttps://www.mkdocs.org/user-guide/configuration/#exclude_docs", + "type": "string" + }, + "draft_docs": { + "description": "This config defines patterns of files (under docs_dir) to be treated as a draft. Draft files are available during mkdocs serve and include a \"DRAFT\" mark but will not be included in the build. To prevent this effect and make \"serve\" behave the same as \"build\", you can run mkdocs serve --clean.\nhttps://www.mkdocs.org/user-guide/configuration/#draft_docs", + "type": "string" + }, + "not_in_nav": { + "description": "If you want to include some docs into the site but intentionally exclude them from the nav, normally MkDocs warns about this.\nhttps://www.mkdocs.org/user-guide/configuration/#not_in_nav", + "type": "string" + }, + "validation": { + "description": "Configure the strictness of MkDocs' diagnostic messages when validating links to documents.\nhttps://www.mkdocs.org/user-guide/configuration/#validation", + "type": "object", + "properties": { + "nav": { + "type": "object", + "properties": { + "omitted_files": { + "$ref": "#/definitions/validationValues", + "default": "info" + }, + "not_found": { + "$ref": "#/definitions/validationValues", + "default": "warn" + }, + "absolute_links": { + "$ref": "#/definitions/validationValues", + "default": "info" + } + } + }, + "links": { + "type": "object", + "properties": { + "not_found": { + "$ref": "#/definitions/validationValues", + "default": "warn" + }, + "anchors": { + "$ref": "#/definitions/validationValues", + "default": "info" + }, + "absolute_links": { + "$ref": "#/definitions/validationAbsoluteLinkValues", + "default": "info" + }, + "unrecognized_links": { + "$ref": "#/definitions/validationValues", + "default": "info" + } + } + }, + "omitted_files": { + "$ref": "#/definitions/validationValues" + }, + "not_found": { + "$ref": "#/definitions/validationValues" + }, + "absolute_links": { + "$ref": "#/definitions/validationAbsoluteLinkValues" + }, + "anchors": { + "$ref": "#/definitions/validationValues" + }, + "unrecognized_links": { + "$ref": "#/definitions/validationValues" + } + } + }, + "theme": { + "description": "Sets the theme and theme specific configuration of your documentation site.\nhttps://www.mkdocs.org/user-guide/configuration/#theme", + "anyOf": [ + { + "type": "object", + "properties": { + "name": { + "default": "mkdocs", + "description": "The string name of a known installed theme, or null if using a local custom theme.", + "type": ["string", "null"] + }, + "locale": { + "default": "en", + "description": "A code representing the language of your site.", + "type": "string" + }, + "custom_dir": { + "description": "A directory containing a custom theme. This can either be a relative directory, in which case it is resolved relative to the directory containing your configuration file or it can be an absolute directory path from the root of your local file system.", + "type": "string" + }, + "static_templates": { + "description": "A list of templates to render as static pages. The templates must be located in either the theme's template directory or in the custom_dir defined in the theme configuration.", + "type": "array" + } + } + }, + { + "default": "mkdocs", + "type": "string" + } + ] + }, + "docs_dir": { + "default": "docs", + "description": "The directory containing the documentation source markdown files. This can either be a relative directory, in which case it is resolved relative to the directory containing your configuration file, or it can be an absolute directory path from the root of your local file system.\nhttps://www.mkdocs.org/user-guide/configuration/#docs_dir", + "type": "string" + }, + "site_dir": { + "default": "site", + "description": "The directory where the output HTML and other files are created. This can either be a relative directory, in which case it is resolved relative to the directory containing your configuration file, or it can be an absolute directory path from the root of your local file system.\nhttps://www.mkdocs.org/user-guide/configuration/#site_dir", + "type": "string" + }, + "extra_css": { + "default": [], + "description": "Set a list of CSS files (relative to docs_dir) to be included by the theme, typically as tags.\nhttps://www.mkdocs.org/user-guide/configuration/#extra_css", + "type": "array", + "items": { + "type": "string" + } + }, + "extra_javascript": { + "default": [], + "description": "Set a list of JavaScript files in your docs_dir to be included by the theme, as + # New behavior in MkDocs 1.5: + - implicitly_as_module.mjs # + # Config keys only supported since MkDocs 1.5: + - path: explicitly_as_module.mjs # + type: module + - path: deferred_plain.js # + defer: true + - path: scripts/async_module.mjs # + type: module + async: true diff --git a/src/test/mkdocs-1.6/validation.yml b/src/test/mkdocs-1.6/validation.yml new file mode 100644 index 00000000000..5268d1b4add --- /dev/null +++ b/src/test/mkdocs-1.6/validation.yml @@ -0,0 +1,6 @@ +site_name: validation +validation: + omitted_files: warn + absolute_links: relative_to_docs # Or 'relative_to_docs' - new in MkDocs 1.6 + unrecognized_links: warn + anchors: warn # New in MkDocs 1.6 From d51a65c4679bee8317213f0699046ed7a3e60b6d Mon Sep 17 00:00:00 2001 From: InSync Date: Sun, 16 Jun 2024 10:30:46 +0700 Subject: [PATCH 26/62] Update `partial-pyright.json` (#3870) --- src/schemas/json/partial-pyright.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/schemas/json/partial-pyright.json b/src/schemas/json/partial-pyright.json index 45750faf9bb..dce07a96cbb 100644 --- a/src/schemas/json/partial-pyright.json +++ b/src/schemas/json/partial-pyright.json @@ -637,8 +637,8 @@ "include": { "type": "array", "title": "Files and directories included in type analysis", - "description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", - "x-intellij-html-description": "Paths of directories or files that should be included. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed.", + "description": "Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", + "x-intellij-html-description": "Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed.", "items": { "type": "string", "description": "File or directory to include in type analysis", @@ -648,8 +648,8 @@ "exclude": { "type": "array", "title": "Files and directories excluded from type analysis", - "description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", - "x-intellij-html-description": "Paths of directories or files that should not be included. These override the includes directories, allowing specific subdirectories to be ignored. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: **/node_modules, **/__pycache__, **/.* and any virtual environment directories.", + "description": "Paths of directories or files that should not be considered part of the project. These override the includes directories and files, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", + "x-intellij-html-description": "Paths of directories or files that should not be considered part of the project. These override the includes directories and files, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: **/node_modules, **/__pycache__, **/.* and any virtual environment directories.", "items": { "type": "string", "title": "File or directory to exclude from type analysis", From 08b64be2c4fbe86de0d8ce197d3687980c9043ef Mon Sep 17 00:00:00 2001 From: InSync Date: Tue, 18 Jun 2024 00:05:30 +0700 Subject: [PATCH 27/62] Update `partial-pyright.json` (#3871) --- src/schemas/json/partial-pyright.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/schemas/json/partial-pyright.json b/src/schemas/json/partial-pyright.json index dce07a96cbb..6c5971402cd 100644 --- a/src/schemas/json/partial-pyright.json +++ b/src/schemas/json/partial-pyright.json @@ -713,12 +713,11 @@ "pattern": "^(.*)$" }, "stubPath": { - "$comment": "There is a discrepancy between the description in the configuration documentation file and the default value as specified in the schema. Both are kept here for later inspections.", "type": "string", "title": "Path to directory containing custom type stub files", - "description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is `./typings` (`typingsPath` is now deprecated).", - "x-intellij-html-description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory. The default value of this setting is ./typings (typingsPath is now deprecated).", - "default": "", + "description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory.", + "x-intellij-html-description": "Path to a directory that contains custom type stubs. Each package's type stub file(s) are expected to be in its own subdirectory.", + "default": "./typings", "examples": ["src/typestubs"], "pattern": "^(.*)$" }, From 98eaa0d74cbd01c95f072a0643e6652aad773f3a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 11:17:19 -0700 Subject: [PATCH 28/62] [pre-commit.ci] pre-commit autoupdate (#3872) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d83fe35c4dd..c4eeff2bfd5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: 'https://github.com/rbubley/mirrors-prettier' - rev: 'v3.3.1' + rev: 'v3.3.2' hooks: - id: 'prettier' types_or: ['yaml', 'json', 'javascript', 'css', 'markdown'] From 32ed6ab65cff1ad9d439619cbc7ee4259d0fa80c Mon Sep 17 00:00:00 2001 From: InSync Date: Tue, 18 Jun 2024 23:23:31 +0700 Subject: [PATCH 29/62] Add missing `markdownDescription` properties for `partial-pyright.json` (#3874) --- src/schemas/json/partial-pyright.json | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/schemas/json/partial-pyright.json b/src/schemas/json/partial-pyright.json index 6c5971402cd..3d6b1e721b3 100644 --- a/src/schemas/json/partial-pyright.json +++ b/src/schemas/json/partial-pyright.json @@ -29,6 +29,7 @@ "type": "string", "title": "Python version to assume during type analysis", "description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format `M.m` where `M` is the major version and `m` is the minor (e.g. `3.0` or `3.6`). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", + "markdownDescription": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format `M.m` where `M` is the major version and `m` is the minor (e.g. `3.0` or `3.6`). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", "x-intellij-html-description": "Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format M.m where M is the major version and m is the minor (e.g. 3.0 or 3.6). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present.", "default": "", "examples": ["3.7"], @@ -38,6 +39,7 @@ "type": "string", "title": "Python platform to assume during type analysis", "description": "Specifies the target platform that will be used to execute the source code. Should be one of `Windows`, `Darwin`, `Linux`, or `All`. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", + "markdownDescription": "Specifies the target platform that will be used to execute the source code. Should be one of `Windows`, `Darwin`, `Linux`, or `All`. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", "x-intellij-html-description": "Specifies the target platform that will be used to execute the source code. Should be one of Windows, Darwin, Linux, or All. If specified, pyright will tailor its use of type stub files, which conditionalize type definitions based on the platform. If no platform is specified, pyright will use the current platform.", "default": "", "examples": ["Linux"], @@ -55,6 +57,7 @@ "type": "boolean", "title": "Infer strict types for list expressions", "description": "When inferring the type of a list, use strict type assumptions. For example, the expression `[1, 'a', 3.4]` could be inferred to be of type `list[Any]` or `list[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", + "markdownDescription": "When inferring the type of a list, use strict type assumptions. For example, the expression `[1, 'a', 3.4]` could be inferred to be of type `list[Any]` or `list[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", "x-intellij-html-description": "When inferring the type of a list, use strict type assumptions. For example, the expression [1, 'a', 3.4] could be inferred to be of type list[Any] or list[int | str | float]. If this setting is true, it will use the latter (stricter) type.", "default": false }, @@ -62,6 +65,7 @@ "type": "boolean", "title": "Infer strict types for set expressions", "description": "When inferring the type of a set, use strict type assumptions. For example, the expression `{1, 'a', 3.4}` could be inferred to be of type `set[Any]` or `set[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", + "markdownDescription": "When inferring the type of a set, use strict type assumptions. For example, the expression `{1, 'a', 3.4}` could be inferred to be of type `set[Any]` or `set[int | str | float]`. If this setting is `true`, it will use the latter (stricter) type.", "x-intellij-html-description": "When inferring the type of a set, use strict type assumptions. For example, the expression {1, 'a', 3.4} could be inferred to be of type set[Any] or set[int | str | float]. If this setting is true, it will use the latter (stricter) type.", "default": false }, @@ -69,6 +73,7 @@ "type": "boolean", "title": "Infer strict types for dictionary expressions", "description": "When inferring the type of a dictionary's keys and values, use strict type assumptions. For example, the expression `{'a': 1, 'b': 'a'}` could be inferred to be of type `dict[str, Any]` or `dict[str, int | str]`. If this setting is `true`, it will use the latter (stricter) type.", + "markdownDescription": "When inferring the type of a dictionary's keys and values, use strict type assumptions. For example, the expression `{'a': 1, 'b': 'a'}` could be inferred to be of type `dict[str, Any]` or `dict[str, int | str]`. If this setting is `true`, it will use the latter (stricter) type.", "x-intellij-html-description": "When inferring the type of a dictionary's keys and values, use strict type assumptions. For example, the expression {'a': 1, 'b': 'a'} could be inferred to be of type dict[str, Any] or dict[str, int | str]. If this setting is true, it will use the latter (stricter) type.", "default": false }, @@ -208,6 +213,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of type mismatch detected by `typing.assert_type` call", "description": "Generate or suppress diagnostics for a type mismatch detected by the `typing.assert_type` call.", + "markdownDescription": "Generate or suppress diagnostics for a type mismatch detected by the `typing.assert_type` call.", "x-intellij-html-description": "Generate or suppress diagnostics for a type mismatch detected by the typing.assert_type call.", "default": "error" }, @@ -257,6 +263,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of diagnostics related to unary and binary operators", "description": "Generate or suppress diagnostics related to the use of unary or binary operators (like `*` or `not`).", + "markdownDescription": "Generate or suppress diagnostics related to the use of unary or binary operators (like `*` or `not`).", "x-intellij-html-description": "Generate or suppress diagnostics related to the use of unary or binary operators (like * or not).", "default": "error" }, @@ -264,6 +271,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to subscript (index) a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to subscript (index) a variable with an `Optional` type.", + "markdownDescription": "Generate or suppress diagnostics for an attempt to subscript (index) a variable with an `Optional` type.", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to subscript (index) a variable with an Optional type.", "default": "error" }, @@ -271,6 +279,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to access a member of a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to access a member of a variable with an `Optional` type.", + "markdownDescription": "Generate or suppress diagnostics for an attempt to access a member of a variable with an `Optional` type.", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to access a member of a variable with an Optional type.", "default": "error" }, @@ -278,6 +287,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to call a variable with `Optional` type", "description": "Generate or suppress diagnostics for an attempt to call a variable with an `Optional` type.", + "markdownDescription": "Generate or suppress diagnostics for an attempt to call a variable with an `Optional` type.", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to call a variable with an Optional type.", "default": "error" }, @@ -285,6 +295,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as an iterable value", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an iterable value (e.g. within a `for` statement).", + "markdownDescription": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an iterable value (e.g. within a `for` statement).", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to use an Optional type as an iterable value (e.g. within a for statement).", "default": "error" }, @@ -292,6 +303,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as a parameter to a `with` statement", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as a context manager (as a parameter to a `with` statement).", + "markdownDescription": "Generate or suppress diagnostics for an attempt to use an `Optional` type as a context manager (as a parameter to a `with` statement).", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to use an Optional type as a context manager (as a parameter to a with statement).", "default": "error" }, @@ -299,6 +311,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to use an `Optional` type as an operand for a binary or unary operator", "description": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an operand to a unary operator (like `~` or `not`) or the left-hand operator of a binary operator (like `*`, `==`, `or`).", + "markdownDescription": "Generate or suppress diagnostics for an attempt to use an `Optional` type as an operand to a unary operator (like `~` or `not`) or the left-hand operator of a binary operator (like `*`, `==`, `or`).", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to use an Optional type as an operand to a unary operator (like ~ or not) or the left-hand operator of a binary operator (like *, ==, or).", "default": "error" }, @@ -318,6 +331,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of attempts to access a non-required key in a `TypedDict` without a check for its presence", "description": "Generate or suppress diagnostics for an attempt to access a non-required field within a `TypedDict` without first checking whether it is present.", + "markdownDescription": "Generate or suppress diagnostics for an attempt to access a non-required field within a `TypedDict` without first checking whether it is present.", "x-intellij-html-description": "Generate or suppress diagnostics for an attempt to access a non-required field within a TypedDict without first checking whether it is present.", "default": "error" }, @@ -343,6 +357,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of a named tuple definition that does not contain type information", "description": "Generate or suppress diagnostics when `namedtuple` is used rather than `NamedTuple`. The former contains no type information, whereas the latter does.", + "markdownDescription": "Generate or suppress diagnostics when `namedtuple` is used rather than `NamedTuple`. The former contains no type information, whereas the latter does.", "x-intellij-html-description": "Generate or suppress diagnostics when namedtuple is used rather than NamedTuple. The former contains no type information, whereas the latter does.", "default": "none" }, @@ -350,6 +365,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of private variables and functions used outside of the owning class or module and usage of protected members outside of subclasses", "description": "Generate or suppress diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore (`_`) and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.", + "markdownDescription": "Generate or suppress diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore (`_`) and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.", "x-intellij-html-description": "Generate or suppress diagnostics for incorrect usage of private or protected variables or functions. Protected class members begin with a single underscore (_) and can be accessed only by subclasses. Private class members begin with a double underscore but do not end in a double underscore and can be accessed only within the declaring class. Variables and functions declared outside of a class are considered private if their names start with either a single or double underscore, and they cannot be accessed outside of the declaring module.", "default": "none" }, @@ -363,6 +379,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of improper usage of symbol imported from a `py.typed` module that is not re-exported from that module", "description": "Generate or suppress diagnostics for use of a symbol from a `py.typed` module that is not meant to be exported from that module.", + "markdownDescription": "Generate or suppress diagnostics for use of a symbol from a `py.typed` module that is not meant to be exported from that module.", "x-intellij-html-description": "Generate or suppress diagnostics for use of a symbol from a py.typed module that is not meant to be exported from that module.", "default": "error" }, @@ -394,6 +411,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `__init__` and `__new__` methods whose signatures are inconsistent", "description": "Generate or suppress diagnostics when an `__init__` method signature is inconsistent with a `__new__` signature.", + "markdownDescription": "Generate or suppress diagnostics when an `__init__` method signature is inconsistent with a `__new__` signature.", "x-intellij-html-description": "Generate or suppress diagnostics when an __init__ method signature is inconsistent with a __new__ signature.", "default": "none" }, @@ -413,6 +431,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of missing call to parent class for inherited `__init__` methods", "description": "Generate or suppress diagnostics for `__init__`, `__init_subclass__`, `__enter__` and `__exit__` methods in a subclass that fail to call through to the same-named method on a base class.", + "markdownDescription": "Generate or suppress diagnostics for `__init__`, `__init_subclass__`, `__enter__` and `__exit__` methods in a subclass that fail to call through to the same-named method on a base class.", "x-intellij-html-description": "Generate or suppress diagnostics for __init__, __init_subclass__, __enter__ and __exit__ methods in a subclass that fail to call through to the same-named method on a base class.", "default": "none" }, @@ -420,6 +439,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of instance variables that are not initialized in the constructor", "description": "Generate or suppress diagnostics for instance variables within a class that are not initialized or declared within the class body or the `__init__` method.", + "markdownDescription": "Generate or suppress diagnostics for instance variables within a class that are not initialized or declared within the class body or the `__init__` method.", "x-intellij-html-description": "Generate or suppress diagnostics for instance variables within a class that are not initialized or declared within the class body or the __init__ method.", "default": "none" }, @@ -463,6 +483,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting input parameters that are missing a type annotation", "description": "Generate or suppress diagnostics for input parameters for functions or methods that are missing a type annotation. The `self` and `cls` parameters used within methods are exempt from this check.", + "markdownDescription": "Generate or suppress diagnostics for input parameters for functions or methods that are missing a type annotation. The `self` and `cls` parameters used within methods are exempt from this check.", "x-intellij-html-description": "Generate or suppress diagnostics for input parameters for functions or methods that are missing a type annotation. The self and cls parameters used within methods are exempt from this check.", "default": "none" }, @@ -476,6 +497,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting improper use of type variables within function signatures", "description": "Generate or suppress diagnostics when a `TypeVar` is used inappropriately (e.g. if a `TypeVar` appears only once) within a generic function signature.", + "markdownDescription": "Generate or suppress diagnostics when a `TypeVar` is used inappropriately (e.g. if a `TypeVar` appears only once) within a generic function signature.", "x-intellij-html-description": "Generate or suppress diagnostics when a TypeVar is used inappropriately (e.g. if a TypeVar appears only once) within a generic function signature.", "default": "warning" }, @@ -489,6 +511,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting calls to `isinstance` or `issubclass` where the result is statically determined to be always true", "description": "Generate or suppress diagnostics for `isinstance` or `issubclass` calls where the result is statically determined to be always true. Such calls are often indicative of a programming error.", + "markdownDescription": "Generate or suppress diagnostics for `isinstance` or `issubclass` calls where the result is statically determined to be always true. Such calls are often indicative of a programming error.", "x-intellij-html-description": "Generate or suppress diagnostics for isinstance or issubclass calls where the result is statically determined to be always true. Such calls are often indicative of a programming error.", "default": "none" }, @@ -496,6 +519,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting calls to `cast` that are unnecessary", "description": "Generate or suppress diagnostics for `cast` calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.", + "markdownDescription": "Generate or suppress diagnostics for `cast` calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.", "x-intellij-html-description": "Generate or suppress diagnostics for cast calls that are statically determined to be unnecessary. Such calls are sometimes indicative of a programming error.", "default": "none" }, @@ -503,6 +527,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting the use of `==` or `!=` comparisons that are unnecessary", "description": "Generate or suppress diagnostics for `==` or `!=` comparisons or other conditional expressions that are statically determined to always evaluate to `False` or `True`. Such comparisons are sometimes indicative of a programming error.", + "markdownDescription": "Generate or suppress diagnostics for `==` or `!=` comparisons or other conditional expressions that are statically determined to always evaluate to `False` or `True`. Such comparisons are sometimes indicative of a programming error.", "x-intellij-html-description": "Generate or suppress diagnostics for == or != comparisons or other conditional expressions that are statically determined to always evaluate to False or True. Such comparisons are sometimes indicative of a programming error.", "default": "none" }, @@ -510,6 +535,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting the use of `in` operations that are unnecessary", "description": "Generate or suppress diagnostics for `in` operations that are statically determined to always evaluate to `False` or `True`. Such operations are sometimes indicative of a programming error.", + "markdownDescription": "Generate or suppress diagnostics for `in` operations that are statically determined to always evaluate to `False` or `True`. Such operations are sometimes indicative of a programming error.", "x-intellij-html-description": "Generate or suppress diagnostics for in operations that are statically determined to always evaluate to False or True. Such operations are sometimes indicative of a programming error.", "default": "none" }, @@ -517,6 +543,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting `assert` expressions that will always evaluate to `True`", "description": "Generate or suppress diagnostics for `assert` statement that will provably always assert. This can be indicative of a programming error.", + "markdownDescription": "Generate or suppress diagnostics for `assert` statement that will provably always assert. This can be indicative of a programming error.", "x-intellij-html-description": "Generate or suppress diagnostics for assert statement that will provably always assert. This can be indicative of a programming error.", "default": "warning" }, @@ -524,6 +551,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting missing or misnamed `self` parameters", "description": "Generate or suppress diagnostics for a missing or misnamed `self` parameter in instance methods and `cls` parameter in class methods. Instance methods in metaclasses (classes that derive from `type`) are allowed to use `cls` for instance methods.", + "markdownDescription": "Generate or suppress diagnostics for a missing or misnamed `self` parameter in instance methods and `cls` parameter in class methods. Instance methods in metaclasses (classes that derive from `type`) are allowed to use `cls` for instance methods.", "x-intellij-html-description": "Generate or suppress diagnostics for a missing or misnamed self parameter in instance methods and cls parameter in class methods. Instance methods in metaclasses (classes that derive from type) are allowed to use cls for instance methods.", "default": "warning" }, @@ -561,6 +589,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of incomplete type stubs that declare a module-level `__getattr__` function", "description": "Generate or suppress diagnostics for a module-level `__getattr__` call in a type stub file, indicating that it is incomplete.", + "markdownDescription": "Generate or suppress diagnostics for a module-level `__getattr__` call in a type stub file, indicating that it is incomplete.", "x-intellij-html-description": "Generate or suppress diagnostics for a module-level __getattr__ call in a type stub file, indicating that it is incomplete.", "default": "none" }, @@ -568,6 +597,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of unsupported operations performed on `__all__`", "description": "Generate or suppress diagnostics for statements that define or manipulate `__all__` in a way that is not allowed by a static type checker, thus rendering the contents of `__all__` to be unknown or incorrect. Also reports names within the `__all__` list that are not present in the module namespace.", + "markdownDescription": "Generate or suppress diagnostics for statements that define or manipulate `__all__` in a way that is not allowed by a static type checker, thus rendering the contents of `__all__` to be unknown or incorrect. Also reports names within the `__all__` list that are not present in the module namespace.", "x-intellij-html-description": "Generate or suppress diagnostics for statements that define or manipulate __all__ in a way that is not allowed by a static type checker, thus rendering the contents of __all__ to be unknown or incorrect. Also reports names within the __all__ list that are not present in the module namespace.", "default": "warning" }, @@ -575,6 +605,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of call expressions whose results are not consumed", "description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is not `None`.", + "markdownDescription": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is not `None`.", "x-intellij-html-description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is not None.", "default": "none" }, @@ -582,6 +613,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of call expressions that returns `Coroutine` whose results are not consumed", "description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is a `Coroutine`. This identifies a common error where an `await` keyword is mistakenly omitted.", + "markdownDescription": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is a `Coroutine`. This identifies a common error where an `await` keyword is mistakenly omitted.", "x-intellij-html-description": "Generate or suppress diagnostics for call statements whose return value is not used in any way and is a Coroutine. This identifies a common error where an await keyword is mistakenly omitted.", "default": "error" }, @@ -589,6 +621,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of unreachable except clauses", "description": "Generate or suppress diagnostics for an `except` clause that will never be reached.", + "markdownDescription": "Generate or suppress diagnostics for an `except` clause that will never be reached.", "x-intellij-html-description": "Generate or suppress diagnostics for an except clause that will never be reached.", "default": "error" }, @@ -602,6 +635,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `# type: ignore` comments that have no effect", "description": "Generate or suppress diagnostics for a `# type: ignore` or `# pyright: ignore` comment that would have no effect if removed.", + "markdownDescription": "Generate or suppress diagnostics for a `# type: ignore` or `# pyright: ignore` comment that would have no effect if removed.", "x-intellij-html-description": "Generate or suppress diagnostics for a # type: ignore or # pyright: ignore comment that would have no effect if removed.", "default": "none" }, @@ -609,6 +643,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting of `match` statements that do not exhaustively match all possible values", "description": "Generate or suppress diagnostics for a `match` statement that does not provide cases that exhaustively match against all potential types of the target expression.", + "markdownDescription": "Generate or suppress diagnostics for a `match` statement that does not provide cases that exhaustively match against all potential types of the target expression.", "x-intellij-html-description": "Generate or suppress diagnostics for a match statement that does not provide cases that exhaustively match against all potential types of the target expression.", "default": "none" }, @@ -622,6 +657,7 @@ "$ref": "#/definitions/diagnostic", "title": "Controls reporting overridden methods that are missing an `@override` decorator", "description": "Generate or suppress diagnostics for overridden methods in a class that are missing an explicit `@override` decorator.", + "markdownDescription": "Generate or suppress diagnostics for overridden methods in a class that are missing an explicit `@override` decorator.", "x-intellij-html-description": "Generate or suppress diagnostics for overridden methods in a class that are missing an explicit @override decorator.", "default": "none" } @@ -631,6 +667,7 @@ "type": "string", "title": "Path to configuration file that this configuration extends", "description": "Path to another `.json` or `.toml` file that is used as a \"base configuration\", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", + "markdownDescription": "Path to another `.json` or `.toml` file that is used as a \"base configuration\", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", "x-intellij-html-description": "Path to another .json or .toml file that is used as a "base configuration", allowing this configuration to inherit configuration settings. Top-level keys within this configuration overwrite top-level keys in the base configuration. Multiple levels of inheritance are supported. Relative paths specified in a configuration file are resolved relative to the location of that configuration file.", "pattern": "^(.*)$" }, @@ -638,6 +675,7 @@ "type": "array", "title": "Files and directories included in type analysis", "description": "Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", + "markdownDescription": "Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no include paths are specified, the root path for the workspace is assumed.", "x-intellij-html-description": "Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed.", "items": { "type": "string", @@ -649,6 +687,7 @@ "type": "array", "title": "Files and directories excluded from type analysis", "description": "Paths of directories or files that should not be considered part of the project. These override the includes directories and files, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", + "markdownDescription": "Paths of directories or files that should not be considered part of the project. These override the includes directories and files, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` and any virtual environment directories.", "x-intellij-html-description": "Paths of directories or files that should not be considered part of the project. These override the includes directories and files, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: **/node_modules, **/__pycache__, **/.* and any virtual environment directories.", "items": { "type": "string", @@ -660,6 +699,7 @@ "type": "array", "title": "Files and directories whose diagnostics are suppressed", "description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", + "markdownDescription": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", "x-intellij-html-description": "Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed even if they are an included file or within the transitive closure of an included file. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", "items": { "type": "string", @@ -671,6 +711,7 @@ "type": "array", "title": "Files and directories that should use \"strict\" type checking rules", "description": "Paths of directories or files that should use \"strict\" analysis if they are included. This is the same as manually adding a `# pyright: strict` comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", + "markdownDescription": "Paths of directories or files that should use \"strict\" analysis if they are included. This is the same as manually adding a `# pyright: strict` comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: `**` (a directory or multiple levels of directories), `*` (a sequence of zero or more characters), or `?` (a single character).", "x-intellij-html-description": "Paths of directories or files that should use "strict" analysis if they are included. This is the same as manually adding a # pyright: strict comment. In strict mode, most type-checking rules are enabled. Paths may contain wildcard characters: ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character).", "items": { "type": "string", @@ -682,6 +723,7 @@ "type": "object", "title": "Identifiers that should be treated as constants", "description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, `{ \"DEBUG\": true }` indicates that pyright should assume that the identifier `DEBUG` will always be equal to `True`. If this identifier is used within a conditional expression (such as `if not DEBUG:`) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. `my_module.DEBUG`) are also supported.", + "markdownDescription": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, `{ \"DEBUG\": true }` indicates that pyright should assume that the identifier `DEBUG` will always be equal to `True`. If this identifier is used within a conditional expression (such as `if not DEBUG:`) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. `my_module.DEBUG`) are also supported.", "x-intellij-html-description": "Set of identifiers that should be assumed to contain a constant value wherever used within this program. For example, { "DEBUG": true } indicates that pyright should assume that the identifier DEBUG will always be equal to True. If this identifier is used within a conditional expression (such as if not DEBUG:) pyright will use the indicated value to determine whether the guarded block is reachable or not. Member expressions that reference one of these constants (e.g. my_module.DEBUG) are also supported.", "properties": {}, "additionalProperties": { @@ -694,6 +736,7 @@ "enum": ["off", "basic", "standard", "strict"], "title": "Specifies the default rule set to use for type checking", "description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to `off`, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", + "markdownDescription": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to `off`, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", "x-intellij-html-description": "Specifies the default rule set to use. Some rules can be overridden using additional configuration flags documented below. If set to off, all type-checking rules are disabled, but Python syntax and semantic errors are still reported.", "default": "standard" }, @@ -1004,6 +1047,7 @@ "type": "string", "title": "Path to directory containing a folder of virtual environments", "description": "Path to a directory containing one or more subdirectories, each of which contains a virtual environment. When used in conjunction with a `venv` setting, pyright will search for imports in the virtual environment's site-packages directory rather than the paths specified by the default Python interpreter. If you are working on a project with other developers, it is best not to specify this setting in the config file, since this path will typically differ for each developer. Instead, it can be specified on the command line or in a per-user setting.", + "markdownDescription": "Path to a directory containing one or more subdirectories, each of which contains a virtual environment. When used in conjunction with a `venv` setting, pyright will search for imports in the virtual environment's site-packages directory rather than the paths specified by the default Python interpreter. If you are working on a project with other developers, it is best not to specify this setting in the config file, since this path will typically differ for each developer. Instead, it can be specified on the command line or in a per-user setting.", "x-intellij-html-description": "Path to a directory containing one or more subdirectories, each of which contains a virtual environment. When used in conjunction with a venv setting, pyright will search for imports in the virtual environment's site-packages directory rather than the paths specified by the default Python interpreter. If you are working on a project with other developers, it is best not to specify this setting in the config file, since this path will typically differ for each developer. Instead, it can be specified on the command line or in a per-user setting.", "default": "", "pattern": "^(.*)$" @@ -1012,6 +1056,7 @@ "type": "string", "title": "Name of virtual environment subdirectory within `venvPath`", "description": "Used in conjunction with the `venvPath`, specifies the virtual environment to use.", + "markdownDescription": "Used in conjunction with the `venvPath`, specifies the virtual environment to use.", "x-intellij-html-description": "Used in conjunction with the venvPath, specifies the virtual environment to use.", "default": "", "examples": ["python37"], From 91d3af2df2a62f93faaf1e97c4b642557bf81440 Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Tue, 18 Jun 2024 18:24:44 +0200 Subject: [PATCH 30/62] Support fail-fast attribute in zuul-schema (#3873) --- src/schemas/json/zuul.json | 4 ++++ src/test/zuul/jobs.yaml | 1 + 2 files changed, 5 insertions(+) diff --git a/src/schemas/json/zuul.json b/src/schemas/json/zuul.json index 13a9e505b93..a0621eabf2e 100644 --- a/src/schemas/json/zuul.json +++ b/src/schemas/json/zuul.json @@ -309,6 +309,10 @@ "PipelineModel": { "additionalProperties": false, "properties": { + "fail-fast": { + "title": "Fail Fast", + "type": "boolean" + }, "jobs": { "items": {}, "title": "Jobs", diff --git a/src/test/zuul/jobs.yaml b/src/test/zuul/jobs.yaml index ebfe50df2a3..c367b38e103 100644 --- a/src/test/zuul/jobs.yaml +++ b/src/test/zuul/jobs.yaml @@ -129,6 +129,7 @@ var_for_all_jobs: value # common pipeline names (sadly at same level as properties) check: + fail-fast: true jobs: - job1 - job2: From c85c84c949f2fd11034020a953ba35a9d6f4ce66 Mon Sep 17 00:00:00 2001 From: Ben Cox <1038350+ind1go@users.noreply.github.com> Date: Wed, 19 Jun 2024 18:54:41 +0100 Subject: [PATCH 31/62] Update CICS region tagging supported fileMatch (#3875) --- src/api/json/catalog.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index bb7c7dada6b..1d9544dc41a 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -5824,7 +5824,7 @@ { "name": "CICS TS region tagging", "description": "CICS region tagging in IBM CICS Transaction Server for z/OS", - "fileMatch": ["cicstags.yaml"], + "fileMatch": ["cicstags.yaml", "cicstags.yml"], "url": "https://public.dhe.ibm.com/ibmdl/export/pub/software/htp/cics/schemas/json/cicstags.json" }, { From f00dd0ff4bcb807e89e83d79ecac362095a72a2e Mon Sep 17 00:00:00 2001 From: Jannik Buhr <17450586+jmbuhr@users.noreply.github.com> Date: Wed, 19 Jun 2024 19:55:08 +0200 Subject: [PATCH 32/62] Update github organization name for kimmdy in catalog.json (#3876) --- src/api/json/catalog.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 1d9544dc41a..0eb22ffc2be 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -2805,9 +2805,9 @@ }, { "name": "KIMMDY config file", - "description": "KIMMDY config file, see: hits-mbm-dev.github.io/kimmdy", + "description": "KIMMDY config file, see: graeter-group.github.io/kimmdy", "fileMatch": ["kimmdy.yml", "kimmdy.yaml"], - "url": "https://raw.githubusercontent.com/hits-mbm-dev/kimmdy/main/src/kimmdy/kimmdy-yaml-schema.json" + "url": "https://raw.githubusercontent.com/graeter-group/kimmdy/main/src/kimmdy/kimmdy-yaml-schema.json" }, { "name": "KrakenD", From d640ce0b6cefc8812bade4f1896a1b05b3ecd0eb Mon Sep 17 00:00:00 2001 From: Fabio Bonelli Date: Wed, 19 Jun 2024 19:55:43 +0200 Subject: [PATCH 33/62] Update publiccode.yml schema to the latest version (#3877) * Update publiccode.yml schema to the latest version Sync the changes to the standard that have not yet been included in the schema, like v0.3.0 and v0.4.0: https://github.com/publiccodeyml/publiccode.yml/releases * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/schemas/json/publiccode.json | 36 +++++++++++++++++++------------ src/test/publiccode/extended.json | 3 ++- src/test/publiccode/minimum.json | 3 +-- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/schemas/json/publiccode.json b/src/schemas/json/publiccode.json index ab28d07258c..f7454b97bef 100644 --- a/src/schemas/json/publiccode.json +++ b/src/schemas/json/publiccode.json @@ -186,7 +186,7 @@ "description": "This key specifies which platform the software runs on. It is meant to describe the platforms that users will use to access and operate the software, rather than the platform the software itself runs on.\n\nUse the predefined values if possible. If the software runs on a platform for which a predefined value is not available, a different value can be used.", "type": "array", "items": { - "enum": ["web", "windows", "mac", "linux", "ios", "android"] + "type": "string" } }, "categories": { @@ -218,12 +218,15 @@ "data-analytics", "data-collection", "data-visualization", + "design", + "design-system", "digital-asset-management", "digital-citizenship", "document-management", "donor-management", "e-commerce", "e-signature", + "educational-content", "email-management", "email-marketing", "employee-management", @@ -245,6 +248,7 @@ "ide", "identity-management", "instant-messaging", + "integrated-library-system", "inventory-management", "it-asset-management", "it-development", @@ -270,6 +274,7 @@ "project-management", "property-management", "real-estate-management", + "regulations-and-directives", "remote-support", "resource-management", "sales-management", @@ -292,6 +297,7 @@ "web-collaboration", "web-conferencing", "website-builder", + "whistleblowing", "workflow-management" ] } @@ -401,7 +407,7 @@ "longDescription": { "description": "This key contains a longer description of the software, between 500 and 10000 chars. It is meant to provide an overview of the capabilities of the software for a potential user. The audience for this text should be that of users of the software, not developers. You can think of this text as the description of the software that would be in its website (if the software had one).\n\nThis description can contain some basic markdown: *italic*, **bold**, bullet points and [links](#).", "type": "string", - "minLength": 500, + "minLength": 150, "maxLength": 10000 }, "documentation": { @@ -418,8 +424,7 @@ "description": "This key contains a list of software features, describing what capabilities the software allows to do. The audience for this text should be that of public decision makers who will be commissioning the software. The features should thus not target developers; instead of listing technical features referring to implementation details, prefer listing user-visible functionalities of the software.\n\nWhile the key is mandatory, there is no mandatory minimum or maximum number of features that should be listed in this key. Each feature must use a maximum of 100 characters.\n\nThe suggested number of features to list is between 5 and 20, depending on the software size and complexity. There is no need for exhaustiveness, as users can always read the documentation for additional information.", "type": "array", "items": { - "type": "string", - "maxLength": 100 + "type": "string" } }, "screenshots": { @@ -557,19 +562,19 @@ "additionalProperties": false, "properties": { "lineeGuidaDesign": { - "description": "If present and set to yes, the software is compliant with the Italian accessibility laws (L. 4/2004), as further explained in the linee guida di design (Italian language).", + "description": "If present and set to true, the software is compliant with the Italian accessibility laws (L. 4/2004), as further explained in the linee guida di design (Italian language).", "type": "boolean" }, - "modelloInteroperatibilita": { - "description": "If present and set to yes, the software is compliant with the linee guida sull'interoperabilità.\n\nRegulatory reference: Art. 73 del CAD (Italian language).", + "modelloInteroperabilita": { + "description": "If present and set to true, the software is compliant with the linee guida sull'interoperabilità.\n\nRegulatory reference: Art. 73 del CAD (Italian language).", "type": "boolean" }, "misureMinimeSicurezza": { - "description": "If present and set to yes, the software is compliant with the Misure minime di sicurezza ICT per le Pubbliche amministrazioni (Italian language).", + "description": "If present and set to true, the software is compliant with the Misure minime di sicurezza ICT per le Pubbliche amministrazioni (Italian language).", "type": "boolean" }, "gdpr": { - "description": "If present and set to yes, the software is compliant with the Misure minime di sicurezza ICT per le Pubbliche amministrazioni (Italian language).", + "description": "If present and set to true, the software is compliant with the Misure minime di sicurezza ICT per le Pubbliche amministrazioni (Italian language).", "type": "boolean" } } @@ -579,19 +584,23 @@ "additionalProperties": false, "properties": { "spid": { - "description": "If present and set to yes, the software interfaces with SPID - il Sistema Pubblico di Identità Digitale.", + "description": "If present and set to true, the software interfaces with SPID - il Sistema Pubblico di Identità Digitale.", "type": "boolean" }, "cie": { - "description": "If present and set to yes, the software interfaces with the Italian electronic ID card (Carta di Identità Elettronica).", + "description": "If present and set to true, the software interfaces with the Italian electronic ID card (Carta di Identità Elettronica).", "type": "boolean" }, "anpr": { - "description": "If present and set to yes, the software interfaces with ANPR.", + "description": "If present and set to true, the software interfaces with ANPR.", "type": "boolean" }, "pagopa": { - "description": "If present and set to yes, the software interfaces with pagoPA.", + "description": "If present and set to true, the software interfaces with pagoPA.", + "type": "boolean" + }, + "io": { + "description": "If present and set to true, the software interfaces with IO app (https://io.italia.it) ", "type": "boolean" } } @@ -613,7 +622,6 @@ "publiccodeYmlVersion", "name", "url", - "releaseDate", "platforms", "categories", "developmentStatus", diff --git a/src/test/publiccode/extended.json b/src/test/publiccode/extended.json index ce2b67e1e6c..b281429f3e2 100644 --- a/src/test/publiccode/extended.json +++ b/src/test/publiccode/extended.json @@ -63,12 +63,13 @@ "gdpr": true, "lineeGuidaDesign": true, "misureMinimeSicurezza": true, - "modelloInteroperatibilita": true + "modelloInteroperabilita": true }, "countryExtensionVersion": "0.2", "piattaforme": { "anpr": true, "cie": true, + "io": false, "pagopa": true, "spid": true }, diff --git a/src/test/publiccode/minimum.json b/src/test/publiccode/minimum.json index ca9c9421132..4f4782c5fba 100644 --- a/src/test/publiccode/minimum.json +++ b/src/test/publiccode/minimum.json @@ -27,8 +27,7 @@ }, "name": "Medusa", "platforms": ["web"], - "publiccodeYmlVersion": "0.2", - "releaseDate": "2017-04-15", + "publiccodeYmlVersion": "0.4", "softwareType": "standalone/desktop", "softwareVersion": "dev", "url": "https://example.com/italia/medusa.git" From 2ba205c8d3b1670e17b5bb69a549db59b3cc288a Mon Sep 17 00:00:00 2001 From: Antonio Maradiaga Date: Thu, 20 Jun 2024 22:00:50 +0200 Subject: [PATCH 34/62] Including CloudEvents specification (#3878) --- src/api/json/catalog.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 0eb22ffc2be..1d1c3a2e49c 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -973,6 +973,12 @@ "description": "the representation of 3D city models", "url": "https://raw.githubusercontent.com/cityjson/specs/master/schemas/cityjson.min.schema.json" }, + { + "name": "CloudEvents specification", + "description": "A specification for describing event data in a common way. Documentation: https://cloudevents.io", + "fileMatch": [], + "url": "https://raw.githubusercontent.com/cloudevents/spec/master/cloudevents/formats/cloudevents.json" + }, { "name": "conda-forge", "description": "Conda-forge configuration file", From 3b2938bd7d8c49372fa4195b76bdd65f24bb2d64 Mon Sep 17 00:00:00 2001 From: Alexey Tereshenkov <50622389+AlexTereshenkov@users.noreply.github.com> Date: Fri, 21 Jun 2024 01:18:58 +0100 Subject: [PATCH 35/62] schema: add Pantsbuild - 2.21.0 (#3880) --- src/api/json/catalog.json | 5 +- src/schemas/json/pantsbuild-2.21.0.json | 3866 +++++++++++++++++++++++ 2 files changed, 3869 insertions(+), 2 deletions(-) create mode 100644 src/schemas/json/pantsbuild-2.21.0.json diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 1d1c3a2e49c..50550392549 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -6085,7 +6085,7 @@ "name": "Pantsbuild", "description": "Pantsbuild configuration file", "fileMatch": ["pants*.toml"], - "url": "https://json.schemastore.org/pantsbuild-2.20.0.json", + "url": "https://json.schemastore.org/pantsbuild-2.21.0.json", "versions": { "2.14.0": "https://json.schemastore.org/pantsbuild-2.14.0.json", "2.15.0": "https://json.schemastore.org/pantsbuild-2.15.0.json", @@ -6093,7 +6093,8 @@ "2.17.0": "https://json.schemastore.org/pantsbuild-2.17.0.json", "2.18.0": "https://json.schemastore.org/pantsbuild-2.18.0.json", "2.19.0": "https://json.schemastore.org/pantsbuild-2.19.0.json", - "2.20.0": "https://json.schemastore.org/pantsbuild-2.20.0.json" + "2.20.0": "https://json.schemastore.org/pantsbuild-2.20.0.json", + "2.21.0": "https://json.schemastore.org/pantsbuild-2.21.0.json" } }, { diff --git a/src/schemas/json/pantsbuild-2.21.0.json b/src/schemas/json/pantsbuild-2.21.0.json new file mode 100644 index 00000000000..efb50c1763f --- /dev/null +++ b/src/schemas/json/pantsbuild-2.21.0.json @@ -0,0 +1,3866 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": true, + "description": "Pants configuration file schema: https://www.pantsbuild.org/", + "id": "https://json.schemastore.org/pantsbuild-2.21.0.json", + "properties": { + "GLOBAL": { + "description": "Options to control the overall behavior of Pants.", + "properties": { + "backend_packages": { + "default": [], + "description": "Register functionality from these backends\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#backend_packages", + "type": "array" + }, + "build_file_prelude_globs": { + "default": [], + "description": "Python files to evaluate and whose symbols should be exposed to all BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#build_file_prelude_globs", + "type": "array" + }, + "build_ignore": { + "default": [], + "description": "Path globs or literals to ignore when identifying BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#build_ignore", + "type": "array" + }, + "build_patterns": { + "default": ["BUILD", "BUILD.*"], + "description": "The naming scheme for BUILD files, i.e. where you define targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#build_patterns", + "type": "array" + }, + "ca_certs_path": { + "default": null, + "description": "Path to a file containing PEM-format CA certificates used for verifying secure connections when downloading files required by a build\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#ca_certs_path", + "type": "string" + }, + "cache_content_behavior": { + "default": "fetch", + "description": "Controls how the content of cache entries is handled during process execution\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#cache_content_behavior", + "enum": ["fetch", "validate", "defer"] + }, + "colors": { + "default": false, + "description": "Whether Pants should use colors in output or not\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#colors", + "type": "boolean" + }, + "concurrent": { + "default": false, + "description": "Enable concurrent runs of Pants\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#concurrent", + "type": "boolean" + }, + "docker_execution": { + "default": true, + "description": "If true, `docker_environment` targets can be used to run builds inside a Docker container\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#docker_execution", + "type": "boolean" + }, + "dynamic_ui": { + "default": true, + "description": "Display a dynamically-updating console UI as Pants runs\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#dynamic_ui", + "type": "boolean" + }, + "dynamic_ui_renderer": { + "default": "indicatif-spinner", + "description": "If `--dynamic-ui` is enabled, selects the renderer\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#dynamic_ui_renderer", + "enum": ["indicatif-spinner", "experimental-prodash"] + }, + "engine_visualize_to": { + "default": null, + "description": "A directory to write execution and rule graphs to as `dot` files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#engine_visualize_to" + }, + "ignore_warnings": { + "default": [], + "description": "Ignore logs and warnings matching these strings\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#ignore_warnings", + "type": "array" + }, + "keep_sandboxes": { + "default": "never", + "description": "Controls whether Pants will clean up local directories used as chroots for running processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#keep_sandboxes", + "enum": ["always", "on_failure", "never"] + }, + "level": { + "default": "info", + "description": "Set the logging level\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#level", + "enum": ["trace", "debug", "info", "warn", "error"] + }, + "local_cache": { + "default": true, + "description": "Whether to cache process executions in a local cache persisted to disk at `--local-store-dir`\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_cache", + "type": "boolean" + }, + "local_execution_root_dir": { + "default": "", + "description": "Directory to use for local process execution sandboxing\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_execution_root_dir", + "type": "string" + }, + "local_store_dir": { + "default": "$XDG_CACHE_HOME/lmdb_store", + "description": "Directory to use for the local file store, which stores the results of subprocesses run by Pants\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_store_dir", + "type": "string" + }, + "local_store_directories_max_size_bytes": { + "default": 16000000000, + "description": "The maximum size in bytes of the local store containing directories\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_store_directories_max_size_bytes", + "type": "number" + }, + "local_store_files_max_size_bytes": { + "default": 256000000000, + "description": "The maximum size in bytes of the local store containing files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_store_files_max_size_bytes", + "type": "number" + }, + "local_store_processes_max_size_bytes": { + "default": 16000000000, + "description": "The maximum size in bytes of the local store containing process cache entries\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_store_processes_max_size_bytes", + "type": "number" + }, + "local_store_shard_count": { + "default": 16, + "description": "The number of LMDB shards created for the local store\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#local_store_shard_count", + "type": "number" + }, + "log_levels_by_target": { + "default": {}, + "description": "Set a more specific logging level for one or more logging targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#log_levels_by_target", + "type": "object" + }, + "log_show_rust_3rdparty": { + "default": false, + "description": "Whether to show/hide logging done by 3rdparty Rust crates used by the Pants engine\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#log_show_rust_3rdparty", + "type": "boolean" + }, + "logdir": { + "default": null, + "description": "Write logs to files under this directory\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#logdir", + "type": "string" + }, + "loop": { + "default": false, + "description": "Run goals continuously as file changes are detected\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#loop", + "type": "boolean" + }, + "loop_max": { + "default": 4294967296, + "description": "The maximum number of times to loop when `--loop` is specified\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#loop_max", + "type": "number" + }, + "named_caches_dir": { + "default": "$XDG_CACHE_HOME/named_caches", + "description": "Directory to use for named global caches for tools and processes with trusted, concurrency-safe caches\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#named_caches_dir", + "type": "string" + }, + "pants_bin_name": { + "default": "pants", + "description": "The name of the script or binary used to invoke Pants\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_bin_name", + "type": "string" + }, + "pants_config_files": { + "default": ["/pants.toml"], + "description": "Paths to Pants config files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_config_files", + "type": "array" + }, + "pants_distdir": { + "default": "/dist", + "description": "Write end products, such as the results of `pants package`, to this dir\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_distdir", + "type": "string" + }, + "pants_ignore": { + "default": [ + ".*/", + "/dist/", + "__pycache__", + "!.semgrep/", + "!.github/" + ], + "description": "Paths to ignore for all filesystem operations performed by pants (e.g\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_ignore", + "type": "array" + }, + "pants_ignore_use_gitignore": { + "default": true, + "description": "Include patterns from `.gitignore`, `.git/info/exclude`, and the global gitignore files in the option `[GLOBAL].pants_ignore`, which is used for Pants to ignore filesystem operations on those patterns\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_ignore_use_gitignore", + "type": "boolean" + }, + "pants_physical_workdir_base": { + "default": null, + "description": "When set, a base directory in which to store `--pants-workdir` contents\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_physical_workdir_base", + "type": "string" + }, + "pants_subprocessdir": { + "default": "/.pants.d/pids", + "description": "The directory to use for tracking subprocess metadata\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_subprocessdir", + "type": "string" + }, + "pants_version": { + "default": "", + "description": "Use this Pants version\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_version", + "type": "string" + }, + "pants_workdir": { + "default": "/.pants.d/workdir", + "description": "Write intermediate logs and output files to this dir\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pants_workdir", + "type": "string" + }, + "pantsd": { + "default": true, + "description": "Enables use of the Pants daemon (pantsd). pantsd can significantly improve runtime performance by lowering per-run startup cost, and by memoizing filesystem operations and rule execution\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsd", + "type": "boolean" + }, + "pantsd_invalidation_globs": { + "default": [], + "description": "Filesystem events matching any of these globs will trigger a daemon restart\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsd_invalidation_globs", + "type": "array" + }, + "pantsd_max_memory_usage": { + "default": "4GiB", + "description": "The maximum memory usage of the pantsd process\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsd_max_memory_usage" + }, + "pantsd_pailgun_port": { + "default": 0, + "description": "The port to bind the Pants nailgun server to\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsd_pailgun_port", + "type": "number" + }, + "pantsd_timeout_when_multiple_invocations": { + "default": 60.0, + "description": "The maximum amount of time to wait for the invocation to start until raising a timeout exception\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsd_timeout_when_multiple_invocations", + "type": "number" + }, + "pantsrc": { + "default": true, + "description": "Use pantsrc files located at the paths specified in the global option `pantsrc_files`\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsrc", + "type": "boolean" + }, + "pantsrc_files": { + "default": ["/etc/pantsrc", "~/.pants.rc", ".pants.rc"], + "description": "Override config with values from these files, using syntax matching that of `--pants-config-files`\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pantsrc_files", + "type": "array" + }, + "plugins": { + "default": [], + "description": "Allow backends to be loaded from these plugins (usually released through PyPI). The default backends for each plugin will be loaded automatically\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#plugins", + "type": "array" + }, + "plugins_force_resolve": { + "default": false, + "description": "Re-resolve plugins, even if previously resolved\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#plugins_force_resolve", + "type": "boolean" + }, + "print_stacktrace": { + "default": false, + "description": "Print the full exception stack trace for any errors\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#print_stacktrace", + "type": "boolean" + }, + "process_execution_cache_namespace": { + "default": null, + "description": "The cache namespace for process execution\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_execution_cache_namespace", + "type": "string" + }, + "process_execution_graceful_shutdown_timeout": { + "default": 3, + "description": "The time in seconds to wait when gracefully shutting down an interactive process (such as one opened using `pants run`) before killing it\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_execution_graceful_shutdown_timeout", + "type": "number" + }, + "process_execution_local_enable_nailgun": { + "default": true, + "description": "Whether or not to use nailgun to run JVM requests that are marked as supporting nailgun\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_execution_local_enable_nailgun", + "type": "boolean" + }, + "process_execution_local_parallelism": { + "default": "#cores", + "description": "Number of concurrent processes that may be executed locally\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_execution_local_parallelism", + "type": "number" + }, + "process_execution_remote_parallelism": { + "default": 128, + "description": "Number of concurrent processes that may be executed remotely\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_execution_remote_parallelism", + "type": "number" + }, + "process_per_child_memory_usage": { + "default": "512MiB", + "description": "The default memory usage for a single \"pooled\" child process\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_per_child_memory_usage" + }, + "process_total_child_memory_usage": { + "default": null, + "description": "The maximum memory usage for all \"pooled\" child processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#process_total_child_memory_usage" + }, + "pythonpath": { + "default": [], + "description": "Add these directories to PYTHONPATH to search for plugins\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#pythonpath", + "type": "array" + }, + "remote_ca_certs_path": { + "default": null, + "description": "Path to a PEM file containing CA certificates used for verifying secure connections to `[GLOBAL].remote_execution_address` and `[GLOBAL].remote_store_address`\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_ca_certs_path", + "type": "string" + }, + "remote_cache_read": { + "default": false, + "description": "Whether to enable reading from a remote cache\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_cache_read", + "type": "boolean" + }, + "remote_cache_rpc_concurrency": { + "default": 128, + "description": "The number of concurrent requests allowed to the remote cache service\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_cache_rpc_concurrency", + "type": "number" + }, + "remote_cache_rpc_timeout_millis": { + "default": 1500, + "description": "Timeout value for remote cache RPCs in milliseconds\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_cache_rpc_timeout_millis", + "type": "number" + }, + "remote_cache_warnings": { + "default": "backoff", + "description": "How frequently to log remote cache failures at the `warn` log level\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_cache_warnings", + "enum": ["ignore", "first_only", "backoff", "always"] + }, + "remote_cache_write": { + "default": false, + "description": "Whether to enable writing results to a remote cache\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_cache_write", + "type": "boolean" + }, + "remote_client_certs_path": { + "default": null, + "description": "Path to a PEM file containing client certificates used for verifying secure connections to `[GLOBAL].remote_execution_address` and `[GLOBAL].remote_store_address` when using client authentication (mTLS)\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_client_certs_path", + "type": "string" + }, + "remote_client_key_path": { + "default": null, + "description": "Path to a PEM file containing a private key used for verifying secure connections to `[GLOBAL].remote_execution_address` and `[GLOBAL].remote_store_address` when using client authentication (mTLS)\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_client_key_path", + "type": "string" + }, + "remote_execution": { + "default": false, + "description": "Enables remote workers for increased parallelism. (Alpha)\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution", + "type": "boolean" + }, + "remote_execution_address": { + "default": null, + "description": "The URI of a server/entity used as a remote execution scheduler\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_address", + "type": "string" + }, + "remote_execution_append_only_caches_base_path": { + "default": null, + "description": "Sets the base path to use when setting up an append-only cache for a process running remotely\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_append_only_caches_base_path", + "type": "string" + }, + "remote_execution_extra_platform_properties": { + "default": [], + "description": "Platform properties to set on remote execution requests\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_extra_platform_properties", + "type": "array" + }, + "remote_execution_headers": { + "default": "{'user-agent': 'pants/'}", + "description": "Headers to set on remote execution requests\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_headers", + "type": "object" + }, + "remote_execution_overall_deadline_secs": { + "default": 3600, + "description": "Overall timeout in seconds for each remote execution request from time of submission\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_overall_deadline_secs", + "type": "number" + }, + "remote_execution_rpc_concurrency": { + "default": 128, + "description": "The number of concurrent requests allowed to the remote execution service\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_execution_rpc_concurrency", + "type": "number" + }, + "remote_instance_name": { + "default": null, + "description": "Name of the remote instance to use by remote caching and remote execution\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_instance_name", + "type": "string" + }, + "remote_oauth_bearer_token": { + "default": null, + "description": "An oauth token to use for gGRPC connections to `[GLOBAL].remote_execution_address` and `[GLOBAL].remote_store_address`\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_oauth_bearer_token", + "type": "string" + }, + "remote_provider": { + "default": "reapi", + "description": "The type of provider to use, if using a remote cache and/or remote execution, See https://www.pantsbuild.org/2.21/docs/using-pants/remote-caching-and-execution for details\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_provider", + "enum": [ + "reapi", + "experimental-file", + "experimental-github-actions-cache" + ] + }, + "remote_store_address": { + "default": null, + "description": "The URI of a server/entity used as a remote file store\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_address", + "type": "string" + }, + "remote_store_batch_api_size_limit": { + "default": 4194304, + "description": "The maximum total size of blobs allowed to be sent in a single batch API call to the remote store\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_batch_api_size_limit", + "type": "number" + }, + "remote_store_chunk_bytes": { + "default": 1048576, + "description": "Size in bytes of chunks transferred to/from the remote file store\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_chunk_bytes", + "type": "number" + }, + "remote_store_headers": { + "default": "{'user-agent': 'pants/'}", + "description": "Headers to set on remote store requests\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_headers", + "type": "object" + }, + "remote_store_rpc_concurrency": { + "default": 128, + "description": "The number of concurrent requests allowed to the remote store service\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_rpc_concurrency", + "type": "number" + }, + "remote_store_rpc_retries": { + "default": 2, + "description": "Number of times to retry any RPC to the remote store before giving up\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_rpc_retries", + "type": "number" + }, + "remote_store_rpc_timeout_millis": { + "default": 30000, + "description": "Timeout value for remote store RPCs (not including streaming requests) in milliseconds\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#remote_store_rpc_timeout_millis", + "type": "number" + }, + "rule_threads_core": { + "default": "max(2, #cores/2)", + "description": "The number of threads to keep active and ready to execute `@rule` logic (see also: `--rule-threads-max`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#rule_threads_core", + "type": "number" + }, + "rule_threads_max": { + "default": null, + "description": "The maximum number of threads to use to execute `@rule` logic\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#rule_threads_max", + "type": "number" + }, + "session_end_tasks_timeout": { + "default": 3.0, + "description": "The time in seconds to wait for still-running \"session end\" tasks to complete before finishing completion of a Pants invocation. \"Session end\" tasks include, for example, writing data that was generated during the applicable Pants invocation to a configured remote cache\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#session_end_tasks_timeout", + "type": "number" + }, + "show_log_target": { + "default": false, + "description": "Display the target where a log message originates in that log message's output\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#show_log_target", + "type": "boolean" + }, + "spec_files": { + "default": [], + "description": "Read additional specs (target addresses, files, and/or globs), one per line, from these files\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#spec_files", + "type": "array" + }, + "stats_record_option_scopes": { + "default": ["*"], + "description": "Option scopes to record in stats on run completion\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#stats_record_option_scopes", + "type": "array" + }, + "streaming_workunits_complete_async": { + "default": true, + "description": "True if stats recording should be allowed to complete asynchronously when `pantsd` is enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#streaming_workunits_complete_async", + "type": "boolean" + }, + "streaming_workunits_level": { + "default": "debug", + "description": "The level of workunits that will be reported to streaming workunit event receivers\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#streaming_workunits_level", + "enum": ["trace", "debug", "info", "warn", "error"] + }, + "streaming_workunits_report_interval": { + "default": 1.0, + "description": "Interval in seconds between when streaming workunit event receivers will be polled\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#streaming_workunits_report_interval", + "type": "number" + }, + "subproject_roots": { + "default": [], + "description": "Paths that correspond with build roots for any subproject that this project depends on\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#subproject_roots", + "type": "array" + }, + "tag": { + "default": [], + "description": "Include only targets with these tags (optional '+' prefix) or without these tags ('-' prefix)\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#tag", + "type": "array" + }, + "unmatched_build_file_globs": { + "default": "warn", + "description": "What to do when files and globs specified in BUILD files, such as in the `sources` field, cannot be found\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#unmatched_build_file_globs", + "enum": ["ignore", "warn", "error"] + }, + "unmatched_cli_globs": { + "default": "error", + "description": "What to do when command line arguments, e.g. files and globs like `dir::`, cannot be found\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#unmatched_cli_globs", + "enum": ["ignore", "warn", "error"] + }, + "verify_config": { + "default": true, + "description": "Verify that all config file values correspond to known options\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#verify_config", + "type": "boolean" + }, + "watch_filesystem": { + "default": true, + "description": "Set to False if Pants should not watch the filesystem for changes. `pantsd` or `loop` may not be enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-global#watch_filesystem", + "type": "boolean" + } + }, + "type": "object" + }, + "anonymous-telemetry": { + "description": "Options related to sending anonymous stats to the Pants project, to aid development.", + "properties": { + "enabled": { + "default": false, + "description": "Whether to send anonymous telemetry to the Pants project\nhttps://www.pantsbuild.org/v2.21/docs/reference-anonymous-telemetry#enabled", + "type": "boolean" + }, + "repo_id": { + "default": null, + "description": "An anonymized ID representing this repo\nhttps://www.pantsbuild.org/v2.21/docs/reference-anonymous-telemetry#repo_id", + "type": "string" + } + }, + "type": "object" + }, + "autoflake": { + "description": "The Autoflake Python code formatter (https://github.com/myint/autoflake).", + "properties": { + "args": { + "default": ["--remove-all-unused-imports"], + "description": "Arguments to pass directly to Autoflake, e.g. `--autoflake-args='--remove-all-unused-imports --target-version=py37 --quiet'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#args", + "type": "array" + }, + "console_script": { + "default": "autoflake", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Autoflake when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-autoflake#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "black": { + "description": "The Black Python code formatter (https://black.readthedocs.io/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Black, e.g. `--black-args='--target-version=py37 --quiet'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to a TOML config file understood by Black (https://github.com/psf/black#configuration-format)\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant pyproject.toml config files during runs\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "black", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Black when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-black#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "build-deprecations-fixer": { + "description": "A tool/plugin for fixing BUILD file deprecations (where possible).\n\nThis includes deprecations for:\n\n - Renamed targets\n - Renamed fields", + "properties": { + "skip": { + "default": false, + "description": "If true, don't use BUILD Deprecations Fixer when running `pants fix`\nhttps://www.pantsbuild.org/v2.21/docs/reference-build-deprecations-fixer#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "changed": { + "description": "Tell Pants to detect what files and targets have changed from Git.\n\nSee https://www.pantsbuild.org/2.21/docs/using-pants/advanced-target-selection.", + "properties": { + "dependents": { + "default": "none", + "description": "Include direct or transitive dependents of changed targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-changed#dependents", + "enum": ["none", "direct", "transitive"] + }, + "diffspec": { + "default": null, + "description": "Calculate changes contained within a given Git spec (commit range/SHA/ref)\nhttps://www.pantsbuild.org/v2.21/docs/reference-changed#diffspec", + "type": "string" + }, + "since": { + "default": null, + "description": "Calculate changes since this Git spec (commit range/SHA/ref)\nhttps://www.pantsbuild.org/v2.21/docs/reference-changed#since", + "type": "string" + } + }, + "type": "object" + }, + "check": { + "description": "Run type checking or the lightest variant of compilation available for a language.", + "properties": { + "only": { + "default": [], + "description": "Only run these checkers and skip all others\nhttps://www.pantsbuild.org/v2.21/docs/reference-check#only", + "type": "array" + } + }, + "type": "object" + }, + "check-default-tools": { + "description": "Options for checking that external tool default locations are correctly typed.", + "properties": {}, + "type": "object" + }, + "cli": { + "description": "Options for configuring CLI behavior, such as command line aliases.", + "properties": { + "alias": { + "default": {}, + "description": "Register command line aliases\nhttps://www.pantsbuild.org/v2.21/docs/reference-cli#alias", + "type": "object" + } + }, + "type": "object" + }, + "complete": { + "description": "Generates a completion script for the specified shell. The script is printed to stdout.\n\nFor example, `pants complete --zsh > pants-completions.zsh` will generate a zsh completion script and write it to the file `my-pants-completions.zsh`. You can then source this file in your `.zshrc` file to enable completion for Pants.\n\nThis command is also used by the completion scripts to generate the completion options using passthrough options. This usage is not intended for use by end users, but could be useful for building custom completion scripts.\n\nAn example of this usage is in the bash completion script, where we use the following command: `pants complete -- ${COMP_WORDS[@]}`. This will generate the completion options for the current args, and then pass them to the bash completion script.", + "properties": { + "shell": { + "default": "bash", + "description": "Which shell completion type should be printed to stdout\nhttps://www.pantsbuild.org/v2.21/docs/reference-complete#shell", + "enum": ["bash", "zsh"] + } + }, + "type": "object" + }, + "count-loc": { + "description": "Count lines of code.", + "properties": {}, + "type": "object" + }, + "coursier": { + "description": "A dependency resolver for the Maven ecosystem. (https://get-coursier.io/)", + "properties": { + "jvm_index": { + "default": "", + "description": "The JVM index to be used by Coursier\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#jvm_index", + "type": "string" + }, + "known_versions": { + "default": [ + "v2.1.6|macos_arm64 |746b3e346fa2c0107fdbc8a627890d495cb09dee4f8dcc87146bdb45941088cf|20829782|https://github.com/VirtusLab/coursier-m1/releases/download/v2.1.6/cs-aarch64-apple-darwin.gz", + "v2.1.6|linux_arm64 |33330ca433781c9db9458e15d2d32e5d795de3437771647e26835e8b1391af82|20899290|https://github.com/VirtusLab/coursier-m1/releases/download/v2.1.6/cs-aarch64-pc-linux.gz", + "v2.1.6|linux_x86_64|af7234f8802107f5e1130307ef8a5cc90262d392f16ddff7dce27a4ed0ddd292|20681688", + "v2.1.6|macos_x86_64|36a5d42a0724be2ac39d0ebd8869b985e3d58ceb121bc60389ee2d6d7408dd56|20037412", + "v2.1.0-M5-18-gfebf9838c|linux_arm64 |d4ad15ba711228041ad8a46d848c83c8fbc421d7b01c415d8022074dd609760f|19264005", + "v2.1.0-M5-18-gfebf9838c|linux_x86_64|3e1a1ad1010d5582e9e43c5a26b273b0147baee5ebd27d3ac1ab61964041c90b|19551533", + "v2.1.0-M5-18-gfebf9838c|macos_arm64 |d13812c5a5ef4c9b3e25cc046d18addd09bacd149f95b20a14e4d2a73e358ecf|18826510", + "v2.1.0-M5-18-gfebf9838c|macos_x86_64|d13812c5a5ef4c9b3e25cc046d18addd09bacd149f95b20a14e4d2a73e358ecf|18826510", + "v2.0.16-169-g194ebc55c|linux_arm64 |da38c97d55967505b8454c20a90370c518044829398b9bce8b637d194d79abb3|18114472", + "v2.0.16-169-g194ebc55c|linux_x86_64|4c61a634c4bd2773b4543fe0fc32210afd343692891121cddb447204b48672e8|18486946", + "v2.0.16-169-g194ebc55c|macos_arm64 |15bce235d223ef1d022da30b67b4c64e9228d236b876c834b64e029bbe824c6f|17957182", + "v2.0.16-169-g194ebc55c|macos_x86_64|15bce235d223ef1d022da30b67b4c64e9228d236b876c834b64e029bbe824c6f|17957182" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#known_versions", + "type": "array" + }, + "repos": { + "default": [ + "https://maven-central.storage-download.googleapis.com/maven2", + "https://repo1.maven.org/maven2" + ], + "description": "Maven style repositories to resolve artifacts from\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#repos", + "type": "array" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "aarch64-pc-linux", + "linux_x86_64": "x86_64-pc-linux", + "macos_arm64": "x86_64-apple-darwin", + "macos_x86_64": "x86_64-apple-darwin" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/coursier/coursier/releases/download/{version}/cs-{platform}.gz", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of coursier is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "v2.1.6", + "description": "Use this version of coursier\nhttps://www.pantsbuild.org/v2.21/docs/reference-coursier#version", + "type": "string" + } + }, + "type": "object" + }, + "coverage-py": { + "description": "Configuration for Python test coverage measurement.", + "properties": { + "config": { + "default": null, + "description": "Path to an INI or TOML config file understood by coverage.py (https://coverage.readthedocs.io/en/stable/config.html)\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`.coveragerc`, `setup.cfg`, `tox.ini`, and `pyproject.toml`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "coverage", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#entry_point", + "type": "string" + }, + "fail_under": { + "default": null, + "description": "Fail if the total combined coverage percentage for all tests is less than this number\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#fail_under", + "type": "number" + }, + "filter": { + "default": [], + "description": "A list of Python modules or filesystem paths to use in the coverage report, e.g. `['helloworld_test', 'helloworld/util/dirutil']`\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#filter", + "type": "array" + }, + "global_report": { + "default": false, + "description": "If true, Pants will generate a global coverage report\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#global_report", + "type": "boolean" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#interpreter_constraints", + "type": "array" + }, + "output_dir": { + "default": "{distdir}/coverage/python", + "description": "Path to write the Pytest Coverage report to\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#output_dir", + "type": "string" + }, + "report": { + "default": ["console"], + "description": "Which coverage report type(s) to emit\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#report", + "enum": ["console", "xml", "html", "raw", "json", "lcov"] + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-coverage-py#requirements", + "type": "array" + } + }, + "type": "object" + }, + "debug-adapter": { + "description": "Options used to configure and launch a Debug Adapter server.\n\nSee https://microsoft.github.io/debug-adapter-protocol/ for more information.", + "properties": { + "host": { + "default": "127.0.0.1", + "description": "The hostname to use when launching the server\nhttps://www.pantsbuild.org/v2.21/docs/reference-debug-adapter#host", + "type": "string" + }, + "port": { + "default": 5678, + "description": "The port to use when launching the server\nhttps://www.pantsbuild.org/v2.21/docs/reference-debug-adapter#port", + "type": "number" + } + }, + "type": "object" + }, + "debugpy": { + "description": "An implementation of the Debug Adapter Protocol for Python (https://github.com/microsoft/debugpy).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to debugpy, e.g. `--debugpy-args='--log-to-stderr'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#args", + "type": "array" + }, + "console_script": { + "default": null, + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#console_script", + "type": "string" + }, + "entry_point": { + "default": "debugpy", + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-debugpy#requirements", + "type": "array" + } + }, + "type": "object" + }, + "dependees": { + "description": "List all targets that depend on any of the input files/targets.", + "properties": { + "closed": { + "default": false, + "description": "Include the input targets in the output, along with the dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependees#closed", + "type": "boolean" + }, + "format": { + "default": "text", + "description": "Output format for listing dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependees#format", + "enum": ["text", "json"] + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependees#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependees#sep", + "type": "string" + }, + "transitive": { + "default": false, + "description": "List all transitive dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependees#transitive", + "type": "boolean" + } + }, + "type": "object" + }, + "dependencies": { + "description": "List the dependencies of the input files/targets.", + "properties": { + "closed": { + "default": false, + "description": "Include the input targets in the output, along with the dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependencies#closed", + "type": "boolean" + }, + "format": { + "default": "text", + "description": "Output format for listing dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependencies#format", + "enum": ["text", "json"] + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependencies#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependencies#sep", + "type": "string" + }, + "transitive": { + "default": false, + "description": "List all transitive dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependencies#transitive", + "type": "boolean" + } + }, + "type": "object" + }, + "dependents": { + "description": "List all targets that depend on any of the input files/targets.", + "properties": { + "closed": { + "default": false, + "description": "Include the input targets in the output, along with the dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependents#closed", + "type": "boolean" + }, + "format": { + "default": "text", + "description": "Output format for listing dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependents#format", + "enum": ["text", "json"] + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependents#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependents#sep", + "type": "string" + }, + "transitive": { + "default": false, + "description": "List all transitive dependents\nhttps://www.pantsbuild.org/v2.21/docs/reference-dependents#transitive", + "type": "boolean" + } + }, + "type": "object" + }, + "docformatter": { + "description": "The Python docformatter tool (https://github.com/myint/docformatter).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to docformatter, e.g. `--docformatter-args='--wrap-summaries=100 --pre-summary-newline'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#args", + "type": "array" + }, + "console_script": { + "default": "docformatter", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use docformatter when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-docformatter#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "docker": { + "description": "Options for interacting with Docker.", + "properties": { + "build_args": { + "default": [], + "description": "Global build arguments (for Docker `--build-arg` options) to use for all `docker build` invocations\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#build_args", + "type": "array" + }, + "build_hosts": { + "default": {}, + "description": "Hosts entries to be added to the `/etc/hosts` file in all built images\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#build_hosts", + "type": "object" + }, + "build_no_cache": { + "default": false, + "description": "Do not use the Docker cache when building images\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#build_no_cache", + "type": "boolean" + }, + "build_target_stage": { + "default": null, + "description": "Global default value for `target_stage` on `docker_image` targets, overriding the field value on the targets, if there is a matching stage in the `Dockerfile`\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#build_target_stage", + "type": "string" + }, + "build_verbose": { + "default": false, + "description": "Whether to log the Docker output to the console\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#build_verbose", + "type": "boolean" + }, + "default_context_root": { + "default": "", + "description": "Provide a default Docker build context root path for `docker_image` targets that does not specify their own `context_root` field\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#default_context_root" + }, + "default_repository": { + "default": "{name}", + "description": "Configure the default repository name used in the Docker image tag\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#default_repository", + "type": "string" + }, + "env_vars": { + "default": [], + "description": "Environment variables to set for `docker` invocations\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#env_vars", + "type": "array" + }, + "executable_search_paths": { + "default": [""], + "description": "The PATH value that will be used to find the Docker client and any tools required\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#executable_search_paths", + "type": "array" + }, + "registries": { + "default": {}, + "description": "Configure Docker registries\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#registries", + "oneOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + }, + "run_args": { + "default": [], + "description": "Additional arguments to use for `docker run` invocations\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#run_args", + "type": "array" + }, + "tailor": { + "default": true, + "description": "If true, add `docker_image` targets with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#tailor", + "type": "boolean" + }, + "tools": { + "default": [], + "description": "List any additional executable tools required for Docker to work\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#tools", + "type": "array" + }, + "use_buildx": { + "default": false, + "description": "Use [buildx](https://github.com/docker/buildx#buildx) (and BuildKit) for builds\nhttps://www.pantsbuild.org/v2.21/docs/reference-docker#use_buildx", + "type": "boolean" + } + }, + "type": "object" + }, + "dockerfile-parser": { + "description": "Used to parse Dockerfile build specs to infer their dependencies.", + "properties": { + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-dockerfile-parser#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-dockerfile-parser#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-dockerfile-parser#requirements", + "type": "array" + } + }, + "type": "object" + }, + "environments-preview": { + "description": "A highly experimental subsystem to allow setting environment variables and executable search paths for different environments, e.g. macOS vs. Linux.", + "properties": { + "names": { + "default": {}, + "description": "A mapping of logical names to addresses to environment targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-environments-preview#names", + "type": "object" + } + }, + "type": "object" + }, + "experimental-bsp": { + "description": "Setup repository for Build Server Protocol (https://build-server-protocol.github.io/).", + "properties": { + "groups_config_files": { + "default": [], + "description": "A list of config files that define groups of Pants targets to expose to IDEs via Build Server Protocol\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-bsp#groups_config_files", + "type": "array" + }, + "runner_env_vars": { + "default": ["PATH"], + "description": "Environment variables to set in the BSP runner script when setting up BSP in a repository\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-bsp#runner_env_vars", + "type": "array" + }, + "server": { + "default": false, + "description": "Run the Build Server Protocol server\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-bsp#server", + "type": "boolean" + } + }, + "type": "object" + }, + "experimental-deploy": { + "description": "Perform a deployment process.", + "properties": { + "dry_run": { + "default": false, + "description": "If true, perform a dry run without deploying anything\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-deploy#dry_run", + "type": "boolean" + } + }, + "type": "object" + }, + "experimental-explorer": { + "description": "Run the Pants Explorer Web UI server.", + "properties": { + "address": { + "default": "localhost", + "description": "Server address to bind to\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-explorer#address", + "type": "string" + }, + "port": { + "default": 8000, + "description": "Server port to bind to\nhttps://www.pantsbuild.org/v2.21/docs/reference-experimental-explorer#port", + "type": "number" + } + }, + "type": "object" + }, + "export": { + "description": "Export Pants data for use in other tools, such as IDEs.\n\n:::caution Exporting tools requires creating a custom lockfile for them\n\nFollow [the instructions for creating tool lockfiles](../../docs/python/overview/lockfiles#lockfiles-for-tools)\n\n:::", + "properties": { + "py_editable_in_resolve": { + "default": [], + "description": "When exporting a mutable virtualenv for a resolve, do PEP-660 editable installs of all `python_distribution` targets that own code in the exported resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-export#py_editable_in_resolve", + "type": "array" + }, + "py_hermetic_scripts": { + "default": true, + "description": "When exporting a mutable virtualenv for a resolve, by default modify console script shebang lines to make them \"hermetic\"\nhttps://www.pantsbuild.org/v2.21/docs/reference-export#py_hermetic_scripts", + "type": "boolean" + }, + "py_resolve_format": { + "default": "mutable_virtualenv", + "description": "Export Python resolves using this format\nhttps://www.pantsbuild.org/v2.21/docs/reference-export#py_resolve_format", + "enum": ["mutable_virtualenv", "symlinked_immutable_virtualenv"] + }, + "resolve": { + "default": [], + "description": "Export the specified resolve(s)\nhttps://www.pantsbuild.org/v2.21/docs/reference-export#resolve", + "type": "array" + } + }, + "type": "object" + }, + "export-codegen": { + "description": "Write generated files to `dist/codegen` for use outside of Pants.", + "properties": {}, + "type": "object" + }, + "filedeps": { + "description": "List all source and BUILD files a target depends on.", + "properties": { + "absolute": { + "default": false, + "description": "If True, output with absolute path\nhttps://www.pantsbuild.org/v2.21/docs/reference-filedeps#absolute", + "type": "boolean" + }, + "globs": { + "default": false, + "description": "Instead of outputting filenames, output the original globs used in the BUILD file\nhttps://www.pantsbuild.org/v2.21/docs/reference-filedeps#globs", + "type": "boolean" + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-filedeps#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-filedeps#sep", + "type": "string" + }, + "transitive": { + "default": false, + "description": "If True, list files from all dependencies, including transitive dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-filedeps#transitive", + "type": "boolean" + } + }, + "type": "object" + }, + "filter": { + "description": "Filter the input targets based on various criteria.\n\nMost of the filtering options below are comma-separated lists of filtering criteria, with an implied logical OR between them, so that a target passes the filter if it matches any of the criteria in the list. A '-' prefix inverts the sense of the entire comma-separated list, so that a target passes the filter only if it matches none of the criteria in the list.\n\nEach of the filtering options may be specified multiple times, with an implied logical AND between them.", + "properties": { + "address_regex": { + "default": [], + "description": "Filter on target addresses matching these regexes\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#address_regex", + "type": "array" + }, + "granularity": { + "default": "all", + "description": "Filter to rendering only targets declared in BUILD files, only file-level targets, or all targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#granularity", + "enum": ["all", "file", "BUILD"] + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#sep", + "type": "string" + }, + "tag_regex": { + "default": [], + "description": "Filter on targets with tags matching these regexes\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#tag_regex", + "type": "array" + }, + "target_type": { + "default": [], + "description": "Filter on these target types, e.g. `resources` or `python_sources`\nhttps://www.pantsbuild.org/v2.21/docs/reference-filter#target_type", + "type": "array" + } + }, + "type": "object" + }, + "fix": { + "description": "Autofix source code.", + "properties": { + "batch_size": { + "default": 128, + "description": "The target number of files to be included in each fixer batch\nhttps://www.pantsbuild.org/v2.21/docs/reference-fix#batch_size", + "type": "number" + }, + "only": { + "default": [], + "description": "Only run these fixers and skip all others\nhttps://www.pantsbuild.org/v2.21/docs/reference-fix#only", + "type": "array" + }, + "skip_formatters": { + "default": false, + "description": "If true, skip running all formatters\nhttps://www.pantsbuild.org/v2.21/docs/reference-fix#skip_formatters", + "type": "boolean" + } + }, + "type": "object" + }, + "flake8": { + "description": "The Flake8 Python linter (https://flake8.pycqa.org/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Flake8, e.g. `--flake8-args='--ignore E123,W456 --enable-extensions H111'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to an INI config file understood by Flake8 (https://flake8.pycqa.org/en/latest/user/configuration.html)\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`.flake8`, `flake8`, `setup.cfg`, and `tox.ini`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "flake8", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#entry_point", + "type": "string" + }, + "extra_files": { + "default": [], + "description": "Paths to extra files to include in the sandbox\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#extra_files", + "type": "array" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#install_from_resolve", + "type": "string" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Flake8 when running `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#skip", + "type": "boolean" + }, + "source_plugins": { + "default": [], + "description": "An optional list of `python_sources` target addresses to load first-party plugins\nhttps://www.pantsbuild.org/v2.21/docs/reference-flake8#source_plugins", + "type": "array" + } + }, + "type": "object" + }, + "fmt": { + "description": "Autoformat source code.", + "properties": { + "batch_size": { + "default": 128, + "description": "The target number of files to be included in each formatter batch\nhttps://www.pantsbuild.org/v2.21/docs/reference-fmt#batch_size", + "type": "number" + }, + "only": { + "default": [], + "description": "Only run these formatters and skip all others\nhttps://www.pantsbuild.org/v2.21/docs/reference-fmt#only", + "type": "array" + } + }, + "type": "object" + }, + "generate-lockfiles": { + "description": "Generate lockfiles for third-party dependencies.", + "properties": { + "custom_command": { + "default": null, + "description": "If set, lockfile headers will say to run this command to regenerate the lockfile, rather than running `pants generate-lockfiles --resolve=` like normal\nhttps://www.pantsbuild.org/v2.21/docs/reference-generate-lockfiles#custom_command", + "type": "string" + }, + "diff": { + "default": true, + "description": "Print a summary of changed distributions after generating the lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-generate-lockfiles#diff", + "type": "boolean" + }, + "diff_include_unchanged": { + "default": false, + "description": "Include unchanged distributions in the diff summary output\nhttps://www.pantsbuild.org/v2.21/docs/reference-generate-lockfiles#diff_include_unchanged", + "type": "boolean" + }, + "resolve": { + "default": [], + "description": "Only generate lockfiles for the specified resolve(s)\nhttps://www.pantsbuild.org/v2.21/docs/reference-generate-lockfiles#resolve", + "type": "array" + } + }, + "type": "object" + }, + "generate-snapshots": { + "description": "Generate test snapshots.", + "properties": {}, + "type": "object" + }, + "go-generate": { + "description": "Run each command in a package described by a `//go:generate` directive. This is equivalent to running `go generate` on a Go package.\n\nNote: Just like with `go generate`, the `go-generate` goal is never run as part of the build and must be run manually to invoke the commands described by the `//go:generate` directives.\n\nSee https://go.dev/blog/generate for details.", + "properties": { + "env_vars": { + "default": ["LANG", "LC_CTYPE", "LC_ALL", "PATH"], + "description": "Environment variables to set when invoking generator programs\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-generate#env_vars", + "type": "array" + } + }, + "type": "object" + }, + "go-test": { + "description": "Options for Go tests.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Go test binary, e.g. `--go-test-args='-run TestFoo -v'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#args", + "type": "array" + }, + "block_profile": { + "default": false, + "description": "Capture a goroutine blocking profile from the execution of the test runner\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#block_profile", + "type": "boolean" + }, + "cover_mode": { + "default": "set", + "description": "Coverage mode to use when running Go tests with coverage analysis enabled via `--test-use-coverage`\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#cover_mode", + "enum": ["set", "count", "atomic"] + }, + "coverage_html": { + "default": true, + "description": "If true, then convert coverage reports to HTML format and write a `coverage.html` file next to the raw coverage data\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#coverage_html", + "type": "boolean" + }, + "coverage_output_dir": { + "default": "{distdir}/coverage/go/{target_spec}", + "description": "Path to write the Go coverage reports to\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#coverage_output_dir", + "type": "string" + }, + "coverage_packages": { + "default": [], + "description": "A list of \"import path patterns\" for determining which import paths will be instrumented for code coverage\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#coverage_packages", + "type": "array" + }, + "cpu_profile": { + "default": false, + "description": "Capture a CPU profile from the execution of the test runner\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#cpu_profile", + "type": "boolean" + }, + "force_asan": { + "default": false, + "description": "If true, then always enable interoperation between Go and the C/C++ \"address sanitizer\" when running tests regardless of the test-by-test `asan` field on the relevant `go_package` target\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#force_asan", + "type": "boolean" + }, + "force_msan": { + "default": false, + "description": "If true, then always enable interoperation between Go and the C/C++ \"memory sanitizer\" when running tests regardless of the test-by-test `msan` field on the relevant `go_package` target\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#force_msan", + "type": "boolean" + }, + "force_race": { + "default": false, + "description": "If true, then always enable the Go data race detector when running tests regardless of the test-by-test `test_race` field on the relevant `go_package` target\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#force_race", + "type": "boolean" + }, + "mem_profile": { + "default": false, + "description": "Capture an allocation profile from the execution of the test runner after tests have passed\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#mem_profile", + "type": "boolean" + }, + "mutex_profile": { + "default": false, + "description": "Capture a mutex contention profile from the execution of the test runner when all tests are complete\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#mutex_profile", + "type": "boolean" + }, + "output_test_binary": { + "default": false, + "description": "Write the test binary to the test extra output directory\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#output_test_binary", + "type": "boolean" + }, + "skip": { + "default": false, + "description": "If true, don't use Go test binary when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#skip", + "type": "boolean" + }, + "trace": { + "default": false, + "description": "Capture an execution trace from the execution of the test runner\nhttps://www.pantsbuild.org/v2.21/docs/reference-go-test#trace", + "type": "boolean" + } + }, + "type": "object" + }, + "gofmt": { + "description": "Gofmt-specific options.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to gofmt, e.g. `--gofmt-args='-s -e'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-gofmt#args", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use gofmt when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-gofmt#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "golang": { + "description": "Options for Golang support.", + "properties": { + "asdf_bin_relpath": { + "default": "bin", + "description": "The path relative to an ASDF install directory to use to find the `bin` directory within an installed Go distribution\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#asdf_bin_relpath", + "type": "string" + }, + "asdf_tool_name": { + "default": "go-sdk", + "description": "The ASDF tool name to use when searching for installed Go distributions using the ASDF tool manager (https://asdf-vm.com/)\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#asdf_tool_name", + "type": "string" + }, + "cgo_c_flags": { + "default": ["-g", "-O2"], + "description": "Compiler options used when compiling C code when Cgo is enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_c_flags", + "type": "array" + }, + "cgo_cxx_flags": { + "default": ["-g", "-O2"], + "description": "Compiler options used when compiling C++ code when Cgo is enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_cxx_flags", + "type": "array" + }, + "cgo_enabled": { + "default": true, + "description": "Enable Cgo support, which allows Go and C code to interact\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_enabled", + "type": "boolean" + }, + "cgo_fortran_binary_name": { + "default": "gfortran", + "description": "Name of the tool to use to compile fortran code included via CGo in a Go package\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_fortran_binary_name", + "type": "string" + }, + "cgo_fortran_flags": { + "default": ["-g", "-O2"], + "description": "Compiler options used when compiling Fortran code when Cgo is enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_fortran_flags", + "type": "array" + }, + "cgo_gcc_binary_name": { + "default": "gcc", + "description": "Name of the tool to use to compile C code included via CGo in a Go package\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_gcc_binary_name", + "type": "string" + }, + "cgo_gxx_binary_name": { + "default": "g++", + "description": "Name of the tool to use to compile C++ code included via CGo in a Go package\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_gxx_binary_name", + "type": "string" + }, + "cgo_linker_flags": { + "default": ["-g", "-O2"], + "description": "Compiler options used when linking native code when Cgo is enabled\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_linker_flags", + "type": "array" + }, + "cgo_tool_search_paths": { + "default": [""], + "description": "A list of paths to search for tools needed by CGo (e.g., gcc, g++)\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#cgo_tool_search_paths", + "type": "array" + }, + "external_linker_binary_name": { + "default": "gcc", + "description": "Name of the tool to use as the \"external linker\" when invoking `go tool link`\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#external_linker_binary_name", + "type": "string" + }, + "go_search_paths": { + "default": [""], + "description": "A list of paths to search for Go\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#go_search_paths", + "type": "array" + }, + "minimum_expected_version": { + "default": "1.17", + "description": "The minimum Go version the distribution discovered by Pants must support\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#minimum_expected_version", + "type": "string" + }, + "subprocess_env_vars": { + "default": ["LANG", "LC_CTYPE", "LC_ALL", "PATH"], + "description": "Environment variables to set when invoking the `go` tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#subprocess_env_vars", + "type": "array" + }, + "tailor_binary_targets": { + "default": true, + "description": "If true, add a `go_binary` target with the `tailor` goal in every directory with a `.go` file with `package main`\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#tailor_binary_targets", + "type": "boolean" + }, + "tailor_go_mod_targets": { + "default": true, + "description": "If true, add a `go_mod` target with the `tailor` goal wherever there is a `go.mod` file\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#tailor_go_mod_targets", + "type": "boolean" + }, + "tailor_package_targets": { + "default": true, + "description": "If true, add a `go_package` target with the `tailor` goal in every directory with a `.go` file\nhttps://www.pantsbuild.org/v2.21/docs/reference-golang#tailor_package_targets", + "type": "boolean" + } + }, + "type": "object" + }, + "google-java-format": { + "description": "Google Java Format (https://github.com/google/google-java-format)", + "properties": { + "aosp": { + "default": false, + "description": "Use AOSP style instead of Google Style (4-space indentation). (\"AOSP\" is the Android Open Source Project.)\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#aosp", + "type": "boolean" + }, + "artifacts": { + "default": [ + "com.google.googlejavaformat:google-java-format:{version}" + ], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#artifacts", + "type": "array" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `google-java-format` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#lockfile", + "type": "string" + }, + "skip": { + "default": false, + "description": "If true, don't use Google Java Format when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#skip", + "type": "boolean" + }, + "version": { + "default": "1.13.0", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-google-java-format#version", + "type": "string" + } + }, + "type": "object" + }, + "graphql": { + "description": "Options for the explorer GraphQL API.", + "properties": { + "open_graphiql": { + "default": false, + "description": "Open a new web browser tab with GraphiQL\nhttps://www.pantsbuild.org/v2.21/docs/reference-graphql#open_graphiql", + "type": "boolean" + } + }, + "type": "object" + }, + "hadolint": { + "description": "A linter for Dockerfiles.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Hadolint, e.g. `--hadolint-args='--format json'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to an YAML config file understood by Hadolint (https://github.com/hadolint/hadolint#configure)\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include all relevant config files during runs (`.hadolint.yaml` and `.hadolint.yml`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#config_discovery", + "type": "boolean" + }, + "known_versions": { + "default": [ + "v2.12.1-beta|macos_x86_64 |911008b09e88b9ce62dbd12345af8f4c933370ebcfb01211d934f1e0a4d9aecc|19743768", + "v2.12.1-beta|macos_arm64 |911008b09e88b9ce62dbd12345af8f4c933370ebcfb01211d934f1e0a4d9aecc|19743768", + "v2.12.1-beta|linux_x86_64|d0779284293475905cfa4b3a7b5c433eca6d731e45b5df0e157f46b4e6311888|2426420", + "v2.12.1-beta|linux_arm64 |5997119de9b8332a003be938baff3ebd2ff17dfb62e2bceccd59bd9c112599ce|24002600" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#known_versions", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Hadolint when running `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#skip", + "type": "boolean" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "Linux-arm64", + "linux_x86_64": "Linux-x86_64", + "macos_arm64": "Darwin-x86_64", + "macos_x86_64": "Darwin-x86_64" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/hadolint/hadolint/releases/download/{version}/hadolint-{platform}", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of Hadolint is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "v2.12.1-beta", + "description": "Use this version of Hadolint\nhttps://www.pantsbuild.org/v2.21/docs/reference-hadolint#version", + "type": "string" + } + }, + "type": "object" + }, + "help": { + "description": "Display usage message.", + "properties": {}, + "type": "object" + }, + "help-advanced": { + "description": "Help for advanced options.", + "properties": {}, + "type": "object" + }, + "help-all": { + "description": "Print a JSON object containing all help info.", + "properties": {}, + "type": "object" + }, + "internal-generate-test-lockfile-fixtures": { + "description": "[Internal] Generate test lockfile fixtures for Pants tests.", + "properties": {}, + "type": "object" + }, + "ipython": { + "description": "The IPython enhanced REPL (https://ipython.org/).", + "properties": { + "console_script": { + "default": "ipython", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-ipython#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-ipython#entry_point", + "type": "string" + }, + "ignore_cwd": { + "default": true, + "description": "Whether to tell IPython not to put the CWD on the import path\nhttps://www.pantsbuild.org/v2.21/docs/reference-ipython#ignore_cwd", + "type": "boolean" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-ipython#install_from_resolve", + "type": "string" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-ipython#requirements", + "type": "array" + } + }, + "type": "object" + }, + "isort": { + "description": "The Python import sorter tool (https://pycqa.github.io/isort/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to isort, e.g. `--isort-args='--case-sensitive --trailing-comma'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#args", + "type": "array" + }, + "config": { + "default": [], + "description": "Path to config file understood by isort (https://pycqa.github.io/isort/docs/configuration/config_files/)\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#config", + "type": "array" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`.isort.cfg`, `pyproject.toml`, `setup.cfg`, `tox.ini` and `.editorconfig`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "isort", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use isort when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-isort#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "jarjar": { + "description": "The Jar Jar Abrams tool (https://github.com/eed3si9n/jarjar-abrams)", + "properties": { + "artifacts": { + "default": ["com.eed3si9n.jarjar:jarjar-assembly:{version}"], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#artifacts", + "type": "array" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `jarjar` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#lockfile", + "type": "string" + }, + "misplaced_class_strategy": { + "default": null, + "description": "The strategy to use when processing class files that are in the wrong package\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#misplaced_class_strategy", + "enum": ["fatal", "skip", "omit", "move"] + }, + "skip_manifest": { + "default": false, + "description": "Skip the processing of the JAR manifest\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#skip_manifest", + "type": "boolean" + }, + "version": { + "default": "1.8.1", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-jarjar#version", + "type": "string" + } + }, + "type": "object" + }, + "java-dump-source-analysis": { + "description": "Dump source analysis for java_source[s] targets.", + "properties": {}, + "type": "object" + }, + "java-infer": { + "description": "Options controlling which dependencies will be inferred for Java targets.", + "properties": { + "consumed_types": { + "default": true, + "description": "Infer a target's dependencies by parsing consumed types from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-java-infer#consumed_types", + "type": "boolean" + }, + "imports": { + "default": true, + "description": "Infer a target's dependencies by parsing import statements from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-java-infer#imports", + "type": "boolean" + }, + "third_party_import_mapping": { + "default": {}, + "description": "A dictionary mapping a Java package path to a JVM artifact coordinate (GROUP:ARTIFACT) without the version\nhttps://www.pantsbuild.org/v2.21/docs/reference-java-infer#third_party_import_mapping", + "type": "object" + } + }, + "type": "object" + }, + "javac": { + "description": "The javac Java source compiler.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to javac, e.g. `--javac-args='-g -deprecation'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-javac#args", + "type": "array" + }, + "tailor_source_targets": { + "default": true, + "description": "If true, add `java_sources` and `java_tests` targets with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-javac#tailor_source_targets", + "type": "boolean" + } + }, + "type": "object" + }, + "junit": { + "description": "The JUnit test framework (https://junit.org)", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to JUnit, e.g. `--junit-args='--disable-ansi-colors'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#args", + "type": "array" + }, + "artifacts": { + "default": [ + "org.junit.platform:junit-platform-console:1.7.2", + "org.junit.jupiter:junit-jupiter-engine:{version}", + "org.junit.vintage:junit-vintage-engine:{version}" + ], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#artifacts", + "type": "array" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `junit` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#lockfile", + "type": "string" + }, + "skip": { + "default": false, + "description": "If true, don't use JUnit when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#skip", + "type": "boolean" + }, + "version": { + "default": "5.7.2", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-junit#version", + "type": "string" + } + }, + "type": "object" + }, + "jvm": { + "description": "Options for general JVM functionality.\n\nJDK strings will be passed directly to Coursier's `--jvm` parameter. Run `cs java --available` to see a list of available JVM versions on your platform.\n\nIf the string `'system'` is passed, Coursier's `--system-jvm` option will be used instead, but note that this can lead to inconsistent behavior since the JVM version will be whatever happens to be found first on the system's PATH.", + "properties": { + "debug_args": { + "default": [], + "description": "Extra JVM arguments to use when running tests in debug mode\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#debug_args", + "type": "array" + }, + "default_resolve": { + "default": "jvm-default", + "description": "The default value used for the `resolve` and `compatible_resolves` fields\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#default_resolve", + "type": "string" + }, + "global_options": { + "default": [], + "description": "List of JVM options to pass to all JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#global_options", + "type": "array" + }, + "jdk": { + "default": "temurin:1.11", + "description": "The JDK to use\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#jdk", + "type": "string" + }, + "nailgun_remote_cache_speculation_delay": { + "default": 1000, + "description": "The time in milliseconds to delay speculation of nailgun processes while reading from the remote cache\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#nailgun_remote_cache_speculation_delay", + "type": "number" + }, + "reproducible_jars": { + "default": false, + "description": "When enabled, JAR files produced by JVM tools will have timestamps stripped\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#reproducible_jars", + "type": "boolean" + }, + "resolves": { + "default": { + "jvm-default": "3rdparty/jvm/default.lock" + }, + "description": "A dictionary mapping resolve names to the path of their lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#resolves", + "type": "object" + }, + "tool_jdk": { + "default": "temurin:1.11", + "description": "The JDK to use when building and running Pants' internal JVM support code and other non-compiler tools\nhttps://www.pantsbuild.org/v2.21/docs/reference-jvm#tool_jdk", + "type": "string" + } + }, + "type": "object" + }, + "jvm-symbol-map": { + "description": "Dump the JVM dependency inference symbol mapping.", + "properties": {}, + "type": "object" + }, + "lint": { + "description": "Run linters/formatters/fixers in check mode.", + "properties": { + "batch_size": { + "default": 128, + "description": "The target number of files to be included in each linter batch\nhttps://www.pantsbuild.org/v2.21/docs/reference-lint#batch_size", + "type": "number" + }, + "only": { + "default": [], + "description": "Only run these linters and skip all others\nhttps://www.pantsbuild.org/v2.21/docs/reference-lint#only", + "type": "array" + }, + "skip_fixers": { + "default": false, + "description": "If true, skip running all fixers in check-only mode\nhttps://www.pantsbuild.org/v2.21/docs/reference-lint#skip_fixers", + "type": "boolean" + }, + "skip_formatters": { + "default": false, + "description": "If true, skip running all formatters in check-only mode\nhttps://www.pantsbuild.org/v2.21/docs/reference-lint#skip_formatters", + "type": "boolean" + } + }, + "type": "object" + }, + "list": { + "description": "Lists all targets matching the file or target arguments.", + "properties": { + "documented": { + "default": false, + "description": "Print only targets that are documented with a description\nhttps://www.pantsbuild.org/v2.21/docs/reference-list#documented", + "type": "boolean" + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-list#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-list#sep", + "type": "string" + } + }, + "type": "object" + }, + "migrate-call-by-name": { + "description": "Migrate from `Get` syntax to call-by-name syntax (#19730). This is a **destructive** operation, so only run this on source controlled files that you are prepared to revert if necessary.\n\nThis goal will attempt to migrate the set of paths/targets specified at the command line if they are part of the \"migration plan\". This migration does not add any new files, but instead modifies existing files in-place without any formatting. The resulting changes should be reviewed, tested, and formatted/linted before committing.\n\nThe migration plan is a JSON representation of the rule graph, which is generated by the engine based on the active backends/rules in the project.\n\nEach item in the migration plan is a rule that contains the old `Get` syntax, the associated input/output types, and the new function to directly call. The migration plan can be dumped as JSON using the `--json` flag, which can be useful for debugging. For example:\n\n{\n \"filepath\": \"src/python/pants/source/source_root.py\",\n \"function\": \"get_source_roots\",\n \"gets\": [{\n \"input_types\": [{ \"module\": \"pants.source.source_root\", \"name\": \"SourceRootsRequest\" }],\n \"output_type\": { \"module\": \"pants.source.source_root\", \"name\": \"OptionalSourceRootsResult\" },\n \"rule_dep\": { \"function\": \"get_optional_source_roots\", \"module\": \"pants.source.source_root\" }\n }],\n \"module\": \"pants.source.source_root\"\n}", + "properties": { + "json": { + "default": false, + "description": "Dump the migration plan as JSON\nhttps://www.pantsbuild.org/v2.21/docs/reference-migrate-call-by-name#json", + "type": "boolean" + } + }, + "type": "object" + }, + "mypy": { + "description": "The MyPy Python type checker (http://mypy-lang.org/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to MyPy, e.g. `--mypy-args='--python-version 3.7 --disallow-any-expr'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to a config file understood by MyPy (https://mypy.readthedocs.io/en/stable/config_file.html)\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`mypy.ini`, `.mypy.ini`, and `setup.cfg`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "mypy", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use MyPy when running `pants check`\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#skip", + "type": "boolean" + }, + "source_plugins": { + "default": [], + "description": "An optional list of `python_sources` target addresses to load first-party plugins\nhttps://www.pantsbuild.org/v2.21/docs/reference-mypy#source_plugins", + "type": "array" + } + }, + "type": "object" + }, + "nodejs": { + "description": "The Node.js Javascript runtime (including Corepack).", + "properties": { + "corepack_env_vars": { + "default": [], + "description": "Environment variables to set for `corepack` invocations\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#corepack_env_vars", + "type": "array" + }, + "executable_search_paths": { + "default": [""], + "description": "The PATH value that will be used to find any tools required to run nodejs processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#executable_search_paths", + "type": "array" + }, + "known_versions": { + "default": [ + "v16.15.0|macos_arm64|ad8d8fc5330ef47788f509c2af398c8060bb59acbe914070d0df684cd2d8d39b|29126014", + "v16.15.0|macos_x86_64|a6bb12bbf979d32137598e49d56d61bcddf8a8596c3442b44a9b3ace58dd4de8|30561503", + "v16.15.0|linux_arm64|b4080b86562c5397f32da7a0723b95b1df523cab4c757688a184e3f733a7df56|21403276", + "v16.15.0|linux_x86_64|ebdf4dc9d992d19631f0931cca2fc33c6d0d382543639bc6560d31d5060a8372|22031988" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#known_versions", + "type": "array" + }, + "package_manager": { + "default": "npm", + "description": "Default Node.js package manager to use\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#package_manager", + "type": "string" + }, + "package_managers": { + "default": { + "npm": "8.5.5" + }, + "description": "A mapping of package manager versions to semver releases\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#package_managers", + "type": "object" + }, + "resolves": { + "default": {}, + "description": "A mapping of names to lockfile paths used in your project\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#resolves", + "type": "object" + }, + "search_path": { + "default": [""], + "description": "A list of paths to search for Node.js distributions\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#search_path", + "type": "array" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "linux-arm64", + "linux_x86_64": "linux-x64", + "macos_arm64": "darwin-arm64", + "macos_x86_64": "darwin-x64" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://nodejs.org/dist/{version}/node-{version}-{platform}.tar", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#url_template", + "type": "string" + }, + "version": { + "default": "v16.15.0", + "description": "Use this version of nodejs\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs#version", + "type": "string" + } + }, + "type": "object" + }, + "nodejs-infer": { + "description": "Options controlling which dependencies will be inferred for javascript targets.", + "properties": { + "imports": { + "default": true, + "description": "Infer a target's imported dependencies by parsing import statements from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs-infer#imports", + "type": "boolean" + }, + "package_json_entry_points": { + "default": true, + "description": "Infer a `package_json`'s dependencies by parsing entry point statements from the package.json file\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs-infer#package_json_entry_points", + "type": "boolean" + } + }, + "type": "object" + }, + "nodejs-test": { + "description": "Options for package.json script configured tests.\n\nYour preferred test runner is configured via the `package.json#scripts.test` field.\n\nThe only expectation from pants is that the `test` script can accept a variadic number of path arguments, relative to the package.json, and that any configuration files are `file` dependencies to the `package_json`.\n\nSimple example:\n\nConsider a directory-layout:\n\n\u251c\u2500\u2500 BUILD\n\u251c\u2500\u2500 src/\n\u2502 \u251c\u2500\u2500 BUILD\n\u2502 \u251c\u2500\u2500 test/\n\u2502 \u2502 \u251c\u2500\u2500 BUILD\n\u2502 \u2502 \u2514\u2500\u2500 index.test.js\n\u2502 \u2514\u2500\u2500 index.js\n\u2514\u2500\u2500 package.json\n\nwhere package.json contains\n\n# package.json\n{\n ...\n \"scripts\": {\n \"test\": \"mocha\"\n },\n \"devDependencies: {\n ...\n }\n}\n\n\nExecuting `pants test src/test/index.test.js` will cause the equivalent of `mocha src/test/index.test.js` to run.", + "properties": { + "coverage_output_dir": { + "default": "{distdir}/coverage/js/{target_spec}", + "description": "Path to write the NodeJS coverage reports to\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs-test#coverage_output_dir", + "type": "string" + }, + "skip": { + "default": false, + "description": "If true, don't use Node.js tests when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-nodejs-test#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "package": { + "description": "Create a distributable package.", + "properties": {}, + "type": "object" + }, + "paths": { + "description": "List the paths between two addresses. Either address may represent a group of targets, e.g. `--from=src/app/main.py --to=src/library::`.", + "properties": { + "from": { + "default": null, + "description": "The path starting address\nhttps://www.pantsbuild.org/v2.21/docs/reference-paths#from", + "type": "string" + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-paths#output_file", + "type": "string" + }, + "to": { + "default": null, + "description": "The path end address\nhttps://www.pantsbuild.org/v2.21/docs/reference-paths#to", + "type": "string" + } + }, + "type": "object" + }, + "peek": { + "description": "Display BUILD target info", + "properties": { + "exclude_defaults": { + "default": false, + "description": "Whether to leave off values that match the target-defined default values\nhttps://www.pantsbuild.org/v2.21/docs/reference-peek#exclude_defaults", + "type": "boolean" + }, + "include_additional_info": { + "default": false, + "description": "Whether to include additional information generated by plugins\nhttps://www.pantsbuild.org/v2.21/docs/reference-peek#include_additional_info", + "type": "boolean" + }, + "include_dep_rules": { + "default": false, + "description": "Whether to include `_dependencies_rules`, `_dependents_rules` and `_applicable_dep_rules` that apply to the target and its dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-peek#include_dep_rules", + "type": "boolean" + }, + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-peek#output_file", + "type": "string" + } + }, + "type": "object" + }, + "pex": { + "description": "How Pants uses Pex to run Python subprocesses.", + "properties": { + "emit_warnings": { + "default": false, + "description": "If warnings from Pex should be logged by Pants to the console\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex#emit_warnings", + "type": "boolean" + }, + "executable_search_paths": { + "default": [""], + "description": "The PATH value that will be used by the PEX subprocess and any subprocesses it spawns\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex#executable_search_paths", + "type": "array" + }, + "venv_use_symlinks": { + "default": false, + "description": "When possible, use venvs whose site-packages directories are populated with symlinks\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex#venv_use_symlinks", + "type": "boolean" + }, + "verbosity": { + "default": 0, + "description": "Set the verbosity level of PEX logging, from 0 (no logging) up to 9 (max logging)\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex#verbosity", + "type": "number" + } + }, + "type": "object" + }, + "pex-binary-defaults": { + "description": "Default settings for creating PEX executables.", + "properties": { + "emit_warnings": { + "default": true, + "description": "Whether built PEX binaries should emit PEX warnings at runtime by default\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-binary-defaults#emit_warnings", + "type": "boolean" + }, + "resolve_local_platforms": { + "default": false, + "description": "For each of the `platforms` specified for a `pex_binary` target, attempt to find a local interpreter that matches\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-binary-defaults#resolve_local_platforms", + "type": "boolean" + } + }, + "type": "object" + }, + "pex-cli": { + "description": "The PEX (Python EXecutable) tool (https://github.com/pex-tool/pex).", + "properties": { + "known_versions": { + "default": [ + "v2.3.1|macos_arm64|71690e672871b55323f5d6ef9a3fe9705f1668662652c4081080e7ab27d44de3|4124530", + "v2.3.1|macos_x86_64|71690e672871b55323f5d6ef9a3fe9705f1668662652c4081080e7ab27d44de3|4124530", + "v2.3.1|linux_x86_64|71690e672871b55323f5d6ef9a3fe9705f1668662652c4081080e7ab27d44de3|4124530", + "v2.3.1|linux_arm64|71690e672871b55323f5d6ef9a3fe9705f1668662652c4081080e7ab27d44de3|4124530" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-cli#known_versions", + "type": "array" + }, + "url_platform_mapping": { + "default": {}, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-cli#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/pex-tool/pex/releases/download/{version}/pex", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-cli#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of pex is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-cli#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "v2.3.1", + "description": "Use this version of pex\nhttps://www.pantsbuild.org/v2.21/docs/reference-pex-cli#version", + "type": "string" + } + }, + "type": "object" + }, + "preamble": { + "description": "Formats files with a preamble, with the preamble looked up based on path.\n\nThis is useful for things such as copyright headers or shebang lines.\n\nPants substitutes the following identifiers (following Python's `string.Template` substitutions): - $year: The current year (only used when actually writing the year to the file).", + "properties": { + "skip": { + "default": false, + "description": "If true, don't use preamble when running `pants fmt`\nhttps://www.pantsbuild.org/v2.21/docs/reference-preamble#skip", + "type": "boolean" + }, + "template_by_globs": { + "default": {}, + "description": "Which preamble template to use based on the path globs (relative to the build root)\nhttps://www.pantsbuild.org/v2.21/docs/reference-preamble#template_by_globs", + "oneOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + } + }, + "type": "object" + }, + "prettier": { + "description": "The Prettier utility for formatting JS/TS (and others) code (https://prettier.io/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Prettier, e.g. `--prettier-args='--version'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-prettier#args", + "type": "array" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve, instead of the version configured in this subsystem\nhttps://www.pantsbuild.org/v2.21/docs/reference-prettier#install_from_resolve", + "type": "string" + }, + "skip": { + "default": false, + "description": "If true, don't use Prettier when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-prettier#skip", + "type": "boolean" + }, + "version": { + "default": "prettier@2.6.2", + "description": "Version string for the tool in the form package@version (e.g. prettier@2.6.2)\nhttps://www.pantsbuild.org/v2.21/docs/reference-prettier#version", + "type": "string" + } + }, + "type": "object" + }, + "publish": { + "description": "Publish deliverables (assets, distributions, images, etc).", + "properties": { + "output": { + "default": null, + "description": "Filename for JSON structured publish information\nhttps://www.pantsbuild.org/v2.21/docs/reference-publish#output", + "type": "string" + } + }, + "type": "object" + }, + "py-constraints": { + "description": "Determine what Python interpreter constraints are used by files/targets.", + "properties": { + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-py-constraints#output_file", + "type": "string" + }, + "summary": { + "default": false, + "description": "Output a CSV summary of interpreter constraints for your whole repository\nhttps://www.pantsbuild.org/v2.21/docs/reference-py-constraints#summary", + "type": "boolean" + } + }, + "type": "object" + }, + "pyoxidizer": { + "description": "The PyOxidizer utility for packaging Python code in a Rust binary (https://pyoxidizer.readthedocs.io/en/stable/pyoxidizer.html).\n\nUsed with the `pyoxidizer_binary` target.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to PyOxidizer, e.g. `--pyoxidizer-args='--release'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#args", + "type": "array" + }, + "console_script": { + "default": "pyoxidizer", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.8,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyoxidizer#requirements", + "type": "array" + } + }, + "type": "object" + }, + "pytest": { + "description": "The pytest Python test framework (https://docs.pytest.org/).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Pytest, e.g. `--pytest-args='-k test_foo --quiet'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to a config file understood by Pytest (https://docs.pytest.org/en/latest/reference/customize.html#configuration-file-formats)\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include all relevant Pytest config files (e.g. `pytest.ini`) during runs\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "pytest", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#entry_point", + "type": "string" + }, + "execution_slot_var": { + "default": null, + "description": "If a non-empty string, the process execution slot id (an integer) will be exposed to tests under this environment variable name\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#execution_slot_var", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#install_from_resolve", + "type": "string" + }, + "junit_family": { + "default": "xunit2", + "description": "The format of generated junit XML files\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#junit_family", + "type": "string" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Pytest when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#skip", + "type": "boolean" + }, + "xdist_enabled": { + "default": false, + "description": "If true, Pants will use `pytest-xdist` (https://pytest-xdist.readthedocs.io/en/latest/) to parallelize tests within each `python_test` target\nhttps://www.pantsbuild.org/v2.21/docs/reference-pytest#xdist_enabled", + "type": "boolean" + } + }, + "type": "object" + }, + "python": { + "description": "Options for Pants's Python backend.", + "properties": { + "default_resolve": { + "default": "python-default", + "description": "The default value used for the `resolve` field\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#default_resolve", + "type": "string" + }, + "default_run_goal_use_sandbox": { + "default": true, + "description": "The default value used for the `run_goal_use_sandbox` field of Python targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#default_run_goal_use_sandbox", + "type": "boolean" + }, + "enable_lockfile_targets": { + "default": true, + "description": "Create targets for all Python lockfiles defined in `[python].resolves`\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#enable_lockfile_targets", + "type": "boolean" + }, + "enable_resolves": { + "default": false, + "description": "Set to true to enable lockfiles for user code\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#enable_resolves", + "type": "boolean" + }, + "interpreter_constraints": { + "default": [], + "description": "The Python interpreters your codebase is compatible with\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#interpreter_constraints", + "type": "array" + }, + "interpreter_versions_universe": { + "default": [ + "2.7", + "3.5", + "3.6", + "3.7", + "3.8", + "3.9", + "3.10", + "3.11", + "3.12" + ], + "description": "All known Python major/minor interpreter versions that may be used by either your code or tools used by your code\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#interpreter_versions_universe", + "type": "array" + }, + "invalid_lockfile_behavior": { + "default": "error", + "description": "The behavior when a lockfile has requirements or interpreter constraints that are not compatible with what the current build is using\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#invalid_lockfile_behavior", + "enum": ["error", "ignore", "warn"] + }, + "macos_big_sur_compatibility": { + "default": false, + "description": "If set, and if running on macOS Big Sur, use `macosx_10_16` as the platform when building wheels\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#macos_big_sur_compatibility", + "type": "boolean" + }, + "pip_version": { + "default": "24.0", + "description": "Use this version of Pip for resolving requirements and generating lockfiles\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#pip_version", + "type": "string" + }, + "repl_history": { + "default": true, + "description": "Whether to use the standard Python command history file when running a repl\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#repl_history", + "type": "boolean" + }, + "resolver_manylinux": { + "default": "manylinux2014", + "description": "Whether to allow resolution of manylinux wheels when resolving requirements for foreign linux platforms\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolver_manylinux", + "type": "string" + }, + "resolves": { + "default": { + "python-default": "3rdparty/python/default.lock" + }, + "description": "A mapping of logical names to lockfile paths used in your project\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves", + "type": "object" + }, + "resolves_generate_lockfiles": { + "default": true, + "description": "If False, Pants will not attempt to generate lockfiles for `[python].resolves` when running the `generate-lockfiles` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves_generate_lockfiles", + "type": "boolean" + }, + "resolves_to_constraints_file": { + "default": {}, + "description": "When generating a resolve's lockfile, use a constraints file to pin the version of certain requirements\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves_to_constraints_file", + "type": "object" + }, + "resolves_to_interpreter_constraints": { + "default": {}, + "description": "Override the interpreter constraints to use when generating a resolve's lockfile with the `generate-lockfiles` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves_to_interpreter_constraints", + "type": "object" + }, + "resolves_to_no_binary": { + "default": {}, + "description": "When generating a resolve's lockfile, do not use binary packages (i.e. wheels) for these 3rdparty project names\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves_to_no_binary", + "type": "object" + }, + "resolves_to_only_binary": { + "default": {}, + "description": "When generating a resolve's lockfile, do not use source packages (i.e. sdists) for these 3rdparty project names, e.g `['django', 'requests']`\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#resolves_to_only_binary", + "type": "object" + }, + "run_against_entire_lockfile": { + "default": false, + "description": "If enabled, when running binaries, tests, and repls, Pants will use the entire lockfile file instead of just the relevant subset\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#run_against_entire_lockfile", + "type": "boolean" + }, + "tailor_ignore_empty_init_files": { + "default": true, + "description": "If true, don't add `python_sources` targets for `__init__.py` files that are both empty and where there are no other Python files in the directory\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#tailor_ignore_empty_init_files", + "type": "boolean" + }, + "tailor_pex_binary_targets": { + "default": false, + "description": "If true, add `pex_binary` targets for Python files named `__main__.py` or with a `__main__` clause with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#tailor_pex_binary_targets", + "type": "boolean" + }, + "tailor_py_typed_targets": { + "default": true, + "description": "If true, add `resource` targets for marker files named `py.typed` with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#tailor_py_typed_targets", + "type": "boolean" + }, + "tailor_requirements_targets": { + "default": true, + "description": "If true, add `python_requirements`, `poetry_requirements`, and `pipenv_requirements` target generators with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#tailor_requirements_targets", + "type": "boolean" + }, + "tailor_source_targets": { + "default": true, + "description": "If true, add `python_sources`, `python_tests`, and `python_test_utils` targets with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-python#tailor_source_targets", + "type": "boolean" + } + }, + "type": "object" + }, + "python-bootstrap": { + "description": "Options used to locate Python interpreters.\n\nThis subsystem controls where and how Pants will locate Python, but beyond that it does not control which Python interpreter versions are actually used for your code: see the `python` subsystem for that.", + "properties": { + "internal_python_build_standalone_info": { + "default": { + "linux_arm64": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.9.16+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz", + "1ba520c0db431c84305677f56eb9a4254f5097430ed443e92fc8617f8fba973d", + 23873387 + ], + "linux_x86_64": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.9.16+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz", + "7ba397787932393e65fc2fb9fcfabf54f2bb6751d5da2b45913cb25b2d493758", + 26129729 + ], + "macos_arm64": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.9.16+20230116-aarch64-apple-darwin-install_only.tar.gz", + "d732d212d42315ac27c6da3e0b69636737a8d72086c980daf844344c010cab80", + 17084463 + ], + "macos_x86_64": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.9.16+20230116-x86_64-apple-darwin-install_only.tar.gz", + "3948384af5e8d4ee7e5ccc648322b99c1c5cf4979954ed5e6b3382c69d6db71e", + 17059474 + ] + }, + "description": "A map from platform to the information needed to download Python Build Standalone\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-bootstrap#internal_python_build_standalone_info", + "type": "object" + }, + "names": { + "default": ["python", "python3"], + "description": "The names of Python binaries to search for\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-bootstrap#names", + "type": "array" + }, + "search_path": { + "default": ["", "", ""], + "description": "A list of paths to search for Python interpreters\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-bootstrap#search_path", + "type": "array" + } + }, + "type": "object" + }, + "python-dump-source-analysis": { + "description": "Dump source analysis for python_source targets.", + "properties": { + "analysis_flavor": { + "default": "dependency_inference", + "description": "The type of information that should be returned\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-dump-source-analysis#analysis_flavor", + "enum": ["raw_dependency_inference", "dependency_inference"] + } + }, + "type": "object" + }, + "python-infer": { + "description": "Options controlling which dependencies will be inferred for Python targets.", + "properties": { + "ambiguity_resolution": { + "default": "none", + "description": "When multiple sources provide the same symbol, how to choose the provider to use\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#ambiguity_resolution", + "enum": ["none", "by_source_root"] + }, + "assets": { + "default": false, + "description": "Infer a target's asset dependencies based on strings that look like Posix filepaths, such as those given to `open` or `pkgutil.get_data`\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#assets", + "type": "boolean" + }, + "assets_min_slashes": { + "default": 1, + "description": "If `--assets` is True, treat valid-looking strings with at least this many forward slash characters as potential assets\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#assets_min_slashes", + "type": "number" + }, + "conftests": { + "default": true, + "description": "Infer a test target's dependencies on any `conftest.py` files in the current directory and ancestor directories\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#conftests", + "type": "boolean" + }, + "entry_points": { + "default": true, + "description": "Infer dependencies on targets' entry points, e.g. `pex_binary`'s `entry_point` field, `python_aws_lambda_function`'s `handler` field and `python_distribution`'s `entry_points` field\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#entry_points", + "type": "boolean" + }, + "ignored_unowned_imports": { + "default": [], + "description": "Unowned imports that should be ignored\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#ignored_unowned_imports", + "type": "array" + }, + "imports": { + "default": true, + "description": "Infer a target's imported dependencies by parsing import statements from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#imports", + "type": "boolean" + }, + "init_files": { + "default": "content_only", + "description": "Infer a target's dependencies on any `__init__.py` files in the packages it is located in (recursively upward in the directory structure)\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#init_files", + "enum": ["always", "content_only", "never"] + }, + "string_imports": { + "default": false, + "description": "Infer a target's dependencies based on strings that look like dynamic dependencies, such as Django settings files expressing dependencies as strings or pytest plugins listed in the `pytest_plugins` variable in a test module or a conftest file\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#string_imports", + "type": "boolean" + }, + "string_imports_min_dots": { + "default": 2, + "description": "If `--string-imports` is True, treat valid-looking strings with at least this many dots in them as potential dynamic dependencies\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#string_imports_min_dots", + "type": "number" + }, + "unowned_dependency_behavior": { + "default": "warning", + "description": "How to handle imports that don't have an inferable owner\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#unowned_dependency_behavior", + "enum": ["error", "warning", "ignore"] + }, + "use_rust_parser": { + "default": true, + "description": "Use the new Rust-based, multithreaded, in-process dependency parser\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-infer#use_rust_parser", + "type": "boolean" + } + }, + "type": "object" + }, + "python-native-code": { + "description": "Options for building native code using Python, e.g. when resolving distributions.", + "properties": { + "cpp_flags": { + "default": [""], + "description": "Override the `CPPFLAGS` environment variable for any forked subprocesses\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-native-code#cpp_flags", + "type": "array" + }, + "ld_flags": { + "default": [""], + "description": "Override the `LDFLAGS` environment variable for any forked subprocesses\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-native-code#ld_flags", + "type": "array" + } + }, + "type": "object" + }, + "python-repos": { + "description": "External Python code repositories, such as PyPI.\n\nThese options may be used to point to custom package indexes when resolving requirements.", + "properties": { + "find_links": { + "default": [], + "description": "URLs and/or file paths corresponding to pip's `--find-links` option\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-repos#find_links", + "type": "array" + }, + "indexes": { + "default": ["https://pypi.org/simple/"], + "description": "URLs of [PEP-503 compatible](https://peps.python.org/pep-0503/) code repository indexes to look for requirements\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-repos#indexes", + "type": "array" + }, + "path_mappings": { + "default": [], + "description": "Mappings to facilitate using local Python requirements when the absolute file paths are different on different users' machines\nhttps://www.pantsbuild.org/v2.21/docs/reference-python-repos#path_mappings", + "type": "array" + } + }, + "type": "object" + }, + "pyupgrade": { + "description": "Upgrade syntax for newer versions of the language (https://github.com/asottile/pyupgrade).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to pyupgrade, e.g. `--pyupgrade-args='--py39-plus --keep-runtime-typing'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#args", + "type": "array" + }, + "console_script": { + "default": "pyupgrade", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use pyupgrade when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-pyupgrade#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "regex-lint": { + "description": "Lint your code using regex patterns, e.g. to check for copyright headers.\n\nTo activate this with the `lint` goal, you must set `[regex-lint].config`.\n\nUnlike other linters, this can run on files not owned by targets, such as BUILD files.", + "properties": { + "config": { + "default": {}, + "description": "Config schema is as follows:\nhttps://www.pantsbuild.org/v2.21/docs/reference-regex-lint#config", + "oneOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + }, + "detail_level": { + "default": "nonmatching", + "description": "How much detail to include in the result\nhttps://www.pantsbuild.org/v2.21/docs/reference-regex-lint#detail_level", + "enum": ["none", "summary", "nonmatching", "names", "all"] + }, + "skip": { + "default": false, + "description": "If true, don't use regex-lint when running `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-regex-lint#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "repl": { + "description": "Open a REPL with the specified code loadable.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to the repl program, e.g. `--repl-args='-i helloworld/main.py'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-repl#args", + "type": "array" + }, + "restartable": { + "default": false, + "description": "True if the REPL should be restarted if its inputs have changed\nhttps://www.pantsbuild.org/v2.21/docs/reference-repl#restartable", + "type": "boolean" + }, + "shell": { + "default": null, + "description": "Override the automatically-detected REPL program for the target(s) specified\nhttps://www.pantsbuild.org/v2.21/docs/reference-repl#shell", + "type": "string" + } + }, + "type": "object" + }, + "roots": { + "description": "List the repo's registered source roots.", + "properties": { + "output_file": { + "default": null, + "description": "Output the goal's stdout to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-roots#output_file", + "type": "string" + }, + "sep": { + "default": "\\n", + "description": "String to use to separate lines in line-oriented output\nhttps://www.pantsbuild.org/v2.21/docs/reference-roots#sep", + "type": "string" + } + }, + "type": "object" + }, + "ruff": { + "description": "The Ruff Python formatter (https://github.com/astral-sh/ruff).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Ruff, e.g. `--ruff-args='--exclude=foo --ignore=E501'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to the `pyproject.toml` or `ruff.toml` file to use for configuration (https://github.com/astral-sh/ruff#configuration)\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`pyproject.toml`, and `ruff.toml`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "ruff", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Ruff when running `pants fmt` and `pants fix` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-ruff#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "run": { + "description": "Runs a binary target.\n\nThis goal propagates the return code of the underlying executable.\n\nIf your application can safely be restarted while it is running, you can pass `restartable=True` on your binary target (for supported types), and the `run` goal will automatically restart them as all relevant files change. This can be particularly useful for server applications.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to the executed target, e.g. `--run-args='val1 val2 --debug'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-run#args", + "type": "array" + }, + "debug_adapter": { + "default": false, + "description": "Run the interactive process using a Debug Adapter (https://microsoft.github.io/debug-adapter-protocol/) for the language if supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-run#debug_adapter", + "type": "boolean" + } + }, + "type": "object" + }, + "scala": { + "description": "Scala programming language", + "properties": { + "tailor_source_targets": { + "default": true, + "description": "If true, add `scala_sources`, `scala_junit_tests`, and `scalatest_tests` targets with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala#tailor_source_targets", + "type": "boolean" + }, + "version_for_resolve": { + "default": {}, + "description": "A dictionary mapping the name of a resolve to the Scala version to use for all Scala targets consuming that resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala#version_for_resolve", + "type": "object" + } + }, + "type": "object" + }, + "scala-dump-source-analysis": { + "description": "Dump source analysis for scala_source targets.", + "properties": {}, + "type": "object" + }, + "scala-infer": { + "description": "Options controlling which dependencies will be inferred for Scala targets.", + "properties": { + "consumed_types": { + "default": true, + "description": "Infer a target's dependencies by parsing consumed types from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala-infer#consumed_types", + "type": "boolean" + }, + "force_add_siblings_as_dependencies": { + "default": false, + "description": "If true, add a dependency on all `scala_source` targets generated by the same `scala_sources` target generator\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala-infer#force_add_siblings_as_dependencies", + "type": "boolean" + }, + "imports": { + "default": true, + "description": "Infer a target's dependencies by parsing import statements from sources\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala-infer#imports", + "type": "boolean" + }, + "package_objects": { + "default": true, + "description": "Add dependency on the package object to every target\nhttps://www.pantsbuild.org/v2.21/docs/reference-scala-infer#package_objects", + "type": "boolean" + } + }, + "type": "object" + }, + "scalac": { + "description": "The Scala compiler.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to scalac, e.g. `--scalac-args='-encoding UTF-8'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalac#args", + "type": "array" + }, + "plugins_for_resolve": { + "default": {}, + "description": "A dictionary, whose keys are the names of each JVM resolve that requires default `scalac` plugins, and the value is a comma-separated string consisting of scalac plugin names\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalac#plugins_for_resolve", + "type": "object" + } + }, + "type": "object" + }, + "scalafix": { + "description": "scalafix (https://scalacenter.github.io/scalafix/)", + "properties": { + "artifacts": { + "default": ["ch.epfl.scala:scalafix-cli_2.13.12:{version}"], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#artifacts", + "type": "array" + }, + "config_file_name": { + "default": ".scalafix.conf", + "description": "Name of a config file understood by scalafix (https://scalacenter.github.io/scalafix/docs/users/configuration.html)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#config_file_name", + "type": "string" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `scalafix` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#lockfile", + "type": "string" + }, + "orphan_files_behavior": { + "default": "error", + "description": "Whether to ignore, error or show a warning when files are found that are not covered by the config file provided in `[scalafix].config_file_name` setting\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#orphan_files_behavior", + "enum": ["ignore", "error", "warn"] + }, + "rule_targets": { + "default": [], + "description": "List of targets providing additional Scalafix rules\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#rule_targets", + "type": "array" + }, + "semantic_rules": { + "default": true, + "description": "Whether semantic rules are enabled or not\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#semantic_rules", + "type": "boolean" + }, + "skip": { + "default": false, + "description": "If true, don't use scalafix when running `pants fix` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#skip", + "type": "boolean" + }, + "version": { + "default": "0.11.1", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafix#version", + "type": "string" + } + }, + "type": "object" + }, + "scalafmt": { + "description": "scalafmt (https://scalameta.org/scalafmt/)", + "properties": { + "artifacts": { + "default": ["org.scalameta:scalafmt-cli_2.13:{version}"], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#artifacts", + "type": "array" + }, + "config_file_name": { + "default": ".scalafmt.conf", + "description": "Name of a config file understood by scalafmt (https://scalameta.org/scalafmt/docs/configuration.html)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#config_file_name", + "type": "string" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `scalafmt` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#lockfile", + "type": "string" + }, + "orphan_files_behavior": { + "default": "error", + "description": "Whether to ignore, error or show a warning when files are found that are not covered by the config file provided in `[scalafmt].config_file_name` setting\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#orphan_files_behavior", + "enum": ["ignore", "error", "warn"] + }, + "skip": { + "default": false, + "description": "If true, don't use scalafmt when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#skip", + "type": "boolean" + }, + "version": { + "default": "3.2.1", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalafmt#version", + "type": "string" + } + }, + "type": "object" + }, + "scalatest": { + "description": "The Scalatest test framework (https://www.scalatest.org/)", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Scalatest, e.g. `--scalatest-args='-t $testname'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#args", + "type": "array" + }, + "artifacts": { + "default": ["org.scalatest:scalatest_2.13:{version}"], + "description": "Artifact requirements for this tool using specified as either the address of a `jvm_artifact` target or, alternatively, as a colon-separated Maven coordinates (e.g., `group:name:version`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#artifacts", + "type": "array" + }, + "jvm_options": { + "default": [], + "description": "List of JVM options to pass to `scalatest` JVM processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#jvm_options", + "type": "array" + }, + "lockfile": { + "default": "", + "description": "Path to a lockfile used for installing the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#lockfile", + "type": "string" + }, + "skip": { + "default": false, + "description": "If true, don't use Scalatest when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#skip", + "type": "boolean" + }, + "version": { + "default": "3.2.10", + "description": "Version string for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scalatest#version", + "type": "string" + } + }, + "type": "object" + }, + "scc": { + "description": "The Succinct Code Counter, aka `scc` (https://github.com/boyter/scc).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to SCC, e.g. `--scc-args='--no-cocomo'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#args", + "type": "array" + }, + "known_versions": { + "default": [ + "3.0.0|macos_arm64 |846cb1b25025a0794d455719bc17cfb3f588576a58af1d95036f6c654e294f98|2006145", + "3.0.0|macos_x86_64|9c3064e477ab36e16204ad34f649372034bca4df669615eff5de4aa05b2ddf1a|2048134", + "3.0.0|linux_arm64 |04f9e797b70a678833e49df5e744f95080dfb7f963c0cd34f5b5d4712d290f33|1768037", + "3.0.0|linux_x86_64|13ca47ce00b5bd032f97f3af7aa8eb3c717b8972b404b155a378b09110e4aa0c|1948341" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#known_versions", + "type": "array" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "arm64-unknown-linux", + "linux_x86_64": "x86_64-unknown-linux", + "macos_arm64": "arm64-apple-darwin", + "macos_x86_64": "x86_64-apple-darwin" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/boyter/scc/releases/download/v{version}/scc-{version}-{platform}.zip", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of SCC is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "3.0.0", + "description": "Use this version of SCC\nhttps://www.pantsbuild.org/v2.21/docs/reference-scc#version", + "type": "string" + } + }, + "type": "object" + }, + "setup-py-generation": { + "description": "Options to control how setup.py is generated from a `python_distribution` target.", + "properties": { + "first_party_dependency_version_scheme": { + "default": "exact", + "description": "What version to set in `install_requires` when a `python_distribution` depends on other `python_distribution`s\nhttps://www.pantsbuild.org/v2.21/docs/reference-setup-py-generation#first_party_dependency_version_scheme", + "enum": ["exact", "compatible", "any"] + }, + "generate_setup_default": { + "default": true, + "description": "The default value for the `generate_setup` field on `python_distribution` targets\nhttps://www.pantsbuild.org/v2.21/docs/reference-setup-py-generation#generate_setup_default", + "type": "boolean" + } + }, + "type": "object" + }, + "setuptools": { + "description": "Python setuptools, used to package `python_distribution` targets.", + "properties": { + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools#install_from_resolve", + "type": "string" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools#requirements", + "type": "array" + } + }, + "type": "object" + }, + "setuptools-scm": { + "description": "A tool for generating versions from VCS metadata (https://github.com/pypa/setuptools_scm).", + "properties": { + "console_script": { + "default": null, + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools-scm#console_script", + "type": "string" + }, + "entry_point": { + "default": "setuptools_scm", + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools-scm#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools-scm#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools-scm#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-setuptools-scm#requirements", + "type": "array" + } + }, + "type": "object" + }, + "shell-setup": { + "description": "Options for Pants's Shell support.", + "properties": { + "dependency_inference": { + "default": true, + "description": "Infer Shell dependencies on other Shell files by analyzing `source` statements\nhttps://www.pantsbuild.org/v2.21/docs/reference-shell-setup#dependency_inference", + "type": "boolean" + }, + "executable_search_paths": { + "default": [""], + "description": "The PATH value that will be used to find shells and to run certain processes like the shunit2 test runner\nhttps://www.pantsbuild.org/v2.21/docs/reference-shell-setup#executable_search_paths", + "type": "array" + }, + "tailor": { + "default": true, + "description": "If true, add `shell_sources` and `shunit2_tests` targets with the `tailor` goal\nhttps://www.pantsbuild.org/v2.21/docs/reference-shell-setup#tailor", + "type": "boolean" + } + }, + "type": "object" + }, + "shell-test": { + "description": "Options for Pants' Shell test support.", + "properties": { + "skip": { + "default": false, + "description": "If true, don't use Test with shell scripts when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shell-test#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "shellcheck": { + "description": "A linter for shell scripts.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Shellcheck, e.g. `--shellcheck-args='-e SC20529'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#args", + "type": "array" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include all relevant `.shellcheckrc` and `shellcheckrc` files during runs\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#config_discovery", + "type": "boolean" + }, + "known_versions": { + "default": [ + "v0.10.0|macos_arm64 |bbd2f14826328eee7679da7221f2bc3afb011f6a928b848c80c321f6046ddf81|7205756", + "v0.10.0|macos_x86_64|ef27684f23279d112d8ad84e0823642e43f838993bbb8c0963db9b58a90464c2|4371632", + "v0.10.0|linux_arm64 |324a7e89de8fa2aed0d0c28f3dab59cf84c6d74264022c00c22af665ed1a09bb|4291764", + "v0.10.0|linux_x86_64|6c881ab0698e4e6ea235245f22832860544f17ba386442fe7e9d629f8cbedf87|2404716" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#known_versions", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Shellcheck when running `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#skip", + "type": "boolean" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "linux.aarch64", + "linux_x86_64": "linux.x86_64", + "macos_arm64": "darwin.aarch64", + "macos_x86_64": "darwin.x86_64" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/koalaman/shellcheck/releases/download/{version}/shellcheck-{version}.{platform}.tar.xz", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of Shellcheck is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "v0.10.0", + "description": "Use this version of Shellcheck\nhttps://www.pantsbuild.org/v2.21/docs/reference-shellcheck#version", + "type": "string" + } + }, + "type": "object" + }, + "shfmt": { + "description": "An autoformatter for shell scripts (https://github.com/mvdan/sh).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to shfmt, e.g. `--shfmt-args='-i 2'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#args", + "type": "array" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include all relevant `.editorconfig` files during runs\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#config_discovery", + "type": "boolean" + }, + "known_versions": { + "default": [ + "v3.2.4|macos_arm64 |e70fc42e69debe3e400347d4f918630cdf4bf2537277d672bbc43490387508ec|2998546", + "v3.2.4|macos_x86_64|43a0461a1b54070ddc04fbbf1b78f7861ee39a65a61f5466d15a39c4aba4f917|2980208", + "v3.2.4|linux_arm64 |6474d9cc08a1c9fe2ef4be7a004951998e3067d46cf55a011ddd5ff7bfab3de6|2752512", + "v3.2.4|linux_x86_64|3f5a47f8fec27fae3e06d611559a2063f5d27e4b9501171dde9959b8c60a3538|2797568", + "v3.6.0|macos_arm64 |633f242246ee0a866c5f5df25cbf61b6af0d5e143555aca32950059cf13d91e0|3065202", + "v3.6.0|macos_x86_64|b8c9c025b498e2816b62f0b717f6032e9ab49e725a45b8205f52f66318f17185|3047552", + "v3.6.0|linux_arm64 |fb1cf0af3dbe9aac7d98e38e3c7426765208ecfe23cb2da51037bb234776fd70|2818048", + "v3.6.0|linux_x86_64|5741a02a641de7e56b8da170e71a97e58050d66a3cf485fb268d6a5a8bb74afb|2850816" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#known_versions", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use shfmt when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#skip", + "type": "boolean" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "linux_arm64", + "linux_x86_64": "linux_amd64", + "macos_arm64": "darwin_arm64", + "macos_x86_64": "darwin_amd64" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/mvdan/sh/releases/download/{version}/shfmt_{version}_{platform}", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of shfmt is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "v3.6.0", + "description": "Use this version of shfmt\nhttps://www.pantsbuild.org/v2.21/docs/reference-shfmt#version", + "type": "string" + } + }, + "type": "object" + }, + "shunit2": { + "description": "shUnit2 is a xUnit framework for Bourne based shell scripts (https://github.com/kward/shunit2)", + "properties": { + "known_versions": { + "default": [ + "b9102bb763cc603b3115ed30a5648bf950548097|macos_arm64|1f11477b7948150d1ca50cdd41d89be4ed2acd137e26d2e0fe23966d0e272cc5|40987", + "b9102bb763cc603b3115ed30a5648bf950548097|macos_x86_64|1f11477b7948150d1ca50cdd41d89be4ed2acd137e26d2e0fe23966d0e272cc5|40987", + "b9102bb763cc603b3115ed30a5648bf950548097|linux_x86_64|1f11477b7948150d1ca50cdd41d89be4ed2acd137e26d2e0fe23966d0e272cc5|40987", + "b9102bb763cc603b3115ed30a5648bf950548097|linux_arm64|1f11477b7948150d1ca50cdd41d89be4ed2acd137e26d2e0fe23966d0e272cc5|40987" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#known_versions", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use shunit2 when running `pants test`\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#skip", + "type": "boolean" + }, + "url_platform_mapping": { + "default": {}, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://raw.githubusercontent.com/kward/shunit2/{version}/shunit2", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of shunit2 is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "b9102bb763cc603b3115ed30a5648bf950548097", + "description": "Use this version of shunit2\nhttps://www.pantsbuild.org/v2.21/docs/reference-shunit2#version", + "type": "string" + } + }, + "type": "object" + }, + "source": { + "description": "Configuration for roots of source trees.", + "properties": { + "marker_filenames": { + "default": [], + "description": "The presence of a file of this name in a directory indicates that the directory is a source root\nhttps://www.pantsbuild.org/v2.21/docs/reference-source#marker_filenames", + "type": "array" + }, + "root_patterns": { + "default": [ + "/", + "src", + "src/python", + "src/py", + "src/thrift", + "src/protobuf", + "src/protos", + "src/scala", + "src/java" + ], + "description": "A list of source root suffixes\nhttps://www.pantsbuild.org/v2.21/docs/reference-source#root_patterns", + "type": "array" + } + }, + "type": "object" + }, + "stats": { + "description": "An aggregator for Pants stats, such as cache metrics.", + "properties": { + "format": { + "default": "text", + "description": "Output format for reporting stats\nhttps://www.pantsbuild.org/v2.21/docs/reference-stats#format", + "enum": ["text", "jsonlines"] + }, + "log": { + "default": false, + "description": "At the end of the Pants run, log all counter metrics and summaries of observation histograms, e.g. the number of cache hits and the time saved by caching\nhttps://www.pantsbuild.org/v2.21/docs/reference-stats#log", + "type": "boolean" + }, + "memory_summary": { + "default": false, + "description": "At the end of the Pants run, report a summary of memory usage\nhttps://www.pantsbuild.org/v2.21/docs/reference-stats#memory_summary", + "type": "boolean" + }, + "output_file": { + "default": null, + "description": "Output the stats to this file\nhttps://www.pantsbuild.org/v2.21/docs/reference-stats#output_file", + "type": "string" + } + }, + "type": "object" + }, + "subprocess-environment": { + "description": "Environment settings for forked subprocesses.", + "properties": { + "env_vars": { + "default": [ + "LANG", + "LC_CTYPE", + "LC_ALL", + "SSL_CERT_FILE", + "SSL_CERT_DIR" + ], + "description": "Environment variables to set for process invocations\nhttps://www.pantsbuild.org/v2.21/docs/reference-subprocess-environment#env_vars", + "type": "array" + } + }, + "type": "object" + }, + "system-binaries": { + "description": "System binaries related settings.", + "properties": { + "system_binary_paths": { + "default": [ + "/usr/bin", + "/bin", + "/usr/local/bin", + "/opt/homebrew/bin" + ], + "description": "The PATH value that will searched for executables\nhttps://www.pantsbuild.org/v2.21/docs/reference-system-binaries#system_binary_paths", + "type": "array" + } + }, + "type": "object" + }, + "tailor": { + "description": "Auto-generate BUILD file targets for new source files.\n\nEach specific `tailor` implementation may be disabled through language-specific options, e.g. `[python].tailor_pex_binary_targets` and `[shell-setup].tailor`.", + "properties": { + "alias_mapping": { + "default": {}, + "description": "A mapping from standard target type to custom type to use instead\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#alias_mapping", + "type": "object" + }, + "build_file_header": { + "default": null, + "description": "A header, e.g., a copyright notice, to add to the content of created BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#build_file_header", + "type": "string" + }, + "build_file_indent": { + "default": " ", + "description": "The indent to use when auto-editing BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#build_file_indent", + "type": "string" + }, + "build_file_name": { + "default": "BUILD", + "description": "The name to use for generated BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#build_file_name", + "type": "string" + }, + "check": { + "default": false, + "description": "Do not write changes to disk, only write back what would change\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#check", + "type": "boolean" + }, + "ignore_adding_targets": { + "default": [], + "description": "Do not add these target definitions\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#ignore_adding_targets", + "type": "array" + }, + "ignore_paths": { + "default": [], + "description": "Do not edit or create BUILD files at these paths\nhttps://www.pantsbuild.org/v2.21/docs/reference-tailor#ignore_paths", + "type": "array" + } + }, + "type": "object" + }, + "taplo": { + "description": "An autoformatter for TOML files (https://taplo.tamasfe.dev/)", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Taplo, e.g. `--taplo-args='--option=align_entries=false'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#args", + "type": "array" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include a `taplo.toml` or `.taplo.toml` file found in the build root during a run\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#config_discovery", + "type": "boolean" + }, + "glob_pattern": { + "default": ["**/*.toml", "!.taplo.toml", "!taplo.toml"], + "description": "A list of glob patterns of files to include/exclude in formatting relative to the build root\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#glob_pattern", + "type": "array" + }, + "known_versions": { + "default": [ + "0.8.0|macos_arm64|79c1691c3c46be981fa0cec930ec9a6d6c4ffd27272d37d1885514ce59bd8ccf|3661689", + "0.8.0|macos_x86_64|a1917f1b9168cb4f7d579422dcdf9c733028d873963d8fa3a6f499e41719c502|3926263", + "0.8.0|linux_arm64|a6a94482f125c21090593f94cad23df099c4924f5b9620cda4a8653527c097a1|3995383", + "0.8.0|linux_x86_64|3703294fac37ca9a9f76308f9f98c3939ccb7588f8972acec68a48d7a10d8ee5|4123593" + ], + "description": "Known versions to verify downloads against\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#known_versions", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Taplo when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#skip", + "type": "boolean" + }, + "url_platform_mapping": { + "default": { + "linux_arm64": "linux-aarch64", + "linux_x86_64": "linux-x86_64", + "macos_arm64": "darwin-aarch64", + "macos_x86_64": "darwin-x86_64" + }, + "description": "A dictionary mapping platforms to strings to be used when generating the URL to download the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#url_platform_mapping", + "type": "object" + }, + "url_template": { + "default": "https://github.com/tamasfe/taplo/releases/download/{version}/taplo-{platform}.gz", + "description": "URL to download the tool, either as a single binary file or a compressed file (e.g. zip file)\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#url_template", + "type": "string" + }, + "use_unsupported_version": { + "default": "error", + "description": "What action to take in case the requested version of Taplo is not supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#use_unsupported_version", + "enum": ["error", "warning"] + }, + "version": { + "default": "0.8.0", + "description": "Use this version of Taplo\nhttps://www.pantsbuild.org/v2.21/docs/reference-taplo#version", + "type": "string" + } + }, + "type": "object" + }, + "test": { + "description": "Run tests.", + "properties": { + "attempts_default": { + "default": 1, + "description": "The number of attempts to run tests, in case of a test failure\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#attempts_default", + "type": "number" + }, + "batch_size": { + "default": 128, + "description": "The target maximum number of files to be included in each run of batch-enabled test runners\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#batch_size", + "type": "number" + }, + "debug": { + "default": false, + "description": "Run tests sequentially in an interactive process\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#debug", + "type": "boolean" + }, + "debug_adapter": { + "default": false, + "description": "Run tests sequentially in an interactive process, using a Debug Adapter (https://microsoft.github.io/debug-adapter-protocol/) for the language if supported\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#debug_adapter", + "type": "boolean" + }, + "extra_env_vars": { + "default": [], + "description": "Additional environment variables to include in test processes\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#extra_env_vars", + "type": "array" + }, + "force": { + "default": false, + "description": "Force the tests to run, even if they could be satisfied from cache\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#force", + "type": "boolean" + }, + "open_coverage": { + "default": false, + "description": "If a coverage report file is generated, open it on the local system if the system supports this\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#open_coverage", + "type": "boolean" + }, + "output": { + "default": "failed", + "description": "Show stdout/stderr for these tests\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#output", + "enum": ["all", "failed", "none"] + }, + "report": { + "default": false, + "description": "Write test reports to `--report-dir`\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#report", + "type": "boolean" + }, + "report_dir": { + "default": "{distdir}/test/reports", + "description": "Path to write test reports to\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#report_dir", + "type": "string" + }, + "shard": { + "default": "", + "description": "A shard specification of the form \"k/N\", where N is a positive integer and k is a non-negative integer less than N\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#shard", + "type": "string" + }, + "show_rerun_command": { + "default": false, + "description": "If tests fail, show an appropriate `pants test ...` invocation to rerun just those tests\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#show_rerun_command", + "type": "boolean" + }, + "timeout_default": { + "default": null, + "description": "The default timeout (in seconds) for a test target if the `timeout` field is not set on the target\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#timeout_default", + "type": "number" + }, + "timeout_maximum": { + "default": null, + "description": "The maximum timeout (in seconds) that may be used on a test target\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#timeout_maximum", + "type": "number" + }, + "timeouts": { + "default": true, + "description": "Enable test target timeouts\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#timeouts", + "type": "boolean" + }, + "use_coverage": { + "default": false, + "description": "Generate a coverage report if the test runner supports it\nhttps://www.pantsbuild.org/v2.21/docs/reference-test#use_coverage", + "type": "boolean" + } + }, + "type": "object" + }, + "twine": { + "description": "The utility for publishing Python distributions to PyPI and other Python repositories.", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to Twine, e.g. `--twine-args='--skip-existing'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#args", + "type": "array" + }, + "ca_certs_path": { + "default": "", + "description": "Path to a file containing PEM-format CA certificates used for verifying secure connections when publishing python distributions\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#ca_certs_path", + "type": "string" + }, + "config": { + "default": null, + "description": "Path to a .pypirc config file to use. (https://packaging.python.org/specifications/pypirc/)\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include all relevant config files during runs (`.pypirc`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "twine", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use Twine when running `pants publish`\nhttps://www.pantsbuild.org/v2.21/docs/reference-twine#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "update-build-files": { + "description": "Format and fix safe deprecations in BUILD files.\n\nThis does not handle the full Pants upgrade. You must still manually change `pants_version` in `pants.toml` and you may need to manually address some deprecations. See https://www.pantsbuild.org/2.21/docs/releases/upgrade-tips for upgrade tips.\n\nThis goal is run without arguments. It will run over all BUILD files in your project.", + "properties": { + "check": { + "default": false, + "description": "Do not write changes to disk, only write back what would change\nhttps://www.pantsbuild.org/v2.21/docs/reference-update-build-files#check", + "type": "boolean" + }, + "fix_safe_deprecations": { + "default": true, + "description": "Automatically fix deprecations, such as target type renames, that are safe because they do not change semantics\nhttps://www.pantsbuild.org/v2.21/docs/reference-update-build-files#fix_safe_deprecations", + "type": "boolean" + }, + "fmt": { + "default": true, + "description": "Format BUILD files using Black, Ruff or Yapf\nhttps://www.pantsbuild.org/v2.21/docs/reference-update-build-files#fmt", + "type": "boolean" + }, + "formatter": { + "default": "black", + "description": "Which formatter Pants should use to format BUILD files\nhttps://www.pantsbuild.org/v2.21/docs/reference-update-build-files#formatter", + "enum": ["yapf", "black", "ruff"] + } + }, + "type": "object" + }, + "version": { + "description": "Display Pants version.", + "properties": {}, + "type": "object" + }, + "visibility": { + "description": "Options for the visibility rules implementation of the dependency rules API.", + "properties": { + "enforce": { + "default": true, + "description": "Visibility rules are enforced whenever dependencies are calculated unless `enforce` is set to false\nhttps://www.pantsbuild.org/v2.21/docs/reference-visibility#enforce", + "type": "boolean" + }, + "skip": { + "default": false, + "description": "If true, don't use Visibility Rules when running `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-visibility#skip", + "type": "boolean" + } + }, + "type": "object" + }, + "workunit-logger": { + "description": "Workunit Logger subsystem. Useful for debugging pants itself.", + "properties": { + "enabled": { + "default": false, + "description": "Whether to enable workunit logging\nhttps://www.pantsbuild.org/v2.21/docs/reference-workunit-logger#enabled", + "type": "boolean" + }, + "logdir": { + "default": ".pants.d", + "description": "Where to write the log to\nhttps://www.pantsbuild.org/v2.21/docs/reference-workunit-logger#logdir", + "type": "string" + } + }, + "type": "object" + }, + "yapf": { + "description": "A formatter for Python files (https://github.com/google/yapf).", + "properties": { + "args": { + "default": [], + "description": "Arguments to pass directly to yapf, e.g. `--yapf-args='--no-local-style'`\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#args", + "type": "array" + }, + "config": { + "default": null, + "description": "Path to style file understood by yapf (https://github.com/google/yapf#formatting-style/)\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#config" + }, + "config_discovery": { + "default": true, + "description": "If true, Pants will include any relevant config files during runs (`.style.yapf`, `pyproject.toml`, and `setup.cfg`)\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#config_discovery", + "type": "boolean" + }, + "console_script": { + "default": "yapf", + "description": "The console script for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#console_script", + "type": "string" + }, + "entry_point": { + "default": null, + "description": "The entry point for the tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#entry_point", + "type": "string" + }, + "install_from_resolve": { + "default": null, + "description": "If specified, install the tool using the lockfile for this named resolve\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#install_from_resolve", + "type": "string" + }, + "interpreter_constraints": { + "default": ["CPython>=3.7,<4"], + "description": "Python interpreter constraints for this tool\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#interpreter_constraints", + "type": "array" + }, + "requirements": { + "default": [], + "description": "If `install_from_resolve` is specified, install these requirements, at the versions provided by the specified resolve's lockfile\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#requirements", + "type": "array" + }, + "skip": { + "default": false, + "description": "If true, don't use yapf when running `pants fmt` and `pants lint`\nhttps://www.pantsbuild.org/v2.21/docs/reference-yapf#skip", + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" +} From beb246f25acc8f6cf473071d8ec15cf8359855f0 Mon Sep 17 00:00:00 2001 From: Edwin Kofler Date: Fri, 21 Jun 2024 02:31:10 -0700 Subject: [PATCH 36/62] Update ESLint partial (#3881) --- src/schemas/json/partial-eslint-plugins.json | 1895 ++++++++++++------ 1 file changed, 1282 insertions(+), 613 deletions(-) diff --git a/src/schemas/json/partial-eslint-plugins.json b/src/schemas/json/partial-eslint-plugins.json index a3ece4fa573..fcfcd6049c9 100644 --- a/src/schemas/json/partial-eslint-plugins.json +++ b/src/schemas/json/partial-eslint-plugins.json @@ -1,6 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/partial-eslint-plugins.json", + "$comment": "For improvements to this schema, please send a PR to https://github.com/fox-projects/jsonschema-extractor.", "type": "object", "definitions": { "ruleNumber": { @@ -20,73 +21,72 @@ "anyOf": [ { "enum": [ - "eslint-plugin-jsx-a11y", "eslint-plugin-jest", + "eslint-plugin-n", + "eslint-plugin-jsx-a11y", "eslint-plugin-react", - "eslint-plugin-import", "eslint-plugin-unused-imports", "eslint-plugin-react-hooks", - "eslint-plugin-unicorn", + "eslint-plugin-import", "eslint-plugin-security", - "eslint-plugin-prettier", + "eslint-plugin-unicorn", + "eslint-plugin-regexp", "eslint-plugin-ft-flow", + "eslint-plugin-prettier", "eslint-plugin-cypress", - "eslint-plugin-regexp", "eslint-plugin-eslint-plugin", "eslint-plugin-mocha", "eslint-plugin-qunit", + "eslint-plugin-jasmine", "eslint-plugin-ember", + "eslint-plugin-you-dont-need-lodash-underscore", + "@tanstack/eslint-plugin-query", + "eslint-plugin-react-perf", "eslint-plugin-no-only-tests", "eslint-plugin-jsdoc", - "eslint-plugin-react-native", - "@tanstack/eslint-plugin-query", - "eslint-plugin-testing-library", - "eslint-plugin-canonical", - "eslint-plugin-chai-friendly", - "eslint-plugin-vue", - "eslint-plugin-jest-formatting", - "eslint-plugin-promise", - "eslint-plugin-html", - "eslint-plugin-local-rules", - "eslint-plugin-i18next", - "eslint-plugin-you-dont-need-lodash-underscore", "eslint-plugin-yml", - "eslint-plugin-react-redux", - "eslint-plugin-simple-import-sort", - "eslint-plugin-react-perf", - "eslint-plugin-tsdoc", - "@next/eslint-plugin-next", + "eslint-plugin-vue", "eslint-plugin-jest-dom", + "eslint-plugin-simple-import-sort", + "eslint-plugin-ava", "eslint-plugin-es-x", - "eslint-plugin-flowtype", + "eslint-plugin-testing-library", + "eslint-plugin-i18next", + "eslint-plugin-markdown", + "eslint-plugin-local-rules", + "eslint-plugin-html", + "eslint-plugin-sonarjs", + "eslint-plugin-lodash", + "@next/eslint-plugin-next", + "eslint-plugin-perfectionist", + "eslint-plugin-canonical", + "eslint-plugin-jest-formatting", "eslint-plugin-babel", - "eslint-plugin-react-native-a11y", - "eslint-plugin-n", - "eslint-plugin-jasmine", - "eslint-plugin-prefer-arrow", - "@rushstack/eslint-plugin-security", + "eslint-plugin-tailwindcss", + "eslint-plugin-flowtype", "eslint-plugin-lit-a11y", - "eslint-plugin-deprecation", - "eslint-plugin-nuxt", - "eslint-plugin-compat", + "@rushstack/eslint-plugin-security", "eslint-plugin-sort-exports", - "eslint-plugin-perfectionist", - "eslint-plugin-sonarjs", - "eslint-plugin-i", - "eslint-plugin-check-file", - "eslint-plugin-sort-keys-fix", + "eslint-plugin-json", + "eslint-plugin-react-native", + "eslint-plugin-deprecation", "eslint-plugin-vuejs-accessibility", - "eslint-plugin-typescript-sort-keys", - "eslint-plugin-tailwindcss", + "eslint-plugin-chai-friendly", + "eslint-plugin-check-file", + "eslint-plugin-promise", + "eslint-plugin-sort-class-members", + "eslint-plugin-astro", "eslint-plugin-playwright", - "eslint-plugin-jsonc", + "eslint-plugin-typescript-sort-keys", "eslint-plugin-react-refresh", - "eslint-plugin-eslint-comments", + "eslint-plugin-jsonc", + "eslint-plugin-ban", + "eslint-plugin-tsdoc", + "eslint-plugin-vitest", + "eslint-plugin-nuxt", + "eslint-plugin-i", "eslint-plugin-css-modules", - "@angular-eslint/eslint-plugin-template", - "eslint-plugin-es", - "eslint-plugin-sort-class-members", - "eslint-plugin-header" + "eslint-plugin-no-secrets" ] }, { @@ -123,7 +123,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "suffixes": { "type": "array", @@ -136,7 +136,7 @@ ] } ], - "description": "Classes decorated with @Component must have suffix \"Component\" (or custom) in their name. See more at https://angular.io/styleguide#style-02-03\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-class-suffix.md" + "description": "Classes decorated with @Component must have suffix \"Component\" (or custom) in their name. See more at https://angular.dev/style-guide#style-02-03\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-class-suffix.md" }, "@angular-eslint/component-max-inline-declarations": { "oneOf": [ @@ -163,7 +163,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "template": { "minimum": 0, @@ -182,7 +182,7 @@ ] } ], - "description": "Enforces a maximum number of lines in inline template, styles and animations. See more at https://angular.io/guide/styleguide#style-05-04\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-max-inline-declarations.md" + "description": "Enforces a maximum number of lines in inline template, styles and animations. See more at https://angular.dev/style-guide#style-05-04\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-max-inline-declarations.md" }, "@angular-eslint/component-selector": { "oneOf": [ @@ -209,7 +209,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "type": { "oneOf": [ @@ -244,7 +244,40 @@ ] } ], - "description": "Component selectors should follow given naming rules. See more at https://angular.io/guide/styleguide#style-02-07, https://angular.io/guide/styleguide#style-05-02\n and https://angular.io/guide/styleguide#style-05-03.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-selector.md" + "description": "Component selectors should follow given naming rules. See more at https://angular.dev/style-guide#style-02-07, https://angular.dev/style-guide#style-05-02\n and https://angular.dev/style-guide#style-05-03.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/component-selector.md" + }, + "@angular-eslint/consistent-component-styles": { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + }, + { + "minItems": 2, + "maxItems": 2, + "type": "array", + "items": [ + { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + } + ] + }, + { + "type": "object", + "additionalProperties": true, + "properties": {} + } + ] + } + ], + "description": "Ensures consistent usage of `styles`/`styleUrls`/`styleUrl` within Component metadata\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/consistent-component-styles.md" }, "@angular-eslint/contextual-decorator": { "description": "Ensures that classes use contextual decorators in its body\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/contextual-decorator.md" @@ -277,7 +310,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "suffixes": { "type": "array", @@ -290,7 +323,7 @@ ] } ], - "description": "Classes decorated with @Directive must have suffix \"Directive\" (or custom) in their name. See more at https://angular.io/styleguide#style-02-03\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-class-suffix.md" + "description": "Classes decorated with @Directive must have suffix \"Directive\" (or custom) in their name. See more at https://angular.dev/style-guide#style-02-03\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-class-suffix.md" }, "@angular-eslint/directive-selector": { "oneOf": [ @@ -317,7 +350,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "type": { "oneOf": [ @@ -352,7 +385,10 @@ ] } ], - "description": "Directive selectors should follow given naming rules. See more at https://angular.io/guide/styleguide#style-02-06 and https://angular.io/guide/styleguide#style-02-08.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-selector.md" + "description": "Directive selectors should follow given naming rules. See more at https://angular.dev/style-guide#style-02-06 and https://angular.dev/style-guide#style-02-08.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/directive-selector.md" + }, + "@angular-eslint/no-async-lifecycle-method": { + "description": "Angular Lifecycle methods should not be async. Angular does not wait for async lifecycle but the code incorrectly suggests it does.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-async-lifecycle-method.md" }, "@angular-eslint/no-attribute-decorator": { "description": "The @Attribute decorator is used to obtain a single value for an attribute. This is a much less common use-case than getting a stream of values (using @Input), so often the @Attribute decorator is mistakenly used when @Input was what was intended. This rule disallows usage of @Attribute decorator altogether in order to prevent these mistakes.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-attribute-decorator.md" @@ -360,6 +396,9 @@ "@angular-eslint/no-conflicting-lifecycle": { "description": "Ensures that directives not implement conflicting lifecycle interfaces.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-conflicting-lifecycle.md" }, + "@angular-eslint/no-duplicates-in-metadata-arrays": { + "description": "Ensures that metadata arrays do not contain duplicate entries.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-duplicates-in-metadata-arrays.md" + }, "@angular-eslint/no-empty-lifecycle-method": { "description": "Disallows declaring empty lifecycle methods\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-empty-lifecycle-method.md" }, @@ -391,7 +430,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowStatic": { "type": "boolean", @@ -402,7 +441,7 @@ ] } ], - "description": "Disallows usage of the `host` metadata property. See more at https://angular.io/styleguide#style-06-03\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-host-metadata-property.md" + "description": "Disallows usage of the `host` metadata property. NOTE: This used to be recommended by the Angular Team, but now they recommend the exact opposite: https://github.com/angular/angular/issues/54284\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-host-metadata-property.md" }, "@angular-eslint/no-input-prefix": { "oneOf": [ @@ -429,7 +468,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "prefixes": { "type": "array", @@ -469,7 +508,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowedNames": { "type": "array", @@ -487,7 +526,7 @@ "description": "Ensures that input bindings are not aliased\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-input-rename.md" }, "@angular-eslint/no-inputs-metadata-property": { - "description": "Disallows usage of the `inputs` metadata property. See more at https://angular.io/styleguide#style-05-12\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-inputs-metadata-property.md" + "description": "Disallows usage of the `inputs` metadata property. See more at https://angular.dev/style-guide#style-05-12\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-inputs-metadata-property.md" }, "@angular-eslint/no-lifecycle-call": { "description": "Disallows explicit calls to lifecycle methods\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-lifecycle-call.md" @@ -496,19 +535,19 @@ "description": "Ensures that output bindings, including aliases, are not named as standard DOM events\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-native.md" }, "@angular-eslint/no-output-on-prefix": { - "description": "Ensures that output bindings, including aliases, are not named \"on\", nor prefixed with it. See more at https://angular.io/guide/styleguide#style-05-16\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-on-prefix.md" + "description": "Ensures that output bindings, including aliases, are not named \"on\", nor prefixed with it. See more at https://angular.dev/style-guide#style-05-16\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-on-prefix.md" }, "@angular-eslint/no-output-rename": { "description": "Ensures that output bindings are not aliased\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-output-rename.md" }, "@angular-eslint/no-outputs-metadata-property": { - "description": "Disallows usage of the `outputs` metadata property. See more at https://angular.io/styleguide#style-05-12\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-outputs-metadata-property.md" + "description": "Disallows usage of the `outputs` metadata property. See more at https://angular.dev/style-guide#style-05-12\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-outputs-metadata-property.md" }, "@angular-eslint/no-pipe-impure": { "description": "Disallows the declaration of impure pipes\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-pipe-impure.md" }, "@angular-eslint/no-queries-metadata-property": { - "description": "Disallows usage of the `queries` metadata property. See more at https://angular.io/styleguide#style-05-12.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-queries-metadata-property.md" + "description": "Disallows usage of the `queries` metadata property. See more at https://angular.dev/style-guide#style-05-12.\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/no-queries-metadata-property.md" }, "@angular-eslint/pipe-prefix": { "oneOf": [ @@ -535,7 +574,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "prefixes": { "type": "array", @@ -554,6 +593,9 @@ "@angular-eslint/prefer-on-push-component-change-detection": { "description": "Ensures component's `changeDetection` is set to `ChangeDetectionStrategy.OnPush`\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-on-push-component-change-detection.md" }, + "@angular-eslint/prefer-standalone": { + "description": "Ensures component, directive and pipe `standalone` property is set to `true` in the component decorator\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone.md" + }, "@angular-eslint/prefer-standalone-component": { "description": "Ensures component `standalone` property is set to `true` in the component decorator\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-standalone-component.md" }, @@ -561,7 +603,7 @@ "description": "Prefer to declare `@Output` as `readonly` since they are not supposed to be reassigned\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-output-readonly.md" }, "@angular-eslint/relative-url-prefix": { - "description": "The ./ and ../ prefix is standard syntax for relative URLs; don't depend on Angular's current ability to do without that prefix. See more at https://angular.io/styleguide#style-05-04\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md" + "description": "The ./ and ../ prefix is standard syntax for relative URLs; don't depend on Angular's current ability to do without that prefix. See more at https://angular.dev/style-guide#style-05-04\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/relative-url-prefix.md" }, "@angular-eslint/require-localize-metadata": { "oneOf": [ @@ -588,7 +630,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "requireDescription": { "type": "boolean", @@ -633,7 +675,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "locale": { "type": "string", @@ -678,7 +720,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "ignoreClassNamePattern": { "type": "string" @@ -691,7 +733,7 @@ "description": "Using the `providedIn` property makes `Injectables` tree-shakable\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-injectable-provided-in.md" }, "@angular-eslint/use-lifecycle-interface": { - "description": "Ensures that classes implement lifecycle interfaces corresponding to the declared lifecycle methods. See more at https://angular.io/styleguide#style-09-01\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-lifecycle-interface.md" + "description": "Ensures that classes implement lifecycle interfaces corresponding to the declared lifecycle methods. See more at https://angular.dev/style-guide#style-09-01\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-lifecycle-interface.md" }, "@angular-eslint/use-pipe-transform-interface": { "description": "Ensures that `Pipes` implement `PipeTransform` interface\nhttps://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/docs/rules/use-pipe-transform-interface.md" @@ -721,7 +763,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -753,7 +795,7 @@ ] } ], - "description": "Ensure imports point to a file/module that can be resolved.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-unresolved.md" + "description": "Ensure imports point to a file/module that can be resolved.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unresolved.md" }, "eslint-plugin-import/named": { "oneOf": [ @@ -780,7 +822,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -790,10 +832,10 @@ ] } ], - "description": "Ensure named imports correspond to a named export in the remote file.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/named.md" + "description": "Ensure named imports correspond to a named export in the remote file.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/named.md" }, "eslint-plugin-import/default": { - "description": "Ensure a default export is present, given a default import.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/default.md" + "description": "Ensure a default export is present, given a default import.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/default.md" }, "eslint-plugin-import/namespace": { "oneOf": [ @@ -820,7 +862,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowComputed": { "description": "If `false`, will report computed (and thus, un-lintable) references to namespace members.", @@ -832,7 +874,7 @@ ] } ], - "description": "Ensure imported namespaces contain dereferenced properties as they are dereferenced.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/namespace.md" + "description": "Ensure imported namespaces contain dereferenced properties as they are dereferenced.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/namespace.md" }, "eslint-plugin-import/no-namespace": { "oneOf": [ @@ -859,7 +901,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "ignore": { "type": "array", @@ -873,16 +915,16 @@ ] } ], - "description": "Forbid namespace (a.k.a. \"wildcard\" `*`) imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-namespace.md" + "description": "Forbid namespace (a.k.a. \"wildcard\" `*`) imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-namespace.md" }, "eslint-plugin-import/export": { - "description": "Forbid any invalid exports, i.e. re-export of the same name.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/export.md" + "description": "Forbid any invalid exports, i.e. re-export of the same name.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/export.md" }, "eslint-plugin-import/no-mutable-exports": { - "description": "Forbid the use of mutable exports with `var` or `let`.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-mutable-exports.md" + "description": "Forbid the use of mutable exports with `var` or `let`.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-mutable-exports.md" }, "eslint-plugin-import/extensions": { - "description": "Ensure consistent use of file extension within the import path.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/extensions.md" + "description": "Ensure consistent use of file extension within the import path.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/extensions.md" }, "eslint-plugin-import/no-restricted-paths": { "oneOf": [ @@ -909,7 +951,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "zones": { "type": "array", @@ -969,7 +1011,7 @@ ] } ], - "description": "Enforce which files can be imported in a given folder.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-restricted-paths.md" + "description": "Enforce which files can be imported in a given folder.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-restricted-paths.md" }, "eslint-plugin-import/no-internal-modules": { "oneOf": [ @@ -996,16 +1038,16 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Forbid importing the submodules of other modules.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-internal-modules.md" + "description": "Forbid importing the submodules of other modules.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-internal-modules.md" }, "eslint-plugin-import/group-exports": { - "description": "Prefer named exports to be grouped together in a single export declaration\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/group-exports.md" + "description": "Prefer named exports to be grouped together in a single export declaration\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/group-exports.md" }, "eslint-plugin-import/no-relative-packages": { "oneOf": [ @@ -1032,7 +1074,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -1056,7 +1098,7 @@ ] } ], - "description": "Forbid importing packages through relative paths.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-relative-packages.md" + "description": "Forbid importing packages through relative paths.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-relative-packages.md" }, "eslint-plugin-import/no-relative-parent-imports": { "oneOf": [ @@ -1083,7 +1125,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -1107,7 +1149,7 @@ ] } ], - "description": "Forbid importing modules from parent directories.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-relative-parent-imports.md" + "description": "Forbid importing modules from parent directories.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-relative-parent-imports.md" }, "eslint-plugin-import/consistent-type-specifier-style": { "oneOf": [ @@ -1134,16 +1176,16 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Enforce or ban the use of inline type-only markers for named imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/consistent-type-specifier-style.md" + "description": "Enforce or ban the use of inline type-only markers for named imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/consistent-type-specifier-style.md" }, "eslint-plugin-import/no-self-import": { - "description": "Forbid a module from importing itself.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-self-import.md" + "description": "Forbid a module from importing itself.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-self-import.md" }, "eslint-plugin-import/no-cycle": { "oneOf": [ @@ -1170,7 +1212,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -1217,16 +1259,16 @@ ] } ], - "description": "Forbid a module from importing a module with a dependency path back to itself.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-cycle.md" + "description": "Forbid a module from importing a module with a dependency path back to itself.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-cycle.md" }, "eslint-plugin-import/no-named-default": { - "description": "Forbid named default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-named-default.md" + "description": "Forbid named default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-default.md" }, "eslint-plugin-import/no-named-as-default": { - "description": "Forbid use of exported name as identifier of default export.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-named-as-default.md" + "description": "Forbid use of exported name as identifier of default export.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-as-default.md" }, "eslint-plugin-import/no-named-as-default-member": { - "description": "Forbid use of exported name as property of default export.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-named-as-default-member.md" + "description": "Forbid use of exported name as property of default export.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-as-default-member.md" }, "eslint-plugin-import/no-anonymous-default-export": { "oneOf": [ @@ -1253,7 +1295,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowArray": { "description": "If `false`, will report default export of an array", @@ -1292,7 +1334,7 @@ ] } ], - "description": "Forbid anonymous values as default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-anonymous-default-export.md" + "description": "Forbid anonymous values as default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-anonymous-default-export.md" }, "eslint-plugin-import/no-unused-modules": { "oneOf": [ @@ -1319,7 +1361,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "src": { "description": "files/paths to be analyzed (only for unused exports)", @@ -1352,13 +1394,13 @@ ] } ], - "description": "Forbid modules without exports, or exports without matching import in another module.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-unused-modules.md" + "description": "Forbid modules without exports, or exports without matching import in another module.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unused-modules.md" }, "eslint-plugin-import/no-commonjs": { - "description": "Forbid CommonJS `require` calls and `module.exports` or `exports.*`.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-commonjs.md" + "description": "Forbid CommonJS `require` calls and `module.exports` or `exports.*`.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-commonjs.md" }, "eslint-plugin-import/no-amd": { - "description": "Forbid AMD `require` and `define` calls.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-amd.md" + "description": "Forbid AMD `require` and `define` calls.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-amd.md" }, "eslint-plugin-import/no-duplicates": { "oneOf": [ @@ -1385,7 +1427,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "considerQueryString": { "type": "boolean" @@ -1398,7 +1440,7 @@ ] } ], - "description": "Forbid repeated import of the same module in multiple places.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-duplicates.md" + "description": "Forbid repeated import of the same module in multiple places.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-duplicates.md" }, "eslint-plugin-import/first": { "oneOf": [ @@ -1425,13 +1467,13 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Ensure all imports appear before other statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/first.md" + "description": "Ensure all imports appear before other statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/first.md" }, "eslint-plugin-import/max-dependencies": { "oneOf": [ @@ -1458,7 +1500,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "max": { "type": "number" @@ -1471,7 +1513,7 @@ ] } ], - "description": "Enforce the maximum number of dependencies a module can have.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/max-dependencies.md" + "description": "Enforce the maximum number of dependencies a module can have.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/max-dependencies.md" }, "eslint-plugin-import/no-extraneous-dependencies": { "oneOf": [ @@ -1498,7 +1540,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "devDependencies": { "oneOf": [ @@ -1574,7 +1616,7 @@ ] } ], - "description": "Forbid the use of extraneous packages.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-extraneous-dependencies.md" + "description": "Forbid the use of extraneous packages.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-extraneous-dependencies.md" }, "eslint-plugin-import/no-absolute-path": { "oneOf": [ @@ -1601,7 +1643,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -1625,7 +1667,7 @@ ] } ], - "description": "Forbid import of modules using absolute paths.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-absolute-path.md" + "description": "Forbid import of modules using absolute paths.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-absolute-path.md" }, "eslint-plugin-import/no-nodejs-modules": { "oneOf": [ @@ -1652,7 +1694,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allow": { "type": "array", @@ -1666,10 +1708,10 @@ ] } ], - "description": "Forbid Node.js builtin modules.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-nodejs-modules.md" + "description": "Forbid Node.js builtin modules.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-nodejs-modules.md" }, "eslint-plugin-import/no-webpack-loader-syntax": { - "description": "Forbid webpack loader syntax in imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-webpack-loader-syntax.md" + "description": "Forbid webpack loader syntax in imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-webpack-loader-syntax.md" }, "eslint-plugin-import/order": { "oneOf": [ @@ -1696,7 +1738,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "groups": { "type": "array" @@ -1777,7 +1819,7 @@ ] } ], - "description": "Enforce a convention in module import order.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/order.md" + "description": "Enforce a convention in module import order.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/order.md" }, "eslint-plugin-import/newline-after-import": { "oneOf": [ @@ -1804,7 +1846,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "count": { "type": "integer", @@ -1821,7 +1863,7 @@ ] } ], - "description": "Enforce a newline after import statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/newline-after-import.md" + "description": "Enforce a newline after import statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/newline-after-import.md" }, "eslint-plugin-import/prefer-default-export": { "oneOf": [ @@ -1848,7 +1890,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "target": { "type": "string", @@ -1860,13 +1902,13 @@ ] } ], - "description": "Prefer a default export if module exports a single name or multiple names.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/prefer-default-export.md" + "description": "Prefer a default export if module exports a single name or multiple names.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/prefer-default-export.md" }, "eslint-plugin-import/no-default-export": { - "description": "Forbid default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-default-export.md" + "description": "Forbid default exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-default-export.md" }, "eslint-plugin-import/no-named-export": { - "description": "Forbid named exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-named-export.md" + "description": "Forbid named exports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-named-export.md" }, "eslint-plugin-import/no-dynamic-require": { "oneOf": [ @@ -1893,7 +1935,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "esmodule": { "type": "boolean" @@ -1903,10 +1945,10 @@ ] } ], - "description": "Forbid `require()` calls with expressions.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-dynamic-require.md" + "description": "Forbid `require()` calls with expressions.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-dynamic-require.md" }, "eslint-plugin-import/unambiguous": { - "description": "Forbid potentially ambiguous parse goal (`script` vs. `module`).\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/unambiguous.md" + "description": "Forbid potentially ambiguous parse goal (`script` vs. `module`).\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/unambiguous.md" }, "eslint-plugin-import/no-unassigned-import": { "oneOf": [ @@ -1933,7 +1975,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "devDependencies": { "oneOf": [ @@ -1979,7 +2021,7 @@ ] } ], - "description": "Forbid unassigned imports\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-unassigned-import.md" + "description": "Forbid unassigned imports\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-unassigned-import.md" }, "eslint-plugin-import/no-useless-path-segments": { "oneOf": [ @@ -2006,7 +2048,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "commonjs": { "type": "boolean" @@ -2019,7 +2061,7 @@ ] } ], - "description": "Forbid unnecessary path segments in import and require statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-useless-path-segments.md" + "description": "Forbid unnecessary path segments in import and require statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-useless-path-segments.md" }, "eslint-plugin-import/dynamic-import-chunkname": { "oneOf": [ @@ -2046,7 +2088,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "importFunctions": { "type": "array", @@ -2063,7 +2105,7 @@ ] } ], - "description": "Enforce a leading comment with the webpackChunkName for dynamic imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/dynamic-import-chunkname.md" + "description": "Enforce a leading comment with the webpackChunkName for dynamic imports.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/dynamic-import-chunkname.md" }, "eslint-plugin-import/no-import-module-exports": { "oneOf": [ @@ -2090,7 +2132,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "exceptions": { "type": "array" @@ -2103,13 +2145,13 @@ "description": "Forbid import statements with CommonJS module.exports.\n" }, "eslint-plugin-import/no-empty-named-blocks": { - "description": "Forbid empty named import blocks.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-empty-named-blocks.md" + "description": "Forbid empty named import blocks.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-empty-named-blocks.md" }, "eslint-plugin-import/exports-last": { - "description": "Ensure all exports appear after other statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/exports-last.md" + "description": "Ensure all exports appear after other statements.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/exports-last.md" }, "eslint-plugin-import/no-deprecated": { - "description": "Forbid imported names marked with `@deprecated` documentation tag.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.0/docs/rules/no-deprecated.md" + "description": "Forbid imported names marked with `@deprecated` documentation tag.\nhttps://github.com/import-js/eslint-plugin-import/blob/v2.29.1/docs/rules/no-deprecated.md" }, "eslint-plugin-import/imports-first": { "oneOf": [ @@ -2136,7 +2178,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -2169,7 +2211,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "sortCharacterClasses": { "type": "boolean", @@ -2180,7 +2222,7 @@ ] } ], - "description": "Improve regexes by making them shorter, consistent, and safer.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/better-regex.md" + "description": "Improve regexes by making them shorter, consistent, and safer.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/better-regex.md" }, "eslint-plugin-unicorn/catch-error-name": { "oneOf": [ @@ -2207,7 +2249,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "name": { "type": "string" @@ -2221,10 +2263,13 @@ ] } ], - "description": "Enforce a specific parameter name in catch clauses.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/catch-error-name.md" + "description": "Enforce a specific parameter name in catch clauses.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/catch-error-name.md" }, "eslint-plugin-unicorn/consistent-destructuring": { - "description": "Use destructured variables over properties.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/consistent-destructuring.md" + "description": "Use destructured variables over properties.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-destructuring.md" + }, + "eslint-plugin-unicorn/consistent-empty-array-spread": { + "description": "Prefer consistent types when spreading a ternary in an array literal.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-empty-array-spread.md" }, "eslint-plugin-unicorn/consistent-function-scoping": { "oneOf": [ @@ -2251,7 +2296,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkArrowFunctions": { "type": "boolean", @@ -2262,19 +2307,19 @@ ] } ], - "description": "Move function definitions to the highest possible scope.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/consistent-function-scoping.md" + "description": "Move function definitions to the highest possible scope.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/consistent-function-scoping.md" }, "eslint-plugin-unicorn/custom-error-definition": { - "description": "Enforce correct `Error` subclassing.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/custom-error-definition.md" + "description": "Enforce correct `Error` subclassing.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/custom-error-definition.md" }, "eslint-plugin-unicorn/empty-brace-spaces": { - "description": "Enforce no spaces between braces.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/empty-brace-spaces.md" + "description": "Enforce no spaces between braces.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/empty-brace-spaces.md" }, "eslint-plugin-unicorn/error-message": { - "description": "Enforce passing a `message` value when creating a built-in error.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/error-message.md" + "description": "Enforce passing a `message` value when creating a built-in error.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/error-message.md" }, "eslint-plugin-unicorn/escape-case": { - "description": "Require escape sequences to use uppercase values.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/escape-case.md" + "description": "Require escape sequences to use uppercase values.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/escape-case.md" }, "eslint-plugin-unicorn/expiring-todo-comments": { "oneOf": [ @@ -2301,7 +2346,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "terms": { "type": "array", @@ -2330,7 +2375,7 @@ ] } ], - "description": "Add expiration conditions to TODO comments.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/expiring-todo-comments.md" + "description": "Add expiration conditions to TODO comments.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/expiring-todo-comments.md" }, "eslint-plugin-unicorn/explicit-length-check": { "oneOf": [ @@ -2357,7 +2402,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "non-zero": { "enum": ["greater-than", "not-equal"], @@ -2368,7 +2413,7 @@ ] } ], - "description": "Enforce explicitly comparing the `length` or `size` property of a value.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/explicit-length-check.md" + "description": "Enforce explicitly comparing the `length` or `size` property of a value.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/explicit-length-check.md" }, "eslint-plugin-unicorn/filename-case": { "oneOf": [ @@ -2395,31 +2440,34 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Enforce a case style for filenames.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/filename-case.md" + "description": "Enforce a case style for filenames.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/filename-case.md" }, "eslint-plugin-unicorn/import-style": { - "description": "Enforce specific import styles per module.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/import-style.md" + "description": "Enforce specific import styles per module.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/import-style.md" }, "eslint-plugin-unicorn/new-for-builtins": { - "description": "Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/new-for-builtins.md" + "description": "Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/new-for-builtins.md" }, "eslint-plugin-unicorn/no-abusive-eslint-disable": { - "description": "Enforce specifying rules to disable in `eslint-disable` comments.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-abusive-eslint-disable.md" + "description": "Enforce specifying rules to disable in `eslint-disable` comments.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-abusive-eslint-disable.md" + }, + "eslint-plugin-unicorn/no-anonymous-default-export": { + "description": "Disallow anonymous functions and classes as the default export.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-anonymous-default-export.md" }, "eslint-plugin-unicorn/no-array-callback-reference": { - "description": "Prevent passing a function reference directly to iterator methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-array-callback-reference.md" + "description": "Prevent passing a function reference directly to iterator methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-callback-reference.md" }, "eslint-plugin-unicorn/no-array-for-each": { - "description": "Prefer `for…of` over the `forEach` method.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-array-for-each.md" + "description": "Prefer `for…of` over the `forEach` method.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-for-each.md" }, "eslint-plugin-unicorn/no-array-method-this-argument": { - "description": "Disallow using the `this` argument in array methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-array-method-this-argument.md" + "description": "Disallow using the `this` argument in array methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-method-this-argument.md" }, "eslint-plugin-unicorn/no-array-push-push": { "oneOf": [ @@ -2446,7 +2494,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "ignore": { "type": "array", @@ -2457,7 +2505,7 @@ ] } ], - "description": "Enforce combining multiple `Array#push()` into one call.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-array-push-push.md" + "description": "Enforce combining multiple `Array#push()` into one call.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-push-push.md" }, "eslint-plugin-unicorn/no-array-reduce": { "oneOf": [ @@ -2484,7 +2532,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowSimpleOperations": { "type": "boolean", @@ -2495,31 +2543,37 @@ ] } ], - "description": "Disallow `Array#reduce()` and `Array#reduceRight()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-array-reduce.md" + "description": "Disallow `Array#reduce()` and `Array#reduceRight()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-array-reduce.md" }, "eslint-plugin-unicorn/no-await-expression-member": { - "description": "Disallow member access from await expression.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-await-expression-member.md" + "description": "Disallow member access from await expression.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-await-expression-member.md" + }, + "eslint-plugin-unicorn/no-await-in-promise-methods": { + "description": "Disallow using `await` in `Promise` method parameters.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-await-in-promise-methods.md" }, "eslint-plugin-unicorn/no-console-spaces": { - "description": "Do not use leading/trailing space between `console.log` parameters.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-console-spaces.md" + "description": "Do not use leading/trailing space between `console.log` parameters.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-console-spaces.md" }, "eslint-plugin-unicorn/no-document-cookie": { - "description": "Do not use `document.cookie` directly.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-document-cookie.md" + "description": "Do not use `document.cookie` directly.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-document-cookie.md" }, "eslint-plugin-unicorn/no-empty-file": { - "description": "Disallow empty files.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-empty-file.md" + "description": "Disallow empty files.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-empty-file.md" }, "eslint-plugin-unicorn/no-for-loop": { - "description": "Do not use a `for` loop that can be replaced with a `for-of` loop.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-for-loop.md" + "description": "Do not use a `for` loop that can be replaced with a `for-of` loop.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-for-loop.md" }, "eslint-plugin-unicorn/no-hex-escape": { - "description": "Enforce the use of Unicode escapes instead of hexadecimal escapes.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-hex-escape.md" + "description": "Enforce the use of Unicode escapes instead of hexadecimal escapes.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-hex-escape.md" }, "eslint-plugin-unicorn/no-instanceof-array": { - "description": "Require `Array.isArray()` instead of `instanceof Array`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-instanceof-array.md" + "description": "Require `Array.isArray()` instead of `instanceof Array`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-instanceof-array.md" + }, + "eslint-plugin-unicorn/no-invalid-fetch-options": { + "description": "Disallow invalid options in `fetch()` and `new Request()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-invalid-fetch-options.md" }, "eslint-plugin-unicorn/no-invalid-remove-event-listener": { - "description": "Prevent calling `EventTarget#removeEventListener()` with the result of an expression.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-invalid-remove-event-listener.md" + "description": "Prevent calling `EventTarget#removeEventListener()` with the result of an expression.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-invalid-remove-event-listener.md" }, "eslint-plugin-unicorn/no-keyword-prefix": { "oneOf": [ @@ -2546,7 +2600,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "disallowedPrefixes": { "type": "array", @@ -2570,22 +2624,28 @@ ] } ], - "description": "Disallow identifiers starting with `new` or `class`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-keyword-prefix.md" + "description": "Disallow identifiers starting with `new` or `class`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-keyword-prefix.md" }, "eslint-plugin-unicorn/no-lonely-if": { - "description": "Disallow `if` statements as the only statement in `if` blocks without `else`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-lonely-if.md" + "description": "Disallow `if` statements as the only statement in `if` blocks without `else`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-lonely-if.md" + }, + "eslint-plugin-unicorn/no-magic-array-flat-depth": { + "description": "Disallow a magic number as the `depth` argument in `Array#flat(…).`\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-magic-array-flat-depth.md" }, "eslint-plugin-unicorn/no-negated-condition": { - "description": "Disallow negated conditions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-negated-condition.md" + "description": "Disallow negated conditions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-negated-condition.md" + }, + "eslint-plugin-unicorn/no-negation-in-equality-check": { + "description": "Disallow negated expression in equality check.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-negation-in-equality-check.md" }, "eslint-plugin-unicorn/no-nested-ternary": { - "description": "Disallow nested ternary expressions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-nested-ternary.md" + "description": "Disallow nested ternary expressions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-nested-ternary.md" }, "eslint-plugin-unicorn/no-new-array": { - "description": "Disallow `new Array()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-new-array.md" + "description": "Disallow `new Array()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-new-array.md" }, "eslint-plugin-unicorn/no-new-buffer": { - "description": "Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-new-buffer.md" + "description": "Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-new-buffer.md" }, "eslint-plugin-unicorn/no-null": { "oneOf": [ @@ -2612,7 +2672,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkStrictEquality": { "type": "boolean", @@ -2623,22 +2683,25 @@ ] } ], - "description": "Disallow the use of the `null` literal.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-null.md" + "description": "Disallow the use of the `null` literal.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-null.md" }, "eslint-plugin-unicorn/no-object-as-default-parameter": { - "description": "Disallow the use of objects as default parameters.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-object-as-default-parameter.md" + "description": "Disallow the use of objects as default parameters.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-object-as-default-parameter.md" }, "eslint-plugin-unicorn/no-process-exit": { - "description": "Disallow `process.exit()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-process-exit.md" + "description": "Disallow `process.exit()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-process-exit.md" + }, + "eslint-plugin-unicorn/no-single-promise-in-promise-methods": { + "description": "Disallow passing single-element arrays to `Promise` methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-single-promise-in-promise-methods.md" }, "eslint-plugin-unicorn/no-static-only-class": { - "description": "Disallow classes that only have static members.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-static-only-class.md" + "description": "Disallow classes that only have static members.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-static-only-class.md" }, "eslint-plugin-unicorn/no-thenable": { - "description": "Disallow `then` property.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-thenable.md" + "description": "Disallow `then` property.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-thenable.md" }, "eslint-plugin-unicorn/no-this-assignment": { - "description": "Disallow assigning `this` to a variable.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-this-assignment.md" + "description": "Disallow assigning `this` to a variable.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-this-assignment.md" }, "eslint-plugin-unicorn/no-typeof-undefined": { "oneOf": [ @@ -2665,7 +2728,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkGlobalVariables": { "type": "boolean", @@ -2676,34 +2739,81 @@ ] } ], - "description": "Disallow comparing `undefined` using `typeof`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-typeof-undefined.md" + "description": "Disallow comparing `undefined` using `typeof`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-typeof-undefined.md" }, "eslint-plugin-unicorn/no-unnecessary-await": { - "description": "Disallow awaiting non-promise values.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-unnecessary-await.md" + "description": "Disallow awaiting non-promise values.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unnecessary-await.md" + }, + "eslint-plugin-unicorn/no-unnecessary-polyfills": { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + }, + { + "minItems": 2, + "maxItems": 2, + "type": "array", + "items": [ + { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + } + ] + }, + { + "type": "object", + "additionalProperties": true, + "properties": { + "targets": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array" + }, + { + "type": "object" + } + ] + } + } + } + ] + } + ], + "description": "Enforce the use of built-in methods instead of unnecessary polyfills.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unnecessary-polyfills.md" }, "eslint-plugin-unicorn/no-unreadable-array-destructuring": { - "description": "Disallow unreadable array destructuring.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-unreadable-array-destructuring.md" + "description": "Disallow unreadable array destructuring.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unreadable-array-destructuring.md" }, "eslint-plugin-unicorn/no-unreadable-iife": { - "description": "Disallow unreadable IIFEs.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-unreadable-iife.md" + "description": "Disallow unreadable IIFEs.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unreadable-iife.md" }, "eslint-plugin-unicorn/no-unused-properties": { - "description": "Disallow unused object properties.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-unused-properties.md" + "description": "Disallow unused object properties.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-unused-properties.md" }, "eslint-plugin-unicorn/no-useless-fallback-in-spread": { - "description": "Disallow useless fallback when spreading in object literals.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-fallback-in-spread.md" + "description": "Disallow useless fallback when spreading in object literals.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-fallback-in-spread.md" }, "eslint-plugin-unicorn/no-useless-length-check": { - "description": "Disallow useless array length check.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-length-check.md" + "description": "Disallow useless array length check.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-length-check.md" }, "eslint-plugin-unicorn/no-useless-promise-resolve-reject": { - "description": "Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-promise-resolve-reject.md" + "description": "Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-promise-resolve-reject.md" }, "eslint-plugin-unicorn/no-useless-spread": { - "description": "Disallow unnecessary spread.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-spread.md" + "description": "Disallow unnecessary spread.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-spread.md" }, "eslint-plugin-unicorn/no-useless-switch-case": { - "description": "Disallow useless case in switch statements.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-switch-case.md" + "description": "Disallow useless case in switch statements.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-switch-case.md" }, "eslint-plugin-unicorn/no-useless-undefined": { "oneOf": [ @@ -2730,23 +2840,26 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkArguments": { "type": "boolean" + }, + "checkArrowFunctionBody": { + "type": "boolean" } } } ] } ], - "description": "Disallow useless `undefined`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-useless-undefined.md" + "description": "Disallow useless `undefined`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-useless-undefined.md" }, "eslint-plugin-unicorn/no-zero-fractions": { - "description": "Disallow number literals with zero fractions or dangling dots.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/no-zero-fractions.md" + "description": "Disallow number literals with zero fractions or dangling dots.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/no-zero-fractions.md" }, "eslint-plugin-unicorn/number-literal-case": { - "description": "Enforce proper case for numeric literals.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/number-literal-case.md" + "description": "Enforce proper case for numeric literals.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/number-literal-case.md" }, "eslint-plugin-unicorn/numeric-separators-style": { "oneOf": [ @@ -2773,7 +2886,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "binary": { "type": "object", @@ -2860,7 +2973,7 @@ ] } ], - "description": "Enforce the style of numeric separators by correctly grouping digits.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/numeric-separators-style.md" + "description": "Enforce the style of numeric separators by correctly grouping digits.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/numeric-separators-style.md" }, "eslint-plugin-unicorn/prefer-add-event-listener": { "oneOf": [ @@ -2887,7 +3000,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "excludedPackages": { "type": "array", @@ -2901,7 +3014,7 @@ ] } ], - "description": "Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-add-event-listener.md" + "description": "Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-add-event-listener.md" }, "eslint-plugin-unicorn/prefer-array-find": { "oneOf": [ @@ -2928,21 +3041,21 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkFromLast": { "type": "boolean", - "default": false + "default": true } } } ] } ], - "description": "Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-array-find.md" + "description": "Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-find.md" }, "eslint-plugin-unicorn/prefer-array-flat-map": { - "description": "Prefer `.flatMap(…)` over `.map(…).flat()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-array-flat-map.md" + "description": "Prefer `.flatMap(…)` over `.map(…).flat()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-flat-map.md" }, "eslint-plugin-unicorn/prefer-array-flat": { "oneOf": [ @@ -2969,7 +3082,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "functions": { "type": "array", @@ -2980,13 +3093,13 @@ ] } ], - "description": "Prefer `Array#flat()` over legacy techniques to flatten arrays.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-array-flat.md" + "description": "Prefer `Array#flat()` over legacy techniques to flatten arrays.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-flat.md" }, "eslint-plugin-unicorn/prefer-array-index-of": { - "description": "Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-array-index-of.md" + "description": "Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-index-of.md" }, "eslint-plugin-unicorn/prefer-array-some": { - "description": "Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast}(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-array-some.md" + "description": "Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-array-some.md" }, "eslint-plugin-unicorn/prefer-at": { "oneOf": [ @@ -3013,7 +3126,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "getLastElementFunctions": { "type": "array", @@ -3028,34 +3141,34 @@ ] } ], - "description": "Prefer `.at()` method for index access and `String#charAt()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-at.md" + "description": "Prefer `.at()` method for index access and `String#charAt()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-at.md" }, "eslint-plugin-unicorn/prefer-blob-reading-methods": { - "description": "Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-blob-reading-methods.md" + "description": "Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-blob-reading-methods.md" }, "eslint-plugin-unicorn/prefer-code-point": { - "description": "Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-code-point.md" + "description": "Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-code-point.md" }, "eslint-plugin-unicorn/prefer-date-now": { - "description": "Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-date-now.md" + "description": "Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-date-now.md" }, "eslint-plugin-unicorn/prefer-default-parameters": { - "description": "Prefer default parameters over reassignment.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-default-parameters.md" + "description": "Prefer default parameters over reassignment.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-default-parameters.md" }, "eslint-plugin-unicorn/prefer-dom-node-append": { - "description": "Prefer `Node#append()` over `Node#appendChild()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-dom-node-append.md" + "description": "Prefer `Node#append()` over `Node#appendChild()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-append.md" }, "eslint-plugin-unicorn/prefer-dom-node-dataset": { - "description": "Prefer using `.dataset` on DOM elements over calling attribute methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-dom-node-dataset.md" + "description": "Prefer using `.dataset` on DOM elements over calling attribute methods.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-dataset.md" }, "eslint-plugin-unicorn/prefer-dom-node-remove": { - "description": "Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-dom-node-remove.md" + "description": "Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-remove.md" }, "eslint-plugin-unicorn/prefer-dom-node-text-content": { - "description": "Prefer `.textContent` over `.innerText`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-dom-node-text-content.md" + "description": "Prefer `.textContent` over `.innerText`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-dom-node-text-content.md" }, "eslint-plugin-unicorn/prefer-event-target": { - "description": "Prefer `EventTarget` over `EventEmitter`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-event-target.md" + "description": "Prefer `EventTarget` over `EventEmitter`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-event-target.md" }, "eslint-plugin-unicorn/prefer-export-from": { "oneOf": [ @@ -3082,7 +3195,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "ignoreUsedVariables": { "type": "boolean", @@ -3093,40 +3206,40 @@ ] } ], - "description": "Prefer `export…from` when re-exporting.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-export-from.md" + "description": "Prefer `export…from` when re-exporting.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-export-from.md" }, "eslint-plugin-unicorn/prefer-includes": { - "description": "Prefer `.includes()` over `.indexOf()` and `Array#some()` when checking for existence or non-existence.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-includes.md" + "description": "Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-includes.md" }, "eslint-plugin-unicorn/prefer-json-parse-buffer": { - "description": "Prefer reading a JSON file as a buffer.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-json-parse-buffer.md" + "description": "Prefer reading a JSON file as a buffer.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-json-parse-buffer.md" }, "eslint-plugin-unicorn/prefer-keyboard-event-key": { - "description": "Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-keyboard-event-key.md" + "description": "Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-keyboard-event-key.md" }, "eslint-plugin-unicorn/prefer-logical-operator-over-ternary": { - "description": "Prefer using a logical operator over a ternary.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-logical-operator-over-ternary.md" + "description": "Prefer using a logical operator over a ternary.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-logical-operator-over-ternary.md" }, "eslint-plugin-unicorn/prefer-math-trunc": { - "description": "Enforce the use of `Math.trunc` instead of bitwise operators.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-math-trunc.md" + "description": "Enforce the use of `Math.trunc` instead of bitwise operators.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-math-trunc.md" }, "eslint-plugin-unicorn/prefer-modern-dom-apis": { - "description": "Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-modern-dom-apis.md" + "description": "Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-modern-dom-apis.md" }, "eslint-plugin-unicorn/prefer-modern-math-apis": { - "description": "Prefer modern `Math` APIs over legacy patterns.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-modern-math-apis.md" + "description": "Prefer modern `Math` APIs over legacy patterns.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-modern-math-apis.md" }, "eslint-plugin-unicorn/prefer-module": { - "description": "Prefer JavaScript modules (ESM) over CommonJS.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-module.md" + "description": "Prefer JavaScript modules (ESM) over CommonJS.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-module.md" }, "eslint-plugin-unicorn/prefer-native-coercion-functions": { - "description": "Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-native-coercion-functions.md" + "description": "Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-native-coercion-functions.md" }, "eslint-plugin-unicorn/prefer-negative-index": { - "description": "Prefer negative index over `.length - index` when possible.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-negative-index.md" + "description": "Prefer negative index over `.length - index` when possible.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-negative-index.md" }, "eslint-plugin-unicorn/prefer-node-protocol": { - "description": "Prefer using the `node:` protocol when importing Node.js builtin modules.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-node-protocol.md" + "description": "Prefer using the `node:` protocol when importing Node.js builtin modules.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-node-protocol.md" }, "eslint-plugin-unicorn/prefer-number-properties": { "oneOf": [ @@ -3153,9 +3266,13 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "checkInfinity": { + "type": "boolean", + "default": false + }, + "checkNaN": { "type": "boolean", "default": true } @@ -3164,7 +3281,7 @@ ] } ], - "description": "Prefer `Number` static properties over global ones.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-number-properties.md" + "description": "Prefer `Number` static properties over global ones.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-number-properties.md" }, "eslint-plugin-unicorn/prefer-object-from-entries": { "oneOf": [ @@ -3191,7 +3308,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "functions": { "type": "array", @@ -3202,45 +3319,48 @@ ] } ], - "description": "Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-object-from-entries.md" + "description": "Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-object-from-entries.md" }, "eslint-plugin-unicorn/prefer-optional-catch-binding": { - "description": "Prefer omitting the `catch` binding parameter.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-optional-catch-binding.md" + "description": "Prefer omitting the `catch` binding parameter.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-optional-catch-binding.md" }, "eslint-plugin-unicorn/prefer-prototype-methods": { - "description": "Prefer borrowing methods from the prototype instead of the instance.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-prototype-methods.md" + "description": "Prefer borrowing methods from the prototype instead of the instance.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-prototype-methods.md" }, "eslint-plugin-unicorn/prefer-query-selector": { - "description": "Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-query-selector.md" + "description": "Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-query-selector.md" }, "eslint-plugin-unicorn/prefer-reflect-apply": { - "description": "Prefer `Reflect.apply()` over `Function#apply()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-reflect-apply.md" + "description": "Prefer `Reflect.apply()` over `Function#apply()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-reflect-apply.md" }, "eslint-plugin-unicorn/prefer-regexp-test": { - "description": "Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-regexp-test.md" + "description": "Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-regexp-test.md" }, "eslint-plugin-unicorn/prefer-set-has": { - "description": "Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-set-has.md" + "description": "Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-set-has.md" }, "eslint-plugin-unicorn/prefer-set-size": { - "description": "Prefer using `Set#size` instead of `Array#length`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-set-size.md" + "description": "Prefer using `Set#size` instead of `Array#length`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-set-size.md" }, "eslint-plugin-unicorn/prefer-spread": { - "description": "Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-spread.md" + "description": "Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-spread.md" + }, + "eslint-plugin-unicorn/prefer-string-raw": { + "description": "Prefer using the `String.raw` tag to avoid escaping `\\`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-raw.md" }, "eslint-plugin-unicorn/prefer-string-replace-all": { - "description": "Prefer `String#replaceAll()` over regex searches with the global flag.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-string-replace-all.md" + "description": "Prefer `String#replaceAll()` over regex searches with the global flag.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-replace-all.md" }, "eslint-plugin-unicorn/prefer-string-slice": { - "description": "Prefer `String#slice()` over `String#substr()` and `String#substring()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-string-slice.md" + "description": "Prefer `String#slice()` over `String#substr()` and `String#substring()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-slice.md" }, "eslint-plugin-unicorn/prefer-string-starts-ends-with": { - "description": "Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-string-starts-ends-with.md" + "description": "Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-starts-ends-with.md" }, "eslint-plugin-unicorn/prefer-string-trim-start-end": { - "description": "Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-string-trim-start-end.md" + "description": "Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-string-trim-start-end.md" }, - "eslint-plugin-unicorn/prefer-switch": { + "eslint-plugin-unicorn/prefer-structured-clone": { "oneOf": [ { "$ref": "#/definitions/ruleNumber" @@ -3265,29 +3385,20 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { - "minimumCases": { - "type": "integer", - "minimum": 2, - "default": 3 - }, - "emptyDefaultCase": { - "enum": [ - "no-default-comment", - "do-nothing-comment", - "no-default-case" - ], - "default": "no-default-comment" + "functions": { + "type": "array", + "uniqueItems": true } } } ] } ], - "description": "Prefer `switch` over multiple `else-if`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-switch.md" + "description": "Prefer using `structuredClone` to create a deep clone.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-structured-clone.md" }, - "eslint-plugin-unicorn/prefer-ternary": { + "eslint-plugin-unicorn/prefer-switch": { "oneOf": [ { "$ref": "#/definitions/ruleNumber" @@ -3312,26 +3423,73 @@ }, { "type": "object", - "additionalProperties": false, - "properties": {} - } - ] - } - ], - "description": "Prefer ternary expressions over simple `if-else` statements.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-ternary.md" - }, - "eslint-plugin-unicorn/prefer-top-level-await": { - "description": "Prefer top-level await over top-level promises and async function calls.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-top-level-await.md" - }, - "eslint-plugin-unicorn/prefer-type-error": { - "description": "Enforce throwing `TypeError` in type checking conditions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prefer-type-error.md" - }, - "eslint-plugin-unicorn/prevent-abbreviations": { - "description": "Prevent abbreviations.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/prevent-abbreviations.md" - }, - "eslint-plugin-unicorn/relative-url-style": { - "oneOf": [ - { + "additionalProperties": true, + "properties": { + "minimumCases": { + "type": "integer", + "minimum": 2, + "default": 3 + }, + "emptyDefaultCase": { + "enum": [ + "no-default-comment", + "do-nothing-comment", + "no-default-case" + ], + "default": "no-default-comment" + } + } + } + ] + } + ], + "description": "Prefer `switch` over multiple `else-if`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-switch.md" + }, + "eslint-plugin-unicorn/prefer-ternary": { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + }, + { + "minItems": 2, + "maxItems": 2, + "type": "array", + "items": [ + { + "oneOf": [ + { + "$ref": "#/definitions/ruleNumber" + }, + { + "$ref": "#/definitions/ruleString" + } + ] + }, + { + "type": "object", + "additionalProperties": true, + "properties": {} + } + ] + } + ], + "description": "Prefer ternary expressions over simple `if-else` statements.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-ternary.md" + }, + "eslint-plugin-unicorn/prefer-top-level-await": { + "description": "Prefer top-level await over top-level promises and async function calls.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-top-level-await.md" + }, + "eslint-plugin-unicorn/prefer-type-error": { + "description": "Enforce throwing `TypeError` in type checking conditions.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prefer-type-error.md" + }, + "eslint-plugin-unicorn/prevent-abbreviations": { + "description": "Prevent abbreviations.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/prevent-abbreviations.md" + }, + "eslint-plugin-unicorn/relative-url-style": { + "oneOf": [ + { "$ref": "#/definitions/ruleNumber" }, { @@ -3354,22 +3512,22 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Enforce consistent relative URL style.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/relative-url-style.md" + "description": "Enforce consistent relative URL style.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/relative-url-style.md" }, "eslint-plugin-unicorn/require-array-join-separator": { - "description": "Enforce using the separator argument with `Array#join()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/require-array-join-separator.md" + "description": "Enforce using the separator argument with `Array#join()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-array-join-separator.md" }, "eslint-plugin-unicorn/require-number-to-fixed-digits-argument": { - "description": "Enforce using the digits argument with `Number#toFixed()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/require-number-to-fixed-digits-argument.md" + "description": "Enforce using the digits argument with `Number#toFixed()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-number-to-fixed-digits-argument.md" }, "eslint-plugin-unicorn/require-post-message-target-origin": { - "description": "Enforce using the `targetOrigin` argument with `window.postMessage()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/require-post-message-target-origin.md" + "description": "Enforce using the `targetOrigin` argument with `window.postMessage()`.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/require-post-message-target-origin.md" }, "eslint-plugin-unicorn/string-content": { "oneOf": [ @@ -3396,7 +3554,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "patterns": { "type": "object", @@ -3429,7 +3587,7 @@ ] } ], - "description": "Enforce better string content.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/string-content.md" + "description": "Enforce better string content.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/string-content.md" }, "eslint-plugin-unicorn/switch-case-braces": { "oneOf": [ @@ -3456,13 +3614,13 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] } ], - "description": "Enforce consistent brace style for `case` clauses.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/switch-case-braces.md" + "description": "Enforce consistent brace style for `case` clauses.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/switch-case-braces.md" }, "eslint-plugin-unicorn/template-indent": { "oneOf": [ @@ -3489,7 +3647,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "indent": { "oneOf": [ @@ -3536,64 +3694,64 @@ ] } ], - "description": "Fix whitespace-insensitive template indentation.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/template-indent.md" + "description": "Fix whitespace-insensitive template indentation.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/template-indent.md" }, "eslint-plugin-unicorn/text-encoding-identifier-case": { - "description": "Enforce consistent case for text encoding identifiers.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/text-encoding-identifier-case.md" + "description": "Enforce consistent case for text encoding identifiers.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/text-encoding-identifier-case.md" }, "eslint-plugin-unicorn/throw-new-error": { - "description": "Require `new` when throwing an error.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/rules/throw-new-error.md" + "description": "Require `new` when creating an error.\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/throw-new-error.md" }, "eslint-plugin-unicorn/import-index": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#import-index" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#import-index" }, "eslint-plugin-unicorn/no-array-instanceof": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#no-array-instanceof" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-array-instanceof" }, "eslint-plugin-unicorn/no-fn-reference-in-iterator": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#no-fn-reference-in-iterator" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-fn-reference-in-iterator" }, "eslint-plugin-unicorn/no-reduce": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#no-reduce" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-reduce" }, "eslint-plugin-unicorn/no-unsafe-regex": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#no-unsafe-regex" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#no-unsafe-regex" }, "eslint-plugin-unicorn/prefer-dataset": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-dataset" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-dataset" }, "eslint-plugin-unicorn/prefer-event-key": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-event-key" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-event-key" }, "eslint-plugin-unicorn/prefer-exponentiation-operator": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-exponentiation-operator" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-exponentiation-operator" }, "eslint-plugin-unicorn/prefer-flat-map": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-flat-map" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-flat-map" }, "eslint-plugin-unicorn/prefer-node-append": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-node-append" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-node-append" }, "eslint-plugin-unicorn/prefer-node-remove": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-node-remove" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-node-remove" }, "eslint-plugin-unicorn/prefer-object-has-own": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-object-has-own" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-object-has-own" }, "eslint-plugin-unicorn/prefer-replace-all": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-replace-all" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-replace-all" }, "eslint-plugin-unicorn/prefer-starts-ends-with": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-starts-ends-with" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-starts-ends-with" }, "eslint-plugin-unicorn/prefer-text-content": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-text-content" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-text-content" }, "eslint-plugin-unicorn/prefer-trim-start-end": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#prefer-trim-start-end" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#prefer-trim-start-end" }, "eslint-plugin-unicorn/regex-shorthand": { - "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v49.0.0/docs/deprecated-rules.md#regex-shorthand" + "description": "\nhttps://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/deprecated-rules.md#regex-shorthand" }, "eslint-plugin-vue/array-bracket-newline": { "oneOf": [ @@ -3620,7 +3778,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -3653,7 +3811,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -3689,7 +3847,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "before": { "type": "boolean", @@ -3731,7 +3889,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -3764,7 +3922,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "order": { "type": "array", @@ -3850,7 +4008,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -3883,7 +4041,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "order": { "type": "array", @@ -3935,7 +4093,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -3968,7 +4126,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "singleline": { "enum": ["always", "never", "consistent", "ignore"] @@ -4034,7 +4192,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4067,7 +4225,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "ignoreDestructuring": { "type": "boolean", @@ -4129,7 +4287,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "before": { "type": "boolean", @@ -4171,7 +4329,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4204,7 +4362,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "reportUnusedDisableDirectives": { "type": "boolean" @@ -4241,7 +4399,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4274,7 +4432,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4307,7 +4465,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4340,7 +4498,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4373,7 +4531,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "order": { "type": "array", @@ -4428,7 +4586,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4461,7 +4619,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "order": { "type": "array", @@ -4470,10 +4628,14 @@ "defineEmits", "defineProps", "defineOptions", - "defineSlots" + "defineSlots", + "defineModel" ] }, "uniqueItems": true + }, + "defineExposeLast": { + "type": "boolean" } } } @@ -4507,7 +4669,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4540,7 +4702,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": {} } ] @@ -4573,7 +4735,7 @@ }, { "type": "object", - "additionalProperties": false, + "additionalProperties": true, "properties": { "allowKeywords": { "type": "boolean", @@ -4590,6 +4752,49 @@ ], "description": "Enforce dot notation whenever possible in `