mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
merge: add playwright-cli low-spec throttling workflow
This commit is contained in:
@@ -59,6 +59,7 @@ When CodeGraph MCP tools are available and `.codegraph/` exists, prefer them for
|
||||
| Bug report in a specific file/line | Start with git history scan from `docs/agent-playbooks/bug-investigation.md` before editing |
|
||||
| `CHANGELOG.md` or package version changed | Run `yarn blotter:check`; if needed add a concise release one-liner |
|
||||
| UI/visual behavior changed | Verify in browser with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari; test desktop and mobile viewport; if existing browser state matters, confirm whether to use a fresh session or the contributor's current browser session |
|
||||
| Loading, navigation, or interaction speed matters (or perf may just be a fast dev machine) | Run a low-spec pass: throttle a Chromium `playwright-cli` session with `./scripts/pw-throttle.sh <session> mid` (or `low`), then verify. Chromium only. See `docs/agent-playbooks/low-spec-verification.md` |
|
||||
| Long-running task spans multiple sessions, handoffs, or spawned agents | Use `docs/agent-playbooks/long-running-agent-workflow.md`, keep a machine-readable feature list plus a progress log, and run `./scripts/agent-init.sh --smoke` before starting a fresh feature slice |
|
||||
| New reviewable feature/fix started while on `master` | Create a short-lived `codex/feature/*`, `codex/fix/*`, `codex/docs/*`, or `codex/chore/*` branch from `master` before editing; use a separate worktree only for parallel tasks |
|
||||
| New unrelated task started while another task branch is already checked out or being worked on by another agent | Create a separate worktree from `master`, create a new short-lived task branch there, and keep each agent on its own worktree/branch/PR |
|
||||
@@ -156,6 +157,7 @@ src/
|
||||
- Treat React Doctor output as actionable guidance; prioritize `error` then `warning`.
|
||||
- For UI/visual changes, verify with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari.
|
||||
- Cover desktop and a mobile viewport flow in each browser engine when the change affects layout, touch behavior, or responsiveness.
|
||||
- When loading, navigation, or interaction speed matters (or you cannot tell whether perf is real or just a fast dev machine), run a low-spec pass: `./scripts/pw-throttle.sh <session> mid` (or `low`) applies CPU + network throttling to a Chromium `playwright-cli` session before you measure. Throttling is Chromium-only; keep the Firefox/WebKit checks unthrottled. See `docs/agent-playbooks/low-spec-verification.md`.
|
||||
- For browser automation and verification, default to a fresh isolated `playwright-cli` session for reproducibility.
|
||||
- If the task depends on existing auth, cookies, extensions, open tabs, or another live browser state, explicitly confirm whether to use a fresh isolated session or the contributor's current browser session.
|
||||
- Do not assume permission to drive the contributor's active personal browser session.
|
||||
@@ -254,3 +256,4 @@ Use these only when relevant to the active task:
|
||||
- Skills/tools setup and MCP rationale: `docs/agent-playbooks/skills-and-tools.md`
|
||||
- Bug investigation workflow: `docs/agent-playbooks/bug-investigation.md`
|
||||
- Known surprises log: `docs/agent-playbooks/known-surprises.md`
|
||||
- Low-spec device verification (CPU/network throttling): `docs/agent-playbooks/low-spec-verification.md`
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Low-Spec Device Verification
|
||||
|
||||
Use this playbook when you need to know whether loading, navigation, or interaction speed is a real user problem or just an artifact of a fast development machine. It adds CPU + network throttling on top of the normal `playwright-cli` verification flow.
|
||||
|
||||
## When to run
|
||||
|
||||
- A change touches navigation, data loading, list/feed rendering, images/media, or anything where "is this slow?" matters.
|
||||
- You cannot tell whether jank or lag is real because the dev machine is high-spec.
|
||||
- Before claiming a perf-sensitive change "feels fast".
|
||||
|
||||
This is an extra pass, not a replacement for the standard Chrome/Firefox/WebKit verification.
|
||||
|
||||
## How it works
|
||||
|
||||
`playwright-cli` (`@playwright/cli`) has no throttle command, so throttling is applied through CDP via `run-code`. `scripts/pw-throttle.sh` wraps that call. The throttle is set on the page target and persists for the life of the `-s=<session>`, so apply it once, then run the usual `goto` / `snapshot` / `screenshot` commands on the same session.
|
||||
|
||||
Throttling is **Chromium-only** (CDP). It does not work on `firefox` or `webkit` sessions — run those engines unthrottled.
|
||||
|
||||
## Profiles
|
||||
|
||||
| Profile | CPU | Network (down / up / latency) | Models |
|
||||
|---|---|---|---|
|
||||
| `mid` | 4x | ~1.6 Mbps / 750 Kbps / 150 ms | mid-tier phone (Lighthouse mobile default) |
|
||||
| `low` | 6x | ~400 Kbps / 400 Kbps / 400 ms | low-end phone / poor connection |
|
||||
| `cpu4` | 4x | full speed | isolate JS cost from network |
|
||||
| `cpu6` | 6x | full speed | isolate JS cost from network |
|
||||
| `off` | 1x | full speed | reset to normal |
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# open a Chromium session, throttle it to a mid-tier phone, then verify as usual
|
||||
playwright-cli -s=lowspec open https://5chan.localhost --browser=chrome
|
||||
./scripts/pw-throttle.sh lowspec mid
|
||||
playwright-cli -s=lowspec snapshot
|
||||
playwright-cli -s=lowspec screenshot --filename=lowspec-mid.png
|
||||
|
||||
# tighten to a low-end device
|
||||
./scripts/pw-throttle.sh lowspec low
|
||||
|
||||
# isolate JS cost (CPU throttle, full-speed network)
|
||||
./scripts/pw-throttle.sh lowspec cpu4
|
||||
|
||||
# reset and finish
|
||||
./scripts/pw-throttle.sh lowspec off
|
||||
playwright-cli -s=lowspec close
|
||||
```
|
||||
|
||||
## Measuring, not guessing
|
||||
|
||||
Throttled numbers are approximations (CDP throttling, not a real device), but the relative difference is the signal. For the initial page load:
|
||||
|
||||
```bash
|
||||
playwright-cli -s=lowspec eval "() => Math.round(performance.getEntriesByType('navigation')[0].duration)"
|
||||
```
|
||||
|
||||
5chan is a React Router SPA, so in-app navigation does not create a new navigation entry. Time those manually: read `performance.now()` before triggering the route change, then again once the target content appears in the snapshot.
|
||||
|
||||
## Caveats
|
||||
|
||||
- Chromium-only. Skip on Firefox/WebKit sessions; keep those checks unthrottled.
|
||||
- The `low` latency is intentionally aggressive; if requests time out, fall back to `mid`.
|
||||
- For render/rerender hotspots after a slow result, use the `profile-browsing` skill (it drives `playwright-cli` + react-scan) on the already-throttled session.
|
||||
+1
-1
@@ -171,7 +171,7 @@
|
||||
"playwright": "1.56.1",
|
||||
"progress": "2.0.3",
|
||||
"react-doctor": "0.2.6",
|
||||
"react-grab": "0.1.32",
|
||||
"react-grab": "0.1.37",
|
||||
"react-scan": "0.5.3",
|
||||
"stream-browserify": "3.0.0",
|
||||
"vite": "8.0.5",
|
||||
|
||||
@@ -230,6 +230,7 @@ When CodeGraph MCP tools are available and `.codegraph/` exists, prefer them for
|
||||
| Bug report in a specific file/line | Start with git history scan from `docs/agent-playbooks/bug-investigation.md` before editing |
|
||||
| `CHANGELOG.md` or package version changed | Run `yarn blotter:check`; if needed add a concise release one-liner |
|
||||
| UI/visual behavior changed | Verify in browser with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari; test desktop and mobile viewport; if existing browser state matters, confirm whether to use a fresh session or the contributor's current browser session |
|
||||
| Loading, navigation, or interaction speed matters (or perf may just be a fast dev machine) | Run a low-spec pass: throttle a Chromium `playwright-cli` session with `./scripts/pw-throttle.sh <session> mid` (or `low`), then verify. Chromium only. See `docs/agent-playbooks/low-spec-verification.md` |
|
||||
| Long-running task spans multiple sessions, handoffs, or spawned agents | Use `docs/agent-playbooks/long-running-agent-workflow.md`, keep a machine-readable feature list plus a progress log, and run `./scripts/agent-init.sh --smoke` before starting a fresh feature slice |
|
||||
| New reviewable feature/fix started while on `master` | Create a short-lived `codex/feature/*`, `codex/fix/*`, `codex/docs/*`, or `codex/chore/*` branch from `master` before editing; use a separate worktree only for parallel tasks |
|
||||
| New unrelated task started while another task branch is already checked out or being worked on by another agent | Create a separate worktree from `master`, create a new short-lived task branch there, and keep each agent on its own worktree/branch/PR |
|
||||
@@ -327,6 +328,7 @@ src/
|
||||
- Treat React Doctor output as actionable guidance; prioritize `error` then `warning`.
|
||||
- For UI/visual changes, verify with `playwright-cli` across Chrome/Blink, Firefox/Gecko, and WebKit/Safari.
|
||||
- Cover desktop and a mobile viewport flow in each browser engine when the change affects layout, touch behavior, or responsiveness.
|
||||
- When loading, navigation, or interaction speed matters (or you cannot tell whether perf is real or just a fast dev machine), run a low-spec pass: `./scripts/pw-throttle.sh <session> mid` (or `low`) applies CPU + network throttling to a Chromium `playwright-cli` session before you measure. Throttling is Chromium-only; keep the Firefox/WebKit checks unthrottled. See `docs/agent-playbooks/low-spec-verification.md`.
|
||||
- For browser automation and verification, default to a fresh isolated `playwright-cli` session for reproducibility.
|
||||
- If the task depends on existing auth, cookies, extensions, open tabs, or another live browser state, explicitly confirm whether to use a fresh isolated session or the contributor's current browser session.
|
||||
- Do not assume permission to drive the contributor's active personal browser session.
|
||||
@@ -425,6 +427,7 @@ Use these only when relevant to the active task:
|
||||
- Skills/tools setup and MCP rationale: `docs/agent-playbooks/skills-and-tools.md`
|
||||
- Bug investigation workflow: `docs/agent-playbooks/bug-investigation.md`
|
||||
- Known surprises log: `docs/agent-playbooks/known-surprises.md`
|
||||
- Low-spec device verification (CPU/network throttling): `docs/agent-playbooks/low-spec-verification.md`
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# pw-throttle.sh — apply CPU + network throttling to a playwright-cli Chromium
|
||||
# session so UI can be verified as it behaves on low-spec devices / slow networks.
|
||||
#
|
||||
# @playwright/cli has no throttle command, so this wraps a CDP call via `run-code`.
|
||||
# The throttle is set on the page target and persists for the life of the session:
|
||||
# apply it once, then run the usual playwright-cli goto/snapshot/screenshot commands
|
||||
# on the same -s=<session>. CDP is Chromium-only, so this works on chrome/msedge
|
||||
# sessions but not firefox/webkit.
|
||||
|
||||
usage() {
|
||||
echo "Usage: ./scripts/pw-throttle.sh <session> <profile>"
|
||||
echo " profiles:"
|
||||
echo " mid 4x CPU + ~1.6 Mbps / 750 Kbps / 150ms (mid-tier phone, Lighthouse mobile default)"
|
||||
echo " low 6x CPU + ~400 Kbps / 400 Kbps / 400ms (low-end phone / poor connection)"
|
||||
echo " cpu4 4x CPU, full-speed network (isolate JS cost)"
|
||||
echo " cpu6 6x CPU, full-speed network (isolate JS cost)"
|
||||
echo " off reset to full speed"
|
||||
}
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
session="$1"
|
||||
profile="$2"
|
||||
|
||||
# downloadThroughput / uploadThroughput are bytes/sec; latency is ms.
|
||||
# A value <= 0 for throughput/latency disables that part of network throttling.
|
||||
case "$profile" in
|
||||
mid) cpu=4; down=200000; up=93750; lat=150 ;;
|
||||
low) cpu=6; down=50000; up=50000; lat=400 ;;
|
||||
cpu4) cpu=4; down=-1; up=-1; lat=0 ;;
|
||||
cpu6) cpu=6; down=-1; up=-1; lat=0 ;;
|
||||
off) cpu=1; down=-1; up=-1; lat=0 ;;
|
||||
*) echo "pw-throttle: unknown profile '$profile'" >&2; usage >&2; exit 1 ;;
|
||||
esac
|
||||
|
||||
echo "pw-throttle: applying '$profile' to session '$session' (cpu ${cpu}x, down ${down} B/s, up ${up} B/s, latency ${lat} ms; Chromium only)"
|
||||
|
||||
playwright-cli -s="$session" run-code "async page => {
|
||||
const client = await page.context().newCDPSession(page);
|
||||
await client.send('Network.enable');
|
||||
await client.send('Emulation.setCPUThrottlingRate', { rate: $cpu });
|
||||
await client.send('Network.emulateNetworkConditions', { offline: false, downloadThroughput: $down, uploadThroughput: $up, latency: $lat });
|
||||
}"
|
||||
@@ -78,7 +78,7 @@ __metadata:
|
||||
react-ace: "npm:14.0.1"
|
||||
react-doctor: "npm:0.2.6"
|
||||
react-dom: "npm:19.1.2"
|
||||
react-grab: "npm:0.1.32"
|
||||
react-grab: "npm:0.1.37"
|
||||
react-i18next: "npm:16.6.6"
|
||||
react-router-dom: "npm:6.30.2"
|
||||
react-router-hash-link: "npm:2.4.3"
|
||||
@@ -157,21 +157,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@antfu/ni@npm:^0.23.0":
|
||||
version: 0.23.2
|
||||
resolution: "@antfu/ni@npm:0.23.2"
|
||||
bin:
|
||||
na: bin/na.mjs
|
||||
nci: bin/nci.mjs
|
||||
ni: bin/ni.mjs
|
||||
nlx: bin/nlx.mjs
|
||||
nr: bin/nr.mjs
|
||||
nu: bin/nu.mjs
|
||||
nun: bin/nun.mjs
|
||||
checksum: 10c0/d953ce8ef5e94d7ad503573769442988320b4f343519c278c47f6210cb37141e8f281ad42cf8bcac0e592df96eb5be903b0273585185fd47fb47933e13aaae50
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@apideck/better-ajv-errors@npm:^0.3.1":
|
||||
version: 0.3.6
|
||||
resolution: "@apideck/better-ajv-errors@npm:0.3.6"
|
||||
@@ -6064,21 +6049,22 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@react-grab/cli@npm:0.1.32":
|
||||
version: 0.1.32
|
||||
resolution: "@react-grab/cli@npm:0.1.32"
|
||||
"@react-grab/cli@npm:0.1.37":
|
||||
version: 0.1.37
|
||||
resolution: "@react-grab/cli@npm:0.1.37"
|
||||
dependencies:
|
||||
"@antfu/ni": "npm:^0.23.0"
|
||||
commander: "npm:^14.0.0"
|
||||
commander: "npm:^14.0.3"
|
||||
ignore: "npm:^7.0.5"
|
||||
jsonc-parser: "npm:^3.3.1"
|
||||
ora: "npm:^8.2.0"
|
||||
ora: "npm:^9.4.0"
|
||||
package-manager-detector: "npm:^1.6.0"
|
||||
picocolors: "npm:^1.1.1"
|
||||
prompts: "npm:^2.4.2"
|
||||
smol-toml: "npm:^1.6.0"
|
||||
smol-toml: "npm:^1.6.1"
|
||||
tinyexec: "npm:^1.1.2"
|
||||
bin:
|
||||
react-grab: dist/cli.js
|
||||
checksum: 10c0/f9cfc1ec3ce60db0ed7868dd80404b71eeeaf1e334abad040e1aa12cbfb835217729b4ecc8b7a6adf677218adf642a02f269bc6875d4e85e6e314a1a9652094a
|
||||
react-grab: bin/cli.js
|
||||
checksum: 10c0/ff4b09f22f1c25c31a14649847f22411c5cbbd7f3ee6c4cf8de8424994b0febd4c0bad32ae439002e613401056fa6b4f8d04a8258fd7012881fad555506d1f95
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -7293,7 +7279,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ansi-regex@npm:^6.0.1":
|
||||
"ansi-regex@npm:^6.0.1, ansi-regex@npm:^6.2.2":
|
||||
version: 6.2.2
|
||||
resolution: "ansi-regex@npm:6.2.2"
|
||||
checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f
|
||||
@@ -7670,12 +7656,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bippy@npm:^0.5.39":
|
||||
version: 0.5.39
|
||||
resolution: "bippy@npm:0.5.39"
|
||||
"bippy@npm:^0.5.41":
|
||||
version: 0.5.41
|
||||
resolution: "bippy@npm:0.5.41"
|
||||
peerDependencies:
|
||||
react: ">=17.0.1"
|
||||
checksum: 10c0/d8bfec87f312ea91456f8ef74b2b9852b9b3803c6c61ddae906b71967b7e0821035de14a0601ae87059b72c8d3ff05738f37378e23a4c8fa8268e473d8d769f5
|
||||
checksum: 10c0/436e89203404f29088546debbbad9527b7e3d5f2312954b108381452db4bbda42e5366e4f764cd32d02e823e7e84ce33649eb832f283652a7a530324808590ec
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -8184,7 +8170,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"chalk@npm:^5.3.0":
|
||||
"chalk@npm:^5.3.0, chalk@npm:^5.6.2":
|
||||
version: 5.6.2
|
||||
resolution: "chalk@npm:5.6.2"
|
||||
checksum: 10c0/99a4b0f0e7991796b1e7e3f52dceb9137cae2a9dfc8fc0784a550dc4c558e15ab32ed70b14b21b52beb2679b4892b41a0aa44249bcb996f01e125d58477c6976
|
||||
@@ -8330,13 +8316,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.9.2":
|
||||
"cli-spinners@npm:^2.5.0":
|
||||
version: 2.9.2
|
||||
resolution: "cli-spinners@npm:2.9.2"
|
||||
checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cli-spinners@npm:^3.2.0":
|
||||
version: 3.4.0
|
||||
resolution: "cli-spinners@npm:3.4.0"
|
||||
checksum: 10c0/91296c32e147d5b973c9d439d1512306499215437b92f0c0d8be44ec850b555acb8795c19c606b2f6747f31d50c4e41fdde7dcef653f18f0ae7cdd58e99a4764
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cli-truncate@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "cli-truncate@npm:2.1.0"
|
||||
@@ -8476,7 +8469,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"commander@npm:^14.0.0":
|
||||
"commander@npm:^14.0.0, commander@npm:^14.0.3":
|
||||
version: 14.0.3
|
||||
resolution: "commander@npm:14.0.3"
|
||||
checksum: 10c0/755652564bbf56ff2ff083313912b326450d3f8d8c85f4b71416539c9a05c3c67dbd206821ca72635bf6b160e2afdefcb458e86b317827d5cb333b69ce7f1a24
|
||||
@@ -9792,13 +9785,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"emoji-regex@npm:^10.3.0":
|
||||
version: 10.6.0
|
||||
resolution: "emoji-regex@npm:10.6.0"
|
||||
checksum: 10c0/1e4aa097bb007301c3b4b1913879ae27327fdc48e93eeefefe3b87e495eb33c5af155300be951b4349ff6ac084f4403dc9eff970acba7c1c572d89396a9a32d7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"emoji-regex@npm:^8.0.0":
|
||||
version: 8.0.0
|
||||
resolution: "emoji-regex@npm:8.0.0"
|
||||
@@ -11056,10 +11042,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-east-asian-width@npm:^1.0.0":
|
||||
version: 1.5.0
|
||||
resolution: "get-east-asian-width@npm:1.5.0"
|
||||
checksum: 10c0/bff8bbc8d81790b9477f7aa55b1806b9f082a8dc1359fff7bd8b96939622c86b729685afc2bfeb22def1fc6ef1e5228e4d87dd4e6da60bc43a5edfb03c4ee167
|
||||
"get-east-asian-width@npm:^1.5.0":
|
||||
version: 1.6.0
|
||||
resolution: "get-east-asian-width@npm:1.6.0"
|
||||
checksum: 10c0/7e72e9550fd49ca5b246f9af6bb2afc129c96412845ff6556b3274fd44817a381702ca17028efe9866b261a3d44254cbf21e6c90cf05b4b61675630af776d431
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -12628,14 +12614,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-unicode-supported@npm:^1.3.0":
|
||||
version: 1.3.0
|
||||
resolution: "is-unicode-supported@npm:1.3.0"
|
||||
checksum: 10c0/b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-unicode-supported@npm:^2.0.0":
|
||||
"is-unicode-supported@npm:^2.0.0, is-unicode-supported@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "is-unicode-supported@npm:2.1.0"
|
||||
checksum: 10c0/a0f53e9a7c1fdbcf2d2ef6e40d4736fdffff1c9f8944c75e15425118ff3610172c87bf7bc6c34d3903b04be59790bb2212ddbe21ee65b5a97030fc50370545a5
|
||||
@@ -13995,13 +13974,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"log-symbols@npm:^6.0.0":
|
||||
version: 6.0.0
|
||||
resolution: "log-symbols@npm:6.0.0"
|
||||
"log-symbols@npm:^7.0.1":
|
||||
version: 7.0.1
|
||||
resolution: "log-symbols@npm:7.0.1"
|
||||
dependencies:
|
||||
chalk: "npm:^5.3.0"
|
||||
is-unicode-supported: "npm:^1.3.0"
|
||||
checksum: 10c0/36636cacedba8f067d2deb4aad44e91a89d9efb3ead27e1846e7b82c9a10ea2e3a7bd6ce28a7ca616bebc60954ff25c67b0f92d20a6a746bb3cc52c3701891f6
|
||||
is-unicode-supported: "npm:^2.0.0"
|
||||
yoctocolors: "npm:^2.1.1"
|
||||
checksum: 10c0/71d30f9a44b8604b14df5e7c9b579d739997253db7385339d493ece41ee2cc74c1f96c5b4c0b2c1e0829b05348d4f287e68faab495b7a094a80f51351c816075
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -15347,20 +15326,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ora@npm:^8.2.0":
|
||||
version: 8.2.0
|
||||
resolution: "ora@npm:8.2.0"
|
||||
"ora@npm:^9.4.0":
|
||||
version: 9.4.0
|
||||
resolution: "ora@npm:9.4.0"
|
||||
dependencies:
|
||||
chalk: "npm:^5.3.0"
|
||||
chalk: "npm:^5.6.2"
|
||||
cli-cursor: "npm:^5.0.0"
|
||||
cli-spinners: "npm:^2.9.2"
|
||||
cli-spinners: "npm:^3.2.0"
|
||||
is-interactive: "npm:^2.0.0"
|
||||
is-unicode-supported: "npm:^2.0.0"
|
||||
log-symbols: "npm:^6.0.0"
|
||||
stdin-discarder: "npm:^0.2.2"
|
||||
string-width: "npm:^7.2.0"
|
||||
strip-ansi: "npm:^7.1.0"
|
||||
checksum: 10c0/7d9291255db22e293ea164f520b6042a3e906576ab06c9cf408bf9ef5664ba0a9f3bd258baa4ada058cfcc2163ef9b6696d51237a866682ce33295349ba02c3a
|
||||
is-unicode-supported: "npm:^2.1.0"
|
||||
log-symbols: "npm:^7.0.1"
|
||||
stdin-discarder: "npm:^0.3.2"
|
||||
string-width: "npm:^8.1.0"
|
||||
checksum: 10c0/8f2d7a8869cd68607797ac0ffe9f5cdceeb6009437672510d9920aea794cdd055164e3fe804248624c4940a71b22f94f1ffd94ce8fecf0746baef97a5c121a91
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -16002,6 +15980,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"package-manager-detector@npm:^1.6.0":
|
||||
version: 1.6.0
|
||||
resolution: "package-manager-detector@npm:1.6.0"
|
||||
checksum: 10c0/6419d0b840be64fd45bcdcb7a19f09b81b65456d5e7f7a3daac305a4c90643052122f6ac0308afe548ffee75e36148532a2002ea9d292754f1e385aa2e1ea03b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"parent-module@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "parent-module@npm:1.0.1"
|
||||
@@ -16803,12 +16788,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-grab@npm:0.1.32":
|
||||
version: 0.1.32
|
||||
resolution: "react-grab@npm:0.1.32"
|
||||
"react-grab@npm:0.1.37":
|
||||
version: 0.1.37
|
||||
resolution: "react-grab@npm:0.1.37"
|
||||
dependencies:
|
||||
"@react-grab/cli": "npm:0.1.32"
|
||||
bippy: "npm:^0.5.39"
|
||||
"@react-grab/cli": "npm:0.1.37"
|
||||
bippy: "npm:^0.5.41"
|
||||
peerDependencies:
|
||||
react: ">=17.0.0"
|
||||
peerDependenciesMeta:
|
||||
@@ -16816,7 +16801,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
react-grab: bin/cli.js
|
||||
checksum: 10c0/273368d8755fc7ed930cc45d81cc91013907d766e926fc442bd5e48cc6c557e14f9e6765c9fa402fbe736e5c517d503f25afa753f48136e9cd50733445bdeee6
|
||||
checksum: 10c0/971de11ba6f2f862edd4988d48a34b029695307b5757b43bc7c2f922964f24c5ec7487e13290038afe695655b90a6d862bc848058834b6f03114337d36b9565f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -18269,10 +18254,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stdin-discarder@npm:^0.2.2":
|
||||
version: 0.2.2
|
||||
resolution: "stdin-discarder@npm:0.2.2"
|
||||
checksum: 10c0/c78375e82e956d7a64be6e63c809c7f058f5303efcaf62ea48350af072bacdb99c06cba39209b45a071c1acbd49116af30df1df9abb448df78a6005b72f10537
|
||||
"stdin-discarder@npm:^0.3.2":
|
||||
version: 0.3.2
|
||||
resolution: "stdin-discarder@npm:0.3.2"
|
||||
checksum: 10c0/5dbaba9efbcb447a4450d5ae19794641ea9166abe96dc4b5547a109db1bb6e8bdb17bbe1029e02ca8d9d8ee996b7c7cbcce12b12c18c121871cd4f574292381a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -18350,14 +18335,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width@npm:^7.2.0":
|
||||
version: 7.2.0
|
||||
resolution: "string-width@npm:7.2.0"
|
||||
"string-width@npm:^8.1.0":
|
||||
version: 8.2.1
|
||||
resolution: "string-width@npm:8.2.1"
|
||||
dependencies:
|
||||
emoji-regex: "npm:^10.3.0"
|
||||
get-east-asian-width: "npm:^1.0.0"
|
||||
strip-ansi: "npm:^7.1.0"
|
||||
checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9
|
||||
get-east-asian-width: "npm:^1.5.0"
|
||||
strip-ansi: "npm:^7.1.2"
|
||||
checksum: 10c0/d467b4eaf4c40a01bb438a2620e77badd2456ffd5131c9973abe4f3acf7c802d5b21f3b6a00a5e33a7fc28ca8f9c103226e01bac61e9f259659c6f46d78e353a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -18458,7 +18442,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0":
|
||||
"strip-ansi@npm:^7.0.1":
|
||||
version: 7.1.2
|
||||
resolution: "strip-ansi@npm:7.1.2"
|
||||
dependencies:
|
||||
@@ -18467,6 +18451,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-ansi@npm:^7.1.2":
|
||||
version: 7.2.0
|
||||
resolution: "strip-ansi@npm:7.2.0"
|
||||
dependencies:
|
||||
ansi-regex: "npm:^6.2.2"
|
||||
checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strip-bom@npm:4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "strip-bom@npm:4.0.0"
|
||||
@@ -18870,6 +18863,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyexec@npm:^1.1.2":
|
||||
version: 1.2.3
|
||||
resolution: "tinyexec@npm:1.2.3"
|
||||
checksum: 10c0/e4694310797ae576547f55a449bc4be6480ce1cd64ff22ca9768506172bb37475c3d79efa7257e93c88d96374933a8ba2f7567b8f0c7269380008884dec42a9a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyglobby@npm:^0.2.10, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15":
|
||||
version: 0.2.15
|
||||
resolution: "tinyglobby@npm:0.2.15"
|
||||
@@ -20523,6 +20523,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"yoctocolors@npm:^2.1.1":
|
||||
version: 2.1.2
|
||||
resolution: "yoctocolors@npm:2.1.2"
|
||||
checksum: 10c0/b220f30f53ebc2167330c3adc86a3c7f158bcba0236f6c67e25644c3188e2571a6014ffc1321943bb619460259d3d27eb4c9cc58c2d884c1b195805883ec7066
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"zod@npm:4.3.6, zod@npm:^4.1.11":
|
||||
version: 4.3.6
|
||||
resolution: "zod@npm:4.3.6"
|
||||
|
||||
Reference in New Issue
Block a user