@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/types.d.ts CHANGED
@@ -2,6 +2,22 @@ export type AsyncStatus = 'idle' | 'pending' | 'success' | 'error';
2
2
  export type QueryPrimitive = string | number | boolean | null;
3
3
  export type QueryValue = QueryPrimitive | undefined | readonly QueryPrimitive[];
4
4
  export type Query = Readonly<Record<string, QueryValue>>;
5
+ export type FetchMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
6
+ export type JsonPrimitive = string | number | boolean | null;
7
+ export interface JsonObject {
8
+ readonly [key: string]: JsonValue | undefined;
9
+ }
10
+ export type JsonValue = JsonPrimitive | JsonObject | readonly JsonValue[];
11
+ /**
12
+ * Replayable request bodies accepted by a colorless fetch source.
13
+ *
14
+ * Text, URLSearchParams, JSON, and binary bodies use a bounded content
15
+ * fingerprint for request identity. Blob bodies use object identity;
16
+ * FormData string fields use content identity while Blob/File fields use
17
+ * object identity. Consequently, separately created but equivalent opaque
18
+ * bodies do not deduplicate unless they reuse the same Blob/File instances.
19
+ */
20
+ export type FetchBody = JsonValue | Blob | FormData | URLSearchParams | ArrayBuffer | ArrayBufferView;
5
21
  export type RequestKeyPart = string | number | boolean | null;
6
22
  export type RequestKey = string | readonly RequestKeyPart[];
