Sprint 16 — постоянный regression-контур: flows + visual + nightly +
CI workflow + README badges.
Ключевые цифры:
- 35 flow-тестов: 35/35 ✓ за ~30 секунд (workers=2 локально).
- 60 visual snapshot'ов (15 страниц × 2 темы × 2 viewport'a):
60/60 ✓ за ~4 минуты с retries=1.
- Полный регресс прогон: ~5 минут (цель была < 15).
Что сделано:
1. tests/regression/ — Playwright + factories + 8 spec-файлов.
OrgFactory builder создаёт org через API за O(N) HTTP вызовов
(signup → token → refs → products → counterparties → posted supplies).
Каждый flow независим, использует свой fresh-org.
2. tests/regression/visual/ — 15 страниц × 2 темы × 2 viewport'a.
Маски на динамический контент (артикулы с Date.now, KPI'ы,
delta-стрелки) чтобы 0.2% threshold не флакал. snapshotPathTemplate
c {projectName} — desktop+mobile не затирают друг друга.
3. tests/regression/factories/OrgFactory.ts — builder с .withProducts
.withCounterparties .withSupplies. Retry signup'a на 429.
4. .forgejo/workflows/regression.yml — on workflow_run после
Docker API/Web; cache на pnpm-store + Playwright-browsers;
артефакты при failure; Telegram-уведомление в обоих случаях.
5. ~/nightly-verify.sh + cron `0 4 * * *`: health → redeploy если
нужно → smoke flows; в воскресенье полный flows+visual. Логи с
ротацией 14 дней. Telegram на провал (~/.fm-watchdog/telegram-*).
6. scripts/generate-badges.sh — coverage из cobertura.xml в SVG через
shields.io (offline fallback). 4 CI-status badge + coverage badge в
README; CI step «Update coverage badge» авто-коммитит обновлённый
SVG на push в main.
Локальное число flake'ов: 1/60 visual на retry=1 (product-new light) —
случайная гонка маски, retry'ит и проходит.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
439 lines
13 KiB
YAML
439 lines
13 KiB
YAML
lockfileVersion: '9.0'
|
|
|
|
settings:
|
|
autoInstallPeers: true
|
|
excludeLinksFromLockfile: false
|
|
|
|
importers:
|
|
|
|
.:
|
|
devDependencies:
|
|
'@playwright/test':
|
|
specifier: ^1.60.0
|
|
version: 1.60.0
|
|
'@types/node':
|
|
specifier: ^20.17.10
|
|
version: 20.19.42
|
|
otplib:
|
|
specifier: ^13.4.0
|
|
version: 13.4.1
|
|
tsx:
|
|
specifier: ^4.19.2
|
|
version: 4.22.4
|
|
typescript:
|
|
specifier: ^5.7.2
|
|
version: 5.9.3
|
|
|
|
packages:
|
|
|
|
'@esbuild/aix-ppc64@0.28.0':
|
|
resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
|
|
engines: {node: '>=18'}
|
|
cpu: [ppc64]
|
|
os: [aix]
|
|
|
|
'@esbuild/android-arm64@0.28.0':
|
|
resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [android]
|
|
|
|
'@esbuild/android-arm@0.28.0':
|
|
resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm]
|
|
os: [android]
|
|
|
|
'@esbuild/android-x64@0.28.0':
|
|
resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [android]
|
|
|
|
'@esbuild/darwin-arm64@0.28.0':
|
|
resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [darwin]
|
|
|
|
'@esbuild/darwin-x64@0.28.0':
|
|
resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [darwin]
|
|
|
|
'@esbuild/freebsd-arm64@0.28.0':
|
|
resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [freebsd]
|
|
|
|
'@esbuild/freebsd-x64@0.28.0':
|
|
resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [freebsd]
|
|
|
|
'@esbuild/linux-arm64@0.28.0':
|
|
resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-arm@0.28.0':
|
|
resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-ia32@0.28.0':
|
|
resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
|
|
engines: {node: '>=18'}
|
|
cpu: [ia32]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-loong64@0.28.0':
|
|
resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
|
|
engines: {node: '>=18'}
|
|
cpu: [loong64]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-mips64el@0.28.0':
|
|
resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
|
|
engines: {node: '>=18'}
|
|
cpu: [mips64el]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-ppc64@0.28.0':
|
|
resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
|
|
engines: {node: '>=18'}
|
|
cpu: [ppc64]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-riscv64@0.28.0':
|
|
resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
|
|
engines: {node: '>=18'}
|
|
cpu: [riscv64]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-s390x@0.28.0':
|
|
resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
|
|
engines: {node: '>=18'}
|
|
cpu: [s390x]
|
|
os: [linux]
|
|
|
|
'@esbuild/linux-x64@0.28.0':
|
|
resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [linux]
|
|
|
|
'@esbuild/netbsd-arm64@0.28.0':
|
|
resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [netbsd]
|
|
|
|
'@esbuild/netbsd-x64@0.28.0':
|
|
resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [netbsd]
|
|
|
|
'@esbuild/openbsd-arm64@0.28.0':
|
|
resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [openbsd]
|
|
|
|
'@esbuild/openbsd-x64@0.28.0':
|
|
resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [openbsd]
|
|
|
|
'@esbuild/openharmony-arm64@0.28.0':
|
|
resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [openharmony]
|
|
|
|
'@esbuild/sunos-x64@0.28.0':
|
|
resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [sunos]
|
|
|
|
'@esbuild/win32-arm64@0.28.0':
|
|
resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
|
|
engines: {node: '>=18'}
|
|
cpu: [arm64]
|
|
os: [win32]
|
|
|
|
'@esbuild/win32-ia32@0.28.0':
|
|
resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
|
|
engines: {node: '>=18'}
|
|
cpu: [ia32]
|
|
os: [win32]
|
|
|
|
'@esbuild/win32-x64@0.28.0':
|
|
resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
|
|
engines: {node: '>=18'}
|
|
cpu: [x64]
|
|
os: [win32]
|
|
|
|
'@noble/hashes@2.2.0':
|
|
resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
|
|
engines: {node: '>= 20.19.0'}
|
|
|
|
'@otplib/core@13.4.1':
|
|
resolution: {integrity: sha512-KIXgK1hNtWJEBMTastbe1bpmuais+3f+ATeO8TkMs2rNkfGO1FbQy8+/UWVEu3TR/iTJerU0idkPudaPmLP2BA==}
|
|
|
|
'@otplib/hotp@13.4.1':
|
|
resolution: {integrity: sha512-g9q04SwpG5ZtMnVkUcgcoAlwCH4YLROZN1qhyBwgkBzqYYVSYhpP6gSGaxGHwePLt1c+e6NqDlgIZN+e1/XPuA==}
|
|
|
|
'@otplib/plugin-base32-scure@13.4.1':
|
|
resolution: {integrity: sha512-Fs/r5qisC05SRhT6xWXaypB6PVC0vgWf6zztmi0J5RnQ09OJiPDWCJFH6cDm6ANsrdvB9di7X+Jb7L13BoEbUA==}
|
|
|
|
'@otplib/plugin-crypto-noble@13.4.1':
|
|
resolution: {integrity: sha512-PJfVW8/1hdS6CfxLheKPZSLTwDq4TijZbN4yRjxlv0ODdzmxpM+wGwWr1JXMdy0xJPxLziydQD5gdVqrR4/gAg==}
|
|
|
|
'@otplib/totp@13.4.1':
|
|
resolution: {integrity: sha512-QOkBVPrf6AM4qZaReZPSk9/I8ATVdZpIISJz115MqeVtcrbcr5llPZ0J7804tpnjnp1vCRkI5Qjd47HhgVteBQ==}
|
|
|
|
'@otplib/uri@13.4.1':
|
|
resolution: {integrity: sha512-xaIm7bvICMhoB2rZIR5luiaMdssWR5nY5nXnR1fdezUgZuEO58D6zrGzLp7pQuBmlpmL0HagnscDQFoskp9yiA==}
|
|
|
|
'@playwright/test@1.60.0':
|
|
resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==}
|
|
engines: {node: '>=18'}
|
|
hasBin: true
|
|
|
|
'@scure/base@2.2.0':
|
|
resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==}
|
|
|
|
'@types/node@20.19.42':
|
|
resolution: {integrity: sha512-5L7SUaFC1RyDraj2yRhyBzHTobyXHmohD100CChNtyPyleoq37Mqab5Gn8XEKI04dfN/oqPdpHk38MgcQWHbZg==}
|
|
|
|
esbuild@0.28.0:
|
|
resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
|
|
engines: {node: '>=18'}
|
|
hasBin: true
|
|
|
|
fsevents@2.3.2:
|
|
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
os: [darwin]
|
|
|
|
fsevents@2.3.3:
|
|
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
os: [darwin]
|
|
|
|
otplib@13.4.1:
|
|
resolution: {integrity: sha512-o5CxfDw6bh7hoDv0NUUIcc0RqzJ9ipfUrzeKheKJ+vs4rXZnDlA9n4a/7R1cDjpmLjKLix4BgNVRmoDkm5rLSQ==}
|
|
|
|
playwright-core@1.60.0:
|
|
resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==}
|
|
engines: {node: '>=18'}
|
|
hasBin: true
|
|
|
|
playwright@1.60.0:
|
|
resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==}
|
|
engines: {node: '>=18'}
|
|
hasBin: true
|
|
|
|
tsx@4.22.4:
|
|
resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==}
|
|
engines: {node: '>=18.0.0'}
|
|
hasBin: true
|
|
|
|
typescript@5.9.3:
|
|
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
|
|
engines: {node: '>=14.17'}
|
|
hasBin: true
|
|
|
|
undici-types@6.21.0:
|
|
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
|
|
|
snapshots:
|
|
|
|
'@esbuild/aix-ppc64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/android-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/android-arm@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/android-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/darwin-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/darwin-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/freebsd-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/freebsd-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-arm@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-ia32@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-loong64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-mips64el@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-ppc64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-riscv64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-s390x@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/linux-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/netbsd-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/netbsd-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/openbsd-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/openbsd-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/openharmony-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/sunos-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/win32-arm64@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/win32-ia32@0.28.0':
|
|
optional: true
|
|
|
|
'@esbuild/win32-x64@0.28.0':
|
|
optional: true
|
|
|
|
'@noble/hashes@2.2.0': {}
|
|
|
|
'@otplib/core@13.4.1': {}
|
|
|
|
'@otplib/hotp@13.4.1':
|
|
dependencies:
|
|
'@otplib/core': 13.4.1
|
|
'@otplib/uri': 13.4.1
|
|
|
|
'@otplib/plugin-base32-scure@13.4.1':
|
|
dependencies:
|
|
'@otplib/core': 13.4.1
|
|
'@scure/base': 2.2.0
|
|
|
|
'@otplib/plugin-crypto-noble@13.4.1':
|
|
dependencies:
|
|
'@noble/hashes': 2.2.0
|
|
'@otplib/core': 13.4.1
|
|
|
|
'@otplib/totp@13.4.1':
|
|
dependencies:
|
|
'@otplib/core': 13.4.1
|
|
'@otplib/hotp': 13.4.1
|
|
'@otplib/uri': 13.4.1
|
|
|
|
'@otplib/uri@13.4.1':
|
|
dependencies:
|
|
'@otplib/core': 13.4.1
|
|
|
|
'@playwright/test@1.60.0':
|
|
dependencies:
|
|
playwright: 1.60.0
|
|
|
|
'@scure/base@2.2.0': {}
|
|
|
|
'@types/node@20.19.42':
|
|
dependencies:
|
|
undici-types: 6.21.0
|
|
|
|
esbuild@0.28.0:
|
|
optionalDependencies:
|
|
'@esbuild/aix-ppc64': 0.28.0
|
|
'@esbuild/android-arm': 0.28.0
|
|
'@esbuild/android-arm64': 0.28.0
|
|
'@esbuild/android-x64': 0.28.0
|
|
'@esbuild/darwin-arm64': 0.28.0
|
|
'@esbuild/darwin-x64': 0.28.0
|
|
'@esbuild/freebsd-arm64': 0.28.0
|
|
'@esbuild/freebsd-x64': 0.28.0
|
|
'@esbuild/linux-arm': 0.28.0
|
|
'@esbuild/linux-arm64': 0.28.0
|
|
'@esbuild/linux-ia32': 0.28.0
|
|
'@esbuild/linux-loong64': 0.28.0
|
|
'@esbuild/linux-mips64el': 0.28.0
|
|
'@esbuild/linux-ppc64': 0.28.0
|
|
'@esbuild/linux-riscv64': 0.28.0
|
|
'@esbuild/linux-s390x': 0.28.0
|
|
'@esbuild/linux-x64': 0.28.0
|
|
'@esbuild/netbsd-arm64': 0.28.0
|
|
'@esbuild/netbsd-x64': 0.28.0
|
|
'@esbuild/openbsd-arm64': 0.28.0
|
|
'@esbuild/openbsd-x64': 0.28.0
|
|
'@esbuild/openharmony-arm64': 0.28.0
|
|
'@esbuild/sunos-x64': 0.28.0
|
|
'@esbuild/win32-arm64': 0.28.0
|
|
'@esbuild/win32-ia32': 0.28.0
|
|
'@esbuild/win32-x64': 0.28.0
|
|
|
|
fsevents@2.3.2:
|
|
optional: true
|
|
|
|
fsevents@2.3.3:
|
|
optional: true
|
|
|
|
otplib@13.4.1:
|
|
dependencies:
|
|
'@otplib/core': 13.4.1
|
|
'@otplib/hotp': 13.4.1
|
|
'@otplib/plugin-base32-scure': 13.4.1
|
|
'@otplib/plugin-crypto-noble': 13.4.1
|
|
'@otplib/totp': 13.4.1
|
|
'@otplib/uri': 13.4.1
|
|
|
|
playwright-core@1.60.0: {}
|
|
|
|
playwright@1.60.0:
|
|
dependencies:
|
|
playwright-core: 1.60.0
|
|
optionalDependencies:
|
|
fsevents: 2.3.2
|
|
|
|
tsx@4.22.4:
|
|
dependencies:
|
|
esbuild: 0.28.0
|
|
optionalDependencies:
|
|
fsevents: 2.3.3
|
|
|
|
typescript@5.9.3: {}
|
|
|
|
undici-types@6.21.0: {}
|