effect-start 0.29.0 → 0.30.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 (228) hide show
  1. package/README.md +1 -1
  2. package/dist/{_Development.d.ts → Development.d.ts} +2 -1
  3. package/dist/Development.d.ts.map +1 -0
  4. package/dist/{_Development.js → Development.js} +2 -1
  5. package/dist/Development.js.map +1 -0
  6. package/dist/Fetch.d.ts +0 -8
  7. package/dist/Fetch.d.ts.map +1 -1
  8. package/dist/Fetch.js +6 -22
  9. package/dist/Fetch.js.map +1 -1
  10. package/dist/FileRouter.js +1 -1
  11. package/dist/FileRouter.js.map +1 -1
  12. package/dist/GlobalLayer.d.ts.map +1 -1
  13. package/dist/GlobalLayer.js +1 -1
  14. package/dist/GlobalLayer.js.map +1 -1
  15. package/dist/Html.d.ts +32 -0
  16. package/dist/Html.d.ts.map +1 -0
  17. package/dist/{hyper/HyperHtml.js → Html.js} +45 -26
  18. package/dist/Html.js.map +1 -0
  19. package/dist/Route.d.ts +20 -7
  20. package/dist/Route.d.ts.map +1 -1
  21. package/dist/Route.js +24 -3
  22. package/dist/Route.js.map +1 -1
  23. package/dist/RouteBody.d.ts +13 -6
  24. package/dist/RouteBody.d.ts.map +1 -1
  25. package/dist/RouteBody.js +38 -27
  26. package/dist/RouteBody.js.map +1 -1
  27. package/dist/RouteHttp.d.ts.map +1 -1
  28. package/dist/RouteHttp.js +18 -1
  29. package/dist/RouteHttp.js.map +1 -1
  30. package/dist/RouteMount.js +1 -1
  31. package/dist/RouteMount.js.map +1 -1
  32. package/dist/System.d.ts +1 -1
  33. package/dist/System.d.ts.map +1 -1
  34. package/dist/System.js.map +1 -1
  35. package/dist/_ChildProcess.d.ts +1 -1
  36. package/dist/_ChildProcess.d.ts.map +1 -1
  37. package/dist/_ChildProcess.js.map +1 -1
  38. package/dist/bun/BunRoute.d.ts +1 -1
  39. package/dist/bun/BunRoute.d.ts.map +1 -1
  40. package/dist/bun/BunRoute.js +102 -33
  41. package/dist/bun/BunRoute.js.map +1 -1
  42. package/dist/bun/BunServer.d.ts.map +1 -1
  43. package/dist/bun/BunServer.js.map +1 -1
  44. package/dist/cloudflare/CloudflareTunnel.d.ts +12 -0
  45. package/dist/cloudflare/CloudflareTunnel.d.ts.map +1 -0
  46. package/dist/{x/cloudflare → cloudflare}/CloudflareTunnel.js +1 -1
  47. package/dist/cloudflare/CloudflareTunnel.js.map +1 -0
  48. package/dist/cloudflare/index.d.ts.map +1 -0
  49. package/dist/cloudflare/index.js.map +1 -0
  50. package/dist/index.d.ts +3 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +3 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/jsx-runtime.d.ts +8 -0
  55. package/dist/jsx-runtime.d.ts.map +1 -0
  56. package/dist/{hyper/jsx-runtime.js → jsx-runtime.js} +2 -2
  57. package/dist/jsx-runtime.js.map +1 -0
  58. package/dist/studio/routes/errors/route.d.ts.map +1 -1
  59. package/dist/studio/routes/errors/route.js +3 -4
  60. package/dist/studio/routes/errors/route.js.map +1 -1
  61. package/dist/studio/routes/fiberDetail.d.ts.map +1 -1
  62. package/dist/studio/routes/fiberDetail.js +1 -2
  63. package/dist/studio/routes/fiberDetail.js.map +1 -1
  64. package/dist/studio/routes/fibers/route.d.ts.map +1 -1
  65. package/dist/studio/routes/fibers/route.js +3 -4
  66. package/dist/studio/routes/fibers/route.js.map +1 -1
  67. package/dist/studio/routes/logs/route.d.ts.map +1 -1
  68. package/dist/studio/routes/logs/route.js +3 -4
  69. package/dist/studio/routes/logs/route.js.map +1 -1
  70. package/dist/studio/routes/metrics/route.d.ts.map +1 -1
  71. package/dist/studio/routes/metrics/route.js +3 -4
  72. package/dist/studio/routes/metrics/route.js.map +1 -1
  73. package/dist/studio/routes/route.d.ts +1 -1
  74. package/dist/studio/routes/routes/route.d.ts.map +1 -1
  75. package/dist/studio/routes/routes/route.js +1 -2
  76. package/dist/studio/routes/routes/route.js.map +1 -1
  77. package/dist/studio/routes/services/route.d.ts.map +1 -1
  78. package/dist/studio/routes/services/route.js +1 -2
  79. package/dist/studio/routes/services/route.js.map +1 -1
  80. package/dist/studio/routes/system/route.d.ts.map +1 -1
  81. package/dist/studio/routes/system/route.js +3 -4
  82. package/dist/studio/routes/system/route.js.map +1 -1
  83. package/dist/studio/routes/traceDetail.d.ts.map +1 -1
  84. package/dist/studio/routes/traceDetail.js +1 -2
  85. package/dist/studio/routes/traceDetail.js.map +1 -1
  86. package/dist/studio/routes/traces/route.d.ts.map +1 -1
  87. package/dist/studio/routes/traces/route.js +3 -4
  88. package/dist/studio/routes/traces/route.js.map +1 -1
  89. package/dist/studio/routes/tree.d.ts +1 -1
  90. package/dist/studio/ui/Errors.d.ts +1 -1
  91. package/dist/studio/ui/Errors.d.ts.map +1 -1
  92. package/dist/studio/ui/Fibers.d.ts +2 -2
  93. package/dist/studio/ui/Fibers.d.ts.map +1 -1
  94. package/dist/studio/ui/Logs.d.ts +1 -1
  95. package/dist/studio/ui/Logs.d.ts.map +1 -1
  96. package/dist/studio/ui/Metrics.d.ts +1 -1
  97. package/dist/studio/ui/Metrics.d.ts.map +1 -1
  98. package/dist/studio/ui/Routes.d.ts +1 -1
  99. package/dist/studio/ui/Routes.d.ts.map +1 -1
  100. package/dist/studio/ui/Services.d.ts +1 -1
  101. package/dist/studio/ui/Services.d.ts.map +1 -1
  102. package/dist/studio/ui/Shell.d.ts +2 -2
  103. package/dist/studio/ui/Shell.d.ts.map +1 -1
  104. package/dist/studio/ui/System.d.ts +1 -1
  105. package/dist/studio/ui/System.d.ts.map +1 -1
  106. package/dist/studio/ui/Traces.d.ts +3 -3
  107. package/dist/studio/ui/Traces.d.ts.map +1 -1
  108. package/dist/tailscale/TailscaleTunnel.d.ts +16 -0
  109. package/dist/tailscale/TailscaleTunnel.d.ts.map +1 -0
  110. package/dist/{x/tailscale → tailscale}/TailscaleTunnel.js +2 -2
  111. package/dist/tailscale/TailscaleTunnel.js.map +1 -0
  112. package/dist/tailscale/index.d.ts.map +1 -0
  113. package/dist/tailscale/index.js.map +1 -0
  114. package/dist/tailwind/TailwindPlugin.d.ts.map +1 -0
  115. package/dist/tailwind/TailwindPlugin.js.map +1 -0
  116. package/dist/tailwind/compile.d.ts.map +1 -0
  117. package/dist/{x/tailwind → tailwind}/compile.js +1 -1
  118. package/dist/tailwind/compile.js.map +1 -0
  119. package/dist/tailwind/index.d.ts +3 -0
  120. package/dist/tailwind/index.d.ts.map +1 -0
  121. package/dist/tailwind/index.js +3 -0
  122. package/dist/tailwind/index.js.map +1 -0
  123. package/dist/tailwind/plugin.d.ts.map +1 -0
  124. package/dist/{x/tailwind → tailwind}/plugin.js +1 -1
  125. package/dist/tailwind/plugin.js.map +1 -0
  126. package/package.json +37 -37
  127. package/src/{_Development.ts → Development.ts} +5 -0
  128. package/src/Fetch.ts +10 -37
  129. package/src/FileRouter.ts +1 -1
  130. package/src/GlobalLayer.ts +3 -1
  131. package/src/{hyper/HyperHtml.ts → Html.ts} +90 -30
  132. package/src/Route.ts +67 -11
  133. package/src/RouteBody.ts +87 -62
  134. package/src/RouteHttp.ts +19 -1
  135. package/src/RouteMount.ts +1 -1
  136. package/src/System.ts +1 -1
  137. package/src/_ChildProcess.ts +1 -1
  138. package/src/bun/BunRoute.ts +125 -37
  139. package/src/bun/BunServer.ts +1 -0
  140. package/src/{x/cloudflare → cloudflare}/CloudflareTunnel.ts +1 -1
  141. package/src/index.ts +3 -1
  142. package/src/jsx-runtime.ts +15 -0
  143. package/src/{hyper/jsx.d.ts → jsx.d.ts} +3 -3
  144. package/src/studio/routes/errors/route.tsx +3 -4
  145. package/src/studio/routes/fiberDetail.tsx +1 -2
  146. package/src/studio/routes/fibers/route.tsx +3 -4
  147. package/src/studio/routes/logs/route.tsx +3 -4
  148. package/src/studio/routes/metrics/route.tsx +3 -4
  149. package/src/studio/routes/routes/route.tsx +1 -2
  150. package/src/studio/routes/services/route.tsx +1 -2
  151. package/src/studio/routes/system/route.tsx +3 -4
  152. package/src/studio/routes/traceDetail.tsx +1 -2
  153. package/src/studio/routes/traces/route.tsx +3 -4
  154. package/src/{x/tailscale → tailscale}/TailscaleTunnel.ts +2 -2
  155. package/src/{x/tailwind → tailwind}/compile.ts +1 -1
  156. package/src/tailwind/index.ts +2 -0
  157. package/src/{x/tailwind → tailwind}/plugin.ts +1 -1
  158. package/dist/_Development.d.ts.map +0 -1
  159. package/dist/_Development.js.map +0 -1
  160. package/dist/hyper/Hyper.d.ts +0 -26
  161. package/dist/hyper/Hyper.d.ts.map +0 -1
  162. package/dist/hyper/Hyper.js +0 -24
  163. package/dist/hyper/Hyper.js.map +0 -1
  164. package/dist/hyper/HyperHtml.d.ts +0 -24
  165. package/dist/hyper/HyperHtml.d.ts.map +0 -1
  166. package/dist/hyper/HyperHtml.js.map +0 -1
  167. package/dist/hyper/HyperHtml.test.d.ts +0 -2
  168. package/dist/hyper/HyperHtml.test.d.ts.map +0 -1
  169. package/dist/hyper/HyperHtml.test.js +0 -283
  170. package/dist/hyper/HyperHtml.test.js.map +0 -1
  171. package/dist/hyper/HyperNode.d.ts +0 -14
  172. package/dist/hyper/HyperNode.d.ts.map +0 -1
  173. package/dist/hyper/HyperNode.js +0 -12
  174. package/dist/hyper/HyperNode.js.map +0 -1
  175. package/dist/hyper/HyperRoute.d.ts +0 -9
  176. package/dist/hyper/HyperRoute.d.ts.map +0 -1
  177. package/dist/hyper/HyperRoute.js +0 -33
  178. package/dist/hyper/HyperRoute.js.map +0 -1
  179. package/dist/hyper/HyperRoute.test.d.ts +0 -2
  180. package/dist/hyper/HyperRoute.test.d.ts.map +0 -1
  181. package/dist/hyper/HyperRoute.test.js +0 -84
  182. package/dist/hyper/HyperRoute.test.js.map +0 -1
  183. package/dist/hyper/html.d.ts +0 -12
  184. package/dist/hyper/html.d.ts.map +0 -1
  185. package/dist/hyper/html.js +0 -31
  186. package/dist/hyper/html.js.map +0 -1
  187. package/dist/hyper/index.d.ts +0 -7
  188. package/dist/hyper/index.d.ts.map +0 -1
  189. package/dist/hyper/index.js +0 -6
  190. package/dist/hyper/index.js.map +0 -1
  191. package/dist/hyper/jsx-runtime.d.ts +0 -8
  192. package/dist/hyper/jsx-runtime.d.ts.map +0 -1
  193. package/dist/hyper/jsx-runtime.js.map +0 -1
  194. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -12
  195. package/dist/x/cloudflare/CloudflareTunnel.d.ts.map +0 -1
  196. package/dist/x/cloudflare/CloudflareTunnel.js.map +0 -1
  197. package/dist/x/cloudflare/index.d.ts.map +0 -1
  198. package/dist/x/cloudflare/index.js.map +0 -1
  199. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -16
  200. package/dist/x/tailscale/TailscaleTunnel.d.ts.map +0 -1
  201. package/dist/x/tailscale/TailscaleTunnel.js.map +0 -1
  202. package/dist/x/tailscale/index.d.ts.map +0 -1
  203. package/dist/x/tailscale/index.js.map +0 -1
  204. package/dist/x/tailwind/TailwindPlugin.d.ts.map +0 -1
  205. package/dist/x/tailwind/TailwindPlugin.js.map +0 -1
  206. package/dist/x/tailwind/compile.d.ts.map +0 -1
  207. package/dist/x/tailwind/compile.js.map +0 -1
  208. package/dist/x/tailwind/plugin.d.ts.map +0 -1
  209. package/dist/x/tailwind/plugin.js.map +0 -1
  210. package/src/hyper/Hyper.ts +0 -55
  211. package/src/hyper/HyperHtml.test.tsx +0 -395
  212. package/src/hyper/HyperNode.ts +0 -33
  213. package/src/hyper/HyperRoute.test.tsx +0 -166
  214. package/src/hyper/HyperRoute.ts +0 -59
  215. package/src/hyper/html.ts +0 -47
  216. package/src/hyper/index.ts +0 -6
  217. package/src/hyper/jsx-runtime.ts +0 -15
  218. /package/dist/{x/cloudflare → cloudflare}/index.d.ts +0 -0
  219. /package/dist/{x/cloudflare → cloudflare}/index.js +0 -0
  220. /package/dist/{x/tailscale → tailscale}/index.d.ts +0 -0
  221. /package/dist/{x/tailscale → tailscale}/index.js +0 -0
  222. /package/dist/{x/tailwind → tailwind}/TailwindPlugin.d.ts +0 -0
  223. /package/dist/{x/tailwind → tailwind}/TailwindPlugin.js +0 -0
  224. /package/dist/{x/tailwind → tailwind}/compile.d.ts +0 -0
  225. /package/dist/{x/tailwind → tailwind}/plugin.d.ts +0 -0
  226. /package/src/{x/cloudflare → cloudflare}/index.ts +0 -0
  227. /package/src/{x/tailscale → tailscale}/index.ts +0 -0
  228. /package/src/{x/tailwind → tailwind}/TailwindPlugin.ts +0 -0
