@etus/bhono-app 0.1.6 → 0.1.7

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.
Files changed (61) hide show
  1. package/package.json +3 -2
  2. package/templates/base/.claude/commands/check-skill-rules.md +112 -29
  3. package/templates/base/.claude/commands/linear/implement-issue.md +383 -55
  4. package/templates/base/.claude/commands/ship.md +77 -13
  5. package/templates/base/.claude/hooks/package-lock.json +0 -419
  6. package/templates/base/.claude/hooks/skill-activation-prompt.ts +185 -113
  7. package/templates/base/.claude/hooks/skill-tool-guard.sh +6 -0
  8. package/templates/base/.claude/hooks/skill-tool-guard.ts +198 -0
  9. package/templates/base/.claude/scripts/validate-skill-rules.sh +55 -32
  10. package/templates/base/.claude/settings.json +18 -11
  11. package/templates/base/.claude/skills/skill-rules.json +326 -173
  12. package/templates/base/.env.example +3 -0
  13. package/templates/base/README.md +9 -7
  14. package/templates/base/config/eslint.config.js +1 -0
  15. package/templates/base/config/wrangler.json +16 -17
  16. package/templates/base/docs/SETUP-GUIDE.md +566 -0
  17. package/templates/base/docs/architecture/README.md +162 -8
  18. package/templates/base/docs/architecture/api-catalog.md +575 -0
  19. package/templates/base/docs/architecture/c4-component.md +309 -0
  20. package/templates/base/docs/architecture/c4-container.md +183 -0
  21. package/templates/base/docs/architecture/c4-context.md +106 -0
  22. package/templates/base/docs/architecture/dependencies.md +327 -0
  23. package/templates/base/docs/architecture/tech-debt.md +184 -0
  24. package/templates/base/package.json +20 -15
  25. package/templates/base/scripts/capture-prod-session.ts +2 -2
  26. package/templates/base/scripts/sync-template.sh +104 -0
  27. package/templates/base/src/server/db/sql.ts +24 -4
  28. package/templates/base/src/server/index.ts +1 -0
  29. package/templates/base/src/server/lib/audited-db.ts +10 -10
  30. package/templates/base/src/server/middleware/account.ts +1 -1
  31. package/templates/base/src/server/middleware/auth.ts +11 -11
  32. package/templates/base/src/server/middleware/rate-limit.ts +3 -6
  33. package/templates/base/src/server/routes/auth/handlers.ts +5 -5
  34. package/templates/base/src/server/routes/auth/test-login.ts +9 -9
  35. package/templates/base/src/server/routes/index.ts +9 -0
  36. package/templates/base/src/server/routes/invitations/handlers.ts +6 -6
  37. package/templates/base/src/server/routes/openapi.ts +1 -1
  38. package/templates/base/src/server/services/accounts.ts +9 -9
  39. package/templates/base/src/server/services/audits.ts +12 -12
  40. package/templates/base/src/server/services/auth.ts +15 -15
  41. package/templates/base/src/server/services/invitations.ts +16 -16
  42. package/templates/base/src/server/services/users.ts +13 -13
  43. package/templates/base/src/shared/types/api.ts +66 -198
  44. package/templates/base/tests/e2e/auth.setup.ts +1 -1
  45. package/templates/base/tests/unit/server/auth/guards.test.ts +1 -1
  46. package/templates/base/tests/unit/server/middleware/auth.test.ts +273 -0
  47. package/templates/base/tests/unit/server/routes/auth/handlers.test.ts +111 -0
  48. package/templates/base/tests/unit/server/routes/users/handlers.test.ts +69 -5
  49. package/templates/base/tests/unit/server/services/accounts.test.ts +148 -0
  50. package/templates/base/tests/unit/server/services/audits.test.ts +219 -0
  51. package/templates/base/tests/unit/server/services/auth.test.ts +480 -3
  52. package/templates/base/tests/unit/server/services/invitations.test.ts +178 -0
  53. package/templates/base/tests/unit/server/services/users.test.ts +363 -8
  54. package/templates/base/tests/unit/shared/schemas.test.ts +1 -1
  55. package/templates/base/vite.config.ts +3 -1
  56. package/templates/base/.github/workflows/test.yml +0 -127
  57. package/templates/base/.husky/pre-push +0 -26
  58. package/templates/base/auth-setup-error.png +0 -0
  59. package/templates/base/pnpm-lock.yaml +0 -8052
  60. package/templates/base/tests/e2e/_auth/.gitkeep +0 -0
  61. package/templates/base/tsconfig.tsbuildinfo +0 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  allowed-tools: Read, Edit, Write, Glob, Grep, Bash, Task, TodoWrite, SlashCommand
