@forumone/throughline 1.0.1 → 1.0.2-pr-277-e10eb12
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/CHANGELOG.md +10 -0
- package/dist/approvals/endpoints/action.d.ts.map +1 -1
- package/dist/approvals/endpoints/action.js +16 -5
- package/dist/approvals/endpoints/action.js.map +1 -1
- package/dist/approvals/tools/request-approval.d.ts.map +1 -1
- package/dist/approvals/tools/request-approval.js +7 -2
- package/dist/approvals/tools/request-approval.js.map +1 -1
- package/dist/approvals/tools/respond-to-approval.d.ts.map +1 -1
- package/dist/approvals/tools/respond-to-approval.js +5 -3
- package/dist/approvals/tools/respond-to-approval.js.map +1 -1
- package/dist/publishing/events.d.ts +5 -8
- package/dist/publishing/events.d.ts.map +1 -1
- package/dist/publishing/events.js +7 -24
- package/dist/publishing/events.js.map +1 -1
- package/dist/utils/send-event-safely.d.ts +16 -0
- package/dist/utils/send-event-safely.d.ts.map +1 -0
- package/dist/utils/send-event-safely.js +29 -0
- package/dist/utils/send-event-safely.js.map +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @forumone/throughline
|
|
2
2
|
|
|
3
|
+
## 1.0.2-pr-277-e10eb12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e10eb12: Approvals on Postgres, and approvals when an event cannot be sent:
|
|
8
|
+
|
|
9
|
+
- **Confirming a decision from an approval email works on Postgres.** The action endpoint wrote the token's approver id as a string into `decidedBy`, a relationship to a users collection whose ids are numbers there, so every emailed decision failed on Confirm. It now writes the id in the users collection's type, as `request_approval` and `respond_to_approval` do since 1.0.1.
|
|
10
|
+
- **A stored request or a recorded decision is reported as one when its event cannot be sent.** `request_approval`, `respond_to_approval` and the email action endpoint wrote first and then threw if `approval/requested`, `approval/decided` or `approval/discussed` failed to send, reporting an action that had landed as failed. The tools now return it with a `warnings` entry, and the endpoint shows the approver their confirmation and logs the warning — the same rule publishing follows. `sendEventSafely` moved to a shared module for it.
|
|
11
|
+
- @forumone/throughline-design-system@1.0.2-pr-277-e10eb12
|
|
12
|
+
|
|
3
13
|
## 1.0.1
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/approvals/endpoints/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/approvals/endpoints/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAI3D,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,sBAAsB,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,WAAW,EAAE,WAAW,CAAA;CACzB;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,QAAQ,CA8I7E;AAED,kFAAkF;AAClF,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAE7C,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC,CAQnF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_APPROVALS_SLUG } from '../collection.js';
|
|
2
|
+
import { relationshipIdFor } from '../../utils/relationships.js';
|
|
3
|
+
import { sendEventSafely } from '../../utils/send-event-safely.js';
|
|
2
4
|
import { verifyActionToken, } from '../tokens.js';
|
|
3
5
|
const DECISION_STATUS_MAP = {
|
|
4
6
|
approve: 'granted',
|
|
@@ -74,13 +76,15 @@ export function createActionEndpoint(deps) {
|
|
|
74
76
|
// Discuss isn't a decision — surface a message and don't mutate state.
|
|
75
77
|
// C11 listens for the 'approval/discussed' event to thread it into
|
|
76
78
|
// the email reply UX once that lands.
|
|
77
|
-
await deps.options.inngest
|
|
79
|
+
const warning = await sendEventSafely(deps.options.inngest, {
|
|
78
80
|
name: 'approval/discussed',
|
|
79
81
|
data: {
|
|
80
82
|
approvalId: verification.token.approvalId,
|
|
81
83
|
approverId: verification.token.approverId,
|
|
82
84
|
},
|
|
83
|
-
});
|
|
85
|
+
}, 'the discussion has not been threaded');
|
|
86
|
+
if (warning)
|
|
87
|
+
req.payload.logger.warn(warning);
|
|
84
88
|
await deps.auditWriter({
|
|
85
89
|
actor: { type: 'user', userId: verification.token.approverId, apiKeyName: 'action-token' },
|
|
86
90
|
action: 'approval.discussed',
|
|
@@ -100,12 +104,17 @@ export function createActionEndpoint(deps) {
|
|
|
100
104
|
id: verification.token.approvalId,
|
|
101
105
|
data: {
|
|
102
106
|
status: newStatus,
|
|
103
|
-
|
|
107
|
+
// The token carries the approver as a string; on Postgres the users
|
|
108
|
+
// collection's ids are numbers, and a string is refused here — which
|
|
109
|
+
// made every emailed decision fail on Confirm.
|
|
110
|
+
decidedBy: relationshipIdFor(req.payload, deps.options.usersSlug ?? 'users', verification.token.approverId),
|
|
104
111
|
decidedAt,
|
|
105
112
|
consumedTokens: [...consumed, token],
|
|
106
113
|
},
|
|
107
114
|
});
|
|
108
|
-
|
|
115
|
+
// After the write: the decision is recorded and the token consumed, so a
|
|
116
|
+
// failed send must not turn the approver's confirmation into an error page.
|
|
117
|
+
const warning = await sendEventSafely(deps.options.inngest, {
|
|
109
118
|
name: 'approval/decided',
|
|
110
119
|
data: {
|
|
111
120
|
approvalId: verification.token.approvalId,
|
|
@@ -115,7 +124,9 @@ export function createActionEndpoint(deps) {
|
|
|
115
124
|
targetCollection: String(approval['targetCollection']),
|
|
116
125
|
targetId: String(approval['targetId']),
|
|
117
126
|
},
|
|
118
|
-
});
|
|
127
|
+
}, 'the requester may not have been notified, and the approval/decided subscribers have not run');
|
|
128
|
+
if (warning)
|
|
129
|
+
req.payload.logger.warn(warning);
|
|
119
130
|
await deps.auditWriter({
|
|
120
131
|
actor: {
|
|
121
132
|
type: 'user',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/approvals/endpoints/action.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/approvals/endpoints/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-approval.d.ts","sourceRoot":"","sources":["../../../src/approvals/tools/request-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"request-approval.d.ts","sourceRoot":"","sources":["../../../src/approvals/tools/request-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAMxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAG3D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,sBAAsB,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,iBAAiB,CAqItF"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { auditContext } from '../../mcp/audit-context.js';
|
|
3
3
|
import { documentContentHash } from '../../utils/content-hash.js';
|
|
4
4
|
import { relationshipIdFor } from '../../utils/relationships.js';
|
|
5
|
+
import { sendEventSafely } from '../../utils/send-event-safely.js';
|
|
5
6
|
import { withMeta } from '../../mcp/meta.js';
|
|
6
7
|
import { DEFAULT_APPROVALS_SLUG } from '../collection.js';
|
|
7
8
|
import { APPROVALS_TOOLS } from './descriptors.js';
|
|
@@ -85,7 +86,10 @@ export function createRequestApprovalTool(deps) {
|
|
|
85
86
|
},
|
|
86
87
|
}));
|
|
87
88
|
const approvalId = String(created.id);
|
|
88
|
-
|
|
89
|
+
// After the write: the request is stored whatever happens to its event, so
|
|
90
|
+
// a failed send is a warning on a call that succeeded, not a failure that
|
|
91
|
+
// invites a second request.
|
|
92
|
+
const warning = await sendEventSafely(deps.options.inngest, {
|
|
89
93
|
name: 'approval/requested',
|
|
90
94
|
data: {
|
|
91
95
|
approvalId,
|
|
@@ -96,7 +100,7 @@ export function createRequestApprovalTool(deps) {
|
|
|
96
100
|
approverIds: approvers.map((a) => a.id),
|
|
97
101
|
expiresAt,
|
|
98
102
|
},
|
|
99
|
-
});
|
|
103
|
+
}, 'approvers may not have been notified, and the approval/requested subscribers have not run');
|
|
100
104
|
await deps.auditWriter({
|
|
101
105
|
...auditContext(ctx, input._meta),
|
|
102
106
|
action: 'approval.requested',
|
|
@@ -115,6 +119,7 @@ export function createRequestApprovalTool(deps) {
|
|
|
115
119
|
expiresAt,
|
|
116
120
|
approvers: approvers.map((a) => ({ id: a.id, name: a.name ?? a.email })),
|
|
117
121
|
previewUrl,
|
|
122
|
+
...(warning ? { warnings: [warning] } : {}),
|
|
118
123
|
};
|
|
119
124
|
},
|
|
120
125
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-approval.js","sourceRoot":"","sources":["../../../src/approvals/tools/request-approval.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"request-approval.js","sourceRoot":"","sources":["../../../src/approvals/tools/request-approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond-to-approval.d.ts","sourceRoot":"","sources":["../../../src/approvals/tools/respond-to-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"respond-to-approval.d.ts","sourceRoot":"","sources":["../../../src/approvals/tools/respond-to-approval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAG3D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,sBAAsB,GAAG;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;IACzD,WAAW,EAAE,WAAW,CAAA;CACzB;AAcD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CA4F1F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { auditContext } from '../../mcp/audit-context.js';
|
|
3
3
|
import { relationshipIdFor, unwrapRelationshipId } from '../../utils/relationships.js';
|
|
4
|
+
import { sendEventSafely } from '../../utils/send-event-safely.js';
|
|
4
5
|
import { withMeta } from '../../mcp/meta.js';
|
|
5
6
|
import { DEFAULT_APPROVALS_SLUG } from '../collection.js';
|
|
6
7
|
import { APPROVALS_TOOLS } from './descriptors.js';
|
|
@@ -64,7 +65,8 @@ export function createRespondToApprovalTool(deps) {
|
|
|
64
65
|
...(input.notes ? { decisionNotes: input.notes } : {}),
|
|
65
66
|
},
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
+
// After the write, as in request_approval: the decision is recorded.
|
|
69
|
+
const warning = await sendEventSafely(deps.options.inngest, {
|
|
68
70
|
name: 'approval/decided',
|
|
69
71
|
data: {
|
|
70
72
|
approvalId: input.approvalId,
|
|
@@ -74,7 +76,7 @@ export function createRespondToApprovalTool(deps) {
|
|
|
74
76
|
targetCollection: String(approval['targetCollection']),
|
|
75
77
|
targetId: String(approval['targetId']),
|
|
76
78
|
},
|
|
77
|
-
});
|
|
79
|
+
}, 'the requester may not have been notified, and the approval/decided subscribers have not run');
|
|
78
80
|
await deps.auditWriter({
|
|
79
81
|
...auditContext(ctx, input._meta),
|
|
80
82
|
action: decisionToAuditAction[decision],
|
|
@@ -91,7 +93,7 @@ export function createRespondToApprovalTool(deps) {
|
|
|
91
93
|
approvalRequestId: input.approvalId,
|
|
92
94
|
success: true,
|
|
93
95
|
});
|
|
94
|
-
return { success: true, status: newStatus, decidedAt };
|
|
96
|
+
return { success: true, status: newStatus, decidedAt, ...(warning ? { warnings: [warning] } : {}) };
|
|
95
97
|
},
|
|
96
98
|
};
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"respond-to-approval.js","sourceRoot":"","sources":["../../../src/approvals/tools/respond-to-approval.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"respond-to-approval.js","sourceRoot":"","sources":["../../../src/approvals/tools/respond-to-approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import type { Inngest } from 'inngest';
|
|
2
2
|
type EventPayload = Parameters<Inngest['send']>[0];
|
|
3
3
|
/**
|
|
4
|
-
* Emits
|
|
5
|
-
* that already
|
|
6
|
-
* success.
|
|
4
|
+
* Emits a publishing event without letting a transport failure fail the
|
|
5
|
+
* publish that already landed. Returns a warning on failure, `null` on success.
|
|
7
6
|
*
|
|
8
|
-
* Publishing writes the document first and emits afterwards.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* change didn't go live when it did, and the obvious response to that is to
|
|
12
|
-
* click Publish again on content that is already live.
|
|
7
|
+
* Publishing writes the document first and emits afterwards. Throwing here
|
|
8
|
+
* would tell an editor their change didn't go live when it did, and the obvious
|
|
9
|
+
* response to that is to click Publish again on content that is already live.
|
|
13
10
|
*/
|
|
14
11
|
export declare function sendEventSafely(inngest: Inngest, event: EventPayload): Promise<string | null>;
|
|
15
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/publishing/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/publishing/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB"}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
+
import { sendEventSafely as send } from '../utils/send-event-safely.js';
|
|
1
2
|
/**
|
|
2
|
-
* Emits
|
|
3
|
-
* that already
|
|
4
|
-
* success.
|
|
3
|
+
* Emits a publishing event without letting a transport failure fail the
|
|
4
|
+
* publish that already landed. Returns a warning on failure, `null` on success.
|
|
5
5
|
*
|
|
6
|
-
* Publishing writes the document first and emits afterwards.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* change didn't go live when it did, and the obvious response to that is to
|
|
10
|
-
* click Publish again on content that is already live.
|
|
6
|
+
* Publishing writes the document first and emits afterwards. Throwing here
|
|
7
|
+
* would tell an editor their change didn't go live when it did, and the obvious
|
|
8
|
+
* response to that is to click Publish again on content that is already live.
|
|
11
9
|
*/
|
|
12
10
|
export async function sendEventSafely(inngest, event) {
|
|
13
|
-
|
|
14
|
-
await inngest.send(event);
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
const name = eventName(event);
|
|
19
|
-
return `The ${name} event could not be sent, so revalidation and integrations may not have run: ${describeError(error)}`;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function eventName(event) {
|
|
23
|
-
if (Array.isArray(event))
|
|
24
|
-
return event[0]?.name ?? 'publishing';
|
|
25
|
-
return event.name ?? 'publishing';
|
|
26
|
-
}
|
|
27
|
-
function describeError(error) {
|
|
28
|
-
return error instanceof Error ? error.message : String(error);
|
|
11
|
+
return await send(inngest, event, 'revalidation and integrations may not have run');
|
|
29
12
|
}
|
|
30
13
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/publishing/events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/publishing/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAA;AAIvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAgB,EAChB,KAAmB;IAEnB,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,gDAAgD,CAAC,CAAA;AACrF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Inngest } from 'inngest';
|
|
2
|
+
type EventPayload = Parameters<Inngest['send']>[0];
|
|
3
|
+
/**
|
|
4
|
+
* Emits an event without letting a transport failure fail the action that
|
|
5
|
+
* already completed. Returns a warning naming `consequence` on failure, `null`
|
|
6
|
+
* on success.
|
|
7
|
+
*
|
|
8
|
+
* Every caller writes first and emits afterwards: the event is a consequence of
|
|
9
|
+
* the write, not a step in it. Throwing here would report an action as failed
|
|
10
|
+
* after it had landed — a publish that is live, an approval request that is
|
|
11
|
+
* stored, a decision that is recorded — and the obvious response is to do it
|
|
12
|
+
* again.
|
|
13
|
+
*/
|
|
14
|
+
export declare function sendEventSafely(inngest: Pick<Inngest, 'send'>, event: EventPayload, consequence: string): Promise<string | null>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=send-event-safely.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-event-safely.d.ts","sourceRoot":"","sources":["../../src/utils/send-event-safely.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAElD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emits an event without letting a transport failure fail the action that
|
|
3
|
+
* already completed. Returns a warning naming `consequence` on failure, `null`
|
|
4
|
+
* on success.
|
|
5
|
+
*
|
|
6
|
+
* Every caller writes first and emits afterwards: the event is a consequence of
|
|
7
|
+
* the write, not a step in it. Throwing here would report an action as failed
|
|
8
|
+
* after it had landed — a publish that is live, an approval request that is
|
|
9
|
+
* stored, a decision that is recorded — and the obvious response is to do it
|
|
10
|
+
* again.
|
|
11
|
+
*/
|
|
12
|
+
export async function sendEventSafely(inngest, event, consequence) {
|
|
13
|
+
try {
|
|
14
|
+
await inngest.send(event);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return `The ${eventName(event)} event could not be sent, so ${consequence}: ${describeError(error)}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function eventName(event) {
|
|
22
|
+
if (Array.isArray(event))
|
|
23
|
+
return event[0]?.name ?? 'an';
|
|
24
|
+
return event.name ?? 'an';
|
|
25
|
+
}
|
|
26
|
+
function describeError(error) {
|
|
27
|
+
return error instanceof Error ? error.message : String(error);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=send-event-safely.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-event-safely.js","sourceRoot":"","sources":["../../src/utils/send-event-safely.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA8B,EAC9B,KAAmB,EACnB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,SAAS,CAAC,KAAK,CAAC,gCAAgC,WAAW,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAA;IACtG,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAmB;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAA;IACvD,OAAQ,KAA2B,CAAC,IAAI,IAAI,IAAI,CAAA;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forumone/throughline",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2-pr-277-e10eb12",
|
|
4
4
|
"description": "Throughline: an editorial platform for Payload CMS. Publishing, approvals, audit, integrations, email and jobs, with every feature reachable over MCP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"dependencies": {
|
|
163
163
|
"zod": "^3.23.0",
|
|
164
164
|
"zod-to-json-schema": "^3.25.2",
|
|
165
|
-
"@forumone/throughline-design-system": "1.0.
|
|
165
|
+
"@forumone/throughline-design-system": "1.0.2-pr-277-e10eb12"
|
|
166
166
|
},
|
|
167
167
|
"devDependencies": {
|
|
168
168
|
"@payloadcms/db-sqlite": "^3.83.0",
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
"typescript": "^5.6.0",
|
|
186
186
|
"vitest": "^4.1.10",
|
|
187
187
|
"@forumone/throughline-eslint-config": "0.0.1",
|
|
188
|
-
"@forumone/throughline-reference-ds": "0.3.
|
|
188
|
+
"@forumone/throughline-reference-ds": "0.3.10-pr-277-e10eb12",
|
|
189
189
|
"@forumone/throughline-tsconfig": "0.0.1"
|
|
190
190
|
},
|
|
191
191
|
"scripts": {
|