effect-start 0.23.0 → 0.25.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 (356) hide show
  1. package/dist/ChildProcess.js +32 -20
  2. package/dist/Commander.js +377 -293
  3. package/dist/ContentNegotiation.js +424 -318
  4. package/dist/Cookies.js +340 -271
  5. package/dist/Development.js +85 -49
  6. package/dist/Effectify.js +22 -14
  7. package/dist/Entity.js +260 -195
  8. package/dist/Fetch.js +192 -0
  9. package/dist/FilePathPattern.js +88 -77
  10. package/dist/FileRouter.js +192 -136
  11. package/dist/FileRouterCodegen.js +262 -191
  12. package/dist/FileSystem.js +126 -64
  13. package/dist/Http.js +96 -77
  14. package/dist/PathPattern.js +311 -273
  15. package/dist/PlatformError.js +36 -21
  16. package/dist/PlatformRuntime.js +65 -40
  17. package/dist/Route.js +122 -79
  18. package/dist/RouteBody.js +83 -58
  19. package/dist/RouteError.js +46 -25
  20. package/dist/RouteHook.js +58 -34
  21. package/dist/RouteHttp.js +346 -237
  22. package/dist/RouteHttpTracer.js +86 -58
  23. package/dist/RouteMount.js +81 -58
  24. package/dist/RouteSchema.js +253 -170
  25. package/dist/RouteSse.js +87 -72
  26. package/dist/RouteTree.js +99 -73
  27. package/dist/RouteTrie.js +160 -133
  28. package/dist/SchemaExtra.js +87 -62
  29. package/dist/Socket.js +32 -21
  30. package/dist/SqlIntrospect.js +317 -268
  31. package/dist/Start.js +55 -25
  32. package/dist/StartApp.js +3 -21
  33. package/dist/StreamExtra.js +109 -74
  34. package/dist/System.js +37 -21
  35. package/dist/TuplePathPattern.js +64 -58
  36. package/dist/Unique.js +159 -120
  37. package/dist/Values.js +48 -32
  38. package/dist/bun/BunBundle.js +158 -109
  39. package/dist/bun/BunChildProcessSpawner.js +121 -82
  40. package/dist/bun/BunImportTrackerPlugin.js +85 -63
  41. package/dist/bun/BunRoute.js +135 -99
  42. package/dist/bun/BunRuntime.js +39 -29
  43. package/dist/bun/BunServer.js +268 -140
  44. package/dist/bun/BunVirtualFilesPlugin.js +47 -33
  45. package/dist/bun/_BunEnhancedResolve.js +107 -82
  46. package/dist/bun/index.js +5 -5
  47. package/dist/bundler/Bundle.js +82 -38
  48. package/dist/bundler/BundleFiles.js +140 -82
  49. package/dist/bundler/BundleRoute.js +49 -38
  50. package/dist/client/Overlay.js +29 -28
  51. package/dist/client/ScrollState.js +94 -82
  52. package/dist/client/index.js +79 -61
  53. package/dist/console/Console.js +40 -24
  54. package/dist/console/ConsoleErrors.js +189 -178
  55. package/dist/console/ConsoleLogger.js +52 -43
  56. package/dist/console/ConsoleMetrics.js +69 -58
  57. package/dist/console/ConsoleProcess.js +57 -47
  58. package/dist/console/ConsoleStore.js +56 -45
  59. package/dist/console/ConsoleTracer.js +101 -88
  60. package/dist/console/Simulation.js +714 -563
  61. package/dist/console/index.js +3 -3
  62. package/dist/console/routes/tree.js +29 -28
  63. package/dist/datastar/actions/fetch.js +514 -381
  64. package/dist/datastar/actions/peek.js +12 -12
  65. package/dist/datastar/actions/setAll.js +18 -11
  66. package/dist/datastar/actions/toggleAll.js +18 -11
  67. package/dist/datastar/attributes/attr.js +48 -47
  68. package/dist/datastar/attributes/bind.js +186 -167
  69. package/dist/datastar/attributes/class.js +51 -44
  70. package/dist/datastar/attributes/computed.js +23 -24
  71. package/dist/datastar/attributes/effect.js +9 -8
  72. package/dist/datastar/attributes/indicator.js +32 -29
  73. package/dist/datastar/attributes/init.js +26 -25
  74. package/dist/datastar/attributes/jsonSignals.js +32 -29
  75. package/dist/datastar/attributes/on.js +76 -73
  76. package/dist/datastar/attributes/onIntersect.js +51 -51
  77. package/dist/datastar/attributes/onInterval.js +30 -29
  78. package/dist/datastar/attributes/onSignalPatch.js +49 -40
  79. package/dist/datastar/attributes/ref.js +10 -9
  80. package/dist/datastar/attributes/show.js +31 -30
  81. package/dist/datastar/attributes/signals.js +17 -16
  82. package/dist/datastar/attributes/style.js +56 -49
  83. package/dist/datastar/attributes/text.js +28 -25
  84. package/dist/datastar/engine.js +1079 -933
  85. package/dist/datastar/index.js +25 -24
  86. package/dist/datastar/utils.js +203 -155
  87. package/dist/datastar/watchers/patchElements.js +459 -372
  88. package/dist/datastar/watchers/patchSignals.js +13 -13
  89. package/dist/experimental/EncryptedCookies.js +305 -189
  90. package/dist/experimental/index.js +1 -1
  91. package/dist/hyper/Hyper.js +22 -17
  92. package/dist/hyper/HyperHtml.js +138 -123
  93. package/dist/hyper/HyperNode.js +11 -9
  94. package/dist/hyper/HyperRoute.js +41 -28
  95. package/dist/hyper/html.js +27 -27
  96. package/dist/hyper/index.js +5 -5
  97. package/dist/hyper/jsx-runtime.js +11 -5
  98. package/dist/index.js +8 -8
  99. package/dist/node/NodeFileSystem.js +606 -341
  100. package/dist/node/NodeUtils.js +21 -18
  101. package/dist/sql/Sql.js +8 -0
  102. package/dist/sql/bun/index.js +134 -67
  103. package/dist/sql/index.js +1 -0
  104. package/dist/sql/libsql/index.js +156 -0
  105. package/dist/sql/mssql/docker.js +103 -60
  106. package/dist/sql/mssql/index.js +182 -101
  107. package/dist/testing/TestLogger.js +39 -29
  108. package/dist/testing/index.js +2 -2
  109. package/dist/testing/utils.js +45 -23
  110. package/dist/x/cloudflare/CloudflareTunnel.js +61 -28
  111. package/dist/x/cloudflare/index.js +1 -1
  112. package/dist/x/tailscale/TailscaleTunnel.js +86 -60
  113. package/dist/x/tailscale/index.js +1 -1
  114. package/dist/x/tailwind/TailwindPlugin.js +280 -205
  115. package/dist/x/tailwind/compile.js +185 -129
  116. package/dist/x/tailwind/plugin.js +13 -11
  117. package/package.json +1 -1
  118. package/src/Development.ts +3 -1
  119. package/src/Entity.ts +17 -0
  120. package/src/Fetch.ts +271 -0
  121. package/src/SqlIntrospect.ts +64 -70
  122. package/src/Start.ts +24 -22
  123. package/src/StartApp.ts +11 -0
  124. package/src/bun/BunServer.ts +89 -16
  125. package/src/hyper/HyperHtml.ts +0 -1
  126. package/src/sql/bun/index.ts +1 -1
  127. package/src/sql/index.ts +1 -0
  128. package/src/sql/libsql/index.ts +173 -0
  129. package/src/sql/libsql/libsql.d.ts +39 -0
  130. package/src/sql/mssql/index.ts +1 -1
  131. package/src/x/tailscale/TailscaleTunnel.ts +7 -5
  132. package/dist/BlobStore.d.ts +0 -80
  133. package/dist/BlobStore.js +0 -19
  134. package/dist/ChildProcess.d.ts +0 -60
  135. package/dist/Commander.d.ts +0 -100
  136. package/dist/ContentNegotiation.d.ts +0 -12
  137. package/dist/Cookies.d.ts +0 -47
  138. package/dist/Development.d.ts +0 -39
  139. package/dist/Effectify.d.ts +0 -209
  140. package/dist/Entity.d.ts +0 -47
  141. package/dist/FilePathPattern.d.ts +0 -29
  142. package/dist/FileRouter.d.ts +0 -56
  143. package/dist/FileRouterCodegen.d.ts +0 -18
  144. package/dist/FileRouterPattern.d.ts +0 -9
  145. package/dist/FileRouterPattern.js +0 -35
  146. package/dist/FileSystem.d.ts +0 -158
  147. package/dist/Http.d.ts +0 -37
  148. package/dist/HttpAppExtra.d.ts +0 -7
  149. package/dist/HttpAppExtra.js +0 -320
  150. package/dist/HttpUtils.d.ts +0 -3
  151. package/dist/HttpUtils.js +0 -11
  152. package/dist/PathPattern.d.ts +0 -134
  153. package/dist/PlatformError.d.ts +0 -38
  154. package/dist/PlatformRuntime.d.ts +0 -27
  155. package/dist/Route.d.ts +0 -97
  156. package/dist/RouteBody.d.ts +0 -47
  157. package/dist/RouteError.d.ts +0 -98
  158. package/dist/RouteHook.d.ts +0 -12
  159. package/dist/RouteHttp.d.ts +0 -21
  160. package/dist/RouteHttpTracer.d.ts +0 -10
  161. package/dist/RouteMount.d.ts +0 -86
  162. package/dist/RouteSchema.d.ts +0 -86
  163. package/dist/RouteSse.d.ts +0 -21
  164. package/dist/RouteTree.d.ts +0 -57
  165. package/dist/RouteTrie.d.ts +0 -20
  166. package/dist/RouterPattern.d.ts +0 -118
  167. package/dist/RouterPattern.js +0 -269
  168. package/dist/SchemaExtra.d.ts +0 -7
  169. package/dist/Socket.d.ts +0 -27
  170. package/dist/Sql.d.ts +0 -34
  171. package/dist/Sql.js +0 -5
  172. package/dist/SqlIntrospect.d.ts +0 -91
  173. package/dist/Start.d.ts +0 -44
  174. package/dist/StartApp.d.ts +0 -19
  175. package/dist/StreamExtra.d.ts +0 -28
  176. package/dist/System.d.ts +0 -7
  177. package/dist/TuplePathPattern.d.ts +0 -9
  178. package/dist/Unique.d.ts +0 -50
  179. package/dist/Values.d.ts +0 -27
  180. package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
  181. package/dist/bun/BunBlobStoreDisk.js +0 -116
  182. package/dist/bun/BunBlobStoreS3.d.ts +0 -11
  183. package/dist/bun/BunBlobStoreS3.js +0 -89
  184. package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
  185. package/dist/bun/BunBlobWatcherDisk.js +0 -60
  186. package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
  187. package/dist/bun/BunBlobWatcherQueue.js +0 -17
  188. package/dist/bun/BunBundle.d.ts +0 -11
  189. package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
  190. package/dist/bun/BunHttpServer.d.ts +0 -44
  191. package/dist/bun/BunHttpServer.js +0 -186
  192. package/dist/bun/BunHttpServer_web.d.ts +0 -60
  193. package/dist/bun/BunHttpServer_web.js +0 -252
  194. package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
  195. package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
  196. package/dist/bun/BunPlatformHttpServer.js +0 -53
  197. package/dist/bun/BunRoute.d.ts +0 -48
  198. package/dist/bun/BunRuntime.d.ts +0 -2
  199. package/dist/bun/BunServer.d.ts +0 -40
  200. package/dist/bun/BunServerRequest.d.ts +0 -60
  201. package/dist/bun/BunServerRequest.js +0 -252
  202. package/dist/bun/BunSql.d.ts +0 -4
  203. package/dist/bun/BunSql.js +0 -81
  204. package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
  205. package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
  206. package/dist/bun/index.d.ts +0 -5
  207. package/dist/bundler/Bundle.d.ts +0 -61
  208. package/dist/bundler/BundleFiles.d.ts +0 -13
  209. package/dist/bundler/BundleHttp.d.ts +0 -45
  210. package/dist/bundler/BundleHttp.js +0 -176
  211. package/dist/bundler/BundleRoute.d.ts +0 -27
  212. package/dist/client/Overlay.d.ts +0 -2
  213. package/dist/client/ScrollState.d.ts +0 -6
  214. package/dist/client/index.d.ts +0 -6
  215. package/dist/console/Console.d.ts +0 -6
  216. package/dist/console/ConsoleErrors.d.ts +0 -3
  217. package/dist/console/ConsoleLogger.d.ts +0 -3
  218. package/dist/console/ConsoleMetrics.d.ts +0 -3
  219. package/dist/console/ConsoleProcess.d.ts +0 -3
  220. package/dist/console/ConsoleStore.d.ts +0 -144
  221. package/dist/console/ConsoleTracer.d.ts +0 -3
  222. package/dist/console/Simulation.d.ts +0 -2
  223. package/dist/console/index.d.ts +0 -3
  224. package/dist/console/routes/errors/route.d.ts +0 -10
  225. package/dist/console/routes/errors/route.js +0 -47
  226. package/dist/console/routes/fiberDetail.d.ts +0 -16
  227. package/dist/console/routes/fiberDetail.js +0 -38
  228. package/dist/console/routes/fibers/route.d.ts +0 -10
  229. package/dist/console/routes/fibers/route.js +0 -19
  230. package/dist/console/routes/git/route.d.ts +0 -11
  231. package/dist/console/routes/git/route.js +0 -33
  232. package/dist/console/routes/layout.d.ts +0 -9
  233. package/dist/console/routes/layout.js +0 -3
  234. package/dist/console/routes/logs/route.d.ts +0 -10
  235. package/dist/console/routes/logs/route.js +0 -32
  236. package/dist/console/routes/metrics/route.d.ts +0 -10
  237. package/dist/console/routes/metrics/route.js +0 -17
  238. package/dist/console/routes/route.d.ts +0 -6
  239. package/dist/console/routes/route.js +0 -5
  240. package/dist/console/routes/routes/route.d.ts +0 -6
  241. package/dist/console/routes/routes/route.js +0 -20
  242. package/dist/console/routes/services/route.d.ts +0 -6
  243. package/dist/console/routes/services/route.js +0 -12
  244. package/dist/console/routes/system/route.d.ts +0 -10
  245. package/dist/console/routes/system/route.js +0 -18
  246. package/dist/console/routes/traceDetail.d.ts +0 -16
  247. package/dist/console/routes/traceDetail.js +0 -14
  248. package/dist/console/routes/traces/route.d.ts +0 -10
  249. package/dist/console/routes/traces/route.js +0 -39
  250. package/dist/console/routes/tree.d.ts +0 -153
  251. package/dist/console/ui/Errors.d.ts +0 -4
  252. package/dist/console/ui/Errors.js +0 -15
  253. package/dist/console/ui/Fibers.d.ts +0 -24
  254. package/dist/console/ui/Fibers.js +0 -121
  255. package/dist/console/ui/Git.d.ts +0 -20
  256. package/dist/console/ui/Git.js +0 -95
  257. package/dist/console/ui/Logs.d.ts +0 -4
  258. package/dist/console/ui/Logs.js +0 -25
  259. package/dist/console/ui/Metrics.d.ts +0 -4
  260. package/dist/console/ui/Metrics.js +0 -26
  261. package/dist/console/ui/Routes.d.ts +0 -8
  262. package/dist/console/ui/Routes.js +0 -70
  263. package/dist/console/ui/Services.d.ts +0 -10
  264. package/dist/console/ui/Services.js +0 -246
  265. package/dist/console/ui/Shell.d.ts +0 -10
  266. package/dist/console/ui/Shell.js +0 -7
  267. package/dist/console/ui/System.d.ts +0 -4
  268. package/dist/console/ui/System.js +0 -35
  269. package/dist/console/ui/Traces.d.ts +0 -12
  270. package/dist/console/ui/Traces.js +0 -179
  271. package/dist/datastar/actions/fetch.d.ts +0 -30
  272. package/dist/datastar/actions/peek.d.ts +0 -1
  273. package/dist/datastar/actions/setAll.d.ts +0 -1
  274. package/dist/datastar/actions/toggleAll.d.ts +0 -1
  275. package/dist/datastar/attributes/attr.d.ts +0 -1
  276. package/dist/datastar/attributes/bind.d.ts +0 -1
  277. package/dist/datastar/attributes/class.d.ts +0 -1
  278. package/dist/datastar/attributes/computed.d.ts +0 -1
  279. package/dist/datastar/attributes/effect.d.ts +0 -1
  280. package/dist/datastar/attributes/indicator.d.ts +0 -1
  281. package/dist/datastar/attributes/init.d.ts +0 -1
  282. package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
  283. package/dist/datastar/attributes/on.d.ts +0 -1
  284. package/dist/datastar/attributes/onIntersect.d.ts +0 -1
  285. package/dist/datastar/attributes/onInterval.d.ts +0 -1
  286. package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
  287. package/dist/datastar/attributes/ref.d.ts +0 -1
  288. package/dist/datastar/attributes/show.d.ts +0 -1
  289. package/dist/datastar/attributes/signals.d.ts +0 -1
  290. package/dist/datastar/attributes/style.d.ts +0 -1
  291. package/dist/datastar/attributes/text.d.ts +0 -1
  292. package/dist/datastar/engine.d.ts +0 -162
  293. package/dist/datastar/happydom.d.ts +0 -1
  294. package/dist/datastar/happydom.js +0 -8
  295. package/dist/datastar/index.d.ts +0 -24
  296. package/dist/datastar/load.d.ts +0 -24
  297. package/dist/datastar/load.js +0 -24
  298. package/dist/datastar/utils.d.ts +0 -51
  299. package/dist/datastar/watchers/patchElements.d.ts +0 -1
  300. package/dist/datastar/watchers/patchSignals.d.ts +0 -1
  301. package/dist/experimental/EncryptedCookies.d.ts +0 -48
  302. package/dist/experimental/SseHttpResponse.d.ts +0 -7
  303. package/dist/experimental/SseHttpResponse.js +0 -28
  304. package/dist/experimental/index.d.ts +0 -1
  305. package/dist/hyper/Hyper.d.ts +0 -25
  306. package/dist/hyper/HyperHtml.d.ts +0 -23
  307. package/dist/hyper/HyperHtml.test.d.ts +0 -1
  308. package/dist/hyper/HyperHtml.test.js +0 -197
  309. package/dist/hyper/HyperNode.d.ts +0 -14
  310. package/dist/hyper/HyperRoute.d.ts +0 -8
  311. package/dist/hyper/HyperRoute.test.d.ts +0 -1
  312. package/dist/hyper/HyperRoute.test.js +0 -83
  313. package/dist/hyper/html.d.ts +0 -11
  314. package/dist/hyper/index.d.ts +0 -6
  315. package/dist/hyper/jsx-runtime.d.ts +0 -7
  316. package/dist/index.d.ts +0 -8
  317. package/dist/inference_check.d.ts +0 -1
  318. package/dist/inference_check.js +0 -15
  319. package/dist/lint/plugin.d.ts +0 -86
  320. package/dist/lint/plugin.js +0 -341
  321. package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
  322. package/dist/middlewares/BasicAuthMiddleware.js +0 -22
  323. package/dist/middlewares/index.d.ts +0 -1
  324. package/dist/middlewares/index.js +0 -1
  325. package/dist/node/Effectify.d.ts +0 -209
  326. package/dist/node/Effectify.js +0 -19
  327. package/dist/node/FileSystem.d.ts +0 -7
  328. package/dist/node/FileSystem.js +0 -420
  329. package/dist/node/NodeFileSystem.d.ts +0 -7
  330. package/dist/node/NodeUtils.d.ts +0 -2
  331. package/dist/node/PlatformError.d.ts +0 -46
  332. package/dist/node/PlatformError.js +0 -43
  333. package/dist/node/Utils.d.ts +0 -1
  334. package/dist/node/Utils.js +0 -19
  335. package/dist/repro_fail.d.ts +0 -1
  336. package/dist/repro_fail.js +0 -14
  337. package/dist/sql/bun/index.d.ts +0 -3
  338. package/dist/sql/mssql/docker.d.ts +0 -2
  339. package/dist/sql/mssql/index.d.ts +0 -21
  340. package/dist/testing/TestHttpClient.d.ts +0 -13
  341. package/dist/testing/TestHttpClient.js +0 -68
  342. package/dist/testing/TestLogger.d.ts +0 -13
  343. package/dist/testing/index.d.ts +0 -2
  344. package/dist/testing/utils.d.ts +0 -9
  345. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
  346. package/dist/x/cloudflare/index.d.ts +0 -1
  347. package/dist/x/datastar/Datastar.d.ts +0 -6
  348. package/dist/x/datastar/Datastar.js +0 -47
  349. package/dist/x/datastar/index.d.ts +0 -1
  350. package/dist/x/datastar/index.js +0 -1
  351. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
  352. package/dist/x/tailscale/index.d.ts +0 -1
  353. package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
  354. package/dist/x/tailwind/compile.d.ts +0 -19
  355. package/dist/x/tailwind/plugin.d.ts +0 -2
  356. /package/src/{Sql.ts → sql/Sql.ts} +0 -0
