Compare commits

...

251 Commits

Author SHA1 Message Date
Renovate Bot 718deae7ef fix(deps): update dependency got to v12.6.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-27 08:01:19 +00:00
Renovate Bot 0dfe4a80c7 chore(deps): update dependency @types/node to v18.16.16
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-26 21:01:23 +00:00
Renovate Bot 65134681fe chore(deps): update dependency @types/node to v18.16.15
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-25 21:01:25 +00:00
Renovate Bot 99f465c56a chore(deps): update typescript-eslint monorepo to v5.59.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-22 18:01:30 +00:00
Renovate Bot 44a5a2a0db chore(deps): update dependency @types/node to v18.16.14
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-21 22:01:23 +00:00
Renovate Bot c1e223df89 chore(deps): update dependency eslint to v8.41.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-19 21:01:45 +00:00
Renovate Bot babe81c2a6 chore(deps): update dependency @types/node to v18.16.13
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-18 14:01:22 +00:00
Renovate Bot f545869008 chore(deps): update dependency @types/node to v18.16.12
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-16 21:01:26 +00:00
Renovate Bot 0ef6a8826a chore(deps): update dependency @types/node to v18.16.10
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-16 02:01:24 +00:00
Renovate Bot 0107420f0e chore(deps): update typescript-eslint monorepo to v5.59.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-15 18:01:42 +00:00
Renovate Bot 6449f7e349 fix(deps): update dependency megalodon to v6.0.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-15 15:01:24 +00:00
Renovate Bot d783ed319c chore(deps): update dependency @types/node to v18.16.9
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-13 15:01:29 +00:00
Renovate Bot 32322d2264 chore(deps): update dependency @types/node to v18.16.8
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-11 21:01:31 +00:00
Renovate Bot f48c004671 chore(deps): update dependency @types/node to v18.16.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-10 09:01:30 +00:00
Renovate Bot 2cc7138b26 chore(deps): update dependency @types/node to v18.16.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-08 21:01:26 +00:00
Renovate Bot acd5d49ea0 chore(deps): update typescript-eslint monorepo to v5.59.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-08 19:01:34 +00:00
Renovate Bot c6dc8a8544 chore(deps): update dependency @types/node to v18.16.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-05 22:02:05 +00:00
Renovate Bot c608be6e90 chore(deps): update dependency eslint to v8.40.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-05 21:01:34 +00:00
Renovate Bot 91f303a923 chore(deps): update dependency @types/node to v18.16.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-05 08:01:34 +00:00
Renovate Bot ab9f179fd1 chore(deps): update typescript-eslint monorepo to v5.59.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-05-01 18:01:31 +00:00
Renovate Bot c4f5868383 chore(deps): update dependency @types/node to v18.16.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-29 07:01:47 +00:00
Renovate Bot e702afbc53 chore(deps): update dependency @types/node to v18.16.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-27 22:01:26 +00:00
Renovate Bot 3437940714 fix(deps): update dependency megalodon to v6.0.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-26 17:01:38 +00:00
Renovate Bot bb7a9d1f34 chore(deps): update dependency @types/node to v18.16.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-25 22:01:33 +00:00
Renovate Bot 2eed867939 fix(deps): update dependency megalodon to v6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-24 19:01:59 +00:00
Renovate Bot a420316393 chore(deps): update typescript-eslint monorepo to v5.59.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-24 18:01:44 +00:00
Renovate Bot b8329d4a8c chore(deps): update dependency prettier to v2.8.8
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-23 08:01:32 +00:00
Renovate Bot 6c12cd54d7 chore(deps): update dependency @types/node to v18.16.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-23 06:01:23 +00:00
Renovate Bot 0b2f497d18 chore(deps): update dependency eslint to v8.39.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-21 22:01:47 +00:00
Renovate Bot d0f68f9500 fix(deps): update dependency megalodon to v5.5.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-21 13:01:34 +00:00
Renovate Bot 2bfb38ed6b chore(deps): update dependency @types/node to v18.15.13
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-21 03:01:24 +00:00
Renovate Bot 2d3998f483 chore(deps): update dependency @types/node to v18.15.12
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-20 00:01:26 +00:00
Renovate Bot fbd5c3c84f chore(deps): update typescript-eslint monorepo to v5.59.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-17 18:01:26 +00:00
Renovate Bot 6a2d39122f chore(deps): update typescript-eslint monorepo to v5.58.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-10 18:01:39 +00:00
Renovate Bot 2b647f8605 fix(deps): update dependency megalodon to v5.4.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-10 16:01:36 +00:00
Renovate Bot 800b03a50e fix(deps): update dependency megalodon to v5.4.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-08 13:01:34 +00:00
Renovate Bot 88b16f3344 chore(deps): update dependency eslint to v8.38.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-08 00:01:45 +00:00
Renovate Bot 4ffa4216b5 chore(deps): update dependency typescript to v5.0.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-07 18:01:23 +00:00
Renovate Bot c136a70b64 chore(deps): update typescript-eslint monorepo to v5.57.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-04-03 18:01:27 +00:00
Renovate Bot a22cd67edf chore(deps): update dependency typescript to v5.0.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-30 21:01:40 +00:00
Renovate Bot df76cb7047 chore(deps): update dependency eslint to v8.37.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-29 22:01:45 +00:00
Renovate Bot 0e4bae4b22 chore(deps): update dependency @types/node to v18.15.11
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-29 21:01:39 +00:00
Sam Therapy 400d823252
fix(deps): Migrate to pnpm 8
continuous-integration/drone/push Build is passing Details
2023-03-28 16:17:29 +02:00
Renovate Bot 75cf9ae955 chore(deps): update typescript-eslint monorepo to v5.57.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-27 18:01:14 +00:00
Renovate Bot 47ec28d746 chore(deps): update dependency @types/node to v18.15.10
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-25 23:01:10 +00:00
Renovate Bot 07e71b633c chore(deps): update dependency @types/node to v18.15.9
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-25 09:01:17 +00:00
Renovate Bot fdcf179d4b chore(deps): update dependency @types/node to v18.15.8
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-25 00:01:14 +00:00
Renovate Bot 17e8cb7d26 chore(deps): update dependency prettier to v2.8.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-24 10:01:34 +00:00
Renovate Bot 0a43d40b76 chore(deps): update dependency @types/node to v18.15.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-24 09:01:18 +00:00
Renovate Bot e63e6ff1ad chore(deps): update dependency @types/node to v18.15.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-23 22:01:15 +00:00
Renovate Bot 8048e7e2ff chore(deps): update dependency prettier to v2.8.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-21 09:01:19 +00:00
Renovate Bot b0ff77f8cd chore(deps): update dependency @types/node to v18.15.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-20 22:01:13 +00:00
Renovate Bot 1e4fdfe99b chore(deps): update dependency eslint-config-prettier to v8.8.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-20 19:01:41 +00:00
Renovate Bot 424a6e396d chore(deps): update typescript-eslint monorepo to v5.56.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-20 18:01:14 +00:00
Renovate Bot 24ce7622a6 fix(deps): update dependency megalodon to v5.4.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-20 15:01:25 +00:00
Renovate Bot d2de21ce15 chore(deps): update dependency prettier to v2.8.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-20 07:01:22 +00:00
Renovate Bot d2101f1c71 chore(deps): update dependency typescript to v5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-16 17:01:24 +00:00
Renovate Bot c4d8dd8194 chore(deps): update dependency @types/node to v18.15.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-14 07:01:11 +00:00
Renovate Bot 7431fcfd09 chore(deps): update typescript-eslint monorepo to v5.55.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-13 20:01:35 +00:00
Renovate Bot 2b9a4f7bda chore(deps): update dependency @types/node to v18.15.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-13 19:01:11 +00:00
Renovate Bot 4543dce4c9 chore(deps): update dependency @types/node to v18.15.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-13 06:01:09 +00:00
Renovate Bot 775d105129 chore(deps): update dependency eslint to v8.36.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-10 23:01:31 +00:00
Renovate Bot 093248b36a chore(deps): update dependency @types/node to v18.15.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-09 21:01:11 +00:00
Renovate Bot 1c5e16ab05 chore(deps): update dependency pkg to v5.8.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-08 02:01:09 +00:00
Renovate Bot 5ecb243f45 fix(deps): update dependency megalodon to v5.4.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-07 17:01:24 +00:00
Renovate Bot e891b32d4b chore(deps): update typescript-eslint monorepo to v5.54.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-06 18:01:10 +00:00
Renovate Bot 7010927d30 fix(deps): update dependency command-line-usage to v7.0.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-06 12:01:12 +00:00
Renovate Bot 7ccc6613f8 chore(deps): update dependency eslint-config-prettier to v8.7.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-06 09:01:15 +00:00
Renovate Bot 8a92dd5198 fix(deps): update dependency command-line-usage to v7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-05 13:01:09 +00:00
Renovate Bot 990c0f65fa fix(deps): update dependency megalodon to v5.4.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-05 11:01:17 +00:00
Renovate Bot 030d31e186 fix(deps): update dependency megalodon to v5.3.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-04 16:01:31 +00:00
Renovate Bot 47ac855c69 chore(deps): update dependency @types/node to v18.14.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-03 22:01:09 +00:00
Renovate Bot 4aeee19117 fix(deps): update dependency got to v12.6.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-03 18:01:09 +00:00
Renovate Bot 9e08c2065b chore(deps): update dependency @types/node to v18.14.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-03 06:01:10 +00:00
Renovate Bot 547a422113 chore(deps): update dependency @types/node to v18.14.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-02 09:01:09 +00:00
Renovate Bot f4127948e9 chore(deps): update dependency @types/node to v18.14.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-03-02 05:01:05 +00:00
Renovate Bot 2e17913354 chore(deps): update typescript-eslint monorepo to v5.54.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-27 18:01:09 +00:00
Renovate Bot eecc04255b chore(deps): update dependency @types/node to v18.14.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-26 20:01:09 +00:00
Renovate Bot ba4a622c76 chore(deps): update dependency eslint to v8.35.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-26 10:01:22 +00:00
Renovate Bot fcbbfbc3f7 chore(deps): update dependency @types/node to v18.14.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-23 12:01:09 +00:00
Renovate Bot 6392189250 chore(deps): update typescript-eslint monorepo to v5.53.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-20 18:01:14 +00:00
Renovate Bot a048735fb0 chore(deps): update dependency @types/node to v18.14.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-17 21:01:12 +00:00
Renovate Bot 680c15bc76 fix(deps): update dependency megalodon to v5.2.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-15 17:01:18 +00:00
Renovate Bot 43200d04f2 fix(deps): update dependency megalodon to v5.1.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-14 14:01:16 +00:00
Renovate Bot d23cac00d7 chore(deps): update typescript-eslint monorepo to v5.52.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-13 18:01:10 +00:00
Renovate Bot afa65ffce1 chore(deps): update dependency eslint to v8.34.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-10 21:01:24 +00:00
Renovate Bot b15442a140 chore(deps): update dependency prettier to v2.8.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-08 04:01:16 +00:00
Renovate Bot 9f9328e970 chore(deps): update dependency @types/node to v18.13.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-07 09:01:06 +00:00
Renovate Bot c1b536fb50 chore(deps): update typescript-eslint monorepo to v5.51.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-06 18:01:08 +00:00
Renovate Bot 917d90c4f7 chore(deps): update dependency @types/node to v18.11.19
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-02-05 00:01:08 +00:00
Renovate Bot c48fb84936 chore(deps): update typescript-eslint monorepo to v5.50.0
continuous-integration/drone/push Build is passing Details
2023-01-31 10:01:16 +00:00
Renovate Bot 273b7a3c52 chore(deps): update dependency typescript to v4.9.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-30 22:01:11 +00:00
Renovate Bot d82ea30d50 chore(deps): update dependency eslint to v8.33.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-29 00:01:39 +00:00
Renovate Bot 8eb228d346 fix(deps): update dependency megalodon to v5.1.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-26 17:01:16 +00:00
Renovate Bot a4bfd3e0db fix(deps): update dependency megalodon to v5.1.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-24 17:01:14 +00:00
Renovate Bot 5392fc99c8 chore(deps): update typescript-eslint monorepo to v5.49.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-23 18:01:11 +00:00
Renovate Bot 3236141503 chore(deps): update typescript-eslint monorepo to v5.48.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-16 18:01:10 +00:00
Renovate Bot c781fd39ed chore(deps): update dependency eslint to v8.32.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-15 05:01:38 +00:00
Renovate Bot ad6361985b chore(deps): update dependency prettier to v2.8.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-14 04:01:12 +00:00
Renovate Bot 3de4148ed8 chore(deps): update typescript-eslint monorepo to v5.48.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-09 18:01:21 +00:00
Renovate Bot 6974c91822 chore(deps): update dependency prettier to v2.8.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-07 12:01:23 +00:00
Renovate Bot 9fac7b35dc fix(deps): update dependency megalodon to v5.0.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-04 16:01:36 +00:00
Renovate Bot 5be09b2280 chore(deps): update typescript-eslint monorepo to v5.48.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-02 19:01:39 +00:00
Renovate Bot 9f70862314 chore(deps): update dependency eslint-config-prettier to v8.6.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2023-01-02 18:01:16 +00:00
Renovate Bot 323dbfe77b fix(deps): update dependency json5 to v2.2.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-31 18:01:12 +00:00
Renovate Bot 6a54bd5e06 chore(deps): update dependency eslint to v8.31.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-31 06:01:28 +00:00
Renovate Bot e2b4fe7bfa fix(deps): update dependency megalodon to v5.0.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-30 02:01:24 +00:00
Sam Therapy 3cd41e9ad8
add NPM instructions
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-12-29 15:15:36 +01:00
Renovate Bot 927f556160 fix(deps): update dependency megalodon to v5.0.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-29 12:01:25 +00:00
Renovate Bot 187fd6c0a2 fix(deps): update dependency megalodon to v5.0.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-29 03:01:24 +00:00
Renovate Bot 9149592e52 chore(deps): pin dependency @types/http-cache-semantics to 4.0.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-28 16:01:14 +00:00
Sam Therapy cf8dadfc07
add registry
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-12-28 16:36:32 +01:00
Sam Therapy e1cb538eb8
fix(ci): Fix publish pipeline
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-12-28 16:18:08 +01:00
Sam Therapy 24d9cb24be
Migrate to ESM
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-12-28 15:58:18 +01:00
Sam Therapy d466baf2cb
disable pkg because it doesn't work
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-12-28 15:47:20 +01:00
Renovate Bot b370ec17a4 chore(deps): update typescript-eslint monorepo to v5.47.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-27 18:01:17 +00:00
Renovate Bot 914052a348 chore(deps): update dependency @types/node to v18.11.18
continuous-integration/drone/push Build is passing Details
2022-12-26 18:01:14 +00:00
Renovate Bot 18251ad764 chore(deps): update typescript-eslint monorepo to v5.47.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-19 18:01:13 +00:00
Renovate Bot 40628350a3 chore(deps): update dependency @types/node to v18.11.17
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-17 21:01:16 +00:00
Renovate Bot 04021f5c3c chore(deps): update dependency eslint to v8.30.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-17 00:01:32 +00:00
Renovate Bot 567894e827 chore(deps): update dependency @types/node to v18.11.16
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-16 21:01:10 +00:00
Renovate Bot b1a9f715f3 fix(deps): update dependency json5 to v2.2.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-16 07:01:08 +00:00
Renovate Bot 769be5fe85 chore(deps): update dependency @types/node to v18.11.15
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-13 22:01:12 +00:00
Renovate Bot f2741a9131 fix(deps): update dependency megalodon to v5.0.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-13 14:01:21 +00:00
Renovate Bot ce6d51b8ab chore(deps): update dependency @types/node to v18.11.14
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-13 06:01:13 +00:00
Renovate Bot f350e14334 chore(deps): update typescript-eslint monorepo to v5.46.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-12 18:01:15 +00:00
Renovate Bot cfca740267 chore(deps): update dependency @types/node to v18.11.13
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-10 20:01:10 +00:00
Renovate Bot 59485e0db7 chore(deps): update dependency @types/node to v18.11.12
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-08 20:01:09 +00:00
Renovate Bot 9c61430d3b chore(deps): update typescript-eslint monorepo to v5.46.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-08 09:01:10 +00:00
Renovate Bot 466792737b chore(deps): update dependency typescript to v4.9.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-08 00:01:09 +00:00
Renovate Bot 53e9890431 chore(deps): update dependency prettier to v2.8.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-07 18:01:14 +00:00
Renovate Bot f111d9779f fix(deps): update dependency megalodon to v5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-06 14:01:16 +00:00
Renovate Bot 6377183fb8 chore(deps): update dependency @types/node to v18.11.11
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-05 21:01:08 +00:00
Renovate Bot bf5c481bcc chore(deps): update typescript-eslint monorepo to v5.45.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-05 18:01:11 +00:00
Renovate Bot 3a3929cff0 chore(deps): update dependency eslint to v8.29.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-02 22:01:28 +00:00
Renovate Bot 04336bf0d5 fix(deps): update dependency megalodon to v4.1.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-12-01 13:01:22 +00:00
Renovate Bot 9fe6ad0408 chore(deps): update dependency @types/node to v18.11.10
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-30 21:01:14 +00:00
Sam Therapy 21de0dd087
fix(lint): lint
continuous-integration/drone/push Build is passing Details
2022-11-29 21:35:49 +01:00
Sam Therapy 84d62b6178
fix(node): Add a warning to using old node
continuous-integration/drone/push Build is failing Details
I don't think it will even get that far to run but nice to have
2022-11-29 18:34:48 +01:00
Renovate Bot ac53ebed77 fix(deps): update dependency megalodon to v4.1.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-29 16:15:47 +00:00
Renovate Bot 954b7cfe79 chore(deps): update typescript-eslint monorepo to v5.45.0
continuous-integration/drone/push Build is passing Details
2022-11-29 16:15:38 +00:00
Renovate Bot 17bf7bb482 chore(deps): update dependency prettier to v2.8.0
continuous-integration/drone/push Build is running Details
2022-11-29 16:15:33 +00:00
Sam Therapy 13d3a6af87
lint
continuous-integration/drone/push Build is passing Details
2022-11-29 17:14:51 +01:00
Sam Therapy c4427fe5c9
feat: allow overwriting the message
continuous-integration/drone/push Build is failing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-11-23 18:37:46 +01:00
Renovate Bot 7bb1d39096 chore(deps): update typescript-eslint monorepo to v5.44.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-21 18:01:14 +00:00
Renovate Bot e3fe74b658 chore(deps): update dependency eslint to v8.28.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-18 22:01:28 +00:00
Renovate Bot bdf9fdb9ad chore(deps): update dependency typescript to v4.9.3
continuous-integration/drone/pr Build encountered an error Details
continuous-integration/drone/push Build encountered an error Details
2022-11-15 19:00:46 +00:00
Renovate Bot 5a67c0e57a chore(deps): update typescript-eslint monorepo to v5.43.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-14 18:00:44 +00:00
Renovate Bot 1fdde44e0a chore(deps): update typescript-eslint monorepo to v5.42.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-07 18:00:43 +00:00
Renovate Bot d24152225c fix(deps): update dependency got-cjs to v12.5.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-07 11:00:53 +00:00
Renovate Bot eaf75a9d79 chore(deps): update dependency eslint to v8.27.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-06 07:00:54 +00:00
Renovate Bot 63bb65d737 fix(deps): update dependency megalodon to v4.1.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-03 16:00:49 +00:00
Renovate Bot f531325f39 chore(deps): update dependency @types/node to v18.11.9
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-11-01 10:00:42 +00:00
Renovate Bot e506bec851 chore(deps): update typescript-eslint monorepo to v5.42.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-31 18:00:44 +00:00
Renovate Bot e6705c8e88 chore(deps): update dependency @types/node to v18.11.8
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-30 20:00:43 +00:00
Sam Therapy 4d554e7095
add retries
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-28 18:30:00 +02:00
Sam Therapy 67fb7ff0db
ci: move to jsonnet
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-27 20:28:12 +02:00
Renovate Bot 408de72bff chore(deps): update dependency @types/node to v18.11.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-26 21:00:42 +00:00
Renovate Bot fba7fdcdf7 chore(deps): update dependency @types/node to v18.11.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-26 13:00:43 +00:00
Sam Therapy b524cf57ce
I still hate you, NPM
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-25 19:12:16 +02:00
Renovate Bot 5d921d57ff chore(deps): pin dependency @types/node to 18.11.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-25 17:00:42 +00:00
Sam Therapy 3ac2628b3b
I hate NPM
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-25 18:42:05 +02:00
Sam Therapy 962a445322
idk anymore
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-25 18:13:17 +02:00
Sam Therapy 79d545f10d
fix: update lockfile
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-25 17:44:50 +02:00
Sam Therapy 87a5926779
fix: prepare for Gitea NPM
continuous-integration/drone/push Build is failing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-25 17:35:03 +02:00
Renovate Bot e504a7296d Update dependency @types/node to v18.11.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-25 00:00:52 +00:00
Sam Therapy cf9e21ac56
Lint
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-24 23:59:02 +02:00
Sam Therapy 58a8f87463
migrate to PNPM
continuous-integration/drone/push Build is failing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-10-24 23:56:45 +02:00
Renovate Bot 5a0a248613 Update typescript-eslint monorepo to v5.41.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-24 18:01:04 +00:00
Renovate Bot b9a8e63868 Update dependency eslint to v8.26.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-21 22:01:03 +00:00
Renovate Bot fb5e6dc7a7 Update typescript-eslint monorepo to v5.40.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-17 18:01:04 +00:00
Renovate Bot 8585f3b90e Update typescript-eslint monorepo to v5.40.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-10 18:01:02 +00:00
Renovate Bot 18394debcf Update dependency eslint to v8.25.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-07 23:01:02 +00:00
Renovate Bot 3166b2799f Update typescript-eslint monorepo to v5.39.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-10-03 18:01:09 +00:00
Renovate Bot 1f05a046b0 Update dependency typescript to v4.8.4
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-27 20:01:38 +00:00
Renovate Bot 4c8622f3ca Update typescript-eslint monorepo to v5.38.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-26 18:01:16 +00:00
Renovate Bot cacf9bf4fd Update dependency eslint to v8.24.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-24 00:01:17 +00:00
Renovate Bot dac3324517 Update typescript-eslint monorepo to v5.38.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-19 18:01:07 +00:00
Renovate Bot 4daa051f46 Update typescript-eslint monorepo to v5.37.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-12 18:00:54 +00:00
Renovate Bot b6633841c4 Update dependency eslint to v8.23.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-12 06:00:58 +00:00
Renovate Bot e3aa861364 Update dependency booru to v2.6.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-11 20:00:49 +00:00
Renovate Bot bf122663fa Update dependency typescript to v4.8.3
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-08 18:01:27 +00:00
Renovate Bot 8416ad38e0 Update typescript-eslint monorepo to v5.36.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-09-05 18:00:56 +00:00
Renovate Bot 6880e3c616 Update typescript-eslint monorepo to v5.36.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-30 15:00:53 +00:00
Renovate Bot eedd8d6d44 Update typescript-eslint monorepo to v5.36.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-30 02:00:59 +00:00
Renovate Bot 84a17989f5 Update dependency eslint to v8.23.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-26 23:01:02 +00:00
Renovate Bot 0457cbab5c Update dependency typescript to v4.8.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-26 00:01:37 +00:00
Renovate Bot 2ce5c0d65e Update typescript-eslint monorepo to v5.35.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-24 21:00:57 +00:00
Renovate Bot bc351e9dd4 Update typescript-eslint monorepo to v5.34.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-22 18:00:52 +00:00
Renovate Bot 766ec53d8a Update typescript-eslint monorepo to v5.33.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-15 18:01:53 +00:00
Renovate Bot 473a19abfe Update dependency got-cjs to v12.3.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-15 15:01:50 +00:00
Renovate Bot 11de6daac6 Update dependency eslint to v8.22.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-14 02:02:01 +00:00
Renovate Bot 083900a1d9 Update typescript-eslint monorepo to v5.33.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-08 20:04:34 +00:00
Renovate Bot bd668a7ae2 Update dependency booru to v2.6.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-03 08:01:11 +00:00
Renovate Bot fde3fbf48d Update typescript-eslint monorepo to v5.32.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-01 18:01:28 +00:00
Renovate Bot 85b4bc6f65 Update dependency eslint to v8.21.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-08-01 05:01:17 +00:00
Renovate Bot 094c2d003b Update dependency strip-json-comments to v3.1.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-30 15:00:51 +00:00
Sam Therapy 896b582bd9
revert JSON comments upgrade, make HTTP error more verbose
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-07-30 16:06:08 +02:00
Renovate Bot bbf9f2ed7e Update dependency booru to v2.6.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-30 03:00:52 +00:00
Renovate Bot 789e2a4250 Update dependency booru to v2.6.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-28 06:00:51 +00:00
Renovate Bot 2fb26ac43b Update typescript-eslint monorepo to v5.31.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-25 18:00:59 +00:00
Renovate Bot 9ec0e468dd Update dependency strip-json-comments to v5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-22 10:00:53 +00:00
Renovate Bot 348d99cd29 Update dependency booru to v2.5.9
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-20 01:00:53 +00:00
Renovate Bot 5b077e77c8 Update typescript-eslint monorepo to v5.30.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-18 18:01:06 +00:00
Renovate Bot fa2cc0380a Update dependency eslint to v8.20.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-17 15:01:53 -05:00
Renovate Bot a7dbcfc55d Update dependency booru to v2.5.8
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-13 00:02:28 -05:00
Renovate Bot 7c3d5c33b9 Update dependency pkg to v5.8.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-12 23:02:08 -05:00
Renovate Bot 3e0986a994 Update dependency booru to v2.5.7
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-12 22:01:35 -05:00
Renovate Bot 2c52d79d28 Update typescript-eslint monorepo to v5.30.6
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-11 13:01:56 -05:00
Renovate Bot e6bb89a6e8 Update dependency megalodon to v4.1.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-10 04:04:26 -05:00
Renovate Bot 6ee8a94329 Update typescript-eslint monorepo to v5.30.5
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-06 07:06:18 -05:00
Renovate Bot 69358e9c62 Update dependency eslint to v8.19.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-07-01 21:02:14 -05:00
Renovate Bot 54d09ffb5d Update typescript-eslint monorepo to v5.30.3
continuous-integration/drone/push Build is passing Details
2022-07-01 12:01:54 -05:00
Renovate Bot 8d1f97498e Update dependency eslint-plugin-prettier to v4.2.1
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-29 23:02:01 -05:00
Renovate Bot fe518de961 Update typescript-eslint monorepo to v5.30.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-27 13:01:59 -05:00
Renovate Bot c2b3a1bdc6 Update dependency eslint-plugin-prettier to v4.1.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-27 08:02:03 -05:00
Renovate Bot 1779d7d130 Update typescript-eslint monorepo to v5.29.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-23 19:02:09 -05:00
Renovate Bot 4e1b8f106b Update dependency @types/node-fetch to v2.6.2
continuous-integration/drone/push Build is passing Details
2022-06-23 23:12:27 +00:00
Renovate Bot 9d47b6b269 Update dependency eslint to v8.18.0
continuous-integration/drone/push Build is running Details
2022-06-23 23:12:20 +00:00
Renovate Bot 1f85f0fd29 Update dependency prettier to v2.7.1
continuous-integration/drone/push Build is passing Details
2022-06-23 07:33:14 +00:00
Renovate Bot 5d351cd200 Update dependency typescript to v4.7.4
continuous-integration/drone/push Build is passing Details
2022-06-19 16:23:42 +00:00
Renovate Bot 436ec7264d Update typescript-eslint monorepo to v5.28.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-13 13:01:36 -05:00
Sam Therapy 8fcbc8ee1d
Lint more
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-06-11 14:15:49 +02:00
Sam Therapy b9e294da14
Lint & Relicense
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-06-11 14:11:33 +02:00
Renovate Bot aa2c9ee9cd Update typescript-eslint monorepo to v5.27.1
continuous-integration/drone/push Build is passing Details
2022-06-11 13:59:52 +00:00
Renovate Bot 6b7c083988 Update dependency megalodon to v4.0.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-06 09:01:46 -05:00
Renovate Bot a935d69ad4 Update dependency eslint to v8.17.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-06-04 16:01:45 -05:00
Renovate Bot 4f0957ab6b Update dependency typescript to v4.7.3
continuous-integration/drone/push Build is passing Details
2022-06-04 20:09:40 +00:00
Renovate Bot 454471217e Update typescript-eslint monorepo to v5.27.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is running Details
2022-05-30 13:01:47 -05:00
Renovate Bot 5ac38df94d Update dependency typescript to v4.7.2
continuous-integration/drone/push Build is passing Details
2022-05-30 15:37:59 +00:00
Renovate Bot d85295b010 Update dependency eslint to v8.16.0
continuous-integration/drone/push Build is running Details
2022-05-30 15:37:32 +00:00
Renovate Bot e5754e7419 Update dependency pkg to v5.7.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is running Details
2022-05-17 22:01:26 -05:00
Renovate Bot 0bff24ef8e Update typescript-eslint monorepo to v5.25.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-17 11:01:37 -05:00
Sam Therapy 09f01b46c5
Fix pkg builds
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-05-12 13:38:50 +02:00
Renovate Bot 1ffd8da54f Update typescript-eslint monorepo to v5.23.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-09 13:01:25 -05:00
Sam Therapy aac12d0870
Pin all dependencies
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-05-09 17:27:17 +02:00
Sam Therapy 684b06fba1
Update dependencies
continuous-integration/drone/push Build is running Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-05-09 17:23:29 +02:00
Renovate Bot 80c9e83ef8 Update dependency eslint to v8.15.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-06 19:28:59 -05:00
Renovate Bot 14f07a6226 Update dependency prettier to v2.6.2
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-03 06:11:50 -05:00
Renovate Bot 4604e6c796 Update typescript-eslint monorepo to v5.22.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-03 11:08:36 +00:00
Renovate Bot a5995bdf39 Update dependency strip-json-comments to v4
continuous-integration/drone/push Build is passing Details
2022-05-03 11:08:04 +00:00
Renovate Bot fd84c843b2 Update dependency pkg to v5.6.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-03 05:53:47 -05:00
Renovate Bot 522c45ace3 Update dependency eslint to v8.14.0
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2022-05-03 10:26:37 +00:00
Renovate Bot f1802cf622 Pin dependencies
renovate/artifacts Artifact file update failure
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is failing Details
2022-05-03 09:56:41 +00:00
Renovate Bot 1ca719dd49 Configure Renovate (#3)
continuous-integration/drone/push Build is passing Details
Activate Renovate
Co-authored-by: Renovate Bot <renovate-bot@noreply.git.froth.zone>
Co-committed-by: Renovate Bot <renovate-bot@noreply.git.froth.zone>
2022-05-03 09:54:03 +00:00
Sam Therapy da97f20927
[SKIP CI] add musl
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-03-16 22:54:41 +01:00
Sam Therapy 801e61578c
[SKIP CI] Update packaging
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-03-16 22:34:37 +01:00
Sam Therapy 379c74fc1c
[SKIP CI] README
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-03-16 22:06:38 +01:00
Sam Therapy fef9ebb4a6
Add ARM builds
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-03-16 21:33:28 +01:00
Sam Therapy 5f8e6767cf
Documentation + arm, maybe
continuous-integration/drone/push Build is passing Details
Signed-off-by: Sam Therapy <sam@samtherapy.net>
2022-03-16 20:49:18 +01:00
Sam Therapy 153ba14fab
Booru support (#1)
continuous-integration/drone/push Build is passing Details
- Convert to yarn v2 with zero installs
- Refactor much of app to use config instead of flags

Co-authored-by: Sam Therapy <sam@samtherapy.net>
Reviewed-on: Sam/fediverse-imagebot#1
2022-03-15 19:13:35 +00:00
28 changed files with 2750 additions and 2236 deletions

91
.drone.jsonnet Normal file
View File

@ -0,0 +1,91 @@
local pipe(arch) = {
kind: 'pipeline',
type: 'docker',
name: arch,
platform: {
arch: arch,
},
steps: [
{
name: 'deps',
image: 'node',
commands: [
'corepack enable && pnpm config set store-dir .cache/pnpm',
'pnpm i',
],
},
{
name: 'lint',
image: 'node',
commands: [
'npm run lint:ci',
],
depends_on: [
'deps',
],
},
{
name: 'build',
image: 'node',
commands: [
'npm run build',
],
depends_on: [
'lint',
],
},
],
trigger: {
event: {
exclude: [
'tag',
],
},
},
};
local release(arch) = {
kind: 'pipeline',
type: 'docker',
name: 'release-%s' % [arch],
platform: {
arch: arch,
},
trigger: {
event: [
'tag',
],
},
steps: [
{
name: 'build',
image: 'node:lts',
commands: [
'corepack enable && pnpm config set store-dir .cache/pnpm',
'pnpm i',
'pnpm build',
],
},
{
name: 'publish',
image: 'plugins/npm',
settings: {
token: {
from_secret: 'release_api_key',
},
registry: 'https://git.froth.zone/api/packages/sam/npm/',
},
depends_on: [
'build',
],
},
],
};
[
pipe('amd64'),
pipe('arm64'),
release('amd64'),
// release('arm64'),
]

View File

@ -1,56 +0,0 @@
kind: pipeline
type: docker
name: default
steps:
- name: dependencies
image: node
commands:
- yarn
- name: lint
image: node
depends_on:
- dependencies
commands:
- yarn lint
- name: build
image: node
depends_on:
- dependencies
commands:
- yarn build
- name: test
image: node
depends_on:
- build
commands:
- yarn test
- name: package
image: node
depends_on:
- lint
- test
commands:
- yarn package
when:
event:
- tag
- name: Release
image: plugins/gitea-release
depends_on:
- package
settings:
api_key:
from_secret: release_api_key
base_url: https://git.froth.zone
files:
- dist/imagebot-*
when:
event:
- tag

1
.eslintignore Normal file
View File

@ -0,0 +1 @@
dist/

View File

@ -1,36 +1,24 @@
{
"env": {
"commonjs": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 13
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
]
}
"env": {
"browser": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["@typescript-eslint", "prettier"],
"rules": {
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double"],
"semi": ["error", "never"],
"prettier/prettier": ["error", { "singleQuote": false, "semi": false }]
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
]
}

14
.gitignore vendored
View File

@ -112,11 +112,15 @@ dist
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
.yarn/*
!.yarn/cache
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.dccache
config.json
config.jsonc
config.json5
images/*

2
.prettierignore Normal file
View File

@ -0,0 +1,2 @@
dist/
.yarn/

17
LICENSE
View File

@ -1,9 +1,10 @@
MIT License
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
Copyright (c) 2022 Sam Therapy
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@ -1,50 +1,87 @@
# fediverse-imagebot
[![Build Status](https://ci.git.froth.zone/api/badges/Sam/fediverse-imagebot/status.svg)](https://ci.git.froth.zone/Sam/fediverse-imagebot)
[![Build Status](https://ci.git.froth.zone/api/badges/sam/fediverse-imagebot/status.svg)](https://ci.git.froth.zone/sam/fediverse-imagebot)
A bot that posts (currently only local) images to the Fediverse.
A bot that posts local and booru images to the Fediverse.
Compatible with Mastodon, Misskey and Pleroma!
## Downloading pre-built binaries
Download prebuilt binaries from [here](https://git.froth.zone/Sam/fediverse-imagebot/releases/latest) (currently only supports x64), or build from source, instructions below.
## MIGRATING MAJOR VERSIONS
See [the wiki](https://git.froth.zone/sam/fediverse-imagebot/wiki/Migrating).
## Boorus supported
The full list of boorus supported is found [here](https://github.com/AtoraSuunva/booru/blob/master/src/sites.json).
## Downloading the bot
There are currently three ways to do this, a pre-built binary that bundles in node, from npm, or building from source. Both are listed below.
### From NPM
1. Set up using the [Gitea registry](https://git.froth.zone/sam/fediverse-imagebot/packages)
```sh
npm config set @froth:registry https://git.froth.zone/api/packages/sam/npm/
```
2. After setting up the registry, either run it once
```sh
npx --package=@froth/fediverse-imagebot fediverse-imagebot
```
or install globally
```sh
npm i -g @froth/fediverse-imagebot
```
### Downloading pre-built binaries
#### NOTE: This is no longer supported since vercel/pkg is broken
Download prebuilt binaries from [here](https://git.froth.zone/sam/fediverse-imagebot/releases/latest). (currently supports x86_64 and arm64 on Linux
[glibc or musl], macOS and Windows)
1. Run the bot with the `-w` flag to have it generate a configuration file to the local directory.
2. Edit it for your use case.
- If you want to generate a key you can use <https://git.froth.zone/sam/js-feditoken>
3. Run the bot by launching the executable!
### Running from Source
## Running from Source
1. You need to have `npm` and `nodejs` installed.
- Node 15 or greater is required.
2. Install `yarn`: \
`npm install --global yarn`
- This may be need to ran with `sudo` depending on your installation.
- Node 16 or greater is required.
2. Install `pnpm`: \
`corepack enable` \
Check <https://pnpm.io/installation> for more information.
3. Clone the repository: \
`git clone https://git.freecumextremist.com/NotSam/fediverse-imagebot.git`
`git clone https://git.froth.zone/sam/fediverse-imagebot.git`
4. Install dependencies: \
`yarn --production`
`pnpm i`
5. Build: \
`yarn build`
8. Run the bot: \
`yarn local`
`pnpm run build`
6. Edit the config file: \
`cp config.sample.jsonc config.jsonc`
- If you want to generate a key you can use https://git.froth.zone/sam/js-feditoken
7. Run the bot: \
`pnpm bot`
You're done! The bot should post a local image to the fediverse instance of your choosing!
## Running the bot
1. Obtain a token. I have another tool that does this for you, which can be found [here](https://git.froth.zone/Sam/js-feditoken) and put it in `config.json`, following the sample json file.
2. Put images in the `images` folder.
- By default the bot will look for SFW images at `images/sfw` and NSFW images at `images/nsfw`. This can be configured with the `-d` flag.
## Automating the bot
*TODO: Elaborate more*
_TODO: Elaborate more_
The bot can be automated to post images at set times using a cronjob. \
Example cron configuration:
```
0 * * * * cd /path/to/fediverse-imagebot && /usr/local/bin/yarn local -m "Message"
0 * * * * cd /path/to/fediverse-imagebot && pnpm bot -c ./config.sample.jsonc
```
This example will run the bot every hour on the hour with the post message `Message` using images from the default `images` directory.
This example will run the bot every hour on the hour with no message using images from the default `images` directory.
An example of this pleroma configuration can be found at https://froth.zone/rinbot.

View File

@ -1,8 +1,33 @@
// This is just a mock of what the config should look like
// Run yarn build && yarn gen-token to generate the configuration.
{
//Instance and token settings
"instance": "INSTANCE_URL", // example https://test.com
"type": "INSTANCE_TYPE", // examples: "mastodon", "misskey", "pleroma"
"accessToken": "ACCESS_TOKEN",
"refreshToken": "REFRESH_TOKEN" // This can be left blank, as it is currently not used for anything.
}
"accessToken": "ACCESS_TOKEN", // Get a token from https://git.froth.zone/Sam/js-feditoken
"refreshToken": "REFRESH_TOKEN", // optional
// Post settings
"message": "", // example: "Hello, world!"
"visibility": "unlisted", // example: "public", "unlisted", "private", "direct"
// Misc settings
"retries": 5, // Number of times to retry an upload/post if it fails. Default is 5 if this does not exist.
"remote": false, // **Set this to `true` if you want to serve a file from a booru!**
/* THESE SETTINGS WILL BE IGNORED IF YOU SET `remote` TO `false` */
"booru": "safebooru.org", // example: "safebooru.org"
"tags": [""], // example: ["tohsaka_rin", "-feet"]
"rating": "safe", // example: "safe", "questionable", "explicit"
/* END OF SETTINGS THAT WILL BE IGNORED IF YOU SET `remote` TO `false` */
/* THESE SETTINGS WILL BE IGNORED IF YOU SET `remote` TO `true` */
"directory": "./images" // example: "./images"
/*
Directory structure should be as follows:
folder/
- sfw/
- image1.jpg
- nsfw/
- image1.jpg
*/
/* END OF SETTINGS THAT WILL BE IGNORED IF YOU SET `remote` TO `true` */
}

View File

@ -1,37 +1,53 @@
{
"dependencies": {
"command-line-args": "^5.2.1",
"command-line-usage": "^6.1.1",
"megalodon": "^4.0.0",
"typescript": "^4.5.5"
},
"name": "fediverse-imagebot",
"version": "1.1.0",
"description": "Image bot for the fediverse (Pleroma, Mastodon, Misskey)",
"main": "dist/local.js",
"bin": "dist/local.js",
"pkg": {
"scripts": "build/**/*.js",
"targets": ["node16-linux-x64","node16-macos-x64","node16-win-x64"]
},
"scripts": {
"build": "yarn run clean && tsc",
"clean": "rm -rf dist",
"lint": "eslint --ext .ts src",
"local": "node ./dist/local.js",
"package": "pkg . -o dist/imagebot-x64 -C Gzip",
"test": "echo \"No tests yet!\" && exit 0"
},
"repository": "https://git.froth.zone/Sam/fediverse-imagebot",
"author": "Sam Therapy <sam@samtherapy.net>",
"license": "MIT",
"devDependencies": {
"@types/command-line-args": "^5.2.0",
"@types/command-line-usage": "^5.0.2",
"@types/node": "^17.0.18",
"@typescript-eslint/eslint-plugin": "^5.12.0",
"@typescript-eslint/parser": "^5.12.0",
"eslint": "^8.9.0",
"pkg": "^5.5.2"
"dependencies": {
"booru": "2.6.3",
"command-line-args": "5.2.1",
"command-line-usage": "7.0.1",
"got": "12.6.1",
"json5": "2.2.3",
"megalodon": "6.0.2",
"p-retry": "5.1.2"
},
"name": "@froth/fediverse-imagebot",
"version": "2.1.1",
"description": "Image bot for the fediverse (Pleroma, Mastodon, Misskey)",
"main": "dist/bot.js",
"bin": "dist/bot.js",
"pkg": {
"scripts": "dist/**/*.js"
},
"scripts": {
"build": "tsc -b",
"clean": "tsc -b --clean",
"lint": "eslint --ext .ts ./src --fix && prettier --no-semi --write ./src",
"lint:ci": "eslint --ext .ts,.js ./src && prettier --no-semi --check ./src",
"bot": "node ./dist/bot.js",
"package": "pkg . -C Gzip",
"test": "echo \"No tests yet!\" && exit 0",
"prepublishOnly": "npm run build"
},
"repository": "https://git.froth.zone/sam/fediverse-imagebot",
"author": "Sam Therapy <sam@samtherapy.net>",
"license": "0BSD",
"devDependencies": {
"@types/command-line-args": "5.2.0",
"@types/command-line-usage": "5.0.2",
"@types/http-cache-semantics": "4.0.1",
"@types/node": "18.16.16",
"@typescript-eslint/eslint-plugin": "5.59.7",
"@typescript-eslint/parser": "5.59.7",
"eslint": "8.41.0",
"eslint-config-prettier": "8.8.0",
"eslint-plugin-prettier": "4.2.1",
"pkg": "5.8.1",
"prettier": "2.8.8",
"typescript": "5.0.4"
},
"files": [
"dist"
],
"type": "module",
"publishConfig": {
"registry": "https://git.froth.zone/api/packages/sam/npm/"
}
}

2051
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

5
renovate.json Normal file
View File

@ -0,0 +1,5 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:base"],
"rangeStrategy": "pin"
}

23
src/bot.ts Normal file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env node
import getLocalImage from "./getLocalImage.js"
import getRemoteImage from "./getRemoteImage.js"
import getConfig from "./helpers/getConfig.js"
import { config } from "./helpers/types.js"
/**
* Main function
*/
async function main() {
const conf: config = await getConfig()
if (conf.remote) await getRemoteImage(conf)
else await getLocalImage(conf)
}
if (Number(process.versions.node.split(".")[0]) < 16) {
console.error("Please upgrade to node 16. NO GUARENTEES!")
}
// Run the main function, obviously.
main()

62
src/getLocalImage.ts Normal file
View File

@ -0,0 +1,62 @@
import { createReadStream, ReadStream } from "node:fs"
import { readdir } from "node:fs/promises"
import { exit } from "node:process"
import postImage from "./postImage.js"
import args from "./helpers/args.js"
import crashHandler from "./helpers/crashHandler.js"
import { config } from "./helpers/types.js"
/**
* Get a local image from the filesystem
* @param conf Configuration object (see {@link config})
* @calls postImage with the image it randomly selects from the local directory
*/
export default async function getLocalImage(conf: config) {
// Get SFW directory
const sfw_files: string[] = await readdir(`${conf.directory}/sfw`).catch(
(e) => {
crashHandler("Error reading SFW image directory.", e)
return []
}
)
// Get NSFW directory
const nsfw_files: string[] = await readdir(`${conf.directory}/nsfw`).catch(
(e) => {
crashHandler("Error reading NSFW image directory.", e)
return []
}
)
const random = Math.floor(
Math.random() * (sfw_files.length + nsfw_files.length)
)
// Filler that is used to get a random file from the directories
let image: ReadStream
let sensitivity: boolean
let file: string
if (random >= sfw_files.length) {
// Image is NSFW, mark it sensitive
file = `${conf.directory}/nsfw/${nsfw_files[random - sfw_files.length]}`
image = createReadStream(file).on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err)
})
sensitivity = true
} else {
// Image is SFW, mark it not sensitive
file = `${conf.directory}/sfw/${sfw_files[random]}`
image = createReadStream(file).on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err)
})
sensitivity = false
}
if (args.verbose) {
console.log(`File being sent: ${file}`)
console.log(`Sensitivity: ${sensitivity}`)
}
await postImage(image, sensitivity, conf)
exit(0)
}

