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