From 5210275d23615625c995cedda9413e5f45c86281 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 17 Feb 2025 17:05:26 -0600 Subject: [PATCH] Create @ditto/lang, @ditto/policies, @ditto/signers, @ditto/uploaders --- deno.json | 4 +++ packages/api/routes/timelinesRoute.ts | 29 +++++-------------- packages/ditto/DittoPipeline.ts | 2 +- packages/ditto/controllers/api/ditto.ts | 2 +- packages/ditto/controllers/api/pleroma.ts | 2 +- packages/ditto/controllers/api/streaming.ts | 2 +- packages/ditto/middleware/signerMiddleware.ts | 4 +-- .../ditto/middleware/uploaderMiddleware.ts | 6 ++-- packages/ditto/trends.ts | 2 +- packages/lang/deno.json | 6 ++++ packages/{utils => lang}/language.test.ts | 0 packages/{utils => lang}/language.ts | 0 .../policies/MuteListPolicy.test.ts | 4 +-- .../{ditto => }/policies/MuteListPolicy.ts | 2 +- packages/policies/deno.json | 6 ++++ packages/policies/mod.ts | 1 + packages/{ditto => }/signers/AdminSigner.ts | 0 packages/{ditto => }/signers/ConnectSigner.ts | 0 .../{ditto => }/signers/ReadOnlySigner.ts | 0 packages/signers/deno.json | 6 ++++ packages/signers/mod.ts | 3 ++ .../{ditto => }/uploaders/DenoUploader.ts | 0 .../{ditto => }/uploaders/IPFSUploader.ts | 0 packages/{ditto => }/uploaders/S3Uploader.ts | 0 packages/uploaders/deno.json | 6 ++++ packages/uploaders/mod.ts | 3 ++ packages/utils/api.ts | 1 - packages/utils/deno.json | 2 +- packages/utils/mod.ts | 0 scripts/admin-event.ts | 2 +- scripts/admin-role.ts | 2 +- scripts/setup-kind0.ts | 2 +- 32 files changed, 59 insertions(+), 40 deletions(-) create mode 100644 packages/lang/deno.json rename packages/{utils => lang}/language.test.ts (100%) rename packages/{utils => lang}/language.ts (100%) rename packages/{ditto => }/policies/MuteListPolicy.test.ts (95%) rename packages/{ditto => }/policies/MuteListPolicy.ts (92%) create mode 100644 packages/policies/deno.json create mode 100644 packages/policies/mod.ts rename packages/{ditto => }/signers/AdminSigner.ts (100%) rename packages/{ditto => }/signers/ConnectSigner.ts (100%) rename packages/{ditto => }/signers/ReadOnlySigner.ts (100%) create mode 100644 packages/signers/deno.json create mode 100644 packages/signers/mod.ts rename packages/{ditto => }/uploaders/DenoUploader.ts (100%) rename packages/{ditto => }/uploaders/IPFSUploader.ts (100%) rename packages/{ditto => }/uploaders/S3Uploader.ts (100%) create mode 100644 packages/uploaders/deno.json create mode 100644 packages/uploaders/mod.ts delete mode 100644 packages/utils/mod.ts diff --git a/deno.json b/deno.json index e1276234..d23d2493 100644 --- a/deno.json +++ b/deno.json @@ -5,9 +5,13 @@ "./packages/conf", "./packages/db", "./packages/ditto", + "./packages/lang", "./packages/metrics", + "./packages/policies", "./packages/ratelimiter", + "./packages/signers", "./packages/translators", + "./packages/uploaders", "./packages/utils" ], "tasks": { diff --git a/packages/api/routes/timelinesRoute.ts b/packages/api/routes/timelinesRoute.ts index bcf88a9a..4d46d844 100644 --- a/packages/api/routes/timelinesRoute.ts +++ b/packages/api/routes/timelinesRoute.ts @@ -1,32 +1,17 @@ -import { NostrFilter } from '@nostrify/nostrify'; +import { DittoRoute } from '@ditto/api'; import { z } from 'zod'; -import { type AppContext, type AppController } from '@/app.ts'; -import { getFeedPubkeys } from '@/queries.ts'; -import { booleanParamSchema, languageSchema } from '@/schema.ts'; -import { hydrateEvents } from '@/storages/hydrate.ts'; -import { paginated } from '@/utils/api.ts'; -import { getTagSet } from '@/utils/tags.ts'; -import { StatusView } from '@/views/mastodon/StatusView.ts'; -import { Hono } from '@hono/hono'; +import type { NostrFilter } from '@nostrify/nostrify'; + +const route = new DittoRoute(); const homeQuerySchema = z.object({ exclude_replies: booleanParamSchema.optional(), only_media: booleanParamSchema.optional(), }); -export interface TimelineRouteOpts { -} - -export class TimelineRoute { - private app: Hono; - - constructor(private opts: TimelineRouteOpts) { - this.app = new Hono(); - } -} - -const homeTimelineController: AppController = async (c) => { +route.get('/home', async (c) => { + c.req.valid('json'); const { user, pagination } = c.var; const pubkey = await user!.signer.getPublicKey()!; @@ -56,7 +41,7 @@ const homeTimelineController: AppController = async (c) => { } return renderStatuses(c, [filter]); -}; +}); const publicQuerySchema = z.object({ local: booleanParamSchema.default('false'), diff --git a/packages/ditto/DittoPipeline.ts b/packages/ditto/DittoPipeline.ts index c2a1a19a..192233be 100644 --- a/packages/ditto/DittoPipeline.ts +++ b/packages/ditto/DittoPipeline.ts @@ -11,7 +11,7 @@ import { z } from 'zod'; import { DittoPush } from '@/DittoPush.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; import { RelayError } from '@/RelayError.ts'; -import { AdminSigner } from '@/signers/AdminSigner.ts'; +import { AdminSigner } from '../signers/AdminSigner.ts'; import { type EventsDB } from '@/storages/EventsDB.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { eventAge, Time } from '@/utils.ts'; diff --git a/packages/ditto/controllers/api/ditto.ts b/packages/ditto/controllers/api/ditto.ts index 69346987..10be72ad 100644 --- a/packages/ditto/controllers/api/ditto.ts +++ b/packages/ditto/controllers/api/ditto.ts @@ -8,7 +8,7 @@ import { createEvent, paginated, parseBody, updateAdminEvent } from '../../../ut import { getInstanceMetadata } from '../../../utils/instance.ts'; import { deleteTag } from '../../../utils/tags.ts'; import { DittoZapSplits, getZapSplits } from '../../../utils/zap-split.ts'; -import { AdminSigner } from '@/signers/AdminSigner.ts'; +import { AdminSigner } from '../../../signers/AdminSigner.ts'; import { screenshotsSchema } from '@/schemas/nostr.ts'; import { booleanParamSchema, percentageSchema, wsUrlSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; diff --git a/packages/ditto/controllers/api/pleroma.ts b/packages/ditto/controllers/api/pleroma.ts index c90c7e39..0fbe73ac 100644 --- a/packages/ditto/controllers/api/pleroma.ts +++ b/packages/ditto/controllers/api/pleroma.ts @@ -2,7 +2,7 @@ import { z } from 'zod'; import { type AppController } from '@/app.ts'; import { configSchema, elixirTupleSchema } from '@/schemas/pleroma-api.ts'; -import { AdminSigner } from '@/signers/AdminSigner.ts'; +import { AdminSigner } from '../../../signers/AdminSigner.ts'; import { createAdminEvent, updateAdminEvent, updateUser } from '../../../utils/api.ts'; import { lookupPubkey } from '../../../utils/lookup.ts'; import { getPleromaConfigs } from '../../../utils/pleroma.ts'; diff --git a/packages/ditto/controllers/api/streaming.ts b/packages/ditto/controllers/api/streaming.ts index 27c45f0c..0cfeda3e 100644 --- a/packages/ditto/controllers/api/streaming.ts +++ b/packages/ditto/controllers/api/streaming.ts @@ -11,7 +11,7 @@ import { Kysely } from 'kysely'; import { z } from 'zod'; import { type AppController } from '@/app.ts'; -import { MuteListPolicy } from '@/policies/MuteListPolicy.ts'; +import { MuteListPolicy } from '../../../policies/MuteListPolicy.ts'; import { getFeedPubkeys } from '@/queries.ts'; import { AdminStore } from '@/storages/AdminStore.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; diff --git a/packages/ditto/middleware/signerMiddleware.ts b/packages/ditto/middleware/signerMiddleware.ts index 47b4ffd1..d3d8ebda 100644 --- a/packages/ditto/middleware/signerMiddleware.ts +++ b/packages/ditto/middleware/signerMiddleware.ts @@ -6,8 +6,8 @@ import { NostrSigner, NRelay, NSecSigner } from '@nostrify/nostrify'; import { Kysely } from 'kysely'; import { nip19 } from 'nostr-tools'; -import { ConnectSigner } from '@/signers/ConnectSigner.ts'; -import { ReadOnlySigner } from '@/signers/ReadOnlySigner.ts'; +import { ConnectSigner } from '../../signers/ConnectSigner.ts'; +import { ReadOnlySigner } from '../../signers/ReadOnlySigner.ts'; import { aesDecrypt } from '../../utils/aes.ts'; import { getTokenHash } from '../../utils/auth.ts'; diff --git a/packages/ditto/middleware/uploaderMiddleware.ts b/packages/ditto/middleware/uploaderMiddleware.ts index f66a1fb2..ba0720dd 100644 --- a/packages/ditto/middleware/uploaderMiddleware.ts +++ b/packages/ditto/middleware/uploaderMiddleware.ts @@ -2,9 +2,9 @@ import { BlossomUploader, NostrBuildUploader } from '@nostrify/nostrify/uploader import { safeFetch } from '@soapbox/safe-fetch'; import { AppMiddleware } from '@/app.ts'; -import { DenoUploader } from '@/uploaders/DenoUploader.ts'; -import { IPFSUploader } from '@/uploaders/IPFSUploader.ts'; -import { S3Uploader } from '@/uploaders/S3Uploader.ts'; +import { DenoUploader } from '../../uploaders/DenoUploader.ts'; +import { IPFSUploader } from '../../uploaders/IPFSUploader.ts'; +import { S3Uploader } from '../../uploaders/S3Uploader.ts'; /** Set an uploader for the user. */ export const uploaderMiddleware: AppMiddleware = async (c, next) => { diff --git a/packages/ditto/trends.ts b/packages/ditto/trends.ts index 2d920a9e..97e48072 100644 --- a/packages/ditto/trends.ts +++ b/packages/ditto/trends.ts @@ -4,7 +4,7 @@ import { NostrFilter, NStore } from '@nostrify/nostrify'; import { logi } from '@soapbox/logi'; import { Kysely, sql } from 'kysely'; -import { AdminSigner } from '@/signers/AdminSigner.ts'; +import { AdminSigner } from '../signers/AdminSigner.ts'; import { errorJson } from '../utils/log.ts'; import { Time } from '../utils/time.ts'; diff --git a/packages/lang/deno.json b/packages/lang/deno.json new file mode 100644 index 00000000..8b98df9f --- /dev/null +++ b/packages/lang/deno.json @@ -0,0 +1,6 @@ +{ + "name": "@ditto/lang", + "exports": { + ".": "./language.ts" + } +} diff --git a/packages/utils/language.test.ts b/packages/lang/language.test.ts similarity index 100% rename from packages/utils/language.test.ts rename to packages/lang/language.test.ts diff --git a/packages/utils/language.ts b/packages/lang/language.ts similarity index 100% rename from packages/utils/language.ts rename to packages/lang/language.ts diff --git a/packages/ditto/policies/MuteListPolicy.test.ts b/packages/policies/MuteListPolicy.test.ts similarity index 95% rename from packages/ditto/policies/MuteListPolicy.test.ts rename to packages/policies/MuteListPolicy.test.ts index 89d7d993..1da738f6 100644 --- a/packages/ditto/policies/MuteListPolicy.test.ts +++ b/packages/policies/MuteListPolicy.test.ts @@ -1,8 +1,8 @@ import { MockRelay } from '@nostrify/nostrify/test'; import { assertEquals } from '@std/assert'; -import { UserStore } from '@/storages/UserStore.ts'; -import { MuteListPolicy } from '@/policies/MuteListPolicy.ts'; + +import { MuteListPolicy } from './MuteListPolicy.ts'; import userBlack from '~/fixtures/events/kind-0-black.json' with { type: 'json' }; import userMe from '~/fixtures/events/event-0-makes-repost-with-quote-repost.json' with { type: 'json' }; diff --git a/packages/ditto/policies/MuteListPolicy.ts b/packages/policies/MuteListPolicy.ts similarity index 92% rename from packages/ditto/policies/MuteListPolicy.ts rename to packages/policies/MuteListPolicy.ts index 5bdafd04..2b3dc82e 100644 --- a/packages/ditto/policies/MuteListPolicy.ts +++ b/packages/policies/MuteListPolicy.ts @@ -1,6 +1,6 @@ import { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/nostrify'; -import { getTagSet } from '../../utils/tags.ts'; +import { getTagSet } from '@ditto/utils/tags'; export class MuteListPolicy implements NPolicy { constructor(private pubkey: string, private store: NStore) {} diff --git a/packages/policies/deno.json b/packages/policies/deno.json new file mode 100644 index 00000000..16cafe18 --- /dev/null +++ b/packages/policies/deno.json @@ -0,0 +1,6 @@ +{ + "name": "@ditto/policies", + "exports": { + ".": "./mod.ts" + } +} diff --git a/packages/policies/mod.ts b/packages/policies/mod.ts new file mode 100644 index 00000000..9748a4cf --- /dev/null +++ b/packages/policies/mod.ts @@ -0,0 +1 @@ +export { MuteListPolicy } from './MuteListPolicy.ts'; diff --git a/packages/ditto/signers/AdminSigner.ts b/packages/signers/AdminSigner.ts similarity index 100% rename from packages/ditto/signers/AdminSigner.ts rename to packages/signers/AdminSigner.ts diff --git a/packages/ditto/signers/ConnectSigner.ts b/packages/signers/ConnectSigner.ts similarity index 100% rename from packages/ditto/signers/ConnectSigner.ts rename to packages/signers/ConnectSigner.ts diff --git a/packages/ditto/signers/ReadOnlySigner.ts b/packages/signers/ReadOnlySigner.ts similarity index 100% rename from packages/ditto/signers/ReadOnlySigner.ts rename to packages/signers/ReadOnlySigner.ts diff --git a/packages/signers/deno.json b/packages/signers/deno.json new file mode 100644 index 00000000..aedf61fd --- /dev/null +++ b/packages/signers/deno.json @@ -0,0 +1,6 @@ +{ + "name": "@ditto/signers", + "exports": { + ".": "./mod.ts" + } +} diff --git a/packages/signers/mod.ts b/packages/signers/mod.ts new file mode 100644 index 00000000..03069600 --- /dev/null +++ b/packages/signers/mod.ts @@ -0,0 +1,3 @@ +export { AdminSigner } from './AdminSigner.ts'; +export { ConnectSigner } from './ConnectSigner.ts'; +export { ReadOnlySigner } from './ReadOnlySigner.ts'; diff --git a/packages/ditto/uploaders/DenoUploader.ts b/packages/uploaders/DenoUploader.ts similarity index 100% rename from packages/ditto/uploaders/DenoUploader.ts rename to packages/uploaders/DenoUploader.ts diff --git a/packages/ditto/uploaders/IPFSUploader.ts b/packages/uploaders/IPFSUploader.ts similarity index 100% rename from packages/ditto/uploaders/IPFSUploader.ts rename to packages/uploaders/IPFSUploader.ts diff --git a/packages/ditto/uploaders/S3Uploader.ts b/packages/uploaders/S3Uploader.ts similarity index 100% rename from packages/ditto/uploaders/S3Uploader.ts rename to packages/uploaders/S3Uploader.ts diff --git a/packages/uploaders/deno.json b/packages/uploaders/deno.json new file mode 100644 index 00000000..3e0bde0a --- /dev/null +++ b/packages/uploaders/deno.json @@ -0,0 +1,6 @@ +{ + "name": "@ditto/uploaders", + "exports": { + ".": "./mod.ts" + } +} diff --git a/packages/uploaders/mod.ts b/packages/uploaders/mod.ts new file mode 100644 index 00000000..c5405344 --- /dev/null +++ b/packages/uploaders/mod.ts @@ -0,0 +1,3 @@ +export { DenoUploader } from './DenoUploader.ts'; +export { IPFSUploader } from './IPFSUploader.ts'; +export { S3Uploader } from './S3Uploader.ts'; diff --git a/packages/utils/api.ts b/packages/utils/api.ts index 86998327..62677d66 100644 --- a/packages/utils/api.ts +++ b/packages/utils/api.ts @@ -19,7 +19,6 @@ type EventStub = TypeFest.SetOptional