66
src/getRemoteImage.ts Normal file
View File

@ -0,0 +1,66 @@
import { createReadStream, createWriteStream } from "node:fs"
import { unlink } from "node:fs/promises"
import { exit } from "node:process"
import stream from "node:stream"
import { promisify } from "node:util"
import { search, Post } from "booru"
import got from "got"
import postImage from "./postImage.js"
import args from "./helpers/args.js"
import crashHandler from "./helpers/crashHandler.js"
import { config } from "./helpers/types.js"
/**
* Get a remote image from a booru
*
* Currently this also downloads the image locally but idc nmp it gets deleted
* @param conf Configuration object (see {@link config})
* @calls postImage with the image it randomly selects from the booru given
*/
export default async function getRemoteImage(conf: config) {
const searchResults = await search(conf.booru, conf.tags, {
limit: 1,
random: true,
}).catch((e) => {
crashHandler("Error searching for posts.", e)
return [] as Post[]
})
if (searchResults.length === 0) {
crashHandler("Error searching for posts.", Error("No posts found."))
return
}
const post = searchResults[0]
if (args.verbose) console.log(`Found post: ${post.id} at ${post.file_url}`)
// Set the post as sensitive if the rating is not safe
const sensitivity: boolean = post.rating !== "s"
// Make an HTTP request for the image
const filename: string = post.fileUrl?.split("/").pop() as string // Type checks for type checks
const pipeline = promisify(stream.pipeline)
// Make the HTTP request as a stream so it can be piped to the file system
await pipeline(
got.stream(post.file_url as string),
createWriteStream(filename)
).catch((err: Error) => {
crashHandler("Error saving downloading image.", err)
})
if (args.verbose) console.log(`Saved image to ${filename}`)
const str = createReadStream(filename).on("error", (err: Error) => {
crashHandler("Error reading downloaded image.", err)
})
if (args.verbose) {
console.log(`File being sent: ${filename}\nSensitivity: ${sensitivity}`)
}
// Make a status with the image
await postImage(str, sensitivity, conf)
// Delete the image that it downloaded
await unlink(filename).catch((err: Error) => {
crashHandler("Error deleting downloaded image.", err)
})
if (args.verbose) console.log(`Successfully deleted image ${filename}`)
exit(0)
}

