Commit Graph

1196 Commits

Author SHA1 Message Date
Alex Gleason dcc9d05ee5
auth98: fix nsec flow 2023-09-08 18:29:26 -05:00
Alex Gleason 527e276340
Fix nip98 signing (validate proof), skip validating payload for media requests 2023-09-08 18:22:38 -05:00
Alex Gleason 969d8bfe7f
Add media endpoints, require nip98 proof to upload them 2023-09-08 17:00:07 -05:00
Alex Gleason 2c943872a8
media: enforce a filesize limit on uploads 2023-09-08 16:48:27 -05:00
Alex Gleason acc18adffb
media: return the appropriate Attachment type 2023-09-08 16:15:34 -05:00
Alex Gleason 8ae89462b7
Add a configUploader module to select the uploader based on config 2023-09-08 16:04:55 -05:00
Alex Gleason 34acc99000
Add a precheck file to throw when config is wrong 2023-09-08 15:48:00 -05:00
Alex Gleason 4f57ac0352
uploads: make uploader and media URL configurable 2023-09-08 15:20:57 -05:00
Alex Gleason 014b9f6d29
uploaders: allow deleting files by CID 2023-09-08 15:01:52 -05:00
Alex Gleason c40f10539d
ipfs: make API URL configurable, reorganize config 2023-09-07 19:22:28 -05:00
Alex Gleason c4af44d582
Move s3 to separate uploader module, add ipfs uploader 2023-09-07 16:59:05 -05:00
Alex Gleason 4622b52f78
mediaController: get cid, fix permissions, host on /ipfs 2023-09-06 22:10:28 -05:00
Alex Gleason 3fc60c78d2
Add a mediaController for s3 uploads 2023-09-06 17:55:46 -05:00
Alex Gleason 5f82f4f11b
client: use the same pool as the firehose 2023-09-06 01:18:07 -05:00
Alex Gleason 17c75e6761
Move pool to a separate module (to avoid importing firehose in tests) 2023-09-05 22:00:32 -05:00
Alex Gleason f2ccb5254e
cron: run cleanupEvents on startup 2023-09-05 21:52:16 -05:00
Alex Gleason a69b7f54f8
pipeline: broadcast deletions to all known relays 2023-09-05 21:45:30 -05:00
Alex Gleason e2b88d57d9
pipeline: process kind 5 deletion events 2023-09-05 21:24:59 -05:00
Alex Gleason 22ddc7b1a8
pipeline: remove unnecessary async keyword from trackHashtags 2023-09-05 20:35:58 -05:00
Alex Gleason 48195f02b3
pipeline: don't store event if a deletion for it exists 2023-09-05 20:31:34 -05:00
Alex Gleason 97a3478b1a
cron: change cleanupEvents to every 15 minutes 2023-09-05 17:48:50 -05:00
Alex Gleason a46381849f
db/events: delete FTS rows when deleting events 2023-09-05 17:25:54 -05:00
Alex Gleason a25d6c9755
db: pragma, enable fk constraints, enable autovacuum full 2023-09-05 17:25:14 -05:00
Alex Gleason 02049ed9d1
pipeline: fix isFresh comparison 2023-09-05 17:10:20 -05:00
Alex Gleason 5c02fd0773
db/relays: normalize url before inserting 2023-09-05 16:58:34 -05:00
Alex Gleason 2ff40c8fc5
db/events: rework tags, make event_id a FK to events again, drop value_2 and value_3 2023-09-05 16:55:16 -05:00
Alex Gleason 4708839fd6
db: improve output of migrations, exit on failure 2023-09-05 16:05:02 -05:00
Alex Gleason cdffe42cfd
db/events: delete tags during deleteFilters 2023-09-05 13:23:45 -05:00
Alex Gleason df17f62ecb
db/events: try fixing types in CI? 2023-09-05 12:31:59 -05:00
Alex Gleason aea07fd28a
db/events: fix type error 2023-09-04 22:16:43 -05:00
Alex Gleason 5d19c21f51
cron: delete old remote events every hour 2023-09-04 19:46:39 -05:00
Alex Gleason 08dd5fa4eb
db/events: fix `local: false` filter 2023-09-04 17:17:47 -05:00
Alex Gleason 8ec215402f
db/migrations: fix `down` in 003_events_admin to drop the new "admin" column, not the "relays" table (whoops) 2023-09-04 13:20:07 -05:00
Alex Gleason 25e023aaf2
db/users: add indexes on users.pubkey and users.username 2023-09-04 13:18:11 -05:00
Alex Gleason 561ae9532a
db/events: getFiltersQuery, break to multiple lines for readability 2023-09-04 13:04:20 -05:00
Alex Gleason 1f06035bf2
db/events: getFiltersQuery, improve variable names 2023-09-04 13:03:10 -05:00
Alex Gleason e377d7b3ce
events/db: add a deleteFilters function to delete all events from the local db matching the filters 2023-09-04 12:58:35 -05:00
Alex Gleason 5a3d112396
frontendConfigController: add a #d filter 2023-09-03 19:18:05 -05:00
Alex Gleason 7686371183
Implement frontend configurations 2023-09-03 18:49:45 -05:00
Alex Gleason 3c45a4a3aa
sign: simplify awaitSignedEvent (remove unnecessary conditional, rearrange error, fix crash) 2023-09-02 22:39:35 -05:00
Alex Gleason 93f06fd342
config: preserve query params in Conf.local 2023-09-02 22:38:21 -05:00
Alex Gleason b81091f5da
auth98: requireProof --> requireAdmin 2023-09-02 20:52:17 -05:00
Alex Gleason f7d74c97ca
db/users: add `admin` column 2023-09-02 20:52:02 -05:00
Alex Gleason c8a5da086e
sign: ensure the NIP-46 result matches the template 2023-09-02 20:09:28 -05:00
Alex Gleason 007565b513
eventSchema: ensure the event ID matches its hash 2023-09-02 19:40:28 -05:00
Alex Gleason 7595dfa2e5
auth98: make requireProof obtain the event over NIP-46 2023-09-02 19:33:13 -05:00
Alex Gleason c8d6389132
sign: refactor the unnecessarily complex awaitSignedEvent function 2023-09-02 18:56:42 -05:00
Alex Gleason 61f5acc937
nip98: add a dedicated nip98 module, refactor auth98.ts 2023-09-02 18:32:01 -05:00
Alex Gleason 4c41ce8c0a
@/nip05.ts --> @/utils/nip05.ts 2023-09-02 13:43:01 -05:00
Alex Gleason 4ff27ddc04
Add /api/v1/favourites 2023-09-01 13:14:27 -05:00
Alex Gleason 54481ab96b
Fix unfurl timeout 2023-08-30 21:40:52 -05:00
Alex Gleason b9fc663db4
Switch to my fork of deno-sqlite with FTS support 2023-08-30 17:29:45 -05:00
Alex Gleason 3cd6b6f3f3
db/events: index profiles in search 2023-08-30 17:09:44 -05:00
Alex Gleason e976f51d55
schemas/nostr: add `search` key to filters 2023-08-30 16:19:21 -05:00
Alex Gleason af76d8cbae
Bump kysely-deno-sqlite to v1.0.1, remove `as any` from database type 2023-08-30 16:12:39 -05:00
Alex Gleason b7b5e67118
search: refactor/cleanup searchController 2023-08-30 15:40:18 -05:00
Alex Gleason 080cfe817b
search: support account_id query param 2023-08-30 15:31:07 -05:00
Alex Gleason 799a9c1e9a
search: support searching by account_id 2023-08-30 15:22:39 -05:00
Alex Gleason 8079679f18
search: support MastoAPI params, improve performance, improve value lookup 2023-08-30 15:02:28 -05:00
Alex Gleason 675010ddec
search: fix FTS special characters, optimize search 2023-08-30 14:03:16 -05:00
Alex Gleason df14ff66bc
search: search use FTS to search for statuses 2023-08-30 12:16:04 -05:00
Alex Gleason 5e9a3dd8d1
db/events: only index kind 1 events in search 2023-08-30 12:07:49 -05:00
Alex Gleason 02e1a4ce58
db/events: support "search" filter 2023-08-30 12:04:45 -05:00
Alex Gleason 9b67d7a7c0
Add followers/following endpoints
Fixes https://gitlab.com/soapbox-pub/ditto/-/issues/69
2023-08-30 10:27:45 -05:00
Alex Gleason 728f0bd657
accounts: followers/following & status counts
Fixes https://gitlab.com/soapbox-pub/ditto/-/issues/68
2023-08-30 09:50:51 -05:00
Alex Gleason b27b84e3fb
Add favourited_by and reblogged_by controllers 2023-08-29 18:08:00 -05:00
Alex Gleason 9b761ff960
firehose: apparently the `since` filter is essential 2023-08-29 16:40:23 -05:00
Alex Gleason ad823e587a
accounts: remove unecessary sort call 2023-08-29 15:29:12 -05:00
Alex Gleason d01dbcbfee
relay: add support for NIP-45 COUNT 2023-08-29 15:24:07 -05:00
Alex Gleason fc1ed59002
firehose: use `limit: 0` instead of `since` 2023-08-29 14:53:12 -05:00
Alex Gleason 9d714b6173
Pass viewerPubkey to toStatus in more places 2023-08-29 14:48:28 -05:00
Alex Gleason 2ee29bf1e2
Make favourites stick, refactor some async logic in threads 2023-08-29 14:44:59 -05:00
Alex Gleason d4612d5f21
toStatus: make status counters work (local db only) 2023-08-29 14:13:41 -05:00
Alex Gleason 95761e2eef
schema: add comments 2023-08-29 13:28:16 -05:00
Alex Gleason 2841d4f399
queries: remove unused import 2023-08-29 13:25:58 -05:00
Alex Gleason 77b09baa8c
db/events: don't throw on duplicate events 2023-08-29 13:20:21 -05:00
Alex Gleason ebd933126a
webfinger: fix import order 2023-08-29 13:14:03 -05:00
Alex Gleason d21ec6d241
apps: use AppController type 2023-08-29 13:04:38 -05:00
Alex Gleason 4d211d637e
timelines: add DRY renderStatuses function 2023-08-29 13:01:47 -05:00
Alex Gleason 4216a7931a
Add `paginated` helper function, DRY pagination code 2023-08-29 12:55:00 -05:00
Alex Gleason ce4a330812
Rename timeline controllers, homeController --> homeTimelineController, etc 2023-08-29 12:41:14 -05:00
Alex Gleason ccb8c534ca
Add hashtag timeline 2023-08-28 19:51:21 -05:00
Alex Gleason a075c533e6
Make notifications kind of work 2023-08-28 15:56:38 -05:00
Alex Gleason 2029c73eab
requireAuth --> requirePubkey 2023-08-28 15:38:32 -05:00
Alex Gleason dfbad6b2e7
Add boilerplate notifications controller, fix import order in app.ts 2023-08-28 14:23:27 -05:00
Alex Gleason e18aa878bb
streaming: reorder tag params 2023-08-28 13:37:15 -05:00
Alex Gleason e6d1494a10
streaming: make user stream mostly work, in a kind of hacky way 2023-08-28 13:34:15 -05:00
Alex Gleason e8a7dfef2b
Remove uneeded session ID from auth token 2023-08-28 13:00:00 -05:00
Alex Gleason f25284daa9
streaming: support hashtag timeline 2023-08-28 12:42:28 -05:00
Alex Gleason 2e8b26cf4f
Remove legacy stream.ts module 2023-08-27 10:07:13 -05:00
Alex Gleason 320d2f493e
change .positive() to .nonnegative() !!! 2023-08-26 23:13:48 -05:00
Alex Gleason 0a9b53bbc1
sign: fix parsing connect response from string to JSON 2023-08-26 22:49:32 -05:00
Alex Gleason 655004e775
Rework web signer to use NIP-46 events 2023-08-26 18:03:59 -05:00
Alex Gleason 1806cf2286
filter: treat the admin pubkey as local 2023-08-26 17:31:52 -05:00
Alex Gleason 9cd1ca1861
streaming: don't forget to close the subscription when the socket closes 2023-08-26 15:57:51 -05:00
Alex Gleason c13b7f4af7
subs: allow any object in place of the socket 2023-08-26 15:55:16 -05:00
Alex Gleason 67bba508af
utils/web: make `tags` optional 2023-08-26 15:22:49 -05:00
Alex Gleason 1b2a486c65
pipeline: don't store ephemeral events 2023-08-26 13:40:10 -05:00
Alex Gleason 2aefdc4bd1
kinds: improve detection of legacy kinds 2023-08-26 13:25:32 -05:00
Alex Gleason fdc39297fd
Add kinds module to classify events by kind 2023-08-26 13:18:58 -05:00
Alex Gleason 63def1d62c
utils: add return types (to improve readability) 2023-08-26 12:58:17 -05:00
Alex Gleason 7570b0dee4
utils: new Date().getTime() --> Date.now() 2023-08-26 12:56:07 -05:00
Alex Gleason e17111a859
utils/web: PendingEvent --> EventStub 2023-08-26 12:52:24 -05:00
Alex Gleason 60cecafdb5
Remove admin.ts, move to sign.ts, add createAdminEvent function 2023-08-26 12:48:08 -05:00
Alex Gleason 3c279175bc
instance: actually, put all this under a nostr key 2023-08-26 12:28:25 -05:00
Alex Gleason baf4c00fee
instance: add urls.nostr_relay and pubkey properties to instance 2023-08-26 12:01:46 -05:00
Alex Gleason 887c68f052
config: add comments to all config options 2023-08-26 11:55:16 -05:00
Alex Gleason 9da03aa053
streaming: socket.addEventListener('open', ...) --> socket.onopen, etc 2023-08-25 17:17:26 -05:00
Alex Gleason a93d77c851
streaming: add `stream` param to streaming events 2023-08-25 16:17:45 -05:00
Alex Gleason b60e84d29b
relay: only send if socket is open 2023-08-25 15:09:16 -05:00
Alex Gleason f7cd67c572
Make MastoAPI streaming work for public feeds 2023-08-25 14:59:37 -05:00
Alex Gleason d1117f5513
relay: improve variable names in handleReq 2023-08-25 13:42:58 -05:00
Alex Gleason c18d7b952f
Move filter types into filter.ts 2023-08-25 13:38:21 -05:00
Alex Gleason baace5ea2d
Refactor streaming to use async iterators 2023-08-25 13:35:20 -05:00
Alex Gleason 00c531bbff
relay: close sub when socket is closed 2023-08-24 18:43:14 -05:00
Alex Gleason f9de6932ac
utils: remove unused import 2023-08-24 17:42:28 -05:00
Alex Gleason 2f7914f044
pipeline: skip previously encountered events 2023-08-24 17:39:24 -05:00
Alex Gleason a0dff12ca0
pipeline: don't stream events older than 10 seconds 2023-08-24 17:26:46 -05:00
Alex Gleason f1c465beea
pipeline: optimize database calls 2023-08-24 17:16:44 -05:00
Alex Gleason 658dd397f5
relay: respect "local: true" filter 2023-08-24 15:28:13 -05:00
Alex Gleason a676b71d23
relay: make Nostr streaming work 2023-08-23 23:25:38 -05:00
Alex Gleason bcfc3e2414
Use createEvent in more places 2023-08-19 22:25:45 -05:00
Alex Gleason a82ae40c43
db/events: don't add tags to query unless they exist 2023-08-19 15:26:41 -05:00
Alex Gleason 98b6a4b222
Increase NIP-05 lookup timeout to 2s 2023-08-19 14:56:40 -05:00
Alex Gleason f198779ebe Merge branch 'sync' into 'develop'
Sync the user on verify_credentials