3
- argument-hint: [--no-tests] [--no-lint] [--no-docs] [--no-claude-md] [--no-readme] [--no-push]
4
- description: Automated commit/push workflow with quality checks and documentation updates
3
+ argument-hint: [--no-tests] [--no-lint] [--no-docs] [--no-claude-md] [--no-readme] [--no-push] [--pr]
4
+ description: Automated commit/push workflow with quality checks, documentation updates, and PR creation
5
5
  skills: playwright-e2e-testing
6
6
  ---
7
7
 
@@ -23,6 +23,11 @@ $ARGUMENTS
23
23
  !`echo "$ARGUMENTS" | grep -q "\-\-no-claude-md" && echo "SKIP_CLAUDE_MD=true" || echo "SKIP_CLAUDE_MD=false"`
24
24
  !`echo "$ARGUMENTS" | grep -q "\-\-no-readme" && echo "SKIP_README=true" || echo "SKIP_README=false"`
25
25
  !`echo "$ARGUMENTS" | grep -q "\-\-no-push" && echo "SKIP_PUSH=true" || echo "SKIP_PUSH=false"`
26
+ !`echo "$ARGUMENTS" | grep -q "\-\-pr" && echo "CREATE_PR=true" || echo "CREATE_PR=false"`
27
+
28
+ ## Current Branch
29
+
30
+ !`git branch --show-current`
26
31
 
27
32
  ## Current Git Status
28
33
 
@@ -42,6 +47,28 @@ $ARGUMENTS
42
47
 
43
48
  Execute this workflow in order. Use TodoWrite to track progress through each phase.
44
49
 
50
+ ### Phase 0: Branch Validation (CRITICAL)
51
+
52
+ **Check if on a protected branch:**
53
+
54
+ ```bash
55
+ CURRENT_BRANCH=$(git branch --show-current)
56
+ if [[ "$CURRENT_BRANCH" == "master" || "$CURRENT_BRANCH" == "develop" ]]; then
57
+ echo "❌ ABORT: Cannot ship directly from '$CURRENT_BRANCH'"
58
+ echo "Create a feature branch first: git checkout -b feat/your-feature"
59
+ exit 1
60
+ fi
61
+ echo "✅ On branch: $CURRENT_BRANCH"
62
+ ```
63
+
64
+ **Branch rules:**
65
+ - ❌ `master` - NEVER commit directly (protected, releases only)
66
+ - ❌ `develop` - NEVER commit directly (PRs only)
67
+ - ✅ `feat/*`, `fix/*`, `docs/*`, `chore/*`, `refactor/*`, `test/*` - OK
68
+ - ✅ `hotfix/*` - OK (can PR to master for emergencies)
69
+
70
+ If on protected branch, **STOP and ask user to create a feature branch**.
71
+
45
72
  ### Phase 1: Information Gathering (Parallel Subagents)
46
73
 
47
74
  Launch 3 subagents IN PARALLEL using the Task tool:
@@ -83,12 +110,10 @@ Given the changed files, identify which architecture docs need updating:
83
110
  - New components/services → docs/architecture/c4-component.md
84
111
  - Container changes → docs/architecture/c4-container.md
85
112
  - Dependency changes → docs/architecture/dependencies.md
86
- - Major decisionsnew ADR in docs/architecture/decisions/
113
+ - Tech debt changes → docs/architecture/tech-debt.md
114
+ - ERD/database changes → docs/architecture/erd.md
87
115
  - Features updates → docs/features/
