diff options
| author | Adam Soltys <[email protected]> | 2024-08-26 22:18:56 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-08-26 22:53:11 -0700 |
| commit | 4efa82b36b74c633681ed831d6f567ae5ab08c3b (patch) | |
| tree | 5c79e477a733e82f44185488e9fdc30653aacff9 | |
| parent | fe62cadd6fb4a7e49f7d59401fc74ae0411e32a7 (diff) | |
| download | coinos-server-4efa82b36b74c633681ed831d6f567ae5ab08c3b.tar.gz coinos-server-4efa82b36b74c633681ed831d6f567ae5ab08c3b.zip | |
fix some ts issues
| -rw-r--r-- | index.ts | 11 | ||||
| -rw-r--r-- | lib/invoices.ts | 2 | ||||
| -rw-r--r-- | lib/liquid.ts | 1 | ||||
| -rw-r--r-- | lib/payments.ts | 6 | ||||
| -rw-r--r-- | routes/ecash.ts | 35 | ||||
| -rw-r--r-- | routes/invoices.ts | 20 | ||||
| -rw-r--r-- | routes/items.ts | 44 | ||||
| -rw-r--r-- | routes/lnurl.ts | 39 | ||||
| -rw-r--r-- | routes/payments.ts | 98 | ||||
| -rw-r--r-- | routes/requests.js.map | 1 | ||||
| -rw-r--r-- | routes/requests.ts | 85 | ||||
| -rw-r--r-- | routes/shopify.ts | 6 | ||||
| -rw-r--r-- | routes/users.ts | 123 | ||||
| -rw-r--r-- | tsconfig.json | 12 |
14 files changed, 267 insertions, 216 deletions
@@ -17,11 +17,9 @@ import invoices from "$routes/invoices"; import items from "$routes/items"; import users from "$routes/users"; import payments from "$routes/payments"; -import requests from "$routes/requests"; import shopify from "$routes/shopify"; try { - // setTimeout(fillPool, 1000); getLocations(); getFx(); catchUp(); @@ -98,11 +96,6 @@ app.post("/items", auth, items.create); app.post("/items/delete", auth, items.del); app.post("/items/sort", auth, items.sort); -app.get("/request/:id", auth, requests.get); -app.get("/requests", auth, requests.list); -app.post("/requests", auth, requests.create); -app.post("/requests/delete", auth, requests.destroy); - app.post("/shopify/:id", shopify); app.post("/hidepay", admin, users.hidepay); @@ -114,8 +107,8 @@ app.post("/claim", auth, ecash.claim); app.post("/mint", auth, ecash.mint); app.post("/melt", auth, ecash.melt); -let host = process.env["HOST"] || "0.0.0.0"; -let port = process.env["PORT"] || 3119; +let host: string = process.env["HOST"] || "0.0.0.0"; +let port: number = parseInt(process.env["PORT"]) || 3119; app.listen({ host, port }); diff --git a/lib/invoices.ts b/lib/invoices.ts index 2f1225e7..04e1200b 100644 --- a/lib/invoices.ts +++ b/lib/invoices.ts @@ -11,7 +11,7 @@ import lq from "$lib/liquid"; import bc from "$lib/bitcoin"; import ln from "$lib/ln"; -export let generate = async ({ invoice, user, sender }) => { +export let generate = async ({ invoice, user, sender = undefined }) => { let { bolt11, currency, diff --git a/lib/liquid.ts b/lib/liquid.ts index 49bd838d..ec8ec7cb 100644 --- a/lib/liquid.ts +++ b/lib/liquid.ts @@ -1,4 +1,3 @@ import config from "$config"; import rpc from "$lib/rpc"; -console.log("LIQ", config.liquid); export default rpc(config.liquid); diff --git a/lib/payments.ts b/lib/payments.ts index 92e17839..797b3a97 100644 --- a/lib/payments.ts +++ b/lib/payments.ts @@ -3,7 +3,7 @@ import config from "$config"; import { emit } from "$lib/sockets"; import { v4 } from "uuid"; import { notify } from "$lib/notifications"; -import { db, g, s, t } from "$lib/db"; +import { db, g, s } from "$lib/db"; import { l, err, warn } from "$lib/logging"; import { f, @@ -11,9 +11,7 @@ import { fail, fiat, getInvoice, - getUser, sleep, - wait, SATS, sats, formatReceipt, @@ -54,7 +52,7 @@ export let debit = async ({ // if (!user.unlimited && amount > 1000000) // fail(`⚡️${amount} exceeds max withdrawal of ⚡️1,000,000`); let ref; - let { id: uid, currency, username } = user; + let { id: uid, currency } = user; let rates = await g('rates'); if (!rate) rate = rates[currency]; diff --git a/routes/ecash.ts b/routes/ecash.ts index 8c2684b1..1f9e48ea 100644 --- a/routes/ecash.ts +++ b/routes/ecash.ts @@ -1,16 +1,18 @@ import { g, s, db } from "$lib/db"; import { claim, mint, check } from "$lib/ecash"; -import { bail } from "$lib/utils"; +import { bail, fail } from "$lib/utils"; import { debit, credit, types } from "$lib/payments"; import { v4 } from "uuid"; -import { l, err, warn } from "$lib/logging"; +import { l, err } from "$lib/logging"; import { emit } from "$lib/sockets"; -import store from "$lib/store"; let { ecash: type } = types; export default { - async save({ body: { token } }, res) { + async save(req, res) { + let { + body: { token }, + } = req; try { let id = v4(); await s(`cash:${id}`, token); @@ -21,7 +23,10 @@ export default { } }, - async get({ params: { id } }, res) { + async get(req, res) { + let { + params: { id }, + } = req; try { let token = await g(`cash:${id}`); let status = await check(token); @@ -32,7 +37,11 @@ export default { } }, - async claim({ body: { token }, user }, res) { + async claim(req, res) { + let { + body: { token }, + user, + } = req; try { let amount = await claim(token); @@ -58,7 +67,11 @@ export default { } }, - async mint({ body: { amount }, user }, res) { + async mint(req, res) { + let { + body: { amount }, + user, + } = req; try { let id = v4(); let hash = v4(); @@ -76,13 +89,17 @@ export default { } }, - async melt({ body: { amount, bolt11: hash, preimage }, user }, res) { + async melt(req, res) { + let { + body: { amount, bolt11: hash, preimage }, + user, + } = req; try { amount = Math.round(amount / 1000); let ref = preimage; let { lightning: type } = types; if (user.username !== "mint") fail("unauthorized"); - let { id: uid, currency, username } = user; + let { id: uid, currency } = user; let ourfee = await db.debit( `balance:${uid}`, `credit:${type}:${uid}`, diff --git a/routes/invoices.ts b/routes/invoices.ts index 5cc60e05..5e786dd7 100644 --- a/routes/invoices.ts +++ b/routes/invoices.ts @@ -1,13 +1,12 @@ -import { g, s } from "$lib/db"; +import { g } from "$lib/db"; import { generate } from "$lib/invoices"; -import { bail, fail, pick } from "$lib/utils"; -import whitelist from "$lib/whitelist"; -import got from "got"; -import config from "$config"; -import ln from "$lib/ln"; +import { bail, pick } from "$lib/utils"; export default { - async get({ params: { id } }, res) { + async get(req, res) { + let { + params: { id }, + } = req; let invoice = await g(`invoice:${id}`); if (typeof invoice === "string") invoice = await g(`invoice:${invoice}`); @@ -28,7 +27,12 @@ export default { else res.code(500).send("invoice not found"); }, - async create({ body: { invoice, user }, user: sender }, res) { + async create(req, res) { + let { + body: { invoice, user }, + user: sender, + } = req; + try { res.send(await generate({ invoice, user, sender })); } catch (e) { diff --git a/routes/items.ts b/routes/items.ts index 9b6314fa..a7586a69 100644 --- a/routes/items.ts +++ b/routes/items.ts @@ -3,7 +3,10 @@ import { v4 } from "uuid"; import { bail, fail } from "$lib/utils"; export default { - async list({ params: { id: uid } }, res) { + async list(req, res) { + let { + params: { id: uid }, + } = req; let items = []; for (let id of await db.lRange(`${uid}:items`, 0, -1)) { let item = await g(`item:${id}`); @@ -14,7 +17,10 @@ export default { res.send(items); }, - async get({ params: { id } }, res) { + async get(req, res) { + let { + params: { id }, + } = req; try { let item = await g(`item:${id}`); if (!item) fail("Item not found"); @@ -24,25 +30,33 @@ export default { } }, - async create({ body: item, user: { id } }, res) { + async create(req, res) { + let { + body: item, + user: { id }, + } = req; try { - if (!item.id) { - item.id = v4(); - await db.lPush(`${id}:items`, item.id); - } + if (!item.id) { + item.id = v4(); + await db.lPush(`${id}:items`, item.id); + } - if (!parseFloat(item.price)) fail("Invalid price"); - item.name = item.name.replace(/[^a-zA-Z0-9 ]/g, ""); + if (!parseFloat(item.price)) fail("Invalid price"); + item.name = item.name.replace(/[^a-zA-Z0-9 ]/g, ""); - await s(`item:${item.id}`, item); + await s(`item:${item.id}`, item); - res.send(item); + res.send(item); } catch (e) { bail(res, e.message); } }, - async del({ body: { item }, user: { id } }, res) { + async del(req, res) { + let { + body: { item }, + user: { id }, + } = req; try { let n = await db.lRem(`${id}:items`, 0, item.id); if (n) db.del(`item:${item.id}`); @@ -54,7 +68,11 @@ export default { } }, - async sort({ body: { items }, user: { id } }, res) { + async sort(req, res) { + let { + body: { items }, + user: { id }, + } = req; try { await db.del(`${id}:items`); diff --git a/routes/lnurl.ts b/routes/lnurl.ts index 462127ac..5a9c0990 100644 --- a/routes/lnurl.ts +++ b/routes/lnurl.ts @@ -1,24 +1,21 @@ -import migrate from "$lib/migrate"; import { g, s } from "$lib/db"; -import { l, err, warn } from "$lib/logging"; +import { err, warn } from "$lib/logging"; import { bail, getUser, fail } from "$lib/utils"; import { v4 } from "uuid"; import got from "got"; import { generate } from "$lib/invoices"; import { bech32 } from "bech32"; -import { fields, pick } from "$lib/utils"; import { types } from "$lib/payments"; -import crypto from "crypto"; import { COINOS_PUBKEY } from "$lib/nostr"; -import config from "$config"; -let { admin } = config; - let { URL } = process.env; let host = URL.split("/").at(-1); export default { - async encode({ query: { address } }, res) { + async encode(req, res) { + let { + query: { address }, + } = req; let [name, domain] = address.split("@"); let url = `https://${domain}/.well-known/lnurlp/${name}`; @@ -35,7 +32,10 @@ export default { res.send(enc); }, - async decode({ query: { text } }, res) { + async decode(req, res) { + let { + query: { text }, + } = req; try { let url = Buffer.from( bech32.fromWords(bech32.decode(text, 20000).words), @@ -47,13 +47,11 @@ export default { } }, - async lnurlp( - { + async lnurlp(req, res) { + let { params: { username }, query: { minSendable = 1000, maxSendable = 100000000000 }, - }, - res, - ) { + } = req; try { let { id: uid } = await getUser(username); @@ -80,9 +78,11 @@ export default { } }, - async lnurlw({ params: { k1, pr } }, res) {}, - - async lnurl({ params: { id }, query: { amount, nostr } }, res) { + async lnurl(req, res) { + let { + params: { id }, + query: { amount, nostr }, + } = req; try { let uid = await g(`lnurl:${id}`); let user = await getUser(uid); @@ -122,7 +122,10 @@ export default { } }, - async verify({ params: { id } }, res) { + async verify(req, res) { + let { + params: { id }, + } = req; let inv = await g(`invoice:${id}`); if (!inv) return res.send({ status: "ERROR", reason: "Not found" }); diff --git a/routes/payments.ts b/routes/payments.ts index 1ae87916..38215832 100644 --- a/routes/payments.ts +++ b/routes/payments.ts @@ -21,17 +21,16 @@ import { mqtt1, mqtt2 } from "$lib/mqtt"; import got from "got"; import api from "$lib/api"; -import lq from "$lib/liquid"; -import bc from "$lib/bitcoin"; import ln from "$lib/ln"; export default { - async info({ body, user }, res) { + async info(_, res) { res.send(await ln.getinfo()); }, - async create({ body, user }, res) { - let { amount, hash, maxfee, fund, memo, payreq, rate, username } = body; + async create(req, res) { + let { body, user } = req; + let { amount, hash, maxfee, fund, memo, payreq } = body; let balance = await g(`balance:${user.id}`); try { @@ -71,7 +70,12 @@ export default { } }, - async list({ user: { id }, query: { start, end, limit, offset } }, res) { + async list(req, res) { + let { + user: { id }, + query: { start, end, limit, offset }, + } = req; + if (limit) limit = parseInt(limit); offset = parseInt(offset) || 0; @@ -129,14 +133,21 @@ export default { res.send({ payments, count, incoming, outgoing }); }, - async get({ params: { hash } }, res) { + async get(req, res) { + let { + params: { hash }, + } = req; let p = await g(`payment:${hash}`); if (typeof p === "string") p = await g(`payment:${p}`); if (p.type === types.internal) p.with = await g(`user:${p.ref}`); res.send(p); }, - async parse({ body: { payreq }, user }, res) { + async parse(req, res) { + let { + body: { payreq }, + user, + } = req; try { let hour = 1000 * 60 * 60; let nodes = await g("nodes"); @@ -148,7 +159,6 @@ export default { await s("nodes", nodes); } - let twoWeeksAgo = new Date(new Date().setDate(new Date().getDate() - 14)); let decoded = await ln.decodepay(payreq); let { amount_msat, payee } = decoded; let node = nodes.find((n) => n.nodeid === payee); @@ -166,7 +176,10 @@ export default { } }, - async fund({ params: { name } }, res) { + async fund(req, res) { + let { + params: { name }, + } = req; let amount = await g(`fund:${name}`); if (typeof amount === "undefined" || amount === null) return bail(res, "fund not found"); @@ -181,7 +194,10 @@ export default { res.send({ amount, payments }); }, - async withdraw({ params: { name } }, res) { + async withdraw(req, res) { + let { + params: { name }, + } = req; let maxWithdrawable = await g(`fund:${name}`); res.send({ tag: "withdrawRequest", @@ -193,7 +209,11 @@ export default { }); }, - async take({ body: { id, amount, invoice: iid }, user }, res) { + async take(req, res) { + let { + body: { id, amount, invoice: iid }, + user, + } = req; try { amount = parseInt(amount); if (amount < 0) fail("Invalid amount"); @@ -227,7 +247,11 @@ export default { } }, - async confirm({ body: { txid, wallet, type } }, res) { + async confirm(req, res) { + let { + body: { txid, wallet, type }, + } = req; + try { let node = getNode(type); @@ -268,7 +292,7 @@ export default { l("confirming", id, p.id, p.amount); - let r = await db + await db .multi() .set(`invoice:${iid}`, JSON.stringify(invoice)) .set(`payment:${p.id}`, JSON.stringify(p)) @@ -290,7 +314,8 @@ export default { } }, - async fee({ body, user }, res) { + async fee(req, res) { + let { body, user } = req; try { res.send(await build({ ...body, user })); } catch (e) { @@ -307,7 +332,8 @@ export default { } }, - async send({ body, user }, res) { + async send(req, res) { + let { body, user } = req; try { await requirePin({ body, user }); let { hash: txid } = await sendOnchain({ ...body, user }); @@ -321,7 +347,10 @@ export default { } }, - async freeze({ body: { secret } }, res) { + async freeze(req, res) { + let { + body: { secret }, + } = req; try { if (secret !== config.adminpass) fail("unauthorized"); await s("freeze", true); @@ -332,7 +361,11 @@ export default { } }, - async print({ body: { id }, user }, res) { + async print(req, res) { + let { + body: { id }, + user, + } = req; try { let p = await g(`payment:${id}`); if (p.uid !== user.id) fail("unauthorized"); @@ -356,10 +389,12 @@ export default { } }, - async lnaddress( - { params: { lnaddress, amount, maxfee = 5000 }, body, user }, - res, - ) { + async lnaddress(req, res) { + let { + params: { lnaddress, amount, maxfee = 5000 }, + body, + user, + } = req; try { lnaddress = decodeURIComponent(lnaddress); await requirePin({ body, user }); @@ -390,14 +425,21 @@ export default { } }, - async gateway({ body: { short_channel_id, webhook } }, res) { + async gateway(req, res) { + let { + body: { short_channel_id, webhook }, + } = req; + await s(short_channel_id, webhook); res.send({ ok: true }); }, - async replace({ body: { id }, user }, res) { + async replace(req, res) { + let { + body: { id }, + user, + } = req; try { - let { id: uid } = user; let p = await g(`payment:${id}`); if (!p) fail("Payment not found"); if (p.uid !== user.id) fail("unauthorized"); @@ -459,7 +501,11 @@ export default { } }, - async internal({ body: { username, amount }, user: sender }, res) { + async internal(req, res) { + let { + body: { username, amount }, + user: sender, + } = req; let recipient = await getUser(username); let inv = await generate({ invoice: { amount, type: "lightning" }, diff --git a/routes/requests.js.map b/routes/requests.js.map deleted file mode 100644 index 448a576e..00000000 --- a/routes/requests.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requests.js","sourceRoot":"","sources":["requests.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oCAAkC;AAClC,wCAAoC;AACpC,8BAAmC;AACnC,6BAA0B;AAE1B,kBAAe;IACP,GAAG;4DAAC,EAAkB,EAAE,GAAG;;gBAAX,EAAE,eAAA;;;4BACR,qBAAM,IAAA,MAAC,EAAC,kBAAW,EAAE,CAAE,CAAC,EAAA;;wBAAlC,OAAO,GAAG,SAAwB;wBACtC,IAAI,CAAC,OAAO;4BAAE,IAAA,YAAI,EAAC,mBAAmB,CAAC,CAAC;wBACxC,KAAA,OAAO,CAAA;wBAAa,qBAAM,IAAA,MAAC,EAAC,eAAQ,OAAO,CAAC,YAAY,CAAE,CAAC,EAAA;;wBAA3D,GAAQ,SAAS,GAAG,SAAuC,CAAC;wBAC5D,KAAA,OAAO,CAAA;wBAAa,qBAAM,IAAA,MAAC,EAAC,eAAQ,OAAO,CAAC,YAAY,CAAE,CAAC,EAAA;;wBAA3D,GAAQ,SAAS,GAAG,SAAuC,CAAC;wBAC5D,KAAA,OAAO,CAAA;wBAAW,qBAAM,IAAA,MAAC,EAAC,kBAAW,OAAO,CAAC,UAAU,CAAE,CAAC,EAAA;;wBAA1D,GAAQ,OAAO,GAAG,SAAwC,CAAC;wBAC3D,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;;;;;KACvB;IAEK,IAAI;4DAAC,EAAgB,EAAE,GAAG;;;gBAAX,EAAE,aAAA;;;;;wBAEb,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;wBAEpD,qBAAM,OAAE,CAAC,MAAM,CAAC,UAAG,EAAE,cAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;;wBAAnD,QAAQ,GAAG,SAAwC;wBAE5C,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,EAAE,IAAK,OAAA,IAAA,MAAC,EAAC,kBAAW,EAAE,CAAE,CAAC,EAAlB,CAAkB,CAAC,CAAC,EAAA;;wBAAtE,QAAQ,GAAG,SAA2D,CAAC;wBAE5D,qBAAM,OAAO,CAAC,GAAG,CAC1B,QAAQ,CAAC,GAAG,CAAC,UAAO,CAAC;;;;;4CACnB,KAAA,CAAC,CAAA;4CAAa,qBAAM,IAAA,MAAC,EAAC,eAAQ,CAAC,CAAC,YAAY,CAAE,CAAC,EAAA;;4CAA/C,GAAE,SAAS,GAAG,SAAiC,CAAC;4CAChD,KAAA,CAAC,CAAA;4CAAa,qBAAM,IAAA,MAAC,EAAC,eAAQ,CAAC,CAAC,YAAY,CAAE,CAAC,EAAA;;4CAA/C,GAAE,SAAS,GAAG,SAAiC,CAAC;4CAChD,sBAAO,CAAC,EAAC;;;iCACV,CAAC,CACH,EAAA;;wBAND,QAAQ,GAAG,SAMV,CAAC;wBAEE,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,YAAY,KAAK,EAAE,EAArB,CAAqB,CAAC,CAAC;wBAErD,QAAQ,GAAG,QAAQ;6BACpB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,YAAY,KAAK,EAAE,EAArB,CAAqB,CAAC;6BACpC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,UAAU,EAAb,CAAa,CAAC,CAAC;wBAE5B,QAAQ,GAAG,EAAE,CAAC;8BACA,EAAJ,aAAI;;;6BAAJ,CAAA,kBAAI,CAAA;wBAAT,CAAC;wBACR,IAAI,CAAC,CAAC,CAAC,UAAU;4BAAE,wBAAS;wBAEd,qBAAM,IAAA,MAAC,EAAC,kBAAW,CAAC,CAAC,UAAU,CAAE,CAAC,EAAA;;wBAA5C,OAAO,GAAG,SAAkC;wBAChD,IAAI,CAAC,OAAO;4BAAE,wBAAS;wBAEvB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;wBACpB,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ;4BAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;wBAPlD,IAAI,CAAA;;;wBAUlB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;;;;wBAEvC,OAAO,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;wBACf,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;;;;;;KAEjC;IAEK,MAAM,YACV,EAGC,EACD,GAAG;;;YAHD,IAAA,YAA8B,EAAtB,SAAS,eAAA,EAAK,MAAM,cAAtB,aAAwB,CAAF,EAC5B,YAA6C,EAAjC,YAAY,QAAA,EAAE,QAAQ,cAAA,EAAE,OAAO,aAAE;;;4BAI5B,qBAAM,IAAA,MAAC,EAAC,eAAQ,SAAS,CAAE,CAAC,EAAA;;wBAA3C,YAAY,GAAG,SAA4B;wBAE3C,EAAE,GAAG,IAAA,SAAE,GAAE,CAAC;wBACV,OAAO,cACT,EAAE,IAAA,EACF,YAAY,cAAA,EACZ,YAAY,cAAA,IACT,MAAM,CACV,CAAC;wBAEF,qBAAM,IAAA,MAAC,EAAC,kBAAW,EAAE,CAAE,EAAE,OAAO,CAAC,EAAA;;wBAAjC,SAAiC,CAAC;wBAClC,qBAAM,OAAE,CAAC,KAAK,CAAC,UAAG,YAAY,cAAW,EAAE,EAAE,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBAC/C,qBAAM,OAAE,CAAC,KAAK,CAAC,UAAG,YAAY,cAAW,EAAE,EAAE,CAAC,EAAA;;wBAA9C,SAA8C,CAAC;wBAE/C,IAAA,cAAI,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;wBACpC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;;;KACnB;IAEK,OAAO;4DAAC,EAAsC,EAAE,GAAG;gBAAjC,UAAU,qBAAA,EAAY,EAAE,aAAA;;;4BAC9C,qBAAM,OAAE,CAAC,IAAI,CAAC,eAAQ,EAAE,cAAW,EAAE,UAAU,CAAC,EAAA;;wBAAhD,SAAgD,CAAC;wBACjD,GAAG,CAAC,IAAI,EAAE,CAAC;;;;;KACZ;CACF,CAAC"}
\ No newline at end of file diff --git a/routes/requests.ts b/routes/requests.ts deleted file mode 100644 index a0d55739..00000000 --- a/routes/requests.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { fail } from "$lib/utils"; -import { emit } from "$lib/sockets"; -import { g, s, db } from "$lib/db"; -import { v4 } from "uuid"; - -export default { - async get({ params: { id } }, res) { - let request = await g(`request:${id}`); - if (!request) fail("request not found"); - request.recipient = await g(`user:${request.recipient_id}`); - request.requester = await g(`user:${request.requester_id}`); - request.invoice = await g(`invoice:${request.invoice_id}`); - res.send({ request }); - }, - - async list({ user: { id } }, res) { - try { - const day = new Date(new Date().setDate(new Date().getDate() - 1)); - - let requests = await db.lRange(`${id}:requests`, 0, -1); - - requests = await Promise.all(requests.map((id) => g(`request:${id}`))); - - requests = await Promise.all( - requests.map(async (r) => { - r.requester = await g(`user:${r.requester_id}`); - r.recipient = await g(`user:${r.recipient_id}`); - return r; - }), - ); - - let sent = requests.filter((r) => r.requester_id === id); - - let received = requests - .filter((r) => r.recipient_id === id) - .filter((r) => !r.invoice_id); - - let invoices = []; - for (let r of sent) { - if (!r.invoice_id) continue; - - let invoice = await g(`invoice:${r.invoice_id}`); - if (!invoice) continue; - - invoice.request = r; - if (invoice.amount < invoice.received) invoices.push(invoice); - } - - res.send({ invoices, sent, received }); - } catch (e) { - console.log(e); - res.code(500).send(e.message); - } - }, - - async create( - { - body: { recipient, ...params }, - user: { id: requester_id, username, profile }, - }, - res, - ) { - let recipient_id = await g(`user:${recipient}`); - - let id = v4(); - let request = { - id, - recipient_id, - requester_id, - ...params, - }; - - await s(`request:${id}`, request); - await db.lPush(`${requester_id}:requests`, id); - await db.lPush(`${recipient_id}:requests`, id); - - emit(recipient, "request", request); - res.send(request); - }, - - async destroy({ body: { request_id }, user: { id } }, res) { - await db.lrem(`user:${id}:requests`, request_id); - res.send(); - }, -}; diff --git a/routes/shopify.ts b/routes/shopify.ts index bcb60ea3..b28f556f 100644 --- a/routes/shopify.ts +++ b/routes/shopify.ts @@ -12,7 +12,11 @@ let query = `mutation orderMarkAsPaid($input: OrderMarkAsPaidInput!) { } }`; -export default async ({ body: { hash }, params: { id } }, res) => { +export default async (req, res) => { + let { + body: { hash }, + params: { id }, + } = req; let p = await g(`payment:${hash}`); if (typeof p === "string") p = await g(`payment:${p}`); let user = await g(`user:${p.uid}`); diff --git a/routes/users.ts b/routes/users.ts index 17bea006..4fe04bda 100644 --- a/routes/users.ts +++ b/routes/users.ts @@ -1,16 +1,6 @@ import { g, s, db } from "$lib/db"; import config from "$config"; -import store from "$lib/store"; -import { - fields, - nada, - pick, - uniq, - wait, - bail, - fail, - getUser, -} from "$lib/utils"; +import { pick, bail, fail, getUser } from "$lib/utils"; import jwt from "jsonwebtoken"; import { authenticator } from "otplib"; import whitelist from "$lib/whitelist"; @@ -19,12 +9,9 @@ import { emit } from "$lib/sockets"; import register from "$lib/register"; import { requirePin } from "$lib/auth"; import { v4 } from "uuid"; -import { parseISO } from "date-fns"; import { types } from "$lib/payments"; import { bech32 } from "bech32"; import { mail, templates } from "$lib/mail"; - -import got from "got"; import upload from "$lib/upload"; const { encode, decode, fromWords, toWords } = bech32; @@ -32,7 +19,8 @@ const { encode, decode, fromWords, toWords } = bech32; export default { upload, - async me({ user }, res) { + async me(req, res) { + let { user } = req; try { user.balance = await g(`balance:${user.id}`); user.prompt = !!user.prompt; @@ -46,7 +34,8 @@ export default { } }, - async list({ user }, res) { + async list(req, res) { + let { user } = req; if (!user.admin) fail("unauthorized"); let users = []; @@ -81,7 +70,10 @@ export default { res.send(users); }, - async get({ params: { key } }, res) { + async get(req, res) { + let { + params: { key }, + } = req; key = key.toLowerCase().replace(/\s/g, ""); try { if (key.startsWith("npub")) { @@ -132,7 +124,8 @@ export default { } }, - async create({ body, headers }, res) { + async create(req, res) { + let { body, headers } = req; try { const ip = headers["cf-connecting-ip"]; if (!body.user) fail("no user object provided"); @@ -154,7 +147,11 @@ export default { } }, - async disable2fa({ user, body: { token } }, res) { + async disable2fa(req, res) { + let { + user, + body: { token }, + } = req; let { id, twofa, username, otpsecret } = user; if (twofa && !authenticator.check(token, otpsecret)) { return res.code(401).send("2fa required"); @@ -168,7 +165,11 @@ export default { res.send({}); }, - async enable2fa({ user, body: { token } }, res) { + async enable2fa(req, res) { + let { + user, + body: { token }, + } = req; let { id, otpsecret, username } = user; const isValid = authenticator.check(token, otpsecret); if (isValid) { @@ -183,7 +184,8 @@ export default { res.send({}); }, - async update({ user, body }, res) { + async update(req, res) { + let { user, body } = req; try { l("updating user", user.username); @@ -332,7 +334,8 @@ export default { } }, - async subscribe({ body, user }, res) { + async subscribe(req, res) { + let { body, user } = req; let { subscriptions } = user; let { subscription } = body; if (!subscriptions) subscriptions = []; @@ -348,7 +351,11 @@ export default { res.sendStatus(201); }, - async password({ body: { password }, user }, res) { + async password(req, res) { + let { + body: { password }, + user, + } = req; if (!user.password) return res.send(true); try { @@ -359,7 +366,11 @@ export default { } }, - async pin({ body: { pin }, user }, res) { + async pin(req, res) { + let { + body: { pin }, + user, + } = req; res.send(!user.pin || user.pin === pin); }, @@ -373,7 +384,10 @@ export default { } }, - async contacts({ user: { id } }, res) { + async contacts(req, res) { + let { + user: { id }, + } = req; let lastlen = (await g(`${id}:lastlen`)) || 0; let len = await db.lLen(`${id}:payments`); let payments = (await db.lRange(`${id}:payments`, 0, len - lastlen)) || []; @@ -398,7 +412,11 @@ export default { res.send(contacts); }, - async del({ params: { username }, headers: { authorization } }, res) { + async del(req, res) { + let { + params: { username }, + headers: { authorization }, + } = req; username = username.toLowerCase(); if (!(authorization && authorization.includes(config.admin))) return res.code(401).send("unauthorized"); @@ -418,7 +436,11 @@ export default { res.send({}); }, - async reset({ body: { code, username, password }, user: u }, res) { + async reset(req, res) { + let { + body: { code, username, password }, + user: u, + } = req; let admin = u && u.admin; let id, user; @@ -451,22 +473,34 @@ export default { } }, - async printerlogin({ body: { username, topic } }, res) { + async printerlogin(req, res) { + let { + body: { username, topic }, + } = req; if (username === topic) res.send({ ok: true }); else bail(res, "unauthorized"); }, - async acl({ body: { username, topic } }, res) { + async acl(req, res) { + let { + body: { username, topic }, + } = req; if (username === topic) res.send({ ok: true }); else bail(res, "unauthorized"); }, - async superuser({ body: { username } }, res) { + async superuser(req, res) { + let { + body: { username }, + } = req; if (username === config.mqtt2.username) res.send({ ok: true }); else bail(res, "unauthorized"); }, - async request({ body: { id, email } }, res) { + async request(req, res) { + let { + body: { id, email }, + } = req; try { let user = await g(`user:${id}`); @@ -497,10 +531,13 @@ export default { } }, - async verify({ params: { code } }, res) { + async verify(req, res) { + let { + params: { code }, + } = req; try { let { id, email } = await g(`verify:${code}`); - if (!id) fail(res, "verification failed"); + if (!id) fail("verification failed"); let user = await g(`user:${id}`); user.email = email; user.verified = true; @@ -513,7 +550,10 @@ export default { } }, - async forgot({ body: { email } }, res) { + async forgot(req, res) { + let { + body: { email }, + } = req; try { let uid = await g(`email:${email.toLowerCase()}`); let user = await g(`user:${uid}`); @@ -535,19 +575,28 @@ export default { } }, - async items({ params: { id } }, res) { + async items(req, _) { + let { + params: { id }, + } = req; let item = await g(`item:${id}`); return item; }, - async hidepay({ body: { username } }, res) { + async hidepay(req, res) { + let { + body: { username }, + } = req; let u = await getUser(username); u.hidepay = true; await s(`user:${u.id}`, u); res.send({}); }, - async unlimit({ body: { username } }, res) { + async unlimit(req, res) { + let { + body: { username }, + } = req; let u = await getUser(username); u.unlimited = true; await s(`user:${u.id}`, u); diff --git a/tsconfig.json b/tsconfig.json index 1a5456af..0bee304a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,15 +11,21 @@ "allowImportingTsExtensions": true, // Best practices - "strict": true, + "strict": false, "skipLibCheck": true, "noFallthroughCasesInSwitch": true, - // Some stricter flags "noUnusedLocals": true, "noUnusedParameters": true, - "noPropertyAccessFromIndexSignature": true, + + "noImplicitAny": false, // Allow variables to have 'any' type + "noImplicitThis": false, // Allow 'this' to be of any type + "strictNullChecks": false, // Disable strict null checks + "strictFunctionTypes": false, // Disable strict function types + "strictBindCallApply": false, // Disable strict bind/call/apply checks + "noImplicitReturns": false, // Disable implicit return type checks + "noFallthroughCasesInSwitch": false, "baseUrl": ".", "paths": { |
