create-taserjs 0.0.6 → 0.1.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 (82) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/addons/registry.cjs +3 -1
  3. package/dist/cjs/addons/registry.cjs.map +1 -1
  4. package/dist/cjs/addons/validators.cjs +10 -13
  5. package/dist/cjs/addons/validators.cjs.map +1 -1
  6. package/dist/cjs/cli.cjs +7 -5
  7. package/dist/cjs/cli.cjs.map +1 -1
  8. package/dist/cjs/commands/create.cjs +68 -48
  9. package/dist/cjs/commands/create.cjs.map +1 -1
  10. package/dist/cjs/commands/create.d.cts +2 -1
  11. package/dist/cjs/core/parse-options.cjs +48 -22
  12. package/dist/cjs/core/parse-options.cjs.map +1 -1
  13. package/dist/cjs/core/parse-options.d.cts +19 -4
  14. package/dist/cjs/core/project-config.cjs +5 -1
  15. package/dist/cjs/core/project-config.cjs.map +1 -1
  16. package/dist/cjs/core/resolve-packages.cjs +28 -66
  17. package/dist/cjs/core/resolve-packages.cjs.map +1 -1
  18. package/dist/cjs/core/resolve-packages.d.cts +1 -4
  19. package/dist/cjs/core/scaffold-engine.cjs +16 -27
  20. package/dist/cjs/core/scaffold-engine.cjs.map +1 -1
  21. package/dist/cjs/core/targets.cjs +162 -0
  22. package/dist/cjs/core/targets.cjs.map +1 -0
  23. package/dist/cjs/core/targets.d.cts +49 -0
  24. package/dist/cjs/core/types.cjs +21 -11
  25. package/dist/cjs/core/types.cjs.map +1 -1
  26. package/dist/cjs/core/types.d.cts +20 -4
  27. package/dist/cjs/frameworks/index.cjs +75 -174
  28. package/dist/cjs/frameworks/index.cjs.map +1 -1
  29. package/dist/cjs/frameworks/index.d.cts +18 -3
  30. package/dist/cjs/scaffold.d.cts +2 -2
  31. package/dist/cjs/templates/base.cjs +15 -99
  32. package/dist/cjs/templates/base.cjs.map +1 -1
  33. package/dist/cjs/templates/base.d.cts +0 -3
  34. package/dist/cjs/types.d.cts +1 -1
  35. package/dist/esm/addons/registry.js +4 -2
  36. package/dist/esm/addons/registry.js.map +1 -1
  37. package/dist/esm/addons/validators.js +10 -13
  38. package/dist/esm/addons/validators.js.map +1 -1
  39. package/dist/esm/cli.js +7 -5
  40. package/dist/esm/cli.js.map +1 -1
  41. package/dist/esm/commands/create.d.ts +2 -1
  42. package/dist/esm/commands/create.js +70 -50
  43. package/dist/esm/commands/create.js.map +1 -1
  44. package/dist/esm/core/parse-options.d.ts +19 -4
  45. package/dist/esm/core/parse-options.js +47 -23
  46. package/dist/esm/core/parse-options.js.map +1 -1
  47. package/dist/esm/core/project-config.js +5 -1
  48. package/dist/esm/core/project-config.js.map +1 -1
  49. package/dist/esm/core/resolve-packages.d.ts +1 -4
  50. package/dist/esm/core/resolve-packages.js +28 -66
  51. package/dist/esm/core/resolve-packages.js.map +1 -1
  52. package/dist/esm/core/scaffold-engine.js +18 -29
  53. package/dist/esm/core/scaffold-engine.js.map +1 -1
  54. package/dist/esm/core/targets.d.ts +49 -0
  55. package/dist/esm/core/targets.js +157 -0
  56. package/dist/esm/core/targets.js.map +1 -0
  57. package/dist/esm/core/types.d.ts +20 -4
  58. package/dist/esm/core/types.js +19 -11
  59. package/dist/esm/core/types.js.map +1 -1
  60. package/dist/esm/frameworks/index.d.ts +18 -3
  61. package/dist/esm/frameworks/index.js +72 -174
  62. package/dist/esm/frameworks/index.js.map +1 -1
  63. package/dist/esm/scaffold.d.ts +2 -2
  64. package/dist/esm/templates/base.d.ts +0 -3
  65. package/dist/esm/templates/base.js +16 -98
  66. package/dist/esm/templates/base.js.map +1 -1
  67. package/dist/esm/types.d.ts +1 -1
  68. package/package.json +3 -2
  69. package/src/addons/registry.ts +6 -2
  70. package/src/addons/validators.ts +10 -13
  71. package/src/cli.ts +6 -4
  72. package/src/commands/create.ts +82 -26
  73. package/src/core/parse-options.ts +84 -35
  74. package/src/core/project-config.ts +6 -1
  75. package/src/core/resolve-packages.ts +38 -76
  76. package/src/core/scaffold-engine.ts +41 -65
  77. package/src/core/targets.ts +202 -0
  78. package/src/core/types.ts +38 -24
  79. package/src/frameworks/index.ts +74 -182
  80. package/src/scaffold.ts +2 -2
  81. package/src/templates/base.ts +14 -98
  82. package/src/types.ts +3 -1
