{"_id":"@bernierllc/social-media-content-type-linkedin","_rev":"9-3a9886eed7b345ae768800af25153a7b","name":"@bernierllc/social-media-content-type-linkedin","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.0.0","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-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":"2317d55b584400b52609cff55faf3047e7f6628b","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.0.0.tgz","fileCount":58,"integrity":"sha512-tCxT8i85lqxzQ3zQnaiLNJHFJMkxmGJ7jwG+fGyo4jc9RwzongmcpNXCzEZTU+LSk2Qges6Qft3SBBOfFtLchQ==","signatures":[{"sig":"MEYCIQDosu1VmJa7gClMIsA85be8Wbphm4ilCOxiDqOH1l57BAIhAKbx9VsmaLl9pazBma8Bz2AgelnqWHX5K/vNayv7UPs/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421094},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.0.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/private/var/folders/r0/wspnzd1s18sfjy10ffyv2qxw0000gn/T/7ee1931fd47928c42f04b1f7d096df1d/bernierllc-social-media-content-type-linkedin-1.0.0.tgz","_integrity":"sha512-tCxT8i85lqxzQ3zQnaiLNJHFJMkxmGJ7jwG+fGyo4jc9RwzongmcpNXCzEZTU+LSk2Qges6Qft3SBBOfFtLchQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.4.2","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"24.4.1","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.0.0_1760329081542_0.9301405644860539","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.0.1","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-linkedin@1.0.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":"10799fd2fcd1e72d1eb8a725da33c1533d37ea0e","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.0.1.tgz","fileCount":44,"integrity":"sha512-LS+Pu3ARW52ognKM7AdMp10iJX3+gnLFdaAHVaehsKg0SkjZmltMnk6jx5x2qWm0assj5rrBEvZi4yXUULEBnA==","signatures":[{"sig":"MEUCIDy6MPwwwkDK+3uKC0LRTXV0Nk88+fETj/kJLa8mCRtkAiEAwz2Am3XUpi4OaIyOMwgTB+GIgMWQhWI1zgDVKgHW8iA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180438},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/9ca0bbe0711132f0b44a3fd924e157da/bernierllc-social-media-content-type-linkedin-1.0.1.tgz","_integrity":"sha512-LS+Pu3ARW52ognKM7AdMp10iJX3+gnLFdaAHVaehsKg0SkjZmltMnk6jx5x2qWm0assj5rrBEvZi4yXUULEBnA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.7.0","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.0.1_1766276715905_0.11567135379987503","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.0.2","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-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":"1ba9d4251a0468b48775bf0545b9529b3f1c3bb2","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.0.2.tgz","fileCount":44,"integrity":"sha512-N354IsLxwE+k+sypMjgSVkEZ9/yZx7hBuPAFHAxn2BnQTs3veJhfar4UnusrjVWvW+w7wfstu48UvrAdEn+5Dg==","signatures":[{"sig":"MEUCIEBOk2RFh2Sc77AQiE/vZ6A+d/f+6VD6ESGgxmbqjUXoAiEAouS/6M3m0qKLbv4lRqXA9pLgloz0mjku+slHTNHieFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180626},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.0.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_resolved":"/tmp/4e004963810cd9e70db73b914d3147b2/bernierllc-social-media-content-type-linkedin-1.0.2.tgz","_integrity":"sha512-N354IsLxwE+k+sypMjgSVkEZ9/yZx7hBuPAFHAxn2BnQTs3veJhfar4UnusrjVWvW+w7wfstu48UvrAdEn+5Dg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.7.0","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.0.2_1766283497542_0.2677597799622906","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.2.0","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-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":"39bc0c8b37a953fcdc498bd8a04425430725ff5b","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.2.0.tgz","fileCount":44,"integrity":"sha512-1uhdphmu1EPN24npfOEyBsW/ZCYPYmt0geB5nnqnDTteIe658WSqTRDsJvg3wELWt/6IB43MNfnn+/DltV6YNw==","signatures":[{"sig":"MEQCIAJDNTSKwFEhrerswn2g7PEWvbGl3GmHKLggrDqjrgC3AiBVPsbsuhFBJ26T0zjh5YwVz7xkZmysyOKjh/D6GQa+7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182718},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.0.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.2.0_1767642387735_0.9924520601550619","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.2.1","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-linkedin@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":"0bf4f1b224136f365e35e73d65fbc1cbe08e4f15","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.2.1.tgz","fileCount":44,"integrity":"sha512-YHBw4OmFiE7fb7J9sLZf9xnh3FYKjqvWnSeGBrccZekk+Umv/PASolHrMZrwUaeXg6mVOIQaMybHLXr0I3p87Q==","signatures":[{"sig":"MEUCIDVGlnwLfO2j92bAqWlXAkViqj8S0mnb2MoFYGgfjBOmAiEAqrMPa8+fzVq4Mkgo4/DyKH8x53ugmc7weEWAkZPb4oY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182930},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"_resolved":"/tmp/2a55a9bb4d5e24cd0e0afa8bc1f3fbae/bernierllc-social-media-content-type-linkedin-1.2.1.tgz","_integrity":"sha512-YHBw4OmFiE7fb7J9sLZf9xnh3FYKjqvWnSeGBrccZekk+Umv/PASolHrMZrwUaeXg6mVOIQaMybHLXr0I3p87Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.11.0","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.20.0","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.0.7"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.2.1_1773078201340_0.4494265136640412","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.2.2","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-linkedin@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":"f02ce74c05d616f78b29e8f36ea158e38ba9d37c","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.2.2.tgz","fileCount":44,"integrity":"sha512-59p+kLrXqQ7z2qdeRYyO6Y8eJKDxVa0OtSR4YTpmNm0QS4QKvx5DO9pqtXTnyCS2wEzdLApqcPx23zScipSirg==","signatures":[{"sig":"MEYCIQCbbC7KqCaaffTOp/BlBQIYhmK+Qm0oLTDzuxzWaxxCtQIhAMPRPojUswKuLy7J5nAC8s1VqqCAoExcHRih6Oyysubl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183200},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-linkedin/bernierllc-social-media-content-type-linkedin-1.2.2.tgz","_integrity":"sha512-59p+kLrXqQ7z2qdeRYyO6Y8eJKDxVa0OtSR4YTpmNm0QS4QKvx5DO9pqtXTnyCS2wEzdLApqcPx23zScipSirg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.11.0","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.20.0","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.0.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.2.2_1773163309963_0.6045898146495507","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.3.0","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-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":"ce9d38af260dba91f5970f6ba8c394458d300e3b","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.3.0.tgz","fileCount":44,"integrity":"sha512-KBEVGtPRIZKQ9rmH56bgranH/RsBoyNkeCPZGK07R1ufyP0ZPgsqOt6KypJ33SfiIG1BSZeBuEPLeHKKWcVS7A==","signatures":[{"sig":"MEUCIQDLB9/YLTlhwT7n/08eTBm9fLwP5CfjMEEDZ7Aa4Yc7QAIgTKeuRtVAE01nOx8q+d8UpQDgHEMJ4qaDmUl3R9zN704=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183415},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-linkedin/bernierllc-social-media-content-type-linkedin-1.3.0.tgz","_integrity":"sha512-KBEVGtPRIZKQ9rmH56bgranH/RsBoyNkeCPZGK07R1ufyP0ZPgsqOt6KypJ33SfiIG1BSZeBuEPLeHKKWcVS7A==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.14.1","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.3.0_1779221442264_0.45830365182674604","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.5.0","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/social-media-content-type-linkedin@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":"2b3afbacbb932fd9f42a17e035595ed0a45f7a2a","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.5.0.tgz","fileCount":34,"integrity":"sha512-u2jZ4FzlVC5k75n4CBf96M9CLyoLzkmFycnFQVAN7sCdkHijSBLW8f9NZZWWJrEi/i4msvat8PzRdRk3IvY/YA==","signatures":[{"sig":"MEUCIQDcqg0rmU9FxB98Mnamf/VYLvWOMmfvntjkEzgCHaatqQIgASG0gCnabAqf/TzgcsFdkoIikUmn08wK6fnK2Q47BJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106603},"main":"dist/index.js","type":"module","_from":"file:bernierllc-social-media-content-type-linkedin-1.5.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/**/*.ts","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-linkedin/bernierllc-social-media-content-type-linkedin-1.5.0.tgz","_integrity":"sha512-u2jZ4FzlVC5k75n4CBf96M9CLyoLzkmFycnFQVAN7sCdkHijSBLW8f9NZZWWJrEi/i4msvat8PzRdRk3IvY/YA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/social-media-content-type-linkedin"},"_npmVersion":"11.14.1","description":"LinkedIn-specific content type definition and validation","directories":{},"_nodeVersion":"20.20.2","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-linkedin_1.5.0_1779241430332_0.1864885417411959","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/social-media-content-type-linkedin","version":"1.6.0","description":"LinkedIn-specific content type definition and validation","main":"dist/index.js","types":"dist/index.d.ts","type":"module","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.4.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.19","@types/validator":"^13.11.8","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/social-media-content-type-linkedin"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src/**/*.ts","clean":"rm -rf dist"},"_id":"@bernierllc/social-media-content-type-linkedin@1.6.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-Bn/mhJcjBfr5sLkvUNsj9G6Jm9Rj95iXIGHpw6UXRSQmJDp0aNe7cGKCxNRgCwLgLq/0aGDFM+TsT0HJQbxg6Q==","_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-linkedin/bernierllc-social-media-content-type-linkedin-1.6.0.tgz","_from":"file:bernierllc-social-media-content-type-linkedin-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-Bn/mhJcjBfr5sLkvUNsj9G6Jm9Rj95iXIGHpw6UXRSQmJDp0aNe7cGKCxNRgCwLgLq/0aGDFM+TsT0HJQbxg6Q==","shasum":"8f3adfb329c1959322f59d5c799a6d8ec98fd841","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-linkedin/-/social-media-content-type-linkedin-1.6.0.tgz","fileCount":34,"unpackedSize":106603,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAtrB71t1xTBOlGEwGnDIA4VJJ0T0K750OCfb8G+hLWbAiBuxqiWCGFVGsR7GKXrM9zd+jYPGYuAB5UbobByVtdDcw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cf0edc6f-3df5-4f88-bedc-83c7046b3c3e"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/social-media-content-type-linkedin_1.6.0_1779250177357_0.3589862335968472"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T04:18:01.482Z","modified":"2026-05-20T04:09:38.065Z","1.0.0":"2025-10-13T04:18:01.706Z","1.0.1":"2025-12-21T00:25:16.068Z","1.0.2":"2025-12-21T02:18:17.711Z","1.2.0":"2026-01-05T19:46:27.904Z","1.2.1":"2026-03-09T17:43:21.485Z","1.2.2":"2026-03-10T17:21:50.110Z","1.3.0":"2026-05-19T20:10:42.409Z","1.5.0":"2026-05-20T01:43:50.481Z","1.6.0":"2026-05-20T04:09:37.927Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/bernierllc/tools#readme","keywords":["linkedin","social-media","content-type","validation","transformation","bernierllc"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/social-media-content-type-linkedin"},"description":"LinkedIn-specific content type definition and validation","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/social-media-content-type-linkedin\n\n**LinkedIn-specific content type definition and validation**\n\nA pure content type definition package that defines LinkedIn-specific content constraints, validation rules, and transformation requirements. Designed for use by social media service packages requiring platform-specific content processing.\n\n## Installation\n\n```bash\nnpm install @bernierllc/social-media-content-type-linkedin\n```\n\n## Features\n\n- **Platform-specific constraints** - All LinkedIn API limits and rules\n- **LinkedIn article support** - Long-form content with HTML preservation\n- **Document sharing** - PDF, PPTX, DOCX format support\n- **Multi-image carousel** - Up to 9 images per post\n- **Poll configuration** - 2-4 options with variable durations\n- **Link preview optimization** - Structured link metadata\n- **Targeted audience** - Industry/location/job title targeting\n- **Hashtag optimization** - 3 recommended, 30 absolute max\n- **Type-safe builder API** - Fluent interface for content construction\n- **Comprehensive validation** - Platform constraint checking\n- **Content transformation** - Generic to LinkedIn conversion\n\n## Usage\n\n### Basic Post Creation\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst builder = new LinkedInContentBuilder();\nconst content = builder\n  .setText('Excited to share our latest product launch!')\n  .addHashtag('innovation')\n  .addHashtag('tech')\n  .addHashtag('startup')\n  .setVisibility('public')\n  .build();\n\nconsole.log(content);\n// {\n//   text: \"Excited to share our latest product launch!\\n\\n#innovation #tech #startup\",\n//   shareType: \"post\"\n// }\n```\n\n### LinkedIn Article Publishing\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst article = builder\n  .setText('Read my latest article on sustainable technology')\n  .setArticle({\n    title: 'The Future of Sustainable Tech',\n    subtitle: 'How green innovation is reshaping our industry',\n    content: '<h1>Introduction</h1><p>In recent years...</p>',\n    coverImage: 'https://example.com/cover.jpg',\n    canonicalUrl: 'https://blog.example.com/sustainable-tech'\n  })\n  .build();\n\nconsole.log(article.shareType); // \"article\"\n```\n\n### Image Carousel Post\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst carousel = builder\n  .setText('Our journey in 9 images')\n  .addMedia({\n    type: 'image',\n    url: 'https://example.com/image1.jpg',\n    title: 'Beginning'\n  })\n  .addMedia({\n    type: 'image',\n    url: 'https://example.com/image2.jpg',\n    title: 'Growth'\n  })\n  // Add up to 9 images total\n  .build();\n```\n\n### Video Post\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst video = builder\n  .setText('Watch our product demo')\n  .addMedia({\n    type: 'video',\n    url: 'https://example.com/demo.mp4',\n    thumbnailUrl: 'https://example.com/thumb.jpg',\n    description: 'Full product walkthrough'\n  })\n  .setShareType('video')\n  .build();\n```\n\n### Document Sharing\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst document = builder\n  .setText('Download our latest whitepaper')\n  .setDocument({\n    type: 'pdf',\n    url: 'https://example.com/whitepaper.pdf',\n    title: 'Industry Trends 2025',\n    description: 'Comprehensive analysis of market trends'\n  })\n  .build();\n\nconsole.log(document.shareType); // \"document\"\n```\n\n### Poll Creation\n\n```typescript\nimport { LinkedInContentBuilder } from '@bernierllc/social-media-content-type-linkedin';\n\nconst poll = builder\n  .setText('What matters most to you in a workplace?')\n  .addPoll({\n    question: 'What matters most to you in a workplace?',\n    options: [\n      'Work-life balance',\n      'Career growth',\n      'Compensation',\n      'Company culture'\n    ],\n    durationDays: 7\n  })\n  .build();\n```\n\n### Content Validation\n\n```typescript\nimport { LinkedInContentValidator } from '@bernierllc/social-media-content-type-linkedin';\n\nconst validator = new LinkedInContentValidator();\n\nconst result = validator.validate(content);\n\nif (!result.valid) {\n  console.error('Validation errors:', result.errors);\n  // [{\n  //   field: \"text\",\n  //   message: \"Text exceeds 3000 characters\",\n  //   constraint: \"maxTextLength\",\n  //   value: 3150\n  // }]\n}\n\n// Check warnings and suggestions\nconsole.log('Warnings:', result.warnings);\nconsole.log('Suggestions:', result.suggestions);\n```\n\n### Content Transformation\n\n#### From Generic Social Content\n\n```typescript\nimport { LinkedInContentTransformer } from '@bernierllc/social-media-content-type-linkedin';\n\nconst transformer = new LinkedInContentTransformer();\n\nconst genericContent = {\n  text: 'Check out our new product!',\n  images: ['https://example.com/product.jpg'],\n  hashtags: ['tech', 'innovation', 'startup', 'business']\n};\n\nconst linkedInContent = transformer.fromGeneric(genericContent);\n\nconsole.log(linkedInContent);\n// {\n//   text: \"Check out our new product!\\n\\n#tech #innovation #startup\",\n//   shareType: \"post\",\n//   media: [{ type: \"image\", url: \"https://example.com/product.jpg\" }]\n// }\n// Note: Only first 3 hashtags recommended for LinkedIn\n```\n\n#### From Blog Post\n\n```typescript\nimport { LinkedInContentTransformer } from '@bernierllc/social-media-content-type-linkedin';\n\nconst transformer = new LinkedInContentTransformer();\n\n// Short blog post becomes regular post with link\nconst shortBlog = {\n  title: 'Quick Tips for Success',\n  excerpt: '5 practical tips every professional should know',\n  content: 'Tip 1: ...', // < 1000 chars\n  url: 'https://blog.example.com/tips',\n  featuredImage: 'https://blog.example.com/featured.jpg',\n  tags: ['productivity', 'career']\n};\n\nconst linkedInPost = transformer.fromBlogPost(shortBlog);\n\nconsole.log(linkedInPost.shareType); // \"post\"\nconsole.log(linkedInPost.link?.url); // \"https://blog.example.com/tips\"\n\n// Long blog post becomes LinkedIn article\nconst longBlog = {\n  title: 'The Complete Guide to Digital Transformation',\n  excerpt: 'Everything you need to know about digital transformation',\n  content: '<h1>Chapter 1</h1><p>...' // > 1000 chars\n    + // Long content...\n  url: 'https://blog.example.com/guide',\n  featuredImage: 'https://blog.example.com/guide-cover.jpg'\n};\n\nconst linkedInArticle = transformer.fromBlogPost(longBlog);\n\nconsole.log(linkedInArticle.shareType); // \"article\"\nconsole.log(linkedInArticle.article?.title); // \"The Complete Guide to...\"\n```\n\n### LinkedIn Optimization\n\n```typescript\nimport { LinkedInContentTransformer } from '@bernierllc/social-media-content-type-linkedin';\n\nconst transformer = new LinkedInContentTransformer();\n\nconst content = {\n  text: 'this is a post #tech #business #marketing #sales #startup #innovation',\n  shareType: 'post' as const\n};\n\n// Optimize for LinkedIn best practices\nconst optimized = transformer.optimizeForLinkedIn(content);\n\nconsole.log(optimized.text);\n// \"This is a post\\n\\n#tech #business #marketing\"\n// - Capitalized first letter\n// - Limited to 3 hashtags (recommended)\n```\n\n## API Reference\n\n### LinkedInContent\n\nMain content structure for LinkedIn posts.\n\n```typescript\ninterface LinkedInContent {\n  text: string;                                    // Post text (max 3000 chars)\n  shareType: 'post' | 'article' | 'video' | 'document';\n  article?: LinkedInArticle;                       // Long-form article\n  media?: LinkedInMedia[];                         // Up to 9 images or 1 video\n  document?: LinkedInDocument;                     // PDF/PPTX/DOCX\n  link?: LinkedInLink;                             // Link preview\n  poll?: LinkedInPoll;                             // Poll configuration\n}\n```\n\n### LinkedInArticle\n\nLinkedIn article (long-form content).\n\n```typescript\ninterface LinkedInArticle {\n  title: string;                     // Max 100 chars\n  subtitle?: string;                 // Max 250 chars\n  content: string;                   // Rich HTML content (max 125K chars)\n  coverImage?: string;               // Article cover image URL\n  canonicalUrl?: string;             // Original article URL\n}\n```\n\n### LinkedInMedia\n\nImage or video media item.\n\n```typescript\ninterface LinkedInMedia {\n  type: 'image' | 'video';\n  url: string;\n  title?: string;                    // Max 200 chars\n  description?: string;              // Max 2000 chars\n  thumbnailUrl?: string;             // Video thumbnail (required for video)\n}\n```\n\n### LinkedInDocument\n\nDocument attachment (PDF, PowerPoint, Word).\n\n```typescript\ninterface LinkedInDocument {\n  type: 'pdf' | 'pptx' | 'docx';\n  url: string;\n  title: string;                     // Max 255 chars\n  description?: string;\n}\n```\n\n### LinkedInPoll\n\nPoll configuration.\n\n```typescript\ninterface LinkedInPoll {\n  question: string;                  // Max 140 chars\n  options: string[];                 // 2-4 options, max 255 chars each\n  durationDays: 1 | 3 | 7 | 14;     // Poll duration\n}\n```\n\n### LINKEDIN_CONSTRAINTS\n\nPlatform-specific limits and rules.\n\n```typescript\nexport const LINKEDIN_CONSTRAINTS = {\n  maxTextLength: 3000,               // Post text limit\n  maxArticleContentLength: 125000,   // Article content limit\n  maxMediaItems: 9,                  // Max images in carousel\n  maxVideoCount: 1,                  // Only 1 video per post\n  maxHashtags: 3,                    // Recommended hashtag count\n  maxAbsoluteHashtags: 30,          // Technical hashtag limit\n  supportedMediaTypes: ['image/png', 'image/jpeg', 'video/mp4'],\n  supportedDocumentTypes: ['application/pdf', ...],\n  // ... more constraints\n};\n```\n\n### LinkedInContentValidator\n\nValidates content against LinkedIn constraints.\n\n**Methods:**\n\n- `validate(content: LinkedInContent): LinkedInValidationResult` - Validate complete content\n- `validateText(text: string): boolean` - Validate text length\n- `validateArticle(article: LinkedInArticle): boolean` - Validate article structure\n- `validateMedia(media: LinkedInMedia[]): boolean` - Validate media array\n- `validateDocument(doc: LinkedInDocument): boolean` - Validate document\n- `validatePoll(poll: LinkedInPoll): boolean` - Validate poll configuration\n- `validateHashtags(hashtags: string[]): boolean` - Validate hashtag array\n\n### LinkedInContentBuilder\n\nFluent builder for constructing LinkedIn content.\n\n**Methods:**\n\n- `setText(text: string): this` - Set post text\n- `setShareType(type: 'post' | 'article' | 'video' | 'document'): this` - Set content type\n- `addMedia(media: LinkedInMedia): this` - Add media item\n- `setArticle(article: LinkedInArticle): this` - Set article content\n- `setDocument(doc: LinkedInDocument): this` - Set document\n- `setLink(link: LinkedInLink): this` - Set link preview\n- `addPoll(poll: LinkedInPoll): this` - Add poll\n- `setVisibility(visibility: 'public' | 'connections' | 'private'): this` - Set visibility\n- `addHashtag(tag: string): this` - Add hashtag\n- `addMention(username: string): this` - Add user mention\n- `setScheduledFor(date: Date): this` - Set scheduled publish date\n- `build(): LinkedInContent` - Build final content\n- `validate(): LinkedInValidationResult` - Validate current state\n- `reset(): this` - Reset builder to initial state\n\n### LinkedInContentTransformer\n\nTransforms content between LinkedIn and other formats.\n\n**Methods:**\n\n- `fromGeneric(content: GenericSocialContent): LinkedInContent` - Transform generic social content\n- `fromBlogPost(post: BlogPostContent): LinkedInContent` - Transform blog post\n- `toGeneric(content: LinkedInContent): GenericSocialContent` - Convert to generic format\n- `optimizeForLinkedIn(content: LinkedInContent): LinkedInContent` - Optimize for platform\n- `convertToArticle(post: BlogPostContent): LinkedInArticle` - Convert blog to article\n\n## Platform Best Practices\n\n### Hashtag Optimization\n\nLinkedIn recommends using **1-3 hashtags** for optimal visibility. While the technical limit is 30, posts with more than 3 hashtags see reduced engagement.\n\n```typescript\n// Good - 3 hashtags\nbuilder.addHashtag('tech').addHashtag('innovation').addHashtag('startup');\n\n// Too many - reduces visibility\nbuilder.addHashtag('tag1').addHashtag('tag2')...(10 more)...\n```\n\n### Professional Tone\n\nLinkedIn favors professional, industry-focused content:\n\n```typescript\n// Good professional tone\n\"Excited to announce our new product launch. This innovation addresses key challenges in the healthcare industry. #healthcare #innovation #technology\"\n\n// Too casual for LinkedIn\n\"OMG!!! You guys have to check this out 🔥🔥🔥 #amazing #awesome\"\n```\n\n### Long-Form Articles\n\nUse LinkedIn articles for content over 1000 characters for better formatting and engagement:\n\n```typescript\n// Short content (< 1000 chars) - regular post\nconst shortContent = builder.setText('Quick tip: ...').build();\n\n// Long content (> 1000 chars) - article\nconst longContent = builder\n  .setText('Read my full analysis')\n  .setArticle({\n    title: 'Complete Analysis',\n    content: '...' // Full content here\n  })\n  .build();\n```\n\n### Media Best Practices\n\n- **Images**: Use 1200x627px for optimal preview\n- **Videos**: Include thumbnail for better engagement\n- **Carousels**: Use 2-9 images to tell a story\n- **Documents**: Use for whitepapers, reports, presentations\n\n## Configuration\n\nNo runtime configuration required. This is a pure content type definition package with static constraints and validation rules.\n\n## Integration Status\n\n### Logger Integration\n**Status**: Not applicable\n\n**Justification**: This is a pure content type definition package with no runtime operations, side effects, or error conditions that require logging. The LinkedInContentValidator, LinkedInContentBuilder, and LinkedInContentTransformer classes are stateless utility classes that perform validation, building, and transformation operations. All errors are thrown as exceptions that calling code can handle, and there are no background operations, network calls, or state changes that would benefit from structured logging.\n\n**Pattern**: Pure functional utility - no logger integration needed. Logging is handled by consuming packages that use this content type.\n\n### NeverHub Integration\n**Status**: Integrated\n\n**Justification**: This package provides NeverHub service discovery integration through content type registration. Content type packages register themselves with NeverHub so that services can discover available content types at runtime. This enables dynamic content type discovery and allows services to adapt to available content types without hard-coded dependencies.\n\n**Pattern**: Service discovery integration - package registers content type with NeverHub for runtime discovery.\n\n**Example Integration**:\n```typescript\nimport { registerLinkedInContentType } from '@bernierllc/social-media-content-type-linkedin/neverhub-registration';\n\n// Register with NeverHub (if available)\nif (typeof detectNeverHub === 'function') {\n  registerLinkedInContentType();\n}\n```\n\n### Docs-Suite Integration\n**Status**: Ready\n\n**Format**: TypeDoc-compatible JSDoc comments are included throughout the source code. All public APIs are documented with examples and type information.\n\n## Dependencies\n\n- **@bernierllc/crypto-utils** (^1.0.2) - Document hash generation\n- **validator** (^13.12.0) - String validation utilities\n\n## Related Packages\n\n- [@bernierllc/social-media-content-type-twitter](../social-media-content-type-twitter) - Twitter content types\n- [@bernierllc/social-media-content-type-facebook](../social-media-content-type-facebook) - Facebook content types\n- [@bernierllc/social-media-content-type-instagram](../social-media-content-type-instagram) - Instagram content types\n- [@bernierllc/social-media-linkedin](../../service/social-media-linkedin) - LinkedIn service integration\n- [@bernierllc/social-media-manager](../../service/social-media-manager) - Multi-platform orchestration\n\n## Examples\n\nSee the `/examples` directory for more comprehensive usage examples:\n\n- `basic-post.ts` - Simple text post\n- `article-publishing.ts` - Long-form article\n- `document-sharing.ts` - PDF/PPTX sharing\n- `blog-transformation.ts` - Blog to LinkedIn conversion\n\n## TypeScript Support\n\nThis package is written in TypeScript and includes complete type definitions. All interfaces and types are exported for use in your TypeScript projects.\n\n## Testing\n\nThis package maintains 98%+ test coverage with comprehensive unit and integration tests.\n\n```bash\n# Run tests\nnpm test\n\n# Run with coverage\nnpm run test:coverage\n\n# Build package\nnpm run build\n\n# Lint code\nnpm run lint\n```\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\nThis package is part of the BernierLLC tools monorepo.\n","readmeFilename":"README.md"}