@madronejs/core 1.1.0 → 1.1.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/core.js CHANGED
@@ -1,5 +1,5 @@
1
- import { g as i, a as p, l as v, r as w, M as P } from "./MadroneVue3-C5d5X6U2.js";
2
- import { b as j, t as V } from "./MadroneVue3-C5d5X6U2.js";
1
+ import { g as i, a as p, l as O, r as v, M as P } from "./MadroneVue3-Bh1p2UjI.js";
2
+ import { b as j, t as V } from "./MadroneVue3-Bh1p2UjI.js";
3
3
  function f(e, t, n) {
4
4
  const r = i();
5
5
  if (!r)
@@ -74,19 +74,17 @@ function l(e, t, n, r) {
74
74
  }), b(e, t), !0) : !1;
75
75
  }
76
76
  function m(e, t, n, r) {
77
- if (typeof n.get == "function") {
78
- const u = {
79
- ...n,
80
- enumerable: !0,
81
- configurable: !0
82
- };
83
- return u.get = function() {
77
+ return typeof n.get == "function" ? {
78
+ ...n,
79
+ enumerable: !0,
80
+ configurable: !0,
81
+ get: function() {
84
82
  return l(this, t, n, r), this[t];
85
- }, u.set = function(O) {
86
- l(this, t, n, r), this[t] = O;
87
- }, u;
88
- }
89
- return n;
83
+ },
84
+ set: function(w) {
85
+ l(this, t, n, r), this[t] = w;
86
+ }
87
+ } : n;
90
88
  }
91
89
  function N(e, t, n) {
92
90
  return m(e, t, n);
@@ -99,41 +97,41 @@ N.configure = function(t) {
99
97
  { descriptors: t }
100
98
  );
101
99
  };
