legonode 0.0.4 → 0.0.6

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 (164) hide show
  1. package/dist/cli/cli.js +5 -1
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/build.d.ts.map +1 -1
  4. package/dist/cli/commands/build.js +4 -13
  5. package/dist/cli/commands/build.js.map +1 -1
  6. package/dist/cli/commands/create.d.ts +13 -0
  7. package/dist/cli/commands/create.d.ts.map +1 -1
  8. package/dist/cli/commands/create.js +329 -93
  9. package/dist/cli/commands/create.js.map +1 -1
  10. package/dist/cli/commands/dev.d.ts.map +1 -1
  11. package/dist/cli/commands/dev.js +23 -49
  12. package/dist/cli/commands/dev.js.map +1 -1
  13. package/dist/cli/commands/start.d.ts.map +1 -1
  14. package/dist/cli/commands/start.js +0 -2
  15. package/dist/cli/commands/start.js.map +1 -1
  16. package/dist/cli/runServer.d.ts.map +1 -1
  17. package/dist/cli/runServer.js +0 -25
  18. package/dist/cli/runServer.js.map +1 -1
  19. package/dist/src/body/parseBody.d.ts.map +1 -1
  20. package/dist/src/body/parseBody.js +20 -10
  21. package/dist/src/body/parseBody.js.map +1 -1
  22. package/dist/src/cache/cache.d.ts +91 -0
  23. package/dist/src/cache/cache.d.ts.map +1 -0
  24. package/dist/src/cache/cache.js +72 -0
  25. package/dist/src/cache/cache.js.map +1 -0
  26. package/dist/src/config/loadConfig.d.ts +7 -3
  27. package/dist/src/config/loadConfig.d.ts.map +1 -1
  28. package/dist/src/config/loadConfig.js +3 -1
  29. package/dist/src/config/loadConfig.js.map +1 -1
  30. package/dist/src/core/context.d.ts +2 -5
  31. package/dist/src/core/context.d.ts.map +1 -1
  32. package/dist/src/core/context.js +67 -15
  33. package/dist/src/core/context.js.map +1 -1
  34. package/dist/src/core/runtime.d.ts +2 -2
  35. package/dist/src/core/runtime.d.ts.map +1 -1
  36. package/dist/src/core/runtime.js +12 -29
  37. package/dist/src/core/runtime.js.map +1 -1
  38. package/dist/src/cors/cors.d.ts +12 -0
  39. package/dist/src/cors/cors.d.ts.map +1 -1
  40. package/dist/src/cors/cors.js +66 -1
  41. package/dist/src/cors/cors.js.map +1 -1
  42. package/dist/src/events/eventBus.d.ts +18 -8
  43. package/dist/src/events/eventBus.d.ts.map +1 -1
  44. package/dist/src/events/eventBus.js +36 -8
  45. package/dist/src/events/eventBus.js.map +1 -1
  46. package/dist/src/events/eventExecutor.d.ts +11 -0
  47. package/dist/src/events/eventExecutor.d.ts.map +1 -1
  48. package/dist/src/events/eventExecutor.js +93 -27
  49. package/dist/src/events/eventExecutor.js.map +1 -1
  50. package/dist/src/index.d.ts +7 -7
  51. package/dist/src/index.d.ts.map +1 -1
  52. package/dist/src/index.js +3 -3
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/json/fastStringify.d.ts.map +1 -1
  55. package/dist/src/json/fastStringify.js +10 -5
  56. package/dist/src/json/fastStringify.js.map +1 -1
  57. package/dist/src/logger/requestLogger.d.ts +1 -1
  58. package/dist/src/logger/requestLogger.d.ts.map +1 -1
  59. package/dist/src/logger/requestLogger.js +39 -23
  60. package/dist/src/logger/requestLogger.js.map +1 -1
  61. package/dist/src/middleware/middlewareResolver.d.ts.map +1 -1
  62. package/dist/src/middleware/middlewareResolver.js +12 -12
  63. package/dist/src/middleware/middlewareResolver.js.map +1 -1
  64. package/dist/src/middleware/middlewareTable.d.ts.map +1 -1
  65. package/dist/src/middleware/middlewareTable.js +31 -12
  66. package/dist/src/middleware/middlewareTable.js.map +1 -1
  67. package/dist/src/pipeline/compose.d.ts.map +1 -1
  68. package/dist/src/pipeline/compose.js +19 -18
  69. package/dist/src/pipeline/compose.js.map +1 -1
  70. package/dist/src/pipeline/pipelineCache.d.ts.map +1 -1
  71. package/dist/src/pipeline/pipelineCache.js +11 -9
  72. package/dist/src/pipeline/pipelineCache.js.map +1 -1
  73. package/dist/src/plugin/pluginAPI.d.ts +26 -12
  74. package/dist/src/plugin/pluginAPI.d.ts.map +1 -1
  75. package/dist/src/plugin/pluginManager.d.ts.map +1 -1
  76. package/dist/src/plugin/pluginManager.js +21 -4
  77. package/dist/src/plugin/pluginManager.js.map +1 -1
  78. package/dist/src/router/radixTree.d.ts.map +1 -1
  79. package/dist/src/router/radixTree.js +22 -6
  80. package/dist/src/router/radixTree.js.map +1 -1
  81. package/dist/src/router/routeTable.d.ts.map +1 -1
  82. package/dist/src/router/routeTable.js +25 -25
  83. package/dist/src/router/routeTable.js.map +1 -1
  84. package/dist/src/router/router.d.ts.map +1 -1
  85. package/dist/src/router/router.js +13 -15
  86. package/dist/src/router/router.js.map +1 -1
  87. package/dist/src/security/compileSecurity.d.ts +3 -0
  88. package/dist/src/security/compileSecurity.d.ts.map +1 -0
  89. package/dist/src/security/compileSecurity.js +23 -0
  90. package/dist/src/security/compileSecurity.js.map +1 -0
  91. package/dist/src/security/csrf.d.ts +4 -0
  92. package/dist/src/security/csrf.d.ts.map +1 -0
  93. package/dist/src/security/csrf.js +42 -0
  94. package/dist/src/security/csrf.js.map +1 -0
  95. package/dist/src/security/headers.d.ts +4 -0
  96. package/dist/src/security/headers.d.ts.map +1 -0
  97. package/dist/src/security/headers.js +43 -0
  98. package/dist/src/security/headers.js.map +1 -0
  99. package/dist/src/security/index.d.ts +4 -0
  100. package/dist/src/security/index.d.ts.map +1 -0
  101. package/dist/src/security/index.js +3 -0
  102. package/dist/src/security/index.js.map +1 -0
  103. package/dist/src/security/ipFilter.d.ts +6 -0
  104. package/dist/src/security/ipFilter.d.ts.map +1 -0
  105. package/dist/src/security/ipFilter.js +63 -0
  106. package/dist/src/security/ipFilter.js.map +1 -0
  107. package/dist/src/security/middleware.d.ts +4 -0
  108. package/dist/src/security/middleware.d.ts.map +1 -0
  109. package/dist/src/security/middleware.js +54 -0
  110. package/dist/src/security/middleware.js.map +1 -0
  111. package/dist/src/security/rateLimit.d.ts +11 -0
  112. package/dist/src/security/rateLimit.d.ts.map +1 -0
  113. package/dist/src/security/rateLimit.js +51 -0
  114. package/dist/src/security/rateLimit.js.map +1 -0
  115. package/dist/src/security/securityConfigLoader.d.ts +4 -0
  116. package/dist/src/security/securityConfigLoader.d.ts.map +1 -0
  117. package/dist/src/security/securityConfigLoader.js +142 -0
  118. package/dist/src/security/securityConfigLoader.js.map +1 -0
  119. package/dist/src/security/timeout.d.ts +5 -0
  120. package/dist/src/security/timeout.d.ts.map +1 -0
  121. package/dist/src/security/timeout.js +32 -0
  122. package/dist/src/security/timeout.js.map +1 -0
  123. package/dist/src/security/types.d.ts +100 -0
  124. package/dist/src/security/types.d.ts.map +1 -0
  125. package/dist/src/{schedules → security}/types.js.map +1 -1
  126. package/dist/src/server/requestHandler.d.ts +5 -1
  127. package/dist/src/server/requestHandler.d.ts.map +1 -1
  128. package/dist/src/server/requestHandler.js +228 -90
  129. package/dist/src/server/requestHandler.js.map +1 -1
  130. package/dist/src/trace/traceEngine.d.ts +5 -5
  131. package/dist/src/trace/traceEngine.js +3 -3
  132. package/dist/src/trace/traceEngine.js.map +1 -1
  133. package/dist/src/trace/tracingIgnore.d.ts +6 -0
  134. package/dist/src/trace/tracingIgnore.d.ts.map +1 -0
  135. package/dist/src/trace/tracingIgnore.js +24 -0
  136. package/dist/src/trace/tracingIgnore.js.map +1 -0
  137. package/dist/src/validation/routeSchema.d.ts +11 -0
  138. package/dist/src/validation/routeSchema.d.ts.map +1 -1
  139. package/dist/src/validation/routeSchema.js +48 -0
  140. package/dist/src/validation/routeSchema.js.map +1 -1
  141. package/package.json +1 -1
  142. package/dist/src/schedules/parseSchedule.d.ts +0 -15
  143. package/dist/src/schedules/parseSchedule.d.ts.map +0 -1
  144. package/dist/src/schedules/parseSchedule.js +0 -111
  145. package/dist/src/schedules/parseSchedule.js.map +0 -1
  146. package/dist/src/schedules/runScheduler.d.ts +0 -14
  147. package/dist/src/schedules/runScheduler.d.ts.map +0 -1
  148. package/dist/src/schedules/runScheduler.js +0 -58
  149. package/dist/src/schedules/runScheduler.js.map +0 -1
  150. package/dist/src/schedules/scheduleLoader.d.ts +0 -14
  151. package/dist/src/schedules/scheduleLoader.d.ts.map +0 -1
  152. package/dist/src/schedules/scheduleLoader.js +0 -122
  153. package/dist/src/schedules/scheduleLoader.js.map +0 -1
  154. package/dist/src/schedules/types.d.ts +0 -37
  155. package/dist/src/schedules/types.d.ts.map +0 -1
  156. package/dist/src/tasks/scheduler.d.ts +0 -10
  157. package/dist/src/tasks/scheduler.d.ts.map +0 -1
  158. package/dist/src/tasks/scheduler.js +0 -10
  159. package/dist/src/tasks/scheduler.js.map +0 -1
  160. package/dist/src/tasks/taskRunner.d.ts +0 -3
  161. package/dist/src/tasks/taskRunner.d.ts.map +0 -1
  162. package/dist/src/tasks/taskRunner.js +0 -4
  163. package/dist/src/tasks/taskRunner.js.map +0 -1
  164. /package/dist/src/{schedules → security}/types.js +0 -0
