effect-start 0.23.1 → 0.26.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 (351) hide show
  1. package/package.json +18 -86
  2. package/src/Development.ts +3 -1
  3. package/src/Entity.ts +17 -0
  4. package/src/Fetch.ts +271 -0
  5. package/src/SqlIntrospect.ts +64 -70
  6. package/src/Start.ts +21 -24
  7. package/src/StartApp.ts +1 -1
  8. package/src/bun/BunServer.ts +42 -10
  9. package/src/hyper/HyperHtml.ts +0 -1
  10. package/src/sql/bun/index.ts +1 -1
  11. package/src/sql/index.ts +1 -0
  12. package/src/sql/libsql/index.ts +173 -0
  13. package/src/sql/libsql/libsql.d.ts +39 -0
  14. package/src/sql/mssql/index.ts +1 -1
  15. package/dist/BlobStore.d.ts +0 -80
  16. package/dist/BlobStore.js +0 -19
  17. package/dist/ChildProcess.d.ts +0 -60
  18. package/dist/ChildProcess.js +0 -30
  19. package/dist/Commander.d.ts +0 -100
  20. package/dist/Commander.js +0 -326
  21. package/dist/ContentNegotiation.d.ts +0 -12
  22. package/dist/ContentNegotiation.js +0 -359
  23. package/dist/Cookies.d.ts +0 -47
  24. package/dist/Cookies.js +0 -302
  25. package/dist/Development.d.ts +0 -39
  26. package/dist/Development.js +0 -58
  27. package/dist/Effectify.d.ts +0 -209
  28. package/dist/Effectify.js +0 -19
  29. package/dist/Entity.d.ts +0 -47
  30. package/dist/Entity.js +0 -224
  31. package/dist/FilePathPattern.d.ts +0 -29
  32. package/dist/FilePathPattern.js +0 -86
  33. package/dist/FileRouter.d.ts +0 -56
  34. package/dist/FileRouter.js +0 -148
  35. package/dist/FileRouterCodegen.d.ts +0 -18
  36. package/dist/FileRouterCodegen.js +0 -227
  37. package/dist/FileRouterPattern.d.ts +0 -9
  38. package/dist/FileRouterPattern.js +0 -35
  39. package/dist/FileSystem.d.ts +0 -158
  40. package/dist/FileSystem.js +0 -70
  41. package/dist/Http.d.ts +0 -37
  42. package/dist/Http.js +0 -88
  43. package/dist/HttpAppExtra.d.ts +0 -7
  44. package/dist/HttpAppExtra.js +0 -320
  45. package/dist/HttpUtils.d.ts +0 -3
  46. package/dist/HttpUtils.js +0 -11
  47. package/dist/PathPattern.d.ts +0 -134
  48. package/dist/PathPattern.js +0 -413
  49. package/dist/PlatformError.d.ts +0 -38
  50. package/dist/PlatformError.js +0 -25
  51. package/dist/PlatformRuntime.d.ts +0 -27
  52. package/dist/PlatformRuntime.js +0 -46
  53. package/dist/Route.d.ts +0 -97
  54. package/dist/Route.js +0 -100
  55. package/dist/RouteBody.d.ts +0 -47
  56. package/dist/RouteBody.js +0 -67
  57. package/dist/RouteError.d.ts +0 -98
  58. package/dist/RouteError.js +0 -55
  59. package/dist/RouteHook.d.ts +0 -12
  60. package/dist/RouteHook.js +0 -40
  61. package/dist/RouteHttp.d.ts +0 -21
  62. package/dist/RouteHttp.js +0 -258
  63. package/dist/RouteHttpTracer.d.ts +0 -10
  64. package/dist/RouteHttpTracer.js +0 -62
  65. package/dist/RouteMount.d.ts +0 -86
  66. package/dist/RouteMount.js +0 -63
  67. package/dist/RouteSchema.d.ts +0 -86
  68. package/dist/RouteSchema.js +0 -188
  69. package/dist/RouteSse.d.ts +0 -21
  70. package/dist/RouteSse.js +0 -79
  71. package/dist/RouteTree.d.ts +0 -57
  72. package/dist/RouteTree.js +0 -93
  73. package/dist/RouteTrie.d.ts +0 -20
  74. package/dist/RouteTrie.js +0 -152
  75. package/dist/RouterPattern.d.ts +0 -118
  76. package/dist/RouterPattern.js +0 -269
  77. package/dist/SchemaExtra.d.ts +0 -7
  78. package/dist/SchemaExtra.js +0 -74
  79. package/dist/Socket.d.ts +0 -27
  80. package/dist/Socket.js +0 -29
  81. package/dist/Sql.d.ts +0 -34
  82. package/dist/Sql.js +0 -5
  83. package/dist/SqlIntrospect.d.ts +0 -91
  84. package/dist/SqlIntrospect.js +0 -466
  85. package/dist/Start.d.ts +0 -44
  86. package/dist/Start.js +0 -49
  87. package/dist/StartApp.d.ts +0 -19
  88. package/dist/StartApp.js +0 -21
  89. package/dist/StreamExtra.d.ts +0 -28
  90. package/dist/StreamExtra.js +0 -100
  91. package/dist/System.d.ts +0 -7
  92. package/dist/System.js +0 -22
  93. package/dist/TuplePathPattern.d.ts +0 -9
  94. package/dist/TuplePathPattern.js +0 -68
  95. package/dist/Unique.d.ts +0 -50
  96. package/dist/Unique.js +0 -187
  97. package/dist/Values.d.ts +0 -27
  98. package/dist/Values.js +0 -36
  99. package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
  100. package/dist/bun/BunBlobStoreDisk.js +0 -116
  101. package/dist/bun/BunBlobStoreS3.d.ts +0 -11
  102. package/dist/bun/BunBlobStoreS3.js +0 -89
  103. package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
  104. package/dist/bun/BunBlobWatcherDisk.js +0 -60
  105. package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
  106. package/dist/bun/BunBlobWatcherQueue.js +0 -17
  107. package/dist/bun/BunBundle.d.ts +0 -11
  108. package/dist/bun/BunBundle.js +0 -137
  109. package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
  110. package/dist/bun/BunChildProcessSpawner.js +0 -103
  111. package/dist/bun/BunHttpServer.d.ts +0 -44
  112. package/dist/bun/BunHttpServer.js +0 -186
  113. package/dist/bun/BunHttpServer_web.d.ts +0 -60
  114. package/dist/bun/BunHttpServer_web.js +0 -252
  115. package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
  116. package/dist/bun/BunImportTrackerPlugin.js +0 -69
  117. package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
  118. package/dist/bun/BunPlatformHttpServer.js +0 -53
  119. package/dist/bun/BunRoute.d.ts +0 -48
  120. package/dist/bun/BunRoute.js +0 -121
  121. package/dist/bun/BunRuntime.d.ts +0 -2
  122. package/dist/bun/BunRuntime.js +0 -31
  123. package/dist/bun/BunServer.d.ts +0 -40
  124. package/dist/bun/BunServer.js +0 -157
  125. package/dist/bun/BunServerRequest.d.ts +0 -60
  126. package/dist/bun/BunServerRequest.js +0 -252
  127. package/dist/bun/BunSql.d.ts +0 -4
  128. package/dist/bun/BunSql.js +0 -81
  129. package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
  130. package/dist/bun/BunVirtualFilesPlugin.js +0 -40
  131. package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
  132. package/dist/bun/_BunEnhancedResolve.js +0 -102
  133. package/dist/bun/index.d.ts +0 -5
  134. package/dist/bun/index.js +0 -5
  135. package/dist/bundler/Bundle.d.ts +0 -61
  136. package/dist/bundler/Bundle.js +0 -48
  137. package/dist/bundler/BundleFiles.d.ts +0 -13
  138. package/dist/bundler/BundleFiles.js +0 -96
  139. package/dist/bundler/BundleHttp.d.ts +0 -45
  140. package/dist/bundler/BundleHttp.js +0 -176
  141. package/dist/bundler/BundleRoute.d.ts +0 -27
  142. package/dist/bundler/BundleRoute.js +0 -51
  143. package/dist/client/Overlay.d.ts +0 -2
  144. package/dist/client/Overlay.js +0 -32
  145. package/dist/client/ScrollState.d.ts +0 -6
  146. package/dist/client/ScrollState.js +0 -94
  147. package/dist/client/index.d.ts +0 -6
  148. package/dist/client/index.js +0 -79
  149. package/dist/console/Console.d.ts +0 -6
  150. package/dist/console/Console.js +0 -26
  151. package/dist/console/ConsoleErrors.d.ts +0 -3
  152. package/dist/console/ConsoleErrors.js +0 -200
  153. package/dist/console/ConsoleLogger.d.ts +0 -3
  154. package/dist/console/ConsoleLogger.js +0 -47
  155. package/dist/console/ConsoleMetrics.d.ts +0 -3
  156. package/dist/console/ConsoleMetrics.js +0 -61
  157. package/dist/console/ConsoleProcess.d.ts +0 -3
  158. package/dist/console/ConsoleProcess.js +0 -49
  159. package/dist/console/ConsoleStore.d.ts +0 -144
  160. package/dist/console/ConsoleStore.js +0 -61
  161. package/dist/console/ConsoleTracer.d.ts +0 -3
  162. package/dist/console/ConsoleTracer.js +0 -94
  163. package/dist/console/Simulation.d.ts +0 -2
  164. package/dist/console/Simulation.js +0 -633
  165. package/dist/console/index.d.ts +0 -3
  166. package/dist/console/index.js +0 -3
  167. package/dist/console/routes/errors/route.d.ts +0 -10
  168. package/dist/console/routes/errors/route.js +0 -47
  169. package/dist/console/routes/fiberDetail.d.ts +0 -16
  170. package/dist/console/routes/fiberDetail.js +0 -38
  171. package/dist/console/routes/fibers/route.d.ts +0 -10
  172. package/dist/console/routes/fibers/route.js +0 -19
  173. package/dist/console/routes/git/route.d.ts +0 -11
  174. package/dist/console/routes/git/route.js +0 -33
  175. package/dist/console/routes/layout.d.ts +0 -9
  176. package/dist/console/routes/layout.js +0 -3
  177. package/dist/console/routes/logs/route.d.ts +0 -10
  178. package/dist/console/routes/logs/route.js +0 -32
  179. package/dist/console/routes/metrics/route.d.ts +0 -10
  180. package/dist/console/routes/metrics/route.js +0 -17
  181. package/dist/console/routes/route.d.ts +0 -6
  182. package/dist/console/routes/route.js +0 -5
  183. package/dist/console/routes/routes/route.d.ts +0 -6
  184. package/dist/console/routes/routes/route.js +0 -20
  185. package/dist/console/routes/services/route.d.ts +0 -6
  186. package/dist/console/routes/services/route.js +0 -12
  187. package/dist/console/routes/system/route.d.ts +0 -10
  188. package/dist/console/routes/system/route.js +0 -18
  189. package/dist/console/routes/traceDetail.d.ts +0 -16
  190. package/dist/console/routes/traceDetail.js +0 -14
  191. package/dist/console/routes/traces/route.d.ts +0 -10
  192. package/dist/console/routes/traces/route.js +0 -39
  193. package/dist/console/routes/tree.d.ts +0 -153
  194. package/dist/console/routes/tree.js +0 -29
  195. package/dist/console/ui/Errors.d.ts +0 -4
  196. package/dist/console/ui/Errors.js +0 -15
  197. package/dist/console/ui/Fibers.d.ts +0 -24
  198. package/dist/console/ui/Fibers.js +0 -121
  199. package/dist/console/ui/Git.d.ts +0 -20
  200. package/dist/console/ui/Git.js +0 -95
  201. package/dist/console/ui/Logs.d.ts +0 -4
  202. package/dist/console/ui/Logs.js +0 -25
  203. package/dist/console/ui/Metrics.d.ts +0 -4
  204. package/dist/console/ui/Metrics.js +0 -26
  205. package/dist/console/ui/Routes.d.ts +0 -8
  206. package/dist/console/ui/Routes.js +0 -70
  207. package/dist/console/ui/Services.d.ts +0 -10
  208. package/dist/console/ui/Services.js +0 -246
  209. package/dist/console/ui/Shell.d.ts +0 -10
  210. package/dist/console/ui/Shell.js +0 -7
  211. package/dist/console/ui/System.d.ts +0 -4
  212. package/dist/console/ui/System.js +0 -35
  213. package/dist/console/ui/Traces.d.ts +0 -12
  214. package/dist/console/ui/Traces.js +0 -179
  215. package/dist/datastar/actions/fetch.d.ts +0 -30
  216. package/dist/datastar/actions/fetch.js +0 -403
  217. package/dist/datastar/actions/peek.d.ts +0 -1
  218. package/dist/datastar/actions/peek.js +0 -13
  219. package/dist/datastar/actions/setAll.d.ts +0 -1
  220. package/dist/datastar/actions/setAll.js +0 -12
  221. package/dist/datastar/actions/toggleAll.d.ts +0 -1
  222. package/dist/datastar/actions/toggleAll.js +0 -12
  223. package/dist/datastar/attributes/attr.d.ts +0 -1
  224. package/dist/datastar/attributes/attr.js +0 -48
  225. package/dist/datastar/attributes/bind.d.ts +0 -1
  226. package/dist/datastar/attributes/bind.js +0 -175
  227. package/dist/datastar/attributes/class.d.ts +0 -1
  228. package/dist/datastar/attributes/class.js +0 -47
  229. package/dist/datastar/attributes/computed.d.ts +0 -1
  230. package/dist/datastar/attributes/computed.js +0 -26
  231. package/dist/datastar/attributes/effect.d.ts +0 -1
  232. package/dist/datastar/attributes/effect.js +0 -9
  233. package/dist/datastar/attributes/indicator.d.ts +0 -1
  234. package/dist/datastar/attributes/indicator.js +0 -30
  235. package/dist/datastar/attributes/init.d.ts +0 -1
  236. package/dist/datastar/attributes/init.js +0 -26
  237. package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
  238. package/dist/datastar/attributes/jsonSignals.js +0 -30
  239. package/dist/datastar/attributes/on.d.ts +0 -1
  240. package/dist/datastar/attributes/on.js +0 -78
  241. package/dist/datastar/attributes/onIntersect.d.ts +0 -1
  242. package/dist/datastar/attributes/onIntersect.js +0 -53
  243. package/dist/datastar/attributes/onInterval.d.ts +0 -1
  244. package/dist/datastar/attributes/onInterval.js +0 -30
  245. package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
  246. package/dist/datastar/attributes/onSignalPatch.js +0 -42
  247. package/dist/datastar/attributes/ref.d.ts +0 -1
  248. package/dist/datastar/attributes/ref.js +0 -10
  249. package/dist/datastar/attributes/show.d.ts +0 -1
  250. package/dist/datastar/attributes/show.js +0 -31
  251. package/dist/datastar/attributes/signals.d.ts +0 -1
  252. package/dist/datastar/attributes/signals.js +0 -17
  253. package/dist/datastar/attributes/style.d.ts +0 -1
  254. package/dist/datastar/attributes/style.js +0 -50
  255. package/dist/datastar/attributes/text.d.ts +0 -1
  256. package/dist/datastar/attributes/text.js +0 -26
  257. package/dist/datastar/engine.d.ts +0 -162
  258. package/dist/datastar/engine.js +0 -999
  259. package/dist/datastar/happydom.d.ts +0 -1
  260. package/dist/datastar/happydom.js +0 -8
  261. package/dist/datastar/index.d.ts +0 -24
  262. package/dist/datastar/index.js +0 -24
  263. package/dist/datastar/load.d.ts +0 -24
  264. package/dist/datastar/load.js +0 -24
  265. package/dist/datastar/utils.d.ts +0 -51
  266. package/dist/datastar/utils.js +0 -202
  267. package/dist/datastar/watchers/patchElements.d.ts +0 -1
  268. package/dist/datastar/watchers/patchElements.js +0 -399
  269. package/dist/datastar/watchers/patchSignals.d.ts +0 -1
  270. package/dist/datastar/watchers/patchSignals.js +0 -14
  271. package/dist/experimental/EncryptedCookies.d.ts +0 -48
  272. package/dist/experimental/EncryptedCookies.js +0 -212
  273. package/dist/experimental/SseHttpResponse.d.ts +0 -7
  274. package/dist/experimental/SseHttpResponse.js +0 -28
  275. package/dist/experimental/index.d.ts +0 -1
  276. package/dist/experimental/index.js +0 -1
  277. package/dist/hyper/Hyper.d.ts +0 -25
  278. package/dist/hyper/Hyper.js +0 -23
  279. package/dist/hyper/HyperHtml.d.ts +0 -23
  280. package/dist/hyper/HyperHtml.js +0 -150
  281. package/dist/hyper/HyperHtml.test.d.ts +0 -1
  282. package/dist/hyper/HyperHtml.test.js +0 -197
  283. package/dist/hyper/HyperNode.d.ts +0 -14
  284. package/dist/hyper/HyperNode.js +0 -11
  285. package/dist/hyper/HyperRoute.d.ts +0 -8
  286. package/dist/hyper/HyperRoute.js +0 -32
  287. package/dist/hyper/HyperRoute.test.d.ts +0 -1
  288. package/dist/hyper/HyperRoute.test.js +0 -83
  289. package/dist/hyper/html.d.ts +0 -11
  290. package/dist/hyper/html.js +0 -30
  291. package/dist/hyper/index.d.ts +0 -6
  292. package/dist/hyper/index.js +0 -5
  293. package/dist/hyper/jsx-runtime.d.ts +0 -7
  294. package/dist/hyper/jsx-runtime.js +0 -8
  295. package/dist/index.d.ts +0 -8
  296. package/dist/index.js +0 -8
  297. package/dist/inference_check.d.ts +0 -1
  298. package/dist/inference_check.js +0 -15
  299. package/dist/lint/plugin.d.ts +0 -86
  300. package/dist/lint/plugin.js +0 -341
  301. package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
  302. package/dist/middlewares/BasicAuthMiddleware.js +0 -22
  303. package/dist/middlewares/index.d.ts +0 -1
  304. package/dist/middlewares/index.js +0 -1
  305. package/dist/node/Effectify.d.ts +0 -209
  306. package/dist/node/Effectify.js +0 -19
  307. package/dist/node/FileSystem.d.ts +0 -7
  308. package/dist/node/FileSystem.js +0 -420
  309. package/dist/node/NodeFileSystem.d.ts +0 -7
  310. package/dist/node/NodeFileSystem.js +0 -410
  311. package/dist/node/NodeUtils.d.ts +0 -2
  312. package/dist/node/NodeUtils.js +0 -20
  313. package/dist/node/PlatformError.d.ts +0 -46
  314. package/dist/node/PlatformError.js +0 -43
  315. package/dist/node/Utils.d.ts +0 -1
  316. package/dist/node/Utils.js +0 -19
  317. package/dist/repro_fail.d.ts +0 -1
  318. package/dist/repro_fail.js +0 -14
  319. package/dist/sql/bun/index.d.ts +0 -3
  320. package/dist/sql/bun/index.js +0 -75
  321. package/dist/sql/mssql/docker.d.ts +0 -2
  322. package/dist/sql/mssql/docker.js +0 -67
  323. package/dist/sql/mssql/index.d.ts +0 -21
  324. package/dist/sql/mssql/index.js +0 -113
  325. package/dist/testing/TestHttpClient.d.ts +0 -13
  326. package/dist/testing/TestHttpClient.js +0 -68
  327. package/dist/testing/TestLogger.d.ts +0 -13
  328. package/dist/testing/TestLogger.js +0 -32
  329. package/dist/testing/index.d.ts +0 -2
  330. package/dist/testing/index.js +0 -2
  331. package/dist/testing/utils.d.ts +0 -9
  332. package/dist/testing/utils.js +0 -39
  333. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
  334. package/dist/x/cloudflare/CloudflareTunnel.js +0 -30
  335. package/dist/x/cloudflare/index.d.ts +0 -1
  336. package/dist/x/cloudflare/index.js +0 -1
  337. package/dist/x/datastar/Datastar.d.ts +0 -6
  338. package/dist/x/datastar/Datastar.js +0 -47
  339. package/dist/x/datastar/index.d.ts +0 -1
  340. package/dist/x/datastar/index.js +0 -1
  341. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
  342. package/dist/x/tailscale/TailscaleTunnel.js +0 -68
  343. package/dist/x/tailscale/index.d.ts +0 -1
  344. package/dist/x/tailscale/index.js +0 -1
  345. package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
  346. package/dist/x/tailwind/TailwindPlugin.js +0 -219
  347. package/dist/x/tailwind/compile.d.ts +0 -19
  348. package/dist/x/tailwind/compile.js +0 -154
  349. package/dist/x/tailwind/plugin.d.ts +0 -2
  350. package/dist/x/tailwind/plugin.js +0 -15
  351. /package/src/{Sql.ts → sql/Sql.ts} +0 -0
