anhedral 0.1.9 → 0.3.0

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 (83) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/CONTRIBUTING.md +70 -0
  3. package/LICENSE +21 -17
  4. package/README.md +151 -152
  5. package/SECURITY.md +35 -0
  6. package/SKILL.md +177 -0
  7. package/bin/anhedral.js +1 -1
  8. package/dist/architecture/contributions.d.ts +28 -0
  9. package/dist/architecture/contributions.js +118 -0
  10. package/dist/architecture/index.d.ts +12 -0
  11. package/dist/architecture/index.js +6 -0
  12. package/dist/architecture/manifest.d.ts +53 -0
  13. package/dist/architecture/manifest.js +283 -0
  14. package/dist/architecture/modules.d.ts +37 -0
  15. package/dist/architecture/modules.js +176 -0
  16. package/dist/architecture/plan.d.ts +58 -0
  17. package/dist/architecture/plan.js +145 -0
  18. package/dist/architecture/templates.d.ts +10 -0
  19. package/dist/architecture/templates.js +23 -0
  20. package/dist/bin.d.ts +2 -0
  21. package/dist/bin.js +167 -0
  22. package/dist/cli.d.ts +24 -2
  23. package/dist/cli.js +186 -21
  24. package/dist/composers/root.d.ts +6 -0
  25. package/dist/composers/root.js +34 -0
  26. package/dist/dependencies.d.ts +29 -9
  27. package/dist/dependencies.js +220 -60
  28. package/dist/index.d.ts +8 -2
  29. package/dist/index.js +5 -31
  30. package/dist/print.js +15 -0
  31. package/dist/prompts.d.ts +5 -0
  32. package/dist/prompts.js +19 -0
  33. package/dist/render.d.ts +11 -0
  34. package/dist/render.js +74 -0
  35. package/dist/scaffold.d.ts +56 -12
  36. package/dist/scaffold.js +1466 -1158
  37. package/dist/template-source.d.ts +20 -0
  38. package/dist/template-source.js +180 -0
  39. package/dist/templates/api.d.ts +2 -0
  40. package/dist/templates/api.js +3114 -0
  41. package/dist/templates/assets-private-proxy.d.ts +3 -0
  42. package/dist/templates/assets-private-proxy.js +277 -0
  43. package/dist/templates/desktop.d.ts +2 -0
  44. package/dist/templates/desktop.js +572 -0
  45. package/dist/templates/extension.d.ts +1 -1
  46. package/dist/templates/extension.js +322 -248
  47. package/dist/templates/mobile.d.ts +2 -0
  48. package/dist/templates/mobile.js +720 -0
  49. package/dist/templates/shared.d.ts +2 -0
  50. package/dist/templates/shared.js +503 -0
  51. package/dist/templates/web.d.ts +2 -0
  52. package/dist/templates/web.js +412 -0
  53. package/dist/toolchain.d.ts +0 -8
  54. package/dist/toolchain.js +0 -21
  55. package/dist/transaction.d.ts +22 -0
  56. package/dist/transaction.js +822 -0
  57. package/dist/ui.d.ts +33 -0
  58. package/dist/ui.js +199 -0
  59. package/dist/util.d.ts +1 -5
  60. package/dist/util.js +70 -159
  61. package/dist/version.d.ts +2 -0
  62. package/dist/version.js +2 -0
  63. package/dist/workspace-config.d.ts +11 -0
  64. package/dist/workspace-config.js +372 -0
  65. package/docs/conventions.md +89 -0
  66. package/docs/output-tree-contract.md +442 -0
  67. package/package.json +56 -13
  68. package/references/manual-scaffolding.md +386 -0
  69. package/templates/api-fastify/apps/api/tsconfig.json +20 -0
  70. package/templates/catalog.json +23 -0
  71. package/templates/db-drizzle/packages/db/tsconfig.json +14 -0
  72. package/templates/desktop-electron/apps/desktop/tsconfig.json +37 -0
  73. package/templates/extension-wxt/apps/extension/tsconfig.json +41 -0
  74. package/templates/mobile-expo/apps/mobile/expo-env.d.ts +1 -0
  75. package/templates/web-next/apps/web/next-env.d.ts +6 -0
  76. package/dist/branding.d.ts +0 -5
  77. package/dist/branding.js +0 -17
  78. package/dist/commands.d.ts +0 -7
  79. package/dist/commands.js +0 -24
  80. package/dist/templates/backend.d.ts +0 -2
  81. package/dist/templates/backend.js +0 -2115
  82. package/dist/templates/frontend.d.ts +0 -2
  83. package/dist/templates/frontend.js +0 -1268
