document-model 1.1.0-experimental.4 → 1.1.0

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.
Files changed (102) hide show
  1. package/dist/browser/cjs/document-model.js +1 -1
  2. package/dist/browser/cjs/document.js +1 -1
  3. package/dist/browser/cjs/index.js +1 -1
  4. package/dist/browser/cjs/internal/{index-BTG_-qY6.js → index-Bqu_Uzaf.js} +1 -1
  5. package/dist/{node/cjs/internal/index-B31DqWHj.js → browser/cjs/internal/index-DD_uV5_l.js} +1 -1
  6. package/dist/browser/cjs/internal/object-CHFtJl_E.js +25 -0
  7. package/dist/browser/es/document-model.js +2 -2
  8. package/dist/browser/es/document.js +2 -2
  9. package/dist/browser/es/index.js +3 -3
  10. package/dist/browser/es/internal/{index-BD2hB9El.js → index-C9_nWw6z.js} +1 -1
  11. package/dist/browser/es/internal/{index-2Qq00NLA.js → index-CNILoLzv.js} +1 -1
  12. package/dist/browser/es/internal/{object-BW-G4r5m.js → object-CJvDhUxl.js} +1105 -1065
  13. package/dist/browser/src/document/object.d.ts +35 -0
  14. package/dist/browser/src/document/types.d.ts +2 -0
  15. package/dist/browser/src/document/utils/document-helpers.d.ts +9 -0
  16. package/dist/node/cjs/document-model.js +1 -1
  17. package/dist/node/cjs/document.js +1 -1
  18. package/dist/node/cjs/index.js +1 -1
  19. package/dist/node/cjs/internal/{index-BBm_wnUa.js → index-DSsY5px9.js} +1 -1
  20. package/dist/{browser/cjs/internal/index-BLpgsifL.js → node/cjs/internal/index-eJODAZgf.js} +1 -1
  21. package/dist/node/cjs/internal/object-9bv72oJK.js +20 -0
  22. package/dist/node/es/document-model.js +2 -2
  23. package/dist/node/es/document.js +2 -2
  24. package/dist/node/es/index.js +3 -3
  25. package/dist/node/es/internal/{index-C7I4OGkU.js → index-Dug-2E00.js} +1 -1
  26. package/dist/node/es/internal/{index-BPCSW4M1.js → index-nccvxxIw.js} +1 -1
  27. package/dist/node/es/internal/{object-C-_SkpQ0.js → object-B9OVOSMl.js} +762 -722
  28. package/dist/node/src/document/object.d.ts +35 -0
  29. package/dist/node/src/document/types.d.ts +2 -0
  30. package/dist/node/src/document/utils/document-helpers.d.ts +9 -0
  31. package/package.json +3 -1
  32. package/CHANGELOG.md +0 -33
  33. package/dist/browser/cjs/internal/object-BHB7lY3H.js +0 -25
  34. package/dist/node/cjs/internal/object-CxVzP-Xe.js +0 -20
  35. package/dist/src/document/actions/creators.d.ts +0 -47
  36. package/dist/src/document/actions/index.d.ts +0 -14
  37. package/dist/src/document/actions/types.d.ts +0 -15
  38. package/dist/src/document/index.d.ts +0 -6
  39. package/dist/src/document/object.d.ts +0 -1210
  40. package/dist/src/document/reducer.d.ts +0 -60
  41. package/dist/src/document/schema/index.d.ts +0 -2
  42. package/dist/src/document/schema/types.d.ts +0 -176
  43. package/dist/src/document/schema/zod.d.ts +0 -113
  44. package/dist/src/document/signal.d.ts +0 -29
  45. package/dist/src/document/types.d.ts +0 -255
  46. package/dist/src/document/utils/base.d.ts +0 -86
  47. package/dist/src/document/utils/document-helpers.d.ts +0 -53
  48. package/dist/src/document/utils/file.d.ts +0 -48
  49. package/dist/src/document/utils/index.d.ts +0 -5
  50. package/dist/src/document/utils/node.d.ts +0 -9
  51. package/dist/src/document/utils/validation.d.ts +0 -2
  52. package/dist/src/document-model/custom/reducers/header.d.ts +0 -2
  53. package/dist/src/document-model/custom/reducers/module.d.ts +0 -2
  54. package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -2
  55. package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -2
  56. package/dist/src/document-model/custom/reducers/operation.d.ts +0 -2
  57. package/dist/src/document-model/custom/reducers/state.d.ts +0 -2
  58. package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -7
  59. package/dist/src/document-model/custom/utils.d.ts +0 -7
  60. package/dist/src/document-model/gen/actions.d.ts +0 -15
  61. package/dist/src/document-model/gen/creators.d.ts +0 -7
  62. package/dist/src/document-model/gen/document-model.d.ts +0 -2
  63. package/dist/src/document-model/gen/header/actions.d.ts +0 -9
  64. package/dist/src/document-model/gen/header/creators.d.ts +0 -8
  65. package/dist/src/document-model/gen/header/object.d.ts +0 -12
  66. package/dist/src/document-model/gen/header/operations.d.ts +0 -10
  67. package/dist/src/document-model/gen/index.d.ts +0 -5
  68. package/dist/src/document-model/gen/module/actions.d.ts +0 -8
  69. package/dist/src/document-model/gen/module/creators.d.ts +0 -7
  70. package/dist/src/document-model/gen/module/object.d.ts +0 -11
  71. package/dist/src/document-model/gen/module/operations.d.ts +0 -9
  72. package/dist/src/document-model/gen/object.d.ts +0 -28
  73. package/dist/src/document-model/gen/operation/actions.d.ts +0 -13
  74. package/dist/src/document-model/gen/operation/creators.d.ts +0 -12
  75. package/dist/src/document-model/gen/operation/object.d.ts +0 -16
  76. package/dist/src/document-model/gen/operation/operations.d.ts +0 -14
  77. package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -10
  78. package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -9
  79. package/dist/src/document-model/gen/operation-error/object.d.ts +0 -13
  80. package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -11
  81. package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -7
  82. package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -6
  83. package/dist/src/document-model/gen/operation-example/object.d.ts +0 -10
  84. package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -8
  85. package/dist/src/document-model/gen/reducer.d.ts +0 -5
  86. package/dist/src/document-model/gen/schema/index.d.ts +0 -2
  87. package/dist/src/document-model/gen/schema/types.d.ts +0 -453
  88. package/dist/src/document-model/gen/schema/zod.d.ts +0 -453
  89. package/dist/src/document-model/gen/state/actions.d.ts +0 -9
  90. package/dist/src/document-model/gen/state/creators.d.ts +0 -8
  91. package/dist/src/document-model/gen/state/object.d.ts +0 -12
  92. package/dist/src/document-model/gen/state/operations.d.ts +0 -10
  93. package/dist/src/document-model/gen/types.d.ts +0 -8
  94. package/dist/src/document-model/gen/utils.d.ts +0 -6
  95. package/dist/src/document-model/gen/versioning/actions.d.ts +0 -8
  96. package/dist/src/document-model/gen/versioning/creators.d.ts +0 -7
  97. package/dist/src/document-model/gen/versioning/object.d.ts +0 -11
  98. package/dist/src/document-model/gen/versioning/operations.d.ts +0 -9
  99. package/dist/src/document-model/index.d.ts +0 -80
  100. package/dist/src/index.d.ts +0 -25
  101. package/dist/vite.config.d.ts +0 -2
  102. package/dist/vitest.config.d.ts +0 -2
