laxy-verify 1.1.17 → 1.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,119 +1,163 @@
|
|
|
1
|
-
# laxy-verify
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
`laxy-verify` runs production build checks, Lighthouse, tiered verify E2E, and plan-gated verification
|
|
6
|
-
It is
|
|
7
|
-
|
|
8
|
-
- Free: "
|
|
9
|
-
- Pro: "
|
|
10
|
-
- Pro+: "
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
npx laxy-verify --init --run
|
|
1
|
+
# laxy-verify
|
|
2
|
+
|
|
3
|
+
A frontend verification CLI that catches build breaks, regressions, and client-visible issues before you ship.
|
|
4
|
+
|
|
5
|
+
`laxy-verify` runs production build checks, Lighthouse, tiered verify E2E, and plan-gated verification for Free, Pro, and Pro+ accounts.
|
|
6
|
+
It is built around three simple questions:
|
|
7
|
+
|
|
8
|
+
- Free: "Any critical issues right now?"
|
|
9
|
+
- Pro: "Ready to show a client?"
|
|
10
|
+
- Pro+: "Ready for production?"
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx laxy-verify --init --run
|
|
14
14
|
npx laxy-verify .
|
|
15
15
|
npx laxy-verify . --plan-override pro
|
|
16
16
|
npx laxy-verify login
|
|
17
|
-
npx laxy-verify whoami
|
|
18
|
-
npx laxy-verify --help
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
17
|
+
npx laxy-verify whoami
|
|
18
|
+
npx laxy-verify --help
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
What you get from one run:
|
|
22
|
+
|
|
23
|
+
- a verification grade: `Gold`, `Silver`, `Bronze`, or `Unverified`
|
|
24
|
+
- a decision-oriented verdict such as `client-ready`, `release-ready`, `hold`, or `investigate`
|
|
25
|
+
- `.laxy-result.json` for automation
|
|
26
|
+
- `laxy-verify-report.md` on paid plans for human review and AI handoff
|
|
27
|
+
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
### 1. Run it on a frontend app
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cd your-project
|
|
34
|
+
npx laxy-verify .
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This runs the default verification flow in the current app directory.
|
|
38
|
+
|
|
39
|
+
### 2. Generate config and CI workflow
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx laxy-verify --init
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This creates:
|
|
46
|
+
|
|
47
|
+
- `.laxy.yml`
|
|
48
|
+
- `.github/workflows/laxy-verify.yml`
|
|
49
|
+
|
|
50
|
+
### 3. Commit the workflow
|
|
51
|
+
|
|
52
|
+
Once committed, each PR gets a verification run, grade output, and optional GitHub reporting.
|
|
53
|
+
|
|
54
|
+
### 4. Unlock paid plan features
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npx laxy-verify login
|
|
58
|
+
npx laxy-verify whoami
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For CI, set `LAXY_TOKEN` instead of using interactive login.
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
env:
|
|
65
|
+
LAXY_TOKEN: ${{ secrets.LAXY_TOKEN }}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## What It Checks
|
|
69
|
+
|
|
70
|
+
- production build success
|
|
71
|
+
- Lighthouse thresholds
|
|
72
|
+
- verify E2E scenarios for real user flows
|
|
73
|
+
- Pro+ viewport and visual regression evidence
|
|
74
|
+
- plan-aware verdicts for local runs and CI
|
|
75
|
+
|
|
76
|
+
## Verification Tiers
|
|
77
|
+
|
|
78
|
+
| Plan | Question it answers |
|
|
79
|
+
|------|---------------------|
|
|
80
|
+
| Free | Any critical issues right now? |
|
|
81
|
+
| Pro | Ready to show a client? |
|
|
82
|
+
| Pro+ | Ready for production? |
|
|
49
83
|
|
|
50
84
|
## Grades
|
|
51
85
|
|
|
52
86
|
| Grade | Meaning |
|
|
53
87
|
|-------|---------|
|
|
54
88
|
| Gold | Build passed + E2E passed + Lighthouse passed + Pro+ viewport evidence passed |
|
|
55
|
-
| Silver | Build passed + E2E passed |
|
|
56
|
-
| Bronze | Build passed |
|
|
57
|
-
| Unverified | Build failed |
|
|
58
|
-
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
89
|
+
| Silver | Build passed + E2E passed |
|
|
90
|
+
| Bronze | Build passed |
|
|
91
|
+
| Unverified | Build failed |
|
|
92
|
+
|
|
93
|
+
## Plan Differences
|
|
94
|
+
|
|
95
|
+
| Feature | Free | Pro | Pro+ |
|
|
96
|
+
|---------|------|-----|------|
|
|
97
|
+
| Build verification | Yes | Yes | Yes |
|
|
98
|
+
| Lighthouse | 1 run | 3 runs | 3 runs |
|
|
99
|
+
| Verify E2E | Smoke checks | Client-facing flow checks | Client-facing flow checks + release evidence |
|
|
100
|
+
| Detailed report view | No | Yes | Yes |
|
|
101
|
+
| `laxy-verify-report.md` export | No | Yes | Yes |
|
|
102
|
+
| Multi-viewport verification | No | No | Yes |
|
|
103
|
+
| Visual diff | No | No | Yes |
|
|
104
|
+
| Failure analysis signals | No | No | Yes |
|
|
105
|
+
|
|
106
|
+
Free tells you whether the app is basically standing.
|
|
107
|
+
Pro tells you whether the app is strong enough to call client-ready.
|
|
108
|
+
Pro+ adds the extra evidence needed for a real release-ready call.
|
|
109
|
+
|
|
110
|
+
## Sample Output
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
Plan: Pro+
|
|
114
|
+
Grade: Gold
|
|
115
|
+
Verdict: release-ready
|
|
116
|
+
|
|
117
|
+
Passed:
|
|
118
|
+
- production build
|
|
119
|
+
- Lighthouse thresholds
|
|
120
|
+
- core E2E flows
|
|
121
|
+
- desktop, tablet, and mobile viewport checks
|
|
122
|
+
|
|
123
|
+
Artifacts:
|
|
124
|
+
- .laxy-result.json
|
|
125
|
+
- laxy-verify-report.md
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Configuration
|
|
129
|
+
|
|
130
|
+
All fields are optional in `.laxy.yml`.
|
|
131
|
+
|
|
132
|
+
```yaml
|
|
133
|
+
framework: "auto"
|
|
134
|
+
build_command: ""
|
|
135
|
+
dev_command: ""
|
|
98
136
|
package_manager: "auto"
|
|
99
137
|
port: 3000
|
|
100
138
|
build_timeout: 300
|
|
101
139
|
dev_timeout: 60
|
|
102
140
|
lighthouse_runs: 1
|
|
103
141
|
|
|
104
|
-
thresholds:
|
|
105
|
-
performance: 70
|
|
106
|
-
accessibility: 85
|
|
107
|
-
seo: 80
|
|
108
|
-
best_practices: 80
|
|
109
|
-
|
|
110
|
-
fail_on: "bronze"
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
142
|
+
thresholds:
|
|
143
|
+
performance: 70
|
|
144
|
+
accessibility: 85
|
|
145
|
+
seo: 80
|
|
146
|
+
best_practices: 80
|
|
147
|
+
|
|
148
|
+
fail_on: "bronze"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Typical cases:
|
|
152
|
+
|
|
153
|
+
- raise `fail_on` to `silver` or `gold` in CI when you want stricter gates
|
|
154
|
+
- set `framework`, `build_command`, or `dev_command` if auto-detection is not enough
|
|
155
|
+
- increase `lighthouse_runs` when you want more stable performance evidence
|
|
156
|
+
|
|
157
|
+
## CLI Options
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
npx laxy-verify [project-dir]
|
|
117
161
|
|
|
118
162
|
Options:
|
|
119
163
|
--format console|json
|
|
@@ -129,21 +173,21 @@ Options:
|
|
|
129
173
|
|
|
130
174
|
Subcommands:
|
|
131
175
|
login [email]
|
|
132
|
-
logout
|
|
133
|
-
whoami
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
`--plan-override` is for downgrade testing only.
|
|
137
|
-
Example: if your account is Pro+, you can run `--plan-override pro` or `--plan-override free` to verify the lower-tier behavior without changing your subscription.
|
|
138
|
-
It will reject upgrades above your real entitlement.
|
|
139
|
-
|
|
140
|
-
## Result Files
|
|
141
|
-
|
|
142
|
-
Each run writes `.laxy-result.json`.
|
|
143
|
-
|
|
144
|
-
Paid plans also write a readable markdown summary to `laxy-verify-report.md`.
|
|
145
|
-
|
|
146
|
-
- `Pro`:
|
|
176
|
+
logout
|
|
177
|
+
whoami
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
`--plan-override` is for downgrade testing only.
|
|
181
|
+
Example: if your account is Pro+, you can run `--plan-override pro` or `--plan-override free` to verify the lower-tier behavior without changing your subscription.
|
|
182
|
+
It will reject upgrades above your real entitlement.
|
|
183
|
+
|
|
184
|
+
## Result Files
|
|
185
|
+
|
|
186
|
+
Each run writes `.laxy-result.json`.
|
|
187
|
+
|
|
188
|
+
Paid plans also write a readable markdown summary to `laxy-verify-report.md`.
|
|
189
|
+
|
|
190
|
+
- `Pro`: client-ready delivery report
|
|
147
191
|
- `Pro+`: release-readiness report with viewport and visual evidence
|
|
148
192
|
|
|
149
193
|
Exit behavior follows the verification verdict, not just the legacy grade.
|
|
@@ -173,13 +217,13 @@ Exit behavior follows the verification verdict, not just the legacy grade.
|
|
|
173
217
|
"report": { "verdict": "release-ready" }
|
|
174
218
|
},
|
|
175
219
|
"exitCode": 0,
|
|
176
|
-
"_plan": "pro_plus"
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### `laxy-verify-report.md`
|
|
181
|
-
|
|
182
|
-
For Pro and Pro+ runs, the markdown report is designed to be easy to read and easy to paste into an AI coding tool.
|
|
220
|
+
"_plan": "pro_plus"
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### `laxy-verify-report.md`
|
|
225
|
+
|
|
226
|
+
For Pro and Pro+ runs, the markdown report is designed to be easy to read and easy to paste into an AI coding tool.
|
|
183
227
|
|
|
184
228
|
It includes:
|
|
185
229
|
|
|
@@ -187,21 +231,33 @@ It includes:
|
|
|
187
231
|
- what passed
|
|
188
232
|
- blockers and warnings
|
|
189
233
|
- exact verification evidence
|
|
190
|
-
- failed E2E scenarios
|
|
191
|
-
- a `Copy For AI` section you can paste directly into Codex, Cursor, Claude, or ChatGPT
|
|
192
|
-
|
|
193
|
-
##
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
##
|
|
206
|
-
|
|
207
|
-
|
|
234
|
+
- failed E2E scenarios
|
|
235
|
+
- a `Copy For AI` section you can paste directly into Codex, Cursor, Claude, or ChatGPT
|
|
236
|
+
|
|
237
|
+
## Environment Notes
|
|
238
|
+
|
|
239
|
+
- Best on current LTS Node releases. `Node 20.18+` is recommended.
|
|
240
|
+
- Monorepos should point `laxy-verify` at the actual app directory.
|
|
241
|
+
- `playwright` is optional. The CLI can run without it.
|
|
242
|
+
- Pro+ viewport and visual checks increase runtime.
|
|
243
|
+
|
|
244
|
+
## Regression Fixtures
|
|
245
|
+
|
|
246
|
+
The repo also includes dedicated regression fixtures under `.qa-regression-fixtures/`.
|
|
247
|
+
They intentionally break build, navigation, coverage, performance, viewport behavior, and visual stability so the verifier can be tested against known failure modes.
|
|
248
|
+
|
|
249
|
+
## Limitations
|
|
250
|
+
|
|
251
|
+
- Monorepos require targeting the app subdirectory explicitly.
|
|
252
|
+
- Dev-server-based Lighthouse can differ from production hosting.
|
|
253
|
+
- Pro+ visual diff and viewport checks increase runtime.
|
|
254
|
+
- Local verification is most stable on current LTS Node releases.
|
|
255
|
+
|
|
256
|
+
## Links
|
|
257
|
+
|
|
258
|
+
- GitHub: https://github.com/psungmin24/Laxy/tree/main/laxy-verify
|
|
259
|
+
- Issues: https://github.com/psungmin24/Laxy/issues
|
|
260
|
+
|
|
261
|
+
## License
|
|
262
|
+
|
|
263
|
+
MIT
|
package/dist/report-markdown.js
CHANGED
|
@@ -66,6 +66,8 @@ function formatTimestamp(iso) {
|
|
|
66
66
|
function sentenceForVerdict(view) {
|
|
67
67
|
const isReleaseTier = view.tier === "pro_plus";
|
|
68
68
|
switch (view.verdict) {
|
|
69
|
+
case "client-ready":
|
|
70
|
+
return "Yes. This run collected enough evidence to support a client-ready call.";
|
|
69
71
|
case "release-ready":
|
|
70
72
|
return isReleaseTier
|
|
71
73
|
? "Yes. This run collected enough evidence to support a release-ready call."
|
|
@@ -95,10 +97,14 @@ function defaultNextActions(result) {
|
|
|
95
97
|
if (view.nextActions.length > 0)
|
|
96
98
|
return view.nextActions;
|
|
97
99
|
switch (view.verdict) {
|
|
100
|
+
case "client-ready":
|
|
101
|
+
return ["Send this version to the client, or rerun verification after meaningful UI or flow changes."];
|
|
98
102
|
case "release-ready":
|
|
99
103
|
return ["Ship this version, or archive this report as release evidence."];
|
|
100
104
|
case "investigate":
|
|
101
|
-
return
|
|
105
|
+
return view.tier === "pro_plus"
|
|
106
|
+
? ["Collect the missing verification evidence, then rerun the command before release."]
|
|
107
|
+
: ["Collect the missing verification evidence, then rerun the command before sending this to a client."];
|
|
102
108
|
case "build-failed":
|
|
103
109
|
return ["Fix the production build first, then rerun the verification command."];
|
|
104
110
|
case "quick-pass":
|
|
@@ -266,9 +272,11 @@ function renderCopyForAI(result, flavor) {
|
|
|
266
272
|
const evidence = view.failureEvidence.map((item) => `- ${item}`);
|
|
267
273
|
const closingLine = view.verdict === "release-ready"
|
|
268
274
|
? "Use this as release evidence, or rerun after any code change that could affect quality."
|
|
269
|
-
: view.verdict === "
|
|
270
|
-
? "
|
|
271
|
-
: "
|
|
275
|
+
: view.verdict === "client-ready"
|
|
276
|
+
? "Use this as client handoff evidence, or rerun after any code change that could affect user-facing flows."
|
|
277
|
+
: view.verdict === "investigate" && view.blockers.length === 0
|
|
278
|
+
? "Collect the missing verification evidence, then rerun the command and compare the new report."
|
|
279
|
+
: "Please fix the blockers first, then rerun the verification command and compare the new report.";
|
|
272
280
|
const openingLine = flavor === "release"
|
|
273
281
|
? "Use this release report to decide whether the project is truly ready to ship."
|
|
274
282
|
: flavor === "delivery"
|
|
@@ -277,7 +285,7 @@ function renderCopyForAI(result, flavor) {
|
|
|
277
285
|
const targetLine = flavor === "release"
|
|
278
286
|
? "Goal: reach a release-ready verdict with strong viewport, visual, and user-flow evidence."
|
|
279
287
|
: flavor === "delivery"
|
|
280
|
-
? "Goal: remove client-visible blockers and reach a confident
|
|
288
|
+
? "Goal: remove client-visible blockers and reach a confident client-ready call."
|
|
281
289
|
: "Goal: fix the blockers and improve confidence on the next run.";
|
|
282
290
|
return [
|
|
283
291
|
`## ${sectionTitle(flavor, "copy")}`,
|
|
@@ -333,7 +341,7 @@ function buildMarkdownReport(projectDir, result) {
|
|
|
333
341
|
const decisionLead = flavor === "release"
|
|
334
342
|
? "This section answers whether the current build is strong enough to call release-ready."
|
|
335
343
|
: flavor === "delivery"
|
|
336
|
-
? "This section answers whether the current build is strong enough to
|
|
344
|
+
? "This section answers whether the current build is strong enough to call client-ready."
|
|
337
345
|
: "This section explains the outcome of the current verification run.";
|
|
338
346
|
const atAGlanceLead = flavor === "release"
|
|
339
347
|
? "This report is written for a ship or hold decision."
|
|
@@ -351,14 +351,14 @@ function buildVerificationReport(input, options) {
|
|
|
351
351
|
summary = `Core checks passed, but release-ready confidence still needs ${missingEvidence.join(" and ")}.`;
|
|
352
352
|
}
|
|
353
353
|
else if (tier === "pro" && coreChecksPassed && !hasWarnings) {
|
|
354
|
-
verdict = "
|
|
354
|
+
verdict = "client-ready";
|
|
355
355
|
confidence = "medium";
|
|
356
|
-
summary = "No blocking issues found. Build, E2E, and Lighthouse checks passed.
|
|
356
|
+
summary = "No blocking issues found. Build, E2E, and Lighthouse checks passed. This run supports a client-ready call.";
|
|
357
357
|
}
|
|
358
358
|
else if (tier === "pro" && coreChecksPassed && hasWarnings) {
|
|
359
359
|
verdict = "investigate";
|
|
360
360
|
confidence = "medium";
|
|
361
|
-
summary = "Core checks passed, but warning-level risks remain. Review warnings before
|
|
361
|
+
summary = "Core checks passed, but warning-level risks remain. Review warnings before calling this run client-ready.";
|
|
362
362
|
}
|
|
363
363
|
else if (tier === "free") {
|
|
364
364
|
if (evidence.hasConsoleErrors) {
|
|
@@ -43,11 +43,11 @@ function planToVerificationTier(plan) {
|
|
|
43
43
|
function getVerificationTierQuestion(tier) {
|
|
44
44
|
switch (tier) {
|
|
45
45
|
case "pro":
|
|
46
|
-
return "
|
|
46
|
+
return "Ready to show a client?";
|
|
47
47
|
case "pro_plus":
|
|
48
|
-
return "
|
|
48
|
+
return "Ready for production?";
|
|
49
49
|
default:
|
|
50
|
-
return "
|
|
50
|
+
return "Any critical issues right now?";
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
function getTierVerificationView(report) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type VerificationGrade = "gold" | "silver" | "bronze" | "unverified";
|
|
2
2
|
export type VerificationTier = "free" | "pro" | "pro_plus";
|
|
3
|
-
export type ReleaseVerdict = "quick-pass" | "investigate" | "hold" | "release-ready" | "build-failed";
|
|
3
|
+
export type ReleaseVerdict = "quick-pass" | "client-ready" | "investigate" | "hold" | "release-ready" | "build-failed";
|
|
4
4
|
export interface LighthouseThresholds {
|
|
5
5
|
performance: number;
|
|
6
6
|
accessibility: number;
|
package/package.json
CHANGED
|
@@ -1,12 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "laxy-verify",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "Frontend
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"type": "commonjs",
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "laxy-verify",
|
|
3
|
+
"version": "1.1.20",
|
|
4
|
+
"description": "Frontend verification CLI for build checks, Lighthouse, E2E, and release readiness",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "commonjs",
|
|
7
|
+
"homepage": "https://github.com/psungmin24/Laxy/tree/main/laxy-verify#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/psungmin24/Laxy.git",
|
|
11
|
+
"directory": "laxy-verify"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/psungmin24/Laxy/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"frontend",
|
|
18
|
+
"verification",
|
|
19
|
+
"quality-gate",
|
|
20
|
+
"release-readiness",
|
|
21
|
+
"lighthouse",
|
|
22
|
+
"e2e",
|
|
23
|
+
"qa",
|
|
24
|
+
"cli",
|
|
25
|
+
"nextjs",
|
|
26
|
+
"vite"
|
|
27
|
+
],
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=20.18.0 <25"
|
|
30
|
+
},
|
|
31
|
+
"bin": {
|
|
32
|
+
"laxy-verify": "dist/cli.js"
|
|
33
|
+
},
|
|
10
34
|
"files": [
|
|
11
35
|
"dist/"
|
|
12
36
|
],
|