Skip to content
This repository was archived by the owner on Jul 4, 2023. It is now read-only.

Rebase blacsky wth the main line #3

Open
wants to merge 219 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
1b7d6e3
Say what PDS stands for (#29)
joesondow May 24, 2023
51ca4d0
Fix some typos and clean up README. (#25)
alimony May 24, 2023
e849ac7
add listenhost option (#28)
benharri May 24, 2023
cbdac34
Docs and helpers (#38)
dholms May 31, 2023
f02b113
Update tsconfig.json (#37)
madrobby May 31, 2023
e70ea59
add link to community template
dholms Jun 1, 2023
3e4011a
Add MIT license file (#47)
mackuba Jun 12, 2023
f4b8159
fix: handle firehose subscription error reconnect (Close #44) (#46)
yuna0x0 Jun 15, 2023
84d8294
Launch Blacksky
rudyfraser May 24, 2023
8664f00
Add procfile
rudyfraser May 24, 2023
854f55e
Fix build
rudyfraser May 24, 2023
ed4b1fd
Published feed
rudyfraser May 24, 2023
f06aa32
add db
rudyfraser May 24, 2023
d11b432
Needs to be under my did
rudyfraser May 24, 2023
435e324
Ignore db
rudyfraser May 24, 2023
41067c9
heroku ready
rudyfraser May 25, 2023
b2ca774
heroku ready
rudyfraser May 25, 2023
6ebb99f
update hostname
rudyfraser May 25, 2023
e01fb76
revert algo uri
rudyfraser May 25, 2023
f9f1b06
Use postgresdb
rudyfraser May 25, 2023
64332c9
Delete tmp directory
rudyfraser May 24, 2023
8e21fd7
Update readme
rudyfraser May 25, 2023
a55b440
Hardcoded additions and removals
rudyfraser May 25, 2023
a2b92a2
Add user
rudyfraser May 25, 2023
818d954
Add user
rudyfraser May 25, 2023
ec5fb80
Add user
rudyfraser May 25, 2023
188a0f8
Add user
rudyfraser May 25, 2023
1d47380
Add user
rudyfraser May 26, 2023
612bb0b
Add user
rudyfraser May 26, 2023
ece7ebf
Add user
rudyfraser May 26, 2023
1bd058b
Add user
rudyfraser May 26, 2023
0faff23
Add user
rudyfraser May 26, 2023
aacaa20
Add user
rudyfraser May 26, 2023
16acebc
Add user
rudyfraser May 26, 2023
df52596
Add user
rudyfraser May 26, 2023
7b7f08d
Add user
rudyfraser May 26, 2023
974154c
Add user
rudyfraser May 26, 2023
552af17
Parse Blacksky thread only once
rudyfraser May 26, 2023
9b5619e
Add user
rudyfraser May 26, 2023
2fbb06f
Add user
rudyfraser May 26, 2023
6d05587
Add user
rudyfraser May 26, 2023
7fbe59c
Add user
rudyfraser May 26, 2023
176f0de
Add user
rudyfraser May 26, 2023
c49006e
Add user
rudyfraser May 27, 2023
b6a22d7
Add user
rudyfraser May 27, 2023
15e5efe
Add user
rudyfraser May 27, 2023
9176dbf
Add user
rudyfraser May 27, 2023
b7e0f29
Add user
rudyfraser May 27, 2023
a01a7c1
Add user
rudyfraser May 27, 2023
5875594
Add user
rudyfraser May 27, 2023
b8927d8
Add user
rudyfraser May 27, 2023
a0493bf
Add user
rudyfraser May 27, 2023
14df58f
Add user
rudyfraser May 27, 2023
da8c085
Add user
rudyfraser May 27, 2023
a45d2c0
Add support for hashtags
rudyfraser May 27, 2023
b08b7da
Add user
rudyfraser May 28, 2023
a9fbcc6
Add user
rudyfraser May 28, 2023
f9cc519
Add user
rudyfraser May 28, 2023
d830c85
Add user
rudyfraser May 28, 2023
5b35531
Add user
rudyfraser May 28, 2023
b510c33
Add user
rudyfraser May 28, 2023
d20bad8
Add user
rudyfraser May 28, 2023
ffdfe3a
Add user
rudyfraser May 28, 2023
1db80a7
Add user
rudyfraser May 28, 2023
40ba0bc
Add user
rudyfraser May 28, 2023
f7d5cff
Add user
rudyfraser May 28, 2023
f2df644
Add user
rudyfraser May 28, 2023
c7b8558
Add user
rudyfraser May 28, 2023
86ecd4a
Turn off get from thread
rudyfraser May 29, 2023
1791905
Turn off get from thread
rudyfraser May 29, 2023
5b25bcb
Add user
rudyfraser May 29, 2023
a71e70f
Add user
rudyfraser May 29, 2023
5c6d4bb
Add user
rudyfraser May 29, 2023
beac5cc
Add user
rudyfraser May 29, 2023
7b7f5f1
Add user
rudyfraser May 29, 2023
048722c
Add user
rudyfraser May 29, 2023
7496563
Add user
rudyfraser May 29, 2023
0221e59
Add user
rudyfraser May 29, 2023
a863af4
Add user
rudyfraser May 30, 2023
a7091a8
Add user
rudyfraser May 30, 2023
088c7c9
Add user
rudyfraser May 30, 2023
0362748
Add user
rudyfraser May 30, 2023
19eaeb7
Add user
rudyfraser May 30, 2023
bfcd1cd
Add user
rudyfraser May 30, 2023
ed4b1e2
Add user
rudyfraser May 30, 2023
25bd781
Add user
rudyfraser May 30, 2023
72cd5b3
Add user
rudyfraser May 30, 2023
1988440
Add user
rudyfraser May 30, 2023
26b51c4
Add user
rudyfraser May 30, 2023
a20d026
Add user
rudyfraser May 30, 2023
925280c
Add user
rudyfraser May 30, 2023
4b053fe
Add user
rudyfraser May 30, 2023
03ce43a
Add user
rudyfraser May 30, 2023
cbf42d6
Add user
rudyfraser May 31, 2023
c7a46dc
Add user
rudyfraser May 31, 2023
f92d9c2
Add user
rudyfraser May 31, 2023
090f441
Add user
rudyfraser May 31, 2023
d0b6e02
Add user
rudyfraser May 31, 2023
4e9a2c0
Add user
rudyfraser May 31, 2023
ee0120f
Add user
rudyfraser May 31, 2023
c70f3fe
Add user
rudyfraser May 31, 2023
192206f
Add user
rudyfraser May 31, 2023
af92cd1
Add user
rudyfraser Jun 1, 2023
2675697
Add user
rudyfraser Jun 1, 2023
e008889
Add user
rudyfraser Jun 1, 2023
ca5f08d
Display user count
rudyfraser Jun 1, 2023
5bd85aa
Add user
rudyfraser Jun 1, 2023
5fb5b83
Add user
rudyfraser Jun 1, 2023
f4a8b4d
Add user
rudyfraser Jun 1, 2023
8fc6c67
Add user
rudyfraser Jun 1, 2023
2612525
Add user
rudyfraser Jun 1, 2023
210915f
Add user
rudyfraser Jun 1, 2023
e101848
Add user and hashtag
rudyfraser Jun 1, 2023
55acbea
Add user
rudyfraser Jun 1, 2023
da3e341
Add user
rudyfraser Jun 1, 2023
5f165b4
Add user
rudyfraser Jun 1, 2023
d8f3289
Add user
rudyfraser Jun 1, 2023
56a22b9
Add user
rudyfraser Jun 2, 2023
edc5778
Remove hellthread replies from the feed
rudyfraser Jun 2, 2023
dbfdc64
Add user
rudyfraser Jun 2, 2023
53bc3ee
Add user
rudyfraser Jun 2, 2023
56b8dea
Add user
rudyfraser Jun 2, 2023
9a221a6
Add user
rudyfraser Jun 2, 2023
1283799
Add user
rudyfraser Jun 2, 2023
ba57fea
Add user
rudyfraser Jun 2, 2023
c158e72
Add user
rudyfraser Jun 2, 2023
ae304a5
Add user
rudyfraser Jun 2, 2023
47e8425
Rm user
rudyfraser Jun 2, 2023
d4e2183
Rm user
rudyfraser Jun 3, 2023
72977ed
Rm user
rudyfraser Jun 3, 2023
397799c
Add user
rudyfraser Jun 3, 2023
92af811
Add user
rudyfraser Jun 3, 2023
8646a59
Add user
rudyfraser Jun 3, 2023
b30d4d3
Add user
rudyfraser Jun 4, 2023
a14f333
Add user
rudyfraser Jun 4, 2023
283057b
Add user
rudyfraser Jun 4, 2023
35a12b7
Add user
rudyfraser Jun 4, 2023
ac70762
Add user
rudyfraser Jun 4, 2023
1d02093
Add user
rudyfraser Jun 4, 2023
60b1ced
Add user
rudyfraser Jun 4, 2023
3baf0e1
Add user
rudyfraser Jun 4, 2023
cdf1414
Add user
rudyfraser Jun 4, 2023
963e50d
Add user
rudyfraser Jun 5, 2023
60b324f
Add user
rudyfraser Jun 5, 2023
117b8bb
Add user
rudyfraser Jun 5, 2023
53595a3
Add user
rudyfraser Jun 5, 2023
40cb9bd
Add user
rudyfraser Jun 5, 2023
4becb1b
Add user
rudyfraser Jun 5, 2023
9f16917
Rm user
rudyfraser Jun 5, 2023
8f21dc3
Add user
rudyfraser Jun 5, 2023
8b52d0a
Add user
rudyfraser Jun 5, 2023
5ebd795
Add user
rudyfraser Jun 5, 2023
4b95f51
Add user
rudyfraser Jun 5, 2023
5e76128
Rm user
rudyfraser Jun 5, 2023
5fc5b26
Rm user
rudyfraser Jun 5, 2023
fd38323
Add user
rudyfraser Jun 5, 2023
1581953
Add user
rudyfraser Jun 6, 2023
fa1a83d
Add user
rudyfraser Jun 6, 2023
6362ec6
Add user
rudyfraser Jun 6, 2023
3b76b01
Add user
rudyfraser Jun 6, 2023
d6c422b
Add user
rudyfraser Jun 7, 2023
c0170df
Add user
rudyfraser Jun 7, 2023
514ebea
Add user
rudyfraser Jun 7, 2023
6a035c9
Add user
rudyfraser Jun 7, 2023
bbbfa9b
Add user
rudyfraser Jun 7, 2023
266d6af
Add user
rudyfraser Jun 7, 2023
72e1de6
Add user
rudyfraser Jun 7, 2023
38344cc
Add user
rudyfraser Jun 7, 2023
68c7f33
Add user
rudyfraser Jun 7, 2023
e7618c7
Add user
rudyfraser Jun 7, 2023
ab734e1
Add user
rudyfraser Jun 7, 2023
5709dc7
Add user
rudyfraser Jun 8, 2023
f6bdd24
Add user
rudyfraser Jun 8, 2023
2c16689
Add user
rudyfraser Jun 8, 2023
612bcc2
Add user
rudyfraser Jun 9, 2023
92d11bf
Add user
rudyfraser Jun 9, 2023
996ff5c
Add user
rudyfraser Jun 9, 2023
24108d5
Add user
rudyfraser Jun 9, 2023
6022541
Add user
rudyfraser Jun 9, 2023
923634c
Add user
rudyfraser Jun 9, 2023
5de4436
Add user
rudyfraser Jun 9, 2023
b56affd
Add user
rudyfraser Jun 11, 2023
417c2ed
Add user
rudyfraser Jun 11, 2023
629ebfe
Add user
rudyfraser Jun 11, 2023
4830054
Add user
rudyfraser Jun 11, 2023
7759bb9
Add user
rudyfraser Jun 11, 2023
6060de4
Add user
rudyfraser Jun 11, 2023
408f769
Add user
rudyfraser Jun 11, 2023
4055c97
Add user
rudyfraser Jun 11, 2023
6751c98
Add user
rudyfraser Jun 11, 2023
a20b3d1
Add user
rudyfraser Jun 11, 2023
75640d0
Add user
rudyfraser Jun 11, 2023
799cf70
Add user
rudyfraser Jun 11, 2023
7570139
Add user
rudyfraser Jun 12, 2023
90c2482
Add user
rudyfraser Jun 12, 2023
d0e78a6
Add user
rudyfraser Jun 12, 2023
07ea6a2
Add user
rudyfraser Jun 12, 2023
497c566
Add user
rudyfraser Jun 12, 2023
779b4d2
Add user
rudyfraser Jun 12, 2023
41c4fbb
Rm user
rudyfraser Jun 12, 2023
7158b3e
Add user
rudyfraser Jun 12, 2023
c74bf40
Add user
rudyfraser Jun 12, 2023
743beb7
Move hardcoded_adds, hardcoded_removes to membership.ts
jcsalterego Jun 13, 2023
27045e0
Call them DID_ADDITIONS, DID_REMOVALS
jcsalterego Jun 13, 2023
4cfeb61
Use prettier to format membership.ts
jcsalterego Jun 13, 2023
4120546
Move TODO comment back to subscription.ts
jcsalterego Jun 13, 2023
aa26854
Correct membership list
rudyfraser Jun 14, 2023
aff7295
Add user
rudyfraser Jun 14, 2023
245174c
Add user
rudyfraser Jun 14, 2023
f24cbe8
Add user
rudyfraser Jun 14, 2023
089061d
Add user
rudyfraser Jun 15, 2023
8144a64
Add user
rudyfraser Jun 15, 2023
6461279
Add user
rudyfraser Jun 15, 2023
d72dc52
Add user
rudyfraser Jun 15, 2023
8cb2dca
Add user
rudyfraser Jun 15, 2023
c4e61ce
Add user
rudyfraser Jun 15, 2023
fc7905d
Add user
rudyfraser Jun 15, 2023
333f43e
Add user
rudyfraser Jun 16, 2023
6ca0c70
Merge branch 'main' into rebase-fork-2
medoror Jun 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023 Bluesky PBLLC

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
3 changes: 3 additions & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@ export type AppContext = {

export type Config = {
port: number
listenhost: string
hostname: string
dblocation: string
subscriptionEndpoint: string
serviceDid: string
publisherDid: string
subscriptionReconnectDelay: number
}
9 changes: 7 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@ const run = async () => {
const serviceDid =
maybeStr(process.env.FEEDGEN_SERVICE_DID) ?? `did:web:${hostname}`
const server = FeedGenerator.create({
port: maybeInt(process.env.PORT) ?? 3000,
port: maybeInt(process.env.FEEDGEN_PORT) ?? 3000,
listenhost: maybeStr(process.env.FEEDGEN_LISTENHOST) ?? 'localhost',
dblocation: maybeStr(process.env.FEEDGEN_DB_LOCATION) ?? ':memory:',
subscriptionEndpoint:
maybeStr(process.env.FEEDGEN_SUBSCRIPTION_ENDPOINT) ??
'wss://bsky.social',
publisherDid:
maybeStr(process.env.FEEDGEN_PUBLISHER_DID) ?? 'did:example:alice',
subscriptionReconnectDelay:
maybeInt(process.env.FEEDGEN_SUBSCRIPTION_RECONNECT_DELAY) ?? 3000,
hostname,
serviceDid,
})
await server.start()
console.log(
`🤖 running feed generator at http://localhost:${server.cfg.port}`,
`🤖 running feed generator at http://${server.cfg.listenhost}:${server.cfg.port}`,
)
}

Expand Down
9 changes: 8 additions & 1 deletion src/methods/describe-generator.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
import { Server } from '../lexicon'
import { AppContext } from '../config'
import algos from '../algos'
import { AtUri } from '@atproto/uri'

export default function (server: Server, ctx: AppContext) {
server.app.bsky.feed.describeFeedGenerator(async () => {
const feeds = Object.keys(algos).map((uri) => ({ uri }))
const feeds = Object.keys(algos).map((shortname) => ({
uri: AtUri.make(
ctx.cfg.publisherDid,
'app.bsky.feed.generator',
shortname,
).toString(),
}))
return {
encoding: 'application/json',
body: {
Expand Down
10 changes: 8 additions & 2 deletions src/methods/feed-generation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@ import { Server } from '../lexicon'
import { AppContext } from '../config'
import algos from '../algos'
import { validateAuth } from '../auth'
import { AtUri } from '@atproto/uri'

export default function (server: Server, ctx: AppContext) {
server.app.bsky.feed.getFeedSkeleton(async ({ params, req }) => {
const algo = algos[params.feed]
if (!algo) {
const feedUri = new AtUri(params.feed)
const algo = algos[feedUri.rkey]
if (
feedUri.hostname !== ctx.cfg.publisherDid ||
feedUri.collection !== 'app.bsky.feed.generator' ||
!algo
) {
throw new InvalidRequestError(
'Unsupported algorithm',
'UnsupportedAlgorithm',
Expand Down
4 changes: 2 additions & 2 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ export class FeedGenerator {

async start(): Promise<http.Server> {
await migrateToLatest(this.db)
this.firehose.run()
this.server = this.app.listen(this.cfg.port)
this.firehose.run(this.cfg.subscriptionReconnectDelay)
this.server = this.app.listen(this.cfg.port, this.cfg.listenhost)
await events.once(this.server, 'listening')
return this.server
}
Expand Down
9 changes: 7 additions & 2 deletions src/util/subscription.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@ export abstract class FirehoseSubscriptionBase {

abstract handleEvent(evt: RepoEvent, blacksky): Promise<void>

async run() {
dotenv.config()
async run(subscriptionReconnectDelay: number) {
try {
dotenv.config()

const handle = process.env.IDENTIFIER ?? ''
const password = process.env.PASSWORD ?? ''
Expand All @@ -79,13 +80,17 @@ export abstract class FirehoseSubscriptionBase {
for await (const evt of this.sub) {
try {
await this.handleEvent(evt, blacksky)

} catch (err) {
console.error('repo subscription could not handle message', err)
}
// update stored cursor every 20 events or so
if (isCommit(evt) && evt.seq % 20 === 0) {
await this.updateCursor(evt.seq)
}
} catch (err) {
console.error('repo subscription errored', err)
setTimeout(() => this.run(subscriptionReconnectDelay), subscriptionReconnectDelay)
}
}

Expand Down
4 changes: 2 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"compilerOptions": {
"lib": [
"ESNext",
],
],
"outDir": "dist",
"module": "CommonJS",
"target": "ES6",
Expand All @@ -18,4 +18,4 @@
"exclude": [
"node_modules"
]
}
}