From 93df078301a25c69b9d98ec57c2adb080d52a782 Mon Sep 17 00:00:00 2001 From: bigint <69431456+bigint@users.noreply.github.com> Date: Sun, 1 Oct 2023 11:19:18 +0530 Subject: [PATCH 1/3] feat: add staff-picker worker --- packages/supabase/database.types.ts | 31 ++ .../src/handlers/updateGardenerMode.ts | 4 +- .../src/handlers/updateHeyMemberNftStatus.ts | 4 +- .../src/handlers/updatePreferences.ts | 4 +- .../src/handlers/updateStaffMode.ts | 4 +- .../workers/staff-picks/.dev.vars.example | 1 + packages/workers/staff-picks/.eslintrc.js | 6 + packages/workers/staff-picks/README.md | 1 + packages/workers/staff-picks/package.json | 29 ++ .../staff-picks/src/handlers/addPick.ts | 80 +++++ .../staff-picks/src/handlers/getStaffPick.ts | 27 ++ .../staff-picks/src/handlers/getStaffPicks.ts | 20 ++ .../staff-picks/src/handlers/removePick.ts | 71 ++++ .../staff-picks/src/helpers/buildRequest.ts | 16 + .../src/helpers/checkIsStaffFromDb.ts | 29 ++ packages/workers/staff-picks/src/index.ts | 49 +++ packages/workers/staff-picks/src/types.ts | 13 + packages/workers/staff-picks/tsconfig.json | 6 + packages/workers/staff-picks/wrangler.toml | 13 + pnpm-lock.yaml | 336 ++++++++++-------- 20 files changed, 581 insertions(+), 163 deletions(-) create mode 100644 packages/workers/staff-picks/.dev.vars.example create mode 100644 packages/workers/staff-picks/.eslintrc.js create mode 100644 packages/workers/staff-picks/README.md create mode 100644 packages/workers/staff-picks/package.json create mode 100644 packages/workers/staff-picks/src/handlers/addPick.ts create mode 100644 packages/workers/staff-picks/src/handlers/getStaffPick.ts create mode 100644 packages/workers/staff-picks/src/handlers/getStaffPicks.ts create mode 100644 packages/workers/staff-picks/src/handlers/removePick.ts create mode 100644 packages/workers/staff-picks/src/helpers/buildRequest.ts create mode 100644 packages/workers/staff-picks/src/helpers/checkIsStaffFromDb.ts create mode 100644 packages/workers/staff-picks/src/index.ts create mode 100644 packages/workers/staff-picks/src/types.ts create mode 100644 packages/workers/staff-picks/tsconfig.json create mode 100644 packages/workers/staff-picks/wrangler.toml diff --git a/packages/supabase/database.types.ts b/packages/supabase/database.types.ts index 43ec32a46c04..8e073bd43b1b 100644 --- a/packages/supabase/database.types.ts +++ b/packages/supabase/database.types.ts @@ -108,6 +108,37 @@ export interface Database { }; Relationships: []; }; + 'staff-picks': { + Row: { + created_at: string; + id: string; + picker_id: string; + score: number; + type: string; + }; + Insert: { + created_at?: string; + id: string; + picker_id: string; + score?: number; + type: string; + }; + Update: { + created_at?: string; + id?: string; + picker_id?: string; + score?: number; + type?: string; + }; + Relationships: [ + { + foreignKeyName: 'staff-picks_picker_id_fkey'; + columns: ['picker_id']; + referencedRelation: 'rights'; + referencedColumns: ['id']; + } + ]; + }; }; Views: { [_ in never]: never; diff --git a/packages/workers/preferences/src/handlers/updateGardenerMode.ts b/packages/workers/preferences/src/handlers/updateGardenerMode.ts index 7d6253a26d9e..fdc012a04411 100644 --- a/packages/workers/preferences/src/handlers/updateGardenerMode.ts +++ b/packages/workers/preferences/src/handlers/updateGardenerMode.ts @@ -46,9 +46,7 @@ export default async (request: WorkerRequest) => { const { payload } = jwt.decode(accessToken); const hasOwned = await hasOwnedLensProfiles(payload.id, id, true); if (!hasOwned) { - return new Response( - JSON.stringify({ success: false, error: Errors.InvalidProfileId }) - ); + return response({ success: false, error: Errors.InvalidProfileId }); } const client = createSupabaseClient(request.env.SUPABASE_KEY); diff --git a/packages/workers/preferences/src/handlers/updateHeyMemberNftStatus.ts b/packages/workers/preferences/src/handlers/updateHeyMemberNftStatus.ts index abf34c15b391..765c968662b6 100644 --- a/packages/workers/preferences/src/handlers/updateHeyMemberNftStatus.ts +++ b/packages/workers/preferences/src/handlers/updateHeyMemberNftStatus.ts @@ -44,9 +44,7 @@ export default async (request: WorkerRequest) => { const { payload } = jwt.decode(accessToken); if (payload.id !== id) { - return new Response( - JSON.stringify({ success: false, error: Errors.InvalidAddress }) - ); + return response({ success: false, error: Errors.InvalidAddress }); } const client = createSupabaseClient(request.env.SUPABASE_KEY); diff --git a/packages/workers/preferences/src/handlers/updatePreferences.ts b/packages/workers/preferences/src/handlers/updatePreferences.ts index 5713367eb8a7..8ea10548520e 100644 --- a/packages/workers/preferences/src/handlers/updatePreferences.ts +++ b/packages/workers/preferences/src/handlers/updatePreferences.ts @@ -73,9 +73,7 @@ export default async (request: WorkerRequest) => { const hasOwned = await hasOwnedLensProfiles(payload.id, id, true); if (!updateByAdmin && !hasOwned) { - return new Response( - JSON.stringify({ success: false, error: Errors.InvalidProfileId }) - ); + return response({ success: false, error: Errors.InvalidProfileId }); } const client = createSupabaseClient(request.env.SUPABASE_KEY); diff --git a/packages/workers/preferences/src/handlers/updateStaffMode.ts b/packages/workers/preferences/src/handlers/updateStaffMode.ts index d47257d592c7..111b0f2ed619 100644 --- a/packages/workers/preferences/src/handlers/updateStaffMode.ts +++ b/packages/workers/preferences/src/handlers/updateStaffMode.ts @@ -46,9 +46,7 @@ export default async (request: WorkerRequest) => { const { payload } = jwt.decode(accessToken); const hasOwned = await hasOwnedLensProfiles(payload.id, id, true); if (!hasOwned) { - return new Response( - JSON.stringify({ success: false, error: Errors.InvalidProfileId }) - ); + return response({ success: false, error: Errors.InvalidProfileId }); } const client = createSupabaseClient(request.env.SUPABASE_KEY); diff --git a/packages/workers/staff-picks/.dev.vars.example b/packages/workers/staff-picks/.dev.vars.example new file mode 100644 index 000000000000..b98f56614ac9 --- /dev/null +++ b/packages/workers/staff-picks/.dev.vars.example @@ -0,0 +1 @@ +SUPABASE_KEY="" diff --git a/packages/workers/staff-picks/.eslintrc.js b/packages/workers/staff-picks/.eslintrc.js new file mode 100644 index 000000000000..484e1ab14a27 --- /dev/null +++ b/packages/workers/staff-picks/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + extends: [require.resolve('@hey/config/eslint/base.js')], + rules: { + 'import/no-anonymous-default-export': 'off' + } +}; diff --git a/packages/workers/staff-picks/README.md b/packages/workers/staff-picks/README.md new file mode 100644 index 000000000000..3917f1f0ea55 --- /dev/null +++ b/packages/workers/staff-picks/README.md @@ -0,0 +1 @@ +# Staff Picks worker diff --git a/packages/workers/staff-picks/package.json b/packages/workers/staff-picks/package.json new file mode 100644 index 000000000000..ba1aade78d6e --- /dev/null +++ b/packages/workers/staff-picks/package.json @@ -0,0 +1,29 @@ +{ + "name": "@workers/staff-picks", + "version": "0.0.0", + "private": true, + "license": "AGPL-3.0", + "scripts": { + "dev": "wrangler dev --port 8095", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --fix --ext .ts", + "prettier": "prettier --check \"**/*.{js,ts,tsx,md}\" --cache", + "prettier:fix": "prettier --write \"**/*.{js,ts,tsx,md}\" --cache", + "typecheck": "tsc --pretty", + "worker:deploy": "wrangler deploy --var RELEASE:\"$(git rev-parse HEAD)\"" + }, + "dependencies": { + "@hey/data": "workspace:*", + "@hey/lib": "workspace:*", + "@hey/supabase": "workspace:*", + "@tsndr/cloudflare-worker-jwt": "^2.2.2", + "itty-router": "^4.0.23", + "zod": "^3.22.2" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20230922.0", + "@hey/config": "workspace:*", + "typescript": "^5.2.2", + "wrangler": "^3.10.1" + } +} diff --git a/packages/workers/staff-picks/src/handlers/addPick.ts b/packages/workers/staff-picks/src/handlers/addPick.ts new file mode 100644 index 000000000000..7e437dd0b2f3 --- /dev/null +++ b/packages/workers/staff-picks/src/handlers/addPick.ts @@ -0,0 +1,80 @@ +import { Errors } from '@hey/data/errors'; +import hasOwnedLensProfiles from '@hey/lib/hasOwnedLensProfiles'; +import response from '@hey/lib/response'; +import validateLensAccount from '@hey/lib/validateLensAccount'; +import createSupabaseClient from '@hey/supabase/createSupabaseClient'; +import jwt from '@tsndr/cloudflare-worker-jwt'; +import { number, object, string } from 'zod'; + +import checkIsStaffFromDb from '../helpers/checkIsStaffFromDb'; +import type { WorkerRequest } from '../types'; + +type ExtensionRequest = { + id: string; + picker_id: string; + type: string; + score: number; +}; + +const validationSchema = object({ + id: string(), + picker_id: string(), + type: string(), + score: number() +}); + +export default async (request: WorkerRequest) => { + const body = await request.json(); + if (!body) { + return response({ success: false, error: Errors.NoBody }); + } + + const accessToken = request.headers.get('X-Access-Token'); + if (!accessToken) { + return response({ success: false, error: Errors.NoAccessToken }); + } + + const validation = validationSchema.safeParse(body); + + if (!validation.success) { + return response({ success: false, error: validation.error.issues }); + } + + const { id, picker_id, score, type } = body as ExtensionRequest; + + try { + const isAuthenticated = await validateLensAccount(accessToken, true); + if (!isAuthenticated) { + return response({ success: false, error: Errors.InvalidAccesstoken }); + } + + const { payload } = jwt.decode(accessToken); + const hasOwned = await hasOwnedLensProfiles(payload.id, picker_id, true); + if (!hasOwned) { + return response({ success: false, error: Errors.InvalidProfileId }); + } + + const isStaffOnDb = await checkIsStaffFromDb(request, picker_id); + if (!isStaffOnDb) { + return response({ success: false, error: Errors.NotAdmin }); + } + + const client = createSupabaseClient(request.env.SUPABASE_KEY); + + const { data, error } = await client + .from('staff-picks') + .upsert({ id, picker_id, type, score }) + .eq('id', id) + .select() + .single(); + + if (error) { + throw error; + } + + return response({ success: true, result: data }); + } catch (error) { + console.error(error); + throw error; + } +}; diff --git a/packages/workers/staff-picks/src/handlers/getStaffPick.ts b/packages/workers/staff-picks/src/handlers/getStaffPick.ts new file mode 100644 index 000000000000..c8fcf57413fc --- /dev/null +++ b/packages/workers/staff-picks/src/handlers/getStaffPick.ts @@ -0,0 +1,27 @@ +import { Errors } from '@hey/data/errors'; +import response from '@hey/lib/response'; +import createSupabaseClient from '@hey/supabase/createSupabaseClient'; + +import type { WorkerRequest } from '../types'; + +export default async (request: WorkerRequest) => { + const { id } = request.params; + + if (!id) { + return response({ success: false, error: Errors.NoBody }); + } + + try { + const client = createSupabaseClient(request.env.SUPABASE_KEY); + + const { data } = await client + .from('staff-picks') + .select('*') + .eq('id', id) + .single(); + + return response({ success: true, result: data }); + } catch (error) { + throw error; + } +}; diff --git a/packages/workers/staff-picks/src/handlers/getStaffPicks.ts b/packages/workers/staff-picks/src/handlers/getStaffPicks.ts new file mode 100644 index 000000000000..aaa948915b8e --- /dev/null +++ b/packages/workers/staff-picks/src/handlers/getStaffPicks.ts @@ -0,0 +1,20 @@ +import response from '@hey/lib/response'; +import createSupabaseClient from '@hey/supabase/createSupabaseClient'; + +import type { WorkerRequest } from '../types'; + +export default async (request: WorkerRequest) => { + try { + const client = createSupabaseClient(request.env.SUPABASE_KEY); + + const { data } = await client + .from('staff-picks') + .select('*') + .order('score', { ascending: false }) + .limit(10); + + return response({ success: true, result: data }); + } catch (error) { + throw error; + } +}; diff --git a/packages/workers/staff-picks/src/handlers/removePick.ts b/packages/workers/staff-picks/src/handlers/removePick.ts new file mode 100644 index 000000000000..50bd078c7f25 --- /dev/null +++ b/packages/workers/staff-picks/src/handlers/removePick.ts @@ -0,0 +1,71 @@ +import { Errors } from '@hey/data/errors'; +import hasOwnedLensProfiles from '@hey/lib/hasOwnedLensProfiles'; +import response from '@hey/lib/response'; +import validateLensAccount from '@hey/lib/validateLensAccount'; +import createSupabaseClient from '@hey/supabase/createSupabaseClient'; +import jwt from '@tsndr/cloudflare-worker-jwt'; +import { object, string } from 'zod'; + +import checkIsStaffFromDb from '../helpers/checkIsStaffFromDb'; +import type { WorkerRequest } from '../types'; + +type ExtensionRequest = { + id: string; + picker_id: string; +}; + +const validationSchema = object({ + id: string(), + picker_id: string() +}); + +export default async (request: WorkerRequest) => { + const body = await request.json(); + if (!body) { + return response({ success: false, error: Errors.NoBody }); + } + + const accessToken = request.headers.get('X-Access-Token'); + if (!accessToken) { + return response({ success: false, error: Errors.NoAccessToken }); + } + + const validation = validationSchema.safeParse(body); + + if (!validation.success) { + return response({ success: false, error: validation.error.issues }); + } + + const { id, picker_id } = body as ExtensionRequest; + + try { + const isAuthenticated = await validateLensAccount(accessToken, true); + if (!isAuthenticated) { + return response({ success: false, error: Errors.InvalidAccesstoken }); + } + + const { payload } = jwt.decode(accessToken); + const hasOwned = await hasOwnedLensProfiles(payload.id, picker_id, true); + if (!hasOwned) { + return response({ success: false, error: Errors.InvalidProfileId }); + } + + const isStaffOnDb = await checkIsStaffFromDb(request, picker_id); + if (!isStaffOnDb) { + return response({ success: false, error: Errors.NotAdmin }); + } + + const client = createSupabaseClient(request.env.SUPABASE_KEY); + + const { error } = await client.from('staff-picks').delete().eq('id', id); + + if (error) { + throw error; + } + + return response({ success: true }); + } catch (error) { + console.error(error); + throw error; + } +}; diff --git a/packages/workers/staff-picks/src/helpers/buildRequest.ts b/packages/workers/staff-picks/src/helpers/buildRequest.ts new file mode 100644 index 000000000000..7e779e95e42a --- /dev/null +++ b/packages/workers/staff-picks/src/helpers/buildRequest.ts @@ -0,0 +1,16 @@ +import type { Env, WorkerRequest } from '../types'; + +const buildRequest = ( + request: Request, + env: Env, + ctx: ExecutionContext +): WorkerRequest => { + const temp: WorkerRequest = request as WorkerRequest; + temp.req = request; + temp.env = env; + temp.ctx = ctx; + + return temp; +}; + +export default buildRequest; diff --git a/packages/workers/staff-picks/src/helpers/checkIsStaffFromDb.ts b/packages/workers/staff-picks/src/helpers/checkIsStaffFromDb.ts new file mode 100644 index 000000000000..539676fe1552 --- /dev/null +++ b/packages/workers/staff-picks/src/helpers/checkIsStaffFromDb.ts @@ -0,0 +1,29 @@ +import createSupabaseClient from '@hey/supabase/createSupabaseClient'; + +import type { WorkerRequest } from '../types'; + +const checkIsStaffFromDb = async ( + request: WorkerRequest, + profileId: string +) => { + const client = createSupabaseClient(request.env.SUPABASE_KEY); + + const { data, error } = await client + .from('rights') + .select('id') + .eq('id', profileId); + + console.log(data, profileId); + + if (error) { + return false; + } + + if (!data.length) { + return false; + } + + return true; +}; + +export default checkIsStaffFromDb; diff --git a/packages/workers/staff-picks/src/index.ts b/packages/workers/staff-picks/src/index.ts new file mode 100644 index 000000000000..b3f8d75fd630 --- /dev/null +++ b/packages/workers/staff-picks/src/index.ts @@ -0,0 +1,49 @@ +import { Errors } from '@hey/data/errors'; +import response from '@hey/lib/response'; +import { createCors, error, Router, status } from 'itty-router'; + +import addPick from './handlers/addPick'; +import getStaffPick from './handlers/getStaffPick'; +import getStaffPicks from './handlers/getStaffPicks'; +import removePick from './handlers/removePick'; +import buildRequest from './helpers/buildRequest'; +import type { Env, WorkerRequest } from './types'; + +const { preflight, corsify } = createCors({ + origins: ['*'], + methods: ['HEAD', 'GET', 'POST'] +}); + +const router = Router(); + +router + .all('*', preflight) + .head('*', () => status(200)) + .get('/', (request: WorkerRequest) => + response({ + message: 'gm, to preferences service 👋', + version: request.env.RELEASE ?? 'unknown' + }) + ) + .get('/get/:id', getStaffPick) + .get('/all', getStaffPicks) + .post('/addPick', addPick) + .post('/removePick', removePick) + .all('*', () => error(404)); + +export default { + async fetch( + request: Request, + env: Env, + ctx: ExecutionContext + ): Promise { + const incomingRequest = buildRequest(request, env, ctx); + + return await router + .handle(incomingRequest) + .then(corsify) + .catch(() => { + return error(500, Errors.InternalServerError); + }); + } +}; diff --git a/packages/workers/staff-picks/src/types.ts b/packages/workers/staff-picks/src/types.ts new file mode 100644 index 000000000000..65ce3d227e44 --- /dev/null +++ b/packages/workers/staff-picks/src/types.ts @@ -0,0 +1,13 @@ +import type { IRequestStrict } from 'itty-router'; + +export interface Env { + RELEASE: string; + SUPABASE_KEY: string; + PREFERENCES: KVNamespace; +} + +export type WorkerRequest = { + req: Request; + env: Env; + ctx: ExecutionContext; +} & IRequestStrict; diff --git a/packages/workers/staff-picks/tsconfig.json b/packages/workers/staff-picks/tsconfig.json new file mode 100644 index 000000000000..33dc4d0f2e28 --- /dev/null +++ b/packages/workers/staff-picks/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@hey/config/base.tsconfig.json", + "compilerOptions": { + "types": ["@cloudflare/workers-types"] + } +} diff --git a/packages/workers/staff-picks/wrangler.toml b/packages/workers/staff-picks/wrangler.toml new file mode 100644 index 000000000000..f3b51fd9bf6e --- /dev/null +++ b/packages/workers/staff-picks/wrangler.toml @@ -0,0 +1,13 @@ +name = "staff-picks" +main = "src/index.ts" +compatibility_date = "2023-01-25" +keep_vars = true +node_compat = true + +routes = [ + { pattern = "staff-picks.hey.xyz", custom_domain = true } +] + +[env.production.vars] +RELEASE = "" +SUPABASE_KEY = "" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c46d584f2ac0..808d4bcb7672 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -957,6 +957,40 @@ importers: specifier: ^3.10.1 version: 3.10.1 + packages/workers/staff-picks: + dependencies: + '@hey/data': + specifier: workspace:* + version: link:../../data + '@hey/lib': + specifier: workspace:* + version: link:../../lib + '@hey/supabase': + specifier: workspace:* + version: link:../../supabase + '@tsndr/cloudflare-worker-jwt': + specifier: ^2.2.2 + version: 2.2.2 + itty-router: + specifier: ^4.0.23 + version: 4.0.23 + zod: + specifier: ^3.22.2 + version: 3.22.2 + devDependencies: + '@cloudflare/workers-types': + specifier: ^4.20230922.0 + version: 4.20230922.0 + '@hey/config': + specifier: workspace:* + version: link:../../config + typescript: + specifier: ^5.2.2 + version: 5.2.2 + wrangler: + specifier: ^3.10.1 + version: 3.10.1 + packages/workers/sts: dependencies: '@aws-sdk/client-sts': @@ -3068,15 +3102,15 @@ packages: /@ethersproject/abi@5.5.0: resolution: {integrity: sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==} dependencies: - '@ethersproject/address': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/hash': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/strings': 5.5.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false /@ethersproject/abi@5.7.0: @@ -3096,13 +3130,13 @@ packages: /@ethersproject/abstract-provider@5.5.1: resolution: {integrity: sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg==} dependencies: - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/networks': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/transactions': 5.5.0 - '@ethersproject/web': 5.5.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 dev: false /@ethersproject/abstract-provider@5.7.0: @@ -3120,11 +3154,11 @@ packages: /@ethersproject/abstract-signer@5.5.0: resolution: {integrity: sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA==} dependencies: - '@ethersproject/abstract-provider': 5.5.1 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 dev: false /@ethersproject/abstract-signer@5.7.0: @@ -3140,11 +3174,11 @@ packages: /@ethersproject/address@5.5.0: resolution: {integrity: sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==} dependencies: - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/rlp': 5.5.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 dev: false /@ethersproject/address@5.7.0: @@ -3160,7 +3194,7 @@ packages: /@ethersproject/base64@5.5.0: resolution: {integrity: sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA==} dependencies: - '@ethersproject/bytes': 5.5.0 + '@ethersproject/bytes': 5.7.0 dev: false /@ethersproject/base64@5.7.0: @@ -3172,8 +3206,8 @@ packages: /@ethersproject/basex@5.5.0: resolution: {integrity: sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/properties': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 dev: false /@ethersproject/basex@5.7.0: @@ -3186,8 +3220,8 @@ packages: /@ethersproject/bignumber@5.5.0: resolution: {integrity: sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 bn.js: 4.12.0 dev: false @@ -3202,7 +3236,7 @@ packages: /@ethersproject/bytes@5.5.0: resolution: {integrity: sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog==} dependencies: - '@ethersproject/logger': 5.5.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/bytes@5.7.0: @@ -3214,7 +3248,7 @@ packages: /@ethersproject/constants@5.5.0: resolution: {integrity: sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ==} dependencies: - '@ethersproject/bignumber': 5.5.0 + '@ethersproject/bignumber': 5.7.0 dev: false /@ethersproject/constants@5.7.0: @@ -3226,16 +3260,16 @@ packages: /@ethersproject/contracts@5.5.0: resolution: {integrity: sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg==} dependencies: - '@ethersproject/abi': 5.5.0 - '@ethersproject/abstract-provider': 5.5.1 - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/address': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/transactions': 5.5.0 + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 dev: false /@ethersproject/contracts@5.7.0: @@ -3256,14 +3290,14 @@ packages: /@ethersproject/hash@5.5.0: resolution: {integrity: sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==} dependencies: - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/address': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/strings': 5.5.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false /@ethersproject/hash@5.7.0: @@ -3283,18 +3317,18 @@ packages: /@ethersproject/hdnode@5.5.0: resolution: {integrity: sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q==} dependencies: - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/basex': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/pbkdf2': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/sha2': 5.5.0 - '@ethersproject/signing-key': 5.5.0 - '@ethersproject/strings': 5.5.0 - '@ethersproject/transactions': 5.5.0 - '@ethersproject/wordlists': 5.5.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 dev: false /@ethersproject/hdnode@5.7.0: @@ -3317,17 +3351,17 @@ packages: /@ethersproject/json-wallets@5.5.0: resolution: {integrity: sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ==} dependencies: - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/address': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/hdnode': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/pbkdf2': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/random': 5.5.0 - '@ethersproject/strings': 5.5.0 - '@ethersproject/transactions': 5.5.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 dev: false @@ -3353,7 +3387,7 @@ packages: /@ethersproject/keccak256@5.5.0: resolution: {integrity: sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==} dependencies: - '@ethersproject/bytes': 5.5.0 + '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 dev: false @@ -3375,7 +3409,7 @@ packages: /@ethersproject/networks@5.5.0: resolution: {integrity: sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA==} dependencies: - '@ethersproject/logger': 5.5.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/networks@5.7.1: @@ -3387,8 +3421,8 @@ packages: /@ethersproject/pbkdf2@5.5.0: resolution: {integrity: sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/sha2': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 dev: false /@ethersproject/pbkdf2@5.7.0: @@ -3401,7 +3435,7 @@ packages: /@ethersproject/properties@5.5.0: resolution: {integrity: sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==} dependencies: - '@ethersproject/logger': 5.5.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/properties@5.7.0: @@ -3413,23 +3447,23 @@ packages: /@ethersproject/providers@5.5.0: resolution: {integrity: sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw==} dependencies: - '@ethersproject/abstract-provider': 5.5.1 - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/address': 5.5.0 - '@ethersproject/basex': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/hash': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/networks': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/random': 5.5.0 - '@ethersproject/rlp': 5.5.0 - '@ethersproject/sha2': 5.5.0 - '@ethersproject/strings': 5.5.0 - '@ethersproject/transactions': 5.5.0 - '@ethersproject/web': 5.5.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 bech32: 1.1.4 ws: 7.4.6 transitivePeerDependencies: @@ -3468,8 +3502,8 @@ packages: /@ethersproject/random@5.5.0: resolution: {integrity: sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/random@5.7.0: @@ -3482,8 +3516,8 @@ packages: /@ethersproject/rlp@5.5.0: resolution: {integrity: sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/rlp@5.7.0: @@ -3496,8 +3530,8 @@ packages: /@ethersproject/sha2@5.5.0: resolution: {integrity: sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 dev: false @@ -3512,9 +3546,9 @@ packages: /@ethersproject/signing-key@5.5.0: resolution: {integrity: sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 bn.js: 4.12.0 elliptic: 6.5.4 hash.js: 1.1.7 @@ -3534,12 +3568,12 @@ packages: /@ethersproject/solidity@5.5.0: resolution: {integrity: sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==} dependencies: - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/sha2': 5.5.0 - '@ethersproject/strings': 5.5.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false /@ethersproject/solidity@5.7.0: @@ -3556,9 +3590,9 @@ packages: /@ethersproject/strings@5.5.0: resolution: {integrity: sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/strings@5.7.0: @@ -3572,15 +3606,15 @@ packages: /@ethersproject/transactions@5.5.0: resolution: {integrity: sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA==} dependencies: - '@ethersproject/address': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/rlp': 5.5.0 - '@ethersproject/signing-key': 5.5.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 dev: false /@ethersproject/transactions@5.7.0: @@ -3600,9 +3634,9 @@ packages: /@ethersproject/units@5.5.0: resolution: {integrity: sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag==} dependencies: - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/constants': 5.5.0 - '@ethersproject/logger': 5.5.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 dev: false /@ethersproject/units@5.7.0: @@ -3616,21 +3650,21 @@ packages: /@ethersproject/wallet@5.5.0: resolution: {integrity: sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q==} dependencies: - '@ethersproject/abstract-provider': 5.5.1 - '@ethersproject/abstract-signer': 5.5.0 - '@ethersproject/address': 5.5.0 - '@ethersproject/bignumber': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/hash': 5.5.0 - '@ethersproject/hdnode': 5.5.0 - '@ethersproject/json-wallets': 5.5.0 - '@ethersproject/keccak256': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/random': 5.5.0 - '@ethersproject/signing-key': 5.5.0 - '@ethersproject/transactions': 5.5.0 - '@ethersproject/wordlists': 5.5.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 dev: false /@ethersproject/wallet@5.7.0: @@ -3656,11 +3690,11 @@ packages: /@ethersproject/web@5.5.0: resolution: {integrity: sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA==} dependencies: - '@ethersproject/base64': 5.5.0 - '@ethersproject/bytes': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/strings': 5.5.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false /@ethersproject/web@5.7.1: @@ -3676,11 +3710,11 @@ packages: /@ethersproject/wordlists@5.5.0: resolution: {integrity: sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q==} dependencies: - '@ethersproject/bytes': 5.5.0 - '@ethersproject/hash': 5.5.0 - '@ethersproject/logger': 5.5.0 - '@ethersproject/properties': 5.5.0 - '@ethersproject/strings': 5.5.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false /@ethersproject/wordlists@5.7.0: From 8b2234baa0393c8ad5d0a88a7bd72acb2ea19443 Mon Sep 17 00:00:00 2001 From: bigint <69431456+bigint@users.noreply.github.com> Date: Sun, 1 Oct 2023 11:38:23 +0530 Subject: [PATCH 2/3] feat: add staff-picker worker --- packages/workers/staff-picks/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/workers/staff-picks/src/index.ts b/packages/workers/staff-picks/src/index.ts index b3f8d75fd630..dd30ff561b1c 100644 --- a/packages/workers/staff-picks/src/index.ts +++ b/packages/workers/staff-picks/src/index.ts @@ -21,7 +21,7 @@ router .head('*', () => status(200)) .get('/', (request: WorkerRequest) => response({ - message: 'gm, to preferences service 👋', + message: 'gm, to staff-picks service 👋', version: request.env.RELEASE ?? 'unknown' }) ) From 3af79d701cdf4bfa8184c9a2cb697af6514982ed Mon Sep 17 00:00:00 2001 From: bigint <69431456+bigint@users.noreply.github.com> Date: Sun, 1 Oct 2023 11:38:38 +0530 Subject: [PATCH 3/3] feat: add staff-picker worker --- packages/workers/staff-picks/src/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/workers/staff-picks/src/types.ts b/packages/workers/staff-picks/src/types.ts index 65ce3d227e44..a1bde527c245 100644 --- a/packages/workers/staff-picks/src/types.ts +++ b/packages/workers/staff-picks/src/types.ts @@ -3,7 +3,6 @@ import type { IRequestStrict } from 'itty-router'; export interface Env { RELEASE: string; SUPABASE_KEY: string; - PREFERENCES: KVNamespace; } export type WorkerRequest = {