@ternent/concord 0.2.5 → 0.2.7

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.
@@ -1,16 +1,19 @@
1
1
  import type { LedgerAppendInput, LedgerArmourContract, LedgerContainer, LedgerInstance, LedgerProtocolContract, LedgerReplayEntry, LedgerSealContract, LedgerStorageAdapter, LedgerVerificationResult } from "@ternent/ledger";
2
+ import type { SerializedIdentity } from "@ternent/identity";
2
3
  export type ConcordCreateParams = {
3
4
  metadata?: Record<string, unknown>;
4
5
  };
5
6
  export type ConcordReplayOptions = {
6
7
  verify?: boolean;
7
8
  decrypt?: boolean;
9
+ fromEntryId?: string;
10
+ toEntryId?: string;
8
11
  };
9
12
  export type ConcordState = {
10
13
  ready: boolean;
11
14
  integrityValid: boolean;
12
15
  stagedCount: number;
13
- plugins: Record<string, unknown>;
16
+ replay: Record<string, unknown>;
14
17
  verification: LedgerVerificationResult | null;
15
18
  };
16
19
  export type ConcordCommandResult = {
@@ -28,53 +31,51 @@ export type ConcordCommitResult = {
28
31
  export type ConcordRuntimePolicy = {
29
32
  autoCommit?: boolean;
30
33
  };
31
- export type ConcordIdentityContext = {
32
- author: string;
33
- signer?: unknown;
34
- decryptor?: unknown;
35
- };
36
34
  export type ConcordCommandContext = {
37
35
  now(): string;
38
- identity: ConcordIdentityContext;
39
- getPluginState<T = unknown>(pluginId: string): T;
40
- };
41
- export type ConcordProjectionContext = {
36
+ identity: SerializedIdentity;
37
+ getReplayState<T = unknown>(pluginId: string): T;
38
+ };
39
+ export type ConcordReplayPhase = "reset" | "beginReplay" | "applyEntry" | "endReplay";
40
+ export type ConcordReplayMetadata = {
41
+ phase: ConcordReplayPhase;
42
+ entryIndex?: number;
43
+ entryCount: number;
44
+ fromEntryId?: string;
45
+ toEntryId?: string;
46
+ isPartial: boolean;
47
+ };
48
+ export type ConcordReplayContext<TState = unknown> = {
49
+ pluginId: string;
42
50
  decryptAvailable: boolean;
51
+ replay: ConcordReplayMetadata;
52
+ getState(): TState;
53
+ setState(next: TState | ((prev: TState) => TState)): void;
43
54
  };
44
- export type ConcordPlugin<PState = unknown> = {
55
+ export type ConcordCommandHandler = (ctx: ConcordCommandContext, input: unknown) => Promise<LedgerAppendInput | LedgerAppendInput[]> | LedgerAppendInput | LedgerAppendInput[];
56
+ export type ConcordReplayPlugin<TState = unknown> = {
45
57
  id: string;
46
- initialState(): PState;
47
- commands?: Record<string, (ctx: ConcordCommandContext, input: unknown) => Promise<LedgerAppendInput | LedgerAppendInput[]> | LedgerAppendInput | LedgerAppendInput[]>;
48
- project(state: PState, entry: LedgerReplayEntry, ctx: ConcordProjectionContext): PState;
49
- selectors?: Record<string, (state: PState) => unknown>;
50
- };
51
- export type ConcordReplayAppView = {
52
- getState(): Readonly<ConcordState>;
53
- getPluginState<T = unknown>(pluginId: string): T;
54
- };
55
- export type ConcordProjectionReplayContext = {
56
- app: ConcordReplayAppView;
57
- };
58
- export type ConcordProjectionTarget = {
59
- name: string;
60
- reset(): Promise<void> | void;
61
- beginReplay?(ctx: ConcordProjectionReplayContext): Promise<void> | void;
62
- applyEntry(entry: LedgerReplayEntry, ctx: ConcordProjectionReplayContext): Promise<void> | void;
63
- endReplay?(ctx: ConcordProjectionReplayContext): Promise<void> | void;
58
+ initialState?: () => TState;
59
+ commands?: Record<string, ConcordCommandHandler>;
60
+ reset?: (ctx: ConcordReplayContext<TState>) => Promise<void> | void;
61
+ beginReplay?: (ctx: ConcordReplayContext<TState>) => Promise<void> | void;
62
+ applyEntry?: (entry: LedgerReplayEntry, ctx: ConcordReplayContext<TState>) => Promise<void> | void;
63
+ endReplay?: (ctx: ConcordReplayContext<TState>) => Promise<void> | void;
64
64
  destroy?(): Promise<void> | void;
65
+ selectors?: Record<string, (state: TState) => unknown>;
65
66
  };
66
- export type CreateConcordAppInput = {
67
- identity: ConcordIdentityContext;
68
- storage: LedgerStorageAdapter;
69
- plugins: ConcordPlugin[];
67
+ export type ConcordAppOptions = {
68
+ identity: SerializedIdentity;
69
+ storage?: LedgerStorageAdapter;
70
+ plugins: ConcordReplayPlugin[];
70
71
  now?: () => string;
71
72
  protocol?: LedgerProtocolContract;
72
73
  seal?: LedgerSealContract;
73
74
  armour?: LedgerArmourContract;
74
- ledger?: LedgerInstance<unknown>;
75
- projectionTargets?: ConcordProjectionTarget[];
75
+ ledger?: LedgerInstance<LedgerReplayEntry[]>;
76
76
  policy?: ConcordRuntimePolicy;
77
77
  };
78
+ export type CreateConcordAppInput = ConcordAppOptions;
78
79
  export type ConcordApp = {
79
80
  create(params?: ConcordCreateParams): Promise<void>;
80
81
  load(): Promise<void>;
@@ -86,7 +87,7 @@ export type ConcordApp = {
86
87
  exportLedger(): Promise<LedgerContainer>;
87
88
  importLedger(container: LedgerContainer): Promise<void>;
88
89
  getState(): Readonly<ConcordState>;
89
- getPluginState<T = unknown>(pluginId: string): T;
90
+ getReplayState<T = unknown>(pluginId: string): T;
90
91
  subscribe(listener: (state: Readonly<ConcordState>) => void): () => void;
91
92
  destroy(): Promise<void>;
92
93
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@ternent/concord",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Command-driven developer runtime for building non-custodial apps on @ternent/ledger",
5
5
  "license": "ISC",
6
6
  "type": "module",
7
+ "sideEffects": false,
7
8
  "files": [
8
9
  "dist",
9
10
  "README.md",
@@ -12,18 +13,23 @@
12
13
  "publishConfig": {
13
14
  "access": "public"
14
15
  },
15
- "main": "dist/index.umd.js",
16
- "module": "dist/index.es.js",
16
+ "main": "dist/index.js",
17
+ "module": "dist/index.js",
17
18
  "types": "dist/index.d.ts",
18
19
  "exports": {
19
20
  ".": {
20
21
  "types": "./dist/index.d.ts",
21
- "import": "./dist/index.es.js",
22
- "default": "./dist/index.es.js"
22
+ "import": "./dist/index.js",
23
+ "default": "./dist/index.js"
24
+ },
25
+ "./browser": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/browser.js",
28
+ "default": "./dist/browser.js"
23
29
  }
24
30
  },
25
31
  "dependencies": {
26
- "@ternent/ledger": "0.1.5"
32
+ "@ternent/ledger": "0.1.6"
27
33
  },
28
34
  "devDependencies": {
29
35
  "@types/node": "^24.3.0",
@@ -31,13 +37,15 @@
31
37
  "vite": "^4.5.3",
32
38
  "vite-plugin-dts": "^1.7.3",
33
39
  "vitest": "^1.6.0",
34
- "@ternent/armour": "0.1.5",
35
40
  "@ternent/identity": "0.3.1",
36
41
  "@ternent/rage": "0.1.3",
37
- "@ternent/seal-cli": "0.3.7"
42
+ "@ternent/armour": "0.1.5",
43
+ "@ternent/seal-cli": "0.3.8"
38
44
  },
39
45
  "scripts": {
40
- "build": "vite build",
46
+ "dev": "vite build --watch",
47
+ "build:browser": "vite build -c vite.browser.config.ts",
48
+ "build": "vite build && vite build -c vite.browser.config.ts",
41
49
  "test": "pnpm --filter @ternent/rage build && vitest run"
42
50
  }
43
51
  }
@@ -1,3 +0,0 @@
1
- import type { ConcordApp, CreateConcordAppInput } from "./types.js";
2
- export declare function createConcordApp(input: CreateConcordAppInput): Promise<ConcordApp>;
3
- //# sourceMappingURL=app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,UAAU,EAUV,qBAAqB,EACtB,MAAM,YAAY,CAAC;AA0GpB,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,UAAU,CAAC,CA+arB"}
@@ -1,4 +0,0 @@
1
- export { createConcordApp } from "./app.js";
2
- export { ConcordBoundaryError } from "./errors.js";
3
- export type { ConcordApp, ConcordCommandContext, ConcordCommitInput, ConcordCommitResult, ConcordCommandResult, ConcordCreateParams, ConcordIdentityContext, ConcordPlugin, ConcordProjectionContext, ConcordProjectionReplayContext, ConcordProjectionTarget, ConcordReplayAppView, ConcordReplayOptions, ConcordRuntimePolicy, ConcordState, CreateConcordAppInput } from "./types.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACtB,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}