78
src/helpers/args.ts Normal file
View File

@ -0,0 +1,78 @@
import { exit } from "node:process"
import commandLineArgs from "command-line-args"
import commandLineUsage from "command-line-usage"
import writeConfig from "./writeConfig.js"
const optionDefinitions = [
{
name: "help",
type: Boolean,
alias: "h",
description: "Print this usage guide.",
},
{
name: "verbose",
type: Boolean,
alias: "v",
defaultValue: false,
description: "Print debugging output.",
},
{
name: "config",
type: String,
alias: "c",
description:
"Path to the JSON configuration file. (default: ./config.jsonc)",
defaultValue: "./config.jsonc",
typeLabel: "<file.json[c,5]>",
},
{
name: "writeConfig",
type: Boolean,
alias: "w",
description:
"Write a default configuration file to the current directory and exit.",
},
{
name: "message",
type: String,
alias: "m",
description: "The message to post with the image.",
defaultValue: "",
typeLabel: "<message>",
},
]
const args = commandLineArgs(optionDefinitions)
if (args.help) {
const usage = commandLineUsage([
{
header: "Fediverse Image Bot",
content:
"A bot that posts images from a local directory to the Fediverse.",
},
{
header: "Options",
optionList: optionDefinitions,
},
{
content:
"Project home: {underline https://git.froth.zone/Sam/fediverse-imagebot}",
},
])
console.log(usage)
exit(0)
}
if (args.verbose) console.log("Running in verbose mode.\n")
if (args.writeConfig) {
writeConfig(args.verbose).then(() => {
console.log("Wrote default config file to ./config.jsonc")
exit(0)
})
}
export default args

