@ontemper/sdk 0.5.1 → 0.6.0-pr-7774.1
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/README.md +27 -4
- package/dist/As2.d.ts +155 -0
- package/dist/As2.d.ts.map +1 -0
- package/dist/As2.js +708 -0
- package/dist/As2.js.map +1 -0
- package/dist/As2Destination.d.ts +8 -0
- package/dist/As2Destination.d.ts.map +1 -0
- package/dist/As2Destination.js +61 -0
- package/dist/As2Destination.js.map +1 -0
- package/dist/As2Error.d.ts +19 -0
- package/dist/As2Error.d.ts.map +1 -0
- package/dist/As2Error.js +16 -0
- package/dist/As2Error.js.map +1 -0
- package/dist/As2Route.d.ts +13 -0
- package/dist/As2Route.d.ts.map +1 -0
- package/dist/As2Route.js +13 -0
- package/dist/As2Route.js.map +1 -0
- package/dist/As2Testing.d.ts +73 -0
- package/dist/As2Testing.d.ts.map +1 -0
- package/dist/As2Testing.js +354 -0
- package/dist/As2Testing.js.map +1 -0
- package/dist/Manifest.d.ts +1 -1
- package/dist/Manifest.d.ts.map +1 -1
- package/dist/Manifest.js +1 -1
- package/dist/Manifest.js.map +1 -1
- package/dist/Middleware.d.ts.map +1 -1
- package/dist/Middleware.js +49 -14
- package/dist/Middleware.js.map +1 -1
- package/dist/Workflow.d.ts.map +1 -1
- package/dist/Workflow.js +15 -2
- package/dist/Workflow.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +10 -2
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { Option, Predicate, Schema } from 'effect';
|
|
3
|
+
import { As2, unquoteAs2Id } from './As2.js';
|
|
4
|
+
const PROCESSED = 'automatic-action/MDN-sent-automatically; processed';
|
|
5
|
+
const MDN_TYPE = 'multipart/report; report-type=disposition-notification; boundary=memory-as2';
|
|
6
|
+
const ENVELOPE_TYPE = 'application/pkcs7-mime; smime-type=enveloped-data';
|
|
7
|
+
// The request bodies of apps/api/src/Platform/As2/Domain.ts, as far as the memory engine reads them.
|
|
8
|
+
const Parties = {
|
|
9
|
+
partner: Schema.Struct({
|
|
10
|
+
as2Id: Schema.String,
|
|
11
|
+
url: Schema.optional(Schema.NullOr(Schema.String)),
|
|
12
|
+
receipt: Schema.optional(Schema.Literals(['none', 'sync', 'async'])),
|
|
13
|
+
}),
|
|
14
|
+
identity: Schema.Struct({ as2Id: Schema.String }),
|
|
15
|
+
};
|
|
16
|
+
const Optional = Schema.optional(Schema.NullOr(Schema.String));
|
|
17
|
+
const ReceiveBody = Schema.Struct({
|
|
18
|
+
...Parties,
|
|
19
|
+
headers: Schema.Record(Schema.String, Schema.String),
|
|
20
|
+
bodyB64: Schema.String,
|
|
21
|
+
});
|
|
22
|
+
const AcknowledgeBody = Schema.Struct({ deliveryToken: Schema.String });
|
|
23
|
+
const PackBody = Schema.Struct({
|
|
24
|
+
...Parties,
|
|
25
|
+
payloadB64: Schema.String,
|
|
26
|
+
payloadContentType: Schema.optional(Schema.String),
|
|
27
|
+
subject: Optional,
|
|
28
|
+
idempotencyKey: Optional,
|
|
29
|
+
receiptUrl: Optional,
|
|
30
|
+
});
|
|
31
|
+
const ConfirmBody = Schema.Struct({ originalMessageId: Optional, mdnBodyB64: Schema.String });
|
|
32
|
+
const SettleBody = Schema.Struct({ messageId: Schema.String });
|
|
33
|
+
const decode = (schema) => (text) => Schema.decodeUnknownOption(Schema.fromJsonString(schema))(text);
|
|
34
|
+
const micOf = (bytes) => `${createHash('sha256').update(bytes).digest('base64')}, sha-256`;
|
|
35
|
+
const b64 = (bytes) => Buffer.from(bytes).toString('base64');
|
|
36
|
+
const lower = (headers) => Object.fromEntries(Object.entries(headers).map(([name, value]) => [name.toLowerCase(), value]));
|
|
37
|
+
const json = (body, status = 200) => new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
|
|
38
|
+
const failure = (status, code, message) => json({ error: { code, message } }, status);
|
|
39
|
+
const unparseable = () => failure(400, 'BAD_REQUEST', 'unparseable request body');
|
|
40
|
+
const headersOf = (init) => init.headers instanceof Headers
|
|
41
|
+
? Object.fromEntries(init.headers.entries())
|
|
42
|
+
: Array.isArray(init.headers)
|
|
43
|
+
? Object.fromEntries(init.headers)
|
|
44
|
+
: lower({ ...(init.headers ?? {}) });
|
|
45
|
+
const bodyOf = async (init) => new Uint8Array(await new Response(init.body ?? null).arrayBuffer());
|
|
46
|
+
const mdnBody = (messageId, mic, disposition) => `Original-Message-ID: ${messageId}\r\nDisposition: ${disposition}\r\nReceived-Content-MIC: ${mic}\r\n`;
|
|
47
|
+
// The platform ledger's receipt rules (apps/api/src/Platform/As2/Ledger.ts): `processed`, with or without a warning.
|
|
48
|
+
const successfulDisposition = (disposition) => disposition !== null && /;\s*processed(?:\s*\/\s*warning(?::.*)?)?\s*$/u.test(disposition.trim().toLowerCase());
|
|
49
|
+
/** Digest exact, algorithm token folded: `sha-256`, `SHA256`, and `sha_256` are one algorithm. */
|
|
50
|
+
const micsMatch = (left, right) => {
|
|
51
|
+
const split = (value) => {
|
|
52
|
+
const comma = value.lastIndexOf(',');
|
|
53
|
+
return comma === -1
|
|
54
|
+
? undefined
|
|
55
|
+
: {
|
|
56
|
+
digest: value.slice(0, comma).trim(),
|
|
57
|
+
algorithm: value
|
|
58
|
+
.slice(comma + 1)
|
|
59
|
+
.toLowerCase()
|
|
60
|
+
.replace(/[^a-z0-9]/gu, ''),
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
const a = split(left);
|
|
64
|
+
const b = split(right);
|
|
65
|
+
return a === undefined || b === undefined
|
|
66
|
+
? left.trim() === right.trim()
|
|
67
|
+
: a.digest === b.digest && a.algorithm === b.algorithm;
|
|
68
|
+
};
|
|
69
|
+
const fieldOf = (text, name) => new RegExp(`^${name}:\\s*(.+?)\\s*$`, 'imu').exec(text)?.[1] ?? null;
|
|
70
|
+
/**
|
|
71
|
+
* An in-memory AS2 platform and partner for workflow tests: the SDK client runs unchanged on top of it, so the
|
|
72
|
+
* Run token, retries, outcomes, span lines, and redaction behave as in production. It keeps the platform's ledger
|
|
73
|
+
* rules (duplicates, in-flight claims, idempotent packs, receipt settlement) but runs no crypto: an envelope is the
|
|
74
|
+
* document, and a receipt is plain text that names its message, disposition, and MIC.
|
|
75
|
+
*/
|
|
76
|
+
export const memoryAs2 = (options = {}) => {
|
|
77
|
+
const apiUrl = (options.apiUrl ?? 'https://api.example.invalid').replace(/\/+$/u, '');
|
|
78
|
+
const partners = new Map();
|
|
79
|
+
const outbound = new Map();
|
|
80
|
+
const byKey = new Map();
|
|
81
|
+
const inbound = new Map();
|
|
82
|
+
const tokens = new Map();
|
|
83
|
+
const parked = new Set();
|
|
84
|
+
const deliveries = [];
|
|
85
|
+
const mdns = [];
|
|
86
|
+
const calls = [];
|
|
87
|
+
let sequence = 0;
|
|
88
|
+
const nextId = (prefix) => `${prefix}-${++sequence}`;
|
|
89
|
+
const mdnOf = (from, to, messageId, mic, disposition) => ({
|
|
90
|
+
headers: {
|
|
91
|
+
'content-type': MDN_TYPE,
|
|
92
|
+
'as2-from': from,
|
|
93
|
+
'as2-to': to,
|
|
94
|
+
'message-id': `<${nextId('mdn')}@memory.as2>`,
|
|
95
|
+
},
|
|
96
|
+
body: new TextEncoder().encode(mdnBody(messageId, mic, disposition)),
|
|
97
|
+
});
|
|
98
|
+
const receive = (body) => {
|
|
99
|
+
const { partner, identity } = body;
|
|
100
|
+
const sent = lower(body.headers);
|
|
101
|
+
const messageId = sent['message-id'];
|
|
102
|
+
if (messageId === undefined)
|
|
103
|
+
return failure(422, 'MALFORMED_ENVELOPE', 'Message-ID is missing');
|
|
104
|
+
if (unquoteAs2Id(sent['as2-from']) !== partner.as2Id)
|
|
105
|
+
return failure(422, 'As2PartnerMismatchError', 'AS2-From does not match the partner');
|
|
106
|
+
if (unquoteAs2Id(sent['as2-to']) !== identity.as2Id)
|
|
107
|
+
return failure(422, 'As2PartnerMismatchError', 'AS2-To does not match the identity');
|
|
108
|
+
if (parked.has(messageId))
|
|
109
|
+
return json({ kind: 'parked', messageId });
|
|
110
|
+
const key = `${partner.as2Id}|${identity.as2Id}|${messageId}`;
|
|
111
|
+
const known = inbound.get(key);
|
|
112
|
+
if (known !== undefined && !known.acknowledged)
|
|
113
|
+
return json({ kind: 'inFlight', messageId });
|
|
114
|
+
if (known !== undefined) {
|
|
115
|
+
return json({
|
|
116
|
+
kind: 'duplicate',
|
|
117
|
+
messageId,
|
|
118
|
+
mic: known.mic,
|
|
119
|
+
mdnHeaders: known.mdn?.headers ?? null,
|
|
120
|
+
mdnBodyB64: known.mdn === null ? null : b64(known.mdn.body),
|
|
121
|
+
mdnMode: known.mdnMode,
|
|
122
|
+
mdnDeliveryUrl: known.mdnDeliveryUrl,
|
|
123
|
+
customerTraceId: known.customerTraceId,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
const record = {
|
|
127
|
+
messageId,
|
|
128
|
+
from: partner.as2Id,
|
|
129
|
+
to: identity.as2Id,
|
|
130
|
+
payloadB64: body.bodyB64,
|
|
131
|
+
contentType: sent['content-type'] ?? null,
|
|
132
|
+
mic: micOf(Buffer.from(body.bodyB64, 'base64')),
|
|
133
|
+
mdnMode: sent['receipt-delivery-option'] === undefined ? 'sync' : 'async',
|
|
134
|
+
mdnDeliveryUrl: sent['receipt-delivery-option'] ?? null,
|
|
135
|
+
customerTraceId: crypto.randomUUID(),
|
|
136
|
+
mdn: null,
|
|
137
|
+
acknowledged: false,
|
|
138
|
+
};
|
|
139
|
+
inbound.set(key, record);
|
|
140
|
+
const deliveryToken = nextId('delivery');
|
|
141
|
+
tokens.set(deliveryToken, key);
|
|
142
|
+
return json({
|
|
143
|
+
kind: 'received',
|
|
144
|
+
messageId,
|
|
145
|
+
payloadB64: record.payloadB64,
|
|
146
|
+
payloadContentType: record.contentType,
|
|
147
|
+
mic: record.mic,
|
|
148
|
+
deliveryToken,
|
|
149
|
+
mdnMode: record.mdnMode,
|
|
150
|
+
customerTraceId: record.customerTraceId,
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
const acknowledge = (body) => {
|
|
154
|
+
const key = tokens.get(body.deliveryToken);
|
|
155
|
+
const record = key === undefined ? undefined : inbound.get(key);
|
|
156
|
+
if (record === undefined)
|
|
157
|
+
return failure(409, 'As2ClaimLostError', 'the delivery claim is unknown');
|
|
158
|
+
const already = record.acknowledged;
|
|
159
|
+
record.acknowledged = true;
|
|
160
|
+
record.mdn ??= mdnOf(record.to, record.from, record.messageId, record.mic, PROCESSED);
|
|
161
|
+
return json({
|
|
162
|
+
messageId: record.messageId,
|
|
163
|
+
mic: record.mic,
|
|
164
|
+
mdnHeaders: record.mdn.headers,
|
|
165
|
+
mdnBodyB64: b64(record.mdn.body),
|
|
166
|
+
mdnMode: record.mdnMode,
|
|
167
|
+
mdnDeliveryUrl: record.mdnDeliveryUrl,
|
|
168
|
+
alreadyAcknowledged: already,
|
|
169
|
+
customerTraceId: record.customerTraceId,
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
const packed = (body, receipt, contentType, fingerprint) => {
|
|
173
|
+
const messageId = `<${nextId('message')}@as2.ontemper.com>`;
|
|
174
|
+
const receiptHeaders = receipt === 'none'
|
|
175
|
+
? []
|
|
176
|
+
: [
|
|
177
|
+
['Disposition-Notification-To', body.identity.as2Id],
|
|
178
|
+
['Disposition-Notification-Options', 'signed-receipt-protocol=required, pkcs7-signature'],
|
|
179
|
+
];
|
|
180
|
+
const deliveryHeaders = receipt === 'async' && body.receiptUrl !== undefined && body.receiptUrl !== null
|
|
181
|
+
? [['Receipt-Delivery-Option', body.receiptUrl]]
|
|
182
|
+
: [];
|
|
183
|
+
return {
|
|
184
|
+
messageId,
|
|
185
|
+
mic: micOf(Buffer.from(body.payloadB64, 'base64')),
|
|
186
|
+
mdnMode: receipt,
|
|
187
|
+
fingerprint,
|
|
188
|
+
partner: body.partner.as2Id,
|
|
189
|
+
identity: body.identity.as2Id,
|
|
190
|
+
as2Headers: Object.fromEntries([
|
|
191
|
+
['AS2-From', body.identity.as2Id],
|
|
192
|
+
['AS2-To', body.partner.as2Id],
|
|
193
|
+
['AS2-Version', '1.2'],
|
|
194
|
+
['Message-ID', messageId],
|
|
195
|
+
['Content-Type', ENVELOPE_TYPE],
|
|
196
|
+
['X-Memory-As2-Content-Type', contentType],
|
|
197
|
+
...receiptHeaders,
|
|
198
|
+
...deliveryHeaders,
|
|
199
|
+
]),
|
|
200
|
+
payloadB64: body.payloadB64,
|
|
201
|
+
partnerUrl: body.partner.url ?? null,
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
const pack = (body) => {
|
|
205
|
+
const receipt = body.partner.receipt ?? 'sync';
|
|
206
|
+
if (receipt === 'async' && (body.receiptUrl === undefined || body.receiptUrl === null))
|
|
207
|
+
return failure(422, 'As2ConfigError', `partner ${body.partner.as2Id} requests async receipts; receiptUrl is required`);
|
|
208
|
+
const contentType = body.payloadContentType ?? 'application/edi-x12';
|
|
209
|
+
const fingerprint = `${body.payloadB64}\0${contentType}\0${body.subject ?? ''}`;
|
|
210
|
+
// The platform scopes a key to the workflow, our identity, and the partner.
|
|
211
|
+
const idempotencyKey = body.idempotencyKey === undefined || body.idempotencyKey === null
|
|
212
|
+
? undefined
|
|
213
|
+
: `${body.identity.as2Id}|${body.partner.as2Id}|${body.idempotencyKey}`;
|
|
214
|
+
const replay = idempotencyKey === undefined ? undefined : outbound.get(byKey.get(idempotencyKey) ?? '');
|
|
215
|
+
if (replay !== undefined && replay.fingerprint !== fingerprint)
|
|
216
|
+
return failure(409, 'As2MessageConflictError', 'the idempotency key names another document');
|
|
217
|
+
const record = replay ?? packed(body, receipt, contentType, fingerprint);
|
|
218
|
+
outbound.set(record.messageId, record);
|
|
219
|
+
if (idempotencyKey !== undefined)
|
|
220
|
+
byKey.set(idempotencyKey, record.messageId);
|
|
221
|
+
return json({
|
|
222
|
+
messageId: record.messageId,
|
|
223
|
+
as2Headers: record.as2Headers,
|
|
224
|
+
envelopeBodyB64: record.payloadB64,
|
|
225
|
+
mic: record.mic,
|
|
226
|
+
partnerUrl: record.partnerUrl,
|
|
227
|
+
mdnMode: record.mdnMode,
|
|
228
|
+
replayed: replay !== undefined,
|
|
229
|
+
customerTraceId: null,
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
const confirm = (body) => {
|
|
233
|
+
const text = Buffer.from(body.mdnBodyB64, 'base64').toString('utf8');
|
|
234
|
+
const original = fieldOf(text, 'Original-Message-ID');
|
|
235
|
+
const record = original === null ? undefined : outbound.get(original);
|
|
236
|
+
if (record === undefined)
|
|
237
|
+
return failure(404, 'As2MessageNotFoundError', 'no outbound message matches the receipt');
|
|
238
|
+
if (body.originalMessageId !== undefined && body.originalMessageId !== null && body.originalMessageId !== original)
|
|
239
|
+
return failure(409, 'As2MessageConflictError', 'the receipt names another message');
|
|
240
|
+
const already = record.verdict !== undefined;
|
|
241
|
+
if (record.verdict === undefined) {
|
|
242
|
+
const disposition = fieldOf(text, 'Disposition');
|
|
243
|
+
const receivedMic = fieldOf(text, 'Received-Content-MIC');
|
|
244
|
+
const micMatched = receivedMic !== null && micsMatch(receivedMic, record.mic);
|
|
245
|
+
const outcome = micMatched && successfulDisposition(disposition) ? 'confirmed' : 'failed';
|
|
246
|
+
record.verdict = { outcome, disposition, receivedMic, micMatched };
|
|
247
|
+
}
|
|
248
|
+
return json({
|
|
249
|
+
...record.verdict,
|
|
250
|
+
messageId: record.messageId,
|
|
251
|
+
packMic: record.mic,
|
|
252
|
+
alreadyRecorded: already,
|
|
253
|
+
originatingTraceId: null,
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
const settle = (body) => {
|
|
257
|
+
const record = outbound.get(body.messageId);
|
|
258
|
+
if (record === undefined)
|
|
259
|
+
return failure(404, 'As2MessageNotFoundError', 'no outbound message has this id');
|
|
260
|
+
const already = record.verdict !== undefined;
|
|
261
|
+
record.verdict ??= { outcome: 'confirmed', disposition: null, receivedMic: null, micMatched: false };
|
|
262
|
+
return json({ outcome: 'confirmed', messageId: record.messageId, alreadyRecorded: already, customerTraceId: null });
|
|
263
|
+
};
|
|
264
|
+
const route = (path, text) => {
|
|
265
|
+
switch (path) {
|
|
266
|
+
case 'receive':
|
|
267
|
+
return Option.match(decode(ReceiveBody)(text), { onNone: unparseable, onSome: receive });
|
|
268
|
+
case 'acknowledge':
|
|
269
|
+
return Option.match(decode(AcknowledgeBody)(text), { onNone: unparseable, onSome: acknowledge });
|
|
270
|
+
case 'pack':
|
|
271
|
+
return Option.match(decode(PackBody)(text), { onNone: unparseable, onSome: pack });
|
|
272
|
+
case 'confirm':
|
|
273
|
+
return Option.match(decode(ConfirmBody)(text), { onNone: unparseable, onSome: confirm });
|
|
274
|
+
case 'settle-delivery':
|
|
275
|
+
return Option.match(decode(SettleBody)(text), { onNone: unparseable, onSome: settle });
|
|
276
|
+
default:
|
|
277
|
+
return failure(404, 'NOT_FOUND', `no AS2 route ${path}`);
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
const platform = (path, headers, text) => {
|
|
281
|
+
const token = /^Bearer (.+)$/u.exec(headers.authorization ?? '')?.[1];
|
|
282
|
+
calls.push({ path, token });
|
|
283
|
+
if (token === undefined)
|
|
284
|
+
return failure(401, 'UNAUTHORIZED', 'AS2 requires a workflow-scoped token');
|
|
285
|
+
return route(path, text);
|
|
286
|
+
};
|
|
287
|
+
const deliver = async (url, partnerOptions, headers, payload) => {
|
|
288
|
+
const messageId = headers['message-id'] ?? '';
|
|
289
|
+
deliveries.push({ url, messageId, payload, headers });
|
|
290
|
+
if ((partnerOptions.status ?? 200) >= 300)
|
|
291
|
+
return new Response('partner failure', { status: partnerOptions.status });
|
|
292
|
+
const record = outbound.get(messageId);
|
|
293
|
+
if (record === undefined || record.mdnMode !== 'sync' || partnerOptions.omitMdn === true)
|
|
294
|
+
return new Response(null, { status: partnerOptions.status ?? 200 });
|
|
295
|
+
const mdn = mdnOf(record.partner, record.identity, messageId, micOf(payload), partnerOptions.disposition ?? PROCESSED);
|
|
296
|
+
return new Response(Buffer.from(mdn.body), { status: 200, headers: mdn.headers });
|
|
297
|
+
};
|
|
298
|
+
const fetch = async (url, init) => {
|
|
299
|
+
const headers = headersOf(init);
|
|
300
|
+
const body = await bodyOf(init);
|
|
301
|
+
const prefix = `${apiUrl}/api/v2/internal/as2/`;
|
|
302
|
+
if (url.href.startsWith(prefix)) {
|
|
303
|
+
return platform(url.href.slice(prefix.length), headers, new TextDecoder().decode(body));
|
|
304
|
+
}
|
|
305
|
+
const partnerOptions = partners.get(url.href);
|
|
306
|
+
if (partnerOptions !== undefined)
|
|
307
|
+
return deliver(url.href, partnerOptions, headers, body);
|
|
308
|
+
if (headers['content-type']?.startsWith('multipart/report') === true) {
|
|
309
|
+
mdns.push({ url: url.href, headers, body });
|
|
310
|
+
return new Response(null, { status: 200 });
|
|
311
|
+
}
|
|
312
|
+
if (options.fetch !== undefined)
|
|
313
|
+
return options.fetch(url, init);
|
|
314
|
+
throw new Error(`Unexpected outbound request: ${init.method ?? 'GET'} ${url.href}`);
|
|
315
|
+
};
|
|
316
|
+
return {
|
|
317
|
+
fetch,
|
|
318
|
+
layer: As2.layerWith({
|
|
319
|
+
lookupAddresses: async (hostname) => options.addresses?.[hostname] ?? ['93.184.216.34'],
|
|
320
|
+
}),
|
|
321
|
+
partner: (url, partnerOptions = {}) => {
|
|
322
|
+
partners.set(new URL(url).href, partnerOptions);
|
|
323
|
+
},
|
|
324
|
+
inboundRequest: (request) => {
|
|
325
|
+
const receipt = request.receiptUrl === undefined ? [] : [['receipt-delivery-option', request.receiptUrl]];
|
|
326
|
+
const headers = Object.fromEntries([
|
|
327
|
+
['content-type', request.contentType ?? 'application/edi-x12'],
|
|
328
|
+
['as2-from', request.from],
|
|
329
|
+
['as2-to', request.to],
|
|
330
|
+
['as2-version', '1.2'],
|
|
331
|
+
['message-id', request.messageId ?? `<${nextId('inbound')}@memory.as2>`],
|
|
332
|
+
['x-forwarded-proto', 'https'],
|
|
333
|
+
['disposition-notification-to', request.from],
|
|
334
|
+
...receipt,
|
|
335
|
+
...Object.entries(request.headers ?? {}),
|
|
336
|
+
]);
|
|
337
|
+
const body = Predicate.isString(request.payload) ? request.payload : Buffer.from(request.payload);
|
|
338
|
+
return new Request(request.url, { method: 'POST', headers, body });
|
|
339
|
+
},
|
|
340
|
+
mdnFor: (messageId, disposition = PROCESSED) => {
|
|
341
|
+
const record = outbound.get(messageId);
|
|
342
|
+
if (record === undefined)
|
|
343
|
+
throw new Error(`memoryAs2 has no outbound message ${messageId}`);
|
|
344
|
+
return mdnOf(record.partner, record.identity, messageId, record.mic, disposition);
|
|
345
|
+
},
|
|
346
|
+
park: (messageId) => {
|
|
347
|
+
parked.add(messageId);
|
|
348
|
+
},
|
|
349
|
+
deliveries,
|
|
350
|
+
mdns,
|
|
351
|
+
calls,
|
|
352
|
+
};
|
|
353
|
+
};
|
|
354
|
+
//# sourceMappingURL=As2Testing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"As2Testing.js","sourceRoot":"","sources":["../src/As2Testing.ts"],"names":[],"mappings":"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"}
|
package/dist/Manifest.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HttpApi, type HttpApiGroup } from 'effect/http-api';
|
|
2
2
|
import { type WorkflowManifest } from './Contract/Manifest.js';
|
|
3
|
-
export declare const SDK_VERSION = "0.
|
|
3
|
+
export declare const SDK_VERSION = "0.6.0-pr-7774.1";
|
|
4
4
|
export declare const RUNTIME_API_VERSION = 1;
|
|
5
5
|
/** The route the SDK serves for platform probes; an API declaring `GET` on it collides with it on every request. */
|
|
6
6
|
export declare const HEALTHCHECK_PATH = "/healthcheck";
|
package/dist/Manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Manifest.d.ts","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAQL,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAShC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAC7C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oHAAoH;AACpH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAkE/C,eAAO,MAAM,YAAY,GAAI,EAAE,SAAS,MAAM,EAAE,MAAM,SAAS,YAAY,CAAC,UAAU,OAC/E,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,KAC/B,gBA2DF,CAAC"}
|
package/dist/Manifest.js
CHANGED
|
@@ -5,7 +5,7 @@ import { declarationOf } from './Resource.js';
|
|
|
5
5
|
import { Trigger } from './Trigger.js';
|
|
6
6
|
const decodeTrigger = Schema.decodeUnknownSync(TriggerMetadata, { onExcessProperty: 'error' });
|
|
7
7
|
const identityOf = (resource) => `${resource.kind}:${resource.kind === 'resourceType' ? resource.type : resource.key}`;
|
|
8
|
-
export const SDK_VERSION = '0.
|
|
8
|
+
export const SDK_VERSION = '0.6.0-pr-7774.1';
|
|
9
9
|
export const RUNTIME_API_VERSION = 1;
|
|
10
10
|
/** The route the SDK serves for platform probes; an API declaring `GET` on it collides with it on every request. */
|
|
11
11
|
export const HEALTHCHECK_PATH = '/healthcheck';
|
package/dist/Manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,OAAO,EAAqB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAG1B,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAA2B,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;AAE/F,MAAM,UAAU,GAAG,CAAC,QAA0B,EAAU,EAAE,CACxD,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAExF,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../src/Manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/Middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,UAAU,EAA0D,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Middleware.d.ts","sourceRoot":"","sources":["../src/Middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,UAAU,EAA0D,MAAM,aAAa,CAAC;AAU1G,4GAA4G;AAC5G,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AA+bD,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,mDAE5B,CAAC;AAER,sIAAsI;AACtI,eAAO,MAAM,0BAA0B,mEAMtC,CAAC"}
|
package/dist/Middleware.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Cause, Clock, Context, Duration, Effect, Exit, Option, Predicate, Schema } from 'effect';
|
|
2
2
|
import { Headers, HttpRouter, HttpServerError, HttpServerRequest, HttpServerResponse } from 'effect/http';
|
|
3
3
|
import { recordAnswerFailure } from './Answer.js';
|
|
4
|
+
import { As2RouteKeys } from './As2Route.js';
|
|
4
5
|
import { bodyOf, formDataFields, safeJsonParse } from './HttpPayload.js';
|
|
5
6
|
import { Invocation } from './Invocation.js';
|
|
6
7
|
import { CurrentLogContext, logSpan, TRACE_HEADER } from './LogContext.js';
|
|
@@ -88,10 +89,34 @@ const loggedBodyOf = (bytes, contentType) => {
|
|
|
88
89
|
return Effect.succeed(safeJsonParse(decoder.decode(bytes)));
|
|
89
90
|
return Effect.succeed({});
|
|
90
91
|
};
|
|
91
|
-
|
|
92
|
-
const
|
|
92
|
+
// Legacy `as2Endpoint` (sdk/events/src/lib/utils.ts:236-258): an AS2 request logs only these headers' values.
|
|
93
|
+
const AS2_LOGGED_HEADERS = new Set([
|
|
94
|
+
'as2-from',
|
|
95
|
+
'as2-to',
|
|
96
|
+
'as2-version',
|
|
97
|
+
'content-length',
|
|
98
|
+
'content-transfer-encoding',
|
|
99
|
+
'content-type',
|
|
100
|
+
'date',
|
|
101
|
+
'disposition-notification-options',
|
|
102
|
+
'disposition-notification-to',
|
|
103
|
+
'message-id',
|
|
104
|
+
'mime-version',
|
|
105
|
+
'x-message-id',
|
|
106
|
+
'x-unnbound-trace-id',
|
|
107
|
+
]);
|
|
108
|
+
/** `Receipt-Delivery-Option` and `Subject` are partner input that can carry credentials or business data. */
|
|
109
|
+
const as2Headers = (headers) => Object.fromEntries(Object.entries(headers).map(([name, value]) => [
|
|
110
|
+
name,
|
|
111
|
+
AS2_LOGGED_HEADERS.has(name.toLowerCase()) ? value : '[redacted]',
|
|
112
|
+
]));
|
|
113
|
+
/**
|
|
114
|
+
* unnbound-events 2.0 `buildIncomingPayload` before a response exists (sdk/events/src/lib/utils.ts:278-306). An
|
|
115
|
+
* AS2 Run logs as legacy `as2Endpoint`: allowlisted header values, no query, and no body, which is an envelope.
|
|
116
|
+
*/
|
|
117
|
+
const incomingOf = (request, params, as2) => {
|
|
93
118
|
const source = request.source;
|
|
94
|
-
const body = source instanceof Request
|
|
119
|
+
const body = !as2 && source instanceof Request
|
|
95
120
|
? Effect.flatMap(readBody(source, request.headers['content-length']), (bytes) => loggedBodyOf(bytes, headerOf(request.headers, 'content-type') ?? ''))
|
|
96
121
|
: Effect.succeed(undefined);
|
|
97
122
|
return Effect.map(body, (body) => {
|
|
@@ -118,6 +143,8 @@ const incomingOf = (request, params) => {
|
|
|
118
143
|
const query = {};
|
|
119
144
|
for (const [key, value] of url.searchParams)
|
|
120
145
|
query[key] ??= value;
|
|
146
|
+
if (as2)
|
|
147
|
+
url.search = '';
|
|
121
148
|
const ip = headerOf(request.headers, 'cf-connecting-ip') ??
|
|
122
149
|
headerOf(request.headers, 'x-forwarded-for') ??
|
|
123
150
|
headerOf(request.headers, 'x-real-ip');
|
|
@@ -127,12 +154,12 @@ const incomingOf = (request, params) => {
|
|
|
127
154
|
http: {
|
|
128
155
|
url: url.toString(),
|
|
129
156
|
method: request.method.toLowerCase(),
|
|
130
|
-
query,
|
|
157
|
+
query: as2 ? undefined : query,
|
|
131
158
|
params,
|
|
132
159
|
// Legacy `normalizeIp`: an IPv4-mapped IPv6 address logs as IPv4.
|
|
133
160
|
ip: ip?.startsWith('::ffff:') ? ip.slice(7) : ip,
|
|
134
161
|
incoming: true,
|
|
135
|
-
request: { headers: { ...request.headers }, body },
|
|
162
|
+
request: { headers: as2 ? as2Headers(request.headers) : { ...request.headers }, body },
|
|
136
163
|
},
|
|
137
164
|
};
|
|
138
165
|
});
|
|
@@ -142,9 +169,10 @@ const incomingOf = (request, params) => {
|
|
|
142
169
|
* (sdk/events/src/lib/utils.ts:238-260); 204, 205, and 304 log no body. Effect derives
|
|
143
170
|
* `content-type` and `content-length` from the body, so those are not declared.
|
|
144
171
|
*/
|
|
145
|
-
const responseOf = ({ body, headers, status }) => {
|
|
146
|
-
const logged = status === 204 || status === 205 || status === 304 ? undefined : bodyOf(body);
|
|
147
|
-
const
|
|
172
|
+
const responseOf = ({ body, headers, status }, as2) => {
|
|
173
|
+
const logged = status === 204 || status === 205 || status === 304 || as2 ? undefined : bodyOf(body);
|
|
174
|
+
const removed = { ...Headers.removeMany(headers, ['content-type', 'content-length']) };
|
|
175
|
+
const declared = as2 ? as2Headers(removed) : removed;
|
|
148
176
|
if (!Predicate.isTruthy(logged))
|
|
149
177
|
return { status, headers: declared, body: undefined };
|
|
150
178
|
const contentType = headerOf(headers, 'content-type');
|
|
@@ -255,11 +283,18 @@ const serveEventRequest = (handler) => Effect.withFiber((fiber) => {
|
|
|
255
283
|
const run = unmatched
|
|
256
284
|
? Effect.fail(new HttpServerError.HttpServerError({ reason: new HttpServerError.RouteNotFound({ request }) }))
|
|
257
285
|
: handler;
|
|
286
|
+
// A partner chooses an AS2 request's headers, so its Run starts on a fresh trace; the AS2 client binds the
|
|
287
|
+
// verified exchange trace after the platform checks the message (legacy `as2Endpoint`).
|
|
288
|
+
const route = Context.getOrUndefined(fiber.context, HttpRouter.RouteContext)?.route;
|
|
289
|
+
const as2 = invocation.triggerKind === 'as2' ||
|
|
290
|
+
(route !== undefined && fiber.getRef(As2RouteKeys).has(`${route.method} ${String(route.path)}`));
|
|
258
291
|
// An empty trace header counts as absent (`||`), an empty message id as present (`??`), as in legacy.
|
|
259
|
-
const traceId =
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
292
|
+
const traceId = as2
|
|
293
|
+
? crypto.randomUUID()
|
|
294
|
+
: (headerOf(request.headers, TRACE_HEADER) ??
|
|
295
|
+
traceIdOf(headerOf(request.headers, 'traceparent')) ??
|
|
296
|
+
traceIdOf(headerOf(request.headers, 'x-traceparent')) ??
|
|
297
|
+
crypto.randomUUID());
|
|
263
298
|
const inboundMessageId = request.headers[MESSAGE_HEADER];
|
|
264
299
|
const messageId = inboundMessageId ?? crypto.randomUUID();
|
|
265
300
|
// Legacy echoed both ids only when both were non-empty.
|
|
@@ -274,7 +309,7 @@ const serveEventRequest = (handler) => Effect.withFiber((fiber) => {
|
|
|
274
309
|
? Effect.succeed(outcome.response)
|
|
275
310
|
: Effect.logError(outcome.failure.message, { err: outcome.failure.error }).pipe(Effect.provideService(CurrentLogContext, undefined), Effect.as(outcome.response));
|
|
276
311
|
return Effect.gen(function* () {
|
|
277
|
-
const incoming = yield* incomingOf(request, unmatched ? {} : routeParams).pipe(withDeadline(invocation));
|
|
312
|
+
const incoming = yield* incomingOf(request, unmatched ? {} : routeParams, as2).pipe(withDeadline(invocation));
|
|
278
313
|
const outcome = yield* run.pipe(withDeadline(invocation), Effect.matchCauseEffect({
|
|
279
314
|
onFailure: failureOutcome,
|
|
280
315
|
onSuccess: (response) => Effect.succeed({ response }),
|
|
@@ -297,7 +332,7 @@ const serveEventRequest = (handler) => Effect.withFiber((fiber) => {
|
|
|
297
332
|
}
|
|
298
333
|
return Exit.isFailure(exit)
|
|
299
334
|
? incoming
|
|
300
|
-
: { ...incoming, http: { ...incoming.http, response: responseOf(exit.value.response) } };
|
|
335
|
+
: { ...incoming, http: { ...incoming.http, response: responseOf(exit.value.response, as2) } };
|
|
301
336
|
},
|
|
302
337
|
failure: (exit) => {
|
|
303
338
|
if (Exit.isFailure(exit))
|