@xyo-network/chain-bridge 1.16.6 → 1.16.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/index.mjs +19 -88
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/getRouteDefinitions.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/getRouteDefinitions.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts.map +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.d.ts +1 -1
- package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.d.ts.map +1 -1
- package/package.json +34 -35
- package/src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts +2 -1
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts +2 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts +2 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts +2 -2
- package/src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts +2 -2
- package/dist/node/server/routes/bridge/routeDefinitions/routeDefinition.d.ts +0 -8
- package/dist/node/server/routes/bridge/routeDefinitions/routeDefinition.d.ts.map +0 -1
- package/src/server/routes/bridge/routeDefinitions/routeDefinition.ts +0 -18
package/dist/node/index.mjs
CHANGED
|
@@ -22,83 +22,11 @@ var addInstrumentation = /* @__PURE__ */ __name(() => {
|
|
|
22
22
|
}, "addInstrumentation");
|
|
23
23
|
|
|
24
24
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts
|
|
25
|
+
import { requestHandlerValidator } from "@xylabs/express";
|
|
25
26
|
import { toAddress as toAddress2, toHex } from "@xylabs/hex";
|
|
26
27
|
import { PayloadZodStrictOfSchema } from "@xyo-network/payload-model";
|
|
27
28
|
import { BridgeDestinationObservationFieldsZod, BridgeDestinationObservationSchema } from "@xyo-network/xl1-protocol";
|
|
28
|
-
import { z as z2 } from "zod";
|
|
29
|
-
|
|
30
|
-
// src/server/routes/bridge/middleware/requestHandlerValidator.ts
|
|
31
|
-
import { isPromise } from "@xylabs/typeof";
|
|
32
|
-
import { ReasonPhrases, StatusCodes } from "http-status-codes";
|
|
33
29
|
import { z } from "zod";
|
|
34
|
-
var EmptyParamsZod = z.object({}).catchall(z.string());
|
|
35
|
-
var EmptyQueryParamsZod = z.object({}).catchall(z.union([
|
|
36
|
-
z.string(),
|
|
37
|
-
z.array(z.string())
|
|
38
|
-
]));
|
|
39
|
-
var ValidateRequestDefaults = {
|
|
40
|
-
params: EmptyParamsZod,
|
|
41
|
-
query: EmptyQueryParamsZod,
|
|
42
|
-
body: z.json(),
|
|
43
|
-
response: z.json()
|
|
44
|
-
};
|
|
45
|
-
function requestHandlerValidator(schemas) {
|
|
46
|
-
const validators = {
|
|
47
|
-
...ValidateRequestDefaults,
|
|
48
|
-
...schemas
|
|
49
|
-
};
|
|
50
|
-
return (handler) => {
|
|
51
|
-
return async (req, res, next) => {
|
|
52
|
-
const originalJson = res.json.bind(res);
|
|
53
|
-
try {
|
|
54
|
-
const errors = [];
|
|
55
|
-
const keys = [
|
|
56
|
-
"params",
|
|
57
|
-
"query",
|
|
58
|
-
"body"
|
|
59
|
-
];
|
|
60
|
-
for (const key of keys) {
|
|
61
|
-
const validator = validators[key];
|
|
62
|
-
const result2 = validator.safeParse(req[key]);
|
|
63
|
-
if (result2.success) {
|
|
64
|
-
Object.assign(req[key], result2.data);
|
|
65
|
-
} else {
|
|
66
|
-
errors.push(...result2.error.issues.map((issue) => issue.path.length === 0 ? `${key}: ${issue.message}` : `${key}.${issue.path.join(".")}: ${issue.message}`));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (errors.length > 0) {
|
|
70
|
-
const message = errors.join("; ");
|
|
71
|
-
const err = new Error(message);
|
|
72
|
-
err.name = ReasonPhrases.BAD_REQUEST;
|
|
73
|
-
err.statusCode = StatusCodes.BAD_REQUEST;
|
|
74
|
-
next(err);
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
res.json = (data) => {
|
|
78
|
-
const result2 = validators.response.safeParse(data);
|
|
79
|
-
if (result2.success) {
|
|
80
|
-
return originalJson(result2.data);
|
|
81
|
-
} else {
|
|
82
|
-
const message = result2.error.issues.map((issue) => issue.path.length === 0 ? `response: ${issue.message}` : `response.${issue.path.join(".")}: ${issue.message}`).join("; ");
|
|
83
|
-
const err = new Error(message);
|
|
84
|
-
err.name = ReasonPhrases.INTERNAL_SERVER_ERROR;
|
|
85
|
-
err.statusCode = StatusCodes.INTERNAL_SERVER_ERROR;
|
|
86
|
-
res.json = originalJson;
|
|
87
|
-
throw err;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
const result = handler(req, res, next);
|
|
91
|
-
if (result && isPromise(result)) {
|
|
92
|
-
await result;
|
|
93
|
-
}
|
|
94
|
-
} catch (err) {
|
|
95
|
-
res.json = originalJson;
|
|
96
|
-
next(err);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
__name(requestHandlerValidator, "requestHandlerValidator");
|
|
102
30
|
|
|
103
31
|
// src/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.ts
|
|
104
32
|
import { hexFromHexString, HexZod, isAddress, toAddress } from "@xylabs/hex";
|
|
@@ -117,9 +45,9 @@ var ChainIdPathParam = HexZod.refine((val) => {
|
|
|
117
45
|
});
|
|
118
46
|
|
|
119
47
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts
|
|
120
|
-
var params =
|
|
48
|
+
var params = z.object({
|
|
121
49
|
chainId: ChainIdPathParam,
|
|
122
|
-
nonce:
|
|
50
|
+
nonce: z.string()
|
|
123
51
|
});
|
|
124
52
|
var response = PayloadZodStrictOfSchema(BridgeDestinationObservationSchema).extend(BridgeDestinationObservationFieldsZod.shape);
|
|
125
53
|
var validateRequest = requestHandlerValidator({
|
|
@@ -153,21 +81,22 @@ var bridgeFromRemoteStatus = {
|
|
|
153
81
|
};
|
|
154
82
|
|
|
155
83
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts
|
|
84
|
+
import { requestHandlerValidator as requestHandlerValidator2 } from "@xylabs/express";
|
|
156
85
|
import { asHash } from "@xylabs/hex";
|
|
157
86
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
158
87
|
import { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema as PayloadZodStrictOfSchema2 } from "@xyo-network/payload-model";
|
|
159
88
|
import { BridgeIntentFieldsZod, BridgeIntentSchema, BridgeSourceObservationFieldsZod, BridgeSourceObservationSchema, TransferSchema } from "@xyo-network/xl1-protocol";
|
|
160
|
-
import { z as
|
|
161
|
-
var params2 =
|
|
89
|
+
import { z as z2 } from "zod";
|
|
90
|
+
var params2 = z2.object({
|
|
162
91
|
chainId: ChainIdPathParam
|
|
163
92
|
});
|
|
164
|
-
var body =
|
|
93
|
+
var body = z2.tuple([
|
|
165
94
|
// TODO: TransactionBoundWitness
|
|
166
95
|
PayloadZodStrictOfSchema2(BridgeIntentSchema).extend(BridgeIntentFieldsZod.shape),
|
|
167
96
|
PayloadZodLooseOfSchema(TransferSchema)
|
|
168
97
|
]);
|
|
169
98
|
var response2 = PayloadZodStrictOfSchema2(BridgeSourceObservationSchema).extend(BridgeSourceObservationFieldsZod.shape);
|
|
170
|
-
var validateRequest2 =
|
|
99
|
+
var validateRequest2 = requestHandlerValidator2({
|
|
171
100
|
params: params2,
|
|
172
101
|
body,
|
|
173
102
|
response: response2
|
|
@@ -179,7 +108,7 @@ var bridgeToRemote = {
|
|
|
179
108
|
const { body: body3 } = req;
|
|
180
109
|
const [bridgeIntent] = body3;
|
|
181
110
|
const srcConfirmation = await Promise.resolve(asHash("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"));
|
|
182
|
-
const bridgeCommonFieldsZod =
|
|
111
|
+
const bridgeCommonFieldsZod = z2.object({}).extend(BridgeSourceObservationFieldsZod.shape);
|
|
183
112
|
const bridgeCommonFields = bridgeCommonFieldsZod.parse(bridgeIntent);
|
|
184
113
|
const bridgeObservationFields = {
|
|
185
114
|
...bridgeCommonFields,
|
|
@@ -193,13 +122,14 @@ var bridgeToRemote = {
|
|
|
193
122
|
};
|
|
194
123
|
|
|
195
124
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts
|
|
125
|
+
import { requestHandlerValidator as requestHandlerValidator3 } from "@xylabs/express";
|
|
196
126
|
import { hexToBigInt, toAddress as toAddress3, toHex as toHex2 } from "@xylabs/hex";
|
|
197
127
|
import { createTransferPayload } from "@xyo-network/chain-protocol";
|
|
198
128
|
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
199
129
|
import { PayloadZodLooseOfSchema as PayloadZodLooseOfSchema2, PayloadZodStrictOfSchema as PayloadZodStrictOfSchema3 } from "@xyo-network/payload-model";
|
|
200
130
|
import { BridgeIntentFieldsZod as BridgeIntentFieldsZod2, BridgeIntentSchema as BridgeIntentSchema2, TransferSchema as TransferSchema2 } from "@xyo-network/xl1-protocol";
|
|
201
131
|
import { v4 } from "uuid";
|
|
202
|
-
import { z as
|
|
132
|
+
import { z as z3 } from "zod";
|
|
203
133
|
var TOKEN_ADDRESS = "0x5FbDB2315678afecb367f032d93F642f64180aa3";
|
|
204
134
|
var bridgeableTokenContract = toHex2(TOKEN_ADDRESS);
|
|
205
135
|
var xl1ChainId = toAddress3("0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9");
|
|
@@ -208,7 +138,7 @@ var percentFee = 5n;
|
|
|
208
138
|
var bridgeEscrowAddress = toAddress3("0x0a");
|
|
209
139
|
var bridgeFeesAddress = toAddress3("0x0b");
|
|
210
140
|
var remoteChainId2 = toHex2("0x01");
|
|
211
|
-
var params3 =
|
|
141
|
+
var params3 = z3.object({
|
|
212
142
|
chainId: ChainIdPathParam
|
|
213
143
|
});
|
|
214
144
|
var body2 = BridgeIntentFieldsZod2.pick({
|
|
@@ -216,11 +146,11 @@ var body2 = BridgeIntentFieldsZod2.pick({
|
|
|
216
146
|
srcAddress: true,
|
|
217
147
|
srcAmount: true
|
|
218
148
|
});
|
|
219
|
-
var response3 =
|
|
149
|
+
var response3 = z3.tuple([
|
|
220
150
|
PayloadZodStrictOfSchema3(BridgeIntentSchema2).extend(BridgeIntentFieldsZod2.shape),
|
|
221
151
|
PayloadZodLooseOfSchema2(TransferSchema2)
|
|
222
152
|
]);
|
|
223
|
-
var validateRequest3 =
|
|
153
|
+
var validateRequest3 = requestHandlerValidator3({
|
|
224
154
|
params: params3,
|
|
225
155
|
body: body2,
|
|
226
156
|
response: response3
|
|
@@ -264,16 +194,17 @@ var bridgeToRemoteEstimate = {
|
|
|
264
194
|
};
|
|
265
195
|
|
|
266
196
|
// src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts
|
|
197
|
+
import { requestHandlerValidator as requestHandlerValidator4 } from "@xylabs/express";
|
|
267
198
|
import { toAddress as toAddress4, toHex as toHex3 } from "@xylabs/hex";
|
|
268
199
|
import { PayloadZodStrictOfSchema as PayloadZodStrictOfSchema4 } from "@xyo-network/payload-model";
|
|
269
200
|
import { BridgeDestinationObservationFieldsZod as BridgeDestinationObservationFieldsZod2, BridgeDestinationObservationSchema as BridgeDestinationObservationSchema2 } from "@xyo-network/xl1-protocol";
|
|
270
|
-
import { z as
|
|
271
|
-
var params4 =
|
|
201
|
+
import { z as z4 } from "zod";
|
|
202
|
+
var params4 = z4.object({
|
|
272
203
|
chainId: ChainIdPathParam,
|
|
273
|
-
nonce:
|
|
204
|
+
nonce: z4.string()
|
|
274
205
|
});
|
|
275
206
|
var response4 = PayloadZodStrictOfSchema4(BridgeDestinationObservationSchema2).extend(BridgeDestinationObservationFieldsZod2.shape);
|
|
276
|
-
var validateRequest4 =
|
|
207
|
+
var validateRequest4 = requestHandlerValidator4({
|
|
277
208
|
params: params4,
|
|
278
209
|
response: response4
|
|
279
210
|
});
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts","../../src/server/routes/bridge/middleware/requestHandlerValidator.ts","../../src/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts","../../src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts","../../src/server/routes/bridge/addBridgeRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts"],"sourcesContent":["import {\n customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler,\n standardErrors, standardResponses,\n} from '@xylabs/express'\nimport compression from 'compression'\nimport cors from 'cors'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\n// export const getApp = (node: NodeInstance): Express => {\nexport const getApp = (): Express => {\n addInstrumentation()\n const app = express()\n app.set('etag', false)\n app.use(cors())\n app.use(compression())\n app.use(responseProfiler)\n app.use(getJsonBodyParser(getJsonBodyParserOptions({ limit: '1mb' })))\n app.use(standardResponses)\n disableExpressDefaultPoweredByHeader(app)\n app.use(customPoweredByHeader)\n disableCaseSensitiveRouting(app)\n // app.node = node\n addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import { toAddress, toHex } from '@xylabs/hex'\nimport { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'\nimport {\n BridgeDestinationObservationFieldsZod,\n BridgeDestinationObservationSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { ChainIdPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\nconst params = z.object({\n chainId: ChainIdPathParam,\n nonce: z.string(),\n})\nconst response = PayloadZodStrictOfSchema(BridgeDestinationObservationSchema).extend(\n BridgeDestinationObservationFieldsZod.shape,\n)\n\nconst validateRequest = requestHandlerValidator({\n params,\n response,\n})\n\nexport const bridgeFromRemoteStatus: RouteDefinition = {\n method: 'get',\n path: '/bridge/chains/:chainId/bridgeFromRemote/status/:nonce',\n handlers: validateRequest(async (req, res) => {\n const { chainId } = req.params\n const rand = await Promise.resolve(Math.random())\n\n // TODO: Replace with actual lookup logic (e.g. database or chain query)\n const found = rand > 0.5 // simulate lookup\n if (!found) return res.sendStatus(404)\n\n const confirmed = rand > 0.8 // simulate pending/confirmed\n if (!confirmed) return res.sendStatus(204)\n\n const observation: BridgeDestinationObservation = {\n schema: BridgeDestinationObservationSchema,\n dest: chainId,\n destAddress: toAddress('0xabc'),\n destAmount: toHex('0x100'),\n destToken: toAddress('0xdef'),\n src: toAddress('0x02'),\n srcAddress: toAddress('0x123'),\n srcAmount: toHex('0x200'),\n srcToken: toHex('0x456'),\n destConfirmation: toHex('0x9999'),\n }\n res.json(observation)\n }),\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ExpressError } from '@xylabs/express'\nimport { isPromise } from '@xylabs/typeof'\nimport type {\n NextFunction, Request, RequestHandler, Response,\n} from 'express'\nimport { ReasonPhrases, StatusCodes } from 'http-status-codes'\nimport type { ZodType } from 'zod'\nimport { z } from 'zod'\n\n/**\n * Empty Zod schema for requests with no parameters.\n */\nexport const EmptyParamsZod = z.object({}).catchall(z.string())\n\n/**\n * Empty Zod schema for requests with no query parameters.\n */\nexport const EmptyQueryParamsZod = z.object({}).catchall(z.union([z.string(), z.array(z.string())]))\n\n/**\n * Default validation schemas for request handler validator.\n */\nexport const ValidateRequestDefaults = {\n params: EmptyParamsZod,\n query: EmptyQueryParamsZod,\n body: z.json(),\n response: z.json(),\n}\n\ntype ValidatableRequestKey = 'params' | 'query' | 'body'\n\n/**\n * Factory for Express middleware that validates request and response objects using Zod schemas.\n * @param schemas The Zod schemas to use for validation.\n * @returns A middleware function for validating requests and responses.\n */\nexport function requestHandlerValidator<\n TParams extends typeof EmptyQueryParamsZod | ZodType<Record<string, string>> = typeof EmptyQueryParamsZod,\n TQuery extends typeof EmptyQueryParamsZod | ZodType<Record<string, string | string[]>> = typeof EmptyQueryParamsZod,\n TBody extends ZodType<unknown> = ZodType<unknown>,\n TResponse extends ZodType<unknown> = ZodType<unknown>,\n>(schemas?: Partial<{\n body: TBody\n params: TParams\n query: TQuery\n response: TResponse\n}>) {\n type Params = z.infer<TParams>\n type Query = z.infer<TQuery>\n type Body = z.infer<TBody>\n type Res = z.infer<TResponse>\n const validators = { ...ValidateRequestDefaults, ...schemas }\n\n return (handler: (req: Request<Params, Res, Body, Query>, res: Response<Res>, next: NextFunction) => unknown): RequestHandler => {\n return async (req: Request, res: Response, next: NextFunction) => {\n const originalJson = res.json.bind(res)\n try {\n // Validate incoming request\n const errors: string[] = []\n const keys: ValidatableRequestKey[] = ['params', 'query', 'body']\n for (const key of keys) {\n const validator = validators[key]\n const result = validator.safeParse(req[key])\n if (result.success) {\n Object.assign(req[key], result.data)\n } else {\n errors.push(\n ...result.error.issues.map(\n issue => (issue.path.length === 0)\n ? `${key}: ${issue.message}`\n : `${key}.${issue.path.join('.')}: ${issue.message}`,\n ),\n )\n }\n }\n\n // If there were validation errors, short-circuit and return Bad Request\n if (errors.length > 0) {\n const message = errors.join('; ')\n const err: ExpressError = new Error(message)\n err.name = ReasonPhrases.BAD_REQUEST\n err.statusCode = StatusCodes.BAD_REQUEST\n next(err)\n return false\n }\n\n // Wrap res.json to validate outgoing response\n res.json = (data: any) => {\n const result = validators.response.safeParse(data)\n if (result.success) {\n return originalJson(result.data)\n } else {\n const message = result.error.issues.map(\n issue => (issue.path.length === 0)\n ? `response: ${issue.message}`\n : `response.${issue.path.join('.')}: ${issue.message}`,\n ).join('; ')\n const err: ExpressError = new Error(message)\n err.name = ReasonPhrases.INTERNAL_SERVER_ERROR\n err.statusCode = StatusCodes.INTERNAL_SERVER_ERROR\n\n // Restore original json function in case the error handler wants to use it\n res.json = originalJson\n throw err\n }\n }\n\n // Automatically handle async errors\n const result = handler(req as any, res as any, next)\n if (result && isPromise(result)) {\n await result\n }\n } catch (err) {\n res.json = originalJson\n next(err)\n }\n }\n }\n}\n","import {\n hexFromHexString, HexZod, isAddress, toAddress,\n} from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\n\nconst remoteChainId: ChainId = toAddress('0x01')\n\nexport const ChainIdPathParam = HexZod.refine(\n (val) => {\n const chainIdHex = hexFromHexString(val, { prefix: true })\n if (isAddress(chainIdHex)) return false\n const suppliedChainId = toAddress(chainIdHex)\n if (isUndefined(suppliedChainId)) return false\n return suppliedChainId === remoteChainId\n },\n { message: `Only ${remoteChainId} is supported` },\n)\n","import { asHash } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeSourceObservation, BridgeSourceObservationFields } from '@xyo-network/xl1-protocol'\nimport {\n BridgeIntentFieldsZod,\n BridgeIntentSchema,\n BridgeSourceObservationFieldsZod,\n BridgeSourceObservationSchema,\n TransferSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { ChainIdPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\nconst params = z.object({ chainId: ChainIdPathParam })\nconst body = z.tuple([\n // TODO: TransactionBoundWitness\n PayloadZodStrictOfSchema(BridgeIntentSchema).extend(BridgeIntentFieldsZod.shape),\n PayloadZodLooseOfSchema(TransferSchema),\n])\nconst response = PayloadZodStrictOfSchema(BridgeSourceObservationSchema).extend(BridgeSourceObservationFieldsZod.shape)\n\nconst validateRequest = requestHandlerValidator({\n params,\n body,\n response,\n})\n\nexport const bridgeToRemote: RouteDefinition = {\n method: 'post',\n path: '/bridge/chains/:chainId/bridgeToRemote',\n handlers: validateRequest(async (req, res) => {\n const { body } = req\n const [bridgeIntent] = body\n // TODO: Execute bridge transaction on-chain\n const srcConfirmation = await Promise.resolve(asHash('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'))\n\n // Extract common fields for BridgeSourceObservation from BridgeIntent\n const bridgeCommonFieldsZod = z.object({}).extend(BridgeSourceObservationFieldsZod.shape)\n const bridgeCommonFields = bridgeCommonFieldsZod.parse(bridgeIntent)\n const bridgeObservationFields: BridgeSourceObservationFields = {\n ...bridgeCommonFields,\n srcConfirmation,\n }\n const bridgeObservation: BridgeSourceObservation = new PayloadBuilder<BridgeSourceObservation>(\n { schema: BridgeSourceObservationSchema },\n ).fields(bridgeObservationFields).build()\n res.json(bridgeObservation)\n }),\n}\n","import {\n hexToBigInt, toAddress, toHex,\n} from '@xylabs/hex'\nimport { createTransferPayload } from '@xyo-network/chain-protocol'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type {\n BridgeIntent, BridgeIntentFields, ChainId, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport {\n BridgeIntentFieldsZod, BridgeIntentSchema, TransferSchema,\n} from '@xyo-network/xl1-protocol'\nimport { v4 } from 'uuid'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { ChainIdPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\n// TODO: Get from config\nconst TOKEN_ADDRESS = '0x5FbDB2315678afecb367f032d93F642f64180aa3'\nconst bridgeableTokenContract = toHex(TOKEN_ADDRESS)\nconst xl1ChainId: ChainId = toAddress('0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9')\nconst fixedFee: bigint = 1_000_000_000_000_000n\nconst percentFee: bigint = 5n // 0.5%\nconst bridgeEscrowAddress = toAddress('0x0a')\nconst bridgeFeesAddress = toAddress('0x0b')\nconst remoteChainId: ChainId = toHex('0x01')\n\nconst params = z.object({ chainId: ChainIdPathParam })\nconst body = BridgeIntentFieldsZod.pick({\n destAddress: true,\n srcAddress: true,\n srcAmount: true,\n})\nconst response = z.tuple([\n PayloadZodStrictOfSchema(BridgeIntentSchema).extend(BridgeIntentFieldsZod.shape),\n PayloadZodLooseOfSchema(TransferSchema),\n])\nconst validateRequest = requestHandlerValidator({\n params, body, response,\n})\n\nexport const bridgeToRemoteEstimate: RouteDefinition = {\n method: 'post',\n path: '/bridge/chains/:chainId/bridgeToRemote/estimate',\n handlers: validateRequest((req, res) => {\n const {\n srcAddress, srcAmount, destAddress,\n } = req.body\n\n const srcAmountBigInt = hexToBigInt(srcAmount)\n const feeAmount = fixedFee + ((srcAmountBigInt * percentFee) / 100n)\n const destAmountBigInt = srcAmountBigInt > feeAmount ? srcAmountBigInt - feeAmount : 0n\n const destAmount = toHex(destAmountBigInt)\n const nonce = v4()\n\n const sender = toAddress(srcAddress)\n\n const bridgeIntentFields: BridgeIntentFields = {\n // Source\n src: xl1ChainId,\n srcAddress,\n srcAmount,\n srcToken: xl1ChainId,\n\n // Destination\n dest: remoteChainId,\n destAddress,\n destAmount,\n destToken: bridgeableTokenContract,\n nonce,\n }\n const bridgeIntent: BridgeIntent = new PayloadBuilder<BridgeIntent>({ schema: BridgeIntentSchema }).fields(bridgeIntentFields).build()\n\n const transfer: Transfer = createTransferPayload(sender, {\n [bridgeEscrowAddress]: destAmountBigInt,\n [bridgeFeesAddress]: feeAmount,\n })\n\n res.json([bridgeIntent, transfer])\n }),\n}\n","import { toAddress, toHex } from '@xylabs/hex'\nimport { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'\nimport {\n BridgeDestinationObservationFieldsZod,\n BridgeDestinationObservationSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { ChainIdPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\nconst params = z.object({\n chainId: ChainIdPathParam,\n nonce: z.string(),\n})\nconst response = PayloadZodStrictOfSchema(BridgeDestinationObservationSchema).extend(\n BridgeDestinationObservationFieldsZod.shape,\n)\n\nconst validateRequest = requestHandlerValidator({\n params,\n response,\n})\n\nexport const bridgeToRemoteStatus: RouteDefinition = {\n method: 'get',\n path: '/bridge/chains/:chainId/bridgeToRemote/status/:nonce',\n handlers: validateRequest(async (req, res) => {\n const { chainId } = req.params\n const rand = await Promise.resolve(Math.random())\n\n // TODO: Replace with actual lookup logic (e.g. database or chain query)\n const found = rand > 0.5 // simulate lookup\n if (!found) return res.sendStatus(404)\n\n const confirmed = rand > 0.8 // simulate pending/confirmed\n if (!confirmed) return res.sendStatus(204)\n\n const observation: BridgeDestinationObservation = {\n schema: BridgeDestinationObservationSchema,\n dest: chainId,\n destAddress: toAddress('0xabc'),\n destAmount: toHex('0x100'),\n destToken: toAddress('0xdef'),\n src: toAddress('0x02'),\n srcAddress: toAddress('0x123'),\n srcAmount: toHex('0x200'),\n srcToken: toHex('0x456'),\n destConfirmation: toHex('0x9999'),\n }\n res.json(observation)\n }),\n}\n","import type { RouteDefinition } from './routeDefinition.ts'\nimport {\n bridgeFromRemoteStatus, bridgeToRemote, bridgeToRemoteEstimate, bridgeToRemoteStatus,\n} from './routes/index.ts'\n\nexport const getRouteDefinitions = (): RouteDefinition[] => {\n return [\n bridgeFromRemoteStatus,\n bridgeToRemote,\n bridgeToRemoteEstimate,\n bridgeToRemoteStatus,\n ]\n}\n","import type { Express } from 'express'\n\nimport { getRouteDefinitions } from './routeDefinitions/index.ts'\n\nexport const addBridgeRoutes = (app: Express) => {\n const routeDefinitions = getRouteDefinitions()\n for (const definition of routeDefinitions) {\n app[definition.method](definition.path, definition.handlers)\n }\n}\n","import type { Express } from 'express'\n\nimport { addBridgeRoutes } from './bridge/index.ts'\n\nexport const addRoutes = (app: Express) => {\n addBridgeRoutes(app)\n}\n","import type { Logger } from '@xylabs/logger'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { type Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n// const hostname = '0.0.0.0'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\n// const getSeedPhrase = async (bios: BiosExternalInterface, config: Config, logger?: Logger): Promise<string> => {\n// const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n// logger?.debug(`[Bridge] Stored mnemonic: ${storedSeedPhrase}`)\n// const { mnemonic } = config.api\n// if (isString(storedSeedPhrase) && isString(mnemonic)) {\n// logger?.warn('[Bridge] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n// await bios.seedPhraseStore.set('os', mnemonic)\n// } else {\n// let seedPhrase: string\n// if (isString(mnemonic)) {\n// seedPhrase = mnemonic\n// } else {\n// seedPhrase = HDWallet.generateMnemonic()\n// logger?.log('[Bridge] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n// logger?.log(`[Bridge] Mnemonic: ${seedPhrase}`)\n// }\n// await bios.seedPhraseStore.set('os', seedPhrase)\n// }\n// return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n// }\n\ninterface GetServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport const getServer = async (context: GetServerContext) => {\n const { logger } = context\n const { port } = context.config.bridge\n await Promise.resolve() // bios booting is currently disabled\n // const bios = await boot()\n // const seedPhrase = isDefined(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger)\n // const wallet = await HDWallet.fromPhrase(seedPhrase)\n // const nodeContext = {\n // wallet, logger, config,\n // }\n const app = getApp()\n const server = app.listen(port, hostname, () => logger?.log(`[Bridge] Server listening at http://${hostname}:${port}`))\n server.setTimeout(20_000)\n return server\n}\n"],"mappings":"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","names":["customPoweredByHeader","disableCaseSensitiveRouting","disableExpressDefaultPoweredByHeader","getJsonBodyParser","getJsonBodyParserOptions","responseProfiler","standardErrors","standardResponses","compression","cors","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","toAddress","toHex","PayloadZodStrictOfSchema","BridgeDestinationObservationFieldsZod","BridgeDestinationObservationSchema","z","isPromise","ReasonPhrases","StatusCodes","z","EmptyParamsZod","z","object","catchall","string","EmptyQueryParamsZod","union","array","ValidateRequestDefaults","params","query","body","json","response","requestHandlerValidator","schemas","validators","handler","req","res","next","originalJson","bind","errors","keys","key","validator","result","safeParse","success","Object","assign","data","push","error","issues","map","issue","path","length","message","join","err","Error","name","ReasonPhrases","BAD_REQUEST","statusCode","StatusCodes","INTERNAL_SERVER_ERROR","isPromise","hexFromHexString","HexZod","isAddress","toAddress","isUndefined","remoteChainId","ChainIdPathParam","refine","val","chainIdHex","prefix","suppliedChainId","message","params","z","object","chainId","ChainIdPathParam","nonce","string","response","PayloadZodStrictOfSchema","BridgeDestinationObservationSchema","extend","BridgeDestinationObservationFieldsZod","shape","validateRequest","requestHandlerValidator","bridgeFromRemoteStatus","method","path","handlers","req","res","rand","Promise","resolve","Math","random","found","sendStatus","confirmed","observation","schema","dest","destAddress","toAddress","destAmount","toHex","destToken","src","srcAddress","srcAmount","srcToken","destConfirmation","json","asHash","PayloadBuilder","PayloadZodLooseOfSchema","PayloadZodStrictOfSchema","BridgeIntentFieldsZod","BridgeIntentSchema","BridgeSourceObservationFieldsZod","BridgeSourceObservationSchema","TransferSchema","z","params","z","object","chainId","ChainIdPathParam","body","tuple","PayloadZodStrictOfSchema","BridgeIntentSchema","extend","BridgeIntentFieldsZod","shape","PayloadZodLooseOfSchema","TransferSchema","response","BridgeSourceObservationSchema","BridgeSourceObservationFieldsZod","validateRequest","requestHandlerValidator","bridgeToRemote","method","path","handlers","req","res","bridgeIntent","srcConfirmation","Promise","resolve","asHash","bridgeCommonFieldsZod","bridgeCommonFields","parse","bridgeObservationFields","bridgeObservation","PayloadBuilder","schema","fields","build","json","hexToBigInt","toAddress","toHex","createTransferPayload","PayloadBuilder","PayloadZodLooseOfSchema","PayloadZodStrictOfSchema","BridgeIntentFieldsZod","BridgeIntentSchema","TransferSchema","v4","z","TOKEN_ADDRESS","bridgeableTokenContract","toHex","xl1ChainId","toAddress","fixedFee","percentFee","bridgeEscrowAddress","bridgeFeesAddress","remoteChainId","params","z","object","chainId","ChainIdPathParam","body","BridgeIntentFieldsZod","pick","destAddress","srcAddress","srcAmount","response","tuple","PayloadZodStrictOfSchema","BridgeIntentSchema","extend","shape","PayloadZodLooseOfSchema","TransferSchema","validateRequest","requestHandlerValidator","bridgeToRemoteEstimate","method","path","handlers","req","res","srcAmountBigInt","hexToBigInt","feeAmount","destAmountBigInt","destAmount","nonce","v4","sender","bridgeIntentFields","src","srcToken","dest","destToken","bridgeIntent","PayloadBuilder","schema","fields","build","transfer","createTransferPayload","json","toAddress","toHex","PayloadZodStrictOfSchema","BridgeDestinationObservationFieldsZod","BridgeDestinationObservationSchema","z","params","z","object","chainId","ChainIdPathParam","nonce","string","response","PayloadZodStrictOfSchema","BridgeDestinationObservationSchema","extend","BridgeDestinationObservationFieldsZod","shape","validateRequest","requestHandlerValidator","bridgeToRemoteStatus","method","path","handlers","req","res","rand","Promise","resolve","Math","random","found","sendStatus","confirmed","observation","schema","dest","destAddress","toAddress","destAmount","toHex","destToken","src","srcAddress","srcAmount","srcToken","destConfirmation","json","getRouteDefinitions","bridgeFromRemoteStatus","bridgeToRemote","bridgeToRemoteEstimate","bridgeToRemoteStatus","addBridgeRoutes","app","routeDefinitions","getRouteDefinitions","definition","method","path","handlers","addRoutes","app","addBridgeRoutes","getApp","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","hostname","getServer","context","logger","port","config","bridge","Promise","resolve","app","getApp","server","listen","log","setTimeout"]}
|
|
1
|
+
{"version":3,"sources":["../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts","../../src/server/routes/bridge/routeDefinitions/pathParams/ChainIdPathParam.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts","../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts","../../src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts","../../src/server/routes/bridge/addBridgeRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts"],"sourcesContent":["import {\n customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler,\n standardErrors, standardResponses,\n} from '@xylabs/express'\nimport compression from 'compression'\nimport cors from 'cors'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\n// export const getApp = (node: NodeInstance): Express => {\nexport const getApp = (): Express => {\n addInstrumentation()\n const app = express()\n app.set('etag', false)\n app.use(cors())\n app.use(compression())\n app.use(responseProfiler)\n app.use(getJsonBodyParser(getJsonBodyParserOptions({ limit: '1mb' })))\n app.use(standardResponses)\n disableExpressDefaultPoweredByHeader(app)\n app.use(customPoweredByHeader)\n disableCaseSensitiveRouting(app)\n // app.node = node\n addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import type { RouteDefinition } from '@xylabs/express'\nimport { requestHandlerValidator } from '@xylabs/express'\nimport { toAddress, toHex } from '@xylabs/hex'\nimport { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'\nimport {\n BridgeDestinationObservationFieldsZod,\n BridgeDestinationObservationSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { ChainIdPathParam } from '../pathParams/index.ts'\n\nconst params = z.object({\n chainId: ChainIdPathParam,\n nonce: z.string(),\n})\nconst response = PayloadZodStrictOfSchema(BridgeDestinationObservationSchema).extend(\n BridgeDestinationObservationFieldsZod.shape,\n)\n\nconst validateRequest = requestHandlerValidator({\n params,\n response,\n})\n\nexport const bridgeFromRemoteStatus: RouteDefinition = {\n method: 'get',\n path: '/bridge/chains/:chainId/bridgeFromRemote/status/:nonce',\n handlers: validateRequest(async (req, res) => {\n const { chainId } = req.params\n const rand = await Promise.resolve(Math.random())\n\n // TODO: Replace with actual lookup logic (e.g. database or chain query)\n const found = rand > 0.5 // simulate lookup\n if (!found) return res.sendStatus(404)\n\n const confirmed = rand > 0.8 // simulate pending/confirmed\n if (!confirmed) return res.sendStatus(204)\n\n const observation: BridgeDestinationObservation = {\n schema: BridgeDestinationObservationSchema,\n dest: chainId,\n destAddress: toAddress('0xabc'),\n destAmount: toHex('0x100'),\n destToken: toAddress('0xdef'),\n src: toAddress('0x02'),\n srcAddress: toAddress('0x123'),\n srcAmount: toHex('0x200'),\n srcToken: toHex('0x456'),\n destConfirmation: toHex('0x9999'),\n }\n res.json(observation)\n }),\n}\n","import {\n hexFromHexString, HexZod, isAddress, toAddress,\n} from '@xylabs/hex'\nimport { isUndefined } from '@xylabs/typeof'\nimport type { ChainId } from '@xyo-network/xl1-protocol'\n\nconst remoteChainId: ChainId = toAddress('0x01')\n\nexport const ChainIdPathParam = HexZod.refine(\n (val) => {\n const chainIdHex = hexFromHexString(val, { prefix: true })\n if (isAddress(chainIdHex)) return false\n const suppliedChainId = toAddress(chainIdHex)\n if (isUndefined(suppliedChainId)) return false\n return suppliedChainId === remoteChainId\n },\n { message: `Only ${remoteChainId} is supported` },\n)\n","import type { RouteDefinition } from '@xylabs/express'\nimport { requestHandlerValidator } from '@xylabs/express'\nimport { asHash } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeSourceObservation, BridgeSourceObservationFields } from '@xyo-network/xl1-protocol'\nimport {\n BridgeIntentFieldsZod,\n BridgeIntentSchema,\n BridgeSourceObservationFieldsZod,\n BridgeSourceObservationSchema,\n TransferSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { ChainIdPathParam } from '../pathParams/index.ts'\n\nconst params = z.object({ chainId: ChainIdPathParam })\nconst body = z.tuple([\n // TODO: TransactionBoundWitness\n PayloadZodStrictOfSchema(BridgeIntentSchema).extend(BridgeIntentFieldsZod.shape),\n PayloadZodLooseOfSchema(TransferSchema),\n])\nconst response = PayloadZodStrictOfSchema(BridgeSourceObservationSchema).extend(BridgeSourceObservationFieldsZod.shape)\n\nconst validateRequest = requestHandlerValidator({\n params,\n body,\n response,\n})\n\nexport const bridgeToRemote: RouteDefinition = {\n method: 'post',\n path: '/bridge/chains/:chainId/bridgeToRemote',\n handlers: validateRequest(async (req, res) => {\n const { body } = req\n const [bridgeIntent] = body\n // TODO: Execute bridge transaction on-chain\n const srcConfirmation = await Promise.resolve(asHash('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'))\n\n // Extract common fields for BridgeSourceObservation from BridgeIntent\n const bridgeCommonFieldsZod = z.object({}).extend(BridgeSourceObservationFieldsZod.shape)\n const bridgeCommonFields = bridgeCommonFieldsZod.parse(bridgeIntent)\n const bridgeObservationFields: BridgeSourceObservationFields = {\n ...bridgeCommonFields,\n srcConfirmation,\n }\n const bridgeObservation: BridgeSourceObservation = new PayloadBuilder<BridgeSourceObservation>(\n { schema: BridgeSourceObservationSchema },\n ).fields(bridgeObservationFields).build()\n res.json(bridgeObservation)\n }),\n}\n","import type { RouteDefinition } from '@xylabs/express'\nimport { requestHandlerValidator } from '@xylabs/express'\nimport {\n hexToBigInt, toAddress, toHex,\n} from '@xylabs/hex'\nimport { createTransferPayload } from '@xyo-network/chain-protocol'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type {\n BridgeIntent, BridgeIntentFields, ChainId, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport {\n BridgeIntentFieldsZod, BridgeIntentSchema, TransferSchema,\n} from '@xyo-network/xl1-protocol'\nimport { v4 } from 'uuid'\nimport { z } from 'zod'\n\nimport { ChainIdPathParam } from '../pathParams/index.ts'\n\n// TODO: Get from config\nconst TOKEN_ADDRESS = '0x5FbDB2315678afecb367f032d93F642f64180aa3'\nconst bridgeableTokenContract = toHex(TOKEN_ADDRESS)\nconst xl1ChainId: ChainId = toAddress('0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9')\nconst fixedFee: bigint = 1_000_000_000_000_000n\nconst percentFee: bigint = 5n // 0.5%\nconst bridgeEscrowAddress = toAddress('0x0a')\nconst bridgeFeesAddress = toAddress('0x0b')\nconst remoteChainId: ChainId = toHex('0x01')\n\nconst params = z.object({ chainId: ChainIdPathParam })\nconst body = BridgeIntentFieldsZod.pick({\n destAddress: true,\n srcAddress: true,\n srcAmount: true,\n})\nconst response = z.tuple([\n PayloadZodStrictOfSchema(BridgeIntentSchema).extend(BridgeIntentFieldsZod.shape),\n PayloadZodLooseOfSchema(TransferSchema),\n])\nconst validateRequest = requestHandlerValidator({\n params, body, response,\n})\n\nexport const bridgeToRemoteEstimate: RouteDefinition = {\n method: 'post',\n path: '/bridge/chains/:chainId/bridgeToRemote/estimate',\n handlers: validateRequest((req, res) => {\n const {\n srcAddress, srcAmount, destAddress,\n } = req.body\n\n const srcAmountBigInt = hexToBigInt(srcAmount)\n const feeAmount = fixedFee + ((srcAmountBigInt * percentFee) / 100n)\n const destAmountBigInt = srcAmountBigInt > feeAmount ? srcAmountBigInt - feeAmount : 0n\n const destAmount = toHex(destAmountBigInt)\n const nonce = v4()\n\n const sender = toAddress(srcAddress)\n\n const bridgeIntentFields: BridgeIntentFields = {\n // Source\n src: xl1ChainId,\n srcAddress,\n srcAmount,\n srcToken: xl1ChainId,\n\n // Destination\n dest: remoteChainId,\n destAddress,\n destAmount,\n destToken: bridgeableTokenContract,\n nonce,\n }\n const bridgeIntent: BridgeIntent = new PayloadBuilder<BridgeIntent>({ schema: BridgeIntentSchema }).fields(bridgeIntentFields).build()\n\n const transfer: Transfer = createTransferPayload(sender, {\n [bridgeEscrowAddress]: destAmountBigInt,\n [bridgeFeesAddress]: feeAmount,\n })\n\n res.json([bridgeIntent, transfer])\n }),\n}\n","import type { RouteDefinition } from '@xylabs/express'\nimport { requestHandlerValidator } from '@xylabs/express'\nimport { toAddress, toHex } from '@xylabs/hex'\nimport { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'\nimport type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'\nimport {\n BridgeDestinationObservationFieldsZod,\n BridgeDestinationObservationSchema,\n} from '@xyo-network/xl1-protocol'\nimport { z } from 'zod'\n\nimport { ChainIdPathParam } from '../pathParams/index.ts'\n\nconst params = z.object({\n chainId: ChainIdPathParam,\n nonce: z.string(),\n})\nconst response = PayloadZodStrictOfSchema(BridgeDestinationObservationSchema).extend(\n BridgeDestinationObservationFieldsZod.shape,\n)\n\nconst validateRequest = requestHandlerValidator({\n params,\n response,\n})\n\nexport const bridgeToRemoteStatus: RouteDefinition = {\n method: 'get',\n path: '/bridge/chains/:chainId/bridgeToRemote/status/:nonce',\n handlers: validateRequest(async (req, res) => {\n const { chainId } = req.params\n const rand = await Promise.resolve(Math.random())\n\n // TODO: Replace with actual lookup logic (e.g. database or chain query)\n const found = rand > 0.5 // simulate lookup\n if (!found) return res.sendStatus(404)\n\n const confirmed = rand > 0.8 // simulate pending/confirmed\n if (!confirmed) return res.sendStatus(204)\n\n const observation: BridgeDestinationObservation = {\n schema: BridgeDestinationObservationSchema,\n dest: chainId,\n destAddress: toAddress('0xabc'),\n destAmount: toHex('0x100'),\n destToken: toAddress('0xdef'),\n src: toAddress('0x02'),\n srcAddress: toAddress('0x123'),\n srcAmount: toHex('0x200'),\n srcToken: toHex('0x456'),\n destConfirmation: toHex('0x9999'),\n }\n res.json(observation)\n }),\n}\n","import type { RouteDefinition } from '@xylabs/express'\n\nimport {\n bridgeFromRemoteStatus, bridgeToRemote, bridgeToRemoteEstimate, bridgeToRemoteStatus,\n} from './routes/index.ts'\n\nexport const getRouteDefinitions = (): RouteDefinition[] => {\n return [\n bridgeFromRemoteStatus,\n bridgeToRemote,\n bridgeToRemoteEstimate,\n bridgeToRemoteStatus,\n ]\n}\n","import type { Express } from 'express'\n\nimport { getRouteDefinitions } from './routeDefinitions/index.ts'\n\nexport const addBridgeRoutes = (app: Express) => {\n const routeDefinitions = getRouteDefinitions()\n for (const definition of routeDefinitions) {\n app[definition.method](definition.path, definition.handlers)\n }\n}\n","import type { Express } from 'express'\n\nimport { addBridgeRoutes } from './bridge/index.ts'\n\nexport const addRoutes = (app: Express) => {\n addBridgeRoutes(app)\n}\n","import type { Logger } from '@xylabs/logger'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { type Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n// const hostname = '0.0.0.0'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\n// const getSeedPhrase = async (bios: BiosExternalInterface, config: Config, logger?: Logger): Promise<string> => {\n// const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n// logger?.debug(`[Bridge] Stored mnemonic: ${storedSeedPhrase}`)\n// const { mnemonic } = config.api\n// if (isString(storedSeedPhrase) && isString(mnemonic)) {\n// logger?.warn('[Bridge] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n// await bios.seedPhraseStore.set('os', mnemonic)\n// } else {\n// let seedPhrase: string\n// if (isString(mnemonic)) {\n// seedPhrase = mnemonic\n// } else {\n// seedPhrase = HDWallet.generateMnemonic()\n// logger?.log('[Bridge] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n// logger?.log(`[Bridge] Mnemonic: ${seedPhrase}`)\n// }\n// await bios.seedPhraseStore.set('os', seedPhrase)\n// }\n// return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n// }\n\ninterface GetServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport const getServer = async (context: GetServerContext) => {\n const { logger } = context\n const { port } = context.config.bridge\n await Promise.resolve() // bios booting is currently disabled\n // const bios = await boot()\n // const seedPhrase = isDefined(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger)\n // const wallet = await HDWallet.fromPhrase(seedPhrase)\n // const nodeContext = {\n // wallet, logger, config,\n // }\n const app = getApp()\n const server = app.listen(port, hostname, () => logger?.log(`[Bridge] Server listening at http://${hostname}:${port}`))\n server.setTimeout(20_000)\n return server\n}\n"],"mappings":"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","names":["customPoweredByHeader","disableCaseSensitiveRouting","disableExpressDefaultPoweredByHeader","getJsonBodyParser","getJsonBodyParserOptions","responseProfiler","standardErrors","standardResponses","compression","cors","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","requestHandlerValidator","toAddress","toHex","PayloadZodStrictOfSchema","BridgeDestinationObservationFieldsZod","BridgeDestinationObservationSchema","z","hexFromHexString","HexZod","isAddress","toAddress","isUndefined","remoteChainId","ChainIdPathParam","refine","val","chainIdHex","prefix","suppliedChainId","message","params","z","object","chainId","ChainIdPathParam","nonce","string","response","PayloadZodStrictOfSchema","BridgeDestinationObservationSchema","extend","BridgeDestinationObservationFieldsZod","shape","validateRequest","requestHandlerValidator","bridgeFromRemoteStatus","method","path","handlers","req","res","rand","Promise","resolve","Math","random","found","sendStatus","confirmed","observation","schema","dest","destAddress","toAddress","destAmount","toHex","destToken","src","srcAddress","srcAmount","srcToken","destConfirmation","json","requestHandlerValidator","asHash","PayloadBuilder","PayloadZodLooseOfSchema","PayloadZodStrictOfSchema","BridgeIntentFieldsZod","BridgeIntentSchema","BridgeSourceObservationFieldsZod","BridgeSourceObservationSchema","TransferSchema","z","params","z","object","chainId","ChainIdPathParam","body","tuple","PayloadZodStrictOfSchema","BridgeIntentSchema","extend","BridgeIntentFieldsZod","shape","PayloadZodLooseOfSchema","TransferSchema","response","BridgeSourceObservationSchema","BridgeSourceObservationFieldsZod","validateRequest","requestHandlerValidator","bridgeToRemote","method","path","handlers","req","res","bridgeIntent","srcConfirmation","Promise","resolve","asHash","bridgeCommonFieldsZod","bridgeCommonFields","parse","bridgeObservationFields","bridgeObservation","PayloadBuilder","schema","fields","build","json","requestHandlerValidator","hexToBigInt","toAddress","toHex","createTransferPayload","PayloadBuilder","PayloadZodLooseOfSchema","PayloadZodStrictOfSchema","BridgeIntentFieldsZod","BridgeIntentSchema","TransferSchema","v4","z","TOKEN_ADDRESS","bridgeableTokenContract","toHex","xl1ChainId","toAddress","fixedFee","percentFee","bridgeEscrowAddress","bridgeFeesAddress","remoteChainId","params","z","object","chainId","ChainIdPathParam","body","BridgeIntentFieldsZod","pick","destAddress","srcAddress","srcAmount","response","tuple","PayloadZodStrictOfSchema","BridgeIntentSchema","extend","shape","PayloadZodLooseOfSchema","TransferSchema","validateRequest","requestHandlerValidator","bridgeToRemoteEstimate","method","path","handlers","req","res","srcAmountBigInt","hexToBigInt","feeAmount","destAmountBigInt","destAmount","nonce","v4","sender","bridgeIntentFields","src","srcToken","dest","destToken","bridgeIntent","PayloadBuilder","schema","fields","build","transfer","createTransferPayload","json","requestHandlerValidator","toAddress","toHex","PayloadZodStrictOfSchema","BridgeDestinationObservationFieldsZod","BridgeDestinationObservationSchema","z","params","z","object","chainId","ChainIdPathParam","nonce","string","response","PayloadZodStrictOfSchema","BridgeDestinationObservationSchema","extend","BridgeDestinationObservationFieldsZod","shape","validateRequest","requestHandlerValidator","bridgeToRemoteStatus","method","path","handlers","req","res","rand","Promise","resolve","Math","random","found","sendStatus","confirmed","observation","schema","dest","destAddress","toAddress","destAmount","toHex","destToken","src","srcAddress","srcAmount","srcToken","destConfirmation","json","getRouteDefinitions","bridgeFromRemoteStatus","bridgeToRemote","bridgeToRemoteEstimate","bridgeToRemoteStatus","addBridgeRoutes","app","routeDefinitions","getRouteDefinitions","definition","method","path","handlers","addRoutes","app","addBridgeRoutes","getApp","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","hostname","getServer","context","logger","port","config","bridge","Promise","resolve","app","getApp","server","listen","log","setTimeout"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRouteDefinitions.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"getRouteDefinitions.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/bridge/routeDefinitions/getRouteDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAMtD,eAAO,MAAM,mBAAmB,QAAO,eAAe,EAOrD,CAAA"}
|
package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeFromRemoteStatus.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridgeFromRemoteStatus.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeFromRemoteStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA0BtD,eAAO,MAAM,sBAAsB,EAAE,eA4BpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeToRemote.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridgeToRemote.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA+BtD,eAAO,MAAM,cAAc,EAAE,eAqB5B,CAAA"}
|
package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeToRemoteEstimate.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridgeToRemoteEstimate.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteEstimate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA2CtD,eAAO,MAAM,sBAAsB,EAAE,eAuCpC,CAAA"}
|
package/dist/node/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeToRemoteStatus.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bridgeToRemoteStatus.d.ts","sourceRoot":"","sources":["../../../../../../../src/server/routes/bridge/routeDefinitions/routes/bridgeToRemoteStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AA0BtD,eAAO,MAAM,oBAAoB,EAAE,eA4BlC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/chain-bridge",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.8",
|
|
4
4
|
"description": "XYO Layer One Bridge",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -53,23 +53,22 @@
|
|
|
53
53
|
"@xylabs/hex": "~5.0.24",
|
|
54
54
|
"@xylabs/logger": "~5.0.24",
|
|
55
55
|
"@xylabs/typeof": "~5.0.24",
|
|
56
|
-
"@xyo-network/archivist-model": "~5.1.
|
|
57
|
-
"@xyo-network/boundwitness-model": "~5.1.
|
|
58
|
-
"@xyo-network/chain-protocol": "~1.16.
|
|
59
|
-
"@xyo-network/manifest-model": "~5.1.
|
|
60
|
-
"@xyo-network/module-factory-locator": "~5.1.
|
|
61
|
-
"@xyo-network/module-model": "~5.1.
|
|
62
|
-
"@xyo-network/node-model": "~5.1.
|
|
63
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
64
|
-
"@xyo-network/payload-model": "~5.1.
|
|
56
|
+
"@xyo-network/archivist-model": "~5.1.21",
|
|
57
|
+
"@xyo-network/boundwitness-model": "~5.1.21",
|
|
58
|
+
"@xyo-network/chain-protocol": "~1.16.8",
|
|
59
|
+
"@xyo-network/manifest-model": "~5.1.21",
|
|
60
|
+
"@xyo-network/module-factory-locator": "~5.1.21",
|
|
61
|
+
"@xyo-network/module-model": "~5.1.21",
|
|
62
|
+
"@xyo-network/node-model": "~5.1.21",
|
|
63
|
+
"@xyo-network/payload-builder": "~5.1.21",
|
|
64
|
+
"@xyo-network/payload-model": "~5.1.21",
|
|
65
65
|
"@xyo-network/typechain": "~4.0.10",
|
|
66
|
-
"@xyo-network/wallet-model": "~5.1.
|
|
67
|
-
"@xyo-network/xl1-protocol": "~1.13.
|
|
68
|
-
"@xyo-network/xl1-protocol-sdk": "~1.16.
|
|
66
|
+
"@xyo-network/wallet-model": "~5.1.21",
|
|
67
|
+
"@xyo-network/xl1-protocol": "~1.13.6",
|
|
68
|
+
"@xyo-network/xl1-protocol-sdk": "~1.16.8",
|
|
69
69
|
"compression": "~1.8.1",
|
|
70
70
|
"cors": "~2.8.5",
|
|
71
71
|
"express": "~5.1.0",
|
|
72
|
-
"http-status-codes": "~2.3.0",
|
|
73
72
|
"rxjs": "~7.8.2",
|
|
74
73
|
"uuid": "~13.0.0",
|
|
75
74
|
"zod": "~4.1.12"
|
|
@@ -79,7 +78,7 @@
|
|
|
79
78
|
"@types/cors": "~2.8.19",
|
|
80
79
|
"@types/express": "5.0.5",
|
|
81
80
|
"@types/express-serve-static-core": "~5.1.0",
|
|
82
|
-
"@types/node": "~24.10.
|
|
81
|
+
"@types/node": "~24.10.1",
|
|
83
82
|
"@xylabs/assert": "~5.0.24",
|
|
84
83
|
"@xylabs/base": "~5.0.24",
|
|
85
84
|
"@xylabs/delay": "~5.0.24",
|
|
@@ -88,28 +87,28 @@
|
|
|
88
87
|
"@xylabs/promise": "~5.0.24",
|
|
89
88
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
90
89
|
"@xylabs/tsconfig": "~7.2.8",
|
|
91
|
-
"@xyo-network/account": "~5.1.
|
|
92
|
-
"@xyo-network/account-model": "~5.1.
|
|
93
|
-
"@xyo-network/archivist-abstract": "~5.1.
|
|
94
|
-
"@xyo-network/archivist-memory": "~5.1.
|
|
95
|
-
"@xyo-network/archivist-mongodb": "~5.1.
|
|
96
|
-
"@xyo-network/archivist-view": "~5.1.
|
|
90
|
+
"@xyo-network/account": "~5.1.21",
|
|
91
|
+
"@xyo-network/account-model": "~5.1.21",
|
|
92
|
+
"@xyo-network/archivist-abstract": "~5.1.21",
|
|
93
|
+
"@xyo-network/archivist-memory": "~5.1.21",
|
|
94
|
+
"@xyo-network/archivist-mongodb": "~5.1.21",
|
|
95
|
+
"@xyo-network/archivist-view": "~5.1.21",
|
|
97
96
|
"@xyo-network/bios": "~7.1.1",
|
|
98
97
|
"@xyo-network/bios-model": "~7.1.1",
|
|
99
|
-
"@xyo-network/boundwitness-builder": "~5.1.
|
|
100
|
-
"@xyo-network/chain-modules": "~1.16.
|
|
101
|
-
"@xyo-network/chain-protocol": "~1.16.
|
|
102
|
-
"@xyo-network/chain-services": "~1.16.
|
|
103
|
-
"@xyo-network/chain-telemetry": "~1.16.
|
|
104
|
-
"@xyo-network/manifest-wrapper": "~5.1.
|
|
105
|
-
"@xyo-network/module-abstract": "~5.1.
|
|
106
|
-
"@xyo-network/module-abstract-mongodb": "~5.1.
|
|
107
|
-
"@xyo-network/module-model-mongodb": "~5.1.
|
|
108
|
-
"@xyo-network/node-memory": "~5.1.
|
|
109
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
110
|
-
"@xyo-network/sentinel-memory": "~5.1.
|
|
111
|
-
"@xyo-network/wallet": "~5.1.
|
|
112
|
-
"@xyo-network/xl1-protocol": "~1.13.
|
|
98
|
+
"@xyo-network/boundwitness-builder": "~5.1.21",
|
|
99
|
+
"@xyo-network/chain-modules": "~1.16.8",
|
|
100
|
+
"@xyo-network/chain-protocol": "~1.16.8",
|
|
101
|
+
"@xyo-network/chain-services": "~1.16.8",
|
|
102
|
+
"@xyo-network/chain-telemetry": "~1.16.8",
|
|
103
|
+
"@xyo-network/manifest-wrapper": "~5.1.21",
|
|
104
|
+
"@xyo-network/module-abstract": "~5.1.21",
|
|
105
|
+
"@xyo-network/module-abstract-mongodb": "~5.1.21",
|
|
106
|
+
"@xyo-network/module-model-mongodb": "~5.1.21",
|
|
107
|
+
"@xyo-network/node-memory": "~5.1.21",
|
|
108
|
+
"@xyo-network/payload-builder": "~5.1.21",
|
|
109
|
+
"@xyo-network/sentinel-memory": "~5.1.21",
|
|
110
|
+
"@xyo-network/wallet": "~5.1.21",
|
|
111
|
+
"@xyo-network/xl1-protocol": "~1.13.6",
|
|
113
112
|
"dotenv": "~17.2.3",
|
|
114
113
|
"eslint": "^9.39.1",
|
|
115
114
|
"ethers": "~6.15.0",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { RouteDefinition } from '@xylabs/express'
|
|
2
|
+
import { requestHandlerValidator } from '@xylabs/express'
|
|
1
3
|
import { toAddress, toHex } from '@xylabs/hex'
|
|
2
4
|
import { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'
|
|
3
5
|
import type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'
|
|
@@ -7,9 +9,7 @@ import {
|
|
|
7
9
|
} from '@xyo-network/xl1-protocol'
|
|
8
10
|
import { z } from 'zod'
|
|
9
11
|
|
|
10
|
-
import { requestHandlerValidator } from '../../middleware/index.ts'
|
|
11
12
|
import { ChainIdPathParam } from '../pathParams/index.ts'
|
|
12
|
-
import type { RouteDefinition } from '../routeDefinition.ts'
|
|
13
13
|
|
|
14
14
|
const params = z.object({
|
|
15
15
|
chainId: ChainIdPathParam,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { RouteDefinition } from '@xylabs/express'
|
|
2
|
+
import { requestHandlerValidator } from '@xylabs/express'
|
|
1
3
|
import { asHash } from '@xylabs/hex'
|
|
2
4
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
3
5
|
import { PayloadZodLooseOfSchema, PayloadZodStrictOfSchema } from '@xyo-network/payload-model'
|
|
@@ -11,9 +13,7 @@ import {
|
|
|
11
13
|
} from '@xyo-network/xl1-protocol'
|
|
12
14
|
import { z } from 'zod'
|
|
13
15
|
|
|
14
|
-
import { requestHandlerValidator } from '../../middleware/index.ts'
|
|
15
16
|
import { ChainIdPathParam } from '../pathParams/index.ts'
|
|
16
|
-
import type { RouteDefinition } from '../routeDefinition.ts'
|
|
17
17
|
|
|
18
18
|
const params = z.object({ chainId: ChainIdPathParam })
|
|
19
19
|
const body = z.tuple([
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { RouteDefinition } from '@xylabs/express'
|
|
2
|
+
import { requestHandlerValidator } from '@xylabs/express'
|
|
1
3
|
import {
|
|
2
4
|
hexToBigInt, toAddress, toHex,
|
|
3
5
|
} from '@xylabs/hex'
|
|
@@ -13,9 +15,7 @@ import {
|
|
|
13
15
|
import { v4 } from 'uuid'
|
|
14
16
|
import { z } from 'zod'
|
|
15
17
|
|
|
16
|
-
import { requestHandlerValidator } from '../../middleware/index.ts'
|
|
17
18
|
import { ChainIdPathParam } from '../pathParams/index.ts'
|
|
18
|
-
import type { RouteDefinition } from '../routeDefinition.ts'
|
|
19
19
|
|
|
20
20
|
// TODO: Get from config
|
|
21
21
|
const TOKEN_ADDRESS = '0x5FbDB2315678afecb367f032d93F642f64180aa3'
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { RouteDefinition } from '@xylabs/express'
|
|
2
|
+
import { requestHandlerValidator } from '@xylabs/express'
|
|
1
3
|
import { toAddress, toHex } from '@xylabs/hex'
|
|
2
4
|
import { PayloadZodStrictOfSchema } from '@xyo-network/payload-model'
|
|
3
5
|
import type { BridgeDestinationObservation } from '@xyo-network/xl1-protocol'
|
|
@@ -7,9 +9,7 @@ import {
|
|
|
7
9
|
} from '@xyo-network/xl1-protocol'
|
|
8
10
|
import { z } from 'zod'
|
|
9
11
|
|
|
10
|
-
import { requestHandlerValidator } from '../../middleware/index.ts'
|
|
11
12
|
import { ChainIdPathParam } from '../pathParams/index.ts'
|
|
12
|
-
import type { RouteDefinition } from '../routeDefinition.ts'
|
|
13
13
|
|
|
14
14
|
const params = z.object({
|
|
15
15
|
chainId: ChainIdPathParam,
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { RequestHandler } from 'express';
|
|
2
|
-
export type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'options' | 'head';
|
|
3
|
-
export interface RouteDefinition<H extends RequestHandler = RequestHandler> {
|
|
4
|
-
handlers: H[] | H;
|
|
5
|
-
method: HttpMethod;
|
|
6
|
-
path: string | RegExp;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=routeDefinition.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routeDefinition.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/bridge/routeDefinitions/routeDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,MAAM,UAAU,GAChB,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,CAAA;AAEZ,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,cAAc,GAAG,cAAc;IAEzC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { RequestHandler } from 'express'
|
|
2
|
-
|
|
3
|
-
export type HttpMethod
|
|
4
|
-
= | 'get'
|
|
5
|
-
| 'post'
|
|
6
|
-
| 'put'
|
|
7
|
-
| 'patch'
|
|
8
|
-
| 'delete'
|
|
9
|
-
| 'options'
|
|
10
|
-
| 'head'
|
|
11
|
-
|
|
12
|
-
export interface RouteDefinition<
|
|
13
|
-
H extends RequestHandler = RequestHandler,
|
|
14
|
-
> {
|
|
15
|
-
handlers: H[] | H
|
|
16
|
-
method: HttpMethod
|
|
17
|
-
path: string | RegExp
|
|
18
|
-
}
|