View File

@ -1,69 +0,0 @@
import commandLineArgs from "command-line-args";
import commandLineUsage from "command-line-usage";
import { exit } from "process";
const optionDefinitions = [
{
name: "help",
type: Boolean,
alias: "h",
description: "Print this usage guide."
},
{
name: "verbose",
type: Boolean,
alias: "v",
description: "Print debugging output."
},
{
name: "config",
type: String,
alias: "c",
description: "Path to the JSON configuration file. (default: ./config.json)",
defaultValue: "./config.json",
typeLabel: "<file.json>"
},
{
name: "directory",
type: String,
alias: "d",
description: "The directory of images to upload. (default: ./images)",
defaultValue: "./images",
typeLabel: "<folder>"
},
{
name: "message",
type: String,
alias: "m",
description: "The message to post with the image.",
defaultValue: "",
typeLabel: "<message>"
}
];
const args = commandLineArgs(optionDefinitions);
if (args.help) {
const usage = commandLineUsage([
{
header: "Fediverse Image Bot",
content: "A bot that posts images from a local directory to the Fediverse."
},
{
header: "Options",
optionList: optionDefinitions
},
{
content: "Project home: {underline https://git.froth.zone/Sam/fediverse-imagebot}"
}
]);
console.log(usage);
exit(0);
}
if (args.verbose) {
console.log("Running in verbose mode.\n");
}
export default args;

