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,6 +0,0 @@
1
- export * as Hyper from "./Hyper.ts";
2
- export { html } from "./html.ts";
3
- export type { HtmlString, HtmlValue } from "./html.ts";
4
- export * as HyperHtml from "./HyperHtml.ts";
5
- export * as HyperNode from "./HyperNode.ts";
6
- export * as HyperRoute from "./HyperRoute.ts";
@@ -1,5 +0,0 @@
1
- export * as Hyper from "./Hyper.js";
2
- export { html } from "./html.js";
3
- export * as HyperHtml from "./HyperHtml.js";
4
- export * as HyperNode from "./HyperNode.js";
5
- export * as HyperRoute from "./HyperRoute.js";
@@ -1,7 +0,0 @@
1
- import * as HyperNode from "./HyperNode.ts";
2
- import type { JSX } from "./jsx.d.ts";
3
- declare function Fragment(props: {
4
- children: JSX.Element;
5
- }): HyperNode.HyperNode;
6
- declare function jsx<T extends HyperNode.Type>(type: T, props: T extends string ? HyperNode.Props : T extends (props: infer P) => any ? P : never): HyperNode.HyperNode;
7
- export { Fragment, type JSX, jsx, jsx as jsxDEV, jsx as jsxs };
@@ -1,8 +0,0 @@
1
- import * as HyperNode from "./HyperNode.js";
2
- function Fragment(props) {
3
- return props.children;
4
- }
5
- function jsx(type, props) {
6
- return HyperNode.make(type, props);
7
- }
8
- export { Fragment, jsx, jsx as jsxDEV, jsx as jsxs };
package/dist/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * as Bundle from "./bundler/Bundle.ts";
2
- export * as Development from "./Development.ts";
3
- export * as Entity from "./Entity.ts";
4
- export * as FileRouter from "./FileRouter.ts";
5
- export * as Route from "./Route.ts";
6
- export * as Start from "./Start.ts";
7
- export * as System from "./System.ts";
8
- export * as Unique from "./Unique.ts";
package/dist/index.js DELETED
@@ -1,8 +0,0 @@
1
- export * as Bundle from "./bundler/Bundle.js";
2
- export * as Development from "./Development.js";
3
- export * as Entity from "./Entity.js";
4
- export * as FileRouter from "./FileRouter.js";
5
- export * as Route from "./Route.js";
6
- export * as Start from "./Start.js";
7
- export * as System from "./System.js";
8
- export * as Unique from "./Unique.js";
@@ -1 +0,0 @@
1
- export {};
@@ -1,15 +0,0 @@
1
- import { Effect, Context } from "effect";
2
- import * as Route from "./RouteBody";
3
- const ServiceA = Context.GenericTag("ServiceA");
4
- const ServiceB = Context.GenericTag("ServiceB");
5
- const handler = function* () {
6
- yield* ServiceA;
7
- yield* ServiceB;
8
- return "ok";
9
- };
10
- // Check 2: What does 'handle' infer?
11
- const resultHandler = Route.handle(handler);
12
- // Let's see if we can provide ServiceA and ServiceB and get a runnable effect (R=never)
13
- const provided = Effect.provideService(Effect.provideService(resultHandler({}, () => null), ServiceA, { status: 200 }), ServiceB, { status: 200 });
14
- const runnable = (e) => { };
15
- runnable(provided);
@@ -1,86 +0,0 @@
1
- declare namespace _default {
2
- namespace meta {
3
- let name: string;
4
- let version: string;
5
- }
6
- let rules: {
7
- "prefer-namespace-import": {
8
- meta: {
9
- type: string;
10
- docs: {
11
- description: string;
12
- };
13
- fixable: string;
14
- hasSuggestions: boolean;
15
- schema: never[];
16
- messages: {
17
- preferNamespace: string;
18
- };
19
- };
20
- create(context: any): {
21
- ImportDeclaration(node: any): void;
22
- };
23
- };
24
- "test-space-around": {
25
- meta: {
26
- type: string;
27
- docs: {
28
- description: string;
29
- };
30
- fixable: string;
31
- schema: never[];
32
- messages: {
33
- requireBlankBefore: string;
34
- requireBlankAfter: string;
35
- };
36
- };
37
- create(context: any): {
38
- Program?: undefined;
39
- BlockStatement?: undefined;
40
- } | {
41
- Program(node: any): void;
42
- BlockStatement(node: any): void;
43
- };
44
- };
45
- "export-default-before-functions": {
46
- meta: {
47
- type: string;
48
- docs: {
49
- description: string;
50
- };
51
- schema: never[];
52
- messages: {
53
- defaultAfterFunction: string;
54
- };
55
- };
56
- create(context: any): {
57
- Program(node: any): void;
58
- };
59
- };
60
- "test-assertion-newline": {
61
- meta: {
62
- type: string;
63
- docs: {
64
- description: string;
65
- };
66
- fixable: string;
67
- schema: never[];
68
- messages: {
69
- requireNewline: string;
70
- requireBlankBefore: string;
71
- requireBlankAfter: string;
72
- };
73
- };
74
- create(context: any): {
75
- ExpressionStatement?: undefined;
76
- Program?: undefined;
77
- BlockStatement?: undefined;
78
- } | {
79
- ExpressionStatement(node: any): void;
80
- Program(node: any): void;
81
- BlockStatement(node: any): void;
82
- };
83
- };
84
- };
85
- }
86
- export default _default;
@@ -1,341 +0,0 @@
1
- /**
2
- * @see https://oxc.rs/docs/guide/usage/linter/js-plugins.html#using-js-plugins
3
- */
4
- const forceNamespace = new Set(["bun:test"]);
5
- export default {
6
- meta: {
7
- name: "effect-start",
8
- version: "0.1.0",
9
- },
10
- rules: {
11
- "prefer-namespace-import": {
12
- meta: {
13
- type: "suggestion",
14
- docs: {
15
- description: "Enforce namespace imports for modules with capitalized base names or specific forced modules",
16
- },
17
- fixable: "code",
18
- hasSuggestions: true,
19
- schema: [],
20
- messages: {
21
- preferNamespace: 'Use namespace import for module "{{source}}": import {{typePrefix}}* as {{baseName}} from "{{source}}"',
22
- },
23
- },
24
- create(context) {
25
- return {
26
- ImportDeclaration(node) {
27
- const source = node.source.value;
28
- if (typeof source !== "string")
29
- return;
30
- const baseName = getBaseName(source);
31
- if (!baseName)
32
- return;
33
- const forced = forceNamespace.has(source);
34
- if (!forced && !isCapitalized(baseName))
35
- return;
36
- // Already a namespace import (with or without type-only)
37
- if (node.specifiers.length === 1 &&
38
- node.specifiers[0].type === "ImportNamespaceSpecifier") {
39
- return;
40
- }
41
- // Skip if there are no specifiers (side-effect import)
42
- if (node.specifiers.length === 0)
43
- return;
44
- // Skip if it's only a default import (not applicable for forced modules)
45
- if (!forced) {
46
- const hasNamedImports = node.specifiers.some((s) => s.type === "ImportSpecifier");
47
- if (!hasNamedImports)
48
- return;
49
- }
50
- const typePrefix = node.importKind === "type" ? "type " : "";
51
- context.report({
52
- node,
53
- messageId: "preferNamespace",
54
- data: { source, baseName, typePrefix },
55
- fix(fixer) {
56
- return fixer.replaceText(node, `import ${typePrefix}* as ${baseName} from "${source}"`);
57
- },
58
- });
59
- },
60
- };
61
- },
62
- },
63
- "test-space-around": {
64
- meta: {
65
- type: "layout",
66
- docs: {
67
- description: "Enforce blank lines around test calls (test.describe, test.it, etc.)",
68
- },
69
- fixable: "whitespace",
70
- schema: [],
71
- messages: {
72
- requireBlankBefore: "Test call should be preceded by a blank line",
73
- requireBlankAfter: "Test call should be followed by a blank line",
74
- },
75
- },
76
- create(context) {
77
- const filename = context.filename || context.getFilename();
78
- if (!filename.endsWith(".test.ts") && !filename.endsWith(".test.tsx")) {
79
- return {};
80
- }
81
- function isTestCall(node) {
82
- return (node &&
83
- node.type === "ExpressionStatement" &&
84
- node.expression.type === "CallExpression" &&
85
- node.expression.callee.type === "MemberExpression" &&
86
- node.expression.callee.object.type === "Identifier" &&
87
- node.expression.callee.object.name === "test");
88
- }
89
- function checkBlankLines(siblings) {
90
- const sourceCode = context.sourceCode || context.getSourceCode();
91
- for (let i = 0; i < siblings.length; i++) {
92
- const node = siblings[i];
93
- if (!isTestCall(node))
94
- continue;
95
- const prev = siblings[i - 1];
96
- const next = siblings[i + 1];
97
- if (prev) {
98
- if (node.loc.start.line - prev.loc.end.line < 2) {
99
- context.report({
100
- node,
101
- messageId: "requireBlankBefore",
102
- fix(fixer) {
103
- return fixer.insertTextAfter(sourceCode.getLastToken(prev), "\n");
104
- },
105
- });
106
- }
107
- }
108
- if (next) {
109
- if (next.loc.start.line - node.loc.end.line < 2) {
110
- context.report({
111
- node,
112
- messageId: "requireBlankAfter",
113
- fix(fixer) {
114
- return fixer.insertTextAfter(sourceCode.getLastToken(node), "\n");
115
- },
116
- });
117
- }
118
- }
119
- }
120
- }
121
- return {
122
- Program(node) {
123
- checkBlankLines(node.body);
124
- },
125
- BlockStatement(node) {
126
- checkBlankLines(node.body);
127
- },
128
- };
129
- },
130
- },
131
- // this doens't work reliably and may cause runtime errors
132
- "export-default-before-functions": {
133
- meta: {
134
- type: "suggestion",
135
- docs: {
136
- description: "Enforce export default appears before any function declarations",
137
- },
138
- schema: [],
139
- messages: {
140
- defaultAfterFunction: "export default should appear before function declarations",
141
- },
142
- },
143
- create(context) {
144
- return {
145
- Program(node) {
146
- let seenFunction = false;
147
- for (const stmt of node.body) {
148
- if (!seenFunction && isFunction(stmt)) {
149
- seenFunction = true;
150
- }
151
- if (seenFunction && stmt.type === "ExportDefaultDeclaration") {
152
- context.report({
153
- node: stmt,
154
- messageId: "defaultAfterFunction",
155
- });
156
- }
157
- }
158
- },
159
- };
160
- },
161
- },
162
- "test-assertion-newline": {
163
- meta: {
164
- type: "layout",
165
- docs: {
166
- description: "Enforce newlines between chained test assertion methods (test.expect().toBe())",
167
- },
168
- fixable: "whitespace",
169
- schema: [],
170
- messages: {
171
- requireNewline: "Each chained method in a test assertion should be on its own line",
172
- requireBlankBefore: "Test assertion should be preceded by an empty line (unless preceded by another assertion)",
173
- requireBlankAfter: "Test assertion should be followed by an empty line (unless followed by another assertion)",
174
- },
175
- },
176
- create(context) {
177
- const filename = context.filename || context.getFilename();
178
- if (!filename.endsWith(".test.ts") && !filename.endsWith(".test.tsx")) {
179
- return {};
180
- }
181
- /**
182
- * Check if a call expression is rooted in test.expect or test.expectTypeOf
183
- */
184
- function isTestAssertionChain(node) {
185
- let current = node;
186
- while (current) {
187
- if (current.type === "CallExpression" && current.callee.type === "MemberExpression") {
188
- const obj = current.callee.object;
189
- // Check for test.expect(...) or test.expectTypeOf(...)
190
- if (obj.type === "CallExpression" &&
191
- obj.callee.type === "MemberExpression" &&
192
- obj.callee.object.type === "Identifier" &&
193
- obj.callee.object.name === "test" &&
194
- obj.callee.property.type === "Identifier" &&
195
- (obj.callee.property.name === "expect" ||
196
- obj.callee.property.name === "expectTypeOf")) {
197
- return true;
198
- }
199
- // Direct: test.expect(...) or test.expectTypeOf(...)
200
- if (current.callee.object.type === "Identifier" &&
201
- current.callee.object.name === "test" &&
202
- current.callee.property.type === "Identifier" &&
203
- (current.callee.property.name === "expect" ||
204
- current.callee.property.name === "expectTypeOf")) {
205
- return true;
206
- }
207
- // Walk up the chain
208
- current = current.callee.object;
209
- continue;
210
- }
211
- // Handle non-call member access like .not
212
- if (current.type === "MemberExpression") {
213
- current = current.object;
214
- continue;
215
- }
216
- break;
217
- }
218
- return false;
219
- }
220
- /**
221
- * Collect all member expressions in a chained call.
222
- */
223
- function getChainedMembers(node) {
224
- const members = [];
225
- let current = node;
226
- while (current.type === "CallExpression" && current.callee.type === "MemberExpression") {
227
- members.push(current.callee);
228
- current = current.callee.object;
229
- }
230
- return members;
231
- }
232
- function isAssertionStatement(stmt) {
233
- return (stmt &&
234
- stmt.type === "ExpressionStatement" &&
235
- stmt.expression.type === "CallExpression" &&
236
- isTestAssertionChain(stmt.expression));
237
- }
238
- function checkChainedNewlines(node) {
239
- const members = getChainedMembers(node.expression);
240
- for (const member of members) {
241
- const objectEndLine = member.object.loc.end.line;
242
- const propertyStartLine = member.property.loc.start.line;
243
- if (objectEndLine === propertyStartLine) {
244
- const sourceCode = context.sourceCode || context.getSourceCode();
245
- const dot = sourceCode.getTokenBefore(member.property);
246
- if (dot && dot.value === ".") {
247
- context.report({
248
- node: member.property,
249
- messageId: "requireNewline",
250
- fix(fixer) {
251
- const stmtStartCol = node.loc.start.column;
252
- const indent = " ".repeat(stmtStartCol + 2);
253
- return fixer.replaceTextRange([member.object.range[1], member.property.range[0]], "\n" + indent + ".");
254
- },
255
- });
256
- }
257
- }
258
- }
259
- }
260
- function checkBlankLines(siblings) {
261
- const sourceCode = context.sourceCode || context.getSourceCode();
262
- for (let i = 0; i < siblings.length; i++) {
263
- const node = siblings[i];
264
- if (!isAssertionStatement(node))
265
- continue;
266
- const prev = siblings[i - 1];
267
- const next = siblings[i + 1];
268
- if (prev && !isAssertionStatement(prev)) {
269
- if (node.loc.start.line - prev.loc.end.line < 2) {
270
- context.report({
271
- node,
272
- messageId: "requireBlankBefore",
273
- fix(fixer) {
274
- return fixer.insertTextAfter(sourceCode.getLastToken(prev), "\n");
275
- },
276
- });
277
- }
278
- }
279
- if (next && !isAssertionStatement(next)) {
280
- if (next.loc.start.line - node.loc.end.line < 2) {
281
- context.report({
282
- node,
283
- messageId: "requireBlankAfter",
284
- fix(fixer) {
285
- return fixer.insertTextAfter(sourceCode.getLastToken(node), "\n");
286
- },
287
- });
288
- }
289
- }
290
- }
291
- }
292
- return {
293
- ExpressionStatement(node) {
294
- if (node.expression.type !== "CallExpression")
295
- return;
296
- if (!isTestAssertionChain(node.expression))
297
- return;
298
- checkChainedNewlines(node);
299
- },
300
- Program(node) {
301
- checkBlankLines(node.body);
302
- },
303
- BlockStatement(node) {
304
- checkBlankLines(node.body);
305
- },
306
- };
307
- },
308
- },
309
- },
310
- };
311
- function getBaseName(source) {
312
- // Handle node: and bun: protocols
313
- if (source.startsWith("node:")) {
314
- return source.slice(5);
315
- }
316
- if (source.startsWith("bun:")) {
317
- return source.slice(4);
318
- }
319
- // Get last path segment
320
- const segments = source.split("/");
321
- let last = segments[segments.length - 1];
322
- // Strip file extension (.ts, .tsx, .js, .jsx, .mjs, .cjs)
323
- last = last.replace(/\.(ts|tsx|js|jsx|mjs|cjs)$/, "");
324
- return last;
325
- }
326
- function isCapitalized(name) {
327
- return name.length > 0 && name[0] >= "A" && name[0] <= "Z";
328
- }
329
- function isFunction(stmt) {
330
- const decl = stmt.type === "ExportNamedDeclaration" && stmt.declaration ? stmt.declaration : stmt;
331
- if (decl.type === "FunctionDeclaration")
332
- return true;
333
- if (decl.type === "VariableDeclaration" &&
334
- decl.declarations.length > 0 &&
335
- decl.declarations[0].init &&
336
- (decl.declarations[0].init.type === "ArrowFunctionExpression" ||
337
- decl.declarations[0].init.type === "FunctionExpression")) {
338
- return true;
339
- }
340
- return false;
341
- }
@@ -1,8 +0,0 @@
1
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
2
- import * as HttpServerResponse from "@effect/platform/HttpServerResponse";
3
- import * as Effect from "effect/Effect";
4
- export interface BasicAuthConfig {
5
- readonly username: string;
6
- readonly password: string;
7
- }
8
- export declare const make: (config: BasicAuthConfig) => <E, R>(app: import("@effect/platform/HttpApp").Default<E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, HttpServerRequest.HttpServerRequest | R>;
@@ -1,22 +0,0 @@
1
- import * as HttpMiddleware from "@effect/platform/HttpMiddleware";
2
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
3
- import * as HttpServerResponse from "@effect/platform/HttpServerResponse";
4
- import * as Effect from "effect/Effect";
5
- const unauthorizedResponse = HttpServerResponse.empty({
6
- status: 401,
7
- headers: { "WWW-Authenticate": "Basic" },
8
- });
9
- export const make = (config) => HttpMiddleware.make((app) => Effect.gen(function* () {
10
- const request = yield* HttpServerRequest.HttpServerRequest;
11
- const authHeader = request.headers.authorization;
12
- if (!authHeader || !authHeader.startsWith("Basic ")) {
13
- return unauthorizedResponse;
14
- }
15
- const base64Credentials = authHeader.slice(6);
16
- const credentials = atob(base64Credentials);
17
- const [username, password] = credentials.split(":");
18
- if (username !== config.username || password !== config.password) {
19
- return unauthorizedResponse;
20
- }
21
- return yield* app;
22
- }));
@@ -1 +0,0 @@
1
- export * as BasicAuthMiddleware from "./BasicAuthMiddleware.ts";
@@ -1 +0,0 @@
1
- export * as BasicAuthMiddleware from "./BasicAuthMiddleware.js";