@@ -1,12 +0,0 @@
1
- import * as System from "../../System.ts";
2
- import { Effect, Layer, LogLevel } from "effect";
3
- export declare const start: (opts: {
4
- command?: string;
5
- tunnelName: string;
6
- tunnelUrl?: string;
7
- cleanLogs?: false;
8
- logLevel?: LogLevel.LogLevel;
9
- logPrefix?: string;
10
- }) => Effect.Effect<void, System.SystemError, import("../../_ChildProcess.ts").ChildProcessSpawner | import("effect/Scope").Scope>;
11
- export declare const layer: () => Layer.Layer<never, import("effect/ConfigError").ConfigError, import("../../_ChildProcess.ts").ChildProcessSpawner>;
12
- //# sourceMappingURL=CloudflareTunnel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CloudflareTunnel.d.ts","sourceRoot":"","sources":["../../../src/x/cloudflare/CloudflareTunnel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAU,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAgC,MAAM,QAAQ,CAAA;AAEtF,eAAO,MAAM,KAAK,GAAI,MAAM;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,iIA8BG,CAAA;AAEJ,eAAO,MAAM,KAAK,0HA2Bf,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CloudflareTunnel.js","sourceRoot":"","sources":["../../../src/x/cloudflare/CloudflareTunnel.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/x/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/x/cloudflare/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA"}
@@ -1,16 +0,0 @@
1
- import * as StartApp from "../../_StartApp.ts";
2
- import * as System from "../../System.ts";
3
- import * as Effect from "effect/Effect";
4
- import * as Layer from "effect/Layer";
5
- import * as LogLevel from "effect/LogLevel";
6
- export declare const start: (opts: {
7
- command?: string;
8
- port: number;
9
- public?: boolean;
10
- logLevel?: LogLevel.LogLevel;
11
- logPrefix?: string;
12
- }) => Effect.Effect<void, System.SystemError, import("../../_ChildProcess.ts").ChildProcessSpawner | import("effect/Scope").Scope>;
13
- export declare const layer: (opts?: {
14
- public?: boolean;
15
- }) => Layer.Layer<never, never, import("../../_ChildProcess.ts").ChildProcessSpawner | StartApp.StartApp>;
16
- //# sourceMappingURL=TailscaleTunnel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TailscaleTunnel.d.ts","sourceRoot":"","sources":["../../../src/x/tailscale/TailscaleTunnel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAiE3C,eAAO,MAAM,KAAK,GAAI,MAAM;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,iIAOG,CAAA;AAEJ,eAAO,MAAM,KAAK,GAAI,OAAO;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,wGA4B9C,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TailscaleTunnel.js","sourceRoot":"","sources":["../../../src/x/tailscale/TailscaleTunnel.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/x/tailscale/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/x/tailscale/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TailwindPlugin.d.ts","sourceRoot":"","sources":["../../../src/x/tailwind/TailwindPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAIpC,eAAO,MAAM,IAAI,GAAI,OAAO;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA;CACpC,KAAG,SAgKH,CAAA;AAqED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAwC7D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TailwindPlugin.js","sourceRoot":"","sources":["../../../src/x/tailwind/TailwindPlugin.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/x/tailwind/compile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,UAAU,IAAI,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGjG,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;AAE9B,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAA;AAExF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;IAErB,iBAAiB,CAAC,EAAE,QAAQ,CAAA;IAC5B,gBAAgB,CAAC,EAAE,QAAQ,CAAA;CAC5B;AAmDD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,EACnB,OAAO,EAAE,cAAc,GACtB,UAAU,CAAC,OAAO,WAAW,CAAC,CAIhC;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAI/F;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACrC,gBAAgB,CAAC,EAAE,QAAQ;;;;GA4B5B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../src/x/tailwind/compile.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/x/tailwind/plugin.ts"],"names":[],"mappings":";AAcA,wBAEE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/x/tailwind/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,WAAW,CAAA;AAClC,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD,uEAAuE;AACvE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpE,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AACzE,MAAM,QAAQ,GAAG,QAAQ;IACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;IACxC,CAAC,CAAC,WAAW;QACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AAEnB,8CAA8C;AAC9C,eAAe,cAAc,CAAC,IAAI,CAAC;IACjC,QAAQ;CACT,CAAC,CAAA"}
@@ -1,55 +0,0 @@
1
- import * as Context from "effect/Context"
2
- import * as Fiber from "effect/Fiber"
3
- import * as Option from "effect/Option"
4
- import type { JSX } from "./jsx.d.ts"
5
-
6
- type Elements = JSX.IntrinsicElements
7
-
8
- type Children = JSX.Children
9
-
10
- export type { Children, Elements, JSX }
11
-
12
- export class Hyper extends Context.Tag("Hyper")<Hyper, {}>() {}
13
-
14
- const NoChildren: ReadonlyArray<never> = Object.freeze([])
15
-
16
- type Primitive = string | number | boolean | null | undefined
17
-
18
- export type HyperType = string | HyperComponent
19
-
20
- export type HyperProps = {
21
- [key: string]: Primitive | ReadonlyArray<Primitive> | HyperNode | HyperNode[] | null | undefined
22
- }
23
-
24
- export type HyperComponent = (props: HyperProps) => HyperNode | Primitive
25
-
26
- export interface HyperNode {
27
- type: HyperType
28
- props: HyperProps
29
- }
30
-
31
- export function h(type: HyperType, props: HyperProps): HyperNode {
32
- return {
33
- type,
34
- props: {
35
- ...props,
36
- children: props.children ?? NoChildren,
37
- },
38
- }
39
- }
40
-
41
- export function unsafeUse<Value>(tag: Context.Tag<any, Value>) {
42
- const currentFiber = Option.getOrThrow(Fiber.getCurrentFiber())
43
- const context = currentFiber.currentContext
44
-
45
- return Context.unsafeGet(context, tag)
46
- }
47
-
48
- export type GenericJsxObject = {
49
- type: any
50
- props: any
51
- }
52
-
53
- export function isGenericJsxObject(value: unknown): value is GenericJsxObject {
54
- return typeof value === "object" && value !== null && "type" in value && "props" in value
55
- }
@@ -1,395 +0,0 @@
1
- /** @jsxImportSource effect-start */
2
- import * as test from "bun:test"
3
- import * as HyperHtml from "./HyperHtml.ts"
4
- import * as HyperNode from "./HyperNode.ts"
5
-
6
- test.it("boolean true attributes render without value (React-like)", () => {
7
- const node = HyperNode.make("div", {
8
- hidden: true,
9
- disabled: true,
10
- "data-active": true,
11
- })
12
-
13
- const html = HyperHtml.renderToString(node)
14
-
15
- test.expect(html).toBe("<div hidden disabled data-active></div>")
16
- })
17
-
18
- test.it("boolean false attributes are omitted", () => {
19
- const node = HyperNode.make("div", {
20
- hidden: false,
21
- disabled: false,
22
- "data-active": false,
23
- })
24
-
25
- const html = HyperHtml.renderToString(node)
26
-
27
- test.expect(html).toBe("<div></div>")
28
- })
29
-
30
- test.it("string attributes render with values", () => {
31
- const node = HyperNode.make("div", {
32
- id: "test",
33
- class: "my-class",
34
- "data-value": "hello",
35
- })
36
-
37
- const html = HyperHtml.renderToString(node)
38
-
39
- test.expect(html).toBe('<div id="test" class="my-class" data-value="hello"></div>')
40
- })
41
-
42
- test.it("number attributes render with values", () => {
43
- const node = HyperNode.make("input", {
44
- type: "number",
45
- min: 0,
46
- max: 100,
47
- value: 50,
48
- })
49
-
50
- const html = HyperHtml.renderToString(node)
51
-
52
- test.expect(html).toBe('<input type="number" min="0" max="100" value="50">')
53
- })
54
-
55
- test.it("null and undefined attributes are omitted", () => {
56
- const node = HyperNode.make("div", {
57
- id: null,
58
- class: undefined,
59
- "data-test": "value",
60
- })
61
-
62
- const html = HyperHtml.renderToString(node)
63
-
64
- test.expect(html).toBe('<div data-test="value"></div>')
65
- })
66
-
67
- test.it("mixed boolean and string attributes", () => {
68
- const node = HyperNode.make("input", {
69
- type: "checkbox",
70
- checked: true,
71
- disabled: false,
72
- name: "test",
73
- value: "on",
74
- })
75
-
76
- const html = HyperHtml.renderToString(node)
77
-
78
- test.expect(html).toBe('<input type="checkbox" checked name="test" value="on">')
79
- })
80
-
81
- test.it("data-* attributes with object values use single-quoted JSON", () => {
82
- const node = HyperNode.make("div", {
83
- "data-signals": {
84
- draft: "",
85
- pendingDraft: "",
86
- username: "User123",
87
- },
88
- })
89
-
90
- const html = HyperHtml.renderToString(node)
91
-
92
- test
93
- .expect(html)
94
- .toBe(`<div data-signals='{"draft":"","pendingDraft":"","username":"User123"}'></div>`)
95
- })
96
-
97
- test.it("data-* attributes with array values use single-quoted JSON", () => {
98
- const node = HyperNode.make("div", {
99
- "data-items": [1, 2, 3],
100
- })
101
-
102
- const html = HyperHtml.renderToString(node)
103
-
104
- test.expect(html).toBe("<div data-items='[1,2,3]'></div>")
105
- })
106
-
107
- test.it("data-* attributes with nested object values use single-quoted JSON", () => {
108
- const node = HyperNode.make("div", {
109
- "data-config": {
110
- user: { name: "John", active: true },
111
- settings: { theme: "dark" },
112
- },
113
- })
114
-
115
- const html = HyperHtml.renderToString(node)
116
-
117
- test
118
- .expect(html)
119
- .toBe(
120
- `<div data-config='{"user":{"name":"John","active":true},"settings":{"theme":"dark"}}'></div>`,
121
- )
122
- })
123
-
124
- test.it("data-* object values with single quotes in values are escaped", () => {
125
- const node = HyperNode.make("div", {
126
- "data-signals": {
127
- message: "it's a test",
128
- name: "O'Brien",
129
- },
130
- })
131
-
132
- const html = HyperHtml.renderToString(node)
133
-
134
- test
135
- .expect(html)
136
- .toBe(`<div data-signals='{"message":"it&#39;s a test","name":"O&#39;Brien"}'></div>`)
137
- })
138
-
139
- test.it("data-* string values are not JSON stringified", () => {
140
- const node = HyperNode.make("div", {
141
- "data-value": "hello world",
142
- })
143
-
144
- const html = HyperHtml.renderToString(node)
145
-
146
- test.expect(html).toBe('<div data-value="hello world"></div>')
147
- })
148
-
149
- test.it("non-data attributes with object values are not JSON stringified", () => {
150
- const node = HyperNode.make("div", {
151
- style: "color: red",
152
- })
153
-
154
- const html = HyperHtml.renderToString(node)
155
-
156
- test.expect(html).toBe('<div style="color: red"></div>')
157
- })
158
-
159
- test.it("script with function child renders as IIFE", () => {
160
- const handler = (window: Window) => {
161
- console.log("Hello from", window.document.title)
162
- }
163
-
164
- const node = HyperNode.make("script", {
165
- children: handler,
166
- })
167
-
168
- const html = HyperHtml.renderToString(node)
169
-
170
- test.expect(html).toBe(`<script>(${handler.toString()})(window)</script>`)
171
- })
172
-
173
- test.describe("raw text escaping", () => {
174
- test.it("script children escapes closing tag", () => {
175
- const html = HyperHtml.renderToString(<script>{'console.log("</script>")'}</script>)
176
-
177
- test.expect(html).toBe('<script>console.log("<\\/script>")</script>')
178
- test.expect(html).not.toContain("</script><")
179
- })
180
-
181
- test.it("style children escapes closing tag", () => {
182
- const html = HyperHtml.renderToString(<style>{'div::after { content: "</style>" }'}</style>)
183
-
184
- test.expect(html).toBe('<style>div::after { content: "<\\/style>" }</style>')
185
- test.expect(html).not.toContain("</style><")
186
- })
187
-
188
- test.it("script dangerouslySetInnerHTML escapes closing tag", () => {
189
- const node = HyperNode.make("script", {
190
- dangerouslySetInnerHTML: { __html: 'console.log("</script>")' },
191
- })
192
-
193
- const html = HyperHtml.renderToString(node)
194
-
195
- test.expect(html).toBe('<script>console.log("<\\/script>")</script>')
196
- })
197
-
198
- test.it("case-insensitive closing tags are escaped", () => {
199
- const html = HyperHtml.renderToString(<script>{'x = "</Script></SCRIPT></sCrIpT>"'}</script>)
200
-
201
- test.expect(html).toBe('<script>x = "<\\/Script><\\/SCRIPT><\\/sCrIpT>"</script>')
202
- })
203
-
204
- test.it("closing tag with whitespace is escaped", () => {
205
- const html = HyperHtml.renderToString(<script>{'x = "</script >"'}</script>)
206
-
207
- test.expect(html).toBe('<script>x = "<\\/script >"</script>')
208
- })
209
-
210
- test.it("XSS via script injection in script children", () => {
211
- const userInput = '</script><script>alert("xss")</script>'
212
- const html = HyperHtml.renderToString(<script>{`var data = "${userInput}"`}</script>)
213
-
214
- test.expect(html).not.toMatch(/<\/script.*<script/i)
215
- })
216
-
217
- test.it("XSS via script injection in style children", () => {
218
- const userInput = '</style><script>alert("xss")</script>'
219
- const html = HyperHtml.renderToString(<style>{`div::after { content: "${userInput}" }`}</style>)
220
-
221
- test.expect(html).not.toMatch(/<\/style.*<script/i)
222
- })
223
-
224
- test.it("XSS via script injection in dangerouslySetInnerHTML", () => {
225
- const userInput = '</script><script>alert("xss")</script>'
226
- const node = HyperNode.make("script", {
227
- dangerouslySetInnerHTML: { __html: `var data = "${userInput}"` },
228
- })
229
-
230
- const html = HyperHtml.renderToString(node)
231
-
232
- test.expect(html).not.toMatch(/<\/script.*<script/i)
233
- })
234
-
235
- test.it("XSS via dangerouslySetInnerHTML", () => {
236
- const userInput = '</script><script>alert("xss")</script>'
237
- const node = HyperNode.make("script", {
238
- dangerouslySetInnerHTML: { __html: `var data = "${userInput}"` },
239
- })
240
-
241
- const html = HyperHtml.renderToString(node)
242
-
243
- test.expect(html).not.toMatch(/<\/script.*<script/i)
244
- })
245
-
246
- test.it("function child with closing tag in string literal", () => {
247
- const html = HyperHtml.renderToString(
248
- <script>
249
- {(window: Window) => {
250
- const x = "</script><script>alert(1)</script>"
251
- window.document.title = x
252
- }}
253
- </script>,
254
- )
255
-
256
- test.expect(html).not.toMatch(/<\/script.*<script/i)
257
- })
258
-
259
- test.it("multiple closing tags in one string", () => {
260
- const html = HyperHtml.renderToString(<script>{'a = "</script>"; b = "</script>"'}</script>)
261
-
262
- test.expect(html).toBe('<script>a = "<\\/script>"; b = "<\\/script>"</script>')
263
- })
264
-
265
- test.it("partial closing tag sequences are escaped", () => {
266
- const html = HyperHtml.renderToString(<script>{'x = "</" + "script>"'}</script>)
267
-
268
- test.expect(html).toBe('<script>x = "<\\/" + "script>"</script>')
269
- })
270
-
271
- test.it("style dangerouslySetInnerHTML escapes closing tag", () => {
272
- const node = HyperNode.make("style", {
273
- dangerouslySetInnerHTML: { __html: 'div::after { content: "</style>" }' },
274
- })
275
-
276
- const html = HyperHtml.renderToString(node)
277
-
278
- test.expect(html).not.toMatch(/<\/style.*</)
279
- })
280
-
281
- test.it("escaped output is still valid JS", () => {
282
- const html = HyperHtml.renderToString(<script>{'var x = "</script>"'}</script>)
283
-
284
- const content = html.replace("<script>", "").replace("</script>", "")
285
- const fn = new Function(content)
286
- fn()
287
- })
288
- })
289
-
290
- test.it("script with arrow function child renders as IIFE", () => {
291
- const node = HyperNode.make("script", {
292
- children: (window: Window) => {
293
- window.alert("test")
294
- },
295
- })
296
-
297
- const html = HyperHtml.renderToString(node)
298
-
299
- test.expect(html).toContain("<script>(")
300
- test.expect(html).toContain(")(window)</script>")
301
- test.expect(html).toContain("window.alert")
302
- })
303
-
304
- test.it("script with string child renders without escaping", () => {
305
- const node = HyperNode.make("script", {
306
- children: "console.log('hello')",
307
- })
308
-
309
- const html = HyperHtml.renderToString(node)
310
-
311
- test.expect(html).toBe("<script>console.log('hello')</script>")
312
- })
313
-
314
- test.it("script with string child preserves ampersands and quotes", () => {
315
- const node = HyperNode.make("script", {
316
- children: 'if (a && b) { console.log("yes") }',
317
- })
318
-
319
- const html = HyperHtml.renderToString(node)
320
-
321
- test.expect(html).toBe('<script>if (a && b) { console.log("yes") }</script>')
322
- })
323
-
324
- test.it("style tag content is not escaped", () => {
325
- const node = HyperNode.make("style", {
326
- children: ".foo > .bar { content: '&'; }",
327
- })
328
-
329
- const html = HyperHtml.renderToString(node)
330
-
331
- test.expect(html).toBe("<style>.foo > .bar { content: '&'; }</style>")
332
- })
333
-
334
- test.it("script with attributes and no children", () => {
335
- const node = HyperNode.make("script", {
336
- type: "module",
337
- src: "https://example.com/app.js",
338
- })
339
-
340
- const html = HyperHtml.renderToString(node)
341
-
342
- test.expect(html).toBe('<script type="module" src="https://example.com/app.js"></script>')
343
- })
344
-
345
- test.it("normal tag string content is escaped", () => {
346
- const node = HyperNode.make("div", {
347
- children: "a && b",
348
- })
349
-
350
- const html = HyperHtml.renderToString(node)
351
-
352
- test.expect(html).toBe("<div>a &amp;&amp; b</div>")
353
- })
354
-
355
- test.it("data-* function values are serialized with toString", () => {
356
- const node = HyperNode.make("div", {
357
- "data-on-click": () => console.log("clicked"),
358
- })
359
-
360
- const html = HyperHtml.renderToString(node)
361
-
362
- test.expect(html).toContain("data-on-click=")
363
- test.expect(html).toContain("console.log")
364
- })
365
-
366
- test.it("data-* object values don't render as [object Object]", () => {
367
- const html = HyperHtml.renderToString(
368
- <div data-signals={{ isOpen: false, count: 42 }}>content</div>,
369
- )
370
-
371
- test.expect(html).toBe(`<div data-signals='{"isOpen":false,"count":42}'>content</div>`)
372
- test.expect(html).not.toContain("[object Object]")
373
- })
374
-
375
- test.it("dangerouslySetInnerHTML injects html without escaping", () => {
376
- const html = HyperHtml.renderToString(
377
- <div dangerouslySetInnerHTML={{ __html: '<span class="bold">hello & world</span>' }} />,
378
- )
379
-
380
- test.expect(html).toBe('<div><span class="bold">hello & world</span></div>')
381
- })
382
-
383
- test.it("JSX component with data-* object values", () => {
384
- function TestComponent() {
385
- return (
386
- <div data-signals={{ isOpen: false }}>
387
- <span>nested</span>
388
- </div>
389
- )
390
- }
391
-
392
- const html = HyperHtml.renderToString(<TestComponent />)
393
-
394
- test.expect(html).toBe(`<div data-signals='{"isOpen":false}'><span>nested</span></div>`)
395
- })
@@ -1,33 +0,0 @@
1
- export const TypeId = "~effect-start/HyperNode" as const
2
-
3
- const NoChildren: ReadonlyArray<never> = Object.freeze([])
4
-
5
- type Primitive = string | number | boolean | null | undefined
6
-
7
- export type Type = string | HyperComponent
8
-
9
- export type Props = {
10
- [key: string]:
11
- | Primitive
12
- | HyperNode
13
- | Iterable<Primitive | HyperNode>
14
- | Record<string, unknown>
15
- | ((window: Window) => void)
16
- }
17
-
18
- export type HyperComponent = (props: Props) => HyperNode | Primitive
19
-
20
- export interface HyperNode {
21
- type: Type
22
- props: Props
23
- }
24
-
25
- export function make(type: Type, props: Props): HyperNode {
26
- return {
27
- type,
28
- props: {
29
- ...props,
30
- children: props.children ?? NoChildren,
31
- },
32
- }
33
- }