Compare commits

...

58 commits

Author SHA1 Message Date
Sandro
5eab03ea74
Merge a2f46337dc into 60754ce088 2025-01-02 18:34:12 +01:00
Rhys Arkins
60754ce088
feat(presets): add RUSTC_BOOTSTRAP to safe global env (#33347)
Some checks are pending
Build / setup (push) Waiting to run
Build / setup-build (push) Waiting to run
Build / prefetch (push) Blocked by required conditions
Build / lint-eslint (push) Blocked by required conditions
Build / lint-prettier (push) Blocked by required conditions
Build / lint-docs (push) Blocked by required conditions
Build / lint-other (push) Blocked by required conditions
Build / (push) Blocked by required conditions
Build / codecov (push) Blocked by required conditions
Build / coverage-threshold (push) Blocked by required conditions
Build / test-success (push) Blocked by required conditions
Build / build (push) Blocked by required conditions
Build / build-docs (push) Blocked by required conditions
Build / test-e2e (push) Blocked by required conditions
Build / release (push) Blocked by required conditions
Code scanning / CodeQL-Build (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
whitesource-scan / WS_SCAN (push) Waiting to run
2025-01-02 17:20:40 +00:00
renovate[bot]
d018ae7711
chore(deps): update prom/prometheus docker tag to v3.1.0 (#33375)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-02 16:41:03 +00:00
renovate[bot]
3eb405d9ed
chore(deps): update dependency @swc/core to v1.10.2 (#33374)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-02 16:40:45 +00:00
Michael Kriese
e811b23df5
fix(platform): ensure order for cached pr's on gitea and bitbucket (#33373) 2025-01-02 16:39:43 +00:00
Sandro
a2f46337dc
Merge branch 'main' into rework-nix 2024-12-23 03:16:15 +01:00
Sandro Jäckel
0c1fc74f16
Fix prettier... 2024-12-10 20:32:57 +01:00
Sandro Jäckel
9179fa6f39
Merge remote-tracking branch 'upstream/main' into rework-nix
* upstream/main: (57 commits)
  feat(mix): handle hex package aliases (#32984)
  feat(preset): Add modules to Jackson monorepo group (#32997)
  docs(nuget): add info about nested nuget ignorePaths (#33020)
  chore(deps): update github/codeql-action action to v3.27.7 (#33018)
  docs: remove app secrets deprecation date (#33010)
  docs: added Renovate Version info to Mend-hosted Apps config page (#32917)
  feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.18.0 (#33002)
  chore(deps): update dependency type-fest to v4.30.0 (#33001)
  refactor(maven): Unified result type for http fetch (#32813)
  feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.17.0 (#32993)
  refactor: Flatten package lookup queue (#32930)
  chore(deps): update dependency pdm to v2.22.0 (#32990)
  chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v13.2.2 (#32989)
  chore(deps): update dependency renovatebot/github-action to v41.0.6 (#32986)
  fix(deps): update ghcr.io/containerbase/sidecar docker tag to v13.2.2 (#32987)
  feat(managers/circleci): add registryAliases support to circleci manager (#32945)
  refactor: Rename manager result type to `MaybePromise` (#32977)
  chore(deps): lock file maintenance (#32982)
  docs: update references to renovate/renovate (#32981)
  chore(deps): update dependency type-fest to v4.29.1 (#32980)
  ...
2024-12-10 20:19:21 +01:00
Sandro Jäckel
7e76bfd6e3
Reduce noisy logs 2024-12-10 20:18:40 +01:00
Mathieu Fenniak
0a9af09b78
Add documentation on 'depName' and 'packageName' fields for nix 2024-12-10 20:16:43 +01:00
Sandro Jäckel
3e11881f4b
Fix prettier 2024-12-10 00:07:44 +01:00
Sandro Jäckel
d2c3b5edf4
Fix prettier 2024-12-07 01:03:27 +01:00
Sandro Jäckel
87a43c9b66
Move const out of loop 2024-12-07 01:02:04 +01:00
Sandro Jäckel
c6591510b4
Use entries instead of keys 2024-12-07 01:01:14 +01:00
Sandro Jäckel
ed2260553a
Remove unused fallback 2024-12-07 00:59:23 +01:00
Sandro Jäckel
31d2a070ae
Expect full output 2024-12-07 00:55:08 +01:00
Sandro Jäckel
d8f4cc5e90
Reapply "Revert fileMatch change"
This reverts commit f9c72474df.
2024-12-07 00:40:54 +01:00
Mathieu Fenniak
70912bf17f
revert earlier debug->error log changes; improve invalid root node log msg 2024-12-05 23:23:20 +01:00
Mathieu Fenniak
9fbea6b7e3
fix readLocalFile ref to use string-returning version with assumed utf8 2024-12-05 23:23:20 +01:00
Mathieu Fenniak
149b2f6fc0
fix bug where 'flake.nix' was being parsed, not 'flake.lock' 2024-12-05 23:23:20 +01:00
Sandro Jäckel
ab7854669b
Merge remote-tracking branch 'upstream/main' into rework-nix
* upstream/main: (95 commits)
  fix(presets): use regex to match versions for :automergeStableNonMajor preset (#32924)
  feat(bazel-module): add support for oci.pull (#32453)
  fix(deps): update ghcr.io/containerbase/sidecar docker tag to v13.1.0 (#32925)
  fix(bundler): gracefully ignore internal packages (#32923)
  docs: list uv.lock as supported by lockFileMaintenance. (#32897)
  chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v13.1.0 (#32920)
  refactor(bundler): refactor extraction regexes (#32870)
  chore(deps): update dependency @types/node to v20.17.9 (#32916)
  chore(deps): update python:3.13 docker digest to 220d075 (#32914)
  chore(deps): update python:3.13 docker digest to 30fca17 (#32912)
  chore(deps): update python docker tag to v3.13.1 (#32913)
  fix(docs): typos (#32888)
  chore(deps): update otel/opentelemetry-collector-contrib docker tag to v0.115.1 (#32911)
  fix(deps): update ghcr.io/renovatebot/base-image docker tag to v9.14.1 (#32910)
  fix(metadata): update changelog URL for mypy (#32106)
  chore(deps): update dependency type-fest to v4.29.0 (#32902)
  chore(deps): update python:3.13 docker digest to e95be02 (#32900)
  docs(faq): mention weekly update goal for Mend Renovate app (#32899)
  feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.14.0 (#32896)
  chore(deps): update python:3.13 docker digest to 7861d60 (#32895)
  ...
2024-12-05 17:51:29 +01:00
Sandro Jäckel
f9c72474df
Revert "Revert fileMatch change"
This reverts commit 4bcf310a8d.
2024-12-05 17:51:01 +01:00
Rhys Arkins
e1d43e59d7
Merge branch 'main' into rework-nix 2024-11-28 07:06:02 +01:00
Sandro Jäckel
9e144f5756
Merge remote-tracking branch 'upstream/main' into rework-nix
* upstream/main: (206 commits)
  build(deps): update dependency @opentelemetry/semantic-conventions to v1.28.0 (#32775)
  fix(deps): update ghcr.io/renovatebot/base-image docker tag to v9.11.3 (#32774)
  chore(deps): update pnpm to v9.14.2 (#32769)
  feat(manager/dockerfile): add support for Dockerfile `RUN --mount=from` (#32743)
  feat(datasource/pypi): always fallback to try simple endpoints (#32024)
  fix(npm): update npmrc before executing corepack cmd (#32733)
  fix(bitbucket): source link root path (#32689)
  chore(deps): update docker/dockerfile docker tag to v1.12.0 (#32764)
  fix(deps): update ghcr.io/renovatebot/base-image docker tag to v9.11.2 (#32763)
  chore(deps): update pnpm to v9.14.1 (#32762)
  fix(deps): update ghcr.io/containerbase/sidecar docker tag to v13.0.22 (#32761)
  chore(deps): update ghcr.io/containerbase/devcontainer docker tag to v13.0.22 (#32759)
  chore(deps): update davidanson/markdownlint-cli2-action action to v18 (#32684)
  chore(deps): update containerbase/internal-tools action to v3.5.2 (#32757)
  chore(deps): update dependency @types/better-sqlite3 to v7.6.12 (#32756)
  test(presets): validate schedule presets (#32755)
  ci: disable Windows tests (#32754)
  fix(presets): Add F# to dotnet monorepo (#32706)
  build(deps): update dependency yaml to v2.6.1 (#32744)
  chore(deps): update dependency @types/diff to v6 (#32742)
  ...
2024-11-27 23:45:31 +01:00
Sandro Jäckel
7eed106edf
Work around istanbul issue 2024-11-27 23:44:40 +01:00
Sandro Jäckel
96fd373ed8
Try to fix coverage 2024-11-08 20:29:43 +01:00
Sandro Jäckel
27fc2cff70
Fix istanbul ignore 2024-11-08 17:35:14 +01:00
Rhys Arkins
db6a562a5a prettier-fix 2024-11-06 17:26:20 +01:00
Rhys Arkins
e0a303c3c3
Merge branch 'main' into rework-nix 2024-11-06 17:25:35 +01:00
Sandro Jäckel
3f0e8d949f
Use named groups 2024-11-06 16:46:23 +01:00
Sandro
c3252ff5df
Update lib/modules/manager/nix/extract.ts
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2024-11-06 16:43:44 +01:00
Sandro Jäckel
23a0c059f6
Log missing root node 2024-11-06 16:41:52 +01:00
Sandro
870297a7c8
Apply suggestions from code review
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2024-11-06 16:40:10 +01:00
Rhys Arkins
cdd1a0550f
Merge branch 'main' into rework-nix 2024-11-02 07:06:07 +01:00
Sandro Jäckel
e2a3f50736
Use getSiblingFileName 2024-11-02 03:36:08 +01:00
Sandro Jäckel
c8363e5ecc
Review pt. 2 2024-11-02 02:21:07 +01:00
Sandro Jäckel
ce71499d94
Review #1 2024-11-02 02:12:26 +01:00
Sandro Jäckel
0ecdb091f8
Ignore none relevant cov failure 2024-10-24 17:50:03 +02:00
Sandro Jäckel
4bcf310a8d
Revert fileMatch change 2024-10-23 23:09:24 +02:00
Sandro Jäckel
04793300a9
Inline tests 2024-10-23 22:09:26 +02:00
Sandro Jäckel
62d60c6071
Add tarball type 2024-10-23 17:15:44 +02:00
Sandro Jäckel
5cf966264c
Ignore coverage for impossible line 2024-10-23 16:41:43 +02:00
Sandro Jäckel
51b6353056
Fix custom hosts 2024-10-21 13:48:51 +02:00
Sandro Jäckel
101306e57c
Nodes are not optional 2024-10-21 13:48:20 +02:00
Sandro Jäckel
d3a54c7458
Ignore cov line because it testing it makes no sense 2024-10-14 14:34:55 +02:00
Sandro Jäckel
7edb754396
Use switch instead of if else chain 2024-10-14 14:32:23 +02:00
Sandro Jäckel
f0c2dceddc
Check nodes explicitly to be null instead of relying on fallback
Cleaner, don't check twice and increases cov
2024-10-14 14:31:59 +02:00
Sandro Jäckel
9146253594
Add test for indirect type 2024-10-14 14:31:33 +02:00
Sandro Jäckel
31094498b3
Improve schema, only update direct inputs 2024-10-14 01:21:30 +02:00
Sandro Jäckel
46609cab40
Add test case for shallow and submodules 2024-10-13 23:40:49 +02:00
Sandro Jäckel
0e0e5e07f5
Format, try to bump coverage 2024-10-12 22:33:32 +02:00
Sandro Jäckel
ae85dccfff
Fix all the lints 2024-10-12 22:22:57 +02:00
Sandro Jäckel
3de4d4b18c
Fix test 2024-10-12 22:15:20 +02:00
Sandro Jäckel
bc97524a93
Use zod 2024-10-12 22:13:33 +02:00
Sandro Jäckel
24f0a849b4
Transport branch to not generate updates for every commit on HEAD 2024-10-12 04:51:41 +02:00
Sandro
0dc2ab1e2f
Remove unused import 2024-10-12 04:06:43 +02:00
Sandro
44aeba3d96
Add another field to lockedInput 2024-10-11 19:13:34 +02:00
Sandro Jäckel
752feae9ac
feat(nix): rework to work with all flake inputs 2024-10-11 18:39:52 +02:00
13 changed files with 802 additions and 165 deletions

View file

@ -22,7 +22,7 @@ services:
# Prometheus for storing metrics # Prometheus for storing metrics
prometheus: prometheus:
image: prom/prometheus:v3.0.1 image: prom/prometheus:v3.1.0
ports: ports:
- '9090:9090' # Web UI - '9090:9090' # Web UI
- '4318' # OTLP HTTP - '4318' # OTLP HTTP

View file

@ -4,7 +4,7 @@ import type { Preset } from '../types';
export const presets: Record<string, Preset> = { export const presets: Record<string, Preset> = {
safeEnv: { safeEnv: {
allowedEnv: ['GO*'], allowedEnv: ['GO*', 'RUSTC_BOOTSTRAP'],
description: description:
'Hopefully safe environment variables to allow users to configure.', 'Hopefully safe environment variables to allow users to configure.',
}, },

View file

@ -1,74 +1,522 @@
import { fs } from '../../../../test/util';
import { GitRefsDatasource } from '../../datasource/git-refs'; import { GitRefsDatasource } from '../../datasource/git-refs';
import { id as nixpkgsVersioning } from '../../versioning/nixpkgs';
import { extractPackageFile } from '.'; import { extractPackageFile } from '.';
jest.mock('../../../util/fs');
const flake1Lock = `{
"nodes": {
"root": {}
},
"root": "root",
"version": 7
}`;
const flake2Lock = `{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1720031269,
"narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9f4128e00b0ae8ec65918efeba59db998750ead6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}`;
const flake3Lock = `{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1728650607,
"narHash": "sha256-0lOnVTzRXzpk5uxbHLm3Ti3tyPAvirAIQDfwEUd8arg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "612ee628421ba2c1abca4c99684862f76cb3b089",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}`;
const flake4Lock = `{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1672057183,
"narHash": "sha256-GN7/10DNNvs1FPj9tlZA2qgNdFuYKKuS3qlHTqAxasQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b139e44d78c36c69bcbb825b20dbfa51e7738347",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixpkgs-unstable",
"type": "indirect"
}
},
"patchelf": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1718457448,
"narHash": "sha256-FSoxTcRZMGHNJh8dNtKOkcUtjhmhU6yQXcZZfUPLhQM=",
"ref": "refs/heads/master",
"rev": "a0f54334df36770b335c051e540ba40afcbf8378",
"revCount": 844,
"type": "git",
"url": "https://github.com/NixOS/patchelf.git"
},
"original": {
"type": "git",
"url": "https://github.com/NixOS/patchelf.git"
}
},
"root": {
"inputs": {
"patchelf": "patchelf"
}
}
},
"root": "root",
"version": 7
}`;
const flake5Lock = `{
"nodes": {
"ijq": {
"flake": false,
"locked": {
"lastModified": 1723569650,
"narHash": "sha256-Ho/sAhEUeSug52JALgjrKVUPCBe8+PovbJj/lniKxp8=",
"owner": "~gpanders",
"repo": "ijq",
"rev": "88f0d9ae98942bf49cba302c42b2a0f6e05f9b58",
"type": "sourcehut"
},
"original": {
"owner": "~gpanders",
"repo": "ijq",
"type": "sourcehut"
}
},
"root": {
"inputs": {
"ijq": "ijq"
}
}
},
"root": "root",
"version": 7
}`;
const flake6Lock = `{
"nodes": {
"home-manager": {
"flake": false,
"locked": {
"lastModified": 1728650932,
"narHash": "sha256-mGKzqdsRyLnGNl6WjEr7+sghGgBtYHhJQ4mjpgRTCsU=",
"owner": "rycee",
"repo": "home-manager",
"rev": "65ae9c147349829d3df0222151f53f79821c5134",
"type": "gitlab"
},
"original": {
"owner": "rycee",
"repo": "home-manager",
"type": "gitlab"
}
},
"root": {
"inputs": {
"home-manager": "home-manager"
}
}
},
"root": "root",
"version": 7
}`;
const flake7Lock = `{
"nodes": {
"root": {}
},
"root": "root",
"version": 6
}`;
const flake8Lock = `{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"ref": "nixos-unstable",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"shallow": true,
"type": "git",
"url": "https://github.com/NixOS/nixpkgs"
},
"original": {
"ref": "nixos-unstable",
"shallow": true,
"type": "git",
"url": "https://github.com/NixOS/nixpkgs"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}`;
const flake9Lock = `{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1728538411,
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}`;
const flake10Lock = `{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-extra-pkgs": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"host": "github.corp.example.com",
"lastModified": 1728666512,
"narHash": "sha256-p+l16Zzyl2DXG695yks6KQP7NkjsnEksu5GBvtL1QYg=",
"owner": "my-org",
"repo": "nixpkgs-extra-pkgs",
"rev": "6bf2706348447df6f8b86b1c3e54f87b0afda84f",
"type": "github"
},
"original": {
"host": "github.corp.example.com",
"owner": "my-org",
"repo": "nixpkgs-extra-pkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs-extra-pkgs": "nixpkgs-extra-pkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}`;
const flake11Lock = `{
"nodes": {
"data-mesher": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1727355895,
"narHash": "sha256-grZIaLgk5GgoDuTt49RTCLBh458H4YJdIAU4B3onXRw=",
"rev": "c7e39452affcc0f89e023091524e38b3aaf109e9",
"type": "tarball",
"url": "https://git.clan.lol/api/v1/repos/clan/data-mesher/archive/c7e39452affcc0f89e023091524e38b3aaf109e9.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://git.clan.lol/clan/data-mesher/archive/main.tar.gz"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"data-mesher",
"nixpkgs"
]
},
"locked": {
"lastModified": 1726153070,
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1726871744,
"narHash": "sha256-V5LpfdHyQkUF7RfOaDPrZDP+oqz88lTJrMT1+stXNwo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a1d92660c6b3b7c26fb883500a80ea9d33321be2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"data-mesher": "data-mesher"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"data-mesher",
"nixpkgs"
]
},
"locked": {
"lastModified": 1726734507,
"narHash": "sha256-VUH5O5AcOSxb0uL/m34dDkxFKP6WLQ6y4I1B4+N3L2w=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "ee41a466c2255a3abe6bc50fc6be927cdee57a9f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}`;
describe('modules/manager/nix/extract', () => { describe('modules/manager/nix/extract', () => {
it('returns null when no nixpkgs', () => { it('returns null when no inputs', async () => {
const content = `{ fs.readLocalFile.mockResolvedValueOnce(flake1Lock);
inputs = {}; expect(await extractPackageFile('', 'flake.nix')).toBeNull();
}`;
const res = extractPackageFile(content);
expect(res).toBeNull();
}); });
it('returns nixpkgs', () => { it('returns nixpkgs input', async () => {
const content = `{ fs.readLocalFile.mockResolvedValueOnce(flake2Lock);
inputs = { expect(await extractPackageFile('', 'flake.nix')).toEqual({
nixpkgs.url = "github:nixos/nixpkgs/nixos-21.11";
};
}`;
const res = extractPackageFile(content);
expect(res?.deps).toEqual([
{
depName: 'nixpkgs',
currentValue: 'nixos-21.11',
datasource: GitRefsDatasource.id,
packageName: 'https://github.com/NixOS/nixpkgs',
versioning: nixpkgsVersioning,
},
]);
});
it('is case insensitive', () => {
const content = `{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.11";
};
}`;
const res = extractPackageFile(content);
expect(res?.deps).toEqual([
{
depName: 'nixpkgs',
currentValue: 'nixos-21.11',
datasource: GitRefsDatasource.id,
packageName: 'https://github.com/NixOS/nixpkgs',
versioning: nixpkgsVersioning,
},
]);
});
it('includes nixpkgs with no explicit ref', () => {
const content = `{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
};
}`;
const res = extractPackageFile(content);
expect(res).toMatchObject({
deps: [ deps: [
{ {
currentValue: undefined, depName: 'nixpkgs',
currentDigest: '9f4128e00b0ae8ec65918efeba59db998750ead6',
currentValue: 'nixos-unstable',
datasource: GitRefsDatasource.id,
packageName: 'https://github.com/NixOS/nixpkgs',
replaceString: '9f4128e00b0ae8ec65918efeba59db998750ead6',
},
],
});
});
it('includes nixpkgs with no explicit ref', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake3Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: '612ee628421ba2c1abca4c99684862f76cb3b089',
datasource: 'git-refs', datasource: 'git-refs',
depName: 'nixpkgs', depName: 'nixpkgs',
packageName: 'https://github.com/NixOS/nixpkgs', packageName: 'https://github.com/NixOS/nixpkgs',
versioning: 'nixpkgs', },
],
});
});
it('includes patchelf from HEAD', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake4Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: 'a0f54334df36770b335c051e540ba40afcbf8378',
datasource: 'git-refs',
depName: 'patchelf',
packageName: 'https://github.com/NixOS/patchelf.git',
},
],
});
});
it('includes ijq from sourcehut without a flake', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake5Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: '88f0d9ae98942bf49cba302c42b2a0f6e05f9b58',
datasource: 'git-refs',
depName: 'ijq',
packageName: 'https://git.sr.ht/~gpanders/ijq',
},
],
});
});
it('includes home-manager from gitlab', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake6Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: '65ae9c147349829d3df0222151f53f79821c5134',
datasource: 'git-refs',
depName: 'home-manager',
packageName: 'https://gitlab.com/rycee/home-manager',
},
],
});
});
it('test other version', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake7Lock);
expect(await extractPackageFile('', 'flake.nix')).toBeNull();
});
it('includes nixpkgs with ref and shallow arguments', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake8Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: '5633bcff0c6162b9e4b5f1264264611e950c8ec7',
datasource: 'git-refs',
depName: 'nixpkgs',
packageName: 'https://github.com/NixOS/nixpkgs',
},
],
});
});
it('includes nixpkgs but using indirect type that cannot be updated', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake9Lock);
expect(await extractPackageFile('', 'flake.nix')).toBeNull();
});
it('includes flake from GitHub Enterprise', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake10Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: '6bf2706348447df6f8b86b1c3e54f87b0afda84f',
datasource: 'git-refs',
depName: 'nixpkgs-extra-pkgs',
packageName:
'https://github.corp.example.com/my-org/nixpkgs-extra-pkgs',
},
],
});
});
it('includes flake with tarball type', async () => {
fs.readLocalFile.mockResolvedValueOnce(flake11Lock);
expect(await extractPackageFile('', 'flake.nix')).toMatchObject({
deps: [
{
currentDigest: 'c7e39452affcc0f89e023091524e38b3aaf109e9',
datasource: 'git-refs',
depName: 'data-mesher',
packageName: 'https://git.clan.lol/clan/data-mesher',
}, },
], ],
}); });

View file

@ -1,23 +1,140 @@
import { logger } from '../../../logger';
import { getSiblingFileName, readLocalFile } from '../../../util/fs';
import { regEx } from '../../../util/regex'; import { regEx } from '../../../util/regex';
import { GitRefsDatasource } from '../../datasource/git-refs'; import { GitRefsDatasource } from '../../datasource/git-refs';
import { id as nixpkgsVersioning } from '../../versioning/nixpkgs';
import type { PackageDependency, PackageFileContent } from '../types'; import type { PackageDependency, PackageFileContent } from '../types';
import { NixFlakeLock } from './schema';
const nixpkgsRegex = regEx(/"github:nixos\/nixpkgs(\/(?<ref>[a-z0-9-.]+))?"/i); // TODO: add support to update nixpkgs branches in flakes.nix using nixpkgsVersioning
// as documented upstream
// https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support
const lockableHTTPTarballProtocol = regEx(
'^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$',
);
export async function extractPackageFile(
content: string,
packageFile: string,
): Promise<PackageFileContent | null> {
const packageLockFile = getSiblingFileName(packageFile, 'flake.lock');
const lockContents = await readLocalFile(packageLockFile, 'utf8');
logger.trace(`nix.extractPackageFile(${packageLockFile})`);
export function extractPackageFile(content: string): PackageFileContent | null {
const deps: PackageDependency[] = []; const deps: PackageDependency[] = [];
const match = nixpkgsRegex.exec(content); const flakeLockParsed = NixFlakeLock.safeParse(lockContents);
if (match?.groups) { if (!flakeLockParsed.success) {
const { ref } = match.groups; logger.debug(
{ packageLockFile, error: flakeLockParsed.error },
`invalid flake.lock file`,
);
return null;
}
const flakeLock = flakeLockParsed.data;
const rootInputs = flakeLock.nodes['root'].inputs;
if (!rootInputs) {
logger.debug(
{ packageLockFile, error: flakeLockParsed.error },
`flake.lock is missing "root" node`,
);
return null;
}
for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {
// the root input is a magic string for the entrypoint and only references other flake inputs
if (depName === 'root') {
continue;
}
// skip all locked nodes which cannot be updated
if (!(depName in rootInputs)) {
continue;
}
const flakeLocked = flakeInput.locked;
const flakeOriginal = flakeInput.original;
// istanbul ignore if: if we are not in a root node then original and locked always exist which cannot be easily expressed in the type
if (flakeLocked === undefined || flakeOriginal === undefined) {
logger.debug(
{ packageLockFile },
`Found empty flake input '${JSON.stringify(flakeInput)}', skipping`,
);
continue;
}
// indirect inputs cannot be reliable updated because they depend on the flake registry
if (flakeOriginal.type === 'indirect') {
continue;
}
switch (flakeLocked.type) {
case 'github':
deps.push({ deps.push({
depName: 'nixpkgs', depName,
currentValue: ref, currentValue: flakeOriginal.ref,
currentDigest: flakeLocked.rev,
replaceString: flakeLocked.rev,
datasource: GitRefsDatasource.id, datasource: GitRefsDatasource.id,
packageName: 'https://github.com/NixOS/nixpkgs', packageName: `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,
versioning: nixpkgsVersioning,
}); });
break;
case 'gitlab':
deps.push({
depName,
currentValue: flakeOriginal.ref,
currentDigest: flakeLocked.rev,
replaceString: flakeLocked.rev,
datasource: GitRefsDatasource.id,
packageName: `https://${flakeOriginal.host ?? 'gitlab.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,
});
break;
case 'git':
deps.push({
depName,
currentValue: flakeOriginal.ref,
currentDigest: flakeLocked.rev,
replaceString: flakeLocked.rev,
datasource: GitRefsDatasource.id,
packageName: flakeOriginal.url,
});
break;
case 'sourcehut':
deps.push({
depName,
currentValue: flakeOriginal.ref,
currentDigest: flakeLocked.rev,
replaceString: flakeLocked.rev,
datasource: GitRefsDatasource.id,
packageName: `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,
});
break;
case 'tarball':
deps.push({
depName,
currentValue: flakeLocked.ref,
currentDigest: flakeLocked.rev,
replaceString: flakeLocked.rev,
datasource: GitRefsDatasource.id,
// type tarball always contains this link
packageName: flakeOriginal.url!.replace(
lockableHTTPTarballProtocol,
'https://$<domain>/$<owner>/$<repo>',
),
});
break;
// istanbul ignore next: just a safeguard
default:
logger.debug(
{ packageLockFile },
`Unknown flake.lock type "${flakeLocked.type}", skipping`,
);
break;
}
} }
if (deps.length) { if (deps.length) {

View file

@ -9,7 +9,7 @@ export const url = 'https://nix.dev';
export const defaultConfig = { export const defaultConfig = {
fileMatch: ['(^|/)flake\\.nix$'], fileMatch: ['(^|/)flake\\.nix$'],
commitMessageTopic: 'nixpkgs', commitMessageTopic: 'nix',
commitMessageExtra: 'to {{newValue}}', commitMessageExtra: 'to {{newValue}}',
enabled: false, enabled: false,
}; };

View file

@ -1,4 +1,9 @@
The [`nix`](https://github.com/NixOS/nix) manager supports: The [`nix`](https://github.com/NixOS/nix) manager supports:
- [`lockFileMaintenance`](../../../configuration-options.md#lockfilemaintenance) updates for `flake.lock` - [`lockFileMaintenance`](../../../configuration-options.md#lockfilemaintenance) updates for `flake.lock`
- [nixpkgs](https://github.com/NixOS/nixpkgs) updates - input updates for `flake.lock`
For specifying `packageRules` it is important to know how `depName` and `packageName` are defined for nix updates:
- The `depName` field is equal to the nix flake input name, eg. `nix.inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";` would have the `depName` of `nixpkgs`
- The `packageName` field is equal to the fully-qualified root URL of the package source, eg. `https://github.com/NixOS/nixpkgs` for the above example.

View file

@ -0,0 +1,41 @@
import { z } from 'zod';
import { Json } from '../../../util/schema-utils';
const InputType = z.enum([
'git',
'github',
'gitlab',
'indirect',
'sourcehut',
'tarball',
]);
const LockedInput = z.object({
ref: z.string().optional(),
rev: z.string(),
type: InputType,
});
const OriginalInput = z.object({
host: z.string().optional(),
owner: z.string().optional(),
repo: z.string().optional(),
ref: z.string().optional(),
type: InputType,
url: z.string().optional(),
});
const NixInput = z.object({
inputs: z.record(z.string(), z.string().or(z.array(z.string()))).optional(),
locked: LockedInput.optional(),
original: OriginalInput.optional(),
});
export const NixFlakeLock = Json.pipe(
z.object({
nodes: z.record(z.string(), NixInput),
version: z.literal(7),
}),
);
export type NixFlakeLock = z.infer<typeof NixFlakeLock>;

View file

@ -166,8 +166,8 @@ describe('modules/platform/bitbucket/pr-cache', () => {
); );
expect(res).toMatchObject([ expect(res).toMatchObject([
{ number: 1, title: 'title' },
{ number: 2, title: 'title' }, { number: 2, title: 'title' },
{ number: 1, title: 'title' },
]); ]);
expect(cache).toEqual({ expect(cache).toEqual({
httpCache: {}, httpCache: {},

View file

@ -11,6 +11,7 @@ import type { BitbucketPrCacheData, PagedResult, PrResponse } from './types';
import { prFieldsFilter, prInfo, prStates } from './utils'; import { prFieldsFilter, prInfo, prStates } from './utils';
export class BitbucketPrCache { export class BitbucketPrCache {
private items: Pr[] = [];
private cache: BitbucketPrCacheData; private cache: BitbucketPrCacheData;
private constructor( private constructor(
@ -41,6 +42,7 @@ export class BitbucketPrCache {
} }
repoCache.platform.bitbucket.pullRequestsCache = pullRequestCache; repoCache.platform.bitbucket.pullRequestsCache = pullRequestCache;
this.cache = pullRequestCache; this.cache = pullRequestCache;
this.updateItems();
} }
private static async init( private static async init(
@ -62,7 +64,7 @@ export class BitbucketPrCache {
} }
private getPrs(): Pr[] { private getPrs(): Pr[] {
return Object.values(this.cache.items); return this.items;
} }
static async getPrs( static async getPrs(
@ -77,6 +79,7 @@ export class BitbucketPrCache {
private setPr(pr: Pr): void { private setPr(pr: Pr): void {
logger.debug(`Adding PR #${pr.number} to the PR cache`); logger.debug(`Adding PR #${pr.number} to the PR cache`);
this.cache.items[pr.number] = pr; this.cache.items[pr.number] = pr;
this.updateItems();
} }
static async setPr( static async setPr(
@ -161,6 +164,16 @@ export class BitbucketPrCache {
}, },
`PR cache sync finished`, `PR cache sync finished`,
); );
this.updateItems();
return this; return this;
} }
/**
* Ensure the pr cache starts with the most recent PRs.
* JavaScript ensures that the cache is sorted by PR number.
*/
private updateItems(): void {
this.items = Object.values(this.cache.items).reverse();
}
} }

View file

@ -1166,10 +1166,10 @@ describe('modules/platform/gitea/index', () => {
const res = await gitea.getPrList(); const res = await gitea.getPrList();
expect(res).toMatchObject([ expect(res).toMatchObject([
{ number: 1, title: 'Some PR' },
{ number: 2, title: 'Other PR' },
{ number: 3, title: 'Draft PR' },
{ number: 4, title: 'Merged PR' }, { number: 4, title: 'Merged PR' },
{ number: 3, title: 'Draft PR' },
{ number: 2, title: 'Other PR' },
{ number: 1, title: 'Some PR' },
]); ]);
}); });
@ -1209,10 +1209,10 @@ describe('modules/platform/gitea/index', () => {
const res = await gitea.getPrList(); const res = await gitea.getPrList();
expect(res).toMatchObject([ expect(res).toMatchObject([
{ number: 1, title: 'Some PR' },
{ number: 2, title: 'Other PR' },
{ number: 3, title: 'Draft PR' },
{ number: 4, title: 'Merged PR' }, { number: 4, title: 'Merged PR' },
{ number: 3, title: 'Draft PR' },
{ number: 2, title: 'Other PR' },
{ number: 1, title: 'Some PR' },
]); ]);
}); });
@ -1244,16 +1244,16 @@ describe('modules/platform/gitea/index', () => {
await initFakeRepo(scope); await initFakeRepo(scope);
const res1 = await gitea.getPrList(); const res1 = await gitea.getPrList();
expect(res1).toMatchObject([{ number: 1 }, { number: 2 }]); expect(res1).toMatchObject([{ number: 2 }, { number: 1 }]);
memCache.set('gitea-pr-cache-synced', false); memCache.set('gitea-pr-cache-synced', false);
const res2 = await gitea.getPrList(); const res2 = await gitea.getPrList();
expect(res2).toMatchObject([ expect(res2).toMatchObject([
{ number: 1 },
{ number: 2 },
{ number: 3 },
{ number: 4 }, { number: 4 },
{ number: 3 },
{ number: 2 },
{ number: 1 },
]); ]);
}); });
}); });

View file

@ -11,6 +11,7 @@ import { API_PATH, toRenovatePR } from './utils';
export class GiteaPrCache { export class GiteaPrCache {
private cache: GiteaPrCacheData; private cache: GiteaPrCacheData;
private items: Pr[] = [];
private constructor( private constructor(
private repo: string, private repo: string,
@ -31,6 +32,7 @@ export class GiteaPrCache {
} }
repoCache.platform.gitea.pullRequestsCache = pullRequestCache; repoCache.platform.gitea.pullRequestsCache = pullRequestCache;
this.cache = pullRequestCache; this.cache = pullRequestCache;
this.updateItems();
} }
static forceSync(): void { static forceSync(): void {
@ -54,7 +56,7 @@ export class GiteaPrCache {
} }
private getPrs(): Pr[] { private getPrs(): Pr[] {
return Object.values(this.cache.items); return this.items;
} }
static async getPrs( static async getPrs(
@ -68,6 +70,7 @@ export class GiteaPrCache {
private setPr(item: Pr): void { private setPr(item: Pr): void {
this.cache.items[item.number] = item; this.cache.items[item.number] = item;
this.updateItems();
} }
static async setPr( static async setPr(
@ -137,6 +140,16 @@ export class GiteaPrCache {
url = parseLinkHeader(res.headers.link)?.next?.url; url = parseLinkHeader(res.headers.link)?.next?.url;
} }
this.updateItems();
return this; return this;
} }
/**
* Ensure the pr cache starts with the most recent PRs.
* JavaScript ensures that the cache is sorted by PR number.
*/
private updateItems(): void {
this.items = Object.values(this.cache.items).reverse();
}
} }

View file

@ -269,7 +269,7 @@
"@openpgp/web-stream-tools": "0.1.3", "@openpgp/web-stream-tools": "0.1.3",
"@renovate/eslint-plugin": "file:tools/eslint", "@renovate/eslint-plugin": "file:tools/eslint",
"@semantic-release/exec": "6.0.3", "@semantic-release/exec": "6.0.3",
"@swc/core": "1.10.1", "@swc/core": "1.10.2",
"@types/auth-header": "1.0.6", "@types/auth-header": "1.0.6",
"@types/aws4": "1.11.6", "@types/aws4": "1.11.6",
"@types/better-sqlite3": "7.6.12", "@types/better-sqlite3": "7.6.12",

View file

@ -380,8 +380,8 @@ importers:
specifier: 6.0.3 specifier: 6.0.3
version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2))
'@swc/core': '@swc/core':
specifier: 1.10.1 specifier: 1.10.2
version: 1.10.1 version: 1.10.2
'@types/auth-header': '@types/auth-header':
specifier: 1.0.6 specifier: 1.0.6
version: 1.0.6 version: 1.0.6
@ -540,7 +540,7 @@ importers:
version: 2.31.0(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) version: 2.31.0(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
eslint-plugin-jest: eslint-plugin-jest:
specifier: 28.10.0 specifier: 28.10.0
version: 28.10.0(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2) version: 28.10.0(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
eslint-plugin-jest-formatting: eslint-plugin-jest-formatting:
specifier: 3.1.0 specifier: 3.1.0
version: 3.1.0(eslint@8.57.1) version: 3.1.0(eslint@8.57.1)
@ -564,16 +564,16 @@ importers:
version: 9.1.7 version: 9.1.7
jest: jest:
specifier: 29.7.0 specifier: 29.7.0
version: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) version: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-extended: jest-extended:
specifier: 4.0.2 specifier: 4.0.2
version: 4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2))) version: 4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))
jest-mock: jest-mock:
specifier: 29.7.0 specifier: 29.7.0
version: 29.7.0 version: 29.7.0
jest-mock-extended: jest-mock-extended:
specifier: 3.0.7 specifier: 3.0.7
version: 3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2) version: 3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
jest-snapshot: jest-snapshot:
specifier: 29.7.0 specifier: 29.7.0
version: 29.7.0 version: 29.7.0
@ -609,10 +609,10 @@ importers:
version: 3.0.3 version: 3.0.3
ts-jest: ts-jest:
specifier: 29.2.5 specifier: 29.2.5
version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2) version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2)
ts-node: ts-node:
specifier: 10.9.2 specifier: 10.9.2
version: 10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2) version: 10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)
type-fest: type-fest:
specifier: 4.31.0 specifier: 4.31.0
version: 4.31.0 version: 4.31.0
@ -1847,68 +1847,68 @@ packages:
resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==} resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@swc/core-darwin-arm64@1.10.1': '@swc/core-darwin-arm64@1.10.2':
resolution: {integrity: sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==} resolution: {integrity: sha512-xPDbCUfGdVjA/0yhRFVSyog73wO3/W3JNgx1PkOcCc+0OgZtgAnt4YD8QbSsUE+euc5bQJs/7HfJQ3305+HWVA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@swc/core-darwin-x64@1.10.1': '@swc/core-darwin-x64@1.10.2':
resolution: {integrity: sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==} resolution: {integrity: sha512-Dm4R9ffQw4yrGjvdYxxuO5RViwkRkSsn64WF7YGYZIlhkyFoseibPnQlOsx5qnjquc8f3h1C8/806XG+y3rMaQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@swc/core-linux-arm-gnueabihf@1.10.1': '@swc/core-linux-arm-gnueabihf@1.10.2':
resolution: {integrity: sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==} resolution: {integrity: sha512-aXTqgel7AueM7CcCOFFUq6+gJyD/A3rFBWxPT6wA34IC7oQ0IIFpJjBLl8zN6/0aZ4OQ1ExlQ7zoKaTlk5tBug==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@swc/core-linux-arm64-gnu@1.10.1': '@swc/core-linux-arm64-gnu@1.10.2':
resolution: {integrity: sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==} resolution: {integrity: sha512-HYFag6ULpnVMnHuKKAFuZH3kco/2eKKZ24I+gI2M4JlIW4soDmP8Oc2eAADIloln4SfQXzADX34m6merCWp65g==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-arm64-musl@1.10.1': '@swc/core-linux-arm64-musl@1.10.2':
resolution: {integrity: sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==} resolution: {integrity: sha512-N8es+V+M9GijYsxfiIG3NJ+lHgoZosX+yjblc5eOx0xrBDeqH3kNLhJpctOczrJk0rUjN+zX5x+8H8qurcEAaw==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-x64-gnu@1.10.1': '@swc/core-linux-x64-gnu@1.10.2':
resolution: {integrity: sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==} resolution: {integrity: sha512-fI4rxJkWQaNeG4UcuqKJrc1JM+nAwIzzFba9+A4Aohc6z0EgPokrA1v7WmPUObO+cdZjVXdMpDGkhGQhbok1aQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-linux-x64-musl@1.10.1': '@swc/core-linux-x64-musl@1.10.2':
resolution: {integrity: sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==} resolution: {integrity: sha512-ycDOxBgII/2xkusMgq2S9n81IQ8SeWk1FU0zuUsZrUkaXEq/78+nHFo/0IStPLrtRxzG2gJ0JZvfaa6jMxr79Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-win32-arm64-msvc@1.10.1': '@swc/core-win32-arm64-msvc@1.10.2':
resolution: {integrity: sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==} resolution: {integrity: sha512-s7/UrbdfYGdUar+Nj8jxNeXaFdryWnKuJU5udDONgk9gb1xp7K5TPxBL9j7EtCrAenM2sR9Bd84ZemwzyZ/VLw==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@swc/core-win32-ia32-msvc@1.10.1': '@swc/core-win32-ia32-msvc@1.10.2':
resolution: {integrity: sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==} resolution: {integrity: sha512-sz8f+dmrzb816Ji25G+vs8HMq6zHq1IMKF4hVUnSJKdNr2k789+qRjF1fnv3YDcz5kkeYSvolXqVS1mCezDebg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@swc/core-win32-x64-msvc@1.10.1': '@swc/core-win32-x64-msvc@1.10.2':
resolution: {integrity: sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==} resolution: {integrity: sha512-XXYHuc5KdhuLx1nP8cEKW+5Kakxy+iq/jcuJ52+27E2uB+xxzLeXvbPvz645je3Cti5nQ4la2HIn6tpST5ufSw==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@swc/core@1.10.1': '@swc/core@1.10.2':
resolution: {integrity: sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==} resolution: {integrity: sha512-d3reIYowBL6gbp4jC6FRZ3hE0eWcWwqh0XcHd6k5rKF/oZA6jLb7gxIRduJhrn+jyLz/HCC8WyfomUkEcs7iZQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
'@swc/helpers': '*' '@swc/helpers': '*'
@ -7490,7 +7490,7 @@ snapshots:
jest-util: 29.7.0 jest-util: 29.7.0
slash: 3.0.0 slash: 3.0.0
'@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2))': '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))':
dependencies: dependencies:
'@jest/console': 29.7.0 '@jest/console': 29.7.0
'@jest/reporters': 29.7.0 '@jest/reporters': 29.7.0
@ -7504,7 +7504,7 @@ snapshots:
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-haste-map: 29.7.0 jest-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -8586,51 +8586,51 @@ snapshots:
'@smithy/types': 3.7.2 '@smithy/types': 3.7.2
tslib: 2.8.1 tslib: 2.8.1
'@swc/core-darwin-arm64@1.10.1': '@swc/core-darwin-arm64@1.10.2':
optional: true optional: true
'@swc/core-darwin-x64@1.10.1': '@swc/core-darwin-x64@1.10.2':
optional: true optional: true
'@swc/core-linux-arm-gnueabihf@1.10.1': '@swc/core-linux-arm-gnueabihf@1.10.2':
optional: true optional: true
'@swc/core-linux-arm64-gnu@1.10.1': '@swc/core-linux-arm64-gnu@1.10.2':
optional: true optional: true
'@swc/core-linux-arm64-musl@1.10.1': '@swc/core-linux-arm64-musl@1.10.2':
optional: true optional: true
'@swc/core-linux-x64-gnu@1.10.1': '@swc/core-linux-x64-gnu@1.10.2':
optional: true optional: true
'@swc/core-linux-x64-musl@1.10.1': '@swc/core-linux-x64-musl@1.10.2':
optional: true optional: true
'@swc/core-win32-arm64-msvc@1.10.1': '@swc/core-win32-arm64-msvc@1.10.2':
optional: true optional: true
'@swc/core-win32-ia32-msvc@1.10.1': '@swc/core-win32-ia32-msvc@1.10.2':
optional: true optional: true
'@swc/core-win32-x64-msvc@1.10.1': '@swc/core-win32-x64-msvc@1.10.2':
optional: true optional: true
'@swc/core@1.10.1': '@swc/core@1.10.2':
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
'@swc/types': 0.1.17 '@swc/types': 0.1.17
optionalDependencies: optionalDependencies:
'@swc/core-darwin-arm64': 1.10.1 '@swc/core-darwin-arm64': 1.10.2
'@swc/core-darwin-x64': 1.10.1 '@swc/core-darwin-x64': 1.10.2
'@swc/core-linux-arm-gnueabihf': 1.10.1 '@swc/core-linux-arm-gnueabihf': 1.10.2
'@swc/core-linux-arm64-gnu': 1.10.1 '@swc/core-linux-arm64-gnu': 1.10.2
'@swc/core-linux-arm64-musl': 1.10.1 '@swc/core-linux-arm64-musl': 1.10.2
'@swc/core-linux-x64-gnu': 1.10.1 '@swc/core-linux-x64-gnu': 1.10.2
'@swc/core-linux-x64-musl': 1.10.1 '@swc/core-linux-x64-musl': 1.10.2
'@swc/core-win32-arm64-msvc': 1.10.1 '@swc/core-win32-arm64-msvc': 1.10.2
'@swc/core-win32-ia32-msvc': 1.10.1 '@swc/core-win32-ia32-msvc': 1.10.2
'@swc/core-win32-x64-msvc': 1.10.1 '@swc/core-win32-x64-msvc': 1.10.2
'@swc/counter@0.1.3': {} '@swc/counter@0.1.3': {}
@ -9668,13 +9668,13 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.7.2 typescript: 5.7.2
create-jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)): create-jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)):
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 chalk: 4.1.2
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-util: 29.7.0 jest-util: 29.7.0
prompts: 2.4.2 prompts: 2.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -10094,13 +10094,13 @@ snapshots:
dependencies: dependencies:
eslint: 8.57.1 eslint: 8.57.1
eslint-plugin-jest@28.10.0(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2): eslint-plugin-jest@28.10.0(@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
dependencies: dependencies:
'@typescript-eslint/utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/utils': 8.18.2(eslint@8.57.1)(typescript@5.7.2)
eslint: 8.57.1 eslint: 8.57.1
optionalDependencies: optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/eslint-plugin': 8.18.2(@typescript-eslint/parser@8.18.2(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
@ -11133,16 +11133,16 @@ snapshots:
- babel-plugin-macros - babel-plugin-macros
- supports-color - supports-color
jest-cli@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)): jest-cli@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)):
dependencies: dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) create-jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
exit: 0.1.2 exit: 0.1.2
import-local: 3.2.0 import-local: 3.2.0
jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest-config: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-util: 29.7.0 jest-util: 29.7.0
jest-validate: 29.7.0 jest-validate: 29.7.0
yargs: 17.7.2 yargs: 17.7.2
@ -11152,7 +11152,7 @@ snapshots:
- supports-color - supports-color
- ts-node - ts-node
jest-config@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)): jest-config@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)):
dependencies: dependencies:
'@babel/core': 7.26.0 '@babel/core': 7.26.0
'@jest/test-sequencer': 29.7.0 '@jest/test-sequencer': 29.7.0
@ -11178,7 +11178,7 @@ snapshots:
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
optionalDependencies: optionalDependencies:
'@types/node': 20.17.10 '@types/node': 20.17.10
ts-node: 10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2) ts-node: 10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- supports-color - supports-color
@ -11211,12 +11211,12 @@ snapshots:
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
jest-extended@4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2))): jest-extended@4.0.2(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))):
dependencies: dependencies:
jest-diff: 29.7.0 jest-diff: 29.7.0
jest-get-type: 29.6.3 jest-get-type: 29.6.3
optionalDependencies: optionalDependencies:
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-get-type@29.6.3: {} jest-get-type@29.6.3: {}
@ -11267,9 +11267,9 @@ snapshots:
slash: 3.0.0 slash: 3.0.0
stack-utils: 2.0.6 stack-utils: 2.0.6
jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2): jest-mock-extended@3.0.7(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
dependencies: dependencies:
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
ts-essentials: 10.0.4(typescript@5.7.2) ts-essentials: 10.0.4(typescript@5.7.2)
typescript: 5.7.2 typescript: 5.7.2
@ -11418,12 +11418,12 @@ snapshots:
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)): jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)):
dependencies: dependencies:
'@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
'@jest/types': 29.6.3 '@jest/types': 29.6.3
import-local: 3.2.0 import-local: 3.2.0
jest-cli: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest-cli: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- babel-plugin-macros - babel-plugin-macros
@ -13340,12 +13340,12 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.7.2 typescript: 5.7.2
ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2): ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2):
dependencies: dependencies:
bs-logger: 0.2.6 bs-logger: 0.2.6
ejs: 3.1.10 ejs: 3.1.10
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2))
jest-util: 29.7.0 jest-util: 29.7.0
json5: 2.2.3 json5: 2.2.3
lodash.memoize: 4.1.2 lodash.memoize: 4.1.2
@ -13359,7 +13359,7 @@ snapshots:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.26.0) babel-jest: 29.7.0(@babel/core@7.26.0)
ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2): ts-node@10.9.2(@swc/core@1.10.2)(@types/node@20.17.10)(typescript@5.7.2):
dependencies: dependencies:
'@cspotcode/source-map-support': 0.8.1 '@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11 '@tsconfig/node10': 1.0.11
@ -13377,7 +13377,7 @@ snapshots:
v8-compile-cache-lib: 3.0.1 v8-compile-cache-lib: 3.0.1
yn: 3.1.1 yn: 3.1.1
optionalDependencies: optionalDependencies:
'@swc/core': 1.10.1 '@swc/core': 1.10.2
tsconfig-paths@3.15.0: tsconfig-paths@3.15.0:
dependencies: dependencies: