@memoized-dom/data 0.0.1 → 0.0.2

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/action.d.ts CHANGED
@@ -1,44 +1,38 @@
1
1
  import { SnapshotNotifier } from './notifications';
2
2
  import type { FetchEnvironment } from './resource';
3
- import type { Action, ActionListener, ActionOptions, ActionSnapshot } from './types';
4
- interface MutableActionSnapshot<T> {
3
+ import type { Action, ActionOptions, ActionResult, ActionResultListener, ActionResultSnapshot } from './types';
4
+ interface MutableActionResultSnapshot<T> {
5
+ id: string;
5
6
  data: T | undefined;
6
7
  error: import('./errors').RequestError | null;
7
- status: ActionSnapshot<T>['status'];
8
- pending: boolean;
8
+ state: ActionResultSnapshot<T>['state'];
9
9
  }
10
- interface ActionInvocation {
11
- readonly abortController: AbortController;
12
- readonly sequence: number;
13
- cancelled: boolean;
14
- }
15
- declare class ActionController<T> {
10
+ declare class ActionResultController<T> {
16
11
  readonly store: ActionStore;
17
- readonly invocations: Set<ActionInvocation>;
18
- readonly notifier: SnapshotNotifier<ActionSnapshot<T>>;
19
- snapshot: MutableActionSnapshot<T>;
20
- sequence: number;
12
+ readonly abortController: AbortController;
13
+ readonly notifier: SnapshotNotifier<ActionResultSnapshot<T>>;
14
+ readonly snapshot: MutableActionResultSnapshot<T>;
21
15
  disposed: boolean;
22
- hasData: boolean;
23
- constructor(store: ActionStore);
24
- begin(invocation: ActionInvocation): void;
25
- isVisible(invocation: ActionInvocation): boolean;
26
- succeed(invocation: ActionInvocation, result: T): void;
27
- fail(invocation: ActionInvocation, error: import('./errors').RequestError): void;
28
- cancelInvocation(invocation: ActionInvocation, reason?: unknown): void;
29
- finish(invocation: ActionInvocation): void;
30
- abort(reset: boolean): void;
16
+ finished: boolean;
17
+ constructor(store: ActionStore, id: string);
18
+ begin(): boolean;
19
+ succeed(result: T): void;
20
+ fail(error: import('./errors').RequestError): void;
21
+ cancel(): void;
22
+ finish(): void;
31
23
  dispose(): void;
32
24
  }
33
25
  export declare class ActionStore {
34
26
  private readonly active;
35
- track(controller: ActionController<unknown>): void;
36
- untrack(controller: ActionController<unknown>): void;
27
+ private nextId;
28
+ id(): string;
29
+ track(controller: ActionResultController<unknown>): void;
30
+ untrack(controller: ActionResultController<unknown>): void;
37
31
  clear(): void;
38
32
  }
39
33
  export declare function createAction<TResult, TInput>(environment: FetchEnvironment, store: ActionStore, target: string | URL, options: ActionOptions<TResult, TInput>): Action<TResult, TInput>;
40
- export declare function subscribeAction<T, TInput>(action: Action<T, TInput>, listener: ActionListener<T>): () => void;
41
- export declare function actionSnapshot<T, TInput>(action: Action<T, TInput>): ActionSnapshot<T>;
42
- export declare function disposeAction<T, TInput>(action: Action<T, TInput>): void;
34
+ export declare function subscribeActionResult<T>(result: ActionResult<T>, listener: ActionResultListener<T>): () => void;
35
+ export declare function actionResultSnapshot<T>(result: ActionResult<T>): ActionResultSnapshot<T>;
36
+ export declare function disposeActionResult<T>(result: ActionResult<T>): void;
43
37
  export {};
44
38
  //# sourceMappingURL=action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EACV,MAAM,EAEN,cAAc,EACd,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,UAAU,qBAAqB,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,KAAK,EAAE,OAAO,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9C,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD,cAAM,gBAAgB,CAAC,CAAC;IAaV,QAAQ,CAAC,KAAK,EAAE,WAAW;IAZvC,QAAQ,CAAC,WAAW,wBAA+B;IACnD,QAAQ,CAAC,QAAQ,sCAAuD;IACxE,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAKhC;IACF,QAAQ,SAAK;IACb,QAAQ,UAAS;IACjB,OAAO,UAAS;gBAEK,KAAK,EAAE,WAAW;IAEvC,KAAK,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAWzC,SAAS,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAIhD,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI;IAStD,IAAI,CACF,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,OAAO,UAAU,EAAE,YAAY,GACrC,IAAI;IAOP,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAiBtE,MAAM,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAY1C,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkB3B,OAAO,IAAI,IAAI;CAOhB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI;IAIpD,KAAK,IAAI,IAAI;CAGd;AAaD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAC1C,WAAW,EAAE,gBAAgB,EAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GACtC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CA+GzB;AAUD,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EACvC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EACzB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,MAAM,IAAI,CAIZ;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EACtC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GACxB,cAAc,CAAC,CAAC,CAAC,CAInB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EACrC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GACxB,IAAI,CAEN"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EACV,MAAM,EACN,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAEjB,UAAU,2BAA2B,CAAC,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,KAAK,EAAE,OAAO,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9C,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CACzC;AAQD,cAAM,sBAAsB,CAAC,CAAC;IAQ1B,QAAQ,CAAC,KAAK,EAAE,WAAW;IAP7B,QAAQ,CAAC,eAAe,kBAAyB;IACjD,QAAQ,CAAC,QAAQ,4CAAuD;IACxE,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC;IAClD,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAEjB,YACW,KAAK,EAAE,WAAW,EAC3B,EAAE,EAAE,MAAM,EASX;IAED,KAAK,IAAI,OAAO,CASf;IAED,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAMvB;IAED,IAAI,CAAC,KAAK,EAAE,OAAO,UAAU,EAAE,YAAY,GAAG,IAAI,CAMjD;IAED,MAAM,IAAI,IAAI,CAQb;IAED,MAAM,IAAI,IAAI,CAIb;IAED,OAAO,IAAI,IAAI,CAKd;CACF;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IACrE,OAAO,CAAC,MAAM,CAAK;IAEnB,EAAE,IAAI,MAAM,CAGX;IAED,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI,CAEvD;IAED,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI,CAEzD;IAED,KAAK,IAAI,IAAI,CAEZ;CACF;AAoED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAC1C,WAAW,EAAE,gBAAgB,EAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GACtC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAezB;AAYD,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,MAAM,IAAI,CAMZ;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,oBAAoB,CAAC,CAAC,CAAC,CAEzB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAEpE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Ambient data-runtime selection (SSR request isolation).
3
+ *
4
+ * The default `$fetch`/`$action` exports are singleton-backed. Server
5
+ * rendering activates a request-local data runtime for the duration of its
6
+ * synchronous work; with no override active every export behaves exactly as
7
+ * before.
8
+ */
9
+ import type { DataRuntime } from './types';
10
+ export declare function getActiveDataRuntime(): DataRuntime;
11
+ export declare function runWithDataRuntime<T>(runtime: DataRuntime, fn: () => T): T;
12
+ /** Activate a runtime; returns the previous active runtime for restoration. */
13
+ export declare function setActiveDataRuntime(runtime: DataRuntime | null): DataRuntime;
14
+ //# sourceMappingURL=active-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-runtime.d.ts","sourceRoot":"","sources":["../src/active-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAiB3C,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE1E;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,WAAW,CAKb"}
@@ -0,0 +1,2 @@
1
+ import{createStorage as e,getExtensionStore as t}from"@memoized-dom/runtime";var n=class extends Error{kind;status;statusText;data;issues;constructor(e,t){super(e,{cause:t.cause}),this.name=`RequestError`,this.kind=t.kind,this.status=t.status??null,this.statusText=t.statusText??null,this.data=t.data,this.issues=t.issues}};function r(e){return(e instanceof DOMException||e instanceof Error)&&e.name===`AbortError`}function i(e){return e instanceof n?e:new n(e instanceof Error?e.message:`Network request failed`,{kind:`network`,cause:e})}function a(e){if(e.length===0)return;let t=e.length===1?e[0]:AggregateError(e,`Data runtime listeners failed`),n=globalThis.reportError;try{n?.(t)}catch{}}var o=class{current;listeners=new Set;emitting=!1;pending=!1;constructor(e){this.current=e}notify(){if(this.emitting){this.pending=!0;return}this.emitting=!0;let e=[];try{do{this.pending=!1;let t=this.current();for(let n of[...this.listeners])if(this.listeners.has(n)){try{n(t)}catch(t){e.push(t)}if(this.pending)break}}while(this.pending)}finally{this.emitting=!1}a(e)}subscribe(e){this.listeners.add(e);try{e(this.current())}catch(t){throw this.listeners.delete(e),t}return()=>this.listeners.delete(e)}clear(){this.listeners.clear()}};async function s(e,t){let r=await e[`~standard`].validate(t);if(r.issues!==void 0)throw new n(`Response validation failed`,{kind:`validation`,issues:r.issues,data:t});return r.value}const c=new WeakMap;let ee=1;function te(e){if(e===void 0)return`none`;let t=c.get(e);return t===void 0&&(t=ee++,c.set(e,t)),String(t)}function ne(e,t){let n=e.indexOf(`#`),r=n===-1?e:e.slice(0,n),i=r.indexOf(`?`),a=i===-1?r:r.slice(0,i),o=new URLSearchParams(i===-1?``:r.slice(i+1));if(t!==void 0)for(let e of Object.keys(t).sort()){let n=t[e];if(n!==void 0){if(o.delete(e),Array.isArray(n))for(let t of n)o.append(e,String(t));else o.append(e,String(n))}}o.sort();let s=o.toString();return`${a}${s===``?``:`?${s}`}`}function l(e,t,n){let r=e instanceof URL?e.href:e;return ne(n===void 0?r:new URL(r,n).href,t)}function re(e){return[...new Headers(e).entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join(`&`)}function ie(e){return(typeof e==`string`?[e]:e).map(e=>`${typeof e}:${encodeURIComponent(String(e))}`).join(`|`)}function ae(e,t,n,r,i,a){if(i!==void 0){let e=`${t}|explicit:${ie(i)}`;return t===`GET`||t===`HEAD`?e:`${e}|body:${r}`}return`${t}|${e}|${re(n)}|body:${r}|schema:${te(a)}`}function oe(e){let t=(e??`GET`).toUpperCase();if(t!==`GET`&&t!==`POST`&&t!==`PUT`&&t!==`PATCH`&&t!==`DELETE`&&t!==`HEAD`&&t!==`OPTIONS`)throw TypeError(`Unsupported $fetch method '${String(e)}'`);return t}const u=new WeakMap;let se=1;function d(e){let t=u.get(e);return t===void 0&&(t=se++,u.set(e,t)),`opaque:${t}`}function f(){return{left:2166136261,right:2654435769,length:0}}function p(e,t){e.left=Math.imul(e.left^t,16777619),e.right=Math.imul(e.right^t,2246822507)+3266489909,e.length++}function m(e,t){for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);p(e,r&255),p(e,r>>>8)}}function h(e,t){return`${e}:${t.length}:${(t.left>>>0).toString(36)}:${(t.right>>>0).toString(36)}`}function g(e,t){let n=f();return m(n,t),h(e,n)}function _(e){let t=f();for(let n of e)p(t,n);return h(`bytes`,t)}function ce(e){let t=new FormData,n=f();for(let[r,i]of e)m(n,`${r.length}:`),m(n,r),typeof i==`string`?(t.append(r,i),m(n,`=text:${i.length}:`),m(n,i)):(t.append(r,i,i.name),m(n,`=file:${d(i)}`)),m(n,`;`);return{body:t,identity:h(`form`,n)}}function v(e,t){if(e===void 0)return{body:void 0,identity:`none`};if(typeof e==`string`)return{body:e,identity:g(`text`,e)};if(e instanceof URLSearchParams){let t=new URLSearchParams(e);return{body:t,identity:g(`params`,t.toString())}}if(e instanceof Blob)return{body:e,identity:d(e)};if(e instanceof FormData)return ce(e);if(e instanceof ArrayBuffer){let t=new Uint8Array(e.slice(0));return{body:t,identity:_(t)}}if(ArrayBuffer.isView(e)){let t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength).slice();return{body:t,identity:_(t)}}let n=JSON.stringify(e);if(n===void 0)throw TypeError(`Request body must be JSON-serializable`);return t.has(`content-type`)||t.set(`content-type`,`application/json`),{body:n,identity:g(`json`,n)}}async function le(e,t){let i;try{i=e.status===204||e.status===205?void 0:(e.headers.get(`content-type`)?.toLowerCase()??``).includes(`json`)?await e.json():await e.text()}catch(t){throw r(t)?t:e.ok?new n(`Failed to decode response`,{kind:`decode`,status:e.status,statusText:e.statusText,cause:t}):new n(`Request failed with status ${e.status}`,{kind:`http`,status:e.status,statusText:e.statusText,cause:t})}if(!e.ok)throw new n(`Request failed with status ${e.status}`,{kind:`http`,status:e.status,statusText:e.statusText,data:i});return t===void 0?i:s(t,i)}function y(e){return e.reason??new DOMException(`The operation was aborted`,`AbortError`)}function b(e,t){return t.aborted?Promise.reject(y(t)):new Promise((n,r)=>{let i=()=>r(y(t));t.addEventListener(`abort`,i,{once:!0});try{Promise.resolve(e()).then(n,r).finally(()=>{t.removeEventListener(`abort`,i)})}catch(e){t.removeEventListener(`abort`,i),r(e)}})}function ue(e,t){return v(e,t).body}function de(e){return Object.freeze({...e})}var fe=class{store;abortController=new AbortController;notifier=new o(()=>de(this.snapshot));snapshot;disposed=!1;finished=!1;constructor(e,t){this.store=e,this.snapshot={id:t,data:void 0,error:null,state:`idle`},e.track(this)}begin(){return this.disposed||this.finished||this.abortController.signal.aborted?(this.finish(),!1):(this.snapshot.error=null,this.snapshot.state=`pending`,this.notifier.notify(),!0)}succeed(e){this.disposed||this.abortController.signal.aborted||(this.snapshot.data=e,this.snapshot.error=null,this.snapshot.state=`success`,this.notifier.notify())}fail(e){this.disposed||this.abortController.signal.aborted||(this.snapshot.data=void 0,this.snapshot.error=e,this.snapshot.state=`error`,this.notifier.notify())}cancel(){this.finished||(this.abortController.abort(),this.snapshot.data=void 0,this.snapshot.error=null,this.snapshot.state=`idle`,this.notifier.notify(),this.finish())}finish(){this.finished||(this.finished=!0,this.store.untrack(this))}dispose(){this.disposed||(this.cancel(),this.disposed=!0,this.notifier.clear())}},pe=class{active=new Set;nextId=0;id(){return this.nextId+=1,`action-${this.nextId}`}track(e){this.active.add(e)}untrack(e){this.active.delete(e)}clear(){for(let e of[...this.active])e.cancel()}};const me=new WeakMap;function he(e){let t={};return Object.defineProperties(t,{id:{enumerable:!0,get:()=>e.snapshot.id},state:{enumerable:!0,get:()=>e.snapshot.state},data:{enumerable:!0,get:()=>e.snapshot.data},error:{enumerable:!0,get:()=>e.snapshot.error}}),Object.freeze(t),me.set(t,e),t}async function ge(e,t,n,a,o){if(t.begin())try{let r=new Headers(a.headers),i=ue(o,r),s=await b(()=>e.fetch()(n,{method:a.method??`POST`,headers:r,body:i,signal:t.abortController.signal}),t.abortController.signal),c=await b(()=>le(s,a.validate),t.abortController.signal);t.succeed(c);try{await a.onSuccess?.(c,o)}catch{}}catch(e){if(!r(e)){let n=i(e);t.fail(n);try{await a.onError?.(n,o)}catch{}}}finally{t.finish()}}function _e(e,t,n,r){let i=l(n,r.query,e.baseURL);return n=>{let a=new fe(t,t.id()),o=he(a);return queueMicrotask(()=>{ge(e,a,i,r,n)}),o}}function x(e){let t=me.get(e);if(t===void 0)throw TypeError(`Value is not an action result from @memoized-dom/data`);return t}function ve(e,t){let n=x(e);if(n.disposed)throw Error(`Cannot subscribe to a disposed action result`);return n.notifier.subscribe(t)}function ye(e){return de(x(e).snapshot)}function be(e){x(e).dispose()}function xe(){let e=globalThis;return e.__MMD_DATA_CONTROLLERS__??=new WeakMap}const Se=new WeakMap;function S(e){let t=Object.freeze({kind:`memoized-dom.optimistic-change`});return Se.set(t,e),t}let Ce=1;function C(){return`request-${Ce++}`}const w=()=>({data:void 0,error:null,status:`idle`,pending:!1,refreshing:!1});function T(e){return Object.freeze({...e})}function E(e,t){return e===void 0?t===`GET`&&`active`:e}function we(e,t){return e===t||typeof e==`object`&&typeof t==`object`&&e.scope===t.scope}function Te(e,t){let n=e=>[...new Headers(e).entries()].sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}:${t}`).join(`
2
+ `);return n(e)===n(t)}function D(e,t){return e.identity===t.identity&&e.url===t.url&&e.method===t.method&&Te(e.headers,t.headers)&&e.bodyIdentity===t.bodyIdentity&&we(e.cache,t.cache)&&e.schema===t.schema&&e.signal===t.signal}var O=class{store;descriptor;consumers=new Set;snapshot=w();hasData=!1;cache;request=null;controller=null;generation=0;constructor(e,t){this.store=e,this.descriptor=t,this.cache=t.cache===!1?`active`:t.cache}add(e){this.consumers.add(e),e.receive(this,this.snapshot)}remove(e,t){this.consumers.delete(e),this.consumers.size===0&&(this.cache===`active`?this.store.delete(this,t):this.cancelRequest(t))}cancelRequest(e){if(this.controller!==null||this.request!==null){if(!this.snapshot.pending&&!this.snapshot.refreshing){this.controller=null,this.request=null;return}this.generation++,this.controller?.abort(e),this.controller=null,this.request=null,this.snapshot.error=null,this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.hasData?`success`:`idle`}}upgradeCache(e){typeof e==`object`&&(this.cache=e)}emit(){for(let e of this.consumers)e.receive(this,this.snapshot)}update(e){let t=this.snapshot.data,n=e(t);this.cancelRequest(),this.snapshot.data=n,this.snapshot.error=null,this.snapshot.status=`success`,this.hasData=!0,this.emit()}mutate(e){let t=this.snapshot.data;e(t),this.cancelRequest(),this.snapshot.data=t,this.snapshot.error=null,this.snapshot.status=`success`,this.hasData=!0,this.emit()}start(e=!1){if(this.request!==null)return this.request;if(!e&&this.hasData)return Promise.resolve(this.snapshot.data);let t=++this.generation,n=new AbortController;this.controller=n,this.snapshot.error=null,this.snapshot.pending=!0,this.snapshot.refreshing=this.hasData,this.snapshot.status=this.hasData?`success`:`pending`,this.emit();let a=b(()=>this.store.environment.fetch()(this.descriptor.url,{method:this.descriptor.method,headers:this.descriptor.headers,body:this.descriptor.body,signal:n.signal}),n.signal).then(e=>b(()=>le(e,this.descriptor.schema),n.signal)).then(e=>t===this.generation?(this.snapshot={data:e,error:null,status:`success`,pending:!1,refreshing:!1},this.hasData=!0,this.emit(),e):e,e=>{throw t===this.generation?n.signal.aborted||r(e)?(this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.hasData?`success`:`idle`,this.emit(),e):(this.snapshot.error=i(e),this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.hasData?`success`:`error`,this.emit(),this.snapshot.error):e}).finally(()=>{t===this.generation&&(this.request=null,this.controller=null)});return this.request=a,a.catch(()=>{}),a}dispose(e=!1,t){this.cancelRequest(t);for(let t of[...this.consumers])t.detachFrom(this,e);this.consumers.clear()}};function Ee(e){let{snapshot:t}=e,n;if(t.status===`success`){if(JSON.stringify(t.data)===void 0)return;n={status:`success`,data:t.data,revalidate:t.refreshing}}else if(t.status===`error`){let e=t.error;n={status:`error`,error:{kind:e?.kind??`network`,status:e?.status??null,statusText:e?.statusText??null,message:e?.message??`Request failed`}}}else if(t.pending)n={status:`pending`};else return;return{sourceId:e.descriptor.identity,contractId:`mmd-fetch/v1:${e.descriptor.schema?`validated`:`raw`}`,requestFingerprint:e.descriptor.identity,snapshot:n}}function De(e,t){let{snapshot:r}=t;if(r.status===`success`){e.snapshot={data:r.data,error:null,status:`success`,pending:!1,refreshing:r.revalidate},e.hasData=!0;return}if(r.status===`error`){e.snapshot={data:void 0,error:new n(r.error.message,{kind:r.error.kind,status:r.error.status??void 0,statusText:r.error.statusText??void 0}),status:`error`,pending:!1,refreshing:!1};return}e.snapshot={data:void 0,error:null,status:`pending`,pending:!0,refreshing:!1}}var Oe=class{environment;entries=new Map;allEntries=new Set;restoreRecords=new Map;constructor(e){this.environment=e}installRestoreRecords(e){let t=e.formatVersion;if(t!==1)throw TypeError(`Unsupported serialized data state format: ${String(t)}`);for(let t of e.sources)this.restoreRecords.set(t.sourceId,t)}delete(e,t){this.entries.get(e.descriptor.identity)===e&&this.entries.delete(e.descriptor.identity),this.allEntries.delete(e),e.dispose(!1,t)}takeRestoreRecord(e){let t=this.restoreRecords.get(e);if(t!==void 0)return this.restoreRecords.delete(e),t;for(let[t,n]of this.restoreRecords){if(t===e)continue;let r=t.split(`|`),i=e.split(`|`);if(r[0]===i[0]&&r.slice(2).join(`|`)===i.slice(2).join(`|`)){let e=r[1]??``,a=i[1]??``;if((e.startsWith(`http://`)||e.startsWith(`https://`)?new URL(e).pathname:e)===(a.startsWith(`http://`)||a.startsWith(`https://`)?new URL(a).pathname:a))return this.restoreRecords.delete(t),n}}}acquire(e,t,n=!1,r=!1){let i;if(e.cache===!1)i=new O(this,e),this.allEntries.add(i);else{let t=r?void 0:this.entries.get(e.identity);t===void 0?(i=new O(this,e),this.allEntries.add(i)):i=t,this.entries.set(e.identity,i),i.upgradeCache(e.cache)}i.add(t);let a=this.takeRestoreRecord(e.identity);return a!==void 0&&(De(i,a),i.emit()),(n||a===void 0&&(i.snapshot.status===`idle`||i.snapshot.status===`error`)||a!==void 0&&a.snapshot.status===`pending`)&&i.start(n).catch(()=>{}),i}async settle(e=5e3){let t=Date.now();for(;;){let n=[];for(let e of this.allEntries)e.request!==null&&n.push(e.request);if(n.length===0)return!0;let r=e-(Date.now()-t);if(r<=0)return!1;let i=Promise.allSettled(n),a,o=new Promise(e=>{a=setTimeout(e,r)});await Promise.race([i,o]),clearTimeout(a),await Promise.resolve(),await Promise.resolve()}}serialize(){let e=[];for(let t of this.allEntries){if(t.consumers.size===0)continue;let n=Ee(t);n!==void 0&&e.push(n)}return{formatVersion:1,sources:e}}clear(){for(let e of[...this.allEntries])e.dispose(!0);this.entries.clear(),this.allEntries.clear()}},ke=class{store;snapshot=w();entry=null;disposed=!1;removeSignalListener=null;notifier=new o(()=>T(this.snapshot));operationId=C();constructor(e,t,n=!1){this.store=e,this.descriptor=t,this.paused=n,this.bindSignal(t.signal)&&(n||this.attach(!1))}descriptor;paused;bindSignal(e){if(this.removeSignalListener?.(),this.removeSignalListener=null,e!==void 0){let t=()=>this.abort(y(e));if(e.aborted)return!1;e.addEventListener(`abort`,t,{once:!0}),this.removeSignalListener=()=>e.removeEventListener(`abort`,t)}return!0}attach(e,t=!1){if(this.disposed)throw Error(`Cannot refresh a disposed fetch resource`);this.entry=this.store.acquire(this.descriptor,this,e,t)}rebind(e,t){if(this.disposed)throw Error(`Cannot rebind a disposed fetch resource`);let n=this.paused===t&&D(this.descriptor,e);if(n)return;this.operationId=C();let r=!t&&this.descriptor.identity===e.identity&&!n,i=this.entry;if(i!==null&&(this.entry=null,i.remove(this)),this.descriptor=e,this.paused=t,this.snapshot=w(),!this.bindSignal(e.signal)||t){this.notify();return}this.attach(!1,r)}adopt(e){if(e===this)return;if(this.disposed||e.disposed)throw Error(`Cannot rebind a disposed fetch resource`);if(e.store!==this.store)throw e.dispose(),TypeError(`Cannot rebind fetch resources from different data runtimes`);if(this.paused===e.paused&&D(this.descriptor,e.descriptor)){e.dispose();return}this.operationId=e.operationId;let t=this.entry;if(t!==null&&(this.entry=null,t.remove(this)),this.descriptor=e.descriptor,this.paused=e.paused,this.snapshot=w(),!this.bindSignal(this.descriptor.signal)||this.paused){e.dispose(),this.notify();return}let n=e.entry;if(n===null){e.dispose(),this.notify();return}this.entry=n,n.add(this),n.remove(e),e.entry=null,e.dispose()}receive(e,t){(this.entry===null||this.entry===e)&&(this.snapshot={...t},this.notify())}detachFrom(e,t=!1){this.entry===e&&(this.entry=null,t&&(this.snapshot=w(),this.notify()))}notify(){this.notifier.notify()}refresh(){if(this.disposed)return Promise.reject(Error(`Cannot refresh a disposed fetch resource`));if(this.paused)return Promise.reject(TypeError(`Cannot refresh a fetch resource with a null target`));let e=this.descriptor.signal;if(e?.aborted)return Promise.reject(y(e));this.entry===null?(this.operationId=C(),this.attach(!0)):this.entry.request===null&&(this.operationId=C());let t=this.entry.start(!0);return e===void 0?t:b(()=>t,e)}abort(e){if(this.disposed)throw Error(`Cannot abort a disposed fetch resource`);this.detach(!0,e)}detach(e,t){let n=this.entry;n!==null&&(this.entry=null,n.remove(this,t)),this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.snapshot.status===`success`?`success`:`idle`,this.snapshot.error=null,e&&this.notify()}update(e){if(this.disposed)throw Error(`Cannot update a disposed fetch resource`);if(this.entry===null){let t=this.snapshot.data;this.snapshot.data=e(t),this.snapshot.status=`success`,this.snapshot.error=null,this.notify();return}this.entry.update(e)}mutate(e){if(this.disposed)throw Error(`Cannot mutate a disposed fetch resource`);if(this.entry===null){e(this.snapshot.data),this.snapshot.status=`success`,this.snapshot.error=null,this.notify();return}this.entry.mutate(e)}dispose(){this.disposed||(this.detach(!1),this.disposed=!0,this.removeSignalListener?.(),this.removeSignalListener=null,this.notifier.clear())}};const k=xe();function A(e){return Array.isArray(e.snapshot.data)?e.snapshot.data:[]}const j=new WeakMap;function M(e){let t=j.get(e);return t===void 0&&(t=new Set,j.set(e,t)),t}function N(e,t,n){if(Object.is(e[t.index],n))return t.index;let r=-1;for(let t=0;t<e.length;t++)if(Object.is(e[t],n)){if(r!==-1)return-1;r=t}return r}function P(e,t,n,r,i){n.outcome=r,n.result=i;let a=t.base;for(let e of t.steps)e.outcome===`pending`?a=e.temporary:e.outcome===`committed`&&(a=e.result);let o=t.visible;t.visible=a,Object.is(o,a)||e.update(e=>{let n=[...e??[]],r=N(n,t,o);return r!==-1&&(n[r]=a),n}),t.steps.every(e=>e.outcome!==`pending`)&&M(e).delete(t)}function Ae(e,t){let n=A(e).length;return e.update(e=>[...e??[],t]),S({rollback(){e.update(e=>{let r=[...e??[]],i=r[n]===t?n:r.lastIndexOf(t);return i!==-1&&r.splice(i,1),r})},commit(r){e.update(e=>{let i=[...e??[]],a=i[n]===t?n:i.lastIndexOf(t);return a!==-1&&(i[a]=r),i})}})}function je(e,t,n){let r=A(e),i=r.indexOf(t);if(i===-1)return S({rollback(){},commit(){}});let a=M(e),o=[...a].find(e=>Object.is(e.visible,t)&&N(r,e,t)===i);o===void 0&&(o={index:i,base:t,visible:t,steps:[]},a.add(o));let s={temporary:n,outcome:`pending`};return o.steps.push(s),o.visible=n,e.update(e=>(e??[]).map((e,t)=>t===i?n:e)),S({rollback(){P(e,o,s,`rolled-back`)},commit(t){P(e,o,s,`committed`,t)}})}function Me(e,t){let n=A(e).indexOf(t);return n===-1?S({rollback(){},commit(){}}):(e.update(e=>{let r=[...e??[]];return r[n]===t&&r.splice(n,1),r}),S({rollback(){e.update(e=>{let r=[...e??[]];return r.splice(Math.min(n,r.length),0,t),r})},commit(){}}))}function Ne(e,t,n,r){let{descriptor:i,paused:a}=F(t,n,r);return Pe(new ke(e,i,a))}function F(e,t,n){let r=oe(n.method);if(t===null)return{descriptor:{url:``,method:r,headers:n.headers,body:void 0,bodyIdentity:`none`,identity:`paused`,cache:E(n.cache,r),schema:n.validate,signal:n.signal},paused:!0};if((r===`GET`||r===`HEAD`)&&n.body!==void 0)throw TypeError(`$fetch ${r} requests cannot include a body`);let i=l(t,n.query,e.baseURL),a=new Headers(n.headers),o=v(n.body,a);return{descriptor:{url:i,method:r,headers:a,body:o.body,bodyIdentity:o.identity,identity:ae(i,r,a,o.identity,n.key,n.validate),cache:E(n.cache,r),schema:n.validate,signal:n.signal},paused:!1}}function Pe(e){let t=e,n={get data(){return e.snapshot.data},get error(){return e.snapshot.error},get status(){return e.snapshot.status},get pending(){return e.snapshot.pending},get refreshing(){return e.snapshot.refreshing},refresh:()=>e.refresh(),abort:()=>e.abort(),update:t=>e.update(t),mutate:t=>e.mutate(t),append:e=>Ae(t,e),replace:(e,n)=>je(t,e,n),remove:e=>Me(t,e)};return k.set(n,e),n}function I(e){let t=k.get(e);if(t===void 0)throw TypeError(`Value is not a fetch resource from @memoized-dom/data`);return t}function L(e,t){let n=I(e);if(n.disposed)throw Error(`Cannot subscribe to a disposed fetch resource`);return n.notifier.subscribe(t)}function R(e){I(e).dispose()}function z(e,t,n={}){let r=I(e),i=F(r.store.environment,t,n);r.rebind(i.descriptor,i.paused)}function Fe(e,t){I(e).adopt(I(t))}function B(e){return T(I(e).snapshot)}function V(e){return I(e).operationId}function Ie(e,t){return{baseURL:t??(typeof location>`u`?void 0:location.href),fetch(){let t=e??globalThis.fetch;if(t===void 0)throw Error(`No fetch implementation is available`);return t}}}const H=new Map;function Le(e,t){let n=H.get(e);H.set(e,{factory:t,version:(n?.version??0)+1})}function U(){return t(`mmd:module-source-instances`,()=>new Map)}const W=new WeakMap;function Re(e){let t=W.get(e);if(t!==void 0){for(let e of[...t])e();t.clear()}}function G(e){let t=U(),n=H.get(e.key);if(n===void 0)throw Error(`[memo-dom] module source '${e.key}' has no registered description`);let r=t.get(e.key);if(r!==void 0){if(r.version===n.version)return r.instance;R(r.instance)}let i=n.factory(),a={instance:i,version:n.version};t.set(e.key,a);let o=q(),s=W.get(o);return s===void 0&&(s=new Set,W.set(o,s)),s.add(()=>{t.get(e.key)===a&&t.delete(e.key)}),i}function K(e){return typeof e==`object`&&!!e&&e.__mmdModuleSource===!0}function ze(e){return{__mmdModuleSource:!0,key:e}}function Be(e,t){return q().$fetch(e,t)}function Ve(e,t,n={}){let r=U().get(e.key),i=H.get(e.key);r!==void 0&&r.version===i?.version&&z(r.instance,t,n)}function He(e){let t=G(e);if(t.status===`error`&&t.error!==null&&t.error!==void 0)throw t.error;return Array.isArray(t.data)?t.data:[]}function Ue(e={}){let t=Ie(e.fetch,e.baseURL),n=new Oe(t),r=new pe,i={$fetch:((e,r={})=>Ne(n,t,e,r)),$action:((e,n={})=>_e(t,r,e,n)),clear(){r.clear(),n.clear(),Re(i)},settle(e){return n.settle(e)},serializeState(){return n.serialize()},restoreState(e){n.installRestoreRecords(e)}};return i}const We=Ue();function Ge(e){let n=t(`mmd:data-runtime-active`,()=>({}));n.restoreState=t=>e.restoreState(t)}Ge(We);const Ke=e(`data`);let qe=null;function q(){return Ke.getStore()??qe??We}function Je(e,t){return Ke.run(e,t)}function Ye(e){let t=q();return qe=e,Ge(q()),t}var J=class extends globalThis.Error{binding;site;name=`UnresolvedDataReadError`;constructor(e,t){let n=e===void 0?``:` '${e}'${t===void 0?``:` at ${t}`}`;super(`Transparent data value${n} was read before it committed`),this.binding=e,this.site=t}};function Y(e){throw new globalThis.Error(`[memo-dom/data] <${e}> is compile-time syntax and cannot execute without the Memoized DOM compiler`)}function Xe(e){return Y(`Group`)}function Ze(e){return Y(`Pending`)}function Qe(e){return Y(`Error`)}function $e(e){return K(e)?G(e):e}function X(e){return $e(e)}const et=new WeakMap;function tt(e,t,n){let r=V(e),i=!0,a=()=>{},o=()=>{i&&(i=!1,a())};return a=L(e,s=>{if(i){if(V(e)!==r){o();return}if(t===`success`&&s.status===`success`&&!s.pending&&!s.refreshing&&s.error===null){i=!1,n(s.data,r),a();return}t===`error`&&!s.pending&&!s.refreshing&&s.error!==null&&(i=!1,n(s.error,r),a())}}),i||a(),o}function nt(e){let t=X(e),n=et.get(t);if(n!==void 0)return n;let r=Object.freeze({get id(){return V(t)},get status(){return t.status},get pending(){return t.pending},get refreshing(){return t.refreshing},get error(){return t.error},onSuccess(e){return tt(t,`success`,(t,n)=>e(t,n))},onError(e){return tt(t,`error`,(t,n)=>e(t,n))},refresh:()=>t.refresh(),abort:()=>t.abort()});return et.set(t,r),r}function rt(e,t,n={}){z(X(e),t,n)}function it(e,t){if(K(e))throw TypeError(`Module source references cannot adopt a local source`);Fe(X(e),X(t()))}function at(e,t,n){let r=B(X(e));if(r.status===`success`)return r.data;throw r.status===`error`&&r.error!==null?r.error:new J(t,n)}function ot(e){if(e==null)return;let t=B(X(e));if(t.status===`success`)return t.data;if(t.status===`error`&&t.error!==null)throw t.error}function st(e,t){let n=[];for(let t of e){if(t==null)return;let e=B(X(t));if(e.status===`error`&&e.error!==null)throw e.error;if(e.status!==`success`)return;n.push(e.data)}return t(...n)}function ct(e,t){return st(e,t)}function lt(e,t){let n=[];for(let t of e){let e=B(X(t));if(e.status!==`success`)return;n.push(e.data)}return t(...n)}function Z(e){for(let t of e){let e=B(X(t)).error;if(e!==null)return e}return null}function ut(e){return e.findIndex(e=>B(X(e)).error!==null)}function dt(e){return Z(e)===null&&e.some(e=>B(X(e)).status!==`success`)}function ft(e){return e.findIndex(e=>{let t=B(X(e));return t.error===null&&t.status!==`success`})}function pt(e){let t=Z(e);throw t===null?new J:t}function mt(e){for(let t of e)if(B(X(t)).error!==null)return X(t).refresh();return Promise.resolve()}function ht(e){return B(X(e))}function Q(e,t){let n=!0;return L(X(e),e=>{if(n){n=!1;return}t(e)})}function gt(e,t,n=!0){let r=Q(e,()=>t());return()=>{r(),n&&!K(e)&&R(X(e))}}function _t(e,t){let n=e.map(e=>Q(e,t));return()=>{for(let e of n)e()}}function vt(e){return K(e)?()=>{}:()=>R(X(e))}function yt(){return{value:null,disconnect:void 0,retired:new Set}}function $(e,t){let n=X(t),r=B(n);if(!r.pending&&!r.refreshing){R(n);return}let i={value:t,disconnect:()=>{}};e.retired.add(i),i.disconnect=L(n,t=>{t.pending||t.refreshing||(i.disconnect(),e.retired.delete(i),R(n))})}function bt(e,t,n){let r=t();r!==e.value&&(e.disconnect?.(),e.value!==null&&e.value!==void 0&&$(e,e.value),e.value=r,e.disconnect=r==null?void 0:gt(r,n,!1))}function xt(e){e.disconnect?.(),e.disconnect=void 0,e.value!==null&&e.value!==void 0&&$(e,e.value),e.value=null}export{Ue as A,L as B,mt as C,q as D,nt as E,Ve as F,be as H,G as I,ze as L,Le as M,K as N,Je as O,He as P,R,ft as S,pt as T,ve as U,ye as V,n as W,it as _,gt as a,ut as b,lt as c,vt as d,at as f,rt as g,bt as h,J as i,Be as j,Ye as k,xt as l,st as m,Xe as n,_t as o,ot as p,Ze as r,yt as s,Qe as t,Q as u,ht as v,ct as w,dt as x,Z as y,B as z};
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,WAAW,EACX,kBAAkB,EAInB,MAAM,SAAS,CAAC;AAEjB,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CAmCb"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,WAAW,EACX,kBAAkB,EAInB,MAAM,SAAS,CAAC;AAEjB,kEAAkE;AAClE,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA6Cb"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,mBAAmB,CAAC,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,YAAY,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;gBAEhD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC;CASjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAM3D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,mBAAmB,CAAC,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,YAAY,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,KAAK;IACtD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAE5D,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAQ/D;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAM3D"}
@@ -0,0 +1,2 @@
1
+ export declare function getGlobalControllers(): WeakMap<object, unknown>;
2
+ //# sourceMappingURL=global-controllers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-controllers.d.ts","sourceRoot":"","sources":["../src/global-controllers.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAG/D"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
+ import type { ActionFunction, TransparentFetchFunction } from './types';
2
+ import { Error, Group, Pending, trackResolvedValue } from './transparent';
1
3
  export { createDataRuntime } from './client';
