@getforma/core 1.0.8 → 1.0.9
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/{chunk-TBWZZ3SI.js → chunk-3G7ET4O5.js} +32 -8
- package/dist/chunk-3G7ET4O5.js.map +1 -0
- package/dist/{chunk-BARF67I6.cjs → chunk-6FW5E54W.cjs} +32 -6
- package/dist/chunk-6FW5E54W.cjs.map +1 -0
- package/dist/{chunk-7Q7LIV23.js → chunk-AFRFF7XL.js} +64 -20
- package/dist/chunk-AFRFF7XL.js.map +1 -0
- package/dist/{chunk-7L3KHGEA.cjs → chunk-T33QUD2Y.cjs} +95 -51
- package/dist/chunk-T33QUD2Y.cjs.map +1 -0
- package/dist/formajs-runtime-hardened.global.js.map +1 -1
- package/dist/formajs-runtime.global.js.map +1 -1
- package/dist/formajs.global.js +100 -24
- package/dist/formajs.global.js.map +1 -1
- package/dist/http.cjs +2 -2
- package/dist/http.js +1 -1
- package/dist/index.cjs +63 -52
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -1
- package/dist/index.d.ts +25 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/runtime-hardened.cjs.map +1 -1
- package/dist/runtime-hardened.js.map +1 -1
- package/dist/runtime.cjs +23 -23
- package/dist/runtime.js +2 -2
- package/dist/server.cjs +4 -4
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-7L3KHGEA.cjs.map +0 -1
- package/dist/chunk-7Q7LIV23.js.map +0 -1
- package/dist/chunk-BARF67I6.cjs.map +0 -1
- package/dist/chunk-TBWZZ3SI.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -134,6 +134,11 @@ declare function untrack<T>(fn: () => T): T;
|
|
|
134
134
|
* Uses alien-signals' `effectScope` under the hood for native graph-level
|
|
135
135
|
* effect tracking, with a userland disposer list for non-effect cleanup
|
|
136
136
|
* (e.g., event listeners, DOM references, timers).
|
|
137
|
+
*
|
|
138
|
+
* Roots created inside another root are automatically owned by the parent
|
|
139
|
+
* (Solid-style). When the parent is disposed, all child roots are disposed
|
|
140
|
+
* too. Use {@link createUnownedRoot} for roots that must outlive their
|
|
141
|
+
* lexical parent (e.g., mount points, test harnesses).
|
|
137
142
|
*/
|
|
138
143
|
/**
|
|
139
144
|
* Create a reactive root scope.
|
|
@@ -143,6 +148,9 @@ declare function untrack<T>(fn: () => T): T;
|
|
|
143
148
|
* userland level (via registerDisposer). The returned `dispose` function
|
|
144
149
|
* tears down everything.
|
|
145
150
|
*
|
|
151
|
+
* Roots created inside another root are automatically owned by the parent.
|
|
152
|
+
* When the parent is disposed, this root is disposed too.
|
|
153
|
+
*
|
|
146
154
|
* ```ts
|
|
147
155
|
* const dispose = createRoot(() => {
|
|
148
156
|
* createEffect(() => console.log(count()));
|
|
@@ -152,6 +160,22 @@ declare function untrack<T>(fn: () => T): T;
|
|
|
152
160
|
* ```
|
|
153
161
|
*/
|
|
154
162
|
declare function createRoot<T>(fn: (dispose: () => void) => T): T;
|
|
163
|
+
/**
|
|
164
|
+
* Create a reactive root that is NOT owned by any parent root.
|
|
165
|
+
*
|
|
166
|
+
* Use this for roots that must outlive their lexical parent:
|
|
167
|
+
* top-level mount points, island hydration, test harnesses, etc.
|
|
168
|
+
*
|
|
169
|
+
* ```ts
|
|
170
|
+
* createRoot(() => {
|
|
171
|
+
* // This root outlives the parent even though it's nested:
|
|
172
|
+
* createUnownedRoot((dispose) => {
|
|
173
|
+
* // effects here survive parent disposal
|
|
174
|
+
* });
|
|
175
|
+
* });
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
declare function createUnownedRoot<T>(fn: (dispose: () => void) => T): T;
|
|
155
179
|
|
|
156
180
|
/**
|
|
157
181
|
* Register a cleanup function in the current reactive scope.
|
|
@@ -1146,4 +1170,4 @@ declare function onIntersect(el: HTMLElement, handler: (entry: IntersectionObser
|
|
|
1146
1170
|
*/
|
|
1147
1171
|
declare function onMutation(el: HTMLElement, handler: (mutations: MutationRecord[]) => void, options?: MutationObserverInit): () => void;
|
|
1148
1172
|
|
|
1149
|
-
export { $, $$, type CleanupFn, type ComponentDef, type Context, type CreateListOptions, type Dispatch, type ErrorHandler, type EventBus, Fragment, type HistoryControls, type IslandHydrateFn, type KeyOptions, type ListTransitionHooks, type PersistOptions, type ReconcileResult, type Ref, type SetupFn, SignalGetter, type StoreSetter, type SwitchCase, activateIslands, addClass, batch, children, cleanup, closest, createBus, createComputed, createContext, createEffect, createErrorBoundary, createHistory, createList, createMemo, createPortal, createReducer, createRef, createRoot, createShow, createStore, createSuspense, createSwitch, createText, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, fragment, h, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, removeClass, setAttr, setHTMLUnsafe, setStyle, setText, siblings, template, templateMany, toggleClass, trackDisposer, unprovide, untrack };
|
|
1173
|
+
export { $, $$, type CleanupFn, type ComponentDef, type Context, type CreateListOptions, type Dispatch, type ErrorHandler, type EventBus, Fragment, type HistoryControls, type IslandHydrateFn, type KeyOptions, type ListTransitionHooks, type PersistOptions, type ReconcileResult, type Ref, type SetupFn, SignalGetter, type StoreSetter, type SwitchCase, activateIslands, addClass, batch, children, cleanup, closest, createBus, createComputed, createContext, createEffect, createErrorBoundary, createHistory, createList, createMemo, createPortal, createReducer, createRef, createRoot, createShow, createStore, createSuspense, createSwitch, createText, createUnownedRoot, deactivateAllIslands, deactivateIsland, defineComponent, delegate, disposeComponent, fragment, h, hydrateIsland, inject, mount, nextSibling, on, onCleanup, onError, onIntersect, onKey, onMount, onMutation, onResize, onUnmount, parent, persist, prevSibling, provide, reconcileList, removeClass, setAttr, setHTMLUnsafe, setStyle, setText, siblings, template, templateMany, toggleClass, trackDisposer, unprovide, untrack };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { hydrateIsland } from './chunk-
|
|
2
|
-
export { Fragment, cleanup, createList, createShow, fragment, h, hydrateIsland, reconcileList } from './chunk-
|
|
3
|
-
import { internalEffect, createRoot, untrack, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, reportError, batch } from './chunk-
|
|
4
|
-
export { batch, createEffect, createMemo, createReducer, createRef, createResource, createRoot, getBatchDepth, isComputed, isEffect, isEffectScope, isSignal, on, onCleanup, onError, trigger, untrack } from './chunk-
|
|
1
|
+
import { hydrateIsland } from './chunk-AFRFF7XL.js';
|
|
2
|
+
export { Fragment, cleanup, createList, createShow, fragment, h, hydrateIsland, reconcileList } from './chunk-AFRFF7XL.js';
|
|
3
|
+
import { internalEffect, createUnownedRoot, createRoot, untrack, registerDisposer, createEffect, pushSuspenseContext, popSuspenseContext, __DEV__, reportError, batch } from './chunk-3G7ET4O5.js';
|
|
4
|
+
export { batch, createEffect, createMemo, createReducer, createRef, createResource, createRoot, createUnownedRoot, getBatchDepth, isComputed, isEffect, isEffectScope, isSignal, on, onCleanup, onError, trigger, untrack } from './chunk-3G7ET4O5.js';
|
|
5
5
|
import { createSignal } from './chunk-HLM5BZZQ.js';
|
|
6
6
|
export { createComputed, createSignal } from './chunk-HLM5BZZQ.js';
|
|
7
7
|
|
|
@@ -25,12 +25,12 @@ function mount(component, container) {
|
|
|
25
25
|
}
|
|
26
26
|
let disposeRoot;
|
|
27
27
|
if (target.hasAttribute("data-forma-ssr")) {
|
|
28
|
-
|
|
28
|
+
createUnownedRoot((dispose) => {
|
|
29
29
|
disposeRoot = dispose;
|
|
30
30
|
hydrateIsland(component, target);
|
|
31
31
|
});
|
|
32
32
|
} else {
|
|
33
|
-
const dom =
|
|
33
|
+
const dom = createUnownedRoot((dispose) => {
|
|
34
34
|
disposeRoot = dispose;
|
|
35
35
|
return component();
|
|
36
36
|
});
|
|
@@ -111,6 +111,13 @@ function createSwitch(value, cases, fallback) {
|
|
|
111
111
|
if (DEBUG) console.log("[forma:switch] inserted", currentNode.nodeName, "before end marker");
|
|
112
112
|
}
|
|
113
113
|
});
|
|
114
|
+
registerDisposer(() => {
|
|
115
|
+
for (const entry of cache2.values()) {
|
|
116
|
+
entry.dispose();
|
|
117
|
+
}
|
|
118
|
+
cache2.clear();
|
|
119
|
+
currentNode = null;
|
|
120
|
+
});
|
|
114
121
|
fragment2.__switchDispose = () => {
|
|
115
122
|
switchDispose();
|
|
116
123
|
for (const entry of cache2.values()) {
|
|
@@ -326,7 +333,7 @@ function hydrateIslandRoot(root, id, componentName, hydrateFn, sharedProps) {
|
|
|
326
333
|
const props = loadIslandProps(root, id, sharedProps);
|
|
327
334
|
root.setAttribute("data-forma-status", "hydrating");
|
|
328
335
|
let activeRoot = root;
|
|
329
|
-
|
|
336
|
+
createUnownedRoot((dispose) => {
|
|
330
337
|
activeRoot = hydrateIsland(() => hydrateFn(root, props), root);
|
|
331
338
|
activeRoot.__formaDispose = dispose;
|
|
332
339
|
});
|