@@ -0,0 +1,442 @@
1
+ # Generated Output-Tree Contract
2
+
3
+ <!-- Generated by tests/update-output-tree-contracts.js. Do not edit by hand. -->
4
+
5
+ These source-only trees are generated with the stable toolchain and `--skip-install`.
6
+ Each contract records every file or symlink path, Unix mode, byte length, and SHA-256 digest.
7
+ Installed dependencies, compiler output, and framework caches are forbidden.
8
+ Deterministic provider-placeholder `.env.example` files are hashed by the contract; generated real `.env` files are forbidden.
9
+
10
+ Runtime E2E builds use disposable operating-system temp directories and are not part of these golden trees.
11
+ A generated project may contain only the root `pnpm-workspace.yaml` and root `pnpm-lock.yaml`; nested pnpm workspace islands are rejected.
12
+
13
+ Regenerate after an intentional scaffold change:
14
+
15
+ ```sh
16
+ pnpm build
17
+ node tests/update-output-tree-contracts.js
18
+ ```
19
+
20
+ ## Scenario summary
21
+
22
+ | Scenario | Apps | Features | Contract | Entries | Tree SHA-256 |
23
+ | --- | --- | --- | --- | ---: | --- |
24
+ | `expo-extension` | web, mobile, api, desktop, extension | database, auth, billing, storage, nativeSubscriptions | deterministic golden | 130 | `997fff94b7a61b48b063634523e88146d9b454013285f233ddf44afa12b22693` |
25
+ | `web-api-minimal` | web, api | database, auth | deterministic golden | 58 | `5e178bce3710dfbbbdd78acb7021f18c213d4ad80a93ac345c436e1372549f99` |
26
+ | `api-only` | api | | deterministic golden | 29 | `f067a459375b49d53e9c031b917851e30dc0c4c67a583018ba4972cd480467fc` |
27
+ | `add-desktop-flow` | api, desktop | database, auth | deterministic golden | 59 | `7955805e03d0ee3cb1efadfffe2886f27335e29e1c0f22408b5df637f7c31a74` |
28
+
29
+ ## expo-extension
30
+
31
+ All app surfaces and feature modules
32
+
33
+ ```text
34
+ expo-extension-sample/
35
+ ├── .env.example
36
+ ├── .github/
37
+ │ └── workflows/
38
+ │ └── anhedral-ci.yml
39
+ ├── .gitignore
40
+ ├── .vercelignore
41
+ ├── ANHEDRAL.md
42
+ ├── PRODUCTION.md
43
+ ├── README.md
44
+ ├── SKILL.md
45
+ ├── anhedral.json
46
+ ├── apps/
47
+ │ ├── api/
48
+ │ │ ├── .env.example
49
+ │ │ ├── .gitignore
50
+ │ │ ├── package.json
51
+ │ │ ├── src/
52
+ │ │ │ ├── application.ts
53
+ │ │ │ ├── auth.ts
54
+ │ │ │ ├── billing.ts
55
+ │ │ │ ├── env.ts
56
+ │ │ │ ├── index.ts
57
+ │ │ │ ├── realtime.ts
58
+ │ │ │ ├── routes.ts
59
+ │ │ │ └── storage.ts
60
+ │ │ ├── tests/
61
+ │ │ │ ├── env.test.ts
62
+ │ │ │ ├── health.test.ts
63
+ │ │ │ ├── revenuecat-webhook.test.ts
64
+ │ │ │ └── storage.test.ts
65
+ │ │ ├── tsconfig.json
66
+ │ │ └── vitest.config.ts
67
+ │ ├── assets-private-proxy/
68
+ │ │ ├── package.json
69
+ │ │ ├── src/
70
+ │ │ │ └── index.js
71
+ │ │ └── wrangler.jsonc
72
+ │ ├── desktop/
73
+ │ │ ├── .env.example
74
+ │ │ ├── components.json
75
+ │ │ ├── index.html
76
+ │ │ ├── package.json
77
+ │ │ ├── postcss.config.mjs
78
+ │ │ ├── scripts/
79
+ │ │ │ └── dev.mjs
80
+ │ │ ├── src/
81
+ │ │ │ ├── main/
82
+ │ │ │ │ ├── main.ts
83
+ │ │ │ │ └── preload.cts
84
+ │ │ │ └── renderer/
85
+ │ │ │ ├── components/
86
+ │ │ │ │ └── ui/
87
+ │ │ │ │ └── button.tsx
88
+ │ │ │ ├── hooks/
89
+ │ │ │ │ └── use-entitlement.ts
90
+ │ │ │ ├── lib/
91
+ │ │ │ │ ├── api.ts
92
+ │ │ │ │ ├── auth.ts
93
+ │ │ │ │ └── utils.ts
94
+ │ │ │ ├── main.tsx
95
+ │ │ │ └── styles.css
96
+ │ │ ├── tsconfig.json
97
+ │ │ ├── tsconfig.main.json
98
+ │ │ └── vite.config.ts
99
+ │ ├── extension/
100
+ │ │ ├── .env.example
101
+ │ │ ├── README.md
102
+ │ │ ├── components.json
103
+ │ │ ├── package.json
104
+ │ │ ├── postcss.config.cjs
105
+ │ │ ├── src/
106
+ │ │ │ ├── components/
107
+ │ │ │ │ └── ui/
108
+ │ │ │ │ └── button.tsx
109
+ │ │ │ ├── contexts/
110
+ │ │ │ │ └── auth-context.tsx
111
+ │ │ │ ├── entrypoints/
112
+ │ │ │ │ ├── background.ts
113
+ │ │ │ │ └── sidepanel/
114
+ │ │ │ │ ├── app.tsx
115
+ │ │ │ │ ├── index.html
116
+ │ │ │ │ └── main.tsx
117
+ │ │ │ ├── hooks/
118
+ │ │ │ │ └── use-entitlement.ts
119
+ │ │ │ ├── lib/
120
+ │ │ │ │ ├── api.ts
121
+ │ │ │ │ └── utils.ts
122
+ │ │ │ └── styles/
123
+ │ │ │ └── main.css
124
+ │ │ ├── tailwind.config.cjs
125
+ │ │ ├── tsconfig.json
126
+ │ │ └── wxt.config.ts
127
+ │ ├── mobile/
128
+ │ │ ├── .env.example
129
+ │ │ ├── .gitignore
130
+ │ │ ├── app/
131
+ │ │ │ ├── _layout.tsx
132
+ │ │ │ └── index.tsx
133
+ │ │ ├── app.json
134
+ │ │ ├── babel.config.js
135
+ │ │ ├── components/
136
+ │ │ │ └── account-controls.tsx
137
+ │ │ ├── components.json
138
+ │ │ ├── eas.json
139
+ │ │ ├── expo-env.d.ts
140
+ │ │ ├── global.css
141
+ │ │ ├── hooks/
142
+ │ │ │ ├── use-api-client.ts
143
+ │ │ │ └── use-entitlement.ts
144
+ │ │ ├── lib/
145
+ │ │ │ ├── api.ts
146
+ │ │ │ ├── subscriptions.ts
147
+ │ │ │ └── utils.ts
148
+ │ │ ├── metro.config.js
149
+ │ │ ├── nativewind-env.d.ts
150
+ │ │ ├── package.json
151
+ │ │ ├── tailwind.config.js
152
+ │ │ └── tsconfig.json
153
+ │ └── web/
154
+ │ ├── .env.example
155
+ │ ├── app/
156
+ │ │ ├── globals.css
157
+ │ │ ├── layout.tsx
158
+ │ │ └── page.tsx
159
+ │ ├── components/
160
+ │ │ ├── account-actions.tsx
161
+ │ │ ├── subscription-status.tsx
162
+ │ │ └── ui/
163
+ │ │ ├── button.tsx
164
+ │ │ └── card.tsx
165
+ │ ├── components.json
166
+ │ ├── hooks/
167
+ │ │ ├── use-api-client.ts
168
+ │ │ └── use-entitlement.ts
169
+ │ ├── lib/
170
+ │ │ ├── api.ts
171
+ │ │ └── utils.ts
172
+ │ ├── next-env.d.ts
173
+ │ ├── next.config.ts
174
+ │ ├── package.json
175
+ │ ├── postcss.config.mjs
176
+ │ └── tsconfig.json
177
+ ├── cloudflare/
178
+ │ ├── README.md
179
+ │ └── r2-cors.template.json
180
+ ├── docs/
181
+ │ ├── DEVELOPMENT.md
182
+ │ └── STACK.md
183
+ ├── package.json
184
+ ├── packages/
185
+ │ ├── api-client/
186
+ │ │ ├── package.json
187
+ │ │ ├── src/
188
+ │ │ │ └── index.ts
189
+ │ │ └── tsconfig.json
190
+ │ ├── contracts/
191
+ │ │ ├── package.json
192
+ │ │ ├── src/
193
+ │ │ │ └── index.ts
194
+ │ │ └── tsconfig.json
195
+ │ ├── db/
196
+ │ │ ├── .env.example
197
+ │ │ ├── drizzle.config.ts
198
+ │ │ ├── migrations/
199
+ │ │ │ └── .gitkeep
200
+ │ │ ├── package.json
201
+ │ │ ├── src/
202
+ │ │ │ ├── index.ts
203
+ │ │ │ ├── migrate.ts
204
+ │ │ │ └── schema.ts
205
+ │ │ └── tsconfig.json
206
+ │ └── realtime/
207
+ │ ├── package.json
208
+ │ ├── src/
209
+ │ │ └── index.ts
210
+ │ └── tsconfig.json
211
+ ├── pnpm-workspace.yaml
212
+ ├── scripts/
213
+ │ └── verify-db-migrations.mjs
214
+ ├── turbo.json
215
+ └── vercel.json
216
+ ```
217
+
218
+ ## web-api-minimal
219
+
220
+ Next.js, Fastify, database, and auth
221
+
222
+ ```text
223
+ web-api-minimal/
224
+ ├── .env.example
225
+ ├── .github/
226
+ │ └── workflows/
227
+ │ └── anhedral-ci.yml
228
+ ├── .gitignore
229
+ ├── .vercelignore
230
+ ├── ANHEDRAL.md
231
+ ├── PRODUCTION.md
232
+ ├── README.md
233
+ ├── SKILL.md
234
+ ├── anhedral.json
235
+ ├── apps/
236
+ │ ├── api/
237
+ │ │ ├── .env.example
238
+ │ │ ├── .gitignore
239
+ │ │ ├── package.json
240
+ │ │ ├── src/
241
+ │ │ │ ├── application.ts
242
+ │ │ │ ├── auth.ts
243
+ │ │ │ ├── env.ts
244
+ │ │ │ ├── index.ts
245
+ │ │ │ └── routes.ts
246
+ │ │ ├── tests/
247
+ │ │ │ ├── env.test.ts
248
+ │ │ │ └── health.test.ts
249
+ │ │ ├── tsconfig.json
250
+ │ │ └── vitest.config.ts
251
+ │ └── web/
252
+ │ ├── .env.example
253
+ │ ├── app/
254
+ │ │ ├── globals.css
255
+ │ │ ├── layout.tsx
256
+ │ │ └── page.tsx
257
+ │ ├── components/
258
+ │ │ ├── account-actions.tsx
259
+ │ │ └── ui/
260
+ │ │ ├── button.tsx
261
+ │ │ └── card.tsx
262
+ │ ├── components.json
263
+ │ ├── hooks/
264
+ │ │ └── use-api-client.ts
265
+ │ ├── lib/
266
+ │ │ ├── api.ts
267
+ │ │ └── utils.ts
268
+ │ ├── next-env.d.ts
269
+ │ ├── next.config.ts
270
+ │ ├── package.json
271
+ │ ├── postcss.config.mjs
272
+ │ └── tsconfig.json
273
+ ├── docs/
274
+ │ ├── DEVELOPMENT.md
275
+ │ └── STACK.md
276
+ ├── package.json
277
+ ├── packages/
278
+ │ ├── api-client/
279
+ │ │ ├── package.json
280
+ │ │ ├── src/
281
+ │ │ │ └── index.ts
282
+ │ │ └── tsconfig.json
283
+ │ ├── contracts/
284
+ │ │ ├── package.json
285
+ │ │ ├── src/
286
+ │ │ │ └── index.ts
287
+ │ │ └── tsconfig.json
288
+ │ └── db/
289
+ │ ├── .env.example
290
+ │ ├── drizzle.config.ts
291
+ │ ├── migrations/
292
+ │ │ └── .gitkeep
293
+ │ ├── package.json
294
+ │ ├── src/
295
+ │ │ ├── index.ts
296
+ │ │ ├── migrate.ts
297
+ │ │ └── schema.ts
298
+ │ └── tsconfig.json
299
+ ├── pnpm-workspace.yaml
300
+ ├── scripts/
301
+ │ └── verify-db-migrations.mjs
302
+ ├── turbo.json
303
+ └── vercel.json
304
+ ```
305
+
306
+ ## api-only
307
+
308
+ Minimal Fastify API without database or auth
309
+
310
+ ```text
311
+ api-only/
312
+ ├── .env.example
313
+ ├── .github/
314
+ │ └── workflows/
315
+ │ └── anhedral-ci.yml
316
+ ├── .gitignore
317
+ ├── .vercelignore
318
+ ├── ANHEDRAL.md
319
+ ├── PRODUCTION.md
320
+ ├── README.md
321
+ ├── SKILL.md
322
+ ├── anhedral.json
323
+ ├── apps/
324
+ │ └── api/
325
+ │ ├── .env.example
326
+ │ ├── .gitignore
327
+ │ ├── package.json
328
+ │ ├── src/
329
+ │ │ ├── application.ts
330
+ │ │ ├── env.ts
331
+ │ │ ├── index.ts
332
+ │ │ └── routes.ts
333
+ │ ├── tests/
334
+ │ │ ├── env.test.ts
335
+ │ │ └── health.test.ts
336
+ │ ├── tsconfig.json
337
+ │ └── vitest.config.ts
338
+ ├── docs/
339
+ │ ├── DEVELOPMENT.md
340
+ │ └── STACK.md
341
+ ├── package.json
342
+ ├── packages/
343
+ │ └── contracts/
344
+ │ ├── package.json
345
+ │ ├── src/
346
+ │ │ └── index.ts
347
+ │ └── tsconfig.json
348
+ ├── pnpm-workspace.yaml
349
+ ├── turbo.json
350
+ └── vercel.json
351
+ ```
352
+
353
+ ## add-desktop-flow
354
+
355
+ API-first project with desktop added afterward
356
+
357
+ ```text
358
+ add-desktop-flow/
359
+ ├── .env.example
360
+ ├── .github/
361
+ │ └── workflows/
362
+ │ └── anhedral-ci.yml
363
+ ├── .gitignore
364
+ ├── .vercelignore
365
+ ├── ANHEDRAL.md
366
+ ├── PRODUCTION.md
367
+ ├── README.md
368
+ ├── SKILL.md
369
+ ├── anhedral.json
370
+ ├── apps/
371
+ │ ├── api/
372
+ │ │ ├── .env.example
373
+ │ │ ├── .gitignore
374
+ │ │ ├── package.json
375
+ │ │ ├── src/
376
+ │ │ │ ├── application.ts
377
+ │ │ │ ├── auth.ts
378
+ │ │ │ ├── env.ts
379
+ │ │ │ ├── index.ts
380
+ │ │ │ └── routes.ts
381
+ │ │ ├── tests/
382
+ │ │ │ ├── env.test.ts
383
+ │ │ │ └── health.test.ts
384
+ │ │ ├── tsconfig.json
385
+ │ │ └── vitest.config.ts
386
+ │ └── desktop/
387
+ │ ├── .env.example
388
+ │ ├── components.json
389
+ │ ├── index.html
390
+ │ ├── package.json
391
+ │ ├── postcss.config.mjs
392
+ │ ├── scripts/
393
+ │ │ └── dev.mjs
394
+ │ ├── src/
395
+ │ │ ├── main/
396
+ │ │ │ ├── main.ts
397
+ │ │ │ └── preload.cts
398
+ │ │ └── renderer/
399
+ │ │ ├── components/
400
+ │ │ │ └── ui/
401
+ │ │ │ └── button.tsx
402
+ │ │ ├── lib/
403
+ │ │ │ ├── api.ts
404
+ │ │ │ ├── auth.ts
405
+ │ │ │ └── utils.ts
406
+ │ │ ├── main.tsx
407
+ │ │ └── styles.css
408
+ │ ├── tsconfig.json
409
+ │ ├── tsconfig.main.json
410
+ │ └── vite.config.ts
411
+ ├── docs/
412
+ │ ├── DEVELOPMENT.md
413
+ │ └── STACK.md
414
+ ├── package.json
415
+ ├── packages/
416
+ │ ├── api-client/
417
+ │ │ ├── package.json
418
+ │ │ ├── src/
419
+ │ │ │ └── index.ts
420
+ │ │ └── tsconfig.json
421
+ │ ├── contracts/
422
+ │ │ ├── package.json
423
+ │ │ ├── src/
424
+ │ │ │ └── index.ts
425
+ │ │ └── tsconfig.json
426
+ │ └── db/
427
+ │ ├── .env.example
428
+ │ ├── drizzle.config.ts
429
+ │ ├── migrations/
430
+ │ │ └── .gitkeep
431
+ │ ├── package.json
432
+ │ ├── src/
433
+ │ │ ├── index.ts
434
+ │ │ ├── migrate.ts
435
+ │ │ └── schema.ts
436
+ │ └── tsconfig.json
437
+ ├── pnpm-workspace.yaml
438
+ ├── scripts/
439
+ │ └── verify-db-migrations.mjs
440
+ ├── turbo.json
441
+ └── vercel.json
442
+ ```
package/package.json CHANGED
@@ -1,55 +1,98 @@
1
1
  {
2
2
  "name": "anhedral",
3
- "version": "0.1.9",
4
- "description": "Opinionated init CLI for Expo, Fastify, WXT, shared packages, Neon, Drizzle, Clerk, RevenueCat, Stripe, R2, and Vercel.",
3
+ "version": "0.3.0",
4
+ "description": "Generate a complete, readable TypeScript product stack with Next.js, Expo, Fastify, Neon, Drizzle, Clerk, R2, Electron, WXT, and Vercel.",
5
5
  "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ }
11
+ },
12
+ "types": "./dist/index.d.ts",
13
+ "sideEffects": false,
6
14
  "bin": {
7
15
  "anhedral": "bin/anhedral.js"
8
16
  },