2
- export declare const $fetch: import("./types").FetchFunction;
3
- export declare const $action: import("./types").ActionFunction;
4
- export declare const clearDataRuntime: () => void;
4
+ export { getActiveDataRuntime, setActiveDataRuntime, runWithDataRuntime, } from './active-runtime';
5
+ export declare const $fetch: TransparentFetchFunction;
6
+ export declare const $track: typeof trackResolvedValue;
7
+ export { Group, Pending, Error };
8
+ export declare const $action: ActionFunction;
9
+ export declare function clearDataRuntime(): void;
5
10
  export { RequestError } from './errors';
6
- export type { Action, ActionCallOptions, ActionFunction, ActionMethod, ActionOptions, AppCacheOptions, AsyncStatus, DataRuntime, DataRuntimeOptions, FetchCache, FetchCollectionChanges, FetchFunction, FetchOptions, FetchResource, FetchResourceCore, InferSchemaOutput, OptimisticChange, Query, QueryPrimitive, QueryValue, RequestKey, RequestKeyPart, StandardSchemaIssue, StandardSchemaResult, StandardSchemaV1, ValidatedFetchOptions, } from './types';
11
+ export { UnresolvedDataReadError } from './transparent';
12
+ export type { Action, ActionFunction, ActionMethod, ActionOptions, ActionResult, AppCacheOptions, AsyncStatus, DataRuntime, DataRuntimeOptions, FetchCache, FetchBody, FetchCollectionChanges, FetchFunction, FetchMethod, FetchOptions, FetchResource, FetchResourceCore, GroupProps, InferSchemaOutput, JsonObject, JsonPrimitive, JsonValue, OptimisticChange, PendingProps, ErrorProps, ErrorPolicyComponentProps, Query, QueryPrimitive, QueryValue, RequestKey, RequestKeyPart, ResolvedValue, SerializedDataState, SerializedSourceError, SerializedSourceRecord, SerializedSourceSnapshot, StandardSchemaIssue, StandardSchemaResult, StandardSchemaV1, TrackedValue, TransparentFetchFunction, ValidatedFetchOptions, } from './types';
7
13
  export type { RequestErrorKind, RequestErrorOptions } from './errors';
8
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,eAAO,MAAM,MAAM,iCAAwB,CAAC;AAC5C,eAAO,MAAM,OAAO,kCAAyB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,YAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,YAAY,EACV,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAId,wBAAwB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,MAAM,EAGgD,wBAAwB,CAAC;AAC5F,eAAO,MAAM,MAAM,EACa,OAAO,kBAAkB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjC,eAAO,MAAM,OAAO,EAI6C,cAAc,CAAC;AAChF,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AACD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,YAAY,EACV,MAAM,EACN,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,yBAAyB,EACzB,KAAK,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as o,h as t}from"./chunks/chunk-2CT6VOBD.js";var e=t(),a=e.$fetch,c=e.$action,n=e.clear;export{c as $action,a as $fetch,o as RequestError,n as clearDataRuntime,t as createDataRuntime};
1
+ import{A as e,D as t,E as n,O as r,W as i,i as a,k as o,n as s,r as c,t as l}from"./chunks/transparent-DhGE8YMn.js";const u=((e,n)=>t().$fetch(e,n)),d=(e=>n(e)),f=((e,n)=>t().$action(e,n));function p(){t().clear()}export{f as $action,u as $fetch,d as $track,l as Error,s as Group,c as Pending,i as RequestError,a as UnresolvedDataReadError,p as clearDataRuntime,e as createDataRuntime,t as getActiveDataRuntime,r as runWithDataRuntime,o as setActiveDataRuntime};
@@ -1,5 +1,8 @@
1
1
  export { createDataRuntime } from './client';
