@dual-os/adyen-api 0.0.0-stage → 6.0.4
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/LICENSE +4 -0
- package/Runner.js +5537 -0
- package/Runner.js.map +59 -0
- package/bundle-inventory.json +1 -0
- package/dist/_virtual/_rolldown/runtime.js +10 -0
- package/dist/_virtual/_rolldown/runtime.js.map +9 -0
- package/dist/auth.d.ts +39 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +17 -0
- package/dist/auth.js.map +9 -0
- package/dist/generated/http.d.ts +81 -0
- package/dist/generated/http.d.ts.map +1 -0
- package/dist/generated/http.js +64 -0
- package/dist/generated/http.js.map +9 -0
- package/dist/generated/operations.d.ts +15588 -0
- package/dist/generated/operations.d.ts.map +1 -0
- package/dist/generated/operations.js +3946 -0
- package/dist/generated/operations.js.map +9 -0
- package/dist/generated/plugin.d.ts +1540 -0
- package/dist/generated/plugin.d.ts.map +1 -0
- package/dist/generated/plugin.js +5111 -0
- package/dist/generated/plugin.js.map +10 -0
- package/dist/triggers.d.ts +303 -0
- package/dist/triggers.d.ts.map +1 -0
- package/dist/triggers.js +17 -0
- package/dist/triggers.js.map +9 -0
- package/dual-plugin.json +1 -0
- package/licenses/@dual-os_sdk@0.9.0/LICENSE +4 -0
- package/licenses/@effect_platform-node-shared@4.1.2/LICENSE +21 -0
- package/licenses/@effect_platform-node@4.1.2/LICENSE +21 -0
- package/licenses/effect@4.1.2/LICENSE +21 -0
- package/package.json +1 -6
- package/plugin-2jdfj02n.js +18 -0
- package/plugin-2jdfj02n.js.map +10 -0
- package/plugin-48zbqzh4.js +55052 -0
- package/plugin-48zbqzh4.js.map +10 -0
- package/plugin-ctytbs1j.js +250 -0
- package/plugin-ctytbs1j.js.map +10 -0
- package/plugin-pbdgaxvn.js +1303 -0
- package/plugin-pbdgaxvn.js.map +18 -0
- package/plugin-vnx323vz.js +19085 -0
- package/plugin-vnx323vz.js.map +158 -0
- package/plugin-z4svmw67.js +62 -0
- package/plugin-z4svmw67.js.map +10 -0
- package/plugin.json +174 -0
- package/README.md +0 -3
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
isString,
|
|
4
|
+
contains,
|
|
5
|
+
map3,
|
|
6
|
+
join,
|
|
7
|
+
encode,
|
|
8
|
+
decode,
|
|
9
|
+
forEach,
|
|
10
|
+
promise,
|
|
11
|
+
void_2,
|
|
12
|
+
gen,
|
|
13
|
+
fromResult,
|
|
14
|
+
mapError,
|
|
15
|
+
tapError,
|
|
16
|
+
fn,
|
|
17
|
+
decodeUnknownEffect,
|
|
18
|
+
decodeEffect,
|
|
19
|
+
optionalKey,
|
|
20
|
+
Unknown,
|
|
21
|
+
String3,
|
|
22
|
+
Boolean2,
|
|
23
|
+
Struct,
|
|
24
|
+
Record,
|
|
25
|
+
StructWithRest,
|
|
26
|
+
NonEmptyArray,
|
|
27
|
+
Union,
|
|
28
|
+
Literals,
|
|
29
|
+
Finite,
|
|
30
|
+
NonEmptyString,
|
|
31
|
+
fromJsonString,
|
|
32
|
+
Action_exports,
|
|
33
|
+
Trigger_exports
|
|
34
|
+
} from "./plugin-vnx323vz.js";
|
|
35
|
+
import {
|
|
36
|
+
managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooks2,
|
|
37
|
+
managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId2,
|
|
38
|
+
managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooksWebhookIdGenerateHmac2
|
|
39
|
+
} from "./plugin-48zbqzh4.js";
|
|
40
|
+
|
|
41
|
+
// dist/triggers.js
|
|
42
|
+
var Item = StructWithRest(Struct({
|
|
43
|
+
additionalData: optionalKey(StructWithRest(Struct({ hmacSignature: optionalKey(String3) }), [Record(String3, Unknown)])),
|
|
44
|
+
amount: optionalKey(Struct({
|
|
45
|
+
currency: String3,
|
|
46
|
+
value: Finite
|
|
47
|
+
})),
|
|
48
|
+
eventCode: String3,
|
|
49
|
+
eventDate: String3,
|
|
50
|
+
merchantAccountCode: String3,
|
|
51
|
+
merchantReference: optionalKey(String3),
|
|
52
|
+
originalReference: optionalKey(String3),
|
|
53
|
+
pspReference: String3,
|
|
54
|
+
success: Union([Boolean2, Literals(["true", "false"])])
|
|
55
|
+
}), [Record(String3, Unknown)]);
|
|
56
|
+
var Notification = Struct({ notificationItems: NonEmptyArray(Struct({ NotificationRequestItem: Item })) });
|
|
57
|
+
var event = Trigger_exports.webhook("event", {
|
|
58
|
+
description: "Triggers on Adyen webhook events for the merchant account, such as AUTHORISATION, CAPTURE, REFUND and CHARGEBACK. Each notification item is one event.",
|
|
59
|
+
name: "Adyen event",
|
|
60
|
+
config: Struct({ merchantId: NonEmptyString.annotate({ description: "The merchant account the standard webhook is configured on" }) }),
|
|
61
|
+
output: Item,
|
|
62
|
+
state: Struct({
|
|
63
|
+
hmacKey: String3,
|
|
64
|
+
webhookId: String3
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
var TransferEventType = Literals(["balancePlatform.transfer.created", "balancePlatform.transfer.updated"]);
|
|
68
|
+
var AccountHolderEventType = Literals(["balancePlatform.accountHolder.created", "balancePlatform.accountHolder.updated"]);
|
|
69
|
+
var PlatformEventType = Union([TransferEventType, AccountHolderEventType]);
|
|
70
|
+
var AccountHolder = StructWithRest(Struct({
|
|
71
|
+
balancePlatform: optionalKey(String3),
|
|
72
|
+
id: NonEmptyString
|
|
73
|
+
}), [Record(String3, Unknown)]);
|
|
74
|
+
var PlatformEvent = Union([StructWithRest(Struct({
|
|
75
|
+
data: StructWithRest(Struct({
|
|
76
|
+
accountHolder: optionalKey(AccountHolder),
|
|
77
|
+
balancePlatform: optionalKey(String3),
|
|
78
|
+
id: NonEmptyString
|
|
79
|
+
}), [Record(String3, Unknown)]),
|
|
80
|
+
environment: Literals(["test", "live"]),
|
|
81
|
+
timestamp: optionalKey(String3),
|
|
82
|
+
type: TransferEventType
|
|
83
|
+
}), [Record(String3, Unknown)]), StructWithRest(Struct({
|
|
84
|
+
data: StructWithRest(Struct({
|
|
85
|
+
accountHolder: AccountHolder,
|
|
86
|
+
balancePlatform: optionalKey(String3)
|
|
87
|
+
}), [Record(String3, Unknown)]),
|
|
88
|
+
environment: Literals(["test", "live"]),
|
|
89
|
+
timestamp: optionalKey(String3),
|
|
90
|
+
type: AccountHolderEventType
|
|
91
|
+
}), [Record(String3, Unknown)])]);
|
|
92
|
+
var triggers2 = [event, Trigger_exports.webhook("platform-event", {
|
|
93
|
+
description: "Receives signed balance platform transfer and account holder events. Configure the subscription in Adyen and store the platform HMAC key in the connection.",
|
|
94
|
+
name: "Adyen platform event",
|
|
95
|
+
config: Struct({
|
|
96
|
+
accountHolderId: optionalKey(NonEmptyString).annotateKey({ description: "Only emit events whose data.accountHolder.id matches this account holder" }),
|
|
97
|
+
balancePlatform: optionalKey(NonEmptyString).annotateKey({ description: "Only emit events for this balance platform, from data.balancePlatform for transfers and data.accountHolder.balancePlatform for account holder events" }),
|
|
98
|
+
eventTypes: optionalKey(NonEmptyArray(PlatformEventType)).annotateKey({ description: "Only emit the selected platform event types. Manually subscribe to Transfer and Configuration webhooks at this trigger URL in the Adyen Customer Area, with the HMAC key stored in connection material. Dual does not create or delete this external subscription." })
|
|
99
|
+
}),
|
|
100
|
+
output: PlatformEvent
|
|
101
|
+
})];
|
|
102
|
+
var handlers2 = {
|
|
103
|
+
event: {
|
|
104
|
+
activate: fn("Adyen.event.activate")(function* (input, context) {
|
|
105
|
+
const created = yield* managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooks2.run({
|
|
106
|
+
merchantId: input.config.merchantId,
|
|
107
|
+
payload: {
|
|
108
|
+
active: true,
|
|
109
|
+
communicationFormat: "json",
|
|
110
|
+
description: "Created by Dual",
|
|
111
|
+
type: "standard",
|
|
112
|
+
url: input.webhookUrl
|
|
113
|
+
}
|
|
114
|
+
}, context);
|
|
115
|
+
const webhookId = created.status === 200 ? created.body.id : undefined;
|
|
116
|
+
if (webhookId === undefined)
|
|
117
|
+
return yield* Action_exports.ActionHandlerError.make({ message: "Adyen did not return the registered webhook" });
|
|
118
|
+
return { state: {
|
|
119
|
+
hmacKey: yield* tapError(gen(function* () {
|
|
120
|
+
const generated = yield* managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooksWebhookIdGenerateHmac2.run({
|
|
121
|
+
merchantId: input.config.merchantId,
|
|
122
|
+
webhookId
|
|
123
|
+
}, context);
|
|
124
|
+
if (generated.status !== 200)
|
|
125
|
+
return yield* Action_exports.ActionHandlerError.make({ message: "Adyen did not return the HMAC key of the registered webhook" });
|
|
126
|
+
return generated.body.hmacKey;
|
|
127
|
+
}), () => managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId2.run({
|
|
128
|
+
merchantId: input.config.merchantId,
|
|
129
|
+
webhookId
|
|
130
|
+
}, context)),
|
|
131
|
+
webhookId
|
|
132
|
+
} };
|
|
133
|
+
}),
|
|
134
|
+
deactivate: fn("Adyen.event.deactivate")(function* (input, context) {
|
|
135
|
+
if (input.state === undefined)
|
|
136
|
+
return;
|
|
137
|
+
yield* managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId2.run({
|
|
138
|
+
merchantId: input.config.merchantId,
|
|
139
|
+
webhookId: input.state.webhookId
|
|
140
|
+
}, context);
|
|
141
|
+
}),
|
|
142
|
+
parse: fn("Adyen.event.parse")(function* (input) {
|
|
143
|
+
const notification = yield* decodeUnknownEffect(Notification)(input.request.body);
|
|
144
|
+
return {
|
|
145
|
+
events: map3(notification.notificationItems, (wrapper) => ({
|
|
146
|
+
key: join([
|
|
147
|
+
wrapper.NotificationRequestItem.pspReference,
|
|
148
|
+
wrapper.NotificationRequestItem.originalReference ?? "",
|
|
149
|
+
wrapper.NotificationRequestItem.merchantAccountCode,
|
|
150
|
+
wrapper.NotificationRequestItem.merchantReference ?? "",
|
|
151
|
+
`${wrapper.NotificationRequestItem.amount?.value ?? ""}`,
|
|
152
|
+
wrapper.NotificationRequestItem.amount?.currency ?? "",
|
|
153
|
+
wrapper.NotificationRequestItem.eventCode,
|
|
154
|
+
`${wrapper.NotificationRequestItem.success}`
|
|
155
|
+
], ":"),
|
|
156
|
+
payload: wrapper.NotificationRequestItem
|
|
157
|
+
})),
|
|
158
|
+
state: input.state
|
|
159
|
+
};
|
|
160
|
+
}),
|
|
161
|
+
verify: fn("Adyen.event.verify")(function* (input) {
|
|
162
|
+
const forged = Action_exports.ActionHandlerError.make({
|
|
163
|
+
message: "Invalid Adyen webhook signature",
|
|
164
|
+
status: 401
|
|
165
|
+
});
|
|
166
|
+
if (input.state === undefined)
|
|
167
|
+
return yield* forged;
|
|
168
|
+
const notification = yield* mapError(decodeUnknownEffect(Notification)(input.request.body), () => forged);
|
|
169
|
+
const rawKey = yield* mapError(fromResult(decode(input.state.hmacKey)), () => forged);
|
|
170
|
+
const results = yield* forEach(notification.notificationItems, (wrapper) => {
|
|
171
|
+
const item = wrapper.NotificationRequestItem;
|
|
172
|
+
return Trigger_exports.verifyHmac({
|
|
173
|
+
algorithm: "sha256",
|
|
174
|
+
encoding: "base64",
|
|
175
|
+
message: join([
|
|
176
|
+
item.pspReference,
|
|
177
|
+
item.originalReference ?? "",
|
|
178
|
+
item.merchantAccountCode,
|
|
179
|
+
item.merchantReference ?? "",
|
|
180
|
+
`${item.amount?.value ?? ""}`,
|
|
181
|
+
item.amount?.currency ?? "",
|
|
182
|
+
item.eventCode,
|
|
183
|
+
`${item.success}`
|
|
184
|
+
], ":"),
|
|
185
|
+
secret: rawKey,
|
|
186
|
+
signature: item.additionalData?.hmacSignature ?? ""
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
if (contains(results, false))
|
|
190
|
+
return yield* forged;
|
|
191
|
+
})
|
|
192
|
+
},
|
|
193
|
+
"platform-event": {
|
|
194
|
+
activate: fn("Adyen.platformEvent.activate")(function* (_input, context) {
|
|
195
|
+
if (context.auth.current.value.platformHmacKey === undefined)
|
|
196
|
+
return yield* Action_exports.ActionHandlerError.make({ message: "Configure the private platform HMAC key in the Adyen connection and subscribe to this trigger URL in the Customer Area" });
|
|
197
|
+
return { state: undefined };
|
|
198
|
+
}),
|
|
199
|
+
deactivate: () => void_2,
|
|
200
|
+
parse: fn("Adyen.platformEvent.parse")(function* (input) {
|
|
201
|
+
if (input.request.rawBody === undefined)
|
|
202
|
+
return yield* Action_exports.ActionHandlerError.make({ message: "The Adyen platform delivery has no raw body" });
|
|
203
|
+
const bytes = isString(input.request.rawBody) ? new TextEncoder().encode(input.request.rawBody) : input.request.rawBody;
|
|
204
|
+
const payload = yield* decodeEffect(fromJsonString(PlatformEvent))(new TextDecoder().decode(bytes));
|
|
205
|
+
const platform = payload.type === "balancePlatform.transfer.created" || payload.type === "balancePlatform.transfer.updated" ? payload.data.balancePlatform : payload.data.accountHolder?.balancePlatform ?? payload.data.balancePlatform;
|
|
206
|
+
if (input.config.eventTypes !== undefined && !contains(input.config.eventTypes, payload.type) || input.config.accountHolderId !== undefined && input.config.accountHolderId !== payload.data.accountHolder?.id || input.config.balancePlatform !== undefined && input.config.balancePlatform !== platform)
|
|
207
|
+
return {
|
|
208
|
+
events: [],
|
|
209
|
+
state: input.state
|
|
210
|
+
};
|
|
211
|
+
const digest = encode(new Uint8Array(yield* promise(() => crypto.subtle.digest("SHA-256", new Uint8Array(bytes)))));
|
|
212
|
+
return {
|
|
213
|
+
events: [{
|
|
214
|
+
key: `${payload.type}:${digest}`,
|
|
215
|
+
payload
|
|
216
|
+
}],
|
|
217
|
+
state: input.state
|
|
218
|
+
};
|
|
219
|
+
}),
|
|
220
|
+
verify: fn("Adyen.platformEvent.verify")(function* (input, context) {
|
|
221
|
+
const headers = input.request.headers ?? {};
|
|
222
|
+
const secret = context.auth.current.value.platformHmacKey;
|
|
223
|
+
if (secret === undefined || input.request.rawBody === undefined || headers["protocol"] !== "HmacSHA256")
|
|
224
|
+
return yield* Action_exports.ActionHandlerError.make({
|
|
225
|
+
message: "Invalid Adyen platform webhook signature",
|
|
226
|
+
status: 401
|
|
227
|
+
});
|
|
228
|
+
const rawKey = yield* mapError(fromResult(decode(secret)), (cause) => Action_exports.ActionHandlerError.make({
|
|
229
|
+
cause,
|
|
230
|
+
message: "Invalid Adyen platform HMAC key",
|
|
231
|
+
status: 401
|
|
232
|
+
}));
|
|
233
|
+
if (!(yield* Trigger_exports.verifyHmac({
|
|
234
|
+
algorithm: "sha256",
|
|
235
|
+
encoding: "base64",
|
|
236
|
+
message: input.request.rawBody,
|
|
237
|
+
secret: rawKey,
|
|
238
|
+
signature: headers["hmacsignature"] ?? ""
|
|
239
|
+
})))
|
|
240
|
+
return yield* Action_exports.ActionHandlerError.make({
|
|
241
|
+
message: "Invalid Adyen platform webhook signature",
|
|
242
|
+
status: 401
|
|
243
|
+
});
|
|
244
|
+
})
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
export { triggers2, handlers2 };
|
|
248
|
+
|
|
249
|
+
//# debugId=6FEA1B6159C60E1664756E2164756E21
|
|
250
|
+
//# sourceMappingURL=plugin-ctytbs1j.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../bundle-input/dist/triggers.js"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId, managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooks, managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooksWebhookIdGenerateHmac } from \"./generated/operations.js\";\nimport { Array, Effect, Predicate, Schema } from \"effect\";\nimport { Action, Trigger } from \"@dual-os/sdk\";\nimport { Hex } from \"effect/encoding\";\n//#region src/triggers.ts\nconst Item = Schema.StructWithRest(Schema.Struct({\n\tadditionalData: Schema.optionalKey(Schema.StructWithRest(Schema.Struct({ hmacSignature: Schema.optionalKey(Schema.String) }), [Schema.Record(Schema.String, Schema.Unknown)])),\n\tamount: Schema.optionalKey(Schema.Struct({\n\t\tcurrency: Schema.String,\n\t\tvalue: Schema.Finite\n\t})),\n\teventCode: Schema.String,\n\teventDate: Schema.String,\n\tmerchantAccountCode: Schema.String,\n\tmerchantReference: Schema.optionalKey(Schema.String),\n\toriginalReference: Schema.optionalKey(Schema.String),\n\tpspReference: Schema.String,\n\tsuccess: Schema.Union([Schema.Boolean, Schema.Literals([\"true\", \"false\"])])\n}), [Schema.Record(Schema.String, Schema.Unknown)]);\nconst Notification = Schema.Struct({ notificationItems: Schema.NonEmptyArray(Schema.Struct({ NotificationRequestItem: Item })) });\nconst event = Trigger.webhook(\"event\", {\n\tdescription: \"Triggers on Adyen webhook events for the merchant account, such as AUTHORISATION, CAPTURE, REFUND and CHARGEBACK. Each notification item is one event.\",\n\tname: \"Adyen event\",\n\tconfig: Schema.Struct({ merchantId: Schema.NonEmptyString.annotate({ description: \"The merchant account the standard webhook is configured on\" }) }),\n\toutput: Item,\n\tstate: Schema.Struct({\n\t\thmacKey: Schema.String,\n\t\twebhookId: Schema.String\n\t})\n});\nconst TransferEventType = Schema.Literals([\"balancePlatform.transfer.created\", \"balancePlatform.transfer.updated\"]);\nconst AccountHolderEventType = Schema.Literals([\"balancePlatform.accountHolder.created\", \"balancePlatform.accountHolder.updated\"]);\nconst PlatformEventType = Schema.Union([TransferEventType, AccountHolderEventType]);\nconst AccountHolder = Schema.StructWithRest(Schema.Struct({\n\tbalancePlatform: Schema.optionalKey(Schema.String),\n\tid: Schema.NonEmptyString\n}), [Schema.Record(Schema.String, Schema.Unknown)]);\nconst PlatformEvent = Schema.Union([Schema.StructWithRest(Schema.Struct({\n\tdata: Schema.StructWithRest(Schema.Struct({\n\t\taccountHolder: Schema.optionalKey(AccountHolder),\n\t\tbalancePlatform: Schema.optionalKey(Schema.String),\n\t\tid: Schema.NonEmptyString\n\t}), [Schema.Record(Schema.String, Schema.Unknown)]),\n\tenvironment: Schema.Literals([\"test\", \"live\"]),\n\ttimestamp: Schema.optionalKey(Schema.String),\n\ttype: TransferEventType\n}), [Schema.Record(Schema.String, Schema.Unknown)]), Schema.StructWithRest(Schema.Struct({\n\tdata: Schema.StructWithRest(Schema.Struct({\n\t\taccountHolder: AccountHolder,\n\t\tbalancePlatform: Schema.optionalKey(Schema.String)\n\t}), [Schema.Record(Schema.String, Schema.Unknown)]),\n\tenvironment: Schema.Literals([\"test\", \"live\"]),\n\ttimestamp: Schema.optionalKey(Schema.String),\n\ttype: AccountHolderEventType\n}), [Schema.Record(Schema.String, Schema.Unknown)])]);\nconst triggers = [event, Trigger.webhook(\"platform-event\", {\n\tdescription: \"Receives signed balance platform transfer and account holder events. Configure the subscription in Adyen and store the platform HMAC key in the connection.\",\n\tname: \"Adyen platform event\",\n\tconfig: Schema.Struct({\n\t\taccountHolderId: Schema.optionalKey(Schema.NonEmptyString).annotateKey({ description: \"Only emit events whose data.accountHolder.id matches this account holder\" }),\n\t\tbalancePlatform: Schema.optionalKey(Schema.NonEmptyString).annotateKey({ description: \"Only emit events for this balance platform, from data.balancePlatform for transfers and data.accountHolder.balancePlatform for account holder events\" }),\n\t\teventTypes: Schema.optionalKey(Schema.NonEmptyArray(PlatformEventType)).annotateKey({ description: \"Only emit the selected platform event types. Manually subscribe to Transfer and Configuration webhooks at this trigger URL in the Adyen Customer Area, with the HMAC key stored in connection material. Dual does not create or delete this external subscription.\" })\n\t}),\n\toutput: PlatformEvent\n})];\nconst handlers = {\n\tevent: {\n\t\tactivate: Effect.fn(\"Adyen.event.activate\")(function* (input, context) {\n\t\t\tconst created = yield* managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooks.run({\n\t\t\t\tmerchantId: input.config.merchantId,\n\t\t\t\tpayload: {\n\t\t\t\t\tactive: true,\n\t\t\t\t\tcommunicationFormat: \"json\",\n\t\t\t\t\tdescription: \"Created by Dual\",\n\t\t\t\t\ttype: \"standard\",\n\t\t\t\t\turl: input.webhookUrl\n\t\t\t\t}\n\t\t\t}, context);\n\t\t\tconst webhookId = created.status === 200 ? created.body.id : void 0;\n\t\t\tif (webhookId === void 0) return yield* Action.ActionHandlerError.make({ message: \"Adyen did not return the registered webhook\" });\n\t\t\treturn { state: {\n\t\t\t\thmacKey: yield* Effect.tapError(Effect.gen(function* () {\n\t\t\t\t\tconst generated = yield* managementWebhooksMerchantLevel_postMerchantsMerchantIdWebhooksWebhookIdGenerateHmac.run({\n\t\t\t\t\t\tmerchantId: input.config.merchantId,\n\t\t\t\t\t\twebhookId\n\t\t\t\t\t}, context);\n\t\t\t\t\tif (generated.status !== 200) return yield* Action.ActionHandlerError.make({ message: \"Adyen did not return the HMAC key of the registered webhook\" });\n\t\t\t\t\treturn generated.body.hmacKey;\n\t\t\t\t}), () => managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId.run({\n\t\t\t\t\tmerchantId: input.config.merchantId,\n\t\t\t\t\twebhookId\n\t\t\t\t}, context)),\n\t\t\t\twebhookId\n\t\t\t} };\n\t\t}),\n\t\tdeactivate: Effect.fn(\"Adyen.event.deactivate\")(function* (input, context) {\n\t\t\tif (input.state === void 0) return;\n\t\t\tyield* managementWebhooksMerchantLevel_deleteMerchantsMerchantIdWebhooksWebhookId.run({\n\t\t\t\tmerchantId: input.config.merchantId,\n\t\t\t\twebhookId: input.state.webhookId\n\t\t\t}, context);\n\t\t}),\n\t\tparse: Effect.fn(\"Adyen.event.parse\")(function* (input) {\n\t\t\tconst notification = yield* Schema.decodeUnknownEffect(Notification)(input.request.body);\n\t\t\treturn {\n\t\t\t\tevents: Array.map(notification.notificationItems, (wrapper) => ({\n\t\t\t\t\tkey: Array.join([\n\t\t\t\t\t\twrapper.NotificationRequestItem.pspReference,\n\t\t\t\t\t\twrapper.NotificationRequestItem.originalReference ?? \"\",\n\t\t\t\t\t\twrapper.NotificationRequestItem.merchantAccountCode,\n\t\t\t\t\t\twrapper.NotificationRequestItem.merchantReference ?? \"\",\n\t\t\t\t\t\t`${wrapper.NotificationRequestItem.amount?.value ?? \"\"}`,\n\t\t\t\t\t\twrapper.NotificationRequestItem.amount?.currency ?? \"\",\n\t\t\t\t\t\twrapper.NotificationRequestItem.eventCode,\n\t\t\t\t\t\t`${wrapper.NotificationRequestItem.success}`\n\t\t\t\t\t], \":\"),\n\t\t\t\t\tpayload: wrapper.NotificationRequestItem\n\t\t\t\t})),\n\t\t\t\tstate: input.state\n\t\t\t};\n\t\t}),\n\t\tverify: Effect.fn(\"Adyen.event.verify\")(function* (input) {\n\t\t\tconst forged = Action.ActionHandlerError.make({\n\t\t\t\tmessage: \"Invalid Adyen webhook signature\",\n\t\t\t\tstatus: 401\n\t\t\t});\n\t\t\tif (input.state === void 0) return yield* forged;\n\t\t\tconst notification = yield* Effect.mapError(Schema.decodeUnknownEffect(Notification)(input.request.body), () => forged);\n\t\t\tconst rawKey = yield* Effect.mapError(Effect.fromResult(Hex.decode(input.state.hmacKey)), () => forged);\n\t\t\tconst results = yield* Effect.forEach(notification.notificationItems, (wrapper) => {\n\t\t\t\tconst item = wrapper.NotificationRequestItem;\n\t\t\t\treturn Trigger.verifyHmac({\n\t\t\t\t\talgorithm: \"sha256\",\n\t\t\t\t\tencoding: \"base64\",\n\t\t\t\t\tmessage: Array.join([\n\t\t\t\t\t\titem.pspReference,\n\t\t\t\t\t\titem.originalReference ?? \"\",\n\t\t\t\t\t\titem.merchantAccountCode,\n\t\t\t\t\t\titem.merchantReference ?? \"\",\n\t\t\t\t\t\t`${item.amount?.value ?? \"\"}`,\n\t\t\t\t\t\titem.amount?.currency ?? \"\",\n\t\t\t\t\t\titem.eventCode,\n\t\t\t\t\t\t`${item.success}`\n\t\t\t\t\t], \":\"),\n\t\t\t\t\tsecret: rawKey,\n\t\t\t\t\tsignature: item.additionalData?.hmacSignature ?? \"\"\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (Array.contains(results, false)) return yield* forged;\n\t\t})\n\t},\n\t\"platform-event\": {\n\t\tactivate: Effect.fn(\"Adyen.platformEvent.activate\")(function* (_input, context) {\n\t\t\tif (context.auth.current.value.platformHmacKey === void 0) return yield* Action.ActionHandlerError.make({ message: \"Configure the private platform HMAC key in the Adyen connection and subscribe to this trigger URL in the Customer Area\" });\n\t\t\treturn { state: void 0 };\n\t\t}),\n\t\tdeactivate: () => Effect.void,\n\t\tparse: Effect.fn(\"Adyen.platformEvent.parse\")(function* (input) {\n\t\t\tif (input.request.rawBody === void 0) return yield* Action.ActionHandlerError.make({ message: \"The Adyen platform delivery has no raw body\" });\n\t\t\tconst bytes = Predicate.isString(input.request.rawBody) ? new TextEncoder().encode(input.request.rawBody) : input.request.rawBody;\n\t\t\tconst payload = yield* Schema.decodeEffect(Schema.fromJsonString(PlatformEvent))(new TextDecoder().decode(bytes));\n\t\t\tconst platform = payload.type === \"balancePlatform.transfer.created\" || payload.type === \"balancePlatform.transfer.updated\" ? payload.data.balancePlatform : payload.data.accountHolder?.balancePlatform ?? payload.data.balancePlatform;\n\t\t\tif (input.config.eventTypes !== void 0 && !Array.contains(input.config.eventTypes, payload.type) || input.config.accountHolderId !== void 0 && input.config.accountHolderId !== payload.data.accountHolder?.id || input.config.balancePlatform !== void 0 && input.config.balancePlatform !== platform) return {\n\t\t\t\tevents: [],\n\t\t\t\tstate: input.state\n\t\t\t};\n\t\t\tconst digest = Hex.encode(new Uint8Array(yield* Effect.promise(() => crypto.subtle.digest(\"SHA-256\", new Uint8Array(bytes)))));\n\t\t\treturn {\n\t\t\t\tevents: [{\n\t\t\t\t\tkey: `${payload.type}:${digest}`,\n\t\t\t\t\tpayload\n\t\t\t\t}],\n\t\t\t\tstate: input.state\n\t\t\t};\n\t\t}),\n\t\tverify: Effect.fn(\"Adyen.platformEvent.verify\")(function* (input, context) {\n\t\t\tconst headers = input.request.headers ?? {};\n\t\t\tconst secret = context.auth.current.value.platformHmacKey;\n\t\t\tif (secret === void 0 || input.request.rawBody === void 0 || headers[\"protocol\"] !== \"HmacSHA256\") return yield* Action.ActionHandlerError.make({\n\t\t\t\tmessage: \"Invalid Adyen platform webhook signature\",\n\t\t\t\tstatus: 401\n\t\t\t});\n\t\t\tconst rawKey = yield* Effect.mapError(Effect.fromResult(Hex.decode(secret)), (cause) => Action.ActionHandlerError.make({\n\t\t\t\tcause,\n\t\t\t\tmessage: \"Invalid Adyen platform HMAC key\",\n\t\t\t\tstatus: 401\n\t\t\t}));\n\t\t\tif (!(yield* Trigger.verifyHmac({\n\t\t\t\talgorithm: \"sha256\",\n\t\t\t\tencoding: \"base64\",\n\t\t\t\tmessage: input.request.rawBody,\n\t\t\t\tsecret: rawKey,\n\t\t\t\tsignature: headers[\"hmacsignature\"] ?? \"\"\n\t\t\t}))) return yield* Action.ActionHandlerError.make({\n\t\t\t\tmessage: \"Invalid Adyen platform webhook signature\",\n\t\t\t\tstatus: 401\n\t\t\t});\n\t\t})\n\t}\n};\n//#endregion\nexport { handlers, triggers };\n\n//# sourceMappingURL=triggers.js.map"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "6FEA1B6159C60E1664756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|