View File

@ -1,20 +0,0 @@
import args from "./cli";
import crashHandler from "./errors";
import { readFile } from "fs/promises";
// Read the config file and return the contents as a JSON object
export default async function config() {
try {
return JSON.parse(
await readFile(args.config, "utf8")
.catch(err => {
crashHandler("Error reading config file.", err);
return ("");
})
);
}
catch (e: unknown) {
crashHandler("Error reading config file.", e);
}
}

View File

@ -0,0 +1,18 @@
import { exit } from "node:process"
import args from "./args.js"
/**
* The function that gets called when the program runs into an error.
* @param msg Custom error message
* @param e Error object passed in from the error handler
* @returns This function will never return.
*/
export default function crashHandler(msg: string, e: Error, res?: string) {
console.error(`${msg}: ${e.name}`)
if (args.verbose) {
console.error(`--BEGIN FULL ERROR--\n${e}\n${res}\n--END FULL ERROR--`)
} else console.error("Run with -v to see the full error.")
exit(1)
}

View File

@ -1,13 +0,0 @@
import { exit } from "process";
import args from "./cli";
// Boilerplate for the event any error occurs
export default function crashHandler(msg: string, e: Error | unknown) {
console.error(msg);
if (args.verbose) {
console.error(`--BEGIN FULL ERROR--\n${e}\n--END FULL ERROR--`);
} else
console.error("Run with -v to see the full error.");
exit(1);
}

