create-taserjs 0.1.11 → 0.2.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 (189) hide show
  1. package/README.md +8 -44
  2. package/dist/cli-9fkoNOJg.js +1237 -0
  3. package/dist/cli-9fkoNOJg.js.map +1 -0
  4. package/dist/cli-DkZddFtU.cjs +1398 -0
  5. package/dist/cli.cjs +4 -0
  6. package/dist/cli.d.cts +4 -0
  7. package/dist/cli.d.cts.map +1 -0
  8. package/dist/cli.d.ts +4 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +3 -0
  11. package/dist/index.cjs +25 -0
  12. package/dist/index.d.cts +119 -0
  13. package/dist/index.d.cts.map +1 -0
  14. package/dist/index.d.ts +119 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +2 -0
  17. package/package.json +39 -9
  18. package/src/addons/drizzle/index.ts +37 -40
  19. package/src/addons/kysely/index.ts +19 -22
  20. package/src/addons/pino/index.ts +2 -2
  21. package/src/addons/prisma/index.ts +18 -22
  22. package/src/addons/registry.ts +37 -73
  23. package/src/addons/types.ts +12 -13
  24. package/src/addons/validators.ts +22 -23
  25. package/src/addons/winston/index.ts +3 -3
  26. package/src/cli.ts +96 -56
  27. package/src/commands/create.ts +118 -249
  28. package/src/core/package-manager.ts +36 -55
  29. package/src/core/scaffold-engine.ts +100 -75
  30. package/src/core/targets.ts +20 -56
  31. package/src/core/types.ts +18 -53
  32. package/src/index.ts +8 -0
  33. package/src/templates/base.ts +139 -51
  34. package/dist/cjs/_virtual/_rolldown/runtime.cjs +0 -23
  35. package/dist/cjs/addons/arktype/index.cjs +0 -6
  36. package/dist/cjs/addons/arktype/index.cjs.map +0 -1
  37. package/dist/cjs/addons/arktype/index.d.cts +0 -1
  38. package/dist/cjs/addons/drizzle/index.cjs +0 -131
  39. package/dist/cjs/addons/drizzle/index.cjs.map +0 -1
  40. package/dist/cjs/addons/drizzle/index.d.cts +0 -2
  41. package/dist/cjs/addons/kysely/index.cjs +0 -103
  42. package/dist/cjs/addons/kysely/index.cjs.map +0 -1
  43. package/dist/cjs/addons/kysely/index.d.cts +0 -2
  44. package/dist/cjs/addons/pino/index.cjs +0 -30
  45. package/dist/cjs/addons/pino/index.cjs.map +0 -1
  46. package/dist/cjs/addons/pino/index.d.cts +0 -2
  47. package/dist/cjs/addons/prisma/index.cjs +0 -133
  48. package/dist/cjs/addons/prisma/index.cjs.map +0 -1
  49. package/dist/cjs/addons/prisma/index.d.cts +0 -2
  50. package/dist/cjs/addons/registry.cjs +0 -65
  51. package/dist/cjs/addons/registry.cjs.map +0 -1
  52. package/dist/cjs/addons/registry.d.cts +0 -5
  53. package/dist/cjs/addons/types.d.cts +0 -16
  54. package/dist/cjs/addons/valibot/index.cjs +0 -6
  55. package/dist/cjs/addons/valibot/index.cjs.map +0 -1
  56. package/dist/cjs/addons/valibot/index.d.cts +0 -1
  57. package/dist/cjs/addons/validators.cjs +0 -38
  58. package/dist/cjs/addons/validators.cjs.map +0 -1
  59. package/dist/cjs/addons/validators.d.cts +0 -5
  60. package/dist/cjs/addons/winston/index.cjs +0 -34
  61. package/dist/cjs/addons/winston/index.cjs.map +0 -1
  62. package/dist/cjs/addons/winston/index.d.cts +0 -2
  63. package/dist/cjs/addons/zod/index.cjs +0 -6
  64. package/dist/cjs/addons/zod/index.cjs.map +0 -1
  65. package/dist/cjs/addons/zod/index.d.cts +0 -1
  66. package/dist/cjs/cli.cjs +0 -65
  67. package/dist/cjs/cli.cjs.map +0 -1
  68. package/dist/cjs/cli.d.cts +0 -2
  69. package/dist/cjs/commands/create.cjs +0 -332
  70. package/dist/cjs/commands/create.cjs.map +0 -1
  71. package/dist/cjs/commands/create.d.cts +0 -14
  72. package/dist/cjs/core/json-output.cjs +0 -16
  73. package/dist/cjs/core/json-output.cjs.map +0 -1
  74. package/dist/cjs/core/json-output.d.cts +0 -4
  75. package/dist/cjs/core/package-manager.cjs +0 -56
  76. package/dist/cjs/core/package-manager.cjs.map +0 -1
  77. package/dist/cjs/core/package-manager.d.cts +0 -8
  78. package/dist/cjs/core/parse-options.cjs +0 -95
  79. package/dist/cjs/core/parse-options.cjs.map +0 -1
  80. package/dist/cjs/core/parse-options.d.cts +0 -35
  81. package/dist/cjs/core/project-config.cjs +0 -23
  82. package/dist/cjs/core/project-config.cjs.map +0 -1
  83. package/dist/cjs/core/project-config.d.cts +0 -2
  84. package/dist/cjs/core/resolve-packages.cjs +0 -58
  85. package/dist/cjs/core/resolve-packages.cjs.map +0 -1
  86. package/dist/cjs/core/resolve-packages.d.cts +0 -2
  87. package/dist/cjs/core/scaffold-engine.cjs +0 -72
  88. package/dist/cjs/core/scaffold-engine.cjs.map +0 -1
  89. package/dist/cjs/core/scaffold-engine.d.cts +0 -2
  90. package/dist/cjs/core/targets.cjs +0 -171
  91. package/dist/cjs/core/targets.cjs.map +0 -1
  92. package/dist/cjs/core/targets.d.cts +0 -49
  93. package/dist/cjs/core/types.cjs +0 -52
  94. package/dist/cjs/core/types.cjs.map +0 -1
  95. package/dist/cjs/core/types.d.cts +0 -57
  96. package/dist/cjs/core/validate-project-name.cjs +0 -44
  97. package/dist/cjs/core/validate-project-name.cjs.map +0 -1
  98. package/dist/cjs/core/validate-project-name.d.cts +0 -1
  99. package/dist/cjs/frameworks/index.cjs +0 -116
  100. package/dist/cjs/frameworks/index.cjs.map +0 -1
  101. package/dist/cjs/frameworks/index.d.cts +0 -18
  102. package/dist/cjs/scaffold.d.cts +0 -3
  103. package/dist/cjs/templates/base.cjs +0 -97
  104. package/dist/cjs/templates/base.cjs.map +0 -1
  105. package/dist/cjs/templates/base.d.cts +0 -9
  106. package/dist/cjs/types.d.cts +0 -1
  107. package/dist/esm/addons/arktype/index.d.ts +0 -1
  108. package/dist/esm/addons/arktype/index.js +0 -7
  109. package/dist/esm/addons/arktype/index.js.map +0 -1
  110. package/dist/esm/addons/drizzle/index.d.ts +0 -2
  111. package/dist/esm/addons/drizzle/index.js +0 -131
  112. package/dist/esm/addons/drizzle/index.js.map +0 -1
  113. package/dist/esm/addons/kysely/index.d.ts +0 -2
  114. package/dist/esm/addons/kysely/index.js +0 -103
  115. package/dist/esm/addons/kysely/index.js.map +0 -1
  116. package/dist/esm/addons/pino/index.d.ts +0 -2
  117. package/dist/esm/addons/pino/index.js +0 -30
  118. package/dist/esm/addons/pino/index.js.map +0 -1
  119. package/dist/esm/addons/prisma/index.d.ts +0 -2
  120. package/dist/esm/addons/prisma/index.js +0 -133
  121. package/dist/esm/addons/prisma/index.js.map +0 -1
  122. package/dist/esm/addons/registry.d.ts +0 -5
  123. package/dist/esm/addons/registry.js +0 -63
  124. package/dist/esm/addons/registry.js.map +0 -1
  125. package/dist/esm/addons/types.d.ts +0 -16
  126. package/dist/esm/addons/valibot/index.d.ts +0 -1
  127. package/dist/esm/addons/valibot/index.js +0 -7
  128. package/dist/esm/addons/valibot/index.js.map +0 -1
  129. package/dist/esm/addons/validators.d.ts +0 -5
  130. package/dist/esm/addons/validators.js +0 -36
  131. package/dist/esm/addons/validators.js.map +0 -1
  132. package/dist/esm/addons/winston/index.d.ts +0 -2
  133. package/dist/esm/addons/winston/index.js +0 -34
  134. package/dist/esm/addons/winston/index.js.map +0 -1
  135. package/dist/esm/addons/zod/index.d.ts +0 -1
  136. package/dist/esm/addons/zod/index.js +0 -7
  137. package/dist/esm/addons/zod/index.js.map +0 -1
  138. package/dist/esm/cli.d.ts +0 -2
  139. package/dist/esm/cli.js +0 -62
  140. package/dist/esm/cli.js.map +0 -1
  141. package/dist/esm/commands/create.d.ts +0 -14
  142. package/dist/esm/commands/create.js +0 -327
  143. package/dist/esm/commands/create.js.map +0 -1
  144. package/dist/esm/core/json-output.d.ts +0 -4
  145. package/dist/esm/core/json-output.js +0 -14
  146. package/dist/esm/core/json-output.js.map +0 -1
  147. package/dist/esm/core/package-manager.d.ts +0 -8
  148. package/dist/esm/core/package-manager.js +0 -53
  149. package/dist/esm/core/package-manager.js.map +0 -1
  150. package/dist/esm/core/parse-options.d.ts +0 -35
  151. package/dist/esm/core/parse-options.js +0 -89
  152. package/dist/esm/core/parse-options.js.map +0 -1
  153. package/dist/esm/core/project-config.d.ts +0 -2
  154. package/dist/esm/core/project-config.js +0 -21
  155. package/dist/esm/core/project-config.js.map +0 -1
  156. package/dist/esm/core/resolve-packages.d.ts +0 -2
  157. package/dist/esm/core/resolve-packages.js +0 -58
  158. package/dist/esm/core/resolve-packages.js.map +0 -1
  159. package/dist/esm/core/scaffold-engine.d.ts +0 -2
  160. package/dist/esm/core/scaffold-engine.js +0 -70
  161. package/dist/esm/core/scaffold-engine.js.map +0 -1
  162. package/dist/esm/core/targets.d.ts +0 -49
  163. package/dist/esm/core/targets.js +0 -166
  164. package/dist/esm/core/targets.js.map +0 -1
  165. package/dist/esm/core/types.d.ts +0 -57
  166. package/dist/esm/core/types.js +0 -45
  167. package/dist/esm/core/types.js.map +0 -1
  168. package/dist/esm/core/validate-project-name.d.ts +0 -1
  169. package/dist/esm/core/validate-project-name.js +0 -42
  170. package/dist/esm/core/validate-project-name.js.map +0 -1
  171. package/dist/esm/frameworks/index.d.ts +0 -18
  172. package/dist/esm/frameworks/index.js +0 -112
  173. package/dist/esm/frameworks/index.js.map +0 -1
  174. package/dist/esm/scaffold.d.ts +0 -3
  175. package/dist/esm/templates/base.d.ts +0 -9
  176. package/dist/esm/templates/base.js +0 -91
  177. package/dist/esm/templates/base.js.map +0 -1
  178. package/dist/esm/types.d.ts +0 -1
  179. package/src/addons/arktype/index.ts +0 -3
  180. package/src/addons/valibot/index.ts +0 -3
  181. package/src/addons/zod/index.ts +0 -3
  182. package/src/core/json-output.ts +0 -13
  183. package/src/core/parse-options.ts +0 -167
  184. package/src/core/project-config.ts +0 -32
  185. package/src/core/resolve-packages.ts +0 -69
  186. package/src/core/validate-project-name.ts +0 -55
  187. package/src/frameworks/index.ts +0 -120
  188. package/src/scaffold.ts +0 -3
  189. package/src/types.ts +0 -12
