@vielzeug/ledger 2.0.1 → 2.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.
package/dist/types.d.ts CHANGED
@@ -1,37 +1,40 @@
1
1
  import type { Readable } from '@vielzeug/ripple';
2
- export interface Command<TData = unknown> {
3
- data?: TData;
4
- execute: (signal?: AbortSignal) => Promise<void> | void;
5
- label?: string;
6
- rollback?: (signal?: AbortSignal) => Promise<void> | void;
2
+ export interface CommandContext {
3
+ readonly signal: AbortSignal;
7
4
  }
8
- export interface CommandMeta<TData = unknown> {
9
- data: TData | undefined;
10
- label: string | undefined;
5
+ export interface ReversibleCommand<TMeta = undefined> {
6
+ readonly apply: (context: CommandContext) => Promise<void> | void;
7
+ readonly label?: string;
8
+ readonly meta?: TMeta;
9
+ readonly revert: (context: CommandContext) => Promise<void> | void;
10
+ }
11
+ export interface HistoryEntry<TMeta = undefined> {
12
+ readonly label: string | undefined;
13
+ readonly meta: TMeta | undefined;
11
14
  }
12
- /** Options accepted by `do()`/`undo()`/`redo()`. */
13
15
  export interface LedgerCallOptions {
14
- /** Merged with the ledger's own `disposalSignal` and passed to `execute`/`rollback`. */
15
16
  signal?: AbortSignal;
16
17
  }
17
- export interface LedgerOptions<TData = unknown> {
18
+ export interface LedgerOptions {
18
19
  maxHistory?: number;
19
- onRollbackError?: (err: unknown, meta: CommandMeta<TData>) => void;
20
20
  }
21
- export interface Ledger<TData = unknown> {
22
- readonly canRedo: Readable<boolean>;
23
- readonly canUndo: Readable<boolean>;
24
- readonly historySize: Readable<number>;
25
- readonly historySnapshot: Readable<readonly CommandMeta<TData>[]>;
26
- readonly isProcessing: Readable<boolean>;
27
- readonly pendingCount: Readable<number>;
21
+ export interface LedgerState<TMeta = undefined> {
22
+ readonly accepting: boolean;
23
+ readonly queued: number;
24
+ readonly redo: readonly HistoryEntry<TMeta>[];
25
+ readonly running: number;
26
+ readonly undo: readonly HistoryEntry<TMeta>[];
27
+ }
28
+ export interface Ledger<TMeta = undefined> {
28
29
  clear(): Promise<void>;
29
30
  readonly disposalSignal: AbortSignal;
30
31
  dispose(): void;
31
32
  readonly disposed: boolean;
32
- do(command: Command<TData>, options?: LedgerCallOptions): Promise<void>;
33
+ do(command: ReversibleCommand<TMeta>, options?: LedgerCallOptions): Promise<void>;
33
34
  redo(options?: LedgerCallOptions): Promise<void>;
35
+ readonly state: Readable<LedgerState<TMeta>>;
34
36
  undo(options?: LedgerCallOptions): Promise<void>;
37
+ whenIdle(): Promise<void>;
35
38
  [Symbol.dispose](): void;
36
39
  }
37
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,OAAO,CAAC,KAAK,GAAG,OAAO;IACtC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,OAAO;IAC1C,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,MAAM,CAAC,KAAK,GAAG,OAAO;IACrC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,SAAS;IAClD,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,YAAY,CAAC,KAAK,GAAG,SAAS;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,SAAS;IAC5C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,MAAM,CAAC,KAAK,GAAG,SAAS;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vielzeug/ledger",
3
- "version": "2.0.1",
4
- "description": "Async undo/redo command history with Ripple signals for reactive canUndo/canRedo state",
3
+ "version": "2.1.0",
4
+ "description": "Serialized reversible command history with atomic Ripple state and cancellation ownership",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
package/dist/_dev.cjs DELETED
@@ -1,2 +0,0 @@
1
- function e(e){}exports.warn=e;
2
- //# sourceMappingURL=_dev.cjs.map
package/dist/_dev.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dev.cjs","names":[],"sources":["../src/_dev.ts"],"sourcesContent":["const isDev = !(globalThis as { __LEDGER_PROD__?: boolean }).__LEDGER_PROD__;\n\n/** @internal @security Messages may include user data. */\nexport function warn(msg: string): void {\n if (isDev) console.warn(`[@vielzeug/ledger] ${msg}`);\n}\n\n/** @internal — Run fn only in dev builds. Use when dev-only logic goes beyond a single warn() / error() call. */\nexport function devOnly(fn: () => void): void {\n if (isDev) fn();\n}\n"],"mappings":"AAGA,SAAgB,EAAK,EAAmB,CAExC"}
package/dist/_dev.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=_dev.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dev.d.ts","sourceRoot":"","sources":["../src/_dev.ts"],"names":[],"mappings":""}
package/dist/_dev.js DELETED
@@ -1,6 +0,0 @@
1
- //#region src/_dev.ts
2
- function e(e) {}
3
- //#endregion
4
- export { e as warn };
5
-
6
- //# sourceMappingURL=_dev.js.map
package/dist/_dev.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"_dev.js","names":[],"sources":["../src/_dev.ts"],"sourcesContent":["const isDev = !(globalThis as { __LEDGER_PROD__?: boolean }).__LEDGER_PROD__;\n\n/** @internal @security Messages may include user data. */\nexport function warn(msg: string): void {\n if (isDev) console.warn(`[@vielzeug/ledger] ${msg}`);\n}\n\n/** @internal — Run fn only in dev builds. Use when dev-only logic goes beyond a single warn() / error() call. */\nexport function devOnly(fn: () => void): void {\n if (isDev) fn();\n}\n"],"mappings":";AAGA,SAAgB,EAAK,GAAmB,CAExC"}