{"_id":"@bernierllc/social-media-mastodon","_rev":"9-36362aed1a2546ccfb795861724826dd","name":"@bernierllc/social-media-mastodon","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@bernierllc/social-media-mastodon","version":"1.0.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"b8f1833b3cea335e583941325a02215b214bac85","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.0.0.tgz","fileCount":15,"integrity":"sha512-eV2nZoXMfJHBE1eQGy1K8MIE58iSHvzcbY7Zo8ThRaXJMZ+4lB8FbMl2Y6z6W0n5e9FW1FGUTaHxdjTuRWNQTQ==","signatures":[{"sig":"MEUCIQD0dgxXuBdlaVKeI2p2noCDqmsy3mA2o5m69iK5vu+JXgIgdZhIaJB4XcxcZC2TmxawH/ZzZQlQyyxxAT80ZR72qT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60988},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.0.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/1511563308627a4e8b3f45000264ace6/bernierllc-social-media-mastodon-1.0.0.tgz","_integrity":"sha512-eV2nZoXMfJHBE1eQGy1K8MIE58iSHvzcbY7Zo8ThRaXJMZ+4lB8FbMl2Y6z6W0n5e9FW1FGUTaHxdjTuRWNQTQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.7.0","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.19.6","dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.0.0_1766087510912_0.952723706516253","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/social-media-mastodon","version":"1.2.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"35c2d39345a05a9438bdfb85e34648383015b7e9","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.2.0.tgz","fileCount":15,"integrity":"sha512-f3Loxj0LOYP05kEPkeZQTIPGCzhbHDyaNHGOEjXb1K7YXKtTFSpMfkyxJ7UT/bkToD4LdAXoMW8fL0XEuRGWnQ==","signatures":[{"sig":"MEYCIQCLitI+2YteZ2ic6iJJKNfr6Ses1Zw5gOpv2sCScKJjQAIhAPDlX0lQQESydcVQYM9KbYCxh2AR18RCqjst49whGjL3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61063},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.2.0_1767642346124_0.5326713795356735","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/social-media-mastodon","version":"1.2.1","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"0667ff4f230d0e6e61553997e9b6104b76b2cf89","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.2.1.tgz","fileCount":15,"integrity":"sha512-W5BEAu8C5go9AdMxl2oUmYDTKuar5y+wwkA1NyTUrBr4dZHpo/y2XM6aRZCHGPw2zmDYpry1jlVgFbLpwnGJGQ==","signatures":[{"sig":"MEQCIAVw0KvcGbx6pPMdszDKYdU8lczylE2Nbu1spCU6j1dHAiB0243Kjumq3MCEICE1JZxzer21fZq9/KWdlqbnvFpUYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60966},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.2.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/tmp/a78370e4ca749593a3e6a33cf3e8b821/bernierllc-social-media-mastodon-1.2.1.tgz","_integrity":"sha512-W5BEAu8C5go9AdMxl2oUmYDTKuar5y+wwkA1NyTUrBr4dZHpo/y2XM6aRZCHGPw2zmDYpry1jlVgFbLpwnGJGQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.11.0","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.2.1_1773078126105_0.34747620846082117","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/social-media-mastodon","version":"1.2.2","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"7c5ec6a47c374fb11db6e306c9089a221f3b812b","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.2.2.tgz","fileCount":15,"integrity":"sha512-G39/q8dEMEYAcLF0ULJx5Pe8wCzho8HM9R41PIffhgEUOssgxLFRTTFWTeFbarpvk3yt3skukzpYRBkjHGhPyg==","signatures":[{"sig":"MEYCIQCCKwfPOILaGXGUY1CZWSIx9fzWihFYkyAAQW77ij1ErQIhALEPSPn8veU2SjRI2CtZDVQnPYjd+/mjoQHCdkNSdu6o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60966},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.2.2.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-1.2.2.tgz","_integrity":"sha512-G39/q8dEMEYAcLF0ULJx5Pe8wCzho8HM9R41PIffhgEUOssgxLFRTTFWTeFbarpvk3yt3skukzpYRBkjHGhPyg==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.11.0","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.2.2_1773163670399_0.788186777882045","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/social-media-mastodon","version":"1.3.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"a6c4106c7fad3c5d24ef0cca11c228b15b256269","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.3.0.tgz","fileCount":15,"integrity":"sha512-AL9nqof2vNheqw6/7ADYYvnq99w7gt9Hk8DC1uTc6qfF2iteCBIw8kmAyLLHsdI55H9aqBdkY5AZnK/7Q4u9VQ==","signatures":[{"sig":"MEUCIH9r+xMZkSrPkN99WdpD4ZTsWnkocff4M3oGs8tV+c6DAiEA8uKSjAsLUWAKZxm0DyrpXASjfrLNQ1FoZ49qsSULn7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60966},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.3.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-1.3.0.tgz","_integrity":"sha512-AL9nqof2vNheqw6/7ADYYvnq99w7gt9Hk8DC1uTc6qfF2iteCBIw8kmAyLLHsdI55H9aqBdkY5AZnK/7Q4u9VQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.14.1","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.3.0_1779241849756_0.5738890444902001","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/social-media-mastodon","version":"1.4.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"9e47dda89bf3dfe3c8ec0da11c2abfaa546fb1e0","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.4.0.tgz","fileCount":19,"integrity":"sha512-5rvLYjiSgE/vdr9e6r1zSX0InD5/Dq4H6yeXQ1FM0BRoVgOewLiijGNrg+7eCn+vY1ygstHb3ZbJdHckA4u+3A==","signatures":[{"sig":"MEQCIF0UERJkUDcmr8r40N5N1hW7tfWTK1ntOltcizTRYF5tAiAq+zVIJbXhridSeN7NGF+cyEjG/4/HEdh4mW08NwdT8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63769},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.4.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-1.4.0.tgz","_integrity":"sha512-5rvLYjiSgE/vdr9e6r1zSX0InD5/Dq4H6yeXQ1FM0BRoVgOewLiijGNrg+7eCn+vY1ygstHb3ZbJdHckA4u+3A==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.14.1","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.4.0_1779248454541_0.8387003033576961","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/social-media-mastodon","version":"1.5.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@1.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"0fb7bc5ee5b25f15f40ef534a1bd72c251f69d05","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-1.5.0.tgz","fileCount":19,"integrity":"sha512-HCLARTFAh/gy/m1TVGfLJmwBlZbBPKLqYZM5Zg6fX8MmvQa5rd0lUSwX+h+0FwHkhMPxU1Z5Mu3GfeArBQvunQ==","signatures":[{"sig":"MEUCIFLfemHZyxpjuNeMVyl2VK92vHCfrTfTIP7cE1pmStWOAiEA3Ik9j0yTOgRVcIvDU5h2aKzuynq1DrgJJAjgl7lLkwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63769},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-1.5.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-1.5.0.tgz","_integrity":"sha512-HCLARTFAh/gy/m1TVGfLJmwBlZbBPKLqYZM5Zg6fX8MmvQa5rd0lUSwX+h+0FwHkhMPxU1Z5Mu3GfeArBQvunQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"11.14.1","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_1.5.0_1779250602173_0.9665091718239225","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@bernierllc/social-media-mastodon","version":"2.0.0","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-mastodon@2.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e543c8ebb9db74a1777a59b1bff6a26d9fca74e7","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-2.0.0.tgz","fileCount":19,"integrity":"sha512-VShhno5qlQ+wOBAFlsR/hwNTQv073A+WpiX+8GbmfO6banhYQ+Nv3ka3LqCQrC4hp9VY9LXwlmE2sy58OlBVWQ==","signatures":[{"sig":"MEUCIQCFb1GbItjK3wq5+rH5++LWiglXZ0Bj1cXwUEVBj51XkgIgSuGcrJgVhkj9iTj0EOB9maVae//ezozAv2fmoUZxHFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66509},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-mastodon-2.0.0.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92496803-1977-49a2-8399-d6838453e08c"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-2.0.0.tgz","_integrity":"sha512-VShhno5qlQ+wOBAFlsR/hwNTQv073A+WpiX+8GbmfO6banhYQ+Nv3ka3LqCQrC4hp9VY9LXwlmE2sy58OlBVWQ==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"12.0.2","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@bernierllc/neverhub-adapter":"0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-mastodon_2.0.0_1785901563140_0.04246672630627235","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"_id":"@bernierllc/social-media-mastodon@2.0.1","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"ba7d2ce2e7c9c3d43cf62651c3530f3e30e3abe8","tarball":"https://registry.npmjs.org/@bernierllc/social-media-mastodon/-/social-media-mastodon-2.0.1.tgz","fileCount":19,"integrity":"sha512-0btVKw053tdIaO533hBsROJQY8DwTvf1kKPpF0ndK4NnZvLQSn/hY6qDN1sECS2xZjaB38DUfaBK0gu5qD9qfw==","signatures":[{"sig":"MEYCIQDm7V376qXpylcNHBEqPW3TQxmDUy35iWGxIHIW9DzY7AIhAP2VJ2XZ0fjJiScd1uaMYZ+LLWGkdbz2h+4OvB8WBh+/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDW+1WYpL+xi0w6T02my31TPtUAfMY8d97CcxXkW+msXQIhAONsMalIpVn3pmd9hN5paL1LVkheJ6mF7B0UC0jVx0EQ"}],"unpackedSize":66510},"main":"dist/index.js","name":"@bernierllc/social-media-mastodon","type":"module","_from":"file:bernierllc-social-media-mastodon-2.0.1.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"license":"SEE LICENSE IN LICENSE","scripts":{"lint":"eslint src --ext .ts","test":"NODE_OPTIONS='--experimental-vm-modules' jest --watch","build":"tsc","clean":"rimraf dist","lint:fix":"eslint src --ext .ts --fix","prebuild":"npm run clean","test:run":"NODE_OPTIONS='--experimental-vm-modules' jest --passWithNoTests","test:coverage":"NODE_OPTIONS='--experimental-vm-modules' jest --coverage --passWithNoTests"},"version":"2.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"92496803-1977-49a2-8399-d6838453e08c"}},"homepage":"https://github.com/bernierllc/tools#readme","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-mastodon/bernierllc-social-media-mastodon-2.0.1.tgz","_integrity":"sha512-0btVKw053tdIaO533hBsROJQY8DwTvf1kKPpF0ndK4NnZvLQSn/hY6qDN1sECS2xZjaB38DUfaBK0gu5qD9qfw==","bernierllc":{"integration":{"logger":"integrated","neverhub":"required","docsIntegration":"ready"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"_npmVersion":"12.2.0","description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/neverhub-adapter":"^0.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.14.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/social-media-mastodon_2.0.1_1790884482900_0.5398158327334832"}}},"time":{"created":"2025-12-18T19:51:50.822Z","modified":"2026-10-01T19:54:43.221Z","1.0.0":"2025-12-18T19:51:51.079Z","1.2.0":"2026-01-05T19:45:46.283Z","1.2.1":"2026-03-09T17:42:06.285Z","1.2.2":"2026-03-10T17:27:50.540Z","1.3.0":"2026-05-20T01:50:49.905Z","1.4.0":"2026-05-20T03:40:54.692Z","1.5.0":"2026-05-20T04:16:42.327Z","2.0.0":"2026-08-05T03:46:03.279Z","2.0.1":"2026-10-01T19:54:43.031Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/bernierllc/tools#readme","keywords":["mastodon","social-media","api","oauth2","federation","decentralized","posting","toots","threads","bernierllc"],"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-mastodon"},"description":"Mastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/social-media-mastodon\n\nMastodon API integration service with OAuth 2.0, content posting (toots, threads, polls), media uploads, and decentralized federation support.\n\n## Features\n\n- **OAuth 2.0 Authentication**: Secure authentication flow with automatic app registration\n- **Content Posting**: Post statuses (toots), threads, and scheduled posts\n- **Media Management**: Upload images with focal points and alt text\n- **Federation Support**: Works with any Mastodon instance\n- **Instance Configuration**: Fetch instance-specific settings and limits\n- **Social Interactions**: Favorite, boost, and reply to statuses\n- **TypeScript Support**: Full type definitions included\n\n## Installation\n\n```bash\nnpm install @bernierllc/social-media-mastodon\n```\n\n## Quick Start\n\n### Basic Setup\n\n```typescript\nimport { MastodonService } from '@bernierllc/social-media-mastodon';\n\nconst mastodon = new MastodonService({\n  instanceUrl: 'https://mastodon.social',\n  appRegistration: {\n    autoRegister: true,\n    appName: 'My Awesome App',\n    scopes: ['read', 'write'],\n  },\n});\n```\n\n### Authentication Flow\n\n```typescript\n// 1. Register your app (if not already registered)\nconst registration = await mastodon.registerApp();\nconsole.log('Client ID:', registration.clientId);\n\n// 2. Get authorization URL\nconst authUrl = await mastodon.getAuthorizationUrl(\n  'https://mastodon.social',\n  'https://myapp.com/callback'\n);\nconsole.log('Visit this URL to authorize:', authUrl);\n\n// 3. Handle the callback with the authorization code\nconst result = await mastodon.handleCallback(authorizationCode);\nif (result.success) {\n  console.log('Authenticated!');\n  console.log('Access Token:', result.credentials?.accessToken);\n}\n```\n\n### Posting Content\n\n```typescript\n// Simple status\nconst post = await mastodon.postStatus({\n  status: 'Hello Mastodon!',\n  visibility: 'public',\n});\n\nconsole.log('Posted:', post.url);\n\n// Status with content warning\nawait mastodon.postStatus({\n  status: 'This is sensitive content',\n  spoilerText: 'Warning: Spoilers',\n  sensitive: true,\n  visibility: 'unlisted',\n});\n\n// Status with media\nconst media = await mastodon.uploadMedia({\n  file: Buffer.from(imageData),\n  mimeType: 'image/jpeg',\n  description: 'A beautiful sunset',\n  focus: { x: 0.5, y: 0.75 }, // Focal point\n});\n\nif (media.success) {\n  await mastodon.postStatus({\n    status: 'Check out this photo!',\n    mediaIds: [media.mediaId!],\n  });\n}\n```\n\n### Posting Threads\n\n```typescript\nconst thread = await mastodon.postThread([\n  { status: 'First post in the thread' },\n  { status: 'Second post replying to the first' },\n  { status: 'Third post completing the thread' },\n]);\n\nif (thread.success) {\n  console.log('Thread posted with IDs:', thread.statusIds);\n}\n```\n\n### Scheduling Posts\n\n```typescript\nconst scheduledTime = new Date('2025-12-31T12:00:00Z');\n\nconst scheduled = await mastodon.scheduleStatus(\n  {\n    status: 'Happy New Year!',\n    visibility: 'public',\n  },\n  scheduledTime\n);\n\nconsole.log('Scheduled for:', scheduled.scheduledFor);\n```\n\n### Social Interactions\n\n```typescript\n// Favorite (like) a status\nawait mastodon.favouriteStatus('status-id-123');\n\n// Boost (reblog) a status\nawait mastodon.boostStatus('status-id-456');\n\n// Reply to a status\nawait mastodon.replyToStatus('status-id-789', {\n  status: '@username This is my reply',\n});\n\n// Delete a status\nawait mastodon.deleteStatus('status-id-abc');\n```\n\n### Instance Configuration\n\n```typescript\n// Fetch instance information\nconst config = await mastodon.fetchInstanceConfig('https://mastodon.social');\n\nconsole.log('Instance:', config.title);\nconsole.log('Max characters:', config.maxTootChars);\nconsole.log('Version:', config.version);\nconsole.log('Supported media types:', config.supportedMimeTypes);\n```\n\n### NeverHub Service Discovery\n\n`initialize()` registers the service with NeverHub. It is entirely optional —\nevery method below works without calling it — and it is safe to call when\nNeverHub is not running: registration silently no-ops in degraded mode.\n\n```typescript\nawait mastodon.initialize();\n```\n\n## API Reference\n\n### MastodonService\n\n#### Constructor\n\n```typescript\nnew MastodonService(config: MastodonServiceConfig)\n```\n\n**Parameters:**\n- `config.instanceUrl` (string, required): Mastodon instance URL\n- `config.clientId` (string, optional): Pre-registered app client ID\n- `config.clientSecret` (string, optional): Pre-registered app client secret\n- `config.appRegistration` (object, optional): App registration settings\n\n#### Methods\n\n##### Authentication\n\n**`registerApp(instanceUrl?: string): Promise<MastodonAppRegistration>`**\n\nRegister your application with a Mastodon instance.\n\n**`getAuthorizationUrl(instanceUrl: string, callbackUrl: string): Promise<string>`**\n\nGenerate OAuth authorization URL for user authentication.\n\n**`handleCallback(code: string, instanceUrl?: string): Promise<MastodonAuthResult>`**\n\nHandle OAuth callback and exchange authorization code for access token.\n\n**`isAuthenticated(): boolean`**\n\nCheck if the service is authenticated.\n\n##### Instance Information\n\n**`fetchInstanceConfig(instanceUrl?: string): Promise<MastodonInstanceConfig>`**\n\nFetch instance configuration and limits.\n\n**`getInstanceConfig(): MastodonInstanceConfig | null`**\n\nGet cached instance configuration.\n\n##### Content Posting\n\n**`postStatus(content: MastodonContent): Promise<MastodonPostResult>`**\n\nPost a single status (toot).\n\n**`postThread(contents: MastodonContent[]): Promise<MastodonThreadResult>`**\n\nPost a thread of connected statuses.\n\n**`scheduleStatus(content: MastodonContent, scheduledTime: Date): Promise<MastodonScheduleResult>`**\n\nSchedule a status for future posting.\n\n**`deleteStatus(statusId: string): Promise<boolean>`**\n\nDelete a status.\n\n**`replyToStatus(statusId: string, content: MastodonContent): Promise<MastodonPostResult>`**\n\nReply to an existing status.\n\n##### Media\n\n**`uploadMedia(media: MastodonMedia): Promise<MastodonMediaUploadResult>`**\n\nUpload media (image, video, etc.).\n\n**`updateMediaDescription(mediaId: string, description: string): Promise<void>`**\n\nUpdate media alt text/description.\n\n**`setMediaFocus(mediaId: string, focus: MastodonFocalPoint): Promise<void>`**\n\nSet media focal point for cropping.\n\n##### Social Interactions\n\n**`favouriteStatus(statusId: string): Promise<boolean>`**\n\nFavorite (like) a status.\n\n**`boostStatus(statusId: string): Promise<boolean>`**\n\nBoost (reblog) a status.\n\n## Types\n\n### MastodonContent\n\n```typescript\ninterface MastodonContent {\n  status: string;                    // Status text\n  spoilerText?: string;              // Content warning\n  visibility?: MastodonVisibility;   // 'public' | 'unlisted' | 'private' | 'direct'\n  inReplyToId?: string;              // Reply to status ID\n  mediaIds?: string[];               // Attached media IDs\n  sensitive?: boolean;               // Mark as sensitive content\n  language?: string;                 // Language code (e.g., 'en')\n  scheduledAt?: Date;                // Schedule for future posting\n}\n```\n\n### MastodonMedia\n\n```typescript\ninterface MastodonMedia {\n  file: Buffer | string;            // File buffer or path\n  mimeType: string;                 // MIME type (e.g., 'image/jpeg')\n  description?: string;             // Alt text\n  focus?: MastodonFocalPoint;       // Focal point for cropping\n}\n```\n\n### MastodonFocalPoint\n\n```typescript\ninterface MastodonFocalPoint {\n  x: number;  // X coordinate (0.0 to 1.0)\n  y: number;  // Y coordinate (0.0 to 1.0)\n}\n```\n\n## Error Handling\n\nAll async methods return result objects with `success` boolean and optional `error` message:\n\n```typescript\nconst result = await mastodon.postStatus({ status: 'Hello!' });\n\nif (!result.success) {\n  console.error('Failed to post:', result.error);\n} else {\n  console.log('Posted successfully:', result.statusId);\n}\n```\n\n## Best Practices\n\n### 1. Check Instance Limits\n\n```typescript\nconst config = await mastodon.fetchInstanceConfig();\nif (myStatus.length > config.maxTootChars) {\n  console.warn('Status too long for this instance!');\n}\n```\n\n### 2. Use Content Warnings\n\n```typescript\nawait mastodon.postStatus({\n  status: 'Spoiler content here',\n  spoilerText: 'Warning: Movie spoilers',\n  sensitive: true,\n});\n```\n\n### 3. Add Alt Text to Images\n\n```typescript\nconst media = await mastodon.uploadMedia({\n  file: imageBuffer,\n  mimeType: 'image/jpeg',\n  description: 'A detailed description for screen readers',\n});\n```\n\n### 4. Handle Authentication State\n\n```typescript\nif (!mastodon.isAuthenticated()) {\n  // Redirect to authorization flow\n  const authUrl = await mastodon.getAuthorizationUrl(...);\n  // ... redirect user\n}\n```\n\n### 5. Respect Rate Limits\n\nMastodon instances have rate limits. Consider implementing retry logic with exponential backoff.\n\n## Multi-Instance Support\n\nThe service supports multiple Mastodon instances. Each instance requires separate app registration:\n\n```typescript\n// Register on multiple instances\nconst mastodonSocial = new MastodonService({\n  instanceUrl: 'https://mastodon.social',\n});\n\nconst fosstodon = new MastodonService({\n  instanceUrl: 'https://fosstodon.org',\n});\n\nawait mastodonSocial.registerApp();\nawait fosstodon.registerApp();\n```\n\n## Testing\n\nThis package includes comprehensive tests with >90% coverage.\n\n```bash\nnpm test\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See LICENSE file for details.\n\n## Contributing\n\nThis package is part of the BernierLLC tools monorepo. For bug reports and feature requests, please use the issue tracker.\n\n## Related Packages\n\n- `@bernierllc/social-media-twitter` - Twitter/X API integration\n- `@bernierllc/social-media-bluesky` - Bluesky API integration\n- `@bernierllc/social-publisher` - Multi-platform social media publisher\n\n## Support\n\nFor support and questions, please refer to the main repository documentation.\n","readmeFilename":"README.md"}