88
- - Data related changes → docs/data/
89
- - SDLC related changes → docs/sdlc/
90
- - Tech specs related changes → docs/tech-specs/
91
- - Runbooks related changes → docs/runbooks/
116
+ - Testing changes → docs/testing.md
92
117
  Return list of architecture docs that need updates with reason.
93
118
  ```
94
119
 
@@ -176,13 +201,13 @@ Docs to potentially update:
176
201
  - docs/architecture/api-catalog.md - API endpoint changes
177
202
  - docs/architecture/c4-component.md - Component changes
178
203
  - docs/architecture/c4-container.md - Container/service changes
204
+ - docs/architecture/c4-context.md - System context changes
179
205
  - docs/architecture/dependencies.md - Dependency changes
180
- - docs/architecture/decisions/ - New ADRs if major decisions made
206
+ - docs/architecture/tech-debt.md - Tech debt updates
207
+ - docs/architecture/erd.md - Database schema changes
181
208
  - docs/features/ - Feature changes
182
- - docs/tech-specs/ - Tech specs changes
183
- - docs/sdlc/ - SDLC changes
184
- - docs/runbooks/ - Runbooks changes
185
- - docs/data/ - Data changes
209
+ - docs/testing.md - Testing strategy changes
210
+ - docs/app_spec.txt - Major architectural changes
186
211
  ```
187
212
 
188
213
  Wait for all documentation agents to complete.
@@ -233,7 +258,41 @@ EOF
233
258
  #### Step 4.4: Push (unless --no-push)
234
259
 
235
260
  ```bash
236
- git push
261
+ git push -u origin $(git branch --show-current)
262
+ ```
263
+
264
+ **Note:** The project has Husky pre-push hooks that automatically run:
265
+ - TypeScript compilation (`pnpm typecheck`)
266
+ - Unit tests with coverage (`pnpm test:unit:server`)
267
+ - Build verification (`pnpm build`)
268
+
269
+ If any of these fail, the push will be rejected.
270
+
271
+ ### Phase 5: Pull Request (if --pr flag is set)
272
+
273
+ **Create PR targeting `develop` branch:**
274
+
275
+ ```bash
276
+ gh pr create --base develop --title "<commit message title>" --body "$(cat <<'EOF'
277
+ ## Summary
278
+ <bullet points from commit body>
279
+
280
+ ## Test plan
281
+ - [x] TypeScript compiles
282
+ - [x] Unit tests pass
283
+ - [x] Build succeeds
284
+ EOF
285
+ )"
286
+ ```
287
+
288
+ **PR Rules:**
289
+ - PRs MUST target `develop` (enforced by CI workflow `.github/workflows/pr-target-check.yml`)
290
+ - Only `changeset-release/*` and `hotfix/*` branches can PR directly to `master`
291
+ - If PR already exists for this branch, show the existing PR URL instead
292
+
293
+ **Check for existing PR:**
294
+ ```bash
295
+ gh pr view --json url 2>/dev/null || gh pr create ...
237
296
  ```
238
297
 
239
298
  ---
@@ -245,6 +304,10 @@ After all phases complete, provide a summary:
245
304
  ```
246
305
  ## /ship Complete
247
306
 
307
+ ### Branch
308
+ - Branch: <branch name>
309
+ - Base: develop
310
+
248
311
  ### Quality Checks
249
312
  - Tests: [PASSED/FIXED/SKIPPED]
250
313
  - Lint: [PASSED/FIXED/SKIPPED]
@@ -259,4 +322,5 @@ After all phases complete, provide a summary:
259
322
  ### Git
260
323
  - Commit: <commit hash>
261
324
  - Pushed: [YES/NO]
325
+ - PR: [URL or SKIPPED or N/A]
262
326
  ```
@@ -13,74 +13,8 @@
13
13
  "typescript": "^5.3.3"
14
14
  }
15
15
  },