49
src/helpers/getConfig.ts Normal file
View File

@ -0,0 +1,49 @@
import { readFile } from "node:fs/promises"
import JSON5 from "json5"
import args from "./args.js"
import crashHandler from "./crashHandler.js"
import { config } from "./types.js"
/**
* Reads the config file and returns the config object
* @returns The config object
*/
async function readConfig(): Promise<string> {
return readFile(args.config, "utf8").catch((err) => {
crashHandler("Error reading config file.", err)
return "CRASH"
})
}
/**
* Parses the config file and returns it as a JSON object
*
* See config.sample.jsonc for an example of the config file
* @returns {Promise<config>} The config file as a JSON object(see {@link config})
* @example
* const cfg = await getConfig();
* console.log(cfg.instance);
* // Prints "https://mastodon.social"
*/
export default async function getConfig(): Promise<config> {
let conf: config
try {
conf = JSON5.parse(
await readConfig().catch((err) => {
crashHandler("Error reading config file.", err)
return ""
})
)
// Backwards compatibility for older versions
conf.retries ??= 5
if (conf.retries < 1) conf.retries = 1
} catch (err: unknown) {
crashHandler("Error parsing config file.", Error(err as string))
return {} as config
}
if (args.verbose) {
console.log(`Read config file: ${args.config}\n${JSON.stringify(conf)}`)
}
return conf
}