@@ -1,20 +0,0 @@
1
- "use strict";var ge=Object.defineProperty;var he=(t,e,n)=>e in t?ge(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var at=(t,e,n)=>(he(t,typeof e!="symbol"?e+"":e,n),n);const H=require("immer"),f=require("zod"),vt=require("jszip"),xe=require("crypto"),ft=require("fs"),ye=require("https"),be=require("path"),Nt=t=>t!=null,we=f.z.any().refine(t=>Nt(t)),It=f.z.enum(["LOAD_STATE"]),At=f.z.enum(["PRUNE"]),Pt=f.z.enum(["REDO"]),Mt=f.z.enum(["SET_NAME"]),Ft=f.z.enum(["UNDO"]);function Oe(){return f.z.object({__typename:f.z.literal("Action").optional(),type:f.z.string()})}function et(){return f.z.literal("global").or(f.z.literal("local"))}function Rt(){return f.z.union([Lt(),Ct(),Ut(),Jt(),Ht()])}function Se(){return f.z.object({__typename:f.z.literal("DocumentFile").optional(),data:f.z.string(),extension:f.z.string().nullable(),fileName:f.z.string().nullable(),mimeType:f.z.string()})}function Lt(){return f.z.object({input:f.z.lazy(()=>yt()),type:It,scope:et()})}function yt(){return f.z.object({operations:f.z.number(),state:f.z.lazy(()=>qt())})}function qt(){return f.z.object({data:f.z.unknown().nullish(),name:f.z.string()})}function je(){return f.z.object({__typename:f.z.literal("Operation").optional(),hash:f.z.string(),index:f.z.number(),timestamp:f.z.string().datetime(),type:f.z.string()})}function Ct(){return f.z.object({input:f.z.lazy(()=>bt()),type:At,scope:et()})}function bt(){return f.z.object({end:f.z.number().nullish(),start:f.z.number().nullish()})}const wt=f.z.number;function Ut(){return f.z.object({input:wt(),type:Pt,scope:et()})}const Ot=f.z.string;function Jt(){return f.z.object({input:Ot(),type:Mt,scope:f.z.literal("global")})}function Ee(){return f.z.object({__typename:f.z.literal("SetNameOperation").optional(),hash:f.z.string(),index:f.z.number(),input:f.z.string(),timestamp:f.z.string().datetime(),type:f.z.string()})}const St=f.z.number;function Ht(){return f.z.object({input:St(),type:Ft,scope:et()})}const $e=Object.freeze(Object.defineProperty({__proto__:null,ActionSchema:Oe,BaseActionSchema:Rt,DocumentFileSchema:Se,LoadStateActionInputSchema:yt,LoadStateActionSchema:Lt,LoadStateActionStateInputSchema:qt,Load_StateSchema:It,OperationSchema:je,OperationScopeSchema:et,PruneActionInputSchema:bt,PruneActionSchema:Ct,PruneSchema:At,RedoActionInputSchema:wt,RedoActionSchema:Ut,RedoSchema:Pt,SetNameActionInputSchema:Ot,SetNameActionSchema:Jt,SetNameOperationSchema:Ee,Set_NameSchema:Mt,UndoActionInputSchema:St,UndoActionSchema:Ht,UndoSchema:Ft,definedNonNullAnySchema:we,isDefinedNonNullAny:Nt},Symbol.toStringTag,{value:"Module"}));function De(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var dt={exports:{}};(function(t,e){const{hasOwnProperty:n}=Object.prototype,i=R();i.configure=R,i.stringify=i,i.default=i,e.stringify=i,e.configure=R,t.exports=i;const o=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function a(c){return c.length<5e3&&!o.test(c)?`"${c}"`:JSON.stringify(c)}function r(c){if(c.length>200)return c.sort();for(let l=1;l<c.length;l++){const u=c[l];let k=l;for(;k!==0&&c[k-1]>u;)c[k]=c[k-1],k--;c[k]=u}return c}const p=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function m(c){return p.call(c)!==void 0&&c.length!==0}function d(c,l,u){c.length<u&&(u=c.length);const k=l===","?"":" ";let L=`"0":${k}${c[0]}`;for(let P=1;P<u;P++)L+=`${l}"${P}":${k}${c[P]}`;return L}function h(c){if(n.call(c,"circularValue")){const l=c.circularValue;if(typeof l=="string")return`"${l}"`;if(l==null)return l;if(l===Error||l===TypeError)return{toString(){throw new TypeError("Converting circular structure to JSON")}};throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined')}return'"[Circular]"'}function b(c,l){let u;if(n.call(c,l)&&(u=c[l],typeof u!="boolean"))throw new TypeError(`The "${l}" argument must be of type boolean`);return u===void 0?!0:u}function w(c,l){let u;if(n.call(c,l)){if(u=c[l],typeof u!="number")throw new TypeError(`The "${l}" argument must be of type number`);if(!Number.isInteger(u))throw new TypeError(`The "${l}" argument must be an integer`);if(u<1)throw new RangeError(`The "${l}" argument must be >= 1`)}return u===void 0?1/0:u}function v(c){return c===1?"1 item":`${c} items`}function $(c){const l=new Set;for(const u of c)(typeof u=="string"||typeof u=="number")&&l.add(String(u));return l}function A(c){if(n.call(c,"strict")){const l=c.strict;if(typeof l!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(l)return u=>{let k=`Object can not safely be stringified. Received type ${typeof u}`;throw typeof u!="function"&&(k+=` (${u.toString()})`),new Error(k)}}}function R(c){c={...c};const l=A(c);l&&(c.bigint===void 0&&(c.bigint=!1),"circularValue"in c||(c.circularValue=Error));const u=h(c),k=b(c,"bigint"),L=b(c,"deterministic"),P=w(c,"maximumDepth"),z=w(c,"maximumBreadth");function ot(I,s,g,O,y,j){let x=s[I];switch(typeof x=="object"&&x!==null&&typeof x.toJSON=="function"&&(x=x.toJSON(I)),x=O.call(s,I,x),typeof x){case"string":return a(x);case"object":{if(x===null)return"null";if(g.indexOf(x)!==-1)return u;let S="",D=",";const T=j;if(Array.isArray(x)){if(x.length===0)return"[]";if(P<g.length+1)return'"[Array]"';g.push(x),y!==""&&(j+=y,S+=`
2
- ${j}`,D=`,
3
- ${j}`);const F=Math.min(x.length,z);let U=0;for(;U<F-1;U++){const rt=ot(String(U),x,g,O,y,j);S+=rt!==void 0?rt:"null",S+=D}const J=ot(String(U),x,g,O,y,j);if(S+=J!==void 0?J:"null",x.length-1>z){const rt=x.length-z-1;S+=`${D}"... ${v(rt)} not stringified"`}return y!==""&&(S+=`
4
- ${T}`),g.pop(),`[${S}]`}let _=Object.keys(x);const N=_.length;if(N===0)return"{}";if(P<g.length+1)return'"[Object]"';let E="",M="";y!==""&&(j+=y,D=`,
5
- ${j}`,E=" ");const C=Math.min(N,z);L&&!m(x)&&(_=r(_)),g.push(x);for(let F=0;F<C;F++){const U=_[F],J=ot(U,x,g,O,y,j);J!==void 0&&(S+=`${M}${a(U)}:${E}${J}`,M=D)}if(N>z){const F=N-z;S+=`${M}"...":${E}"${v(F)} not stringified"`,M=D}return y!==""&&M.length>1&&(S=`
6
- ${j}${S}
7
- ${T}`),g.pop(),`{${S}}`}case"number":return isFinite(x)?String(x):l?l(x):"null";case"boolean":return x===!0?"true":"false";case"undefined":return;case"bigint":if(k)return String(x);default:return l?l(x):void 0}}function st(I,s,g,O,y,j){switch(typeof s=="object"&&s!==null&&typeof s.toJSON=="function"&&(s=s.toJSON(I)),typeof s){case"string":return a(s);case"object":{if(s===null)return"null";if(g.indexOf(s)!==-1)return u;const x=j;let S="",D=",";if(Array.isArray(s)){if(s.length===0)return"[]";if(P<g.length+1)return'"[Array]"';g.push(s),y!==""&&(j+=y,S+=`
8
- ${j}`,D=`,
9
- ${j}`);const N=Math.min(s.length,z);let E=0;for(;E<N-1;E++){const C=st(String(E),s[E],g,O,y,j);S+=C!==void 0?C:"null",S+=D}const M=st(String(E),s[E],g,O,y,j);if(S+=M!==void 0?M:"null",s.length-1>z){const C=s.length-z-1;S+=`${D}"... ${v(C)} not stringified"`}return y!==""&&(S+=`
10
- ${x}`),g.pop(),`[${S}]`}g.push(s);let T="";y!==""&&(j+=y,D=`,
11
- ${j}`,T=" ");let _="";for(const N of O){const E=st(N,s[N],g,O,y,j);E!==void 0&&(S+=`${_}${a(N)}:${T}${E}`,_=D)}return y!==""&&_.length>1&&(S=`
12
- ${j}${S}
13
- ${x}`),g.pop(),`{${S}}`}case"number":return isFinite(s)?String(s):l?l(s):"null";case"boolean":return s===!0?"true":"false";case"undefined":return;case"bigint":if(k)return String(s);default:return l?l(s):void 0}}function Z(I,s,g,O,y){switch(typeof s){case"string":return a(s);case"object":{if(s===null)return"null";if(typeof s.toJSON=="function"){if(s=s.toJSON(I),typeof s!="object")return Z(I,s,g,O,y);if(s===null)return"null"}if(g.indexOf(s)!==-1)return u;const j=y;if(Array.isArray(s)){if(s.length===0)return"[]";if(P<g.length+1)return'"[Array]"';g.push(s),y+=O;let E=`
14
- ${y}`;const M=`,
15
- ${y}`,C=Math.min(s.length,z);let F=0;for(;F<C-1;F++){const J=Z(String(F),s[F],g,O,y);E+=J!==void 0?J:"null",E+=M}const U=Z(String(F),s[F],g,O,y);if(E+=U!==void 0?U:"null",s.length-1>z){const J=s.length-z-1;E+=`${M}"... ${v(J)} not stringified"`}return E+=`
16
- ${j}`,g.pop(),`[${E}]`}let x=Object.keys(s);const S=x.length;if(S===0)return"{}";if(P<g.length+1)return'"[Object]"';y+=O;const D=`,
17
- ${y}`;let T="",_="",N=Math.min(S,z);m(s)&&(T+=d(s,D,z),x=x.slice(s.length),N-=s.length,_=D),L&&(x=r(x)),g.push(s);for(let E=0;E<N;E++){const M=x[E],C=Z(M,s[M],g,O,y);C!==void 0&&(T+=`${_}${a(M)}: ${C}`,_=D)}if(S>z){const E=S-z;T+=`${_}"...": "${v(E)} not stringified"`,_=D}return _!==""&&(T=`
18
- ${y}${T}
19
- ${j}`),g.pop(),`{${T}}`}case"number":return isFinite(s)?String(s):l?l(s):"null";case"boolean":return s===!0?"true":"false";case"undefined":return;case"bigint":if(k)return String(s);default:return l?l(s):void 0}}function Q(I,s,g){switch(typeof s){case"string":return a(s);case"object":{if(s===null)return"null";if(typeof s.toJSON=="function"){if(s=s.toJSON(I),typeof s!="object")return Q(I,s,g);if(s===null)return"null"}if(g.indexOf(s)!==-1)return u;let O="";if(Array.isArray(s)){if(s.length===0)return"[]";if(P<g.length+1)return'"[Array]"';g.push(s);const D=Math.min(s.length,z);let T=0;for(;T<D-1;T++){const N=Q(String(T),s[T],g);O+=N!==void 0?N:"null",O+=","}const _=Q(String(T),s[T],g);if(O+=_!==void 0?_:"null",s.length-1>z){const N=s.length-z-1;O+=`,"... ${v(N)} not stringified"`}return g.pop(),`[${O}]`}let y=Object.keys(s);const j=y.length;if(j===0)return"{}";if(P<g.length+1)return'"[Object]"';let x="",S=Math.min(j,z);m(s)&&(O+=d(s,",",z),y=y.slice(s.length),S-=s.length,x=","),L&&(y=r(y)),g.push(s);for(let D=0;D<S;D++){const T=y[D],_=Q(T,s[T],g);_!==void 0&&(O+=`${x}${a(T)}:${_}`,x=",")}if(j>z){const D=j-z;O+=`${x}"...":"${v(D)} not stringified"`}return g.pop(),`{${O}}`}case"number":return isFinite(s)?String(s):l?l(s):"null";case"boolean":return s===!0?"true":"false";case"undefined":return;case"bigint":if(k)return String(s);default:return l?l(s):void 0}}function de(I,s,g){if(arguments.length>1){let O="";if(typeof g=="number"?O=" ".repeat(Math.min(g,10)):typeof g=="string"&&(O=g.slice(0,10)),s!=null){if(typeof s=="function")return ot("",{"":I},[],s,O,"");if(Array.isArray(s))return st("",I,[],$(s),O,"")}if(O.length!==0)return Z("",I,[],O,"")}return Q("",I,[])}return de}})(dt,dt.exports);var ke=dt.exports;const G=De(ke);G.configure;function ze(t,e){return{...t,name:e}}function Te(t,e,n){const{scope:i,input:o}=e,a={document:t,action:e,skip:n};return H.produce(a,r=>{if(r.document.operations[i].length<1)throw new Error(`Cannot undo: no operations in history for scope "${i}"`);if(o<1)throw new Error("Invalid UNDO action: input value must be greater than 0");if(r.skip>0)throw new Error("Cannot undo: skip value from reducer cannot be used with UNDO action");const p=r.document.operations[i].at(-1),m=p&&p.type==="NOOP"&&p.skip>0;if(r.skip+=o,m){r.skip+=p.skip;const w=r.document.operations[i][r.document.operations[i].length-2];w&&p.index-w.index===1&&r.document.operations[i].pop()}if(r.document.operations[i].length<r.skip)throw new Error("Cannot undo: you can't undo more operations than the ones in the scope history");const d=r.document.operations[i].length-1;let h=o,b=m?d-p.skip:d;for(;h>0&&b>=0;){const w=r.document.operations[i][b];if(!w){h--,b--;continue}w.type==="NOOP"&&w.skip>0?(b=b-(w.skip+1),r.skip+=w.skip+1):(r.document.clipboard.push({...w}),h--,b--)}r.action=fe(i)})}function _e(t,e,n){const{scope:i,input:o}=e,a={document:t,action:e,skip:n};return H.produce(a,r=>{if(r.skip>0)throw new Error("Cannot redo: skip value from reducer cannot be used with REDO action");if(o>1)throw new Error("Cannot redo: you can only redo one operation at a time");if(o<1)throw new Error("Invalid REDO action: invalid redo input value");if(r.document.clipboard.length<1)throw new Error("Cannot redo: no operations in the clipboard");const p=r.document.clipboard.findLastIndex(d=>d.scope===i);if(p<0)throw new Error(`Cannot redo: no operations in clipboard for scope "${i}"`);const m=r.document.clipboard.splice(p,1)[0];r.action=H.castDraft({type:m.type,scope:m.scope,input:m.input})})}function ve(t,e,n){const{scope:i}=e,o=t.operations[i];let{input:{start:a,end:r}}=e;a=a||0,r=r||o.length;const p=o.slice(a,r),m=o.slice(0,a),d=o.slice(r),h=pt(t.initialState,{...t.operations,[i]:m.concat(p)},n),{name:b,state:w}=h,v=m.length,$=m.length?m[m.length-1].timestamp:d.length?d[0].timestamp:new Date().toISOString();return pt(t.initialState,{...t.operations,[i]:[...m,{..._t({name:b,state:w},p.length),timestamp:$,index:v,hash:mt({state:w},"global")},...d.map((A,R)=>({...A,index:v+R+1}))]},n)}function Ne(t,e){return{...t,name:e.name,state:e.state??{global:{},local:{}}}}const Vt="SET_NAME",nt="UNDO",it="REDO",ct="PRUNE",Bt="LOAD_STATE",Ie="NOOP",Xt={"application/andrew-inset":["ez"],"application/appinstaller":["appinstaller"],"application/applixware":["aw"],"application/appx":["appx"],"application/appxbundle":["appxbundle"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/automationml-aml+xml":["aml"],"application/automationml-amlx+zip":["amlx"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cpl+xml":["cpl"],"application/cu-seeme":["cu"],"application/cwl":["cwl"],"application/dash+xml":["mpd"],"application/dash-patch+xml":["mpp"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdf":["fdf"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["*js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/media-policy-dataset+xml":["mpf"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["*mp4","*mpg4","mp4s","m4p"],"application/msix":["msix"],"application/msixbundle":["msixbundle"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-keys":["asc"],"application/pgp-signature":["sig","*asc"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/sql":["sql"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/watcherinfo+xml":["wif"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xfdf":["xfdf"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/aac":["adts","aac"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avci":["avci"],"image/avcs":["avcs"],"image/avif":["avif"],"image/bmp":["bmp","dib"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/dpx":["dpx"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm","jpgm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/jt":["jt"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/prc":["prc"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/u3d":["u3d"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/javascript":["js","mjs"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["md","markdown"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/wgsl":["wgsl"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","*jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]};Object.freeze(Xt);var q=function(t,e,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(t):i?i.value:e.get(t)},W,Y,X;class Ae{constructor(...e){W.set(this,new Map),Y.set(this,new Map),X.set(this,new Map);for(const n of e)this.define(n)}define(e,n=!1){for(let[i,o]of Object.entries(e)){i=i.toLowerCase(),o=o.map(p=>p.toLowerCase()),q(this,X,"f").has(i)||q(this,X,"f").set(i,new Set);const a=q(this,X,"f").get(i);let r=!0;for(let p of o){const m=p.startsWith("*");if(p=m?p.slice(1):p,a==null||a.add(p),r&&q(this,Y,"f").set(i,p),r=!1,m)continue;const d=q(this,W,"f").get(p);if(d&&d!=i&&!n)throw new Error(`"${i} -> ${p}" conflicts with "${d} -> ${p}". Pass \`force=true\` to override this definition.`);q(this,W,"f").set(p,i)}}return this}getType(e){if(typeof e!="string")return null;const n=e.replace(/^.*[/\\]/,"").toLowerCase(),i=n.replace(/^.*\./,"").toLowerCase(),o=n.length<e.length;return!(i.length<n.length-1)&&o?null:q(this,W,"f").get(i)??null}getExtension(e){var n;return typeof e!="string"?null:(e=(n=e==null?void 0:e.split)==null?void 0:n.call(e,";")[0],(e&&q(this,Y,"f").get(e.trim().toLowerCase()))??null)}getAllExtensions(e){return typeof e!="string"?null:q(this,X,"f").get(e.toLowerCase())??null}_freeze(){this.define=()=>{throw new Error("define() not allowed for built-in Mime objects. See https://github.com/broofa/mime/blob/main/README.md#custom-mime-instances")},Object.freeze(this);for(const e of q(this,X,"f").values())Object.freeze(e);return this}_getTestState(){return{types:q(this,W,"f"),extensions:q(this,Y,"f")}}}W=new WeakMap,Y=new WeakMap,X=new WeakMap;const Pe=new Ae(Xt)._freeze();function Me(t,e,n){const i=be.join(t,e);return ft.mkdirSync(t,{recursive:!0}),new Promise((o,a)=>{try{ft.writeFile(i,n,{},r=>{r?a(r):o(i)})}catch(r){a(r)}})}function Kt(t){return ft.readFileSync(t)}function Fe(t){return new Promise((e,n)=>{ye.get(t,i=>{const o=[],a=i.headers["content-type"];i.on("data",r=>{o.push(r)}),i.on("end",()=>{e({buffer:Buffer.concat(o),mimeType:a})})}).on("error",i=>{n(i)})})}const Re=async t=>Kt(t),lt=(t,e="sha1")=>xe.createHash(e).update(t).digest("base64");function Wt(t){const e=[],n=Object.keys(t);for(const i of n){const o=t[i].sort((a,r)=>a.index-r.index);for(let a=0;a<o.length;a++)o[a].index!==a&&e.push({message:`Invalid operation index ${o[a].index} at position ${a}`,details:{position:a,operation:o[a],scope:o[a].scope}})}return e}const jt=async t=>{const e=new vt,{name:n,revision:i,documentType:o,created:a,lastModified:r}=t,p={name:n,revision:i,documentType:o,created:a,lastModified:r};return e.file("header.json",JSON.stringify(p,null,2)),e.file("state.json",JSON.stringify(t.initialState||{},null,2)),e.file("operations.json",JSON.stringify(t.operations,null,2)),Object.keys(t.attachments).forEach(d=>{const{data:h,...b}=t.attachments[d];e.file(d,h,{base64:!0,createFolders:!0,comment:JSON.stringify(b)})}),e},Gt=async(t,e,n,i)=>{const a=await(await jt(t)).generateAsync({type:"uint8array",streamFiles:!0}),r=i??t.name,p=`.${n}.zip`;return Me(e,r.endsWith(p)?r:`${r}${p}`,a)},Le=async(t,e)=>{const i=await(await jt(t)).generateAsync({type:"blob"}),o=await e.createWritable();await o.write(i),await o.close()},gt=async(t,e,n)=>{const i=Kt(t);return Zt(i,e,n)},Zt=async(t,e,n)=>{const i=new vt;return await i.loadAsync(t),qe(i,e,n)};async function qe(t,e,n){const i=t.file("state.json");if(!i)throw new Error("Initial state not found");const o=await i.async("string"),a=JSON.parse(o),r=t.file("header.json");let p;r&&(p=JSON.parse(await r.async("string")));const m=t.file("operations.json");if(!m)throw new Error("Operations history not found");const d=JSON.parse(await m.async("string")),h=Wt(d);if(h.length){const w=h.map(v=>v.message);throw new Error(w.join(`
20
- `))}let b=zt(a,d,e,void 0,p,{},n);return p&&(b={...b,...p}),b}function Qt(t){const e=t.replace(/^.*\./,"")||void 0,n=t.replace(/^.*[/\\]/,"")||void 0;return{extension:e,fileName:n}}async function Ce(t){const{buffer:e,mimeType:n="application/octet-stream"}=await Fe(t),i=Qt(t),o=e.toString("base64");return{data:o,hash:lt(o),mimeType:n,...i}}async function Ue(t){const e=await Re(t),n=Pe.getType(t)||"application/octet-stream",i=Qt(t),o=e.toString("base64");return{data:o,hash:lt(o),mimeType:n,...i}}var Yt=(t=>(t.UNEXPECTED_INDEX="UNEXPECTED_INDEX",t))(Yt||{}),te=(t=>(t.DUPLICATED_INDEX="DUPLICATED_INDEX",t.MISSING_INDEX="MISSING_INDEX",t))(te||{});function Et(t){const e=[];let n=-1;for(const i of t){const o=i.index-i.skip;o!==n+1&&e.push({operation:{index:i.index,skip:i.skip},issue:"UNEXPECTED_INDEX",category:o>n+1?"MISSING_INDEX":"DUPLICATED_INDEX",message:`Expected index ${n+1} with skip 0 or equivalent, got index ${i.index} with skip ${i.skip}`}),n=i.index}return e}function V(t){var i,o,a;const e=[];let n=t.length-1;for(;n>-1;){e.unshift(t[n]);const r=(((i=t[n])==null?void 0:i.index)||0)-(((o=t[n])==null?void 0:o.skip)||0)-1;let p=n-1;for(;p>-1&&(((a=t[p])==null?void 0:a.index)||0)>r;)p--;n=p}return e}function Je(t){const e=[...t],n=e[e.length-1];return n&&(n.type==="NOOP"?e.push({...n,index:n.index,type:"NOOP",skip:ie(t)}):e.push({type:"NOOP",index:n.index+1,timestamp:new Date().toISOString(),input:{},skip:1,scope:n.scope,hash:n.hash})),e}function B(t){return t.slice().sort((e,n)=>e.skip-n.skip).sort((e,n)=>e.index-n.index)}const He=(t,e,n)=>[...e,...n].sort((i,o)=>new Date(i.timestamp).getTime()-new Date(o.timestamp).getTime()).map((i,o)=>({...i,index:t.index+o,skip:o===0?t.skip:0})),Ve=(t,e,n)=>[...e,...n].sort((i,o)=>new Date(i.timestamp).getTime()-new Date(o.timestamp).getTime()).sort((i,o)=>i.index-o.index).map((i,o)=>({...i,index:t.index+o,skip:o===0?t.skip:0}));function $t(t,e){return G(t)===G(e)}function Be(t,e){const n=V(B(t.slice())),i=V(B(e.slice()));if(n.length<1)return[i,[]];const o=[];let a=!1;for(;i.length>0;){const r=i[0];let p=n.shift();for(;p&&ee(p,r);)o.push(p),p=n.shift();if(p?a||($t(p,r)?(i.shift(),o.push(p)):(n.unshift(p),a=!0)):a=!0,a){let m=i.shift();for(;m;)o.push(m),m=i.shift()}}if(!a){let r=n.shift();for(;r;)o.push(r),r=n.shift()}return[V(o),n]}function ee(t,e){return t.index<e.index||t.index===e.index&&t.skip<e.skip}function ne(t,e){const n=[],i=[],o=[],a=Math.max(t.length,e.length);let r=!1;for(let p=0;p<a;p++){const m=t[p],d=e[p];m&&d?!r&&$t(m,d)?n.push(m):(r=!0,i.push(m),o.push(d)):m?i.push(m):d&&o.push(d)}return[n,i,o]}function Xe(t,e,n){const[i,o,a]=ne(V(t),V(e)),r=ut(i),p=1+Math.max(r,ut(o),ut(a)),m=n({index:p,skip:p-(r+1)},o,a);return i.concat(m)}function ut(t){const e=t[t.length-1];return e?e.index:-1}function ie(t){var i,o,a;if(t.length<1)return-1;const e=V(t);let n=(((i=e[e.length-1])==null?void 0:i.skip)||0)+1;return e.length>1&&(n+=((o=e[e.length-2])==null?void 0:o.skip)||0),(((a=e[e.length-1])==null?void 0:a.index)||-1)<n?-1:n}const Ke=t=>Et(V(B(t))),We=t=>t.reduce((n,i)=>{var o;return n[i.scope]||(n[i.scope]=[]),(o=n[i.scope])==null||o.push(i),n},{}),Ge=(t,e)=>{var m;const n={integrityIssues:[],validOperations:[],invalidOperations:[],duplicatedOperations:[]},i=B(t),o=B(e),a=Et([...i,...o]),p=(m=[...a.filter(d=>d.category==="MISSING_INDEX")].sort((d,h)=>h.operation.index-d.operation.index).pop())==null?void 0:m.operation;for(const d of o){if(p&&d.index>=p.index){n.invalidOperations.push(d);continue}if(a.some(b=>b.operation.index===d.index&&b.operation.skip===d.skip&&b.category==="DUPLICATED_INDEX")){n.duplicatedOperations.push(d);continue}n.validOperations.push(d)}return n.integrityIssues.push(...a),n};function Ze(t,e){return t.filter(n=>!e.some(i=>n.type==="NOOP"&&n.skip===0&&n.index===i.index||n.index===i.index&&n.skip===i.skip&&n.scope===i.scope&&n.hash===i.hash&&n.type===i.type))}function oe(t,e){const[n]=B(t).slice(-1),i=(n==null?void 0:n.index)??-1,o=i+1,a={...e,index:e.index??o};if(a.index<i)throw new Error(`The skip header operation index must be greater than or equal to ${i}`);return(V(B([...t,a]))||[]).slice(0,-1)}function ht(t){return{...Object.entries(t).reduce((n,i)=>{const[o,a]=i;return{...n,[o]:V(B(a))}},{})}}const Qe=Object.freeze(Object.defineProperty({__proto__:null,IntegrityIssueSubType:te,IntegrityIssueType:Yt,addUndo:Je,attachBranch:Be,checkCleanedOperationsIntegrity:Et,checkOperationsIntegrity:Ke,garbageCollect:V,garbageCollectDocumentOperations:ht,groupOperationsByScope:We,merge:Xe,nextSkipNumber:ie,operationsAreEqual:$t,precedes:ee,prepareOperations:Ge,removeExistingOperations:Ze,reshuffleByTimestamp:He,reshuffleByTimestampAndIndex:Ve,skipHeaderOperations:oe,sortOperations:B,split:ne},Symbol.toStringTag,{value:"Module"}));function Ye(t,e){let n;return"index"in e?n={...e}:n=t.operations[e.scope].at(-1),((n==null?void 0:n.index)??-1)+1}function Dt(t,e){return{...t,revision:{...t.revision,[e.scope]:Ye(t,e)},lastModified:new Date().toISOString()}}function tn(t,e,n=0){if([nt,it,ct].includes(e.type))return t;const{scope:i}=e,o=t.operations[i].slice(),a=o.at(-1);let r=((a==null?void 0:a.index)??-1)+1;if("index"in e){if(e.index-n>r)throw new Error(`Missing operations: expected ${r} with skip 0 or equivalent, got index ${e.index} with skip ${n}`);r=e.index}return o.push({...e,index:r,timestamp:new Date().toISOString(),hash:"",scope:i,skip:n,error:void 0}),{...t,operations:{...t.operations,[i]:o}}}function se(t,e,n=0){let i=tn(t,e,n);return i=Dt(i,e),i}function en(t,e,n){switch(Rt().parse(e),e.type){case Vt:return ze(t,e.input);case ct:return ve(t,e,n);case Bt:return Ne(t,e.input.state);default:return t}}function nn(t,e,n){switch(e.type){case nt:return Te(t,e,n);case it:return _e(t,e,n);default:return{document:t,action:e,skip:n}}}function on(t,e,n,i,o=!1,a=Tt){const r=e.scope,p=t.operations[r].at(-1);if(!p)return t;const m=ht({...t.operations,[r]:oe(t.operations[r],p)});let d;const h=m[r].at(-1);if(o&&(h!=null&&h.resultingState))d=a(h.resultingState);else{const{state:b}=pt(t.initialState,m,n,void 0,void 0,void 0,void 0,{reuseHash:!0,reuseOperationResultingState:o,operationResultingStateParser:a});d=b[r]}return{...t,state:{...t.state,[r]:d},operations:ht({...t.operations})}}function kt(t,e,n,i,o={}){const{skip:a,ignoreSkipOperations:r=!1,reuseHash:p=!1,reuseOperationResultingState:m=!1,operationResultingStateParser:d}=o,h={...e},b=a||0;let w={...t};const v=!r&&(b>0||"index"in h&&h.skip>0);return xt(h)&&(w=en(w,h,n)),w=se(w,h,b),v&&(w=on(w,h,n,b,m,d)),w=H.produce(w,$=>{try{const A=n($.state,h,i);if(A)return H.castDraft({...w,state:A})}catch(A){const R=w.operations[h.scope].length-1;$.operations[h.scope][R].error=A.message,$.operations[h.scope][R].skip=0,v&&($.state=H.castDraft({...t.state}),$.operations=H.castDraft({...t.operations,[h.scope]:[...t.operations[h.scope],{...$.operations[h.scope][R]}]}))}}),H.produce(w,$=>{if([nt,it,ct].includes(h.type))return $;const A=h.scope||"global",R=p&&Object.prototype.hasOwnProperty.call(h,"hash")?h.hash:mt($,A),c=$.operations[A].at(-1);c&&(c.hash=R,m&&(c.resultingState=$.state[A]),!xt(h)&&h.attachments&&h.attachments.forEach(l=>{const{hash:u,...k}=l;$.attachments[u]={...k}}))})}function sn(t){return t.type===Ie&&t.skip!==void 0&&t.skip>0&&t.hash!==void 0}function rn(t){return[nt,it].includes(t.type)}function xt(t){return[Vt,nt,it,ct,Bt].includes(t.type)}function K(t,e,n,i,o="global"){if(!t)throw new Error("Empty action type");if(typeof t!="string")throw new Error(`Invalid action type: ${JSON.stringify(t)}`);const a={type:t,input:e,scope:o};n&&(a.attachments=n);try{i==null||i().parse(a.input)}catch(r){throw new Error(`Invalid action input: ${r}`)}return a}function re(t,e=kt){return(n,i,o,a)=>e(n,i,t,o,a)}const ae=(t,e)=>({name:"",documentType:"",revision:{global:0,local:0},created:new Date().toISOString(),lastModified:new Date().toISOString(),attachments:{},...t,state:(e==null?void 0:e(t==null?void 0:t.state))??(t==null?void 0:t.state)??{global:{},local:{}}}),pe=(t,e)=>{const n=ae(t,e);return{...n,initialState:n,operations:{global:[],local:[]},clipboard:[]}},mt=(t,e="global")=>lt(G(t.state[e]||"")),an=(t,e=1e3)=>{const n=Math.random()*e;return lt(`${(t??new Date).toISOString()}${n}`)};function tt(t){return H.castImmutable(H.freeze(t,!0))}function pn(t,e){const n=[...t];let i=e||0,o=n.length>0?n[n.length-1].index:0;const a=[];for(const r of n.reverse()){if(i>0){const d=o-r.index;i-=d}if(i<0)throw new Error("Invalid operation index, missing operations");const p={ignore:i>0,operation:r},m=r.skip>0?r.skip+1:0;if(m>0&&m>i){const d=m-i;i=i+d}o=r.index,a.push(p)}return a.reverse()}function cn(t,e,n){const i=t.slice().sort((p,m)=>p.skip-m.skip).sort((p,m)=>p.index-m.index);let o=n,a=0,r=e;for(const p of i.reverse()){const m=r-p.index;if(o=o-m,o>-1)a++,r=p.index;else break}return a}function ln(t){return Object.values(t).flatMap(e=>e).sort((e,n)=>new Date(e.timestamp).getTime()-new Date(n.timestamp).getTime())}function mn(t){return Object.values(t).flatMap(e=>e).sort((e,n)=>new Date(e.operation.timestamp).getTime()-new Date(n.operation.timestamp).getTime())}function pt(t,e,n,i,o,a=kt,r={},p){const m=re(n,a);return zt(t,e,m,i,o,r,p)}function zt(t,e,n,i,o,a={},r){const{checkHashes:p=!0,reuseOperationResultingState:m,operationResultingStateParser:d=Tt}=r||{};let h=t;const b=[],w={global:[],local:[]};if(m)for(const[c,l]of Object.entries(e)){const u=l.findLastIndex(L=>!!L.resultingState);if(u<0){b.push(...l);continue}const k=l[u];try{const L=d(k.resultingState);h={...h,state:{...h.state,[c]:L}},w[c].push(...l.slice(0,u+1)),b.push(...l.slice(u+1))}catch{b.push(...l)}}else b.push(...Object.values(e).flat());const v=pe(h);v.initialState=t,v.operations=w;let $=v;if(b.length)$=b.reduce((c,l)=>n(c,l,i,{skip:l.skip,ignoreSkipOperations:!0,reuseHash:!p}),v);else for(const c of Object.values(w)){const l=c.at(-1);l&&($=Dt($,l))}if(!p)for(const c of Object.keys($.state))for(let l=b.length-1;l>=0;l--){const u=b[l];if(u.scope===c){if(u.hash!==mt($,c))throw new Error(`Hash mismatch for scope ${c}`);break}}const A=Object.keys($.operations).reduce((c,l)=>{const u=l;return{...c,[u]:[...$.operations[u].map((k,L)=>{var P;return{...k,timestamp:((P=e[u][L])==null?void 0:P.timestamp)??k.timestamp}})]}},{global:[],local:[]}),R=Object.values(A).reduce((c,l)=>{const u=l[l.length-1];return(u==null?void 0:u.timestamp)>c&&(c=u.timestamp),c},t.lastModified);return{...$,operations:A,lastModified:R}}function un(t,e){return G(t)===G(e)}function Tt(t){const e=typeof t;if(e==="string")return JSON.parse(t);if(e==="object")return t;throw new Error(`Providing resulting state is of type: ${e}`)}const ce=t=>K("SET_NAME",t,void 0,Ot,void 0),le=(t=1,e="global")=>K("UNDO",t,void 0,St,e),me=(t=1,e="global")=>K("REDO",t,void 0,wt,e),ue=(t,e,n="global")=>K("PRUNE",{start:t,end:e},void 0,bt,n),_t=(t,e)=>K("LOAD_STATE",{state:t,operations:e},void 0,yt),fe=(t="global")=>K("NOOP",{},void 0,void 0,t),fn=Object.freeze(Object.defineProperty({__proto__:null,loadState:_t,noop:fe,prune:ue,redo:me,setName:ce,undo:le},Symbol.toStringTag,{value:"Module"}));class dn{constructor(e,n,i){at(this,"_document");at(this,"_reducer");at(this,"_signalDispatch");this._reducer=e,this._document=n,this._signalDispatch=i}dispatch(e,n){return this._document=this._reducer(this._document,e,this._signalDispatch,n),this}saveToFile(e,n,i){return Gt(this._document,e,n,i)}async loadFromFile(e){this._document=await gt(e,this._reducer)}static async stateFromFile(e,n){return await gt(e,n)}get state(){return tt(this._document.state)}get operations(){return tt(this._document.operations)}get name(){return this._document.name}get documentType(){return this._document.documentType}get created(){return this._document.created}get lastModified(){return this._document.lastModified}get revision(){return this._document.revision.global}getRevision(e){return this._document.revision[e]}get initialState(){return tt(this._document.initialState)}toDocument(){return tt(this._document)}getAttachment(e){return this._document.attachments[e]}setName(e){return this.dispatch(ce(e)),this}undo(e){return this.dispatch(le(e)),this}redo(e){return this.dispatch(me(e)),this}prune(e,n){return this.dispatch(ue(e,n)),this}loadState(e,n){return this.dispatch(_t(e,n)),this}}function gn(t,e){e.forEach(n=>{Object.getOwnPropertyNames(n.prototype).forEach(i=>{Object.defineProperty(t.prototype,i,Object.getOwnPropertyDescriptor(n.prototype,i)||Object.create(null))})})}exports.BaseActions=fn;exports.BaseDocument=dn;exports.applyMixins=gn;exports.baseReducer=kt;exports.calculateSkipsLeft=cn;exports.createAction=K;exports.createDocument=pe;exports.createExtendedState=ae;exports.createReducer=re;exports.createZip=jt;exports.documentHelpers=Qe;exports.getLocalFile=Ue;exports.getRemoteFile=Ce;exports.hashDocument=mt;exports.hashKey=an;exports.isBaseAction=xt;exports.isNoopOperation=sn;exports.isSameDocument=un;exports.isUndoRedo=rn;exports.loadFromFile=gt;exports.loadFromInput=Zt;exports.mapSkippedOperations=pn;exports.parseResultingState=Tt;exports.processUndoRedo=nn;exports.readOnly=tt;exports.replayDocument=zt;exports.replayOperations=pt;exports.saveToFile=Gt;exports.saveToFileHandle=Le;exports.sortMappedOperations=mn;exports.sortOperations=ln;exports.updateDocument=se;exports.updateHeader=Dt;exports.validateOperations=Wt;exports.zod=$e;
@@ -1,47 +0,0 @@
1
- import { ExtendedState, OperationScope } from '../types';
2
- import { LoadStateAction, PruneAction, RedoAction, SetNameAction, UndoAction, NOOPAction } from './types';
3
- /**
4
- * Changes the name of the document.
5
- *
6
- * @param name - The name to be set in the document.
7
- * @category Actions
8
- */
9
- export declare const setName: (name: string) => SetNameAction;
10
- /**
11
- * Cancels the last `count` operations.
12
- *
13
- * @param count - Number of operations to cancel
14
- * @category Actions
15
- */
16
- export declare const undo: (skip?: number, scope?: OperationScope) => UndoAction;
17
- /**
18
- * Cancels the last `count` {@link undo | UNDO} operations.
19
- *
20
- * @param count - Number of UNDO operations to cancel
21
- * @category Actions
22
- */
23
- export declare const redo: (count?: number, scope?: OperationScope) => RedoAction;
24
- /**
25
- * Joins multiple operations into a single {@link loadState | LOAD_STATE} operation.
26
- *
27
- * @remarks
28
- * Useful to keep operations history smaller. Operations to prune are selected by index,
29
- * similar to the {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | slice} method in Arrays.
30
- *
31
- * @param start - Index of the first operation to prune
32
- * @param end - Index of the last operation to prune
33
- * @category Actions
34
- */
35
- export declare const prune: (start?: number | undefined, end?: number | undefined, scope?: OperationScope) => PruneAction;
36
- /**
37
- * Replaces the state of the document.
38
- *
39
- * @remarks
40
- * This action shouldn't be used directly. It is dispatched by the {@link prune} action.
41
- *
42
- * @param state - State to be set in the document.
43
- * @param operations - Number of operations that were removed from the previous state.
44
- * @category Actions
45
- */
46
- export declare const loadState: <S, T>(state: Pick<ExtendedState<S, T>, "name" | "state">, operations: number) => LoadStateAction;
47
- export declare const noop: (scope?: OperationScope) => NOOPAction;
@@ -1,14 +0,0 @@
1
- import { Action, Document, ImmutableStateReducer, Operation, PruneAction, RedoAction, State, UndoAction, UndoRedoProcessResult } from '../types';
2
- export declare function setNameOperation<T>(document: T, name: string): T;
3
- export declare function noopOperation<T, A extends Action, L>(document: Document<T, A, L>, action: Partial<Operation>, skip: number): {
4
- skip: number;
5
- document: Document<T, A, L>;
6
- };
7
- export declare function undoOperation<T, A extends Action, L>(document: Document<T, A, L>, action: UndoAction, skip: number): UndoRedoProcessResult<T, A, L>;
8
- export declare function redoOperation<T, A extends Action, L>(document: Document<T, A, L>, action: RedoAction, skip: number): UndoRedoProcessResult<T, A, L>;
9
- export declare function pruneOperation<T, A extends Action, L>(document: Document<T, A, L>, action: PruneAction, wrappedReducer: ImmutableStateReducer<T, A, L>): Document<T, A, L>;
10
- export declare function loadStateOperation<T, A extends Action, L>(oldDocument: Document<T, A, L>, newDocument: {
11
- name: string;
12
- state?: State<T, L>;
13
- }): Document<T, A, L>;
14
- export * from './creators';
@@ -1,15 +0,0 @@
1
- import type { Action } from '../types';
2
- import type { LoadStateActionInput, PruneActionInput, RedoAction as _RedoAction, SetNameAction as _SetNameAction, UndoAction as _UndoAction } from '../schema/types';
3
- export declare const SET_NAME = "SET_NAME";
4
- export declare const UNDO = "UNDO";
5
- export declare const REDO = "REDO";
6
- export declare const PRUNE = "PRUNE";
7
- export declare const LOAD_STATE = "LOAD_STATE";
8
- export declare const NOOP = "NOOP";
9
- export type LoadStateAction = Action<'LOAD_STATE', LoadStateActionInput>;
10
- export type PruneAction = Action<'PRUNE', PruneActionInput>;
11
- export type RedoAction = Action<'REDO', _RedoAction['input']>;
12
- export type SetNameAction = Action<'SET_NAME', _SetNameAction['input']>;
13
- export type UndoAction = Action<'UNDO', _UndoAction['input']>;
14
- export type NOOPAction = Action<'NOOP'>;
15
- export type BaseAction = LoadStateAction | PruneAction | RedoAction | SetNameAction | UndoAction | NOOPAction;
@@ -1,6 +0,0 @@
1
- export * as actions from './actions/creators';
2
- export * from './object';
3
- export * from './reducer';
4
- export * from './signal';
5
- export * from './types';
6
- export * as utils from './utils';