2
- export { actionSnapshot, disposeAction, subscribeAction, } from './action';
2
+ export { actionResultSnapshot, disposeActionResult, subscribeActionResult, } from './action';
3
3
  export { disposeFetchResource, fetchResourceSnapshot, subscribeFetchResource, } from './resource';
4
- export type { ActionListener, ActionSnapshot, DataRuntime, DataRuntimeOptions, ResourceListener, ResourceSnapshot, } from './types';
4
+ export { connectResolvedValue, connectResolvedValues, createEventSourceSlot, disposeEventSourceSlot, rebindEventSourceSlot, deriveResolvedValues, observeResolvedValue, ownResolvedValue, rebindResolvedValue, rebindResolvedValueFromFactory, readResolvedValue, readResolvedValueForRender, readResolvedValuesForRender, resolvedValuesError, resolvedValuesErrorIndex, resolvedValuesPending, resolvedValuesPendingIndex, retryResolvedValues, runResolvedValuesEffect, resolvedValueSnapshot, trackResolvedValue, throwResolvedValuesError, UnresolvedDataReadError, } from './transparent';
5
+ export { createSource, describeModuleSource, isModuleSourceRef, readModuleSourceList, rebindModuleSource, resolveModuleSource, sourceRef, } from './transparent-module';
6
+ export type { ModuleSourceRef } from './transparent-module';
7
+ export type { ActionResultListener, ActionResultSnapshot, DataRuntime, DataRuntimeOptions, ResourceListener, ResourceSnapshot, } from './types';
5
8
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,8BAA8B,EAC9B,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
package/dist/internal.js CHANGED
@@ -1 +1 @@
1
- import{b as e,c as t,d as o,e as s,f as r,g as c,h as i}from"./chunks/chunk-2CT6VOBD.js";export{t as actionSnapshot,i as createDataRuntime,o as disposeAction,r as disposeFetchResource,c as fetchResourceSnapshot,e as subscribeAction,s as subscribeFetchResource};
1
+ import{A as e,B as t,C as n,E as r,F as i,H as a,I as o,L as s,M as c,N as l,P as u,R as d,S as f,T as p,U as m,V as h,_ as g,a as _,b as v,c as y,d as b,f as x,g as S,h as C,i as w,j as T,l as E,m as D,o as O,p as k,s as A,u as j,v as M,w as N,x as P,y as F,z as I}from"./chunks/transparent-DhGE8YMn.js";export{w as UnresolvedDataReadError,h as actionResultSnapshot,_ as connectResolvedValue,O as connectResolvedValues,e as createDataRuntime,A as createEventSourceSlot,T as createSource,y as deriveResolvedValues,c as describeModuleSource,a as disposeActionResult,E as disposeEventSourceSlot,d as disposeFetchResource,I as fetchResourceSnapshot,l as isModuleSourceRef,j as observeResolvedValue,b as ownResolvedValue,u as readModuleSourceList,x as readResolvedValue,k as readResolvedValueForRender,D as readResolvedValuesForRender,C as rebindEventSourceSlot,i as rebindModuleSource,S as rebindResolvedValue,g as rebindResolvedValueFromFactory,o as resolveModuleSource,M as resolvedValueSnapshot,F as resolvedValuesError,v as resolvedValuesErrorIndex,P as resolvedValuesPending,f as resolvedValuesPendingIndex,n as retryResolvedValues,N as runResolvedValuesEffect,s as sourceRef,m as subscribeActionResult,t as subscribeFetchResource,p as throwResolvedValuesError,r as trackResolvedValue};
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAkBtC,0EAA0E;AAC1E,qBAAa,gBAAgB,CAAC,CAAC;IAKjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,QAAQ,CAAC,SAAS,mBAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEK,OAAO,EAAE,MAAM,CAAC;IAE7C,MAAM,IAAI,IAAI;IA4Bd,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAW5C,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAkBtC,0EAA0E;AAC1E,qBAAa,gBAAgB,CAAC,CAAC;IAKjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,QAAQ,CAAC,SAAS,mBAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IAExB,YAA6B,OAAO,EAAE,MAAM,CAAC,EAAI;IAEjD,MAAM,IAAI,IAAI,CA0Bb;IAED,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAS3C;IAED,KAAK,IAAI,IAAI,CAEZ;CACF"}
package/dist/request.d.ts CHANGED
@@ -1,9 +1,16 @@
1
- import type { Query, RequestKey, StandardSchemaV1 } from './types';
1
+ import type { FetchMethod, Query, RequestKey, StandardSchemaV1 } from './types';
2
2
  export declare function resolveRequestURL(target: string | URL, query: Query | undefined, baseURL: string | URL | undefined): string;