16
src/helpers/types.ts Normal file
View File

@ -0,0 +1,16 @@
/**
* Config type to reduce boilerplate
*/
export type config = {
instance: string
type: "misskey" | "mastodon" | "pleroma"
accessToken: string
refreshToken: string | null
message: string
visibility: "direct" | "unlisted" | "private" | "public"
remote: boolean
booru: string
tags: string[]
directory: string
retries: number
}

View File

@ -0,0 +1,14 @@
import { writeFile } from "node:fs/promises"
/**
* Writes the sample config file to disk
* @returns Nothing
*/
export default async function writeConfig(verbose: boolean) {
if (verbose) console.log("Writing sample config to config.jsonc")
await writeFile(
"./config.jsonc",
// eslint-disable-next-line prettier/prettier
// prettier-ignore
"{ \n //Instance and token settings \n \"instance\": \"INSTANCE_URL\", // example https://test.com \n \"type\": \"INSTANCE_TYPE\", // examples: \"mastodon\", \"misskey\", \"pleroma\" \n \"accessToken\": \"ACCESS_TOKEN\", // Get a token from https://git.froth.zone/Sam/js-feditoken \n \"refreshToken\": \"REFRESH_TOKEN\", // optional \n \n // Post settings \n \"message\": \"\", // example: \"Hello, world!\" \n \"visibility\": \"unlisted\", // example: \"public\", \"unlisted\", \"private\", \"direct\" \n \n \"remote\": false, // **Set this to `true` if you want to serve a file from a booru!** \n /* THESE SETTINGS WILL BE IGNORED IF YOU SET `remote` TO `false` */ \n \"booru\": \"safebooru.org\", // example: \"safebooru.org\" \n \"tags\": [\"\"], // example: [\"tohsaka_rin\", \"-feet\"] \n \"rating\": \"safe\", // example: \"safe\", \"questionable\", \"explicit\" \n /* END OF SETTINGS THAT WILL BE IGNORED IF YOU SET `remote` TO `false` */ \n \n /* THESE SETTINGS WILL BE IGNORED IF YOU SET `remote` TO `true` */ \n \"directory\": \"./images\" // example: \"./images\" \n /* \n Directory structure should be as follows: \n folder/ \n - sfw/ \n - image1.jpg \n - nsfw/ \n - image1.jpg \n */ \n /* END OF SETTINGS THAT WILL BE IGNORED IF YOU SET `remote` TO `true` */ \n} \n"
)
}