package/dist/cli/cli.js CHANGED
@@ -36,7 +36,8 @@ program
36
36
  .action((opts) => buildCommand.run(opts));
37
37
  program
38
38
  .command("create [name]")
39
- .description("Create a new Legonode project")
39
+ .description("Create a new Legonode project (local scaffold, or clone a template via -t)")
40
+ .option("-t, --template <value>", "Template: built-in name (e.g. basic) or git URL / github.com/.../tree/branch/path")
40
41
  .option("--no-install", "Skip npm/bun install")
41
42
  .action(async (name, cmd) => {
42
43
  const opts = cmd?.opts?.() ?? {};
@@ -45,6 +46,9 @@ program
45
46
  };
46
47
  if (name !== undefined)
47
48
  runOpts.name = name;
49
+ if (opts.template !== undefined && opts.template !== "") {
50
+ runOpts.template = opts.template;
51
+ }
48
52
  await createCommand.run(runOpts);
49
53
  });
50
54
  program
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":";AAEA,iFAAiF;AACjF,IAAI,OAAQ,UAAkB,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAyB,CAAC;AAElE,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;AAEnC,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;KAC9F,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,GAA2C,EAAE,EAAE;IACtF,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAA0C;QACrD,SAAS,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK;KAClC,CAAC;IACF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5C,MAAM,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"AA0EA,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY;;0BAEL,YAAY;CAoFtB,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"AAgEA,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY;;0BAEL,YAAY;CAmFtB,CAAC"}
@@ -1,10 +1,10 @@
1
- import { existsSync, readdirSync, writeFileSync } from "node:fs";
1
+ import { existsSync, writeFileSync } from "node:fs";
2
2
  import { join, resolve } from "node:path";
