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
@@ -1,26 +1,25 @@
1
- import { attribute, computed, mergePatch, mergePaths } from "../engine.js";
2
- import { modifyCasing, updateLeaves } from "../utils.js";
1
+ import { attribute, computed, mergePatch, mergePaths } from "../engine.js"
2
+ import { modifyCasing, updateLeaves } from "../utils.js"
3
+
3
4
  attribute({
4
- name: "computed",
5
- requirement: {
6
- value: "must",
7
- },
8
- returnsValue: true,
9
- apply({ key, mods, rx, error }) {
10
- if (key) {
11
- mergePaths([[modifyCasing(key, mods), computed(rx)]]);
5
+ name: "computed",
6
+ requirement: {
7
+ value: "must",
8
+ },
9
+ returnsValue: true,
10
+ apply({ key, mods, rx, error }) {
11
+ if (key) {
12
+ mergePaths([[modifyCasing(key, mods), computed(rx)]])
13
+ } else {
14
+ const patch = Object.assign({}, rx())
15
+ updateLeaves(patch, (old) => {
16
+ if (typeof old === "function") {
17
+ return computed(old)
18
+ } else {
19
+ throw error("ComputedExpectedFunction")
12
20
  }
13
- else {
14
- const patch = Object.assign({}, rx());
15
- updateLeaves(patch, (old) => {
16
- if (typeof old === "function") {
17
- return computed(old);
18
- }
19
- else {
20
- throw error("ComputedExpectedFunction");
21
- }
22
- });
23
- mergePatch(patch);
24
- }
25
- },
26
- });
21
+ })
22
+ mergePatch(patch)
23
+ }
24
+ },
25
+ })
@@ -1,9 +1,10 @@
1
- import { attribute, effect } from "../engine.js";
1
+ import { attribute, effect } from "../engine.js"
2
+
2
3
  attribute({
3
- name: "effect",
4
- requirement: {
5
- key: "denied",
6
- value: "must",
7
- },
8
- apply: ({ rx }) => effect(rx),
9
- });
4
+ name: "effect",
5
+ requirement: {
6
+ key: "denied",
7
+ value: "must",
8
+ },
9
+ apply: ({ rx }) => effect(rx),
10
+ })
@@ -1,30 +1,33 @@
1
- import { attribute, DATASTAR_FETCH_EVENT, mergePaths } from "../engine.js";
2
- import { modifyCasing } from "../utils.js";
3
- import { FINISHED, STARTED } from "../actions/fetch.js";
1
+ import { attribute, DATASTAR_FETCH_EVENT, mergePaths } from "../engine.js"
2
+ import { modifyCasing } from "../utils.js"
3
+ import { FINISHED, STARTED } from "../actions/fetch.js"
4
+
4
5
  attribute({
5
- name: "indicator",
6
- requirement: "exclusive",
7
- apply({ el, key, mods, value }) {
8
- const signalName = key != null ? modifyCasing(key, mods) : value;
9
- mergePaths([[signalName, false]]);
10
- const watcher = ((event) => {
11
- const { type, el: elt } = event.detail;
12
- if (elt !== el) {
13
- return;
14
- }
15
- switch (type) {
16
- case STARTED:
17
- mergePaths([[signalName, true]]);
18
- break;
19
- case FINISHED:
20
- mergePaths([[signalName, false]]);
21
- break;
22
- }
23
- });
24
- document.addEventListener(DATASTAR_FETCH_EVENT, watcher);
25
- return () => {
26
- mergePaths([[signalName, false]]);
27
- document.removeEventListener(DATASTAR_FETCH_EVENT, watcher);
28
- };
29
- },
30
- });
6
+ name: "indicator",
7
+ requirement: "exclusive",
8
+ apply({ el, key, mods, value }) {
9
+ const signalName = key != null ? modifyCasing(key, mods) : value
10
+
11
+ mergePaths([[signalName, false]])
12
+
13
+ const watcher = ((event) => {
14
+ const { type, el: elt } = event.detail
15
+ if (elt !== el) {
16
+ return
17
+ }
18
+ switch (type) {
19
+ case STARTED:
20
+ mergePaths([[signalName, true]])
21
+ break
22
+ case FINISHED:
23
+ mergePaths([[signalName, false]])
24
+ break
25
+ }
26
+ })
27
+ document.addEventListener(DATASTAR_FETCH_EVENT, watcher)
28
+ return () => {
29
+ mergePaths([[signalName, false]])
30
+ document.removeEventListener(DATASTAR_FETCH_EVENT, watcher)
31
+ }
32
+ },
33
+ })
@@ -1,26 +1,27 @@
1
- import { attribute, beginBatch, endBatch } from "../engine.js";
2
- import { delay, modifyViewTransition, tagToMs } from "../utils.js";
1
+ import { attribute, beginBatch, endBatch } from "../engine.js"
2
+ import { delay, modifyViewTransition, tagToMs } from "../utils.js"
3
+
3
4
  attribute({
4
- name: "init",
5
- requirement: {
6
- key: "denied",
7
- value: "must",
8
- },
9
- apply({ rx, mods }) {
10
- let callback = () => {
11
- beginBatch();
12
- rx();
13
- endBatch();
14
- };
15
- callback = modifyViewTransition(callback, mods);
16
- let wait = 0;
17
- const delayArgs = mods.get("delay");
18
- if (delayArgs) {
19
- wait = tagToMs(delayArgs);
20
- if (wait > 0) {
21
- callback = delay(callback, wait);
22
- }
23
- }
24
- callback();
25
- },
26
- });
5
+ name: "init",
6
+ requirement: {
7
+ key: "denied",
8
+ value: "must",
9
+ },
10
+ apply({ rx, mods }) {
11
+ let callback = () => {
12
+ beginBatch()
13
+ rx()
14
+ endBatch()
15
+ }
16
+ callback = modifyViewTransition(callback, mods)
17
+ let wait = 0
18
+ const delayArgs = mods.get("delay")
19
+ if (delayArgs) {
20
+ wait = tagToMs(delayArgs)
21
+ if (wait > 0) {
22
+ callback = delay(callback, wait)
23
+ }
24
+ }
25
+ callback()
26
+ },
27
+ })
@@ -1,30 +1,33 @@
1
- import { attribute, effect, filtered } from "../engine.js";
2
- import { jsStrToObject } from "../utils.js";
1
+ import { attribute, effect, filtered } from "../engine.js"
2
+ import { jsStrToObject } from "../utils.js"
3
+
3
4
  attribute({
4
- name: "json-signals",
5
- requirement: {
6
- key: "denied",
7
- },
8
- apply({ el, value, mods }) {
9
- const spaces = mods.has("terse") ? 0 : 2;
10
- let filters = {};
11
- if (value) {
12
- filters = jsStrToObject(value);
13
- }
14
- const callback = () => {
15
- observer.disconnect();
16
- el.textContent = JSON.stringify(filtered(filters), null, spaces);
17
- observer.observe(el, {
18
- childList: true,
19
- characterData: true,
20
- subtree: true,
21
- });
22
- };
23
- const observer = new MutationObserver(callback);
24
- const cleanup = effect(callback);
25
- return () => {
26
- observer.disconnect();
27
- cleanup();
28
- };
29
- },
30
- });
5
+ name: "json-signals",
6
+ requirement: {
7
+ key: "denied",
8
+ },
9
+ apply({ el, value, mods }) {
10
+ const spaces = mods.has("terse") ? 0 : 2
11
+ let filters = {}
12
+ if (value) {
13
+ filters = jsStrToObject(value)
14
+ }
15
+
16
+ const callback = () => {
17
+ observer.disconnect()
18
+ el.textContent = JSON.stringify(filtered(filters), null, spaces)
19
+ observer.observe(el, {
20
+ childList: true,
21
+ characterData: true,
22
+ subtree: true,
23
+ })
24
+ }
25
+ const observer = new MutationObserver(callback)
26
+ const cleanup = effect(callback)
27
+
28
+ return () => {
29
+ observer.disconnect()
30
+ cleanup()
31
+ }
32
+ },
33
+ })
@@ -1,78 +1,81 @@
1
- import { attribute, beginBatch, DATASTAR_FETCH_EVENT, DATASTAR_SIGNAL_PATCH_EVENT, endBatch, } from "../engine.js";
2
- import { modifyTiming, modifyViewTransition } from "../utils.js";
1
+ import {
2
+ attribute,
3
+ beginBatch,
4
+ DATASTAR_FETCH_EVENT,
5
+ DATASTAR_SIGNAL_PATCH_EVENT,
6
+ endBatch,
7
+ } from "../engine.js"
8
+ import { modifyTiming, modifyViewTransition } from "../utils.js"
9
+
3
10
  // TODO: support leading/trailing options for debounce/throttle
