document-model 1.0.18 → 1.0.19

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 (33) hide show
  1. package/dist/browser/document/utils/base.d.ts +6 -2
  2. package/dist/browser/document-model.cjs +1 -1
  3. package/dist/browser/document-model.js +2 -2
  4. package/dist/browser/document.cjs +1 -1
  5. package/dist/browser/document.js +6 -6
  6. package/dist/browser/index.cjs +1 -1
  7. package/dist/browser/index.js +4 -4
  8. package/dist/browser/internal/{index-ec8cd58f.js → index-1ad32a2e.js} +1 -1
  9. package/dist/browser/internal/index-2551382e.js +34 -0
  10. package/dist/browser/internal/{index-10a12861.js → index-46b68530.js} +1 -1
  11. package/dist/browser/internal/index-869c5d0d.js +1 -0
  12. package/dist/browser/internal/object-1fdba77d.js +6 -0
  13. package/dist/browser/internal/{object-7e8eaff4.js → object-d50f7d2f.js} +744 -715
  14. package/dist/node/document/utils/base.d.ts +6 -2
  15. package/dist/node/document-model.cjs +1 -1
  16. package/dist/node/document-model.js +3 -3
  17. package/dist/node/document.cjs +1 -1
  18. package/dist/node/document.js +5 -5
  19. package/dist/node/index.cjs +1 -1
  20. package/dist/node/index.js +4 -4
  21. package/dist/node/internal/{index-284511b8.js → index-631ba7bf.js} +1 -1
  22. package/dist/node/internal/index-6477ee0a.js +1 -0
  23. package/dist/node/internal/{index-09364517.js → index-8d582c48.js} +2 -2
  24. package/dist/node/internal/index-f235f9be.js +34 -0
  25. package/dist/node/internal/object-08bd169a.js +1 -0
  26. package/dist/node/internal/{object-c32ea0a0.js → object-773231ca.js} +473 -444
  27. package/package.json +1 -1
  28. package/dist/browser/internal/index-2aee8ea9.js +0 -1
  29. package/dist/browser/internal/index-a1282d5c.js +0 -31
  30. package/dist/browser/internal/object-24df9d92.js +0 -6
  31. package/dist/node/internal/index-2d4783d9.js +0 -1
  32. package/dist/node/internal/index-5ef0c6b0.js +0 -31
  33. package/dist/node/internal/object-21f3d2ee.js +0 -1
@@ -1,5 +1,6 @@
1
1
  import { baseReducer } from '../reducer';
2
- import { Action, BaseAction, Document, ExtendedState, ImmutableStateReducer, Reducer, Immutable, OperationScope, State, CreateState, PartialState } from '../types';
2
+ import { Action, BaseAction, Document, ExtendedState, ImmutableStateReducer, Reducer, Immutable, OperationScope, State, CreateState, PartialState, DocumentOperations, DocumentHeader } from '../types';
3
+ import { SignalDispatch } from '../signal';
3
4
  export declare function isBaseAction(action: Action): action is BaseAction;
4
5
  /**
5
6
  * Helper function to be used by action creators.
@@ -52,6 +53,9 @@ export declare const createExtendedState: <S, L>(initialState?: Partial<Extended
52
53
  * @returns The new document state.
53
54
  */
54
55
  export declare const createDocument: <S, A extends Action, L = unknown>(initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>> | undefined, createState?: ((state?: Partial<State<PartialState<S>, PartialState<L>>> | undefined) => State<S, L>) | undefined) => Document<S, A, L>;
55
- export declare const hashDocument: (document: Document, scope?: OperationScope) => string;
56
+ export declare const hashDocument: (document: Pick<Document, 'state'>, scope?: OperationScope) => string;
56
57
  export declare const hashKey: (date?: Date, randomLimit?: number) => string;
57
58
  export declare function readOnly<T>(value: T): Immutable<T>;