102
- function a(e, t, n) {
100
+ function s(e, t, n) {
103
101
  return i() && !g(e, t) ? (b(e, t), f(e, t, {
104
102
  ...Object.getOwnPropertyDescriptor(e, t),
105
103
  enumerable: !0,
106
104
  ...n?.descriptors
107
105
  }), !0) : !1;
108
106
  }
109
- function s(e, t, n) {
110
- typeof e == "function" ? a(e, t) : Object.defineProperty(e, t, {
107
+ function a(e, t, n) {
108
+ typeof e == "function" ? s(e, t) : Object.defineProperty(e, t, {
111
109
  configurable: !0,
112
110
  enumerable: !0,
113
111
  get() {
114
- if (a(this, t, n))
112
+ if (s(this, t, n))
115
113
  return this[t];
116
114
  },
117
115
  set(r) {
118
- a(this, t, n) && (this[t] = r);
116
+ s(this, t, n) && (this[t] = r);
119
117
  }
120
118
  });
121
119
  }
122
120
  function h(e, t) {
123
- return s(e, t);
121
+ return a(e, t);
124
122
  }
125
123
  h.shallow = function(t, n) {
126
- return s(t, n, { descriptors: { deep: !1 } });
124
+ return a(t, n, { descriptors: { deep: !1 } });
127
125
  };
128
126
  h.configure = function(t) {
129
- return (n, r) => s(n, r, { descriptors: t });
127
+ return (n, r) => a(n, r, { descriptors: t });
130
128
  };
131
129
  p(P);
132
130
  const x = {
133
131
  /** Configure a global plugin */
134
132
  use: p,
135
133
  /** Remove a global plugin */
136
- unuse: w,
134
+ unuse: v,
137
135
  /** Create reactive objects */
138
136
  auto: M,
139
137
  /** Define properties on objects */
@@ -141,7 +139,7 @@ const x = {
141
139
  /** Watch reactive objects */
142
140
  watch: D,
143
141
  /** Get the last time any reactive property was touched on a given object */
144
- lastAccessed: v
142
+ lastAccessed: O
145
143
  };
146
144
  export {
147
145
  P as MadroneState,
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),r=require("./MadroneVue3-2XGQsm-S.cjs"),t=r.MadroneVue3({reactive:e.reactive,toRaw:e.toRaw});module.exports=t;
1
+ "use strict";const e=require("vue"),r=require("./MadroneVue3-SGZmwRMI.cjs"),t=r.MadroneVue3({reactive:e.reactive,toRaw:e.toRaw});module.exports=t;
package/dist/vue.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { reactive as o, toRaw as e } from "vue";
2
- import { b as r } from "./MadroneVue3-C5d5X6U2.js";
2
+ import { b as r } from "./MadroneVue3-Bh1p2UjI.js";
3
3
  const m = r({ reactive: o, toRaw: e });
4
4
  export {
5
5
  m as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@madronejs/core",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Object composition and reactivity framework.",
5
5
  "private": false,
6
6
  "license": "MIT",
@@ -51,24 +51,24 @@
51
51
  "vue"
52
52
  ],
53
53
  "devDependencies": {
54
- "@eslint/compat": "~1.4.0",
55
- "@eslint/eslintrc": "~3.3.1",
56
- "@eslint/js": "~9.37.0",
57
- "@stylistic/eslint-plugin": "~5.4.0",
58
- "@types/lodash": "~4.17.20",
59
- "@vitest/coverage-v8": "~3.2.4",
60
- "eslint": "~9.37.0",
54
+ "@eslint/compat": "~2.0.0",
55
+ "@eslint/eslintrc": "~3.3.3",
56
+ "@eslint/js": "~9.39.2",
57
+ "@stylistic/eslint-plugin": "~5.6.1",
58
+ "@types/lodash": "~4.17.21",
59
+ "@vitest/coverage-v8": "~4.0.16",
60
+ "eslint": "~9.39.2",
61
61
  "eslint-plugin-import": "~2.32.0",
62
- "eslint-plugin-unicorn": "~61.0.2",
63
- "globals": "~16.4.0",
64
- "happy-dom": "~20.0.0",
62
+ "eslint-plugin-unicorn": "~62.0.0",
63
+ "globals": "~16.5.0",
64
+ "happy-dom": "~20.0.11",
65
65
  "lodash": "~4.17.21",
66
66
  "tsc-alias": "~1.8.16",
67
- "typedoc": "~0.28.14",
67
+ "typedoc": "~0.28.15",
68
68
  "typescript": "~5.9.3",
69
- "typescript-eslint": "8.46.1",
70
- "vite": "~7.1.10",
71
- "vitest": "~3.2.4",
69
+ "typescript-eslint": "8.50.0",
70
+ "vite": "~7.3.0",
71
+ "vitest": "~4.0.16",
72
72
  "vue3": "npm:vue@~3.5.13"
73
73
  },
74
74
  "engines": {
@@ -84,6 +84,8 @@
84
84
  "cov": "CI=true NODE_ENV=test vitest run --coverage && open coverage/lcov-report/index.html",
85
85
  "build": "vite build",
86
86
  "build-types": "tsc -p ./tsconfig.types.json && tsc-alias -p tsconfig.types.json",
87
- "build-all": "pnpm cleanup && pnpm build && pnpm build-types"
87
+ "build-all": "pnpm cleanup && pnpm build && pnpm build-types",
88
+ "check-updates": "pnpm -r -l outdated",
89
+ "check-upgrade": "pnpm -r -i --latest update"
88
90
  }
89
91
  }
@@ -21,8 +21,7 @@
21
21
  * }
22
22
  * ```
23
23
  */
24
- import { DecoratorDescriptorType } from './interfaces';
25
- type Constructor = new (...args: unknown[]) => object;
24
+ import { DecoratorDescriptorType, Constructor } from './interfaces';
26
25
  /**
27
26
  * Class decorator that mixes in methods from other classes.
28
27
  *
@@ -135,5 +134,4 @@ export declare namespace reactive {
135
134
  var shallow: (target: object, key: string) => void;
136
135
  var configure: (descriptorOverrides: DecoratorDescriptorType) => (target: object, key: string) => void;
137
136
  }
138
- export {};
139
137
  //# sourceMappingURL=decorate.d.ts.map
@@ -120,6 +120,19 @@ export interface IntegrationOptions {
120
120
  * };
121
121
  * ```
122
122
  */
123
+ /**
124
+ * A class constructor type that produces instances of type T.
125
+ *
126
+ * Unlike a simple `new (...args) => T` signature, this type also
127
+ * captures that constructors have a `prototype` property, which is
128
+ * important for mixin and class composition utilities.
129
+ *
130
+ * @typeParam T - The instance type that the constructor creates
131
+ */
132
+ export type Constructor<T = object> = {
133
+ new (...args: unknown[]): T;
134
+ prototype: T;
135
+ };
123
136
  export interface Integration {
124
137
  /**
125
138
  * Defines a reactive property on an object.
package/types/util.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * These utilities support Madrone's composition-based architecture,
7
7
  * allowing you to build complex objects from simpler pieces.
8
8
  */
9
+ import type { Constructor } from './interfaces';
9
10
  type OptionalPropertyNames<T> = {
10
11
  [K in keyof T]-?: object extends {
11
12
  [P in K]: T[K];
@@ -68,7 +69,6 @@ export type Spread<A extends readonly unknown[]> = A extends [infer L, ...infer
68
69
  * ```
69
70
  */
70
71
  export declare function merge<A extends ObjectOrFactory[]>(...types: [...A]): Spread<A>;
71
- type Constructor = new (...args: unknown[]) => object;
72
72
  /**
73
73
  * Applies mixin classes to a base class by merging their prototypes.
74
74
  *
@@ -1 +0,0 @@
1
- "use strict";const _=new Set;let W;function se(){return[..._]}function ae(){return se().at(-1)}function x(){W=ae()}function oe(e){e&&(_.add(e),x())}function ue(e){_.delete(e),x()}function U(){return W}const Y=new WeakMap;function H(e){return(U()?.toRaw??(t=>t))(e)}function I(e){Y.set(H(e),Date.now())}function ie(e){return Y.get(H(e))}const f=Symbol("keys"),N=Symbol("computed"),M=new WeakMap,V=new WeakMap,R=new WeakMap,C=new WeakMap;let y=[],T=null;const fe=e=>M.has(e),$=e=>V.has(e),D=e=>M.get(e),le=e=>V.get(e),de=e=>$(e)?le(e):e,he=(e,n)=>{M.set(e,n),V.set(n,e)},me=()=>{T===null&&(T=Symbol("scheduler"),queueMicrotask(()=>{try{for(;y.length>0;){const e=y;y=[];for(const n of e)try{n()}catch(t){console.error("Unhandled error in scheduled task:",t)}}}finally{T=null}}))},ve=e=>{y.push(e),me()},Se=(e,n)=>{const t=C.get(e),c=t?.get(n);if(c){for(const r of c)R.get(r)?.get(n)?.delete(e);c.clear(),t.delete(n),t.size===0&&C.delete(e)}},z=e=>{const n=C.get(e);if(n){for(const[t,c]of n)for(const r of c)R.get(r)?.get(t)?.delete(e);C.delete(e)}},X=(e,n)=>{const t=we();if(!t)return;C.has(t)||C.set(t,new Map),R.has(e)||R.set(e,new Map);const c=R.get(e),r=C.get(t);c.has(n)||c.set(n,new Set),r.has(n)||r.set(n,new Set);const s=c.get(n),a=r.get(n);s.add(t),a.add(e)},d=(e,n)=>{const t=D(e);t&&X(t,n)},q=(e,n)=>{const t=R.get(e);if(t?.get(n))for(const c of t.get(n))c.setDirty(),Se(c,n)},h=(e,n)=>{q(D(e),n)},A=[];function we(){return A.at(-1)}class g{static create(...n){return new g(...n)}constructor(n){this.name=n.name,this.get=n.get,this.set=n.set,this.cache=!!(n.cache??!0),this.alive=!0,this.dirty=!0,this.cachedVal=void 0,this.hooks={onGet:n.onGet,onSet:n.onSet,onChange:n.onChange,onImmediateChange:n.onImmediateChange}}callHook(n){typeof this.hooks[n]=="function"&&this.hooks[n](this)}dispose(){z(this),this.alive=!1,this.dirty=!1,this.cachedVal=void 0,this.prev=void 0}wrap(n){A.push(this);try{return n()}finally{A.pop()}}setDirty(){this.alive&&!this.dirty&&(this.dirty=!0,q(this,N),this.prev=this.cachedVal,this.cachedVal=void 0,this.callHook("onImmediateChange"),ve(()=>this.notifyChange()))}notifyChange(){this.callHook("onChange"),this.prev=void 0}run(){if(!this.alive)return;const n=this.wrap(()=>{if(this.cache&&this.dirty||!this.cache){z(this);try{this.cachedVal=this.get()}finally{this.dirty=!1}}return this.cachedVal});return X(this,N),this.callHook("onGet"),n}get value(){return this.run()}set value(n){if(typeof this.set=="function")this.set(n),this.callHook("onSet");else throw new TypeError(`No setter defined for "${this.name}"`)}}function F(...e){return g.create(...e)}function Ce(e){return F(e)}const i=e=>{const{name:n,target:t,key:c,receiver:r,value:s,keysChanged:a=!1,valueChanged:l=!1}=e;return{name:n,target:t,key:c,receiver:r,value:s,keysChanged:a,valueChanged:l}},Re=(e,n,t,c)=>{d(n,t),e?.onGet&&e.onGet(i({name:e.name,target:n,key:t,receiver:c}))},be=(e,n,t,c)=>{const r=n[t],s=Array.isArray(n);let a=!1,l=!1;t in n||(h(n,f),l=!0,s&&h(n,"length")),(r!==c||s)&&(h(n,t),a=!0),(l||a)&&e?.onSet&&e.onSet(i({name:e.name,target:n,key:t,value:c,keysChanged:l,valueChanged:a}))},Oe=(e,n,t)=>{h(n,t),h(n,f),e?.onDelete&&e.onDelete(i({name:e.name,target:n,key:t,keysChanged:!0}))},B=(e,n,t)=>{d(n,f),e?.onHas&&e.onHas(i({name:e.name,target:n,key:t}))};function Q(e){const n=e.needsProxy||(()=>!0);return{get:(t,c,r)=>{Re(e,t,c,r);const s=Reflect.get(t,c,r);return e?.deep&&s&&typeof s=="object"&&n({target:t,key:c,value:s})&&Object.getOwnPropertyDescriptor(t,c)?.configurable?S(s,e):s},set:(t,c,r)=>(be(e,t,c,r),Reflect.set(t,c,r)),deleteProperty:(...t)=>(Oe(e,...t),Reflect.deleteProperty(...t)),has:(t,c)=>(B(e,t),Reflect.has(t,c)),ownKeys:t=>(B(e,t),Reflect.ownKeys(t)),getPrototypeOf:t=>Object.getPrototypeOf(t)}}const Ge=e=>({...Q(e)}),ye=e=>({...Q(e)}),v=(e,n)=>n?.deep&&e&&typeof e=="object"?S(e,n):e;function*b(e,n,t){for(const c of e)yield t(c)}const Ie=e=>({get:(n,t,c)=>t==="size"?(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),n.size):t==="has"?r=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t,value:r})),n.has(r)):t==="add"?r=>{const s=n.has(r);return n.add(r),s||(h(n,f),e?.onSet?.(i({name:e.name,target:n,key:t,value:r,keysChanged:!0}))),c}:t==="delete"?r=>{const s=n.has(r),a=n.delete(r);return s&&(h(n,f),e?.onDelete?.(i({name:e.name,target:n,key:t,value:r,keysChanged:!0}))),a}:t==="clear"?()=>{const r=n.size>0;n.clear(),r&&(h(n,f),e?.onDelete?.(i({name:e.name,target:n,key:t,keysChanged:!0})))}:t==="forEach"?(r,s)=>{d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t}));for(const[a,l]of n.entries())r.call(s,v(a,e),v(l,e),c)}:t==="values"||t==="keys"?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n.values(),e,r=>v(r,e))):t==="entries"?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n.entries(),e,([r,s])=>[v(r,e),v(s,e)])):t===Symbol.iterator?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n[Symbol.iterator](),e,r=>v(r,e))):t===Symbol.toStringTag?"Set":Reflect.get(n,t,c)}),Te=e=>({get:(n,t,c)=>t==="size"?(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),n.size):t==="has"?r=>(d(n,r),e?.onGet?.(i({name:e.name,target:n,key:r})),n.has(r)):t==="get"?r=>(d(n,r),e?.onGet?.(i({name:e.name,target:n,key:r})),v(n.get(r),e)):t==="set"?(r,s)=>{const a=n.has(r),l=n.get(r);return n.set(r,s),a||h(n,f),(!a||l!==s)&&(h(n,r),e?.onSet?.(i({name:e.name,target:n,key:r,value:s,keysChanged:!a,valueChanged:l!==s}))),c}:t==="delete"?r=>{const s=n.has(r),a=n.delete(r);return s&&(h(n,f),h(n,r),e?.onDelete?.(i({name:e.name,target:n,key:r,keysChanged:!0}))),a}:t==="clear"?()=>{const r=[...n.keys()],s=n.size>0;if(n.clear(),s){h(n,f);for(const a of r)h(n,a);e?.onDelete?.(i({name:e.name,target:n,key:t,keysChanged:!0}))}}:t==="forEach"?(r,s)=>{d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t}));for(const[a,l]of n.entries())r.call(s,v(l,e),a,c)}:t==="keys"?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),n.keys()):t==="values"?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n.values(),e,r=>v(r,e))):t==="entries"?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n.entries(),e,([r,s])=>[r,v(s,e)])):t===Symbol.iterator?()=>(d(n,f),e?.onGet?.(i({name:e.name,target:n,key:t})),b(n[Symbol.iterator](),e,([r,s])=>[r,v(s,e)])):t===Symbol.toStringTag?"Map":Reflect.get(n,t,c)}),J=Object.freeze({object:Ge,array:ye,set:Ie,map:Te});function S(e,n){if(fe(e))return D(e);if($(e))return e;const t=n||{},c={...t,deep:t?.deep??!0},r=S.getStringType(e);if(!S.hasHandler(r))return e;const s=new Proxy(e,S.typeHandler(r,c));return he(e,s),s}const Ee=e=>{const n=Object.getPrototypeOf(e);return n===null?!0:n===Object.prototype};S.getStringType=e=>e===null?"null":typeof e!="object"?typeof e:Array.isArray(e)?"array":e instanceof Map?"map":e instanceof Set?"set":Ee(e)?"object":"native";S.hasHandler=e=>!!J[e];S.typeHandler=(e,n)=>J[e]?.(n);function Z(e,n,t){const c=F({get:e,onChange:({value:s,prev:a})=>n(s,a)}),r=c.run();return t?.immediate&&n(r),()=>c.dispose()}function j(e,n,t){let c,r;if(n.cache){const s=Ce({...n,get:n.get,name:e,onImmediateChange:t?.computed?.onImmediateChange,onChange:t?.computed?.onChange,onGet:t?.computed?.onGet,onSet:t?.computed?.onSet});c=function(){return I(this),s.value},r=function(l){s.value=l}}else c=function(){return I(this),n.get.call(this)},r=function(...a){n.set.call(this,...a)};return{enumerable:n.enumerable,configurable:n.configurable,get:c,set:r}}function L(e,n,t){const c={value:n.value},r=S(c,{name:e,onGet:t?.reactive?.onGet,onHas:t?.reactive?.onHas,onSet:t?.reactive?.onSet,onDelete:t?.reactive?.onDelete,needsProxy:t?.reactive?.needsProxy,deep:n.deep??t?.reactive?.deep});return{configurable:n.configurable,enumerable:n.enumerable,get:function(){I(this);const{value:a}=r;return Array.isArray(a)&&Reflect.get(a,"length"),a},set:function(a){r.value=a}}}function p(e,n,t,c){Object.defineProperty(e,n,j(n,t,c))}function K(e,n,t,c){Object.defineProperty(e,n,L(n,t,c))}const k={toRaw:de,watch:Z,describeProperty:L,defineProperty:K,describeComputed:j,defineComputed:p},E=new Set(["__proto__","__ob__"]),P="value",Ae=e=>{e[P]+=1};function Pe(e){if(!e?.reactive||typeof e.reactive!="function")throw new Error(`MadroneVue3 requires Vue's reactive function. Either use "madrone/integrations/vue" for automatic setup, or pass { reactive, toRaw } from "vue".`);const{reactive:n,toRaw:t}=e,c=t??(o=>o),r=new WeakMap,s=(o,u)=>{const m=c(o);let w=r.get(m);w||(w=new Map,r.set(m,w));let G=w.get(u);return G||(G=n({[P]:0}),w.set(u,G)),G},a=(o,u)=>{E.has(u)||Reflect.get(s(o,u),P)},l=(o,u)=>{E.has(u)||Ae(s(o,u))},ee=(o,u)=>{const m=c(o),w=r.get(m);w&&l(w,u),r.delete(m)},O={computed:{onGet:o=>{a(o,o.name)},onImmediateChange:o=>{l(o,o.name)}},reactive:{onGet:({target:o,key:u})=>{I(o),a(o,u)},onHas:({target:o,key:u})=>{a(o,u)},onDelete:({target:o,key:u})=>{ee(o,u)},onSet:({target:o,key:u,keysChanged:m})=>{l(o,u),m&&l(o)},needsProxy:({key:o})=>!E.has(o)}};function ne(o,u){return j(o,u,O)}function te(o,u){return L(o,u,O)}function re(o,u,m){return p(o,u,m,O)}function ce(o,u,m){return K(o,u,m,O)}return{toRaw:k.toRaw,watch:Z,describeProperty:te,defineProperty:ce,describeComputed:ne,defineComputed:re}}exports.MadroneState=k;exports.MadroneVue3=Pe;exports.addIntegration=oe;exports.getIntegration=U;exports.lastAccessed=ie;exports.removeIntegration=ue;exports.toRaw=H;