16
- "node_modules/@esbuild/aix-ppc64": {
17
- "version": "0.27.2",
18
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
19
- "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==",
20
- "cpu": [
21
- "ppc64"
22
- ],
23
- "license": "MIT",
24
- "optional": true,
25
- "os": [
26
- "aix"
27
- ],
28
- "engines": {
29
- "node": ">=18"
30
- }
31
- },
32
- "node_modules/@esbuild/android-arm": {
33
- "version": "0.27.2",
34
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz",
35
- "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==",
36
- "cpu": [
37
- "arm"
38
- ],
39
- "license": "MIT",
40
- "optional": true,
41
- "os": [
42
- "android"
43
- ],
44
- "engines": {
45
- "node": ">=18"
46
- }
47
- },
48
- "node_modules/@esbuild/android-arm64": {
49
- "version": "0.27.2",
50
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz",
51
- "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==",
52
- "cpu": [
53
- "arm64"
54
- ],
55
- "license": "MIT",
56
- "optional": true,
57
- "os": [
58
- "android"
59
- ],
60
- "engines": {
61
- "node": ">=18"
62
- }
63
- },
64
- "node_modules/@esbuild/android-x64": {
65
- "version": "0.27.2",
66
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz",
67
- "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==",
68
- "cpu": [
69
- "x64"
70
- ],
71
- "license": "MIT",
72
- "optional": true,
73
- "os": [
74
- "android"
75
- ],
76
- "engines": {
77
- "node": ">=18"
78
- }
79
- },
80
16
  "node_modules/@esbuild/darwin-arm64": {
81
17
  "version": "0.27.2",
82
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz",
83
- "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==",
84
18
  "cpu": [
85
19
  "arm64"
86
20
  ],
@@ -93,346 +27,8 @@
93
27
  "node": ">=18"
94
28
  }
95
29
  },
