@keetanetwork/anchor 0.0.23 → 0.0.25
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/lib/certificates.d.ts +1 -4
- package/lib/certificates.d.ts.map +1 -1
- package/lib/certificates.js +14 -148
- package/lib/certificates.js.map +1 -1
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +2 -1
- package/lib/error.js.map +1 -1
- package/lib/http-server/common.d.ts +11 -0
- package/lib/http-server/common.d.ts.map +1 -1
- package/lib/http-server/common.js +110 -1
- package/lib/http-server/common.js.map +1 -1
- package/lib/http-server/index.js +2 -2
- package/lib/http-server/index.js.map +1 -1
- package/lib/resolver.d.ts +28 -8
- package/lib/resolver.d.ts.map +1 -1
- package/lib/resolver.js +543 -302
- package/lib/resolver.js.map +1 -1
- package/lib/utils/asn1.d.ts +13 -0
- package/lib/utils/asn1.d.ts.map +1 -1
- package/lib/utils/asn1.js +1973 -0
- package/lib/utils/asn1.js.map +1 -1
- package/lib/utils/external.d.ts.map +1 -1
- package/lib/utils/external.js +2 -9
- package/lib/utils/external.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/services/asset-movement/client.d.ts +21 -11
- package/services/asset-movement/client.d.ts.map +1 -1
- package/services/asset-movement/client.js +396 -89
- package/services/asset-movement/client.js.map +1 -1
- package/services/asset-movement/common.d.ts +410 -35
- package/services/asset-movement/common.d.ts.map +1 -1
- package/services/asset-movement/common.js +10176 -1492
- package/services/asset-movement/common.js.map +1 -1
- package/services/asset-movement/server.d.ts +25 -14
- package/services/asset-movement/server.d.ts.map +1 -1
- package/services/asset-movement/server.js +247 -75
- package/services/asset-movement/server.js.map +1 -1
- package/services/fx/common.js +3 -3
- package/services/fx/server.d.ts +1 -1
- package/services/fx/server.d.ts.map +1 -1
- package/services/fx/server.js +1 -1
- package/services/fx/server.js.map +1 -1
- package/services/kyc/common.generated.js +2 -2
- package/services/kyc/iso20022.generated.js +54 -54
- package/services/kyc/iso20022.generated.js.map +1 -1
- package/services/kyc/server.d.ts +1 -1
- package/services/kyc/server.d.ts.map +1 -1
- package/services/kyc/server.js +1 -1
- package/services/kyc/server.js.map +1 -1
- package/services/kyc/utils/generate-kyc-schema.js +6 -34
- package/services/kyc/utils/generate-kyc-schema.js.map +1 -1
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
|
|
2
|
+
import { KeetaNet } from '../../client/index.js';
|
|
2
3
|
import { KeetaAnchorUserError } from '../../lib/error.js';
|
|
3
|
-
import { assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse, assertKeetaAssetMovementAnchorInitiateTransferRequest, assertKeetaAssetMovementAnchorInitiateTransferResponse,
|
|
4
|
+
import { assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse, assertKeetaAssetMovementAnchorInitiateTransferRequest, assertKeetaAssetMovementAnchorInitiateTransferResponse, assertKeetaAssetMovementAnchorGetTransferStatusResponse, assertKeetaAssetMovementAnchorlistTransactionsRequest, assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, assertKeetaAssetMovementAnchorListPersistentForwardingRequest, assertKeetaAssetMovementAnchorListPersistentForwardingResponse, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData, assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest, assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse, getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData, getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData, getKeetaAssetMovementAnchorInitiateTransferRequestSigningData, assertKeetaAssetMovementAnchorShareKYCResponse, assertKeetaAssetMovementAnchorShareKYCRequest, getKeetaAssetMovementAnchorShareKYCRequestSigningData, convertAssetLocationToString, commonJSONStringify, getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData, getKeetaAssetMovementAnchorlistTransactionsRequestSigningData, getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData } from './common.js';
|
|
5
|
+
import { VerifySignedData } from '../../lib/utils/signing.js';
|
|
6
|
+
import { assertHTTPSignedField, parseSignatureFromURL } from '../../lib/http-server/common.js';
|
|
4
7
|
;
|
|
8
|
+
function serializeTransactionResponse(transaction) {
|
|
9
|
+
return ({
|
|
10
|
+
...transaction,
|
|
11
|
+
from: {
|
|
12
|
+
...transaction.from,
|
|
13
|
+
location: convertAssetLocationToString(transaction.from.location)
|
|
14
|
+
},
|
|
15
|
+
to: {
|
|
16
|
+
...transaction.to,
|
|
17
|
+
location: convertAssetLocationToString(transaction.to.location)
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function serializePersistentAddressTemplateResponse(template) {
|
|
22
|
+
return ({
|
|
23
|
+
...template,
|
|
24
|
+
location: convertAssetLocationToString(template.location)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
5
27
|
export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer {
|
|
6
28
|
homepage;
|
|
7
29
|
client;
|
|
@@ -35,101 +57,251 @@ export class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer
|
|
|
35
57
|
});
|
|
36
58
|
};
|
|
37
59
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
60
|
+
function addRoute(input) {
|
|
61
|
+
const handler = config.assetMovement[input.handlerName];
|
|
62
|
+
if (handler === undefined) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (typeof handler !== 'function') {
|
|
66
|
+
throw (new Error(`internal error: handler for ${String(input.handlerName)} is not a function`));
|
|
67
|
+
}
|
|
68
|
+
const authenticationRequired = config.assetMovement.authenticationRequired === true;
|
|
69
|
+
routes[`${input.method} /api/${input.pathName ?? input.handlerName}`] = async function (params, postData, _ignore_headers, url) {
|
|
70
|
+
let request;
|
|
71
|
+
if (input.method === 'GET') {
|
|
72
|
+
// For GET requests, we do not expect a body
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
74
|
+
request = undefined;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (!input.assertRequest) {
|
|
78
|
+
throw (new Error('input.assertRequest is required when method = POST'));
|
|
79
|
+
}
|
|
80
|
+
request = input.assertRequest(postData);
|
|
81
|
+
}
|
|
82
|
+
let account = null;
|
|
83
|
+
if (authenticationRequired || (request !== undefined && 'signed' in request)) {
|
|
84
|
+
let signed;
|
|
85
|
+
if (input.getSignatureFieldAccountFromRequest !== undefined) {
|
|
86
|
+
const parsed = input.getSignatureFieldAccountFromRequest({ body: postData, url });
|
|
87
|
+
if (!parsed.account || !parsed.signedField) {
|
|
88
|
+
throw (new KeetaAnchorUserError('Missing authentication information'));
|
|
89
|
+
}
|
|
90
|
+
account = parsed.account;
|
|
91
|
+
signed = parsed.signedField;
|
|
92
|
+
}
|
|
93
|
+
else if (request) {
|
|
94
|
+
if (!('account' in request) || !('signed' in request)) {
|
|
95
|
+
throw (new KeetaAnchorUserError('Missing authentication information'));
|
|
96
|
+
}
|
|
97
|
+
if (typeof request.account !== 'string') {
|
|
98
|
+
throw (new KeetaAnchorUserError('Invalid account public key'));
|
|
99
|
+
}
|
|
100
|
+
account = KeetaNet.lib.Account.fromPublicKeyString(request.account).assertAccount();
|
|
101
|
+
signed = assertHTTPSignedField(request.signed);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
throw (new Error('when request is not defined, getSignatureFieldAccountFromRequest must be provided'));
|
|
105
|
+
}
|
|
106
|
+
const signable = input.getSigningData ? input.getSigningData(request, params) : [];
|
|
107
|
+
const valid = await VerifySignedData(account, signable, signed);
|
|
108
|
+
if (!valid) {
|
|
109
|
+
throw (new KeetaAnchorUserError('Invalid signature'));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
|
+
let parsedRequest;
|
|
114
|
+
if (input.parseRequestToArgs) {
|
|
115
|
+
parsedRequest = input.parseRequestToArgs({ body: request, params, url, account: account ?? null });
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
parsedRequest = [request, account];
|
|
119
|
+
}
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
121
|
+
const result = await handler(...parsedRequest);
|
|
122
|
+
if ('ok' in result && (result.ok !== undefined && result.ok !== true)) {
|
|
123
|
+
throw (new Error('internal error: response serialization must not have ok field'));
|
|
124
|
+
}
|
|
125
|
+
const resp = input.assertResponse({ ...result, ok: true });
|
|
126
|
+
let serialized;
|
|
127
|
+
if (input.serializeResponse) {
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
129
|
+
serialized = input.serializeResponse(resp);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
serialized = resp;
|
|
45
133
|
}
|
|
46
|
-
const request = assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest(postData);
|
|
47
|
-
const result = await config.assetMovement.createPersistentForwarding(request);
|
|
48
|
-
const output = {
|
|
49
|
-
...result,
|
|
50
|
-
ok: true
|
|
51
|
-
};
|
|
52
|
-
assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse(output);
|
|
53
134
|
return ({
|
|
54
|
-
output:
|
|
135
|
+
output: commonJSONStringify(serialized)
|
|
55
136
|
});
|
|
56
137
|
};
|
|
57
138
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const output = {
|
|
66
|
-
...result,
|
|
67
|
-
ok: true
|
|
68
|
-
};
|
|
69
|
-
assertKeetaAssetMovementAnchorInitiateTransferResponse(output);
|
|
139
|
+
addRoute({
|
|
140
|
+
method: 'POST',
|
|
141
|
+
handlerName: 'createPersistentForwarding',
|
|
142
|
+
assertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,
|
|
143
|
+
assertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,
|
|
144
|
+
getSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,
|
|
145
|
+
serializeResponse(data) {
|
|
70
146
|
return ({
|
|
71
|
-
|
|
147
|
+
...data,
|
|
148
|
+
sourceLocation: data.sourceLocation ? convertAssetLocationToString(data.sourceLocation) : undefined,
|
|
149
|
+
destinationLocation: data.destinationLocation ? convertAssetLocationToString(data.destinationLocation) : undefined
|
|
72
150
|
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
addRoute({
|
|
154
|
+
method: 'POST',
|
|
155
|
+
handlerName: 'listPersistentForwarding',
|
|
156
|
+
assertRequest: assertKeetaAssetMovementAnchorListPersistentForwardingRequest,
|
|
157
|
+
assertResponse: assertKeetaAssetMovementAnchorListPersistentForwardingResponse,
|
|
158
|
+
getSigningData: getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData,
|
|
159
|
+
serializeResponse(data) {
|
|
160
|
+
return ({
|
|
161
|
+
...data,
|
|
162
|
+
addresses: data.addresses.map(addr => ({
|
|
163
|
+
...addr,
|
|
164
|
+
sourceLocation: addr.sourceLocation ? convertAssetLocationToString(addr.sourceLocation) : undefined,
|
|
165
|
+
destinationLocation: addr.destinationLocation ? convertAssetLocationToString(addr.destinationLocation) : undefined
|
|
166
|
+
}))
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
addRoute({
|
|
171
|
+
method: 'POST',
|
|
172
|
+
handlerName: 'initiateTransfer',
|
|
173
|
+
getSigningData: getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,
|
|
174
|
+
assertRequest: assertKeetaAssetMovementAnchorInitiateTransferRequest,
|
|
175
|
+
assertResponse: assertKeetaAssetMovementAnchorInitiateTransferResponse,
|
|
176
|
+
serializeResponse(data) {
|
|
177
|
+
return ({
|
|
178
|
+
...data,
|
|
179
|
+
instructionChoices: data.instructionChoices.map(function (choice) {
|
|
180
|
+
const ret = { ...choice };
|
|
181
|
+
if ('location' in ret) {
|
|
182
|
+
ret.location = convertAssetLocationToString(ret.location);
|
|
183
|
+
}
|
|
184
|
+
return (ret);
|
|
185
|
+
})
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
addRoute({
|
|
190
|
+
method: 'GET',
|
|
191
|
+
handlerName: 'getTransferStatus',
|
|
192
|
+
pathName: 'getTransferStatus/:id',
|
|
193
|
+
assertRequest: (input) => {
|
|
194
|
+
if (input !== undefined) {
|
|
195
|
+
throw (new KeetaAnchorUserError('No body expected for getTransferStatus'));
|
|
196
|
+
}
|
|
197
|
+
return (undefined);
|
|
198
|
+
},
|
|
199
|
+
assertResponse: assertKeetaAssetMovementAnchorGetTransferStatusResponse,
|
|
200
|
+
getSignatureFieldAccountFromRequest: ({ url }) => parseSignatureFromURL(url),
|
|
201
|
+
parseRequestToArgs: ({ params, account }) => {
|
|
202
|
+
const id = params.get('id');
|
|
203
|
+
if (typeof id !== 'string' || id.length === 0) {
|
|
204
|
+
throw (new KeetaAnchorUserError('Missing or invalid id parameter'));
|
|
79
205
|
}
|
|
206
|
+
return [id, account];
|
|
207
|
+
},
|
|
208
|
+
getSigningData(_ignore_request, params) {
|
|
80
209
|
const id = params.get('id');
|
|
81
210
|
if (typeof id !== 'string' || id.length === 0) {
|
|
82
211
|
throw (new KeetaAnchorUserError('Missing or invalid id parameter'));
|
|
83
212
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
213
|
+
return (getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData({ id }));
|
|
214
|
+
},
|
|
215
|
+
serializeResponse(data) {
|
|
216
|
+
return ({
|
|
217
|
+
...data,
|
|
218
|
+
transaction: serializeTransactionResponse(data.transaction)
|
|
89
219
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
addRoute({
|
|
223
|
+
method: 'POST',
|
|
224
|
+
handlerName: 'listTransactions',
|
|
225
|
+
assertRequest: assertKeetaAssetMovementAnchorlistTransactionsRequest,
|
|
226
|
+
assertResponse: assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,
|
|
227
|
+
getSigningData: getKeetaAssetMovementAnchorlistTransactionsRequestSigningData,
|
|
228
|
+
serializeResponse(data) {
|
|
96
229
|
return ({
|
|
97
|
-
|
|
230
|
+
...data,
|
|
231
|
+
transactions: data.transactions.map(tx => serializeTransactionResponse(tx))
|
|
98
232
|
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const output = {
|
|
109
|
-
...result,
|
|
110
|
-
ok: true
|
|
111
|
-
};
|
|
112
|
-
assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse(output);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
addRoute({
|
|
236
|
+
method: 'POST',
|
|
237
|
+
handlerName: 'createPersistentForwardingTemplate',
|
|
238
|
+
assertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,
|
|
239
|
+
assertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,
|
|
240
|
+
getSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,
|
|
241
|
+
serializeResponse(data) {
|
|
113
242
|
return ({
|
|
114
|
-
|
|
243
|
+
...data,
|
|
244
|
+
...(serializePersistentAddressTemplateResponse(data))
|
|
115
245
|
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
addRoute({
|
|
249
|
+
method: 'POST',
|
|
250
|
+
handlerName: 'listPersistentForwardingTemplate',
|
|
251
|
+
assertRequest: assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,
|
|
252
|
+
assertResponse: assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,
|
|
253
|
+
getSigningData: getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,
|
|
254
|
+
serializeResponse(data) {
|
|
255
|
+
return ({
|
|
256
|
+
...data,
|
|
257
|
+
templates: data.templates.map(template => serializePersistentAddressTemplateResponse(template))
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
addRoute({
|
|
262
|
+
method: 'POST',
|
|
263
|
+
handlerName: 'shareKYC',
|
|
264
|
+
assertRequest: assertKeetaAssetMovementAnchorShareKYCRequest,
|
|
265
|
+
assertResponse: assertKeetaAssetMovementAnchorShareKYCResponse,
|
|
266
|
+
getSigningData: getKeetaAssetMovementAnchorShareKYCRequestSigningData
|
|
267
|
+
});
|
|
118
268
|
return (routes);
|
|
119
269
|
}
|
|
120
270
|
async serviceMetadata() {
|
|
121
271
|
const operations = {};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
272
|
+
const routes = [
|
|
273
|
+
'initiateTransfer',
|
|
274
|
+
'listTransactions',
|
|
275
|
+
'createPersistentForwardingTemplate',
|
|
276
|
+
'listPersistentForwardingTemplate',
|
|
277
|
+
'createPersistentForwarding',
|
|
278
|
+
'listPersistentForwarding',
|
|
279
|
+
'shareKYC',
|
|
280
|
+
['getTransferStatus', 'getTransferStatus/{id}']
|
|
281
|
+
];
|
|
282
|
+
for (const routeInput of routes) {
|
|
283
|
+
let op;
|
|
284
|
+
let url;
|
|
285
|
+
if (Array.isArray(routeInput)) {
|
|
286
|
+
op = routeInput[0];
|
|
287
|
+
url = routeInput[1];
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
op = routeInput;
|
|
291
|
+
url = routeInput;
|
|
292
|
+
}
|
|
293
|
+
if (this.assetMovement[op] !== undefined) {
|
|
294
|
+
const computedURL = (new URL(`/api/${url}`, this.url)).toString();
|
|
295
|
+
if (this.assetMovement.authenticationRequired) {
|
|
296
|
+
operations[op] = {
|
|
297
|
+
url: computedURL,
|
|
298
|
+
options: { authentication: { method: 'keeta-account', type: 'required' } }
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
operations[op] = computedURL;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
133
305
|
}
|
|
134
306
|
if (Object.keys(operations).length === 0) {
|
|
135
307
|
throw (new KeetaAnchorUserError('No operations are supported on this server'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,gCAAgC,CAAC;AAExE,OAAO,EACN,oBAAoB,EACpB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EACN,+DAA+D,EAC/D,gEAAgE,EAChE,qDAAqD,EACrD,sDAAsD,EACtD,sDAAsD,EACtD,uDAAuD,EACvD,qDAAqD,EACrD,0EAA0E,EAC1E,MAAM,aAAa,CAAC;AA2CpB,CAAC;AAEF,MAAM,OAAO,qCAAsC,SAAQ,qBAAqB,CAAC,wBAA8D;IACrI,QAAQ,CAAgE;IACxE,MAAM,CAAiD;IACvD,aAAa,CAAqE;IAE3F,YAAY,MAA4C;QACvD,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,MAA4C;QACtE,MAAM,MAAM,GAAiC,EAAE,CAAC;QAEhD;;WAEG;QACH,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK;gBACtB,IAAI,YAAoB,CAAC;gBACzB,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACzC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACtB,MAAK,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;oBACnE,CAAC;oBAED,YAAY,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACxC,CAAC;gBAED,OAAM,CAAC;oBACN,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,WAAW;iBACxB,CAAC,CAAC;YACJ,CAAC,CAAC;QACH,CAAC;QAED;;WAEG;QACH,IAAI,MAAM,CAAC,aAAa,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,CAAC,sCAAsC,CAAC,GAAG,KAAK,WAAU,cAAc,EAAE,QAAQ;gBACvF,IAAI,MAAM,CAAC,aAAa,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;oBACnE,MAAK,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;gBAC5E,CAAC;gBAED,MAAM,OAAO,GAAG,+DAA+D,CAAC,QAAQ,CAAC,CAAC;gBAC1F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBAC9E,MAAM,MAAM,GAA+D;oBAC1E,GAAG,MAAM;oBACT,EAAE,EAAE,IAAI;iBACR,CAAC;gBAEF,gEAAgE,CAAC,MAAM,CAAC,CAAC;gBAEzE,OAAM,CAAC;oBACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAC;YACJ,CAAC,CAAA;QACF,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,CAAC,4BAA4B,CAAC,GAAG,KAAK,WAAU,cAAc,EAAE,QAAQ;gBAC7E,IAAI,MAAM,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACzD,MAAK,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,OAAO,GAAG,qDAAqD,CAAC,QAAQ,CAAC,CAAC;gBAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,MAAM,GAAqD;oBAChE,GAAG,MAAM;oBACT,EAAE,EAAE,IAAI;iBACR,CAAC;gBAEF,sDAAsD,CAAC,MAAM,CAAC,CAAC;gBAE/D,OAAM,CAAC;oBACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAC;YACJ,CAAC,CAAA;QACF,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,CAAC,gCAAgC,CAAC,GAAG,KAAK,WAAU,MAAM;gBAC/D,IAAI,MAAM,CAAC,aAAa,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBAC1D,MAAK,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBACnE,CAAC;gBAED,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/C,MAAK,CAAC,IAAI,oBAAoB,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED;;mBAEG;gBACH,MAAM,OAAO,GAAG,sDAAsD,CAAC;oBACtE,EAAE,EAAE,EAAE;iBACqD,CAAC,CAAC;gBAE9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAsD;oBACjE,GAAG,MAAM;oBACT,EAAE,EAAE,IAAI;iBACR,CAAC;gBAEF,uDAAuD,CAAC,MAAM,CAAC,CAAC;gBAEhE,OAAM,CAAC;oBACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAC;YACJ,CAAC,CAAA;QACF,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,CAAC,4BAA4B,CAAC,GAAG,KAAK,WAAU,cAAc,EAAE,QAAQ;gBAC7E,IAAI,MAAM,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACzD,MAAK,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,OAAO,GAAG,qDAAqD,CAAC,QAAQ,CAAC,CAAC;gBAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,MAAM,GAAyE;oBACpF,GAAG,MAAM;oBACT,EAAE,EAAE,IAAI;iBACR,CAAC;gBAEF,0EAA0E,CAAC,MAAM,CAAC,CAAC;gBAEnF,OAAM,CAAC;oBACN,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;iBAC9B,CAAC,CAAC;YACJ,CAAC,CAAA;QACF,CAAC;QAED,OAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,eAAe;QACpB,MAAM,UAAU,GAAoF,EAAE,CAAC;QAEvG,IAAI,IAAI,CAAC,aAAa,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;YACjE,UAAU,CAAC,0BAA0B,GAAG,CAAC,IAAI,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACvD,UAAU,CAAC,gBAAgB,GAAG,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACxD,UAAU,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9F,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACvD,UAAU,CAAC,gBAAgB,GAAG,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvF,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAK,CAAC,IAAI,oBAAoB,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAM,CAAC;YACN,UAAU,EAAE,UAAU;YACtB,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe;SACnD,CAAC,CAAC;IACJ,CAAC;CACD","sourcesContent":["import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';\nimport type KeetaNet from '@keetanetwork/keetanet-client';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tKeetaAssetMovementAnchorInitiateTransferRequest,\n\tKeetaAssetMovementAnchorInitiateTransferResponse,\n\tKeetaAssetMovementAnchorGetTransferStatusRequest,\n\tKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tKeetaAssetMovementAnchorlistTransactionsRequest,\n\tKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse\n} from './common.ts';\nimport {\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorInitiateTransferRequest,\n\tassertKeetaAssetMovementAnchorInitiateTransferResponse,\n\tassertKeetaAssetMovementAnchorGetTransferStatusRequest,\n\tassertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tassertKeetaAssetMovementAnchorlistTransactionsRequest,\n\tassertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse\n} from './common.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\n\nexport interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * The network client to use for submitting blocks\n\t */\n\tclient: { client: KeetaNet.Client; network: bigint; networkAlias: typeof KeetaNet.Client.Config.networksArray[number] } | KeetaNet.UserClient;\n\n\t/**\n\t * Configuration for asset movement operations\n\t */\n\tassetMovement: {\n\t\t/**\n\t\t * Supported assets and their configurations\n\t\t */\n\t\tsupportedAssets: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['supportedAssets'];\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address\n\t\t */\n\t\tcreatePersistentForwarding?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingRequest) => Promise<Omit<Extract<KeetaAssetMovementAnchorCreatePersistentForwardingResponse, { ok: true }>, 'ok'>>;\n\n\t\t/**\n\t\t * Method to initiate a transfer\n\t\t */\n\t\tinitiateTransfer?: (request: KeetaAssetMovementAnchorInitiateTransferRequest) => Promise<Omit<Extract<KeetaAssetMovementAnchorInitiateTransferResponse, { ok: true }>, 'ok'>>;\n\n\t\t/**\n\t\t * Method to get the status of a transfer\n\t\t */\n\t\tgetTransferStatus?: (id: string) => Promise<Omit<Extract<KeetaAssetMovementAnchorGetTransferStatusResponse, { ok: true }>, 'ok'>>;\n\n\t\t/**\n\t\t * Method to list transactions\n\t\t */\n\t\tlistTransactions?: (request: KeetaAssetMovementAnchorlistTransactionsRequest) => Promise<Omit<Extract<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, { ok: true }>, 'ok'>>;\n\t}\n};\n\nexport class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorAssetMovementServerConfig> implements Required<KeetaAnchorAssetMovementServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorAssetMovementServerConfig['homepage']>;\n\treadonly client: KeetaAnchorAssetMovementServerConfig['client'];\n\treadonly assetMovement: NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement']>;\n\n\tconstructor(config: KeetaAnchorAssetMovementServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.client = config.client;\n\t\tthis.assetMovement = config.assetMovement;\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Setup the various operation endpoints\n\t\t */\n\t\tif (config.assetMovement.createPersistentForwarding !== undefined) {\n\t\t\troutes['POST /api/createPersistentForwarding'] = async function(_ignore_params, postData) {\n\t\t\t\tif (config.assetMovement.createPersistentForwarding === undefined) {\n\t\t\t\t\tthrow(new Error('internal error: createPersistentForwarding disappeared'));\n\t\t\t\t}\n\n\t\t\t\tconst request = assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest(postData);\n\t\t\t\tconst result = await config.assetMovement.createPersistentForwarding(request);\n\t\t\t\tconst output: KeetaAssetMovementAnchorCreatePersistentForwardingResponse = {\n\t\t\t\t\t...result,\n\t\t\t\t\tok: true\n\t\t\t\t};\n\n\t\t\t\tassertKeetaAssetMovementAnchorCreatePersistentForwardingResponse(output);\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: JSON.stringify(output)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (config.assetMovement.initiateTransfer !== undefined) {\n\t\t\troutes['POST /api/initiateTransfer'] = async function(_ignore_params, postData) {\n\t\t\t\tif (config.assetMovement.initiateTransfer === undefined) {\n\t\t\t\t\tthrow(new Error('internal error: initiateTransfer disappeared'));\n\t\t\t\t}\n\n\t\t\t\tconst request = assertKeetaAssetMovementAnchorInitiateTransferRequest(postData);\n\t\t\t\tconst result = await config.assetMovement.initiateTransfer(request);\n\t\t\t\tconst output: KeetaAssetMovementAnchorInitiateTransferResponse = {\n\t\t\t\t\t...result,\n\t\t\t\t\tok: true\n\t\t\t\t};\n\n\t\t\t\tassertKeetaAssetMovementAnchorInitiateTransferResponse(output);\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: JSON.stringify(output)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (config.assetMovement.getTransferStatus !== undefined) {\n\t\t\troutes['GET /api/getTransferStatus/:id'] = async function(params) {\n\t\t\t\tif (config.assetMovement.getTransferStatus === undefined) {\n\t\t\t\t\tthrow(new Error('internal error: getTransferStatus disappeared'));\n\t\t\t\t}\n\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Validate the request against the defined schema\n\t\t\t\t */\n\t\t\t\tconst request = assertKeetaAssetMovementAnchorGetTransferStatusRequest({\n\t\t\t\t\tid: id\n\t\t\t\t} satisfies KeetaAssetMovementAnchorGetTransferStatusRequest);\n\n\t\t\t\tconst result = await config.assetMovement.getTransferStatus(request.id);\n\t\t\t\tconst output: KeetaAssetMovementAnchorGetTransferStatusResponse = {\n\t\t\t\t\t...result,\n\t\t\t\t\tok: true\n\t\t\t\t};\n\n\t\t\t\tassertKeetaAssetMovementAnchorGetTransferStatusResponse(output);\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: JSON.stringify(output)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (config.assetMovement.listTransactions !== undefined) {\n\t\t\troutes['POST /api/listTransactions'] = async function(_ignore_params, postData) {\n\t\t\t\tif (config.assetMovement.listTransactions === undefined) {\n\t\t\t\t\tthrow(new Error('internal error: listTransactions disappeared'));\n\t\t\t\t}\n\n\t\t\t\tconst request = assertKeetaAssetMovementAnchorlistTransactionsRequest(postData);\n\t\t\t\tconst result = await config.assetMovement.listTransactions(request);\n\t\t\t\tconst output: KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse = {\n\t\t\t\t\t...result,\n\t\t\t\t\tok: true\n\t\t\t\t};\n\n\t\t\t\tassertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse(output);\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: JSON.stringify(output)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn(routes);\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]> {\n\t\tconst operations: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['operations'] = {};\n\n\t\tif (this.assetMovement.createPersistentForwarding !== undefined) {\n\t\t\toperations.createPersistentForwarding = (new URL('/api/createPersistentForwarding', this.url)).toString();\n\t\t}\n\t\tif (this.assetMovement.initiateTransfer !== undefined) {\n\t\t\toperations.initiateTransfer = (new URL('/api/initiateTransfer', this.url)).toString();\n\t\t}\n\t\tif (this.assetMovement.getTransferStatus !== undefined) {\n\t\t\toperations.getTransferStatus = (new URL('/api/getTransferStatus/{id}', this.url)).toString();\n\t\t}\n\t\tif (this.assetMovement.listTransactions !== undefined) {\n\t\t\toperations.listTransactions = (new URL('/api/listTransactions', this.url)).toString();\n\t\t}\n\n\t\tif (Object.keys(operations).length === 0) {\n\t\t\tthrow(new KeetaAnchorUserError('No operations are supported on this server'));\n\t\t}\n\t\treturn({\n\t\t\toperations: operations,\n\t\t\tsupportedAssets: this.assetMovement.supportedAssets\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/services/asset-movement/server.ts"],"names":[],"mappings":"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","sourcesContent":["import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';\nimport { KeetaNet } from '../../client/index.js';\nimport {\n\tKeetaAnchorUserError\n} from '../../lib/error.js';\nimport type {\n\tKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tKeetaAssetMovementAnchorInitiateTransferRequest,\n\tKeetaAssetMovementAnchorInitiateTransferResponse,\n\tKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tKeetaAssetMovementAnchorlistTransactionsRequest,\n\tKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tKeetaAssetMovementAnchorShareKYCRequest,\n\tKeetaAssetMovementAnchorShareKYCResponse\n} from './common.ts';\nimport {\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorInitiateTransferRequest,\n\tassertKeetaAssetMovementAnchorInitiateTransferResponse,\n\tassertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\tassertKeetaAssetMovementAnchorlistTransactionsRequest,\n\tassertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\tassertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\tassertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\tgetKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\tgetKeetaAssetMovementAnchorGetTransferStatusRequestSigningData,\n\tgetKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\tassertKeetaAssetMovementAnchorShareKYCResponse,\n\tassertKeetaAssetMovementAnchorShareKYCRequest,\n\tgetKeetaAssetMovementAnchorShareKYCRequestSigningData,\n\tconvertAssetLocationToString,\n\tcommonJSONStringify,\n\tgetKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\tgetKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\tgetKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData\n} from './common.js';\nimport type { ServiceMetadata } from '../../lib/resolver.ts';\nimport type { Signable } from '../../lib/utils/signing.js';\nimport { VerifySignedData } from '../../lib/utils/signing.js';\nimport type Account from '@keetanetwork/keetanet-client/lib/account.js';\nimport type { ExtractOk, HTTPSignedFieldURLParameters } from '../../lib/http-server/common.js';\nimport { assertHTTPSignedField, parseSignatureFromURL } from '../../lib/http-server/common.js';\nimport type { JSONSerializable } from '@keetanetwork/keetanet-client/lib/utils/conversion.js';\n\nexport interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {\n\t/**\n\t * The data to use for the index page (optional)\n\t */\n\thomepage?: string | (() => Promise<string> | string);\n\n\t/**\n\t * The network client to use for submitting blocks\n\t */\n\tclient: { client: KeetaNet.Client; network: bigint; networkAlias: typeof KeetaNet.Client.Config.networksArray[number] } | KeetaNet.UserClient;\n\n\t/**\n\t * Configuration for asset movement operations\n\t */\n\tassetMovement: {\n\t\t/**\n\t\t * Supported assets and their configurations\n\t\t */\n\t\tsupportedAssets: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['supportedAssets'];\n\n\t\tauthenticationRequired?: boolean;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address template\n\t\t */\n\t\tcreatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding address templates\n\t\t */\n\t\tlistPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorListForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>>;\n\n\t\t/**\n\t\t * Method to create a persistent forwarding address\n\t\t */\n\t\tcreatePersistentForwarding?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to list persistent forwarding addresses\n\t\t */\n\t\tlistPersistentForwarding?: (request: KeetaAssetMovementAnchorListPersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListPersistentForwardingResponse>>;\n\n\t\t/**\n\t\t * Method to initiate a transfer\n\t\t */\n\t\tinitiateTransfer?: (request: KeetaAssetMovementAnchorInitiateTransferRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>>;\n\n\t\t/**\n\t\t * Method to get the status of a transfer\n\t\t */\n\t\tgetTransferStatus?: (id: string, account: Account.Account | null) => Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;\n\n\t\t/**\n\t\t * Method to list transactions\n\t\t */\n\t\tlistTransactions?: (request: KeetaAssetMovementAnchorlistTransactionsRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse>>;\n\n\t\t/**\n\t\t * Method to share KYC (Know Your Customer) information\n\t\t */\n\t\tshareKYC?: (request: KeetaAssetMovementAnchorShareKYCRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorShareKYCResponse>>;\n\t}\n};\n\nfunction serializeTransactionResponse(transaction: ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction']): ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>['transaction'] {\n\treturn({\n\t\t...transaction,\n\t\tfrom: {\n\t\t\t...transaction.from,\n\t\t\tlocation: convertAssetLocationToString(transaction.from.location)\n\t\t},\n\t\tto: {\n\t\t\t...transaction.to,\n\t\t\tlocation: convertAssetLocationToString(transaction.to.location)\n\t\t}\n\t});\n}\n\nfunction serializePersistentAddressTemplateResponse(template: ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number]): ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>['templates'][number] {\n\treturn({\n\t\t...template,\n\t\tlocation: convertAssetLocationToString(template.location)\n\t});\n}\n\nexport class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorAssetMovementServerConfig> implements Required<KeetaAnchorAssetMovementServerConfig> {\n\treadonly homepage: NonNullable<KeetaAnchorAssetMovementServerConfig['homepage']>;\n\treadonly client: KeetaAnchorAssetMovementServerConfig['client'];\n\treadonly assetMovement: NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement']>;\n\n\tconstructor(config: KeetaAnchorAssetMovementServerConfig) {\n\t\tsuper(config);\n\n\t\tthis.homepage = config.homepage ?? '';\n\t\tthis.client = config.client;\n\t\tthis.assetMovement = config.assetMovement;\n\t}\n\n\tprotected async initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes> {\n\t\tconst routes: KeetaAnchorHTTPServer.Routes = {};\n\n\t\t/**\n\t\t * If a homepage is provided, setup the route for it\n\t\t */\n\t\tif ('homepage' in config) {\n\t\t\troutes['GET /'] = async function() {\n\t\t\t\tlet homepageData: string;\n\t\t\t\tif (typeof config.homepage === 'string') {\n\t\t\t\t\thomepageData = config.homepage;\n\t\t\t\t} else {\n\t\t\t\t\tif (!config.homepage) {\n\t\t\t\t\t\tthrow(new Error('internal error: No homepage function provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\thomepageData = await config.homepage();\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: homepageData,\n\t\t\t\t\tcontentType: 'text/html'\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tfunction addRoute<\n\t\t\tHandlerName extends keyof KeetaAnchorAssetMovementServerConfig['assetMovement'],\n\t\t\tSerializedRequest extends { [key: string]: unknown } | undefined,\n\t\t\tResponse\n\t\t>(input: {\n\t\t\tmethod: 'GET' | 'POST';\n\t\t\thandlerName: HandlerName;\n\t\t\tpathName?: string;\n\t\t\tassertRequest?: (data: unknown) => SerializedRequest;\n\t\t\tserializeResponse?: (data: ExtractOk<Response>) => unknown;\n\t\t\tassertResponse: (data: unknown) => Response;\n\t\t\tgetSigningData?: (data: SerializedRequest, params: Map<string, string>) => Signable;\n\t\t\tparseRequestToArgs?: (params: {\n\t\t\t\tparams: Map<string, string>;\n\t\t\t\tbody: JSONSerializable | SerializedRequest | undefined,\n\t\t\t\turl: URL,\n\t\t\t\taccount: Account.Account | null\n\t\t\t\t// Typescript needs any here, but eslint does not like it\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t}) => NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement'][HandlerName]> extends (...args: infer R extends [ any, Account.Account | null ]) => any ? R : never;\n\t\t\tgetSignatureFieldAccountFromRequest?: (params: { body: JSONSerializable | undefined, url: URL }) => Partial<HTTPSignedFieldURLParameters>;\n\t\t}) {\n\t\t\tconst handler = config.assetMovement[input.handlerName];\n\t\t\tif (handler === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof handler !== 'function') {\n\t\t\t\tthrow(new Error(`internal error: handler for ${String(input.handlerName)} is not a function`));\n\t\t\t}\n\n\t\t\tconst authenticationRequired = config.assetMovement.authenticationRequired === true;\n\n\t\t\troutes[`${input.method} /api/${input.pathName ?? input.handlerName}`] = async function(params, postData, _ignore_headers, url) {\n\t\t\t\tlet request: SerializedRequest;\n\t\t\t\tif (input.method === 'GET') {\n\t\t\t\t\t// For GET requests, we do not expect a body\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\trequest = undefined as SerializedRequest;\n\t\t\t\t} else {\n\t\t\t\t\tif (!input.assertRequest) {\n\t\t\t\t\t\tthrow(new Error('input.assertRequest is required when method = POST'));\n\t\t\t\t\t}\n\t\t\t\t\trequest = input.assertRequest(postData);\n\t\t\t\t}\n\n\t\t\t\tlet account: Account.Account | null = null;\n\t\t\t\tif (authenticationRequired || (request !== undefined && 'signed' in request)) {\n\t\t\t\t\tlet signed;\n\t\t\t\t\tif (input.getSignatureFieldAccountFromRequest !== undefined) {\n\t\t\t\t\t\tconst parsed = input.getSignatureFieldAccountFromRequest({ body: postData, url });\n\n\t\t\t\t\t\tif (!parsed.account || !parsed.signedField) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = parsed.account;\n\t\t\t\t\t\tsigned = parsed.signedField;\n\t\t\t\t\t} else if (request) {\n\t\t\t\t\t\tif (!('account' in request) || !('signed' in request)) {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing authentication information'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof request.account !== 'string') {\n\t\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid account public key'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taccount = KeetaNet.lib.Account.fromPublicKeyString(request.account).assertAccount();\n\t\t\t\t\t\tsigned = assertHTTPSignedField(request.signed);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow(new Error('when request is not defined, getSignatureFieldAccountFromRequest must be provided'));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst signable = input.getSigningData ? input.getSigningData(request, params) : [];\n\n\t\t\t\t\tconst valid = await VerifySignedData(account, signable, signed);\n\n\t\t\t\t\tif (!valid) {\n\t\t\t\t\t\tthrow(new KeetaAnchorUserError('Invalid signature'));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tlet parsedRequest: [ any, Account.Account | null ];\n\t\t\t\tif (input.parseRequestToArgs) {\n\t\t\t\t\tparsedRequest = input.parseRequestToArgs({ body: request, params, url, account: account ?? null });\n\t\t\t\t} else {\n\t\t\t\t\tparsedRequest = [ request, account ];\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tconst result = await handler(...parsedRequest);\n\n\t\t\t\tif ('ok' in result && (result.ok !== undefined && result.ok !== true)) {\n\t\t\t\t\tthrow(new Error('internal error: response serialization must not have ok field'));\n\t\t\t\t}\n\n\t\t\t\tconst resp = input.assertResponse({ ...result, ok: true });\n\n\t\t\t\tlet serialized;\n\t\t\t\tif (input.serializeResponse) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\t\t\t\tserialized = input.serializeResponse(resp as ExtractOk<Response>);\n\t\t\t\t} else {\n\t\t\t\t\tserialized = resp;\n\t\t\t\t}\n\n\t\t\t\treturn({\n\t\t\t\t\toutput: commonJSONStringify(serialized)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tsourceLocation: data.sourceLocation ? convertAssetLocationToString(data.sourceLocation) : undefined,\n\t\t\t\t\tdestinationLocation: data.destinationLocation ? convertAssetLocationToString(data.destinationLocation) : undefined\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwarding',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListPersistentForwardingRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListPersistentForwardingResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListPersistentForwardingRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\taddresses: data.addresses.map(addr => ({\n\t\t\t\t\t\t...addr,\n\t\t\t\t\t\tsourceLocation: addr.sourceLocation ? convertAssetLocationToString(addr.sourceLocation) : undefined,\n\t\t\t\t\t\tdestinationLocation: addr.destinationLocation ? convertAssetLocationToString(addr.destinationLocation) : undefined\n\t\t\t\t\t}))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'initiateTransfer',\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorInitiateTransferRequestSigningData,\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorInitiateTransferRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorInitiateTransferResponse,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\tinstructionChoices: data.instructionChoices.map(function(choice) {\n\t\t\t\t\t\tconst ret = { ...choice };\n\t\t\t\t\t\tif ('location' in ret) {\n\t\t\t\t\t\t\tret.location = convertAssetLocationToString(ret.location);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn(ret);\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'GET',\n\t\t\thandlerName: 'getTransferStatus',\n\t\t\tpathName: 'getTransferStatus/:id',\n\t\t\tassertRequest: (input) => {\n\t\t\t\tif (input !== undefined) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('No body expected for getTransferStatus'));\n\t\t\t\t}\n\n\t\t\t\treturn(undefined);\n\t\t\t},\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorGetTransferStatusResponse,\n\t\t\tgetSignatureFieldAccountFromRequest: ({ url }) => parseSignatureFromURL(url),\n\t\t\tparseRequestToArgs: ({ params, account }) => {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn([ id, account ] as const);\n\t\t\t},\n\t\t\tgetSigningData(_ignore_request, params) {\n\t\t\t\tconst id = params.get('id');\n\t\t\t\tif (typeof id !== 'string' || id.length === 0) {\n\t\t\t\t\tthrow(new KeetaAnchorUserError('Missing or invalid id parameter'));\n\t\t\t\t}\n\n\t\t\t\treturn(getKeetaAssetMovementAnchorGetTransferStatusRequestSigningData({ id }));\n\t\t\t},\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransaction: serializeTransactionResponse(data.transaction)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listTransactions',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorlistTransactionsRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorlistTransactionsRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttransactions: data.transactions.map(tx => serializeTransactionResponse(tx))\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'createPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\t...(serializePersistentAddressTemplateResponse(data))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'listPersistentForwardingTemplate',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorListForwardingAddressTemplateRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorListForwardingAddressTemplateResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorListForwardingAddressTemplateRequestSigningData,\n\t\t\tserializeResponse(data) {\n\t\t\t\treturn({\n\t\t\t\t\t...data,\n\t\t\t\t\ttemplates: data.templates.map(template => serializePersistentAddressTemplateResponse(template))\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\t\taddRoute({\n\t\t\tmethod: 'POST',\n\t\t\thandlerName: 'shareKYC',\n\t\t\tassertRequest: assertKeetaAssetMovementAnchorShareKYCRequest,\n\t\t\tassertResponse: assertKeetaAssetMovementAnchorShareKYCResponse,\n\t\t\tgetSigningData: getKeetaAssetMovementAnchorShareKYCRequestSigningData\n\t\t});\n\n\t\treturn(routes);\n\t}\n\n\tasync serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]> {\n\t\tconst operations: NonNullable<ServiceMetadata['services']['assetMovement']>[string]['operations'] = {};\n\n\t\tconst routes = [\n\t\t\t'initiateTransfer',\n\t\t\t'listTransactions',\n\t\t\t'createPersistentForwardingTemplate',\n\t\t\t'listPersistentForwardingTemplate',\n\t\t\t'createPersistentForwarding',\n\t\t\t'listPersistentForwarding',\n\t\t\t'shareKYC',\n\t\t\t[ 'getTransferStatus', 'getTransferStatus/{id}' ]\n\t\t] as const satisfies ((keyof typeof operations) | [ keyof typeof operations, string ])[];\n\n\t\tfor (const routeInput of routes) {\n\t\t\tlet op;\n\t\t\tlet url;\n\t\t\tif (Array.isArray(routeInput)) {\n\t\t\t\top = routeInput[0];\n\t\t\t\turl = routeInput[1];\n\t\t\t} else {\n\t\t\t\top = routeInput;\n\t\t\t\turl = routeInput;\n\t\t\t}\n\n\t\t\tif (this.assetMovement[op] !== undefined) {\n\t\t\t\tconst computedURL = (new URL(`/api/${url}`, this.url)).toString();\n\t\t\t\tif (this.assetMovement.authenticationRequired) {\n\t\t\t\t\toperations[op] = {\n\t\t\t\t\t\turl: computedURL,\n\t\t\t\t\t\toptions: { authentication: { method: 'keeta-account', type: 'required' }}\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\toperations[op] = computedURL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(operations).length === 0) {\n\t\t\tthrow(new KeetaAnchorUserError('No operations are supported on this server'));\n\t\t}\n\t\treturn({\n\t\t\toperations: operations,\n\t\t\tsupportedAssets: this.assetMovement.supportedAssets\n\t\t});\n\t}\n}\n"]}
|
package/services/fx/common.js
CHANGED
|
@@ -9,7 +9,7 @@ export const isKeetaFXAnchorEstimateResponse = (() => { const _io0 = input => tr
|
|
|
9
9
|
else
|
|
10
10
|
return false;
|
|
11
11
|
})(); return input => "object" === typeof input && null !== input && _iu0(input); })();
|
|
12
|
-
export const isKeetaFXAnchorQuoteResponse = (() => { const _io0 = input => true === input.ok && ("object" === typeof input.quote && null !== input.quote && _io1(input.quote)); const _io1 = input => "object" === typeof input.request && null !== input.request && _io2(input.request) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^
|
|
12
|
+
export const isKeetaFXAnchorQuoteResponse = (() => { const _io0 = input => true === input.ok && ("object" === typeof input.quote && null !== input.quote && _io1(input.quote)); const _io1 = input => "object" === typeof input.request && null !== input.request && _io2(input.request) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^keeta_aa(.*)/).test(input.account) || RegExp(/^keeta_ab(.*)/).test(input.account) || RegExp(/^keeta_ac(.*)/).test(input.account) || RegExp(/^keeta_ad(.*)/).test(input.account) || RegExp(/^tyblocks_aa(.*)/).test(input.account) || RegExp(/^tyblocks_ab(.*)/).test(input.account) || RegExp(/^tyblocks_ac(.*)/).test(input.account) || RegExp(/^tyblocks_ad(.*)/).test(input.account) || RegExp(/^keeta_ae(.*)/).test(input.account) || RegExp(/^keeta_af(.*)/).test(input.account) || RegExp(/^keeta_ag(.*)/).test(input.account) || RegExp(/^keeta_ah(.*)/).test(input.account) || RegExp(/^tyblocks_ae(.*)/).test(input.account) || RegExp(/^tyblocks_af(.*)/).test(input.account) || RegExp(/^tyblocks_ag(.*)/).test(input.account) || RegExp(/^tyblocks_ah(.*)/).test(input.account) || RegExp(/^keeta_ai(.*)/).test(input.account) || RegExp(/^keeta_aj(.*)/).test(input.account) || RegExp(/^keeta_ak(.*)/).test(input.account) || RegExp(/^keeta_al(.*)/).test(input.account) || RegExp(/^tyblocks_ai(.*)/).test(input.account) || RegExp(/^tyblocks_aj(.*)/).test(input.account) || RegExp(/^tyblocks_ak(.*)/).test(input.account) || RegExp(/^tyblocks_al(.*)/).test(input.account) || RegExp(/^keeta_at(.*)/).test(input.account) || RegExp(/^keeta_aq(.*)/).test(input.account) || RegExp(/^keeta_ar(.*)/).test(input.account) || RegExp(/^keeta_as(.*)/).test(input.account) || RegExp(/^tyblocks_at(.*)/).test(input.account) || RegExp(/^tyblocks_aq(.*)/).test(input.account) || RegExp(/^tyblocks_ar(.*)/).test(input.account) || RegExp(/^tyblocks_as(.*)/).test(input.account) || RegExp(/^keeta_ay(.*)/).test(input.account) || RegExp(/^keeta_az(.*)/).test(input.account) || RegExp(/^keeta_a2(.*)/).test(input.account) || RegExp(/^keeta_a3(.*)/).test(input.account) || RegExp(/^tyblocks_ay(.*)/).test(input.account) || RegExp(/^tyblocks_az(.*)/).test(input.account) || RegExp(/^tyblocks_a2(.*)/).test(input.account) || RegExp(/^tyblocks_a3(.*)/).test(input.account) || RegExp(/^keeta_a4(.*)/).test(input.account) || RegExp(/^keeta_a5(.*)/).test(input.account) || RegExp(/^keeta_a6(.*)/).test(input.account) || RegExp(/^keeta_a7(.*)/).test(input.account) || RegExp(/^tyblocks_a4(.*)/).test(input.account) || RegExp(/^tyblocks_a5(.*)/).test(input.account) || RegExp(/^tyblocks_a6(.*)/).test(input.account) || RegExp(/^tyblocks_a7(.*)/).test(input.account))) && "string" === typeof input.convertedAmount && ("object" === typeof input.cost && null !== input.cost && _io3(input.cost)) && ("object" === typeof input.signed && null !== input.signed && _io4(input.signed)); const _io2 = input => "string" === typeof input.from && (RegExp(/^keeta_am(.*)/).test(input.from) || RegExp(/^keeta_an(.*)/).test(input.from) || RegExp(/^keeta_ao(.*)/).test(input.from) || RegExp(/^keeta_ap(.*)/).test(input.from) || RegExp(/^tyblocks_am(.*)/).test(input.from) || RegExp(/^tyblocks_an(.*)/).test(input.from) || RegExp(/^tyblocks_ao(.*)/).test(input.from) || RegExp(/^tyblocks_ap(.*)/).test(input.from)) && ("string" === typeof input.to && (RegExp(/^keeta_am(.*)/).test(input.to) || RegExp(/^keeta_an(.*)/).test(input.to) || RegExp(/^keeta_ao(.*)/).test(input.to) || RegExp(/^keeta_ap(.*)/).test(input.to) || RegExp(/^tyblocks_am(.*)/).test(input.to) || RegExp(/^tyblocks_an(.*)/).test(input.to) || RegExp(/^tyblocks_ao(.*)/).test(input.to) || RegExp(/^tyblocks_ap(.*)/).test(input.to))) && "string" === typeof input.amount && ("from" === input.affinity || "to" === input.affinity); const _io3 = input => "string" === typeof input.amount && ("string" === typeof input.token && (RegExp(/^keeta_am(.*)/).test(input.token) || RegExp(/^keeta_an(.*)/).test(input.token) || RegExp(/^keeta_ao(.*)/).test(input.token) || RegExp(/^keeta_ap(.*)/).test(input.token) || RegExp(/^tyblocks_am(.*)/).test(input.token) || RegExp(/^tyblocks_an(.*)/).test(input.token) || RegExp(/^tyblocks_ao(.*)/).test(input.token) || RegExp(/^tyblocks_ap(.*)/).test(input.token))); const _io4 = input => "string" === typeof input.nonce && "string" === typeof input.timestamp && "string" === typeof input.signature; const _io5 = input => false === input.ok && "string" === typeof input.error; const _iu0 = input => (() => {
|
|
13
13
|
if (true === input.ok)
|
|
14
14
|
return _io0(input);
|
|
15
15
|
else if (false === input.ok)
|
|
@@ -74,7 +74,7 @@ export const assertConversionInputCanonicalJSON = (() => { const _io0 = input =>
|
|
|
74
74
|
}
|
|
75
75
|
return input;
|
|
76
76
|
}; })();
|
|
77
|
-
export const assertConversionQuoteJSON = (() => { const _io0 = input => "object" === typeof input.request && null !== input.request && _io1(input.request) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^
|
|
77
|
+
export const assertConversionQuoteJSON = (() => { const _io0 = input => "object" === typeof input.request && null !== input.request && _io1(input.request) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^keeta_aa(.*)/).test(input.account) || RegExp(/^keeta_ab(.*)/).test(input.account) || RegExp(/^keeta_ac(.*)/).test(input.account) || RegExp(/^keeta_ad(.*)/).test(input.account) || RegExp(/^tyblocks_aa(.*)/).test(input.account) || RegExp(/^tyblocks_ab(.*)/).test(input.account) || RegExp(/^tyblocks_ac(.*)/).test(input.account) || RegExp(/^tyblocks_ad(.*)/).test(input.account) || RegExp(/^keeta_ae(.*)/).test(input.account) || RegExp(/^keeta_af(.*)/).test(input.account) || RegExp(/^keeta_ag(.*)/).test(input.account) || RegExp(/^keeta_ah(.*)/).test(input.account) || RegExp(/^tyblocks_ae(.*)/).test(input.account) || RegExp(/^tyblocks_af(.*)/).test(input.account) || RegExp(/^tyblocks_ag(.*)/).test(input.account) || RegExp(/^tyblocks_ah(.*)/).test(input.account) || RegExp(/^keeta_ai(.*)/).test(input.account) || RegExp(/^keeta_aj(.*)/).test(input.account) || RegExp(/^keeta_ak(.*)/).test(input.account) || RegExp(/^keeta_al(.*)/).test(input.account) || RegExp(/^tyblocks_ai(.*)/).test(input.account) || RegExp(/^tyblocks_aj(.*)/).test(input.account) || RegExp(/^tyblocks_ak(.*)/).test(input.account) || RegExp(/^tyblocks_al(.*)/).test(input.account) || RegExp(/^keeta_at(.*)/).test(input.account) || RegExp(/^keeta_aq(.*)/).test(input.account) || RegExp(/^keeta_ar(.*)/).test(input.account) || RegExp(/^keeta_as(.*)/).test(input.account) || RegExp(/^tyblocks_at(.*)/).test(input.account) || RegExp(/^tyblocks_aq(.*)/).test(input.account) || RegExp(/^tyblocks_ar(.*)/).test(input.account) || RegExp(/^tyblocks_as(.*)/).test(input.account) || RegExp(/^keeta_ay(.*)/).test(input.account) || RegExp(/^keeta_az(.*)/).test(input.account) || RegExp(/^keeta_a2(.*)/).test(input.account) || RegExp(/^keeta_a3(.*)/).test(input.account) || RegExp(/^tyblocks_ay(.*)/).test(input.account) || RegExp(/^tyblocks_az(.*)/).test(input.account) || RegExp(/^tyblocks_a2(.*)/).test(input.account) || RegExp(/^tyblocks_a3(.*)/).test(input.account) || RegExp(/^keeta_a4(.*)/).test(input.account) || RegExp(/^keeta_a5(.*)/).test(input.account) || RegExp(/^keeta_a6(.*)/).test(input.account) || RegExp(/^keeta_a7(.*)/).test(input.account) || RegExp(/^tyblocks_a4(.*)/).test(input.account) || RegExp(/^tyblocks_a5(.*)/).test(input.account) || RegExp(/^tyblocks_a6(.*)/).test(input.account) || RegExp(/^tyblocks_a7(.*)/).test(input.account))) && "string" === typeof input.convertedAmount && ("object" === typeof input.cost && null !== input.cost && _io2(input.cost)) && ("object" === typeof input.signed && null !== input.signed && _io3(input.signed)); const _io1 = input => "string" === typeof input.from && (RegExp(/^keeta_am(.*)/).test(input.from) || RegExp(/^keeta_an(.*)/).test(input.from) || RegExp(/^keeta_ao(.*)/).test(input.from) || RegExp(/^keeta_ap(.*)/).test(input.from) || RegExp(/^tyblocks_am(.*)/).test(input.from) || RegExp(/^tyblocks_an(.*)/).test(input.from) || RegExp(/^tyblocks_ao(.*)/).test(input.from) || RegExp(/^tyblocks_ap(.*)/).test(input.from)) && ("string" === typeof input.to && (RegExp(/^keeta_am(.*)/).test(input.to) || RegExp(/^keeta_an(.*)/).test(input.to) || RegExp(/^keeta_ao(.*)/).test(input.to) || RegExp(/^keeta_ap(.*)/).test(input.to) || RegExp(/^tyblocks_am(.*)/).test(input.to) || RegExp(/^tyblocks_an(.*)/).test(input.to) || RegExp(/^tyblocks_ao(.*)/).test(input.to) || RegExp(/^tyblocks_ap(.*)/).test(input.to))) && "string" === typeof input.amount && ("from" === input.affinity || "to" === input.affinity); const _io2 = input => "string" === typeof input.amount && ("string" === typeof input.token && (RegExp(/^keeta_am(.*)/).test(input.token) || RegExp(/^keeta_an(.*)/).test(input.token) || RegExp(/^keeta_ao(.*)/).test(input.token) || RegExp(/^keeta_ap(.*)/).test(input.token) || RegExp(/^tyblocks_am(.*)/).test(input.token) || RegExp(/^tyblocks_an(.*)/).test(input.token) || RegExp(/^tyblocks_ao(.*)/).test(input.token) || RegExp(/^tyblocks_ap(.*)/).test(input.token))); const _io3 = input => "string" === typeof input.nonce && "string" === typeof input.timestamp && "string" === typeof input.signature; const _ao0 = (input, _path, _exceptionable = true) => (("object" === typeof input.request && null !== input.request || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
78
78
|
method: "createAssert",
|
|
79
79
|
path: _path + ".request",
|
|
80
80
|
expected: "__type.o1",
|
|
@@ -84,7 +84,7 @@ export const assertConversionQuoteJSON = (() => { const _io0 = input => "object"
|
|
|
84
84
|
path: _path + ".request",
|
|
85
85
|
expected: "__type.o1",
|
|
86
86
|
value: input.request
|
|
87
|
-
}, _errorFactory)) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^
|
|
87
|
+
}, _errorFactory)) && ("string" === typeof input.account && (RegExp(/^keeta_am(.*)/).test(input.account) || RegExp(/^keeta_an(.*)/).test(input.account) || RegExp(/^keeta_ao(.*)/).test(input.account) || RegExp(/^keeta_ap(.*)/).test(input.account) || RegExp(/^tyblocks_am(.*)/).test(input.account) || RegExp(/^tyblocks_an(.*)/).test(input.account) || RegExp(/^tyblocks_ao(.*)/).test(input.account) || RegExp(/^tyblocks_ap(.*)/).test(input.account) || RegExp(/^keeta_aa(.*)/).test(input.account) || RegExp(/^keeta_ab(.*)/).test(input.account) || RegExp(/^keeta_ac(.*)/).test(input.account) || RegExp(/^keeta_ad(.*)/).test(input.account) || RegExp(/^tyblocks_aa(.*)/).test(input.account) || RegExp(/^tyblocks_ab(.*)/).test(input.account) || RegExp(/^tyblocks_ac(.*)/).test(input.account) || RegExp(/^tyblocks_ad(.*)/).test(input.account) || RegExp(/^keeta_ae(.*)/).test(input.account) || RegExp(/^keeta_af(.*)/).test(input.account) || RegExp(/^keeta_ag(.*)/).test(input.account) || RegExp(/^keeta_ah(.*)/).test(input.account) || RegExp(/^tyblocks_ae(.*)/).test(input.account) || RegExp(/^tyblocks_af(.*)/).test(input.account) || RegExp(/^tyblocks_ag(.*)/).test(input.account) || RegExp(/^tyblocks_ah(.*)/).test(input.account) || RegExp(/^keeta_ai(.*)/).test(input.account) || RegExp(/^keeta_aj(.*)/).test(input.account) || RegExp(/^keeta_ak(.*)/).test(input.account) || RegExp(/^keeta_al(.*)/).test(input.account) || RegExp(/^tyblocks_ai(.*)/).test(input.account) || RegExp(/^tyblocks_aj(.*)/).test(input.account) || RegExp(/^tyblocks_ak(.*)/).test(input.account) || RegExp(/^tyblocks_al(.*)/).test(input.account) || RegExp(/^keeta_at(.*)/).test(input.account) || RegExp(/^keeta_aq(.*)/).test(input.account) || RegExp(/^keeta_ar(.*)/).test(input.account) || RegExp(/^keeta_as(.*)/).test(input.account) || RegExp(/^tyblocks_at(.*)/).test(input.account) || RegExp(/^tyblocks_aq(.*)/).test(input.account) || RegExp(/^tyblocks_ar(.*)/).test(input.account) || RegExp(/^tyblocks_as(.*)/).test(input.account) || RegExp(/^keeta_ay(.*)/).test(input.account) || RegExp(/^keeta_az(.*)/).test(input.account) || RegExp(/^keeta_a2(.*)/).test(input.account) || RegExp(/^keeta_a3(.*)/).test(input.account) || RegExp(/^tyblocks_ay(.*)/).test(input.account) || RegExp(/^tyblocks_az(.*)/).test(input.account) || RegExp(/^tyblocks_a2(.*)/).test(input.account) || RegExp(/^tyblocks_a3(.*)/).test(input.account) || RegExp(/^keeta_a4(.*)/).test(input.account) || RegExp(/^keeta_a5(.*)/).test(input.account) || RegExp(/^keeta_a6(.*)/).test(input.account) || RegExp(/^keeta_a7(.*)/).test(input.account) || RegExp(/^tyblocks_a4(.*)/).test(input.account) || RegExp(/^tyblocks_a5(.*)/).test(input.account) || RegExp(/^tyblocks_a6(.*)/).test(input.account) || RegExp(/^tyblocks_a7(.*)/).test(input.account)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
88
88
|
method: "createAssert",
|
|
89
89
|
path: _path + ".account",
|
|
90
90
|
expected: "(`keeta_a2${string}` | `keeta_a3${string}` | `keeta_a4${string}` | `keeta_a5${string}` | `keeta_a6${string}` | `keeta_a7${string}` | `keeta_aa${string}` | `keeta_ab${string}` | `keeta_ac${string}` | `keeta_ad${string}` | `keeta_ae${string}` | `keeta_af${string}` | `keeta_ag${string}` | `keeta_ah${string}` | `keeta_ai${string}` | `keeta_aj${string}` | `keeta_ak${string}` | `keeta_al${string}` | `keeta_am${string}` | `keeta_an${string}` | `keeta_ao${string}` | `keeta_ap${string}` | `keeta_aq${string}` | `keeta_ar${string}` | `keeta_as${string}` | `keeta_at${string}` | `keeta_ay${string}` | `keeta_az${string}` | `tyblocks_a2${string}` | `tyblocks_a3${string}` | `tyblocks_a4${string}` | `tyblocks_a5${string}` | `tyblocks_a6${string}` | `tyblocks_a7${string}` | `tyblocks_aa${string}` | `tyblocks_ab${string}` | `tyblocks_ac${string}` | `tyblocks_ad${string}` | `tyblocks_ae${string}` | `tyblocks_af${string}` | `tyblocks_ag${string}` | `tyblocks_ah${string}` | `tyblocks_ai${string}` | `tyblocks_aj${string}` | `tyblocks_ak${string}` | `tyblocks_al${string}` | `tyblocks_am${string}` | `tyblocks_an${string}` | `tyblocks_ao${string}` | `tyblocks_ap${string}` | `tyblocks_aq${string}` | `tyblocks_ar${string}` | `tyblocks_as${string}` | `tyblocks_at${string}` | `tyblocks_ay${string}` | `tyblocks_az${string}`)",
|
package/services/fx/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
|
|
2
|
-
import KeetaNet from '
|
|
2
|
+
import { KeetaNet } from '../../client/index.js';
|
|
3
3
|
import type { ConversionInputCanonicalJSON, KeetaFXAnchorQuote, KeetaFXAnchorQuoteJSON, KeetaNetAccount, KeetaNetStorageAccount } from './common.ts';
|
|
4
4
|
import * as Signing from '../../lib/utils/signing.js';
|
|
5
5
|
import type { ServiceMetadata } from '../../lib/resolver.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,gCAAgC,CAAC;AACxE,OAAO,QAAQ,MAAM
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"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"}
|
package/services/fx/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
|
|
2
|
-
import KeetaNet from '
|
|
2
|
+
import { KeetaNet } from '../../client/index.js';
|
|
3
3
|
import { KeetaAnchorUserError } from '../../lib/error.js';
|
|
4
4
|
import { assertConversionInputCanonicalJSON, assertConversionQuoteJSON, Errors } from './common.js';
|
|
5
5
|
import * as Signing from '../../lib/utils/signing.js';
|