4
11
  // e.g. { debounce: { ms: 500, leading: true, noTrailing: true } }
5
12
  const configToMods = (config) => {
6
- const mods = new Map();
7
- for (const [k, v] of Object.entries(config)) {
8
- if (v === true) {
9
- mods.set(k, new Set());
10
- }
11
- else if (typeof v === "number") {
12
- mods.set(k, new Set([`${v}ms`]));
13
- }
13
+ const mods = new Map()
14
+ for (const [k, v] of Object.entries(config)) {
15
+ if (v === true) {
16
+ mods.set(k, new Set())
17
+ } else if (typeof v === "number") {
18
+ mods.set(k, new Set([`${v}ms`]))
14
19
  }
15
- return mods;
16
- };
20
+ }
21
+ return mods
22
+ }
23
+
17
24
  attribute({
18
- name: "on",
19
- requirement: "must",
20
- argNames: ["evt"],
21
- apply({ el, key, mods, rx, value }) {
22
- let userFn;
23
- let effectiveMods = mods;
24
- try {
25
- const parts = Function(`return [${value}]`)();
26
- if (typeof parts[0] === "function") {
27
- userFn = parts[0];
28
- if (parts[1])
29
- effectiveMods = configToMods(parts[1]);
30
- }
31
- }
32
- catch { }
33
- let target = el;
34
- if (effectiveMods.has("window"))
35
- target = window;
36
- let callback = (evt) => {
37
- if (evt) {
38
- if (effectiveMods.has("prevent"))
39
- evt.preventDefault();
40
- if (effectiveMods.has("stop"))
41
- evt.stopPropagation();
42
- }
43
- beginBatch();
44
- userFn ? userFn(evt) : rx(evt);
45
- endBatch();
46
- };
47
- callback = modifyViewTransition(callback, effectiveMods);
48
- callback = modifyTiming(callback, effectiveMods);
49
- const evtListOpts = {
50
- capture: effectiveMods.has("capture"),
51
- passive: effectiveMods.has("passive"),
52
- once: effectiveMods.has("once"),
53
- };
54
- if (effectiveMods.has("outside")) {
55
- target = document;
56
- const cb = callback;
57
- callback = (evt) => {
58
- if (!el.contains(evt?.target))
59
- cb(evt);
60
- };
61
- }
62
- const eventName = key;
63
- if (eventName === DATASTAR_FETCH_EVENT || eventName === DATASTAR_SIGNAL_PATCH_EVENT) {
64
- target = document;
65
- }
66
- if (el instanceof HTMLFormElement && eventName === "submit") {
67
- const cb = callback;
68
- callback = (evt) => {
69
- evt?.preventDefault();
70
- cb(evt);
71
- };
72
- }
73
- target.addEventListener(eventName, callback, evtListOpts);
74
- return () => {
75
- target.removeEventListener(eventName, callback);
76
- };
77
- },
78
- });
25
+ name: "on",
26
+ requirement: "must",
27
+ argNames: ["evt"],
28
+ apply({ el, key, mods, rx, value }) {
29
+ let userFn
30
+ let effectiveMods = mods
31
+
32
+ try {
33
+ const parts = Function(`return [${value}]`)()
34
+ if (typeof parts[0] === "function") {
35
+ userFn = parts[0]
36
+ if (parts[1]) effectiveMods = configToMods(parts[1])
37
+ }
38
+ } catch {}
39
+
40
+ let target = el
41
+ if (effectiveMods.has("window")) target = window
42
+ let callback = (evt) => {
43
+ if (evt) {
44
+ if (effectiveMods.has("prevent")) evt.preventDefault()
45
+ if (effectiveMods.has("stop")) evt.stopPropagation()
46
+ }
47
+ beginBatch()
48
+ userFn ? userFn(evt) : rx(evt)
49
+ endBatch()
50
+ }
51
+ callback = modifyViewTransition(callback, effectiveMods)
52
+ callback = modifyTiming(callback, effectiveMods)
53
+ const evtListOpts = {
54
+ capture: effectiveMods.has("capture"),
55
+ passive: effectiveMods.has("passive"),
56
+ once: effectiveMods.has("once"),
57
+ }
58
+ if (effectiveMods.has("outside")) {
59
+ target = document
60
+ const cb = callback
61
+ callback = (evt) => {
62
+ if (!el.contains(evt?.target)) cb(evt)
63
+ }
64
+ }
65
+ const eventName = key
66
+ if (eventName === DATASTAR_FETCH_EVENT || eventName === DATASTAR_SIGNAL_PATCH_EVENT) {
67
+ target = document
68
+ }
69
+ if (el instanceof HTMLFormElement && eventName === "submit") {
70
+ const cb = callback
71
+ callback = (evt) => {
72
+ evt?.preventDefault()
73
+ cb(evt)
74
+ }
75
+ }
76
+ target.addEventListener(eventName, callback, evtListOpts)
77
+ return () => {
78
+ target.removeEventListener(eventName, callback)
79
+ }
80
+ },
81
+ })
@@ -1,53 +1,53 @@
1
- import { attribute, beginBatch, endBatch } from "../engine.js";
2
- import { clamp, modifyTiming, modifyViewTransition } from "../utils.js";
3
- const once = new WeakSet();
1
+ import { attribute, beginBatch, endBatch } from "../engine.js"
2
+ import { clamp, modifyTiming, modifyViewTransition } from "../utils.js"
3
+
4
+ const once = new WeakSet()
5
+
4
6
  attribute({
5
- name: "on-intersect",
6
- requirement: {
7
- key: "denied",
8
- value: "must",
9
- },
10
- apply({ el, mods, rx }) {
11
- let callback = () => {
12
- beginBatch();
13
- rx();
14
- endBatch();
15
- };
16
- callback = modifyViewTransition(callback, mods);
17
- callback = modifyTiming(callback, mods);
18
- const options = { threshold: 0 };
19
- if (mods.has("full")) {
20
- options.threshold = 1;
7
+ name: "on-intersect",
8
+ requirement: {
9
+ key: "denied",
10
+ value: "must",
11
+ },
12
+ apply({ el, mods, rx }) {
13
+ let callback = () => {
14
+ beginBatch()
15
+ rx()
16
+ endBatch()
17
+ }
18
+ callback = modifyViewTransition(callback, mods)
19
+ callback = modifyTiming(callback, mods)
20
+ const options = { threshold: 0 }
21
+ if (mods.has("full")) {
22
+ options.threshold = 1
23
+ } else if (mods.has("half")) {
24
+ options.threshold = 0.5
25
+ } else if (mods.get("threshold")) {
26
+ options.threshold = clamp(Number(mods.get("threshold")), 0, 100) / 100
27
+ }
28
+ const exit = mods.has("exit")
29
+ let observer = new IntersectionObserver((entries) => {
30
+ for (const entry of entries) {
31
+ if (entry.isIntersecting !== exit) {
32
+ callback()
33
+ if (observer && once.has(el)) {
34
+ observer.disconnect()
35
+ }
21
36
  }
22
- else if (mods.has("half")) {
23
- options.threshold = 0.5;
24
- }
25
- else if (mods.get("threshold")) {
26
- options.threshold = clamp(Number(mods.get("threshold")), 0, 100) / 100;
27
- }
28
- const exit = mods.has("exit");
29
- let observer = new IntersectionObserver((entries) => {
30
- for (const entry of entries) {
31
- if (entry.isIntersecting !== exit) {
32
- callback();
33
- if (observer && once.has(el)) {
34
- observer.disconnect();
35
- }
36
- }
37
- }
38
- }, options);
39
- observer.observe(el);
40
- if (mods.has("once")) {
41
- once.add(el);
42
- }
43
- return () => {
44
- if (!mods.has("once")) {
45
- once.delete(el);
46
- }
47
- if (observer) {
48
- observer.disconnect();
49
- observer = null;
50
- }
51
- };
52
- },
53
- });
37
+ }
38
+ }, options)
39
+ observer.observe(el)
40
+ if (mods.has("once")) {
41
+ once.add(el)
42
+ }
43
+ return () => {
44
+ if (!mods.has("once")) {
45
+ once.delete(el)
46
+ }
47
+ if (observer) {
48
+ observer.disconnect()
49
+ observer = null
50
+ }
51
+ }
52
+ },
53
+ })
@@ -1,30 +1,31 @@
1
- import { attribute, beginBatch, endBatch } from "../engine.js";
2
- import { modifyViewTransition, tagHas, tagToMs } from "../utils.js";
1
+ import { attribute, beginBatch, endBatch } from "../engine.js"
2
+ import { modifyViewTransition, tagHas, tagToMs } from "../utils.js"
3
+
3
4
  attribute({
4
- name: "on-interval",
5
- requirement: {
6
- key: "denied",
7
- value: "must",
8
- },
9
- apply({ mods, rx }) {
10
- let callback = () => {
11
- beginBatch();
12
- rx();
13
- endBatch();
14
- };
15
- callback = modifyViewTransition(callback, mods);
16
- let duration = 1000;
17
- const durationArgs = mods.get("duration");
18
- if (durationArgs) {
19
- duration = tagToMs(durationArgs);
20
- const leading = tagHas(durationArgs, "leading", false);
21
- if (leading) {
22
- callback();
23
- }
24
- }
25
- const intervalId = setInterval(callback, duration);
26
- return () => {
27
- clearInterval(intervalId);
28
- };
29
- },
30
- });
5
+ name: "on-interval",
6
+ requirement: {
7
+ key: "denied",
8
+ value: "must",
9
+ },
10
+ apply({ mods, rx }) {
11
+ let callback = () => {
12
+ beginBatch()
13
+ rx()
14
+ endBatch()
15
+ }
16
+ callback = modifyViewTransition(callback, mods)
17
+ let duration = 1000
18
+ const durationArgs = mods.get("duration")
19
+ if (durationArgs) {
20
+ duration = tagToMs(durationArgs)
21
+ const leading = tagHas(durationArgs, "leading", false)
22
+ if (leading) {
23
+ callback()
24
+ }
25
+ }
26
+ const intervalId = setInterval(callback, duration)
27
+ return () => {
28
+ clearInterval(intervalId)
29
+ }
30
+ },
31
+ })