View File

@ -1,53 +0,0 @@
import { createReadStream, ReadStream } from "fs";
import { readdir } from "fs/promises";
import { exit } from "process";
import args from "./helpers/cli";
import crashHandler from "./helpers/errors";
import post from "./post";
export default async function getLocalImage() {
const sfw_files: string[] = await readdir(`${args.directory}/sfw`).catch(e => {
crashHandler("Error reading SFW image directory.", e);
return [];
});
const nsfw_files: string[] = await readdir(`${args.directory}/nsfw`).catch(e => {
crashHandler("Error reading NSFW image directory.", e);
return [];
});
const random = Math.floor(Math.random() * (sfw_files.length + nsfw_files.length));
// Filler that is used to get a random file from the directories
let image: ReadStream;
let sensitivity: boolean;
let file = "";
if (random >= sfw_files.length) {
// Image is NSFW, mark it sensitive
file = `${args.directory}/nsfw/${nsfw_files[ random - sfw_files.length ]}`;
image = createReadStream(file)
.on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err);
});
sensitivity = true;
}
else {
// Image is SFW, mark it not sensitive
file = `${args.directory}/sfw/${sfw_files[ random]}`;
image = createReadStream(file)
.on("error", (err: Error) => {
crashHandler(`Error reading file "${file}"`, err);
});
sensitivity = false;
}
if (args.verbose) {
console.error(`File being sent: ${file}`);
console.error(`Sensitivity: ${sensitivity}`);
}
await post(image, sensitivity);
exit(0);
}
getLocalImage();

View File

@ -1,43 +0,0 @@
import { ReadStream } from "fs";
import generator, { Entity, Response } from "megalodon";
import config from "./helpers/config";
import crashHandler from "./helpers/errors";
import args from "./helpers/cli";
// Uploads an image to the Fediverse
// image: The image to upload
// sensitivity: Whether or not the image is sensitive
export default async function post(image: ReadStream, sensitivity: boolean) {
// Get config
const cfg: {
instance: string,
type: "misskey" | "mastodon" | "pleroma",
accessToken: string,
refreshToken: string | null
} = await config();
// Make a client to upload
const client = generator(cfg.type, cfg.instance, cfg.accessToken, cfg.refreshToken);
// Upload the image
const res: Response<Entity.Attachment> = await client.uploadMedia(image).catch(err => {
crashHandler("Error uploading image.", err);
return ({} as Response<Entity.Attachment>);
});
// Make a status with the image
await client.postStatus(args.message,
{
media_ids: [ res.data.id ],
// Change this to make the post visibility you wish
visibility: "unlisted",
sensitive: sensitivity
}
).catch(err => {
crashHandler("Error posting status.", err);
});
if (args.verbose)
console.log(`Successfully posted to ${cfg.instance}`);
return;
}

64
src/postImage.ts Normal file
View File

@ -0,0 +1,64 @@
import { ReadStream } from "node:fs"
import { Readable } from "node:stream"
import generatorPkg, { Entity, Response } from "megalodon"
const generator = generatorPkg.default
import pRetry from "p-retry"
import args from "./helpers/args.js"
import crashHandler from "./helpers/crashHandler.js"
import { config } from "./helpers/types.js"
/**
* Uploads an image to a fediverse instance
* @param image The image to upload
* @param sensitivity The sensitivity of the image
* @param cfg {@link config} object
* @returns { Promise<void> } Nothing
*/
export default async function postImage(
image: ReadStream | Readable,
sensitivity: boolean,
cfg: config
): Promise<void> {
// Make a client to upload
const client = generator(
cfg.type,
cfg.instance,
cfg.accessToken,
cfg.refreshToken
)
// Upload the image
const upload = async () => client.uploadMedia(image)
const res = await pRetry(upload, {
retries: cfg.retries,
onFailedAttempt: logRetry,
}).catch((err) => {
crashHandler("Error uploading image.", err, err.response.data)
return {} as Response<Entity.Attachment>
})
// Make the post
const post = async () =>
client.postStatus(args.message || cfg.message, {
media_ids: [res.data.id],
// Change this to make the post visibility you wish
visibility: cfg.visibility,
sensitive: sensitivity,
})
await pRetry(post, {
retries: cfg.retries,
onFailedAttempt: logRetry,
}).catch((err) => {
crashHandler("Error uploading image", err, err.response.data)
})
console.log(`Successfully posted to ${cfg.instance}`)
}
function logRetry(error: unknown) {
console.error("Retrying, error:")
console.error(error)
}

View File

@ -1,61 +1,37 @@
{
"compilerOptions": {
/* Basic Options */
"target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"lib": ["es6"], /* Specify library files to be included in the compilation. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
// "declaration": true, /* Generates corresponding '.d.ts' file. */
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
// "sourceMap": true, /*es Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
"outDir": "./dist", /* Redirect output structure to the directory. */
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
"removeComments": true, /* Do not emit comments to output. */
"forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */
// "noEmit": true, /* Do not emit outputs. */
"importHelpers": true, /* Import emit helpers from 'tslib'. */
"downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,
"module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
"lib": [
"es6"
] /* Specify library files to be included in the compilation. */,
"outDir": "./dist" /* Redirect output structure to the directory. */,
"removeComments": true /* Do not emit comments to output. */,
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
"importHelpers": false /* Import emit helpers from 'tslib'. */,
"downlevelIteration": true /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */,
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
"noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"strictNullChecks": true, /* Enable strict null checks. */
"strictFunctionTypes": true, /* Enable strict checking of function types. */
"strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
"noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
"alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
"strict": true /* Enable all strict type-checking options. */,
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
"strictNullChecks": true /* Enable strict null checks. */,
"strictFunctionTypes": true /* Enable strict checking of function types. */,
"strictPropertyInitialization": true /* Enable strict checking of property initialization in classes. */,
"noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */,
"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,
/* Additional Checks */
"noUnusedLocals": true, /* Report errors on unused locals. */
"noUnusedParameters": true, /* Report errors on unused parameters. */
"noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
"noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
"noUnusedLocals": true /* Report errors on unused locals. */,
"noUnusedParameters": true /* Report errors on unused parameters. */,
"noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
"noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */,
/* Module Resolution Options */
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */
"allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
/* Source Map Options */
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
"moduleResolution": "NodeNext" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,
"allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */,
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
"sourceMap": true /* Generates corresponding '.map' file. */
},
"include": ["./src"]
}

1819
yarn.lock

File diff suppressed because it is too large Load Diff