59
+ export declare function sortOperations<A extends Action>(operations: DocumentOperations<A>): import("../types").Operation<BaseAction | A>[];
60
+ export declare function replayOperations<T, A extends Action, L>(initialState: ExtendedState<T, L>, operations: DocumentOperations<A>, reducer: ImmutableStateReducer<T, A, L>, dispatch?: SignalDispatch, header?: DocumentHeader, documentReducer?: typeof baseReducer): Document<T, A, L>;
61
+ export declare function replayDocument<T, A extends Action, L>(initialState: ExtendedState<T, L>, operations: DocumentOperations<A>, reducer: Reducer<T, A, L>, dispatch?: SignalDispatch, header?: DocumentHeader): Document<T, A, L>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./internal/object-21f3d2ee.js");require("json-stringify-deterministic");require("immer");require("crypto");require("fs");require("https");require("path");require("jszip");const e=require("./internal/index-284511b8.js");require("zod");exports.Document=e.Document;exports.DocumentModel=e.DocumentModel$1;exports.actions=e.actions;exports.documentModel=e.documentModel;exports.module=e.module;exports.reducer=e.reducer;exports.utils=e.utils;exports.z=e.zod;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./internal/object-08bd169a.js");require("json-stringify-deterministic");require("immer");require("jszip");require("crypto");require("fs");require("https");require("path");const e=require("./internal/index-631ba7bf.js");require("zod");exports.Document=e.Document;exports.DocumentModel=e.DocumentModel$1;exports.actions=e.actions;exports.documentModel=e.documentModel;exports.module=e.module;exports.reducer=e.reducer;exports.utils=e.utils;exports.z=e.zod;
@@ -1,12 +1,12 @@
1
- import "./internal/object-c32ea0a0.js";
1
+ import "./internal/object-773231ca.js";
2
2
  import "json-stringify-deterministic";
3
3
  import "immer";
4
+ import "jszip";
4
5
  import "crypto";
5
6
  import "fs";
6
7
  import "https";
7
8
  import "path";
8
- import "jszip";
9
- import { b as d, a as l, c as n, d as D, m as M, r as b, u as f, z as x } from "./internal/index-09364517.js";
9
+ import { b as d, a as l, c as n, d as D, m as M, r as b, u as f, z as x } from "./internal/index-8d582c48.js";
10
10
  import "zod";
11
11
  export {
12
12
  d as Document,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal/object-21f3d2ee.js"),r=require("./internal/index-2d4783d9.js");require("json-stringify-deterministic");require("immer");require("jszip");require("crypto");require("fs");require("https");require("path");require("zod");exports.BaseDocument=e.BaseDocument;exports.actions=e.BaseActions;exports.applyMixins=e.applyMixins;exports.baseReducer=e.baseReducer;exports.z=e.zod;exports.utils=r.index;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./internal/object-08bd169a.js"),r=require("./internal/index-6477ee0a.js");require("json-stringify-deterministic");require("immer");require("zod");require("jszip");require("crypto");require("fs");require("https");require("path");exports.BaseDocument=e.BaseDocument;exports.actions=e.BaseActions;exports.applyMixins=e.applyMixins;exports.baseReducer=e.baseReducer;exports.z=e.zod;exports.utils=r.index;
@@ -1,16 +1,16 @@
1
- import { B as n, h as u, g as x, p as f, z as l } from "./internal/object-c32ea0a0.js";
2
- import { i as b } from "./internal/index-5ef0c6b0.js";
1
+ import { B as c, h as n, g as x, u as f, z as l } from "./internal/object-773231ca.js";
2
+ import { i as b } from "./internal/index-f235f9be.js";
3
3
  import "json-stringify-deterministic";
4
4
  import "immer";
5
+ import "zod";
5
6
  import "jszip";
6
7
  import "crypto";
7
8
  import "fs";
8
9
  import "https";
9
10
  import "path";