@@ -11,16 +11,11 @@ export function packageJsonTemplate(
11
11
  private: true,
12
12
  type: "module",
13
13
  imports: {
14
- "#src/*": "./src/*",
14
+ "#taserjs/router": "./src/taser.ts",
15
15
  },
16
16
  scripts: {
17
- dev: "run-p dev:server dev:taser",
18
- "dev:server": "tsx watch src/index.ts",
19
- "dev:taser": "taser watch",
20
- start: "tsx src/index.ts",
21
- generate: "taser generate",
22
- build: "taser generate && tsdown",
23
- serve: "node dist/index.mjs",
17
+ dev: "vite",
18
+ build: "vite build",
24
19
  typecheck: "tsc --noEmit -p tsconfig.json",
25
20
  ...scripts,
26
21
  },
@@ -29,19 +24,6 @@ export function packageJsonTemplate(
29
24
  return `${JSON.stringify(pkg, null, 2)}\n`;
30
25
  }
31
26
 
32
- export function tsdownConfigTemplate(): string {
33
- return `import { defineConfig } from 'tsdown'
34
-
35
- export default defineConfig({
36
- entry: ['./src/index.ts'],
37
- platform: 'node',
38
- outDir: 'dist',
39
- clean: true,
40
- sourcemap: true,
41
- })
42
- `;
43
- }
44
-
45
27
  export function tsconfigTemplate(): string {
46
28
  return `${JSON.stringify(
47
29
  {
@@ -49,16 +31,15 @@ export function tsconfigTemplate(): string {
49
31
  target: "ES2022",
50
32
  module: "NodeNext",
51
33
  paths: {
52
- "#src/*": ["./src/*"],
34
+ "#taserjs/router": ["./src/taser.ts"],
53
35
  },
54
36
  strict: true,
55
37
  skipLibCheck: true,
56
38
  verbatimModuleSyntax: true,
57
39
  isolatedModules: true,
58
40
  noEmit: true,
59
- types: ["node"],
60
41
  },
61
- include: ["src"],
42
+ include: ["src", ".taser/types/**/*.d.ts"],
62
43
  },
63
44
  null,
64
45
  2,
@@ -68,6 +49,8 @@ export function tsconfigTemplate(): string {
68
49
  export function gitignoreTemplate(): string {
69
50
  return `node_modules
70
51
  dist
52
+ .output
53
+ .taser
71
54
  .DS_Store
72
55
  *.log
73
56
  .env
@@ -104,7 +87,7 @@ ${bootBlock}
104
87
  export function rootLayoutTemplate(): string {
105
88
  return `import { cors } from '@taserjs/router/cors'
106
89
 
107
- import { t } from '#src/taser.js'
90
+ import { t } from '#taserjs/router'
108
91
 
109
92
  export const Middleware = t.middleware('/$')
110
93
  .use(cors())
@@ -112,14 +95,14 @@ export const Middleware = t.middleware('/$')
112
95
  }
113
96
 
114
97
  export function indexRouteTemplate(): string {
115
- return `import { reply } from '@taserjs/router'
116
- import { t } from '#src/taser.js'
98
+ return `import { json } from '@taserjs/router/reply'
99
+ import { t } from '#taserjs/router'
117
100
 
118
101
  const GET = t.get('/')
119
102
 
120
103
  export type RouteContext = typeof GET.$Infer.Context
121
104
  export const Route = GET.handler((_ctx) => {
122
- return reply.json({ message: 'Welcome to Taser' })
105
+ return json({ message: 'Welcome to Taser' })
123
106
  })
124
107
  `;
125
108
  }
@@ -138,81 +121,14 @@ export function healthRouteTemplate(ctx: ScaffoldContext): string {
138
121
  const body = lines.length > 0 ? `${lines.join("\n")}\n` : "";
139
122
  const ctxArg = lines.length > 0 ? "(ctx)" : "(_ctx)";
140
123
 
141
- return `import { reply } from '@taserjs/router'
142
- import { t } from '#src/taser.js'
124
+ return `import { json } from '@taserjs/router/reply'
125
+ import { t } from '#taserjs/router'
143
126
 
144
127
  const GET = t.get('/health')
145
128
 
146
129
  export type RouteContext = typeof GET.$Infer.Context
147
130
  export const Route = GET.handler(${ctxArg} => {
148
- ${body} return reply.json({ ok: true })
131
+ ${body} return json({ ok: true })
149
132
  })
150
133
  `;
151
134
  }
152
-
153
- /** Minimal placeholder until `taser generate` runs. */
154
- export function starterManifestTemplate(): string {
155
- return `/* eslint-disable */
156
- // Run \`pnpm generate\` (taser generate) to replace this file.
157
- import { Middleware as RootSplatLayoutImport } from './routes/$.js'
158
- import { Route as RootIndexGetRouteImport } from './routes/index.get.js'
159
- import { Route as HealthGetRouteImport } from './routes/health.get.js'
160
-
161
- export const routeManifest = {
162
- layouts: {
163
- '/$': {
164
- middlewares: RootSplatLayoutImport,
165
- },
166
- },
167
- routes: {
168
- '/': {
169
- GET: {
170
- layoutChain: ['/$'],
171
- route: RootIndexGetRouteImport,
172
- },
173
- },
174
- '/health': {
175
- GET: {
176
- layoutChain: ['/$'],
177
- route: HealthGetRouteImport,
178
- },
179
- },
180
- },
181
- } as const
182
-
183
- export type RoutePathGen = '/' | '/health'
184
- export type LayoutIdGen = '/$'
185
- export type LayoutTreeGen = {
186
- '/$': {
187
- parent: null
188
- middlewares: typeof RootSplatLayoutImport
189
- }
190
- }
191
- export type RouteByPathMethodGen = {
192
- '/': {
193
- GET: {
194
- parent: '/$'
195
- layoutChain: ['/$']
196
- route: typeof RootIndexGetRouteImport
197
- }
198
- }
199
- '/health': {
200
- GET: {
201
- parent: '/$'
202
- layoutChain: ['/$']
203
- route: typeof HealthGetRouteImport
204
- }
205
- }
206
- }
207
- export type RouteManifest = typeof routeManifest
208
-
209
- declare module '@taserjs/router' {
210
- interface RouterRegister {
211
- RoutePath: RoutePathGen
212
- LayoutId: LayoutIdGen
213
- LayoutTree: LayoutTreeGen
214
- RouteByPathMethod: RouteByPathMethodGen
215
- }
216
- }
217
- `;
218
- }
package/src/types.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  export type {
2
2
  DbDriver,
3
3
  DbOdm,
4
+ DeployTarget,
5
+ Framework,
4
6
  LoggerId,
5
7
  PackageGroups,
6
- ProjectType,
8
+ Runtime,
7
9
  ScaffoldOptions,
8
10
  ScaffoldResult,
9
11
  ValidatorId,