9
17
  "files": [
10
18
  "bin",
11
19
  "dist",
20
+ "docs/conventions.md",
21
+ "docs/output-tree-contract.md",
22
+ "templates",
23
+ "references",
24
+ "SKILL.md",
25
+ "CHANGELOG.md",
26
+ "CONTRIBUTING.md",
12
27
  "LICENSE",
13
28
  "README.md",
29
+ "SECURITY.md",
14
30
  "anhedral.svg",
15
31
  "favicon.ico"
16
32
  ],
33
+ "homepage": "https://github.com/anhedral/anhedral-init#readme",
17
34
  "repository": {
18
35
  "type": "git",
19
36
  "url": "git+https://github.com/anhedral/anhedral-init.git"
20
37
  },
21
- "homepage": "https://github.com/anhedral/anhedral-init#readme",
22
38
  "bugs": {
23
39
  "url": "https://github.com/anhedral/anhedral-init/issues"
24
40
  },
41
+ "author": "Anhedral, Inc.",
25
42
  "publishConfig": {
26
43
  "access": "public"
27
44
  },
28
45
  "engines": {
29
- "node": ">=20.0.0"
46
+ "node": "^20.19.0 || >=22.12.0"
30
47
  },
31
48
  "scripts": {
32
- "scaffold": "node dist/index.js init",
33
- "build": "tsc",
49
+ "scaffold": "node dist/bin.js init",
50
+ "clean": "node scripts/clean.mjs",
51
+ "build": "pnpm clean && tsc",
34
52
  "prepare": "pnpm build",
35
53
  "typecheck": "tsc --noEmit",
54
+ "check:hygiene": "node scripts/check-source-hygiene.mjs",
55
+ "check:security": "node scripts/check-security-policy.mjs",
56
+ "check:release-policy": "node scripts/check-release-policy.mjs",
57
+ "check:release-secrets": "node scripts/check-release-secrets.mjs",
58
+ "lint": "pnpm typecheck && pnpm check:hygiene && pnpm check:release-policy",
59
+ "audit:osv": "pnpm build && node scripts/audit-osv.mjs --generator",
36
60
  "test": "pnpm test:cli",
61
+ "test:coverage": "pnpm build && c8 --all --include='dist/**/*.js' --reporter=text --reporter=json-summary --check-coverage --lines 84 --statements 84 --functions 84 --branches 80 node tests/test-cli.js",
37
62
  "pretest": "pnpm build",
38
63
  "prepublishOnly": "pnpm test:all",
39
64
  "test:cli": "node tests/test-cli.js",
40
65
  "test:cli:validation": "node tests/test-cli-validation.js",
41
66
  "test:deps": "pnpm build && node tests/test-dependency-manifest.js",
67
+ "test:vercel-schema": "pnpm build && node tests/test-vercel-services-schema.js",
68
+ "test:pack": "pnpm build && node tests/test-packed-cli.js",
69
+ "test:pack:exact": "node tests/test-packed-cli.js release-artifact/metadata.json",
70
+ "test:packlist": "pnpm build && node tests/test-packlist.js",
71
+ "test:release-tooling": "node tests/test-release-tooling.js",
72
+ "test:topologies": "pnpm build && node tests/test-module-topology-invariants.js",
73
+ "test:templates": "pnpm build && node tests/test-template-source.js",
74
+ "pretest:e2e": "pnpm build",
42
75
  "test:e2e": "node tests/test-e2e-public-stacks.js",
76
+ "pretest:e2e:latest": "pnpm build",
43
77
  "test:e2e:latest": "node tests/test-e2e-public-stacks.js --toolchain latest",
44
- "test:all": "pnpm test && pnpm test:deps && pnpm test:e2e",
45
- "release:check": "pnpm test:all && npm pack --dry-run",
78
+ "test:acceptance:desktop": "pnpm build && node tests/test-runtime-acceptance.js desktop",
79
+ "test:acceptance:extension": "pnpm build && node tests/test-runtime-acceptance.js extension",
80
+ "test:acceptance:mobile": "pnpm build && node tests/test-runtime-acceptance.js mobile",
81
+ "test:all": "pnpm lint && pnpm check:security && pnpm audit:osv && pnpm test:coverage && pnpm test:deps && pnpm test:templates && pnpm test:vercel-schema && pnpm test:pack && pnpm test:packlist && pnpm test:e2e",
82
+ "release:check": "pnpm check:release-policy && pnpm test:all && npm pack --dry-run --ignore-scripts",
83
+ "release:pack": "pnpm build && node scripts/create-release-artifact.mjs && node scripts/check-release-secrets.mjs release-artifact/metadata.json",
84
+ "release:artifact:verify": "node scripts/verify-release-artifact.mjs release-artifact/metadata.json && node scripts/check-release-secrets.mjs release-artifact/metadata.json",
85
+ "release:artifact:smoke": "node tests/test-packed-cli.js release-artifact/metadata.json",
46
86
  "demo:refresh": "pnpm build && node tests/refresh-demo.js"
47
87
  },
48
88
  "keywords": [
49
89
  "cli",
50
90
  "scaffold",
91
+ "typescript",
92
+ "nextjs",
51
93
  "fastify",
52
94
  "expo",
95
+ "electron",
53
96
  "clerk",
54
97
  "drizzle",
55
98
  "neondb",
@@ -57,11 +100,11 @@
57
100
  "wxt",
58
101
  "vercel"
59
102
  ],
60
- "license": "MIT",
61
- "packageManager": "pnpm@10.15.1",
103
+ "license": "UNLICENSED",
104
+ "packageManager": "pnpm@10.34.5",
62
105
  "devDependencies": {
63
- "@types/node": "^24.5.2",
64
- "tsx": "^4.20.5",
65
- "typescript": "^5.9.2"
106
+ "@types/node": "20.19.43",
107
+ "c8": "11.0.0",
108
+ "typescript": "5.9.3"
66
109
  }
67
110
  }