fibrae 0.1.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.
- package/dist/components.d.ts +40 -0
- package/dist/components.js +63 -0
- package/dist/components.js.map +1 -0
- package/dist/core.d.ts +25 -0
- package/dist/core.js +46 -0
- package/dist/core.js.map +1 -0
- package/dist/dom.d.ts +16 -0
- package/dist/dom.js +67 -0
- package/dist/dom.js.map +1 -0
- package/dist/fiber-render.d.ts +33 -0
- package/dist/fiber-render.js +1069 -0
- package/dist/fiber-render.js.map +1 -0
- package/dist/h.d.ts +19 -0
- package/dist/h.js +26 -0
- package/dist/h.js.map +1 -0
- package/dist/hydration.d.ts +30 -0
- package/dist/hydration.js +375 -0
- package/dist/hydration.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-runtime/index.d.ts +29 -0
- package/dist/jsx-runtime/index.js +61 -0
- package/dist/jsx-runtime/index.js.map +1 -0
- package/dist/render.d.ts +19 -0
- package/dist/render.js +325 -0
- package/dist/render.js.map +1 -0
- package/dist/router/History.d.ts +129 -0
- package/dist/router/History.js +241 -0
- package/dist/router/History.js.map +1 -0
- package/dist/router/Link.d.ts +52 -0
- package/dist/router/Link.js +131 -0
- package/dist/router/Link.js.map +1 -0
- package/dist/router/Navigator.d.ts +108 -0
- package/dist/router/Navigator.js +225 -0
- package/dist/router/Navigator.js.map +1 -0
- package/dist/router/Route.d.ts +65 -0
- package/dist/router/Route.js +143 -0
- package/dist/router/Route.js.map +1 -0
- package/dist/router/Router.d.ts +167 -0
- package/dist/router/Router.js +328 -0
- package/dist/router/Router.js.map +1 -0
- package/dist/router/RouterBuilder.d.ts +128 -0
- package/dist/router/RouterBuilder.js +112 -0
- package/dist/router/RouterBuilder.js.map +1 -0
- package/dist/router/RouterOutlet.d.ts +57 -0
- package/dist/router/RouterOutlet.js +132 -0
- package/dist/router/RouterOutlet.js.map +1 -0
- package/dist/router/RouterState.d.ts +102 -0
- package/dist/router/RouterState.js +94 -0
- package/dist/router/RouterState.js.map +1 -0
- package/dist/router/index.d.ts +28 -0
- package/dist/router/index.js +31 -0
- package/dist/router/index.js.map +1 -0
- package/dist/runtime.d.ts +55 -0
- package/dist/runtime.js +68 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scope-utils.d.ts +14 -0
- package/dist/scope-utils.js +29 -0
- package/dist/scope-utils.js.map +1 -0
- package/dist/server.d.ts +112 -0
- package/dist/server.js +313 -0
- package/dist/server.js.map +1 -0
- package/dist/shared.d.ts +136 -0
- package/dist/shared.js +53 -0
- package/dist/shared.js.map +1 -0
- package/dist/tracking.d.ts +23 -0
- package/dist/tracking.js +53 -0
- package/dist/tracking.js.map +1 -0
- package/package.json +62 -0
package/dist/tracking.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Stream from "effect/Stream";
|
|
3
|
+
import * as Scope from "effect/Scope";
|
|
4
|
+
import { Atom, Registry as AtomRegistry } from "@effect-atom/atom";
|
|
5
|
+
import { isStream } from "./shared.js";
|
|
6
|
+
import { FibraeRuntime } from "./runtime.js";
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Stream Normalization
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Normalize component output to a Stream.
|
|
12
|
+
* Components can return VElement, Effect<VElement, E>, or Stream<VElement, E>.
|
|
13
|
+
* Error type is preserved through the conversion.
|
|
14
|
+
*/
|
|
15
|
+
export const normalizeToStream = (value) => {
|
|
16
|
+
if (isStream(value))
|
|
17
|
+
return value;
|
|
18
|
+
if (Effect.isEffect(value))
|
|
19
|
+
return Stream.fromEffect(value);
|
|
20
|
+
return Stream.succeed(value);
|
|
21
|
+
};
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// Atom Tracking
|
|
24
|
+
// =============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Create a tracking registry that records which atoms are accessed
|
|
27
|
+
*/
|
|
28
|
+
export const makeTrackingRegistry = (realRegistry, accessedAtoms) => {
|
|
29
|
+
return new Proxy(realRegistry, {
|
|
30
|
+
get(target, prop, receiver) {
|
|
31
|
+
if (prop === "get") {
|
|
32
|
+
return (atom) => {
|
|
33
|
+
accessedAtoms.add(atom);
|
|
34
|
+
return realRegistry.get(atom);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return Reflect.get(target, prop, receiver);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to atom changes for reactivity.
|
|
43
|
+
* Uses registry.subscribe directly (like atom-react) instead of streams.
|
|
44
|
+
* This is simpler and more efficient - subscriptions are synchronous
|
|
45
|
+
* and cleanup is handled via scope finalizers.
|
|
46
|
+
*/
|
|
47
|
+
export const subscribeToAtoms = (atoms, onUpdate, runtime, scope) => Effect.forEach(atoms, (atom) => Effect.gen(function* () {
|
|
48
|
+
// Subscribe immediately - returns unsubscribe function
|
|
49
|
+
const unsubscribe = runtime.registry.subscribe(atom, onUpdate);
|
|
50
|
+
// Register unsubscribe to run when scope closes
|
|
51
|
+
yield* Scope.addFinalizer(scope, Effect.sync(unsubscribe));
|
|
52
|
+
}), { discard: true });
|
|
53
|
+
//# sourceMappingURL=tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../src/tracking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAiB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAuF,EACpD,EAAE;IACrC,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAAmC,EACnC,aAAsC,EACf,EAAE;IACzB,OAAO,IAAI,KAAK,CAAC,YAAsB,EAAE;QACvC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAwB,EAAE,EAAE;oBAClC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAA0B,CAAC;AAC9B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAA8B,EAC9B,QAAoB,EACpB,OAAsB,EACtB,KAA4B,EACO,EAAE,CACrC,MAAM,CAAC,OAAO,CACZ,KAAK,EACL,CAAC,IAAI,EAAE,EAAE,CACP,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,uDAAuD;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/D,gDAAgD;IAChD,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,EACJ,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fibrae",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Effect-first JSX renderer with automatic reactivity",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/DanielFGray/lumon"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"module": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"types": "./dist/index.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./jsx-runtime": {
|
|
23
|
+
"import": "./dist/jsx-runtime/index.js",
|
|
24
|
+
"types": "./dist/jsx-runtime/index.d.ts"
|
|
25
|
+
},
|
|
26
|
+
"./jsx-dev-runtime": {
|
|
27
|
+
"import": "./dist/jsx-runtime/index.js",
|
|
28
|
+
"types": "./dist/jsx-runtime/index.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./server": {
|
|
31
|
+
"import": "./dist/server.js",
|
|
32
|
+
"types": "./dist/server.d.ts"
|
|
33
|
+
},
|
|
34
|
+
"./shared": {
|
|
35
|
+
"import": "./dist/shared.js",
|
|
36
|
+
"types": "./dist/shared.d.ts"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"dev:server": "vite dev",
|
|
41
|
+
"build:watch": "tsc --watch -p .",
|
|
42
|
+
"build": "tsc -p .",
|
|
43
|
+
"types:watch": "tsc -p . --noEmit --watch",
|
|
44
|
+
"types:check": "tsc -p . --noEmit"
|
|
45
|
+
},
|
|
46
|
+
"optionalDependencies": {
|
|
47
|
+
"@effect/platform-browser": "catalog:",
|
|
48
|
+
"@effect/platform-bun": "catalog:",
|
|
49
|
+
"@effect/platform-node": "catalog:"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@effect-atom/atom": "catalog:",
|
|
53
|
+
"effect": "catalog:"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@effect/language-service": "catalog:",
|
|
57
|
+
"typescript": "catalog:"
|
|
58
|
+
},
|
|
59
|
+
"overrides": {
|
|
60
|
+
"effect": "catalog:"
|
|
61
|
+
}
|
|
62
|
+
}
|