10
- import "zod";
11
11
  export {
12
- n as BaseDocument,
13
- u as actions,
12
+ c as BaseDocument,
13
+ n as actions,
14
14
  x as applyMixins,
15
15
  f as baseReducer,
16
16
  b as utils,
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./internal/index-2d4783d9.js"),o=require("./internal/index-284511b8.js");require("./internal/object-21f3d2ee.js");require("json-stringify-deterministic");require("immer");require("jszip");require("crypto");require("fs");require("https");require("path");require("zod");const u={"powerhouse/document":e.Document,"powerhouse/document-model":o.DocumentModel},r={Document:e.Document,DocumentModel:o.DocumentModel};exports.Document=e.Document;exports.DocumentModel=o.DocumentModel;exports.DocumentModels=u;exports.default=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./internal/index-6477ee0a.js"),o=require("./internal/index-631ba7bf.js");require("./internal/object-08bd169a.js");require("json-stringify-deterministic");require("immer");require("zod");require("jszip");require("crypto");require("fs");require("https");require("path");const u={"powerhouse/document":e.Document,"powerhouse/document-model":o.DocumentModel},r={Document:e.Document,DocumentModel:o.DocumentModel};exports.Document=e.Document;exports.DocumentModel=o.DocumentModel;exports.DocumentModels=u;exports.default=r;
@@ -1,14 +1,14 @@
1
- import { D as o } from "./internal/index-5ef0c6b0.js";
2
- import { D as t } from "./internal/index-09364517.js";
3
- import "./internal/object-c32ea0a0.js";
1
+ import { D as o } from "./internal/index-f235f9be.js";
2
+ import { D as t } from "./internal/index-8d582c48.js";
3
+ import "./internal/object-773231ca.js";
4
4
  import "json-stringify-deterministic";
5
5
  import "immer";
6
+ import "zod";
6
7
  import "jszip";
7
8
  import "crypto";
8
9
  import "fs";
9
10
  import "https";
10
11
  import "path";
