march-hare 0.7.2 → 0.7.4
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/index.d.ts +10 -6
- package/dist/march-hare.js +2 -2
- package/dist/march-hare.umd.cjs +1 -1
- package/dist/types/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/action/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { getActionSymbol, getLifecycleType, isBroadcastAction, isMulticastAction
|
|
|
5
5
|
*/
|
|
6
6
|
type ActionFactory = {
|
|
7
7
|
/**
|
|
8
|
-
* Creates a new unicast action with
|
|
8
|
+
* Creates a new unicast action with an optional name.
|
|
9
9
|
*
|
|
10
10
|
* `K` is the literal type of the action name and is captured as a phantom
|
|
11
11
|
* brand so `Action("A")` and `Action("B")` produce structurally-distinct
|
|
@@ -15,19 +15,23 @@ type ActionFactory = {
|
|
|
15
15
|
* (e.g. lifecycle / no-payload actions) which is the most common source of
|
|
16
16
|
* foreign-class collisions.
|
|
17
17
|
*
|
|
18
|
+
* Omitting the name produces an action whose symbol description has no
|
|
19
|
+
* suffix. Symbol identity (and therefore dispatch routing) is unaffected
|
|
20
|
+
* — names are only used for fault reporting and debugger readability.
|
|
21
|
+
*
|
|
18
22
|
* @template P The payload type for the action.
|
|
19
23
|
* @template C The channel type for channeled dispatches.
|
|
20
24
|
* @template K The literal type of the action name (inferred when no other
|
|
21
25
|
* generics are supplied; defaults to `string` otherwise).
|
|
22
26
|
*/
|
|
23
|
-
<P = never, C extends Filter = never, K extends string = string>(name
|
|
27
|
+
<P = never, C extends Filter = never, K extends string = string>(name?: K): HandlerPayload<P, C, K>;
|
|
24
28
|
/**
|
|
25
29
|
* Creates a new action with the specified distribution mode.
|
|
26
30
|
*/
|
|
27
|
-
<P = never, C extends Filter = never, K extends string = string>(name: K, distribution: Distribution.Broadcast): BroadcastPayload<P, C, K>;
|
|
28
|
-
<P = never, C extends Filter = never, K extends string = string>(name: K, distribution: Distribution.Multicast): MulticastPayload<P, C, K>;
|
|
29
|
-
<P = never, C extends Filter = never, K extends string = string>(name: K, distribution: Distribution.Unicast): HandlerPayload<P, C, K>;
|
|
30
|
-
<P = never, C extends Filter = never, K extends string = string>(name: K, distribution: Distribution): HandlerPayload<P, C, K> | BroadcastPayload<P, C, K> | MulticastPayload<P, C, K>;
|
|
31
|
+
<P = never, C extends Filter = never, K extends string = string>(name: K | undefined, distribution: Distribution.Broadcast): BroadcastPayload<P, C, K>;
|
|
32
|
+
<P = never, C extends Filter = never, K extends string = string>(name: K | undefined, distribution: Distribution.Multicast): MulticastPayload<P, C, K>;
|
|
33
|
+
<P = never, C extends Filter = never, K extends string = string>(name: K | undefined, distribution: Distribution.Unicast): HandlerPayload<P, C, K>;
|
|
34
|
+
<P = never, C extends Filter = never, K extends string = string>(name: K | undefined, distribution: Distribution): HandlerPayload<P, C, K> | BroadcastPayload<P, C, K> | MulticastPayload<P, C, K>;
|
|
31
35
|
};
|
|
32
36
|
/**
|
|
33
37
|
* Creates a new action with a given payload type, optional channel type, and optional distribution mode.
|
package/dist/march-hare.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{G as e,A as t}from"@mobily/ts-belt";import{immerable as n,enablePatches as r,Immer as o,produce as s}from"immer";import{jsx as c}from"react/jsx-runtime";import*as a from"react";const i=(e="")=>`march-hare.action/${e}`,u=(e="")=>`march-hare.action/broadcast/${e}`,l=(e="")=>`march-hare.action/multicast/${e}`,f=(e="")=>`march-hare.action.lifecycle/${e}`;class d{static Payload=/* @__PURE__ */Symbol("march-hare.brand/Payload");static Broadcast=/* @__PURE__ */Symbol("march-hare.brand/Broadcast");static Multicast=/* @__PURE__ */Symbol("march-hare.brand/Multicast");static Action=/* @__PURE__ */Symbol("march-hare.brand/Action");static Channel=/* @__PURE__ */Symbol("march-hare.brand/Channel");static Name=/* @__PURE__ */Symbol("march-hare.brand/Name")}function p(e){const t=/* @__PURE__ */Symbol(`march-hare.action.lifecycle/${e}`),n=function(n){return{[d.Action]:t,[d.Payload]:void 0,[d.Channel]:n,[d.Name]:e,channel:n}};return Object.defineProperty(n,d.Action,{value:t,enumerable:!1}),Object.defineProperty(n,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(n,d.Name,{value:e,enumerable:!1}),n}const h=Symbol(u("Fault")),m=Symbol(u("Store"));class y{static Mount(){return p("Mount")}static Unmount(){return p("Unmount")}static Error(){return p("Error")}static Update(){return p("Update")}static Fault=(()=>{const e={};return Object.defineProperty(e,d.Action,{value:h,enumerable:!1}),Object.defineProperty(e,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,d.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,d.Name,{value:"Fault",enumerable:!1}),e})();static Store=(()=>{const e={};return Object.defineProperty(e,d.Action,{value:m,enumerable:!1}),Object.defineProperty(e,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,d.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,d.Name,{value:"Store",enumerable:!1}),e})()}var b=/* @__PURE__ */(e=>(e.Unicast="unicast",e.Broadcast="broadcast",e.Multicast="multicast",e))(b||{}),v=/* @__PURE__ */(e=>(e.Mounting="mounting",e.Mounted="mounted",e.Unmounting="unmounting",e.Unmounted="unmounted",e))(v||{});const g=e=>"symbol"==typeof e;function w(t){return e.isString(t)||g(t)?t:(e.isObject(t)||e.isFunction(t))&&d.Action in t?t[d.Action]:t}function O(t){if(e.isString(t))return t.startsWith(u());if(g(t))return t.description?.startsWith(u())??!1;if(e.isObject(t)||e.isFunction(t)){if(d.Broadcast in t&&t[d.Broadcast])return!0;if(d.Action in t){const e=t[d.Action];return e.description?.startsWith(u())??!1}}return!1}function P(t){const n=w(t),r=e.isString(n)?n:n.description??"";return r.startsWith(i())&&r.slice(r.lastIndexOf("/")+1)||"unknown"}function S(t){return e.isObject(t)&&d.Channel in t&&"channel"in t}function j(e){const t=w(e),n=g(t)?t.description??"":t;return n.startsWith(f())&&n.slice(f().length)||null}function E(t){if(e.isString(t))return t.startsWith(l());if(g(t))return t.description?.startsWith(l())??!1;if(e.isObject(t)||e.isFunction(t)){if(d.Multicast in t&&t[d.Multicast])return!0;if(d.Action in t){const e=t[d.Action];return e.description?.startsWith(l())??!1}}return!1}const x=(e,t=b.Unicast)=>{const n=t===b.Broadcast?Symbol(u(e)):t===b.Multicast?Symbol(l(e)):Symbol(i(e)),r=function(t){return{[d.Action]:n,[d.Payload]:void 0,[d.Channel]:t,[d.Name]:e,channel:t}};return Object.defineProperty(r,d.Action,{value:n,enumerable:!1}),Object.defineProperty(r,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(r,d.Name,{value:e,enumerable:!1}),t===b.Broadcast&&Object.defineProperty(r,d.Broadcast,{value:!0,enumerable:!1}),t===b.Multicast&&Object.defineProperty(r,d.Multicast,{value:!0,enumerable:!1}),r};var C=/* @__PURE__ */(e=>(e[e.Timedout=0]="Timedout",e[e.Supplanted=1]="Supplanted",e[e.Errored=2]="Errored",e))(C||{});class M extends Error{name="AbortError";constructor(e="Aborted"){super(e)}}class k extends Error{name="TimeoutError";constructor(e="Timeout"){super(e)}}let N=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};var A=/* @__PURE__ */(e=>(e[e.Add=1]="Add",e[e.Remove=2]="Remove",e[e.Update=4]="Update",e[e.Move=8]="Move",e[e.Replace=16]="Replace",e[e.Sort=32]="Sort",e[e.Create=64]="Create",e[e.Fetch=128]="Fetch",e[e.Clone=256]="Clone",e[e.Archive=512]="Archive",e[e.Restore=1024]="Restore",e[e.Merge=2048]="Merge",e[e.Reorder=4096]="Reorder",e[e.Sync=8192]="Sync",e[e.Publish=16384]="Publish",e[e.Link=32768]="Link",e[e.Unlink=65536]="Unlink",e[e.Lock=131072]="Lock",e[e.Unlock=262144]="Unlock",e[e.Import=524288]="Import",e[e.Export=1048576]="Export",e[e.Transfer=2097152]="Transfer",e))(A||{}),_=/* @__PURE__ */(e=>(e[e.Produce=0]="Produce",e[e.Hydrate=1]="Hydrate",e))(_||{}),R=/* @__PURE__ */(e=>(e.Property="property",e.Process="process",e.Value="value",e.Operation="operation",e))(R||{});class U{[n]=!0;static keys=new Set(Object.values(R));property=null;process=null;value;operation;constructor(e,t){this.value=e,this.operation=t}assign(e,t){const n=new U(this.value,this.operation);return n.property=e,n.process=t,n}}class L{static immer=(()=>{r();const e=new o;return e.setAutoFreeze(!1),e})();static tag="κ";static id=N}function T(e,t){const n="string"==typeof t?""===t?[]:t.split("."):t;let r=e;for(const o of n){if(null==r)return;r=r[o]}return r}function B(t){if(e.isNullable(t)||$(t))return t;if(e.isArray(t))return t.map(e=>B(e));if(e.isObject(t)&&W(t)){const e=Object.entries(t).map(([e,t])=>[e,B(t)]);return{...Object.fromEntries(e),[L.tag]:t[L.tag]??L.id()}}return t}function F(e){if(Array.isArray(e))return e.filter(e=>L.tag in e).map(e=>e[L.tag]??"").join(",");const t=e[L.tag];if(t)return t;try{return JSON.stringify(e)}catch{return`[unserializable:${typeof e}]`}}function W(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function $(t){return e.isNullable(t)||e.isString(t)||e.isNumber(t)||e.isBoolean(t)||"symbol"==typeof t||"bigint"==typeof t}function D(t,n,r,o,s,c){return function a(i,u=n.path){if(i instanceof U){const n=T(r,u.join("."));if(Object.entries(i).filter(([e,t])=>!U.keys.has(e)&&t instanceof U).forEach(([e,t])=>a(t,u.concat(e))),$(i.value)){if(t===_.Hydrate)return i.value;const a=u.slice(0,-1),l=a.length>0?T(r,a.join(".")):r;return e.isNullable(l)||H(l,i,u.at(-1),o,s,c),n??i.value}if(t===_.Hydrate){const e=B(a(i.value,u));return H(e,i,null,o,s,c),e}const l=n??B(i.value);return H(l,i,null,o,s,c),e.isNullable(n)?l:(a(i.value,u),n)}if(e.isArray(i))return i.map((e,t)=>a(e,u.concat(t)));if(e.isObject(i)&&!W(i))return i;if(e.isObject(i)){const e=Object.entries(i).map(([e,t])=>[e,a(t,u.concat(e))]),n=Object.fromEntries(e);if(t===_.Hydrate){const e=B(n);return Object.entries(i).forEach(([t,n])=>{n instanceof U&&$(n.value)&&H(e,n,t,o,s,c)}),e}return n}return i}(n.value)}function H(e,t,n,r,o,s){const c=s(e),a=o.get(c)??[];o.set(c,[t.assign(n,r),...a])}class I{#e={};#t;#n=/* @__PURE__ */new Map;#r=/* @__PURE__ */new Set;#o=!1;constructor(e=F){this.#t=e}static pk(){return N()}static"κ"=I.pk;annotate(e,t){return new U(t,e)}"δ"=this.annotate;get model(){return this.#e}get inspect(){return function(n,r,o,s,c){function a(s){const c=s.at(-1),a=T(n(),s),i=s.slice(0,-1),u=t.isNotEmpty(i)?T(n(),i):n();return[...e.isObject(a)||e.isArray(a)?r.get(o(a))?.filter(t=>e.isNullable(t.property))??[]:[],...e.isObject(u)?r.get(o(u))?.filter(e=>e.property===c)??[]:[]]}return function e(r){return new Proxy(()=>{},{get:(o,i)=>"pending"===i?()=>!t.isEmpty(a(r)):"remaining"===i?()=>t.length(a(r)):"box"===i?()=>({value:T(n(),r),inspect:e(r)}):"is"===i?e=>a(r).some(t=>0!==(t.operation&e)):"draft"===i?()=>t.head(a(r))?.value??T(n(),r):"settled"===i?()=>new Promise(e=>{if(t.isEmpty(a(r)))return e(T(n(),r));const o=()=>{t.isEmpty(a(r))&&(c(o),e(T(n(),r)))};s(o)}):e([...r,String(i)])})}([])}(()=>this.#e,this.#n,this.#t,e=>this.#r.add(e),e=>this.#r.delete(e))}hydrate(e){return this.#o=!0,this.#s(_.Hydrate,()=>e)}produce(e){if(!this.#o)throw new Error("State must be hydrated using hydrate() before calling produce()");return this.#s(_.Produce,e)}#s(e,t){const n=/* @__PURE__ */Symbol("process"),[,r]=L.immer.produceWithPatches(this.#e,t);return this.#e=r.reduce((t,r)=>L.immer.applyPatches(t,[{...r,value:D(e,r,t,n,this.#n,this.#t)}]),this.#e),this.#e=B(this.#e),this.#c(),n}prune(e){this.#n.forEach((n,r)=>{const o=n.filter(t=>t.process!==e);t.isEmpty(o)?this.#n.delete(r):this.#n.set(r,o)}),this.#c()}#c(){this.#r.forEach(e=>e())}observe(e){const t=()=>e(this.#e);return this.#r.add(t),()=>this.#r.delete(t)}}const z=new I;function J(e,t=A.Update){return z.annotate(t,e)}function q(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var G,K={exports:{}};const V=/* @__PURE__ */q((G||(G=1,function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}function o(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,r,s,c){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new o(r,s||e,c),i=n?n+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function c(e,t){0===--e._eventsCount?e._events=new r:delete e._events[t]}function a(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=/* @__PURE__ */Object.create(null),(new r).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,r,o=[];if(0===this._eventsCount)return o;for(r in e=this._events)t.call(e,r)&&o.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[n?n+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,s=new Array(o);r<o;r++)s[r]=t[r].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[n?n+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,r,o,s,c){var a=n?n+e:e;if(!this._events[a])return!1;var i,u,l=this._events[a],f=arguments.length;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),f){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,r),!0;case 4:return l.fn.call(l.context,t,r,o),!0;case 5:return l.fn.call(l.context,t,r,o,s),!0;case 6:return l.fn.call(l.context,t,r,o,s,c),!0}for(u=1,i=new Array(f-1);u<f;u++)i[u-1]=arguments[u];l.fn.apply(l.context,i)}else{var d,p=l.length;for(u=0;u<p;u++)switch(l[u].once&&this.removeListener(e,l[u].fn,void 0,!0),f){case 1:l[u].fn.call(l[u].context);break;case 2:l[u].fn.call(l[u].context,t);break;case 3:l[u].fn.call(l[u].context,t,r);break;case 4:l[u].fn.call(l[u].context,t,r,o);break;default:if(!i)for(d=1,i=new Array(f-1);d<f;d++)i[d-1]=arguments[d];l[u].fn.apply(l[u].context,i)}}return!0},a.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,r,o){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return c(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||r&&a.context!==r||c(this,s);else{for(var i=0,u=[],l=a.length;i<l;i++)(a[i].fn!==t||o&&!a[i].once||r&&a[i].context!==r)&&u.push(a[i]);u.length?this._events[s]=1===u.length?u[0]:u:c(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=n?n+e:e]&&c(this,t):(this._events=new r,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(K)),K.exports));class Q extends V{cache=/* @__PURE__ */new Map;emit(e,...t){return this.cache.set(e,t[0]),super.emit(e,...t)}setCache(e,t){this.cache.set(e,t)}getCached(e){return this.cache.get(e)}fire(e,...t){return super.emit(e,...t)}}const X=a.createContext(new Q);function Y(){return a.useContext(X)}function Z({children:e}){const t=a.useMemo(()=>new Q,[]);/* @__PURE__ */
|
|
1
|
+
import{G as e,A as t}from"@mobily/ts-belt";import{immerable as n,enablePatches as r,Immer as o,produce as s}from"immer";import{jsx as c}from"react/jsx-runtime";import*as a from"react";const i=(e="")=>`march-hare.action/${e}`,u=(e="")=>`march-hare.action/broadcast/${e}`,l=(e="")=>`march-hare.action/multicast/${e}`,f=(e="")=>`march-hare.action.lifecycle/${e}`;class d{static Payload=/* @__PURE__ */Symbol("march-hare.brand/Payload");static Broadcast=/* @__PURE__ */Symbol("march-hare.brand/Broadcast");static Multicast=/* @__PURE__ */Symbol("march-hare.brand/Multicast");static Action=/* @__PURE__ */Symbol("march-hare.brand/Action");static Channel=/* @__PURE__ */Symbol("march-hare.brand/Channel");static Name=/* @__PURE__ */Symbol("march-hare.brand/Name")}function p(e){const t=/* @__PURE__ */Symbol(`march-hare.action.lifecycle/${e}`),n=function(n){return{[d.Action]:t,[d.Payload]:void 0,[d.Channel]:n,[d.Name]:e,channel:n}};return Object.defineProperty(n,d.Action,{value:t,enumerable:!1}),Object.defineProperty(n,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(n,d.Name,{value:e,enumerable:!1}),n}const h=Symbol(u("Fault")),m=Symbol(u("Store"));class y{static Mount(){return p("Mount")}static Unmount(){return p("Unmount")}static Error(){return p("Error")}static Update(){return p("Update")}static Fault=(()=>{const e={};return Object.defineProperty(e,d.Action,{value:h,enumerable:!1}),Object.defineProperty(e,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,d.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,d.Name,{value:"Fault",enumerable:!1}),e})();static Store=(()=>{const e={};return Object.defineProperty(e,d.Action,{value:m,enumerable:!1}),Object.defineProperty(e,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,d.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,d.Name,{value:"Store",enumerable:!1}),e})()}var b=/* @__PURE__ */(e=>(e.Unicast="unicast",e.Broadcast="broadcast",e.Multicast="multicast",e))(b||{}),v=/* @__PURE__ */(e=>(e.Mounting="mounting",e.Mounted="mounted",e.Unmounting="unmounting",e.Unmounted="unmounted",e))(v||{});const g=e=>"symbol"==typeof e;function w(t){return e.isString(t)||g(t)?t:(e.isObject(t)||e.isFunction(t))&&d.Action in t?t[d.Action]:t}function O(t){if(e.isString(t))return t.startsWith(u());if(g(t))return t.description?.startsWith(u())??!1;if(e.isObject(t)||e.isFunction(t)){if(d.Broadcast in t&&t[d.Broadcast])return!0;if(d.Action in t){const e=t[d.Action];return e.description?.startsWith(u())??!1}}return!1}function P(t){const n=w(t),r=e.isString(n)?n:n.description??"";return r.startsWith(i())&&r.slice(r.lastIndexOf("/")+1)||"unknown"}function S(t){return e.isObject(t)&&d.Channel in t&&"channel"in t}function j(e){const t=w(e),n=g(t)?t.description??"":t;return n.startsWith(f())&&n.slice(f().length)||null}function E(t){if(e.isString(t))return t.startsWith(l());if(g(t))return t.description?.startsWith(l())??!1;if(e.isObject(t)||e.isFunction(t)){if(d.Multicast in t&&t[d.Multicast])return!0;if(d.Action in t){const e=t[d.Action];return e.description?.startsWith(l())??!1}}return!1}const x=(e="",t=b.Unicast)=>{const n=t===b.Broadcast?Symbol(u(e)):t===b.Multicast?Symbol(l(e)):Symbol(i(e)),r=function(t){return{[d.Action]:n,[d.Payload]:void 0,[d.Channel]:t,[d.Name]:e,channel:t}};return Object.defineProperty(r,d.Action,{value:n,enumerable:!1}),Object.defineProperty(r,d.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(r,d.Name,{value:e,enumerable:!1}),t===b.Broadcast&&Object.defineProperty(r,d.Broadcast,{value:!0,enumerable:!1}),t===b.Multicast&&Object.defineProperty(r,d.Multicast,{value:!0,enumerable:!1}),r};var C=/* @__PURE__ */(e=>(e[e.Timedout=0]="Timedout",e[e.Supplanted=1]="Supplanted",e[e.Errored=2]="Errored",e))(C||{});class M extends Error{name="AbortError";constructor(e="Aborted"){super(e)}}class k extends Error{name="TimeoutError";constructor(e="Timeout"){super(e)}}let N=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};var A=/* @__PURE__ */(e=>(e[e.Add=1]="Add",e[e.Remove=2]="Remove",e[e.Update=4]="Update",e[e.Move=8]="Move",e[e.Replace=16]="Replace",e[e.Sort=32]="Sort",e[e.Create=64]="Create",e[e.Fetch=128]="Fetch",e[e.Clone=256]="Clone",e[e.Archive=512]="Archive",e[e.Restore=1024]="Restore",e[e.Merge=2048]="Merge",e[e.Reorder=4096]="Reorder",e[e.Sync=8192]="Sync",e[e.Publish=16384]="Publish",e[e.Link=32768]="Link",e[e.Unlink=65536]="Unlink",e[e.Lock=131072]="Lock",e[e.Unlock=262144]="Unlock",e[e.Import=524288]="Import",e[e.Export=1048576]="Export",e[e.Transfer=2097152]="Transfer",e))(A||{}),_=/* @__PURE__ */(e=>(e[e.Produce=0]="Produce",e[e.Hydrate=1]="Hydrate",e))(_||{}),R=/* @__PURE__ */(e=>(e.Property="property",e.Process="process",e.Value="value",e.Operation="operation",e))(R||{});class U{[n]=!0;static keys=new Set(Object.values(R));property=null;process=null;value;operation;constructor(e,t){this.value=e,this.operation=t}assign(e,t){const n=new U(this.value,this.operation);return n.property=e,n.process=t,n}}class L{static immer=(()=>{r();const e=new o;return e.setAutoFreeze(!1),e})();static tag="κ";static id=N}function T(e,t){const n="string"==typeof t?""===t?[]:t.split("."):t;let r=e;for(const o of n){if(null==r)return;r=r[o]}return r}function B(t){if(e.isNullable(t)||$(t))return t;if(e.isArray(t))return t.map(e=>B(e));if(e.isObject(t)&&W(t)){const e=Object.entries(t).map(([e,t])=>[e,B(t)]);return{...Object.fromEntries(e),[L.tag]:t[L.tag]??L.id()}}return t}function F(e){if(Array.isArray(e))return e.filter(e=>L.tag in e).map(e=>e[L.tag]??"").join(",");const t=e[L.tag];if(t)return t;try{return JSON.stringify(e)}catch{return`[unserializable:${typeof e}]`}}function W(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function $(t){return e.isNullable(t)||e.isString(t)||e.isNumber(t)||e.isBoolean(t)||"symbol"==typeof t||"bigint"==typeof t}function D(t,n,r,o,s,c){return function a(i,u=n.path){if(i instanceof U){const n=T(r,u.join("."));if(Object.entries(i).filter(([e,t])=>!U.keys.has(e)&&t instanceof U).forEach(([e,t])=>a(t,u.concat(e))),$(i.value)){if(t===_.Hydrate)return i.value;const a=u.slice(0,-1),l=a.length>0?T(r,a.join(".")):r;return e.isNullable(l)||H(l,i,u.at(-1),o,s,c),n??i.value}if(t===_.Hydrate){const e=B(a(i.value,u));return H(e,i,null,o,s,c),e}const l=n??B(i.value);return H(l,i,null,o,s,c),e.isNullable(n)?l:(a(i.value,u),n)}if(e.isArray(i))return i.map((e,t)=>a(e,u.concat(t)));if(e.isObject(i)&&!W(i))return i;if(e.isObject(i)){const e=Object.entries(i).map(([e,t])=>[e,a(t,u.concat(e))]),n=Object.fromEntries(e);if(t===_.Hydrate){const e=B(n);return Object.entries(i).forEach(([t,n])=>{n instanceof U&&$(n.value)&&H(e,n,t,o,s,c)}),e}return n}return i}(n.value)}function H(e,t,n,r,o,s){const c=s(e),a=o.get(c)??[];o.set(c,[t.assign(n,r),...a])}class I{#e={};#t;#n=/* @__PURE__ */new Map;#r=/* @__PURE__ */new Set;#o=!1;constructor(e=F){this.#t=e}static pk(){return N()}static"κ"=I.pk;annotate(e,t){return new U(t,e)}"δ"=this.annotate;get model(){return this.#e}get inspect(){return function(n,r,o,s,c){function a(s){const c=s.at(-1),a=T(n(),s),i=s.slice(0,-1),u=t.isNotEmpty(i)?T(n(),i):n();return[...e.isObject(a)||e.isArray(a)?r.get(o(a))?.filter(t=>e.isNullable(t.property))??[]:[],...e.isObject(u)?r.get(o(u))?.filter(e=>e.property===c)??[]:[]]}return function e(r){return new Proxy(()=>{},{get:(o,i)=>"pending"===i?()=>!t.isEmpty(a(r)):"remaining"===i?()=>t.length(a(r)):"box"===i?()=>({value:T(n(),r),inspect:e(r)}):"is"===i?e=>a(r).some(t=>0!==(t.operation&e)):"draft"===i?()=>t.head(a(r))?.value??T(n(),r):"settled"===i?()=>new Promise(e=>{if(t.isEmpty(a(r)))return e(T(n(),r));const o=()=>{t.isEmpty(a(r))&&(c(o),e(T(n(),r)))};s(o)}):e([...r,String(i)])})}([])}(()=>this.#e,this.#n,this.#t,e=>this.#r.add(e),e=>this.#r.delete(e))}hydrate(e){return this.#o=!0,this.#s(_.Hydrate,()=>e)}produce(e){if(!this.#o)throw new Error("State must be hydrated using hydrate() before calling produce()");return this.#s(_.Produce,e)}#s(e,t){const n=/* @__PURE__ */Symbol("process"),[,r]=L.immer.produceWithPatches(this.#e,t);return this.#e=r.reduce((t,r)=>L.immer.applyPatches(t,[{...r,value:D(e,r,t,n,this.#n,this.#t)}]),this.#e),this.#e=B(this.#e),this.#c(),n}prune(e){this.#n.forEach((n,r)=>{const o=n.filter(t=>t.process!==e);t.isEmpty(o)?this.#n.delete(r):this.#n.set(r,o)}),this.#c()}#c(){this.#r.forEach(e=>e())}observe(e){const t=()=>e(this.#e);return this.#r.add(t),()=>this.#r.delete(t)}}const z=new I;function J(e,t=A.Update){return z.annotate(t,e)}function q(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var G,K={exports:{}};const V=/* @__PURE__ */q((G||(G=1,function(e){var t=Object.prototype.hasOwnProperty,n="~";function r(){}function o(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function s(e,t,r,s,c){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new o(r,s||e,c),i=n?n+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function c(e,t){0===--e._eventsCount?e._events=new r:delete e._events[t]}function a(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=/* @__PURE__ */Object.create(null),(new r).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,r,o=[];if(0===this._eventsCount)return o;for(r in e=this._events)t.call(e,r)&&o.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[n?n+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,s=new Array(o);r<o;r++)s[r]=t[r].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[n?n+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,r,o,s,c){var a=n?n+e:e;if(!this._events[a])return!1;var i,u,l=this._events[a],f=arguments.length;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),f){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,r),!0;case 4:return l.fn.call(l.context,t,r,o),!0;case 5:return l.fn.call(l.context,t,r,o,s),!0;case 6:return l.fn.call(l.context,t,r,o,s,c),!0}for(u=1,i=new Array(f-1);u<f;u++)i[u-1]=arguments[u];l.fn.apply(l.context,i)}else{var d,p=l.length;for(u=0;u<p;u++)switch(l[u].once&&this.removeListener(e,l[u].fn,void 0,!0),f){case 1:l[u].fn.call(l[u].context);break;case 2:l[u].fn.call(l[u].context,t);break;case 3:l[u].fn.call(l[u].context,t,r);break;case 4:l[u].fn.call(l[u].context,t,r,o);break;default:if(!i)for(d=1,i=new Array(f-1);d<f;d++)i[d-1]=arguments[d];l[u].fn.apply(l[u].context,i)}}return!0},a.prototype.on=function(e,t,n){return s(this,e,t,n,!1)},a.prototype.once=function(e,t,n){return s(this,e,t,n,!0)},a.prototype.removeListener=function(e,t,r,o){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return c(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||r&&a.context!==r||c(this,s);else{for(var i=0,u=[],l=a.length;i<l;i++)(a[i].fn!==t||o&&!a[i].once||r&&a[i].context!==r)&&u.push(a[i]);u.length?this._events[s]=1===u.length?u[0]:u:c(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=n?n+e:e]&&c(this,t):(this._events=new r,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=n,a.EventEmitter=a,e.exports=a}(K)),K.exports));class Q extends V{cache=/* @__PURE__ */new Map;emit(e,...t){return this.cache.set(e,t[0]),super.emit(e,...t)}setCache(e,t){this.cache.set(e,t)}getCached(e){return this.cache.get(e)}fire(e,...t){return super.emit(e,...t)}}const X=a.createContext(new Q);function Y(){return a.useContext(X)}function Z({children:e}){const t=a.useMemo(()=>new Q,[]);/* @__PURE__ */
|
|
2
2
|
return c(X.Provider,{value:t,children:e})}const ee=a.createContext(/* @__PURE__ */new Set);function te({children:e}){const t=a.useMemo(()=>/* @__PURE__ */new Set,[]);/* @__PURE__ */
|
|
3
3
|
return c(ee.Provider,{value:t,children:e})}const ne=a.createContext({current:{}});function re(){const e=a.useContext(ne);return a.useMemo(()=>new Proxy({},{get:(t,n)=>Reflect.get(e.current,n),has:(t,n)=>n in e.current,ownKeys:()=>Reflect.ownKeys(e.current),getOwnPropertyDescriptor(t,n){const r=Object.getOwnPropertyDescriptor(e.current,n);if(void 0!==r)return{...r,configurable:!0}},set(){throw new TypeError("Store is read-only outside `context.actions.produce`. Mutate via produce(({ store }) => { store.x = ... }) instead.")}}),[e])}function oe({initial:e,children:t}){const n=a.useRef(e),r=Y();return void 0===r.getCached(m)&&r.setCache(m,n.current),/* @__PURE__ */c(ne.Provider,{value:n,children:t})}function se({store:e,children:t}){/* @__PURE__ */
|
|
4
4
|
return c(Z,{children:/* @__PURE__ */c(oe,{initial:e??{},children:/* @__PURE__ */c(te,{children:t})})})}const ce=a.createContext(null);function ae(){return a.useContext(ce)}function ie(e,t){return e?.get(t)??null}function ue(e,t){const n=`Scoped${t.displayName||t.name||"Component"}`,r=w(e);return{[n](e){const n=ae(),o=a.useMemo(()=>({action:r,emitter:new Q}),[]),s=a.useMemo(()=>{const e=new Map(n??[]);return e.set(r,o),e},[n,o]);/* @__PURE__ */
|
|
5
|
-
return c(ce.Provider,{value:s,children:/* @__PURE__ */c(t,{...e})})}}[n]}const le=Symbol(((e="")=>`march-hare/replay${e}`)());function fe(e,t,...n){e instanceof Q&&e.setCache(t,n[0]);const r=e.listeners(t);return 0===r.length?Promise.resolve():Promise.all(r.map(e=>Promise.resolve(e(...n)))).then(()=>{})}const de={Update:e=>(t,n)=>{t.actions.produce(t=>{t.model[e]=n})},Invert:e=>t=>{t.actions.produce(t=>{t.model[e]=!t.model[e]})}};function pe(e,t){for(const n of e.keys())if(j(n)===t)return n;return null}const he=/* @__PURE__ */Symbol("march-hare.unset");function me(){const[,e]=a.useReducer(e=>e+1,0);return e}function ye(){return{data:he,at:null,else:e=>e}}function be(e,t){return{data:e,at:t,else:t=>e}}function ve(e){if(e instanceof Error){if("TimeoutError"===e.name)return C.Timedout;if("AbortError"===e.name)return C.Supplanted}return C.Errored}function ge(e){const t=/* @__PURE__ */new Map,n=e??{get:e=>t.get(e)??null,set:(e,n)=>{t.set(e,n)},remove:e=>{t.delete(e)},clear:()=>{t.clear()}};return{get(e){try{const t=n.get(e);if(null===t)return ye();const r=JSON.parse(t);return be(r.data,Temporal.Instant.from(r.at))}catch{return ye()}},set(e,t){if(t.data===he||null===t.at)return!1;try{return n.set(e,JSON.stringify({data:t.data,at:t.at.toString()})),!0}catch{return!1}},remove(e){n.remove(e)},clear(){n.clear()}}}function we(e,t){return new Promise((n,r)=>{if(t?.aborted)return void r(new M);const o=setTimeout(n,e);t?.addEventListener("abort",()=>{clearTimeout(o),r(new M)},{once:!0})})}async function Oe(e,t,n){if(t?.aborted)throw new M;for(;;){if(await n())return;await we(e,t)}}function Pe(e){return e?Boolean(e&&"symbol"!=typeof e):/* @__PURE__ */Symbol(`pk.${Date.now()}.${crypto.randomUUID()}`)}const Se=/* @__PURE__ */Object.freeze(/* @__PURE__ */Object.defineProperty({__proto__:null,pk:Pe,poll:Oe,sleep:we,unset:he,"ζ":we,"κ":Pe,"π":Oe},Symbol.toStringTag,{value:"Module"})),je=/* @__PURE__ */new WeakMap;function Ee(e){return JSON.stringify(e)}let xe=null;function Ce(){if(null===xe)throw new Error("context.actions.resource(...) and context.actions.resource.set(...) must be called with a fresh resource invocation, e.g. context.actions.resource(cat({ id: 5 })).");const e=xe;return xe=null,e}function Me(e,t){const n=t??function(e){let t=je.get(e);return void 0===t&&(t=ge(),je.set(e,t)),t}(e),r=e=>{const t=n.get(Ee(e));return t.data===he||null===t.at?{data:he,at:null}:{data:t.data,at:t.at}},o=(t,r,o)=>e({store:t,controller:r,params:o}).then(e=>(n.set(Ee(o),be(e,Temporal.Now.instant())),e)),s=(e,t,r)=>{n.set(Ee(e),be(t,r))};return function(e){const t=e??{};xe={run:o,read:r,seed:s,params:t},queueMicrotask(()=>{null!==xe&&xe.params===t&&(xe=null)});const{data:n}=r(t);return n===he?null:n}}const ke=a.createContext(/* @__PURE__ */new Map);function Ne({action:t,renderer:n}){const r=Y(),o=a.useContext(ke),s=me(),c=a.useMemo(()=>{const e=o.get(t);if(e)return e;const n=new I,s=r.getCached(t);void 0!==s&&n.hydrate({value:s});const c={state:n,listeners:/* @__PURE__ */new Set};return o.set(t,c),c},[t,r,o]);a.useLayoutEffect(()=>{function e(e){c.state.hydrate({value:e}),c.listeners.forEach(e=>e())}return c.listeners.add(s),r.on(t,e),()=>{c.listeners.delete(s),r.off(t,e)}},[t,r,c]);const i=c.state.model?.value;return e.isNullable(i)?null:n(i,c.state.inspect.value)}function Ae(...n){const r=e.isUndefined(n[0])||e.isFunction(n[0])?{}:n[0],o=e.isFunction(n[0])?n[0]:n[1]??(()=>({})),c=Y(),i=ae(),u=a.useContext(ee),l=re(),f=a.useContext(ne),d=me(),p=a.useRef(!1),y=a.useRef(null),b=a.useRef(new I);p.current||(p.current=!0,y.current=b.current.hydrate(r));const[g,j]=a.useState(()=>b.current.model),x=function(e){const t=a.useRef(e);return a.useLayoutEffect(()=>{t.current=e},[e]),a.useMemo(()=>{return n=t,Object.keys(e).reduce((e,t)=>(Object.defineProperty(e,t,{get:()=>n.current[t],enumerable:!0}),e),{});var n},[e])}(o()),C=a.useMemo(()=>new V,[]),M=a.useRef({handlers:/* @__PURE__ */new Map});M.current.handlers=/* @__PURE__ */new Map;const k=function(){const e=a.useRef(/* @__PURE__ */new Set),t=a.useRef(/* @__PURE__ */new Set);return a.useMemo(()=>({broadcast:e.current,multicast:t.current}),[])}(),N=a.useRef(v.Mounting),_=a.useRef(/* @__PURE__ */new Set),R=a.useRef(0),U=a.useCallback((e,t,n)=>{const r=new AbortController,o={controller:r,action:e,payload:t};return u.add(o),_.current.add(o),{model:b.current.model,get phase(){return N.current},task:o,data:x,tasks:u,store:l,actions:{produce(e){if(r.signal.aborted)return;const t=f.current,o=b.current.produce(t=>{f.current=s(f.current,n=>{e({model:t,inspect:b.current.inspect,store:n})})});j(b.current.model),f.current!==t&&c.emit(m,f.current),n.processes.add(o),y.current&&(n.processes.add(y.current),y.current=null)},dispatch(e,t){if(r.signal.aborted)return Promise.resolve();const n=w(e),o=S(e)?e.channel:void 0;if(E(e)){const e=ie(i,n);return e?fe(e.emitter,n,t,o):Promise.resolve()}return fe(O(e)?c:C,n,t,o)},annotate:(e,t=A.Update)=>b.current.annotate(t,e),resource:Object.assign(function(e){const t=Ce(),n=()=>t.run(f.current,r,t.params);return{then:(e,t)=>n().then(e,t),exceeds:e=>{const{data:r,at:o}=t.read(t.params);if(r!==he&&null!==o){const t=Temporal.Now.instant().since(o),n=Temporal.Duration.from(e);if(Temporal.Duration.compare(t,n)<=0)return Promise.resolve(r)}return n()}}},{set:(e,t)=>{const n=Ce();n.seed(n.params,t,Temporal.Now.instant())}}),async resolution(e){if(r.signal.aborted)return null;const t=w(e),n=E(e)?ie(i,t)?.emitter??null:c;if(!n)return null;if(void 0===n.getCached(t))return null;const o=
|
|
5
|
+
return c(ce.Provider,{value:s,children:/* @__PURE__ */c(t,{...e})})}}[n]}const le=Symbol(((e="")=>`march-hare/replay${e}`)());function fe(e,t,...n){e instanceof Q&&e.setCache(t,n[0]);const r=e.listeners(t);return 0===r.length?Promise.resolve():Promise.all(r.map(e=>Promise.resolve(e(...n)))).then(()=>{})}const de={Update:e=>(t,n)=>{t.actions.produce(t=>{t.model[e]=n})},Invert:e=>t=>{t.actions.produce(t=>{t.model[e]=!t.model[e]})}};function pe(e,t){for(const n of e.keys())if(j(n)===t)return n;return null}const he=/* @__PURE__ */Symbol("march-hare.unset");function me(){const[,e]=a.useReducer(e=>e+1,0);return e}function ye(){return{data:he,at:null,else:e=>e}}function be(e,t){return{data:e,at:t,else:t=>e}}function ve(e){if(e instanceof Error){if("TimeoutError"===e.name)return C.Timedout;if("AbortError"===e.name)return C.Supplanted}return C.Errored}function ge(e){const t=/* @__PURE__ */new Map,n=e??{get:e=>t.get(e)??null,set:(e,n)=>{t.set(e,n)},remove:e=>{t.delete(e)},clear:()=>{t.clear()}};return{get(e){try{const t=n.get(e);if(null===t)return ye();const r=JSON.parse(t);return be(r.data,Temporal.Instant.from(r.at))}catch{return ye()}},set(e,t){if(t.data===he||null===t.at)return!1;try{return n.set(e,JSON.stringify({data:t.data,at:t.at.toString()})),!0}catch{return!1}},remove(e){n.remove(e)},clear(){n.clear()}}}function we(e,t){return new Promise((n,r)=>{if(t?.aborted)return void r(new M);const o=setTimeout(n,e);t?.addEventListener("abort",()=>{clearTimeout(o),r(new M)},{once:!0})})}async function Oe(e,t,n){if(t?.aborted)throw new M;for(;;){if(await n())return;await we(e,t)}}function Pe(e){return e?Boolean(e&&"symbol"!=typeof e):/* @__PURE__ */Symbol(`pk.${Date.now()}.${crypto.randomUUID()}`)}const Se=/* @__PURE__ */Object.freeze(/* @__PURE__ */Object.defineProperty({__proto__:null,pk:Pe,poll:Oe,sleep:we,unset:he,"ζ":we,"κ":Pe,"π":Oe},Symbol.toStringTag,{value:"Module"})),je=/* @__PURE__ */new WeakMap;function Ee(e){return JSON.stringify(e)}let xe=null;function Ce(){if(null===xe)throw new Error("context.actions.resource(...) and context.actions.resource.set(...) must be called with a fresh resource invocation, e.g. context.actions.resource(cat({ id: 5 })).");const e=xe;return xe=null,e}function Me(e,t){const n=t??function(e){let t=je.get(e);return void 0===t&&(t=ge(),je.set(e,t)),t}(e),r=e=>{const t=n.get(Ee(e));return t.data===he||null===t.at?{data:he,at:null}:{data:t.data,at:t.at}},o=(t,r,o)=>e({store:t,controller:r,params:o}).then(e=>(n.set(Ee(o),be(e,Temporal.Now.instant())),e)),s=(e,t,r)=>{n.set(Ee(e),be(t,r))};return function(e){const t=e??{};xe={run:o,read:r,seed:s,params:t},queueMicrotask(()=>{null!==xe&&xe.params===t&&(xe=null)});const{data:n}=r(t);return n===he?null:n}}const ke=a.createContext(/* @__PURE__ */new Map);function Ne({action:t,renderer:n}){const r=Y(),o=a.useContext(ke),s=me(),c=a.useMemo(()=>{const e=o.get(t);if(e)return e;const n=new I,s=r.getCached(t);void 0!==s&&n.hydrate({value:s});const c={state:n,listeners:/* @__PURE__ */new Set};return o.set(t,c),c},[t,r,o]);a.useLayoutEffect(()=>{function e(e){c.state.hydrate({value:e}),c.listeners.forEach(e=>e())}return c.listeners.add(s),r.on(t,e),()=>{c.listeners.delete(s),r.off(t,e)}},[t,r,c]);const i=c.state.model?.value;return e.isNullable(i)?null:n(i,c.state.inspect.value)}function Ae(...n){const r=e.isUndefined(n[0])||e.isFunction(n[0])?{}:n[0],o=e.isFunction(n[0])?n[0]:n[1]??(()=>({})),c=Y(),i=ae(),u=a.useContext(ee),l=re(),f=a.useContext(ne),d=me(),p=a.useRef(!1),y=a.useRef(null),b=a.useRef(new I);p.current||(p.current=!0,y.current=b.current.hydrate(r));const[g,j]=a.useState(()=>b.current.model),x=function(e){const t=a.useRef(e);return a.useLayoutEffect(()=>{t.current=e},[e]),a.useMemo(()=>{return n=t,Object.keys(e).reduce((e,t)=>(Object.defineProperty(e,t,{get:()=>n.current[t],enumerable:!0}),e),{});var n},[e])}(o()),C=a.useMemo(()=>new V,[]),M=a.useRef({handlers:/* @__PURE__ */new Map});M.current.handlers=/* @__PURE__ */new Map;const k=function(){const e=a.useRef(/* @__PURE__ */new Set),t=a.useRef(/* @__PURE__ */new Set);return a.useMemo(()=>({broadcast:e.current,multicast:t.current}),[])}(),N=a.useRef(v.Mounting),_=a.useRef(/* @__PURE__ */new Set),R=a.useRef(0),U=a.useCallback((e,t,n)=>{const r=new AbortController,o={controller:r,action:e,payload:t};return u.add(o),_.current.add(o),{model:b.current.model,get phase(){return N.current},task:o,data:x,tasks:u,store:l,actions:{produce(e){if(r.signal.aborted)return;const t=f.current,o=b.current.produce(t=>{f.current=s(f.current,n=>{e({model:t,inspect:b.current.inspect,store:n})})});j(b.current.model),f.current!==t&&c.emit(m,f.current),n.processes.add(o),y.current&&(n.processes.add(y.current),y.current=null)},dispatch(e,t){if(r.signal.aborted)return Promise.resolve();const n=w(e),o=S(e)?e.channel:void 0;if(E(e)){const e=ie(i,n);return e?fe(e.emitter,n,t,o):Promise.resolve()}return fe(O(e)?c:C,n,t,o)},annotate:(e,t=A.Update)=>b.current.annotate(t,e),resource:Object.assign(function(e){const t=Ce(),n=()=>t.run(f.current,r,t.params);return{then:(e,t)=>n().then(e,t),exceeds:e=>{const{data:r,at:o}=t.read(t.params);if(r!==he&&null!==o){const t=Temporal.Now.instant().since(o),n=Temporal.Duration.from(e);if(Temporal.Duration.compare(t,n)<=0)return Promise.resolve(r)}return n()}}},{set:(e,t)=>{const n=Ce();n.seed(n.params,t,Temporal.Now.instant())}}),async resolution(e){if(r.signal.aborted)return null;const t=w(e),n=E(e)?ie(i,t)?.emitter??null:c;if(!n)return null;if(void 0===n.getCached(t))return null;const o=b.current.inspect;return o.pending()&&await new Promise((e,t)=>{if(r.signal.aborted)return void t(r.signal.reason);const n=()=>t(r.signal.reason);r.signal.addEventListener("abort",n,{once:!0}),o.settled().then(()=>{r.signal.removeEventListener("abort",n),e()})}),n.getCached(t)??null},peek(e){if(r.signal.aborted)return null;const t=w(e),n=E(e)?ie(i,t)?.emitter??null:c;return n?n.getCached(t)??null:null}}}},[g]);a.useLayoutEffect(()=>{function t(t,n,r){return function(o,s){const a=r();if(s===le&&e.isNotNullable(a))return;if(e.isNotNullable(s)&&s!==le&&e.isNotNullable(a)&&!function(e,t){for(const n of Object.keys(e))if(t[n]!==e[n])return!1;return!0}(s,a))return;const i={processes:/* @__PURE__ */new Set},l=Promise.withResolvers(),f=U(t,o,i);function p(e){const n=pe(M.current.handlers,"Error"),r=null!==n,o={reason:ve(e),error:(s=e,s instanceof Error?s:new Error(String(s))),action:P(t),handled:r,tasks:u};var s;c.fire(h,o),r&&n&&C.emit(n,o)}function m(){for(const e of u)if(e===f.task){u.delete(e),_.current.delete(e);break}i.processes.forEach(e=>b.current.prune(e)),i.processes.size>0&&d(),l.resolve()}let y;try{y=n(f,o)}catch(v){return p(v),void m()}if(!function(e){if(!e||"object"!=typeof e)return!1;const t=Object.prototype.toString.call(e);return"[object Generator]"===t||"[object AsyncGenerator]"===t}(y))return Promise.resolve(y).catch(p).finally(m),l.promise;(async()=>{for await(const e of y);})().catch(p).finally(m)}}R.current++;const n=/* @__PURE__ */new Set;return M.current.handlers.forEach((e,r)=>{for(const{getChannel:o,handler:s}of e){const e=t(r,s,o);if(E(r)){if(i)for(const t of i.values()){const o=t.emitter;o.on(r,e),n.add(()=>o.off(r,e))}C.on(r,e),k.multicast.add(r),n.add(()=>C.off(r,e))}else O(r)?(c.on(r,e),C.on(r,e),k.broadcast.add(r),n.add(()=>{c.off(r,e),C.off(r,e)})):(C.on(r,e),n.add(()=>C.off(r,e)))}}),()=>{const e=++R.current,t=new Set(n);queueMicrotask(()=>{if(R.current!==e){for(const e of t)e();return}for(const e of _.current)e.controller.abort(),u.delete(e);_.current.clear(),N.current=v.Unmounting;const n=pe(M.current.handlers,"Unmount");n&&C.emit(n),N.current=v.Unmounted;for(const e of t)e()})}},[C]),function({unicast:n,broadcast:r,dispatchers:o,scope:s,phase:c,data:i,handlers:u}){const l=a.useRef(null);a.useLayoutEffect(()=>{if(c.current===v.Mounted)return;c.current=v.Mounting;const t=pe(u,"Mount");t&&n.emit(t),o.broadcast.forEach(t=>{const o=r.getCached(t);e.isNullable(o)||n.emit(t,o,le)}),s&&o.multicast.forEach(t=>{for(const r of s.values()){const o=r.emitter.getCached(t);e.isNullable(o)||n.emit(t,o,le)}}),c.current=v.Mounted},[]),a.useLayoutEffect(()=>{if(e.isNotNullable(l.current)){const e=function(e,t){return Object.keys(t).reduce((n,r)=>e[r]!==t[r]?{...n,[r]:t[r]}:n,{})}(l.current,i);if(t.isNotEmpty(Object.keys(e))){const t=pe(u,"Update");t&&n.emit(t,e)}}l.current=i},[i,n])}({unicast:C,broadcast:c,dispatchers:k,scope:i,phase:N,data:o(),handlers:M.current.handlers});const L=a.useMemo(()=>[g,{dispatch(e,t){const n=w(e),r=S(e)?e.channel:void 0;if(E(e)){const e=ie(i,n);return e?fe(e.emitter,n,t,r):Promise.resolve()}return fe(O(e)?c:C,n,t,r)},get inspect(){return b.current.inspect},stream:(e,t)=>a.createElement(Ne,{action:w(e),renderer:t})}],[g,C]);return L.useAction=(e,t)=>{!function(e,t,n){const r=a.useRef(n);a.useLayoutEffect(()=>{r.current=n});const o=a.useRef(t);a.useLayoutEffect(()=>{o.current=t});const s=a.useCallback((e,t)=>r.current(e,t),[]),c=a.useCallback(()=>S(o.current)?o.current.channel:void 0,[]),i=w(t),u=e.current.handlers.get(i)??/* @__PURE__ */new Set;0===u.size&&e.current.handlers.set(i,u),u.add({getChannel:c,handler:s})}(M,e,t)},L.dispatch=L[1].dispatch,L}export{M as AbortError,x as Action,se as Boundary,ge as Cache,b as Distribution,y as Lifecycle,A as Op,A as Operation,C as Reason,Me as Resource,I as State,k as TimeoutError,de as With,J as annotate,Ae as useActions,re as useStore,Se as utils,ue as withScope};
|
package/dist/march-hare.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var global,factory;global=this,factory=function(e,t,r,n,o){"use strict";function s(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const c=s(o),a=(e="")=>`march-hare.action/${e}`,i=(e="")=>`march-hare.action/broadcast/${e}`,u=(e="")=>`march-hare.action/multicast/${e}`,l=(e="")=>`march-hare.action.lifecycle/${e}`;class f{static Payload=Symbol("march-hare.brand/Payload");static Broadcast=Symbol("march-hare.brand/Broadcast");static Multicast=Symbol("march-hare.brand/Multicast");static Action=Symbol("march-hare.brand/Action");static Channel=Symbol("march-hare.brand/Channel");static Name=Symbol("march-hare.brand/Name")}function d(e){const t=Symbol(`march-hare.action.lifecycle/${e}`),r=function(r){return{[f.Action]:t,[f.Payload]:void 0,[f.Channel]:r,[f.Name]:e,channel:r}};return Object.defineProperty(r,f.Action,{value:t,enumerable:!1}),Object.defineProperty(r,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(r,f.Name,{value:e,enumerable:!1}),r}const p=Symbol(i("Fault")),h=Symbol(i("Store"));class m{static Mount(){return d("Mount")}static Unmount(){return d("Unmount")}static Error(){return d("Error")}static Update(){return d("Update")}static Fault=(()=>{const e={};return Object.defineProperty(e,f.Action,{value:p,enumerable:!1}),Object.defineProperty(e,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,f.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,f.Name,{value:"Fault",enumerable:!1}),e})();static Store=(()=>{const e={};return Object.defineProperty(e,f.Action,{value:h,enumerable:!1}),Object.defineProperty(e,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,f.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,f.Name,{value:"Store",enumerable:!1}),e})()}var b=(e=>(e.Unicast="unicast",e.Broadcast="broadcast",e.Multicast="multicast",e))(b||{}),y=(e=>(e.Mounting="mounting",e.Mounted="mounted",e.Unmounting="unmounting",e.Unmounted="unmounted",e))(y||{});const v=e=>"symbol"==typeof e;function g(e){return t.G.isString(e)||v(e)?e:(t.G.isObject(e)||t.G.isFunction(e))&&f.Action in e?e[f.Action]:e}function w(e){if(t.G.isString(e))return e.startsWith(i());if(v(e))return e.description?.startsWith(i())??!1;if(t.G.isObject(e)||t.G.isFunction(e)){if(f.Broadcast in e&&e[f.Broadcast])return!0;if(f.Action in e){const t=e[f.Action];return t.description?.startsWith(i())??!1}}return!1}function j(e){const r=g(e),n=t.G.isString(r)?r:r.description??"";return n.startsWith(a())&&n.slice(n.lastIndexOf("/")+1)||"unknown"}function O(e){return t.G.isObject(e)&&f.Channel in e&&"channel"in e}function S(e){const t=g(e),r=v(t)?t.description??"":t;return r.startsWith(l())&&r.slice(l().length)||null}function P(e){if(t.G.isString(e))return e.startsWith(u());if(v(e))return e.description?.startsWith(u())??!1;if(t.G.isObject(e)||t.G.isFunction(e)){if(f.Multicast in e&&e[f.Multicast])return!0;if(f.Action in e){const t=e[f.Action];return t.description?.startsWith(u())??!1}}return!1}var x=(e=>(e[e.Timedout=0]="Timedout",e[e.Supplanted=1]="Supplanted",e[e.Errored=2]="Errored",e))(x||{});class E extends Error{name="AbortError";constructor(e="Aborted"){super(e)}}class M extends Error{name="TimeoutError";constructor(e="Timeout"){super(e)}}let A=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&r[e]];return t};var C=(e=>(e[e.Add=1]="Add",e[e.Remove=2]="Remove",e[e.Update=4]="Update",e[e.Move=8]="Move",e[e.Replace=16]="Replace",e[e.Sort=32]="Sort",e[e.Create=64]="Create",e[e.Fetch=128]="Fetch",e[e.Clone=256]="Clone",e[e.Archive=512]="Archive",e[e.Restore=1024]="Restore",e[e.Merge=2048]="Merge",e[e.Reorder=4096]="Reorder",e[e.Sync=8192]="Sync",e[e.Publish=16384]="Publish",e[e.Link=32768]="Link",e[e.Unlink=65536]="Unlink",e[e.Lock=131072]="Lock",e[e.Unlock=262144]="Unlock",e[e.Import=524288]="Import",e[e.Export=1048576]="Export",e[e.Transfer=2097152]="Transfer",e))(C||{}),G=(e=>(e[e.Produce=0]="Produce",e[e.Hydrate=1]="Hydrate",e))(G||{}),k=(e=>(e.Property="property",e.Process="process",e.Value="value",e.Operation="operation",e))(k||{});class N{[r.immerable]=!0;static keys=new Set(Object.values(k));property=null;process=null;value;operation;constructor(e,t){this.value=e,this.operation=t}assign(e,t){const r=new N(this.value,this.operation);return r.property=e,r.process=t,r}}class _{static immer=(()=>{r.enablePatches();const e=new r.Immer;return e.setAutoFreeze(!1),e})();static tag="κ";static id=A}function R(e,t){const r="string"==typeof t?""===t?[]:t.split("."):t;let n=e;for(const o of r){if(null==n)return;n=n[o]}return n}function T(e){if(t.G.isNullable(e)||B(e))return e;if(t.G.isArray(e))return e.map(e=>T(e));if(t.G.isObject(e)&&L(e)){const t=Object.entries(e).map(([e,t])=>[e,T(t)]);return{...Object.fromEntries(t),[_.tag]:e[_.tag]??_.id()}}return e}function U(e){if(Array.isArray(e))return e.filter(e=>_.tag in e).map(e=>e[_.tag]??"").join(",");const t=e[_.tag];if(t)return t;try{return JSON.stringify(e)}catch{return`[unserializable:${typeof e}]`}}function L(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function B(e){return t.G.isNullable(e)||t.G.isString(e)||t.G.isNumber(e)||t.G.isBoolean(e)||"symbol"==typeof e||"bigint"==typeof e}function F(e,r,n,o,s,c){return function a(i,u=r.path){if(i instanceof N){const r=R(n,u.join("."));if(Object.entries(i).filter(([e,t])=>!N.keys.has(e)&&t instanceof N).forEach(([e,t])=>a(t,u.concat(e))),B(i.value)){if(e===G.Hydrate)return i.value;const a=u.slice(0,-1),l=a.length>0?R(n,a.join(".")):n;return t.G.isNullable(l)||W(l,i,u.at(-1),o,s,c),r??i.value}if(e===G.Hydrate){const e=T(a(i.value,u));return W(e,i,null,o,s,c),e}const l=r??T(i.value);return W(l,i,null,o,s,c),t.G.isNullable(r)?l:(a(i.value,u),r)}if(t.G.isArray(i))return i.map((e,t)=>a(e,u.concat(t)));if(t.G.isObject(i)&&!L(i))return i;if(t.G.isObject(i)){const t=Object.entries(i).map(([e,t])=>[e,a(t,u.concat(e))]),r=Object.fromEntries(t);if(e===G.Hydrate){const e=T(r);return Object.entries(i).forEach(([t,r])=>{r instanceof N&&B(r.value)&&W(e,r,t,o,s,c)}),e}return r}return i}(r.value)}function W(e,t,r,n,o,s){const c=s(e),a=o.get(c)??[];o.set(c,[t.assign(r,n),...a])}class ${#e={};#t;#r=new Map;#n=new Set;#o=!1;constructor(e=U){this.#t=e}static pk(){return A()}static"κ"=$.pk;annotate(e,t){return new N(t,e)}"δ"=this.annotate;get model(){return this.#e}get inspect(){return function(e,r,n,o,s){function c(o){const s=o.at(-1),c=R(e(),o),a=o.slice(0,-1),i=t.A.isNotEmpty(a)?R(e(),a):e();return[...t.G.isObject(c)||t.G.isArray(c)?r.get(n(c))?.filter(e=>t.G.isNullable(e.property))??[]:[],...t.G.isObject(i)?r.get(n(i))?.filter(e=>e.property===s)??[]:[]]}return function r(n){return new Proxy(()=>{},{get:(a,i)=>"pending"===i?()=>!t.A.isEmpty(c(n)):"remaining"===i?()=>t.A.length(c(n)):"box"===i?()=>({value:R(e(),n),inspect:r(n)}):"is"===i?e=>c(n).some(t=>0!==(t.operation&e)):"draft"===i?()=>t.A.head(c(n))?.value??R(e(),n):"settled"===i?()=>new Promise(r=>{if(t.A.isEmpty(c(n)))return r(R(e(),n));const a=()=>{t.A.isEmpty(c(n))&&(s(a),r(R(e(),n)))};o(a)}):r([...n,String(i)])})}([])}(()=>this.#e,this.#r,this.#t,e=>this.#n.add(e),e=>this.#n.delete(e))}hydrate(e){return this.#o=!0,this.#s(G.Hydrate,()=>e)}produce(e){if(!this.#o)throw new Error("State must be hydrated using hydrate() before calling produce()");return this.#s(G.Produce,e)}#s(e,t){const r=Symbol("process"),[,n]=_.immer.produceWithPatches(this.#e,t);return this.#e=n.reduce((t,n)=>_.immer.applyPatches(t,[{...n,value:F(e,n,t,r,this.#r,this.#t)}]),this.#e),this.#e=T(this.#e),this.#c(),r}prune(e){this.#r.forEach((r,n)=>{const o=r.filter(t=>t.process!==e);t.A.isEmpty(o)?this.#r.delete(n):this.#r.set(n,o)}),this.#c()}#c(){this.#n.forEach(e=>e())}observe(e){const t=()=>e(this.#e);return this.#n.add(t),()=>this.#n.delete(t)}}const D=new $;function I(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,q={exports:{}},z=(H||(H=1,function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,c){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,c),i=r?r+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function c(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,c){var a=r?r+e:e;if(!this._events[a])return!1;var i,u,l=this._events[a],f=arguments.length;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),f){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,n),!0;case 4:return l.fn.call(l.context,t,n,o),!0;case 5:return l.fn.call(l.context,t,n,o,s),!0;case 6:return l.fn.call(l.context,t,n,o,s,c),!0}for(u=1,i=new Array(f-1);u<f;u++)i[u-1]=arguments[u];l.fn.apply(l.context,i)}else{var d,p=l.length;for(u=0;u<p;u++)switch(l[u].once&&this.removeListener(e,l[u].fn,void 0,!0),f){case 1:l[u].fn.call(l[u].context);break;case 2:l[u].fn.call(l[u].context,t);break;case 3:l[u].fn.call(l[u].context,t,n);break;case 4:l[u].fn.call(l[u].context,t,n,o);break;default:if(!i)for(d=1,i=new Array(f-1);d<f;d++)i[d-1]=arguments[d];l[u].fn.apply(l[u].context,i)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return c(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||c(this,s);else{for(var i=0,u=[],l=a.length;i<l;i++)(a[i].fn!==t||o&&!a[i].once||n&&a[i].context!==n)&&u.push(a[i]);u.length?this._events[s]=1===u.length?u[0]:u:c(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&c(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(q)),q.exports);const J=I(z);class K extends J{cache=new Map;emit(e,...t){return this.cache.set(e,t[0]),super.emit(e,...t)}setCache(e,t){this.cache.set(e,t)}getCached(e){return this.cache.get(e)}fire(e,...t){return super.emit(e,...t)}}const V=c.createContext(new K);function Q(){return c.useContext(V)}function X({children:e}){const t=c.useMemo(()=>new K,[]);return n.jsx(V.Provider,{value:t,children:e})}const Y=c.createContext(new Set);function Z({children:e}){const t=c.useMemo(()=>new Set,[]);return n.jsx(Y.Provider,{value:t,children:e})}const ee=c.createContext({current:{}});function te(){const e=c.useContext(ee);return c.useMemo(()=>new Proxy({},{get:(t,r)=>Reflect.get(e.current,r),has:(t,r)=>r in e.current,ownKeys:()=>Reflect.ownKeys(e.current),getOwnPropertyDescriptor(t,r){const n=Object.getOwnPropertyDescriptor(e.current,r);if(void 0!==n)return{...n,configurable:!0}},set(){throw new TypeError("Store is read-only outside `context.actions.produce`. Mutate via produce(({ store }) => { store.x = ... }) instead.")}}),[e])}function re({initial:e,children:t}){const r=c.useRef(e),o=Q();return void 0===o.getCached(h)&&o.setCache(h,r.current),n.jsx(ee.Provider,{value:r,children:t})}const ne=c.createContext(null);function oe(){return c.useContext(ne)}function se(e,t){return e?.get(t)??null}const ce=Symbol(((e="")=>`march-hare/replay${e}`)());function ae(e,t,...r){e instanceof K&&e.setCache(t,r[0]);const n=e.listeners(t);return 0===n.length?Promise.resolve():Promise.all(n.map(e=>Promise.resolve(e(...r)))).then(()=>{})}function ie(e,t){for(const r of e.keys())if(S(r)===t)return r;return null}const ue=Symbol("march-hare.unset");function le(){const[,e]=c.useReducer(e=>e+1,0);return e}function fe(){return{data:ue,at:null,else:e=>e}}function de(e,t){return{data:e,at:t,else:t=>e}}function pe(e){if(e instanceof Error){if("TimeoutError"===e.name)return x.Timedout;if("AbortError"===e.name)return x.Supplanted}return x.Errored}function he(e){const t=new Map,r=e??{get:e=>t.get(e)??null,set:(e,r)=>{t.set(e,r)},remove:e=>{t.delete(e)},clear:()=>{t.clear()}};return{get(e){try{const t=r.get(e);if(null===t)return fe();const n=JSON.parse(t);return de(n.data,Temporal.Instant.from(n.at))}catch{return fe()}},set(e,t){if(t.data===ue||null===t.at)return!1;try{return r.set(e,JSON.stringify({data:t.data,at:t.at.toString()})),!0}catch{return!1}},remove(e){r.remove(e)},clear(){r.clear()}}}function me(e,t){return new Promise((r,n)=>{if(t?.aborted)return void n(new E);const o=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(o),n(new E)},{once:!0})})}async function be(e,t,r){if(t?.aborted)throw new E;for(;;){if(await r())return;await me(e,t)}}function ye(e){return e?Boolean(e&&"symbol"!=typeof e):Symbol(`pk.${Date.now()}.${crypto.randomUUID()}`)}const ve=Object.freeze(Object.defineProperty({__proto__:null,pk:ye,poll:be,sleep:me,unset:ue,"ζ":me,"κ":ye,"π":be},Symbol.toStringTag,{value:"Module"})),ge=new WeakMap;function we(e){return JSON.stringify(e)}let je=null;function Oe(){if(null===je)throw new Error("context.actions.resource(...) and context.actions.resource.set(...) must be called with a fresh resource invocation, e.g. context.actions.resource(cat({ id: 5 })).");const e=je;return je=null,e}const Se=c.createContext(new Map);function Pe({action:e,renderer:r}){const n=Q(),o=c.useContext(Se),s=le(),a=c.useMemo(()=>{const t=o.get(e);if(t)return t;const r=new $,s=n.getCached(e);void 0!==s&&r.hydrate({value:s});const c={state:r,listeners:new Set};return o.set(e,c),c},[e,n,o]);c.useLayoutEffect(()=>{function t(e){a.state.hydrate({value:e}),a.listeners.forEach(e=>e())}return a.listeners.add(s),n.on(e,t),()=>{a.listeners.delete(s),n.off(e,t)}},[e,n,a]);const i=a.state.model?.value;return t.G.isNullable(i)?null:r(i,a.state.inspect.value)}e.AbortError=E,e.Action=(e,t=b.Unicast)=>{const r=t===b.Broadcast?Symbol(i(e)):t===b.Multicast?Symbol(u(e)):Symbol(a(e)),n=function(t){return{[f.Action]:r,[f.Payload]:void 0,[f.Channel]:t,[f.Name]:e,channel:t}};return Object.defineProperty(n,f.Action,{value:r,enumerable:!1}),Object.defineProperty(n,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(n,f.Name,{value:e,enumerable:!1}),t===b.Broadcast&&Object.defineProperty(n,f.Broadcast,{value:!0,enumerable:!1}),t===b.Multicast&&Object.defineProperty(n,f.Multicast,{value:!0,enumerable:!1}),n},e.Boundary=function({store:e,children:t}){return n.jsx(X,{children:n.jsx(re,{initial:e??{},children:n.jsx(Z,{children:t})})})},e.Cache=he,e.Distribution=b,e.Lifecycle=m,e.Op=C,e.Operation=C,e.Reason=x,e.Resource=function(e,t){const r=t??function(e){let t=ge.get(e);return void 0===t&&(t=he(),ge.set(e,t)),t}(e),n=e=>{const t=r.get(we(e));return t.data===ue||null===t.at?{data:ue,at:null}:{data:t.data,at:t.at}},o=(t,n,o)=>e({store:t,controller:n,params:o}).then(e=>(r.set(we(o),de(e,Temporal.Now.instant())),e)),s=(e,t,n)=>{r.set(we(e),de(t,n))};return function(e){const t=e??{};je={run:o,read:n,seed:s,params:t},queueMicrotask(()=>{null!==je&&je.params===t&&(je=null)});const{data:r}=n(t);return r===ue?null:r}},e.State=$,e.TimeoutError=M,e.With={Update:e=>(t,r)=>{t.actions.produce(t=>{t.model[e]=r})},Invert:e=>t=>{t.actions.produce(t=>{t.model[e]=!t.model[e]})}},e.annotate=function(e,t=C.Update){return D.annotate(t,e)},e.useActions=function(...e){const n=t.G.isUndefined(e[0])||t.G.isFunction(e[0])?{}:e[0],o=t.G.isFunction(e[0])?e[0]:e[1]??(()=>({})),s=Q(),a=oe(),i=c.useContext(Y),u=te(),l=c.useContext(ee),f=le(),d=c.useRef(!1),m=c.useRef(null),b=c.useRef(new $);d.current||(d.current=!0,m.current=b.current.hydrate(n));const[v,S]=c.useState(()=>b.current.model),x=function(e){const t=c.useRef(e);return c.useLayoutEffect(()=>{t.current=e},[e]),c.useMemo(()=>{return r=t,Object.keys(e).reduce((e,t)=>(Object.defineProperty(e,t,{get:()=>r.current[t],enumerable:!0}),e),{});var r},[e])}(o()),E=c.useMemo(()=>new J,[]),M=c.useRef({handlers:new Map});M.current.handlers=new Map;const A=function(){const e=c.useRef(new Set),t=c.useRef(new Set);return c.useMemo(()=>({broadcast:e.current,multicast:t.current}),[])}(),G=c.useRef(y.Mounting),k=c.useRef(new Set),N=c.useRef(0),_=c.useCallback((e,t,n)=>{const o=new AbortController,c={controller:o,action:e,payload:t};return i.add(c),k.current.add(c),{model:b.current.model,get phase(){return G.current},task:c,data:x,tasks:i,store:u,actions:{produce(e){if(o.signal.aborted)return;const t=l.current,c=b.current.produce(t=>{l.current=r.produce(l.current,r=>{e({model:t,inspect:b.current.inspect,store:r})})});S(b.current.model),l.current!==t&&s.emit(h,l.current),n.processes.add(c),m.current&&(n.processes.add(m.current),m.current=null)},dispatch(e,t){if(o.signal.aborted)return Promise.resolve();const r=g(e),n=O(e)?e.channel:void 0;if(P(e)){const e=se(a,r);return e?ae(e.emitter,r,t,n):Promise.resolve()}return ae(w(e)?s:E,r,t,n)},annotate:(e,t=C.Update)=>b.current.annotate(t,e),resource:Object.assign(function(e){const t=Oe(),r=()=>t.run(l.current,o,t.params);return{then:(e,t)=>r().then(e,t),exceeds:e=>{const{data:n,at:o}=t.read(t.params);if(n!==ue&&null!==o){const t=Temporal.Now.instant().since(o),r=Temporal.Duration.from(e);if(Temporal.Duration.compare(t,r)<=0)return Promise.resolve(n)}return r()}}},{set:(e,t)=>{const r=Oe();r.seed(r.params,t,Temporal.Now.instant())}}),async resolution(e){if(o.signal.aborted)return null;const t=g(e),r=P(e)?se(a,t)?.emitter??null:s;if(!r)return null;if(void 0===r.getCached(t))return null;const n=j(e),c="unknown"!==n?n[0].toLowerCase()+n.slice(1):null;if(c){const e=b.current.inspect[c];e?.pending?.()&&await new Promise((t,r)=>{if(o.signal.aborted)return void r(o.signal.reason);const n=()=>r(o.signal.reason);o.signal.addEventListener("abort",n,{once:!0}),e.settled().then(()=>{o.signal.removeEventListener("abort",n),t()})})}return r.getCached(t)??null},peek(e){if(o.signal.aborted)return null;const t=g(e),r=P(e)?se(a,t)?.emitter??null:s;return r?r.getCached(t)??null:null}}}},[v]);c.useLayoutEffect(()=>{function e(e,r,n){return function(o,c){const a=n();if(c===ce&&t.G.isNotNullable(a))return;if(t.G.isNotNullable(c)&&c!==ce&&t.G.isNotNullable(a)&&!function(e,t){for(const r of Object.keys(e))if(t[r]!==e[r])return!1;return!0}(c,a))return;const u={processes:new Set},l=Promise.withResolvers(),d=_(e,o,u);function h(t){const r=ie(M.current.handlers,"Error"),n=null!==r,o={reason:pe(t),error:(c=t,c instanceof Error?c:new Error(String(c))),action:j(e),handled:n,tasks:i};var c;s.fire(p,o),n&&r&&E.emit(r,o)}function m(){for(const e of i)if(e===d.task){i.delete(e),k.current.delete(e);break}u.processes.forEach(e=>b.current.prune(e)),u.processes.size>0&&f(),l.resolve()}let y;try{y=r(d,o)}catch(v){return h(v),void m()}if(!function(e){if(!e||"object"!=typeof e)return!1;const t=Object.prototype.toString.call(e);return"[object Generator]"===t||"[object AsyncGenerator]"===t}(y))return Promise.resolve(y).catch(h).finally(m),l.promise;(async()=>{for await(const e of y);})().catch(h).finally(m)}}N.current++;const r=new Set;return M.current.handlers.forEach((t,n)=>{for(const{getChannel:o,handler:c}of t){const t=e(n,c,o);if(P(n)){if(a)for(const e of a.values()){const o=e.emitter;o.on(n,t),r.add(()=>o.off(n,t))}E.on(n,t),A.multicast.add(n),r.add(()=>E.off(n,t))}else w(n)?(s.on(n,t),E.on(n,t),A.broadcast.add(n),r.add(()=>{s.off(n,t),E.off(n,t)})):(E.on(n,t),r.add(()=>E.off(n,t)))}}),()=>{const e=++N.current,t=new Set(r);queueMicrotask(()=>{if(N.current!==e){for(const e of t)e();return}for(const e of k.current)e.controller.abort(),i.delete(e);k.current.clear(),G.current=y.Unmounting;const r=ie(M.current.handlers,"Unmount");r&&E.emit(r),G.current=y.Unmounted;for(const e of t)e()})}},[E]),function({unicast:e,broadcast:r,dispatchers:n,scope:o,phase:s,data:a,handlers:i}){const u=c.useRef(null);c.useLayoutEffect(()=>{if(s.current===y.Mounted)return;s.current=y.Mounting;const c=ie(i,"Mount");c&&e.emit(c),n.broadcast.forEach(n=>{const o=r.getCached(n);t.G.isNullable(o)||e.emit(n,o,ce)}),o&&n.multicast.forEach(r=>{for(const n of o.values()){const o=n.emitter.getCached(r);t.G.isNullable(o)||e.emit(r,o,ce)}}),s.current=y.Mounted},[]),c.useLayoutEffect(()=>{if(t.G.isNotNullable(u.current)){const r=function(e,t){return Object.keys(t).reduce((r,n)=>e[n]!==t[n]?{...r,[n]:t[n]}:r,{})}(u.current,a);if(t.A.isNotEmpty(Object.keys(r))){const t=ie(i,"Update");t&&e.emit(t,r)}}u.current=a},[a,e])}({unicast:E,broadcast:s,dispatchers:A,scope:a,phase:G,data:o(),handlers:M.current.handlers});const R=c.useMemo(()=>[v,{dispatch(e,t){const r=g(e),n=O(e)?e.channel:void 0;if(P(e)){const e=se(a,r);return e?ae(e.emitter,r,t,n):Promise.resolve()}return ae(w(e)?s:E,r,t,n)},get inspect(){return b.current.inspect},stream:(e,t)=>c.createElement(Pe,{action:g(e),renderer:t})}],[v,E]);return R.useAction=(e,t)=>{!function(e,t,r){const n=c.useRef(r);c.useLayoutEffect(()=>{n.current=r});const o=c.useRef(t);c.useLayoutEffect(()=>{o.current=t});const s=c.useCallback((e,t)=>n.current(e,t),[]),a=c.useCallback(()=>O(o.current)?o.current.channel:void 0,[]),i=g(t),u=e.current.handlers.get(i)??new Set;0===u.size&&e.current.handlers.set(i,u),u.add({getChannel:a,handler:s})}(M,e,t)},R.dispatch=R[1].dispatch,R},e.useStore=te,e.utils=ve,e.withScope=function(e,t){const r=`Scoped${t.displayName||t.name||"Component"}`,o=g(e);return{[r](e){const r=oe(),s=c.useMemo(()=>({action:o,emitter:new K}),[]),a=c.useMemo(()=>{const e=new Map(r??[]);return e.set(o,s),e},[r,s]);return n.jsx(ne.Provider,{value:a,children:n.jsx(t,{...e})})}}[r]},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})},"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@mobily/ts-belt"),require("immer"),require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["exports","@mobily/ts-belt","immer","react/jsx-runtime","react"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self).MarchHare={},global.TsBelt,global.Immer,global.jsxRuntime,global.React);
|
|
1
|
+
var global,factory;global=this,factory=function(e,t,r,n,o){"use strict";function s(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const c=s(o),a=(e="")=>`march-hare.action/${e}`,i=(e="")=>`march-hare.action/broadcast/${e}`,u=(e="")=>`march-hare.action/multicast/${e}`,l=(e="")=>`march-hare.action.lifecycle/${e}`;class f{static Payload=Symbol("march-hare.brand/Payload");static Broadcast=Symbol("march-hare.brand/Broadcast");static Multicast=Symbol("march-hare.brand/Multicast");static Action=Symbol("march-hare.brand/Action");static Channel=Symbol("march-hare.brand/Channel");static Name=Symbol("march-hare.brand/Name")}function d(e){const t=Symbol(`march-hare.action.lifecycle/${e}`),r=function(r){return{[f.Action]:t,[f.Payload]:void 0,[f.Channel]:r,[f.Name]:e,channel:r}};return Object.defineProperty(r,f.Action,{value:t,enumerable:!1}),Object.defineProperty(r,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(r,f.Name,{value:e,enumerable:!1}),r}const p=Symbol(i("Fault")),h=Symbol(i("Store"));class m{static Mount(){return d("Mount")}static Unmount(){return d("Unmount")}static Error(){return d("Error")}static Update(){return d("Update")}static Fault=(()=>{const e={};return Object.defineProperty(e,f.Action,{value:p,enumerable:!1}),Object.defineProperty(e,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,f.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,f.Name,{value:"Fault",enumerable:!1}),e})();static Store=(()=>{const e={};return Object.defineProperty(e,f.Action,{value:h,enumerable:!1}),Object.defineProperty(e,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(e,f.Broadcast,{value:!0,enumerable:!1}),Object.defineProperty(e,f.Name,{value:"Store",enumerable:!1}),e})()}var b=(e=>(e.Unicast="unicast",e.Broadcast="broadcast",e.Multicast="multicast",e))(b||{}),y=(e=>(e.Mounting="mounting",e.Mounted="mounted",e.Unmounting="unmounting",e.Unmounted="unmounted",e))(y||{});const v=e=>"symbol"==typeof e;function g(e){return t.G.isString(e)||v(e)?e:(t.G.isObject(e)||t.G.isFunction(e))&&f.Action in e?e[f.Action]:e}function w(e){if(t.G.isString(e))return e.startsWith(i());if(v(e))return e.description?.startsWith(i())??!1;if(t.G.isObject(e)||t.G.isFunction(e)){if(f.Broadcast in e&&e[f.Broadcast])return!0;if(f.Action in e){const t=e[f.Action];return t.description?.startsWith(i())??!1}}return!1}function j(e){const r=g(e),n=t.G.isString(r)?r:r.description??"";return n.startsWith(a())&&n.slice(n.lastIndexOf("/")+1)||"unknown"}function O(e){return t.G.isObject(e)&&f.Channel in e&&"channel"in e}function S(e){const t=g(e),r=v(t)?t.description??"":t;return r.startsWith(l())&&r.slice(l().length)||null}function P(e){if(t.G.isString(e))return e.startsWith(u());if(v(e))return e.description?.startsWith(u())??!1;if(t.G.isObject(e)||t.G.isFunction(e)){if(f.Multicast in e&&e[f.Multicast])return!0;if(f.Action in e){const t=e[f.Action];return t.description?.startsWith(u())??!1}}return!1}var x=(e=>(e[e.Timedout=0]="Timedout",e[e.Supplanted=1]="Supplanted",e[e.Errored=2]="Errored",e))(x||{});class E extends Error{name="AbortError";constructor(e="Aborted"){super(e)}}class M extends Error{name="TimeoutError";constructor(e="Timeout"){super(e)}}let A=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&r[e]];return t};var C=(e=>(e[e.Add=1]="Add",e[e.Remove=2]="Remove",e[e.Update=4]="Update",e[e.Move=8]="Move",e[e.Replace=16]="Replace",e[e.Sort=32]="Sort",e[e.Create=64]="Create",e[e.Fetch=128]="Fetch",e[e.Clone=256]="Clone",e[e.Archive=512]="Archive",e[e.Restore=1024]="Restore",e[e.Merge=2048]="Merge",e[e.Reorder=4096]="Reorder",e[e.Sync=8192]="Sync",e[e.Publish=16384]="Publish",e[e.Link=32768]="Link",e[e.Unlink=65536]="Unlink",e[e.Lock=131072]="Lock",e[e.Unlock=262144]="Unlock",e[e.Import=524288]="Import",e[e.Export=1048576]="Export",e[e.Transfer=2097152]="Transfer",e))(C||{}),G=(e=>(e[e.Produce=0]="Produce",e[e.Hydrate=1]="Hydrate",e))(G||{}),k=(e=>(e.Property="property",e.Process="process",e.Value="value",e.Operation="operation",e))(k||{});class N{[r.immerable]=!0;static keys=new Set(Object.values(k));property=null;process=null;value;operation;constructor(e,t){this.value=e,this.operation=t}assign(e,t){const r=new N(this.value,this.operation);return r.property=e,r.process=t,r}}class _{static immer=(()=>{r.enablePatches();const e=new r.Immer;return e.setAutoFreeze(!1),e})();static tag="κ";static id=A}function R(e,t){const r="string"==typeof t?""===t?[]:t.split("."):t;let n=e;for(const o of r){if(null==n)return;n=n[o]}return n}function T(e){if(t.G.isNullable(e)||B(e))return e;if(t.G.isArray(e))return e.map(e=>T(e));if(t.G.isObject(e)&&L(e)){const t=Object.entries(e).map(([e,t])=>[e,T(t)]);return{...Object.fromEntries(t),[_.tag]:e[_.tag]??_.id()}}return e}function U(e){if(Array.isArray(e))return e.filter(e=>_.tag in e).map(e=>e[_.tag]??"").join(",");const t=e[_.tag];if(t)return t;try{return JSON.stringify(e)}catch{return`[unserializable:${typeof e}]`}}function L(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function B(e){return t.G.isNullable(e)||t.G.isString(e)||t.G.isNumber(e)||t.G.isBoolean(e)||"symbol"==typeof e||"bigint"==typeof e}function F(e,r,n,o,s,c){return function a(i,u=r.path){if(i instanceof N){const r=R(n,u.join("."));if(Object.entries(i).filter(([e,t])=>!N.keys.has(e)&&t instanceof N).forEach(([e,t])=>a(t,u.concat(e))),B(i.value)){if(e===G.Hydrate)return i.value;const a=u.slice(0,-1),l=a.length>0?R(n,a.join(".")):n;return t.G.isNullable(l)||W(l,i,u.at(-1),o,s,c),r??i.value}if(e===G.Hydrate){const e=T(a(i.value,u));return W(e,i,null,o,s,c),e}const l=r??T(i.value);return W(l,i,null,o,s,c),t.G.isNullable(r)?l:(a(i.value,u),r)}if(t.G.isArray(i))return i.map((e,t)=>a(e,u.concat(t)));if(t.G.isObject(i)&&!L(i))return i;if(t.G.isObject(i)){const t=Object.entries(i).map(([e,t])=>[e,a(t,u.concat(e))]),r=Object.fromEntries(t);if(e===G.Hydrate){const e=T(r);return Object.entries(i).forEach(([t,r])=>{r instanceof N&&B(r.value)&&W(e,r,t,o,s,c)}),e}return r}return i}(r.value)}function W(e,t,r,n,o,s){const c=s(e),a=o.get(c)??[];o.set(c,[t.assign(r,n),...a])}class ${#e={};#t;#r=new Map;#n=new Set;#o=!1;constructor(e=U){this.#t=e}static pk(){return A()}static"κ"=$.pk;annotate(e,t){return new N(t,e)}"δ"=this.annotate;get model(){return this.#e}get inspect(){return function(e,r,n,o,s){function c(o){const s=o.at(-1),c=R(e(),o),a=o.slice(0,-1),i=t.A.isNotEmpty(a)?R(e(),a):e();return[...t.G.isObject(c)||t.G.isArray(c)?r.get(n(c))?.filter(e=>t.G.isNullable(e.property))??[]:[],...t.G.isObject(i)?r.get(n(i))?.filter(e=>e.property===s)??[]:[]]}return function r(n){return new Proxy(()=>{},{get:(a,i)=>"pending"===i?()=>!t.A.isEmpty(c(n)):"remaining"===i?()=>t.A.length(c(n)):"box"===i?()=>({value:R(e(),n),inspect:r(n)}):"is"===i?e=>c(n).some(t=>0!==(t.operation&e)):"draft"===i?()=>t.A.head(c(n))?.value??R(e(),n):"settled"===i?()=>new Promise(r=>{if(t.A.isEmpty(c(n)))return r(R(e(),n));const a=()=>{t.A.isEmpty(c(n))&&(s(a),r(R(e(),n)))};o(a)}):r([...n,String(i)])})}([])}(()=>this.#e,this.#r,this.#t,e=>this.#n.add(e),e=>this.#n.delete(e))}hydrate(e){return this.#o=!0,this.#s(G.Hydrate,()=>e)}produce(e){if(!this.#o)throw new Error("State must be hydrated using hydrate() before calling produce()");return this.#s(G.Produce,e)}#s(e,t){const r=Symbol("process"),[,n]=_.immer.produceWithPatches(this.#e,t);return this.#e=n.reduce((t,n)=>_.immer.applyPatches(t,[{...n,value:F(e,n,t,r,this.#r,this.#t)}]),this.#e),this.#e=T(this.#e),this.#c(),r}prune(e){this.#r.forEach((r,n)=>{const o=r.filter(t=>t.process!==e);t.A.isEmpty(o)?this.#r.delete(n):this.#r.set(n,o)}),this.#c()}#c(){this.#n.forEach(e=>e())}observe(e){const t=()=>e(this.#e);return this.#n.add(t),()=>this.#n.delete(t)}}const D=new $;function I(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,q={exports:{}},z=(H||(H=1,function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,n,s,c){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new o(n,s||e,c),i=r?r+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function c(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),a.prototype.eventNames=function(){var e,n,o=[];if(0===this._eventsCount)return o;for(n in e=this._events)t.call(e,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o},a.prototype.listeners=function(e){var t=this._events[r?r+e:e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,o=t.length,s=new Array(o);n<o;n++)s[n]=t[n].fn;return s},a.prototype.listenerCount=function(e){var t=this._events[r?r+e:e];return t?t.fn?1:t.length:0},a.prototype.emit=function(e,t,n,o,s,c){var a=r?r+e:e;if(!this._events[a])return!1;var i,u,l=this._events[a],f=arguments.length;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),f){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,n),!0;case 4:return l.fn.call(l.context,t,n,o),!0;case 5:return l.fn.call(l.context,t,n,o,s),!0;case 6:return l.fn.call(l.context,t,n,o,s,c),!0}for(u=1,i=new Array(f-1);u<f;u++)i[u-1]=arguments[u];l.fn.apply(l.context,i)}else{var d,p=l.length;for(u=0;u<p;u++)switch(l[u].once&&this.removeListener(e,l[u].fn,void 0,!0),f){case 1:l[u].fn.call(l[u].context);break;case 2:l[u].fn.call(l[u].context,t);break;case 3:l[u].fn.call(l[u].context,t,n);break;case 4:l[u].fn.call(l[u].context,t,n,o);break;default:if(!i)for(d=1,i=new Array(f-1);d<f;d++)i[d-1]=arguments[d];l[u].fn.apply(l[u].context,i)}}return!0},a.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},a.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},a.prototype.removeListener=function(e,t,n,o){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return c(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||o&&!a.once||n&&a.context!==n||c(this,s);else{for(var i=0,u=[],l=a.length;i<l;i++)(a[i].fn!==t||o&&!a[i].once||n&&a[i].context!==n)&&u.push(a[i]);u.length?this._events[s]=1===u.length?u[0]:u:c(this,s)}return this},a.prototype.removeAllListeners=function(e){var t;return e?this._events[t=r?r+e:e]&&c(this,t):(this._events=new n,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=r,a.EventEmitter=a,e.exports=a}(q)),q.exports);const J=I(z);class K extends J{cache=new Map;emit(e,...t){return this.cache.set(e,t[0]),super.emit(e,...t)}setCache(e,t){this.cache.set(e,t)}getCached(e){return this.cache.get(e)}fire(e,...t){return super.emit(e,...t)}}const V=c.createContext(new K);function Q(){return c.useContext(V)}function X({children:e}){const t=c.useMemo(()=>new K,[]);return n.jsx(V.Provider,{value:t,children:e})}const Y=c.createContext(new Set);function Z({children:e}){const t=c.useMemo(()=>new Set,[]);return n.jsx(Y.Provider,{value:t,children:e})}const ee=c.createContext({current:{}});function te(){const e=c.useContext(ee);return c.useMemo(()=>new Proxy({},{get:(t,r)=>Reflect.get(e.current,r),has:(t,r)=>r in e.current,ownKeys:()=>Reflect.ownKeys(e.current),getOwnPropertyDescriptor(t,r){const n=Object.getOwnPropertyDescriptor(e.current,r);if(void 0!==n)return{...n,configurable:!0}},set(){throw new TypeError("Store is read-only outside `context.actions.produce`. Mutate via produce(({ store }) => { store.x = ... }) instead.")}}),[e])}function re({initial:e,children:t}){const r=c.useRef(e),o=Q();return void 0===o.getCached(h)&&o.setCache(h,r.current),n.jsx(ee.Provider,{value:r,children:t})}const ne=c.createContext(null);function oe(){return c.useContext(ne)}function se(e,t){return e?.get(t)??null}const ce=Symbol(((e="")=>`march-hare/replay${e}`)());function ae(e,t,...r){e instanceof K&&e.setCache(t,r[0]);const n=e.listeners(t);return 0===n.length?Promise.resolve():Promise.all(n.map(e=>Promise.resolve(e(...r)))).then(()=>{})}function ie(e,t){for(const r of e.keys())if(S(r)===t)return r;return null}const ue=Symbol("march-hare.unset");function le(){const[,e]=c.useReducer(e=>e+1,0);return e}function fe(){return{data:ue,at:null,else:e=>e}}function de(e,t){return{data:e,at:t,else:t=>e}}function pe(e){if(e instanceof Error){if("TimeoutError"===e.name)return x.Timedout;if("AbortError"===e.name)return x.Supplanted}return x.Errored}function he(e){const t=new Map,r=e??{get:e=>t.get(e)??null,set:(e,r)=>{t.set(e,r)},remove:e=>{t.delete(e)},clear:()=>{t.clear()}};return{get(e){try{const t=r.get(e);if(null===t)return fe();const n=JSON.parse(t);return de(n.data,Temporal.Instant.from(n.at))}catch{return fe()}},set(e,t){if(t.data===ue||null===t.at)return!1;try{return r.set(e,JSON.stringify({data:t.data,at:t.at.toString()})),!0}catch{return!1}},remove(e){r.remove(e)},clear(){r.clear()}}}function me(e,t){return new Promise((r,n)=>{if(t?.aborted)return void n(new E);const o=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(o),n(new E)},{once:!0})})}async function be(e,t,r){if(t?.aborted)throw new E;for(;;){if(await r())return;await me(e,t)}}function ye(e){return e?Boolean(e&&"symbol"!=typeof e):Symbol(`pk.${Date.now()}.${crypto.randomUUID()}`)}const ve=Object.freeze(Object.defineProperty({__proto__:null,pk:ye,poll:be,sleep:me,unset:ue,"ζ":me,"κ":ye,"π":be},Symbol.toStringTag,{value:"Module"})),ge=new WeakMap;function we(e){return JSON.stringify(e)}let je=null;function Oe(){if(null===je)throw new Error("context.actions.resource(...) and context.actions.resource.set(...) must be called with a fresh resource invocation, e.g. context.actions.resource(cat({ id: 5 })).");const e=je;return je=null,e}const Se=c.createContext(new Map);function Pe({action:e,renderer:r}){const n=Q(),o=c.useContext(Se),s=le(),a=c.useMemo(()=>{const t=o.get(e);if(t)return t;const r=new $,s=n.getCached(e);void 0!==s&&r.hydrate({value:s});const c={state:r,listeners:new Set};return o.set(e,c),c},[e,n,o]);c.useLayoutEffect(()=>{function t(e){a.state.hydrate({value:e}),a.listeners.forEach(e=>e())}return a.listeners.add(s),n.on(e,t),()=>{a.listeners.delete(s),n.off(e,t)}},[e,n,a]);const i=a.state.model?.value;return t.G.isNullable(i)?null:r(i,a.state.inspect.value)}e.AbortError=E,e.Action=(e="",t=b.Unicast)=>{const r=t===b.Broadcast?Symbol(i(e)):t===b.Multicast?Symbol(u(e)):Symbol(a(e)),n=function(t){return{[f.Action]:r,[f.Payload]:void 0,[f.Channel]:t,[f.Name]:e,channel:t}};return Object.defineProperty(n,f.Action,{value:r,enumerable:!1}),Object.defineProperty(n,f.Payload,{value:void 0,enumerable:!1}),Object.defineProperty(n,f.Name,{value:e,enumerable:!1}),t===b.Broadcast&&Object.defineProperty(n,f.Broadcast,{value:!0,enumerable:!1}),t===b.Multicast&&Object.defineProperty(n,f.Multicast,{value:!0,enumerable:!1}),n},e.Boundary=function({store:e,children:t}){return n.jsx(X,{children:n.jsx(re,{initial:e??{},children:n.jsx(Z,{children:t})})})},e.Cache=he,e.Distribution=b,e.Lifecycle=m,e.Op=C,e.Operation=C,e.Reason=x,e.Resource=function(e,t){const r=t??function(e){let t=ge.get(e);return void 0===t&&(t=he(),ge.set(e,t)),t}(e),n=e=>{const t=r.get(we(e));return t.data===ue||null===t.at?{data:ue,at:null}:{data:t.data,at:t.at}},o=(t,n,o)=>e({store:t,controller:n,params:o}).then(e=>(r.set(we(o),de(e,Temporal.Now.instant())),e)),s=(e,t,n)=>{r.set(we(e),de(t,n))};return function(e){const t=e??{};je={run:o,read:n,seed:s,params:t},queueMicrotask(()=>{null!==je&&je.params===t&&(je=null)});const{data:r}=n(t);return r===ue?null:r}},e.State=$,e.TimeoutError=M,e.With={Update:e=>(t,r)=>{t.actions.produce(t=>{t.model[e]=r})},Invert:e=>t=>{t.actions.produce(t=>{t.model[e]=!t.model[e]})}},e.annotate=function(e,t=C.Update){return D.annotate(t,e)},e.useActions=function(...e){const n=t.G.isUndefined(e[0])||t.G.isFunction(e[0])?{}:e[0],o=t.G.isFunction(e[0])?e[0]:e[1]??(()=>({})),s=Q(),a=oe(),i=c.useContext(Y),u=te(),l=c.useContext(ee),f=le(),d=c.useRef(!1),m=c.useRef(null),b=c.useRef(new $);d.current||(d.current=!0,m.current=b.current.hydrate(n));const[v,S]=c.useState(()=>b.current.model),x=function(e){const t=c.useRef(e);return c.useLayoutEffect(()=>{t.current=e},[e]),c.useMemo(()=>{return r=t,Object.keys(e).reduce((e,t)=>(Object.defineProperty(e,t,{get:()=>r.current[t],enumerable:!0}),e),{});var r},[e])}(o()),E=c.useMemo(()=>new J,[]),M=c.useRef({handlers:new Map});M.current.handlers=new Map;const A=function(){const e=c.useRef(new Set),t=c.useRef(new Set);return c.useMemo(()=>({broadcast:e.current,multicast:t.current}),[])}(),G=c.useRef(y.Mounting),k=c.useRef(new Set),N=c.useRef(0),_=c.useCallback((e,t,n)=>{const o=new AbortController,c={controller:o,action:e,payload:t};return i.add(c),k.current.add(c),{model:b.current.model,get phase(){return G.current},task:c,data:x,tasks:i,store:u,actions:{produce(e){if(o.signal.aborted)return;const t=l.current,c=b.current.produce(t=>{l.current=r.produce(l.current,r=>{e({model:t,inspect:b.current.inspect,store:r})})});S(b.current.model),l.current!==t&&s.emit(h,l.current),n.processes.add(c),m.current&&(n.processes.add(m.current),m.current=null)},dispatch(e,t){if(o.signal.aborted)return Promise.resolve();const r=g(e),n=O(e)?e.channel:void 0;if(P(e)){const e=se(a,r);return e?ae(e.emitter,r,t,n):Promise.resolve()}return ae(w(e)?s:E,r,t,n)},annotate:(e,t=C.Update)=>b.current.annotate(t,e),resource:Object.assign(function(e){const t=Oe(),r=()=>t.run(l.current,o,t.params);return{then:(e,t)=>r().then(e,t),exceeds:e=>{const{data:n,at:o}=t.read(t.params);if(n!==ue&&null!==o){const t=Temporal.Now.instant().since(o),r=Temporal.Duration.from(e);if(Temporal.Duration.compare(t,r)<=0)return Promise.resolve(n)}return r()}}},{set:(e,t)=>{const r=Oe();r.seed(r.params,t,Temporal.Now.instant())}}),async resolution(e){if(o.signal.aborted)return null;const t=g(e),r=P(e)?se(a,t)?.emitter??null:s;if(!r)return null;if(void 0===r.getCached(t))return null;const n=b.current.inspect;return n.pending()&&await new Promise((e,t)=>{if(o.signal.aborted)return void t(o.signal.reason);const r=()=>t(o.signal.reason);o.signal.addEventListener("abort",r,{once:!0}),n.settled().then(()=>{o.signal.removeEventListener("abort",r),e()})}),r.getCached(t)??null},peek(e){if(o.signal.aborted)return null;const t=g(e),r=P(e)?se(a,t)?.emitter??null:s;return r?r.getCached(t)??null:null}}}},[v]);c.useLayoutEffect(()=>{function e(e,r,n){return function(o,c){const a=n();if(c===ce&&t.G.isNotNullable(a))return;if(t.G.isNotNullable(c)&&c!==ce&&t.G.isNotNullable(a)&&!function(e,t){for(const r of Object.keys(e))if(t[r]!==e[r])return!1;return!0}(c,a))return;const u={processes:new Set},l=Promise.withResolvers(),d=_(e,o,u);function h(t){const r=ie(M.current.handlers,"Error"),n=null!==r,o={reason:pe(t),error:(c=t,c instanceof Error?c:new Error(String(c))),action:j(e),handled:n,tasks:i};var c;s.fire(p,o),n&&r&&E.emit(r,o)}function m(){for(const e of i)if(e===d.task){i.delete(e),k.current.delete(e);break}u.processes.forEach(e=>b.current.prune(e)),u.processes.size>0&&f(),l.resolve()}let y;try{y=r(d,o)}catch(v){return h(v),void m()}if(!function(e){if(!e||"object"!=typeof e)return!1;const t=Object.prototype.toString.call(e);return"[object Generator]"===t||"[object AsyncGenerator]"===t}(y))return Promise.resolve(y).catch(h).finally(m),l.promise;(async()=>{for await(const e of y);})().catch(h).finally(m)}}N.current++;const r=new Set;return M.current.handlers.forEach((t,n)=>{for(const{getChannel:o,handler:c}of t){const t=e(n,c,o);if(P(n)){if(a)for(const e of a.values()){const o=e.emitter;o.on(n,t),r.add(()=>o.off(n,t))}E.on(n,t),A.multicast.add(n),r.add(()=>E.off(n,t))}else w(n)?(s.on(n,t),E.on(n,t),A.broadcast.add(n),r.add(()=>{s.off(n,t),E.off(n,t)})):(E.on(n,t),r.add(()=>E.off(n,t)))}}),()=>{const e=++N.current,t=new Set(r);queueMicrotask(()=>{if(N.current!==e){for(const e of t)e();return}for(const e of k.current)e.controller.abort(),i.delete(e);k.current.clear(),G.current=y.Unmounting;const r=ie(M.current.handlers,"Unmount");r&&E.emit(r),G.current=y.Unmounted;for(const e of t)e()})}},[E]),function({unicast:e,broadcast:r,dispatchers:n,scope:o,phase:s,data:a,handlers:i}){const u=c.useRef(null);c.useLayoutEffect(()=>{if(s.current===y.Mounted)return;s.current=y.Mounting;const c=ie(i,"Mount");c&&e.emit(c),n.broadcast.forEach(n=>{const o=r.getCached(n);t.G.isNullable(o)||e.emit(n,o,ce)}),o&&n.multicast.forEach(r=>{for(const n of o.values()){const o=n.emitter.getCached(r);t.G.isNullable(o)||e.emit(r,o,ce)}}),s.current=y.Mounted},[]),c.useLayoutEffect(()=>{if(t.G.isNotNullable(u.current)){const r=function(e,t){return Object.keys(t).reduce((r,n)=>e[n]!==t[n]?{...r,[n]:t[n]}:r,{})}(u.current,a);if(t.A.isNotEmpty(Object.keys(r))){const t=ie(i,"Update");t&&e.emit(t,r)}}u.current=a},[a,e])}({unicast:E,broadcast:s,dispatchers:A,scope:a,phase:G,data:o(),handlers:M.current.handlers});const R=c.useMemo(()=>[v,{dispatch(e,t){const r=g(e),n=O(e)?e.channel:void 0;if(P(e)){const e=se(a,r);return e?ae(e.emitter,r,t,n):Promise.resolve()}return ae(w(e)?s:E,r,t,n)},get inspect(){return b.current.inspect},stream:(e,t)=>c.createElement(Pe,{action:g(e),renderer:t})}],[v,E]);return R.useAction=(e,t)=>{!function(e,t,r){const n=c.useRef(r);c.useLayoutEffect(()=>{n.current=r});const o=c.useRef(t);c.useLayoutEffect(()=>{o.current=t});const s=c.useCallback((e,t)=>n.current(e,t),[]),a=c.useCallback(()=>O(o.current)?o.current.channel:void 0,[]),i=g(t),u=e.current.handlers.get(i)??new Set;0===u.size&&e.current.handlers.set(i,u),u.add({getChannel:a,handler:s})}(M,e,t)},R.dispatch=R[1].dispatch,R},e.useStore=te,e.utils=ve,e.withScope=function(e,t){const r=`Scoped${t.displayName||t.name||"Component"}`,o=g(e);return{[r](e){const r=oe(),s=c.useMemo(()=>({action:o,emitter:new K}),[]),a=c.useMemo(()=>{const e=new Map(r??[]);return e.set(o,s),e},[r,s]);return n.jsx(ne.Provider,{value:a,children:n.jsx(t,{...e})})}}[r]},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})},"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@mobily/ts-belt"),require("immer"),require("react/jsx-runtime"),require("react")):"function"==typeof define&&define.amd?define(["exports","@mobily/ts-belt","immer","react/jsx-runtime","react"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self).MarchHare={},global.TsBelt,global.Immer,global.jsxRuntime,global.React);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -800,8 +800,8 @@ export type WithPayloadActions<U> = Exclude<U, {
|
|
|
800
800
|
* export const handlePaymentSent: H["Broadcast"]["PaymentSent"] = (context) => { ... };
|
|
801
801
|
* ```
|
|
802
802
|
*/
|
|
803
|
-
export type Handlers<M extends Model | void, AC extends Actions | void, D extends Props = Props> = {
|
|
804
|
-
[K in OwnKeys<AC>]: OwnKeys<AC[K]> extends never ? (context: HandlerContext<M,
|
|
803
|
+
export type Handlers<M extends Model | void, AC extends Actions | void, D extends Props = Props, RootAC extends Actions | void = AC> = {
|
|
804
|
+
[K in OwnKeys<AC>]: OwnKeys<AC[K]> extends never ? (context: HandlerContext<M, RootAC, D>, ...args: [Payload<AC[K] & HandlerPayload<unknown>>] extends [never] ? [] : [payload: Payload<AC[K] & HandlerPayload<unknown>>]) => void | Promise<void> | AsyncGenerator | Generator : Handlers<M, AC[K] & Actions, D, RootAC>;
|
|
805
805
|
};
|
|
806
806
|
export type UseActions<M extends Model | void, AC extends Actions | void, D extends Props = Props> = [
|
|
807
807
|
Readonly<M>,
|