package/dist/Cookies.js CHANGED
@@ -2,301 +2,370 @@
2
2
  * Minimal Cookies management adapted from @effect/platform
3
3
  * We'll aim for full compatbility when it stabilizes.
4
4
  */
5
- import * as Duration from "effect/Duration";
6
- import * as Inspectable from "effect/Inspectable";
7
- import * as Option from "effect/Option";
8
- import * as Pipeable from "effect/Pipeable";
9
- import * as Predicate from "effect/Predicate";
10
- export const TypeId = Symbol.for("effect-start/Cookies");
11
- export const isCookies = (u) => Predicate.hasProperty(u, TypeId);
12
- export const CookieTypeId = Symbol.for("effect-start/Cookies/Cookie");
5
+ import * as Duration from "effect/Duration"
6
+ import * as Inspectable from "effect/Inspectable"
7
+ import * as Option from "effect/Option"
8
+ import * as Pipeable from "effect/Pipeable"
9
+ import * as Predicate from "effect/Predicate"
10
+
11
+ export const TypeId = Symbol.for("effect-start/Cookies")
12
+
13
+ export const isCookies = (u) => Predicate.hasProperty(u, TypeId)
14
+
15
+ export const CookieTypeId = Symbol.for("effect-start/Cookies/Cookie")
16
+
13
17
  const CookiesProto = {
14
- [TypeId]: TypeId,
15
- ...Inspectable.BaseProto,
16
- toJSON() {
17
- return {
18
- _id: "effect-start/Cookies",
19
- cookies: Object.fromEntries(Object.entries(this.cookies).map(([k, v]) => [k, v.toJSON()])),
20
- };
21
- },
22
- pipe() {
23
- return Pipeable.pipeArguments(this, arguments);
24
- },
25
- };
18
+ [TypeId]: TypeId,
19
+ ...Inspectable.BaseProto,
20
+ toJSON() {
21
+ return {
22
+ _id: "effect-start/Cookies",
23
+ cookies: Object.fromEntries(Object.entries(this.cookies).map(([k, v]) => [k, v.toJSON()])),
24
+ }
25
+ },
26
+ pipe() {
27
+ return Pipeable.pipeArguments(this, arguments)
28
+ },
29
+ }
30
+
26
31
  const CookieProto = {
27
- [CookieTypeId]: CookieTypeId,
28
- ...Inspectable.BaseProto,
29
- toJSON() {
30
- return {
31
- _id: "effect-start/Cookies/Cookie",
32
- name: this.name,
33
- value: this.value,
34
- options: this.options,
35
- };
36
- },
37
- };
32
+ [CookieTypeId]: CookieTypeId,
33
+ ...Inspectable.BaseProto,
34
+ toJSON() {
35
+ return {
36
+ _id: "effect-start/Cookies/Cookie",
37
+ name: this.name,
38
+ value: this.value,
39
+ options: this.options,
40
+ }
41
+ },
42
+ }
43
+
38
44
  const makeCookiesFromRecord = (cookies) => {
39
- const self = Object.create(CookiesProto);
40
- self.cookies = cookies;
41
- return self;
42
- };
43
- const cookieFromParts = (name, value, valueEncoded, options) => Object.assign(Object.create(CookieProto), {
45
+ const self = Object.create(CookiesProto)
46
+ self.cookies = cookies
47
+ return self
48
+ }
49
+
50
+ const cookieFromParts = (
51
+ name,
52
+ value,
53
+ valueEncoded,
54
+ options,
55
+ ) =>
56
+ Object.assign(Object.create(CookieProto), {
44
57
  name,
45
58
  value,
46
59
  valueEncoded,
47
60
  options,
48
- });
49
- export const empty = makeCookiesFromRecord({});
61
+ })
62
+
63
+ export const empty = makeCookiesFromRecord({})
64
+
50
65
  export const fromIterable = (cookies) => {
51
- const record = {};
52
- for (const cookie of cookies) {
53
- record[cookie.name] = cookie;
54
- }
55
- return makeCookiesFromRecord(record);
56
- };
66
+ const record = {}
67
+ for (const cookie of cookies) {
68
+ record[cookie.name] = cookie
69
+ }
70
+ return makeCookiesFromRecord(record)
71
+ }
72
+
57
73
  export const fromSetCookie = (headers) => {
58
- const arrayHeaders = typeof headers === "string" ? [headers] : headers;
59
- const cookies = [];
60
- for (const header of arrayHeaders) {
61
- const cookie = parseSetCookie(header.trim());
62
- if (Option.isSome(cookie)) {
63
- cookies.push(cookie.value);
64
- }
74
+ const arrayHeaders = typeof headers === "string" ? [headers] : headers
75
+ const cookies = []
76
+ for (const header of arrayHeaders) {
77
+ const cookie = parseSetCookie(header.trim())
78
+ if (Option.isSome(cookie)) {
79
+ cookies.push(cookie.value)
65
80
  }
66
- return fromIterable(cookies);
67
- };
68
- export const unsafeMakeCookie = (name, value, options) => cookieFromParts(name, value, encodeURIComponent(value), options);
81
+ }
82
+ return fromIterable(cookies)
83
+ }
84
+
85
+ export const unsafeMakeCookie = (
86
+ name,
87
+ value,
88
+ options,
89
+ ) => cookieFromParts(name, value, encodeURIComponent(value), options)
90
+
69
91
  export const isEmpty = (self) => {
70
- for (const _ in self.cookies)
71
- return false;
72
- return true;
73
- };
74
- export const get = (self, name) => name in self.cookies ? Option.some(self.cookies[name]) : Option.none();
75
- export const getValue = (self, name) => Option.map(get(self, name), (cookie) => cookie.value);
76
- export const setCookie = (self, cookie) => makeCookiesFromRecord({ ...self.cookies, [cookie.name]: cookie });
77
- export const unsafeSet = (self, name, value, options) => setCookie(self, unsafeMakeCookie(name, value, options));
78
- export const unsafeSetAll = (self, cookies) => {
79
- const record = { ...self.cookies };
80
- for (const [name, value, options] of cookies) {
81
- record[name] = unsafeMakeCookie(name, value, options);
82
- }
83
- return makeCookiesFromRecord(record);
84
- };
92
+ for (const _ in self.cookies) return false
93
+ return true
94
+ }
95
+
96
+ export const get = (self, name) =>
97
+ name in self.cookies ? Option.some(self.cookies[name]) : Option.none()
98
+
99
+ export const getValue = (self, name) =>
100
+ Option.map(get(self, name), (cookie) => cookie.value)
101
+
102
+ export const setCookie = (self, cookie) =>
103
+ makeCookiesFromRecord({ ...self.cookies, [cookie.name]: cookie })
104
+
105
+ export const unsafeSet = (
106
+ self,
107
+ name,
108
+ value,
109
+ options,
110
+ ) => setCookie(self, unsafeMakeCookie(name, value, options))
111
+
112
+ export const unsafeSetAll = (
113
+ self,
114
+ cookies,
115
+ ) => {
116
+ const record = { ...self.cookies }
117
+ for (const [name, value, options] of cookies) {
118
+ record[name] = unsafeMakeCookie(name, value, options)
119
+ }
120
+ return makeCookiesFromRecord(record)
121
+ }
122
+
85
123
  export const remove = (self, name) => {
86
- const { [name]: _, ...rest } = self.cookies;
87
- return makeCookiesFromRecord(rest);
88
- };
89
- export const merge = (self, that) => makeCookiesFromRecord({ ...self.cookies, ...that.cookies });
124
+ const { [name]: _, ...rest } = self.cookies
125
+ return makeCookiesFromRecord(rest)
126
+ }
127
+
128
+ export const merge = (self, that) =>
129
+ makeCookiesFromRecord({ ...self.cookies, ...that.cookies })
130
+
90
131
  export function serializeCookie(self) {
91
- let str = self.name + "=" + self.valueEncoded;
92
- if (self.options === undefined) {
93
- return str;
94
- }
95
- const options = self.options;
96
- if (options.maxAge !== undefined) {
97
- const maxAge = Duration.toSeconds(options.maxAge);
98
- str += "; Max-Age=" + Math.trunc(maxAge);
99
- }
100
- if (options.domain !== undefined) {
101
- str += "; Domain=" + options.domain;
102
- }
103
- if (options.path !== undefined) {
104
- str += "; Path=" + options.path;
105
- }
106
- if (options.priority !== undefined) {
107
- switch (options.priority) {
108
- case "low":
109
- str += "; Priority=Low";
110
- break;
111
- case "medium":
112
- str += "; Priority=Medium";
113
- break;
114
- case "high":
115
- str += "; Priority=High";
116
- break;
117
- }
132
+ let str = self.name + "=" + self.valueEncoded
133
+
134
+ if (self.options === undefined) {
135
+ return str
136
+ }
137
+ const options = self.options
138
+
139
+ if (options.maxAge !== undefined) {
140
+ const maxAge = Duration.toSeconds(options.maxAge)
141
+ str += "; Max-Age=" + Math.trunc(maxAge)
142
+ }
143
+
144
+ if (options.domain !== undefined) {
145
+ str += "; Domain=" + options.domain
146
+ }
147
+
148
+ if (options.path !== undefined) {
149
+ str += "; Path=" + options.path
150
+ }
151
+
152
+ if (options.priority !== undefined) {
153
+ switch (options.priority) {
154
+ case "low":
155
+ str += "; Priority=Low"
156
+ break
157
+ case "medium":
158
+ str += "; Priority=Medium"
159
+ break
160
+ case "high":
161
+ str += "; Priority=High"
162
+ break
118
163
  }
119
- if (options.expires !== undefined) {
120
- str += "; Expires=" + options.expires.toUTCString();
164
+ }
165
+
166
+ if (options.expires !== undefined) {
167
+ str += "; Expires=" + options.expires.toUTCString()
168
+ }
169
+
170
+ if (options.httpOnly) {
171
+ str += "; HttpOnly"
172
+ }
173
+
174
+ if (options.secure) {
175
+ str += "; Secure"
176
+ }
177
+
178
+ if (options.partitioned) {
179
+ str += "; Partitioned"
180
+ }
181
+
182
+ if (options.sameSite !== undefined) {
183
+ switch (options.sameSite) {
184
+ case "lax":
185
+ str += "; SameSite=Lax"
186
+ break
187
+ case "strict":
188
+ str += "; SameSite=Strict"
189
+ break
190
+ case "none":
191
+ str += "; SameSite=None"
192
+ break
121
193
  }
122
- if (options.httpOnly) {
123
- str += "; HttpOnly";
124
- }
125
- if (options.secure) {
126
- str += "; Secure";
127
- }
128
- if (options.partitioned) {
129
- str += "; Partitioned";
130
- }
131
- if (options.sameSite !== undefined) {
132
- switch (options.sameSite) {
133
- case "lax":
134
- str += "; SameSite=Lax";
135
- break;
136
- case "strict":
137
- str += "; SameSite=Strict";
138
- break;
139
- case "none":
140
- str += "; SameSite=None";
141
- break;
142
- }
143
- }
144
- return str;
194
+ }
195
+
196
+ return str
145
197
  }
146
- export const toCookieHeader = (self) => Object.values(self.cookies)
198
+
199
+ export const toCookieHeader = (self) =>
200
+ Object.values(self.cookies)
147
201
  .map((cookie) => `${cookie.name}=${cookie.valueEncoded}`)
148
- .join("; ");
202
+ .join("; ")
203
+
149
204
  export const toRecord = (self) => {
150
- const record = {};
151
- for (const cookie of Object.values(self.cookies)) {
152
- record[cookie.name] = cookie.value;
153
- }
154
- return record;
155
- };
156
- export const toSetCookieHeaders = (self) => Object.values(self.cookies).map(serializeCookie);
205
+ const record = {}
206
+ for (const cookie of Object.values(self.cookies)) {
207
+ record[cookie.name] = cookie.value
208
+ }
209
+ return record
210
+ }
211
+
212
+ export const toSetCookieHeaders = (self) =>
213
+ Object.values(self.cookies).map(serializeCookie)
214
+
157
215
  export function parseHeader(header) {
158
- const result = {};
159
- const strLen = header.length;
160
- let pos = 0;
161
- let terminatorPos = 0;
162
- while (true) {
163
- if (terminatorPos === strLen)
164
- break;
165
- terminatorPos = header.indexOf(";", pos);
166
- if (terminatorPos === -1)
167
- terminatorPos = strLen;
168
- let eqIdx = header.indexOf("=", pos);
169
- if (eqIdx === -1)
170
- break;
171
- if (eqIdx > terminatorPos) {
172
- pos = terminatorPos + 1;
173
- continue;
174
- }
175
- const key = header.substring(pos, eqIdx++).trim();
176
- if (result[key] === undefined) {
177
- const val = header.charCodeAt(eqIdx) === 0x22
178
- ? header.substring(eqIdx + 1, terminatorPos - 1).trim()
179
- : header.substring(eqIdx, terminatorPos).trim();
180
- result[key] = !(val.indexOf("%") === -1) ? tryDecodeURIComponent(val) : val;
181
- }
182
- pos = terminatorPos + 1;
216
+ const result = {}
217
+
218
+ const strLen = header.length
219
+ let pos = 0
220
+ let terminatorPos = 0
221
+
222
+ while (true) {
223
+ if (terminatorPos === strLen) break
224
+ terminatorPos = header.indexOf(";", pos)
225
+ if (terminatorPos === -1) terminatorPos = strLen
226
+
227
+ let eqIdx = header.indexOf("=", pos)
228
+ if (eqIdx === -1) break
229
+ if (eqIdx > terminatorPos) {
230
+ pos = terminatorPos + 1
231
+ continue
183
232
  }
184
- return result;
233
+
234
+ const key = header.substring(pos, eqIdx++).trim()
235
+ if (result[key] === undefined) {
236
+ const val =
237
+ header.charCodeAt(eqIdx) === 0x22
238
+ ? header.substring(eqIdx + 1, terminatorPos - 1).trim()
239
+ : header.substring(eqIdx, terminatorPos).trim()
240
+
241
+ result[key] = !(val.indexOf("%") === -1) ? tryDecodeURIComponent(val) : val
242
+ }
243
+
244
+ pos = terminatorPos + 1
245
+ }
246
+
247
+ return result
185
248
  }
249
+
186
250
  // eslint-disable-next-line no-control-regex
187
- const fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
251
+ const fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/
252
+
188
253
  function parseSetCookie(header) {
189
- const parts = header
190
- .split(";")
191
- .map((_) => _.trim())
192
- .filter((_) => _ !== "");
193
- if (parts.length === 0) {
194
- return Option.none();
195
- }
196
- const firstEqual = parts[0].indexOf("=");
197
- if (firstEqual === -1) {
198
- return Option.none();
199
- }
200
- const name = parts[0].slice(0, firstEqual);
201
- if (!fieldContentRegExp.test(name)) {
202
- return Option.none();
203
- }
204
- const valueEncoded = parts[0].slice(firstEqual + 1);
205
- const value = tryDecodeURIComponent(valueEncoded);
206
- if (parts.length === 1) {
207
- return Option.some(cookieFromParts(name, value, valueEncoded));
208
- }
209
- const options = {};
210
- for (let i = 1; i < parts.length; i++) {
211
- const part = parts[i];
212
- const equalIndex = part.indexOf("=");
213
- const key = equalIndex === -1 ? part : part.slice(0, equalIndex).trim();
214
- const value = equalIndex === -1 ? undefined : part.slice(equalIndex + 1).trim();
215
- switch (key.toLowerCase()) {
216
- case "domain": {
217
- if (value === undefined)
218
- break;
219
- const domain = value.trim().replace(/^\./, "");
220
- if (domain)
221
- options.domain = domain;
222
- break;
223
- }
224
- case "expires": {
225
- if (value === undefined)
226
- break;
227
- const date = new Date(value);
228
- if (!isNaN(date.getTime()))
229
- options.expires = date;
230
- break;
231
- }
232
- case "max-age": {
233
- if (value === undefined)
234
- break;
235
- const maxAge = parseInt(value, 10);
236
- if (!isNaN(maxAge))
237
- options.maxAge = Duration.seconds(maxAge);
238
- break;
239
- }
240
- case "path": {
241
- if (value === undefined)
242
- break;
243
- if (value[0] === "/")
244
- options.path = value;
245
- break;
246
- }
247
- case "priority": {
248
- if (value === undefined)
249
- break;
250
- switch (value.toLowerCase()) {
251
- case "low":
252
- options.priority = "low";
253
- break;
254
- case "medium":
255
- options.priority = "medium";
256
- break;
257
- case "high":
258
- options.priority = "high";
259
- break;
260
- }
261
- break;
262
- }
263
- case "httponly": {
264
- options.httpOnly = true;
265
- break;
266
- }
267
- case "secure": {
268
- options.secure = true;
269
- break;
270
- }
271
- case "partitioned": {
272
- options.partitioned = true;
273
- break;
274
- }
275
- case "samesite": {
276
- if (value === undefined)
277
- break;
278
- switch (value.toLowerCase()) {
279
- case "lax":
280
- options.sameSite = "lax";
281
- break;
282
- case "strict":
283
- options.sameSite = "strict";
284
- break;
285
- case "none":
286
- options.sameSite = "none";
287
- break;
288
- }
289
- break;
290
- }
254
+ const parts = header
255
+ .split(";")
256
+ .map((_) => _.trim())
257
+ .filter((_) => _ !== "")
258
+ if (parts.length === 0) {
259
+ return Option.none()
260
+ }
261
+
262
+ const firstEqual = parts[0].indexOf("=")
263
+ if (firstEqual === -1) {
264
+ return Option.none()
265
+ }
266
+ const name = parts[0].slice(0, firstEqual)
267
+ if (!fieldContentRegExp.test(name)) {
268
+ return Option.none()
269
+ }
270
+
271
+ const valueEncoded = parts[0].slice(firstEqual + 1)
272
+ const value = tryDecodeURIComponent(valueEncoded)
273
+
274
+ if (parts.length === 1) {
275
+ return Option.some(cookieFromParts(name, value, valueEncoded))
276
+ }
277
+
278
+ const options = {}
279
+
280
+ for (let i = 1; i < parts.length; i++) {
281
+ const part = parts[i]
282
+ const equalIndex = part.indexOf("=")
283
+ const key = equalIndex === -1 ? part : part.slice(0, equalIndex).trim()
284
+ const value = equalIndex === -1 ? undefined : part.slice(equalIndex + 1).trim()
285
+
286
+ switch (key.toLowerCase()) {
287
+ case "domain": {
288
+ if (value === undefined) break
289
+ const domain = value.trim().replace(/^\./, "")
290
+ if (domain) options.domain = domain
291
+ break
292
+ }
293
+ case "expires": {
294
+ if (value === undefined) break
295
+ const date = new Date(value)
296
+ if (!isNaN(date.getTime())) options.expires = date
297
+ break
298
+ }
299
+ case "max-age": {
300
+ if (value === undefined) break
301
+ const maxAge = parseInt(value, 10)
302
+ if (!isNaN(maxAge)) options.maxAge = Duration.seconds(maxAge)
303
+ break
304
+ }
305
+ case "path": {
306
+ if (value === undefined) break
307
+ if (value[0] === "/") options.path = value
308
+ break
309
+ }
310
+ case "priority": {
311
+ if (value === undefined) break
312
+ switch (value.toLowerCase()) {
313
+ case "low":
314
+ options.priority = "low"
315
+ break
316
+ case "medium":
317
+ options.priority = "medium"
318
+ break
319
+ case "high":
320
+ options.priority = "high"
321
+ break
291
322
  }
323
+ break
324
+ }
325
+ case "httponly": {
326
+ options.httpOnly = true
327
+ break
328
+ }
329
+ case "secure": {
330
+ options.secure = true
331
+ break
332
+ }
333
+ case "partitioned": {
334
+ options.partitioned = true
335
+ break
336
+ }
337
+ case "samesite": {
338
+ if (value === undefined) break
339
+ switch (value.toLowerCase()) {
340
+ case "lax":
341
+ options.sameSite = "lax"
342
+ break
343
+ case "strict":
344
+ options.sameSite = "strict"
345
+ break
346
+ case "none":
347
+ options.sameSite = "none"
348
+ break
349
+ }
350
+ break
351
+ }
292
352
  }
293
- return Option.some(cookieFromParts(name, value, valueEncoded, Object.keys(options).length > 0 ? options : undefined));
353
+ }
354
+
355
+ return Option.some(
356
+ cookieFromParts(
357
+ name,
358
+ value,
359
+ valueEncoded,
360
+ Object.keys(options).length > 0 ? options : undefined,
361
+ ),
362
+ )
294
363
  }
364
+
295
365
  const tryDecodeURIComponent = (str) => {
296
- try {
297
- return decodeURIComponent(str);
298
- }
299
- catch {
300
- return str;
301
- }
302
- };
366
+ try {
367
+ return decodeURIComponent(str)
368
+ } catch {
369
+ return str
370
+ }
371
+ }