7
23
  export interface StandardSchemaV1<TInput = unknown, TOutput = TInput> {
@@ -34,6 +50,13 @@ export interface AppCacheOptions {
34
50
  }
35
51
  export type FetchCache = false | 'active' | AppCacheOptions;
36
52
  export interface FetchOptions {
53
+ /** HTTP method (GET by default). */
54
+ readonly method?: FetchMethod;
55
+ /**
56
+ * Request body. JSON values are serialized and receive an application/json
57
+ * content type unless one was provided. GET and HEAD requests reject bodies.
58
+ */
59
+ readonly body?: FetchBody;
37
60
  readonly query?: Query;
38
61
  readonly headers?: HeadersInit;
39
62
  readonly key?: RequestKey;
@@ -61,10 +84,49 @@ export interface OptimisticChange<TResult = unknown> {
61
84
  export interface RefreshableResource {
62
85
  refresh(): Promise<unknown>;
63
86
  }
64
- export interface ActionCallOptions<TResult> {
65
- readonly optimistic?: OptimisticChange<TResult>;
66
- readonly refresh?: readonly RefreshableResource[];
67
- readonly signal?: AbortSignal;
87
+ /**
88
+ * Compiler-preserved provenance for a transparently authored fetch value.
89
+ *
90
+ * This member is type-only: the data runtime still carries a FetchResource
91
+ * internally and the compiler prevents that holder from escaping into
92
+ * application reads. ResolvedValue<T> remains assignable to T.
93
+ */
94
+ declare const resolvedValue: unique symbol;
95
+ export type ResolvedValue<T> = T & {
96
+ readonly [resolvedValue]: T;
97
+ };
98
+ /** Reactive request state exposed for authored conditional rendering. */
99
+ export interface TrackedValue<T> {
100
+ /** Identity of the exact request execution currently represented. */
101
+ readonly id: string;
102
+ readonly status: AsyncStatus;
103
+ readonly pending: boolean;
104
+ readonly refreshing: boolean;
105
+ readonly error: import('./errors').RequestError | null;
106
+ /** Observe this execution's successful result exactly once. */
107
+ onSuccess(callback: (data: T, requestId: string) => void): () => void;
108
+ /** Observe this execution's failure exactly once. */
109
+ onError(callback: (error: import('./errors').RequestError, requestId: string) => void): () => void;
110
+ /** Start a new request execution for this source. Awaiting is optional. */
111
+ refresh(): Promise<T>;
112
+ /** Stop the current request execution. */
113
+ abort(): void;
114
+ /** Type-only connection to the value whose request state is observed. */
115
+ readonly valueType?: (value: T) => T;
116
+ }
117
+ export type DataPolicyComponent<TProps = object> = (props: TProps) => unknown;
118
+ export interface GroupProps {
119
+ readonly children?: unknown;
120
+ }
121
+ export interface PendingProps {
122
+ readonly component: DataPolicyComponent;
123
+ }
124
+ export interface ErrorPolicyComponentProps {
125
+ readonly error: import('./errors').RequestError;
126
+ readonly retry: () => Promise<unknown>;
127
+ }
128
+ export interface ErrorProps {
129
+ readonly component: DataPolicyComponent<ErrorPolicyComponentProps>;
68
130
  }
69
131
  export interface FetchResourceCore<T> extends RefreshableResource {
70
132
  readonly data: T | undefined;
@@ -88,16 +150,20 @@ export interface FetchFunction {
88
150
  <T = unknown>(target: string | URL | null, options?: FetchOptions): FetchResource<T>;
89
151
  <TSchema extends StandardSchemaV1>(target: string | URL | null, options: ValidatedFetchOptions<TSchema>): FetchResource<InferSchemaOutput<TSchema>>;
90
152
  }
91
- interface ActionState<TResult> {
92
- readonly data: TResult | undefined;
93
- readonly error: import('./errors').RequestError | null;
94
- readonly status: AsyncStatus;
95
- readonly pending: boolean;
96
- abort(): void;
97
- reset(): void;
153
+ /** Public colorless fetch surface used by compiler-authored application code. */
154
+ export interface TransparentFetchFunction {
155
+ <T = unknown>(target: string | URL | null, options?: FetchOptions): ResolvedValue<T>;
156
+ <TSchema extends StandardSchemaV1>(target: string | URL | null, options: ValidatedFetchOptions<TSchema>): ResolvedValue<InferSchemaOutput<TSchema>>;
157
+ }
158
+ /** One independently tracked invocation returned immediately by an action. */
159
+ export interface ActionResult<TResult> {
160
+ readonly id: string;
161
+ readonly state: AsyncStatus;
162
+ readonly data: TResult;
163
+ readonly error: import('./errors').RequestError;
98
164
  }
99
- type ActionCall<TResult, TInput> = [TInput] extends [void] ? (input?: TInput, options?: ActionCallOptions<TResult>) => Promise<TResult> : (input: TInput, options?: ActionCallOptions<TResult>) => Promise<TResult>;
100
- export type Action<TResult, TInput = void> = ActionState<TResult> & ActionCall<TResult, TInput>;
165
+ type ActionCall<TResult, TInput> = [TInput] extends [void] ? (input?: TInput) => ActionResult<TResult> : (input: TInput) => ActionResult<TResult>;
166
+ export type Action<TResult, TInput = void> = ActionCall<TResult, TInput>;
101
167
  export interface ActionFunction {
102
168
  <TResult, TInput = void>(target: string | URL, options?: ActionOptions<TResult, TInput>): Action<TResult, TInput>;
103
169
  }
@@ -110,7 +176,50 @@ export interface DataRuntime {
110
176
  readonly $action: ActionFunction;
111
177
  /** Abort active work, detach live reads, and empty retained request data. */
112
178
  clear(): void;
179
+ /**
180
+ * Serialize materialized source snapshots for server→client transfer
181
+ * (RFC §16.6). Only JSON-safe payloads transfer; non-serializable
182
+ * sources are omitted.
183
+ */
184
+ /**
185
+ * Await all currently active in-flight requests until quiescence.
186
+ * Returns true if all settled, or false if timeout elapsed.
187
+ */
188
+ settle(timeoutMs?: number): Promise<boolean>;
189
+ serializeState(): SerializedDataState;
190
+ restoreState(state: SerializedDataState): void;
191
+ }
192
+ /** Sanitized error shape — cause/data/issues never transfer (RFC §16.6.5). */
193
+ export interface SerializedSourceError {
194
+ readonly kind: string;
195
+ readonly status: number | null;
196
+ readonly statusText: string | null;
197
+ readonly message: string;
113
198
  }
199
+ export type SerializedSourceSnapshot = {
200
+ readonly status: 'success';
201
+ readonly data: unknown;
202
+ /** Committed payload plus a revalidate intent, never an in-flight promise. */
203
+ readonly revalidate: boolean;
204
+ } | {
205
+ readonly status: 'error';
206
+ readonly error: SerializedSourceError;
207
+ } | {
208
+ readonly status: 'pending';
209
+ };
210
+ export interface SerializedSourceRecord {
211
+ /** Deterministic request identity (method|url|headers|schema contract). */
212
+ readonly sourceId: string;
213
+ /** Provider + decoder contract, independent from the payload value. */
214
+ readonly contractId: string;
215
+ readonly requestFingerprint: string;
216
+ readonly snapshot: SerializedSourceSnapshot;
217
+ }
218
+ export interface SerializedDataStateV1 {
219
+ readonly formatVersion: 1;
220
+ readonly sources: readonly SerializedSourceRecord[];
221
+ }
222
+ export type SerializedDataState = SerializedDataStateV1;
114
223
  export interface ResourceSnapshot<T> {
115
224
  readonly data: T | undefined;
116
225
  readonly error: import('./errors').RequestError | null;
@@ -119,12 +228,12 @@ export interface ResourceSnapshot<T> {
119
228
  readonly refreshing: boolean;
120
229
  }
121
230
  export type ResourceListener<T> = (snapshot: ResourceSnapshot<T>) => void;
122
- export interface ActionSnapshot<T> {
231
+ export interface ActionResultSnapshot<T> {
232
+ readonly id: string;
123
233
  readonly data: T | undefined;
124
234
  readonly error: import('./errors').RequestError | null;
125
- readonly status: AsyncStatus;
126
- readonly pending: boolean;
235
+ readonly state: AsyncStatus;
127
236
  }
128
- export type ActionListener<T> = (snapshot: ActionSnapshot<T>) => void;
237
+ export type ActionResultListener<T> = (snapshot: ActionResultSnapshot<T>) => void;
129
238
  export {};
130
239
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memoized-dom/data",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Browser-first fetch resources and callable actions for memoized-dom",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -21,10 +21,13 @@
21
21
  }
22
22
  },
23
23
  "scripts": {
24
- "build": "bun run ./scripts/clean.ts && esbuild ./src/index.ts ./src/internal.ts --bundle --outdir=./dist --platform=browser --format=esm --target=es2022 --minify --splitting --entry-names=[name] --chunk-names=chunks/[name]-[hash] && tsc -p tsconfig.build.json",
24
+ "build": "bun run ./scripts/clean.ts && rolldown -c rolldown.config.ts && tsc -p tsconfig.build.json",
25
25
  "test": "vitest run --config vitest.config.ts && tsc -p tsconfig.test.json"
26
26
  },
27
27
  "publishConfig": {
28
28
  "access": "public"
29
+ },
30
+ "peerDependencies": {
31
+ "@memoized-dom/runtime": "^0.0.7"
29
32
  }
30
33
  }
@@ -1 +0,0 @@
1
- var h=class extends Error{kind;status;statusText;data;issues;constructor(e,n){super(e,{cause:n.cause}),this.name="RequestError",this.kind=n.kind,this.status=n.status??null,this.statusText=n.statusText??null,this.data=n.data,this.issues=n.issues}};function T(t){return(t instanceof DOMException||t instanceof Error)&&t.name==="AbortError"}function v(t){return t instanceof h?t:new h(t instanceof Error?t.message:"Network request failed",{kind:"network",cause:t})}function ne(t){if(t.length===0)return;let e=t.length===1?t[0]:new AggregateError(t,"Data runtime listeners failed"),n=globalThis.reportError;try{n?.(e)}catch{}}var g=class{constructor(e){this.current=e}current;listeners=new Set;emitting=!1;pending=!1;notify(){if(this.emitting){this.pending=!0;return}this.emitting=!0;let e=[];try{do{this.pending=!1;let n=this.current();for(let s of[...this.listeners])if(this.listeners.has(s)){try{s(n)}catch(r){e.push(r)}if(this.pending)break}}while(this.pending)}finally{this.emitting=!1}ne(e)}subscribe(e){this.listeners.add(e);try{e(this.current())}catch(n){throw this.listeners.delete(e),n}return()=>this.listeners.delete(e)}clear(){this.listeners.clear()}};var F=new WeakMap;function b(t){let e=Object.freeze({kind:"memoized-dom.optimistic-change"});return F.set(e,t),e}function U(t){let e=F.get(t);if(e===void 0)throw new TypeError("Invalid optimistic change. Use append(), replace(), or remove() on a fetch resource.");return F.delete(t),e}async function j(t,e){let n=await t["~standard"].validate(e);if(n.issues!==void 0)throw new h("Response validation failed",{kind:"validation",issues:n.issues,data:e});return n.value}var P=new WeakMap,se=1;function re(t){if(t===void 0)return"none";let e=P.get(t);return e===void 0&&(e=se++,P.set(t,e)),String(e)}function oe(t,e){let n=t.indexOf("#"),s=n===-1?t:t.slice(0,n),r=s.indexOf("?"),o=r===-1?s:s.slice(0,r),i=new URLSearchParams(r===-1?"":s.slice(r+1));if(e!==void 0)for(let c of Object.keys(e).sort()){let u=e[c];if(u!==void 0)if(i.delete(c),Array.isArray(u))for(let f of u)i.append(c,String(f));else i.append(c,String(u))}i.sort();let a=i.toString();return`${o}${a===""?"":`?${a}`}`}function R(t,e,n){let s=t instanceof URL?t.href:t,r=n===void 0?s:new URL(s,n).href;return oe(r,e)}function ie(t){return[...new Headers(t).entries()].sort(([n],[s])=>n.localeCompare(s)).map(([n,s])=>`${encodeURIComponent(n)}=${encodeURIComponent(s)}`).join("&")}function ae(t){return(typeof t=="string"?[t]:t).map(n=>`${typeof n}:${encodeURIComponent(String(n))}`).join("|")}function V(t,e,n,s){return n!==void 0?`explicit|${ae(n)}`:`GET|${t}|${ie(e)}|schema:${re(s)}`}async function k(t,e){let n;try{t.status===204||t.status===205?n=void 0:n=(t.headers.get("content-type")?.toLowerCase()??"").includes("json")?await t.json():await t.text()}catch(s){throw T(s)?s:t.ok?new h("Failed to decode response",{kind:"decode",status:t.status,statusText:t.statusText,cause:s}):new h(`Request failed with status ${t.status}`,{kind:"http",status:t.status,statusText:t.statusText,cause:s})}if(!t.ok)throw new h(`Request failed with status ${t.status}`,{kind:"http",status:t.status,statusText:t.statusText,data:n});return e===void 0?n:j(e,n)}function l(t){return t.reason??new DOMException("The operation was aborted","AbortError")}function m(t,e){return e.aborted?Promise.reject(l(e)):new Promise((n,s)=>{let r=()=>s(l(e));e.addEventListener("abort",r,{once:!0}),Promise.resolve().then(t).then(n,s).finally(()=>{e.removeEventListener("abort",r)})})}function M(t,e){if(t!==void 0)return typeof t=="string"||t instanceof Blob||t instanceof FormData||t instanceof URLSearchParams||t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t:(e.has("content-type")||e.set("content-type","application/json"),JSON.stringify(t))}function H(t){return Object.freeze({...t})}var I=class{constructor(e){this.store=e}store;invocations=new Set;notifier=new g(()=>H(this.snapshot));snapshot={data:void 0,error:null,status:"idle",pending:!1};sequence=0;disposed=!1;hasData=!1;begin(e){this.invocations.size===0&&this.store.track(this),this.invocations.add(e),this.snapshot.error=null,this.snapshot.status="pending",this.snapshot.pending=!0,this.notifier.notify()}isVisible(e){return!e.cancelled&&e.sequence===this.sequence}succeed(e,n){this.isVisible(e)&&(this.snapshot.data=n,this.snapshot.error=null,this.snapshot.status="success",this.hasData=!0,this.notifier.notify())}fail(e,n){this.isVisible(e)&&(this.snapshot.error=n,this.snapshot.status="error",this.notifier.notify())}cancelInvocation(e,n){if(e.cancelled)return;let s=this.isVisible(e);e.cancelled=!0,e.abortController.abort(n),s&&(this.sequence++,this.snapshot.error=null,this.snapshot.status=this.hasData?"success":"idle");let r=[...this.invocations].some(o=>!o.cancelled);(s||this.snapshot.pending!==r)&&(this.snapshot.pending=r,this.notifier.notify())}finish(e){this.invocations.delete(e),this.invocations.size===0&&this.store.untrack(this);let n=[...this.invocations].some(s=>!s.cancelled);this.snapshot.pending!==n&&(this.snapshot.pending=n,this.notifier.notify())}abort(e){this.sequence++;for(let n of this.invocations)n.cancelled=!0,n.abortController.abort();this.snapshot.error=null,this.snapshot.pending=!1,e?(this.snapshot.data=void 0,this.snapshot.status="idle",this.hasData=!1):this.snapshot.status=this.hasData?"success":"idle",this.notifier.notify()}dispose(){this.disposed||(this.abort(!0),this.disposed=!0,this.notifier.clear(),this.store.untrack(this))}},S=class{active=new Set;track(e){this.active.add(e)}untrack(e){this.active.delete(e)}clear(){for(let e of[...this.active])e.abort(!0)}},$=new WeakMap;function ce(t,e){return t===void 0?()=>{}:(t.addEventListener("abort",e,{once:!0}),()=>t.removeEventListener("abort",e))}function z(t,e,n,s){let r=new I(e),o=R(n,s.query,t.baseURL),a=async(c,u={})=>{let f=u.optimistic===void 0?void 0:U(u.optimistic);if(r.disposed)throw f?.rollback(),new Error("Cannot invoke a disposed action");if(u.signal?.aborted)throw f?.rollback(),l(u.signal);let d={sequence:++r.sequence,abortController:new AbortController,cancelled:!1};r.begin(d);let _=ce(u.signal,()=>r.cancelInvocation(d,l(u.signal))),x=!1;try{let p=new Headers(s.headers),y=M(c,p),ee=await m(()=>t.fetch()(o,{method:s.method??"POST",headers:p,body:y,signal:d.abortController.signal}),d.abortController.signal),w=await m(()=>k(ee,s.validate),d.abortController.signal);if(d.cancelled)throw l(d.abortController.signal);if(f?.commit(w),x=!0,r.succeed(d,w),await s.onSuccess?.(w,c),d.cancelled)throw l(d.abortController.signal);for(let te of u.refresh??[])te.refresh().catch(()=>{});return w}catch(p){if(x||f?.rollback(),d.cancelled||T(p))throw r.cancelInvocation(d),p;if(x)throw p;let y=v(p);r.fail(d,y);try{await s.onError?.(y,c)}catch{}throw y}finally{_(),r.finish(d)}};return Object.defineProperties(a,{data:{get:()=>r.snapshot.data},error:{get:()=>r.snapshot.error},status:{get:()=>r.snapshot.status},pending:{get:()=>r.snapshot.pending}}),a.abort=()=>{if(r.disposed)throw new Error("Cannot abort a disposed action");r.abort(!1)},a.reset=()=>{if(r.disposed)throw new Error("Cannot reset a disposed action");r.abort(!0)},$.set(a,r),a}function O(t){let e=$.get(t);if(e===void 0)throw new TypeError("Value is not an action from @memoized-dom/data");return e}function Se(t,e){let n=O(t);if(n.disposed)throw new Error("Cannot subscribe to a disposed action");return n.notifier.subscribe(e)}function Ce(t){return H(O(t).snapshot)}function Ee(t){O(t).dispose()}var q=()=>({data:void 0,error:null,status:"idle",pending:!1,refreshing:!1});function Q(t){return Object.freeze({...t})}function B(t){return t??"active"}var C=class{constructor(e,n){this.store=e;this.descriptor=n;this.cache=n.cache===!1?"active":n.cache}store;descriptor;consumers=new Set;snapshot=q();hasData=!1;cache;request=null;controller=null;generation=0;add(e){this.consumers.add(e),e.receive(this,this.snapshot)}remove(e,n){this.consumers.delete(e),this.consumers.size===0&&(this.cache==="active"?this.store.delete(this,n):this.cancelRequest(n))}cancelRequest(e){this.controller===null&&this.request===null||(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 n=this.snapshot.data;this.snapshot.data=e(n),this.snapshot.error=null,this.snapshot.status="success",this.hasData=!0,this.emit()}mutate(e){let n=this.snapshot.data;e(n),this.snapshot.data=n,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 n=++this.generation,s=new AbortController;this.controller=s,this.snapshot.error=null,this.snapshot.pending=!0,this.snapshot.refreshing=this.hasData,this.snapshot.status=this.hasData?"success":"pending",this.emit();let r=m(()=>this.store.environment.fetch()(this.descriptor.url,{method:"GET",headers:this.descriptor.headers,signal:s.signal}),s.signal).then(o=>m(()=>k(o,this.descriptor.schema),s.signal)).then(o=>(n!==this.generation||(this.snapshot={data:o,error:null,status:"success",pending:!1,refreshing:!1},this.hasData=!0,this.emit()),o),o=>{throw n!==this.generation?o:s.signal.aborted||T(o)?(this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.hasData?"success":"idle",this.emit(),o):(this.snapshot.error=v(o),this.snapshot.pending=!1,this.snapshot.refreshing=!1,this.snapshot.status=this.hasData?"success":"error",this.emit(),this.snapshot.error)}).finally(()=>{n===this.generation&&(this.request=null,this.controller=null)});return this.request=r,r.catch(()=>{}),r}dispose(e=!1,n){this.cancelRequest(n);for(let s of[...this.consumers])s.detachFrom(this,e);this.consumers.clear()}},E=class{constructor(e){this.environment=e}environment;entries=new Map;allEntries=new Set;acquire(e,n,s=!1){let r;if(e.cache===!1)r=new C(this,e),this.allEntries.add(r);else{let i=this.entries.get(e.identity);i===void 0?(r=new C(this,e),this.allEntries.add(r)):r=i,this.entries.set(e.identity,r),r.upgradeCache(e.cache)}return r.add(n),(s||r.snapshot.status==="idle"||r.snapshot.status==="error")&&r.start(s).catch(()=>{}),r}delete(e,n){this.entries.get(e.descriptor.identity)===e&&this.entries.delete(e.descriptor.identity),this.allEntries.delete(e),e.dispose(!1,n)}clear(){for(let e of[...this.allEntries])e.dispose(!0);this.entries.clear(),this.allEntries.clear()}},A=class{constructor(e,n,s=!1){this.store=e;this.descriptor=n;this.paused=s;let r=n.signal;if(r!==void 0){let o=()=>this.abort(l(r));if(r.aborted)return;r.addEventListener("abort",o,{once:!0}),this.removeSignalListener=()=>r.removeEventListener("abort",o)}s||this.attach(!1)}store;descriptor;paused;snapshot=q();entry=null;disposed=!1;removeSignalListener=null;notifier=new g(()=>Q(this.snapshot));attach(e){if(this.disposed)throw new Error("Cannot refresh a disposed fetch resource");this.entry=this.store.acquire(this.descriptor,this,e)}receive(e,n){this.entry!==null&&this.entry!==e||(this.snapshot={...n},this.notify())}detachFrom(e,n=!1){this.entry===e&&(this.entry=null,n&&(this.snapshot=q(),this.notify()))}notify(){this.notifier.notify()}refresh(){if(this.disposed)return Promise.reject(new Error("Cannot refresh a disposed fetch resource"));if(this.paused)return Promise.reject(new TypeError("Cannot refresh a fetch resource with a null target"));let e=this.descriptor.signal;if(e?.aborted)return Promise.reject(l(e));this.entry===null&&this.attach(!0);let n=this.entry.start(!0);return e===void 0?n:m(()=>n,e)}abort(e){if(this.disposed)throw new Error("Cannot abort a disposed fetch resource");this.detach(!0,e)}detach(e,n){let s=this.entry;s!==null&&(this.entry=null,s.remove(this,n)),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 new Error("Cannot update a disposed fetch resource");if(this.entry===null){let n=this.snapshot.data;this.snapshot.data=e(n),this.snapshot.status="success",this.snapshot.error=null,this.notify();return}this.entry.update(e)}mutate(e){if(this.disposed)throw new 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())}},G=new WeakMap;function L(t){return Array.isArray(t.snapshot.data)?t.snapshot.data:[]}var K=new WeakMap;function J(t){let e=K.get(t);return e===void 0&&(e=new Set,K.set(t,e)),e}function X(t,e,n){if(Object.is(t[e.index],n))return e.index;let s=-1;for(let r=0;r<t.length;r++)if(Object.is(t[r],n)){if(s!==-1)return-1;s=r}return s}function W(t,e,n,s,r){n.outcome=s,n.result=r;let o=e.base;for(let a of e.steps)a.outcome==="pending"?o=a.temporary:a.outcome==="committed"&&(o=a.result);let i=e.visible;e.visible=o,Object.is(i,o)||t.update(a=>{let c=[...a??[]],u=X(c,e,i);return u!==-1&&(c[u]=o),c}),e.steps.every(a=>a.outcome!=="pending")&&J(t).delete(e)}function ue(t,e){let n=L(t).length;return t.update(s=>[...s??[],e]),b({rollback(){t.update(s=>{let r=[...s??[]],o=r[n]===e?n:r.lastIndexOf(e);return o!==-1&&r.splice(o,1),r})},commit(s){t.update(r=>{let o=[...r??[]],i=o[n]===e?n:o.lastIndexOf(e);return i!==-1&&(o[i]=s),o})}})}function de(t,e,n){let s=L(t),r=s.indexOf(e);if(r===-1)return b({rollback(){},commit(){}});let o=J(t),i=[...o].find(c=>Object.is(c.visible,e)&&X(s,c,e)===r);i===void 0&&(i={index:r,base:e,visible:e,steps:[]},o.add(i));let a={temporary:n,outcome:"pending"};return i.steps.push(a),i.visible=n,t.update(c=>(c??[]).map((u,f)=>f===r?n:u)),b({rollback(){W(t,i,a,"rolled-back")},commit(c){W(t,i,a,"committed",c)}})}function he(t,e){let n=L(t).indexOf(e);return n===-1?b({rollback(){},commit(){}}):(t.update(s=>{let r=[...s??[]];return r[n]===e&&r.splice(n,1),r}),b({rollback(){t.update(s=>{let r=[...s??[]];return r.splice(Math.min(n,r.length),0,e),r})},commit(){}}))}function Y(t,e,n,s){if(n===null)return N(new A(t,{url:"",headers:s.headers,identity:"paused",cache:B(s.cache),schema:s.validate,signal:s.signal},!0));let r=R(n,s.query,e.baseURL),o=new Headers(s.headers),i={url:r,headers:o,identity:V(r,o,s.key,s.validate),cache:B(s.cache),schema:s.validate,signal:s.signal};return N(new A(t,i))}function N(t){let e=t,n={get data(){return t.snapshot.data},get error(){return t.snapshot.error},get status(){return t.snapshot.status},get pending(){return t.snapshot.pending},get refreshing(){return t.snapshot.refreshing},refresh:()=>t.refresh(),abort:()=>t.abort(),update:s=>t.update(s),mutate:s=>t.mutate(s),append:s=>ue(e,s),replace:(s,r)=>de(e,s,r),remove:s=>he(e,s)};return G.set(n,t),n}function D(t){let e=G.get(t);if(e===void 0)throw new TypeError("Value is not a fetch resource from @memoized-dom/data");return e}function qe(t,e){let n=D(t);if(n.disposed)throw new Error("Cannot subscribe to a disposed fetch resource");return n.notifier.subscribe(e)}function Le(t){D(t).dispose()}function De(t){return Q(D(t).snapshot)}function Z(t,e){return{baseURL:e??(typeof location>"u"?void 0:location.href),fetch(){let s=t??globalThis.fetch;if(s===void 0)throw new Error("No fetch implementation is available");return s}}}function Ve(t={}){let e=Z(t.fetch,t.baseURL),n=new E(e),s=new S;return{$fetch:((i,a={})=>Y(n,e,i,a)),$action:((i,a={})=>z(e,s,i,a)),clear(){s.clear(),n.clear()}}}export{h as a,Se as b,Ce as c,Ee as d,qe as e,Le as f,De as g,Ve as h};