fibrae 0.1.3 → 0.2.1

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 (47) hide show
  1. package/dist/core.d.ts +7 -5
  2. package/dist/core.js +9 -8
  3. package/dist/core.js.map +1 -1
  4. package/dist/dom.js +42 -3
  5. package/dist/dom.js.map +1 -1
  6. package/dist/fiber-render.js +53 -15
  7. package/dist/fiber-render.js.map +1 -1
  8. package/dist/hydration-state.d.ts +28 -0
  9. package/dist/hydration-state.js +56 -0
  10. package/dist/hydration-state.js.map +1 -0
  11. package/dist/hydration.js +3 -9
  12. package/dist/hydration.js.map +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.js +5 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/render.js +3 -3
  17. package/dist/render.js.map +1 -1
  18. package/dist/router/Navigator.d.ts +3 -1
  19. package/dist/router/Navigator.js +33 -40
  20. package/dist/router/Navigator.js.map +1 -1
  21. package/dist/router/Route.d.ts +1 -1
  22. package/dist/router/Route.js +1 -1
  23. package/dist/router/Route.js.map +1 -1
  24. package/dist/router/Router.d.ts +72 -15
  25. package/dist/router/Router.js +99 -21
  26. package/dist/router/Router.js.map +1 -1
  27. package/dist/router/RouterBuilder.d.ts +56 -2
  28. package/dist/router/RouterBuilder.js +86 -7
  29. package/dist/router/RouterBuilder.js.map +1 -1
  30. package/dist/router/RouterOutlet.d.ts +29 -5
  31. package/dist/router/RouterOutlet.js +58 -7
  32. package/dist/router/RouterOutlet.js.map +1 -1
  33. package/dist/router/RouterState.d.ts +2 -2
  34. package/dist/router/RouterState.js +2 -2
  35. package/dist/router/index.d.ts +3 -3
  36. package/dist/router/index.js +1 -1
  37. package/dist/router/index.js.map +1 -1
  38. package/dist/runtime.d.ts +12 -5
  39. package/dist/runtime.js +6 -2
  40. package/dist/runtime.js.map +1 -1
  41. package/dist/server.d.ts +11 -13
  42. package/dist/server.js +25 -27
  43. package/dist/server.js.map +1 -1
  44. package/dist/shared.d.ts +61 -5
  45. package/dist/shared.js +51 -0
  46. package/dist/shared.js.map +1 -1
  47. package/package.json +1 -1
package/dist/shared.js CHANGED
@@ -6,6 +6,57 @@ import * as Deferred from "effect/Deferred";
6
6
  import * as Data from "effect/Data";
7
7
  import * as Context from "effect/Context";
8
8
  import { Atom as BaseAtom } from "@effect-atom/atom";
9
+ // =============================================================================
10
+ // Component Scope Service
11
+ // =============================================================================
12
+ /**
13
+ * Service tag for accessing the current component's scope and mount signal.
14
+ *
15
+ * Provides:
16
+ * - `scope`: Register cleanup logic that runs when the component unmounts
17
+ * - `mounted`: Deferred that resolves after the component's DOM subtree commits
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const JsonEditor = () =>
22
+ * Effect.gen(function* () {
23
+ * const { scope, mounted } = yield* ComponentScope;
24
+ * const containerRef = { current: null as HTMLDivElement | null };
25
+ *
26
+ * // Fork an effect that waits for mount, then initializes
27
+ * yield* pipe(
28
+ * Effect.gen(function* () {
29
+ * yield* Deferred.await(mounted); // Wait for DOM to be ready
30
+ * const editor = monaco.create(containerRef.current!);
31
+ * yield* Scope.addFinalizer(scope, Effect.sync(() => editor.dispose()));
32
+ * }),
33
+ * Effect.forkScoped,
34
+ * Scope.extend(scope)
35
+ * );
36
+ *
37
+ * return <div ref={el => containerRef.current = el} />;
38
+ * });
39
+ * ```
40
+ *
41
+ * For simple cleanup without waiting for mount:
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * const JsonEditor = () =>
46
+ * Effect.gen(function* () {
47
+ * const { scope } = yield* ComponentScope;
48
+ *
49
+ * // Register cleanup that runs on unmount
50
+ * yield* Scope.addFinalizer(scope, Effect.sync(() => {
51
+ * console.log("Editor unmounted");
52
+ * }));
53
+ *
54
+ * return <div />;
55
+ * });
56
+ * ```
57
+ */
58
+ export class ComponentScope extends Context.Tag("fibrae/ComponentScope")() {
59
+ }
9
60
  /**
10
61
  * Helper to check if a key is an event handler
11
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA0HrD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAqB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;AAE9F;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAyC,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;AAE9E,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAOzE;CAAG;AAEL,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAK7D;CAAG;AAEL;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAK7D;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAKzE;CAAG"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAI1C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKrD,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAGrE;CAAG;AA4HN;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAqB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;AAE9F;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAyC,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;AAE9E,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAOzE;CAAG;AAEL,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAK7D;CAAG;AAEL;;;;;;GAMG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAK7D;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAKzE;CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fibrae",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "Effect-first JSX renderer with automatic reactivity",
5
5
  "license": "MIT",
6
6
  "repository": {