package/dist/cli.cjs ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_cli = require("./cli-DkZddFtU.cjs");
4
+ exports.run = require_cli.run;
package/dist/cli.d.cts ADDED
@@ -0,0 +1,4 @@
1
+ //#region src/cli.d.ts
2
+ export declare function run(argv?: string[]): Promise<void>;
3
+ //#endregion
4
+ //# sourceMappingURL=cli.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.cts","names":[],"sources":["../src/cli.ts"],"mappings":";wBAasB,IAAI,kBAAyC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ //#region src/cli.d.ts
2
+ export declare function run(argv?: string[]): Promise<void>;
3
+ //#endregion
4
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","names":[],"sources":["../src/cli.ts"],"mappings":";wBAasB,IAAI,kBAAyC"}
package/dist/cli.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { t as run } from "./cli-9fkoNOJg.js";
3
+ export { run };
package/dist/index.cjs ADDED
@@ -0,0 +1,25 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_cli = require("./cli-DkZddFtU.cjs");
3
+ exports.ADDONS = require_cli.ADDONS;
4
+ exports.DB_DRIVERS = require_cli.DB_DRIVERS;
5
+ exports.DB_ODMS = require_cli.DB_ODMS;
6
+ exports.DEFAULT_DB_DRIVER = require_cli.DEFAULT_DB_DRIVER;
7
+ exports.DEFAULT_DEPLOY = require_cli.DEFAULT_DEPLOY;
8
+ exports.DEPLOY_ENTRIES = require_cli.DEPLOY_ENTRIES;
9
+ exports.DEPLOY_TARGETS = require_cli.DEPLOY_TARGETS;
10
+ exports.LOGGERS = require_cli.LOGGERS;
11
+ exports.RUNTIMES = require_cli.RUNTIMES;
12
+ exports.VALIDATORS = require_cli.VALIDATORS;
13
+ exports.allowedRuntimeOverrides = require_cli.allowedRuntimeOverrides;
14
+ exports.collectBootBindings = require_cli.collectBootBindings;
15
+ exports.installPackages = require_cli.installPackages;
16
+ exports.isCuratedDeploy = require_cli.isCuratedDeploy;
17
+ exports.promptInteractiveOptions = require_cli.promptInteractiveOptions;
18
+ exports.resolveAddons = require_cli.resolveAddons;
19
+ exports.resolveDeployEntry = require_cli.resolveDeployEntry;
20
+ exports.resolveUserAgent = require_cli.resolveUserAgent;
21
+ exports.run = require_cli.run;
22
+ exports.runCreateCommand = require_cli.runCreateCommand;
23
+ exports.runScript = require_cli.runScript;
24
+ exports.scaffoldProject = require_cli.scaffoldProject;
25
+ exports.validateCombination = require_cli.validateCombination;
@@ -0,0 +1,119 @@
1
+ import { run } from "./cli.cjs";
2
+ import { Agent } from "package-manager-detector";
3
+ //#region src/core/types.d.ts
4
+ export type Runtime = "node" | "bun" | "deno";
5
+ export declare const RUNTIMES: readonly Runtime[];
6
+ export type DeployTarget = "none" | "node-server" | "node-cluster" | "bun" | "deno-server" | "deno-deploy" | "cloudflare-module" | "vercel" | "aws-lambda" | "netlify";
7
+ export declare const DEPLOY_TARGETS: readonly DeployTarget[];
8
+ export type DbOdm = "drizzle" | "prisma" | "kysely";
9
+ export declare const DB_ODMS: readonly DbOdm[];
10
+ export type DbDriver = "postgres" | "sqlite" | "mysql";
11
+ export declare const DB_DRIVERS: readonly DbDriver[];
12
+ export declare const DEFAULT_DB_DRIVER: DbDriver;
13
+ export type LoggerId = "pino" | "winston";
14
+ export declare const LOGGERS: readonly LoggerId[];
15
+ export type ValidatorId = "zod" | "arktype" | "valibot";
16
+ export declare const VALIDATORS: readonly ValidatorId[];
17
+ export interface ScaffoldContext {
18
+ projectName: string;
19
+ targetDir: string;
20
+ preset?: DeployTarget | undefined;
21
+ runtime?: Runtime | undefined;
22
+ db?: DbOdm | undefined;
23
+ driver?: DbDriver | undefined;
24
+ logger?: LoggerId | undefined;
25
+ validator?: ValidatorId | undefined;
26
+ packageVersions?: Record<string, string> | undefined;
27
+ }
28
+ export interface ScaffoldOptions extends ScaffoldContext {
29
+ skipInstall?: boolean | undefined;
30
+ agent?: Agent | undefined;
31
+ }
32
+ export interface ScaffoldResult extends ScaffoldContext {
33
+ files: string[];
34
+ }
35
+ //#endregion
36
+ //#region src/core/scaffold-engine.d.ts
37
+ export declare function scaffoldProject(options: ScaffoldOptions): Promise<ScaffoldResult>;
38
+ //#endregion
39
+ //#region src/core/package-manager.d.ts
40
+ export declare function resolveUserAgent(): Agent;
41
+ export declare function runScript(agent: Agent, script: string): string;
42
+ export declare function installPackages(agent: Agent, cwd: string, packages: {
43
+ dependencies: string[];
44
+ devDependencies: string[];
45
+ }): Promise<void>;
46
+ //#endregion
47
+ //#region src/core/targets.d.ts
48
+ export interface PlatformFile {
49
+ name: string;
50
+ content: string | ((ctx: {
51
+ projectName: string;
52
+ }) => string);
53
+ }
54
+ export interface DeployEntry {
55
+ id: DeployTarget;
56
+ impliedRuntime: Runtime | "workerd";
57
+ selfHosted: boolean;
58
+ startScript: string | null;
59
+ devDeps: string[];
60
+ files: PlatformFile[];
61
+ }
62
+ export declare const DEPLOY_ENTRIES: Record<DeployTarget, DeployEntry>;
63
+ export declare const DEFAULT_DEPLOY: DeployTarget;
64
+ export declare function isCuratedDeploy(value: string): value is DeployTarget;
65
+ export declare function resolveDeployEntry(id: string): {
66
+ entry: DeployEntry;
67
+ curated: boolean;
68
+ };
69
+ export declare function allowedRuntimeOverrides(id: DeployTarget): readonly Runtime[];
70
+ export type CombinationError = {
71
+ ok: false;
72
+ reason: string;
73
+ };
74
+ export type CombinationOk = {
75
+ ok: true;
76
+ runtime: Runtime | "workerd";
77
+ };
78
+ export declare function validateCombination(runtimeOverride: Runtime | undefined, deploy: string): CombinationOk | CombinationError;
79
+ //#endregion
80
+ //#region src/addons/types.d.ts
81
+ export interface BootBinding {
82
+ key: string;
83
+ importPath: string;
84
+ factoryName: string;
85
+ }
86
+ export interface AddonDefinition {
87
+ id: string;
88
+ category: "database" | "logger" | "validator";
89
+ dependencies(ctx: ScaffoldContext): string[];
90
+ devDependencies(ctx: ScaffoldContext): string[];
91
+ scripts?(ctx: ScaffoldContext): Record<string, string>;
92
+ bootBinding?(ctx: ScaffoldContext): BootBinding | undefined;
93
+ apply(ctx: ScaffoldContext, write: (path: string, content: string) => Promise<void> | void): Promise<void>;
94
+ }
95
+ //#endregion
96
+ //#region src/addons/registry.d.ts
97
+ export declare const ADDONS: Record<string, AddonDefinition>;
98
+ export declare function resolveAddons(ctx: ScaffoldContext): AddonDefinition[];
99
+ export declare function collectBootBindings(ctx: ScaffoldContext): BootBinding[];
100
+ //#endregion
101
+ //#region src/commands/create.d.ts
102
+ export interface RunCreateCommandOptions {
103
+ projectName?: string | undefined;
104
+ preset?: DeployTarget | undefined;
105
+ runtime?: Runtime | undefined;
106
+ db?: DbOdm | undefined;
107
+ driver?: DbDriver | undefined;
108
+ logger?: LoggerId | undefined;
109
+ validator?: ValidatorId | undefined;
110
+ skipInstall?: boolean | undefined;
111
+ interactive?: boolean | undefined;
112
+ targetDir?: string | undefined;
113
+ packageVersions?: Record<string, string> | undefined;
114
+ }
115
+ export declare function promptInteractiveOptions(defaults: RunCreateCommandOptions): Promise<RunCreateCommandOptions>;
116
+ export declare function runCreateCommand(args?: RunCreateCommandOptions): Promise<ScaffoldResult>;
117
+ //#endregion
118
+ export { run };
119
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/types.ts","../src/core/scaffold-engine.ts","../src/core/package-manager.ts","../src/core/targets.ts","../src/addons/types.ts","../src/addons/registry.ts","../src/commands/create.ts"],"mappings":";;;YAEY;qBACC,mBAAmB;YAEpB;qBAYC,yBAAyB;YAa1B;qBACC,kBAAkB;YAEnB;qBACC,qBAAqB;qBACrB,mBAAmB;YAEpB;qBACC,kBAAkB;YAEnB;qBACC,qBAAqB;iBAEjB;EACf;EACA;EACA,SAAS;EACT,UAAU;EACV,KAAK;EACL,SAAS;EACT,SAAS;EACT,YAAY;EACZ,kBAAkB;;iBAGH,wBAAwB;EACvC;EACA,QAAQ;;iBAGO,uBAAuB;EACtC;;;;wBCpCoB,gBAAgB,SAAS,kBAAkB,QAAQ;;;wBCtBzD,oBAAoB;wBAKpB,UAAU,OAAO,OAAO;wBAclB,gBACpB,OAAO,OACP,aACA;EACE;EACA;IAED;;;iBC3Bc;EACf;EACA,oBAAoB;IAAO;;;iBAGZ;EACf,IAAI;EACJ,gBAAgB;EAChB;EACA;EACA;EACA,OAAO;;qBAKI,gBAAgB,OAAO,cAAc;qBAwGrC,gBAAgB;wBAEb,gBAAgB,gBAAgB,SAAS;wBAIzC,mBAAmB;EAAe,OAAO;EAAa;;wBAiBtD,wBAAwB,IAAI,wBAAwB;YAIxD;EAAqB;EAAW;;YAChC;EAAkB;EAAU,SAAS;;wBAEjC,oBACd,iBAAiB,qBACjB,iBACC,gBAAgB;;;iBC3JF;EACf;EACA;EACA;;iBAGe;EACf;EACA;EACA,aAAa,KAHE;EAIf,gBAAgB,KAD6B;EAE7C,SAAS,KADuC,kBACW;EAC3D,aAAa,KAD8C,kBACI;EAC/D,MACE,KAF6D,iBAG7D,QAAQ,cAAc,oBAAoB,uBACzC;;;;qBCPQ,QAAQ,eAAe;wBAWpB,cAAc,KAAK,kBAAkB;wBAiBrC,oBAAoB,KAAK,kBAAkB;;;iBCN1C;EACf;EACA,SAAS;EACT,UAAU;EACV,KAAK;EACL,SAAS;EACT,SAAS;EACT,YAAY;EACZ;EACA;EACA;EACA,kBAAkB;;wBAGE,yBACpB,UAAU,0BACT,QAAQ;wBAoJW,iBACpB,OAAM,0BACL,QAAQ"}
@@ -0,0 +1,119 @@
1
+ import { run } from "./cli.js";
2
+ import { Agent } from "package-manager-detector";
3
+ //#region src/core/types.d.ts
4
+ export type Runtime = "node" | "bun" | "deno";
5
+ export declare const RUNTIMES: readonly Runtime[];
6
+ export type DeployTarget = "none" | "node-server" | "node-cluster" | "bun" | "deno-server" | "deno-deploy" | "cloudflare-module" | "vercel" | "aws-lambda" | "netlify";
7
+ export declare const DEPLOY_TARGETS: readonly DeployTarget[];
8
+ export type DbOdm = "drizzle" | "prisma" | "kysely";
9
+ export declare const DB_ODMS: readonly DbOdm[];
10
+ export type DbDriver = "postgres" | "sqlite" | "mysql";
11
+ export declare const DB_DRIVERS: readonly DbDriver[];
12
+ export declare const DEFAULT_DB_DRIVER: DbDriver;
13
+ export type LoggerId = "pino" | "winston";
14
+ export declare const LOGGERS: readonly LoggerId[];
15
+ export type ValidatorId = "zod" | "arktype" | "valibot";
16
+ export declare const VALIDATORS: readonly ValidatorId[];
17
+ export interface ScaffoldContext {
18
+ projectName: string;
19
+ targetDir: string;
20
+ preset?: DeployTarget | undefined;
21
+ runtime?: Runtime | undefined;
22
+ db?: DbOdm | undefined;
23
+ driver?: DbDriver | undefined;
24
+ logger?: LoggerId | undefined;
25
+ validator?: ValidatorId | undefined;
26
+ packageVersions?: Record<string, string> | undefined;
27
+ }
28
+ export interface ScaffoldOptions extends ScaffoldContext {
29
+ skipInstall?: boolean | undefined;
30
+ agent?: Agent | undefined;
31
+ }
32
+ export interface ScaffoldResult extends ScaffoldContext {
33
+ files: string[];
34
+ }
35
+ //#endregion
36
+ //#region src/core/scaffold-engine.d.ts
37
+ export declare function scaffoldProject(options: ScaffoldOptions): Promise<ScaffoldResult>;
38
+ //#endregion
39
+ //#region src/core/package-manager.d.ts
40
+ export declare function resolveUserAgent(): Agent;
41
+ export declare function runScript(agent: Agent, script: string): string;
42
+ export declare function installPackages(agent: Agent, cwd: string, packages: {
43
+ dependencies: string[];
44
+ devDependencies: string[];
45
+ }): Promise<void>;
46
+ //#endregion
47
+ //#region src/core/targets.d.ts
48
+ export interface PlatformFile {
49
+ name: string;
50
+ content: string | ((ctx: {
51
+ projectName: string;
52
+ }) => string);
53
+ }
54
+ export interface DeployEntry {
55
+ id: DeployTarget;
56
+ impliedRuntime: Runtime | "workerd";
57
+ selfHosted: boolean;
58
+ startScript: string | null;
59
+ devDeps: string[];
60
+ files: PlatformFile[];
61
+ }
62
+ export declare const DEPLOY_ENTRIES: Record<DeployTarget, DeployEntry>;
63
+ export declare const DEFAULT_DEPLOY: DeployTarget;
64
+ export declare function isCuratedDeploy(value: string): value is DeployTarget;
65
+ export declare function resolveDeployEntry(id: string): {
66
+ entry: DeployEntry;
67
+ curated: boolean;
68
+ };
69
+ export declare function allowedRuntimeOverrides(id: DeployTarget): readonly Runtime[];
70
+ export type CombinationError = {
71
+ ok: false;
72
+ reason: string;
73
+ };
74
+ export type CombinationOk = {
75
+ ok: true;
76
+ runtime: Runtime | "workerd";
77
+ };
78
+ export declare function validateCombination(runtimeOverride: Runtime | undefined, deploy: string): CombinationOk | CombinationError;
79
+ //#endregion
80
+ //#region src/addons/types.d.ts
81
+ export interface BootBinding {
82
+ key: string;
83
+ importPath: string;
84
+ factoryName: string;
85
+ }
86
+ export interface AddonDefinition {
87
+ id: string;
88
+ category: "database" | "logger" | "validator";
89
+ dependencies(ctx: ScaffoldContext): string[];
90
+ devDependencies(ctx: ScaffoldContext): string[];
91
+ scripts?(ctx: ScaffoldContext): Record<string, string>;
92
+ bootBinding?(ctx: ScaffoldContext): BootBinding | undefined;
93
+ apply(ctx: ScaffoldContext, write: (path: string, content: string) => Promise<void> | void): Promise<void>;
94
+ }
95
+ //#endregion
96
+ //#region src/addons/registry.d.ts
97
+ export declare const ADDONS: Record<string, AddonDefinition>;
98
+ export declare function resolveAddons(ctx: ScaffoldContext): AddonDefinition[];
99
+ export declare function collectBootBindings(ctx: ScaffoldContext): BootBinding[];
100
+ //#endregion
101
+ //#region src/commands/create.d.ts
102
+ export interface RunCreateCommandOptions {
103
+ projectName?: string | undefined;
104
+ preset?: DeployTarget | undefined;
105
+ runtime?: Runtime | undefined;
106
+ db?: DbOdm | undefined;
107
+ driver?: DbDriver | undefined;
108
+ logger?: LoggerId | undefined;
109
+ validator?: ValidatorId | undefined;
110
+ skipInstall?: boolean | undefined;
111
+ interactive?: boolean | undefined;
112
+ targetDir?: string | undefined;
113
+ packageVersions?: Record<string, string> | undefined;
114
+ }
115
+ export declare function promptInteractiveOptions(defaults: RunCreateCommandOptions): Promise<RunCreateCommandOptions>;
116
+ export declare function runCreateCommand(args?: RunCreateCommandOptions): Promise<ScaffoldResult>;
117
+ //#endregion
118
+ export { run };
119
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/core/types.ts","../src/core/scaffold-engine.ts","../src/core/package-manager.ts","../src/core/targets.ts","../src/addons/types.ts","../src/addons/registry.ts","../src/commands/create.ts"],"mappings":";;;YAEY;qBACC,mBAAmB;YAEpB;qBAYC,yBAAyB;YAa1B;qBACC,kBAAkB;YAEnB;qBACC,qBAAqB;qBACrB,mBAAmB;YAEpB;qBACC,kBAAkB;YAEnB;qBACC,qBAAqB;iBAEjB;EACf;EACA;EACA,SAAS;EACT,UAAU;EACV,KAAK;EACL,SAAS;EACT,SAAS;EACT,YAAY;EACZ,kBAAkB;;iBAGH,wBAAwB;EACvC;EACA,QAAQ;;iBAGO,uBAAuB;EACtC;;;;wBCpCoB,gBAAgB,SAAS,kBAAkB,QAAQ;;;wBCtBzD,oBAAoB;wBAKpB,UAAU,OAAO,OAAO;wBAclB,gBACpB,OAAO,OACP,aACA;EACE;EACA;IAED;;;iBC3Bc;EACf;EACA,oBAAoB;IAAO;;;iBAGZ;EACf,IAAI;EACJ,gBAAgB;EAChB;EACA;EACA;EACA,OAAO;;qBAKI,gBAAgB,OAAO,cAAc;qBAwGrC,gBAAgB;wBAEb,gBAAgB,gBAAgB,SAAS;wBAIzC,mBAAmB;EAAe,OAAO;EAAa;;wBAiBtD,wBAAwB,IAAI,wBAAwB;YAIxD;EAAqB;EAAW;;YAChC;EAAkB;EAAU,SAAS;;wBAEjC,oBACd,iBAAiB,qBACjB,iBACC,gBAAgB;;;iBC3JF;EACf;EACA;EACA;;iBAGe;EACf;EACA;EACA,aAAa,KAHE;EAIf,gBAAgB,KAD6B;EAE7C,SAAS,KADuC,kBACW;EAC3D,aAAa,KAD8C,kBACI;EAC/D,MACE,KAF6D,iBAG7D,QAAQ,cAAc,oBAAoB,uBACzC;;;;qBCPQ,QAAQ,eAAe;wBAWpB,cAAc,KAAK,kBAAkB;wBAiBrC,oBAAoB,KAAK,kBAAkB;;;iBCN1C;EACf;EACA,SAAS;EACT,UAAU;EACV,KAAK;EACL,SAAS;EACT,SAAS;EACT,YAAY;EACZ;EACA;EACA;EACA,kBAAkB;;wBAGE,yBACpB,UAAU,0BACT,QAAQ;wBAoJW,iBACpB,OAAM,0BACL,QAAQ"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import { C as VALIDATORS, S as RUNTIMES, _ as DB_DRIVERS, a as DEFAULT_DEPLOY, b as DEPLOY_TARGETS, c as isCuratedDeploy, d as installPackages, f as resolveUserAgent, g as resolveAddons, h as collectBootBindings, i as scaffoldProject, l as resolveDeployEntry, m as ADDONS, n as promptInteractiveOptions, o as DEPLOY_ENTRIES, p as runScript, r as runCreateCommand, s as allowedRuntimeOverrides, t as run, u as validateCombination, v as DB_ODMS, x as LOGGERS, y as DEFAULT_DB_DRIVER } from "./cli-9fkoNOJg.js";
2
+ export { ADDONS, DB_DRIVERS, DB_ODMS, DEFAULT_DB_DRIVER, DEFAULT_DEPLOY, DEPLOY_ENTRIES, DEPLOY_TARGETS, LOGGERS, RUNTIMES, VALIDATORS, allowedRuntimeOverrides, collectBootBindings, installPackages, isCuratedDeploy, promptInteractiveOptions, resolveAddons, resolveDeployEntry, resolveUserAgent, run, runCreateCommand, runScript, scaffoldProject, validateCombination };
package/package.json CHANGED
@@ -1,7 +1,19 @@
1
1
  {
2
2
  "name": "create-taserjs",
3
- "version": "0.1.11",
3
+ "version": "0.2.0",
4
4
  "description": "Scaffold a new Taser.js application",
5
+ "keywords": [
6
+ "api-starter",
7
+ "boilerplate",
8
+ "create-app",
9
+ "file-based-routing",
10
+ "rest-api",
11
+ "scaffold",
12
+ "starter",
13
+ "taserjs",
14
+ "type-safe-api",
15
+ "typescript"
16
+ ],
5
17
  "license": "ISC",
6
18
  "repository": {
7
19
  "type": "git",
@@ -9,7 +21,7 @@
9
21
  "directory": "packages/create-taserjs"
10
22
  },
11
23
  "bin": {
12
- "create-taserjs": "./dist/esm/cli.js"
24
+ "create-taserjs": "./dist/cli.js"
13
25
  },
14
26
  "files": [
15
27
  "dist",
@@ -17,6 +29,22 @@
17
29
  ],
18
30
  "type": "module",
19
31
  "sideEffects": false,
32
+ "main": "./dist/index.cjs",
33
+ "module": "./dist/index.js",
34
+ "types": "./dist/index.d.ts",
35
+ "exports": {
36
+ ".": {
37
+ "import": {
38
+ "types": "./dist/index.d.ts",
39
+ "default": "./dist/index.js"
40
+ },
41
+ "require": {
42
+ "types": "./dist/index.d.cts",
43
+ "default": "./dist/index.cjs"
44
+ }
45
+ },
46
+ "./package.json": "./package.json"
47
+ },
20
48
  "publishConfig": {
21
49
  "access": "public",
22
50
  "registry": "https://registry.npmjs.org"
@@ -24,23 +52,25 @@
24
52
  "dependencies": {
25
53
  "@clack/prompts": "^0.11.0",
26
54
  "package-manager-detector": "^1.8.0",
27
- "picocolors": "^1.1.1"
55
+ "picocolors": "^1.1.1",
56
+ "yargs": "^18.1.0"
28
57
  },
29
58
  "devDependencies": {
30
- "@tanstack/vite-config": "^0.6.0",
59
+ "@types/yargs": "^17.0.35",
31
60
  "publint": "^0.3.22",
61
+ "rimraf": "^6.0.1",
62
+ "tsdown": "^0.23.0",
32
63
  "typescript": "^5.9.3",
33
- "vite": "^8.1.5",
34
- "vitest": "^4.1.10",
35
- "@taserjs/router-generator": "0.1.12"
64
+ "vitest": "^4.1.10"
36
65
  },
37
66
  "engines": {
38
67
  "node": ">=20.19"
39
68
  },
40
69
  "scripts": {
41
70
  "clean": "rimraf dist",
42
- "build": "vite build && publint --strict",
71
+ "build": "tsdown",
43
72
  "typecheck": "tsc --noEmit -p tsconfig.json",
44
- "test": "vitest run"
73
+ "test": "vitest run",
74
+ "lint": "oxlint ."
45
75
  }
46
76
  }
@@ -4,29 +4,29 @@ import type { DbDriver } from "../../core/types.js";
4
4
  function schemaSource(driver: DbDriver): string {
5
5
  switch (driver) {
6
6
  case "postgres":
7
- return `import { pgTable, serial, text } from 'drizzle-orm/pg-core'
7
+ return `import { pgTable, serial, text } from "drizzle-orm/pg-core";
8
8
 
9
- export const users = pgTable('users', {
10
- id: serial('id').primaryKey(),
11
- email: text('email').notNull(),
12
- })
9
+ export const users = pgTable("users", {
10
+ id: serial("id").primaryKey(),
11
+ email: text("email").notNull(),
12
+ });
13
13
  `;
14
14
  case "mysql":
15
- return `import { mysqlTable, serial, varchar } from 'drizzle-orm/mysql-core'
15
+ return `import { mysqlTable, serial, varchar } from "drizzle-orm/mysql-core";
16
16
 
17
- export const users = mysqlTable('users', {
18
- id: serial('id').primaryKey(),
19
- email: varchar('email', { length: 255 }).notNull(),
20
- })
17
+ export const users = mysqlTable("users", {
18
+ id: serial("id").primaryKey(),
19
+ email: varchar("email", { length: 255 }).notNull(),
20
+ });
21
21
  `;
22
22
  case "sqlite":
23
23
  default:
24
- return `import { sqliteTable, integer, text } from 'drizzle-orm/sqlite-core'
24
+ return `import { sqliteTable, integer, text } from "drizzle-orm/sqlite-core";
25
25
 
26
- export const users = sqliteTable('users', {
27
- id: integer('id').primaryKey({ autoIncrement: true }),
28
- email: text('email').notNull(),
29
- })
26
+ export const users = sqliteTable("users", {
27
+ id: integer("id").primaryKey({ autoIncrement: true }),
28
+ email: text("email").notNull(),
29
+ });
30
30
  `;
31
31
  }
32
32
  }
@@ -34,40 +34,37 @@ export const users = sqliteTable('users', {
34
34
  function dbIndexSource(driver: DbDriver): string {
35
35
  switch (driver) {
36
36
  case "postgres":
37
- return `import { drizzle } from 'drizzle-orm/node-postgres'
38
- import pg from 'pg'
39
-
40
- import * as schema from './schema.js'
37
+ return `import { drizzle } from "drizzle-orm/node-postgres";
38
+ import pg from "pg";
39
+ import * as schema from "./schema.js";
41
40
 
42
41
  export function createDb() {
43
42
  const pool = new pg.Pool({
44
43
  connectionString: process.env.DATABASE_URL,
45
- })
46
- return drizzle(pool, { schema })
44
+ });
45
+ return drizzle(pool, { schema });
47
46
  }
48
47
  `;
49
48
  case "mysql":
50
- return `import { drizzle } from 'drizzle-orm/mysql2'
51
- import mysql from 'mysql2/promise'
52
-
53
- import * as schema from './schema.js'
49
+ return `import { drizzle } from "drizzle-orm/mysql2";
50
+ import mysql from "mysql2/promise";
51
+ import * as schema from "./schema.js";
54
52
 
55
53
  export function createDb() {
56
- const pool = mysql.createPool(process.env.DATABASE_URL ?? '')
57
- return drizzle(pool, { schema, mode: 'default' })
54
+ const pool = mysql.createPool(process.env.DATABASE_URL ?? "");
55
+ return drizzle(pool, { schema, mode: "default" });
58
56
  }
59
57
  `;
60
58
  case "sqlite":
61
59
  default:
62
- return `import Database from 'better-sqlite3'
63
- import { drizzle } from 'drizzle-orm/better-sqlite3'
64
-
65
- import * as schema from './schema.js'
60
+ return `import Database from "better-sqlite3";
61
+ import { drizzle } from "drizzle-orm/better-sqlite3";
62
+ import * as schema from "./schema.js";
66
63
 
67
64
  export function createDb() {
68
- const filePath = (process.env.DATABASE_URL ?? 'file:./local.db').replace(/^file:/, '')
69
- const client = new Database(filePath)
70
- return drizzle(client, { schema })
65
+ const filePath = (process.env.DATABASE_URL ?? "file:./local.db").replace(/^file:/, "");
66
+ const client = new Database(filePath);
67
+ return drizzle(client, { schema });
71
68
  }
72
69
  `;
73
70
  }
@@ -75,16 +72,16 @@ export function createDb() {
75
72
 
76
73
  function drizzleConfigSource(driver: DbDriver): string {
77
74
  const dialect = driver === "postgres" ? "postgresql" : driver === "mysql" ? "mysql" : "sqlite";
78
- return `import { defineConfig } from 'drizzle-kit'
75
+ return `import { defineConfig } from "drizzle-kit";
79
76
 
80
77
  export default defineConfig({
81
- schema: './src/db/schema.ts',
82
- out: './drizzle',
83
- dialect: '${dialect}',
78
+ schema: "./src/db/schema.ts",
79
+ out: "./drizzle",
80
+ dialect: "${dialect}",
84
81
  dbCredentials: {
85
- url: process.env.DATABASE_URL ?? '',
82
+ url: process.env.DATABASE_URL ?? "",
86
83
  },
87
- })
84
+ });
88
85
  `;
89
86
  }
90
87
 
@@ -3,12 +3,12 @@ import type { DbDriver } from "../../core/types.js";
3
3
 
4
4
  function schemaTypesSource(): string {
5
5
  return `export interface UserTable {
6
- id: number
7
- email: string
6
+ id: number;
7
+ email: string;
8
8
  }
9
9
 
10
10
  export interface DB {
11
- users: UserTable
11
+ users: UserTable;
12
12
  }
13
13
  `;
14
14
  }
@@ -16,46 +16,43 @@ export interface DB {
16
16
  function dbIndexSource(driver: DbDriver): string {
17
17
  switch (driver) {
18
18
  case "postgres":
19
- return `import { Kysely, PostgresDialect } from 'kysely'
20
- import pg from 'pg'
21
-
22
- import type { DB } from './schema.js'
19
+ return `import { Kysely, PostgresDialect } from "kysely";
20
+ import pg from "pg";
21
+ import type { DB } from "./schema.js";
23
22
 
24
23
  export function createDb() {
25
24
  const pool = new pg.Pool({
26
25
  connectionString: process.env.DATABASE_URL,
27
- })
26
+ });
28
27
  return new Kysely<DB>({
29
28
  dialect: new PostgresDialect({ pool }),
30
- })
29
+ });
31
30
  }
32
31
  `;
33
32
  case "mysql":
34
- return `import { Kysely, MysqlDialect } from 'kysely'
35
- import { createPool } from 'mysql2'
36
-
37
- import type { DB } from './schema.js'
33
+ return `import { Kysely, MysqlDialect } from "kysely";
34
+ import { createPool } from "mysql2";
35
+ import type { DB } from "./schema.js";
38
36
 
39
37
  export function createDb() {
40
- const pool = createPool(process.env.DATABASE_URL ?? '')
38
+ const pool = createPool(process.env.DATABASE_URL ?? "");
41
39
  return new Kysely<DB>({
42
40
  dialect: new MysqlDialect({ pool }),
43
- })
41
+ });
44
42
  }
