+8
-6
.env.template
+8
-6
.env.template
···-DB_PATH="db.sqlite" # The SQLite database path. Set as ":memory:" to use a temporary in-memory database.+DB_PATH=":memory:" # The SQLite database path. Set as ":memory:" to use a temporary in-memory database.+# PUBLIC_URL="" # Set when deployed publicly, e.g. "https://mysite.com". Informs OAuth client id.
+2
-2
.gitignore
+2
-2
.gitignore
+2
-8
.vscode/settings.json
+2
-8
.vscode/settings.json
······
+42
README.md
+42
README.md
···
+1
-1
bin/gen-jwk
+1
-1
bin/gen-jwk
+50
-52
package-lock.json
+50
-52
package-lock.json
······-"integrity": "sha512-DG3YNaCKc6PAIv1Gsz3E1Kufw2t14OBxe4LdKK7KKLCNoex51hm+A5yMevShe3BSll+QosqWYIEgkPSc5xBoGQ==",+"integrity": "sha512-y9GOx2gUETynDKmANnBrU5DTf+u0AwKBJpGns1vDDOYMdLdRCFIeYy3UH+TI8YOkcEazjgF5Q3m+LjwriE1KqQ==",···-"resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.1.8.tgz",-"integrity": "sha512-Y0ckccoCGDo/3g4thPkgp9QcORmc+qqEaCBCYCZYtfLIQp4775u22wd+4fyEyJP4DqoReKacninkICgRGfs3dQ==",+"resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.3.0.tgz",+"integrity": "sha512-TREelvXB6P2eHxx6QjINRkBzUZu/aXWrdY9iN57shQe3C8rzsHNEHHuTVvRa33Hc7vFdQbZN0TnCgKveoyiL/A==",···-"resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver-node/-/handle-resolver-node-0.1.16.tgz",-"integrity": "sha512-i2F989zjyC7b/odrV3/tOpIT1IDIxR3F0khPG4REfOWcmJ89QcP8BiejJ6KFJk3hbTJHq6X9/pTG1vesCvyIKA==",+"resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver-node/-/handle-resolver-node-0.1.18.tgz",+"integrity": "sha512-/qo14c3I+kagT1UWSp3lTIzwDetfkxvF3Y3VlX2NyQ2jHwgtIAJ81KFNqe7t82NpQDjWiM5h4bdjvdbFIh5djQ==",···-"resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.1.18.tgz",-"integrity": "sha512-DArYXP1hzZJIBcojun0CWEF+TjAhlGKcVq/RwLiGfY1mKq2yPjCiXyHj+5L0+z9jBSZiAB7L65JgcjI2+MFiRg==",+"resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.2.0.tgz",+"integrity": "sha512-X4UpU9qSgbuBVRXw0kpYqdVRtjNGezmaetyQIwWHNdUl1+ILu4GhinSk1MBXamzgg/07/BVCU0r4LRIPg2Wiow==",···-"integrity": "sha512-MIAXyNMGu1tCNHjqW/8jqfE/wgWCIoK2cJ0mR6UxwhNPvkbe35TcpRYJdtQu/E6MUd7TziyDBa/GO4dKAiePhQ==",+"integrity": "sha512-tvp4iZrzqEzKCeTOKz50/o6WdsZzOuWmWjF6On5QAp04fLwLpsFu2Hixgx/lA1KBO0O4sns7YSGcAqSSX6Rdog==",···-"integrity": "sha512-aoU2Q0GpIl388KhCcv9YvAxNscALUv3xzLq5gjVPdJ+zmqw94nGZNcjiNvpnbfS+VQM9e2DrrTuwmDXnxfrrSA==",+"integrity": "sha512-HT9GcUe6htDxI5OSYXWdeS6QZ9lpuDDvJk508ppi8a48E/1f8eumoM0QhgbFRF9IKAnnFrtnZDOAvljQzFKwwQ==",-"integrity": "sha512-oOW/G40f6M0NbTOo8uZgiSsFtcvlfNFldyxm+V+fVo5yKe6cvgvPNqckpqMsoBe6JYfImdc/zdVak9fCSSh41A==",+"integrity": "sha512-ecciePHT0JEDZNAbMKSkdqoBYsjvhwuVno0jsS600SZmuvi2fAMhGraDZ5ZOO5M0hHHBiDbN7Ar/qcnIwyoxsA==",···-"integrity": "sha512-uWVnlhennWkgvzqP0l53sFaw6DM6B4zmq0fv1xs05vt56Sjly8YirAj0GVDXlb37/BQRJQ1WOBzJVYDI3bH9uw==",+"integrity": "sha512-wHRYcrh+iKQvMramYqE6PHs5Y/L2LYFzrEnyUMf83CjD3GYFwbSN5pwot6EFXONxRwuRjxpXsCSlFzZwx9YFvw==",-"resolved": "https://registry.npmjs.org/@atproto/oauth-client-node/-/oauth-client-node-0.2.24.tgz",-"integrity": "sha512-WsUiFkHjlm80J2d4czP7msYZoxvKB4hDpZGw34RgMD4VLA2jt03GMH4wTQPIZxfV3/9yrgMoOW/BDC9Iv4MavA==",+"resolved": "https://registry.npmjs.org/@atproto/oauth-client-node/-/oauth-client-node-0.3.1.tgz",+"integrity": "sha512-k37YC7Ke4+btX05oAqHqkkM8r2Ya/tssWANx7/GMwN3PXPP5PK1C/pkxJrGsN/hpjn3I4W9lVTOlC7nigEX7sw==",-"integrity": "sha512-ptfsJARKODXfuOoDQag4a6PpEkDEj4Urz3jOmnQZy2YspPc/TNm1o0HglU0YehELv1vfhh9gEz40BJztPPhiLA==",+"integrity": "sha512-l8ahtm74lmBOs5boi5q7mqzF2D37+cIYqVmbCrpexNeJfg2BXu0sBxREt0ADxP25Td9pX+u6FnefCOQtI/YAZw==",
+1
-3
package.json
+1
-3
package.json
···
+14
-14
src/auth/client.ts
+14
-14
src/auth/client.ts
···+'ATProto requires backend clients to be confidential. Make sure to set the PRIVATE_KEYS environment variable.',······
+3
-11
src/auth/storage.ts
+3
-11
src/auth/storage.ts
···+const result = await this.db.selectFrom('auth_state').selectAll().where('key', '=', key).executeTakeFirst()···+const result = await this.db.selectFrom('auth_session').selectAll().where('key', '=', key).executeTakeFirst()
+18
-5
src/context.ts
+18
-5
src/context.ts
······
+10
-17
src/db.ts
+10
-17
src/db.ts
······
+12
-4
src/env.ts
+12
-4
src/env.ts
······
+37
src/id-resolver.ts
+37
src/id-resolver.ts
···
+3
-4
src/index.ts
+3
-4
src/index.ts
······
+18
-5
src/ingester.ts
+18
-5
src/ingester.ts
············
-17
src/lib/envalid-private-keys.ts
-17
src/lib/envalid-private-keys.ts
···
+21
-57
src/lib/http.ts
+21
-57
src/lib/http.ts
······
+17
src/lib/jwk.ts
+17
src/lib/jwk.ts
···
+8
-4
src/lib/process.ts
+8
-4
src/lib/process.ts
······
+4
src/lib/util.ts
+4
src/lib/util.ts
+1
-1
src/pages/home.ts
+1
-1
src/pages/home.ts
+14
-6
src/pages/login.ts
+14
-6
src/pages/login.ts
·········
+28
-9
src/pages/public/styles.css
+28
-9
src/pages/public/styles.css
············
+136
-75
src/routes.ts
+136
-75
src/routes.ts
························