@virid/amber 0.3.12 → 0.3.13

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/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @virid/amber v0.3.12
2
+ * @virid/amber v0.3.13
3
3
  * Add replay, redo, undo and other functions to virid
4
4
  */
5
5
  var M=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var j=(r,e,t)=>e in r?M(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var f=(r,e)=>M(r,"name",{value:e,configurable:!0});var L=(r,e)=>{for(var t in e)M(r,t,{get:e[t],enumerable:!0})},F=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of N(e))!$.call(r,o)&&o!==t&&M(r,o,{get:()=>e[o],enumerable:!(i=v(e,o))||i.enumerable});return r};var P=r=>F(M({},"__esModule",{value:!0}),r);var h=(r,e,t)=>j(r,typeof e!="symbol"?e+"":e,t);var q={};L(q,{Amber:()=>k,AmberComponentStore:()=>d,AmberPlugin:()=>D,AmberTickStore:()=>T,Backup:()=>Q,RestoreDirection:()=>p,_deserialization:()=>O,_diff:()=>R,_serialization:()=>E,afterExecuteHooks:()=>x,defaultOptions:()=>W,getAfterTickHooks:()=>H});module.exports=P(q);var B=require("@virid/core");var m=require("@virid/core");var _=require("@virid/core"),c={..._.VIRID_METADATA,BACKUP:"virid:amber:backup",VERSION:"virid:amber:version",CUSTOM_METHOD:"virid:amber:custom-method"};var p=(function(r){return r.UNDO="UNDO",r.REDO="REDO",r})({});var A=class A{constructor(e,t){h(this,"tickHistory",[]);h(this,"baseTick",0);h(this,"maxTickLength");h(this,"currentTick",0);h(this,"app");this.maxTickLength=t.maxTickLength,this.app=e}getMinTick(){return this.baseTick}getMaxTick(){return this.tickHistory.length===0?0:this.baseTick+this.tickHistory.length-1}updateTickHistory(e){this.currentTick<this.baseTick+this.tickHistory.length&&this.tickHistory.splice(this.currentTick-this.baseTick+1);let t=new Map(e.currentHistory);this.tickHistory.push(t),this.tickHistory.length>this.maxTickLength&&(this.tickHistory.shift(),this.baseTick++);let i=this.baseTick+this.tickHistory.length-1;this.currentTick=i}travel(e,t){let i=e-this.baseTick,o=this.tickHistory[i];if(!o){m.MessageWriter.error(new Error(`[Virid Amber] Travel Error: Tick ${e} is out of history range.`));return}let n=e<this.currentTick?p.UNDO:p.REDO,s=[];for(let[u,a]of o){let l=t.getCurrentData(u);if(a!==l){let g=l;t.deserializeComponent(u,a),t.seal(u);let w=Reflect.getMetadata(c.CUSTOM_METHOD,u);w?.onRestore&&s.push({strategy:w,oldData:g,newData:a})}let I=this.app.get(u)}this.currentTick=e,s.forEach(({strategy:u,oldData:a,newData:l})=>{u.onRestore(a,l,n)})}resetTickStore(e){this.tickHistory=[],this.baseTick=0,this.currentTick=0,this.updateTickHistory(e)}};f(A,"AmberTickStore");var T=A,S=class S{constructor(e,t){h(this,"componentHistory",new Map);h(this,"biasVersions",new Map);h(this,"maxComponentLength");h(this,"currentHistory",new Map);h(this,"config");h(this,"app");this.maxComponentLength=t.maxComponentLength,this.config=t,this.app=e}serializeComponent(e){let t=this.app.get(e);if(!t)return m.MessageWriter.error(new Error(`[Virid Amber] Serialize Error: Component ${e.name} is not registered.`)),null;let o=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.serialize||this.config.serialization;try{return o(t)}catch(n){m.MessageWriter.error(n,`[Virid Amber] Serialize Error: Component ${e.name} serialization error`)}return null}deserializeComponent(e,t){let i=this.app.get(e);if(!i){m.MessageWriter.error(new Error(`[Virid Amber] Deserialize Error: Component ${e.name} is not registered.`));return}if(!t){m.MessageWriter.error(new Error(`[Virid Amber] Deserialize Error: Component ${e.name} data is ${t}!.`));return}let n=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.deserialize||this.config.deserialization;try{n(i,t)}catch(s){m.MessageWriter.error(s,`[Virid Amber] Deserialize Error: Component ${e.name} deserialize error`)}}diffComponent(e,t){let i=this.app.get(e);if(!i)return m.MessageWriter.error(new Error(`[Virid Amber] Diff Error: Component ${e.name} is not registered.`)),!1;if(!t)return m.MessageWriter.error(new Error(`[Virid Amber] Diff Error: Component ${e.name} data is ${t}!.`)),!1;let n=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.diff||this.config.diff;try{return n(i,t)}catch(s){m.MessageWriter.error(s,`[Virid Amber] Diff Error: Component ${e.name} diff error`)}return!1}initComponent(e){let t=e.constructor,o=Reflect.getMetadata(c.CUSTOM_METHOD,t)?.serialize||this.config.serialization,n;try{n=o(e)}catch(s){m.MessageWriter.error(s,`[Virid Amber] Serialize Error: Component ${t.name} serialization error`);return}this.componentHistory.set(t,[]),this.biasVersions.set(t,0),this.componentHistory.get(t).push(n),this.currentHistory.set(t,n),Reflect.defineMetadata(c.VERSION,0,t)}getCurrentData(e){return this.currentHistory.get(e)}getMinVersion(e){return this.biasVersions.get(e)??0}getMaxVersion(e){let t=this.componentHistory.get(e),i=this.biasVersions.get(e)??0;return!t||t.length===0?i:i+t.length-1}seal(e){let t=this.componentHistory.get(e);if(!t){m.MessageWriter.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not initialized.`));return}let i=this.biasVersions.get(e),o=this.getCurrentData(e);if(o&&!this.diffComponent(e,o))return;let n=Reflect.getMetadata(c.CUSTOM_METHOD,e);n?.onBeforeBackup&&n.onBeforeBackup(o);let s=Reflect.getMetadata(c.VERSION,e)||0,u=i+t.length-1;s<u&&t.splice(s-i+1);let a=this.serializeComponent(e);if(!a){m.MessageWriter.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not serializable.`));return}t.push(a),this.currentHistory.set(e,a),t.length>this.maxComponentLength&&(t.shift(),this.biasVersions.set(e,i+1));let l=this.biasVersions.get(e)+t.length-1;Reflect.defineMetadata(c.VERSION,l,e),n?.onAfterBackup&&n.onAfterBackup(a)}seek(e,t,i){let o=this.componentHistory.get(e);if(!o)return m.MessageWriter.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not initialized.`)),!1;let n=this.biasVersions.get(e)||0,s=t-n;if(s<0||s>=o.length)return!1;let u=this.getCurrentData(e),a=o[s],l=Reflect.getMetadata(c.VERSION,e)||0,I=t<l?p.UNDO:p.REDO;this.deserializeComponent(e,a),this.currentHistory.set(e,a),Reflect.defineMetadata(c.VERSION,t,e);let g=Reflect.getMetadata(c.CUSTOM_METHOD,e);return g?.onRestore&&g.onRestore(u,a,I),i.updateTickHistory(this),!0}resetComponentInternal(e){let t=this.serializeComponent(e);t&&(this.componentHistory.set(e,[t]),this.biasVersions.set(e,0),this.currentHistory.set(e,t),Reflect.defineMetadata(c.VERSION,0,e))}resetComponent(e,t){this.resetComponentInternal(e),t.updateTickHistory(this)}};f(S,"AmberComponentStore");var d=S;var C=require("@virid/core");function K(r,e,t,i){var o=arguments.length,n=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(r,e,t,i);else for(var u=r.length-1;u>=0;u--)(s=r[u])&&(n=(o<3?s(n):o>3?s(e,t,n):s(e,t))||n);return o>3&&n&&Object.defineProperty(e,t,n),n}f(K,"_ts_decorate");function U(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}f(U,"_ts_metadata");var V=class V{constructor(e,t){h(this,"amberComponentStore");h(this,"amberTickStore");this.amberComponentStore=e,this.amberTickStore=t}getVersion(e){return Reflect.getMetadata(c.VERSION,e)||0}canUndo(e){let t=this.getVersion(e),i=this.amberComponentStore.getMinVersion(e);return t>i}canRedo(e){let t=this.getVersion(e),i=this.amberComponentStore.getMaxVersion(e);return t<i}undo(e){if(!this.canUndo(e))return!1;let t=this.getVersion(e);return this.amberComponentStore.seek(e,t-1,this.amberTickStore)}redo(e){if(!this.canRedo(e))return!1;let t=this.getVersion(e);return this.amberComponentStore.seek(e,t+1,this.amberTickStore)}undoTick(){if(!this.canUndoTick())return!1;let e=this.amberTickStore.currentTick-1;return this.amberTickStore.travel(e,this.amberComponentStore),!0}redoTick(){if(!this.canRedoTick())return!1;let e=this.amberTickStore.currentTick+1;return this.amberTickStore.travel(e,this.amberComponentStore),!0}canUndoTick(){let e=this.amberTickStore.currentTick,t=this.amberTickStore.getMinTick();return e>t}canRedoTick(){let e=this.amberTickStore.currentTick,t=this.amberTickStore.getMaxTick();return e<t}resetTick(){this.amberTickStore.resetTickStore(this.amberComponentStore)}resetComponent(e){this.amberComponentStore.resetComponent(e,this.amberTickStore)}resetAll(){Array.from(this.amberComponentStore.componentHistory.keys()).forEach(t=>{this.amberComponentStore.resetComponentInternal(t)}),this.amberTickStore.resetTickStore(this.amberComponentStore)}};f(V,"Amber");var k=V;k=K([(0,C.Component)(),U("design:type",Function),U("design:paramtypes",[typeof d>"u"?Object:d,typeof T>"u"?Object:T])],k);var b=require("@virid/core");var y=new Set,x=f((r,e)=>{if(r instanceof b.ErrorMessage||r instanceof b.WarnMessage||r instanceof b.InfoMessage)return;e.context.params.forEach(i=>{Reflect.hasMetadata(c.BACKUP,i)&&y.add(i)})},"afterExecuteHooks");function H(r,e){return t=>{y.size!==0&&(y.forEach(i=>{r.seal(i)}),e.updateTickHistory(r),y.clear())}}f(H,"getAfterTickHooks");function E(r,e=5){if(r===null||typeof r!="object")return r;if(e<=0)return Array.isArray(r)?[]:{};if(Array.isArray(r))return r.map(o=>E(o,e-1));let t={},i=Object.keys(r);for(let o of i){if(o.startsWith("_"))continue;let n=r[o];typeof n!="function"&&(t[o]=typeof n=="object"&&n!==null?E(n,e-1):n)}return t}f(E,"_serialization");function O(r,e){!r||!e||Object.keys(e).forEach(t=>{let i=e[t],o=r[t];o&&typeof o=="object"&&i&&typeof i=="object"&&!Array.isArray(i)?O(o,i):r[t]=i})}f(O,"_deserialization");function R(r,e,t=3){if(r===e)return!1;if(typeof r!=typeof e||r===null||e===null)return!0;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!0;for(let o=0;o<r.length;o++)if(R(r[o],e[o],t-1))return!0;return!1}let i=Object.keys(r);for(let o of i){let n=r[o],s=e[o];if(typeof n=="object"&&n!==null){if(t<=0)continue;if(R(n,s,t-1))return!0}else if(n!==s)return!0}return!1}f(R,"_diff");var W={serialization:E,deserialization:O,diff:R,maxComponentLength:20,maxTickLength:20};function Q(r){return e=>{Reflect.defineMetadata(c.BACKUP,!0,e),Reflect.defineMetadata(c.VERSION,0,e),r&&Reflect.defineMetadata(c.CUSTOM_METHOD,r,e)}}f(Q,"Backup");var z=class z{constructor(){h(this,"name","@virid/amber")}install(e,t){let i=new T(e,t),o=new d(e,t),n=new k(o,i),s=H(o,i);e.onAfterTick(s,!0),e.onAfterExecute(B.BaseMessage,x,!0);let u=f(a=>(a&&Reflect.hasMetadata(c.VERSION,a.constructor)&&o.initComponent(a),a),"amberInitHook");e.onActivate(u),e.spawn(n)}};f(z,"AmberPlugin");var D=z;0&&(module.exports={Amber,AmberComponentStore,AmberPlugin,AmberTickStore,Backup,RestoreDirection,_deserialization,_diff,_serialization,afterExecuteHooks,defaultOptions,getAfterTickHooks});
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @virid/amber v0.3.12
2
+ * @virid/amber v0.3.13
3
3
  * Add replay, redo, undo and other functions to virid
4
4
  */
5
5
  var H=Object.defineProperty;var _=(r,e,t)=>e in r?H(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var f=(r,e)=>H(r,"name",{value:e,configurable:!0});var h=(r,e,t)=>_(r,typeof e!="symbol"?e+"":e,t);import{BaseMessage as j}from"@virid/core";import{MessageWriter as m}from"@virid/core";import{VIRID_METADATA as U}from"@virid/core";var c={...U,BACKUP:"virid:amber:backup",VERSION:"virid:amber:version",CUSTOM_METHOD:"virid:amber:custom-method"};var p=(function(r){return r.UNDO="UNDO",r.REDO="REDO",r})({});var g=class g{constructor(e,t){h(this,"tickHistory",[]);h(this,"baseTick",0);h(this,"maxTickLength");h(this,"currentTick",0);h(this,"app");this.maxTickLength=t.maxTickLength,this.app=e}getMinTick(){return this.baseTick}getMaxTick(){return this.tickHistory.length===0?0:this.baseTick+this.tickHistory.length-1}updateTickHistory(e){this.currentTick<this.baseTick+this.tickHistory.length&&this.tickHistory.splice(this.currentTick-this.baseTick+1);let t=new Map(e.currentHistory);this.tickHistory.push(t),this.tickHistory.length>this.maxTickLength&&(this.tickHistory.shift(),this.baseTick++);let i=this.baseTick+this.tickHistory.length-1;this.currentTick=i}travel(e,t){let i=e-this.baseTick,o=this.tickHistory[i];if(!o){m.error(new Error(`[Virid Amber] Travel Error: Tick ${e} is out of history range.`));return}let n=e<this.currentTick?p.UNDO:p.REDO,s=[];for(let[u,a]of o){let l=t.getCurrentData(u);if(a!==l){let b=l;t.deserializeComponent(u,a),t.seal(u);let x=Reflect.getMetadata(c.CUSTOM_METHOD,u);x?.onRestore&&s.push({strategy:x,oldData:b,newData:a})}let V=this.app.get(u)}this.currentTick=e,s.forEach(({strategy:u,oldData:a,newData:l})=>{u.onRestore(a,l,n)})}resetTickStore(e){this.tickHistory=[],this.baseTick=0,this.currentTick=0,this.updateTickHistory(e)}};f(g,"AmberTickStore");var T=g,y=class y{constructor(e,t){h(this,"componentHistory",new Map);h(this,"biasVersions",new Map);h(this,"maxComponentLength");h(this,"currentHistory",new Map);h(this,"config");h(this,"app");this.maxComponentLength=t.maxComponentLength,this.config=t,this.app=e}serializeComponent(e){let t=this.app.get(e);if(!t)return m.error(new Error(`[Virid Amber] Serialize Error: Component ${e.name} is not registered.`)),null;let o=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.serialize||this.config.serialization;try{return o(t)}catch(n){m.error(n,`[Virid Amber] Serialize Error: Component ${e.name} serialization error`)}return null}deserializeComponent(e,t){let i=this.app.get(e);if(!i){m.error(new Error(`[Virid Amber] Deserialize Error: Component ${e.name} is not registered.`));return}if(!t){m.error(new Error(`[Virid Amber] Deserialize Error: Component ${e.name} data is ${t}!.`));return}let n=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.deserialize||this.config.deserialization;try{n(i,t)}catch(s){m.error(s,`[Virid Amber] Deserialize Error: Component ${e.name} deserialize error`)}}diffComponent(e,t){let i=this.app.get(e);if(!i)return m.error(new Error(`[Virid Amber] Diff Error: Component ${e.name} is not registered.`)),!1;if(!t)return m.error(new Error(`[Virid Amber] Diff Error: Component ${e.name} data is ${t}!.`)),!1;let n=Reflect.getMetadata(c.CUSTOM_METHOD,e)?.diff||this.config.diff;try{return n(i,t)}catch(s){m.error(s,`[Virid Amber] Diff Error: Component ${e.name} diff error`)}return!1}initComponent(e){let t=e.constructor,o=Reflect.getMetadata(c.CUSTOM_METHOD,t)?.serialize||this.config.serialization,n;try{n=o(e)}catch(s){m.error(s,`[Virid Amber] Serialize Error: Component ${t.name} serialization error`);return}this.componentHistory.set(t,[]),this.biasVersions.set(t,0),this.componentHistory.get(t).push(n),this.currentHistory.set(t,n),Reflect.defineMetadata(c.VERSION,0,t)}getCurrentData(e){return this.currentHistory.get(e)}getMinVersion(e){return this.biasVersions.get(e)??0}getMaxVersion(e){let t=this.componentHistory.get(e),i=this.biasVersions.get(e)??0;return!t||t.length===0?i:i+t.length-1}seal(e){let t=this.componentHistory.get(e);if(!t){m.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not initialized.`));return}let i=this.biasVersions.get(e),o=this.getCurrentData(e);if(o&&!this.diffComponent(e,o))return;let n=Reflect.getMetadata(c.CUSTOM_METHOD,e);n?.onBeforeBackup&&n.onBeforeBackup(o);let s=Reflect.getMetadata(c.VERSION,e)||0,u=i+t.length-1;s<u&&t.splice(s-i+1);let a=this.serializeComponent(e);if(!a){m.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not serializable.`));return}t.push(a),this.currentHistory.set(e,a),t.length>this.maxComponentLength&&(t.shift(),this.biasVersions.set(e,i+1));let l=this.biasVersions.get(e)+t.length-1;Reflect.defineMetadata(c.VERSION,l,e),n?.onAfterBackup&&n.onAfterBackup(a)}seek(e,t,i){let o=this.componentHistory.get(e);if(!o)return m.error(new Error(`[Virid Amber] Seal Error: Component ${e.name} is not initialized.`)),!1;let n=this.biasVersions.get(e)||0,s=t-n;if(s<0||s>=o.length)return!1;let u=this.getCurrentData(e),a=o[s],l=Reflect.getMetadata(c.VERSION,e)||0,V=t<l?p.UNDO:p.REDO;this.deserializeComponent(e,a),this.currentHistory.set(e,a),Reflect.defineMetadata(c.VERSION,t,e);let b=Reflect.getMetadata(c.CUSTOM_METHOD,e);return b?.onRestore&&b.onRestore(u,a,V),i.updateTickHistory(this),!0}resetComponentInternal(e){let t=this.serializeComponent(e);t&&(this.componentHistory.set(e,[t]),this.biasVersions.set(e,0),this.currentHistory.set(e,t),Reflect.defineMetadata(c.VERSION,0,e))}resetComponent(e,t){this.resetComponentInternal(e),t.updateTickHistory(this)}};f(y,"AmberComponentStore");var d=y;import{Component as B}from"@virid/core";function C(r,e,t,i){var o=arguments.length,n=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(r,e,t,i);else for(var u=r.length-1;u>=0;u--)(s=r[u])&&(n=(o<3?s(n):o>3?s(e,t,n):s(e,t))||n);return o>3&&n&&Object.defineProperty(e,t,n),n}f(C,"_ts_decorate");function O(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}f(O,"_ts_metadata");var E=class E{constructor(e,t){h(this,"amberComponentStore");h(this,"amberTickStore");this.amberComponentStore=e,this.amberTickStore=t}getVersion(e){return Reflect.getMetadata(c.VERSION,e)||0}canUndo(e){let t=this.getVersion(e),i=this.amberComponentStore.getMinVersion(e);return t>i}canRedo(e){let t=this.getVersion(e),i=this.amberComponentStore.getMaxVersion(e);return t<i}undo(e){if(!this.canUndo(e))return!1;let t=this.getVersion(e);return this.amberComponentStore.seek(e,t-1,this.amberTickStore)}redo(e){if(!this.canRedo(e))return!1;let t=this.getVersion(e);return this.amberComponentStore.seek(e,t+1,this.amberTickStore)}undoTick(){if(!this.canUndoTick())return!1;let e=this.amberTickStore.currentTick-1;return this.amberTickStore.travel(e,this.amberComponentStore),!0}redoTick(){if(!this.canRedoTick())return!1;let e=this.amberTickStore.currentTick+1;return this.amberTickStore.travel(e,this.amberComponentStore),!0}canUndoTick(){let e=this.amberTickStore.currentTick,t=this.amberTickStore.getMinTick();return e>t}canRedoTick(){let e=this.amberTickStore.currentTick,t=this.amberTickStore.getMaxTick();return e<t}resetTick(){this.amberTickStore.resetTickStore(this.amberComponentStore)}resetComponent(e){this.amberComponentStore.resetComponent(e,this.amberTickStore)}resetAll(){Array.from(this.amberComponentStore.componentHistory.keys()).forEach(t=>{this.amberComponentStore.resetComponentInternal(t)}),this.amberTickStore.resetTickStore(this.amberComponentStore)}};f(E,"Amber");var k=E;k=C([B(),O("design:type",Function),O("design:paramtypes",[typeof d>"u"?Object:d,typeof T>"u"?Object:T])],k);import{ErrorMessage as v,WarnMessage as N,InfoMessage as $}from"@virid/core";var M=new Set,D=f((r,e)=>{if(r instanceof v||r instanceof N||r instanceof $)return;e.context.params.forEach(i=>{Reflect.hasMetadata(c.BACKUP,i)&&M.add(i)})},"afterExecuteHooks");function z(r,e){return t=>{M.size!==0&&(M.forEach(i=>{r.seal(i)}),e.updateTickHistory(r),M.clear())}}f(z,"getAfterTickHooks");function R(r,e=5){if(r===null||typeof r!="object")return r;if(e<=0)return Array.isArray(r)?[]:{};if(Array.isArray(r))return r.map(o=>R(o,e-1));let t={},i=Object.keys(r);for(let o of i){if(o.startsWith("_"))continue;let n=r[o];typeof n!="function"&&(t[o]=typeof n=="object"&&n!==null?R(n,e-1):n)}return t}f(R,"_serialization");function I(r,e){!r||!e||Object.keys(e).forEach(t=>{let i=e[t],o=r[t];o&&typeof o=="object"&&i&&typeof i=="object"&&!Array.isArray(i)?I(o,i):r[t]=i})}f(I,"_deserialization");function A(r,e,t=3){if(r===e)return!1;if(typeof r!=typeof e||r===null||e===null)return!0;if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!0;for(let o=0;o<r.length;o++)if(A(r[o],e[o],t-1))return!0;return!1}let i=Object.keys(r);for(let o of i){let n=r[o],s=e[o];if(typeof n=="object"&&n!==null){if(t<=0)continue;if(A(n,s,t-1))return!0}else if(n!==s)return!0}return!1}f(A,"_diff");var fe={serialization:R,deserialization:I,diff:A,maxComponentLength:20,maxTickLength:20};function be(r){return e=>{Reflect.defineMetadata(c.BACKUP,!0,e),Reflect.defineMetadata(c.VERSION,0,e),r&&Reflect.defineMetadata(c.CUSTOM_METHOD,r,e)}}f(be,"Backup");var S=class S{constructor(){h(this,"name","@virid/amber")}install(e,t){let i=new T(e,t),o=new d(e,t),n=new k(o,i),s=z(o,i);e.onAfterTick(s,!0),e.onAfterExecute(j,D,!0);let u=f(a=>(a&&Reflect.hasMetadata(c.VERSION,a.constructor)&&o.initComponent(a),a),"amberInitHook");e.onActivate(u),e.spawn(n)}};f(S,"AmberPlugin");var w=S;export{k as Amber,d as AmberComponentStore,w as AmberPlugin,T as AmberTickStore,be as Backup,p as RestoreDirection,I as _deserialization,A as _diff,R as _serialization,D as afterExecuteHooks,fe as defaultOptions,z as getAfterTickHooks};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@virid/amber",
3
3
  "type": "module",
4
- "version": "0.3.12",
4
+ "version": "0.3.13",
5
5
  "description": "Add replay, redo, undo and other functions to virid",
6
6
  "author": "Ailrid",
7
7
  "license": "Apache 2.0",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {},
36
36
  "peerDependencies": {
37
- "@virid/core": "0.3.12"
37
+ "@virid/core": "0.3.13"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "tsup --config tsup.config.ts"