Pronouns labels on Bluesky

Compare changes

Choose any two refs to compare.

+2
.gitignore
···
.env
node_modules
cursor.txt
···
.env
node_modules
cursor.txt
+
*.log
+
labels.db*
-19
src/agent.ts
···
-
import { AtpAgent } from "@atproto/api";
-
import "dotenv/config";
-
-
export const getAgent = async () => {
-
const agent = new AtpAgent({
-
service: process.env.BSKY_SERVICE ?? "https://bsky.social",
-
});
-
-
await agent.login({
-
identifier: process.env.BSKY_IDENTIFIER!,
-
password: process.env.BSKY_PASSWORD!,
-
});
-
-
return agent;
-
};
-
-
AtpAgent.configure({
-
appLabelers: [process.env.DID ?? ""],
-
});
···
+2 -2
tsconfig.json
···
"compilerOptions": {
"strict": true,
"target": "ESNext",
-
"module": "ESNext",
-
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
},
···
"compilerOptions": {
"strict": true,
"target": "ESNext",
+
"module": "nodenext",
+
"moduleResolution": "nodenext",
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
},
+1
.nvmrc
···
···
+
22.9.0
-32
README.md
···
-
## Configuration
-
-
Run `npx @skyware/labeler setup` to convert an existing account into a labeler.
-
-
Create a `.env` file:
-
-
```Dotenv
-
DID = "did:plc:xxx"
-
SIGNING_KEY = "xxx"
-
```
-
-
A `cursor.txt` also needs to be present. It can be left empty, and will update the file every minute with a new cursor.
-
-
Create labels with `npx @skyware/labeler label add` and edit `src/constants.ts` with the related post rkeys and label IDs.
-
-
The server has to be reachable outside your local network using the URL you provided during the account setup (typically, using a reverse proxy such as [Caddy](https://caddyserver.com/)):
-
-
```Caddyfile
-
labeler.example.com {
-
reverse_proxy 127.0.0.1:4001
-
}
-
```
-
-
## Installation & Usage
-
-
```sh
-
npm i
-
```
-
-
```sh
-
npm start
-
```
···
-995
package-lock.json
···
-
{
-
"name": "pronouns-bsky",
-
"version": "1.0.0",
-
"lockfileVersion": 3,
-
"requires": true,
-
"packages": {
-
"": {
-
"name": "pronouns-bsky",
-
"version": "1.0.0",
-
"dependencies": {
-
"@skyware/jetstream": "^0.2.0",
-
"@skyware/labeler": "^0.1.8",
-
"dotenv": "^16.4.5"
-
},
-
"devDependencies": {
-
"@types/node": "^22.7.5",
-
"typescript": "^5.5.3"
-
}
-
},
-
"node_modules/@atcute/base32": {
-
"version": "1.0.0",
-
"resolved": "https://registry.npmjs.org/@atcute/base32/-/base32-1.0.0.tgz",
-
"integrity": "sha512-Mbjsv6kd/ymvDMGjCoh9eqhlpFsoJ6zYguU6xtKxqh1wGhe5rvBOfMRXsEqcp7srn8Bfp8QhevqLgmwrWvzqrA==",
-
"license": "MIT"
-
},
-
"node_modules/@atcute/bluesky": {
-
"version": "1.0.7",
-
"resolved": "https://registry.npmjs.org/@atcute/bluesky/-/bluesky-1.0.7.tgz",
-
"integrity": "sha512-2jPHzl7WbcqRtcAXanJy4Lp638ujqnoGmPCPmBlmpEDP34D7EVKQqjN/mlvglb5n539dThA9xlSgIS8yOxwzDA==",
-
"license": "MIT",
-
"peerDependencies": {
-
"@atcute/client": "^1.0.0 || ^2.0.0"
-
}
-
},
-
"node_modules/@atcute/cbor": {
-
"version": "1.0.5",
-
"resolved": "https://registry.npmjs.org/@atcute/cbor/-/cbor-1.0.5.tgz",
-
"integrity": "sha512-ckWn+ZErzeTgKBuklQfUpsOb5+uAtSJi68Z7+1wJMMEP7iO/V90IIlyTm+19ACuGEuY8SGrfUIWyZvBjhgCTYw==",
-
"license": "MIT",
-
"dependencies": {
-
"@atcute/base32": "^1.0.0",
-
"@atcute/cid": "^1.0.1"
-
}
-
},
-
"node_modules/@atcute/cid": {
-
"version": "1.0.1",
-
"resolved": "https://registry.npmjs.org/@atcute/cid/-/cid-1.0.1.tgz",
-
"integrity": "sha512-92Cor2ruS7y+/wdFutp2qFDjJj4mTcO7HdZ/BhTQRg/nzWdAnTann5DAmYjD+IWRaXd5SYk4dOZnDt4lsGofzg==",
-
"license": "MIT",
-
"dependencies": {
-
"@atcute/base32": "^1.0.0",
-
"@atcute/varint": "^1.0.0"
-
}
-
},
-
"node_modules/@atcute/client": {
-
"version": "2.0.3",
-
"resolved": "https://registry.npmjs.org/@atcute/client/-/client-2.0.3.tgz",
-
"integrity": "sha512-j9GryA5l+4F0BTQWa6/1XmsuSPSq+bqNCY3mrHUGD592hMqUZxgpYDLgRWL+719V287AW/56AwvFYlbjlENp7A==",
-
"license": "MIT"
-
},
-
"node_modules/@atcute/ozone": {
-
"version": "1.0.5",
-
"resolved": "https://registry.npmjs.org/@atcute/ozone/-/ozone-1.0.5.tgz",
-
"integrity": "sha512-53+KoRlvzinv1NUESFOHPPK2kF/CFoQc9um1xH3OPhe29x7RP3PNEBXSc53mnbsAg80dTuh83xqwTrpdJ3o33g==",
-
"license": "MIT",
-
"peerDependencies": {
-
"@atcute/bluesky": "^1.0.0",
-
"@atcute/client": "^1.0.0 || ^2.0.0"
-
}
-
},
-
"node_modules/@atcute/varint": {
-
"version": "1.0.0",
-
"resolved": "https://registry.npmjs.org/@atcute/varint/-/varint-1.0.0.tgz",
-
"integrity": "sha512-NEBOGkdaDY8cjlDg49kefIsRM7iv/4oReEnOr3bN4tF3IxBGdc6Io1NCJz1xNBNdUL+3VDG3CKHiRji91HXaTg==",
-
"license": "MIT"
-
},
-
"node_modules/@fastify/ajv-compiler": {
-
"version": "3.6.0",
-
"resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz",
-
"integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==",
-
"license": "MIT",
-
"dependencies": {
-
"ajv": "^8.11.0",
-
"ajv-formats": "^2.1.1",
-
"fast-uri": "^2.0.0"
-
}
-
},
-
"node_modules/@fastify/error": {
-
"version": "3.4.1",
-
"resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz",
-
"integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==",
-
"license": "MIT"
-
},
-
"node_modules/@fastify/fast-json-stringify-compiler": {
-
"version": "4.3.0",
-
"resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
-
"integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-json-stringify": "^5.7.0"
-
}
-
},
-
"node_modules/@fastify/merge-json-schemas": {
-
"version": "0.1.1",
-
"resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz",
-
"integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-deep-equal": "^3.1.3"
-
}
-
},
-
"node_modules/@fastify/websocket": {
-
"version": "10.0.1",
-
"resolved": "https://registry.npmjs.org/@fastify/websocket/-/websocket-10.0.1.tgz",
-
"integrity": "sha512-8/pQIxTPRD8U94aILTeJ+2O3el/r19+Ej5z1O1mXlqplsUH7KzCjAI0sgd5DM/NoPjAi5qLFNIjgM5+9/rGSNw==",
-
"license": "MIT",
-
"dependencies": {
-
"duplexify": "^4.1.2",
-
"fastify-plugin": "^4.0.0",
-
"ws": "^8.0.0"
-
}
-
},
-
"node_modules/@libsql/darwin-arm64": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.4.6.tgz",
-
"integrity": "sha512-45i604CJ2Lubbg7NqtDodjarF6VgST8rS5R8xB++MoRqixtDns9PZ6tocT9pRJDWuTWEiy2sjthPOFWMKwYAsg==",
-
"cpu": [
-
"arm64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"darwin"
-
]
-
},
-
"node_modules/@libsql/darwin-x64": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.4.6.tgz",
-
"integrity": "sha512-dRKliflhfr5zOPSNgNJ6C2nZDd4YA8bTXF3MUNqNkcxQ8BffaH9uUwL9kMq89LkFIZQHcyP75bBgZctxfJ/H5Q==",
-
"cpu": [
-
"x64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"darwin"
-
]
-
},
-
"node_modules/@libsql/linux-arm64-gnu": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.4.6.tgz",
-
"integrity": "sha512-DMPavVyY6vYPAYcQR1iOotHszg+5xSjHSg6F9kNecPX0KKdGq84zuPJmORfKOPtaWvzPewNFdML/e+s1fu09XQ==",
-
"cpu": [
-
"arm64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"linux"
-
]
-
},
-
"node_modules/@libsql/linux-arm64-musl": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.4.6.tgz",
-
"integrity": "sha512-whuHSYAZyclGjM3L0mKGXyWqdAy7qYvPPn+J1ve7FtGkFlM0DiIPjA5K30aWSGJSRh72sD9DBZfnu8CpfSjT6w==",
-
"cpu": [
-
"arm64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"linux"
-
]
-
},
-
"node_modules/@libsql/linux-x64-gnu": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.4.6.tgz",
-
"integrity": "sha512-0ggx+5RwEbYabIlDBBAvavdfIJCZ757u6nDZtBeQIhzW99EKbWG3lvkXHM3qudFb/pDWSUY4RFBm6vVtF1cJGA==",
-
"cpu": [
-
"x64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"linux"
-
]
-
},
-
"node_modules/@libsql/linux-x64-musl": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.4.6.tgz",
-
"integrity": "sha512-SWNrv7Hz72QWlbM/ZsbL35MPopZavqCUmQz2HNDZ55t0F+kt8pXuP+bbI2KvmaQ7wdsoqAA4qBmjol0+bh4ndw==",
-
"cpu": [
-
"x64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"linux"
-
]
-
},
-
"node_modules/@libsql/win32-x64-msvc": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.4.6.tgz",
-
"integrity": "sha512-Q0axn110zDNELfkEog3Nl8p9BU4eI/UvgaHevGyOiSDN7s0KPfj0j6jwVHk4oz3o/d/Gg3DRIxomZ4ftfTOy/g==",
-
"cpu": [
-
"x64"
-
],
-
"license": "MIT",
-
"optional": true,
-
"os": [
-
"win32"
-
]
-
},
-
"node_modules/@neon-rs/load": {
-
"version": "0.0.4",
-
"resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz",
-
"integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==",
-
"license": "MIT"
-
},
-
"node_modules/@noble/curves": {
-
"version": "1.6.0",
-
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz",
-
"integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==",
-
"license": "MIT",
-
"dependencies": {
-
"@noble/hashes": "1.5.0"
-
},
-
"engines": {
-
"node": "^14.21.3 || >=16"
-
},
-
"funding": {
-
"url": "https://paulmillr.com/funding/"
-
}
-
},
-
"node_modules/@noble/hashes": {
-
"version": "1.5.0",
-
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz",
-
"integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==",
-
"license": "MIT",
-
"engines": {
-
"node": "^14.21.3 || >=16"
-
},
-
"funding": {
-
"url": "https://paulmillr.com/funding/"
-
}
-
},
-
"node_modules/@skyware/jetstream": {
-
"version": "0.2.0",
-
"resolved": "https://registry.npmjs.org/@skyware/jetstream/-/jetstream-0.2.0.tgz",
-
"integrity": "sha512-nydEVe47fc3Cn9yLjk0Tos05pB4PYVOXno8RKlf0QguJUF48ASKx9xA4jUHqEI1dk2oHuHWoXpo9ic+RIgk6yw==",
-
"license": "MPL-2.0",
-
"dependencies": {
-
"@atcute/bluesky": "^1.0.6",
-
"partysocket": "^1.0.2"
-
}
-
},
-
"node_modules/@skyware/labeler": {
-
"version": "0.1.11",
-
"resolved": "https://registry.npmjs.org/@skyware/labeler/-/labeler-0.1.11.tgz",
-
"integrity": "sha512-05eYuOswIlhSmc4X55w0NhZC0d7X2irWNVCHI42ketgp408QcFTohzlmyGEAAzUAuLSsOYdUfgC+k9wlcTZ06g==",
-
"license": "MPL-2.0",
-
"dependencies": {
-
"@atcute/bluesky": "^1.0.7",
-
"@atcute/cbor": "^1.0.2",
-
"@atcute/client": "^2.0.3",
-
"@atcute/ozone": "^1.0.4",
-
"@fastify/websocket": "^10.0.1",
-
"@noble/curves": "^1.6.0",
-
"@noble/hashes": "^1.5.0",
-
"fastify": "^4.28.1",
-
"libsql": "^0.4.6",
-
"prompts": "^2.4.2",
-
"uint8arrays": "^5.1.0"
-
},
-
"bin": {
-
"labeler": "dist/bin.js"
-
}
-
},
-
"node_modules/@types/node": {
-
"version": "22.7.9",
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz",
-
"integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==",
-
"dev": true,
-
"license": "MIT",
-
"dependencies": {
-
"undici-types": "~6.19.2"
-
}
-
},
-
"node_modules/abstract-logging": {
-
"version": "2.0.1",
-
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
-
"integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==",
-
"license": "MIT"
-
},
-
"node_modules/ajv": {
-
"version": "8.17.1",
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
-
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-deep-equal": "^3.1.3",
-
"fast-uri": "^3.0.1",
-
"json-schema-traverse": "^1.0.0",
-
"require-from-string": "^2.0.2"
-
},
-
"funding": {
-
"type": "github",
-
"url": "https://github.com/sponsors/epoberezkin"
-
}
-
},
-
"node_modules/ajv-formats": {
-
"version": "2.1.1",
-
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
-
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
-
"license": "MIT",
-
"dependencies": {
-
"ajv": "^8.0.0"
-
},
-
"peerDependencies": {
-
"ajv": "^8.0.0"
-
},
-
"peerDependenciesMeta": {
-
"ajv": {
-
"optional": true
-
}
-
}
-
},
-
"node_modules/ajv/node_modules/fast-uri": {
-
"version": "3.0.3",
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
-
"integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
-
"license": "BSD-3-Clause"
-
},
-
"node_modules/atomic-sleep": {
-
"version": "1.0.0",
-
"resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
-
"integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=8.0.0"
-
}
-
},
-
"node_modules/avvio": {
-
"version": "8.4.0",
-
"resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz",
-
"integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==",
-
"license": "MIT",
-
"dependencies": {
-
"@fastify/error": "^3.3.0",
-
"fastq": "^1.17.1"
-
}
-
},
-
"node_modules/cookie": {
-
"version": "0.7.2",
-
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
-
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
-
"license": "MIT",
-
"engines": {
-
"node": ">= 0.6"
-
}
-
},
-
"node_modules/detect-libc": {
-
"version": "2.0.2",
-
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
-
"integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
-
"license": "Apache-2.0",
-
"engines": {
-
"node": ">=8"
-
}
-
},
-
"node_modules/dotenv": {
-
"version": "16.4.5",
-
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
-
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
-
"license": "BSD-2-Clause",
-
"engines": {
-
"node": ">=12"
-
},
-
"funding": {
-
"url": "https://dotenvx.com"
-
}
-
},
-
"node_modules/duplexify": {
-
"version": "4.1.3",
-
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
-
"integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==",
-
"license": "MIT",
-
"dependencies": {
-
"end-of-stream": "^1.4.1",
-
"inherits": "^2.0.3",
-
"readable-stream": "^3.1.1",
-
"stream-shift": "^1.0.2"
-
}
-
},
-
"node_modules/end-of-stream": {
-
"version": "1.4.4",
-
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-
"license": "MIT",
-
"dependencies": {
-
"once": "^1.4.0"
-
}
-
},
-
"node_modules/event-target-shim": {
-
"version": "6.0.2",
-
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-6.0.2.tgz",
-
"integrity": "sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=10.13.0"
-
},
-
"funding": {
-
"url": "https://github.com/sponsors/mysticatea"
-
}
-
},
-
"node_modules/fast-content-type-parse": {
-
"version": "1.1.0",
-
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
-
"integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==",
-
"license": "MIT"
-
},
-
"node_modules/fast-decode-uri-component": {
-
"version": "1.0.1",
-
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
-
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==",
-
"license": "MIT"
-
},
-
"node_modules/fast-deep-equal": {
-
"version": "3.1.3",
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-
"license": "MIT"
-
},
-
"node_modules/fast-json-stringify": {
-
"version": "5.16.1",
-
"resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz",
-
"integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==",
-
"license": "MIT",
-
"dependencies": {
-
"@fastify/merge-json-schemas": "^0.1.0",
-
"ajv": "^8.10.0",
-
"ajv-formats": "^3.0.1",
-
"fast-deep-equal": "^3.1.3",
-
"fast-uri": "^2.1.0",
-
"json-schema-ref-resolver": "^1.0.1",
-
"rfdc": "^1.2.0"
-
}
-
},
-
"node_modules/fast-json-stringify/node_modules/ajv-formats": {
-
"version": "3.0.1",
-
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
-
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
-
"license": "MIT",
-
"dependencies": {
-
"ajv": "^8.0.0"
-
},
-
"peerDependencies": {
-
"ajv": "^8.0.0"
-
},
-
"peerDependenciesMeta": {
-
"ajv": {
-
"optional": true
-
}
-
}
-
},
-
"node_modules/fast-querystring": {
-
"version": "1.1.2",
-
"resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
-
"integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-decode-uri-component": "^1.0.1"
-
}
-
},
-
"node_modules/fast-redact": {
-
"version": "3.5.0",
-
"resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
-
"integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=6"
-
}
-
},
-
"node_modules/fast-uri": {
-
"version": "2.4.0",
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
-
"integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==",
-
"license": "MIT"
-
},
-
"node_modules/fastify": {
-
"version": "4.28.1",
-
"resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz",
-
"integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==",
-
"funding": [
-
{
-
"type": "github",
-
"url": "https://github.com/sponsors/fastify"
-
},
-
{
-
"type": "opencollective",
-
"url": "https://opencollective.com/fastify"
-
}
-
],
-
"license": "MIT",
-
"dependencies": {
-
"@fastify/ajv-compiler": "^3.5.0",
-
"@fastify/error": "^3.4.0",
-
"@fastify/fast-json-stringify-compiler": "^4.3.0",
-
"abstract-logging": "^2.0.1",
-
"avvio": "^8.3.0",
-
"fast-content-type-parse": "^1.1.0",
-
"fast-json-stringify": "^5.8.0",
-
"find-my-way": "^8.0.0",
-
"light-my-request": "^5.11.0",
-
"pino": "^9.0.0",
-
"process-warning": "^3.0.0",
-
"proxy-addr": "^2.0.7",
-
"rfdc": "^1.3.0",
-
"secure-json-parse": "^2.7.0",
-
"semver": "^7.5.4",
-
"toad-cache": "^3.3.0"
-
}
-
},
-
"node_modules/fastify-plugin": {
-
"version": "4.5.1",
-
"resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz",
-
"integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==",
-
"license": "MIT"
-
},
-
"node_modules/fastq": {
-
"version": "1.17.1",
-
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-
"integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
-
"license": "ISC",
-
"dependencies": {
-
"reusify": "^1.0.4"
-
}
-
},
-
"node_modules/find-my-way": {
-
"version": "8.2.2",
-
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz",
-
"integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-deep-equal": "^3.1.3",
-
"fast-querystring": "^1.0.0",
-
"safe-regex2": "^3.1.0"
-
},
-
"engines": {
-
"node": ">=14"
-
}
-
},
-
"node_modules/forwarded": {
-
"version": "0.2.0",
-
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
-
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
-
"license": "MIT",
-
"engines": {
-
"node": ">= 0.6"
-
}
-
},
-
"node_modules/inherits": {
-
"version": "2.0.4",
-
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-
"license": "ISC"
-
},
-
"node_modules/ipaddr.js": {
-
"version": "1.9.1",
-
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
-
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
-
"license": "MIT",
-
"engines": {
-
"node": ">= 0.10"
-
}
-
},
-
"node_modules/json-schema-ref-resolver": {
-
"version": "1.0.1",
-
"resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz",
-
"integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==",
-
"license": "MIT",
-
"dependencies": {
-
"fast-deep-equal": "^3.1.3"
-
}
-
},
-
"node_modules/json-schema-traverse": {
-
"version": "1.0.0",
-
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
-
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-
"license": "MIT"
-
},
-
"node_modules/kleur": {
-
"version": "3.0.3",
-
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=6"
-
}
-
},
-
"node_modules/libsql": {
-
"version": "0.4.6",
-
"resolved": "https://registry.npmjs.org/libsql/-/libsql-0.4.6.tgz",
-
"integrity": "sha512-F5M+ltteK6dCcpjMahrkgT96uFJvVI8aQ4r9f2AzHQjC7BkAYtvfMSTWGvRBezRgMUIU2h1Sy0pF9nOGOD5iyA==",
-
"cpu": [
-
"x64",
-
"arm64",
-
"wasm32"
-
],
-
"license": "MIT",
-
"os": [
-
"darwin",
-
"linux",
-
"win32"
-
],
-
"dependencies": {
-
"@neon-rs/load": "^0.0.4",
-
"detect-libc": "2.0.2"
-
},
-
"optionalDependencies": {
-
"@libsql/darwin-arm64": "0.4.6",
-
"@libsql/darwin-x64": "0.4.6",
-
"@libsql/linux-arm64-gnu": "0.4.6",
-
"@libsql/linux-arm64-musl": "0.4.6",
-
"@libsql/linux-x64-gnu": "0.4.6",
-
"@libsql/linux-x64-musl": "0.4.6",
-
"@libsql/win32-x64-msvc": "0.4.6"
-
}
-
},
-
"node_modules/light-my-request": {
-
"version": "5.14.0",
-
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz",
-
"integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==",
-
"license": "BSD-3-Clause",
-
"dependencies": {
-
"cookie": "^0.7.0",
-
"process-warning": "^3.0.0",
-
"set-cookie-parser": "^2.4.1"
-
}
-
},
-
"node_modules/multiformats": {
-
"version": "13.3.0",
-
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.3.0.tgz",
-
"integrity": "sha512-CBiqvsufgmpo01VT5ze94O+uc+Pbf6f/sThlvWss0sBZmAOu6GQn5usrYV2sf2mr17FWYc0rO8c/CNe2T90QAA==",
-
"license": "Apache-2.0 OR MIT"
-
},
-
"node_modules/on-exit-leak-free": {
-
"version": "2.1.2",
-
"resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
-
"integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=14.0.0"
-
}
-
},
-
"node_modules/once": {
-
"version": "1.4.0",
-
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-
"license": "ISC",
-
"dependencies": {
-
"wrappy": "1"
-
}
-
},
-
"node_modules/partysocket": {
-
"version": "1.0.2",
-
"resolved": "https://registry.npmjs.org/partysocket/-/partysocket-1.0.2.tgz",
-
"integrity": "sha512-rAFOUKImaq+VBk2B+2RTBsWEvlnarEP53nchoUHzpVs8V6fG2/estihOTslTQUWHVuHEKDL5k8htG8K3TngyFA==",
-
"license": "ISC",
-
"dependencies": {
-
"event-target-shim": "^6.0.2"
-
}
-
},
-
"node_modules/pino": {
-
"version": "9.5.0",
-
"resolved": "https://registry.npmjs.org/pino/-/pino-9.5.0.tgz",
-
"integrity": "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==",
-
"license": "MIT",
-
"dependencies": {
-
"atomic-sleep": "^1.0.0",
-
"fast-redact": "^3.1.1",
-
"on-exit-leak-free": "^2.1.0",
-
"pino-abstract-transport": "^2.0.0",
-
"pino-std-serializers": "^7.0.0",
-
"process-warning": "^4.0.0",
-
"quick-format-unescaped": "^4.0.3",
-
"real-require": "^0.2.0",
-
"safe-stable-stringify": "^2.3.1",
-
"sonic-boom": "^4.0.1",
-
"thread-stream": "^3.0.0"
-
},
-
"bin": {
-
"pino": "bin.js"
-
}
-
},
-
"node_modules/pino-abstract-transport": {
-
"version": "2.0.0",
-
"resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz",
-
"integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==",
-
"license": "MIT",
-
"dependencies": {
-
"split2": "^4.0.0"
-
}
-
},
-
"node_modules/pino-std-serializers": {
-
"version": "7.0.0",
-
"resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz",
-
"integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==",
-
"license": "MIT"
-
},
-
"node_modules/pino/node_modules/process-warning": {
-
"version": "4.0.0",
-
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz",
-
"integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==",
-
"license": "MIT"
-
},
-
"node_modules/process-warning": {
-
"version": "3.0.0",
-
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
-
"integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
-
"license": "MIT"
-
},
-
"node_modules/prompts": {
-
"version": "2.4.2",
-
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
-
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
-
"license": "MIT",
-
"dependencies": {
-
"kleur": "^3.0.3",
-
"sisteransi": "^1.0.5"
-
},
-
"engines": {
-
"node": ">= 6"
-
}
-
},
-
"node_modules/proxy-addr": {
-
"version": "2.0.7",
-
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
-
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
-
"license": "MIT",
-
"dependencies": {
-
"forwarded": "0.2.0",
-
"ipaddr.js": "1.9.1"
-
},
-
"engines": {
-
"node": ">= 0.10"
-
}
-
},
-
"node_modules/quick-format-unescaped": {
-
"version": "4.0.4",
-
"resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
-
"integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
-
"license": "MIT"
-
},
-
"node_modules/readable-stream": {
-
"version": "3.6.2",
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
-
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
-
"license": "MIT",
-
"dependencies": {
-
"inherits": "^2.0.3",
-
"string_decoder": "^1.1.1",
-
"util-deprecate": "^1.0.1"
-
},
-
"engines": {
-
"node": ">= 6"
-
}
-
},
-
"node_modules/real-require": {
-
"version": "0.2.0",
-
"resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
-
"integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
-
"license": "MIT",
-
"engines": {
-
"node": ">= 12.13.0"
-
}
-
},
-
"node_modules/require-from-string": {
-
"version": "2.0.2",
-
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
-
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=0.10.0"
-
}
-
},
-
"node_modules/ret": {
-
"version": "0.4.3",
-
"resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz",
-
"integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=10"
-
}
-
},
-
"node_modules/reusify": {
-
"version": "1.0.4",
-
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-
"license": "MIT",
-
"engines": {
-
"iojs": ">=1.0.0",
-
"node": ">=0.10.0"
-
}
-
},
-
"node_modules/rfdc": {
-
"version": "1.4.1",
-
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
-
"integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
-
"license": "MIT"
-
},
-
"node_modules/safe-buffer": {
-
"version": "5.2.1",
-
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-
"funding": [
-
{
-
"type": "github",
-
"url": "https://github.com/sponsors/feross"
-
},
-
{
-
"type": "patreon",
-
"url": "https://www.patreon.com/feross"
-
},
-
{
-
"type": "consulting",
-
"url": "https://feross.org/support"
-
}
-
],
-
"license": "MIT"
-
},
-
"node_modules/safe-regex2": {
-
"version": "3.1.0",
-
"resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz",
-
"integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==",
-
"license": "MIT",
-
"dependencies": {
-
"ret": "~0.4.0"
-
}
-
},
-
"node_modules/safe-stable-stringify": {
-
"version": "2.5.0",
-
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
-
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=10"
-
}
-
},
-
"node_modules/secure-json-parse": {
-
"version": "2.7.0",
-
"resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
-
"integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
-
"license": "BSD-3-Clause"
-
},
-
"node_modules/semver": {
-
"version": "7.6.3",
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
-
"license": "ISC",
-
"bin": {
-
"semver": "bin/semver.js"
-
},
-
"engines": {
-
"node": ">=10"
-
}
-
},
-
"node_modules/set-cookie-parser": {
-
"version": "2.7.1",
-
"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
-
"integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
-
"license": "MIT"
-
},
-
"node_modules/sisteransi": {
-
"version": "1.0.5",
-
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
-
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
-
"license": "MIT"
-
},
-
"node_modules/sonic-boom": {
-
"version": "4.2.0",
-
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz",
-
"integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==",
-
"license": "MIT",
-
"dependencies": {
-
"atomic-sleep": "^1.0.0"
-
}
-
},
-
"node_modules/split2": {
-
"version": "4.2.0",
-
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
-
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
-
"license": "ISC",
-
"engines": {
-
"node": ">= 10.x"
-
}
-
},
-
"node_modules/stream-shift": {
-
"version": "1.0.3",
-
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
-
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
-
"license": "MIT"
-
},
-
"node_modules/string_decoder": {
-
"version": "1.3.0",
-
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
-
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
-
"license": "MIT",
-
"dependencies": {
-
"safe-buffer": "~5.2.0"
-
}
-
},
-
"node_modules/thread-stream": {
-
"version": "3.1.0",
-
"resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
-
"integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
-
"license": "MIT",
-
"dependencies": {
-
"real-require": "^0.2.0"
-
}
-
},
-
"node_modules/toad-cache": {
-
"version": "3.7.0",
-
"resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
-
"integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=12"
-
}
-
},
-
"node_modules/typescript": {
-
"version": "5.6.3",
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
-
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
-
"dev": true,
-
"license": "Apache-2.0",
-
"bin": {
-
"tsc": "bin/tsc",
-
"tsserver": "bin/tsserver"
-
},
-
"engines": {
-
"node": ">=14.17"
-
}
-
},
-
"node_modules/uint8arrays": {
-
"version": "5.1.0",
-
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz",
-
"integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==",
-
"license": "Apache-2.0 OR MIT",
-
"dependencies": {
-
"multiformats": "^13.0.0"
-
}
-
},
-
"node_modules/undici-types": {
-
"version": "6.19.8",
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
-
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
-
"dev": true,
-
"license": "MIT"
-
},
-
"node_modules/util-deprecate": {
-
"version": "1.0.2",
-
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
-
"license": "MIT"
-
},
-
"node_modules/wrappy": {
-
"version": "1.0.2",
-
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
-
"license": "ISC"
-
},
-
"node_modules/ws": {
-
"version": "8.18.0",
-
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
-
"license": "MIT",
-
"engines": {
-
"node": ">=10.0.0"
-
},
-
"peerDependencies": {
-
"bufferutil": "^4.0.1",
-
"utf-8-validate": ">=5.0.2"
-
},
-
"peerDependenciesMeta": {
-
"bufferutil": {
-
"optional": true
-
},
-
"utf-8-validate": {
-
"optional": true
-
}
-
}
-
}
-
}
-
}
···
+6
site/postcss.config.js
···
···
+
export default {
+
plugins: {
+
tailwindcss: {},
+
autoprefixer: {},
+
},
+
}
+23
site/src/index.css
···
···
+
@tailwind base;
+
@tailwind components;
+
@tailwind utilities;
+
+
html {
+
--scroll-border: rgb(24 24 27);
+
--scroll-track: rgb(64 64 64);
+
--scroll-thumb: rgb(75 75 75);
+
+
scrollbar-width: thin;
+
scroll-behavior: smooth;
+
}
+
*::-webkit-scrollbar {
+
width: 5px;
+
background-color: var(--scroll-track);
+
}
+
*::-webkit-scrollbar-track {
+
border: 1px solid var(--scroll-border);
+
background-color: var(--scroll-track);
+
}
+
*::-webkit-scrollbar-thumb {
+
background-color: var(--scroll-thumb);
+
}
+15
site/src/index.tsx
···
···
+
/* @refresh reload */
+
import './index.css';
+
import { render } from 'solid-js/web';
+
+
import App from './App';
+
+
const root = document.getElementById('root');
+
+
if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
+
throw new Error(
+
'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?',
+
);
+
}
+
+
render(() => <App />, root!);
+15
site/tailwind.config.ts
···
···
+
import type { Config } from 'tailwindcss';
+
+
const config: Config = {
+
content: [
+
'./index.html',
+
'./src/**/*.{js,ts,jsx,tsx,css,md,mdx,html,json,scss}',
+
],
+
darkMode: 'class',
+
theme: {
+
extend: {},
+
},
+
plugins: [],
+
};
+
+
export default config;
+17
site/tsconfig.json
···
···
+
{
+
"compilerOptions": {
+
"target": "ESNext",
+
"module": "ESNext",
+
"strict": true,
+
"moduleResolution": "nodenext",
+
"allowSyntheticDefaultImports": true,
+
"esModuleInterop": true,
+
"jsx": "preserve",
+
"jsxImportSource": "solid-js",
+
"types": [
+
"vite/client"
+
],
+
"noEmit": true,
+
"isolatedModules": true
+
}
+
}
+20
site/vite.config.ts
···
···
+
import { defineConfig } from 'vite';
+
import solidPlugin from 'vite-plugin-solid';
+
// import devtools from 'solid-devtools/vite';
+
+
export default defineConfig({
+
plugins: [
+
/*
+
Uncomment the following line to enable solid-devtools.
+
For more info see https://github.com/thetarnav/solid-devtools/tree/main/packages/extension#readme
+
*/
+
// devtools(),
+
solidPlugin(),
+
],
+
server: {
+
port: 3000,
+
},
+
build: {
+
target: 'esnext',
+
},
+
});
+10 -10
src/label.ts
···
-
import { ComAtprotoLabelDefs } from "@atcute/client/lexicons";
import { DID, PORT, MAXLABELS, POSTS, SIGN_KEY, DELETE } from "./constants.js";
import { LabelerServer } from "@skyware/labeler";
···
else console.log(`Labeler server listening on ${address}`);
});
-
export const label = (did: string, rkey: string) => {
-
const query = server.db
-
.prepare<string[]>(`SELECT * FROM labels WHERE uri = ?`)
-
.all(did) as ComAtprotoLabelDefs.Label[];
-
const labels = query.reduce((set, label) => {
-
if (!label.neg) set.add(label.val);
-
else set.delete(label.val);
return set;
}, new Set<string>());
try {
if (rkey.includes(DELETE)) {
-
server.createLabels({ uri: did }, { negate: [...labels] });
console.log(`${new Date().toISOString()} Deleted labels: ${did}`);
} else if (labels.size < MAXLABELS && POSTS[rkey]) {
-
server.createLabel({ uri: did, val: POSTS[rkey] });
console.log(`${new Date().toISOString()} Labeled ${did}: ${POSTS[rkey]}`);
}
} catch (err) {
···
import { DID, PORT, MAXLABELS, POSTS, SIGN_KEY, DELETE } from "./constants.js";
import { LabelerServer } from "@skyware/labeler";
···
else console.log(`Labeler server listening on ${address}`);
});
+
export const label = async (did: string, rkey: string) => {
+
const query = await server.db.execute({
+
sql: "SELECT val, neg FROM labels WHERE uri = ?",
+
args: [did],
+
});
+
const labels = query.rows.reduce((set, label) => {
+
if (!label.neg) set.add(label.val!.toString());
+
else set.delete(label.val!.toString());
return set;
}, new Set<string>());
try {
if (rkey.includes(DELETE)) {
+
await server.createLabels({ uri: did }, { negate: [...labels] });
console.log(`${new Date().toISOString()} Deleted labels: ${did}`);
} else if (labels.size < MAXLABELS && POSTS[rkey]) {
+
await server.createLabel({ uri: did, val: POSTS[rkey] });
console.log(`${new Date().toISOString()} Labeled ${did}: ${POSTS[rkey]}`);
}
} catch (err) {
site/src/assets/favicon.ico

This is a binary file and will not be displayed.

+1 -1
LICENSE
···
-
Copyright (c) 2024 Juliet Philippe <notjuliet@riseup.net>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
···
+
Copyright (c) 2024 Juliet Philippe <m@juli.ee>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
+1 -1
package.json
···
"start": "npx tsx src/main.ts"
},
"devDependencies": {
-
"@types/node": "^22.10.1",
"typescript": "^5.7.2"
},
"dependencies": {
···
"start": "npx tsx src/main.ts"
},
"devDependencies": {
+
"@types/node": "^22.10.2",
"typescript": "^5.7.2"
},
"dependencies": {
+6 -6
pnpm-lock.yaml
···
version: 16.4.7
devDependencies:
'@types/node':
-
specifier: ^22.10.1
-
version: 22.10.1
typescript:
specifier: ^5.7.2
version: 5.7.2
···
resolution: {integrity: sha512-5Xsjly8Crvi+vILmFkObNs5y/FeNj/mIztcm1qfNafUzwv9n9B7O5MQmmg3aZfnalmQWsYfs2BgVlaBBBni5bw==}
hasBin: true
-
'@types/node@22.10.1':
-
resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
'@types/ws@8.5.13':
resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
···
- bufferutil
- utf-8-validate
-
'@types/node@22.10.1':
dependencies:
undici-types: 6.20.0
'@types/ws@8.5.13':
dependencies:
-
'@types/node': 22.10.1
abstract-logging@2.0.1: {}
···
version: 16.4.7
devDependencies:
'@types/node':
+
specifier: ^22.10.2
+
version: 22.10.2
typescript:
specifier: ^5.7.2
version: 5.7.2
···
resolution: {integrity: sha512-5Xsjly8Crvi+vILmFkObNs5y/FeNj/mIztcm1qfNafUzwv9n9B7O5MQmmg3aZfnalmQWsYfs2BgVlaBBBni5bw==}
hasBin: true
+
'@types/node@22.10.2':
+
resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
'@types/ws@8.5.13':
resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
···
- bufferutil
- utf-8-validate
+
'@types/node@22.10.2':
dependencies:
undici-types: 6.20.0
'@types/ws@8.5.13':
dependencies:
+
'@types/node': 22.10.2
abstract-logging@2.0.1: {}
+3
site/src/constants.ts
···
"xe/xer": "3lclctffbhc2n",
"vae/vaem": "3lclcwgyqms2j",
"spoot/spoots": "3lclcwq4lik2j",
};
···
"xe/xer": "3lclctffbhc2n",
"vae/vaem": "3lclcwgyqms2j",
"spoot/spoots": "3lclcwq4lik2j",
+
"fae/faem": "3ld2lwdi2ak2o",
+
"dem/dems": "3ld2lwi6dss2o",
+
"þey/þem": "3ld2lwozoek2o",
};
+2 -2
site/src/App.tsx
···
const isTouchDevice = "ontouchstart" in window || navigator.maxTouchPoints > 1;
const basePostUrl =
isSafari && isTouchDevice
-
? "bluesky:///profile/pronouns.diy/post/"
-
: "https://bsky.app/profile/pronouns.diy/post/";
const [search, setSearch] = createSignal("");
···
const isTouchDevice = "ontouchstart" in window || navigator.maxTouchPoints > 1;
const basePostUrl =
isSafari && isTouchDevice
+
? "bluesky:///profile/did:plc:wkoofae5uytcm7bjncmev6n6/post/"
+
: "https://bsky.app/profile/did:plc:wkoofae5uytcm7bjncmev6n6/post/";
const [search, setSearch] = createSignal("");