+2
go.mod
+2
go.mod
···
16
16
github.com/carlmjohnson/versioninfo v0.22.5 // indirect
17
17
github.com/cespare/xxhash/v2 v2.3.0 // indirect
18
18
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
19
+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
19
20
github.com/felixge/httpsnoop v1.0.4 // indirect
20
21
github.com/go-logr/logr v1.4.1 // indirect
21
22
github.com/go-logr/stdr v1.2.2 // indirect
···
55
56
github.com/prometheus/client_model v0.6.1 // indirect
56
57
github.com/prometheus/common v0.54.0 // indirect
57
58
github.com/prometheus/procfs v0.15.1 // indirect
59
+
github.com/redis/go-redis/v9 v9.8.0 // indirect
58
60
github.com/russross/blackfriday/v2 v2.1.0 // indirect
59
61
github.com/spaolacci/murmur3 v1.1.0 // indirect
60
62
github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e // indirect
+4
go.sum
+4
go.sum
···
16
16
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
17
17
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
18
18
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
19
+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
20
+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
19
21
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
20
22
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
21
23
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
···
124
126
github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ=
125
127
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
126
128
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
129
+
github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
130
+
github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
127
131
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
128
132
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
129
133
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+69
-1
handle_post.go
+69
-1
handle_post.go
···
3
3
import (
4
4
"context"
5
5
"fmt"
6
+
"net/url"
7
+
"strings"
6
8
7
9
"github.com/bluesky-social/indigo/api/bsky"
8
10
"github.com/bluesky-social/jetstream/pkg/models"
11
+
"github.com/haileyok/dontshowmethis/sets"
12
+
"github.com/redis/go-redis/v9"
9
13
)
10
14
15
+
func uriFromEvent(evt *models.Event) string {
16
+
return fmt.Sprintf("at://%s/%s/%s", evt.Did, evt.Commit.Collection, evt.Commit.RKey)
17
+
}
18
+
11
19
func (dsmt *DontShowMeThis) handlePost(ctx context.Context, event *models.Event, post *bsky.FeedPost) error {
12
-
fmt.Println(post.Text)
20
+
if event == nil || event.Commit == nil {
21
+
return nil
22
+
}
23
+
24
+
if post.Embed == nil && post.Reply == nil && len(post.Facets) == 0 {
25
+
return nil
26
+
}
27
+
28
+
if post.Embed != nil && post.Embed.EmbedExternal != nil && post.Embed.EmbedExternal.External != nil {
29
+
external := post.Embed.EmbedExternal.External
30
+
31
+
u, err := url.Parse(external.Uri)
32
+
if err != nil {
33
+
return err
34
+
}
35
+
36
+
domain := strings.ToLower(u.Hostname())
37
+
38
+
if sets.PolDomains[domain] {
39
+
if err := dsmt.emitLabel(ctx, uriFromEvent(event), LabelPolLink); err != nil {
40
+
return err
41
+
}
42
+
return nil
43
+
}
44
+
}
45
+
46
+
for _, f := range post.Facets {
47
+
for _, ff := range f.Features {
48
+
if ff.RichtextFacet_Link == nil {
49
+
continue
50
+
}
51
+
52
+
u, err := url.Parse(ff.RichtextFacet_Link.Uri)
53
+
if err != nil {
54
+
return err
55
+
}
56
+
57
+
domain := strings.ToLower(u.Hostname())
58
+
59
+
if sets.PolDomains[domain] {
60
+
if err := dsmt.emitLabel(ctx, uriFromEvent(event), LabelPolLink); err != nil {
61
+
return err
62
+
}
63
+
return nil
64
+
}
65
+
}
66
+
}
67
+
68
+
if post.Reply != nil {
69
+
ism, err := dsmt.r.SIsMember(ctx, RedisPrefix+LabelPolLink, post.Reply.Root.Uri).Result()
70
+
if err != nil && err != redis.Nil {
71
+
return err
72
+
}
73
+
74
+
if ism {
75
+
if err := dsmt.emitLabel(ctx, uriFromEvent(event), LabelPolLinkReply); err != nil {
76
+
return err
77
+
}
78
+
return nil
79
+
}
80
+
}
13
81
14
82
return nil
15
83
}
+10
labeler/.prettierrc
+10
labeler/.prettierrc
+84
labeler/index.ts
+84
labeler/index.ts
···
1
+
import {LabelerServer} from '@skyware/labeler'
2
+
import Fastify from 'fastify'
3
+
import 'dotenv/config'
4
+
5
+
const LABELS: Record<string, boolean> = {
6
+
'pol-link': true,
7
+
'pol-link-reply': true,
8
+
}
9
+
10
+
function run() {
11
+
if (!process.env.SKYWARE_DID) {
12
+
throw new Error('no did set in .env')
13
+
}
14
+
15
+
if (!process.env.SKYWARE_SIG_KEY) {
16
+
throw new Error('no sig key set in .env')
17
+
}
18
+
19
+
if (!process.env.EMIT_LABEL_KEY) {
20
+
throw new Error('no emit label key set in .env')
21
+
}
22
+
23
+
const labelerServer = new LabelerServer({
24
+
did: process.env.SKYWARE_DID,
25
+
signingKey: process.env.SKYWARE_SIG_KEY,
26
+
})
27
+
28
+
labelerServer.start(14831, error => {
29
+
if (error) {
30
+
console.error('Failed to start server:', error)
31
+
} else {
32
+
console.log('Labeler server running on port 14831')
33
+
}
34
+
})
35
+
36
+
const fastify = Fastify({
37
+
logger: true,
38
+
})
39
+
40
+
fastify.post('/emit', async (request, reply) => {
41
+
if (
42
+
!request.headers.authorization ||
43
+
!request.headers.authorization.startsWith('Bearer') ||
44
+
request.headers.authorization.split(' ')[1] !== process.env.EMIT_LABEL_KEY
45
+
) {
46
+
reply.statusCode = 403
47
+
return reply.send({error: 'unauthorized'})
48
+
}
49
+
50
+
const body = request.body as {uri?: string; label?: string}
51
+
52
+
if (!body.uri) {
53
+
reply.statusCode = 400
54
+
return reply.send({error: 'must supply uri'})
55
+
}
56
+
57
+
if (!body.label) {
58
+
reply.statusCode = 400
59
+
return reply.send({error: 'must supply label'})
60
+
}
61
+
62
+
if (!LABELS[body.label]) {
63
+
reply.statusCode = 400
64
+
return reply.send({error: 'invalid label supplied'})
65
+
}
66
+
67
+
await labelerServer.createLabel({
68
+
uri: body.uri,
69
+
val: body.label,
70
+
})
71
+
72
+
reply.statusCode = 200
73
+
return reply.send()
74
+
})
75
+
76
+
fastify.listen({port: 3000}, (err, _) => {
77
+
if (err) {
78
+
fastify.log.error(err)
79
+
process.exit(1)
80
+
}
81
+
})
82
+
}
83
+
84
+
run()
+12
labeler/package.json
+12
labeler/package.json
+10
labeler/tsconfig.json
+10
labeler/tsconfig.json
+845
labeler/yarn.lock
+845
labeler/yarn.lock
···
1
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+
# yarn lockfile v1
3
+
4
+
5
+
"@atcute/bluesky@^1.0.7":
6
+
version "1.0.15"
7
+
resolved "https://registry.yarnpkg.com/@atcute/bluesky/-/bluesky-1.0.15.tgz#b9335c670df51b19da8d65233ea904f6dfba6232"
8
+
integrity sha512-+EFiybmKQ97aBAgtaD+cKRJER5AMn3cZMkEwEg/pDdWyzxYJ9m1UgemmLdTgI8VrxPufKqdXS2nl7uO7TY6BPA==
9
+
10
+
"@atcute/cbor@^1.0.2":
11
+
version "1.0.7"
12
+
resolved "https://registry.yarnpkg.com/@atcute/cbor/-/cbor-1.0.7.tgz#3baa7bd7845567a924e3b220e4a851b05d560d35"
13
+
integrity sha512-z3chucgCqjAN36ySvUVl1VSwtGME4CDS173eaaEfiTSpRIQ6ewKpKlkzapLUNqtLU9iBx884b9c2j6kjEyn1XA==
14
+
dependencies:
15
+
"@atcute/cid" "^1.0.3"
16
+
"@atcute/multibase" "^1.0.0"
17
+
18
+
"@atcute/cid@^1.0.3":
19
+
version "1.0.3"
20
+
resolved "https://registry.yarnpkg.com/@atcute/cid/-/cid-1.0.3.tgz#281f8dd047074a4b05b2452681c815db9ad8f3d7"
21
+
integrity sha512-BZbs+Xt0yMci0I2dLqqYsN76ua8lkMk/HQfEIKr7g2XMBlSc0XNCXfZdbAWPwiCK/NuGaPBocYMRwApd4dF2Qg==
22
+
dependencies:
23
+
"@atcute/multibase" "^1.0.0"
24
+
"@atcute/varint" "^1.0.1"
25
+
26
+
"@atcute/client@^2.0.3":
27
+
version "2.0.9"
28
+
resolved "https://registry.yarnpkg.com/@atcute/client/-/client-2.0.9.tgz#3192a476dc12b8d52bf72649370344a3bb233580"
29
+
integrity sha512-QNDm9gMP6x9LY77ArwY+urQOBtQW74/onEAz42c40JxRm6Rl9K9cU4ROvNKJ+5cpVmEm1sthEWVRmDr5CSZENA==
30
+
31
+
"@atcute/multibase@^1.0.0":
32
+
version "1.1.3"
33
+
resolved "https://registry.yarnpkg.com/@atcute/multibase/-/multibase-1.1.3.tgz#557f504fe1fd39ba6b6133e0977e146f325ff423"
34
+
integrity sha512-vQQO0tDuQPguBvHdgV3ryn7R8U6beQ50KA/juYm+dCeT/3hOK2stMbX+IaW8JEuwkT5lJsU8wDIOicQT4mB7Ag==
35
+
dependencies:
36
+
"@atcute/uint8array" "^1.0.1"
37
+
38
+
"@atcute/ozone@^1.0.4":
39
+
version "1.0.12"
40
+
resolved "https://registry.yarnpkg.com/@atcute/ozone/-/ozone-1.0.12.tgz#a29591c6413b47d092d22cb5ad0fe3e4414311cd"
41
+
integrity sha512-eogx/FCF6X3WTwAPxgG8RcrziuOUcJvMu+qHodeVcLSQ7QJvw2H/Q5V0HpnZegUOY5aRGKb5RvLk2SeZq3LCeA==
42
+
43
+
"@atcute/uint8array@^1.0.1":
44
+
version "1.0.1"
45
+
resolved "https://registry.yarnpkg.com/@atcute/uint8array/-/uint8array-1.0.1.tgz#da4a0d623543685de31c8441ab12d300e452aa3c"
46
+
integrity sha512-AAnlFKyfDRgb9GNZJbhQ6OuMhbmNPirQyapb8KnmcEhxQZ3+tt+4NcwqekEegY4MpNqSTYeeTdyxq0wGZv1JHg==
47
+
48
+
"@atcute/varint@^1.0.1":
49
+
version "1.0.2"
50
+
resolved "https://registry.yarnpkg.com/@atcute/varint/-/varint-1.0.2.tgz#1486c1dc7cdb0c76a4df67239faa106bf939efbb"
51
+
integrity sha512-0O31hePzzr4O3NGWHUKKOyta6CGSL+AtN8iir8grGxu9jXyI7DBARlw6PbgKA6uTAvsXdpmRmF8MX+p0TsLnNg==
52
+
53
+
"@fastify/ajv-compiler@^3.5.0":
54
+
version "3.6.0"
55
+
resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz#907497a0e62a42b106ce16e279cf5788848e8e79"
56
+
integrity sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==
57
+
dependencies:
58
+
ajv "^8.11.0"
59
+
ajv-formats "^2.1.1"
60
+
fast-uri "^2.0.0"
61
+
62
+
"@fastify/ajv-compiler@^4.0.0":
63
+
version "4.0.2"
64
+
resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-4.0.2.tgz#da05938cf852901bfb953738764f553b5449b80b"
65
+
integrity sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==
66
+
dependencies:
67
+
ajv "^8.12.0"
68
+
ajv-formats "^3.0.1"
69
+
fast-uri "^3.0.0"
70
+
71
+
"@fastify/error@^3.3.0", "@fastify/error@^3.4.0":
72
+
version "3.4.1"
73
+
resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.4.1.tgz#b14bb4cac3dd4ec614becbc643d1511331a6425c"
74
+
integrity sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==
75
+
76
+
"@fastify/error@^4.0.0":
77
+
version "4.1.0"
78
+
resolved "https://registry.yarnpkg.com/@fastify/error/-/error-4.1.0.tgz#a6a3a8d2309bd8d3441512dff9a7c739d0c35fe2"
79
+
integrity sha512-KeFcciOr1eo/YvIXHP65S94jfEEqn1RxTRBT1aJaHxY5FK0/GDXYozsQMMWlZoHgi8i0s+YtrLsgj/JkUUjSkQ==
80
+
81
+
"@fastify/fast-json-stringify-compiler@^4.3.0":
82
+
version "4.3.0"
83
+
resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz#5df89fa4d1592cbb8780f78998355feb471646d5"
84
+
integrity sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==
85
+
dependencies:
86
+
fast-json-stringify "^5.7.0"
87
+
88
+
"@fastify/fast-json-stringify-compiler@^5.0.0":
89
+
version "5.0.3"
90
+
resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz#fae495bf30dbbd029139839ec5c2ea111bde7d3f"
91
+
integrity sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==
92
+
dependencies:
93
+
fast-json-stringify "^6.0.0"
94
+
95
+
"@fastify/forwarded@^3.0.0":
96
+
version "3.0.0"
97
+
resolved "https://registry.yarnpkg.com/@fastify/forwarded/-/forwarded-3.0.0.tgz#0fc96cdbbb5a38ad453d2d5533a34f09b4949b37"
98
+
integrity sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==
99
+
100
+
"@fastify/merge-json-schemas@^0.1.0":
101
+
version "0.1.1"
102
+
resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz#3551857b8a17a24e8c799e9f51795edb07baa0bc"
103
+
integrity sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==
104
+
dependencies:
105
+
fast-deep-equal "^3.1.3"
106
+
107
+
"@fastify/merge-json-schemas@^0.2.0":
108
+
version "0.2.1"
109
+
resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz#3aa30d2f0c81a8ac5995b6d94ed4eaa2c3055824"
110
+
integrity sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==
111
+
dependencies:
112
+
dequal "^2.0.3"
113
+
114
+
"@fastify/proxy-addr@^5.0.0":
115
+
version "5.0.0"
116
+
resolved "https://registry.yarnpkg.com/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz#e9d1c7a49b8380d9f92a879fdc623ac47ee27de3"
117
+
integrity sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==
118
+
dependencies:
119
+
"@fastify/forwarded" "^3.0.0"
120
+
ipaddr.js "^2.1.0"
121
+
122
+
"@fastify/websocket@^10.0.1":
123
+
version "10.0.1"
124
+
resolved "https://registry.yarnpkg.com/@fastify/websocket/-/websocket-10.0.1.tgz#ece72340870dfccc0d5abdbe7242c632a5f3340a"
125
+
integrity sha512-8/pQIxTPRD8U94aILTeJ+2O3el/r19+Ej5z1O1mXlqplsUH7KzCjAI0sgd5DM/NoPjAi5qLFNIjgM5+9/rGSNw==
126
+
dependencies:
127
+
duplexify "^4.1.2"
128
+
fastify-plugin "^4.0.0"
129
+
ws "^8.0.0"
130
+
131
+
"@libsql/client@^0.14.0":
132
+
version "0.14.0"
133
+
resolved "https://registry.yarnpkg.com/@libsql/client/-/client-0.14.0.tgz#df30cfb21e84797398afdd268e153cf1594c68a1"
134
+
integrity sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==
135
+
dependencies:
136
+
"@libsql/core" "^0.14.0"
137
+
"@libsql/hrana-client" "^0.7.0"
138
+
js-base64 "^3.7.5"
139
+
libsql "^0.4.4"
140
+
promise-limit "^2.7.0"
141
+
142
+
"@libsql/core@^0.14.0":
143
+
version "0.14.0"
144
+
resolved "https://registry.yarnpkg.com/@libsql/core/-/core-0.14.0.tgz#bbdbdf89227f1325b79e49d00babace81a47bf23"
145
+
integrity sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==
146
+
dependencies:
147
+
js-base64 "^3.7.5"
148
+
149
+
"@libsql/darwin-arm64@0.4.7":
150
+
version "0.4.7"
151
+
resolved "https://registry.yarnpkg.com/@libsql/darwin-arm64/-/darwin-arm64-0.4.7.tgz#070679b082ff88ad0a8c8fef94c6d0cc644e441f"
152
+
integrity sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg==
153
+
154
+
"@libsql/darwin-x64@0.4.7":
155
+
version "0.4.7"
156
+
resolved "https://registry.yarnpkg.com/@libsql/darwin-x64/-/darwin-x64-0.4.7.tgz#ee5cff8527777eea72e2ad9a4f1c41d6a5b6736e"
157
+
integrity sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA==
158
+
159
+
"@libsql/hrana-client@^0.7.0":
160
+
version "0.7.0"
161
+
resolved "https://registry.yarnpkg.com/@libsql/hrana-client/-/hrana-client-0.7.0.tgz#c059d8106b9d40dd931217333710aff2ceb5216e"
162
+
integrity sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==
163
+
dependencies:
164
+
"@libsql/isomorphic-fetch" "^0.3.1"
165
+
"@libsql/isomorphic-ws" "^0.1.5"
166
+
js-base64 "^3.7.5"
167
+
node-fetch "^3.3.2"
168
+
169
+
"@libsql/isomorphic-fetch@^0.3.1":
170
+
version "0.3.1"
171
+
resolved "https://registry.yarnpkg.com/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.3.1.tgz#42023816d5645a5a3f3a78bb3899bdc5814c7b88"
172
+
integrity sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==
173
+
174
+
"@libsql/isomorphic-ws@^0.1.5":
175
+
version "0.1.5"
176
+
resolved "https://registry.yarnpkg.com/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz#e2d1faf965ba0f3be9301fbf5640164d03c4e606"
177
+
integrity sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==
178
+
dependencies:
179
+
"@types/ws" "^8.5.4"
180
+
ws "^8.13.0"
181
+
182
+
"@libsql/linux-arm64-gnu@0.4.7":
183
+
version "0.4.7"
184
+
resolved "https://registry.yarnpkg.com/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.4.7.tgz#d1364f51b8c5a013822257de1a51525b602ac71d"
185
+
integrity sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA==
186
+
187
+
"@libsql/linux-arm64-musl@0.4.7":
188
+
version "0.4.7"
189
+
resolved "https://registry.yarnpkg.com/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.4.7.tgz#14d9762853368e77e24774b306dea7c6ac2b4881"
190
+
integrity sha512-6kK9xAArVRlTCpWeqnNMCoXW1pe7WITI378n4NpvU5EJ0Ok3aNTIC2nRPRjhro90QcnmLL1jPcrVwO4WD1U0xw==
191
+
192
+
"@libsql/linux-x64-gnu@0.4.7":
193
+
version "0.4.7"
194
+
resolved "https://registry.yarnpkg.com/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.4.7.tgz#ae98f4311b45ffe6c6e31241b7d321cc24cf2922"
195
+
integrity sha512-CMnNRCmlWQqqzlTw6NeaZXzLWI8bydaXDke63JTUCvu8R+fj/ENsLrVBtPDlxQ0wGsYdXGlrUCH8Qi9gJep0yQ==
196
+
197
+
"@libsql/linux-x64-musl@0.4.7":
198
+
version "0.4.7"
199
+
resolved "https://registry.yarnpkg.com/@libsql/linux-x64-musl/-/linux-x64-musl-0.4.7.tgz#9340d4c46e77ae072968e7dc70710dedfd6ee4f4"
200
+
integrity sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA==
201
+
202
+
"@libsql/win32-x64-msvc@0.4.7":
203
+
version "0.4.7"
204
+
resolved "https://registry.yarnpkg.com/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.4.7.tgz#b39cc6de4af797af736e9f2179002e8ebf4d2d4a"
205
+
integrity sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw==
206
+
207
+
"@neon-rs/load@^0.0.4":
208
+
version "0.0.4"
209
+
resolved "https://registry.yarnpkg.com/@neon-rs/load/-/load-0.0.4.tgz#2a2a3292c6f1fef043f49886712d3c96a547532e"
210
+
integrity sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==
211
+
212
+
"@noble/curves@^1.6.0":
213
+
version "1.9.0"
214
+
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.0.tgz#13e0ca8be4a0ce66c113693a94514e5599f40cfc"
215
+
integrity sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==
216
+
dependencies:
217
+
"@noble/hashes" "1.8.0"
218
+
219
+
"@noble/hashes@1.8.0", "@noble/hashes@^1.5.0":
220
+
version "1.8.0"
221
+
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a"
222
+
integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==
223
+
224
+
"@skyware/labeler@^0.2.0":
225
+
version "0.2.0"
226
+
resolved "https://registry.yarnpkg.com/@skyware/labeler/-/labeler-0.2.0.tgz#13980eaeff303de43ae3eafa1c82e000f774fc2e"
227
+
integrity sha512-5Xsjly8Crvi+vILmFkObNs5y/FeNj/mIztcm1qfNafUzwv9n9B7O5MQmmg3aZfnalmQWsYfs2BgVlaBBBni5bw==
228
+
dependencies:
229
+
"@atcute/bluesky" "^1.0.7"
230
+
"@atcute/cbor" "^1.0.2"
231
+
"@atcute/client" "^2.0.3"
232
+
"@atcute/ozone" "^1.0.4"
233
+
"@fastify/websocket" "^10.0.1"
234
+
"@libsql/client" "^0.14.0"
235
+
"@noble/curves" "^1.6.0"
236
+
"@noble/hashes" "^1.5.0"
237
+
fastify "^4.28.1"
238
+
prompts "^2.4.2"
239
+
uint8arrays "^5.1.0"
240
+
241
+
"@types/node@*":
242
+
version "22.15.3"
243
+
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.3.tgz#b7fb9396a8ec5b5dfb1345d8ac2502060e9af68b"
244
+
integrity sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==
245
+
dependencies:
246
+
undici-types "~6.21.0"
247
+
248
+
"@types/ws@^8.5.4":
249
+
version "8.18.1"
250
+
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9"
251
+
integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==
252
+
dependencies:
253
+
"@types/node" "*"
254
+
255
+
abstract-logging@^2.0.1:
256
+
version "2.0.1"
257
+
resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839"
258
+
integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==
259
+
260
+
ajv-formats@^2.1.1:
261
+
version "2.1.1"
262
+
resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
263
+
integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
264
+
dependencies:
265
+
ajv "^8.0.0"
266
+
267
+
ajv-formats@^3.0.1:
268
+
version "3.0.1"
269
+
resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578"
270
+
integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==
271
+
dependencies:
272
+
ajv "^8.0.0"
273
+
274
+
ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.12.0:
275
+
version "8.17.1"
276
+
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
277
+
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
278
+
dependencies:
279
+
fast-deep-equal "^3.1.3"
280
+
fast-uri "^3.0.1"
281
+
json-schema-traverse "^1.0.0"
282
+
require-from-string "^2.0.2"
283
+
284
+
atomic-sleep@^1.0.0:
285
+
version "1.0.0"
286
+
resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
287
+
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
288
+
289
+
avvio@^8.3.0:
290
+
version "8.4.0"
291
+
resolved "https://registry.yarnpkg.com/avvio/-/avvio-8.4.0.tgz#7cbd5bca74f0c9effa944ced601f94ffd8afc5ed"
292
+
integrity sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==
293
+
dependencies:
294
+
"@fastify/error" "^3.3.0"
295
+
fastq "^1.17.1"
296
+
297
+
avvio@^9.0.0:
298
+
version "9.1.0"
299
+
resolved "https://registry.yarnpkg.com/avvio/-/avvio-9.1.0.tgz#0ff80ed211682441d8aa39ff21a4b9d022109c44"
300
+
integrity sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==
301
+
dependencies:
302
+
"@fastify/error" "^4.0.0"
303
+
fastq "^1.17.1"
304
+
305
+
cookie@^0.7.0:
306
+
version "0.7.2"
307
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
308
+
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
309
+
310
+
cookie@^1.0.1:
311
+
version "1.0.2"
312
+
resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610"
313
+
integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==
314
+
315
+
data-uri-to-buffer@^4.0.0:
316
+
version "4.0.1"
317
+
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
318
+
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
319
+
320
+
dequal@^2.0.3:
321
+
version "2.0.3"
322
+
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
323
+
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
324
+
325
+
detect-libc@2.0.2:
326
+
version "2.0.2"
327
+
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
328
+
integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
329
+
330
+
dotenv@^16.5.0:
331
+
version "16.5.0"
332
+
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692"
333
+
integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==
334
+
335
+
duplexify@^4.1.2:
336
+
version "4.1.3"
337
+
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f"
338
+
integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==
339
+
dependencies:
340
+
end-of-stream "^1.4.1"
341
+
inherits "^2.0.3"
342
+
readable-stream "^3.1.1"
343
+
stream-shift "^1.0.2"
344
+
345
+
end-of-stream@^1.4.1:
346
+
version "1.4.4"
347
+
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
348
+
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
349
+
dependencies:
350
+
once "^1.4.0"
351
+
352
+
fast-content-type-parse@^1.1.0:
353
+
version "1.1.0"
354
+
resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz#4087162bf5af3294d4726ff29b334f72e3a1092c"
355
+
integrity sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==
356
+
357
+
fast-decode-uri-component@^1.0.1:
358
+
version "1.0.1"
359
+
resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543"
360
+
integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==
361
+
362
+
fast-deep-equal@^3.1.3:
363
+
version "3.1.3"
364
+
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
365
+
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
366
+
367
+
fast-json-stringify@^5.7.0, fast-json-stringify@^5.8.0:
368
+
version "5.16.1"
369
+
resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz#a6d0c575231a3a08c376a00171d757372f2ca46e"
370
+
integrity sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==
371
+
dependencies:
372
+
"@fastify/merge-json-schemas" "^0.1.0"
373
+
ajv "^8.10.0"
374
+
ajv-formats "^3.0.1"
375
+
fast-deep-equal "^3.1.3"
376
+
fast-uri "^2.1.0"
377
+
json-schema-ref-resolver "^1.0.1"
378
+
rfdc "^1.2.0"
379
+
380
+
fast-json-stringify@^6.0.0:
381
+
version "6.0.1"
382
+
resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-6.0.1.tgz#82f1cb45fa96d0ca24b601f1738066976d6e2430"
383
+
integrity sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==
384
+
dependencies:
385
+
"@fastify/merge-json-schemas" "^0.2.0"
386
+
ajv "^8.12.0"
387
+
ajv-formats "^3.0.1"
388
+
fast-uri "^3.0.0"
389
+
json-schema-ref-resolver "^2.0.0"
390
+
rfdc "^1.2.0"
391
+
392
+
fast-querystring@^1.0.0:
393
+
version "1.1.2"
394
+
resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53"
395
+
integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==
396
+
dependencies:
397
+
fast-decode-uri-component "^1.0.1"
398
+
399
+
fast-redact@^3.1.1:
400
+
version "3.5.0"
401
+
resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4"
402
+
integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==
403
+
404
+
fast-uri@^2.0.0, fast-uri@^2.1.0:
405
+
version "2.4.0"
406
+
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.4.0.tgz#67eae6fbbe9f25339d5d3f4c4234787b65d7d55e"
407
+
integrity sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==
408
+
409
+
fast-uri@^3.0.0, fast-uri@^3.0.1:
410
+
version "3.0.6"
411
+
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748"
412
+
integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
413
+
414
+
fastify-plugin@^4.0.0:
415
+
version "4.5.1"
416
+
resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.5.1.tgz#44dc6a3cc2cce0988bc09e13f160120bbd91dbee"
417
+
integrity sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==
418
+
419
+
fastify@^4.28.1:
420
+
version "4.29.1"
421
+
resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.29.1.tgz#fbd91a507e3a575c6c8032ad5d1bfd801004fb3b"
422
+
integrity sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==
423
+
dependencies:
424
+
"@fastify/ajv-compiler" "^3.5.0"
425
+
"@fastify/error" "^3.4.0"
426
+
"@fastify/fast-json-stringify-compiler" "^4.3.0"
427
+
abstract-logging "^2.0.1"
428
+
avvio "^8.3.0"
429
+
fast-content-type-parse "^1.1.0"
430
+
fast-json-stringify "^5.8.0"
431
+
find-my-way "^8.0.0"
432
+
light-my-request "^5.11.0"
433
+
pino "^9.0.0"
434
+
process-warning "^3.0.0"
435
+
proxy-addr "^2.0.7"
436
+
rfdc "^1.3.0"
437
+
secure-json-parse "^2.7.0"
438
+
semver "^7.5.4"
439
+
toad-cache "^3.3.0"
440
+
441
+
fastify@^5.3.2:
442
+
version "5.3.2"
443
+
resolved "https://registry.yarnpkg.com/fastify/-/fastify-5.3.2.tgz#88c895a30c0f67166979077ac8649fe8b205a1b3"
444
+
integrity sha512-AIPqBgtqBAwkOkrnwesEE+dOyU30dQ4kh7udxeGVR05CRGwubZx+p2H8P0C4cRnQT0+EPK4VGea2DTL2RtWttg==
445
+
dependencies:
446
+
"@fastify/ajv-compiler" "^4.0.0"
447
+
"@fastify/error" "^4.0.0"
448
+
"@fastify/fast-json-stringify-compiler" "^5.0.0"
449
+
"@fastify/proxy-addr" "^5.0.0"
450
+
abstract-logging "^2.0.1"
451
+
avvio "^9.0.0"
452
+
fast-json-stringify "^6.0.0"
453
+
find-my-way "^9.0.0"
454
+
light-my-request "^6.0.0"
455
+
pino "^9.0.0"
456
+
process-warning "^5.0.0"
457
+
rfdc "^1.3.1"
458
+
secure-json-parse "^4.0.0"
459
+
semver "^7.6.0"
460
+
toad-cache "^3.7.0"
461
+
462
+
fastq@^1.17.1:
463
+
version "1.19.1"
464
+
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
465
+
integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
466
+
dependencies:
467
+
reusify "^1.0.4"
468
+
469
+
fetch-blob@^3.1.2, fetch-blob@^3.1.4:
470
+
version "3.2.0"
471
+
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
472
+
integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
473
+
dependencies:
474
+
node-domexception "^1.0.0"
475
+
web-streams-polyfill "^3.0.3"
476
+
477
+
find-my-way@^8.0.0:
478
+
version "8.2.2"
479
+
resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-8.2.2.tgz#f3e78bc6ead2da4fdaa201335da3228600ed0285"
480
+
integrity sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==
481
+
dependencies:
482
+
fast-deep-equal "^3.1.3"
483
+
fast-querystring "^1.0.0"
484
+
safe-regex2 "^3.1.0"
485
+
486
+
find-my-way@^9.0.0:
487
+
version "9.3.0"
488
+
resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-9.3.0.tgz#9f57786b5d772cc45142bf39dd5349f9cc883f91"
489
+
integrity sha512-eRoFWQw+Yv2tuYlK2pjFS2jGXSxSppAs3hSQjfxVKxM5amECzIgYYc1FEI8ZmhSh/Ig+FrKEz43NLRKJjYCZVg==
490
+
dependencies:
491
+
fast-deep-equal "^3.1.3"
492
+
fast-querystring "^1.0.0"
493
+
safe-regex2 "^5.0.0"
494
+
495
+
formdata-polyfill@^4.0.10:
496
+
version "4.0.10"
497
+
resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
498
+
integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
499
+
dependencies:
500
+
fetch-blob "^3.1.2"
501
+
502
+
forwarded@0.2.0:
503
+
version "0.2.0"
504
+
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
505
+
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
506
+
507
+
inherits@^2.0.3:
508
+
version "2.0.4"
509
+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
510
+
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
511
+
512
+
ipaddr.js@1.9.1:
513
+
version "1.9.1"
514
+
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
515
+
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
516
+
517
+
ipaddr.js@^2.1.0:
518
+
version "2.2.0"
519
+
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
520
+
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
521
+
522
+
js-base64@^3.7.5:
523
+
version "3.7.7"
524
+
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79"
525
+
integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==
526
+
527
+
json-schema-ref-resolver@^1.0.1:
528
+
version "1.0.1"
529
+
resolved "https://registry.yarnpkg.com/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz#6586f483b76254784fc1d2120f717bdc9f0a99bf"
530
+
integrity sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==
531
+
dependencies:
532
+
fast-deep-equal "^3.1.3"
533
+
534
+
json-schema-ref-resolver@^2.0.0:
535
+
version "2.0.1"
536
+
resolved "https://registry.yarnpkg.com/json-schema-ref-resolver/-/json-schema-ref-resolver-2.0.1.tgz#c92f16b452df069daac53e1984159e0f9af0598d"
537
+
integrity sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==
538
+
dependencies:
539
+
dequal "^2.0.3"
540
+
541
+
json-schema-traverse@^1.0.0:
542
+
version "1.0.0"
543
+
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
544
+
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
545
+
546
+
kleur@^3.0.3:
547
+
version "3.0.3"
548
+
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
549
+
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
550
+
551
+
libsql@^0.4.4:
552
+
version "0.4.7"
553
+
resolved "https://registry.yarnpkg.com/libsql/-/libsql-0.4.7.tgz#dc80f94c58ac8146adc351e82f76dd12366fe051"
554
+
integrity sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==
555
+
dependencies:
556
+
"@neon-rs/load" "^0.0.4"
557
+
detect-libc "2.0.2"
558
+
optionalDependencies:
559
+
"@libsql/darwin-arm64" "0.4.7"
560
+
"@libsql/darwin-x64" "0.4.7"
561
+
"@libsql/linux-arm64-gnu" "0.4.7"
562
+
"@libsql/linux-arm64-musl" "0.4.7"
563
+
"@libsql/linux-x64-gnu" "0.4.7"
564
+
"@libsql/linux-x64-musl" "0.4.7"
565
+
"@libsql/win32-x64-msvc" "0.4.7"
566
+
567
+
light-my-request@^5.11.0:
568
+
version "5.14.0"
569
+
resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.14.0.tgz#11ddae56de4053fd5c1845cbfbee5c29e8a257e7"
570
+
integrity sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==
571
+
dependencies:
572
+
cookie "^0.7.0"
573
+
process-warning "^3.0.0"
574
+
set-cookie-parser "^2.4.1"
575
+
576
+
light-my-request@^6.0.0:
577
+
version "6.6.0"
578
+
resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-6.6.0.tgz#c9448772323f65f33720fb5979c7841f14060add"
579
+
integrity sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==
580
+
dependencies:
581
+
cookie "^1.0.1"
582
+
process-warning "^4.0.0"
583
+
set-cookie-parser "^2.6.0"
584
+
585
+
multiformats@^13.0.0:
586
+
version "13.3.2"
587
+
resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.2.tgz#a77c2a09c490e90c73b3049551604e6e1a4854e0"
588
+
integrity sha512-qbB0CQDt3QKfiAzZ5ZYjLFOs+zW43vA4uyM8g27PeEuXZybUOFyjrVdP93HPBHMoglibwfkdVwbzfUq8qGcH6g==
589
+
590
+
node-domexception@^1.0.0:
591
+
version "1.0.0"
592
+
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
593
+
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
594
+
595
+
node-fetch@^3.3.2:
596
+
version "3.3.2"
597
+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
598
+
integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
599
+
dependencies:
600
+
data-uri-to-buffer "^4.0.0"
601
+
fetch-blob "^3.1.4"
602
+
formdata-polyfill "^4.0.10"
603
+
604
+
on-exit-leak-free@^2.1.0:
605
+
version "2.1.2"
606
+
resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8"
607
+
integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==
608
+
609
+
once@^1.4.0:
610
+
version "1.4.0"
611
+
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
612
+
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
613
+
dependencies:
614
+
wrappy "1"
615
+
616
+
pino-abstract-transport@^2.0.0:
617
+
version "2.0.0"
618
+
resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60"
619
+
integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==
620
+
dependencies:
621
+
split2 "^4.0.0"
622
+
623
+
pino-std-serializers@^7.0.0:
624
+
version "7.0.0"
625
+
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b"
626
+
integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==
627
+
628
+
pino@^9.0.0:
629
+
version "9.6.0"
630
+
resolved "https://registry.yarnpkg.com/pino/-/pino-9.6.0.tgz#6bc628159ba0cc81806d286718903b7fc6b13169"
631
+
integrity sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==
632
+
dependencies:
633
+
atomic-sleep "^1.0.0"
634
+
fast-redact "^3.1.1"
635
+
on-exit-leak-free "^2.1.0"
636
+
pino-abstract-transport "^2.0.0"
637
+
pino-std-serializers "^7.0.0"
638
+
process-warning "^4.0.0"
639
+
quick-format-unescaped "^4.0.3"
640
+
real-require "^0.2.0"
641
+
safe-stable-stringify "^2.3.1"
642
+
sonic-boom "^4.0.1"
643
+
thread-stream "^3.0.0"
644
+
645
+
process-warning@^3.0.0:
646
+
version "3.0.0"
647
+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b"
648
+
integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==
649
+
650
+
process-warning@^4.0.0:
651
+
version "4.0.1"
652
+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.1.tgz#5c1db66007c67c756e4e09eb170cdece15da32fb"
653
+
integrity sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==
654
+
655
+
process-warning@^5.0.0:
656
+
version "5.0.0"
657
+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7"
658
+
integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==
659
+
660
+
promise-limit@^2.7.0:
661
+
version "2.7.0"
662
+
resolved "https://registry.yarnpkg.com/promise-limit/-/promise-limit-2.7.0.tgz#eb5737c33342a030eaeaecea9b3d3a93cb592b26"
663
+
integrity sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==
664
+
665
+
prompts@^2.4.2:
666
+
version "2.4.2"
667
+
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
668
+
integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
669
+
dependencies:
670
+
kleur "^3.0.3"
671
+
sisteransi "^1.0.5"
672
+
673
+
proxy-addr@^2.0.7:
674
+
version "2.0.7"
675
+
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
676
+
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
677
+
dependencies:
678
+
forwarded "0.2.0"
679
+
ipaddr.js "1.9.1"
680
+
681
+
quick-format-unescaped@^4.0.3:
682
+
version "4.0.4"
683
+
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
684
+
integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
685
+
686
+
readable-stream@^3.1.1:
687
+
version "3.6.2"
688
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
689
+
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
690
+
dependencies:
691
+
inherits "^2.0.3"
692
+
string_decoder "^1.1.1"
693
+
util-deprecate "^1.0.1"
694
+
695
+
real-require@^0.2.0:
696
+
version "0.2.0"
697
+
resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78"
698
+
integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
699
+
700
+
require-from-string@^2.0.2:
701
+
version "2.0.2"
702
+
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
703
+
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
704
+
705
+
ret@~0.4.0:
706
+
version "0.4.3"
707
+
resolved "https://registry.yarnpkg.com/ret/-/ret-0.4.3.tgz#5243fa30e704a2e78a9b9b1e86079e15891aa85c"
708
+
integrity sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==
709
+
710
+
ret@~0.5.0:
711
+
version "0.5.0"
712
+
resolved "https://registry.yarnpkg.com/ret/-/ret-0.5.0.tgz#30a4d38a7e704bd96dc5ffcbe7ce2a9274c41c95"
713
+
integrity sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==
714
+
715
+
reusify@^1.0.4:
716
+
version "1.1.0"
717
+
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f"
718
+
integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
719
+
720
+
rfdc@^1.2.0, rfdc@^1.3.0, rfdc@^1.3.1:
721
+
version "1.4.1"
722
+
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
723
+
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
724
+
725
+
safe-buffer@~5.2.0:
726
+
version "5.2.1"
727
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
728
+
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
729
+
730
+
safe-regex2@^3.1.0:
731
+
version "3.1.0"
732
+
resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-3.1.0.tgz#fd7ec23908e2c730e1ce7359a5b72883a87d2763"
733
+
integrity sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==
734
+
dependencies:
735
+
ret "~0.4.0"
736
+
737
+
safe-regex2@^5.0.0:
738
+
version "5.0.0"
739
+
resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-5.0.0.tgz#762e4a4c328603427281d2b99662f2d04e4ae811"
740
+
integrity sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==
741
+
dependencies:
742
+
ret "~0.5.0"
743
+
744
+
safe-stable-stringify@^2.3.1:
745
+
version "2.5.0"
746
+
resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
747
+
integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
748
+
749
+
secure-json-parse@^2.7.0:
750
+
version "2.7.0"
751
+
resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862"
752
+
integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==
753
+
754
+
secure-json-parse@^4.0.0:
755
+
version "4.0.0"
756
+
resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-4.0.0.tgz#2ee1b7581be38ab348bab5a3e49280ba80a89c85"
757
+
integrity sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==
758
+
759
+
semver@^7.5.4, semver@^7.6.0:
760
+
version "7.7.1"
761
+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
762
+
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
763
+
764
+
set-cookie-parser@^2.4.1, set-cookie-parser@^2.6.0:
765
+
version "2.7.1"
766
+
resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
767
+
integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
768
+
769
+
sisteransi@^1.0.5:
770
+
version "1.0.5"
771
+
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
772
+
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
773
+
774
+
sonic-boom@^4.0.1:
775
+
version "4.2.0"
776
+
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d"
777
+
integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==
778
+
dependencies:
779
+
atomic-sleep "^1.0.0"
780
+
781
+
split2@^4.0.0:
782
+
version "4.2.0"
783
+
resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
784
+
integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
785
+
786
+
stream-shift@^1.0.2:
787
+
version "1.0.3"
788
+
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b"
789
+
integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
790
+
791
+
string_decoder@^1.1.1:
792
+
version "1.3.0"
793
+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
794
+
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
795
+
dependencies:
796
+
safe-buffer "~5.2.0"
797
+
798
+
thread-stream@^3.0.0:
799
+
version "3.1.0"
800
+
resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1"
801
+
integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==
802
+
dependencies:
803
+
real-require "^0.2.0"
804
+
805
+
toad-cache@^3.3.0, toad-cache@^3.7.0:
806
+
version "3.7.0"
807
+
resolved "https://registry.yarnpkg.com/toad-cache/-/toad-cache-3.7.0.tgz#b9b63304ea7c45ec34d91f1d2fa513517025c441"
808
+
integrity sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==
809
+
810
+
typescript@^5.8.3:
811
+
version "5.8.3"
812
+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
813
+
integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
814
+
815
+
uint8arrays@^5.1.0:
816
+
version "5.1.0"
817
+
resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1"
818
+
integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==
819
+
dependencies:
820
+
multiformats "^13.0.0"
821
+
822
+
undici-types@~6.21.0:
823
+
version "6.21.0"
824
+
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
825
+
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
826
+
827
+
util-deprecate@^1.0.1:
828
+
version "1.0.2"
829
+
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
830
+
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
831
+
832
+
web-streams-polyfill@^3.0.3:
833
+
version "3.3.3"
834
+
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
835
+
integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
836
+
837
+
wrappy@1:
838
+
version "1.0.2"
839
+
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
840
+
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
841
+
842
+
ws@^8.0.0, ws@^8.13.0:
843
+
version "8.18.2"
844
+
resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a"
845
+
integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==
+72
-80
main.go
+72
-80
main.go
···
1
1
package main
2
2
3
3
import (
4
+
"bytes"
4
5
"context"
5
6
"encoding/json"
6
7
"fmt"
8
+
"io"
7
9
"log"
8
10
"log/slog"
11
+
"net/http"
9
12
"os"
10
13
11
14
"github.com/bluesky-social/indigo/api/bsky"
15
+
"github.com/bluesky-social/indigo/util"
12
16
"github.com/bluesky-social/indigo/xrpc"
13
17
"github.com/bluesky-social/jetstream/pkg/client"
14
18
"github.com/bluesky-social/jetstream/pkg/client/schedulers/sequential"
15
19
"github.com/bluesky-social/jetstream/pkg/models"
16
20
_ "github.com/joho/godotenv/autoload"
21
+
"github.com/redis/go-redis/v9"
17
22
"github.com/urfave/cli/v2"
18
23
)
19
24
25
+
const (
26
+
RedisPrefix = "dsmt/"
27
+
LabelPolLink = "pol-link"
28
+
LabelPolLinkReply = "pol-link-reply"
29
+
)
30
+
20
31
func main() {
21
32
app := &cli.App{
22
33
Name: "dontshowmethis",
23
34
Action: run,
24
35
Flags: []cli.Flag{
25
36
&cli.StringFlag{
26
-
Name: "ozone",
27
-
EnvVars: []string{"OZONE"},
28
-
// Required: true,
29
-
},
30
-
&cli.StringFlag{
31
-
Name: "pds",
32
-
EnvVars: []string{"PDS"},
33
-
Value: "https://bsky.social",
34
-
// Required: true,
37
+
Name: "jetstream-url",
38
+
EnvVars: []string{"JETSTREAM_URL"},
39
+
Value: "wss://jetstream2.us-west.bsky.network/subscribe",
35
40
},
36
41
&cli.StringFlag{
37
-
Name: "username",
38
-
EnvVars: []string{"USERNAME"},
39
-
// Required: true,
42
+
Name: "labeler-url",
43
+
Usage: "skyware labeler event emission url",
44
+
Required: true,
45
+
EnvVars: []string{"LABELER_URL"},
40
46
},
41
47
&cli.StringFlag{
42
-
Name: "password",
43
-
EnvVars: []string{"PASSWORD"},
44
-
// Required: true,
48
+
Name: "labeler-key",
49
+
Usage: "skyware labeler event emission key",
50
+
Required: true,
51
+
EnvVars: []string{"LABELER_KEY"},
45
52
},
46
53
&cli.StringFlag{
47
-
Name: "jetstream-url",
48
-
EnvVars: []string{"JETSTREAM_URL"},
49
-
Value: "wss://jetstream2.us-west.bsky.network/subscribe",
54
+
Name: "redis-addr",
55
+
Usage: "redis addr",
56
+
Required: true,
57
+
EnvVars: []string{"REDIS_ADDR"},
50
58
},
51
59
},
52
60
}
···
55
63
}
56
64
57
65
type DontShowMeThis struct {
58
-
logger *slog.Logger
59
-
client *xrpc.Client
66
+
logger *slog.Logger
67
+
bskyClient *xrpc.Client
68
+
h *http.Client
69
+
r *redis.Client
70
+
71
+
labelerUrl string
72
+
labelerKey string
60
73
}
61
74
62
75
var run = func(cmd *cli.Context) error {
···
65
78
Level: slog.LevelInfo,
66
79
AddSource: true,
67
80
})),
81
+
labelerUrl: cmd.String("labeler-url"),
82
+
labelerKey: cmd.String("labeler-key"),
68
83
}
69
-
70
-
dsmt.startConsumer(cmd.String("jetstream-url"))
71
84
72
85
cli := &xrpc.Client{
73
86
Host: cmd.String("pds"),
···
75
88
Auth: &xrpc.AuthInfo{},
76
89
}
77
90
78
-
// if loaded, err := dsmt.loadSession(); !loaded {
79
-
// if err != nil {
80
-
// fmt.Printf("there was an error when loading the session: %v", err)
81
-
// }
82
-
//
83
-
// res, err := atproto.ServerCreateSession(context.TODO(), cli, &atproto.ServerCreateSession_Input{
84
-
// Identifier: cmd.String("username"),
85
-
// Password: cmd.String("password"),
86
-
// })
87
-
//
88
-
// if err != nil {
89
-
// return err
90
-
// }
91
-
//
92
-
// cli.Auth.Did = res.Did
93
-
// cli.Auth.Handle = res.Handle
94
-
// cli.Auth.AccessJwt = res.AccessJwt
95
-
// cli.Auth.RefreshJwt = res.RefreshJwt
96
-
//
97
-
// dsmt.saveSession()
98
-
// }
99
-
//
100
-
// cli.Headers = map[string]string{
101
-
// "atproto-proxy": cmd.String("ozone") + "#atproto_labeler",
102
-
// }
91
+
dsmt.bskyClient = cli
92
+
93
+
dsmt.h = util.RobustHTTPClient()
94
+
95
+
r := redis.NewClient(&redis.Options{
96
+
Addr: cmd.String("redis-addr"),
97
+
})
98
+
99
+
dsmt.r = r
103
100
104
-
dsmt.client = cli
101
+
dsmt.startConsumer(cmd.String("jetstream-url"))
105
102
106
103
return nil
107
104
}
···
147
144
return nil
148
145
}
149
146
150
-
type session struct {
151
-
Did string `json:"did"`
152
-
Handle string `json:"handle"`
153
-
AccessJwt string `json:"access_jwt"`
154
-
RefreshJwt string `json:"refresh_jwt"`
147
+
type EmitLabelRequest struct {
148
+
Uri string `json:"uri"`
149
+
Label string `json:"label"`
155
150
}
156
151
157
-
func (dsmt *DontShowMeThis) loadSession() (bool, error) {
158
-
b, err := os.ReadFile("./auth.auth")
159
-
if err != nil {
160
-
return false, err
152
+
func (dsmt *DontShowMeThis) emitLabel(ctx context.Context, uri, label string) error {
153
+
body := &EmitLabelRequest{
154
+
Uri: uri,
155
+
Label: label,
161
156
}
162
157
163
-
var s session
164
-
err = json.Unmarshal(b, &s)
158
+
b, err := json.Marshal(body)
165
159
if err != nil {
166
-
return false, err
160
+
return err
167
161
}
168
162
169
-
dsmt.client.Auth.Did = s.Did
170
-
dsmt.client.Auth.Handle = s.Handle
171
-
dsmt.client.Auth.AccessJwt = s.AccessJwt
172
-
dsmt.client.Auth.RefreshJwt = s.RefreshJwt
163
+
req, err := http.NewRequestWithContext(ctx, "POST", dsmt.labelerUrl+"/emit", bytes.NewReader(b))
164
+
if err != nil {
165
+
return err
166
+
}
173
167
174
-
return true, nil
175
-
}
168
+
req.Header.Set("authorization", "Bearer "+dsmt.labelerKey)
169
+
req.Header.Set("content-type", "application/json")
176
170
177
-
func (dsmt *DontShowMeThis) saveSession() {
178
-
s := &session{
179
-
Did: dsmt.client.Auth.Did,
180
-
Handle: dsmt.client.Auth.Handle,
181
-
AccessJwt: dsmt.client.Auth.AccessJwt,
182
-
RefreshJwt: dsmt.client.Auth.RefreshJwt,
171
+
resp, err := dsmt.h.Do(req)
172
+
if err != nil {
173
+
return err
183
174
}
175
+
defer resp.Body.Close()
184
176
185
-
// write to file
186
-
b, err := json.Marshal(s)
187
-
if err != nil {
188
-
dsmt.logger.Error("error saving session", "err", err)
189
-
return
177
+
io.Copy(io.Discard, resp.Body)
178
+
179
+
if resp.StatusCode != http.StatusOK {
180
+
return fmt.Errorf("received invalid status code from server: %d", resp.StatusCode)
190
181
}
191
182
192
-
err = os.WriteFile("./auth.auth", b, 0644)
193
-
if err != nil {
194
-
dsmt.logger.Error("error saving session", "err", err)
183
+
if _, err := dsmt.r.SAdd(ctx, RedisPrefix+label, uri).Result(); err != nil {
184
+
return err
195
185
}
186
+
187
+
return nil
196
188
}
+61
sets/domains.go
+61
sets/domains.go
···
1
+
package sets
2
+
3
+
var PolDomains = map[string]bool{
4
+
"nytimes.com": true,
5
+
"theguardian.com": true,
6
+
"open.substack.com": true,
7
+
"npr.org": true,
8
+
"cnn.com": true,
9
+
"washingtonpost.com": true,
10
+
"wsj.com": true,
11
+
"newrepublic.com": true,
12
+
"apnews.com": true,
13
+
"politico.com": true,
14
+
"reut.rs": true,
15
+
"reuters.com": true,
16
+
"nbcnews.com": true,
17
+
"kfor.com": true,
18
+
"huffpost.com": true,
19
+
"rollingstone.com": true,
20
+
"rawstory.com": true,
21
+
"cbsnews.com": true,
22
+
"bbc.com": true,
23
+
"cbc.ca": true,
24
+
"nymag.com": true,
25
+
"wapo.st": true,
26
+
"newsweek.com": true,
27
+
"theatlantic.com": true,
28
+
"variety.com": true,
29
+
"nyti.ms": true,
30
+
"talkingpointsmemo.com": true,
31
+
"thedailybeast.com": true,
32
+
"axios.com": true,
33
+
"publicnotice.co": true,
34
+
"semafor.com": true,
35
+
"msnbc.com": true,
36
+
"liberation.fr": true,
37
+
"newyorker.com": true,
38
+
"independent.co.uk": true,
39
+
"whitehouse.gov": true,
40
+
"motherjones.com": true,
41
+
"bbc.co.uk": true,
42
+
"nbcnews.to": true,
43
+
"theglobeandmail.com": true,
44
+
"cnbc.com": true,
45
+
"defector.com": true,
46
+
"propublica.com": true,
47
+
"nypost.com": true,
48
+
"bloomberg.com": true,
49
+
"ctvnews.ca": true,
50
+
"thetimes.com": true,
51
+
"abc.net.au": true,
52
+
"bloom.bg": true,
53
+
"democracydocker.com": true,
54
+
"cnn.it": true,
55
+
"latimes.com": true,
56
+
"publico.es": true,
57
+
"politico.eu": true,
58
+
"kyivindependent.com": true,
59
+
"abcnews.go.com": true,
60
+
"irishtimes.com": true,
61
+
}