{"_id":"@bernierllc/social-media-linkedin","_rev":"9-f9d8b00c9f7105747702bf73fc378cc1","name":"@bernierllc/social-media-linkedin","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@bernierllc/social-media-linkedin","version":"1.0.0","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@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":"3ac4f89c1769a53b06df45026d9bc4b1acf5a0fa","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.0.0.tgz","fileCount":14,"integrity":"sha512-lThDCWSwgYfWdfz5XbeCpTrw29vmIWQ0hfKj0V0VOCbz9IF4FA2LVdr0Y0Z/ho1cxBsh8dPzODzLYIIAsskIcg==","signatures":[{"sig":"MEQCIDrvzCachLM4NgSMXLyI4bJtj01+a9/aRFp+N56nvD/DAiBJbEcQFDVWRxv2l9Z0DxFl1BxvD6OvMlvvlw/4pnIO6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91700},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-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/df420f559e3fa64b3dddaa3f2c4df825/bernierllc-social-media-linkedin-1.0.0.tgz","_integrity":"sha512-lThDCWSwgYfWdfz5XbeCpTrw29vmIWQ0hfKj0V0VOCbz9IF4FA2LVdr0Y0Z/ho1cxBsh8dPzODzLYIIAsskIcg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.7.0","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.0.0_1766087509968_0.8587596477252777","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/social-media-linkedin","version":"1.0.2","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@1.0.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":"f9f8254cd9c7223a98bf3de0a526a5478a41d348","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.0.2.tgz","fileCount":14,"integrity":"sha512-4mVuYJy9ZNxX5jmMTIGmBOEWqhJwzQVfoSP+MWTskiBsMyVv08nEFaWPGqM+tgAY5bLPDbxsPNKH2d5MMgPRZA==","signatures":[{"sig":"MEUCIQDuW/yXEHik3qPD1tu9V72mzJaNFQoM/sbojWugtDSpcAIgIJOrdhL3BXEPezNcaa6I/1vQ/OuX4a7lbu69QB2L63I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91775},"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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.0.2_1767642345310_0.40518248249275235","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bernierllc/social-media-linkedin","version":"1.0.3","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@1.0.3","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":"08f75bba25b4e9b0fc96971201d69681d9bc46de","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.0.3.tgz","fileCount":14,"integrity":"sha512-g127RcSL+Hss1LI8gogei1b91s1bqwPbU34+G0PY8uCwB/cx/H7rwPSi6s7p28W7isR8DirnWfbEtd5vzml3Hw==","signatures":[{"sig":"MEUCIGv9m33cnRsfB3x0verCibIBC0TjT0lkZfyY4A5iLJhrAiEAiVkn0YMkH22G9YabwlcfREaE5Ua3PyiIqdATL8XfwW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91678},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-1.0.3.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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/tmp/0ee37f25ff973cbb45d351aca3f5e82d/bernierllc-social-media-linkedin-1.0.3.tgz","_integrity":"sha512-g127RcSL+Hss1LI8gogei1b91s1bqwPbU34+G0PY8uCwB/cx/H7rwPSi6s7p28W7isR8DirnWfbEtd5vzml3Hw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.11.0","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.0.3_1773078120863_0.14997559408269656","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/social-media-linkedin","version":"1.0.4","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@1.0.4","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":"0199f57c659da2b698429a23e50288e0e7b55915","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.0.4.tgz","fileCount":14,"integrity":"sha512-Xl1CVP+QE47u6twyh6Qf6xDRHCLX1MIDe/TXZJa+rX0ThDv0KSq44suVYOBo4MHrjC5+oJ9F43ipljq4c1EPCQ==","signatures":[{"sig":"MEYCIQDbG1bVUBZdZdzsSdhQ+aUGU+EvuDdlD7lHUF27PA///AIhALUpor2SbfNz52uuk8ahKL2rEe84cJqetFFzT6mnyUGr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91678},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-1.0.4.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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-1.0.4.tgz","_integrity":"sha512-Xl1CVP+QE47u6twyh6Qf6xDRHCLX1MIDe/TXZJa+rX0ThDv0KSq44suVYOBo4MHrjC5+oJ9F43ipljq4c1EPCQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.11.0","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.0.4_1773163662814_0.22717686129601633","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/social-media-linkedin","version":"1.1.0","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@1.1.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":"6143afca6b50f10a422108b1e5905f9dddb8dac9","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.1.0.tgz","fileCount":14,"integrity":"sha512-AdJ3ghGzJaKjt4t0ksKJykOkc8t3bVlTGv8iXllB9hrdvs80rUi2zB3hBcZ2XoWxPHxd+MPEVm0QtT4tbOW53Q==","signatures":[{"sig":"MEUCICTPKNA8LwgcqIhR+yj+8PY7jl6c6QKggZdUpytiuLPiAiEAlXnyIN5rp8DoPxh8OP+wjO/2E4zrOh2Et9BX1Ia6iLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91678},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-1.1.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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-1.1.0.tgz","_integrity":"sha512-AdJ3ghGzJaKjt4t0ksKJykOkc8t3bVlTGv8iXllB9hrdvs80rUi2zB3hBcZ2XoWxPHxd+MPEVm0QtT4tbOW53Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.14.1","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.1.0_1779241841317_0.34828939085472643","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/social-media-linkedin","version":"1.2.0","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@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":"5640cdb87776bcea08c3860597421b3e270ec94e","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.2.0.tgz","fileCount":18,"integrity":"sha512-4x5/ZL3naOHYGftgx/WotKkEqMC68kyx6C2TjI61g2i4C6PdIzacCu8+B2jlyotnVH48/S7L0UH2cQChi70pdg==","signatures":[{"sig":"MEUCIG11Hhmu1GxsE5yStBXP2eSE4mDOaipJK3+B8hKqpD45AiEAtNFOjRNregLwYXN9GTCVlhoj1E8lBLU9otGlsLd7E58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94481},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-1.2.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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-1.2.0.tgz","_integrity":"sha512-4x5/ZL3naOHYGftgx/WotKkEqMC68kyx6C2TjI61g2i4C6PdIzacCu8+B2jlyotnVH48/S7L0UH2cQChi70pdg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.14.1","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.2.0_1779248449705_0.8378469118967078","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/social-media-linkedin","version":"1.3.0","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@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":"fa360d20ec06ca97dcb849a538a2a44257889140","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-1.3.0.tgz","fileCount":18,"integrity":"sha512-CfNd69Gz7p75g0T4IgC8iwbxn91MpcingpVK7lKb9L2OXufjm2JMZe1kKrMfazPkyqmrHwayoi4s1tQTbGDZSw==","signatures":[{"sig":"MEYCIQCl1cpXvUaLjDzqpBW0yYXFdqOz/UjA6+DCob4NFslRTQIhALn2PMPG4WXtZeGDaWSBmAGfdPRoUtXtOtW6Q5FMuMW2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94481},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-1.3.0.tgz","_integrity":"sha512-CfNd69Gz7p75g0T4IgC8iwbxn91MpcingpVK7lKb9L2OXufjm2JMZe1kKrMfazPkyqmrHwayoi4s1tQTbGDZSw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"11.14.1","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_1.3.0_1779250593203_0.27753289129538805","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@bernierllc/social-media-linkedin","version":"2.0.0","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-linkedin@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":"48856ba0b0b2e091b33000bd2d3f06e5ec7c23ac","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-2.0.0.tgz","fileCount":18,"integrity":"sha512-bK2TK0dVPManNpGtOz0X6232jVNFBYTq9ydZnp/A/d+hOYqkULl16EhRP+cSERVS5tjQP/kWxkijVwxYMtaEzA==","signatures":[{"sig":"MEUCIQCgHdU0ohZHVzU5T1iyfbrng0x8L8qrvOEg4M28VCx91wIgQ0UhH8L5+2Ub/Ot8na5Ns4TJwk3ktNZKv34jAOPPfD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97221},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-linkedin-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:62c769e9-6f54-4939-a276-26bae119e8bc"}},"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-2.0.0.tgz","_integrity":"sha512-bK2TK0dVPManNpGtOz0X6232jVNFBYTq9ydZnp/A/d+hOYqkULl16EhRP+cSERVS5tjQP/kWxkijVwxYMtaEzA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"12.0.2","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_2.0.0_1785901555115_0.23850898663719744","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"_id":"@bernierllc/social-media-linkedin@2.0.1","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"72b14a72bea879c645cb43a06e0335719f274778","tarball":"https://registry.npmjs.org/@bernierllc/social-media-linkedin/-/social-media-linkedin-2.0.1.tgz","fileCount":19,"integrity":"sha512-bUO3S+mbTYRpRlYCJlNiaCPV548ZYjuiZLrocCCJWdi1ag+6AzO/YUKXKsFJEKSn3AX7XEnAiZeys91P+t1FlQ==","signatures":[{"sig":"MEUCIQDP9TgdFt9Vls9Xd3zpr2ycZDq06dVfrkytqfDflNbtVwIgfQzFsANXQenkcyWE3xgTJWgC7Qp5v85eVvzFT9VnAKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBTaxzQpqBmrUuDgXKvlaeeSzyD1PDTBJHEQYqqQji80AiB+wDTJVA2K2MjfwOsn/vi+BKyXayPjyqBb/+cWGMJ17w=="}],"unpackedSize":97543},"main":"dist/index.js","name":"@bernierllc/social-media-linkedin","type":"module","_from":"file:bernierllc-social-media-linkedin-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":"62c769e9-6f54-4939-a276-26bae119e8bc"}},"homepage":"https://github.com/bernierllc/tools#readme","keywords":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/service/social-media-linkedin/bernierllc-social-media-linkedin-2.0.1.tgz","_integrity":"sha512-bUO3S+mbTYRpRlYCJlNiaCPV548ZYjuiZLrocCCJWdi1ag+6AzO/YUKXKsFJEKSn3AX7XEnAiZeys91P+t1FlQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"_npmVersion":"12.2.0","description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","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-linkedin_2.0.1_1790884547083_0.68988281114301"}}},"time":{"created":"2025-12-18T19:51:49.828Z","modified":"2026-10-01T19:55:48.612Z","1.0.0":"2025-12-18T19:51:50.111Z","1.0.2":"2026-01-05T19:45:45.538Z","1.0.3":"2026-03-09T17:42:01.025Z","1.0.4":"2026-03-10T17:27:42.971Z","1.1.0":"2026-05-20T01:50:41.482Z","1.2.0":"2026-05-20T03:40:49.850Z","1.3.0":"2026-05-20T04:16:33.339Z","2.0.0":"2026-08-05T03:45:55.243Z","2.0.1":"2026-10-01T19:55:47.177Z"},"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":["linkedin","social-media","api","oauth2","posting","articles","documents","bernierllc"],"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/service/social-media-linkedin"},"description":"LinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/social-media-linkedin\n\nLinkedIn API integration service with OAuth 2.0, content posting (posts, articles, documents), and rate limiting.\n\n## Installation\n\n```bash\nnpm install @bernierllc/social-media-linkedin\n```\n\n## Usage\n\n```typescript\nimport { LinkedInService } from '@bernierllc/social-media-linkedin';\n\n// Create a new LinkedIn service instance\nconst linkedin = new LinkedInService({\n  clientId: 'your-client-id',\n  clientSecret: 'your-client-secret',\n  callbackUrl: 'https://your-app.com/callback',\n  scopes: ['openid', 'profile', 'w_member_social']\n});\n\n// Generate authorization URL for OAuth flow\nconst authUrl = linkedin.getAuthorizationUrl();\n// Redirect user to authUrl...\n\n// After user authorizes, handle the callback\nconst authResult = await linkedin.handleCallback(code, state);\nif (authResult.success) {\n  console.log('Authenticated as:', authResult.profile?.name);\n}\n\n// Post an update\nconst postResult = await linkedin.postUpdate({\n  text: 'Hello LinkedIn! 👋',\n  visibility: 'PUBLIC'\n});\n\nif (postResult.success) {\n  console.log('Posted:', postResult.postUrn);\n}\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 linkedin.initialize();\n```\n\n## API Reference\n\n### LinkedInService\n\nMain service class for LinkedIn API integration.\n\n#### Constructor\n\n```typescript\nnew LinkedInService(config: LinkedInConfig)\n```\n\n**Config Options:**\n- `clientId` (required): LinkedIn application client ID\n- `clientSecret` (required): LinkedIn application client secret\n- `callbackUrl` (required): OAuth callback URL\n- `scopes`: OAuth scopes to request (default: `['openid', 'profile', 'w_member_social']`)\n- `rateLimitConfig`: Rate limiting configuration\n- `tokenStorage`: Token storage interface for persistence\n\n#### Authentication Methods\n\n##### `getAuthorizationUrl(callbackUrl?: string): string`\n\nGenerate OAuth 2.0 authorization URL for user consent.\n\n```typescript\nconst authUrl = linkedin.getAuthorizationUrl();\n// Redirect user to authUrl\n```\n\n##### `handleCallback(code: string, state: string): Promise<LinkedInAuthResult>`\n\nHandle OAuth callback and exchange authorization code for tokens.\n\n```typescript\nconst result = await linkedin.handleCallback(code, state);\nif (result.success) {\n  console.log('User:', result.profile);\n  console.log('Tokens:', result.tokens);\n}\n```\n\n##### `authenticate(credentials: LinkedInCredentials): Promise<LinkedInAuthResult>`\n\nAuthenticate with existing access token.\n\n```typescript\nconst result = await linkedin.authenticate({\n  accessToken: 'existing-token',\n  expiresAt: 1234567890\n});\n```\n\n##### `refreshAccessToken(): Promise<LinkedInAuthResult>`\n\nRefresh the access token using refresh token.\n\n```typescript\nconst result = await linkedin.refreshAccessToken();\n```\n\n##### `revokeAccess(): Promise<boolean>`\n\nRevoke access and clear tokens.\n\n```typescript\nconst revoked = await linkedin.revokeAccess();\n```\n\n##### `isAuthenticated(): boolean`\n\nCheck if currently authenticated with valid token.\n\n```typescript\nif (linkedin.isAuthenticated()) {\n  // Can make API calls\n}\n```\n\n#### Content Posting Methods\n\n##### `postUpdate(content: LinkedInContent): Promise<LinkedInPostResult>`\n\nPost an update to LinkedIn.\n\n```typescript\nconst result = await linkedin.postUpdate({\n  text: 'Check out this post!',\n  visibility: 'PUBLIC',\n  media: [{\n    type: 'image',\n    data: imageBuffer,\n    mimeType: 'image/jpeg',\n    altText: 'Description of the image'\n  }]\n});\n```\n\n##### `postArticle(article: LinkedInArticle): Promise<LinkedInArticleResult>`\n\nPost an article to LinkedIn.\n\n```typescript\nconst result = await linkedin.postArticle({\n  title: 'My Article Title',\n  body: '<p>Article content in HTML</p>',\n  description: 'Brief description',\n  visibility: 'PUBLIC'\n});\n```\n\n##### `shareDocument(document: LinkedInDocument): Promise<LinkedInPostResult>`\n\nShare a document (PDF, etc.) to LinkedIn.\n\n```typescript\nconst result = await linkedin.shareDocument({\n  title: 'My Document',\n  text: 'Check out this document!',\n  file: {\n    type: 'document',\n    data: pdfBuffer,\n    mimeType: 'application/pdf',\n    fileName: 'document.pdf'\n  }\n});\n```\n\n##### `deletePost(postUrn: string): Promise<boolean>`\n\nDelete a post by URN.\n\n```typescript\nconst deleted = await linkedin.deletePost('urn:li:share:123456');\n```\n\n#### Scheduling Methods\n\n##### `schedulePost(content: LinkedInContent, scheduledTime: Date): LinkedInScheduleResult`\n\nSchedule a post for future publishing.\n\n```typescript\nconst result = linkedin.schedulePost(\n  { text: 'Scheduled post!' },\n  new Date('2025-01-15T10:00:00Z')\n);\n```\n\n##### `cancelScheduledPost(scheduleId: string): boolean`\n\nCancel a scheduled post.\n\n```typescript\nconst cancelled = linkedin.cancelScheduledPost('sched_123');\n```\n\n##### `listScheduledPosts(): LinkedInScheduledPost[]`\n\nList all scheduled posts.\n\n```typescript\nconst scheduled = linkedin.listScheduledPosts();\n```\n\n#### Media Methods\n\n##### `uploadMedia(media: LinkedInMedia): Promise<LinkedInMediaUploadResult>`\n\nUpload media to LinkedIn.\n\n```typescript\nconst result = await linkedin.uploadMedia({\n  type: 'image',\n  data: imageBuffer,\n  mimeType: 'image/png'\n});\n\nif (result.success) {\n  console.log('Asset URN:', result.assetUrn);\n}\n```\n\n#### Rate Limiting\n\n##### `getRateLimitStatus(endpoint?: string): LinkedInRateLimitStatus | undefined`\n\nGet current rate limit status.\n\n```typescript\nconst status = linkedin.getRateLimitStatus('POST /ugcPosts');\nconsole.log('Remaining:', status?.remaining);\nconsole.log('Resets at:', new Date(status?.resetAt * 1000));\n```\n\n## Types\n\n### LinkedInContent\n\n```typescript\ninterface LinkedInContent {\n  text: string;                    // Up to 3000 characters\n  media?: LinkedInMedia[];         // Optional media attachments\n  link?: LinkedInLink;             // Optional link preview\n  visibility?: LinkedInVisibility; // PUBLIC, CONNECTIONS, or LOGGED_IN\n  organizationUrn?: string;        // For company page posts\n}\n```\n\n### LinkedInMedia\n\n```typescript\ninterface LinkedInMedia {\n  type: 'image' | 'video' | 'document';\n  data?: Buffer;       // Media data\n  url?: string;        // External URL\n  mimeType?: string;   // MIME type\n  fileName?: string;   // File name\n  altText?: string;    // Accessibility text\n  size?: number;       // File size in bytes\n}\n```\n\n### LinkedInArticle\n\n```typescript\ninterface LinkedInArticle {\n  title: string;                   // Up to 200 characters\n  body: string;                    // HTML content\n  description?: string;            // Summary/excerpt\n  coverImage?: LinkedInMedia;      // Cover image\n  visibility?: LinkedInVisibility;\n  organizationUrn?: string;\n}\n```\n\n## OAuth Scopes\n\n| Scope | Description |\n|-------|-------------|\n| `openid` | OpenID Connect (required) |\n| `profile` | Basic profile information |\n| `email` | Email address |\n| `w_member_social` | Post on behalf of user |\n| `r_liteprofile` | Read lite profile |\n| `r_organization_social` | Read company page content |\n| `w_organization_social` | Post to company pages |\n\n## Rate Limiting\n\nThe service automatically handles rate limits:\n\n```typescript\nconst linkedin = new LinkedInService({\n  // ... other config\n  rateLimitConfig: {\n    enabled: true,\n    strategy: 'wait',  // or 'fail'\n    maxWaitMs: 60000   // Max wait time before failing\n  }\n});\n```\n\n## Token Storage\n\nImplement the `LinkedInTokenStorage` interface for token persistence:\n\n```typescript\nconst tokenStorage: LinkedInTokenStorage = {\n  save: async (tokens) => {\n    await db.saveTokens(tokens);\n  },\n  load: async () => {\n    return await db.loadTokens();\n  },\n  clear: async () => {\n    await db.clearTokens();\n  }\n};\n\nconst linkedin = new LinkedInService({\n  // ... other config\n  tokenStorage\n});\n```\n\n## Media Limits\n\n| Type | Max Size |\n|------|----------|\n| Image | 8 MB |\n| Video | 200 MB |\n| Document | 100 MB |\n\n## Integration Status\n\n- **Logger**: planned - Will integrate with @bernierllc/logger\n- **Docs-Suite**: ready - Markdown documentation\n- **NeverHub**: planned - Event publishing for linkedin.post.published\n\n## See Also\n\n- [@bernierllc/social-media-twitter](../social-media-twitter) - Twitter/X API integration\n- [@bernierllc/social-media-manager](../social-media-manager) - Multi-platform social media manager\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}