From 3ec9ea9c917905c97b47701344b03c8c74b29858 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 17 Feb 2025 15:32:18 -0600 Subject: [PATCH] Make @ditto/utils a separate package --- deno.json | 3 ++- packages/ditto/DittoPipeline.ts | 18 ++++++++-------- packages/ditto/DittoPush.ts | 2 +- packages/ditto/DittoStorages.ts | 4 ++-- packages/ditto/DittoUploads.ts | 2 +- packages/ditto/app.ts | 2 +- packages/ditto/controllers/api/accounts.ts | 17 ++++++++++----- packages/ditto/controllers/api/admin.ts | 4 ++-- packages/ditto/controllers/api/apps.ts | 2 +- packages/ditto/controllers/api/bookmarks.ts | 2 +- packages/ditto/controllers/api/captcha.ts | 2 +- packages/ditto/controllers/api/cashu.ts | 4 ++-- packages/ditto/controllers/api/ditto.ts | 12 +++++------ packages/ditto/controllers/api/instance.ts | 2 +- packages/ditto/controllers/api/markers.ts | 2 +- packages/ditto/controllers/api/media.ts | 6 +++--- packages/ditto/controllers/api/mutes.ts | 2 +- .../ditto/controllers/api/notifications.ts | 2 +- packages/ditto/controllers/api/oauth.ts | 6 +++--- packages/ditto/controllers/api/pleroma.ts | 6 +++--- packages/ditto/controllers/api/push.ts | 4 ++-- packages/ditto/controllers/api/reactions.ts | 2 +- packages/ditto/controllers/api/reports.ts | 2 +- packages/ditto/controllers/api/search.ts | 8 +++---- packages/ditto/controllers/api/statuses.ts | 21 ++++++++++++------- packages/ditto/controllers/api/streaming.ts | 4 ++-- packages/ditto/controllers/api/suggestions.ts | 4 ++-- packages/ditto/controllers/api/translate.ts | 2 +- packages/ditto/controllers/api/trends.ts | 8 +++---- packages/ditto/controllers/error.ts | 2 +- packages/ditto/controllers/frontend.ts | 8 +++---- packages/ditto/controllers/manifest.ts | 2 +- .../ditto/controllers/nostr/relay-info.ts | 2 +- packages/ditto/controllers/nostr/relay.ts | 12 +++++------ .../ditto/controllers/well-known/nostr.ts | 2 +- packages/ditto/middleware/auth98Middleware.ts | 4 ++-- packages/ditto/middleware/cspMiddleware.ts | 4 ++-- packages/ditto/middleware/signerMiddleware.ts | 4 ++-- .../ditto/middleware/swapNutzapsMiddleware.ts | 4 ++-- packages/ditto/policies/MuteListPolicy.ts | 2 +- packages/ditto/queries.ts | 2 +- packages/ditto/storages/AdminStore.ts | 2 +- packages/ditto/storages/EventsDB.ts | 8 +++---- packages/ditto/storages/InternalRelay.ts | 2 +- packages/ditto/storages/UserStore.ts | 2 +- packages/ditto/storages/hydrate.ts | 6 +++--- packages/ditto/test.ts | 2 +- packages/ditto/trends.ts | 4 ++-- packages/ditto/utils.ts | 2 +- packages/ditto/views.ts | 2 +- packages/ditto/views/ditto.ts | 2 +- packages/ditto/views/mastodon/attachments.ts | 2 +- .../ditto/views/mastodon/relationships.ts | 2 +- packages/ditto/views/mastodon/reports.ts | 2 +- packages/ditto/views/meta.ts | 4 ++-- .../{ditto => }/utils/PleromaConfigDB.test.ts | 2 +- packages/{ditto => }/utils/PleromaConfigDB.ts | 0 packages/{ditto => }/utils/SimpleLRU.test.ts | 2 +- packages/{ditto => }/utils/SimpleLRU.ts | 0 packages/{ditto => }/utils/abort.ts | 0 packages/{ditto => }/utils/aes.bench.ts | 2 +- packages/{ditto => }/utils/aes.test.ts | 2 +- packages/{ditto => }/utils/aes.ts | 0 packages/{ditto => }/utils/api.ts | 4 ++-- packages/{ditto => }/utils/auth.bench.ts | 2 +- packages/{ditto => }/utils/auth.test.ts | 2 +- packages/{ditto => }/utils/auth.ts | 0 packages/{ditto => }/utils/bolt11.test.ts | 2 +- packages/{ditto => }/utils/bolt11.ts | 0 packages/utils/deno.json | 6 ++++++ packages/{ditto => }/utils/favicon.ts | 2 +- packages/{ditto => }/utils/formdata.test.ts | 2 +- packages/{ditto => }/utils/formdata.ts | 0 packages/{ditto => }/utils/html.ts | 0 packages/{ditto => }/utils/instance.ts | 0 packages/{ditto => }/utils/language.test.ts | 2 +- packages/{ditto => }/utils/language.ts | 0 packages/{ditto => }/utils/lnurl.ts | 6 +++--- packages/{ditto => }/utils/log.ts | 0 packages/{ditto => }/utils/lookup.test.ts | 0 packages/{ditto => }/utils/lookup.ts | 2 +- packages/{ditto => }/utils/media.test.ts | 2 +- packages/{ditto => }/utils/media.ts | 0 packages/utils/mod.ts | 0 packages/{ditto => }/utils/nip05.ts | 6 +++--- packages/{ditto => }/utils/nip98.ts | 2 +- packages/{ditto => }/utils/note.test.ts | 2 +- packages/{ditto => }/utils/note.ts | 4 ++-- packages/{ditto => }/utils/og-metadata.ts | 2 +- packages/{ditto => }/utils/outbox.test.ts | 2 +- packages/{ditto => }/utils/outbox.ts | 0 packages/{ditto => }/utils/pleroma.ts | 2 +- packages/{ditto => }/utils/purify.ts | 0 packages/{ditto => }/utils/search.test.ts | 2 +- packages/{ditto => }/utils/search.ts | 0 packages/{ditto => }/utils/stats.test.ts | 2 +- packages/{ditto => }/utils/stats.ts | 2 +- packages/{ditto => }/utils/tags.test.ts | 0 packages/{ditto => }/utils/tags.ts | 0 packages/{ditto => }/utils/text.ts | 0 packages/{ditto => }/utils/time.test.ts | 0 packages/{ditto => }/utils/time.ts | 0 packages/{ditto => }/utils/unfurl.ts | 2 +- packages/{ditto => }/utils/upload.ts | 2 +- packages/{ditto => }/utils/zap-split.ts | 0 scripts/admin-event.ts | 2 +- scripts/stats-recompute.ts | 2 +- 107 files changed, 170 insertions(+), 149 deletions(-) rename packages/{ditto => }/utils/PleromaConfigDB.test.ts (92%) rename packages/{ditto => }/utils/PleromaConfigDB.ts (100%) rename packages/{ditto => }/utils/SimpleLRU.test.ts (90%) rename packages/{ditto => }/utils/SimpleLRU.ts (100%) rename packages/{ditto => }/utils/abort.ts (100%) rename packages/{ditto => }/utils/aes.bench.ts (88%) rename packages/{ditto => }/utils/aes.test.ts (88%) rename packages/{ditto => }/utils/aes.ts (100%) rename packages/{ditto => }/utils/api.ts (98%) rename packages/{ditto => }/utils/auth.bench.ts (76%) rename packages/{ditto => }/utils/auth.test.ts (92%) rename packages/{ditto => }/utils/auth.ts (100%) rename packages/{ditto => }/utils/bolt11.test.ts (93%) rename packages/{ditto => }/utils/bolt11.ts (100%) create mode 100644 packages/utils/deno.json rename packages/{ditto => }/utils/favicon.ts (98%) rename packages/{ditto => }/utils/formdata.test.ts (93%) rename packages/{ditto => }/utils/formdata.ts (100%) rename packages/{ditto => }/utils/html.ts (100%) rename packages/{ditto => }/utils/instance.ts (100%) rename packages/{ditto => }/utils/language.test.ts (98%) rename packages/{ditto => }/utils/language.ts (100%) rename packages/{ditto => }/utils/lnurl.ts (93%) rename packages/{ditto => }/utils/log.ts (100%) rename packages/{ditto => }/utils/lookup.test.ts (100%) rename packages/{ditto => }/utils/lookup.ts (98%) rename packages/{ditto => }/utils/media.test.ts (92%) rename packages/{ditto => }/utils/media.ts (100%) create mode 100644 packages/utils/mod.ts rename packages/{ditto => }/utils/nip05.ts (94%) rename packages/{ditto => }/utils/nip98.ts (98%) rename packages/{ditto => }/utils/note.test.ts (98%) rename packages/{ditto => }/utils/note.ts (97%) rename packages/{ditto => }/utils/og-metadata.ts (96%) rename packages/{ditto => }/utils/outbox.test.ts (94%) rename packages/{ditto => }/utils/outbox.ts (100%) rename packages/{ditto => }/utils/pleroma.ts (94%) rename packages/{ditto => }/utils/purify.ts (100%) rename packages/{ditto => }/utils/search.test.ts (96%) rename packages/{ditto => }/utils/search.ts (100%) rename packages/{ditto => }/utils/stats.test.ts (99%) rename packages/{ditto => }/utils/stats.ts (99%) rename packages/{ditto => }/utils/tags.test.ts (100%) rename packages/{ditto => }/utils/tags.ts (100%) rename packages/{ditto => }/utils/text.ts (100%) rename packages/{ditto => }/utils/time.test.ts (100%) rename packages/{ditto => }/utils/time.ts (100%) rename packages/{ditto => }/utils/unfurl.ts (98%) rename packages/{ditto => }/utils/upload.ts (98%) rename packages/{ditto => }/utils/zap-split.ts (100%) diff --git a/deno.json b/deno.json index 07415c2e..e1276234 100644 --- a/deno.json +++ b/deno.json @@ -7,7 +7,8 @@ "./packages/ditto", "./packages/metrics", "./packages/ratelimiter", - "./packages/translators" + "./packages/translators", + "./packages/utils" ], "tasks": { "start": "deno run -A --env-file --deny-read=.env packages/ditto/server.ts", diff --git a/packages/ditto/DittoPipeline.ts b/packages/ditto/DittoPipeline.ts index 6f985bda..c2a1a19a 100644 --- a/packages/ditto/DittoPipeline.ts +++ b/packages/ditto/DittoPipeline.ts @@ -15,15 +15,15 @@ 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'; -import { getAmount } from '@/utils/bolt11.ts'; -import { resolveFavicon } from '@/utils/favicon.ts'; -import { errorJson } from '@/utils/log.ts'; -import { resolveNip05 } from '@/utils/nip05.ts'; -import { parseNoteContent, stripimeta } from '@/utils/note.ts'; -import { purifyEvent } from '@/utils/purify.ts'; -import { updateStats } from '@/utils/stats.ts'; -import { getTagSet } from '@/utils/tags.ts'; -import { unfurlCardCached } from '@/utils/unfurl.ts'; +import { getAmount } from '../utils/bolt11.ts'; +import { resolveFavicon } from '../utils/favicon.ts'; +import { errorJson } from '../utils/log.ts'; +import { resolveNip05 } from '../utils/nip05.ts'; +import { parseNoteContent, stripimeta } from '../utils/note.ts'; +import { purifyEvent } from '../utils/purify.ts'; +import { updateStats } from '../utils/stats.ts'; +import { getTagSet } from '../utils/tags.ts'; +import { unfurlCardCached } from '../utils/unfurl.ts'; import { renderWebPushNotification } from '@/views/mastodon/push.ts'; import { PolicyWorker } from '@/workers/policy.ts'; import { verifyEventWorker } from '@/workers/verify.ts'; diff --git a/packages/ditto/DittoPush.ts b/packages/ditto/DittoPush.ts index 8af46f03..644c282b 100644 --- a/packages/ditto/DittoPush.ts +++ b/packages/ditto/DittoPush.ts @@ -3,7 +3,7 @@ import { ApplicationServer, PushMessageOptions, PushSubscriber, PushSubscription import { type NStore } from '@nostrify/nostrify'; import { logi } from '@soapbox/logi'; -import { getInstanceMetadata } from '@/utils/instance.ts'; +import { getInstanceMetadata } from '../utils/instance.ts'; interface DittoPushOpts { conf: DittoConf; diff --git a/packages/ditto/DittoStorages.ts b/packages/ditto/DittoStorages.ts index 46306607..c2819c2c 100644 --- a/packages/ditto/DittoStorages.ts +++ b/packages/ditto/DittoStorages.ts @@ -9,8 +9,8 @@ import { AdminStore } from '@/storages/AdminStore.ts'; import { EventsDB } from '@/storages/EventsDB.ts'; import { InternalRelay } from '@/storages/InternalRelay.ts'; import { NPool, NRelay1 } from '@nostrify/nostrify'; -import { getRelays } from '@/utils/outbox.ts'; -import { seedZapSplits } from '@/utils/zap-split.ts'; +import { getRelays } from '../utils/outbox.ts'; +import { seedZapSplits } from '../utils/zap-split.ts'; export class DittoStorages { private _db: Promise | undefined; diff --git a/packages/ditto/DittoUploads.ts b/packages/ditto/DittoUploads.ts index f0c58a62..c0614132 100644 --- a/packages/ditto/DittoUploads.ts +++ b/packages/ditto/DittoUploads.ts @@ -1,6 +1,6 @@ import { LRUCache } from 'lru-cache'; -import { Time } from '@/utils/time.ts'; +import { Time } from '../utils/time.ts'; export interface DittoUpload { id: string; diff --git a/packages/ditto/app.ts b/packages/ditto/app.ts index 0d66255e..a123c047 100644 --- a/packages/ditto/app.ts +++ b/packages/ditto/app.ts @@ -15,7 +15,7 @@ import { DittoStorages } from '@/DittoStorages.ts'; import { startFirehose } from '@/firehose.ts'; import { startNotify } from '@/notify.ts'; import { EventsDB } from '@/storages/EventsDB.ts'; -import { Time } from '@/utils/time.ts'; +import { Time } from '../utils/time.ts'; import { accountController, diff --git a/packages/ditto/controllers/api/accounts.ts b/packages/ditto/controllers/api/accounts.ts index d6d57824..572a6cca 100644 --- a/packages/ditto/controllers/api/accounts.ts +++ b/packages/ditto/controllers/api/accounts.ts @@ -5,10 +5,17 @@ import { z } from 'zod'; import { type AppController } from '@/app.ts'; import { getAuthor, getFollowedPubkeys } from '@/queries.ts'; import { booleanParamSchema, fileSchema } from '@/schema.ts'; -import { uploadFile } from '@/utils/upload.ts'; +import { uploadFile } from '../../../utils/upload.ts'; import { nostrNow } from '@/utils.ts'; -import { assertAuthenticated, createEvent, paginated, parseBody, updateEvent, updateListEvent } from '@/utils/api.ts'; -import { extractIdentifier, lookupAccount, lookupPubkey } from '@/utils/lookup.ts'; +import { + assertAuthenticated, + createEvent, + paginated, + parseBody, + updateEvent, + updateListEvent, +} from '../../../utils/api.ts'; +import { extractIdentifier, lookupAccount, lookupPubkey } from '../../../utils/lookup.ts'; import { renderAccounts, renderEventAccounts, renderStatuses } from '@/views.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; import { renderRelationship } from '@/views/mastodon/relationships.ts'; @@ -16,8 +23,8 @@ import { StatusView } from '@/views/mastodon/StatusView.ts'; import { metadataSchema } from '@/schemas/nostr.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { bech32ToPubkey } from '@/utils.ts'; -import { addTag, deleteTag, findReplyTag, getTagSet } from '@/utils/tags.ts'; -import { getPubkeysBySearch } from '@/utils/search.ts'; +import { addTag, deleteTag, findReplyTag, getTagSet } from '../../../utils/tags.ts'; +import { getPubkeysBySearch } from '../../../utils/search.ts'; const createAccountSchema = z.object({ username: z.string().min(1).max(30).regex(/^[a-z0-9_]+$/i), diff --git a/packages/ditto/controllers/api/admin.ts b/packages/ditto/controllers/api/admin.ts index 9906cd30..e02272a5 100644 --- a/packages/ditto/controllers/api/admin.ts +++ b/packages/ditto/controllers/api/admin.ts @@ -5,10 +5,10 @@ import { z } from 'zod'; import { type AppController } from '@/app.ts'; import { booleanParamSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { createAdminEvent, paginated, parseBody, updateEventInfo, updateUser } from '@/utils/api.ts'; +import { createAdminEvent, paginated, parseBody, updateEventInfo, updateUser } from '../../../utils/api.ts'; import { renderNameRequest } from '@/views/ditto.ts'; import { AdminAccountView } from '@/views/mastodon/AdminAccountView.ts'; -import { errorJson } from '@/utils/log.ts'; +import { errorJson } from '../../../utils/log.ts'; const adminAccountQuerySchema = z.object({ local: booleanParamSchema.optional(), diff --git a/packages/ditto/controllers/api/apps.ts b/packages/ditto/controllers/api/apps.ts index af755ba5..2721802b 100644 --- a/packages/ditto/controllers/api/apps.ts +++ b/packages/ditto/controllers/api/apps.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; import type { AppController } from '@/app.ts'; -import { parseBody } from '@/utils/api.ts'; +import { parseBody } from '../../../utils/api.ts'; /** * Apps are unnecessary cruft in Mastodon API, but necessary to make clients work. diff --git a/packages/ditto/controllers/api/bookmarks.ts b/packages/ditto/controllers/api/bookmarks.ts index 0ec3877e..067cd287 100644 --- a/packages/ditto/controllers/api/bookmarks.ts +++ b/packages/ditto/controllers/api/bookmarks.ts @@ -1,5 +1,5 @@ import { type AppController } from '@/app.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../../utils/tags.ts'; import { renderStatuses } from '@/views.ts'; /** https://docs.joinmastodon.org/methods/bookmarks/#get */ diff --git a/packages/ditto/controllers/api/captcha.ts b/packages/ditto/controllers/api/captcha.ts index 6bbcc49f..7e27f9c6 100644 --- a/packages/ditto/controllers/api/captcha.ts +++ b/packages/ditto/controllers/api/captcha.ts @@ -3,7 +3,7 @@ import TTLCache from '@isaacs/ttlcache'; import { z } from 'zod'; import { AppController } from '@/app.ts'; -import { updateUser } from '@/utils/api.ts'; +import { updateUser } from '../../../utils/api.ts'; interface Point { x: number; diff --git a/packages/ditto/controllers/api/cashu.ts b/packages/ditto/controllers/api/cashu.ts index ab36e476..dcae843b 100644 --- a/packages/ditto/controllers/api/cashu.ts +++ b/packages/ditto/controllers/api/cashu.ts @@ -4,13 +4,13 @@ import { bytesToString, stringToBytes } from '@scure/base'; import { generateSecretKey, getPublicKey } from 'nostr-tools'; import { z } from 'zod'; -import { createEvent, parseBody } from '@/utils/api.ts'; +import { createEvent, parseBody } from '../../../utils/api.ts'; import { requireNip44Signer } from '@/middleware/requireSigner.ts'; import { walletSchema } from '@/schema.ts'; import { swapNutzapsMiddleware } from '@/middleware/swapNutzapsMiddleware.ts'; import { isNostrId } from '@/utils.ts'; import { logi } from '@soapbox/logi'; -import { errorJson } from '@/utils/log.ts'; +import { errorJson } from '../../../utils/log.ts'; type Wallet = z.infer; diff --git a/packages/ditto/controllers/api/ditto.ts b/packages/ditto/controllers/api/ditto.ts index d37b7531..69346987 100644 --- a/packages/ditto/controllers/api/ditto.ts +++ b/packages/ditto/controllers/api/ditto.ts @@ -3,18 +3,18 @@ import { z } from 'zod'; import { AppController } from '@/app.ts'; import { getAuthor } from '@/queries.ts'; -import { addTag } from '@/utils/tags.ts'; -import { createEvent, paginated, parseBody, updateAdminEvent } from '@/utils/api.ts'; -import { getInstanceMetadata } from '@/utils/instance.ts'; -import { deleteTag } from '@/utils/tags.ts'; -import { DittoZapSplits, getZapSplits } from '@/utils/zap-split.ts'; +import { addTag } from '../../../utils/tags.ts'; +import { createEvent, paginated, parseBody, updateAdminEvent } from '../../../utils/api.ts'; +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 { screenshotsSchema } from '@/schemas/nostr.ts'; import { booleanParamSchema, percentageSchema, wsUrlSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { renderNameRequest } from '@/views/ditto.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; -import { updateListAdminEvent } from '@/utils/api.ts'; +import { updateListAdminEvent } from '../../../utils/api.ts'; const markerSchema = z.enum(['read', 'write']); diff --git a/packages/ditto/controllers/api/instance.ts b/packages/ditto/controllers/api/instance.ts index 5c5a7345..ce8b98ea 100644 --- a/packages/ditto/controllers/api/instance.ts +++ b/packages/ditto/controllers/api/instance.ts @@ -1,7 +1,7 @@ import denoJson from 'deno.json' with { type: 'json' }; import { AppController } from '@/app.ts'; -import { getInstanceMetadata } from '@/utils/instance.ts'; +import { getInstanceMetadata } from '../../../utils/instance.ts'; const version = `3.0.0 (compatible; Ditto ${denoJson.version})`; diff --git a/packages/ditto/controllers/api/markers.ts b/packages/ditto/controllers/api/markers.ts index 005ebbe5..234ae55c 100644 --- a/packages/ditto/controllers/api/markers.ts +++ b/packages/ditto/controllers/api/markers.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; import { AppController } from '@/app.ts'; -import { parseBody } from '@/utils/api.ts'; +import { parseBody } from '../../../utils/api.ts'; const kv = await Deno.openKv(); diff --git a/packages/ditto/controllers/api/media.ts b/packages/ditto/controllers/api/media.ts index fc309cdf..9e7e3385 100644 --- a/packages/ditto/controllers/api/media.ts +++ b/packages/ditto/controllers/api/media.ts @@ -4,10 +4,10 @@ import { z } from 'zod'; import { AppController } from '@/app.ts'; import { dittoUploads } from '@/DittoUploads.ts'; import { fileSchema } from '@/schema.ts'; -import { parseBody } from '@/utils/api.ts'; +import { parseBody } from '../../../utils/api.ts'; import { renderAttachment } from '@/views/mastodon/attachments.ts'; -import { errorJson } from '@/utils/log.ts'; -import { uploadFile } from '@/utils/upload.ts'; +import { errorJson } from '../../../utils/log.ts'; +import { uploadFile } from '../../../utils/upload.ts'; const mediaBodySchema = z.object({ file: fileSchema, diff --git a/packages/ditto/controllers/api/mutes.ts b/packages/ditto/controllers/api/mutes.ts index df683524..bb85f118 100644 --- a/packages/ditto/controllers/api/mutes.ts +++ b/packages/ditto/controllers/api/mutes.ts @@ -1,5 +1,5 @@ import { type AppController } from '@/app.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../../utils/tags.ts'; import { renderAccounts } from '@/views.ts'; /** https://docs.joinmastodon.org/methods/mutes/#get */ diff --git a/packages/ditto/controllers/api/notifications.ts b/packages/ditto/controllers/api/notifications.ts index fd8b5720..13303e5d 100644 --- a/packages/ditto/controllers/api/notifications.ts +++ b/packages/ditto/controllers/api/notifications.ts @@ -4,7 +4,7 @@ import { z } from 'zod'; import { AppContext, AppController } from '@/app.ts'; import { DittoPagination } from '@/interfaces/DittoPagination.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { paginated } from '@/utils/api.ts'; +import { paginated } from '../../../utils/api.ts'; import { renderNotification } from '@/views/mastodon/notifications.ts'; /** Set of known notification types across backends. */ diff --git a/packages/ditto/controllers/api/oauth.ts b/packages/ditto/controllers/api/oauth.ts index c87cfa8b..a0512c10 100644 --- a/packages/ditto/controllers/api/oauth.ts +++ b/packages/ditto/controllers/api/oauth.ts @@ -7,9 +7,9 @@ import { z } from 'zod'; import { AppController } from '@/app.ts'; import { nostrNow } from '@/utils.ts'; -import { parseBody } from '@/utils/api.ts'; -import { aesEncrypt } from '@/utils/aes.ts'; -import { generateToken, getTokenHash } from '@/utils/auth.ts'; +import { parseBody } from '../../../utils/api.ts'; +import { aesEncrypt } from '../../../utils/aes.ts'; +import { generateToken, getTokenHash } from '../../../utils/auth.ts'; import { Kysely } from 'kysely'; const passwordGrantSchema = z.object({ diff --git a/packages/ditto/controllers/api/pleroma.ts b/packages/ditto/controllers/api/pleroma.ts index 9bcb7e76..c90c7e39 100644 --- a/packages/ditto/controllers/api/pleroma.ts +++ b/packages/ditto/controllers/api/pleroma.ts @@ -3,9 +3,9 @@ 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 { createAdminEvent, updateAdminEvent, updateUser } from '@/utils/api.ts'; -import { lookupPubkey } from '@/utils/lookup.ts'; -import { getPleromaConfigs } from '@/utils/pleroma.ts'; +import { createAdminEvent, updateAdminEvent, updateUser } from '../../../utils/api.ts'; +import { lookupPubkey } from '../../../utils/lookup.ts'; +import { getPleromaConfigs } from '../../../utils/pleroma.ts'; const frontendConfigController: AppController = async (c) => { const configDB = await getPleromaConfigs(c.var); diff --git a/packages/ditto/controllers/api/push.ts b/packages/ditto/controllers/api/push.ts index 4d5df752..dfbf4870 100644 --- a/packages/ditto/controllers/api/push.ts +++ b/packages/ditto/controllers/api/push.ts @@ -3,8 +3,8 @@ import { nip19 } from 'nostr-tools'; import { z } from 'zod'; import { AppController } from '@/app.ts'; -import { parseBody } from '@/utils/api.ts'; -import { getTokenHash } from '@/utils/auth.ts'; +import { parseBody } from '../../../utils/api.ts'; +import { getTokenHash } from '../../../utils/auth.ts'; /** https://docs.joinmastodon.org/entities/WebPushSubscription/ */ interface MastodonPushSubscription { diff --git a/packages/ditto/controllers/api/reactions.ts b/packages/ditto/controllers/api/reactions.ts index 06b07c92..8802d075 100644 --- a/packages/ditto/controllers/api/reactions.ts +++ b/packages/ditto/controllers/api/reactions.ts @@ -1,7 +1,7 @@ import { AppController } from '@/app.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { createEvent } from '@/utils/api.ts'; +import { createEvent } from '../../../utils/api.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; diff --git a/packages/ditto/controllers/api/reports.ts b/packages/ditto/controllers/api/reports.ts index b25e7233..a16ecdf6 100644 --- a/packages/ditto/controllers/api/reports.ts +++ b/packages/ditto/controllers/api/reports.ts @@ -2,7 +2,7 @@ import { NostrFilter, NSchema as n } from '@nostrify/nostrify'; import { z } from 'zod'; import { type AppController } from '@/app.ts'; -import { createEvent, paginated, parseBody, updateEventInfo } from '@/utils/api.ts'; +import { createEvent, paginated, parseBody, updateEventInfo } from '../../../utils/api.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { renderAdminReport } from '@/views/mastodon/reports.ts'; import { renderReport } from '@/views/mastodon/reports.ts'; diff --git a/packages/ditto/controllers/api/search.ts b/packages/ditto/controllers/api/search.ts index 24b2f192..1b2a8690 100644 --- a/packages/ditto/controllers/api/search.ts +++ b/packages/ditto/controllers/api/search.ts @@ -8,13 +8,13 @@ import { z } from 'zod'; import { AppController } from '@/app.ts'; import { booleanParamSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { extractIdentifier, lookupPubkey } from '@/utils/lookup.ts'; -import { resolveNip05 } from '@/utils/nip05.ts'; +import { extractIdentifier, lookupPubkey } from '../../../utils/lookup.ts'; +import { resolveNip05 } from '../../../utils/nip05.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; import { getFollowedPubkeys } from '@/queries.ts'; -import { getPubkeysBySearch } from '@/utils/search.ts'; -import { paginated, paginatedList } from '@/utils/api.ts'; +import { getPubkeysBySearch } from '../../../utils/search.ts'; +import { paginated, paginatedList } from '../../../utils/api.ts'; const searchQuerySchema = z.object({ q: z.string().transform(decodeURIComponent), diff --git a/packages/ditto/controllers/api/statuses.ts b/packages/ditto/controllers/api/statuses.ts index e29c3444..ed440460 100644 --- a/packages/ditto/controllers/api/statuses.ts +++ b/packages/ditto/controllers/api/statuses.ts @@ -9,15 +9,22 @@ import { type AppController } from '@/app.ts'; import { DittoUpload, dittoUploads } from '@/DittoUploads.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; import { getAncestors, getAuthor, getDescendants, getEvent } from '@/queries.ts'; -import { addTag, deleteTag } from '@/utils/tags.ts'; -import { asyncReplaceAll } from '@/utils/text.ts'; -import { lookupPubkey } from '@/utils/lookup.ts'; +import { addTag, deleteTag } from '../../../utils/tags.ts'; +import { asyncReplaceAll } from '../../../utils/text.ts'; +import { lookupPubkey } from '../../../utils/lookup.ts'; import { languageSchema } from '@/schema.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { assertAuthenticated, createEvent, paginated, paginatedList, parseBody, updateListEvent } from '@/utils/api.ts'; -import { getInvoice, getLnurl } from '@/utils/lnurl.ts'; -import { purifyEvent } from '@/utils/purify.ts'; -import { getZapSplits } from '@/utils/zap-split.ts'; +import { + assertAuthenticated, + createEvent, + paginated, + paginatedList, + parseBody, + updateListEvent, +} from '../../../utils/api.ts'; +import { getInvoice, getLnurl } from '../../../utils/lnurl.ts'; +import { purifyEvent } from '../../../utils/purify.ts'; +import { getZapSplits } from '../../../utils/zap-split.ts'; import { renderEventAccounts } from '@/views.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; diff --git a/packages/ditto/controllers/api/streaming.ts b/packages/ditto/controllers/api/streaming.ts index 9f0f9085..27c45f0c 100644 --- a/packages/ditto/controllers/api/streaming.ts +++ b/packages/ditto/controllers/api/streaming.ts @@ -15,8 +15,8 @@ import { MuteListPolicy } from '@/policies/MuteListPolicy.ts'; import { getFeedPubkeys } from '@/queries.ts'; import { AdminStore } from '@/storages/AdminStore.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { getTokenHash } from '@/utils/auth.ts'; -import { errorJson } from '@/utils/log.ts'; +import { getTokenHash } from '../../../utils/auth.ts'; +import { errorJson } from '../../../utils/log.ts'; import { bech32ToPubkey, Time } from '@/utils.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; import { NotificationView } from '@/views/mastodon/NotificationView.ts'; diff --git a/packages/ditto/controllers/api/suggestions.ts b/packages/ditto/controllers/api/suggestions.ts index 0a85b95b..8429a5f1 100644 --- a/packages/ditto/controllers/api/suggestions.ts +++ b/packages/ditto/controllers/api/suggestions.ts @@ -3,8 +3,8 @@ import { matchFilter } from 'nostr-tools'; import { AppContext, AppController } from '@/app.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { paginated, paginatedList } from '@/utils/api.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { paginated, paginatedList } from '../../../utils/api.ts'; +import { getTagSet } from '../../../utils/tags.ts'; import { accountFromPubkey, renderAccount } from '@/views/mastodon/accounts.ts'; export const suggestionsV1Controller: AppController = async (c) => { diff --git a/packages/ditto/controllers/api/translate.ts b/packages/ditto/controllers/api/translate.ts index f72647b3..4bab6d32 100644 --- a/packages/ditto/controllers/api/translate.ts +++ b/packages/ditto/controllers/api/translate.ts @@ -7,7 +7,7 @@ import { translationCache } from '@/caches/translationCache.ts'; import { MastodonTranslation } from '@/entities/MastodonTranslation.ts'; import { getEvent } from '@/queries.ts'; import { localeSchema } from '@/schema.ts'; -import { parseBody } from '@/utils/api.ts'; +import { parseBody } from '../../../utils/api.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; const translateSchema = z.object({ diff --git a/packages/ditto/controllers/api/trends.ts b/packages/ditto/controllers/api/trends.ts index 8fb397b0..762a0361 100644 --- a/packages/ditto/controllers/api/trends.ts +++ b/packages/ditto/controllers/api/trends.ts @@ -7,10 +7,10 @@ import { AppController } from '@/app.ts'; import { PreviewCard } from '@/entities/PreviewCard.ts'; import { paginationSchema } from '@/schemas/pagination.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { generateDateRange, Time } from '@/utils/time.ts'; -import { unfurlCardCached } from '@/utils/unfurl.ts'; -import { paginated } from '@/utils/api.ts'; -import { errorJson } from '@/utils/log.ts'; +import { generateDateRange, Time } from '../../../utils/time.ts'; +import { unfurlCardCached } from '../../../utils/unfurl.ts'; +import { paginated } from '../../../utils/api.ts'; +import { errorJson } from '../../../utils/log.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; interface MastodonTrendingHashtag { diff --git a/packages/ditto/controllers/error.ts b/packages/ditto/controllers/error.ts index 50962fcc..2e6a61c2 100644 --- a/packages/ditto/controllers/error.ts +++ b/packages/ditto/controllers/error.ts @@ -2,7 +2,7 @@ import { ErrorHandler } from '@hono/hono'; import { HTTPException } from '@hono/hono/http-exception'; import { logi } from '@soapbox/logi'; -import { errorJson } from '@/utils/log.ts'; +import { errorJson } from '../../utils/log.ts'; export const errorHandler: ErrorHandler = (err, c) => { c.header('Cache-Control', 'no-store'); diff --git a/packages/ditto/controllers/frontend.ts b/packages/ditto/controllers/frontend.ts index cfd35e99..cd00828b 100644 --- a/packages/ditto/controllers/frontend.ts +++ b/packages/ditto/controllers/frontend.ts @@ -4,10 +4,10 @@ import { logi } from '@soapbox/logi'; import { Kysely } from 'kysely'; import { AppMiddleware } from '@/app.ts'; -import { getPathParams, MetadataEntities } from '@/utils/og-metadata.ts'; -import { getInstanceMetadata } from '@/utils/instance.ts'; -import { errorJson } from '@/utils/log.ts'; -import { lookupPubkey } from '@/utils/lookup.ts'; +import { getPathParams, MetadataEntities } from '../../utils/og-metadata.ts'; +import { getInstanceMetadata } from '../../utils/instance.ts'; +import { errorJson } from '../../utils/log.ts'; +import { lookupPubkey } from '../../utils/lookup.ts'; import { renderMetadata } from '@/views/meta.ts'; import { getAuthor, getEvent } from '@/queries.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; diff --git a/packages/ditto/controllers/manifest.ts b/packages/ditto/controllers/manifest.ts index 7d49ba1e..cbfc3666 100644 --- a/packages/ditto/controllers/manifest.ts +++ b/packages/ditto/controllers/manifest.ts @@ -1,6 +1,6 @@ import { AppController } from '@/app.ts'; import { WebManifestCombined } from '@/types/webmanifest.ts'; -import { getInstanceMetadata } from '@/utils/instance.ts'; +import { getInstanceMetadata } from '../../utils/instance.ts'; export const manifestController: AppController = async (c) => { const meta = await getInstanceMetadata(c.var); diff --git a/packages/ditto/controllers/nostr/relay-info.ts b/packages/ditto/controllers/nostr/relay-info.ts index cd59827d..6fe2742c 100644 --- a/packages/ditto/controllers/nostr/relay-info.ts +++ b/packages/ditto/controllers/nostr/relay-info.ts @@ -1,7 +1,7 @@ import denoJson from 'deno.json' with { type: 'json' }; import { AppController } from '@/app.ts'; -import { getInstanceMetadata } from '@/utils/instance.ts'; +import { getInstanceMetadata } from '../../../utils/instance.ts'; const relayInfoController: AppController = async (c) => { const { conf } = c.var; diff --git a/packages/ditto/controllers/nostr/relay.ts b/packages/ditto/controllers/nostr/relay.ts index 739ee0e8..b1791a80 100644 --- a/packages/ditto/controllers/nostr/relay.ts +++ b/packages/ditto/controllers/nostr/relay.ts @@ -17,12 +17,12 @@ import { import { AppController } from '@/app.ts'; import { relayInfoController } from '@/controllers/nostr/relay-info.ts'; import { RelayError } from '@/RelayError.ts'; -import { errorJson } from '@/utils/log.ts'; -import { purifyEvent } from '@/utils/purify.ts'; -import { MemoryRateLimiter } from '@/utils/ratelimiter/MemoryRateLimiter.ts'; -import { MultiRateLimiter } from '@/utils/ratelimiter/MultiRateLimiter.ts'; -import { RateLimiter } from '@/utils/ratelimiter/types.ts'; -import { Time } from '@/utils/time.ts'; +import { errorJson } from '../../../utils/log.ts'; +import { purifyEvent } from '../../../utils/purify.ts'; +import { MemoryRateLimiter } from '../../../utils/ratelimiter/MemoryRateLimiter.ts'; +import { MultiRateLimiter } from '../../../utils/ratelimiter/MultiRateLimiter.ts'; +import { RateLimiter } from '../../../utils/ratelimiter/types.ts'; +import { Time } from '../../../utils/time.ts'; import { DittoPipeline } from '@/DittoPipeline.ts'; import { EventsDB } from '@/storages/EventsDB.ts'; diff --git a/packages/ditto/controllers/well-known/nostr.ts b/packages/ditto/controllers/well-known/nostr.ts index 24bfb994..aa43a816 100644 --- a/packages/ditto/controllers/well-known/nostr.ts +++ b/packages/ditto/controllers/well-known/nostr.ts @@ -2,7 +2,7 @@ import { NostrJson } from '@nostrify/nostrify'; import { z } from 'zod'; import { AppController } from '@/app.ts'; -import { localNip05Lookup } from '@/utils/nip05.ts'; +import { localNip05Lookup } from '../../../utils/nip05.ts'; const nameSchema = z.string().min(1).regex(/^[\w.-]+$/); const emptyResult: NostrJson = { names: {}, relays: {} }; diff --git a/packages/ditto/middleware/auth98Middleware.ts b/packages/ditto/middleware/auth98Middleware.ts index d732b81d..32e535f3 100644 --- a/packages/ditto/middleware/auth98Middleware.ts +++ b/packages/ditto/middleware/auth98Middleware.ts @@ -2,8 +2,8 @@ import { HTTPException } from '@hono/hono/http-exception'; import { NostrEvent } from '@nostrify/nostrify'; import { type AppContext, type AppMiddleware } from '@/app.ts'; -import { localRequest } from '@/utils/api.ts'; -import { buildAuthEventTemplate, type ParseAuthRequestOpts, validateAuthEvent } from '@/utils/nip98.ts'; +import { localRequest } from '../../utils/api.ts'; +import { buildAuthEventTemplate, type ParseAuthRequestOpts, validateAuthEvent } from '../../utils/nip98.ts'; type UserRole = 'user' | 'admin'; diff --git a/packages/ditto/middleware/cspMiddleware.ts b/packages/ditto/middleware/cspMiddleware.ts index df18eac6..92d03b45 100644 --- a/packages/ditto/middleware/cspMiddleware.ts +++ b/packages/ditto/middleware/cspMiddleware.ts @@ -1,6 +1,6 @@ import { AppMiddleware } from '@/app.ts'; -import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts'; -import { getPleromaConfigs } from '@/utils/pleroma.ts'; +import { PleromaConfigDB } from '../../utils/PleromaConfigDB.ts'; +import { getPleromaConfigs } from '../../utils/pleroma.ts'; let configDBCache: Promise | undefined; diff --git a/packages/ditto/middleware/signerMiddleware.ts b/packages/ditto/middleware/signerMiddleware.ts index 856be594..47b4ffd1 100644 --- a/packages/ditto/middleware/signerMiddleware.ts +++ b/packages/ditto/middleware/signerMiddleware.ts @@ -8,8 +8,8 @@ import { nip19 } from 'nostr-tools'; import { ConnectSigner } from '@/signers/ConnectSigner.ts'; import { ReadOnlySigner } from '@/signers/ReadOnlySigner.ts'; -import { aesDecrypt } from '@/utils/aes.ts'; -import { getTokenHash } from '@/utils/auth.ts'; +import { aesDecrypt } from '../../utils/aes.ts'; +import { getTokenHash } from '../../utils/auth.ts'; /** We only accept "Bearer" type. */ const BEARER_REGEX = new RegExp(`^Bearer (${nip19.BECH32_REGEX.source})$`); diff --git a/packages/ditto/middleware/swapNutzapsMiddleware.ts b/packages/ditto/middleware/swapNutzapsMiddleware.ts index dfb637ec..a1809ab7 100644 --- a/packages/ditto/middleware/swapNutzapsMiddleware.ts +++ b/packages/ditto/middleware/swapNutzapsMiddleware.ts @@ -8,8 +8,8 @@ import { stringToBytes } from '@scure/base'; import { logi } from '@soapbox/logi'; import { isNostrId } from '@/utils.ts'; -import { errorJson } from '@/utils/log.ts'; -import { createEvent } from '@/utils/api.ts'; +import { errorJson } from '../../utils/log.ts'; +import { createEvent } from '../../utils/api.ts'; import { z } from 'zod'; /** diff --git a/packages/ditto/policies/MuteListPolicy.ts b/packages/ditto/policies/MuteListPolicy.ts index 130d10df..5bdafd04 100644 --- a/packages/ditto/policies/MuteListPolicy.ts +++ b/packages/ditto/policies/MuteListPolicy.ts @@ -1,6 +1,6 @@ import { NostrEvent, NostrRelayOK, NPolicy, NStore } from '@nostrify/nostrify'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../utils/tags.ts'; export class MuteListPolicy implements NPolicy { constructor(private pubkey: string, private store: NStore) {} diff --git a/packages/ditto/queries.ts b/packages/ditto/queries.ts index f3d52b6b..7c5bdd8b 100644 --- a/packages/ditto/queries.ts +++ b/packages/ditto/queries.ts @@ -6,7 +6,7 @@ import { Kysely } from 'kysely'; import { type DittoEvent } from '@/interfaces/DittoEvent.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; import { fallbackAuthor } from '@/utils.ts'; -import { findReplyTag, getTagSet } from '@/utils/tags.ts'; +import { findReplyTag, getTagSet } from '../utils/tags.ts'; interface GetEventOpts { conf: DittoConf; diff --git a/packages/ditto/storages/AdminStore.ts b/packages/ditto/storages/AdminStore.ts index c3fd5999..c8841af8 100644 --- a/packages/ditto/storages/AdminStore.ts +++ b/packages/ditto/storages/AdminStore.ts @@ -2,7 +2,7 @@ import { DittoConf } from '@ditto/conf'; import { NostrEvent, NostrFilter, NStore } from '@nostrify/nostrify'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../utils/tags.ts'; /** A store that prevents banned users from being displayed. */ export class AdminStore implements NStore { diff --git a/packages/ditto/storages/EventsDB.ts b/packages/ditto/storages/EventsDB.ts index 622f5811..91ad8d6a 100644 --- a/packages/ditto/storages/EventsDB.ts +++ b/packages/ditto/storages/EventsDB.ts @@ -15,11 +15,11 @@ import { z } from 'zod'; import { RelayError } from '@/RelayError.ts'; import { isNostrId } from '@/utils.ts'; -import { abortError } from '@/utils/abort.ts'; -import { purifyEvent } from '@/utils/purify.ts'; +import { abortError } from '../../utils/abort.ts'; +import { purifyEvent } from '../../utils/purify.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { detectLanguage } from '@/utils/language.ts'; -import { getMediaLinks } from '@/utils/note.ts'; +import { detectLanguage } from '../../utils/language.ts'; +import { getMediaLinks } from '../../utils/note.ts'; /** Function to decide whether or not to index a tag. */ type TagCondition = (opts: TagConditionOpts) => boolean; diff --git a/packages/ditto/storages/InternalRelay.ts b/packages/ditto/storages/InternalRelay.ts index 9ab942fb..b2acf58d 100644 --- a/packages/ditto/storages/InternalRelay.ts +++ b/packages/ditto/storages/InternalRelay.ts @@ -13,7 +13,7 @@ import { matchFilter } from 'nostr-tools'; import { Gauge } from 'prom-client'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { purifyEvent } from '@/utils/purify.ts'; +import { purifyEvent } from '../../utils/purify.ts'; interface InternalRelayOpts { gauge?: Gauge; diff --git a/packages/ditto/storages/UserStore.ts b/packages/ditto/storages/UserStore.ts index 2449d8c1..976294a8 100644 --- a/packages/ditto/storages/UserStore.ts +++ b/packages/ditto/storages/UserStore.ts @@ -1,7 +1,7 @@ import { NostrEvent, NostrFilter, NStore } from '@nostrify/nostrify'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../utils/tags.ts'; export class UserStore implements NStore { private promise: Promise | undefined; diff --git a/packages/ditto/storages/hydrate.ts b/packages/ditto/storages/hydrate.ts index 1c71de57..6ed31d37 100644 --- a/packages/ditto/storages/hydrate.ts +++ b/packages/ditto/storages/hydrate.ts @@ -8,9 +8,9 @@ import { z } from 'zod'; import { type DittoEvent } from '@/interfaces/DittoEvent.ts'; import { fallbackAuthor } from '@/utils.ts'; -import { findQuoteTag } from '@/utils/tags.ts'; -import { findQuoteInContent } from '@/utils/note.ts'; -import { getAmount } from '@/utils/bolt11.ts'; +import { findQuoteTag } from '../../utils/tags.ts'; +import { findQuoteInContent } from '../../utils/note.ts'; +import { getAmount } from '../../utils/bolt11.ts'; interface HydrateOpts { conf: DittoConf; diff --git a/packages/ditto/test.ts b/packages/ditto/test.ts index 5eebe62a..de101185 100644 --- a/packages/ditto/test.ts +++ b/packages/ditto/test.ts @@ -6,7 +6,7 @@ import { NostrEvent } from '@nostrify/nostrify'; import { finalizeEvent, generateSecretKey, nip19 } from 'nostr-tools'; import { EventsDB } from '@/storages/EventsDB.ts'; -import { purifyEvent } from '@/utils/purify.ts'; +import { purifyEvent } from '../utils/purify.ts'; import { sql } from 'kysely'; /** Import an event fixture by name in tests. */ diff --git a/packages/ditto/trends.ts b/packages/ditto/trends.ts index 5a316182..2d920a9e 100644 --- a/packages/ditto/trends.ts +++ b/packages/ditto/trends.ts @@ -5,8 +5,8 @@ import { logi } from '@soapbox/logi'; import { Kysely, sql } from 'kysely'; import { AdminSigner } from '@/signers/AdminSigner.ts'; -import { errorJson } from '@/utils/log.ts'; -import { Time } from '@/utils/time.ts'; +import { errorJson } from '../utils/log.ts'; +import { Time } from '../utils/time.ts'; interface DittoTrendsOpts { conf: DittoConf; diff --git a/packages/ditto/utils.ts b/packages/ditto/utils.ts index 02827785..842af3c2 100644 --- a/packages/ditto/utils.ts +++ b/packages/ditto/utils.ts @@ -83,4 +83,4 @@ function fallbackAuthor(pubkey: string): NostrEvent { export { bech32ToPubkey, eventAge, fallbackAuthor, findTag, isNostrId, type Nip05, nostrDate, nostrNow, parseNip05 }; -export { Time } from '@/utils/time.ts'; +export { Time } from '../utils/time.ts'; diff --git a/packages/ditto/views.ts b/packages/ditto/views.ts index 3913aaea..cc628bd2 100644 --- a/packages/ditto/views.ts +++ b/packages/ditto/views.ts @@ -2,7 +2,7 @@ import { NostrEvent, NostrFilter } from '@nostrify/nostrify'; import { AppContext } from '@/app.ts'; import { hydrateEvents } from '@/storages/hydrate.ts'; -import { paginated, paginatedList } from '@/utils/api.ts'; +import { paginated, paginatedList } from '../utils/api.ts'; import { AccountView } from '@/views/mastodon/AccountView.ts'; import { StatusView } from '@/views/mastodon/StatusView.ts'; diff --git a/packages/ditto/views/ditto.ts b/packages/ditto/views/ditto.ts index ebc07b77..147d93ce 100644 --- a/packages/ditto/views/ditto.ts +++ b/packages/ditto/views/ditto.ts @@ -1,5 +1,5 @@ import { DittoEvent } from '@/interfaces/DittoEvent.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../utils/tags.ts'; import { renderAdminAccount, renderAdminAccountFromPubkey } from '@/views/mastodon/admin-accounts.ts'; /** Renders an Admin::Account entity from a name request event. */ diff --git a/packages/ditto/views/mastodon/attachments.ts b/packages/ditto/views/mastodon/attachments.ts index 4e9401fd..2a5567c4 100644 --- a/packages/ditto/views/mastodon/attachments.ts +++ b/packages/ditto/views/mastodon/attachments.ts @@ -1,5 +1,5 @@ import { MastodonAttachment } from '@/entities/MastodonAttachment.ts'; -import { getUrlMediaType } from '@/utils/media.ts'; +import { getUrlMediaType } from '../../../utils/media.ts'; /** Render Mastodon media attachment. */ function renderAttachment( diff --git a/packages/ditto/views/mastodon/relationships.ts b/packages/ditto/views/mastodon/relationships.ts index 34d6c569..c4f46235 100644 --- a/packages/ditto/views/mastodon/relationships.ts +++ b/packages/ditto/views/mastodon/relationships.ts @@ -1,6 +1,6 @@ import { NostrEvent } from '@nostrify/nostrify'; -import { hasTag } from '@/utils/tags.ts'; +import { hasTag } from '../../../utils/tags.ts'; interface RenderRelationshipOpts { sourcePubkey: string; diff --git a/packages/ditto/views/mastodon/reports.ts b/packages/ditto/views/mastodon/reports.ts index d494b231..ff149fc2 100644 --- a/packages/ditto/views/mastodon/reports.ts +++ b/packages/ditto/views/mastodon/reports.ts @@ -4,7 +4,7 @@ import { accountFromPubkey, renderAccount } from '@/views/mastodon/accounts.ts'; import { nostrDate } from '@/utils.ts'; import { renderAdminAccount, renderAdminAccountFromPubkey } from '@/views/mastodon/admin-accounts.ts'; import { renderStatus } from '@/views/mastodon/statuses.ts'; -import { getTagSet } from '@/utils/tags.ts'; +import { getTagSet } from '../../../utils/tags.ts'; /** Expects a `reportEvent` of kind 1984 and a `profile` of kind 0 of the person being reported */ async function renderReport(event: DittoEvent) { diff --git a/packages/ditto/views/meta.ts b/packages/ditto/views/meta.ts index a489877a..287a87a2 100644 --- a/packages/ditto/views/meta.ts +++ b/packages/ditto/views/meta.ts @@ -1,8 +1,8 @@ import { DittoConf } from '@ditto/conf'; import DOMPurify from 'isomorphic-dompurify'; -import { html } from '@/utils/html.ts'; -import { MetadataEntities } from '@/utils/og-metadata.ts'; +import { html } from '../../utils/html.ts'; +import { MetadataEntities } from '../../utils/og-metadata.ts'; /** * Builds a series of meta tags from supplied metadata for injection into the served HTML page. diff --git a/packages/ditto/utils/PleromaConfigDB.test.ts b/packages/utils/PleromaConfigDB.test.ts similarity index 92% rename from packages/ditto/utils/PleromaConfigDB.test.ts rename to packages/utils/PleromaConfigDB.test.ts index 4e1242dd..68f34fe0 100644 --- a/packages/ditto/utils/PleromaConfigDB.test.ts +++ b/packages/utils/PleromaConfigDB.test.ts @@ -3,7 +3,7 @@ import { assertEquals } from '@std/assert'; import data from '~/fixtures/config-db.json' with { type: 'json' }; import { PleromaConfig } from '@/schemas/pleroma-api.ts'; -import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts'; +import { PleromaConfigDB } from './PleromaConfigDB.ts'; Deno.test('PleromaConfigDB.getIn', () => { const configDB = new PleromaConfigDB(data.configs as PleromaConfig[]); diff --git a/packages/ditto/utils/PleromaConfigDB.ts b/packages/utils/PleromaConfigDB.ts similarity index 100% rename from packages/ditto/utils/PleromaConfigDB.ts rename to packages/utils/PleromaConfigDB.ts diff --git a/packages/ditto/utils/SimpleLRU.test.ts b/packages/utils/SimpleLRU.test.ts similarity index 90% rename from packages/ditto/utils/SimpleLRU.test.ts rename to packages/utils/SimpleLRU.test.ts index 03fbfe8a..9b7a374b 100644 --- a/packages/ditto/utils/SimpleLRU.test.ts +++ b/packages/utils/SimpleLRU.test.ts @@ -1,4 +1,4 @@ -import { SimpleLRU } from '@/utils/SimpleLRU.ts'; +import { SimpleLRU } from './SimpleLRU.ts'; import { assertEquals, assertRejects } from '@std/assert'; Deno.test("SimpleLRU doesn't repeat failed calls", async () => { diff --git a/packages/ditto/utils/SimpleLRU.ts b/packages/utils/SimpleLRU.ts similarity index 100% rename from packages/ditto/utils/SimpleLRU.ts rename to packages/utils/SimpleLRU.ts diff --git a/packages/ditto/utils/abort.ts b/packages/utils/abort.ts similarity index 100% rename from packages/ditto/utils/abort.ts rename to packages/utils/abort.ts diff --git a/packages/ditto/utils/aes.bench.ts b/packages/utils/aes.bench.ts similarity index 88% rename from packages/ditto/utils/aes.bench.ts rename to packages/utils/aes.bench.ts index 9d8dd3b9..3b46f436 100644 --- a/packages/ditto/utils/aes.bench.ts +++ b/packages/utils/aes.bench.ts @@ -1,6 +1,6 @@ import { generateSecretKey } from 'nostr-tools'; -import { aesDecrypt, aesEncrypt } from '@/utils/aes.ts'; +import { aesDecrypt, aesEncrypt } from './aes.ts'; Deno.bench('aesEncrypt', async (b) => { const sk = generateSecretKey(); diff --git a/packages/ditto/utils/aes.test.ts b/packages/utils/aes.test.ts similarity index 88% rename from packages/ditto/utils/aes.test.ts rename to packages/utils/aes.test.ts index 583b96a2..ee735731 100644 --- a/packages/ditto/utils/aes.test.ts +++ b/packages/utils/aes.test.ts @@ -2,7 +2,7 @@ import { assertEquals } from '@std/assert'; import { encodeHex } from '@std/encoding/hex'; import { generateSecretKey } from 'nostr-tools'; -import { aesDecrypt, aesEncrypt } from '@/utils/aes.ts'; +import { aesDecrypt, aesEncrypt } from './aes.ts'; Deno.test('aesDecrypt & aesEncrypt', async () => { const sk = generateSecretKey(); diff --git a/packages/ditto/utils/aes.ts b/packages/utils/aes.ts similarity index 100% rename from packages/ditto/utils/aes.ts rename to packages/utils/aes.ts diff --git a/packages/ditto/utils/api.ts b/packages/utils/api.ts similarity index 98% rename from packages/ditto/utils/api.ts rename to packages/utils/api.ts index bbb075cd..86998327 100644 --- a/packages/ditto/utils/api.ts +++ b/packages/utils/api.ts @@ -10,8 +10,8 @@ import { type AppContext } from '@/app.ts'; import { RelayError } from '@/RelayError.ts'; import { AdminSigner } from '@/signers/AdminSigner.ts'; import { nostrNow } from '@/utils.ts'; -import { parseFormData } from '@/utils/formdata.ts'; -import { purifyEvent } from '@/utils/purify.ts'; +import { parseFormData } from './formdata.ts'; +import { purifyEvent } from './purify.ts'; /** EventTemplate with defaults. */ type EventStub = TypeFest.SetOptional; diff --git a/packages/ditto/utils/auth.bench.ts b/packages/utils/auth.bench.ts similarity index 76% rename from packages/ditto/utils/auth.bench.ts rename to packages/utils/auth.bench.ts index fbffc857..1d23e91b 100644 --- a/packages/ditto/utils/auth.bench.ts +++ b/packages/utils/auth.bench.ts @@ -1,4 +1,4 @@ -import { generateToken, getTokenHash } from '@/utils/auth.ts'; +import { generateToken, getTokenHash } from './auth.ts'; Deno.bench('generateToken', async () => { await generateToken(); diff --git a/packages/ditto/utils/auth.test.ts b/packages/utils/auth.test.ts similarity index 92% rename from packages/ditto/utils/auth.test.ts rename to packages/utils/auth.test.ts index cf462d5d..27a4535d 100644 --- a/packages/ditto/utils/auth.test.ts +++ b/packages/utils/auth.test.ts @@ -1,7 +1,7 @@ import { assertEquals } from '@std/assert'; import { decodeHex, encodeHex } from '@std/encoding/hex'; -import { generateToken, getTokenHash } from '@/utils/auth.ts'; +import { generateToken, getTokenHash } from './auth.ts'; Deno.test('generateToken', async () => { const sk = decodeHex('a0968751df8fd42f362213f08751911672f2a037113b392403bbb7dd31b71c95'); diff --git a/packages/ditto/utils/auth.ts b/packages/utils/auth.ts similarity index 100% rename from packages/ditto/utils/auth.ts rename to packages/utils/auth.ts diff --git a/packages/ditto/utils/bolt11.test.ts b/packages/utils/bolt11.test.ts similarity index 93% rename from packages/ditto/utils/bolt11.test.ts rename to packages/utils/bolt11.test.ts index 9a9d1238..06e81b68 100644 --- a/packages/ditto/utils/bolt11.test.ts +++ b/packages/utils/bolt11.test.ts @@ -1,5 +1,5 @@ import { assertEquals } from '@std/assert'; -import { getAmount } from '@/utils/bolt11.ts'; +import { getAmount } from './bolt11.ts'; Deno.test('Invoice is invalid', () => { assertEquals(getAmount('hello'), undefined); diff --git a/packages/ditto/utils/bolt11.ts b/packages/utils/bolt11.ts similarity index 100% rename from packages/ditto/utils/bolt11.ts rename to packages/utils/bolt11.ts diff --git a/packages/utils/deno.json b/packages/utils/deno.json new file mode 100644 index 00000000..b5bfdfdf --- /dev/null +++ b/packages/utils/deno.json @@ -0,0 +1,6 @@ +{ + "name": "@ditto/utils", + "exports": { + ".": "./mod.ts" + } +} diff --git a/packages/ditto/utils/favicon.ts b/packages/utils/favicon.ts similarity index 98% rename from packages/ditto/utils/favicon.ts rename to packages/utils/favicon.ts index 999439ac..615b7f68 100644 --- a/packages/ditto/utils/favicon.ts +++ b/packages/utils/favicon.ts @@ -8,7 +8,7 @@ import { Kysely } from 'kysely'; import tldts from 'tldts'; import { nostrNow } from '@/utils.ts'; -import { SimpleLRU } from '@/utils/SimpleLRU.ts'; +import { SimpleLRU } from './SimpleLRU.ts'; let faviconCache: SimpleLRU | undefined; diff --git a/packages/ditto/utils/formdata.test.ts b/packages/utils/formdata.test.ts similarity index 93% rename from packages/ditto/utils/formdata.test.ts rename to packages/utils/formdata.test.ts index 3eaf02aa..184b906e 100644 --- a/packages/ditto/utils/formdata.test.ts +++ b/packages/utils/formdata.test.ts @@ -1,6 +1,6 @@ import { assertEquals, assertThrows } from '@std/assert'; -import { parseFormData } from '@/utils/formdata.ts'; +import { parseFormData } from './formdata.ts'; Deno.test('parseFormData', () => { const formData = new FormData(); diff --git a/packages/ditto/utils/formdata.ts b/packages/utils/formdata.ts similarity index 100% rename from packages/ditto/utils/formdata.ts rename to packages/utils/formdata.ts diff --git a/packages/ditto/utils/html.ts b/packages/utils/html.ts similarity index 100% rename from packages/ditto/utils/html.ts rename to packages/utils/html.ts diff --git a/packages/ditto/utils/instance.ts b/packages/utils/instance.ts similarity index 100% rename from packages/ditto/utils/instance.ts rename to packages/utils/instance.ts diff --git a/packages/ditto/utils/language.test.ts b/packages/utils/language.test.ts similarity index 98% rename from packages/ditto/utils/language.test.ts rename to packages/utils/language.test.ts index 66a26edd..fad12092 100644 --- a/packages/ditto/utils/language.test.ts +++ b/packages/utils/language.test.ts @@ -1,4 +1,4 @@ -import { detectLanguage } from '@/utils/language.ts'; +import { detectLanguage } from './language.ts'; import { assertEquals } from '@std/assert'; Deno.test('Detect English language', () => { diff --git a/packages/ditto/utils/language.ts b/packages/utils/language.ts similarity index 100% rename from packages/ditto/utils/language.ts rename to packages/utils/language.ts diff --git a/packages/ditto/utils/lnurl.ts b/packages/utils/lnurl.ts similarity index 93% rename from packages/ditto/utils/lnurl.ts rename to packages/utils/lnurl.ts index ad2fefa6..0f2163c6 100644 --- a/packages/ditto/utils/lnurl.ts +++ b/packages/utils/lnurl.ts @@ -5,9 +5,9 @@ import { logi } from '@soapbox/logi'; import { safeFetch } from '@soapbox/safe-fetch'; import { JsonValue } from '@std/json'; -import { SimpleLRU } from '@/utils/SimpleLRU.ts'; -import { errorJson } from '@/utils/log.ts'; -import { Time } from '@/utils/time.ts'; +import { SimpleLRU } from './SimpleLRU.ts'; +import { errorJson } from './log.ts'; +import { Time } from './time.ts'; const lnurlCache = new SimpleLRU( async (lnurl, { signal }) => { diff --git a/packages/ditto/utils/log.ts b/packages/utils/log.ts similarity index 100% rename from packages/ditto/utils/log.ts rename to packages/utils/log.ts diff --git a/packages/ditto/utils/lookup.test.ts b/packages/utils/lookup.test.ts similarity index 100% rename from packages/ditto/utils/lookup.test.ts rename to packages/utils/lookup.test.ts diff --git a/packages/ditto/utils/lookup.ts b/packages/utils/lookup.ts similarity index 98% rename from packages/ditto/utils/lookup.ts rename to packages/utils/lookup.ts index d30075e0..e5a67eba 100644 --- a/packages/ditto/utils/lookup.ts +++ b/packages/utils/lookup.ts @@ -8,7 +8,7 @@ import tldts from 'tldts'; import { getAuthor } from '@/queries.ts'; import { bech32ToPubkey } from '@/utils.ts'; -import { resolveNip05 } from '@/utils/nip05.ts'; +import { resolveNip05 } from './nip05.ts'; interface LookupAccountOpts { conf: DittoConf; diff --git a/packages/ditto/utils/media.test.ts b/packages/utils/media.test.ts similarity index 92% rename from packages/ditto/utils/media.test.ts rename to packages/utils/media.test.ts index 39abed23..613bdec9 100644 --- a/packages/ditto/utils/media.test.ts +++ b/packages/utils/media.test.ts @@ -1,6 +1,6 @@ import { assertEquals } from '@std/assert'; -import { getUrlMediaType, isPermittedMediaType } from '@/utils/media.ts'; +import { getUrlMediaType, isPermittedMediaType } from './media.ts'; Deno.test('getUrlMediaType', () => { assertEquals(getUrlMediaType('https://example.com/image.png'), 'image/png'); diff --git a/packages/ditto/utils/media.ts b/packages/utils/media.ts similarity index 100% rename from packages/ditto/utils/media.ts rename to packages/utils/media.ts diff --git a/packages/utils/mod.ts b/packages/utils/mod.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/ditto/utils/nip05.ts b/packages/utils/nip05.ts similarity index 94% rename from packages/ditto/utils/nip05.ts rename to packages/utils/nip05.ts index 3b451fff..b8923e2c 100644 --- a/packages/ditto/utils/nip05.ts +++ b/packages/utils/nip05.ts @@ -5,9 +5,9 @@ import { safeFetch } from '@soapbox/safe-fetch'; import { nip19 } from 'nostr-tools'; import tldts from 'tldts'; -import { errorJson } from '@/utils/log.ts'; -import { SimpleLRU } from '@/utils/SimpleLRU.ts'; -import { DittoConf } from '../../conf/mod.ts'; +import { errorJson } from './log.ts'; +import { SimpleLRU } from './SimpleLRU.ts'; +import { DittoConf } from '../conf/mod.ts'; let nip05Cache: SimpleLRU | undefined; diff --git a/packages/ditto/utils/nip98.ts b/packages/utils/nip98.ts similarity index 98% rename from packages/ditto/utils/nip98.ts rename to packages/utils/nip98.ts index f83fcddb..e4661024 100644 --- a/packages/ditto/utils/nip98.ts +++ b/packages/utils/nip98.ts @@ -5,7 +5,7 @@ import { EventTemplate, nip13 } from 'nostr-tools'; import { decode64Schema } from '@/schema.ts'; import { signedEventSchema } from '@/schemas/nostr.ts'; import { eventAge, findTag, nostrNow } from '@/utils.ts'; -import { Time } from '@/utils/time.ts'; +import { Time } from './time.ts'; /** Decode a Nostr event from a base64 encoded string. */ const decode64EventSchema = decode64Schema.pipe(n.json()).pipe(signedEventSchema); diff --git a/packages/ditto/utils/note.test.ts b/packages/utils/note.test.ts similarity index 98% rename from packages/ditto/utils/note.test.ts rename to packages/utils/note.test.ts index d13ea04c..a706b0a8 100644 --- a/packages/ditto/utils/note.test.ts +++ b/packages/utils/note.test.ts @@ -1,7 +1,7 @@ import { assertEquals } from '@std/assert'; import { eventFixture, testConf } from '@/test.ts'; -import { getMediaLinks, parseNoteContent, stripimeta } from '@/utils/note.ts'; +import { getMediaLinks, parseNoteContent, stripimeta } from './note.ts'; Deno.test('parseNoteContent', () => { const conf = testConf(); diff --git a/packages/ditto/utils/note.ts b/packages/utils/note.ts similarity index 97% rename from packages/ditto/utils/note.ts rename to packages/utils/note.ts index 8c12945c..80ea2951 100644 --- a/packages/ditto/utils/note.ts +++ b/packages/utils/note.ts @@ -5,8 +5,8 @@ import linkify from 'linkifyjs'; import { nip19, nip27 } from 'nostr-tools'; import { MastodonMention } from '@/entities/MastodonMention.ts'; -import { html } from '@/utils/html.ts'; -import { getUrlMediaType, isPermittedMediaType } from '@/utils/media.ts'; +import { html } from './html.ts'; +import { getUrlMediaType, isPermittedMediaType } from './media.ts'; linkify.registerCustomProtocol('nostr', true); linkify.registerCustomProtocol('wss'); diff --git a/packages/ditto/utils/og-metadata.ts b/packages/utils/og-metadata.ts similarity index 96% rename from packages/ditto/utils/og-metadata.ts rename to packages/utils/og-metadata.ts index c0e5756c..4c05c522 100644 --- a/packages/ditto/utils/og-metadata.ts +++ b/packages/utils/og-metadata.ts @@ -3,7 +3,7 @@ import { match } from 'path-to-regexp'; import { MastodonAccount } from '@/entities/MastodonAccount.ts'; import { MastodonStatus } from '@/entities/MastodonStatus.ts'; -import { InstanceMetadata } from '@/utils/instance.ts'; +import { InstanceMetadata } from './instance.ts'; export interface MetadataEntities { status?: MastodonStatus; diff --git a/packages/ditto/utils/outbox.test.ts b/packages/utils/outbox.test.ts similarity index 94% rename from packages/ditto/utils/outbox.test.ts rename to packages/utils/outbox.test.ts index 61a871be..bc9aae96 100644 --- a/packages/ditto/utils/outbox.test.ts +++ b/packages/utils/outbox.test.ts @@ -1,5 +1,5 @@ import { createTestDB, eventFixture } from '@/test.ts'; -import { getRelays } from '@/utils/outbox.ts'; +import { getRelays } from './outbox.ts'; import { assertEquals } from '@std/assert'; Deno.test('Get write relays - kind 10002', async () => { diff --git a/packages/ditto/utils/outbox.ts b/packages/utils/outbox.ts similarity index 100% rename from packages/ditto/utils/outbox.ts rename to packages/utils/outbox.ts diff --git a/packages/ditto/utils/pleroma.ts b/packages/utils/pleroma.ts similarity index 94% rename from packages/ditto/utils/pleroma.ts rename to packages/utils/pleroma.ts index 6950866c..ed3ce089 100644 --- a/packages/ditto/utils/pleroma.ts +++ b/packages/utils/pleroma.ts @@ -3,7 +3,7 @@ import { NSchema as n, NStore } from '@nostrify/nostrify'; import { configSchema } from '@/schemas/pleroma-api.ts'; import { AdminSigner } from '@/signers/AdminSigner.ts'; -import { PleromaConfigDB } from '@/utils/PleromaConfigDB.ts'; +import { PleromaConfigDB } from './PleromaConfigDB.ts'; interface GetPleromaConfigOpts { conf: DittoConf; diff --git a/packages/ditto/utils/purify.ts b/packages/utils/purify.ts similarity index 100% rename from packages/ditto/utils/purify.ts rename to packages/utils/purify.ts diff --git a/packages/ditto/utils/search.test.ts b/packages/utils/search.test.ts similarity index 96% rename from packages/ditto/utils/search.test.ts rename to packages/utils/search.test.ts index d3c92011..6f79088d 100644 --- a/packages/ditto/utils/search.test.ts +++ b/packages/utils/search.test.ts @@ -2,7 +2,7 @@ import { assertEquals } from '@std/assert'; import { sql } from 'kysely'; import { createTestDB } from '@/test.ts'; -import { getPubkeysBySearch } from '@/utils/search.ts'; +import { getPubkeysBySearch } from './search.ts'; Deno.test('fuzzy search works', async () => { await using db = await createTestDB(); diff --git a/packages/ditto/utils/search.ts b/packages/utils/search.ts similarity index 100% rename from packages/ditto/utils/search.ts rename to packages/utils/search.ts diff --git a/packages/ditto/utils/stats.test.ts b/packages/utils/stats.test.ts similarity index 99% rename from packages/ditto/utils/stats.test.ts rename to packages/utils/stats.test.ts index aef66c1c..9bbd9529 100644 --- a/packages/ditto/utils/stats.test.ts +++ b/packages/utils/stats.test.ts @@ -2,7 +2,7 @@ import { assertEquals } from '@std/assert'; import { generateSecretKey, getPublicKey } from 'nostr-tools'; import { createTestDB, genEvent } from '@/test.ts'; -import { countAuthorStats, getAuthorStats, getEventStats, getFollowDiff, updateStats } from '@/utils/stats.ts'; +import { countAuthorStats, getAuthorStats, getEventStats, getFollowDiff, updateStats } from './stats.ts'; Deno.test('updateStats with kind 1 increments notes count', async () => { await using db = await createTestDB(); diff --git a/packages/ditto/utils/stats.ts b/packages/utils/stats.ts similarity index 99% rename from packages/ditto/utils/stats.ts rename to packages/utils/stats.ts index 961a46af..75defeb5 100644 --- a/packages/ditto/utils/stats.ts +++ b/packages/utils/stats.ts @@ -5,7 +5,7 @@ import { Insertable, Kysely, UpdateObject } from 'kysely'; import { SetRequired } from 'type-fest'; import { z } from 'zod'; -import { findQuoteTag, findReplyTag, getTagSet } from '@/utils/tags.ts'; +import { findQuoteTag, findReplyTag, getTagSet } from './tags.ts'; interface UpdateStatsOpts { conf: DittoConf; diff --git a/packages/ditto/utils/tags.test.ts b/packages/utils/tags.test.ts similarity index 100% rename from packages/ditto/utils/tags.test.ts rename to packages/utils/tags.test.ts diff --git a/packages/ditto/utils/tags.ts b/packages/utils/tags.ts similarity index 100% rename from packages/ditto/utils/tags.ts rename to packages/utils/tags.ts diff --git a/packages/ditto/utils/text.ts b/packages/utils/text.ts similarity index 100% rename from packages/ditto/utils/text.ts rename to packages/utils/text.ts diff --git a/packages/ditto/utils/time.test.ts b/packages/utils/time.test.ts similarity index 100% rename from packages/ditto/utils/time.test.ts rename to packages/utils/time.test.ts diff --git a/packages/ditto/utils/time.ts b/packages/utils/time.ts similarity index 100% rename from packages/ditto/utils/time.ts rename to packages/utils/time.ts diff --git a/packages/ditto/utils/unfurl.ts b/packages/utils/unfurl.ts similarity index 98% rename from packages/ditto/utils/unfurl.ts rename to packages/utils/unfurl.ts index 79862c0e..3e0e26e8 100644 --- a/packages/ditto/utils/unfurl.ts +++ b/packages/utils/unfurl.ts @@ -7,7 +7,7 @@ import DOMPurify from 'isomorphic-dompurify'; import { unfurl } from 'unfurl.js'; import { PreviewCard } from '@/entities/PreviewCard.ts'; -import { errorJson } from '@/utils/log.ts'; +import { errorJson } from './log.ts'; async function unfurlCard(conf: DittoConf, url: string, signal: AbortSignal): Promise { try { diff --git a/packages/ditto/utils/upload.ts b/packages/utils/upload.ts similarity index 98% rename from packages/ditto/utils/upload.ts rename to packages/utils/upload.ts index 1dcce807..d9d8fafc 100644 --- a/packages/ditto/utils/upload.ts +++ b/packages/utils/upload.ts @@ -7,7 +7,7 @@ import sharp from 'sharp'; import { AppContext } from '@/app.ts'; import { DittoUpload, dittoUploads } from '@/DittoUploads.ts'; -import { errorJson } from '@/utils/log.ts'; +import { errorJson } from './log.ts'; interface FileMeta { pubkey: string; diff --git a/packages/ditto/utils/zap-split.ts b/packages/utils/zap-split.ts similarity index 100% rename from packages/ditto/utils/zap-split.ts rename to packages/utils/zap-split.ts diff --git a/scripts/admin-event.ts b/scripts/admin-event.ts index 6d483a8c..31caabc0 100644 --- a/scripts/admin-event.ts +++ b/scripts/admin-event.ts @@ -4,7 +4,7 @@ import { TextLineStream } from '@std/streams/text-line-stream'; import { AdminSigner } from '../packages/ditto/signers/AdminSigner.ts'; import { DittoStorages } from '../packages/ditto/DittoStorages.ts'; -import { type EventStub } from '../packages/ditto/utils/api.ts'; +import { type EventStub } from '../packages/utils/api.ts'; import { nostrNow } from '../packages/ditto/utils.ts'; const conf = new DittoConf(Deno.env); diff --git a/scripts/stats-recompute.ts b/scripts/stats-recompute.ts index 5f1d7233..b9e72c94 100644 --- a/scripts/stats-recompute.ts +++ b/scripts/stats-recompute.ts @@ -2,7 +2,7 @@ import { DittoConf } from '@ditto/conf'; import { nip19 } from 'nostr-tools'; import { DittoStorages } from '../packages/ditto/DittoStorages.ts'; -import { refreshAuthorStats } from '../packages/ditto/utils/stats.ts'; +import { refreshAuthorStats } from '../packages/utils/stats.ts'; const conf = new DittoConf(Deno.env); const storages = new DittoStorages(conf);