SERVER-100116 Set up rules_lint with eslint (#32036)

GitOrigin-RevId: b358136eaef9eec27470065d6254112867b56245
This commit is contained in:
Zack Winter 2025-02-06 13:41:36 -08:00 committed by MongoDB Bot
parent 4863cb9653
commit c47bf8d1ef
25 changed files with 854 additions and 481 deletions

2
.github/CODEOWNERS vendored
View File

@ -14,7 +14,6 @@ OWNERS.yml @10gen/server-root-ownership @svc-auto-approve-bot
.clang-format @10gen/server-programmability @svc-auto-approve-bot
.clang-tidy.in @10gen/server-programmability @svc-auto-approve-bot
.eslintignore @10gen/devprod-correctness @svc-auto-approve-bot
.eslintrc.yml @10gen/devprod-correctness @svc-auto-approve-bot
.gitignore @10gen/devprod-build @svc-auto-approve-bot
.mypy.ini @10gen/devprod-build @10gen/devprod-correctness @svc-auto-approve-bot
.prettierignore @10gen/devprod-correctness @svc-auto-approve-bot
@ -22,6 +21,7 @@ OWNERS.yml @10gen/server-root-ownership @svc-auto-approve-bot
/BUILD.bazel @10gen/devprod-build @svc-auto-approve-bot
copy.bara.sky @IamXander @smcclure15 @svc-auto-approve-bot
copy.bara.staging.sky @10gen/devprod-correctness @svc-auto-approve-bot
eslint.config.mjs @10gen/devprod-correctness @svc-auto-approve-bot
jsconfig.json @10gen/devprod-correctness @svc-auto-approve-bot
package.json @10gen/devprod-correctness @svc-auto-approve-bot
pnpm-lock.yaml @10gen/devprod-correctness @svc-auto-approve-bot

2
.gitignore vendored
View File

@ -269,7 +269,7 @@ node_modules/
package-lock.json
# jstestfuzz generated test directory
jstestfuzz/
/jstestfuzz/
# Bazel-related work
# (Note that each string does NOT terminate with a '/' so that gitignore works properly)

1
.npmrc Normal file
View File

@ -0,0 +1 @@
hoist=false

View File

@ -2,6 +2,8 @@ load("@npm//:defs.bzl", "npm_link_all_packages")
load("//bazel/install_rules:install_rules.bzl", "mongo_install")
load("//bazel/toolchains:mongo_toolchain.bzl", "setup_mongo_toolchain_aliases")
load("//bazel/config:render_template.bzl", "render_template")
load("@npm//:eslint/package_json.bzl", eslint_bin = "bin")
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(
default_visibility = ["//visibility:public"],
@ -16,11 +18,33 @@ exports_files([
npm_link_all_packages(name = "node_modules")
js_library(
name = "eslintrc",
srcs = ["eslint.config.mjs"],
deps = [
":node_modules/@eslint/js",
":node_modules/globals",
"//:node_modules/@eslint/eslintrc",
],
)
eslint_bin.eslint_binary(
name = "eslint",
data = [
"//:eslintrc",
],
)
alias(
name = "format",
actual = "//bazel/format",
)
alias(
name = "lint",
actual = "//bazel:lint",
)
alias(
name = "codeowners",
actual = "//buildscripts:codeowners",

View File

@ -24,9 +24,6 @@ filters:
- ".eslintignore":
approvers:
- 10gen/devprod-correctness
- ".eslintrc.yml":
approvers:
- 10gen/devprod-correctness
- ".gitignore":
approvers:
- 10gen/devprod-build
@ -50,6 +47,9 @@ filters:
- "copy.bara.staging.sky":
approvers:
- 10gen/devprod-correctness
- "eslint.config.mjs":
approvers:
- 10gen/devprod-correctness
- "jsconfig.json":
approvers:
- 10gen/devprod-correctness

View File

@ -34,6 +34,78 @@ http_archive(
],
)
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "aspect_rules_lint",
sha256 = "f60e4a737a5e09402f5fa3bd182efa80dac5523ca4b9bc5c6fa8c06fbfb46630",
strip_prefix = "rules_lint-1.1.0",
url = "https://github.com/aspect-build/rules_lint/releases/download/v1.1.0/rules_lint-v1.1.0.tar.gz",
)
# aspect_rules_lint depends on aspect_bazel_lib.
http_archive(
name = "aspect_bazel_lib",
sha256 = "6d758a8f646ecee7a3e294fbe4386daafbe0e5966723009c290d493f227c390b",
strip_prefix = "bazel-lib-2.7.7",
url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.7.7/bazel-lib-v2.7.7.tar.gz",
)
load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies")
# aspect_bazel_lib depends on bazel_skylib
aspect_bazel_lib_dependencies()
load(
"@aspect_rules_lint//format:repositories.bzl",
# Fetch additional formatter binaries you need:
"fetch_java_format",
"fetch_ktfmt",
"fetch_swiftformat",
"rules_lint_dependencies",
)
rules_lint_dependencies()
fetch_java_format()
fetch_ktfmt()
fetch_swiftformat()
load("@aspect_rules_lint//lint:checkstyle.bzl", "fetch_checkstyle")
fetch_checkstyle()
load("@aspect_rules_lint//lint:pmd.bzl", "fetch_pmd")
fetch_pmd()
load("@aspect_rules_lint//lint:vale.bzl", "fetch_vale")
fetch_vale()
load("@aspect_rules_lint//lint:ktlint.bzl", "fetch_ktlint")
fetch_ktlint()
load("@aspect_rules_lint//lint:spotbugs.bzl", "fetch_spotbugs")
fetch_spotbugs()
########################
# Optional: multitool provides defaults for some tools such as yamlfmt
# If you do not set up multitool, you must provide these tools yourself
load("@rules_multitool//multitool:multitool.bzl", "multitool")
multitool(
name = "multitool",
lockfiles = [
"@aspect_rules_lint//format:multitool.lock.json",
"@aspect_rules_lint//lint:multitool.lock.json",
],
)
load("//bazel/platforms:local_config_platform.bzl", "setup_local_config_platform")
load("//bazel/toolchains:mongo_toolchain.bzl", "toolchain_download")
@ -165,16 +237,16 @@ poetry(
http_archive(
name = "aspect_rules_js",
sha256 = "630a71aba66c4023a5b16ab3efafaeed8b1a2865ccd168a34611eb73876b3fc4",
strip_prefix = "rules_js-1.37.1",
sha256 = "875b8d01af629dbf626eddc5cf239c9f0da20330f4d99ad956afc961096448dd",
strip_prefix = "rules_js-2.1.3",
urls = [
# Implements retry by relisting each url multiple times to be used as a failover.
# TODO(SERVER-86719): Re-implement http_archive to allow sleeping between retries
"https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz",
"https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz",
],
)
@ -182,17 +254,15 @@ load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
rules_js_dependencies()
load("@rules_nodejs//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", "nodejs_register_toolchains")
load("@aspect_rules_js//js:toolchains.bzl", "DEFAULT_NODE_VERSION", "rules_js_register_toolchains")
nodejs_register_toolchains(
name = "nodejs",
node_version = DEFAULT_NODE_VERSION,
)
rules_js_register_toolchains(node_version = DEFAULT_NODE_VERSION)
load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")
npm_translate_lock(
name = "npm",
npmrc = "//:.npmrc",
pnpm_lock = "//:pnpm-lock.yaml",
verify_node_modules_ignored = "//:.bazelignore",
)

View File

@ -5,3 +5,10 @@ exports_files([
"scons_link_list.py",
"install_rules.py",
])
sh_binary(
name = "lint",
srcs = ["lint.sh"],
args = ["//..."],
visibility = ["//visibility:public"],
)

2
bazel/lint.sh Executable file
View File

@ -0,0 +1,2 @@
# placeholder for bazel/wrapper_hook/lint.py
echo "No linter errors found!"

171
bazel/wrapper_hook/lint.py Normal file
View File

@ -0,0 +1,171 @@
import os
import pathlib
import platform
import subprocess
import sys
import tempfile
REPO_ROOT = pathlib.Path(__file__).parent.parent.parent
sys.path.append(str(REPO_ROOT))
def list_files_without_targets(bazel_bin: str):
# rules_lint only checks files that are in targets, verify that all files in the source tree
# are contained within targets.
js_files_in_targets = [
line.strip()
for line in subprocess.check_output(
[bazel_bin, "cquery", 'kind("source file", deps(//...))', "--output", "files"],
stderr=subprocess.STDOUT,
)
.decode("utf-8")
.splitlines()
if line.strip().endswith("js")
]
print("Checking that all javascript files have BUILD.bazel targets...")
# Find all .js files in src/mongo and jstests
js_files = (
subprocess.check_output(
["find", "src/mongo", "jstests", "-name", "*.js"],
stderr=subprocess.STDOUT,
)
.decode("utf-8")
.splitlines()
)
# Convert js_files_in_targets to a set for easy comparison
js_files_in_targets_set = set()
for file in js_files_in_targets:
# Remove the leading "//" and replace ":" with "/"
clean_file = file.lstrip("//").replace(":", "/")
js_files_in_targets_set.add(clean_file)
# Create a new list of files that are in js_files but not in js_files_in_targets
new_list = []
for file in js_files:
if file not in js_files_in_targets_set:
new_list.append(file)
if len(new_list) != 0:
print("Found javascript files without BUILD.bazel definitions:")
for file in new_list:
print(f"\t{file}")
print("")
print("Please add these to a js_library target in a BUILD.bazel file in their directory")
return False
print("All javascript files have BUILD.bazel targets!")
return True
def run_rules_lint(bazel_bin, args):
if platform.system() == "Windows":
print("eslint not supported on windows")
sys.exit(1)
if not list_files_without_targets(bazel_bin):
sys.exit(1)
# Default to linting everything if no path was passed in
if len(args) == 0:
args = ["//..."]
fix = ""
with tempfile.NamedTemporaryFile(delete=False) as buildevents:
buildevents_path = buildevents.name
args.append("--aspects=//tools/lint:linters.bzl%eslint")
args.extend(
[
# Allow lints of code that fails some validation action
# See https://github.com/aspect-build/rules_ts/pull/574#issuecomment-2073632879
"--norun_validations",
f"--build_event_json_file={buildevents_path}",
"--output_groups=rules_lint_human",
"--remote_download_regex='.*AspectRulesLint.*'",
]
)
# This is a rudimentary flag parser.
if args[1] == "--fail-on-violation":
args.extend(["--@aspect_rules_lint//lint:fail_on_violation", "--keep_going"])
args.pop(1)
# Allow a `--fix` option on the command-line.
# This happens to make output of the linter such as ruff's
# [*] 1 fixable with the `--fix` option.
# so that the naive thing of pasting that flag to lint.sh will do what the user expects.
if args[1] == "--fix":
fix = "patch"
args.extend(["--@aspect_rules_lint//lint:fix", "--output_groups=rules_lint_patch"])
args.pop(1)
# the --dry-run flag must immediately follow the --fix flag
if args[1] == "--dry-run":
fix = "print"
args.pop(1)
# Actually run the lint itself
subprocess.run([bazel_bin, "build"] + args, check=True)
# Parse out the reports from the build events
filter_expr = '.namedSetOfFiles | values | .files[] | select(.name | endswith($ext)) | ((.pathPrefix | join("/")) + "/" + .name)'
# Maybe this could be hermetic with bazel run @aspect_bazel_lib//tools:jq or sth
# jq on windows outputs CRLF which breaks this script. https://github.com/jqlang/jq/issues/92
valid_reports = (
subprocess.run(
["jq", "--arg", "ext", ".out", "--raw-output", filter_expr, buildevents_path],
capture_output=True,
text=True,
check=True,
)
.stdout.strip()
.split("\n")
)
for report in valid_reports:
# Exclude coverage reports, and check if the output is empty.
if "coverage.dat" in report or not os.path.exists(report) or not os.path.getsize(report):
# Report is empty. No linting errors.
continue
print(f"From {report}:")
with open(report, "r", encoding="utf-8") as f:
print(f.read())
print()
# Apply fixes if requested
if fix:
valid_patches = (
subprocess.run(
["jq", "--arg", "ext", ".patch", "--raw-output", filter_expr, buildevents_path],
capture_output=True,
text=True,
check=True,
)
.stdout.strip()
.split("\n")
)
for patch in valid_patches:
# Exclude coverage, and check if the patch is empty.
if "coverage.dat" in patch or not os.path.exists(patch) or not os.path.getsize(patch):
# Patch is empty. No linting errors.
continue
if fix == "print":
print(f"From {patch}:")
with open(patch, "r", encoding="utf-8") as f:
print(f.read())
print()
elif fix == "patch":
subprocess.run(
["patch", "-p1"], check=True, stdin=open(patch, "r", encoding="utf-8")
)
else:
print(f"ERROR: unknown fix type {fix}", file=sys.stderr)
sys.exit(1)

View File

@ -10,6 +10,7 @@ REPO_ROOT = pathlib.Path(__file__).parent.parent.parent
sys.path.append(str(REPO_ROOT))
from bazel.wrapper_hook.compiledb import generate_compiledb
from bazel.wrapper_hook.lint import run_rules_lint
from bazel.wrapper_hook.wrapper_debug import wrapper_debug
@ -57,8 +58,10 @@ def test_runner_interface(args, autocomplete_query, get_buildozer_output=get_bui
plus_starts = ("+", ":+", "//:+")
skip_plus_interface = True
compiledb_target = False
lint_target = False
persistent_compdb = True
compiledb_targets = ["//:compiledb", ":compiledb", "compiledb"]
lint_targets = ["//:lint", ":lint", "lint"]
sources_to_bin = {}
select_sources = {}
current_select = None
@ -80,6 +83,8 @@ def test_runner_interface(args, autocomplete_query, get_buildozer_output=get_bui
for arg in args:
if arg in compiledb_targets:
compiledb_target = True
if arg in lint_targets:
lint_target = True
if arg == "--intree_compdb":
replacements[arg] = []
persistent_compdb = False
@ -90,6 +95,9 @@ def test_runner_interface(args, autocomplete_query, get_buildozer_output=get_bui
if compiledb_target:
generate_compiledb(args[0], persistent_compdb)
if lint_target:
run_rules_lint(args[0], args[3:])
if skip_plus_interface and not autocomplete_query:
return args[1:]

View File

@ -1,4 +1,5 @@
load("@poetry//:dependencies.bzl", "dependency")
load("@npm//:eslint/package_json.bzl", "bin")
exports_files([
"cheetah_source_generator.py",
@ -226,3 +227,10 @@ py_library(
"simple_report",
],
)
bin.eslint_binary(
name = "eslint_binary",
# Allow the binary to be run outside bazel
# See more details about this by commenting this out and running `bazel run //:format`
env = {"BAZEL_BINDIR": "."},
)

View File

@ -1,184 +0,0 @@
# Upgrade ESLint version
### Bundling ESLint executable
1. Install the latest [Node.js](https://nodejs.org/en/download/) if you don't have it.
2. Install [pkg](https://www.npmjs.com/package/pkg) with npm.
```
npm install -g pkg
```
3. Get [ESLint](https://github.com/eslint/eslint) source code.
```
git clone git@github.com:eslint/eslint.git
```
4. Checkout the latest version using git tag.
```
cd eslint
git checkout v${version}
```
5. Add pkg options to `package.json` file.
```
"pkg": {
"scripts": [ "conf/**/*", "lib/**/*", "messages/**/*" ],
"targets": [ "linux-x64", "macos-x64" ]
# "targets": [ "linux-arm" ]
},
```
6. Run pkg command to make ESLint executables.
```
npm install
pkg .
```
7. Check that executables are working.
Copy files to somewhere in your PATH and try to run it.
Depending on your system
```
eslint-linux --help
```
or
```
eslint-macos --help
```
or (if you are on arm)
```
eslint --help
```
(\*) If executable fails to find some .js files there are [extra steps](#extra-steps)
required to be done before step 6.
### Prepare archives
Rename produced files.
```
mv eslint-linux eslint-Linux-x86_64
mv eslint-macos eslint-Darwin-x86_64
# arm
# mv eslint eslint-Linux-arm64
```
Archive files. (No leading v in version e.g. 8.28.0 NOT v8.28.0)
```
tar -czvf eslint-${version}-linux-x86_64.tar.gz eslint-Linux-x86_64
tar -czvf eslint-${version}-darwin.tar.gz eslint-Darwin-x86_64
# arm
# tar -czvf eslint-${version}-linux-arm64.tar.gz eslint-Linux-arm64
```
### Upload archives to `boxes.10gen.com`
Archives should be available by the following links:
```
https://s3.amazonaws.com/boxes.10gen.com/build/eslint-${version}-linux-x86_64.tar.gz
https://s3.amazonaws.com/boxes.10gen.com/build/eslint-${version}-darwin.tar.gz
# arm
# https://s3.amazonaws.com/boxes.10gen.com/build/eslint-${version}-linux-arm64.tar.gz
```
Build team has an access to do that.
You can create a build ticket in Jira for them to do it
(e.g. https://jira.mongodb.org/browse/BUILD-12984)
### Update ESLint version in `buildscripts/eslint.py`
```
# Expected version of ESLint.
ESLINT_VERSION = "${version}"
```
### Extra steps
Unfortunately pkg doesn't work well with `require(variable)` statements
and force include files using `assets` or `scripts` options might not help.
For the ESLint version 7.22.0 and 8.28.0 the following change was applied to the
source code to make everything work:
```
diff --git a/lib/cli-engine/cli-engine.js b/lib/cli-engine/cli-engine.js
index b1befaa04..e02230f83 100644
--- a/lib/cli-engine/cli-engine.js
+++ b/lib/cli-engine/cli-engine.js
@@ -987,43 +987,35 @@ class CLIEngine {
*/
getFormatter(format) {
- // default is stylish
- const resolvedFormatName = format || "stylish";
-
- // only strings are valid formatters
- if (typeof resolvedFormatName === "string") {
-
- // replace \ with / for Windows compatibility
- const normalizedFormatName = resolvedFormatName.replace(/\\/gu, "/");
-
- const slots = internalSlotsMap.get(this);
- const cwd = slots ? slots.options.cwd : process.cwd();
- const namespace = naming.getNamespaceFromTerm(normalizedFormatName);
-
- let formatterPath;
-
- // if there's a slash, then it's a file (TODO: this check seems dubious for scoped npm packages)
- if (!namespace && normalizedFormatName.indexOf("/") > -1) {
- formatterPath = path.resolve(cwd, normalizedFormatName);
- } else {
- try {
- const npmFormat = naming.normalizePackageName(normalizedFormatName, "eslint-formatter");
-
- formatterPath = ModuleResolver.resolve(npmFormat, path.join(cwd, "__placeholder__.js"));
- } catch {
- formatterPath = path.resolve(__dirname, "formatters", normalizedFormatName);
- }
- }
-
- try {
- return require(formatterPath);
- } catch (ex) {
- ex.message = `There was a problem loading formatter: ${formatterPath}\nError: ${ex.message}`;
- throw ex;
- }
-
- } else {
- return null;
+ switch (format) {
+ case "checkstyle":
+ return require("./formatters/checkstyle.js");
+ case "codeframe":
+ return require("./formatters/codeframe.js");
+ case "compact":
+ return require("./formatters/compact.js");
+ case "html":
+ return require("./formatters/html.js");
+ case "jslint-xml":
+ return require("./formatters/jslint-xml.js");
+ case "json-with-metadata":
+ return require("./formatters/json-with-metadata.js");
+ case "json":
+ return require("./formatters/json.js");
+ case "junit":
+ return require("./formatters/junit.js");
+ case "stylish":
+ return require("./formatters/stylish.js");
+ case "table":
+ return require("./formatters/table.js");
+ case "tap":
+ return require("./formatters/tap.js");
+ case "unix":
+ return require("./formatters/unix.js");
+ case "visualstudio":
+ return require("./formatters/visualstudio.js");
+ default:
+ return require("./formatters/stylish.js");
}
}
}
```

View File

@ -10,7 +10,7 @@ class PyrightLinter(base.LinterBase):
def __init__(self):
"""Create a Pyright linter."""
super(PyrightLinter, self).__init__("pyright", "1.1.380")
super(PyrightLinter, self).__init__("pyright", "1.1.393")
def get_lint_version_cmd_args(self) -> List[str]:
"""Get the command to run a version check."""

View File

@ -4,6 +4,7 @@
import argparse
import logging
import os
import subprocess
import sys
from typing import List
@ -90,6 +91,12 @@ def main():
logging.basicConfig(level=logging.DEBUG)
structlog.configure(logger_factory=structlog.stdlib.LoggerFactory())
# Use the nodejs binary from the bazel's npm repository
subprocess.run(["bazel", "build", "//:eslint", "--config=local"], env=os.environ, check=True)
os.environ["PATH"] = (
"bazel-bin/eslint_/eslint.runfiles/nodejs_linux_arm64/bin/nodejs/bin/" + os.pathsep
) + os.environ["PATH"]
args.func(args.paths if hasattr(args, "paths") else [])

View File

@ -42,14 +42,11 @@ Ex: `buildscripts/quickmongolint.py lint`
## Javascript Linters
The `buildscripts/eslint.py` wrapper script runs the `eslint` javascript linter. You can see the
usage message for the wrapper by running `buildscripts/eslint.py --help`.
Ex: `buildscripts/eslint.py lint`
The `bazel run lint` command runs the `eslint` javascript linter.
| Linter | Configuration File(s) | Help Command | Documentation |
| -------- | ------------------------------- | --------------- | ------------------------------------------ |
| `eslint` | `.eslintrc.yml` `.eslintignore` | `eslint --help` | [https://eslint.org/](https://eslint.org/) |
| -------- | --------------------- | ------------ | ------------------------------------------ |
| `eslint` | `.eslint.config.mjs` | | [https://eslint.org/](https://eslint.org/) |
## Yaml Linters

265
eslint.config.mjs Normal file
View File

@ -0,0 +1,265 @@
import globals from "globals";
import path from "node:path";
import { fileURLToPath } from "node:url";
import eslint from "@eslint/js";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default [{
ignores: ["src/mongo/gotools/*", "**/*.tpl.js", "jstests/third_party/**/*.js"],
}, ...compat.extends("eslint:recommended"), {
languageOptions: {
globals: {
...globals.mongo,
TestData: true,
WriteError: true,
WriteCommandError: true,
BulkWriteError: true,
DB: true,
DBCollection: true,
DBQuery: true,
DBExplainQuery: true,
DBCommandCursor: true,
MongoBridge: true,
MongoURI: true,
WriteConcern: true,
SessionOptions: true,
CollInfos: true,
CountDownLatch: true,
BSONAwareMap: true,
latestFCV: true,
lastLTSFCV: true,
lastContinuousFCV: true,
checkFCV: true,
isFCVEqual: true,
binVersionToFCV: true,
numVersionsSinceLastLTS: true,
getFCVConstants: true,
removeFCVDocument: true,
targetFCV: true,
AssertionError: true,
assert: true,
doassert: true,
authutil: true,
tojson: true,
tojsononeline: true,
tostrictjson: true,
tojsonObject: true,
toEJSON: true,
print: true,
printjson: true,
printjsononeline: true,
jsTest: true,
jsTestLog: true,
jsonTestLog: true,
ErrorCodes: true,
ErrorCodeStrings: true,
checkProgram: true,
Random: true,
checkLog: true,
sleep: true,
resetDbpath: true,
copyDbpath: true,
jsTestName: true,
startParallelShell: true,
buildInfo: true,
getBuildInfo: true,
jsTestOptions: true,
printShardingStatus: true,
_getErrorWithCode: true,
isNetworkError: true,
__magicNoPrint: true,
computeSHA256Block: true,
emit: true,
_awaitRSHostViaRSMonitor: true,
convertShardKeyToHashed: true,
benchRun: true,
benchRunSync: true,
gc: true,
DataConsistencyChecker: true,
isNumber: true,
isObject: true,
isString: true,
_createSecurityToken: true,
_createTenantToken: true,
_isAddressSanitizerActive: true,
_isLeakSanitizerActive: true,
_isThreadSanitizerActive: true,
_isUndefinedBehaviorSanitizerActive: true,
_isSpiderMonkeyDebugEnabled: true,
_optimizationsEnabled: true,
allocatePort: true,
allocatePorts: true,
resetAllocatedPorts: true,
bsonObjToArray: true,
_writeTestPipeObjects: true,
_writeTestPipe: true,
_writeTestPipeBsonFile: true,
_readTestPipes: true,
runFeatureFlagMultiversionTest: true,
isRetryableError: true,
numberDecimalsAlmostEqual: true,
numberDecimalsEqual: true,
debug: true,
bsonsize: true,
_DelegatingDriverSession: true,
_DummyDriverSession: true,
_ServerSession: true,
sortDoc: true,
executeNoThrowNetworkError: true,
_readDumpFile: true,
_openGoldenData: true,
_writeGoldenData: true,
_threadInject: true,
port: true,
_buildBsonObj: true,
convertTrafficRecordingToBSON: true,
_setShellFailPoint: true,
shellHelper: true,
_srand: true,
_shouldUseImplicitSessions: true,
testingReplication: true,
myPort: true,
retryOnNetworkError: true,
getJSHeapLimitMB: true,
_getEnv: true,
indentStr: true,
_forgetReplSet: true,
_fnvHashToHexString: true,
_resultSetsEqualUnordered: true,
getStringWidth: true,
_compareStringsWithCollation: true,
eventResumeTokenType: true,
highWaterMarkResumeTokenType: true,
// likely could be replaced with `path`
_copyFileRange: true,
appendFile: true,
copyFile: true,
writeFile: true,
fileExists: true,
pathExists: true,
umask: true,
getFileMode: true,
copyDir: true,
// likely could be replaced with `child_process`
MongoRunner: true,
run: true,
runProgram: true,
runMongoProgram: true,
runNonMongoProgram: true,
runNonMongoProgramQuietly: true,
_runMongoProgram: true,
_startMongoProgram: true,
startMongoProgram: true,
_stopMongoProgram: true,
stopMongoProgramByPid: true,
clearRawMongoProgramOutput: true,
rawMongoProgramOutput: true,
waitProgram: true,
waitMongoProgram: true,
_runningMongoChildProcessIds: true,
startMongoProgramNoConnect: true,
// shell-specific
shellPrintHelper: true,
shellAutocomplete: true,
__autocomplete__: true,
defaultPrompt: true,
___it___: true,
__promptWrapper__: true,
passwordPrompt: true,
isInteractive: true,
// built-in BSON types and helpers
Code: true,
MaxKey: true,
MinKey: true,
HexData: true,
DBPointer: true,
DBRef: true,
BinData: true,
NumberLong: true,
NumberDecimal: true,
Timestamp: true,
MD5: true,
Geo: true,
decodeResumeToken: true,
bsonWoCompare: true,
bsonUnorderedFieldsCompare: true,
bsonBinaryEqual: true,
friendlyEqual: true,
timestampCmp: true,
decompressBSONColumn: true,
hex_md5: true,
QueryHelpers: true,
chatty: true,
DriverSession: true,
ToolTest: true,
uncheckedParallelShellPidsString: true,
_shouldRetryWrites: true,
// from_cpp:
__prompt__: true,
_replMonitorStats: true,
// explainable.js
Explainable: true,
// utils.js
_verboseShell: true,
__quiet: true,
printStackTrace: true,
setVerboseShell: true,
_barFormat: true,
compare: true,
compareOn: true,
shellPrint: true,
_originalPrint: true,
disablePrint: true,
enablePrint: true,
replSetMemberStatePrompt: true,
hasErrorCode: true,
helloStatePrompt: true,
_validateMemberIndex: true,
help: true,
retryOnRetryableError: true,
},
ecmaVersion: 2022,
sourceType: "module",
},
rules: {
"no-prototype-builtins": 0,
"no-useless-escape": 0,
"no-irregular-whitespace": 0,
"no-inner-declarations": 0,
"no-unused-vars": [0, {
varsIgnorePattern: "^_",
args: "none",
}],
"no-empty": 0,
"no-redeclare": 0,
"no-constant-condition": 0,
"no-loss-of-precision": 0,
semi: 2,
"no-restricted-syntax": ["error", {
message: "Invalid load call. Please convert your library to a module and import it instead.",
selector: "CallExpression > Identifier[name=\"load\"]",
}],
},
}];

View File

@ -601,7 +601,7 @@ tasks:
jepsen_test_name: set
# TODO(SERVER-97804): rename if display_name appears on the evergreen UI
- name: bazel_run_//:format
- name: bazel_run_format
tags:
[
"assigned_to_jira_team_devprod_build",
@ -796,6 +796,9 @@ tasks:
"development_critical_single_variant",
"lint",
]
depends_on:
- name: version_expansions_gen
variant: generate-tasks-for-version
commands:
- command: timeout.update
params:

View File

@ -116,10 +116,17 @@ buildvariants:
- name: compile_jstestshell_TG
distros:
- amazon2-arm64-latest-nvme
- name: .development_critical_single_variant !.requires_large_host
- name: .development_critical_single_variant .requires_large_host
# TODO(SERVER-99105): Remove the lint/non-lint branch once this is on AL2023
- name: .development_critical_single_variant !.requires_large_host !.lint
- name: .development_critical_single_variant .requires_large_host !.lint
distros:
- amazon2-arm64-latest-xlarge
- name: .development_critical_single_variant !.requires_large_host .lint
distros:
- amazon2023.3-arm64-small
- name: .development_critical_single_variant .requires_large_host .lint
distros:
- amazon2023.3-arm64-large
- name: .development_critical .requires_compile_variant !.requires_large_host !.incompatible_development_variant !.stitch !.crypt
- name: .development_critical .requires_compile_variant .requires_large_host !.incompatible_development_variant !.stitch !.crypt
distros:
@ -211,10 +218,17 @@ buildvariants:
- name: compile_test_parallel_dbtest_stream_TG
distros:
- amazon2-arm64-xlarge-commitqueue
- name: .development_critical_single_variant !.requires_large_host !.clang_tidy !libdeps_graph_linting
- name: .development_critical_single_variant .requires_large_host !.clang_tidy !libdeps_graph_linting
# TODO(SERVER-99105): Remove the lint/non-lint branch once this is on AL2023
- name: .development_critical_single_variant !.requires_large_host !.clang_tidy !libdeps_graph_linting !.lint
- name: .development_critical_single_variant .requires_large_host !.clang_tidy !libdeps_graph_linting !.lint
distros:
- amazon2-arm64-latest-large
- name: .development_critical_single_variant !.requires_large_host !.clang_tidy !libdeps_graph_linting .lint
distros:
- amazon2023.3-arm64-small
- name: .development_critical_single_variant .requires_large_host !.clang_tidy !libdeps_graph_linting .lint
distros:
- amazon2023.3-arm64-large
- name: .development_critical !.requires_large_host_commit_queue
- name: .development_critical .requires_large_host_commit_queue
distros:

View File

@ -716,10 +716,17 @@ buildvariants:
- name: compile_jstestshell_TG
distros:
- amazon2-arm64-latest-nvme
- name: .development_critical_single_variant !.requires_large_host
- name: .development_critical_single_variant .requires_large_host
# TODO(SERVER-99105): Remove the lint/non-lint branch once this is on AL2023
- name: .development_critical_single_variant !.requires_large_host !.lint
- name: .development_critical_single_variant .requires_large_host !.lint
distros:
- amazon2-arm64-latest-xlarge
- name: .development_critical_single_variant !.requires_large_host .lint
distros:
- amazon2023.3-arm64-small
- name: .development_critical_single_variant .requires_large_host .lint
distros:
- amazon2023.3-arm64-large
- name: .development_critical .requires_compile_variant !.requires_large_host !.incompatible_development_variant !.stitch !.crypt
- name: .development_critical .requires_compile_variant .requires_large_host !.incompatible_development_variant !.stitch !.crypt
distros:

View File

@ -3,7 +3,14 @@
"version": "1.0.0",
"private": true,
"devDependencies": {
"prettier": "3.4.2",
"eslint": "8.28.0"
"@eslint/js": "^9",
"@eslint/eslintrc": "3.2.0",
"eslint": "9.19.0",
"globals": "14.0.0",
"eslint-formatter-unix": "^8.40.0",
"prettier": "3.4.2"
},
"pnpm": {
"onlyBuiltDependencies": []
}
}

View File

@ -4,30 +4,75 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
onlyBuiltDependencies: []
importers:
.:
devDependencies:
'@eslint/eslintrc':
specifier: 3.2.0
version: 3.2.0
'@eslint/js':
specifier: ^9
version: 9.19.0
eslint:
specifier: 8.28.0
version: 8.28.0
specifier: 9.19.0
version: 9.19.0
eslint-formatter-unix:
specifier: ^8.40.0
version: 8.40.0
globals:
specifier: 14.0.0
version: 14.0.0
prettier:
specifier: 3.2.5
version: 3.2.5
specifier: 3.4.2
version: 3.4.2
packages:
/@aashutoshrathi/word-wrap@1.2.6:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
/@eslint-community/eslint-utils@4.4.1(eslint@9.19.0):
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 9.19.0
eslint-visitor-keys: 3.4.3
dev: true
/@eslint/eslintrc@1.4.1:
resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
/@eslint-community/regexpp@4.12.1:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
/@eslint/config-array@0.19.1:
resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
'@eslint/object-schema': 2.1.5
debug: 4.4.0
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/core@0.10.0:
resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
'@types/json-schema': 7.0.15
dev: true
/@eslint/eslintrc@3.2.0:
resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.0
debug: 4.4.0
espree: 10.3.0
globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@ -36,15 +81,35 @@ packages:
- supports-color
dev: true
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
/@eslint/js@9.19.0:
resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dev: true
/@eslint/object-schema@2.1.5:
resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dev: true
/@eslint/plugin-kit@0.2.5:
resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
'@humanwhocodes/object-schema': 2.0.2
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
'@eslint/core': 0.10.0
levn: 0.4.1
dev: true
/@humanfs/core@0.19.1:
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
dev: true
/@humanfs/node@0.16.6:
resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
engines: {node: '>=18.18.0'}
dependencies:
'@humanfs/core': 0.19.1
'@humanwhocodes/retry': 0.3.1
dev: true
/@humanwhocodes/module-importer@1.0.1:
@ -52,41 +117,34 @@ packages:
engines: {node: '>=12.22'}
dev: true
/@humanwhocodes/object-schema@2.0.2:
resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
/@humanwhocodes/retry@0.3.1:
resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
engines: {node: '>=18.18'}
dev: true
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.stat': 2.0.5
run-parallel: 1.2.0
/@humanwhocodes/retry@0.4.1:
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
engines: {node: '>=18.18'}
dev: true
/@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
/@types/estree@1.0.6:
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
dev: true
/@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.0
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
/acorn-jsx@5.3.2(acorn@8.11.3):
/acorn-jsx@5.3.2(acorn@8.14.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.11.3
acorn: 8.14.0
dev: true
/acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
/acorn@8.14.0:
resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@ -100,11 +158,6 @@ packages:
uri-js: 4.4.1
dev: true
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
dev: true
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@ -155,8 +208,8 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
/cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
dependencies:
path-key: 3.1.1
@ -164,8 +217,8 @@ packages:
which: 2.0.2
dev: true
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
/debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@ -173,112 +226,100 @@ packages:
supports-color:
optional: true
dependencies:
ms: 2.1.2
ms: 2.1.3
dev: true
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
/doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
dev: true
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: true
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
/eslint-formatter-unix@8.40.0:
resolution: {integrity: sha512-gfsmFZ/cb1MobrMfYl2IPFLZEz2tWQVO/tnmziNQdhWJMN85GfZD64dcPsEgaEoeVKgAtK6W9LWLlOxhJWZvDw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint-scope@8.2.0:
resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
dev: true
/eslint-utils@3.0.0(eslint@8.28.0):
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
eslint: 8.28.0
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys@2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
dev: true
/eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/eslint@8.28.0:
resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
/eslint-visitor-keys@4.2.0:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dev: true
/eslint@9.19.0:
resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
jiti: '*'
peerDependenciesMeta:
jiti:
optional: true
dependencies:
'@eslint/eslintrc': 1.4.1
'@humanwhocodes/config-array': 0.11.14
'@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0)
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.19.1
'@eslint/core': 0.10.0
'@eslint/eslintrc': 3.2.0
'@eslint/js': 9.19.0
'@eslint/plugin-kit': 0.2.5
'@humanfs/node': 0.16.6
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
'@humanwhocodes/retry': 0.4.1
'@types/estree': 1.0.6
'@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
cross-spawn: 7.0.6
debug: 4.4.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-utils: 3.0.0(eslint@8.28.0)
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
eslint-scope: 8.2.0
eslint-visitor-keys: 4.2.0
espree: 10.3.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.24.0
grapheme-splitter: 1.0.4
ignore: 5.3.0
import-fresh: 3.3.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-sdsl: 4.4.2
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
regexpp: 3.2.0
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
optionator: 0.9.4
transitivePeerDependencies:
- supports-color
dev: true
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
/espree@10.3.0:
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
dependencies:
acorn: 8.11.3
acorn-jsx: 5.3.2(acorn@8.11.3)
eslint-visitor-keys: 3.4.3
acorn: 8.14.0
acorn-jsx: 5.3.2(acorn@8.14.0)
eslint-visitor-keys: 4.2.0
dev: true
/esquery@1.5.0:
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
/esquery@1.6.0:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
dependencies:
estraverse: 5.3.0
@ -313,17 +354,11 @@ packages:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
dev: true
/fastq@1.17.0:
resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==}
/file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
dependencies:
reusify: 1.0.4
dev: true
/file-entry-cache@6.0.1:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.2.0
flat-cache: 4.0.1
dev: true
/find-up@5.0.0:
@ -334,21 +369,16 @@ packages:
path-exists: 4.0.0
dev: true
/flat-cache@3.2.0:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
/flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
dependencies:
flatted: 3.2.9
flatted: 3.3.2
keyv: 4.5.4
rimraf: 3.0.2
dev: true
/flatted@3.2.9:
resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
dev: true
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
/flatted@3.3.2:
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
dev: true
/glob-parent@6.0.2:
@ -358,26 +388,9 @@ packages:
is-glob: 4.0.3
dev: true
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
dev: true
/globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
dev: true
/grapheme-splitter@1.0.4:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
/globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
dev: true
/has-flag@4.0.0:
@ -385,8 +398,8 @@ packages:
engines: {node: '>=8'}
dev: true
/ignore@5.3.0:
resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
/ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
dev: true
@ -403,17 +416,6 @@ packages:
engines: {node: '>=0.8.19'}
dev: true
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
once: 1.4.0
wrappy: 1.0.2
dev: true
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@ -426,19 +428,10 @@ packages:
is-extglob: 2.1.1
dev: true
/is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
dev: true
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
/js-sdsl@4.4.2:
resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==}
dev: true
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@ -489,30 +482,24 @@ packages:
brace-expansion: 1.1.11
dev: true
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
/ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
/optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
/optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
dependencies:
'@aashutoshrathi/word-wrap': 1.2.6
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
word-wrap: 1.2.5
dev: true
/p-limit@3.1.0:
@ -541,11 +528,6 @@ packages:
engines: {node: '>=8'}
dev: true
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
dev: true
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@ -556,8 +538,8 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
/prettier@3.2.5:
resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
/prettier@3.4.2:
resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
engines: {node: '>=14'}
hasBin: true
dev: true
@ -567,38 +549,11 @@ packages:
engines: {node: '>=6'}
dev: true
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
/regexpp@3.2.0:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
dev: true
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
dev: true
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
dev: true
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
dependencies:
glob: 7.2.3
dev: true
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
dev: true
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@ -611,13 +566,6 @@ packages:
engines: {node: '>=8'}
dev: true
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
dev: true
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@ -630,10 +578,6 @@ packages:
has-flag: 4.0.0
dev: true
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@ -641,11 +585,6 @@ packages:
prelude-ls: 1.2.1
dev: true
/type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
dev: true
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@ -660,8 +599,9 @@ packages:
isexe: 2.0.0
dev: true
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
/word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
dev: true
/yocto-queue@0.1.0:

40
poetry.lock generated
View File

@ -73,7 +73,7 @@ description = "Backport of CPython tarfile module"
optional = false
python-versions = ">=3.8"
groups = ["export", "jira-client"]
markers = "python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"},
{file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"},
@ -290,7 +290,7 @@ files = [
{file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"},
{file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"},
]
markers = {main = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", export = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and (sys_platform == \"linux\" or sys_platform == \"darwin\")", external-auth = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\"", jira-client = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and sys_platform == \"linux\"", platform = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\"", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
markers = {main = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and (\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", export = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and (sys_platform == \"linux\" or sys_platform == \"darwin\")", external-auth = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\"", jira-client = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and sys_platform == \"linux\"", platform = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\"", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
[package.dependencies]
pycparser = "*"
@ -918,7 +918,7 @@ description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
groups = ["testing"]
markers = "python_version < \"3.11\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.11\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
{file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
@ -1308,7 +1308,7 @@ files = [
{file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"},
{file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"},
]
markers = {export = "python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", jira-client = "python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
markers = {export = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", jira-client = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
[package.dependencies]
zipp = ">=3.20"
@ -1449,7 +1449,7 @@ description = "Low-level, pure Python DBus protocol wrapper."
optional = false
python-versions = ">=3.7"
groups = ["export", "jira-client"]
markers = "sys_platform == \"linux\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"linux\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"},
{file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"},
@ -2692,7 +2692,7 @@ files = [
{file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"},
{file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
]
markers = {main = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", export = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and (sys_platform == \"linux\" or sys_platform == \"darwin\")", external-auth = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\"", jira-client = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and sys_platform == \"linux\"", platform = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\"", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
markers = {main = "platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and (\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", export = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and (sys_platform == \"linux\" or sys_platform == \"darwin\")", external-auth = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\"", jira-client = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" or (platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and sys_platform == \"linux\"", platform = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\"", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
[[package]]
name = "pydantic"
@ -3082,7 +3082,7 @@ description = ""
optional = false
python-versions = "*"
groups = ["platform"]
markers = "sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "pypiwin32-223-py3-none-any.whl", hash = "sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775"},
{file = "pypiwin32-223.tar.gz", hash = "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"},
@ -3106,23 +3106,25 @@ files = [
[[package]]
name = "pyright"
version = "1.1.380"
version = "1.1.393"
description = "Command line wrapper for pyright"
optional = false
python-versions = ">=3.7"
groups = ["main"]
markers = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""
files = [
{file = "pyright-1.1.380-py3-none-any.whl", hash = "sha256:a6404392053d8848bacc7aebcbd9d318bb46baf1a1a000359305481920f43879"},
{file = "pyright-1.1.380.tar.gz", hash = "sha256:e6ceb1a5f7e9f03106e0aa1d6fbb4d97735a5e7ffb59f3de6b2db590baf935b2"},
{file = "pyright-1.1.393-py3-none-any.whl", hash = "sha256:8320629bb7a44ca90944ba599390162bf59307f3d9fb6e27da3b7011b8c17ae5"},
{file = "pyright-1.1.393.tar.gz", hash = "sha256:aeeb7ff4e0364775ef416a80111613f91a05c8e01e58ecfefc370ca0db7aed9c"},
]
[package.dependencies]
nodeenv = ">=1.6.0"
typing-extensions = ">=4.1"
[package.extras]
all = ["twine (>=3.4.1)"]
all = ["nodejs-wheel-binaries", "twine (>=3.4.1)"]
dev = ["twine (>=3.4.1)"]
nodejs = ["nodejs-wheel-binaries"]
[[package]]
name = "pysocks"
@ -3215,7 +3217,7 @@ files = [
{file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"},
{file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"},
]
markers = {main = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", platform = "sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"}
markers = {main = "(platform_system == \"Windows\" or sys_platform == \"win32\") and (\"el8\" in platform_release or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\") and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", platform = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"}
[[package]]
name = "pywin32-ctypes"
@ -3224,7 +3226,7 @@ description = "A (partial) reimplementation of pywin32 using ctypes/cffi"
optional = false
python-versions = ">=3.6"
groups = ["export", "jira-client"]
markers = "sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"win32\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "pywin32-ctypes-0.2.3.tar.gz", hash = "sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755"},
{file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"},
@ -3780,7 +3782,7 @@ description = "Python bindings to FreeDesktop.org Secret Service API"
optional = false
python-versions = ">=3.6"
groups = ["export", "jira-client"]
markers = "sys_platform == \"linux\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"linux\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"},
{file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"},
@ -4105,7 +4107,7 @@ description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
groups = ["export", "lint", "testing"]
markers = "python_version < \"3.11\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.11\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"},
{file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"},
@ -4275,7 +4277,7 @@ description = "An extension for use in the twisted I/O Completion Ports reactor.
optional = false
python-versions = "*"
groups = ["external-auth"]
markers = "platform_system == \"Windows\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and platform_system == \"Windows\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "twisted-iocpsupport-1.0.4.tar.gz", hash = "sha256:858096c0d15e33f15ac157f455d8f86f2f2cdd223963e58c0f682a3af8362d89"},
{file = "twisted_iocpsupport-1.0.4-cp310-cp310-win32.whl", hash = "sha256:afa2b630797f9ed2f27f3d9f55e3f72b4244911e45a8c82756f44babbf0b243e"},
@ -4611,7 +4613,7 @@ description = "Python wrapper for extended filesystem attributes"
optional = false
python-versions = ">=3.8"
groups = ["export"]
markers = "sys_platform == \"darwin\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
markers = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and sys_platform == \"darwin\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")"
files = [
{file = "xattr-1.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:acb85b6249e9f3ea10cbb56df1021d43f4027212f0d004304bc9075dc7f54769"},
{file = "xattr-1.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1a848ab125c0fafdc501ccd83b4c9018bba576a037a4ca5960a22f39e295552e"},
@ -4722,7 +4724,7 @@ files = [
{file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"},
{file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"},
]
markers = {export = "python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", jira-client = "python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
markers = {export = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", jira-client = "(\"el8\" in platform_release or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\") and python_version < \"3.12\" and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\" or platform_machine != \"s390x\" and platform_machine != \"ppc64le\")", testing = "\"el8\" in platform_release and (platform_machine == \"s390x\" or platform_machine == \"ppc64le\") or platform_machine != \"s390x\" and platform_machine != \"ppc64le\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\""}
[package.extras]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
@ -4813,4 +4815,4 @@ libdeps = ["cxxfilt", "eventlet", "flask", "flask-cors", "gevent", "lxml", "prog
[metadata]
lock-version = "2.1"
python-versions = ">=3.10,<4.0"
content-hash = "c007c9def397da60b98a3cdd464c6748432a3dedcc87ac7bc4e4b452196daf7b"
content-hash = "3183347cd7cbe83df8e7e60b9281de1f799c86cd4f271ae1c888109fd754d077"

View File

@ -17,7 +17,7 @@ packages = [
]
dependencies = [
"networkx", # This is also used as a part of build_metrics so it is sort of required
"pyright==1.1.380",
"pyright (==1.1.393)",
"flask",
"flask-cors",
"lxml",
@ -41,7 +41,7 @@ gevent = { version = "*", optional = true }
progressbar2 = { version = "*", optional = true }
cxxfilt = { version = "*", optional = true }
pympler = { version = "*", optional = true }
pyright = "1.1.380"
pyright = "1.1.393"
[tool.poetry.group.aws.dependencies]
boto3 = "^1.34.156"

11
tools/lint/BUILD.bazel Normal file
View File

@ -0,0 +1,11 @@
"""Definition of the formatter binary
This is in its own package because it has so many loading-time symbols,
we don't want to trigger eager fetches of these for builds that don't want to run format.
"""
load("@npm//:eslint/package_json.bzl", eslint_bin = "bin")
package(default_visibility = ["//visibility:public"])
eslint_bin.eslint_binary(name = "eslint")

13
tools/lint/linters.bzl Normal file
View File

@ -0,0 +1,13 @@
"Define linter aspects"
load("@aspect_rules_lint//lint:eslint.bzl", "lint_eslint_aspect")
load("@aspect_rules_lint//lint:lint_test.bzl", "lint_test")
eslint = lint_eslint_aspect(
binary = Label("@//tools/lint:eslint"),
configs = [
Label("@//:eslintrc"),
],
)
eslint_test = lint_test(aspect = eslint)