@latticexyz/faucet 2.2.15 → 2.2.16-54e5c06dd4606d2484a790cd1d531931d634d7a1
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as s}from"../chunk-
|
|
2
|
+
import{a as s}from"../chunk-LVBDKFIB.js";import"dotenv/config";import d from"fastify";import{fastifyTRPCPlugin as u}from"@trpc/server/adapters/fastify";import{http as R,createClient as g}from"viem";import{privateKeyToAccount as h}from"viem/accounts";import{isHex as m,parseEther as f}from"viem";import{z as e,ZodError as T}from"zod";var c=e.object({HOST:e.string().default("0.0.0.0"),PORT:e.coerce.number().positive().default(3002),RPC_HTTP_URL:e.string(),FAUCET_PRIVATE_KEY:e.string().refine(m),DRIP_AMOUNT_ETHER:e.string().default("1").transform(r=>f(r))});function a(r){let n=r!==void 0?e.intersection(c,r):c;try{return n.parse(process.env)}catch(i){if(i instanceof T){let{...p}=i.format();console.error(`
|
|
3
3
|
Missing or invalid environment variables:
|
|
4
4
|
|
|
5
5
|
${Object.keys(p).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bin/faucet-server.ts","../../src/bin/parseEnv.ts"],"sourcesContent":["#!/usr/bin/env node\nimport \"dotenv/config\";\nimport fastify from \"fastify\";\nimport { fastifyTRPCPlugin } from \"@trpc/server/adapters/fastify\";\nimport { http, createClient } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { AppRouter, createAppRouter } from \"../createAppRouter\";\nimport { parseEnv } from \"./parseEnv\";\n\nconst env = parseEnv();\n\nconst client = createClient({\n transport: http(env.RPC_HTTP_URL),\n});\n\nconst faucetAccount = privateKeyToAccount(env.FAUCET_PRIVATE_KEY);\n\n// @see https://fastify.dev/docs/latest/\nconst server = fastify({\n maxParamLength: 5000,\n logger: true,\n});\n\nawait server.register(import(\"@fastify/compress\"));\nawait server.register(import(\"@fastify/cors\"));\n\n// k8s healthchecks\nserver.get(\"/healthz\", (req, res) => res.code(200).send());\nserver.get(\"/readyz\", (req, res) => res.code(200).send());\n\n// @see https://trpc.io/docs/server/adapters/fastify\nserver.register(fastifyTRPCPlugin<AppRouter>, {\n prefix: \"/trpc\",\n trpcOptions: {\n router: createAppRouter(),\n createContext: async () => ({\n client,\n faucetAccount,\n dripAmount: env.DRIP_AMOUNT_ETHER,\n }),\n },\n});\n\nawait server.listen({ host: env.HOST, port: env.PORT });\nconsole.log(`faucet server listening on http://${env.HOST}:${env.PORT}`);\n","import { isHex, parseEther } from \"viem\";\nimport { z, ZodError, ZodIntersection, ZodTypeAny } from \"zod\";\n\nconst commonSchema = z.object({\n HOST: z.string().default(\"0.0.0.0\"),\n PORT: z.coerce.number().positive().default(3002),\n RPC_HTTP_URL: z.string(),\n FAUCET_PRIVATE_KEY: z.string().refine(isHex),\n DRIP_AMOUNT_ETHER: z\n .string()\n .default(\"1\")\n .transform((ether) => parseEther(ether)),\n});\n\nexport function parseEnv<TSchema extends ZodTypeAny | undefined = undefined>(\n schema?: TSchema,\n): z.infer<TSchema extends ZodTypeAny ? ZodIntersection<typeof commonSchema, TSchema> : typeof commonSchema> {\n const envSchema = schema !== undefined ? z.intersection(commonSchema, schema) : commonSchema;\n try {\n return envSchema.parse(process.env);\n } catch (error) {\n if (error instanceof ZodError) {\n const { ...invalidEnvVars } = error.format();\n console.error(`\\nMissing or invalid environment variables:\\n\\n ${Object.keys(invalidEnvVars).join(\"\\n \")}\\n`);\n process.exit(1);\n }\n throw error;\n }\n}\n"],"mappings":";yCACA,MAAO,gBACP,OAAOA,MAAa,UACpB,OAAS,qBAAAC,MAAyB,gCAClC,OAAS,QAAAC,EAAM,gBAAAC,MAAoB,OACnC,OAAS,uBAAAC,MAA2B,gBCLpC,OAAS,SAAAC,EAAO,cAAAC,MAAkB,OAClC,OAAS,KAAAC,EAAG,YAAAC,MAA6C,MAEzD,IAAMC,EAAeF,EAAE,OAAO,CAC5B,KAAMA,EAAE,OAAO,EAAE,QAAQ,SAAS,EAClC,KAAMA,EAAE,OAAO,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,EAC/C,aAAcA,EAAE,OAAO,EACvB,mBAAoBA,EAAE,OAAO,EAAE,OAAOF,CAAK,EAC3C,kBAAmBE,EAChB,OAAO,EACP,QAAQ,GAAG,EACX,UAAWG,GAAUJ,EAAWI,CAAK,CAAC,CAC3C,CAAC,EAEM,SAASC,EACdC,EAC2G,CAC3G,IAAMC,EAAYD,IAAW,OAAYL,EAAE,aAAaE,EAAcG,CAAM,EAAIH,EAChF,GAAI,CACF,OAAOI,EAAU,MAAM,QAAQ,GAAG,CACpC,OAASC,
|
|
1
|
+
{"version":3,"sources":["../../src/bin/faucet-server.ts","../../src/bin/parseEnv.ts"],"sourcesContent":["#!/usr/bin/env node\nimport \"dotenv/config\";\nimport fastify from \"fastify\";\nimport { fastifyTRPCPlugin } from \"@trpc/server/adapters/fastify\";\nimport { http, createClient } from \"viem\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { AppRouter, createAppRouter } from \"../createAppRouter\";\nimport { parseEnv } from \"./parseEnv\";\n\nconst env = parseEnv();\n\nconst client = createClient({\n transport: http(env.RPC_HTTP_URL),\n});\n\nconst faucetAccount = privateKeyToAccount(env.FAUCET_PRIVATE_KEY);\n\n// @see https://fastify.dev/docs/latest/\nconst server = fastify({\n maxParamLength: 5000,\n logger: true,\n});\n\nawait server.register(import(\"@fastify/compress\"));\nawait server.register(import(\"@fastify/cors\"));\n\n// k8s healthchecks\nserver.get(\"/healthz\", (req, res) => res.code(200).send());\nserver.get(\"/readyz\", (req, res) => res.code(200).send());\n\n// @see https://trpc.io/docs/server/adapters/fastify\nserver.register(fastifyTRPCPlugin<AppRouter>, {\n prefix: \"/trpc\",\n trpcOptions: {\n router: createAppRouter(),\n createContext: async () => ({\n client,\n faucetAccount,\n dripAmount: env.DRIP_AMOUNT_ETHER,\n }),\n },\n});\n\nawait server.listen({ host: env.HOST, port: env.PORT });\nconsole.log(`faucet server listening on http://${env.HOST}:${env.PORT}`);\n","import { isHex, parseEther } from \"viem\";\nimport { z, ZodError, ZodIntersection, ZodTypeAny } from \"zod\";\n\nconst commonSchema = z.object({\n HOST: z.string().default(\"0.0.0.0\"),\n PORT: z.coerce.number().positive().default(3002),\n RPC_HTTP_URL: z.string(),\n FAUCET_PRIVATE_KEY: z.string().refine(isHex),\n DRIP_AMOUNT_ETHER: z\n .string()\n .default(\"1\")\n .transform((ether) => parseEther(ether)),\n});\n\nexport function parseEnv<TSchema extends ZodTypeAny | undefined = undefined>(\n schema?: TSchema,\n): z.infer<TSchema extends ZodTypeAny ? ZodIntersection<typeof commonSchema, TSchema> : typeof commonSchema> {\n const envSchema = schema !== undefined ? z.intersection(commonSchema, schema) : commonSchema;\n try {\n return envSchema.parse(process.env);\n } catch (error) {\n if (error instanceof ZodError) {\n const { ...invalidEnvVars } = error.format();\n console.error(`\\nMissing or invalid environment variables:\\n\\n ${Object.keys(invalidEnvVars).join(\"\\n \")}\\n`);\n process.exit(1);\n }\n throw error;\n }\n}\n"],"mappings":";yCACA,MAAO,gBACP,OAAOA,MAAa,UACpB,OAAS,qBAAAC,MAAyB,gCAClC,OAAS,QAAAC,EAAM,gBAAAC,MAAoB,OACnC,OAAS,uBAAAC,MAA2B,gBCLpC,OAAS,SAAAC,EAAO,cAAAC,MAAkB,OAClC,OAAS,KAAAC,EAAG,YAAAC,MAA6C,MAEzD,IAAMC,EAAeF,EAAE,OAAO,CAC5B,KAAMA,EAAE,OAAO,EAAE,QAAQ,SAAS,EAClC,KAAMA,EAAE,OAAO,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,EAC/C,aAAcA,EAAE,OAAO,EACvB,mBAAoBA,EAAE,OAAO,EAAE,OAAOF,CAAK,EAC3C,kBAAmBE,EAChB,OAAO,EACP,QAAQ,GAAG,EACX,UAAWG,GAAUJ,EAAWI,CAAK,CAAC,CAC3C,CAAC,EAEM,SAASC,EACdC,EAC2G,CAC3G,IAAMC,EAAYD,IAAW,OAAYL,EAAE,aAAaE,EAAcG,CAAM,EAAIH,EAChF,GAAI,CACF,OAAOI,EAAU,MAAM,QAAQ,GAAG,CACpC,OAASC,EAAO,CACd,GAAIA,aAAiBN,EAAU,CAC7B,GAAM,CAAE,GAAGO,CAAe,EAAID,EAAM,OAAO,EAC3C,QAAQ,MAAM;AAAA;AAAA;AAAA,IAAoD,OAAO,KAAKC,CAAc,EAAE,KAAK;AAAA,GAAM,CAAC;AAAA,CAAI,EAC9G,QAAQ,KAAK,CAAC,CAChB,CACA,MAAMD,CACR,CACF,CDnBA,IAAME,EAAMC,EAAS,EAEfC,EAASC,EAAa,CAC1B,UAAWC,EAAKJ,EAAI,YAAY,CAClC,CAAC,EAEKK,EAAgBC,EAAoBN,EAAI,kBAAkB,EAG1DO,EAASC,EAAQ,CACrB,eAAgB,IAChB,OAAQ,EACV,CAAC,EAED,MAAMD,EAAO,SAAS,OAAO,mBAAmB,CAAC,EACjD,MAAMA,EAAO,SAAS,OAAO,eAAe,CAAC,EAG7CA,EAAO,IAAI,WAAY,CAACE,EAAKC,IAAQA,EAAI,KAAK,GAAG,EAAE,KAAK,CAAC,EACzDH,EAAO,IAAI,UAAW,CAACE,EAAKC,IAAQA,EAAI,KAAK,GAAG,EAAE,KAAK,CAAC,EAGxDH,EAAO,SAASI,EAA8B,CAC5C,OAAQ,QACR,YAAa,CACX,OAAQC,EAAgB,EACxB,cAAe,UAAa,CAC1B,OAAAV,EACA,cAAAG,EACA,WAAYL,EAAI,iBAClB,EACF,CACF,CAAC,EAED,MAAMO,EAAO,OAAO,CAAE,KAAMP,EAAI,KAAM,KAAMA,EAAI,IAAK,CAAC,EACtD,QAAQ,IAAI,qCAAqCA,EAAI,IAAI,IAAIA,EAAI,IAAI,EAAE","names":["fastify","fastifyTRPCPlugin","http","createClient","privateKeyToAccount","isHex","parseEther","z","ZodError","commonSchema","ether","parseEnv","schema","envSchema","error","invalidEnvVars","env","parseEnv","client","createClient","http","faucetAccount","privateKeyToAccount","server","fastify","req","res","fastifyTRPCPlugin","createAppRouter"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{z as u}from"zod";import{initTRPC as m}from"@trpc/server";import{formatEther as d,isHex as f}from"viem";import{sendTransaction as l}from"@latticexyz/common";import p from"debug";var t=p("mud:faucet"),s=p("mud:faucet");t.log=console.debug.bind(console);s.log=console.error.bind(console);function h(){let e=m.context().create();return e.router({drip:e.procedure.input(u.object({address:u.string().refine(f)})).mutation(async o=>{let{client:a,faucetAccount:r,dripAmount:n}=o.ctx,{address:c}=o.input,i=await l(a,{chain:null,account:r,to:c,value:n});return t(`Dripped ${d(n)} ETH from ${r.address} to ${c} (tx ${i})`),i})})}export{h as a};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-LVBDKFIB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createAppRouter.ts","../src/debug.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { initTRPC } from \"@trpc/server\";\nimport { Client, Hex, LocalAccount, formatEther, isHex } from \"viem\";\nimport { sendTransaction } from \"@latticexyz/common\";\nimport { debug } from \"./debug\";\n\nexport type AppContext = {\n client: Client;\n faucetAccount: LocalAccount<string>;\n dripAmount: bigint;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function createAppRouter() {\n const t = initTRPC.context<AppContext>().create();\n\n return t.router({\n drip: t.procedure\n .input(\n z.object({\n address: z.string().refine(isHex),\n }),\n )\n .mutation(async (opts): Promise<Hex> => {\n const { client, faucetAccount, dripAmount } = opts.ctx;\n\n const { address } = opts.input;\n const tx = await sendTransaction(client, {\n chain: null,\n account: faucetAccount,\n to: address,\n value: dripAmount,\n });\n\n debug(`Dripped ${formatEther(dripAmount)} ETH from ${faucetAccount.address} to ${address} (tx ${tx})`);\n\n return tx;\n }),\n });\n}\n\nexport type AppRouter = ReturnType<typeof createAppRouter>;\n","import createDebug from \"debug\";\n\nexport const debug = createDebug(\"mud:faucet\");\nexport const error = createDebug(\"mud:faucet\");\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n"],"mappings":"AAAA,OAAS,KAAAA,MAAS,MAClB,OAAS,YAAAC,MAAgB,eACzB,OAAoC,eAAAC,EAAa,SAAAC,MAAa,OAC9D,OAAS,mBAAAC,MAAuB,qBCHhC,OAAOC,MAAiB,QAEjB,IAAMC,EAAQD,EAAY,YAAY,EAChCE,EAAQF,EAAY,YAAY,EAG7CC,EAAM,IAAM,QAAQ,MAAM,KAAK,OAAO,EAGtCC,EAAM,IAAM,QAAQ,MAAM,KAAK,OAAO,EDI/B,SAASC,GAAkB,CAChC,IAAMC,EAAIC,EAAS,QAAoB,EAAE,OAAO,EAEhD,OAAOD,EAAE,OAAO,CACd,KAAMA,EAAE,UACL,MACCE,EAAE,OAAO,CACP,QAASA,EAAE,OAAO,EAAE,OAAOC,CAAK,CAClC,CAAC,CACH,EACC,SAAS,MAAOC,GAAuB,CACtC,GAAM,CAAE,OAAAC,EAAQ,cAAAC,EAAe,WAAAC,CAAW,EAAIH,EAAK,IAE7C,CAAE,QAAAI,CAAQ,EAAIJ,EAAK,MACnBK,EAAK,MAAMC,EAAgBL,EAAQ,CACvC,MAAO,KACP,QAASC,EACT,GAAIE,EACJ,MAAOD,CACT,CAAC,EAED,OAAAI,EAAM,WAAWC,EAAYL,CAAU,
|
|
1
|
+
{"version":3,"sources":["../src/createAppRouter.ts","../src/debug.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { initTRPC } from \"@trpc/server\";\nimport { Client, Hex, LocalAccount, formatEther, isHex } from \"viem\";\nimport { sendTransaction } from \"@latticexyz/common\";\nimport { debug } from \"./debug\";\n\nexport type AppContext = {\n client: Client;\n faucetAccount: LocalAccount<string>;\n dripAmount: bigint;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function createAppRouter() {\n const t = initTRPC.context<AppContext>().create();\n\n return t.router({\n drip: t.procedure\n .input(\n z.object({\n address: z.string().refine(isHex),\n }),\n )\n .mutation(async (opts): Promise<Hex> => {\n const { client, faucetAccount, dripAmount } = opts.ctx;\n\n const { address } = opts.input;\n const tx = await sendTransaction(client, {\n chain: null,\n account: faucetAccount,\n to: address,\n value: dripAmount,\n });\n\n debug(`Dripped ${formatEther(dripAmount)} ETH from ${faucetAccount.address} to ${address} (tx ${tx})`);\n\n return tx;\n }),\n });\n}\n\nexport type AppRouter = ReturnType<typeof createAppRouter>;\n","import createDebug from \"debug\";\n\nexport const debug = createDebug(\"mud:faucet\");\nexport const error = createDebug(\"mud:faucet\");\n\n// Pipe debug output to stdout instead of stderr\ndebug.log = console.debug.bind(console);\n\n// Pipe error output to stderr\nerror.log = console.error.bind(console);\n"],"mappings":"AAAA,OAAS,KAAAA,MAAS,MAClB,OAAS,YAAAC,MAAgB,eACzB,OAAoC,eAAAC,EAAa,SAAAC,MAAa,OAC9D,OAAS,mBAAAC,MAAuB,qBCHhC,OAAOC,MAAiB,QAEjB,IAAMC,EAAQD,EAAY,YAAY,EAChCE,EAAQF,EAAY,YAAY,EAG7CC,EAAM,IAAM,QAAQ,MAAM,KAAK,OAAO,EAGtCC,EAAM,IAAM,QAAQ,MAAM,KAAK,OAAO,EDI/B,SAASC,GAAkB,CAChC,IAAMC,EAAIC,EAAS,QAAoB,EAAE,OAAO,EAEhD,OAAOD,EAAE,OAAO,CACd,KAAMA,EAAE,UACL,MACCE,EAAE,OAAO,CACP,QAASA,EAAE,OAAO,EAAE,OAAOC,CAAK,CAClC,CAAC,CACH,EACC,SAAS,MAAOC,GAAuB,CACtC,GAAM,CAAE,OAAAC,EAAQ,cAAAC,EAAe,WAAAC,CAAW,EAAIH,EAAK,IAE7C,CAAE,QAAAI,CAAQ,EAAIJ,EAAK,MACnBK,EAAK,MAAMC,EAAgBL,EAAQ,CACvC,MAAO,KACP,QAASC,EACT,GAAIE,EACJ,MAAOD,CACT,CAAC,EAED,OAAAI,EAAM,WAAWC,EAAYL,CAAU,CAAC,aAAaD,EAAc,OAAO,OAAOE,CAAO,QAAQC,CAAE,GAAG,EAE9FA,CACT,CAAC,CACL,CAAC,CACH","names":["z","initTRPC","formatEther","isHex","sendTransaction","createDebug","debug","error","createAppRouter","t","initTRPC","z","isHex","opts","client","faucetAccount","dripAmount","address","tx","sendTransaction","debug","formatEther"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -48,4 +48,4 @@ type CreateClientOptions = {
|
|
|
48
48
|
*/
|
|
49
49
|
declare function createClient({ url }: CreateClientOptions): CreateTRPCProxyClient<AppRouter>;
|
|
50
50
|
|
|
51
|
-
export { AppContext, AppRouter, createAppRouter, createClient };
|
|
51
|
+
export { type AppContext, type AppRouter, createAppRouter, createClient };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
1
|
+
import{a as o}from"./chunk-LVBDKFIB.js";import{createTRPCProxyClient as e,httpBatchLink as r}from"@trpc/client";function n({url:t}){return e({links:[r({url:t})]})}export{o as createAppRouter,n as createClient};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@latticexyz/faucet",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.16-54e5c06dd4606d2484a790cd1d531931d634d7a1",
|
|
4
4
|
"description": "Faucet API for Lattice testnet",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,11 +35,10 @@
|
|
|
35
35
|
"dotenv": "^16.0.3",
|
|
36
36
|
"fastify": "^4.21.0",
|
|
37
37
|
"zod": "3.23.8",
|
|
38
|
-
"@latticexyz/common": "2.2.
|
|
38
|
+
"@latticexyz/common": "2.2.16-54e5c06dd4606d2484a790cd1d531931d634d7a1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/debug": "^4.1.7",
|
|
42
|
-
"tsup": "^6.7.0",
|
|
43
42
|
"viem": "2.21.19",
|
|
44
43
|
"vitest": "0.34.6"
|
|
45
44
|
},
|