96
- "node_modules/@esbuild/darwin-x64": {
97
- "version": "0.27.2",
98
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz",
99
- "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==",
100
- "cpu": [
101
- "x64"
102
- ],
103
- "license": "MIT",
104
- "optional": true,
105
- "os": [
106
- "darwin"
107
- ],
108
- "engines": {
109
- "node": ">=18"
110
- }
111
- },
112
- "node_modules/@esbuild/freebsd-arm64": {
113
- "version": "0.27.2",
114
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz",
115
- "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==",
116
- "cpu": [
117
- "arm64"
118
- ],
119
- "license": "MIT",
120
- "optional": true,
121
- "os": [
122
- "freebsd"
123
- ],
124
- "engines": {
125
- "node": ">=18"
126
- }
127
- },
128
- "node_modules/@esbuild/freebsd-x64": {
129
- "version": "0.27.2",
130
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz",
131
- "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==",
132
- "cpu": [
133
- "x64"
134
- ],
135
- "license": "MIT",
136
- "optional": true,
137
- "os": [
138
- "freebsd"
139
- ],
140
- "engines": {
141
- "node": ">=18"
142
- }
143
- },
144
- "node_modules/@esbuild/linux-arm": {
145
- "version": "0.27.2",
146
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz",
147
- "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==",
148
- "cpu": [
149
- "arm"
150
- ],
151
- "license": "MIT",
152
- "optional": true,
153
- "os": [
154
- "linux"
155
- ],
156
- "engines": {
157
- "node": ">=18"
158
- }
159
- },
160
- "node_modules/@esbuild/linux-arm64": {
161
- "version": "0.27.2",
162
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz",
163
- "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==",
164
- "cpu": [
165
- "arm64"
166
- ],
167
- "license": "MIT",
168
- "optional": true,
169
- "os": [
170
- "linux"
171
- ],
172
- "engines": {
173
- "node": ">=18"
174
- }
175
- },
176
- "node_modules/@esbuild/linux-ia32": {
177
- "version": "0.27.2",
178
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz",
179
- "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==",
180
- "cpu": [
181
- "ia32"
182
- ],
183
- "license": "MIT",
184
- "optional": true,
185
- "os": [
186
- "linux"
187
- ],
188
- "engines": {
189
- "node": ">=18"
190
- }
191
- },
192
- "node_modules/@esbuild/linux-loong64": {
193
- "version": "0.27.2",
194
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz",
195
- "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==",
196
- "cpu": [
197
- "loong64"
198
- ],
199
- "license": "MIT",
200
- "optional": true,
201
- "os": [
202
- "linux"
203
- ],
204
- "engines": {
205
- "node": ">=18"
206
- }
207
- },
208
- "node_modules/@esbuild/linux-mips64el": {
209
- "version": "0.27.2",
210
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz",
211
- "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==",
212
- "cpu": [
213
- "mips64el"
214
- ],
215
- "license": "MIT",
216
- "optional": true,
217
- "os": [
218
- "linux"
219
- ],
220
- "engines": {
221
- "node": ">=18"
222
- }
223
- },
224
- "node_modules/@esbuild/linux-ppc64": {
225
- "version": "0.27.2",
226
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz",
227
- "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==",
228
- "cpu": [
229
- "ppc64"
230
- ],
231
- "license": "MIT",
232
- "optional": true,
233
- "os": [
234
- "linux"
235
- ],
236
- "engines": {
237
- "node": ">=18"
238
- }
239
- },
240
- "node_modules/@esbuild/linux-riscv64": {
241
- "version": "0.27.2",
242
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz",
243
- "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==",
244
- "cpu": [
245
- "riscv64"
246
- ],
247
- "license": "MIT",
248
- "optional": true,
249
- "os": [
250
- "linux"
251
- ],
252
- "engines": {
253
- "node": ">=18"
254
- }
255
- },
256
- "node_modules/@esbuild/linux-s390x": {
257
- "version": "0.27.2",
258
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz",
259
- "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==",
260
- "cpu": [
261
- "s390x"
262
- ],
263
- "license": "MIT",
264
- "optional": true,
265
- "os": [
266
- "linux"
267
- ],
268
- "engines": {
269
- "node": ">=18"
270
- }
271
- },
272
- "node_modules/@esbuild/linux-x64": {
273
- "version": "0.27.2",
274
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
275
- "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
276
- "cpu": [
277
- "x64"
278
- ],
279
- "license": "MIT",
280
- "optional": true,
281
- "os": [
282
- "linux"
283
- ],
284
- "engines": {
285
- "node": ">=18"
286
- }
287
- },
288
- "node_modules/@esbuild/netbsd-arm64": {
289
- "version": "0.27.2",
290
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz",
291
- "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==",
292
- "cpu": [
293
- "arm64"
294
- ],
295
- "license": "MIT",
296
- "optional": true,
297
- "os": [
298
- "netbsd"
299
- ],
300
- "engines": {
301
- "node": ">=18"
302
- }
303
- },
304
- "node_modules/@esbuild/netbsd-x64": {
305
- "version": "0.27.2",
306
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz",
307
- "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==",
308
- "cpu": [
309
- "x64"
310
- ],
311
- "license": "MIT",
312
- "optional": true,
313
- "os": [
314
- "netbsd"
315
- ],
316
- "engines": {
317
- "node": ">=18"
318
- }
319
- },
320
- "node_modules/@esbuild/openbsd-arm64": {
321
- "version": "0.27.2",
322
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz",
323
- "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==",
324
- "cpu": [
325
- "arm64"
326
- ],
327
- "license": "MIT",
328
- "optional": true,
329
- "os": [
330
- "openbsd"
331
- ],
332
- "engines": {
333
- "node": ">=18"
334
- }
335
- },
336
- "node_modules/@esbuild/openbsd-x64": {
337
- "version": "0.27.2",
338
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz",
339
- "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==",
340
- "cpu": [
341
- "x64"
342
- ],
343
- "license": "MIT",
344
- "optional": true,
345
- "os": [
346
- "openbsd"
347
- ],
348
- "engines": {
349
- "node": ">=18"
350
- }
351
- },
352
- "node_modules/@esbuild/openharmony-arm64": {
353
- "version": "0.27.2",
354
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz",
355
- "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==",
356
- "cpu": [
357
- "arm64"
358
- ],
359
- "license": "MIT",
360
- "optional": true,
361
- "os": [
362
- "openharmony"
363
- ],
364
- "engines": {
365
- "node": ">=18"
366
- }
367
- },
368
- "node_modules/@esbuild/sunos-x64": {
369
- "version": "0.27.2",
370
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz",
371
- "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==",
372
- "cpu": [
373
- "x64"
374
- ],
375
- "license": "MIT",
376
- "optional": true,
377
- "os": [
378
- "sunos"
379
- ],
380
- "engines": {
381
- "node": ">=18"
382
- }
383
- },
384
- "node_modules/@esbuild/win32-arm64": {
385
- "version": "0.27.2",
386
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz",
387
- "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==",
388
- "cpu": [
389
- "arm64"
390
- ],
391
- "license": "MIT",
392
- "optional": true,
393
- "os": [
394
- "win32"
395
- ],
396
- "engines": {
397
- "node": ">=18"
398
- }
399
- },
400
- "node_modules/@esbuild/win32-ia32": {
401
- "version": "0.27.2",
402
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz",
403
- "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==",
404
- "cpu": [
405
- "ia32"
406
- ],
407
- "license": "MIT",
408
- "optional": true,
409
- "os": [
410
- "win32"
411
- ],
412
- "engines": {
413
- "node": ">=18"
414
- }
415
- },
416
- "node_modules/@esbuild/win32-x64": {
417
- "version": "0.27.2",
418
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz",
419
- "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==",
420
- "cpu": [
421
- "x64"
422
- ],
423
- "license": "MIT",
424
- "optional": true,
425
- "os": [
426
- "win32"
427
- ],
428
- "engines": {
429
- "node": ">=18"
430
- }
431
- },
432
30
  "node_modules/@types/node": {
433
31
  "version": "20.19.27",
434
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz",
435
- "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==",
436
32
  "license": "MIT",
437
33
  "dependencies": {
438
34
  "undici-types": "~6.21.0"
@@ -440,8 +36,6 @@
440
36
  },
441
37
  "node_modules/esbuild": {
442
38
  "version": "0.27.2",
443
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
444
- "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
445
39
  "hasInstallScript": true,
446
40
  "license": "MIT",
447
41
  "bin": {
@@ -481,9 +75,6 @@
481
75
  },
482
76
  "node_modules/fsevents": {
483
77
  "version": "2.3.3",
484
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
485
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
486
- "hasInstallScript": true,
487
78
  "license": "MIT",
488
79
  "optional": true,
489
80
  "os": [
@@ -495,8 +86,6 @@
495
86
  },
496
87
  "node_modules/get-tsconfig": {
497
88
  "version": "4.13.0",
498
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
499
- "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
500
89
  "license": "MIT",
501
90
  "dependencies": {
502
91
  "resolve-pkg-maps": "^1.0.0"
@@ -507,8 +96,6 @@
507
96
  },
508
97
  "node_modules/resolve-pkg-maps": {
509
98
  "version": "1.0.0",
510
- "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
511
- "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
512
99
  "license": "MIT",
513
100
  "funding": {
514
101
  "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
@@ -516,8 +103,6 @@
516
103
  },
517
104
  "node_modules/tsx": {
518
105
  "version": "4.21.0",
519
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
520
- "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
521
106
  "license": "MIT",
522
107
  "dependencies": {
523
108
  "esbuild": "~0.27.0",
@@ -535,8 +120,6 @@
535
120
  },
536
121
  "node_modules/typescript": {
537
122
  "version": "5.9.3",
538
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
539
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
540
123
  "license": "Apache-2.0",
541
124
  "bin": {
542
125
  "tsc": "bin/tsc",
@@ -548,8 +131,6 @@
548
131
  },
549
132
  "node_modules/undici-types": {
550
133
  "version": "6.21.0",
551
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
552
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
553
134
  "license": "MIT"
554
135
  }
555
136
  }