3
3
  import { spawn } from "node:child_process";
4
4
  import { loadConfig, getAppDir, getBuildPath } from "../../src/config/loadConfig.js";
5
5
  import { scanAppFiles } from "../../src/loader/fileScanner.js";
6
- import { scanScheduleFiles } from "../../src/schedules/scheduleLoader.js";
7
6
  import { validateApp } from "../../src/validation/validateApp.js";
7
+ import { scanEventFiles } from "../../src/events/eventExecutor.js";
8
8
  import { runPluginHook } from "../pluginHooks.js";
9
9
  import { appLogger } from "../../src/utils/logger.js";
10
10
  /**
@@ -56,16 +56,8 @@ runServer(opts).catch((err) => {
56
56
  writeFileSync(serverPath, serverJs, "utf-8");
57
57
  appLogger.info(" server.js written to " + serverPath);
58
58
  }
59
- const EVENT_EXTENSIONS = [".event.ts", ".event.js", ".event.mts", ".event.mjs"];
60
59
  function countEventFiles(appDir) {
61
- try {
62
- const eventsDir = join(resolve(appDir), "events");
63
- const entries = readdirSync(eventsDir, { withFileTypes: true });
64
- return entries.filter((e) => e.isFile() && EVENT_EXTENSIONS.some((ext) => e.name.endsWith(ext))).length;
65
- }
66
- catch {
67
- return 0;
68
- }
60
+ return scanEventFiles(appDir).length;
69
61
  }
70
62
  export const buildCommand = {
71
63
  name: "build",
@@ -92,8 +84,7 @@ export const buildCommand = {
92
84
  });
93
85
  const routes = scanAppFiles(appDir);
94
86
  const events = countEventFiles(appDir);
95
- const cronJobs = scanScheduleFiles(appDir).length;
96
- appLogger.info(` ${routes.length} route(s), ${events} event(s), ${cronJobs} cron job(s)`);
87
+ appLogger.info(` ${routes.length} route(s), ${events} event(s)`);
97
88
  appLogger.info(" compiling...");
98
89
  const start = Date.now();
99
90
  const tsconfig = "tsconfig.json";
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,20 @@ export type CreateOptions = {
3
3
  name?: string;
4
4
  /** Skip package manager install */