3
- export declare function fetchIdentity(url: string, headers: HeadersInit | undefined, key: RequestKey | undefined, schema: StandardSchemaV1 | undefined): string;
3
+ export declare function fetchIdentity(url: string, method: FetchMethod, headers: HeadersInit | undefined, bodyIdentity: string, key: RequestKey | undefined, schema: StandardSchemaV1 | undefined): string;
4
+ export declare function normalizeFetchMethod(method: FetchMethod | undefined): FetchMethod;
5
+ export interface PreparedRequestBody {
6
+ readonly body: BodyInit | undefined;
7
+ readonly identity: string;
8
+ }
9
+ /** Snapshot a replayable body and its synchronous request-key material. */
10
+ export declare function prepareRequestBody(input: unknown, headers: Headers): PreparedRequestBody;
4
11
  export declare function decodeResponse(response: Response, schema: StandardSchemaV1 | undefined): Promise<unknown>;
5
12
  export declare function abortReason(signal: AbortSignal): unknown;
6
13
  /** Reject client interest immediately even when a custom fetcher ignores signals. */
7
14
  export declare function abortable<T>(operation: () => PromiseLike<T> | T, signal: AbortSignal): Promise<T>;
8
- export declare function encodeActionBody(input: unknown, headers: Headers): BodyInit | undefined;
15
+ export declare function encodeRequestBody(input: unknown, headers: Headers): BodyInit | undefined;
9
16
  //# sourceMappingURL=request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA0CjB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,GAChC,MAAM,CAIR;AAiBD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,MAAM,CAGR;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,OAAO,CAAC,OAAO,CAAC,CA6ClB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EACnC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CASZ;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,GACf,QAAQ,GAAG,SAAS,CAiBtB"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA0CjB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,GAAG,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,GAChC,MAAM,CAIR;AAiBD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,UAAU,GAAG,SAAS,EAC3B,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,MAAM,CAQR;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAcjF;AAyED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,GACf,mBAAmB,CAuCrB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,OAAO,CAAC,OAAO,CAAC,CA6ClB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EACnC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,GACf,QAAQ,GAAG,SAAS,CAEtB"}