@@ -1,100 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Pipeable from "effect/Pipeable";
3
- import * as Schema from "effect/Schema";
4
- declare const CommanderError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
5
- readonly _tag: "CommanderError";
6
- } & Readonly<A>;
7
- export declare class CommanderError extends CommanderError_base<{
8
- message: string;
9
- cause?: unknown;
10
- }> {
11
- }
12
- declare const TypeId: unique symbol;
13
- type KebabToCamel<S extends string> = S extends `${infer First}-${infer Rest}` ? `${First}${KebabToCamel<Capitalize<Rest>>}` : S;
14
- type StripPrefix<S extends string> = S extends `--${infer Name}` ? Name : S extends `-${infer Name}` ? Name : S;
15
- type OptionNameToCamelCase<S extends string> = KebabToCamel<StripPrefix<S>>;
16
- export interface OptionBuilder<A = any, Name extends string = string> {
17
- readonly _tag: "OptionBuilder";
18
- readonly name: Name;
19
- readonly long: Name;
20
- readonly short?: string;
21
- readonly description: string;
22
- readonly schema?: Schema.Schema<A, any>;
23
- readonly defaultValue?: A;
24
- }
25
- type OptionBuilderWithSchema<A, Name extends string> = Omit<OptionBuilder<A, Name>, "schema" | "defaultValue"> & {
26
- readonly schema: Schema.Schema<A, any>;
27
- readonly defaultValue?: A;
28
- };
29
- export declare const option: <const Long extends `--${string}`, const Short extends `-${string}` | undefined = undefined>(long: Long, short?: Short) => {
30
- schema<A, I extends string = string>(schema: Schema.Schema<A, I>): OptionBuilderWithSchema<A, Long>;
31
- description(desc: string): {
32
- schema<A, I_1 extends string = string>(schema: Schema.Schema<A, I_1>): OptionBuilderWithSchema<A, Long>;
33
- default<A>(value: A): {
34
- schema<A2 extends A, I_2 extends string = string>(schema: Schema.Schema<A2, I_2>): OptionBuilderWithSchema<A2, Long>;
35
- };
36
- };
37
- default<A>(value: A): {
38
- schema<A2 extends A, I_3 extends string = string>(schema: Schema.Schema<A2, I_3>): OptionBuilderWithSchema<A2, Long>;
39
- description(desc: string): {
40
- schema<A2 extends A, I_4 extends string = string>(schema: Schema.Schema<A2, I_4>): OptionBuilderWithSchema<A2, Long>;
41
- };
42
- };
43
- };
44
- export type OptionsMap = Record<string, OptionBuilder<any, any>>;
45
- type ExtractOptionsFromBuilders<Opts extends OptionsMap> = {
46
- [K in keyof Opts as Opts[K] extends OptionBuilder<any, infer Name> ? OptionNameToCamelCase<Name> : never]: Opts[K] extends OptionBuilder<infer A, any> ? A : never;
47
- };
48
- export type ExtractOptionValues<Opts extends OptionsMap> = ExtractOptionsFromBuilders<Opts>;
49
- export interface SubcommandDef<Handled extends boolean = boolean> {
50
- readonly _tag: "SubcommandDef";
51
- readonly command: CommanderSet<any, any, Handled>;
52
- }
53
- type Extend<S, NewOpts extends OptionsMap, NewSubs extends ReadonlyArray<SubcommandDef> = [], Handled extends boolean = false> = S extends CommanderSet<infer Opts, infer Subs, infer _H> ? CommanderSet<Opts & NewOpts, [...Subs, ...NewSubs], Handled> : CommanderSet<NewOpts, NewSubs, Handled>;
54
- type CommanderBuilder = {
55
- option: typeof optionMethod;
56
- optionHelp: typeof optionHelp;
57
- optionVersion: typeof optionVersion;
58
- subcommand: typeof subcommand;
59
- handle: typeof handle;
60
- };
61
- export type CommanderSet<Opts extends OptionsMap = {}, Subcommands extends ReadonlyArray<SubcommandDef> = [], Handled extends boolean = false> = Pipeable.Pipeable & CommanderSet.Instance<Opts, Subcommands, Handled> & {
62
- [TypeId]: typeof TypeId;
63
- } & CommanderBuilder;
64
- export declare namespace CommanderSet {
65
- type Instance<Opts extends OptionsMap = {}, Subcommands extends ReadonlyArray<SubcommandDef> = [], Handled extends boolean = false> = {
66
- readonly name: string;
67
- readonly description?: string;
68
- readonly version?: string;
69
- readonly options: Opts;
70
- readonly subcommands: Subcommands;
71
- readonly handler?: Handled extends true ? (args: ExtractOptionValues<Opts>) => Effect.Effect<void> : never;
72
- };
73
- type Default = CommanderSet<{}, [], false>;
74
- type Proto = {
75
- [TypeId]: typeof TypeId;
76
- pipe(): any;
77
- } & CommanderBuilder;
78
- }
79
- declare const optionMethod: <S, Opt extends OptionBuilder<any, any>>(this: S, opt: Opt) => Extend<S, { [K in Opt["name"] as OptionNameToCamelCase<K>]: Opt; }>;
80
- export declare const optionHelp: <S>(this: S) => Extend<S, {
81
- help: OptionBuilder<boolean, "--help">;
82
- }>;
83
- export declare const optionVersion: <S>(this: S) => Extend<S, {
84
- version: OptionBuilder<boolean, "--version">;
85
- }>;
86
- export declare const subcommand: <S, SubOpts extends OptionsMap, SubSubs extends ReadonlyArray<SubcommandDef>, SubHandled extends boolean>(this: S, cmd: CommanderSet<SubOpts, SubSubs, SubHandled>) => Extend<S, {}, [SubcommandDef<SubHandled>]>;
87
- export declare const handle: <Opts extends OptionsMap, Subs extends ReadonlyArray<SubcommandDef>>(this: CommanderSet<Opts, Subs, false>, handler: (args: ExtractOptionValues<Opts>) => Effect.Effect<void>) => CommanderSet<Opts, Subs, true>;
88
- export declare const make: <const Name extends string>(config: {
89
- readonly name: Name;
90
- readonly description?: string;
91
- readonly version?: string;
92
- }) => CommanderSet<{}, [], false>;
93
- export declare function isCommanderSet(input: unknown): input is CommanderSet<any, any, any>;
94
- export declare const parse: <Opts extends OptionsMap, Subs extends ReadonlyArray<SubcommandDef>, Handled extends boolean>(cmd: CommanderSet<Opts, Subs, Handled>, args: ReadonlyArray<string>) => Effect.Effect<ExtractOptionValues<Opts>, CommanderError>;
95
- export declare const runMain: <Opts extends OptionsMap, Subs extends ReadonlyArray<SubcommandDef>>(cmd: CommanderSet<Opts, Subs, true>) => Effect.Effect<void, CommanderError>;
96
- export declare const help: <Opts extends OptionsMap, Subs extends ReadonlyArray<SubcommandDef>, Handled extends boolean>(cmd: CommanderSet<Opts, Subs, Handled>) => string;
97
- export declare const NumberFromString: typeof Schema.NumberFromString;
98
- export declare const choice: <const Choices extends ReadonlyArray<string>>(choices: Choices) => Schema.Schema<Choices[number], string>;
99
- export declare const repeatable: <A>(schema: Schema.Schema<A, string>) => Schema.Schema<ReadonlyArray<A>, string>;
100
- export {};
package/dist/Commander.js DELETED
@@ -1,326 +0,0 @@
1
- import * as Data from "effect/Data";
2
- import * as Effect from "effect/Effect";
3
- import * as Pipeable from "effect/Pipeable";
4
- import * as Predicate from "effect/Predicate";
5
- import * as Schema from "effect/Schema";
6
- export class CommanderError extends Data.TaggedError("CommanderError") {
7
- }
8
- const TypeId = Symbol.for("effect-start/Commander");
9
- export const option = (long, short) => {
10
- const longName = long;
11
- const shortName = short ? short.slice(1) : undefined;
12
- return {
13
- schema: (schema) => ({
14
- _tag: "OptionBuilder",
15
- name: longName,
16
- long: longName,
17
- short: shortName,
18
- description: "",
19
- schema,
20
- }),
21
- description: (desc) => ({
22
- schema: (schema) => ({
23
- _tag: "OptionBuilder",
24
- name: longName,
25
- long: longName,
26
- short: shortName,
27
- description: desc,
28
- schema,
29
- }),
30
- default: (value) => ({
31
- schema: (schema) => ({
32
- _tag: "OptionBuilder",
33
- name: longName,
34
- long: longName,
35
- short: shortName,
36
- description: desc,
37
- schema,
38
- defaultValue: value,
39
- }),
40
- }),
41
- }),
42
- default: (value) => ({
43
- schema: (schema) => ({
44
- _tag: "OptionBuilder",
45
- name: longName,
46
- long: longName,
47
- short: shortName,
48
- description: "",
49
- schema,
50
- defaultValue: value,
51
- }),
52
- description: (desc) => ({
53
- schema: (schema) => ({
54
- _tag: "OptionBuilder",
55
- name: longName,
56
- long: longName,
57
- short: shortName,
58
- description: desc,
59
- schema,
60
- defaultValue: value,
61
- }),
62
- }),
63
- }),
64
- };
65
- };
66
- const optionMethod = function (opt) {
67
- const base = (this && typeof this === "object" ? this : {});
68
- const baseName = base.name ?? "";
69
- const baseOptions = base.options ?? {};
70
- const baseSubcommands = base.subcommands ?? [];
71
- const baseDescription = base.description;
72
- const baseVersion = base.version;
73
- const camelKey = kebabToCamel(stripPrefix(opt.long));
74
- return makeSet({
75
- name: baseName,
76
- description: baseDescription,
77
- version: baseVersion,
78
- options: { ...baseOptions, [camelKey]: opt },
79
- subcommands: baseSubcommands,
80
- });
81
- };
82
- export const optionHelp = function () {
83
- const base = (this && typeof this === "object" ? this : {});
84
- const baseName = base.name ?? "";
85
- const baseOptions = base.options ?? {};
86
- const baseSubcommands = base.subcommands ?? [];
87
- const baseDescription = base.description;
88
- const baseVersion = base.version;
89
- const helpOption = {
90
- _tag: "OptionBuilder",
91
- name: "--help",
92
- long: "--help",
93
- short: "h",
94
- description: "Show help information",
95
- defaultValue: false,
96
- };
97
- return makeSet({
98
- name: baseName,
99
- description: baseDescription,
100
- version: baseVersion,
101
- options: { ...baseOptions, help: helpOption },
102
- subcommands: baseSubcommands,
103
- });
104
- };
105
- export const optionVersion = function () {
106
- const base = (this && typeof this === "object" ? this : {});
107
- const baseName = base.name ?? "";
108
- const baseOptions = base.options ?? {};
109
- const baseSubcommands = base.subcommands ?? [];
110
- const baseDescription = base.description;
111
- const baseVersion = base.version;
112
- const versionOption = {
113
- _tag: "OptionBuilder",
114
- name: "--version",
115
- long: "--version",
116
- short: "V",
117
- description: "Show version information",
118
- defaultValue: false,
119
- };
120
- return makeSet({
121
- name: baseName,
122
- description: baseDescription,
123
- version: baseVersion,
124
- options: { ...baseOptions, version: versionOption },
125
- subcommands: baseSubcommands,
126
- });
127
- };
128
- export const subcommand = function (cmd) {
129
- const base = (this && typeof this === "object" ? this : {});
130
- const baseName = base.name ?? "";
131
- const baseOptions = base.options ?? {};
132
- const baseSubcommands = base.subcommands ?? [];
133
- const baseDescription = base.description;
134
- const baseVersion = base.version;
135
- const subDef = {
136
- _tag: "SubcommandDef",
137
- command: cmd,
138
- };
139
- return makeSet({
140
- name: baseName,
141
- description: baseDescription,
142
- version: baseVersion,
143
- options: baseOptions,
144
- subcommands: [...baseSubcommands, subDef],
145
- });
146
- };
147
- export const handle = function (handler) {
148
- const base = this;
149
- return makeSet({
150
- name: base.name,
151
- description: base.description,
152
- version: base.version,
153
- options: base.options,
154
- subcommands: base.subcommands,
155
- handler,
156
- });
157
- };
158
- export const make = (config) => makeSet({
159
- name: config.name,
160
- description: config.description,
161
- version: config.version,
162
- options: {},
163
- subcommands: [],
164
- });
165
- const CommanderProto = {
166
- [TypeId]: TypeId,
167
- option: optionMethod,
168
- optionHelp,
169
- optionVersion,
170
- subcommand,
171
- handle,
172
- pipe() {
173
- return Pipeable.pipeArguments(this, arguments);
174
- },
175
- };
176
- function makeSet(config) {
177
- return Object.assign(Object.create(CommanderProto), config);
178
- }
179
- export function isCommanderSet(input) {
180
- return Predicate.hasProperty(input, TypeId);
181
- }
182
- const kebabToCamel = (str) => {
183
- return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
184
- };
185
- const stripPrefix = (str) => {
186
- if (str.startsWith("--"))
187
- return str.slice(2);
188
- if (str.startsWith("-"))
189
- return str.slice(1);
190
- return str;
191
- };
192
- const parseRawArgs = (args) => Effect.gen(function* () {
193
- const flags = {};
194
- const options = {};
195
- const positional = [];
196
- let i = 0;
197
- while (i < args.length) {
198
- const arg = args[i];
199
- if (arg === "--") {
200
- positional.push(...args.slice(i + 1));
201
- break;
202
- }
203
- if (arg.startsWith("--")) {
204
- const equalIndex = arg.indexOf("=");
205
- if (equalIndex !== -1) {
206
- const key = arg.slice(2, equalIndex);
207
- const value = arg.slice(equalIndex + 1);
208
- options[key] = value;
209
- }
210
- else {
211
- const key = arg.slice(2);
212
- if (i + 1 < args.length && !args[i + 1].startsWith("-")) {
213
- options[key] = args[i + 1];
214
- i++;
215
- }
216
- else {
217
- flags[key] = true;
218
- }
219
- }
220
- }
221
- else if (arg.startsWith("-") && arg.length > 1) {
222
- const chars = arg.slice(1);
223
- for (let j = 0; j < chars.length; j++) {
224
- const char = chars[j];
225
- if (j === chars.length - 1 && i + 1 < args.length && !args[i + 1].startsWith("-")) {
226
- options[char] = args[i + 1];
227
- i++;
228
- }
229
- else {
230
- flags[char] = true;
231
- }
232
- }
233
- }
234
- else {
235
- positional.push(arg);
236
- }
237
- i++;
238
- }
239
- return { flags, options, positional };
240
- });
241
- export const parse = (cmd, args) => Effect.gen(function* () {
242
- const parsed = yield* parseRawArgs(args);
243
- const result = {};
244
- for (const optBuilder of Object.values(cmd.options)) {
245
- const longName = stripPrefix(optBuilder.long);
246
- const shortName = optBuilder.short;
247
- const longMatch = parsed.options[longName] || parsed.flags[longName];
248
- const shortMatch = shortName
249
- ? parsed.options[shortName] || parsed.flags[shortName]
250
- : undefined;
251
- const rawValue = longMatch ?? shortMatch;
252
- const camelKey = kebabToCamel(stripPrefix(optBuilder.long));
253
- if (rawValue !== undefined) {
254
- if (typeof rawValue === "boolean") {
255
- result[camelKey] = rawValue;
256
- }
257
- else if (optBuilder.schema) {
258
- const decoded = yield* Schema.decode(optBuilder.schema)(rawValue).pipe(Effect.mapError((error) => new CommanderError({
259
- message: `Invalid value for option ${optBuilder.long}: ${error.message}`,
260
- cause: error,
261
- })));
262
- result[camelKey] = decoded;
263
- }
264
- else {
265
- result[camelKey] = rawValue;
266
- }
267
- }
268
- else if (optBuilder.defaultValue !== undefined) {
269
- result[camelKey] = optBuilder.defaultValue;
270
- }
271
- }
272
- return result;
273
- });
274
- export const runMain = (cmd) => Effect.gen(function* () {
275
- const args = typeof process !== "undefined" ? process.argv.slice(2) : [];
276
- const parsedOptions = yield* parse(cmd, args);
277
- if (Predicate.hasProperty(parsedOptions, "help") && parsedOptions.help) {
278
- console.log(generateHelp(cmd));
279
- return;
280
- }
281
- if (Predicate.hasProperty(parsedOptions, "version") && parsedOptions.version && cmd.version) {
282
- console.log(`${cmd.name} v${cmd.version}`);
283
- return;
284
- }
285
- if (cmd.handler) {
286
- yield* cmd.handler(parsedOptions);
287
- }
288
- });
289
- const generateHelp = (cmd) => {
290
- const lines = [];
291
- if (cmd.description) {
292
- lines.push(cmd.description);
293
- lines.push("");
294
- }
295
- lines.push(`Usage: ${cmd.name} [options]`);
296
- lines.push("");
297
- const optionsArray = Object.values(cmd.options);
298
- if (optionsArray.length > 0) {
299
- lines.push("Options:");
300
- for (const opt of optionsArray) {
301
- const short = opt.short ? `-${opt.short}, ` : " ";
302
- const long = opt.long;
303
- const hasValue = opt.schema !== undefined;
304
- const name = hasValue ? `${long} <value>` : long;
305
- lines.push(` ${short}${name.padEnd(20)} ${opt.description}`);
306
- }
307
- lines.push("");
308
- }
309
- if (cmd.subcommands.length > 0) {
310
- lines.push("Commands:");
311
- for (const sub of cmd.subcommands) {
312
- const subCmd = sub.command;
313
- lines.push(` ${subCmd.name.padEnd(20)} ${subCmd.description || ""}`);
314
- }
315
- lines.push("");
316
- }
317
- return lines.join("\n");
318
- };
319
- export const help = (cmd) => generateHelp(cmd);
320
- export const NumberFromString = Schema.NumberFromString;
321
- export const choice = (choices) => Schema.Literal(...choices);
322
- export const repeatable = (schema) => Schema.transform(Schema.String, Schema.Array(Schema.String), {
323
- strict: true,
324
- decode: (s) => s.split(",").map((part) => part.trim()),
325
- encode: (arr) => arr.join(","),
326
- }).pipe(Schema.compose(Schema.Array(schema)));
@@ -1,12 +0,0 @@
1
- /**
2
- * RFC 7231 Content Negotiation compatible with Express/Node.js ecosystem.
3
- * Based on {@link https://github.com/jshttp/negotiator}
4
- */
5
- export declare function media(accept: string, available?: Array<string>): Array<string>;
6
- export declare function language(accept: string, available?: Array<string>): Array<string>;
7
- export declare function encoding(accept: string, available?: Array<string>): Array<string>;
8
- export declare function charset(accept: string, available?: Array<string>): Array<string>;
9
- export declare function headerMedia(headers: Headers, available?: Array<string>): Array<string>;
10
- export declare function headerLanguage(headers: Headers, available?: Array<string>): Array<string>;
11
- export declare function headerEncoding(headers: Headers, available?: Array<string>): Array<string>;
12
- export declare function headerCharset(headers: Headers, available?: Array<string>): Array<string>;