5
5
  noInstall?: boolean;
6
+ /**
7
+ * Template: built-in key from `BUILTIN_TEMPLATES`, a Git clone URL, or a GitHub folder link
8
+ * (`https://github.com/owner/repo/tree/branch/path`).
9
+ * Undefined = prompt to pick a template or default scaffold.
10
+ */
11
+ template?: string;
6
12
  };
13
+ /**
14
+ * Built-in template name → source:
15
+ * - Full git remote (`.git` or `git@...`), or
16
+ * - GitHub browser URL: `https://github.com/{owner}/{repo}/tree/{branch}/{path}` (sparse checkout of that folder).
17
+ * Keys are matched case-insensitively when using `-t <name>`.
18
+ */
19
+ export declare const BUILTIN_TEMPLATES: Record<string, string>;
7
20
  export declare const createCommand: {
8
21
  readonly name: "create";
9
22
  readonly run: (opts?: CreateOptions) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG;IAC1B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AA4EF,eAAO,MAAM,aAAa;;0BAEN,aAAa;CAgHvB,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,aAAa,GAAG;IAC1B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AA4VF,eAAO,MAAM,aAAa;;0BAEN,aAAa;CAWvB,CAAC"}
@@ -1,8 +1,20 @@
1
- import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
1
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync, statSync, writeFileSync, } from "node:fs";
2
2
  import { basename, join, resolve } from "node:path";
3
- import { execSync, spawn } from "node:child_process";
3
+ import { tmpdir } from "node:os";
4
+ import { execFileSync, execSync, spawn } from "node:child_process";
5
+ import { ExitPromptError } from "@inquirer/core";
4
6
  import { input, select } from "@inquirer/prompts";
5
7
  import { appLogger } from "../../src/utils/logger.js";