45
43
  `;
46
44
  case "sqlite":
47
45
  default:
48
- return `import Database from 'better-sqlite3'
49
- import { Kysely, SqliteDialect } from 'kysely'
50
-
51
- import type { DB } from './schema.js'
46
+ return `import Database from "better-sqlite3";
47
+ import { Kysely, SqliteDialect } from "kysely";
48
+ import type { DB } from "./schema.js";
52
49
 
53
50
  export function createDb() {
54
- const filePath = (process.env.DATABASE_URL ?? 'file:./local.db').replace(/^file:/, '')
55
- const database = new Database(filePath)
51
+ const filePath = (process.env.DATABASE_URL ?? "file:./local.db").replace(/^file:/, "");
52
+ const database = new Database(filePath);
56
53
  return new Kysely<DB>({
57
54
  dialect: new SqliteDialect({ database }),
58
- })
55
+ });
59
56
  }
60
57
  `;
61
58
  }
@@ -19,10 +19,10 @@ export const pinoAddon: AddonDefinition = {
19
19
  async apply(_ctx, write) {
20
20
  await write(
21
21
  "src/logger.ts",
22
- `import pino from 'pino'
22
+ `import pino from "pino";
23
23
 
24
24
  export function createLogger() {
25
- return pino({ level: process.env.LOG_LEVEL ?? 'info' })
25
+ return pino({ level: process.env.LOG_LEVEL ?? "info" });
26
26
  }
27
27
  `,
28
28
  );