@@ -1,8 +1,11 @@
1
1
  import { SnapshotNotifier } from './notifications';
2
- import type { FetchCache, FetchOptions, FetchResource, ResourceListener, ResourceSnapshot, StandardSchemaV1 } from './types';
2
+ import type { FetchCache, FetchMethod, FetchOptions, FetchResource, ResourceListener, ResourceSnapshot, SerializedDataState, StandardSchemaV1 } from './types';
3
3
  interface FetchDescriptor {
4
4
  readonly url: string;
5
+ readonly method: FetchMethod;
5
6
  readonly headers: HeadersInit | undefined;
7
+ readonly body: BodyInit | undefined;
8
+ readonly bodyIdentity: string;
6
9
  readonly identity: string;
7
10
  readonly cache: FetchCache;
8
11
  readonly schema: StandardSchemaV1 | undefined;
@@ -44,22 +47,42 @@ export declare class FetchStore {
44
47
  readonly environment: FetchEnvironment;
45
48
  readonly entries: Map<string, FetchEntry>;
46
49
  readonly allEntries: Set<FetchEntry>;
50
+ /**
51
+ * Dormant restore records installed by `restoreState` (RFC §16.7). The
52
+ * next acquire with a matching identity claims its record instead of
53
+ * issuing a duplicate network request.
54
+ */
55
+ private restoreRecords;
47
56
  constructor(environment: FetchEnvironment);
48
- acquire(descriptor: FetchDescriptor, consumer: ResourceController<unknown>, force?: boolean): FetchEntry;
57
+ installRestoreRecords(state: SerializedDataState): void;
49
58
  delete(entry: FetchEntry, reason?: unknown): void;
59
+ private takeRestoreRecord;
60
+ acquire(descriptor: FetchDescriptor, consumer: ResourceController<unknown>, force?: boolean, replace?: boolean): FetchEntry;
61
+ settle(timeoutMs?: number): Promise<boolean>;
62
+ serialize(): SerializedDataState;
50
63
  clear(): void;
51
64
  }
52
65
  declare class ResourceController<T> {
53
66
  readonly store: FetchStore;
54
- readonly descriptor: FetchDescriptor;
55
- readonly paused: boolean;
56
67
  snapshot: MutableSnapshot<T>;
57
68
  entry: FetchEntry | null;
58
69
  disposed: boolean;
59
70
  private removeSignalListener;
60
71
  readonly notifier: SnapshotNotifier<ResourceSnapshot<T>>;
72
+ operationId: string;
61
73
  constructor(store: FetchStore, descriptor: FetchDescriptor, paused?: boolean);
62
- attach(force: boolean): void;
74
+ descriptor: FetchDescriptor;
75
+ paused: boolean;
76
+ private bindSignal;
77
+ attach(force: boolean, replace?: boolean): void;
78
+ rebind(descriptor: FetchDescriptor, paused: boolean): void;
79
+ /**
80
+ * Move a freshly-created source behind this stable public resource. Imported
81
+ * colorless factories own their argument-to-request mapping, so compiler
82
+ * replay adopts their result instead of interpreting those arguments as a
83
+ * raw fetch URL and options tuple.
84
+ */
85
+ adopt(candidate: ResourceController<T>): void;
63
86
  receive(entry: FetchEntry, snapshot: MutableSnapshot<unknown>): void;
64
87
  detachFrom(entry: FetchEntry, reset?: boolean): void;
65
88
  notify(): void;
@@ -75,7 +98,15 @@ export declare function createFetchResource<T>(store: FetchStore, environment: F
75
98
  }): FetchResource<T>;
76
99
  export declare function subscribeFetchResource<T>(resource: FetchResource<T>, listener: ResourceListener<T>): () => void;
77
100
  export declare function disposeFetchResource<T>(resource: FetchResource<T>): void;
101
+ /** Rebind one stable resource when compiler-tracked request inputs change. */
102
+ export declare function rebindFetchResource<T>(resource: FetchResource<T>, target: string | URL | null, options?: FetchOptions & {
103
+ readonly validate?: StandardSchemaV1;
104
+ }): void;
105
+ /** Adopt the active request created by another resource into a stable holder. */
106
+ export declare function rebindFetchResourceFrom<T>(resource: FetchResource<T>, candidate: FetchResource<T>): void;
78
107
  export declare function fetchResourceSnapshot<T>(resource: FetchResource<T>): ResourceSnapshot<T>;
108
+ /** Identity of the current execution behind one hidden fetch resource. */
109
+ export declare function fetchResourceOperationId<T>(resource: FetchResource<T>): string;
79
110
  export declare function createFetchEnvironment(fetcher: typeof globalThis.fetch | undefined, baseURL: string | URL | undefined): FetchEnvironment;
80
111
  export {};
81
112
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * transparent-module.ts — RFC §16.4: module sources are immutable
3
+ * descriptions, not live requests.
4
+ *
5
+ * Authored module-scope sources:
6
+ *
7
+ * // session.ts
8
+ * export const currentUser = $fetch<User>('/api/session');
9
+ *
10
+ * compile to a lazy description plus a stable reference:
11
+ *
12
+ * _MDD.describeModuleSource('./session.ts#currentUser', () =>
13
+ * _MDD.createSource('/api/session', {}));
14
+ * export const currentUser = _MDD.sourceRef('./session.ts#currentUser');
15
+ *
16
+ * The description never executes at module evaluation. The FIRST read inside
17
+ * an ApplicationRuntime materializes the source into that runtime's private
18
+ * cache — request-local on the server, shared on the client — and every later
19
+ * read in the same runtime reuses the instance. Disposal follows the runtime
20
+ * (extension stores clear with it) and `DataRuntime.clear()` still aborts and
21
+ * empties the underlying store.
22
+ */
23
+ import type { FetchOptions, ResolvedValue } from './types';
24
+ /** Stable lazy handle placed in the authored binding. */
25
+ export interface ModuleSourceRef {
26
+ readonly __mmdModuleSource: true;
27
+ readonly key: string;
28
+ }
29
+ /**
30
+ * Register (or replace) the factory for a module-scope source. Called by the
31
+ * compiled declaration; replacing an existing factory bumps the description
32
+ * version so HMR re-evaluation RETIRES stale materialized instances in every
33
+ * runtime instead of silently reusing them (RFC §16.4 lifecycle contract).
34
+ */
35
+ export declare function describeModuleSource<T>(key: string, create: () => ResolvedValue<T>): void;
36
+ export declare function runModuleInstanceDisposers(runtime: object): void;
37
+ /**
38
+ * Materialize — once per ApplicationRuntime and per description version —
39
+ * active, so `$fetch` binds to that request's data runtime. A version
40
+ * mismatch (HMR replaced the description) drops the stale instance.
41
+ */
42
+ export declare function resolveModuleSource<T>(ref: ModuleSourceRef): ResolvedValue<T>;
43
+ export declare function isModuleSourceRef(value: unknown): value is ModuleSourceRef;
44
+ /** Compiled form of an authored module-scope declaration. */
45
+ export declare function sourceRef(key: string): ModuleSourceRef;
46
+ /** Create a fetch resource bound to the ACTIVE data runtime. */
47
+ export declare function createSource<T>(target: string | URL | null, options?: FetchOptions): ResolvedValue<T>;
48
+ /**
49
+ * Compiler hook for reactive module-scope request inputs. It deliberately
50
+ * does not materialize an unused description; the first real consumer still
51
+ * owns lazy request creation.
52
+ */
53
+ export declare function rebindModuleSource<T>(ref: ModuleSourceRef, target: string | URL | null, options?: FetchOptions): void;
54
+ /**
55
+ * List-view read for module sources: committed data renders rows; an
56
+ * unavailable source renders zero rows (§10: no Group → empty local region);
57
+ * an initial failure stays loud.
58
+ */
59
+ export declare function readModuleSourceList<T>(ref: ModuleSourceRef): T[];
60
+ //# sourceMappingURL=transparent-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transparent-module.d.ts","sourceRoot":"","sources":["../src/transparent-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAiB,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1E,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAkBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC,GAC7B,IAAI,CAMN;AAaD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAsC7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAM1E;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAEtD;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,EAC3B,OAAO,CAAC,EAAE,YAAY,GACrB,aAAa,CAAC,CAAC,CAAC,CAKlB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,EAC3B,OAAO,GAAE,YAAiB,GACzB,IAAI,CASN;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,CAAC,EAAE,CAejE"}
@@ -0,0 +1,83 @@
1
+ import { RequestError } from './errors';
2
+ import type { GroupProps, PendingProps, ErrorProps, ResolvedValue, ResourceListener, ResourceSnapshot, TrackedValue } from './types';
3
+ import { type ModuleSourceRef } from './transparent-module';
4
+ /** Raised when imperative code reads a transparent value before first commit. */
5
+ export declare class UnresolvedDataReadError extends globalThis.Error {
6
+ readonly binding?: string | undefined;
7
+ readonly site?: string | undefined;
8
+ readonly name = "UnresolvedDataReadError";
9
+ constructor(binding?: string | undefined, site?: string | undefined);
10
+ }
11
+ /** Compile-time local data presentation policy. */
12
+ export declare function Group(_props: GroupProps): never;
13
+ /** Compile-time pending policy declaration consumed by Group. */
14
+ export declare function Pending(_props: PendingProps): never;
15
+ /** Compile-time error policy declaration consumed by Group. */
16
+ export declare function Error(_props: ErrorProps): never;
17
+ export declare function trackResolvedValue<T>(value: ResolvedValue<T> | ModuleSourceRef): TrackedValue<T>;
18
+ /** Compiler hook: update the request behind a stable transparent binding. */
19
+ export declare function rebindResolvedValue<T>(value: ResolvedValue<T> | ModuleSourceRef, target: string | URL | null, options?: import('./types').FetchOptions): void;
20
+ /**
21
+ * Compiler hook for imported colorless factories. The factory remains the
22
+ * authority on how authored arguments become a request; its newly-created
23
+ * source is transferred into the stable binding used by rendered sites.
24
+ */
25
+ export declare function rebindResolvedValueFromFactory<T>(value: ResolvedValue<T> | ModuleSourceRef, factory: () => ResolvedValue<T>): void;
26
+ /** Resolve an honest payload for an imperative/derived read. */
27
+ export declare function readResolvedValue<T>(value: ResolvedValue<T>, binding?: string, site?: string): T;
28
+ /**
29
+ * Render-site read: initial absence leaves the local sink unset, while an
30
+ * initial request failure remains loud. Group lowering will layer local
31
+ * Pending/Error policy over this primitive.
32
+ */
33
+ export declare function readResolvedValueForRender<T>(value: ResolvedValue<T> | null | undefined): T | undefined;
34
+ /** Execute a render/derivation expression only when every input is honest. */
35
+ export declare function readResolvedValuesForRender<TResult>(values: readonly (ResolvedValue<unknown> | null | undefined)[], compute: (...resolved: unknown[]) => TResult): TResult | undefined;
36
+ /** Run a compiled effect only after every event-created source has settled. */
37
+ export declare function runResolvedValuesEffect<TResult>(values: readonly (ResolvedValue<unknown> | null | undefined)[], run: (...resolved: unknown[]) => TResult): TResult | undefined;
38
+ /**
39
+ * Replay a derivation only after every prerequisite has committed. Failures
40
+ * remain on the source so the eventual consumption site can select Error UI.
41
+ */
42
+ export declare function deriveResolvedValues<TResult>(values: readonly ResolvedValue<unknown>[], compute: (...resolved: unknown[]) => TResult): TResult | undefined;
43
+ export declare function resolvedValuesError(values: readonly ResolvedValue<unknown>[]): RequestError | null;
44
+ export declare function resolvedValuesErrorIndex(values: readonly ResolvedValue<unknown>[]): number;
45
+ export declare function resolvedValuesPending(values: readonly ResolvedValue<unknown>[]): boolean;
46
+ export declare function resolvedValuesPendingIndex(values: readonly ResolvedValue<unknown>[]): number;
47
+ export declare function throwResolvedValuesError(values: readonly ResolvedValue<unknown>[]): never;
48
+ /** Retry the failed prerequisite selected for one local error site. */
49
+ export declare function retryResolvedValues(values: readonly ResolvedValue<unknown>[]): Promise<unknown>;
50
+ export declare function resolvedValueSnapshot<T>(value: ResolvedValue<T>): ResourceSnapshot<T>;
51
+ /** Subscribe to transitions without delivering the notifier's initial value. */
52
+ export declare function observeResolvedValue<T>(value: ResolvedValue<T> | ModuleSourceRef, listener: ResourceListener<T>): () => void;
53
+ /** Attach one compiled structural owner to a component-local source. */
54
+ export declare function connectResolvedValue<T>(value: ResolvedValue<T> | ModuleSourceRef, invalidate: () => void, owned?: boolean): () => void;
55
+ /** Subscribe one exact compiler-emitted entity to all of its prerequisites. */
56
+ export declare function connectResolvedValues(values: readonly ResolvedValue<unknown>[], invalidate: () => void): () => void;
57
+ /** Give one creating component sole disposal authority over a local source. */
58
+ export declare function ownResolvedValue<T>(value: ResolvedValue<T> | ModuleSourceRef): () => void;
59
+ /** Per-instance slot holding whichever source an event-assigned variable currently references. */
60
+ export interface EventSourceSlot {
61
+ value: unknown;
62
+ disconnect?: () => void;
63
+ retired: Set<RetiredEventSource>;
64
+ }
65
+ interface RetiredEventSource {
66
+ readonly value: ResolvedValue<unknown>;
67
+ disconnect: () => void;
68
+ }
69
+ /** Create the slot state for one event-assigned colorless source variable. */
70
+ export declare function createEventSourceSlot(): EventSourceSlot;
71
+ /**
72
+ * Keep one compiler entity subscribed to the request state of whichever
73
+ * source the slot currently holds. Event-created sources do not exist when
74
+ * the component mounts, so the compiler re-runs this on every entity update:
75
+ * identity comparison makes it a no-op until a new source is assigned, and a
76
+ * replaced source is disposed with the slot taking over disposal authority.
77
+ */
78
+ export declare function rebindEventSourceSlot(slot: EventSourceSlot, get: () => ResolvedValue<unknown> | null | undefined, invalidate: () => void): void;
79
+ /** Detach one slot while allowing already-dispatched work to settle honestly. */
80
+ export declare function disposeEventSourceSlot(slot: EventSourceSlot): void;
81
+ export declare function isInitialDataFailure(error: unknown): error is RequestError;
82
+ export {};
83
+ //# sourceMappingURL=transparent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transparent.d.ts","sourceRoot":"","sources":["../src/transparent.ts"],"names":[],"mappings":"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"}