{"_id":"@blognow/sdk","_rev":"10-3ff00d00586a89268e7470fbf0b8b73a","name":"@blognow/sdk","dist-tags":{"alpha":"1.0.1-alpha.0","latest":"1.2.0"},"versions":{"1.0.0":{"name":"@blognow/sdk","version":"1.0.0","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.0.0","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"469f4c212ce8e4bc1a37204bed3606f742045fca","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.0.0.tgz","fileCount":86,"integrity":"sha512-j8Ul07cdysPbJKgsG8jFAv9HtNxZBZRwmEgqSBws/+tClaB77KabUlEEKgBPI3T2Ebo7nGBvGnHSWWBW+eMWmw==","signatures":[{"sig":"MEUCIQDE3qJKhsjvJMDgcjBYVWFtux9zLVlzpfZdhSQNJ+g9OAIgGLdQzfF/zPPgf+rPAjJG5Whr0Ae6ALlxJnbIv24CJQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191312},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"b6d04fb2d8924897e1a1bfd968edf5fb677eca30","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.2","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1756605712908_0.9531709891750608","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-alpha.0":{"name":"@blognow/sdk","version":"1.0.1-alpha.0","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.0.1-alpha.0","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"11d1ceb2a70d3b7ee82b5f2c5ecef0b99807bf53","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.0.1-alpha.0.tgz","fileCount":86,"integrity":"sha512-feQFW+oKtafpD6T+5ltFdhcu21VACn64BW5lVKtUmsK7vyos3xTt7NacQZNvNDS5ZXJ9rl7k5vdxDoNN7lVAYw==","signatures":[{"sig":"MEUCIGE6WO/my/S307rtZfth17BxYKhsAWqUTjjQEqJ/7QdCAiEA5197wRo9trV+7oF2WBkyaIE4bX9/SgdoILsYZPXfroY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191715},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"0f2586527ad9f39a8c6bf231b05de4e5eec078db","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.1-alpha.0_1756613729729_0.3910587723951575","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@blognow/sdk","version":"1.1.0","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.0","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"d01a2f7650ea91507d89bc555c63c40aeea60779","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.0.tgz","fileCount":86,"integrity":"sha512-/7DzM1u1X1nApgWasw7sY+cshnS+kjfMptJhC2jtQU15r4dcszejYMH0egXG0L4WAt7fm7FEurV4Td8panbGAQ==","signatures":[{"sig":"MEYCIQDMeV/n783hSB5SkCW2v8jQ1OGfT/8xinuTfpETGI51yQIhAOJzpSg+GCXNj8DVzCFRtZwD/dBVZrvgy9Qz3fUYzzB0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191732},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"015840be2c7d291606eb031dd768e76a52f53236","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.0_1756614089468_0.2797057417570137","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@blognow/sdk","version":"1.1.1","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.1","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"f1cee4f766cbeccb0b0588200e51528b040775d6","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.1.tgz","fileCount":86,"integrity":"sha512-YsuMZ5fXztSbADJx25TPhIglAwatetrE/y+iJJR147Rf008lEJlJkjZoXanDxTm59oiEuInp+Ou4Gh2iuNt3uQ==","signatures":[{"sig":"MEUCIAt3eAXzdxWECJ7uHOz9tnWW4mwyQXdWg0kqE/AbjGEEAiEA4oSNww35OKlexWNcBt9AcYf4IiRhQo3T7usR4CIkQNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191732},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"225b2aea5db409304848edc589d13ed8e1cb63c2","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.1_1756688398811_0.18757615998494415","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@blognow/sdk","version":"1.1.2","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.2","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"4e2243a4045003aadabb6d6e93bd61131b32c155","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.2.tgz","fileCount":86,"integrity":"sha512-OpVW/TmXs37gbWZmJ5E5IfGuRZA3he5wvodxgZn1RLMn0eed9VhmLuONVX/2vajpNxAiULrN9+BkVgHVVKAjJA==","signatures":[{"sig":"MEUCIGasA+caqS35N49NOHafqYSa2X8kSc7huBkQhHvd9HkgAiEA9duBSgtEnkRWbZGnEVJVJ58HfQtauB/1oM7zZY6+8so=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179885},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"ec9cea7ad715d3be8cd2601b39c07ddc1ba35d6c","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","prepublishOnly":"npm run build","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.2_1756981980572_0.8170190514403852","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@blognow/sdk","version":"1.1.3","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.3","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"7a369e22fd9cea09b063d3ec3b9048a4f04a0030","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.3.tgz","fileCount":86,"integrity":"sha512-Hk029dLKZe15b51qKKrE49QMtE4AY3xkpJ6fftkXhUY6ms/PBst0Y3hY988pvdjWP+gCeGl0TtyC4hRnWA6/Ug==","signatures":[{"sig":"MEQCID4+IR5mWSLjaUr0ySbzaVNdApS/bQiEo9Wu0bimJGwjAiASQqDxygBLL7qLFaTxT9yi6R07OntLTHuN96e2kVjRKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180448},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"ec9cea7ad715d3be8cd2601b39c07ddc1ba35d6c","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","prepublishOnly":"npm run build","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.3_1757902528284_0.49554803707865913","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@blognow/sdk","version":"1.1.4","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.4","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"cf7df9c9c6ef7edd2abf282366ad08d020c5001a","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.4.tgz","fileCount":86,"integrity":"sha512-hXz569zEEV2ztsBOytkOedvesFinO/Uaa/7A+yNT8M5l8/NiSMqpfQVsYY5Qk6RKnTFSUmDC01j/FDid6FaC1Q==","signatures":[{"sig":"MEYCIQD99ESVFY8iO3KNtl/Pi5Np6wtU0gcgPc3LajzWM5NPCAIhAM8zv8y5ZxSjk/qjFpLwAHYvKgB+jPlmBj02523Em0Ys","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179364},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"ec9cea7ad715d3be8cd2601b39c07ddc1ba35d6c","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","prepublishOnly":"npm run build","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.4_1757916898841_0.3539363045869355","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@blognow/sdk","version":"1.1.5","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.5","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"f4ea225d20dc88fece89ba0d8b37bbc2b5d72b7d","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.5.tgz","fileCount":86,"integrity":"sha512-KDNN/TVh+2J+vu4EopL/dpEOkgk6GCiJNCcIGlhtXyVZHAUXOl2Ek+qkAGtkHLeCJpV7XfQhVFnq2RJDATK/LA==","signatures":[{"sig":"MEYCIQCh9LXQMAZvl/ZdZaFDFtAmyis0q38irSlyEAf/emMqSAIhAIwKBFV+gxeXP0T1s8+7wHopkm+paLo8zBP5VTqVBKQg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179580},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"ec9cea7ad715d3be8cd2601b39c07ddc1ba35d6c","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","prepublishOnly":"npm run build","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.5_1757920067085_0.28960968325750613","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@blognow/sdk","version":"1.1.6","keywords":["blognow","blog","cms","typescript","javascript"],"author":{"name":"BlogNow Team"},"license":"MIT","_id":"@blognow/sdk@1.1.6","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"dist":{"shasum":"a9f3c7e5a1dbf3dfd379d7bac93db23ac1beb8f8","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.1.6.tgz","fileCount":86,"integrity":"sha512-OlB3H4RSsXz3uZ2XlQUHBD0yuYUUkXkVVk1gSjPrsgC/rcu9FmPC+X3fLdzWwaMzA0FJMIYUZX9ohc7HQ2VSAA==","signatures":[{"sig":"MEUCIQDxpRGSR170x3jm7zbKDo3IPnI6WaOCimom7Ytjwj+FPQIgHfA+eA8Lz5uZyOqRHbDuVnVAZDByneLdjVus9dDww5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183769},"main":"./dist/cjs/index.js","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"def6f6f0149a5131163fc3a16a780a6a9b68cc64","scripts":{"dev":"tsc --watch","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","lint":"eslint src/**/*.ts","test":"jest","build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","typecheck":"tsc --noEmit","docs:serve":"npm run docs && npx http-server docs -p 8080","release:rc":"./scripts/release.sh prerelease --rc","test:watch":"jest --watch","build:types":"tsc --emitDeclarationOnly --outDir dist/types","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","release:beta":"./scripts/release.sh prerelease --beta","release:alpha":"./scripts/release.sh prerelease --alpha","release:major":"./scripts/release.sh major","release:minor":"./scripts/release.sh minor","release:patch":"./scripts/release.sh patch","test:coverage":"jest --coverage","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","prepublishOnly":"npm run build","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'"},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"repository":{"url":"git+https://github.com/synkc0/blognow-js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for BlogNow API","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.6.2","eslint":"^8.49.0","rimraf":"^5.0.0","rollup":"^2.79.1","ts-jest":"^29.1.1","typedoc":"^0.25.2","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0","rollup-plugin-terser":"^7.0.2","@rollup/plugin-typescript":"^8.5.0","@typescript-eslint/parser":"^6.7.0","@rollup/plugin-node-resolve":"^13.3.0","@typescript-eslint/eslint-plugin":"^6.7.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.6_1758005022603_0.3003093175947129","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@blognow/sdk","version":"1.2.0","description":"Official JavaScript/TypeScript SDK for BlogNow API","keywords":["blognow","blog","cms","typescript","javascript"],"homepage":"https://github.com/synkc0/blognow-js-sdk#readme","bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"repository":{"type":"git","url":"git+https://github.com/synkc0/blognow-js-sdk.git"},"license":"MIT","author":{"name":"BlogNow Team"},"main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js","types":"./dist/types/index.d.ts"}},"engines":{"node":">=14.0.0"},"scripts":{"build":"npm run clean && npm run build:types && npm run build:cjs && npm run build:esm && npm run build:umd","build:types":"tsc --emitDeclarationOnly --outDir dist/types","build:cjs":"tsc -p tsconfig.cjs.json","build:esm":"tsc -p tsconfig.esm.json","build:umd":"rollup -c rollup.config.js","clean":"rimraf dist","test":"jest","test:coverage":"jest --coverage","test:watch":"jest --watch","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","typecheck":"tsc --noEmit","docs":"typedoc src/index.ts --out docs --readme README.md --exclude '**/*.test.ts' --exclude '**/*.spec.ts'","docs:serve":"npm run docs && npx http-server docs -p 8080","release:patch":"./scripts/release.sh patch","release:minor":"./scripts/release.sh minor","release:major":"./scripts/release.sh major","release:alpha":"./scripts/release.sh prerelease --alpha","release:beta":"./scripts/release.sh prerelease --beta","release:rc":"./scripts/release.sh prerelease --rc","workflow:patch":"echo 'Use GitHub Actions: Bump Version and Release -> patch'","workflow:minor":"echo 'Use GitHub Actions: Bump Version and Release -> minor'","workflow:major":"echo 'Use GitHub Actions: Bump Version and Release -> major'","workflow:alpha":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (alpha)'","workflow:beta":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (beta)'","workflow:rc":"echo 'Use GitHub Actions: Bump Version and Release -> prerelease (rc)'","prepublishOnly":"npm run build","dev":"tsc --watch"},"devDependencies":{"@rollup/plugin-commonjs":"^29.0.3","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-typescript":"^12.3.0","@types/jest":"^29.5.5","@types/node":"^26.0.1","@typescript-eslint/eslint-plugin":"^6.7.0","@typescript-eslint/parser":"^6.7.0","eslint":"^8.49.0","jest":"^29.7.0","rimraf":"^6.1.3","rollup":"^2.79.1","rollup-plugin-terser":"^7.0.2","ts-jest":"^29.1.1","tslib":"^2.6.2","typedoc":"^0.25.2","typescript":"^5.2.2"},"sideEffects":false,"dependencies":{"node-html-parser":"^8.0.3"},"_id":"@blognow/sdk@1.2.0","gitHead":"74afcad25b1bd62c6f274b2d4fd4cae49e8b5961","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9RqhawzYaogrXnkmBlWTcufFFREfEfJxjj/O3fV6zawaDtSXfAIVbRG28PR5iuMxOh4iXxURXkt1A/l0F476Pg==","shasum":"a395d8545f9fb134533c42e4f23711348853693f","tarball":"https://registry.npmjs.org/@blognow/sdk/-/sdk-1.2.0.tgz","fileCount":96,"unpackedSize":230835,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA4050NxrJGRlAM+YIJALeWrtIWXRcy6eBo1NROUvwelAiARjMF2negTo/JBvZhIf31VSKaDWaqXImlD4OEVOggSMQ=="}]},"_npmUser":{"name":"ny085","email":"nagendrayadav075@gmail.com"},"directories":{},"maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.2.0_1782368170464_0.21047441787967713"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-31T02:01:52.808Z","modified":"2026-06-25T06:16:10.774Z","1.0.0":"2025-08-31T02:01:53.107Z","1.0.1-alpha.0":"2025-08-31T04:15:29.936Z","1.1.0":"2025-08-31T04:21:29.654Z","1.1.1":"2025-09-01T00:59:59.051Z","1.1.2":"2025-09-04T10:33:00.849Z","1.1.3":"2025-09-15T02:15:28.465Z","1.1.4":"2025-09-15T06:14:59.011Z","1.1.5":"2025-09-15T07:07:47.250Z","1.1.6":"2025-09-16T06:43:42.780Z","1.2.0":"2026-06-25T06:16:10.602Z"},"bugs":{"url":"https://github.com/synkc0/blognow-js-sdk/issues"},"author":{"name":"BlogNow Team"},"license":"MIT","homepage":"https://github.com/synkc0/blognow-js-sdk#readme","keywords":["blognow","blog","cms","typescript","javascript"],"repository":{"type":"git","url":"git+https://github.com/synkc0/blognow-js-sdk.git"},"description":"Official JavaScript/TypeScript SDK for BlogNow API","maintainers":[{"name":"ny085","email":"nagendrayadav075@gmail.com"}],"readme":"# BlogNow JavaScript/TypeScript SDK\n\n[![npm version](https://badge.fury.io/js/%40blognow%2Fsdk.svg)](https://badge.fury.io/js/%40blognow%2Fsdk)\n[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nOfficial JavaScript/TypeScript SDK for the BlogNow API. This SDK provides a simple, type-safe interface for integrating with BlogNow's backend API using API key authentication.\n\n## Features\n\n- 🔒 **Type-safe**: Full TypeScript support with complete type definitions\n- 🌐 **Universal**: Works in Node.js, browsers, and edge runtimes\n- 📄 **Auto-pagination**: Built-in pagination support with async generators\n- 🔄 **Automatic retries**: Intelligent retry logic with exponential backoff\n- 🚦 **Rate limiting**: Built-in rate limiting to respect API limits\n- ❌ **Error handling**: Comprehensive error classes for different scenarios\n- 🪶 **Lightweight**: Minimal footprint (single small dependency: `node-html-parser`, used by structured-data extraction)\n- 🔎 **SEO-ready**: Extract schema.org JSON-LD (`ItemList`, `FAQPage`) straight from post content\n- 🔧 **Configurable**: Flexible configuration options\n\n## Installation\n\n```bash\nnpm install @blognow/sdk\n```\n\n## Quick Start\n\n```typescript\nimport { BlogNowClient } from \"@blognow/sdk\";\n\nconst client = new BlogNowClient({\n  apiKey: \"your-api-key\",\n  baseUrl: \"https://api.blognow.tech\", // optional\n});\n\n// Get published posts\nconst posts = await client.posts.getPublishedPosts({\n  page: 1,\n  size: 10,\n});\n\nconsole.log(`Found ${posts.total} posts`);\nposts.items.forEach((post) => {\n  console.log(`- ${post.title}`);\n});\n```\n\n## Configuration\n\n### Basic Configuration\n\n```typescript\nimport { BlogNowClient } from \"@blognow/sdk\";\n\nconst client = new BlogNowClient({\n  apiKey: \"your-api-key\",\n});\n```\n\n### Advanced Configuration\n\n```typescript\nconst client = new BlogNowClient({\n  apiKey: \"your-api-key\",\n  baseUrl: \"https://api.blognow.tech\", // API base URL\n  timeout: 30000, // Request timeout (30s)\n  retries: 3, // Max retry attempts\n  rateLimitPerSecond: 10, // Rate limit (10 req/sec)\n  debug: false, // Debug logging\n  customHeaders: {\n    // Custom headers\n    \"X-Custom-Header\": \"value\",\n  },\n});\n```\n\n## API Reference\n\n### Posts API\n\n#### Get Published Posts\n\n```typescript\nconst posts = await client.posts.getPublishedPosts({\n  page: 1,\n  size: 20,\n  sortBy: \"published_at\",\n  sortOrder: \"desc\",\n});\n```\n\n#### Get Published Post Summaries (Lightweight Listing)\n\nFor listing pages (cards), use the lite endpoint — it omits the post `content` on\nthe wire, so you only transfer what cards need (title, excerpt, image, date, author).\n\n```typescript\n// PaginatedResponse<PostSummary> — PostSummary === Omit<Post, \"content\">\nconst summaries = await client.posts.getPublishedPostSummaries({\n  page: 1,\n  size: 20,\n  query: \"staffing\", // mapped to the endpoint's `q` param\n});\n\n// Or iterate every published post summary, paging automatically:\nfor await (const summary of client.posts.iteratePublishedPostSummaries()) {\n  console.log(summary.title, summary.excerpt);\n}\n```\n\n> Note: the lite endpoint returns posts newest-first (`published_at` descending) by\n> default, so listing pages can render the page as-is without re-sorting. It does not\n> accept custom `sort_by`/`sort_order` params.\n\n#### Get All Posts (Any Status)\n\n```typescript\nconst posts = await client.posts.getAllPosts({\n  status: PostStatus.DRAFT,\n  isFeatured: true,\n});\n```\n\n#### Get Single Post\n\n```typescript\nconst post = await client.posts.getPost(\"my-post-slug\");\n```\n\n#### Get Posts by Author\n\n```typescript\nconst posts = await client.posts.getPostsByAuthor(\"author-uuid\", {\n  size: 50,\n});\n```\n\n#### Create Post\n\n```typescript\nconst newPost = await client.posts.createPost({\n  title: \"My New Post\",\n  content: \"This is the content of my post\",\n  status: PostStatus.PUBLISHED,\n  isFeatured: true,\n});\n```\n\n#### Update Post\n\n```typescript\nconst updatedPost = await client.posts.updatePost({\n  id: \"post-id\",\n  title: \"Updated Title\",\n  content: \"Updated content\",\n});\n```\n\n#### Delete Post\n\n```typescript\nawait client.posts.deletePost(\"post-id\");\n```\n\n### Filtering and Querying\n\n#### Advanced Filtering\n\n```typescript\nconst posts = await client.posts.getPostsWithAdvancedFiltering({\n  status: PostStatus.PUBLISHED,\n  categoryId: \"category-uuid\",\n  isFeatured: true,\n  query: \"search term\",\n  sortBy: \"published_at\",\n  sortOrder: \"desc\",\n  page: 1,\n  size: 20,\n});\n```\n\n#### Get Featured Posts\n\n```typescript\nconst featuredPosts = await client.posts.getFeaturedPosts({\n  size: 5,\n});\n```\n\n#### Get Posts by Category\n\n```typescript\nconst categoryPosts = await client.posts.getPostsByCategory(\"category-uuid\");\n```\n\n#### Get Posts by Status\n\n```typescript\nconst draftPosts = await client.posts.getPostsByStatus(PostStatus.DRAFT);\n```\n\n### Pagination\n\n#### Manual Pagination\n\n```typescript\nlet page = 1;\nconst allPosts = [];\n\ndo {\n  const response = await client.posts.getPublishedPosts({\n    page,\n    size: 20,\n  });\n\n  allPosts.push(...response.items);\n  page++;\n\n  console.log(`Loaded page ${page - 1}/${response.pages}`);\n} while (page <= response.pages);\n```\n\n### Statistics\n\n```typescript\nconst stats = await client.posts.getPostStatistics();\nconsole.log(\n  `Total: ${stats.total}, Published: ${stats.published}, Draft: ${stats.draft}`\n);\n```\n\n## Structured Data (JSON-LD)\n\n`extractStructuredData` parses a post's HTML `content` into ready-to-emit\nschema.org JSON-LD. It is **pure, synchronous, and isomorphic** (Node SSR + edge),\nand **conservative**: it emits a schema only when confident, so you never ship\nmarkup that mismatches the visible page.\n\n```tsx\nimport { extractStructuredData } from \"@blognow/sdk\";\n\nconst post = await client.posts.getPost(slug);\nconst sd = extractStructuredData(post.content, { pageUrl });\n\n// Emit whichever blocks the SDK was confident about:\n{sd.itemList && (\n  <script\n    type=\"application/ld+json\"\n    dangerouslySetInnerHTML={{ __html: JSON.stringify(sd.itemList) }}\n  />\n)}\n{sd.faqPage && (\n  <script\n    type=\"application/ld+json\"\n    dangerouslySetInnerHTML={{ __html: JSON.stringify(sd.faqPage) }}\n  />\n)}\n```\n\n- **`itemList`** (schema.org `ItemList`) — for ranked \"top N\" listicles. Emitted\n  only when numbered section headings and an \"at a glance\" ordered list agree on\n  count (≥3 items). Item `url`s are added as `${pageUrl}#${headingId}` when headings\n  have `id`s and `pageUrl` is provided.\n- **`faqPage`** (schema.org `FAQPage`) — for posts with an FAQ section. Emitted only\n  when ≥2 well-formed Q/A pairs are found; answers are rendered to plain text.\n- A post with neither returns `{}`.\n\n## Error Handling\n\nThe SDK provides specific error classes for different scenarios:\n\n```typescript\nimport {\n  APIKeyError,\n  NotFoundError,\n  ValidationError,\n  RateLimitError,\n  ServerError,\n  NetworkError,\n  TimeoutError,\n} from \"@blognow/sdk\";\n\ntry {\n  const post = await client.posts.getPost(\"non-existent-slug\");\n} catch (error) {\n  if (error instanceof NotFoundError) {\n    console.log(\"Post not found\");\n  } else if (error instanceof APIKeyError) {\n    console.log(\"Invalid API key\");\n  } else if (error instanceof RateLimitError) {\n    console.log(`Rate limited. Retry after: ${error.retryAfter}s`);\n  } else if (error instanceof ValidationError) {\n    console.log(\"Validation failed:\", error.details);\n  } else if (error instanceof ServerError) {\n    console.log(`Server error (${error.status}): ${error.message}`);\n  } else if (error instanceof NetworkError) {\n    console.log(\"Network error:\", error.message);\n  } else if (error instanceof TimeoutError) {\n    console.log(\"Request timed out\");\n  }\n}\n```\n\n## TypeScript Support\n\nThe SDK is written in TypeScript and includes complete type definitions:\n\n```typescript\nimport {\n  BlogNowClient,\n  Post,\n  PostStatus,\n  CreatePostRequest,\n  GetPostsOptions,\n  PaginatedResponse,\n} from \"@blognow/sdk\";\n\n// Type-safe configuration\nconst client = new BlogNowClient({\n  apiKey: \"your-key\",\n});\n\n// Type-safe API calls\nconst posts: PaginatedResponse<Post> = await client.posts.getPublishedPosts({\n  status: PostStatus.PUBLISHED, // Enum with auto-complete\n  sortBy: \"created_at\", // Only valid sort fields allowed\n  sortOrder: \"desc\", // \"asc\" | \"desc\"\n});\n\n// Type-safe post creation\nconst newPost: CreatePostRequest = {\n  title: \"My Post\",\n  content: \"Content here\",\n  status: PostStatus.DRAFT,\n  isFeatured: false,\n};\n\nconst createdPost: Post = await client.posts.createPost(newPost);\n```\n\n## Environment Support\n\n### Node.js\n\n```typescript\n// CommonJS\nconst { BlogNowClient } = require(\"@blognow/sdk\");\n\n// ES Modules\nimport { BlogNowClient } from \"@blognow/sdk\";\n```\n\n### Browser\n\n```html\n<!-- UMD Build -->\n<script src=\"https://unpkg.com/@blognow/sdk@latest/dist/umd/index.js\"></script>\n<script>\n  const client = new BlogNowSDK.BlogNowClient({\n    apiKey: \"your-api-key\",\n  });\n</script>\n```\n\n### Modern Bundlers\n\nThe SDK supports tree-shaking and works with all modern bundlers (Webpack, Rollup, Vite, etc.):\n\n```typescript\n// Only imports what you need\nimport { BlogNowClient, PostStatus } from \"@blognow/sdk\";\n```\n\n## Examples\n\n### Blog Homepage\n\n```typescript\nasync function loadHomepage() {\n  const [featuredPosts, recentPosts] = await Promise.all([\n    client.posts.getFeaturedPosts({ size: 3 }),\n    client.posts.getPublishedPosts({\n      size: 10,\n      sortBy: \"published_at\",\n      sortOrder: \"desc\",\n    }),\n  ]);\n\n  return {\n    featured: featuredPosts.items,\n    recent: recentPosts.items,\n  };\n}\n```\n\n### Search Results\n\n```typescript\nasync function searchBlog(query: string, page = 1) {\n  const results = await client.posts.getPublishedPosts(\n    page,\n    size: 10,\n    query,\n    sortBy: \"published_at\",\n    sortOrder: \"desc\",\n  );\n\n  return {\n    posts: results.items,\n    totalPages: results.pages,\n    currentPage: results.page,\n    totalResults: results.total,\n  };\n}\n```\n\n## Rate Limiting\n\nThe SDK automatically handles rate limiting:\n\n```typescript\nconst client = new BlogNowClient({\n  apiKey: \"your-key\",\n  rateLimitPerSecond: 5, // Max 5 requests per second\n});\n\n// These will be automatically queued and spaced out\nconst promises = Array.from({ length: 20 }, (_, i) =>\n  client.posts.getPost(`post-${i}`)\n);\n\nconst results = await Promise.all(promises);\n```\n\n## Debugging\n\nEnable debug logging to see HTTP requests and responses:\n\n```typescript\nconst client = new BlogNowClient({\n  apiKey: \"your-key\",\n  debug: true,\n});\n\n// Will log all HTTP requests and responses (API keys are redacted)\nconst posts = await client.posts.getPublishedPosts();\n```\n\n## Health Check\n\nCheck API connectivity:\n\n```typescript\ntry {\n  const health = await client.healthCheck();\n  console.log(\"API Status:\", health.status);\n} catch (error) {\n  console.error(\"API is not accessible:\", error.message);\n}\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Run the test suite: `npm test`\n6. Submit a pull request\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Build the package\nnpm run build\n\n# Run linting\nnpm run lint\n\n# Type checking\nnpm run typecheck\n```\n\n## License\n\nMIT License. See [LICENSE](LICENSE) file for details.\n\n## Support\n\n- 📖 [Documentation](https://docs.blognow.tech)\n- 🐛 [Report Issues](https://github.com/synkc0/blognow-js-sdk/issues)\n<!-- - 💬 [Community Discord](https://discord.gg/blognow) -->\n- 📧 [Email Support](mailto:info@synk.consulting)\n\n---\n\nMade with ❤️ by the BlogNow Team\n","readmeFilename":"README.md"}