dev-cron #1

Merged
jaandrle merged 3 commits from dev-cron into main 2024-06-28 14:11:02 +02:00
6 changed files with 920 additions and 294 deletions

View File

@ -1,22 +0,0 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
workflow_dispatch:
schedule:
- cron: '25 20 * * *'
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."

View File

@ -0,0 +1,17 @@
name: Collect month data
on:
workflow_dispatch:
schedule:
- cron: '0 12 1 * *' # At 12:00 Prague on the first day of the month
jobs:
update-rss:
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: https://gitea.com/actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: lts/*
cache: 'npm'
- run: npm ci
- run: npx nodejsscript mastodonCzStats.js --git

View File

@ -1,58 +1,15 @@
#!/usr/bin/env nodejsscript
#!/usr/bin/env -S npx nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
const instances_cz_pre= new Set([
"mastodonczech.cz",
"mastodon.arch-linux.cz",
"nasface.cz",
"witter.cz",
"cztwitter.cz",
"mastodon.pirati.cz",
"gomastodon.cz",
"f.cz",
"toot.whatever.cz",
"mastodon.macsnet.cz",
"lgbtcz.social",
"kompost.cz",
"boskovice.social",
"propulse.club",
"mastodon.1984.cz",
"mastodon.rozhlas.cz",
"fediverse.cz",
"mastodon.queerclub.cz",
"mastodon.urbancloud.cz",
"kocour.club",
"mastodon.telekomunikace.cz",
"ajtaci.club",
"mastodon.darksheep.social",
"social.filik.eu",
"social.meyer.cz",
"mastodon.posvic.cz",
"mastodon.starnet.cz",
"blogator.com",
"hatedon.1984.cz",
"mastodon.loutaci.cz",
"social.gwei.cz",
"mastodon.vyboh.net",
"mastodon.skorpil.cz",
"mastodon.hinata.cz",
"social.toxwat.cz",
"spondr.cz",
"hlidacstatu.social",
"mastodon.train.cz",
"social.bobek.cz",
"social.blep.cz",
"mastodon.kickme.cz",
"mastodon.starlink.cz",
"mastodon.kiklhorn.cz",
"mastodon.haxo.cz",
"mutant.cz",
"masto.den1.cz",
"mastodon.gmb.cz",
"rodina-sucha.cz",
"social.taborsky.cz",
]);
const store= "./mastodonCzStats.json";
const instances_cz_pre= new Set(s.cat(store).xargs(JSON.parse).instances_cz.map(i=> i.instance));
const { version, description }= s.cat("package.json").xargs(JSON.parse);
const timeOut= (l= 500)=> AbortSignal.timeout(l);
(async function main(){
$.api("", true)
.version(version)
.describe(description)
.option("--git", "Commit changes to git")
.action(async function main({ git: is_git }){
let stats= [];
for(const instance of instances_cz_pre){
echo.use("-R", "Shromažďuji instance: " + instance);
@ -71,10 +28,24 @@ const timeOut= (l= 500)=> AbortSignal.timeout(l);
instances_cz: stats.sort((a, b)=> b.registrations-a.registrations),
sum: stats.reduce((acc, stats) => sumStats([acc, stats]), { statuses: 0, logins: 0, registrations: 0, mau: 0, user_count: 0 })
};
echo(JSON.stringify(out, null, " ")).to("./mastodonCzStats.json");
echo(JSON.stringify(out, null, " ")).to(store);
if(is_git) gitCommit([ store ], "cron");
$.exit(0);
})();
})
.parse();
function gitCommit(files, des= "not specified"){
if(!files.length || !s.run`git diff --numstat`.trim())
return echo("Nothig todo");
echo("Diff to save");
s.run`git config user.name "Bot"`;
s.run`git config user.email "${"zc.murtnec@naj.elrdna".split("").reverse().join("")}"`;
s.run`git add ${files}`;
s.run`git commit -m "Updated by bot ${des}"`;
s.run`git push`;
s.run`git config --remove-section user`;
}
async function* collectStats(instances, weeks = 1) {
for(const instance of instances){
const { stats, mau, user_count }= await fetchInstanceStats(instance).catch(e=> ({}));

View File

@ -1,237 +1,237 @@
{
"instances_cz": [
{
"instance": "nasface.cz",
"mau": 71,
"user_count": 1458,
"week": 8553944685,
"statuses": 233,
"logins": 90,
"registrations": 34
"instance": "mastodonczech.cz",
"mau": 752,
"user_count": 5312,
"week": 8591530195,
"statuses": 10850,
"logins": 2325,
"registrations": 16
},
{
"instance": "witter.cz",
"mau": 271,
"user_count": 1458,
"week": 8554175825,
"statuses": 2613,
"logins": 762,
"registrations": 14
},
{
"instance": "boy.s.cz",
"mau": 19,
"user_count": 9,
"week": 8554110425,
"statuses": 1933,
"logins": 31,
"registrations": 14
},
{
"instance": "mastodonczech.cz",
"mau": 884,
"user_count": 5275,
"week": 8553901645,
"statuses": 11668,
"logins": 2559,
"registrations": 12
"mau": 248,
"user_count": 1488,
"week": 8591832860,
"statuses": 1836,
"logins": 701,
"registrations": 6
},
{
"instance": "mastodon.arch-linux.cz",
"mau": 199,
"user_count": 2980,
"week": 8554116335,
"statuses": 5164,
"logins": 505,
"mau": 167,
"user_count": 2997,
"week": 8591687250,
"statuses": 6461,
"logins": 428,
"registrations": 5
},
{
"instance": "f.cz",
"mau": 49,
"user_count": 124,
"week": 8591747175,
"statuses": 1379,
"logins": 146,
"registrations": 4
},
{
"instance": "mastodon.pirati.cz",
"mau": 47,
"user_count": 378,
"week": 8553954970,
"statuses": 168,
"logins": 123,
"registrations": 1
"mau": 50,
"user_count": 383,
"week": 8591587150,
"statuses": 293,
"logins": 122,
"registrations": 4
},
{
"instance": "boskovice.social",
"mau": 10,
"user_count": 26,
"week": 8554157700,
"statuses": 91,
"logins": 28,
"registrations": 1
"instance": "mamutovo.cz",
"mau": 8,
"user_count": 12,
"week": 8591647100,
"statuses": 413,
"logins": 23,
"registrations": 3
},
{
"instance": "cztwitter.cz",
"mau": 138,
"user_count": 767,
"week": 8553899725,
"statuses": 1659,
"logins": 380,
"registrations": 0
"mau": 131,
"user_count": 769,
"week": 8591724400,
"statuses": 1583,
"logins": 346,
"registrations": 2
},
{
"instance": "gomastodon.cz",
"mau": 5,
"user_count": 240,
"week": 8554184360,
"user_count": 242,
"week": 8591620775,
"statuses": 0,
"logins": 4,
"registrations": 0
"logins": 6,
"registrations": 2
},
{
"instance": "f.cz",
"mau": 45,
"user_count": 112,
"week": 8554161265,
"statuses": 1041,
"logins": 138,
"registrations": 0
"instance": "social.filik.eu",
"mau": 6,
"user_count": 9,
"week": 8591827515,
"statuses": 6,
"logins": 15,
"registrations": 2
},
{
"instance": "nasface.cz",
"mau": 8,
"user_count": 1388,
"week": 8591676940,
"statuses": 1,
"logins": 11,
"registrations": 1
},
{
"instance": "mastodon.urbancloud.cz",
"mau": 13,
"user_count": 17,
"week": 8591655020,
"statuses": 13,
"logins": 39,
"registrations": 1
},
{
"instance": "spondr.cz",
"mau": 4,
"user_count": 4,
"week": 8591442460,
"statuses": 152,
"logins": 16,
"registrations": 1
},
{
"instance": "toot.whatever.cz",
"mau": 5,
"user_count": 55,
"week": 8554056915,
"statuses": 19,
"logins": 16,
"user_count": 56,
"week": 8591576265,
"statuses": 43,
"logins": 15,
"registrations": 0
},
{
"instance": "kompost.cz",
"mau": 11,
"user_count": 33,
"week": 8591446410,
"statuses": 233,
"logins": 39,
"registrations": 0
},
{
"instance": "mastodon.macsnet.cz",
"mau": 3,
"user_count": 52,
"week": 8554040835,
"statuses": 216,
"week": 8591630330,
"statuses": 167,
"logins": 12,
"registrations": 0
},
{
"instance": "lgbtcz.social",
"mau": 9,
"mau": 8,
"user_count": 44,
"week": 8553853475,
"statuses": 4,
"logins": 20,
"registrations": 0
},
{
"instance": "kompost.cz",
"mau": 9,
"user_count": 33,
"week": 8554146195,
"statuses": 171,
"logins": 33,
"registrations": 0
},
{
"instance": "propulse.club",
"mau": 11,
"user_count": 22,
"week": 8554179085,
"statuses": 13741,
"logins": 37,
"registrations": 0
},
{
"instance": "mastodon.1984.cz",
"mau": 4,
"user_count": 20,
"week": 8553828115,
"statuses": 92,
"week": 8591463030,
"statuses": 7,
"logins": 16,
"registrations": 0
},
{
"instance": "boskovice.social",
"mau": 10,
"user_count": 26,
"week": 8591731330,
"statuses": 82,
"logins": 33,
"registrations": 0
},
{
"instance": "mastodon.1984.cz",
"mau": 3,
"user_count": 20,
"week": 8591673075,
"statuses": 0,
"logins": 12,
"registrations": 0
},
{
"instance": "mastodon.rozhlas.cz",
"mau": 5,
"mau": 6,
"user_count": 18,
"week": 8554146275,
"statuses": 194,
"logins": 14,
"week": 8591809005,
"statuses": 305,
"logins": 20,
"registrations": 0
},
{
"instance": "fediverse.cz",
"mau": 2,
"mau": 1,
"user_count": 18,
"week": 8554012740,
"week": 8591563520,
"statuses": 0,
"logins": 8,
"registrations": 0
},
{
"instance": "mastodon.urbancloud.cz",
"mau": 11,
"user_count": 16,
"week": 8554056620,
"statuses": 18,
"logins": 31,
"logins": 5,
"registrations": 0
},
{
"instance": "kocour.club",
"mau": 9,
"mau": 8,
"user_count": 14,
"week": 8554093690,
"statuses": 30,
"logins": 35,
"week": 8591574535,
"statuses": 26,
"logins": 28,
"registrations": 0
},
{
"instance": "ajtaci.club",
"mau": 1,
"user_count": 9,
"week": 8554068725,
"statuses": 2,
"logins": 4,
"week": 8591499030,
"statuses": 4,
"logins": 5,
"registrations": 0
},
{
"instance": "mastodon.darksheep.social",
"mau": 7,
"mau": 0,
"user_count": 11,
"week": 8554003115,
"week": 8591478175,
"statuses": 0,
"logins": 7,
"registrations": 0
},
{
"instance": "social.filik.eu",
"mau": 5,
"user_count": 7,
"week": 8553999025,
"statuses": 19,
"logins": 17,
"logins": 0,
"registrations": 0
},
{
"instance": "social.meyer.cz",
"mau": 4,
"user_count": 9,
"week": 8553857805,
"statuses": 155,
"logins": 13,
"week": 8591583210,
"statuses": 139,
"logins": 17,
"registrations": 0
},
{
"instance": "mastodon.starnet.cz",
"mau": 2,
"user_count": 7,
"week": 8554080410,
"statuses": 13,
"week": 8591587000,
"statuses": 12,
"logins": 6,
"registrations": 0
},
{
"instance": "blogator.com",
"mau": 1,
"mau": 2,
"user_count": 5,
"week": 8554089770,
"week": 8591581115,
"statuses": 0,
"logins": 1,
"logins": 3,
"registrations": 0
},
{
@ -246,143 +246,134 @@
{
"instance": "mastodon.loutaci.cz",
"mau": 1,
"user_count": 5,
"week": 8554073865,
"statuses": 0,
"logins": 2,
"user_count": 7,
"week": 8591552095,
"statuses": 1,
"logins": 3,
"registrations": 0
},
{
"instance": "mastodon.skorpil.cz",
"mau": 3,
"user_count": 3,
"week": 8554017235,
"statuses": 52,
"logins": 13,
"week": 8591420460,
"statuses": 11,
"logins": 10,
"registrations": 0
},
{
"instance": "mastodon.hinata.cz",
"mau": 1,
"user_count": 3,
"week": 8553965295,
"week": 8591465235,
"statuses": 0,
"logins": 5,
"registrations": 0
},
{
"instance": "spondr.cz",
"mau": 3,
"user_count": 3,
"week": 8554175800,
"statuses": 194,
"logins": 12,
"instance": "social.toxwat.cz",
"mau": 1,
"user_count": 4,
"week": 8591731740,
"statuses": 0,
"logins": 1,
"registrations": 0
},
{
"instance": "hlidacstatu.social",
"mau": 1,
"user_count": 3,
"week": 8554157720,
"statuses": 2,
"logins": 2,
"week": 8591440675,
"statuses": 0,
"logins": 1,
"registrations": 0
},
{
"instance": "mastodon.train.cz",
"mau": 1,
"mau": 2,
"user_count": 2,
"week": 8554079760,
"week": 8591576985,
"statuses": 0,
"logins": 4,
"logins": 6,
"registrations": 0
},
{
"instance": "social.bobek.cz",
"mau": 1,
"user_count": 2,
"week": 8554122080,
"week": 8591585510,
"statuses": 1,
"logins": 4,
"logins": 5,
"registrations": 0
},
{
"instance": "social.blep.cz",
"mau": 1,
"user_count": 2,
"week": 8554098030,
"week": 8591784145,
"statuses": 0,
"logins": 2,
"registrations": 0
},
{
"instance": "mastodon.starlink.cz",
"mau": 0,
"user_count": 3,
"week": 8554067180,
"statuses": 0,
"logins": 0,
"logins": 4,
"registrations": 0
},
{
"instance": "mastodon.haxo.cz",
"mau": 1,
"mau": 0,
"user_count": 2,
"week": 8554082325,
"week": 8591552775,
"statuses": 0,
"logins": 3,
"logins": 0,
"registrations": 0
},
{
"instance": "mutant.cz",
"mau": 1,
"user_count": 2,
"week": 8553800860,
"statuses": 0,
"logins": 5,
"week": 8591787130,
"statuses": 6,
"logins": 4,
"registrations": 0
},
{
"instance": "mastodon.gmb.cz",
"mau": 1,
"user_count": 1,
"week": 8554139585,
"statuses": 1,
"logins": 3,
"week": 8591805170,
"statuses": 0,
"logins": 2,
"registrations": 0
},
{
"instance": "rodina-sucha.cz",
"mau": 1,
"user_count": 1,
"week": 8554184415,
"statuses": 73,
"logins": 5,
"week": 8591817085,
"statuses": 66,
"logins": 4,
"registrations": 0
},
{
"instance": "social.taborsky.cz",
"mau": 1,
"user_count": 1,
"week": 8554184415,
"statuses": 1,
"week": 8591585510,
"statuses": 2,
"logins": 5,
"registrations": 0
},
{
"instance": "mamutovo.cz",
"mau": 5,
"user_count": 7,
"week": 8554068045,
"statuses": 433,
"logins": 18,
"instance": "cynikobecny.cz",
"mau": 1,
"user_count": 2,
"week": 8591512610,
"statuses": 158,
"logins": 4,
"registrations": 0
},
{
"instance": "mastodon.morwud.cz",
"mau": 1,
"user_count": 1,
"week": 8553909020,
"week": 8591766055,
"statuses": 4,
"logins": 4,
"registrations": 0
@ -391,35 +382,53 @@
"instance": "torsten.cz",
"mau": 1,
"user_count": 4,
"week": 8553957045,
"statuses": 10,
"week": 8591490015,
"statuses": 18,
"logins": 5,
"registrations": 0
},
{
"instance": "cynikobecny.cz",
"mau": 1,
"user_count": 1,
"week": 8553817960,
"statuses": 139,
"logins": 4,
"registrations": 0
},
{
"instance": "mastodon.zs-studanka.cz",
"mau": 1,
"user_count": 1,
"week": 8554184510,
"statuses": 8,
"week": 8591832910,
"statuses": 17,
"logins": 4,
"registrations": 0
},
{
"instance": "social.vojtat.cz",
"mau": 1,
"user_count": 1,
"week": 8591589575,
"statuses": 0,
"logins": 3,
"registrations": 0
},
{
"instance": "boy.s.cz",
"mau": 1,
"user_count": 8,
"week": 8591727055,
"statuses": 303,
"logins": 3,
"registrations": 0
},
{
"instance": "social.jirutka.cz",
"mau": 1,
"user_count": 2,
"week": 8591668745,
"statuses": 56,
"logins": 4,
"registrations": 0
}
],
"sum": {
"statuses": 40173,
"logins": 4994,
"registrations": 80,
"mau": 1804,
"user_count": 13096
"statuses": 24659,
"logins": 4470,
"registrations": 47,
"mau": 1528,
"user_count": 13125
}
}

626
package-lock.json generated Normal file
View File

@ -0,0 +1,626 @@
{
"name": "mastodon-cz-stats",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mastodon-cz-stats",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"nodejsscript": "~1.0"
},
"bin": {
"mastodon-cz-stats": "mastodonCzStats.js"
},
"engines": {
"node": ">=18.19"
}
},
"node_modules/@types/glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
"dependencies": {
"@types/minimatch": "*",
"@types/node": "*"
}
},
"node_modules/@types/minimatch": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
},
"node_modules/@types/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@types/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-G4+QT8Plq6q1UnOX6JgtLrEU/4QXF/Z5oNr6TWdiv9EU2hsJPbemH4rCecwNajzij+2CxrxFg2Y98Q+ViDV79Q==",
"deprecated": "This is a stub types definition. mri provides its own type definitions, so you do not need this installed.",
"dependencies": {
"mri": "*"
}
},
"node_modules/@types/node": {
"version": "20.14.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
"integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/sade": {
"version": "1.7.8",
"resolved": "https://registry.npmjs.org/@types/sade/-/sade-1.7.8.tgz",
"integrity": "sha512-WGEWfxQ8VHLm3JS4ljRR3MSPqVjY0JMo6zsbBywOjFIxP8Cizxx1p6r6FxOnAOZpUn4VOFoRRTXFmaOLD/+VOQ==",
"dependencies": {
"@types/mri": "*"
}
},
"node_modules/@types/shelljs": {
"version": "0.8.15",
"resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.15.tgz",
"integrity": "sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==",
"dependencies": {
"@types/glob": "~7.2.0",
"@types/node": "*"
}
},
"node_modules/abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
"dependencies": {
"event-target-shim": "^5.0.0"
},
"engines": {
"node": ">=6.5"
}
},
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
"integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dependencies": {
"type-fest": "^0.21.3"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/any-shell-escape": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz",
"integrity": "sha512-36j4l5HVkboyRhIWgtMh1I9i8LTdFqVwDEHy1cp+QioJyKgAUG40X0W8s7jakWRta/Sjvm8mUG1fU6Tj8mWagQ=="
},
"node_modules/async-exit-hook": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-1.1.2.tgz",
"integrity": "sha512-CeTSWB5Bou31xSHeO45ZKgLPRaJbV4I8csRcFYETDBehX7H+1GDO/v+v8G7fZmar1gOmYa6UTXn6d/WIiJbslw==",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"peer": true
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"peer": true
},
"node_modules/css-in-console": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/css-in-console/-/css-in-console-2.0.0.tgz",
"integrity": "sha512-Xbphn3qbe/XO67D8dr7Q39qSqi3ddnSsL72nixhKLiUEr8K3oTlk9aCOKRyCVNgPtgWwhynM19jj5mw1n/K2Tg==",
"engines": {
"node": ">=18"
}
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
"engines": {
"node": ">= 12"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/event-target-shim": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
"engines": {
"node": ">=6"
}
},
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"peer": true
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"peer": true,
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"peer": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"peer": true
},
"node_modules/inspect-custom-symbol": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/inspect-custom-symbol/-/inspect-custom-symbol-1.1.1.tgz",
"integrity": "sha512-GOucsp9EcdlLdhPUyOTvQDnbFJtp2WBWZV1Jqe+mVnkJQBL3w96+fB84C+JL+EKXOspMdB0eMDQPDp5w9fkfZA=="
},
"node_modules/interpret": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"peer": true,
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-core-module": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz",
"integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
"peer": true,
"dependencies": {
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"engines": {
"node": ">=8"
}
},
"node_modules/just-flatten-it": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/just-flatten-it/-/just-flatten-it-2.2.1.tgz",
"integrity": "sha512-VwvlzikphspzZL38LiZpoBsFGQy6MnmXYekBeZA8lSNwgSC87zA3a93bCZKkDuOM+djMZhfjd3lXAZyxficKCg=="
},
"node_modules/just-zip-it": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/just-zip-it/-/just-zip-it-2.3.1.tgz",
"integrity": "sha512-h8Y3DAVTZRP3Weq7btWYfkYHQGhxiuKzfOO7Ec+x8XaDcBvbOsC2jIdezC6tEzbt+A4fTJTREnj3gF5DyMkFfw=="
},
"node_modules/log-update-async-hook": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/log-update-async-hook/-/log-update-async-hook-2.0.7.tgz",
"integrity": "sha512-V9KpD1AZUBd/oiZ+/Xsgd5rRP9awhgtRiDv5Am4VQCixiDnAbXMdt/yKz41kCzYZtVbwC6YCxnWEF3zjNEwktA==",
"dependencies": {
"ansi-escapes": "^4.3.2",
"async-exit-hook": "^1.1.2",
"onetime": "^2.0.1",
"wrap-ansi": "^7.0.0"
}
},
"node_modules/mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"engines": {
"node": ">=4"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"engines": {
"node": ">=4"
}
},
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
"formdata-polyfill": "^4.0.10"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"node_modules/nodejsscript": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/nodejsscript/-/nodejsscript-1.0.1.tgz",
"integrity": "sha512-FjicGRDDsrWCZNBdjHKLjriidynoSIN8kGrZGTZFBBiKxSydsui4LvrpZzvoAg9J6RE6vjxEXSLhrxGox6y+Dg==",
"dependencies": {
"@types/sade": "~1.7",
"@types/shelljs": "~0.8",
"abort-controller": "~3.0",
"css-in-console": "~2.0",
"log-update-async-hook": "~2.0",
"node-fetch": "~3.3",
"sade": "~1.8",
"shell-escape-tag": "~2.0"
},
"bin": {
"njs": "bin/index.mjs",
"nodejsscript": "bin/index.mjs"
},
"engines": {
"node": ">= 16.0.0"
},
"peerDependencies": {
"shelljs": "~0.8"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"peer": true,
"dependencies": {
"wrappy": "1"
}
},
"node_modules/onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
"dependencies": {
"mimic-fn": "^1.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"peer": true
},
"node_modules/rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"peer": true,
"dependencies": {
"resolve": "^1.1.6"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"peer": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/sade": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
"dependencies": {
"mri": "^1.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/shell-escape-tag": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/shell-escape-tag/-/shell-escape-tag-2.0.2.tgz",
"integrity": "sha512-kqmtJG6VzTahZl8Y3384ldskA9rzoEMdXLoMEBAq9334/UDdmfWl3OtmrGJPlVcyXvcSy3poDKka57gMxskMPw==",
"dependencies": {
"any-shell-escape": "^0.1.1",
"inspect-custom-symbol": "^1.1.1",
"just-flatten-it": "^2.1.0",
"just-zip-it": "^2.1.0"
}
},
"node_modules/shelljs": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"peer": true,
"dependencies": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
"rechoir": "^0.6.2"
},
"bin": {
"shjs": "bin/shjs"
},
"engines": {
"node": ">=4"
}
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
"ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"peer": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/type-fest": {
"version": "0.21.3",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
"integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
},
"node_modules/web-streams-polyfill": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"engines": {
"node": ">= 8"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"peer": true
}
}
}

25
package.json Normal file
View File

@ -0,0 +1,25 @@
{
"name": "mastodon-cz-stats",
"version": "1.0.0",
"description": "Experimentální skript k získání českých Mastodon instancí a dodatečných informací.",
"bin": "mastodonCzStats.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Jan Andrle <andrle.jan@centrum.cz>",
"repository": {
"type": "git",
"url": "https://gitea.jaandrle.cz/jaandrle/mastodonCzStats.git"
},
"homepage": "https://gitea.jaandrle.cz/jaandrle/mastodonCzStats",
"bugs": {
"url": "https://gitea.jaandrle.cz/jaandrle/mastodonCzStats/issues"
},
"license": "MIT",
"dependencies": {
"nodejsscript": "~1.0"
},
"engines": {
"node": ">=18.19"
}
}