Closes #11

See merge request soapbox-pub/ditto!17
2023-08-19 19:09:09 +00:00
Alex Gleason 23928c0024
Move hono-related functions until utils/web 2023-08-19 14:05:08 -05:00
Alex Gleason eb4aebedd7
Sync the user on verify_credentials
Fixes https://gitlab.com/soapbox-pub/ditto/-/issues/11
2023-08-19 13:57:17 -05:00
Alex Gleason c08c801e71
Make following work 2023-08-19 13:37:44 -05:00
Alex Gleason b087d08306
Make the local timeline correctly filter only local users 2023-08-19 13:01:05 -05:00
Alex Gleason c37dd2c2b5
db/events: skip undefined filter values 2023-08-19 12:59:22 -05:00
Alex Gleason fecd69bf8f
mixer: don't use the client pool for local filters 2023-08-19 12:38:20 -05:00
Alex Gleason 05a7a773fe
getFilters: return immediately if filters are empty 2023-08-19 12:37:42 -05:00
Alex Gleason 719b703e7c
client: remove `publish` function, create statuses through pipeline 2023-08-17 20:54:11 -05:00
Alex Gleason 0158a6979e
Publish events through pipeline 2023-08-17 20:45:50 -05:00
Alex Gleason 85345bc157
firehose: catch pipeline crash 2023-08-17 20:28:23 -05:00
Alex Gleason 0f70f5c76f
Add a RelayError class, improve relay error handling 2023-08-17 20:24:16 -05:00
Alex Gleason dc49c305bd
Move isLocallyFollowed to queries.ts 2023-08-17 19:32:05 -05:00
Alex Gleason 2011ca6e1d
pipeline: remove redundant console.log 2023-08-17 18:08:05 -05:00
Alex Gleason 45abaf14a4
pipeline: refactor, use pipeline from relay 2023-08-17 18:07:25 -05:00
Alex Gleason 51881efde0
Push events from the client through the pipeline 2023-08-17 16:48:58 -05:00
Alex Gleason 87c67c0a39
Add pipeline module 2023-08-17 16:47:22 -05:00
Alex Gleason 299a1a0db0
Refactor some code that uses getFilters to import the whole module under a namespace 2023-08-17 15:41:27 -05:00
Alex Gleason 4f9b5c1431
statusController: remove unnecessary "as Event" 2023-08-17 14:57:46 -05:00
Alex Gleason 4f37a1b9f8
queries: don't unnecessarily sort things 2023-08-17 14:55:00 -05:00
Alex Gleason 7330cd10e2
Refactor getEvent to take an opts object 2023-08-17 14:51:49 -05:00
Alex Gleason 054a399f23
queries: reduce getFollows timeout to 1s 2023-08-17 13:19:36 -05:00
Alex Gleason c516f007a5
queries: remove unnecessary "as Event" assertions 2023-08-17 13:18:46 -05:00
Alex Gleason 5a27d791e3
queries: make getFeed accept a pubkey instead of event3 2023-08-17 13:15:47 -05:00
Alex Gleason 870a6f5261
Add queries module for getting events for certain application needs 2023-08-17 13:12:38 -05:00
Alex Gleason a35bc1eef3
db/events: use opts.limit 2023-08-16 21:58:46 -05:00
Alex Gleason c15194020f
Delete event.ts, use nostr-tools types 2023-08-16 21:53:51 -05:00
Alex Gleason 5515c40df3
Remove deprecated getFilter (singular) functions 2023-08-16 21:41:18 -05:00
Alex Gleason 96641a6fa0
Move limit to GetFilterOpts 2023-08-16 21:38:21 -05:00
Alex Gleason bbaf1cb012
mixer: pass opts through to all getFilters functions 2023-08-16 21:21:29 -05:00
Alex Gleason d4721fb82d
Add mixer module to combine results from DB and pool 2023-08-16 16:12:27 -05:00
Alex Gleason 59b7a3eed8
db/events: perform multiple filters with one union query, greatly simplify logic 2023-08-16 15:32:02 -05:00
Alex Gleason 4602b85afe
db/events: remove unnecessary overloads 2023-08-16 12:57:02 -05:00
Alex Gleason 8f45f3a7ad
Move DittoFilter to @/types.ts, refactor db/events query 2023-08-16 12:54:17 -05:00
Alex Gleason 882a3fe203
Use only "active" relays in the pool 2023-08-16 08:28:52 -05:00
Alex Gleason a0769d7c92
db/relays: add `active` column 2023-08-15 19:08:38 -05:00
Alex Gleason 92f5bea891
db/relays: add "domain" column 2023-08-15 18:59:49 -05:00
Alex Gleason 2e983154bb
db/relays: reformat 2023-08-14 20:41:20 -05:00
Alex Gleason 3da30553cb
firehose: accept kind 10002 events 2023-08-14 19:16:49 -05:00
Alex Gleason 875fcfb09d
firehose: nown --> known 2023-08-14 19:01:56 -05:00
Alex Gleason 45a3e2974e
firehose: expand criteria, improve logging 2023-08-14 19:01:28 -05:00
Alex Gleason b11677573b
db/relays: skip if values are empty 2023-08-14 19:00:54 -05:00
Alex Gleason e3ade42f58
Added script to populate relays from external source 2023-08-14 18:46:35 -05:00
Alex Gleason f13616a740
Bump kysely-deno-sqlite to v1.0.0 (no changes) 2023-08-14 18:27:30 -05:00
Alex Gleason 3b4bfb1d90
Merge remote-tracking branch 'origin/develop' into firehose 2023-08-14 18:25:28 -05:00
Alex Gleason 6c944d40f1
Bump deno-safe-fetch to v1.0.0 2023-08-14 18:13:43 -05:00
Alex Gleason 3a2722e190
Merge remote-tracking branch 'origin/develop' into firehose 2023-08-14 18:06:27 -05:00
Alex Gleason 1ed6fa54df
Use safeFetch implementation 2023-08-14 18:03:24 -05:00
Alex Gleason cd5cf96886
firehose: update comment 2023-08-14 15:39:21 -05:00
Alex Gleason 16ba224124
Get rid of DITTO_RELAY, derive from LOCAL_DOMAIN 2023-08-14 14:40:30 -05:00
Alex Gleason 78f638e633
Add relays to database and start tracking them 2023-08-14 14:11:28 -05:00
Alex Gleason 4a47c25f1e
Add NIP-11 schema 2023-08-14 12:29:54 -05:00
Alex Gleason 1b8bb78717
Rename loopback to firehose 2023-08-14 11:02:09 -05:00
Alex Gleason 007f464d31
db/events: fix import order 2023-08-12 20:04:19 -05:00
Alex Gleason 9da4fb2bba
db/events: add comments 2023-08-12 15:45:58 -05:00
Alex Gleason 4c8a685528
relay: allow local users to post to the relay 2023-08-12 15:24:33 -05:00
Alex Gleason a35ea6ab5d
relay: restrict to local events unless the filter is already narrow 2023-08-12 15:14:43 -05:00
Alex Gleason 8e47c9dda2
relay: refactor into smaller functions 2023-08-12 15:07:07 -05:00
Alex Gleason b2f538ed94
Relay: improve types, DRY 2023-08-12 14:41:07 -05:00
Alex Gleason 075da543b0
Make relay only return local events 2023-08-12 14:32:57 -05:00
Alex Gleason 3593d5420d
Relay: limit to 100 events per filter 2023-08-12 14:12:53 -05:00
Alex Gleason b852111ec5
Fix getFilters overload order 2023-08-12 13:57:20 -05:00
Alex Gleason 808e8941b6
Relay: make REQ work (doesn't stream yet) 2023-08-12 13:40:21 -05:00
Alex Gleason e2adc7ad1a
Remove unused MetaContent type 2023-08-12 11:49:33 -05:00
Alex Gleason e999d693d0
Rename hexIdSchema back to nostrIdSchema 2023-08-12 11:48:49 -05:00
Alex Gleason 80775d8bf0
Move more Nostr schema stuff into schemas/nostr.ts 2023-08-12 11:48:11 -05:00
Alex Gleason 893542cf58
Reorganize some nostr schema code 2023-08-12 11:30:57 -05:00
Alex Gleason 1f470ffe2d
Add nostr schema for parsing filters 2023-08-11 19:55:16 -05:00
Alex Gleason 9cca801c80
Order tag conditionals alphabetically, improve logic 2023-08-11 12:14:39 -05:00
Alex Gleason 48343c8035
Add events test 2023-08-10 14:56:27 -05:00
Alex Gleason 63772022cf
deno fmt 2023-08-10 14:56:14 -05:00
Alex Gleason 5f37a68b9f
Bump std to v0.198.0 2023-08-10 14:08:47 -05:00
Alex Gleason 14eb3cb43b
Let DB_PATH be configurable 2023-08-10 13:37:56 -05:00
Alex Gleason 8ebd85b760
Improve tag indexing logic 2023-08-09 20:34:21 -05:00
Alex Gleason f127aa7406
Also track events from local users 2023-08-09 14:24:49 -05:00
Alex Gleason 3b3947ea61
Only track events which are locally followed 2023-08-09 14:06:57 -05:00
Alex Gleason 2d2157293c
Try this? 2023-08-09 02:03:18 -05:00
Alex Gleason a1c8d3352f
Simplify 2023-08-09 02:01:27 -05:00
Alex Gleason ad112ff9a6
Use explicit return type for getFilterQuery 2023-08-09 01:53:50 -05:00
Alex Gleason 55c957d10b
Fix type error 2023-08-09 01:28:38 -05:00
Alex Gleason 9671a77bee
Add isFollowed function 2023-08-09 01:18:43 -05:00
Alex Gleason 0bfd9d83c1
Add getFilters function 2023-08-09 00:22:20 -05:00
Alex Gleason b408838ae0
Support querying by tags 2023-08-08 23:54:17 -05:00
Alex Gleason 6c96240602
Remove foreign key constraint from tags.event_id 2023-08-08 22:35:43 -05:00
Alex Gleason cd68da5b93
Minor refactoring 2023-08-08 19:31:14 -05:00
Alex Gleason 295b16e943
Add a very nice getFilter function 2023-08-08 15:35:37 -05:00
Alex Gleason 97a250c1f7
Add kysely migrations 2023-08-07 01:47:58 -05:00
Alex Gleason eb78a213f6
deno lint 2023-08-07 00:51:11 -05:00
Alex Gleason 4cbdda401a
Remove unused builder.ts 2023-08-07 00:50:31 -05:00
Alex Gleason 3cb5f91d3b
Refactor db.ts to use kysely statements 2023-08-07 00:50:12 -05:00
Alex Gleason ecc9db86dd
Import kysely-deno-sqlite as a dep 2023-08-06 23:30:46 -05:00
Alex Gleason 7c2f290775
Refactor kysely lib into separate files 2023-08-06 21:57:26 -05:00
Alex Gleason ed896278e0
fix lint 2023-08-06 21:27:34 -05:00
Alex Gleason 465a3db501
kysely adapter pretty much working! 2023-08-06 20:23:31 -05:00
Alex Gleason d799075657
Get Kysely adapter almost working... 2023-08-06 20:14:11 -05:00
Alex Gleason 8ceb63fc89
Try storing events in new database 2023-08-06 15:03:29 -05:00
Alex Gleason 91eac97d5c
Preliminary sqlite db setup 2023-08-06 12:54:00 -05:00
Alex Gleason dc6b52f6d8
Upgrade deps 2023-08-04 14:53:48 -05:00
Alex Gleason 8ee1a0d888
Load dotenv in config.ts, ignore .env.defaults and .env.example 2023-08-04 14:17:50 -05:00
Alex Gleason e58e11e425
Upgrade dotenv to 0.197.0 2023-08-04 14:13:58 -05:00
Alex Gleason f2a3f285fa
Use Deno.serve instead of deprecated "serve" from deno_std 2023-08-04 14:11:13 -05:00
Alex Gleason 97d2298178
toActor: don't require the nip05
Related: https://gitlab.com/soapbox-pub/ditto/-/issues/30
2023-07-27 13:27:53 -05:00
Alex Gleason b52694679f
actorController: refactor notFound 2023-07-27 11:03:46 -05:00
Alex Gleason 819ae61bca
Add actorController 2023-07-27 10:36:19 -05:00
Alex Gleason 4e6b9f4328
Merge remote-tracking branch 'origin/develop' into actor 2023-07-27 09:57:52 -05:00
Alex Gleason c251b51803
Trends: add some useful comments for later 2023-07-26 17:30:17 -05:00
Alex Gleason bc3a96eeed
Refactor trending tags history, make it more correct 2023-07-26 17:18:21 -05:00
Alex Gleason f8d46cae58
Trends: fill in empty tag histories
Fixes https://gitlab.com/soapbox-pub/ditto/-/issues/29
2023-07-26 15:40:29 -05:00
Alex Gleason 89b98ae77a
Fix tag history date 2023-07-26 14:51:57 -05:00
Alex Gleason 14e60048a6
loopback: use RelayPool instead of nostr-tools just because it doesn't die so often 2023-07-26 12:54:06 -05:00
Alex Gleason 7eedeef2b4
Track up to 5 tags max per post 2023-07-26 09:40:52 -05:00
Alex Gleason c88e58344f
Improve tag history 2023-07-25 23:21:42 -05:00
Alex Gleason 5b536040ce
Minor logging tweaks 2023-07-25 20:55:12 -05:00
Alex Gleason ad48e4a787
Trends: add limit param, fix order 2023-07-25 20:40:31 -05:00
Alex Gleason 1a860adde7
Support tag history 2023-07-25 20:26:49 -05:00
Alex Gleason 7c8aa88069
Trends: track based on the event's created_at date, instead of whenever the row was inserted 2023-07-25 18:35:07 -05:00
Alex Gleason 79ec5dd4e0
Refactor loopback.ts 2023-07-25 18:28:53 -05:00
Alex Gleason 33f87822d4
Trends: support author threshold (default: 3) 2023-07-25 18:04:00 -05:00
Alex Gleason 969bc1fcba
TrendsDB: cleanup on construction 2023-07-25 17:49:42 -05:00
Alex Gleason cbb294dbc2
Trends: support `limit` param 2023-07-25 17:44:38 -05:00
Alex Gleason 48b7310d52
Trends: clean up old tag usages 2023-07-25 17:33:16 -05:00
Alex Gleason e8df411834
Trends: also track total tag usages 2023-07-25 17:19:31 -05:00
Alex Gleason 1d67181e52
Add trends controller... and it kind of works! 2023-07-25 17:07:09 -05:00
Alex Gleason 11f21e3922
Improve TrendsDB, add loopback script, almost ready to do something? 2023-07-25 15:30:58 -05:00
Alex Gleason 3bdde98f8f
TrendsDB: fix parameterized queries 2023-07-25 12:10:37 -05:00
Alex Gleason 9ebf83af5d
Add preliminary TrendsDB module 2023-07-25 12:07:34 -05:00
Alex Gleason 2d5f9db5c3
Use 2048 bit RSA, because it's more secure and won't have the same performance penalty as on the bridge 2023-07-23 11:15:52 -05:00
Alex Gleason f8674ed053
Add RSA key to actors, use LRU cache 2023-07-13 22:00:27 -05:00
Alex Gleason e5082ed805
transmogrify --> transformers 2023-07-13 20:47:09 -05:00
Alex Gleason 97e6f1385c
Move transmute into transmogrify directory 2023-07-13 20:23:04 -05:00
Alex Gleason 0d4b9e416c
Copy some ActivityPub conversion code from Mostr 2023-07-13 19:50:16 -05:00
Alex Gleason 8fa6ac0a4c
Add nodeinfo 2023-07-09 20:32:45 -05:00
Alex Gleason 8894bb5513
HostMeta: pretty xml 2023-07-09 18:58:08 -05:00
Alex Gleason 19d7d1ae52
Move host-meta to its own file 2023-07-09 18:50:47 -05:00
Alex Gleason be6aa89c39
Rename Conf.url() to Conf.local(), replace it with a URL of localDomain 2023-07-09 18:26:33 -05:00
Alex Gleason 5ec40f285d
Webfinger: actually, remove nostr lookup (this is bloat) 2023-07-09 18:16:20 -05:00
Alex Gleason 60cd92384d
Webfinger: reorganize more 2023-07-09 18:10:12 -05:00
Alex Gleason 9d6216aff7
Clean up the webfingerController a bit 2023-07-09 17:38:39 -05:00
Alex Gleason da9bea7560
Webfinger: fix resource parameter 2023-07-09 17:21:38 -05:00
Alex Gleason bf23afdce0
Webfinger: support nostr URI, fix resource parsing 2023-07-09 17:11:26 -05:00
Alex Gleason cf78b721f5
Implement Webfinger 2023-07-09 16:08:49 -05:00
Alex Gleason 215ff85b6d
Add Conf.url() function for producing local absolute URLs 2023-07-09 14:23:02 -05:00
Alex Gleason a3323a2618
Simplify \w+ regex usage 2023-07-09 14:22:18 -05:00
Alex Gleason 0e15e174c5
Add nostr.json (NIP-05) 2023-07-09 12:55:37 -05:00
Alex Gleason 7808565d71
User: enforce {1,30} character limit on username 2023-07-09 12:30:04 -05:00
Alex Gleason c93aa5b314
Switch from Dongoose to Pentagon instead of the db 2023-07-09 12:27:10 -05:00
Alex Gleason 505b9db409
Try adding Dongoose and a users table 2023-07-09 11:47:19 -05:00
Alex Gleason fb9bb284db
Fix crash with invalid nip98 base64 2023-07-08 21:01:49 -05:00
Alex Gleason 4e68e3868f
Prevent cyclical import of Time module 2023-07-08 20:01:10 -05:00
Alex Gleason 028ff27c49
Use new Time module in more places 2023-07-08 19:54:27 -05:00
Alex Gleason d7d5057617
Support nip98 auth 2023-07-08 18:41:11 -05:00
Alex Gleason c80a9e5d9a
paginationSchema: fix problem with nostrNow() being called only at startup 2023-07-08 15:21:28 -05:00
Alex Gleason cc751f03a7
Refactor to use nostrDate() and nostrNow() 2023-07-08 15:04:50 -05:00
Alex Gleason bdf8e9a61d
Return an error for POST /api/v1/accounts 2023-07-08 11:20:10 -05:00
Alex Gleason b7ecc609de
publicController: return early if there are no events 2023-07-07 15:15:26 -05:00
Alex Gleason d4eef9c2af
Add public timeline, fix limit param 2023-07-07 15:07:59 -05:00
Alex Gleason cacf51ea36
Fix spoiler_text type 2023-07-02 14:13:14 -05:00
Alex Gleason 07b406c25c
Handle CW/subject tags in render, fix schema for status create params 2023-07-02 13:49:41 -05:00
Alex Gleason 4edebaa105
createStatusController: handle most request params 2023-07-02 13:28:58 -05:00
Alex Gleason 6a20df2704
createStatusController: prevent non-public posts 2023-07-02 01:13:17 -05:00
Alex Gleason 164e7259e0
accountStatusesController: support `tagged` query param 2023-06-11 16:04:42 -05:00
Alex Gleason 4bcf9c171c
accountStatusesController: support exclude_replies 2023-06-11 15:47:55 -05:00
Alex Gleason 860b653892
Allow users to update their profile 2023-06-11 14:41:16 -05:00
Alex Gleason 009747105d
Add boilerplate frontend_configurations controller 2023-06-10 23:10:27 -05:00
Alex Gleason 39b75d7f95
deno fmt 2023-06-10 23:02:55 -05:00
Alex Gleason 75135c62a4
Add admin signing module 2023-06-10 23:00:10 -05:00
Alex Gleason b5643c4aba
Refactor config to use a better interface 2023-06-10 17:15:08 -05:00
Alex Gleason 8a62cb604d
Support pagination on user profile 2023-06-09 19:22:38 -05:00
Alex Gleason 75a7a0a2ff
Bump nostr-tools version 2023-06-09 16:41:25 -05:00
Alex Gleason 265a97a191
Sanitize oembed html 2023-05-27 16:40:18 -05:00
Alex Gleason 74024e36b6
Support OAuth 'client_credentials' grant type, improve Mastodon API compat 2023-05-24 11:19:02 -05:00
Alex Gleason b0c58bff70
Remove unused handler.ts file 2023-05-23 20:52:21 -05:00
Alex Gleason 161c77b85d
Streaming: parse stream channel param 2023-05-20 23:47:51 -05:00
Alex Gleason da6e31c647
Validate event signing, make it more Mastodonic 2023-05-20 21:16:22 -05:00
Alex Gleason ec5e0ed330
Streaming: refactor, add unsubscribeAll method 2023-05-20 20:23:01 -05:00
Alex Gleason 3ffad1df29
Build a websocket topics framework 2023-05-20 19:39:05 -05:00
Alex Gleason 02160f8c9e
credentialsController --> verifyCredentialsController 2023-05-20 14:44:18 -05:00
Alex Gleason f3e42cc6a7
Add a UUID to auth tokens for private websocket event signing 2023-05-20 14:34:13 -05:00
Alex Gleason 9500ceee7c
Upgrade nostr-tools, fix BECH_32_REGEX imports 2023-05-20 12:28:12 -05:00
Alex Gleason 91bc0549c7
sign: 504 --> 408 2023-05-13 21:25:43 -05:00
Alex Gleason c14ebe6631
sign: only add stream if nostr=true on the user stream (still subject to change) 2023-05-13 21:05:55 -05:00
Alex Gleason ce02f7d56c
Update streaming comments 2023-05-13 20:16:44 -05:00
Alex Gleason 9ff5e7c738
Websocket signing kind of works!! 2023-05-13 19:48:08 -05:00
Alex Gleason 8ba456a100
streaming: establish WebSocket connection 2023-05-13 17:41:21 -05:00
Alex Gleason a766449ba6
Let searchController look up accounts 2023-05-13 14:45:13 -05:00
Alex Gleason 017a34d5d4
Stub out missing Elk endpoints 2023-05-13 14:27:49 -05:00
Alex Gleason ab1bb3854a
Return empty array for public timeline 2023-05-12 16:27:52 -05:00
Alex Gleason 45807e29de
Fix login with Elk 2023-05-12 16:17:02 -05:00
Alex Gleason cfa7498feb
Upgrade unfurl, fixes crashing 2023-05-12 16:12:35 -05:00
Alex Gleason 837a3ae1dd
Support custom emojis in statuses 2023-05-11 23:49:32 -05:00
Alex Gleason d109043440
Fix /api/v1/accounts/lookup nip05 2023-05-11 23:39:25 -05:00
Alex Gleason a21ad4caec
Support custom emojis in usernames 2023-05-11 23:39:10 -05:00
Alex Gleason 1ba46dd7a3
Truncate npub username 2023-05-11 22:34:56 -05:00
Alex Gleason ef5bfb79f0
buildInlineRecipients: delete extra space when there are no inline mentions 2023-05-11 20:12:05 -05:00
Alex Gleason 7820f88859
timelines: bail early if there are no events 2023-05-11 20:11:00 -05:00
Alex Gleason af5420222b
Add recepients-inline for better Mastodon compatibility 2023-05-08 18:19:45 +02:00
Alex Gleason 8d021865c6
Don't log nip05 cache 2023-05-07 16:59:36 -05:00
Alex Gleason 1271e36f7e
Throw a user-friendly error when a private key isn't provided 2023-05-07 15:43:38 -05:00
Alex Gleason 8f65939f1c
OAuth form improvements, support NIP-07 2023-05-07 15:29:27 -05:00
Alex Gleason d825f9d7cb
Yo dawg I heard u like pools 2023-05-07 12:59:55 -05:00
Alex Gleason 4993b4ca52
Support favourites 2023-05-07 12:32:24 -05:00
Alex Gleason 6e09e6f9e5
Fix NIP-05 cache 2023-05-07 11:44:22 -05:00
Alex Gleason af9f376ad0
Verify NIP05's with cache, fixes #1 2023-05-06 22:29:41 -05:00
Alex Gleason f567acb58f
Cache rich media cards for 12 hours 2023-05-06 20:30:11 -05:00
Alex Gleason 78b1c24ee0
card: sane defaults 2023-05-06 20:09:33 -05:00
Alex Gleason b6ce22cfaf
Unfurl card in link previews 2023-05-06 19:58:41 -05:00
Alex Gleason 2fff0ed879
First pass linkifying status content and rendering attachments 2023-05-06 15:17:50 -05:00
Alex Gleason 0c71b5a696
Try Deno's experimental KV as a cache 2023-05-03 22:15:18 -05:00
Alex Gleason 9539eb5055
Try to make relationshipsController reflect following 2023-05-03 21:56:22 -05:00
Alex Gleason 192ee7f76d
Make getFilter return a pure event object instead of the class from nostr-relaypool 2023-05-03 21:54:22 -05:00
Alex Gleason e3dca47241
Extend getFollows timeout 2023-05-03 21:53:36 -05:00
Alex Gleason 3880fdd61c
accountStatusesController: sort results by timestamp 2023-05-03 15:33:54 -05:00
Alex Gleason 502af2cd48
Return first page of statuses in profile 2023-05-03 15:22:24 -05:00
Alex Gleason 6fa897145e
Include source property on own account 2023-05-02 13:58:45 -05:00
Alex Gleason e93fcdc643
Add default banner to account 2023-04-30 23:31:30 -05:00
Alex Gleason 8b3eab80b3
Add email field to /api/v1/instance 2023-04-30 23:27:29 -05:00
Alex Gleason 0a12bbb42f
Refactor client code, hope for the best 2023-04-30 20:21:55 -05:00
Alex Gleason 7bb8821b1b
Escape HTML fields 2023-04-30 16:07:07 -05:00
Alex Gleason d7805ae65b
Add logger middleware 2023-04-30 15:16:33 -05:00
Alex Gleason cb8e78ab59
Add landing page 2023-04-30 14:51:56 -05:00
Alex Gleason 610ce4444a
api --> controllers/api 2023-04-30 14:45:30 -05:00
Alex Gleason 2554379cef
api/home.ts --> api/timelines.ts 2023-04-30 14:16:30 -05:00
Alex Gleason e26b540246
OAuth token endpoint: support formData 2023-04-30 14:13:27 -05:00
Alex Gleason 81357fa1e3
Make OAuth form mostly work 2023-04-30 13:28:49 -05:00
Alex Gleason d860ef7f98
Apps: get the redirect_uri into the app 2023-04-30 12:41:01 -05:00
Alex Gleason 9734d0a961
lint 2023-04-29 21:57:30 -05:00
Alex Gleason 693c7cc7bf
Sign events from app context 2023-04-29 21:48:22 -05:00
Alex Gleason 1ba822abaa
Add Markers fallback controller 2023-04-29 21:14:00 -05:00
Alex Gleason 780b3aeb01
Enable Link header in CORS 2023-04-29 21:07:59 -05:00
Alex Gleason 26cf528fca
Use findReplyTag from Mostr 2023-04-29 20:33:52 -05:00
Alex Gleason b42d1f3564
Make threads work, sorta 2023-04-29 20:23:51 -05:00
Alex Gleason f1333cb131
Deduplicate mentions 2023-04-29 19:27:13 -05:00
Alex Gleason a48ee148ae
Fix in_reply_to for root 2023-04-29 19:01:24 -05:00
Alex Gleason 586f20b23d
Improve NIP-05 display in mentions 2023-04-29 18:59:40 -05:00
Alex Gleason 4962f31296
Fix in_reply_to for legacy clients 2023-04-29 18:02:24 -05:00
Alex Gleason acabc7c4ad
Add dummy relationships endpoint 2023-04-29 17:59:54 -05:00
Alex Gleason 64102699ac
Perform NIP-05 lookups 2023-04-29 17:49:03 -05:00
Alex Gleason d84e593e53
Add GET /api/v1/statuses/:id 2023-04-29 17:26:56 -05:00
Alex Gleason f87a17e609
Remove unused code 2023-04-29 17:20:51 -05:00
Alex Gleason dabc3b7e3a
Remove unused imports 2023-04-29 17:07:26 -05:00
Alex Gleason 693b200562
Fix import 2023-04-29 16:39:11 -05:00
Alex Gleason 07e072bc48
Narrow pubkey paths with regex 2023-04-29 16:35:44 -05:00
Alex Gleason 70f69b80f3
Add account search controller, which does basically the same thing as account lookup for now 2023-04-29 16:28:53 -05:00
Alex Gleason 9e73a8e43c
Add account lookup endpoint 2023-04-29 16:25:07 -05:00
Alex Gleason 5118aaf46c
Rename some client functions 2023-04-29 15:54:21 -05:00
Alex Gleason 6341987088
Delete src/nostr directory 2023-04-29 15:51:54 -05:00
Alex Gleason b33a3a21fc
OAuth: don't decode bech32 string 2023-04-29 15:33:25 -05:00
Alex Gleason 8c48b9f625
Add nip19 auth middleware 2023-04-29 15:22:10 -05:00
Alex Gleason a0f4a7d9b5
Upgrade nostr-tools, signEvent --> getSignature 2023-04-27 21:10:51 -05:00
Alex Gleason 4664609047
apps: add comments 2023-04-10 21:13:57 -05:00
Alex Gleason 53655f99bf
We do a little refactoring 2023-04-10 19:34:00 -05:00
Alex Gleason c3b8ad1c28
Scaffold db, handler, query 2023-04-07 21:38:05 -05:00
Alex Gleason ecf3841ee4
Rename to Ditto 2023-04-02 14:10:50 -05:00
Alex Gleason d8e0a1c7fc
Validate and transform json at the same time 2023-03-18 19:14:19 -05:00
Alex Gleason d365ea26dc
Improve feed query 2023-03-18 18:09:16 -05:00
Alex Gleason 1d6ebf6ba6
Support pagination with Link headers... but of course Soapbox doesn't do that 2023-03-18 17:47:34 -05:00
Alex Gleason dcf6b69501
Improve fqn 2023-03-18 17:20:46 -05:00
Alex Gleason 46cdda7f7f
Parse mentions 2023-03-18 17:03:32 -05:00
Alex Gleason c28c644265
Upgrade nostr-tools, do npub stuff, query own events in feed 2023-03-18 16:39:34 -05:00
Alex Gleason 9f81d0d572
Reuse existing transmute functions, lol forgot I already wrote that 2023-03-18 16:30:46 -05:00
Alex Gleason 6748e13a36
Make Home feed kind of work 2023-03-18 14:49:44 -05:00
Alex Gleason 2ab9e60048
Add additional fallback controllers 2023-03-05 00:36:37 -06:00
Alex Gleason cde34bffd8
Refactor transmute, fix account in status 2023-03-05 00:16:05 -06:00
Alex Gleason 2acfecc1eb
Allow posting a status to Nostr 2023-03-04 23:26:25 -06:00
Alex Gleason 73884c212f
Transform nsec1 better 2023-03-04 22:54:57 -06:00
Alex Gleason 48f04e48de
Enable CORS, fix nsec1 keys 2023-03-04 22:49:08 -06:00
Alex Gleason 825fed7d21
This is probably enough to log in? 2023-03-04 22:10:56 -06:00
Alex Gleason 7285d71bda
Add boilerplate accounts controller and fallback controller 2023-03-04 21:49:33 -06:00
Alex Gleason b36b8ea7d2
Add OAuth controller 2023-03-04 21:36:53 -06:00
Alex Gleason 8ed662321d
Implement apps API (the stupid way) 2023-03-04 20:59:39 -06:00
Alex Gleason 484a396a64
Add /api/v1/instance 2023-03-04 20:19:57 -06:00
Alex Gleason d855c05fac
Boilerplate Deno stuff 2023-03-04 19:59:27 -06:00