basic notification system for atproto stuff using ntfy

added nix and license. switched to npm because of nix

aylac.top df50a496 07dc8f4b

verified
+7
LICENSE
··· 1 + Copyright 2025 aylac 2 + 3 + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 + 5 + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 + 7 + THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+5 -5
flake.lock
··· 2 2 "nodes": { 3 3 "nixpkgs": { 4 4 "locked": { 5 - "lastModified": 1757068644, 6 - "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", 7 - "owner": "NixOS", 5 + "lastModified": 1757347588, 6 + "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", 7 + "owner": "nixos", 8 8 "repo": "nixpkgs", 9 - "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", 9 + "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", 10 10 "type": "github" 11 11 }, 12 12 "original": { 13 - "owner": "NixOS", 13 + "owner": "nixos", 14 14 "ref": "nixos-unstable", 15 15 "repo": "nixpkgs", 16 16 "type": "github"
+19
flake.nix
··· 1 + { 2 + inputs = { 3 + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 4 + }; 5 + 6 + outputs = { 7 + self, 8 + nixpkgs, 9 + }: let 10 + pkgs = nixpkgs.legacyPackages."x86_64-linux"; 11 + in { 12 + packages."x86_64-linux".default = pkgs.buildNpmPackage { 13 + pname = "atproto-basic-notifications"; 14 + version = "0.1.0"; 15 + src = ./.; 16 + npmDepsHash = "sha256-gGiNDtxgof7L5y3bH7VWukezEMZbzYkSDdovUwaKQGA="; 17 + }; 18 + }; 19 + }
+185
package-lock.json
··· 1 + { 2 + "name": "atproto-basic-notifications", 3 + "lockfileVersion": 3, 4 + "requires": true, 5 + "packages": { 6 + "": { 7 + "dependencies": { 8 + "@atcute/bluesky": "^3.2.2", 9 + "@atcute/client": "^4.0.3", 10 + "@atcute/jetstream": "^1.1.0", 11 + "@atcute/lexicons": "^1.1.1" 12 + }, 13 + "bin": { 14 + "atproto-basic-notifications": "dist/index.js" 15 + }, 16 + "devDependencies": { 17 + "@types/node": "^24.3.1", 18 + "typescript": "^5.5.3" 19 + } 20 + }, 21 + "node_modules/@atcute/atproto": { 22 + "version": "3.1.3", 23 + "resolved": "https://registry.npmjs.org/@atcute/atproto/-/atproto-3.1.3.tgz", 24 + "integrity": "sha512-+5u0l+8E7h6wZO7MM1HLXIPoUEbdwRtr28ZRTgsURp+Md9gkoBj9e5iMx/xM8F2Exfyb65J5RchW/WlF2mw/RQ==", 25 + "license": "0BSD", 26 + "dependencies": { 27 + "@atcute/lexicons": "^1.1.1" 28 + } 29 + }, 30 + "node_modules/@atcute/bluesky": { 31 + "version": "3.2.2", 32 + "resolved": "https://registry.npmjs.org/@atcute/bluesky/-/bluesky-3.2.2.tgz", 33 + "integrity": "sha512-L8RrMNeRLGvSHMq2KDIAGXrpuNGA87YOXpXHY1yhmovVCjQ5n55FrR6JoQaxhprdXdKKQiefxNwQQQybDrfgFQ==", 34 + "license": "0BSD", 35 + "dependencies": { 36 + "@atcute/atproto": "^3.1.3", 37 + "@atcute/lexicons": "^1.1.1" 38 + } 39 + }, 40 + "node_modules/@atcute/client": { 41 + "version": "4.0.3", 42 + "resolved": "https://registry.npmjs.org/@atcute/client/-/client-4.0.3.tgz", 43 + "integrity": "sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==", 44 + "license": "MIT", 45 + "dependencies": { 46 + "@atcute/identity": "^1.0.2", 47 + "@atcute/lexicons": "^1.0.3" 48 + } 49 + }, 50 + "node_modules/@atcute/identity": { 51 + "version": "1.1.0", 52 + "resolved": "https://registry.npmjs.org/@atcute/identity/-/identity-1.1.0.tgz", 53 + "integrity": "sha512-6vRvRqJatDB+JUQsb+UswYmtBGQnSZcqC3a2y6H5DB/v5KcIh+6nFFtc17G0+3W9rxdk7k9M4KkgkdKf/YDNoQ==", 54 + "license": "0BSD", 55 + "dependencies": { 56 + "@atcute/lexicons": "^1.1.1", 57 + "@badrap/valita": "^0.4.5" 58 + } 59 + }, 60 + "node_modules/@atcute/jetstream": { 61 + "version": "1.1.0", 62 + "resolved": "https://registry.npmjs.org/@atcute/jetstream/-/jetstream-1.1.0.tgz", 63 + "integrity": "sha512-XrSeEHLt2FnVNm3KBDQYY7+rWM0IQKBjLQUjdoCj4mnkMCdm3/dC09qs5ubQQGrHieUWeKHHEko/D6EB891hPg==", 64 + "license": "0BSD", 65 + "dependencies": { 66 + "@atcute/lexicons": "^1.1.1", 67 + "@badrap/valita": "^0.4.6", 68 + "@mary-ext/event-iterator": "^1.0.0", 69 + "@mary-ext/simple-event-emitter": "^1.0.0", 70 + "partysocket": "^1.1.5", 71 + "type-fest": "^4.41.0", 72 + "yocto-queue": "^1.2.1" 73 + } 74 + }, 75 + "node_modules/@atcute/lexicons": { 76 + "version": "1.1.1", 77 + "resolved": "https://registry.npmjs.org/@atcute/lexicons/-/lexicons-1.1.1.tgz", 78 + "integrity": "sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==", 79 + "license": "0BSD", 80 + "dependencies": { 81 + "esm-env": "^1.2.2" 82 + } 83 + }, 84 + "node_modules/@badrap/valita": { 85 + "version": "0.4.6", 86 + "resolved": "https://registry.npmjs.org/@badrap/valita/-/valita-0.4.6.tgz", 87 + "integrity": "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==", 88 + "license": "MIT", 89 + "engines": { 90 + "node": ">= 18" 91 + } 92 + }, 93 + "node_modules/@mary-ext/event-iterator": { 94 + "version": "1.0.0", 95 + "resolved": "https://registry.npmjs.org/@mary-ext/event-iterator/-/event-iterator-1.0.0.tgz", 96 + "integrity": "sha512-l6gCPsWJ8aRCe/s7/oCmero70kDHgIK5m4uJvYgwEYTqVxoBOIXbKr5tnkLqUHEg6mNduB4IWvms3h70Hp9ADQ==", 97 + "license": "BSD-3-Clause", 98 + "dependencies": { 99 + "yocto-queue": "^1.2.1" 100 + } 101 + }, 102 + "node_modules/@mary-ext/simple-event-emitter": { 103 + "version": "1.0.0", 104 + "resolved": "https://registry.npmjs.org/@mary-ext/simple-event-emitter/-/simple-event-emitter-1.0.0.tgz", 105 + "integrity": "sha512-meA/zJZKIN1RVBNEYIbjufkUrW7/tRjHH60FjolpG1ixJKo76TB208qefQLNdOVDA7uIG0CGEDuhmMirtHKLAg==", 106 + "license": "BSD-3-Clause" 107 + }, 108 + "node_modules/@types/node": { 109 + "version": "24.3.1", 110 + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", 111 + "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", 112 + "dev": true, 113 + "license": "MIT", 114 + "dependencies": { 115 + "undici-types": "~7.10.0" 116 + } 117 + }, 118 + "node_modules/esm-env": { 119 + "version": "1.2.2", 120 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 121 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", 122 + "license": "MIT" 123 + }, 124 + "node_modules/event-target-polyfill": { 125 + "version": "0.0.4", 126 + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.4.tgz", 127 + "integrity": "sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ==", 128 + "license": "MIT" 129 + }, 130 + "node_modules/partysocket": { 131 + "version": "1.1.5", 132 + "resolved": "https://registry.npmjs.org/partysocket/-/partysocket-1.1.5.tgz", 133 + "integrity": "sha512-8uw9foq9bij4sKLCtTSHvyqMrMTQ5FJjrHc7BjoM2s95Vu7xYCN63ABpI7OZHC7ZMP5xaom/A+SsoFPXmTV6ZQ==", 134 + "license": "MIT", 135 + "dependencies": { 136 + "event-target-polyfill": "^0.0.4" 137 + } 138 + }, 139 + "node_modules/type-fest": { 140 + "version": "4.41.0", 141 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", 142 + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", 143 + "license": "(MIT OR CC0-1.0)", 144 + "engines": { 145 + "node": ">=16" 146 + }, 147 + "funding": { 148 + "url": "https://github.com/sponsors/sindresorhus" 149 + } 150 + }, 151 + "node_modules/typescript": { 152 + "version": "5.9.2", 153 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", 154 + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", 155 + "dev": true, 156 + "license": "Apache-2.0", 157 + "bin": { 158 + "tsc": "bin/tsc", 159 + "tsserver": "bin/tsserver" 160 + }, 161 + "engines": { 162 + "node": ">=14.17" 163 + } 164 + }, 165 + "node_modules/undici-types": { 166 + "version": "7.10.0", 167 + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", 168 + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", 169 + "dev": true, 170 + "license": "MIT" 171 + }, 172 + "node_modules/yocto-queue": { 173 + "version": "1.2.1", 174 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", 175 + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", 176 + "license": "MIT", 177 + "engines": { 178 + "node": ">=12.20" 179 + }, 180 + "funding": { 181 + "url": "https://github.com/sponsors/sindresorhus" 182 + } 183 + } 184 + } 185 + }
+13 -5
package.json
··· 1 1 { 2 + "name": "atproto-basic-notifications", 3 + "version": "0.1.0", 4 + "description": "a basic notification system for atproto stuff", 5 + "author": { 6 + "name": "aylac", 7 + "url": "https://aylac.top" 8 + }, 9 + "license": "MIT", 2 10 "scripts": { 3 - "build": "tsc", 4 - "prestart": "npm run build", 11 + "build": "npm install && tsc", 5 12 "start": "node dist/index.js", 6 - "dev": "tsc --watch", 7 - "clean": "rm -rf dist *.tsbuildinfo", 8 - "lint": "echo 'No linting configured yet.'" 13 + "dev": "tsc --watch" 14 + }, 15 + "bin": { 16 + "atproto-basic-notifications": "dist/index.js" 9 17 }, 10 18 "devDependencies": { 11 19 "@types/node": "^24.3.1",
-150
pnpm-lock.yaml
··· 1 - lockfileVersion: '9.0' 2 - 3 - settings: 4 - autoInstallPeers: true 5 - excludeLinksFromLockfile: false 6 - 7 - importers: 8 - 9 - .: 10 - dependencies: 11 - '@atcute/bluesky': 12 - specifier: ^3.2.2 13 - version: 3.2.2 14 - '@atcute/client': 15 - specifier: ^4.0.3 16 - version: 4.0.3 17 - '@atcute/jetstream': 18 - specifier: ^1.1.0 19 - version: 1.1.0 20 - '@atcute/lexicons': 21 - specifier: ^1.1.1 22 - version: 1.1.1 23 - devDependencies: 24 - '@types/node': 25 - specifier: ^24.3.1 26 - version: 24.3.1 27 - typescript: 28 - specifier: ^5.5.3 29 - version: 5.9.2 30 - 31 - packages: 32 - 33 - '@atcute/atproto@3.1.3': 34 - resolution: {integrity: sha512-+5u0l+8E7h6wZO7MM1HLXIPoUEbdwRtr28ZRTgsURp+Md9gkoBj9e5iMx/xM8F2Exfyb65J5RchW/WlF2mw/RQ==} 35 - 36 - '@atcute/bluesky@3.2.2': 37 - resolution: {integrity: sha512-L8RrMNeRLGvSHMq2KDIAGXrpuNGA87YOXpXHY1yhmovVCjQ5n55FrR6JoQaxhprdXdKKQiefxNwQQQybDrfgFQ==} 38 - 39 - '@atcute/client@4.0.3': 40 - resolution: {integrity: sha512-RIOZWFVLca/HiPAAUDqQPOdOreCxTbL5cb+WUf5yqQOKIu5yEAP3eksinmlLmgIrlr5qVOE7brazUUzaskFCfw==} 41 - 42 - '@atcute/identity@1.1.0': 43 - resolution: {integrity: sha512-6vRvRqJatDB+JUQsb+UswYmtBGQnSZcqC3a2y6H5DB/v5KcIh+6nFFtc17G0+3W9rxdk7k9M4KkgkdKf/YDNoQ==} 44 - 45 - '@atcute/jetstream@1.1.0': 46 - resolution: {integrity: sha512-XrSeEHLt2FnVNm3KBDQYY7+rWM0IQKBjLQUjdoCj4mnkMCdm3/dC09qs5ubQQGrHieUWeKHHEko/D6EB891hPg==} 47 - 48 - '@atcute/lexicons@1.1.1': 49 - resolution: {integrity: sha512-k6qy5p3j9fJJ6ekaMPfEfp3ni4TW/XNuH9ZmsuwC0fi0tOjp+Fa8ZQakHwnqOzFt/cVBfGcmYE/lKNAbeTjgUg==} 50 - 51 - '@badrap/valita@0.4.6': 52 - resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 53 - engines: {node: '>= 18'} 54 - 55 - '@mary-ext/event-iterator@1.0.0': 56 - resolution: {integrity: sha512-l6gCPsWJ8aRCe/s7/oCmero70kDHgIK5m4uJvYgwEYTqVxoBOIXbKr5tnkLqUHEg6mNduB4IWvms3h70Hp9ADQ==} 57 - 58 - '@mary-ext/simple-event-emitter@1.0.0': 59 - resolution: {integrity: sha512-meA/zJZKIN1RVBNEYIbjufkUrW7/tRjHH60FjolpG1ixJKo76TB208qefQLNdOVDA7uIG0CGEDuhmMirtHKLAg==} 60 - 61 - '@types/node@24.3.1': 62 - resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==} 63 - 64 - esm-env@1.2.2: 65 - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 66 - 67 - event-target-polyfill@0.0.4: 68 - resolution: {integrity: sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ==} 69 - 70 - partysocket@1.1.5: 71 - resolution: {integrity: sha512-8uw9foq9bij4sKLCtTSHvyqMrMTQ5FJjrHc7BjoM2s95Vu7xYCN63ABpI7OZHC7ZMP5xaom/A+SsoFPXmTV6ZQ==} 72 - 73 - type-fest@4.41.0: 74 - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 75 - engines: {node: '>=16'} 76 - 77 - typescript@5.9.2: 78 - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 79 - engines: {node: '>=14.17'} 80 - hasBin: true 81 - 82 - undici-types@7.10.0: 83 - resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 84 - 85 - yocto-queue@1.2.1: 86 - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} 87 - engines: {node: '>=12.20'} 88 - 89 - snapshots: 90 - 91 - '@atcute/atproto@3.1.3': 92 - dependencies: 93 - '@atcute/lexicons': 1.1.1 94 - 95 - '@atcute/bluesky@3.2.2': 96 - dependencies: 97 - '@atcute/atproto': 3.1.3 98 - '@atcute/lexicons': 1.1.1 99 - 100 - '@atcute/client@4.0.3': 101 - dependencies: 102 - '@atcute/identity': 1.1.0 103 - '@atcute/lexicons': 1.1.1 104 - 105 - '@atcute/identity@1.1.0': 106 - dependencies: 107 - '@atcute/lexicons': 1.1.1 108 - '@badrap/valita': 0.4.6 109 - 110 - '@atcute/jetstream@1.1.0': 111 - dependencies: 112 - '@atcute/lexicons': 1.1.1 113 - '@badrap/valita': 0.4.6 114 - '@mary-ext/event-iterator': 1.0.0 115 - '@mary-ext/simple-event-emitter': 1.0.0 116 - partysocket: 1.1.5 117 - type-fest: 4.41.0 118 - yocto-queue: 1.2.1 119 - 120 - '@atcute/lexicons@1.1.1': 121 - dependencies: 122 - esm-env: 1.2.2 123 - 124 - '@badrap/valita@0.4.6': {} 125 - 126 - '@mary-ext/event-iterator@1.0.0': 127 - dependencies: 128 - yocto-queue: 1.2.1 129 - 130 - '@mary-ext/simple-event-emitter@1.0.0': {} 131 - 132 - '@types/node@24.3.1': 133 - dependencies: 134 - undici-types: 7.10.0 135 - 136 - esm-env@1.2.2: {} 137 - 138 - event-target-polyfill@0.0.4: {} 139 - 140 - partysocket@1.1.5: 141 - dependencies: 142 - event-target-polyfill: 0.0.4 143 - 144 - type-fest@4.41.0: {} 145 - 146 - typescript@5.9.2: {} 147 - 148 - undici-types@7.10.0: {} 149 - 150 - yocto-queue@1.2.1: {}