8
+ /**
9
+ * Built-in template name → source:
10
+ * - Full git remote (`.git` or `git@...`), or
11
+ * - GitHub browser URL: `https://github.com/{owner}/{repo}/tree/{branch}/{path}` (sparse checkout of that folder).
12
+ * Keys are matched case-insensitively when using `-t <name>`.
13
+ */
14
+ export const BUILTIN_TEMPLATES = {
15
+ basic: "https://github.com/legonode/legonode/tree/dev/templates/basic",
16
+ };
17
+ const DEFAULT_SCAFFOLD_VALUE = "__default_scaffold__";
6
18
  function isPackageManagerAvailable(cmd) {
7
19
  try {
8
20
  execSync(`${cmd} --version`, { stdio: "ignore" });
@@ -16,6 +28,193 @@ function getAvailablePackageManagers() {
16
28
  const all = ["npm", "yarn", "pnpm", "bun"];
17
29
  return all.filter(isPackageManagerAvailable);
18
30
  }
31
+ function isGitAvailable() {
32
+ try {
33
+ execSync("git --version", { stdio: "ignore" });
34
+ return true;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ /** True if `-t` value should be treated as a clone URL / GitHub link, not a template key. */
41
+ function looksLikeGitUrl(value) {
42
+ const v = value.trim();
43
+ if (/^git@[^:]+:.+/i.test(v))
44
+ return true;
45
+ if (/^https?:\/\//i.test(v))
46
+ return true;
47
+ return false;
48
+ }
49
+ function parseGithubTreeBrowserUrl(url) {
50
+ const u = url.trim();
51
+ const m = u.match(/^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/(.+)$/i);
52
+ if (!m)
53
+ return null;
54
+ const [, owner, repo, branch, pathPart] = m;
55
+ if (!owner || !repo || !branch || !pathPart)
56
+ return null;
57
+ const path = pathPart.split(/[?#]/)[0]?.replace(/\/+$/, "") ?? "";
58
+ if (!path)
59
+ return null;
60
+ return { owner, repo, branch, path };
61
+ }
62
+ function resolveBuiltinTemplateKey(inputKey) {
63
+ const k = inputKey.trim();
64
+ if (BUILTIN_TEMPLATES[k] !== undefined)
65
+ return k;
66
+ const lower = k.toLowerCase();
67
+ for (const name of Object.keys(BUILTIN_TEMPLATES)) {
68
+ if (name.toLowerCase() === lower)
69
+ return name;
70
+ }
71
+ return undefined;
72
+ }
73
+ function resolveCloneUrl(templateOpt) {
74
+ const t = templateOpt.trim();
75
+ if (looksLikeGitUrl(t))
76
+ return t;
77
+ const key = resolveBuiltinTemplateKey(t);
78
+ if (key !== undefined)
79
+ return BUILTIN_TEMPLATES[key];
80
+ const known = Object.keys(BUILTIN_TEMPLATES);
81
+ const hint = known.length > 0
82
+ ? `Use a built-in name (${known.join(", ")}) or pass a Git clone URL with -t.`
83
+ : "Pass a Git clone URL with -t, or add names and URLs to BUILTIN_TEMPLATES.";
84
+ throw new Error(`Unknown template "${t}". ${hint}`);
85
+ }
86
+ async function resolveTemplateChoice(templateOpt) {
87
+ if (templateOpt !== undefined && templateOpt.trim() !== "") {
88
+ const url = resolveCloneUrl(templateOpt);
89
+ return { mode: "clone", url };
90
+ }
91
+ const builtinChoices = Object.keys(BUILTIN_TEMPLATES).map((name) => ({
92
+ name: `${name} (${BUILTIN_TEMPLATES[name]})`,
93
+ value: name,
94
+ description: `Clone built-in template: ${name}`,
95
+ }));
96
+ const choices = [
97
+ ...builtinChoices,
98
+ {
99
+ name: "Default (local starter — no git)",
100
+ value: DEFAULT_SCAFFOLD_VALUE,
101
+ description: "Minimal Legonode app scaffold in this CLI",
102
+ },
103
+ ];
104
+ const picked = await select({
105
+ message: "Choose a template (use ↑/↓ arrows):",
106
+ choices,
107
+ });
108
+ if (picked === DEFAULT_SCAFFOLD_VALUE)
109
+ return { mode: "scaffold" };
110
+ return { mode: "clone", url: BUILTIN_TEMPLATES[picked] };
111
+ }
112
+ function assertDirEmptyForClone(dir, label) {
113
+ if (!existsSync(dir))
114
+ return;
115
+ const entries = readdirSync(dir).filter((e) => e !== ".git" && e !== ".DS_Store");
116
+ if (entries.length > 0) {
117
+ appLogger.error(`${label} is not empty. Choose an empty directory or a new project name.`);
118
+ process.exit(1);
119
+ }
120
+ }
121
+ /**
122
+ * Sparse-checkout a subfolder from GitHub (browser `tree/branch/path` links).
123
+ * Requires Git 2.25+ (`clone --sparse`).
124
+ */
125
+ function cloneGithubTreeFolder(spec, targetDir) {
126
+ const remote = `https://github.com/${spec.owner}/${spec.repo}.git`;
127
+ const tmpRoot = mkdtempSync(join(tmpdir(), "legonode-create-"));
128
+ const cloneDest = join(tmpRoot, "repo");
129
+ try {
130
+ appLogger.info(` Cloning ${remote} @ ${spec.branch} (sparse: ${spec.path})`);
131
+ execFileSync("git", [
132
+ "clone",
133
+ "--depth",
134
+ "1",
135
+ "-b",
136
+ spec.branch,
137
+ "--sparse",
138
+ remote,
139
+ cloneDest,
140
+ ], { stdio: "inherit" });
141
+ execFileSync("git", ["sparse-checkout", "set", spec.path], {
142
+ cwd: cloneDest,
143
+ stdio: "inherit",
144
+ });
145
+ const source = join(cloneDest, ...spec.path.split("/"));
146
+ if (!existsSync(source)) {
147
+ appLogger.error(`Sparse checkout did not produce "${spec.path}". Check branch and path.`);
148
+ process.exit(1);
149
+ }
150
+ cpSync(source, targetDir, { recursive: true });
151
+ }
152
+ catch {
153
+ appLogger.error("git sparse clone failed. Use Git 2.25+, check branch/path, and network access.");
154
+ process.exit(1);
155
+ }
156
+ finally {
157
+ rmSync(tmpRoot, { recursive: true, force: true });
158
+ }
159
+ try {
160
+ rmSync(join(targetDir, ".git"), { recursive: true, force: true });
161
+ }
162
+ catch {
163
+ // optional
164
+ }
165
+ }
166
+ /**
167
+ * Clone into a temp directory, then copy into `targetDir`.
168
+ * Supports full repo URLs and GitHub `.../tree/branch/path` links (sparse).
169
+ * If the repo root is a single subdirectory, that folder is unwrapped.
170
+ */
171
+ function cloneTemplateRepo(repoUrl, targetDir) {
172
+ if (!isGitAvailable()) {
173
+ appLogger.error("git is not installed or not on PATH. Install git to clone templates.");
174
+ process.exit(1);
175
+ }
176
+ assertDirEmptyForClone(targetDir, `Directory "${targetDir}"`);
177
+ mkdirSync(targetDir, { recursive: true });
178
+ const tree = parseGithubTreeBrowserUrl(repoUrl);
179
+ if (tree) {
180
+ cloneGithubTreeFolder(tree, targetDir);
181
+ return;
182
+ }
183
+ const tmpRoot = mkdtempSync(join(tmpdir(), "legonode-create-"));
184
+ const cloneDest = join(tmpRoot, "repo");
185
+ try {
186
+ appLogger.info(` Cloning ${repoUrl}`);
187
+ execFileSync("git", ["clone", "--depth", "1", repoUrl, cloneDest], {
188
+ stdio: "inherit",
189
+ });
190
+ const visible = readdirSync(cloneDest).filter((e) => e !== ".git");
191
+ let source = cloneDest;
192
+ if (visible.length === 1) {
193
+ const one = join(cloneDest, visible[0]);
194
+ try {
195
+ if (statSync(one).isDirectory())
196
+ source = one;
197
+ }
198
+ catch {
199
+ // keep source = cloneDest
200
+ }
201
+ }
202
+ cpSync(source, targetDir, { recursive: true });
203
+ }
204
+ catch {
205
+ appLogger.error("git clone failed. Check the URL and your network access.");
206
+ process.exit(1);
207
+ }
208
+ finally {
209
+ rmSync(tmpRoot, { recursive: true, force: true });
210
+ }
211
+ try {
212
+ rmSync(join(targetDir, ".git"), { recursive: true, force: true });
213
+ }
214
+ catch {
215
+ // optional
216
+ }
217
+ }
19
218
  const PACKAGE_JSON = (name) => `{
20
219
  "name": "${name}",
21
220
  "version": "0.0.1",
@@ -27,7 +226,7 @@ const PACKAGE_JSON = (name) => `{
27
226
  "start": "legonode start"
28
227
  },
29
228
  "dependencies": {
30
- "legonode": "^0.0.2"
229
+ "legonode": "^0.0.6"
31
230
  },
32
231
  "devDependencies": {
33
232
  "typescript": "^5.9.0"
@@ -69,101 +268,112 @@ export async function GET(ctx: Context) {
69
268
  function sanitizePackageName(name) {
70
269
  return name.replace(/[^a-z0-9-]/gi, "-").toLowerCase() || "my-legonode-app";
71
270
  }
271
+ async function runInstall(targetDir, noInstall) {
272
+ let depsInstalled = false;
273
+ if (noInstall) {
274
+ appLogger.info(" Run your package manager to install dependencies.");
275
+ return false;
276
+ }
277
+ const available = getAvailablePackageManagers();
278
+ if (available.length === 0) {
279
+ appLogger.warn(" No package manager found (npm, yarn, pnpm, bun). Run install manually.");
280
+ return false;
281
+ }
282
+ const choices = [
283
+ ...available.map((pm) => ({
284
+ name: pm,
285
+ value: pm,
286
+ description: `Use ${pm} to install dependencies`,
287
+ })),
288
+ {
289
+ name: "Skip install",
290
+ value: "skip",
291
+ description: "Don't install dependencies now",
292
+ },
293
+ ];
294
+ const selected = await select({
295
+ message: "Select a package manager (use ↑/↓ arrows):",
296
+ choices,
297
+ });
298
+ if (selected === "skip") {
299
+ appLogger.info(" Skipped install. Run your package manager to install dependencies.");
300
+ return false;
301
+ }
302
+ appLogger.info(` Installing dependencies with ${selected}...`);
303
+ await new Promise((resolvePromise, reject) => {
304
+ const args = selected === "bun" ? ["install"] : ["install"];
305
+ const child = spawn(selected, args, {
306
+ stdio: "inherit",
307
+ cwd: targetDir,
308
+ });
309
+ child.on("exit", (code) => {
310
+ if (code === 0) {
311
+ appLogger.info(" Done!");
312
+ resolvePromise();
313
+ }
314
+ else {
315
+ reject(new Error(`${selected} install exited with code ${code}`));
316
+ }
317
+ });
318
+ child.on("error", reject);
319
+ });
320
+ return true;
321
+ }
72
322
  export const createCommand = {
73
323
  name: "create",
74
324
  run: async (opts = {}) => {
75
- const cwd = process.cwd();
76
- // Resolve project name: prompt if not provided
77
- let projectName;
78
- if (opts.name === undefined) {
79
- const answered = await input({
80
- message: "Project name (leave empty to use current directory):",
81
- default: "",
82
- });
83
- projectName = answered.trim() === "" ? "." : answered.trim();
325
+ try {
326
+ await runCreate(opts);
84
327
  }
85
- else {
86
- projectName = opts.name;
87
- }
88
- const targetDir = projectName === "." ? cwd : resolve(cwd, projectName);
89
- if (projectName !== "." && existsSync(targetDir)) {
90
- const entries = readdirSync(targetDir);
91
- if (entries.length > 0) {
92
- appLogger.error(`Directory "${projectName}" already exists and is not empty.`);
93
- process.exit(1);
94
- }
95
- }
96
- // Package.json name: use folder name when in current dir, else use project name
97
- const packageJsonName = projectName === "."
98
- ? sanitizePackageName(basename(cwd)) || "my-legonode-app"
99
- : sanitizePackageName(projectName);
100
- appLogger.info("legonode create");
101
- appLogger.info(` Creating project in ${targetDir}`);
102
- function ensureDir(path) {
103
- if (!existsSync(path)) {
104
- mkdirSync(path, { recursive: true });
328
+ catch (e) {
329
+ if (e instanceof ExitPromptError) {
330
+ appLogger.error(e.message);
331
+ process.exit(130);
105
332
  }
333
+ throw e;
106
334
  }
107
- function write(path, content) {
108
- ensureDir(resolve(path, ".."));
109
- writeFileSync(path, content.trimStart(), "utf-8");
110
- }
111
- // package.json
112
- write(join(targetDir, "package.json"), PACKAGE_JSON(packageJsonName));
113
- // tsconfig.json
114
- write(join(targetDir, "tsconfig.json"), TSCONFIG_JSON);
115
- // legonode.config.ts
116
- write(join(targetDir, "legonode.config.ts"), LEGONODE_CONFIG_TS);
117
- // src/router/ping/route.ts
118
- const srcPath = join(targetDir, "src");
119
- write(join(srcPath, "router", "ping", "route.ts"), PING_ROUTE_TS);
120
- appLogger.info(` Created: package.json, tsconfig.json, legonode.config.ts`);
121
- appLogger.info(` Created: src/router/ping/route.ts`);
122
- // Package manager selection and install
123
- let depsInstalled = false;
124
- if (!opts.noInstall) {
125
- const available = getAvailablePackageManagers();
126
- if (available.length === 0) {
127
- appLogger.warn(" No package manager found (npm, yarn, pnpm, bun). Run install manually.");
128
- }
129
- else {
130
- const choices = [
131
- ...available.map((pm) => ({ name: pm, value: pm, description: `Use ${pm} to install dependencies` })),
132
- { name: "Skip install", value: "skip", description: "Don't install dependencies now" },
133
- ];
134
- const selected = await select({
135
- message: "Select a package manager (use ↑/↓ arrows):",
136
- choices,
137
- });
138
- if (selected !== "skip") {
139
- appLogger.info(` Installing dependencies with ${selected}...`);
140
- await new Promise((resolvePromise, reject) => {
141
- const args = selected === "bun" ? ["install"] : ["install"];
142
- const child = spawn(selected, args, {
143
- stdio: "inherit",
144
- cwd: targetDir,
145
- });
146
- child.on("exit", (code) => {
147
- if (code === 0) {
148
- appLogger.info(" Done!");
149
- depsInstalled = true;
150
- resolvePromise();
151
- }
152
- else {
153
- reject(new Error(`${selected} install exited with code ${code}`));
154
- }
155
- });
156
- child.on("error", reject);
157
- });
158
- }
159
- else {
160
- appLogger.info(" Skipped install. Run your package manager to install dependencies.");
161
- }
162
- }
163
- }
164
- else {
165
- appLogger.info(" Run your package manager to install dependencies.");
335
+ },
336
+ };
337
+ async function runCreate(opts = {}) {
338
+ const cwd = process.cwd();
339
+ let projectName;
340
+ if (opts.name === undefined) {
341
+ const answered = await input({
342
+ message: "Project name (leave empty to use current directory):",
343
+ default: "",
344
+ });
345
+ projectName = answered.trim() === "" ? "." : answered.trim();
346
+ }
347
+ else {
348
+ projectName = opts.name;
349
+ }
350
+ const targetDir = projectName === "." ? cwd : resolve(cwd, projectName);
351
+ if (projectName !== "." && existsSync(targetDir)) {
352
+ const entries = readdirSync(targetDir);
353
+ if (entries.length > 0) {
354
+ appLogger.error(`Directory "${projectName}" already exists and is not empty.`);
355
+ process.exit(1);
166
356
  }
357
+ }
358
+ const packageJsonName = projectName === "."
359
+ ? sanitizePackageName(basename(cwd)) || "my-legonode-app"
360
+ : sanitizePackageName(projectName);
361
+ let templateChoice;
362
+ try {
363
+ templateChoice = await resolveTemplateChoice(opts.template);
364
+ }
365
+ catch (e) {
366
+ if (e instanceof ExitPromptError)
367
+ throw e;
368
+ appLogger.error(e instanceof Error ? e.message : String(e));
369
+ process.exit(1);
370
+ }
371
+ appLogger.info("legonode create");
372
+ appLogger.info(` Target: ${targetDir}`);
373
+ if (templateChoice.mode === "clone") {
374
+ cloneTemplateRepo(templateChoice.url, targetDir);
375
+ appLogger.info(" Template cloned. .git removed for a fresh project.");
376
+ const depsInstalled = await runInstall(targetDir, opts.noInstall === true);
167
377
  appLogger.info("");
168
378
  appLogger.info("Next steps:");
169
379
  appLogger.info(` cd ${projectName === "." ? "." : projectName}`);
@@ -171,6 +381,32 @@ export const createCommand = {
171
381
  appLogger.info(" npm install # or: yarn / pnpm / bun install");
172
382
  }
173
383
  appLogger.info(" legonode dev");
174
- },
175
- };
384
+ return;
385
+ }
386
+ // --- default local scaffold ---
387
+ function ensureDir(path) {
388
+ if (!existsSync(path)) {
389
+ mkdirSync(path, { recursive: true });
390
+ }
391
+ }
392
+ function write(path, content) {
393
+ ensureDir(resolve(path, ".."));
394
+ writeFileSync(path, content.trimStart(), "utf-8");
395
+ }
396
+ write(join(targetDir, "package.json"), PACKAGE_JSON(packageJsonName));
397
+ write(join(targetDir, "tsconfig.json"), TSCONFIG_JSON);
398
+ write(join(targetDir, "legonode.config.ts"), LEGONODE_CONFIG_TS);
399
+ const srcPath = join(targetDir, "src");
400
+ write(join(srcPath, "router", "ping", "route.ts"), PING_ROUTE_TS);
401
+ appLogger.info(` Created: package.json, tsconfig.json, legonode.config.ts`);
402
+ appLogger.info(` Created: src/router/ping/route.ts`);
403
+ const depsInstalled = await runInstall(targetDir, opts.noInstall === true);
404
+ appLogger.info("");
405
+ appLogger.info("Next steps:");
406
+ appLogger.info(` cd ${projectName === "." ? "." : projectName}`);
407
+ if (!depsInstalled) {
408
+ appLogger.info(" npm install # or: yarn / pnpm / bun install");
409
+ }
410
+ appLogger.info(" legonode dev");
411
+ }
176
412
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../cli/commands/dev.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAaF,iBAAe,GAAG,CAAC,IAAI,GAAE,UAAe,iBAyPvC;AA6BD,eAAO,MAAM,UAAU;;;CAGb,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../cli/commands/dev.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAaF,iBAAe,GAAG,CAAC,IAAI,GAAE,UAAe,iBAuOvC;AAuBD,eAAO,MAAM,UAAU;;;CAGb,CAAC"}