{"_id":"@bernierllc/social-media-content-type-facebook","_rev":"9-7ce2555b897ce58750b8abb0ab80ff63","name":"@bernierllc/social-media-content-type-facebook","dist-tags":{"latest":"1.4.0"},"versions":{"1.0.0":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.0","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"ec33b50d68904a5d5a61d12fc0aa561e1d8730e9","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.0.tgz","fileCount":32,"integrity":"sha512-+IsGwCrbl8zT1Qrh3923qgwZ7I1Qjhl1LKzG0oe9Bn+tn4O0Pb9R0xdqJjVsn8LYWF7bpp82cEqAjGkHD1kGAg==","signatures":[{"sig":"MEUCIEMxA9TyVXODm+kA/OyCkGEdjzeV5W/C07mUtLktpsowAiEA15gQSZFH459ag/Cgyihz8YBRGJeYMjrI0OgOrLSvxmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142502},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"736d29de7f8d4f0803194817f8eb5d4d7b03cda7","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"},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.4.2","description":"Facebook-specific content type definition and validation","directories":{},"_nodeVersion":"24.4.1","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.0_1760368014939_0.22645588421705076","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.1","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3f92a26cc41bce49070b309b3e412416b5875eed","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.1.tgz","fileCount":33,"integrity":"sha512-qc9MBPRHRKJ+wA2lJlHn6WEwqWoWf1Xzn2z9BTTdyGcSjjlndtRTkdUqpRvrjbTll/rtO7kAyJD+Q0WMMNir0g==","signatures":[{"sig":"MEUCIQCW98cdRluN73On+Dlop+C1K6QqBuh5fV1H74gxiiZK0wIgIGB5qCNB3V8tqSpQUGjrZTdTPNA7slb0W7s/FXRsvmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144512},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"fdb10985cafff3e9eb54cedda974f63d22a6495c","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"},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.7.0","description":"Facebook-specific content type definition and validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.1_1766276734763_0.3774454905288984","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.2","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"454d6a403609c50be9721b68dedfab4c5ee95849","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.2.tgz","fileCount":33,"integrity":"sha512-bUPA8UtFm8DMZoqwtMH8tpxsKi9k8TRc9ohvVEB8B26XHwtx/O1C5kmSFOS6z0l3XLF9mhuhveADz3MNjRXggQ==","signatures":[{"sig":"MEUCIFrXal2V2hchdlTY527U1hpg/uM3nVeV0jFUMewqAuhUAiEAoc0M0Clcd9I8v6SDBrRA8poqloQS+14WVuunwS5nO8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144700},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4799ccb237ceca9e4c4d1544e3c3e514d77b776a","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"},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.7.0","description":"Facebook-specific content type definition and validation","directories":{},"_nodeVersion":"20.19.6","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.2_1766283521191_0.2869824225536195","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.4","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.4","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"717e3e35106bcc736c7079e2ac8dfc661f723fd2","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.4.tgz","fileCount":33,"integrity":"sha512-UyEUHztupFQRsNbElX7YJFvuFlhekCdzU7HTtGQ8i8gFmNq5Tn/APuuRW1n6qgG8M1jPcM0FnsT7fxdehKG0vg==","signatures":[{"sig":"MEQCIC0cNd96gjHU64t7PgGBiJPFLNG/FflCx3AQR9tl4g4GAiBOd82yxS62ZRmRn2OUaD1fB1murH+iTQlFT8W+Ndu+Pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146747},"main":"dist/index.js","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:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Facebook-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.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.4_1767642385719_0.9840025266654768","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.5","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.5","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"b3ea2b358c2528aa5af7826268c55d5dec827137","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.5.tgz","fileCount":33,"integrity":"sha512-n9TCpHHElNLdNsnwJdfELt6dzduzXP2DMuoGXbjAubkHBiy5ox/RaiExmz1dyqBoWRZ9aF1D7JMKuIKp34RBMw==","signatures":[{"sig":"MEYCIQDZexLiJ500btqj7T1Ty60X/0+FR1Bzbc2AHFmgR9JnPwIhAOTYl8BRFFsURW6qSoWN6opfqd2qZgYlrELhzqsSPCTl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146959},"main":"dist/index.js","_from":"file:bernierllc-social-media-content-type-facebook-1.0.5.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:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"_resolved":"/tmp/9f72ea5d67ce73d189f298fe79860310/bernierllc-social-media-content-type-facebook-1.0.5.tgz","_integrity":"sha512-n9TCpHHElNLdNsnwJdfELt6dzduzXP2DMuoGXbjAubkHBiy5ox/RaiExmz1dyqBoWRZ9aF1D7JMKuIKp34RBMw==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.11.0","description":"Facebook-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.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.5_1773078196544_0.8250758370104816","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.0.6","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.0.6","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"2cb96f9cfb1f097070474fce55133b96fb5a2810","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.0.6.tgz","fileCount":33,"integrity":"sha512-5Sn+0bXoUfuwWZfLSosofTwhazv+358K5l0zPGTTw69tvTRcjYFOaQbdbK2Np2C4oyHWTlAPUzPMc3knxkULmQ==","signatures":[{"sig":"MEQCIHy4FUZgXWcipHUGW5csyc7C+p+WNKQTNf2Z0AlCdTMHAiBaT092vjy3654y+emtQV/47D9F2uHqfg1Ip0LCpfDUuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147229},"main":"dist/index.js","_from":"file:bernierllc-social-media-content-type-facebook-1.0.6.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:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-facebook/bernierllc-social-media-content-type-facebook-1.0.6.tgz","_integrity":"sha512-5Sn+0bXoUfuwWZfLSosofTwhazv+358K5l0zPGTTw69tvTRcjYFOaQbdbK2Np2C4oyHWTlAPUzPMc3knxkULmQ==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.11.0","description":"Facebook-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.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.0.6_1773163301811_0.5101001181944917","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.1.0","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"990dd203fb0f7c76b01fd38c4a8ea154c7ce4d91","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.1.0.tgz","fileCount":33,"integrity":"sha512-dGMXQJmMmmaawVSPqt9m+sMSc38x+Ig8fMM+5x7c1vHC2dmpKeeHIZtPCN9mxooZDt1RXQTD0temE4asUYku/A==","signatures":[{"sig":"MEUCIEqqHjI4i+wK4rNhk+MavSnrLa+GfIf5NyzsLQ8G+FSBAiEA/b1wU3871ykeeXsx5IXjytKWYLJGHcUbpgknVBhCPEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":147444},"main":"dist/index.js","_from":"file:bernierllc-social-media-content-type-facebook-1.1.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:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-facebook/bernierllc-social-media-content-type-facebook-1.1.0.tgz","_integrity":"sha512-dGMXQJmMmmaawVSPqt9m+sMSc38x+Ig8fMM+5x7c1vHC2dmpKeeHIZtPCN9mxooZDt1RXQTD0temE4asUYku/A==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.14.1","description":"Facebook-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.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.1.0_1779221433837_0.8200742446753162","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.3.0","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/social-media-content-type-facebook@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"29a817a6c6508b76be52b81a004b8c6515f55de0","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.3.0.tgz","fileCount":16,"integrity":"sha512-Tab2KUgtnkqh6M6hV/VXohBsyJZVt4HoMpFIODnRlZTUddp/BYguQL/fcyq73w3d7nPVQzrmAEN1i7bwgkTuTA==","signatures":[{"sig":"MEYCIQCfWh/MjmzygIRhMndtXSdiajeBr77qZCqjENwdbSLdTAIhALUDTA73BdGDgaN3TOIPJkXDQwtsNDvcvC2ee7NgKAaT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57394},"main":"dist/index.js","_from":"file:bernierllc-social-media-content-type-facebook-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:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-facebook/bernierllc-social-media-content-type-facebook-1.3.0.tgz","_integrity":"sha512-Tab2KUgtnkqh6M6hV/VXohBsyJZVt4HoMpFIODnRlZTUddp/BYguQL/fcyq73w3d7nPVQzrmAEN1i7bwgkTuTA==","bernierllc":{"category":"core","integration":{"logger":"not-applicable","neverhub":"optional","docs-suite":"ready"}},"_npmVersion":"11.14.1","description":"Facebook-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.57.0","ts-jest":"^29.1.2","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/parser":"^7.7.0","@typescript-eslint/eslint-plugin":"^7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/social-media-content-type-facebook_1.3.0_1779241421725_0.9669115250766145","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/social-media-content-type-facebook","version":"1.4.0","description":"Facebook-specific content type definition and validation","main":"dist/index.js","types":"dist/index.d.ts","keywords":["facebook","social-media","content-type","validation","transformer"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","dependencies":{"validator":"^13.12.0","@bernierllc/crypto-utils":"1.4.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.12.7","@types/validator":"^13.12.2","@typescript-eslint/eslint-plugin":"^7.7.0","@typescript-eslint/parser":"^7.7.0","eslint":"^8.57.0","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.4.5"},"bernierllc":{"category":"core","integration":{"neverhub":"optional","logger":"not-applicable","docs-suite":"ready"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"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-facebook@1.4.0","_integrity":"sha512-QDEwVNb0X8BzLEBxH/N9GMJJD1wTde+0rJ3AccqKTINo5bsrMaan/vEd9aI8y3uv19Q68mntHb6GUeOzLOVcFw==","_resolved":"/home/runner/work/tools/tools/packages/core/social-media-content-type-facebook/bernierllc-social-media-content-type-facebook-1.4.0.tgz","_from":"file:bernierllc-social-media-content-type-facebook-1.4.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-QDEwVNb0X8BzLEBxH/N9GMJJD1wTde+0rJ3AccqKTINo5bsrMaan/vEd9aI8y3uv19Q68mntHb6GUeOzLOVcFw==","shasum":"7a5bd60ba2799fb499fcf9c16f3753fdfbd36105","tarball":"https://registry.npmjs.org/@bernierllc/social-media-content-type-facebook/-/social-media-content-type-facebook-1.4.0.tgz","fileCount":16,"unpackedSize":57394,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEU187btDpnNUqXvJnpQFlr1HDiB2bNYE6CmCQZ27UDwAiBhNnaacLE59S5ZaR1XSxe+ztuDxSlRf9lovQOy+tbhFw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e01bf83-a0c7-4df6-85c5-0fbfac7b1970"}},"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-facebook_1.4.0_1779250169010_0.8506367138818713"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-13T15:06:54.810Z","modified":"2026-05-20T04:09:29.294Z","1.0.0":"2025-10-13T15:06:55.135Z","1.0.1":"2025-12-21T00:25:34.905Z","1.0.2":"2025-12-21T02:18:41.335Z","1.0.4":"2026-01-05T19:46:25.883Z","1.0.5":"2026-03-09T17:43:16.698Z","1.0.6":"2026-03-10T17:21:41.961Z","1.1.0":"2026-05-19T20:10:34.027Z","1.3.0":"2026-05-20T01:43:41.881Z","1.4.0":"2026-05-20T04:09:29.153Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["facebook","social-media","content-type","validation","transformer"],"description":"Facebook-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-facebook\n\nFacebook-specific content type definition and validation for the BernierLLC ecosystem.\n\n## Installation\n\n```bash\nnpm install @bernierllc/social-media-content-type-facebook\n```\n\n## Overview\n\nThis package provides Facebook-specific content type definitions, validation rules, and transformation utilities. It is designed as a pure core package that focuses solely on content structure and validation, with no API calls or authentication logic.\n\n**Key Features:**\n- Facebook-specific content constraints (63,206 character limit)\n- Album support (up to 50 images)\n- Video posting with captions and cross-posting to Instagram\n- Story creation (20 second limit)\n- Event creation and management\n- Poll creation (2-10 options)\n- Photo tagging with coordinates\n- 5 privacy levels\n- Content transformation from generic/blog/event formats\n- Fluent builder API for easy content creation\n\n## Usage\n\n### Basic Status Post\n\n```typescript\nimport { FacebookContentBuilder, FacebookContentValidator } from '@bernierllc/social-media-content-type-facebook';\n\nconst builder = new FacebookContentBuilder();\nconst post = builder\n  .setText('Hello Facebook!')\n  .setPostType('status')\n  .build();\n\nconst validator = new FacebookContentValidator();\nconst result = validator.validate(post);\n\nif (result.valid) {\n  console.log('Post is ready to publish!');\n}\n```\n\n### Creating a Photo Album\n\n```typescript\nimport { FacebookContentBuilder } from '@bernierllc/social-media-content-type-facebook';\n\nconst albumPost = new FacebookContentBuilder()\n  .setText('Summer vacation photos')\n  .setAlbum({\n    title: 'Hawaii 2025',\n    description: 'Amazing trip!',\n    images: [\n      { type: 'image', url: 'https://example.com/1.jpg', description: 'Beach sunset' },\n      { type: 'image', url: 'https://example.com/2.jpg', description: 'Snorkeling' },\n      { type: 'image', url: 'https://example.com/3.jpg', description: 'Luau dinner' }\n    ],\n    privacy: 'friends'\n  })\n  .build();\n```\n\n### Video Post with Captions\n\n```typescript\nimport { FacebookContentBuilder } from '@bernierllc/social-media-content-type-facebook';\n\nconst videoPost = new FacebookContentBuilder()\n  .setText('Check out my tutorial!')\n  .setVideo({\n    url: 'https://example.com/tutorial.mp4',\n    title: 'How to Build Packages',\n    description: 'Step-by-step guide',\n    thumbnailUrl: 'https://example.com/thumb.jpg',\n    captions: [\n      { language: 'en', url: 'https://example.com/en.srt' },\n      { language: 'es', url: 'https://example.com/es.srt' }\n    ],\n    crosspostToInstagram: true\n  })\n  .build();\n```\n\n### Creating a Story\n\n```typescript\nimport { FacebookContentBuilder, FACEBOOK_CONSTRAINTS } from '@bernierllc/social-media-content-type-facebook';\n\nconst story = new FacebookContentBuilder()\n  .setText('Quick update!')\n  .setStory({\n    media: {\n      type: 'image',\n      url: 'https://example.com/story.jpg'\n    },\n    duration: FACEBOOK_CONSTRAINTS.maxStoryDuration, // 20 seconds\n    link: {\n      url: 'https://example.com/article'\n    },\n    stickers: [\n      { type: 'poll', config: { question: 'Like?', options: ['Yes', 'No'] } }\n    ]\n  })\n  .build();\n```\n\n### Creating an Event\n\n```typescript\nimport { FacebookContentBuilder } from '@bernierllc/social-media-content-type-facebook';\n\nconst event = new FacebookContentBuilder()\n  .setText('Join us for our tech conference!')\n  .setEvent({\n    name: 'Tech Conference 2025',\n    startTime: new Date('2025-12-01T09:00:00'),\n    endTime: new Date('2025-12-01T17:00:00'),\n    location: {\n      name: 'Convention Center',\n      city: 'San Francisco',\n      state: 'CA'\n    },\n    description: 'Full day of talks and workshops',\n    coverImage: 'https://example.com/cover.jpg',\n    isOnline: false\n  })\n  .build();\n```\n\n### Content Transformation\n\n```typescript\nimport { FacebookContentTransformer, GenericSocialContent } from '@bernierllc/social-media-content-type-facebook';\n\nconst transformer = new FacebookContentTransformer();\n\n// From generic social content\nconst generic: GenericSocialContent = {\n  text: 'Check out my blog!',\n  images: ['https://example.com/1.jpg', 'https://example.com/2.jpg'],\n  links: ['https://blog.example.com/post']\n};\n\nconst facebookContent = transformer.fromGeneric(generic);\n\n// From blog post\nconst blogPost = {\n  title: 'My Latest Article',\n  excerpt: 'This is an interesting read...',\n  url: 'https://blog.example.com/article',\n  featuredImage: 'https://blog.example.com/featured.jpg'\n};\n\nconst linkPost = transformer.fromBlogPost(blogPost);\n\n// Convert to story\nconst photoPost = {\n  text: 'Beautiful sunset',\n  postType: 'photo' as const,\n  media: [{ type: 'image' as const, url: 'https://example.com/sunset.jpg' }]\n};\n\nconst story = transformer.convertToStory(photoPost);\n```\n\n### Creating a Poll\n\n```typescript\nimport { FacebookContentBuilder } from '@bernierllc/social-media-content-type-facebook';\n\nconst pollPost = new FacebookContentBuilder()\n  .setText('What is your favorite programming language?')\n  .addPoll({\n    question: 'Pick your favorite',\n    options: ['TypeScript', 'JavaScript', 'Python', 'Go', 'Rust'],\n    allowMultipleAnswers: false\n  })\n  .build();\n```\n\n## API Reference\n\n### FacebookContentBuilder\n\nFluent API for building Facebook content:\n\n- `setText(text: string)` - Set post text (max 63,206 chars)\n- `setPostType(type)` - Set post type (status, photo, video, link, album, story, event)\n- `addMedia(media)` - Add media item (image or video)\n- `addMediaArray(media[])` - Add multiple media items\n- `setVideo(video)` - Set video content\n- `setAlbum(album)` - Set album content\n- `setLink(link)` - Set link preview\n- `setStory(story)` - Set story content\n- `setEvent(event)` - Set event details\n- `addPoll(poll)` - Add poll to post\n- `build()` - Build and return FacebookContent\n- `validate()` - Validate without building\n- `reset()` - Reset builder to initial state\n- `clone()` - Clone the current builder\n\n### FacebookContentValidator\n\nValidates Facebook content:\n\n- `validate(content)` - Validate complete content, returns ValidationResult\n- `validateText(text)` - Validate text length\n- `validateMedia(media[])` - Validate media array\n- `validateVideo(video)` - Validate video content\n- `validateAlbum(album)` - Validate album\n- `validateStory(story)` - Validate story\n- `validateEvent(event)` - Validate event\n- `validatePoll(poll)` - Validate poll\n\n### FacebookContentTransformer\n\nTransforms content between formats:\n\n- `fromGeneric(content)` - Transform from generic social content\n- `fromBlogPost(post)` - Transform from blog post\n- `toGeneric(content)` - Convert to generic format\n- `optimizeForFacebook(content)` - Optimize content for Facebook\n- `convertToStory(content)` - Convert to story format\n- `createAlbum(images[], title, description?)` - Create album from URLs\n\n### Facebook Constraints\n\n```typescript\nFACEBOOK_CONSTRAINTS = {\n  maxTextLength: 63206,        // Unique to Facebook\n  maxAlbumImages: 50,          // Much higher than other platforms\n  maxPollOptions: 10,\n  minPollOptions: 2,\n  maxStoryDuration: 20,        // Seconds\n  supportedMediaTypes: ['image/png', 'image/jpeg', 'image/gif', 'video/mp4', 'video/mov'],\n  maxImageSize: 10 * 1024 * 1024,  // 10MB\n  maxVideoSize: 4 * 1024 * 1024 * 1024  // 4GB\n}\n```\n\n## Facebook Platform Features\n\n### Post Types\n- **Status** - Text-only posts\n- **Photo** - Single or multiple images\n- **Video** - Video with optional captions\n- **Link** - Link preview with image\n- **Album** - Up to 50 images with captions\n- **Story** - 20-second max, auto-archives after 24 hours\n- **Event** - Event creation with location/time\n\n### Privacy Levels\n- `public` - Visible to everyone\n- `friends` - Only friends can see\n- `friends_of_friends` - Friends and their friends\n- `only_me` - Private, only you\n- `custom` - Custom audience\n\n### Album Features\n- Up to 50 images (more than Twitter, LinkedIn, etc.)\n- Individual image captions\n- Photo tagging with coordinates\n- Album-level privacy settings\n\n### Story Features\n- 20-second maximum duration\n- Vertical format recommended (9:16)\n- Interactive stickers (poll, question, countdown, location, mention)\n- Link attachment\n- Background music\n- Auto-archives after 24 hours\n\n### Event Features\n- In-person, online, or hybrid events\n- Location with coordinates\n- Start/end time\n- Cover image\n- Event description\n- Online event URL\n\n### Video Features\n- Up to 4GB file size\n- 240 minutes maximum (for pages)\n- Multiple caption files (SRT format)\n- Cross-posting to Instagram\n- Thumbnail customization\n- Recommended: H.264 codec, AAC audio, 1280x720 resolution\n\n## Content Type Transformations\n\nThis package supports transformations from:\n- **Generic Social Content** → Facebook posts, albums, or link posts\n- **Blog Post Content** → Facebook link posts with preview or albums\n- **Event Content** → Facebook events\n\nAnd to:\n- **Generic Social Content** ← Facebook content (for cross-platform use)\n- **Story Format** ← Facebook photo/video/album posts\n\n## Integration Points\n\n### Used By\n- `@bernierllc/social-media-facebook` - Facebook publishing service\n- `@bernierllc/social-media-manager` - Multi-platform manager\n- `@bernierllc/content-management-suite` - Content management system\n\n### Dependencies\n- `@bernierllc/crypto-utils` - Media hash generation (optional, for deduplication)\n- `validator` - URL validation\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 FacebookContentValidator, FacebookContentBuilder, and FacebookContentTransformer 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**: Optional\n\n**Justification**: This package can optionally register itself with NeverHub for service discovery. Content type packages can 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. However, the package is designed to work without NeverHub for simpler use cases.\n\n**Pattern**: Optional service discovery integration - package can register content type with NeverHub for runtime discovery.\n\n**Example Integration**:\n```typescript\nimport { registerFacebookContentType } from '@bernierllc/social-media-content-type-facebook/neverhub-registration';\n\n// Register with NeverHub (if available)\nif (typeof detectNeverHub === 'function') {\n  registerFacebookContentType();\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## Best Practices\n\n### Album Creation\n- Group related images together\n- Use descriptive titles and descriptions\n- Keep albums focused on a single topic/event\n- Optimize image order for narrative flow\n- Albums get higher engagement than single images\n\n### Video Optimization\n- Keep videos under 2 minutes for best performance\n- Use square videos (1:1) for mobile\n- Add captions/subtitles (85% watch muted)\n- Enable cross-posting to Instagram for wider reach\n- Use native uploads instead of links\n\n### Story Best Practices\n- Use vertical format (9:16 ratio)\n- High contrast text overlays\n- Call-to-action in first 3 seconds\n- Interactive stickers increase engagement\n- Stories auto-archive after 24 hours\n\n### Event Creation\n- Post during peak hours (1-4 PM local time)\n- Use high-quality cover images\n- Provide complete location details\n- Set up both in-person and online options for hybrid events\n\n## Examples\n\nSee the `/examples` directory for complete working examples:\n- `basic-post.ts` - Simple status posts\n- `album-creation.ts` - Creating photo albums\n- `video-posting.ts` - Video posts with captions\n- `story-creation.ts` - Facebook Stories\n- `event-creation.ts` - Event creation\n\n## Testing\n\n```bash\n# Run tests\nnpm test\n\n# Run tests 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 file is licensed to the client under a limited-use license.\nThe client may use and modify this code only within the scope of the project it was delivered for.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n\n## See Also\n\n- [@bernierllc/social-media-content-type-twitter](https://www.npmjs.com/package/@bernierllc/social-media-content-type-twitter)\n- [@bernierllc/social-media-content-type-linkedin](https://www.npmjs.com/package/@bernierllc/social-media-content-type-linkedin)\n- [@bernierllc/social-media-content-type-instagram](https://www.npmjs.com/package/@bernierllc/social-media-content-type-instagram)\n- [@bernierllc/social-media-facebook](https://www.npmjs.com/package/@bernierllc/social-media-facebook) (Service layer)\n","readmeFilename":"README.md"}