From b80d6643aef70f4ae05ddea118940c6cea54955f Mon Sep 17 00:00:00 2001 From: Makoto Inoue <2630+makoto@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:27:31 +0100 Subject: [PATCH] move propsDecoder (#41) * move propsDecoder * Add Request as type * Update workers-types * Fix lint error --- arb-gateway/src/worker.ts | 21 ++------------------- bun.lockb | Bin 573664 -> 572120 bytes evm-gateway/package.json | 2 +- evm-gateway/src/index.ts | 2 +- evm-gateway/src/utils.ts | 23 +++++++++++++++++++++-- op-gateway/src/worker.ts | 21 ++------------------- 6 files changed, 27 insertions(+), 42 deletions(-) diff --git a/arb-gateway/src/worker.ts b/arb-gateway/src/worker.ts index 0114864b..30276b80 100644 --- a/arb-gateway/src/worker.ts +++ b/arb-gateway/src/worker.ts @@ -1,8 +1,8 @@ import { Request as CFWRequest } from '@cloudflare/workers-types'; import { Server } from '@ensdomains/ccip-read-cf-worker'; -import type { Router } from '@ensdomains/evm-gateway'; +import { propsDecoder, type Router } from '@ensdomains/evm-gateway'; import { InMemoryBlockCache } from './blockCache/InMemoryBlockCache.js'; -import { Tracker, type PropsDecoder } from '@ensdomains/server-analytics'; +import { Tracker } from '@ensdomains/server-analytics'; interface Env { L1_PROVIDER_URL: string; L2_PROVIDER_URL: string; @@ -13,23 +13,6 @@ interface Env { let app: Router; -const propsDecoder: PropsDecoder = (request?: CFWRequest) => { - if (!request || !request.url) { - return {}; - } - const trackingData = request.url.match( - /\/0x[a-fA-F0-9]{40}\/0x[a-fA-F0-9]{1,}\.json/ - ); - if (trackingData) { - return { - sender: trackingData[0].slice(1, 42), - calldata: trackingData[0].slice(44).replace('.json', ''), - }; - } else { - return {}; - } -}; - async function fetch(request: CFWRequest, env: Env) { // Set PROVIDER_URL under .dev.vars locally. Set the key as secret remotely with `wrangler secret put WORKER_PROVIDER_URL` const { diff --git a/bun.lockb b/bun.lockb index dddb581de8dbbc6c3913a1de8768b2117cdb91af..7c6c560a6a3730c31e9c6ccaca1e18d06d5ffa59 100755 GIT binary patch delta 80403 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

x1B{W-H&2TWN+~Utao(A>lC=N8cV;n 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 gqhl?x-LWc`O@{6AtC+-Zo8?(`n-&MWe| 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 S!{R61Zk^ZI9*I<9$NvMB!jkX+ diff --git a/evm-gateway/package.json b/evm-gateway/package.json index 4b11ec5f..0e15c2bc 100644 --- a/evm-gateway/package.json +++ b/evm-gateway/package.json @@ -6,7 +6,7 @@ "module": "./_esm/index.js", "dependencies": { "@chainlink/ccip-read-server": "^0.2.1", - "@cloudflare/workers-types": "^4.20240117.0", + "@cloudflare/workers-types": "^4.20240423.0", "@ensdomains/ccip-read-cf-worker": "^0.0.1", "ethers": "^6.7.1" }, diff --git a/evm-gateway/src/index.ts b/evm-gateway/src/index.ts index 39e5e5a3..b582ddbc 100644 --- a/evm-gateway/src/index.ts +++ b/evm-gateway/src/index.ts @@ -1,4 +1,4 @@ export { EVMGateway, StorageLayout } from './EVMGateway.js'; export { EVMProofHelper, type StateProof } from './EVMProofHelper.js'; export type { IProofService, ProvableBlock } from './IProofService.js'; -export type { Router } from './utils.js'; +export { propsDecoder, type Router } from './utils.js'; diff --git a/evm-gateway/src/utils.ts b/evm-gateway/src/utils.ts index 0524bdf4..e3975480 100644 --- a/evm-gateway/src/utils.ts +++ b/evm-gateway/src/utils.ts @@ -1,5 +1,24 @@ -import { Request as CFWRequest } from '@cloudflare/workers-types'; - +import { type Request as CFWRequest } from '@cloudflare/workers-types'; +import { type PropsDecoder } from '@ensdomains/server-analytics'; export interface Router { handle: (request: CFWRequest) => Promise; } + +export const propsDecoder: PropsDecoder = ( + request?: CFWRequest +) => { + if (!request || !request.url) { + return {}; + } + const trackingData = request.url.match( + /\/0x[a-fA-F0-9]{40}\/0x[a-fA-F0-9]{1,}\.json/ + ); + if (trackingData) { + return { + sender: trackingData[0].slice(1, 42), + calldata: trackingData[0].slice(44).replace('.json', ''), + }; + } else { + return {}; + } +}; diff --git a/op-gateway/src/worker.ts b/op-gateway/src/worker.ts index 643e864f..daac73f9 100644 --- a/op-gateway/src/worker.ts +++ b/op-gateway/src/worker.ts @@ -1,7 +1,7 @@ import { Request as CFWRequest } from '@cloudflare/workers-types'; import { Server } from '@ensdomains/ccip-read-cf-worker'; -import type { Router } from '@ensdomains/evm-gateway'; -import { Tracker, type PropsDecoder } from '@ensdomains/server-analytics'; +import { propsDecoder, type Router } from '@ensdomains/evm-gateway'; +import { Tracker } from '@ensdomains/server-analytics'; interface Env { L1_PROVIDER_URL: string; @@ -14,23 +14,6 @@ interface Env { let app: Router; -const propsDecoder: PropsDecoder = (request?: CFWRequest) => { - if (!request || !request.url) { - return {}; - } - const trackingData = request.url.match( - /\/0x[a-fA-F0-9]{40}\/0x[a-fA-F0-9]{1,}\.json/ - ); - if (trackingData) { - return { - sender: trackingData[0].slice(1, 42), - calldata: trackingData[0].slice(44).replace('.json', ''), - }; - } else { - return {}; - } -}; - async function fetch(request: CFWRequest, env: Env) { // Set PROVIDER_URL under .dev.vars locally. Set the key as secret remotely with `wrangler secret put WORKER_PROVIDER_URL` const {