@voyantjs/action-ledger 0.52.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canary.d.ts +17 -0
- package/dist/canary.d.ts.map +1 -0
- package/dist/canary.js +77 -0
- package/dist/capability.d.ts +73 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +206 -0
- package/dist/fingerprint.d.ts +26 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +55 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/request-context.d.ts +136 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +237 -0
- package/dist/route-schemas.d.ts +739 -0
- package/dist/route-schemas.d.ts.map +1 -0
- package/dist/route-schemas.js +427 -0
- package/dist/routes.d.ts +1596 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +271 -0
- package/dist/schema.d.ts +1759 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +237 -0
- package/dist/service.d.ts +317 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +1025 -0
- package/dist/timeline.d.ts +67 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +79 -0
- package/package.json +105 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/routes.js
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { parseJsonBody, parseQuery } from "@voyantjs/hono";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import { actionApprovalListQuerySchema, actionDelegationListQuerySchema, actionLedgerEntryListQuerySchema, actionLedgerRelayOutboxListQuerySchema, decideActionApprovalBodySchema, recordActionLedgerReversalBodySchema, requestActionApprovalBodySchema, } from "./route-schemas.js";
|
|
4
|
+
import { ActionApprovalDecisionConflictError, ActionLedgerReversalTargetError, actionLedgerService, } from "./service.js";
|
|
5
|
+
function serializeDate(value) {
|
|
6
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
7
|
+
if (Number.isNaN(date.getTime())) {
|
|
8
|
+
throw new Error("Action ledger entry timestamp must be a valid date");
|
|
9
|
+
}
|
|
10
|
+
return date.toISOString();
|
|
11
|
+
}
|
|
12
|
+
function serializeNullableDate(value) {
|
|
13
|
+
if (value === null)
|
|
14
|
+
return null;
|
|
15
|
+
return serializeDate(value);
|
|
16
|
+
}
|
|
17
|
+
function serializeActionLedgerEntry(entry) {
|
|
18
|
+
return {
|
|
19
|
+
...entry,
|
|
20
|
+
occurredAt: serializeDate(entry.occurredAt),
|
|
21
|
+
createdAt: serializeDate(entry.createdAt),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function serializeActionLedgerPayload(payload) {
|
|
25
|
+
return {
|
|
26
|
+
...payload,
|
|
27
|
+
createdAt: serializeDate(payload.createdAt),
|
|
28
|
+
expiresAt: serializeNullableDate(payload.expiresAt),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function serializeActionLedgerRelayOutbox(row) {
|
|
32
|
+
return {
|
|
33
|
+
...row,
|
|
34
|
+
createdAt: serializeDate(row.createdAt),
|
|
35
|
+
nextRetryAt: serializeNullableDate(row.nextRetryAt),
|
|
36
|
+
processedAt: serializeNullableDate(row.processedAt),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function serializeActionApproval(row) {
|
|
40
|
+
return {
|
|
41
|
+
...row,
|
|
42
|
+
createdAt: serializeDate(row.createdAt),
|
|
43
|
+
decidedAt: serializeNullableDate(row.decidedAt),
|
|
44
|
+
expiresAt: serializeNullableDate(row.expiresAt),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function serializeActionApprovalDetail(result) {
|
|
48
|
+
return {
|
|
49
|
+
...serializeActionApproval(result.approval),
|
|
50
|
+
requestedAction: result.requestedAction
|
|
51
|
+
? serializeActionLedgerEntryDetail(result.requestedAction)
|
|
52
|
+
: null,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function serializeActionDelegation(row) {
|
|
56
|
+
return {
|
|
57
|
+
...row,
|
|
58
|
+
createdAt: serializeDate(row.createdAt),
|
|
59
|
+
expiresAt: serializeNullableDate(row.expiresAt),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function serializeActionDelegationDetail(result) {
|
|
63
|
+
return serializeActionDelegation(result.delegation);
|
|
64
|
+
}
|
|
65
|
+
function serializeActionLedgerEntryDetail(result) {
|
|
66
|
+
return {
|
|
67
|
+
...serializeActionLedgerEntry(result.entry),
|
|
68
|
+
mutationDetail: result.mutationDetail,
|
|
69
|
+
sensitiveReadDetail: result.sensitiveReadDetail,
|
|
70
|
+
payloads: result.payloads.map(serializeActionLedgerPayload),
|
|
71
|
+
relayOutbox: result.relayOutbox.map(serializeActionLedgerRelayOutbox),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function listActionLedgerEntries(c) {
|
|
75
|
+
const query = parseQuery(c, actionLedgerEntryListQuerySchema);
|
|
76
|
+
const result = await actionLedgerService.listEntries(c.get("db"), query);
|
|
77
|
+
return c.json({
|
|
78
|
+
data: result.entries.map(serializeActionLedgerEntry),
|
|
79
|
+
pageInfo: {
|
|
80
|
+
nextCursor: result.nextCursor,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async function listActionLedgerRelayOutbox(c) {
|
|
85
|
+
const query = parseQuery(c, actionLedgerRelayOutboxListQuerySchema);
|
|
86
|
+
const result = await actionLedgerService.listRelayOutbox(c.get("db"), query);
|
|
87
|
+
return c.json({
|
|
88
|
+
data: result.rows.map(serializeActionLedgerRelayOutbox),
|
|
89
|
+
pageInfo: {
|
|
90
|
+
nextCursor: result.nextCursor,
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async function listActionApprovals(c) {
|
|
95
|
+
const query = parseQuery(c, actionApprovalListQuerySchema);
|
|
96
|
+
const result = await actionLedgerService.listApprovals(c.get("db"), query);
|
|
97
|
+
return c.json({
|
|
98
|
+
data: result.approvals.map(serializeActionApproval),
|
|
99
|
+
pageInfo: {
|
|
100
|
+
nextCursor: result.nextCursor,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async function listActionDelegations(c) {
|
|
105
|
+
const query = parseQuery(c, actionDelegationListQuerySchema);
|
|
106
|
+
const result = await actionLedgerService.listDelegations(c.get("db"), query);
|
|
107
|
+
return c.json({
|
|
108
|
+
data: result.delegations.map(serializeActionDelegation),
|
|
109
|
+
pageInfo: {
|
|
110
|
+
nextCursor: result.nextCursor,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async function requestActionApproval(c) {
|
|
115
|
+
const body = await parseJsonBody(c, requestActionApprovalBodySchema);
|
|
116
|
+
const result = await actionLedgerService.requestApproval(c.get("db"), body);
|
|
117
|
+
return c.json({
|
|
118
|
+
data: {
|
|
119
|
+
requestedAction: serializeActionLedgerEntry(result.requestedAction),
|
|
120
|
+
approval: serializeActionApproval(result.approval),
|
|
121
|
+
replayed: result.replayed,
|
|
122
|
+
},
|
|
123
|
+
}, 201);
|
|
124
|
+
}
|
|
125
|
+
async function decideActionApproval(c) {
|
|
126
|
+
const id = c.req.param("id");
|
|
127
|
+
if (!id) {
|
|
128
|
+
return c.json({ error: "Action approval not found" }, 404);
|
|
129
|
+
}
|
|
130
|
+
const body = await parseJsonBody(c, decideActionApprovalBodySchema);
|
|
131
|
+
try {
|
|
132
|
+
const result = await actionLedgerService.decideApproval(c.get("db"), {
|
|
133
|
+
id,
|
|
134
|
+
...body,
|
|
135
|
+
});
|
|
136
|
+
if (!result) {
|
|
137
|
+
return c.json({ error: "Action approval not found" }, 404);
|
|
138
|
+
}
|
|
139
|
+
return c.json({
|
|
140
|
+
data: {
|
|
141
|
+
approval: serializeActionApproval(result.approval),
|
|
142
|
+
decisionAction: serializeActionLedgerEntry(result.decisionAction),
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (error instanceof ActionApprovalDecisionConflictError) {
|
|
148
|
+
return c.json({
|
|
149
|
+
error: error.message,
|
|
150
|
+
approvalId: error.approvalId,
|
|
151
|
+
currentStatus: error.currentStatus,
|
|
152
|
+
}, 409);
|
|
153
|
+
}
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function recordActionLedgerReversal(c) {
|
|
158
|
+
const id = c.req.param("id");
|
|
159
|
+
if (!id) {
|
|
160
|
+
return c.json({ error: "Action ledger entry not found" }, 404);
|
|
161
|
+
}
|
|
162
|
+
const body = await parseJsonBody(c, recordActionLedgerReversalBodySchema);
|
|
163
|
+
try {
|
|
164
|
+
const result = await actionLedgerService.recordReversal(c.get("db"), {
|
|
165
|
+
originalActionId: id,
|
|
166
|
+
reversalAction: {
|
|
167
|
+
...body.reversalAction,
|
|
168
|
+
mutationDetail: body.reversalAction.mutationDetail
|
|
169
|
+
? {
|
|
170
|
+
...body.reversalAction.mutationDetail,
|
|
171
|
+
reversalStateProjection: null,
|
|
172
|
+
reversalOutcomeProjection: null,
|
|
173
|
+
reversedByActionIdProjection: null,
|
|
174
|
+
}
|
|
175
|
+
: undefined,
|
|
176
|
+
},
|
|
177
|
+
projection: body.projection,
|
|
178
|
+
});
|
|
179
|
+
if (!result) {
|
|
180
|
+
return c.json({ error: "Action ledger entry not found" }, 404);
|
|
181
|
+
}
|
|
182
|
+
return c.json({
|
|
183
|
+
data: {
|
|
184
|
+
originalAction: serializeActionLedgerEntry(result.originalAction),
|
|
185
|
+
reversalAction: serializeActionLedgerEntry(result.reversalAction),
|
|
186
|
+
replayed: result.replayed,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (error instanceof ActionLedgerReversalTargetError) {
|
|
192
|
+
return c.json({
|
|
193
|
+
error: "Action ledger entry cannot be reversed",
|
|
194
|
+
reason: error.reason,
|
|
195
|
+
}, 409);
|
|
196
|
+
}
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async function getActionApproval(c) {
|
|
201
|
+
const id = c.req.param("id");
|
|
202
|
+
if (!id) {
|
|
203
|
+
return c.json({ error: "Action approval not found" }, 404);
|
|
204
|
+
}
|
|
205
|
+
const result = await actionLedgerService.getApproval(c.get("db"), id);
|
|
206
|
+
if (!result) {
|
|
207
|
+
return c.json({ error: "Action approval not found" }, 404);
|
|
208
|
+
}
|
|
209
|
+
return c.json({
|
|
210
|
+
data: serializeActionApprovalDetail(result),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
async function getActionDelegation(c) {
|
|
214
|
+
const id = c.req.param("id");
|
|
215
|
+
if (!id) {
|
|
216
|
+
return c.json({ error: "Action delegation not found" }, 404);
|
|
217
|
+
}
|
|
218
|
+
const result = await actionLedgerService.getDelegation(c.get("db"), id);
|
|
219
|
+
if (!result) {
|
|
220
|
+
return c.json({ error: "Action delegation not found" }, 404);
|
|
221
|
+
}
|
|
222
|
+
return c.json({
|
|
223
|
+
data: serializeActionDelegationDetail(result),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
async function getActionLedgerEntry(c) {
|
|
227
|
+
const id = c.req.param("id");
|
|
228
|
+
if (!id) {
|
|
229
|
+
return c.json({ error: "Action ledger entry not found" }, 404);
|
|
230
|
+
}
|
|
231
|
+
const result = await actionLedgerService.getEntry(c.get("db"), id);
|
|
232
|
+
if (!result) {
|
|
233
|
+
return c.json({ error: "Action ledger entry not found" }, 404);
|
|
234
|
+
}
|
|
235
|
+
return c.json({
|
|
236
|
+
data: serializeActionLedgerEntryDetail(result),
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
export const actionLedgerAdminRoutes = new Hono()
|
|
240
|
+
.get("/", listActionLedgerEntries)
|
|
241
|
+
.get("/entries", listActionLedgerEntries)
|
|
242
|
+
.get("/approvals", listActionApprovals)
|
|
243
|
+
.post("/approvals/request", requestActionApproval)
|
|
244
|
+
.get("/approvals/:id", getActionApproval)
|
|
245
|
+
.post("/approvals/:id/decide", decideActionApproval)
|
|
246
|
+
.get("/delegations", listActionDelegations)
|
|
247
|
+
.get("/delegations/:id", getActionDelegation)
|
|
248
|
+
.get("/relay-outbox", listActionLedgerRelayOutbox)
|
|
249
|
+
.post("/entries/:id/reversals", recordActionLedgerReversal)
|
|
250
|
+
.get("/entries/:id", getActionLedgerEntry);
|
|
251
|
+
export const actionLedgerModule = {
|
|
252
|
+
name: "action-ledger",
|
|
253
|
+
};
|
|
254
|
+
export const actionLedgerHonoModule = {
|
|
255
|
+
module: actionLedgerModule,
|
|
256
|
+
adminRoutes: actionLedgerAdminRoutes,
|
|
257
|
+
};
|
|
258
|
+
export const __test__ = {
|
|
259
|
+
actionLedgerEntryListQuerySchema,
|
|
260
|
+
actionApprovalListQuerySchema,
|
|
261
|
+
decideActionApprovalBodySchema,
|
|
262
|
+
recordActionLedgerReversalBodySchema,
|
|
263
|
+
requestActionApprovalBodySchema,
|
|
264
|
+
actionDelegationListQuerySchema,
|
|
265
|
+
actionLedgerRelayOutboxListQuerySchema,
|
|
266
|
+
serializeActionApproval,
|
|
267
|
+
serializeActionApprovalDetail,
|
|
268
|
+
serializeActionDelegation,
|
|
269
|
+
serializeActionLedgerEntry,
|
|
270
|
+
serializeActionLedgerEntryDetail,
|
|
271
|
+
};
|