11
- import "zod";
12
12
  const a = {
13
13
  "powerhouse/document": o,
14
14
  "powerhouse/document-model": t
@@ -1,4 +1,4 @@
1
- "use strict";var ut=Object.defineProperty;var mt=(t,e,o)=>e in t?ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var ue=(t,e,o)=>(mt(t,typeof e!="symbol"?e+"":e,o),o);const s=require("./object-21f3d2ee.js");require("json-stringify-deterministic");require("immer");require("crypto");require("fs");require("https");require("path");require("jszip");const r=require("zod"),Et=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),f={id:"powerhouse/document-model",name:"DocumentModel",extension:"phdm",description:"The Powerhouse Document Model describes the state and operations of a document type.",author:{name:"Powerhouse",website:"https://www.powerhouse.inc/"},specifications:[{version:1,changeLog:[],modules:[{name:"header",operations:[{name:"SetModelName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelId",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelExtension",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetAuthorName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetAuthorWebsite",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"versioning",operations:[{name:"AddChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderChangeLogItems",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReleaseNewVersion",schema:null,id:"",description:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"module",operations:[{name:"AddModule",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModuleName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModuleDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteModule",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderModules",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation-error",operations:[{name:"AddOperationError",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorCode",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorTemplate",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperationError",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderOperationErrors",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation-example",operations:[{name:"AddOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderOperationExamples",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation",operations:[{name:"AddOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationSchema",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationTemplate",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationReducer",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"MoveOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderModuleOperations",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"state",operations:[{name:"SetStateSchema",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetInitialState",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"AddStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderStateExamples",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""}],state:{global:{schema:"",initialValue:`{
1
+ "use strict";var ut=Object.defineProperty;var mt=(t,e,o)=>e in t?ut(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var ue=(t,e,o)=>(mt(t,typeof e!="symbol"?e+"":e,o),o);const s=require("./object-08bd169a.js");require("json-stringify-deterministic");require("immer");require("jszip");require("crypto");require("fs");require("https");require("path");const r=require("zod"),Et=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),f={id:"powerhouse/document-model",name:"DocumentModel",extension:"phdm",description:"The Powerhouse Document Model describes the state and operations of a document type.",author:{name:"Powerhouse",website:"https://www.powerhouse.inc/"},specifications:[{version:1,changeLog:[],modules:[{name:"header",operations:[{name:"SetModelName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelId",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelExtension",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModelDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetAuthorName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetAuthorWebsite",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"versioning",operations:[{name:"AddChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteChangeLogItem",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderChangeLogItems",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReleaseNewVersion",schema:null,id:"",description:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"module",operations:[{name:"AddModule",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModuleName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetModuleDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteModule",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderModules",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation-error",operations:[{name:"AddOperationError",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorCode",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationErrorTemplate",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperationError",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderOperationErrors",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation-example",operations:[{name:"AddOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperationExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderOperationExamples",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"operation",operations:[{name:"AddOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationName",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationSchema",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationDescription",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationTemplate",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetOperationReducer",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"MoveOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteOperation",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderModuleOperations",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""},{name:"state",operations:[{name:"SetStateSchema",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"SetInitialState",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"AddStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"UpdateStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"DeleteStateExample",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"},{name:"ReorderStateExamples",id:"",description:"",schema:"",template:"",reducer:"",examples:[],errors:[],scope:"global"}],id:"",description:""}],state:{global:{schema:"",initialValue:`{
2
2
  "id": "",
3
3
  "name": "",
4
4
  "extension": "",
@@ -0,0 +1 @@
1
+ "use strict";const e=require("./object-08bd169a.js"),t=Object.freeze(Object.defineProperty({__proto__:null,createAction:e.createAction,createDocument:e.createDocument,createExtendedState:e.createExtendedState,createReducer:e.createReducer,createZip:e.createZip,getLocalFile:e.getLocalFile,getRemoteFile:e.getRemoteFile,hashDocument:e.hashDocument,hashKey:e.hashKey,isBaseAction:e.isBaseAction,loadFromFile:e.loadFromFile,loadFromInput:e.loadFromInput,readOnly:e.readOnly,replayDocument:e.replayDocument,replayOperations:e.replayOperations,saveToFile:e.saveToFile,saveToFileHandle:e.saveToFileHandle,sortOperations:e.sortOperations},Symbol.toStringTag,{value:"Module"})),o=Object.freeze(Object.defineProperty({__proto__:null,BaseDocument:e.BaseDocument,actions:e.BaseActions,applyMixins:e.applyMixins,baseReducer:e.baseReducer,utils:t,z:e.zod},Symbol.toStringTag,{value:"Module"}));exports.Document=o;exports.index=t;
@@ -1,14 +1,14 @@
1
1
  var dt = Object.defineProperty;
2
2
  var ut = (t, e, o) => e in t ? dt(t, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[e] = o;
3
3
  var le = (t, e, o) => (ut(t, typeof e != "symbol" ? e + "" : e, o), o);
4
- import { c as mt, i as Et, a as ht, b as Ot, s as gt, d as St, l as bt, e as ft, f as s, B as l, g as _t, h as It } from "./object-c32ea0a0.js";
4
+ import { c as mt, i as Et, a as ht, b as Ot, s as gt, d as St, l as bt, e as ft, f as s, B as l, g as _t, h as It } from "./object-773231ca.js";
5
5
  import "json-stringify-deterministic";
6
6
  import "immer";
7
+ import "jszip";
7
8
  import "crypto";
8
9
  import "fs";
9
10
  import "https";
10
11
  import "path";
11
- import "jszip";
12
12
  import { z as r } from "zod";
13
13
  const Tt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
14
14
  __proto__: null
@@ -0,0 +1,34 @@
1
+ import { f as e, b as a, a as s, c as t, j as o, k as r, m as n, n as l, o as c, i, l as u, e as d, r as p, p as m, q as y, s as b, d as _, t as g, B as F, h as O, g as f, u as D, z as h } from "./object-773231ca.js";
2
+ const j = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3
+ __proto__: null,
4
+ createAction: e,
5
+ createDocument: a,
6
+ createExtendedState: s,
7
+ createReducer: t,
8
+ createZip: o,
9
+ getLocalFile: r,
10
+ getRemoteFile: n,
11
+ hashDocument: l,
12
+ hashKey: c,
13
+ isBaseAction: i,
14
+ loadFromFile: u,
15
+ loadFromInput: d,
16
+ readOnly: p,
17
+ replayDocument: m,
18
+ replayOperations: y,
19
+ saveToFile: b,
20
+ saveToFileHandle: _,
21
+ sortOperations: g
22
+ }, Symbol.toStringTag, { value: "Module" })), S = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
23
+ __proto__: null,
24
+ BaseDocument: F,
25
+ actions: O,
26
+ applyMixins: f,
27
+ baseReducer: D,
28
+ utils: j,
29
+ z: h
30
+ }, Symbol.toStringTag, { value: "Module" }));
31
+ export {
32
+ S as D,
33
+ j as i
34
+ };
@@ -0,0 +1 @@
1
+ "use strict";var dt=Object.defineProperty;var xt=(t,e,i)=>e in t?dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var y=(t,e,i)=>(xt(t,typeof e!="symbol"?e+"":e,i),i);const gt=require("json-stringify-deterministic"),g=require("immer"),o=require("zod"),R=require("jszip"),ft=require("crypto"),O=require("fs"),ht=require("https"),bt=require("path"),L=t=>t!=null,vt=o.z.any().refine(t=>L(t)),U=o.z.enum(["LOAD_STATE"]),J=o.z.enum(["PRUNE"]),$=o.z.enum(["REDO"]),B=o.z.enum(["SET_NAME"]),C=o.z.enum(["UNDO"]);function yt(){return o.z.object({__typename:o.z.literal("Action").optional(),type:o.z.string()})}function Z(){return o.z.union([H(),W(),G(),Q(),V()])}function jt(){return o.z.object({__typename:o.z.literal("DocumentFile").optional(),data:o.z.string(),extension:o.z.string().nullable(),fileName:o.z.string().nullable(),mimeType:o.z.string()})}function H(){return o.z.object({input:o.z.lazy(()=>k()),type:U,scope:o.z.literal("global")})}function k(){return o.z.object({operations:o.z.number(),state:o.z.lazy(()=>K())})}function K(){return o.z.object({data:o.z.unknown().nullish(),name:o.z.string()})}function wt(){return o.z.object({__typename:o.z.literal("Operation").optional(),hash:o.z.string(),index:o.z.number(),timestamp:o.z.string().datetime(),type:o.z.string()})}function W(){return o.z.object({input:o.z.lazy(()=>E()),type:J,scope:o.z.literal("global")})}function E(){return o.z.object({end:o.z.number().nullish(),start:o.z.number().nullish()})}const A=o.z.number;function G(){return o.z.object({input:A(),type:$,scope:o.z.literal("global")})}const N=o.z.string;function Q(){return o.z.object({input:N(),type:B,scope:o.z.literal("global")})}function zt(){return o.z.object({__typename:o.z.literal("SetNameOperation").optional(),hash:o.z.string(),index:o.z.number(),input:o.z.string(),timestamp:o.z.string().datetime(),type:o.z.string()})}const T=o.z.number;function V(){return o.z.object({input:T(),type:C,scope:o.z.literal("global")})}const St=Object.freeze(Object.defineProperty({__proto__:null,ActionSchema:yt,BaseActionSchema:Z,DocumentFileSchema:jt,LoadStateActionInputSchema:k,LoadStateActionSchema:H,LoadStateActionStateInputSchema:K,Load_StateSchema:U,OperationSchema:wt,PruneActionInputSchema:E,PruneActionSchema:W,PruneSchema:J,RedoActionInputSchema:A,RedoActionSchema:G,RedoSchema:$,SetNameActionInputSchema:N,SetNameActionSchema:Q,SetNameOperationSchema:zt,Set_NameSchema:B,UndoActionInputSchema:T,UndoActionSchema:V,UndoSchema:C,definedNonNullAnySchema:vt,isDefinedNonNullAny:L},Symbol.toStringTag,{value:"Module"}));function Ot(t,e){return{...t,name:e}}function _t(t,e,i){const n=Math.min(e,t.revision),a=t.operations.global.slice(0,t.revision-n);return{...f(t.initialState,{global:a,local:t.operations.local},i),operations:t.operations,revision:t.revision-n}}function Dt(t,e,i){const n=t.operations.global.length-t.revision;if(!n)throw new Error("There is no UNDO operation to REDO");const a=e<n?e:n,s=t.operations.global.slice(0,t.revision+a);return{...f(t.initialState,{global:s,local:t.operations.local},i),operations:t.operations,revision:t.revision+a}}function kt(t,e,i,n){e=e||0,i=i||t.operations.global.length;const a=t.operations.global.slice(e,i),s=t.operations.global.slice(0,e),p=t.operations.global.slice(i),l=f(t.initialState,{global:s.concat(a),local:t.operations.local},n),{name:r,state:c}=l,m=s.length,u=s.length?s[s.length-1].timestamp:p.length?p[0].timestamp:new Date().toISOString();return f(t.initialState,{global:[...s,{...P({name:r,state:c},a.length),timestamp:u,index:m,hash:I({state:c},"global")},...p.map((z,S)=>({...z,index:m+S+1}))],local:t.operations.local},n)}function Et(t,e){return{...t,name:e.name,state:e.state??{global:{},local:{}}}}const X="SET_NAME",h="UNDO",b="REDO",v="PRUNE",Y="LOAD_STATE";function At(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function j(){this._types=Object.create(null),this._extensions=Object.create(null);for(let t=0;t<arguments.length;t++)this.define(arguments[t]);this.define=this.define.bind(this),this.getType=this.getType.bind(this),this.getExtension=this.getExtension.bind(this)}j.prototype.define=function(t,e){for(let i in t){let n=t[i].map(function(a){return a.toLowerCase()});i=i.toLowerCase();for(let a=0;a<n.length;a++){const s=n[a];if(s[0]!=="*"){if(!e&&s in this._types)throw new Error('Attempt to change mapping for "'+s+'" extension from "'+this._types[s]+'" to "'+i+'". Pass `force=true` to allow this, otherwise remove "'+s+'" from the list of extensions for "'+i+'".');this._types[s]=i}}if(e||!this._extensions[i]){const a=n[0];this._extensions[i]=a[0]!=="*"?a:a.substr(1)}}};j.prototype.getType=function(t){t=String(t);let e=t.replace(/^.*[/\\]/,"").toLowerCase(),i=e.replace(/^.*\./,"").toLowerCase(),n=e.length<t.length;return(i.length<e.length-1||!n)&&this._types[i]||null};j.prototype.getExtension=function(t){return t=/^\s*([^;\s]*)/.test(t)&&RegExp.$1,t&&this._extensions[t.toLowerCase()]||null};var Nt=j,Tt={"application/andrew-inset":["ez"],"application/applixware":["aw"],"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/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/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"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","mjs"],"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/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":["mp4s","m4p"],"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-signature":["asc","sig"],"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/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/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/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/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/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"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"],"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/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"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/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"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/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"]};let Ft=Nt;var qt=new Ft(Tt);const It=At(qt);function Mt(t,e,i){const n=bt.join(t,e);return O.mkdirSync(t,{recursive:!0}),new Promise((a,s)=>{try{O.writeFile(n,i,{},p=>{p?s(p):a(n)})}catch(p){s(p)}})}function tt(t){return O.readFileSync(t)}function Pt(t){return new Promise((e,i)=>{ht.get(t,n=>{const a=[],s=n.headers["content-type"];n.on("data",p=>{a.push(p)}),n.on("end",()=>{e({buffer:Buffer.concat(a),mimeType:s})})}).on("error",n=>{i(n)})})}const Rt=async t=>tt(t),w=(t,e="sha1")=>ft.createHash(e).update(t).digest("base64"),F=async t=>{const e=new R,{name:i,revision:n,documentType:a,created:s,lastModified:p}=t,l={name:i,revision:n,documentType:a,created:s,lastModified:p};return e.file("header.json",JSON.stringify(l,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(c=>{const{data:m,...u}=t.attachments[c];e.file(c,m,{base64:!0,createFolders:!0,comment:JSON.stringify(u)})}),e},et=async(t,e,i,n)=>{const s=await(await F(t)).generateAsync({type:"uint8array",streamFiles:!0}),p=n??t.name,l=`.${i}.zip`;return Mt(e,p.endsWith(l)?p:`${p}${l}`,s)},Lt=async(t,e)=>{const n=await(await F(t)).generateAsync({type:"blob"}),a=await e.createWritable();await a.write(n),await a.close()},_=async(t,e)=>{const i=tt(t);return it(i,e)},it=async(t,e)=>{const i=new R;return await i.loadAsync(t),Ut(i,e)};async function Ut(t,e){const i=t.file("state.json");if(!i)throw new Error("Initial state not found");const n=await i.async("string"),a=JSON.parse(n),s=t.file("header.json");let p;s&&(p=JSON.parse(await s.async("string")));const l=t.file("operations.json");if(!l)throw new Error("Operations history not found");const r=JSON.parse(await l.async("string"));let c=M(a,r,e,void 0,p);return p&&(c={...c,...p}),c}function at(t){const e=t.replace(/^.*\./,"")||void 0,i=t.replace(/^.*[/\\]/,"")||void 0;return{extension:e,fileName:i}}async function Jt(t){const{buffer:e,mimeType:i="application/octet-stream"}=await Pt(t),n=at(t),a=e.toString("base64");return{data:a,hash:w(a),mimeType:i,...n}}async function $t(t){const e=await Rt(t),i=It.getType(t)||"application/octet-stream",n=at(t),a=e.toString("base64");return{data:a,hash:w(a),mimeType:i,...n}}function Bt(t,e){return[h,b,v].includes(e.type)?t.revision:t.revision+1}function Ct(t,e){return{...t,revision:Bt(t,e),lastModified:new Date().toISOString()}}function Zt(t,e){if([h,b,v].includes(e.type))return t;const i=t.operations.global.slice(0,t.revision),n=e.scope||"global",a=n==="global"?i:t.operations[n];return a.push({...e,index:a.length,timestamp:new Date().toISOString(),hash:"",scope:n}),{...t,operations:{...t.operations,[n]:a}}}function Ht(t,e){let i=Zt(t,e);return(!e.scope||e.scope==="global")&&(i=Ct(i,e)),i}function Kt(t,e,i){switch(Z().parse(e),e.type){case X:return Ot(t,e.input);case h:return _t(t,e.input,i);case b:return Dt(t,e.input,i);case v:return kt(t,e.input.start,e.input.end,i);case Y:return Et(t,e.input.state);default:return t}}function q(t,e,i,n){let a=t;return D(e)&&(a=Kt(a,e,i)),a=Ht(a,e),a=g.produce(a,s=>{const p=i(s.state,e,n);if(p)return g.castDraft({...a,state:p})}),g.produce(a,s=>{if([h,b,v].includes(e.type))return s;const p=e.scope||"global";s.operations[p][s.operations[p].length-1].hash=I(s,p),!D(e)&&e.attachments&&e.attachments.forEach(l=>{const{hash:r,...c}=l;s.attachments[r]={...c}})})}function D(t){return[X,h,b,v,Y].includes(t.type)}function d(t,e,i,n,a="global"){if(!t)throw new Error("Empty action type");if(typeof t!="string")throw new Error(`Invalid action type: ${t}`);const s={type:t,input:e,scope:a};i&&(s.attachments=i);try{n==null||n().parse(s.input)}catch(p){throw new Error(`Invalid action input: ${p}`)}return s}function nt(t,e=q){return(i,n,a)=>e(i,n,t,a)}const ot=(t,e)=>({name:"",documentType:"",revision: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:{}}}),st=(t,e)=>{const i=ot(t,e);return{...i,initialState:i,operations:{global:[],local:[]}}},I=(t,e="global")=>w(gt(t.state[e])),Wt=(t,e=1e3)=>{const i=Math.random()*e;return w(`${(t??new Date).toISOString()}${i}`)};function x(t){return g.castImmutable(g.freeze(t,!0))}function pt(t){return Object.values(t).flatMap(e=>e).sort((e,i)=>new Date(e.timestamp).getTime()-new Date(i.timestamp).getTime())}function f(t,e,i,n,a,s=q){const p=nt(i,s);return M(t,e,p,n,a)}function M(t,e,i,n,a){const s=st(t),p={...e,global:e.global.slice(0,a==null?void 0:a.revision)},l=pt(p).reduce((c,m)=>i(c,m,n),s),r=Object.keys(l.operations).reduce((c,m)=>{const u=m,z=u==="global"&&a&&a.revision<e.global.length?e.global.slice(a==null?void 0:a.revision):[];return{...c,[u]:[...l.operations[u].map((S,ut)=>({...S,timestamp:e[u][ut].timestamp})),...z]}},{global:[],local:[]});return{...l,operations:r}}const lt=t=>d("SET_NAME",t,void 0,N),ct=(t=1)=>d("UNDO",t,void 0,T),rt=(t=1)=>d("REDO",t,void 0,A),mt=(t,e)=>d("PRUNE",{start:t,end:e},void 0,E),P=(t,e)=>d("LOAD_STATE",{state:t,operations:e},void 0,k),Gt=Object.freeze(Object.defineProperty({__proto__:null,loadState:P,prune:mt,redo:rt,setName:lt,undo:ct},Symbol.toStringTag,{value:"Module"}));class Qt{constructor(e,i,n){y(this,"_document");y(this,"_reducer");y(this,"_signalDispatch");this._reducer=e,this._document=i,this._signalDispatch=n}dispatch(e){return this._document=this._reducer(this._document,e,this._signalDispatch),this}saveToFile(e,i,n){return et(this._document,e,i,n)}async loadFromFile(e){this._document=await _(e,this._reducer)}static async stateFromFile(e,i){return await _(e,i)}get state(){return x(this._document.state)}get operations(){return x(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}get initialState(){return x(this._document.initialState)}toDocument(){return x(this._document)}getAttachment(e){return this._document.attachments[e]}setName(e){return this.dispatch(lt(e)),this}undo(e){return this.dispatch(ct(e)),this}redo(e){return this.dispatch(rt(e)),this}prune(e,i){return this.dispatch(mt(e,i)),this}loadState(e,i){return this.dispatch(P(e,i)),this}}function Vt(t,e){e.forEach(i=>{Object.getOwnPropertyNames(i.prototype).forEach(n=>{Object.defineProperty(t.prototype,n,Object.getOwnPropertyDescriptor(i.prototype,n)||Object.create(null))})})}exports.BaseActions=Gt;exports.BaseDocument=Qt;exports.applyMixins=Vt;exports.baseReducer=q;exports.createAction=d;exports.createDocument=st;exports.createExtendedState=ot;exports.createReducer=nt;exports.createZip=F;exports.getLocalFile=$t;exports.getRemoteFile=Jt;exports.hashDocument=I;exports.hashKey=Wt;exports.isBaseAction=D;exports.loadFromFile=_;exports.loadFromInput=it;exports.readOnly=x;exports.replayDocument=M;exports.replayOperations=f;exports.saveToFile=et;exports.saveToFileHandle=Lt;exports.sortOperations=pt;exports.zod=St;