{"_id":"@actschurch/ccms-sdk","_rev":"54-3a3eae788aaaeff15df92f20027f54b4","name":"@actschurch/ccms-sdk","dist-tags":{"latest":"0.0.65"},"versions":{"0.0.1":{"name":"@actschurch/ccms-sdk","version":"0.0.1","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.1","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"e3bbd7bcbf088b63816c20c1859d773bfdecfafd","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.1.tgz","fileCount":4376,"integrity":"sha512-iWXz6Kgm5sssuWFWzSwvHJc14C0Q6UK6n6u4LhT43RcO2bmKiNPy6+fHxQu7INHgMByOJXfu+zVBqivFk5nvBA==","signatures":[{"sig":"MEUCIQCPrtTvfErFkJbtgbkeI1E4lnsWA2kPEo/JOX3Ag5hVIAIgJWyvsjbaWBFJl6rGa0i/YAjIZzVJEspwAqjmmrvXlCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4433268},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.4.2","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.1_1765837148481_0.48345046516928925","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@actschurch/ccms-sdk","version":"0.0.2","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.2","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"9c4451d6186e8dbeff981f72ae8ab5f814057350","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.2.tgz","fileCount":4376,"integrity":"sha512-NupvQ7eHiUtrivkiFdXMcTDHUn7JwpsF+sIxPJSMtTgXLnL0y/oILwOWgGo3gMKgDwr8XjeYlDoS5f+b5ffccQ==","signatures":[{"sig":"MEUCIQCtoDBjGhn1oqYtTraC4ia3/rJeE95c8BqTDBej92K1dQIgTL/YZAgvwuY2mx+PSXffh51QSdxC9YPMV4ysfmYzP+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4434256},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.4.2","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.2_1765838273419_0.05718197896287647","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@actschurch/ccms-sdk","version":"0.0.3","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.3","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"6e198cffa9bab66883c5237493113e84befa7cd8","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.3.tgz","fileCount":4376,"integrity":"sha512-AX7dSfNsPwqETe7U4/kcLkeFxK9nB4bbDfx+dZsAKU8d4fOA2W9TBHUEUdWgasevtqNCYqTAL+oO2RGNjQaSpQ==","signatures":[{"sig":"MEYCIQDZgFaVMe/A9O1GDAt/I/L6aTUioWdPWzufmsZeX/dFbAIhAIOZuHUvg5mHF6dR15/W9eHYf8QxIRCj1p2KKniKXHji","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4437203},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.4.2","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.3_1766049518669_0.04724205141874149","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@actschurch/ccms-sdk","version":"0.0.4","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.4","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"fd67ac98e3a23544813553d2e50ee497ee1a60fd","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.4.tgz","fileCount":4380,"integrity":"sha512-PkOqWL9z/3ZjbARjzKEn9ZAup8oLA/wFnVi8B8rm64IFsceGiLXxuNFIStuUqLXG3zwzbuDPIyoxVH2aRLEp/A==","signatures":[{"sig":"MEQCIFJ05ep8Q/xqrxv/XzQEdQiDevinhWLabexo8Ep6rIuqAiAri22VuY2j4H8ityGS4k8nXDOJxUpxoH6RBfGEReTfMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4452311},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.4_1766133612901_0.49608799835617745","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@actschurch/ccms-sdk","version":"0.0.5","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.5","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"62f4665743ebb65e43270c21d8823a9600e7176a","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.5.tgz","fileCount":4452,"integrity":"sha512-G3MttAobrbCzjrdNdFHJwasaJuNIALG0lR1L4TMDL8aBA/J9mJZTc0BNV7CXaaXC/NbN5mZghveUlM6g+YRF9w==","signatures":[{"sig":"MEQCHzUTiZWGUvKFmuaXx/z7Nn7vC+R5ZYWIPkSEAtXq7ssCIQCctEXT6Cny5EQGqQ+GdRR9sL2ddS7e5XKifwhHr0ApBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4754730},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.5_1767691183395_0.8422642492638353","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@actschurch/ccms-sdk","version":"0.0.6","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.6","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"a59d01740aa527c6a1e2c006a292d13536aa98e6","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.6.tgz","fileCount":5320,"integrity":"sha512-HUdBOV/Y5+gy0ghbGClXYo+i5AlzNuvQt1b8jkYjubWBcrE+tipxukAE2K0/24Fauj6ovpqw1Ogr/nnVshzpng==","signatures":[{"sig":"MEUCIQDLlxKH8pFnx9bdOJByXgwi+OTl52/EdVpOHPwWj2XUpQIgGjsmx7NRNFAy0dbZZNReaWz8xujnTLCFcbcCgq4RKaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5926760},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.6_1770362072351_0.2140493658243836","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@actschurch/ccms-sdk","version":"0.0.7","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.7","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"1df4f3658fd21e5f884e8e2d96aac55720e22176","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.7.tgz","fileCount":5364,"integrity":"sha512-wTQJ+3siQniB1vnhav8TN8V45KO3qUMeV9+TByZGDKyYJKh+/5Fm9aMY7sEtPt2ftqy5ZF9j0tmb299nOPdUBw==","signatures":[{"sig":"MEUCIFicQMQMXKOGfTAlIbhP2NobEXqbY0bQo09qdYIICb6MAiEAvF4pYW3iLJjYVidueNBna4XoLScS/6LX5NaL6sW/N2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6005162},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.7_1770669937613_0.2355398080812372","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@actschurch/ccms-sdk","version":"0.0.8","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.8","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"b9e89079c41135bb969a4a6f1dcc8bdd3b7c248e","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.8.tgz","fileCount":5376,"integrity":"sha512-9q0RlJlML+MlT6ByWhqWAwSaggJcA9w/CnXjp7e26Dpz3TcVUX0YcJi9L5Ref7m0LMWg2wnyO71lFwEY1K4l3g==","signatures":[{"sig":"MEUCICcwY132ulTG2kEeexXTQBl+LufEdGdIUOp7kTYzWdsJAiEAtzDGVQ9NMpBOZDE1GVNcWlMMbzHqrTFpAzDt2kzGqlQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6024950},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.8_1770731319740_0.7363134013137118","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@actschurch/ccms-sdk","version":"0.0.9","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.9","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"557240f5a50bf1009c0caee58947e017c449f88d","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.9.tgz","fileCount":5676,"integrity":"sha512-fNY0QF61TRlO5wr4qrYq6jOmoo6qS/eryP4ksS+Z/WvQpV7vTL1jAYsE3WTBrnbgxZXcVLBtAqOM7Zo4j+SCoA==","signatures":[{"sig":"MEUCIQDYd85kiAbKZmLJd1jfXP1b+2lTP2BkW0iA4kL0sELElgIgTavqnKJdRO0Qq3yt3EWUF4T/IzCJNNue/gor87khBWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6454739},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.9_1771367388091_0.7076928897401027","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@actschurch/ccms-sdk","version":"0.0.10","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.10","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"8557dcc966323d55eff98c9a5bbb8d81c5e69bde","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.10.tgz","fileCount":5684,"integrity":"sha512-q0qSUXqA1vYs+Vh6pHr1SyAEuubJKDcOJYTmFkovCJe+tVJDjAW8P0YzYE6/sTKH88fcKQVsxZc6EtUMimIFeg==","signatures":[{"sig":"MEUCIQCLWnKgsuXrOgoj8meLnFGuLk2zpidm1fq3zqAmhFkKbAIgM1+WzongEey9Jxgwu1lEt4KQRV9b9T7yG/CU5PGodSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6482956},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.10_1771368332863_0.19204065656459357","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@actschurch/ccms-sdk","version":"0.0.11","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.11","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"bb4b1efd06772aeacc5e37bf7479d462491ab344","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.11.tgz","fileCount":5692,"integrity":"sha512-fyKHrk3oWV7t0spKhyma28HcN4dz9ONC5bPQN/MbBaSBPX0X0NOz3DQ4LaGKo2BJoTm08NBzu2iJaqxuuXtmHg==","signatures":[{"sig":"MEUCIQD8WkDigROfYrdn3P6VXtm4DSglqdwVxEI9MjU6xQ9W1gIgBTP2q0hfsUhaM3a0DMYvtXr0XaXuFsJzEMrPQGykZs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6501494},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.11_1771410429331_0.3617366884206594","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@actschurch/ccms-sdk","version":"0.0.12","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.12","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"c58bead4c265640bda738d2766f928e46f05f182","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.12.tgz","fileCount":5720,"integrity":"sha512-zjiWQz8Wdv5+1oKkn/Qzvk2Q4eCAjsIFV+BA5Dr1sG+TLah7tJBiMvhmh/EWckCgZfaaQmQm34dwt1mwnndYiw==","signatures":[{"sig":"MEQCIAjDhoXwT5rwzMFw4fVIPdDnIEKB7+V3TzME2KIri1/2AiAeX1NQDiBgjPq4ZXi7bIegi1xD7wBqtJTTKlPHTK16eA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6541493},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.12_1771419237104_0.40511886586338","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@actschurch/ccms-sdk","version":"0.0.13","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.13","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"dc465ededa11da827691b05eac7641dd1f23bc62","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.13.tgz","fileCount":5736,"integrity":"sha512-pMGBtpedthaIRvrJ5o3u/tiHYs7gMDwegyrSN59sY2beN8z7NPzuE6uNTFl/J8SmmawGW8ASkDSIdxuKzmcHbw==","signatures":[{"sig":"MEUCIDAHDzUvOJzPFx8lB2bY3Idou/MJW+kLIBxMvU0ybPvJAiEAtl6tyHtjNwEyM+vM7UhxkhIdhKwldNJlSD2SDOMXGP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6568125},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.13_1771750782370_0.9678762331792701","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@actschurch/ccms-sdk","version":"0.0.14","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.14","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"aa0abeafc8fd51152b53c493c1d8543a5e6947ea","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.14.tgz","fileCount":5736,"integrity":"sha512-/Uqz42YtitBcAA3a/wU5+WHvW6R2FIj3dzbVVpGe9myw+nMK0bBv6gcFQAUP+OWP32Rd+dTMNVnBHwpVjJ1Zcg==","signatures":[{"sig":"MEYCIQCJr8s7byfCOs4TYsTZjcRqpNtMOBgbyrf4uFPGVPyGlQIhAPfU0ktVBRPvmguQRAHegVKoIu4Isk5xJdPvre1aWxQo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6568125},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.14_1771754665997_0.5046262600774094","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@actschurch/ccms-sdk","version":"0.0.15","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.15","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"f07b6caeddff17da33b5cfa5d94054519e91d658","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.15.tgz","fileCount":5748,"integrity":"sha512-rIIU4803CJjb95U3sS+4d1B++qvDs5kvYyEkTZbtj1Y82+sT3fsYxpPoLMC1YS8LDnAYr8HQRjHqLGQr2X1Pvg==","signatures":[{"sig":"MEQCIFbp1GI+tupL3NTl5Ad6eySblkc9aRddjYTUCmAMFQufAiBwpkNOUEtxA/TPYJo/JQgibK5lwn15m54uBQ8T8Ysl0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6597997},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.15_1772006070871_0.23137547274514203","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@actschurch/ccms-sdk","version":"0.0.16","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.16","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"13b776eb38fafb0bec94a47b26105f90f797ad49","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.16.tgz","fileCount":5816,"integrity":"sha512-1C9viZtBX5d6bLICyJ4I4l5I53ZacsQqoxxWF/kbc5Vu5bRkqyy32cHuh4NJKCKXrfWpQYVXTnt6cPx8vARlwA==","signatures":[{"sig":"MEQCIC8XB5SN4m/xXS5bTXcenKYpbzOrbNQPU8/h9NdoOQmhAiAx8prGuNZrOzKQtxeLCB4ua63u+ox0SuTCTGEkYZlyvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6663378},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.16_1772613474122_0.21962355635798336","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@actschurch/ccms-sdk","version":"0.0.17","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.17","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"ca4114964f18245c0fc42127e61150422d1252cd","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.17.tgz","fileCount":5816,"integrity":"sha512-/u1q5hieeU3/d5uQmQ2VgFMjdNWD6pJdL2mfZdnMdh9EH3mzVtAXhmExRgAb6FIF472D2h3FYczv1H59+ri1zQ==","signatures":[{"sig":"MEUCIEC06aQoc+Eey32Xo3uENYkwatkOnk30Rmkl5sq/hNDwAiEA9MyXEEMWblQhaoggKxASHDZYuf4fv+/Q7HJxfY+s9lU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6665027},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.17_1772632879923_0.9303942145396042","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@actschurch/ccms-sdk","version":"0.0.18","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.18","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"4fe7d3e24da2636e94bc5ef789ca1970aa6dcd7e","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.18.tgz","fileCount":5856,"integrity":"sha512-jl6xvRvhsGnYtSKlL9UPM1sSwriMyHjGLh/rjZTyomV7hDi84ITK6hp/KooUQqSK4rj4sJLWtTvg7yQ0f2vFVA==","signatures":[{"sig":"MEQCIDQRZhpfqH3IU9dlDdX7qA5+CDIWMM9XPUG9T0YB7EKsAiB1bSQVXbOwdwufvmYW/YzeNJIBSHZFP0EzJ0qMMwVtVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6730468},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.18_1773568033486_0.40226394794605325","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@actschurch/ccms-sdk","version":"0.0.19","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.19","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"294ac90070983c41d3774edcd743df6fda6b6b1e","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.19.tgz","fileCount":5868,"integrity":"sha512-vpKxSKJyZNjVIECQSMibpOPkRGBpSzG7NT5Iij71HQUitHdPyb+ZNj7BQUWhng8AsS0hnfOXwfYI++EUGsV2Qw==","signatures":[{"sig":"MEYCIQDu1WP4+5+0V57y8XD6GzXcUSuZuXsQ7+x/8DMoilcNsQIhAL80Xmv2czSD9CL0+1hjkDWPqvaX0PtUDw+ajcDb/vq6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6749579},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.19_1773833915316_0.19551445136202883","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@actschurch/ccms-sdk","version":"0.0.20","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.20","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"a5e30dbb198d05e0c2b5d220ceccb22224b1303b","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.20.tgz","fileCount":5944,"integrity":"sha512-gC8pX8eNBNB09ixvCM6yQGIA19L57ybqWhq3URPwIb6le9uXTeUYpRQzdiwciqydq0t4TKfdnol7kjo4qy8+7w==","signatures":[{"sig":"MEYCIQDvsrjQDv/Jxwh3czJmDnsj8Xo4gMGX7a7Tu2Cw4R7bkgIhAPWLQQCx7Q2Rj7zsqCzoobB1AJObSv2FLA+Okr1nT+YR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6868444},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0"},"peerDependencies":{"react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.20_1774601548710_0.24477356186207389","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@actschurch/ccms-sdk","version":"0.0.22","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.22","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"67e6597290d92fbf0eca8e8f6ad55f1cce577d58","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.22.tgz","fileCount":6884,"integrity":"sha512-Iq1b8CekcS4MkV4ELiSrr3AZpDRm5lP/foei9VJU3O1qEF3K43XRF7w7OhlKvPi8/J+YVcW/Rj7U/NfNzCgHeA==","signatures":[{"sig":"MEUCIQDP9M6TTeCojXuYlEPZrau4QcYr/JtdIzbGvHjsWINX/gIgZ53lSm/p622hCV5kiGYeIz623N+7E+iEQVOCLL4kMF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7954629},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"963177bba07f42cd84d7df750a38d46c904097e6","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.22_1780611659400_0.270141153171775","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@actschurch/ccms-sdk","version":"0.0.23","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.23","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"5da5270dd59d2ce3c9fa462493902f6c0aabdc22","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.23.tgz","fileCount":7492,"integrity":"sha512-SjoJPPoSSZW+R/fGg0Fe6uIbZp35j6JW3Wk7WhaIG2JjXOm7nlg8q6XrXbZZrSlZC5FzoPKPgbUcql5C6bj2NQ==","signatures":[{"sig":"MEQCIBK6N26/1WIWVRukbCjz2pOd4RbfQxNuqD7AFWH29SaDAiBjhXxHsRO7hrJng9ZmuX8D6Pwmqwac7wwPhCcVATFzwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8663461},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"4d8f7a13a24c0d3b983d8279b1fcc478855b1590","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.23_1781530422257_0.9825606925201928","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@actschurch/ccms-sdk","version":"0.0.24","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.24","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"6e6b39fe818c336819e41d85dc1ff91b2db4bcf5","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.24.tgz","fileCount":7528,"integrity":"sha512-Kln6wDB0J5+pKoS5EggYpqz4s0QLXmqcItAxeTl3fJytVpZRWrKn7f7dpWqv0DCUHaJiFDHRGQavwO5JehfPsA==","signatures":[{"sig":"MEYCIQDwvIExFUdfvA57cOtolSYPEy/Q8n/JCw/y7kDd1b0YwwIhANXVbFqvHcAqqDUNi8lbP57/v8GKakW0JjLbqoUA5zZq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8758009},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"8221c4d8c7c64ad6fa0c9d7d01e7c497da672a1c","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.24_1781693691865_0.5551819667265354","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@actschurch/ccms-sdk","version":"0.0.25","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.25","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"4d35cdb8ef896dac60b378ad78e38fcdabf6dcda","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.25.tgz","fileCount":7792,"integrity":"sha512-IYJeJ8WTBCF+aRCyq2zQT+koVAztyWe4+qvX6EOVRmpgyrIVH9SqwpcLWNry3+WrFRPjZeHCtAGujxlvQTrp7g==","signatures":[{"sig":"MEYCIQDQyQW4mbnh8HB/7qnPxJ5vfZ9BZxTXMJaLGWXTikKVUQIhAIkj8xrRCkQVqaf5YMS7UrgmFPCZFAH//9ovvgQ/Q9IM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8954958},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"14b7bc366005c4b5c16d55eff20f88f83334ddea","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.25_1782301810759_0.4051220310047885","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@actschurch/ccms-sdk","version":"0.0.26","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.26","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"919bf60f7c25a71e1a347213b94ff7799d2ef6d0","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.26.tgz","fileCount":7808,"integrity":"sha512-lPx/Ma/frJsS503noBC6ztotqAG7LWfGpyzygo2a2YK+RbRUZ1kAH3e7QW7TjUg33yYM6xXkiPjHrf5ztrKmdw==","signatures":[{"sig":"MEUCIQCnV20HX1DALBUsrIH2+wxCb2LiGepeCYNxYZ/fC3epPAIgdb8ceKV1REiKJ0DhaE3nFEpwTkDPl66b0r4OVQbzDXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9007552},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"0e7fef666247252f7d6c3a06e5f25954c7a7cccc","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.26_1782394378479_0.5586128364209608","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@actschurch/ccms-sdk","version":"0.0.27","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.27","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"6c21ab98b85b3dd4a654ef7dbd47547dc0122753","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.27.tgz","fileCount":7844,"integrity":"sha512-uNisTj8BrNel+in7JDAe/O9oas1p1o4rOmgaP/MT6+qCSdufRPuv/+vpO7nb3Toezl7LJFpwhkA0U0B1P47htQ==","signatures":[{"sig":"MEYCIQD1nkQvzFr2iP8rgjCUKFNGQh5lJwJcamRhdMXzFuFdNgIhAO6jWqaDb8tOJHRsfVQZsMis9C5/MGQAczYfV6ekBMhe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9109032},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"300e6095d8dac511a6298377115995f63c1c0230","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.27_1782485199980_0.05404847548201119","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@actschurch/ccms-sdk","version":"0.0.28","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.28","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"d6aba29a855470e91c2614e09a7357a2b54e6683","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.28.tgz","fileCount":7844,"integrity":"sha512-IbCFE6r+7BK52V5SoFHJmsx6qXUAnO8EYjVtecSyCo4SsnyRWvtp3pNhnN9dhTZsRfie7qcknoM5ZzCN9F+OAg==","signatures":[{"sig":"MEUCIQDadhotyXJvqfct719Xf3vkLrsi040qxWzIMwRQ7tVmiQIgC3vZOcXdT2vp+hmW1ayPl+18erLS9mO4290YC7kQGU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9120146},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"a420fbdb81b3ac4ce83a61438d2c5b8c268857e1","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.28_1782505310389_0.3421772914902448","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@actschurch/ccms-sdk","version":"0.0.29","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.29","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"e0d2884fa22e8bdf59781766861d5433bd933175","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.29.tgz","fileCount":7852,"integrity":"sha512-niBMO/3gfEKF7agP+hERgFkZX05/ttheJ6nyzQStB4r4ESwGZtgcWEjy0ONUdedfE/L0TKOmrylIQoJDPW+KFw==","signatures":[{"sig":"MEYCIQDn2ap9KF2aGBHgjHLIaN81fadRiV0peipWCgvObzvlSQIhAKeCN1Nzwu4f1je4q0pVAVPMdVJjNbVfLkKBv+dsg6kI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9147526},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"9a2702644e00250b223889d7208c389c6788e206","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.29_1782915922426_0.7489598396347943","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"@actschurch/ccms-sdk","version":"0.0.30","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.30","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"14284fb369716e4846cda4a8cf66311d0ccafdaf","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.30.tgz","fileCount":7864,"integrity":"sha512-i2AAxdaApPYt+wCUHoz9VrEszkr2pc4zoS5FSQMboX35PxkSt7uyJoDjSosHD7g2UwLAdN+5y4TO9fLQRVBAVw==","signatures":[{"sig":"MEYCIQDib1SZ+stIBaTufHvniZ/sm38JmZH+CLAFDpX+HTxi2QIhAJfAoCABhFhKO3862+XkPE958cVGID+IOhwi2Jahff/Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9169073},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"933509010b0e3ba77fc5a0dfe24e8e3bc0184a77","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.30_1782979586137_0.2810806289286685","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"@actschurch/ccms-sdk","version":"0.0.31","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.31","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"fa815e23c98753c9569d9dd15c44c6151e8f962f","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.31.tgz","fileCount":7876,"integrity":"sha512-oCyIU95IZQ9d+Z4znx9Q0JL4DQuUDf3V74m4KGMXB2cHoqIPkQlh877nsnlTOjmbGBPsVTSIfuCbIt3dO9ZoLQ==","signatures":[{"sig":"MEQCICnpv7kP9Ny1q3aykliR4IM7txvv12SD6lHBU9TFGWCBAiAh5dEdSpiQWcGGTIVSHYAH2Noelrsu4fSeNmaCc6LMzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9215177},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"9d5c73fdcdcc4630aa7ee24385d750efd92fb7d0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.31_1783078885761_0.9703285924173155","host":"s3://npm-registry-packages-npm-production"}},"0.0.32":{"name":"@actschurch/ccms-sdk","version":"0.0.32","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.32","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"f44767b9e723ee122ba131437a0f9207c9ffcca2","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.32.tgz","fileCount":8128,"integrity":"sha512-eN/IVqPlIVym7YbtwLwmKjIZDTPme5PzY1ukmVVM9W5IYELuGN7TOZNiIAY0aM+5Uqzn8JHzAP1luJVU1AhJwQ==","signatures":[{"sig":"MEYCIQCZTYGF6m2nPgZUm9dSF9cTAD2sLoo9ZF/s8Ekp2aIn7gIhAKkhY33WjuifkrBIDi+8rJZ1NWRTfWJq7CTJvvw/Ccap","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9409131},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"a6ad9e97d9408872f11c4ba5cb85d9878a6aae69","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.32_1783601829275_0.3996541901770081","host":"s3://npm-registry-packages-npm-production"}},"0.0.33":{"name":"@actschurch/ccms-sdk","version":"0.0.33","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.33","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"b92456c612e39a670f4bdddc5e9134fac7b032f7","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.33.tgz","fileCount":8296,"integrity":"sha512-xnHuS1eD6XqsbpP3zTT3ETQeTtlZJEN2vD4jbX59w0H9OvD771ypRfOKj+4h4++ElHvb3Oa7tnlx0uFb1/iDbg==","signatures":[{"sig":"MEUCIQD05CPxRdtlhJ9oRrkR15JfcVzC/Tvlkougp5weyAAj9gIgQr5J27PkAyvOw4vpbIye8JYH4j/W1zP689z/rsCDzAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9656919},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"2f5c1d9711a9c18b5b28521dd745e8644187a1ad","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.33_1784709217317_0.09202883031409792","host":"s3://npm-registry-packages-npm-production"}},"0.0.34":{"name":"@actschurch/ccms-sdk","version":"0.0.34","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.34","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"187e7551a378b7d63d96cd7f1486964b7617d6b3","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.34.tgz","fileCount":8296,"integrity":"sha512-07SIXJ5HIMnzOKOE4R9IGJHFAgRKkboNlh2tx5kdvF2wtZv7wMUMIugx3xx+Ysw3lbNxpWy3Us9F6orGAueJvw==","signatures":[{"sig":"MEYCIQCdRnhG0gLUmFYVVPLs2WnZ8r3uA8A1flkHPsnHq9IFzQIhAM2tKL73Cpt5RM5oiR8XOjS6OkeS/b47Fq2lD/zn0XeB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9671565},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"86d80ec2649f3f2a9b59d0eb6e1f0e0f1d6f3502","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.34_1784810788324_0.41867854022603157","host":"s3://npm-registry-packages-npm-production"}},"0.0.35":{"name":"@actschurch/ccms-sdk","version":"0.0.35","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.35","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"3bc25bc0c854cc5f08a9e8c4ead585df98cdf2a2","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.35.tgz","fileCount":8296,"integrity":"sha512-SLDmxH09HxhBAJDNN2qOLgN+72CZKxS+QaGnAMdmCsXgbLrroRPAqN34mCcQXcX3yfGjnB/XCh97iVe54UhXpg==","signatures":[{"sig":"MEYCIQCiz9SkdoM154UoXJEQyMOYhzpnRrsLlsH4BQyyJsn8+wIhAL3h3s6YZ8lLnIAv1C7joakhWG4bDw1uGKvNEXfY1GG8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9696707},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"6edd214bd4eac39bed9fd952b49dce6648899ece","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.35_1784901700320_0.7033454709119968","host":"s3://npm-registry-packages-npm-production"}},"0.0.36":{"name":"@actschurch/ccms-sdk","version":"0.0.36","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.36","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"9e6f1ae82a625bf73a68144f5cacbb80e645103e","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.36.tgz","fileCount":8296,"integrity":"sha512-PAhdi9butB6QnRwyyeWBWRYZ28cVH+JAm0zxzlSiIe43IasYeFEPV6OLgonVks9HPVCJrgMiy7RMJEOW7Q9Jrw==","signatures":[{"sig":"MEUCIQDgVKdzOLIB9OkReTApKwglAm3Jgy9zgmaWr2eEjgdASgIgI2ZSZZUR3tfzJRGT24nvRifYO9Lm36N8/0zGu+MG/bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9700521},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"5061ed0d3901f0b3e2013a0d128b490893c4a390","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.36_1785488667680_0.6238517202629106","host":"s3://npm-registry-packages-npm-production"}},"0.0.37":{"name":"@actschurch/ccms-sdk","version":"0.0.37","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.37","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"53aaa30d11ebbdb7e2e5069ff52362a2c0f8ba3b","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.37.tgz","fileCount":8296,"integrity":"sha512-6tJp/9G2RvEba9o+KdtMYf3kI77Bl94wlYncLm9NFAnOxIsQkOxP5oORTdLIBznzRNW2ufbVvDkfs+OHZd4CtA==","signatures":[{"sig":"MEQCIAp/KbG+cqPCPQO7Y4APri27Wl8YjhrHcOlfw+EAhQ80AiBe9udUr+rj4d8eLF0GOJyTZ6qh+2FskwQtfV8/WYEGTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9703837},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"a6aa293e90183715b91887b1262d7bb9ac3b8cb9","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.37_1785968200005_0.6621726185978023","host":"s3://npm-registry-packages-npm-production"}},"0.0.38":{"name":"@actschurch/ccms-sdk","version":"0.0.38","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.38","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"e162f317bbd05b57c6e81a3aa76bc81b22987a5e","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.38.tgz","fileCount":8308,"integrity":"sha512-bx5O4dhh/pM6POsuKhxKKJ5wIxYrYbJiWWn0/Naw36E7v3hMxEmc+kqzIPUuEHBL3i1DyeBK7mjf13BvhXXEsw==","signatures":[{"sig":"MEQCIEUbAE8ja+jTJ27tY9CyrTVj62LYYuEWqNoArkc+xa4FAiBQgn/E/XK9h+NrznkGn7L1kMZfQuVvnSfbeeFoTJKBbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9732134},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"0bc42e18f775947fac950569d30e2256420fa03c","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.38_1786099456235_0.07614307573887302","host":"s3://npm-registry-packages-npm-production"}},"0.0.39":{"name":"@actschurch/ccms-sdk","version":"0.0.39","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.39","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"a1d24bb38bca3d16fcf9f50d7c9688cc8e444b44","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.39.tgz","fileCount":8308,"integrity":"sha512-XmHXBG0oAwIqRFFq0noqdt3UYolApJjJ007WdPRWP9Bn13bC61zYfH/YD5Uczwge3GvAxNdwXQI3+WtPvH7RWw==","signatures":[{"sig":"MEUCIQDp85vCLg81ij1FMb8lrOky0RBVQNC0pYIY0I8xENQebwIgMFiKXTmkCP9oKZ0YnYTy7QOp1TxoEQOBNqZxhqKl5OE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9738822},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"924ce90ef0cbf43f28d1abd0ab4a6ab711c87c3d","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.39_1786105107029_0.572872241472177","host":"s3://npm-registry-packages-npm-production"}},"0.0.41":{"name":"@actschurch/ccms-sdk","version":"0.0.41","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.41","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"79cb61f7d38d5ab8940333295b667edd0726a878","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.41.tgz","fileCount":8316,"integrity":"sha512-f05p3ELKTrpi23DE1C1Gj2kNpTCP6QXkodWuSnKYVc0M/502D+MzQGtQZz1Odg6dafbRp9ZncJObjVcty9YmQw==","signatures":[{"sig":"MEUCIDBCBgu7YuujuPrrQuWbnbZI2bYSUM69qdwpPQFTOieUAiEA4OrGZuo/FBJ90511XYe4M6N6pzxpXo00PlkhsjkLoBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9771857},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"a3d8610c653170eca41dfb7220111aac1ef25adb","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.41_1786329776724_0.854166027021356","host":"s3://npm-registry-packages-npm-production"}},"0.0.42":{"name":"@actschurch/ccms-sdk","version":"0.0.42","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.42","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"984f303f6471915acc3839f85133a786985b6e73","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.42.tgz","fileCount":8320,"integrity":"sha512-/bx3mMD/Jq55hVmyt2uoxuS01iYZ7Zxb90/6Xwa2z3sVW33r9nuS8tJPjfVRYKxNAyGrDd8w4PJRokslRkvA+g==","signatures":[{"sig":"MEYCIQDbNklqeyHVH9STTN/PnQxBtNTomQ1NXyKy0V0MO8joTQIhALlZmL0S1Tf9H83GJm+N4b2xWkhvDPprrnUwo3ScPrql","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9777699},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"a3d8610c653170eca41dfb7220111aac1ef25adb","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.42_1786333790033_0.8330338388475427","host":"s3://npm-registry-packages-npm-production"}},"0.0.43":{"name":"@actschurch/ccms-sdk","version":"0.0.43","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.43","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"c84f3d67be4a47682e8bc96c886b57af61a42aac","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.43.tgz","fileCount":8324,"integrity":"sha512-SncW46iP4q/gsJzs82s4Wm0SOWcsqpPuSBNJwlKrRn/lkrCwfOozw9yecigWT260R5ewMqDAlwsAG+9LtGieTQ==","signatures":[{"sig":"MEUCIQD3uFbeCfpPXQjGcUhM89l+p7PbJLxJ7CPwKXg0RQ+jogIgResMx11LMuV7OtYZI2DaoQO6zuiT/RUX7xewb+e354s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9784731},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"6ea8cdd29ca96ca3f10306dda2d3c0379a339534","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.43_1786341352599_0.5240687286762806","host":"s3://npm-registry-packages-npm-production"}},"0.0.44":{"name":"@actschurch/ccms-sdk","version":"0.0.44","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.44","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"5333f0df52d28bdc8ad7dc16980c3d51952a5b48","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.44.tgz","fileCount":8328,"integrity":"sha512-KXZHwr3CUQgpBhMbvd1KCw5ppusjGlNOnfpxYodWomhNk8pdc6P7EUbDCZ950bgiDwgTkXFAbBGkTuw5h6t/DA==","signatures":[{"sig":"MEUCIGsYfgzS93sn26rvGiGcgQ4EBrUbZFg/dvbwQWA0YiNFAiEAvTJvxmKtEElUYx+gSmCNTRcRsjI3lkWAtVxOMFw1Yy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9794136},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.44_1786480003245_0.273845315144269","host":"s3://npm-registry-packages-npm-production"}},"0.0.45":{"name":"@actschurch/ccms-sdk","version":"0.0.45","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.45","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"1a9a07adedc4ecaf7d19ea82e3377e87db3558e0","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.45.tgz","fileCount":8368,"integrity":"sha512-y1OngggsWMk/UHMYldlAtOu4Wx7qATE96GrIOIIR/OFxpM7WncyeBmmDuCJ3qgzCTYvJ40CaQRJSbvO2BBoW4g==","signatures":[{"sig":"MEQCIDwYJmqtkFXcQgiYvkqrnH0w0QVQh2YUdinMfhQGifzYAiAmWwq7mN4UN+WmIWGjCKcQjdORZMe0JRMD5R29uW5FAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9848723},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.45_1786572986231_0.4080224594140869","host":"s3://npm-registry-packages-npm-production"}},"0.0.46":{"name":"@actschurch/ccms-sdk","version":"0.0.46","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.46","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"7e920739d3d28447d4860c12256fc9b81ce66e57","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.46.tgz","fileCount":8368,"integrity":"sha512-os0m4aYH8GASbMp69MMUTEuvo1q2A+4eKnPkCTWBhETNVKwBsI77D5RkMFwIZ60rXJOsrPz+2g/n+F+mdi3+LQ==","signatures":[{"sig":"MEYCIQD8IP7mXFVGA99Zy5PB7bZq3CYF4FOK/RGN2W4MFD6thgIhAMor8IVQX950yUunrFpK6MaYUu4qMcibZskTS5q1Klqq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9848969},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.46_1786604730459_0.6960434712464909","host":"s3://npm-registry-packages-npm-production"}},"0.0.47":{"name":"@actschurch/ccms-sdk","version":"0.0.47","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.47","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"d1f559a08ebfbca1b787ef5e0de62a41480d5639","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.47.tgz","fileCount":8368,"integrity":"sha512-C6Fa5P7YJm1kSeDEXHGSdnZol0GLoLb1DqgCzl29bgz74tDZrPFRFajGg8izl82zacmeqdqNken3jMfUbkRPvQ==","signatures":[{"sig":"MEQCIEfPa4a8L+Cwk7Ueprnl2mBKqeWdeEz59mfT10BlXcgaAiBCdNgbjgjXlA9Pxa6JqoHWKss5cc6Uq0xCATr4fnTDBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9859548},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.47_1786650017715_0.8558037602092403","host":"s3://npm-registry-packages-npm-production"}},"0.0.48":{"name":"@actschurch/ccms-sdk","version":"0.0.48","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.48","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"4da81436cecda32240ff5f8deb020c98fa82a465","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.48.tgz","fileCount":8372,"integrity":"sha512-Fvbh8UHJeNlaVT9TmUFvG188iMcMhJY+PxnsbfmHGjFEMNRmsuso+HeeH/+3w2hgKfVqt/V9UVAiAIq06x5P9g==","signatures":[{"sig":"MEQCIEx2nr3YcYrWNGV6aFv6tgshXrugQ76lnsKk2dCmzBK+AiBT6VFn7pa9CneX6Y8nJ7HxgqZTrpCk5MuWZmC98cWqAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9868271},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.48_1787077880603_0.5462846037331117","host":"s3://npm-registry-packages-npm-production"}},"0.0.49":{"name":"@actschurch/ccms-sdk","version":"0.0.49","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.49","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"f7ad1a16e980e2ae63ebdf4212a4acdc59a81909","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.49.tgz","fileCount":8372,"integrity":"sha512-vCEsvSWgjvUAAsXzl7+yoCVewudts5+Yei5cajB5tC3/ujDwJRVeY/zuS1YruHfFsDPggdqc8uLz/rEEby5ZYA==","signatures":[{"sig":"MEUCIQD/JuU2D+yUkmlzOYJezls9XfNtBjGQ0QH/1po2rvWv/AIgGD3fWFwb/XuHV3ogtOlBcnoT5RZLfPgn7cFTV17f+E8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9868945},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.49_1787088629884_0.8830571411892427","host":"s3://npm-registry-packages-npm-production"}},"0.0.50":{"name":"@actschurch/ccms-sdk","version":"0.0.50","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.50","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"a4096e88d2f198cdd45a106d450af426ff8add75","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.50.tgz","fileCount":8372,"integrity":"sha512-/aAJLNFBk8CwRa7gyOmk+n6t7/DgrFYNbmAPZnrpRA8kvZjCftD5gwL8Q3hjBkz0vyxE0OfYB7gDfDOK99Smfg==","signatures":[{"sig":"MEQCIE9+gfbh1HB1TfRU5KUFLoPB+TbBnxpWuDdWvzX30Xg6AiBE79Sy8LbdNpvFWUt+oWpn0+UW59Gf4OuGdhAET1sSmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9870228},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"e98db54fb62b69206361658ed769432cf69053e0","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.50_1787092093752_0.9283680741494575","host":"s3://npm-registry-packages-npm-production"}},"0.0.52":{"name":"@actschurch/ccms-sdk","version":"0.0.52","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.52","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"f15468e61d1d61b31b8de2a73ab296b94d721fd3","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.52.tgz","fileCount":8376,"integrity":"sha512-pbzmZXAI6KbwKoOAA9Lhik62zK68W9UjfadhsT6GmUg+kSq69Qg1OvSg/aydsjuNV405+nufZp70cKjv3lDtpQ==","signatures":[{"sig":"MEYCIQCe8QqsG6wUT97p5ET8+Rhke3lXqJtBcjRSABiGxKY90wIhAIZK7r8K8mb5S/mosOGF6lDFDsKZJkUBObrhaRXBSA0r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9882450},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"db03017814fe7d5e5ff3f7e25d869f42209fbd7d","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.52_1787142857667_0.7805258174301553","host":"s3://npm-registry-packages-npm-production"}},"0.0.54":{"name":"@actschurch/ccms-sdk","version":"0.0.54","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.54","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"934ac546f3a1f7a4c9475698fe89e2108d80ca7d","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.54.tgz","fileCount":8376,"integrity":"sha512-eBRcKunvX65bpyRUOWJaQtvngTDkH12acUfrbW3WSBJnxBPa2s4q9cplJ+IUij3CEIJ9Z0HSl179EWypQ3m3AQ==","signatures":[{"sig":"MEUCIBTtVWPruhjc1U+Gn6WwvbZjBRMxx0lACN2HLLA/SxMyAiEA3rX3RaHakGz6g+f6o4LFQVwew8zEwdlg7iW07D8/07E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9883759},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"db03017814fe7d5e5ff3f7e25d869f42209fbd7d","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.54_1787144594107_0.34415861889450716","host":"s3://npm-registry-packages-npm-production"}},"0.0.56":{"name":"@actschurch/ccms-sdk","version":"0.0.56","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.56","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"65d714fd2bbaa82fd7c582018054c181de272220","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.56.tgz","fileCount":8376,"integrity":"sha512-WIs8DJTWwrZqmz4lrSWOxDDE2ew9u/Ws8GOLWPvCrvWqBHsiHL+hFVwaVXbZfAj+PG3xrk5QIZn6BqiokENFvQ==","signatures":[{"sig":"MEUCIFqebJNSumpne4BvZYTo0znWiMzf02afzjqiSzFvq0jLAiEA9/nNt8jfoEUMdlEk/Lz0td+t+2ZFBv1BCwWVGqCP5G4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9887430},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"f4bdecc6ecab70c67273972bb13f7c446871a642","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.56_1787148096970_0.3626693424369245","host":"s3://npm-registry-packages-npm-production"}},"0.0.59":{"name":"@actschurch/ccms-sdk","version":"0.0.59","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.59","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"e27650c34d22087af0dba54c33f1999344892740","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.59.tgz","fileCount":8376,"integrity":"sha512-sqH4YJuqrDZro6bIzbbatB0dVeEAxbD4ipM8XxVm3AcTM4/+4p3cgt+RJyVDZOsmv++pOpYh5UMzosK98N6AHA==","signatures":[{"sig":"MEUCIQDzPMnfFz3FLLlFZPTyehEiEBrJiBivbhRPkVnyks/fJgIgZ7DpgVGEPy/5UdRG9XvOvozPgekztmJFjeTZ59zEXZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9893784},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"f4bdecc6ecab70c67273972bb13f7c446871a642","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.59_1787225931356_0.19204949961170947","host":"s3://npm-registry-packages-npm-production"}},"0.0.61":{"name":"@actschurch/ccms-sdk","version":"0.0.61","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"license":"MIT","_id":"@actschurch/ccms-sdk@0.0.61","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"dist":{"shasum":"665fd0a3ba716e68b98fe8aa4a211279cbc57716","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.61.tgz","fileCount":8376,"integrity":"sha512-0IkHml66ALzXSYvSNkbXY3BqOARhP8rGJyxEqDpKoPbll2hs0I6x5rHzXS7txMnzZtUHMfCC4byKZRfx88hTYg==","signatures":[{"sig":"MEYCIQD7rlhy9L0h1TTWXLtYAIe/KHnwc4YAuX0epzSziijg3QIhAPmBLvF3shxF9Hu8N5RHlkCayWUEyY7aBOjAVNx3lUKn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9897181},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.js"}},"gitHead":"f4bdecc6ecab70c67273972bb13f7c446871a642","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","type-check":"tsc --noEmit","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run clean && npm run build","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"_npmVersion":"11.7.0","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","directories":{},"sideEffects":false,"_nodeVersion":"23.11.0","dependencies":{"@microsoft/signalr":"^8.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1"},"peerDependencies":{"react":"^18.0.0","@tanstack/react-query":"^5.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ccms-sdk_0.0.61_1787229082086_0.9073416909122156","host":"s3://npm-registry-packages-npm-production"}},"0.0.65":{"name":"@actschurch/ccms-sdk","version":"0.0.65","description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","license":"MIT","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"exports":{".":{"import":"./dist/index.js","require":"./dist/index.js","types":"./dist/index.d.ts"},"./react":{"import":"./dist/react/index.js","require":"./dist/react/index.js","types":"./dist/react/index.d.ts"}},"scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build","type-check":"tsc --noEmit","generate-service":"ts-node --project src/services/generators/tsconfig.json src/services/generators/cli.ts"},"keywords":["ccms","sdk","church","websockets","signalr","typescript"],"peerDependencies":{"@tanstack/react-query":"^5.0.0","react":"^18.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@tanstack/react-query":{"optional":true}},"dependencies":{"@microsoft/signalr":"^8.0.0"},"devDependencies":{"@jest/globals":"^29.7.0","@tanstack/react-query":"^5.96.1","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/react":"^18.0.0","ts-node":"^10.9.2","typescript":"^5.3.0"},"gitHead":"27f7aa71af6070a146f2708a85a522373fbe7d7b","_id":"@actschurch/ccms-sdk@0.0.65","_nodeVersion":"23.11.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-VgVPN42ixk+fHZaf8mzreK+gAkP07irqBoSzij+xXiaLLWPq1xd2w82yLTuEKFmbtfnTKq+4VYpKTYHSHFxecA==","shasum":"488ed7f00f2680958d0d7ff1ada33249f34082cd","tarball":"https://registry.npmjs.org/@actschurch/ccms-sdk/-/ccms-sdk-0.0.65.tgz","fileCount":8384,"unpackedSize":9948038,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDPenAaWo+wLNp5kWYoaob+xwyJWStA6QSuN6Qf51L2iQIgXfLmDzSGPljuBRcuLdh3aHncjJ1NAKpdCgp/OyRhR94="}]},"_npmUser":{"name":"actschurch","email":"developer@actschurch.co.za"},"directories":{},"maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ccms-sdk_0.0.65_1787698157734_0.4719541480896219"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-15T22:19:08.378Z","modified":"2026-08-25T22:49:18.135Z","0.0.1":"2025-12-15T22:19:08.789Z","0.0.2":"2025-12-15T22:37:53.619Z","0.0.3":"2025-12-18T09:18:38.885Z","0.0.4":"2025-12-19T08:40:13.160Z","0.0.5":"2026-01-06T09:19:43.753Z","0.0.6":"2026-02-06T07:14:32.643Z","0.0.7":"2026-02-09T20:45:37.939Z","0.0.8":"2026-02-10T13:48:40.095Z","0.0.9":"2026-02-17T22:29:48.369Z","0.0.10":"2026-02-17T22:45:33.200Z","0.0.11":"2026-02-18T10:27:09.661Z","0.0.12":"2026-02-18T12:53:57.374Z","0.0.13":"2026-02-22T08:59:42.615Z","0.0.14":"2026-02-22T10:04:26.253Z","0.0.15":"2026-02-25T07:54:31.186Z","0.0.16":"2026-03-04T08:37:54.602Z","0.0.17":"2026-03-04T14:01:20.175Z","0.0.18":"2026-03-15T09:47:13.727Z","0.0.19":"2026-03-18T11:38:35.531Z","0.0.20":"2026-03-27T08:52:29.056Z","0.0.22":"2026-06-04T22:20:59.654Z","0.0.23":"2026-06-15T13:33:42.518Z","0.0.24":"2026-06-17T10:54:52.159Z","0.0.25":"2026-06-24T11:50:11.003Z","0.0.26":"2026-06-25T13:32:58.722Z","0.0.27":"2026-06-26T14:46:40.192Z","0.0.28":"2026-06-26T20:21:50.608Z","0.0.29":"2026-07-01T14:25:22.633Z","0.0.30":"2026-07-02T08:06:26.362Z","0.0.31":"2026-07-03T11:41:26.004Z","0.0.32":"2026-07-09T12:57:09.480Z","0.0.33":"2026-07-22T08:33:37.506Z","0.0.34":"2026-07-23T12:46:28.596Z","0.0.35":"2026-07-24T14:01:40.525Z","0.0.36":"2026-07-31T09:04:27.952Z","0.0.37":"2026-08-05T22:16:40.309Z","0.0.38":"2026-08-07T10:44:16.438Z","0.0.39":"2026-08-07T12:18:27.289Z","0.0.41":"2026-08-10T02:42:56.926Z","0.0.42":"2026-08-10T03:49:50.267Z","0.0.43":"2026-08-10T05:55:52.768Z","0.0.44":"2026-08-11T20:26:43.489Z","0.0.45":"2026-08-12T22:16:26.458Z","0.0.46":"2026-08-13T07:05:30.784Z","0.0.47":"2026-08-13T19:40:18.162Z","0.0.48":"2026-08-18T18:31:20.996Z","0.0.49":"2026-08-18T21:30:30.167Z","0.0.50":"2026-08-18T22:28:13.966Z","0.0.52":"2026-08-19T12:34:17.910Z","0.0.54":"2026-08-19T13:03:14.371Z","0.0.56":"2026-08-19T14:01:37.397Z","0.0.59":"2026-08-20T11:38:51.582Z","0.0.61":"2026-08-20T12:31:22.292Z","0.0.65":"2026-08-25T22:49:17.965Z"},"license":"MIT","keywords":["ccms","sdk","church","websockets","signalr","typescript"],"description":"CCMS TypeScript SDK for Web APIs and WebSockets (Express, Web, React Native)","maintainers":[{"name":"actschurch","email":"developer@actschurch.co.za"}],"readme":"# CCMS SDK\n\nOfficial TypeScript/JavaScript SDK for the CCMS (Church/Community Management System) Platform. This SDK provides a comprehensive set of tools for building web and mobile applications that integrate with the CCMS backend.\n\n## Features\n\n- **Cross-Platform**: Works seamlessly on Web (React, Vue, vanilla JS) and React Native\n- **TypeScript First**: Full type definitions for all APIs and models\n- **Authentication**: Complete auth flow with automatic token refresh\n- **Real-time Communication**: SignalR-based presence tracking and log streaming with automatic reconnection\n- **Permission Management**: Role-based access control with feature definitions\n- **React Integration**: 50+ hooks and components for React applications\n- **Comprehensive Services**: 15+ domain-specific service modules with 100+ API endpoints\n- **Utility Library**: Extensive utilities for strings, dates, arrays, validation, and more\n- **Developer Experience**: Auto-complete, type safety, and comprehensive documentation\n\n## What's New\n\n### Latest Updates\n\n- **🚀 Enhanced Service Architecture**: Comprehensive service modules covering **18 domains** with **168+ services** including Task Management (12 services), Communication (6 services), Procurement (18 services), Payments (14 services), Projects (17 services), HR (19 services), Meetings (14 services), and more. See [Services](#services) for details.\n- **📡 New Realtime Module**: Completely redesigned real-time communication with SignalR-based hubs for **presence tracking** (with activity detection) and **log streaming** (application, API, query, and dashboard logs). See [Real-time](#real-time) for migration guide.\n- **⚛️ Expanded React Hooks**: **18 service-specific hooks** (`useTaskServices`, `useCommunicationServices`, `useMeetingsServices`, etc.) and **8 dedicated realtime hooks** for presence tracking and log streaming.\n- **🎨 Activity Detection**: Automatic user status updates based on activity for both web (mouse, keyboard, visibility) and React Native (AppState) platforms.\n- **📚 Comprehensive Documentation**: Detailed module-level documentation for [Services](src/services/README.md) and [Realtime](src/realtime/README.md).\n\n## Table of Contents\n\n- [What's New](#whats-new)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Core Concepts](#core-concepts)\n  - [HTTP Client](#http-client)\n  - [Authentication](#authentication)\n  - [Permissions](#permissions)\n  - [Real-time](#real-time)\n  - [Error Handling](#error-handling)\n- [React Integration](#react-integration)\n  - [Provider Setup](#provider-setup)\n  - [Hooks](#hooks)\n  - [Components](#components)\n- [React Native Setup](#react-native-setup)\n- [Services](#services)\n- [Utilities](#utilities)\n- [Models](#models)\n- [Testing](#testing)\n- [API Reference](#api-reference)\n\n---\n\n## Installation\n\n```bash\nnpm install @actschurch/ccms-sdk\n# or\nyarn add @actschurch/ccms-sdk\n# or\npnpm add @actschurch/ccms-sdk\n```\n\n### Peer Dependencies\n\nFor React applications:\n```bash\nnpm install react@^18.0.0\n```\n\n---\n\n## Quick Start\n\n### Basic Setup (Vanilla JavaScript/TypeScript)\n\n```typescript\nimport { HttpClient, AuthManager, LocalStorageAdapter } from '@actschurch/ccms-sdk';\n\n// Create HTTP client\nconst http = new HttpClient({\n  baseUrl: 'https://api.yourccms.com',\n});\n\n// Create auth manager with storage\nconst authManager = new AuthManager(http, {\n  storage: new LocalStorageAdapter(),\n  autoRefresh: true,\n});\n\n// Initialize auth (loads user from storage)\nawait authManager.initialize();\n\n// Login\nconst user = await authManager.login({\n  email: 'user@example.com',\n  password: 'password123',\n});\n\n// Make authenticated requests\nconst response = await http.get('/api/members');\n```\n\n### React Setup\n\n```tsx\nimport { CCMSProvider, useCCMS, useAuth } from '@actschurch/ccms-sdk';\n\n// Wrap your app with CCMSProvider\nfunction App() {\n  return (\n    <CCMSProvider\n      config={{\n        baseUrl: 'https://api.yourccms.com',\n        enableRealtime: true,\n      }}\n    >\n      <MyApp />\n    </CCMSProvider>\n  );\n}\n\n// Use hooks in your components\nfunction Dashboard() {\n  const { http } = useCCMS();\n  const { user, isAuthenticated, login, logout } = useAuth();\n\n  if (!isAuthenticated) {\n    return <LoginForm onLogin={login} />;\n  }\n\n  return (\n    <div>\n      <h1>Welcome, {user?.firstName}!</h1>\n      <button onClick={logout}>Logout</button>\n    </div>\n  );\n}\n```\n\n---\n\n## Core Concepts\n\n### HTTP Client\n\nThe `HttpClient` is the foundation for all API communication. It handles request/response interceptors, authentication headers, and error handling.\n\n```typescript\nimport { HttpClient } from '@actschurch/ccms-sdk';\n\nconst http = new HttpClient({\n  baseUrl: 'https://api.yourccms.com',\n  timeout: 30000, // 30 seconds\n  headers: {\n    'X-Custom-Header': 'value',\n  },\n});\n\n// GET request\nconst members = await http.get<Member[]>('/api/members');\n\n// POST request\nconst newMember = await http.post<Member>('/api/members', {\n  firstName: 'John',\n  lastName: 'Doe',\n  email: 'john@example.com',\n});\n\n// PUT request\nconst updated = await http.put<Member>('/api/members/123', {\n  firstName: 'Jane',\n});\n\n// DELETE request\nawait http.delete('/api/members/123');\n\n// Request with query parameters\nconst filtered = await http.get<Member[]>('/api/members', {\n  params: { status: 'active', page: 1, pageSize: 20 },\n});\n```\n\n#### Interceptors\n\nAdd request/response interceptors for logging, error handling, or modifying requests:\n\n```typescript\n// Request interceptor\nhttp.interceptors.request.use(\n  (config) => {\n    console.log('Request:', config.url);\n    return config;\n  },\n  (error) => Promise.reject(error)\n);\n\n// Response interceptor\nhttp.interceptors.response.use(\n  (response) => {\n    console.log('Response:', response.status);\n    return response;\n  },\n  (error) => {\n    if (error.status === 401) {\n      // Handle unauthorized\n    }\n    return Promise.reject(error);\n  }\n);\n```\n\n---\n\n### Authentication\n\nThe `AuthManager` handles the complete authentication flow including login, logout, token refresh, and session persistence.\n\n```typescript\nimport { AuthManager, LocalStorageAdapter, MemoryStorageAdapter } from '@actschurch/ccms-sdk';\n\n// Create auth manager\nconst authManager = new AuthManager(http, {\n  // Storage adapter (choose based on platform)\n  storage: new LocalStorageAdapter(), // Web\n  // storage: new AsyncStorageAdapter(AsyncStorage), // React Native\n  // storage: new MemoryStorageAdapter(), // SSR or testing\n\n  // Token refresh configuration\n  autoRefresh: true,\n  refreshThresholdSeconds: 60, // Refresh 60s before expiry\n  refreshCheckIntervalMs: 30000, // Check every 30s\n\n  // Callbacks\n  onLogin: (user) => console.log('User logged in:', user.email),\n  onLogout: () => console.log('User logged out'),\n  onRefresh: (user) => console.log('Token refreshed'),\n  onError: (error) => console.error('Auth error:', error),\n});\n\n// Initialize (loads persisted session)\nconst user = await authManager.initialize();\n\n// Login\ntry {\n  const user = await authManager.login({\n    email: 'user@example.com',\n    password: 'password123',\n  });\n  console.log('Logged in as:', user.firstName);\n} catch (error) {\n  console.error('Login failed:', error.message);\n}\n\n// Get current state\nconst state = authManager.getState();\n// { isAuthenticated: true, user: {...}, isLoading: false, error: null }\n\n// Check permissions\nif (authManager.hasRole('admin')) {\n  // User is admin\n}\n\nif (authManager.hasRight('members.edit')) {\n  // User can edit members\n}\n\n// Subscribe to state changes\nconst unsubscribe = authManager.subscribe((state) => {\n  console.log('Auth state changed:', state);\n});\n\n// Logout\nawait authManager.logout();\n\n// Cleanup\nunsubscribe();\nauthManager.destroy();\n```\n\n#### Storage Adapters\n\nDifferent storage adapters for different platforms:\n\n```typescript\nimport {\n  LocalStorageAdapter,      // Web - localStorage\n  SessionStorageAdapter,    // Web - sessionStorage\n  MemoryStorageAdapter,     // In-memory (SSR/testing)\n  AsyncStorageAdapter,      // React Native\n  SecureStorageAdapter,     // React Native - secure storage\n  CookieStorageAdapter,     // SSR/universal apps\n  GenericStorageAuthAdapter, // Custom storage\n} from '@actschurch/ccms-sdk';\n\n// React Native with AsyncStorage\nimport AsyncStorage from '@react-native-async-storage/async-storage';\nconst storage = new AsyncStorageAdapter(AsyncStorage);\n\n// React Native with Expo SecureStore\nimport * as SecureStore from 'expo-secure-store';\nconst storage = new SecureStorageAdapter(SecureStore);\n\n// Custom storage key\nconst storage = new LocalStorageAdapter('my_app_auth');\n```\n\n---\n\n### Permissions\n\nThe `PermissionManager` handles feature-based access control using roles and permissions.\n\n```typescript\nimport { PermissionManager, defineFeature, requires } from '@actschurch/ccms-sdk';\n\n// Create permission manager\nconst permissions = new PermissionManager({\n  defaultAllow: false,\n  debug: true,\n});\n\n// Define features with requirements\npermissions.registerFeatures([\n  defineFeature('members.view', 'View Members', [\n    requires.anyRole(['admin', 'staff', 'member']),\n  ]),\n\n  defineFeature('members.edit', 'Edit Members', [\n    requires.anyRole(['admin', 'staff']),\n    requires.right('members.write'),\n  ]),\n\n  defineFeature('admin.dashboard', 'Admin Dashboard', [\n    requires.role('admin'),\n  ]),\n\n  defineFeature('reports.financial', 'Financial Reports', [\n    requires.allRoles(['admin', 'finance']),\n  ]),\n\n  defineFeature('custom.feature', 'Custom Feature', [\n    requires.custom(() => someCondition(), 'customCheck'),\n  ]),\n]);\n\n// Set user context (usually done after login)\npermissions.setContext({\n  roles: user.roles,\n  rights: user.rights,\n  isAuthenticated: true,\n  userId: user.id,\n});\n\n// Check permissions\nif (permissions.can('members.edit')) {\n  // User can edit members\n}\n\n// Get detailed check result\nconst result = permissions.check('members.edit');\n// { allowed: false, reason: '...', missing: ['members.write'] }\n\n// Direct role/right checks\npermissions.hasRole('admin');\npermissions.hasAnyRole(['admin', 'staff']);\npermissions.hasAllRoles(['admin', 'finance']);\npermissions.hasRight('members.write');\npermissions.hasAnyRight(['members.read', 'members.write']);\n\n// Listen for denied access attempts\npermissions.onDenied((event) => {\n  console.log('Access denied to feature:', event.featureId);\n  analytics.track('permission_denied', event);\n});\n```\n\n---\n\n### Real-time\n\nThe CCMS SDK provides robust real-time communication infrastructure using SignalR WebSockets with automatic reconnection, type-safe event handling, and React integration.\n\n#### Key Features\n\n- **🔄 Automatic Reconnection** - Exponential backoff strategy with delays: [2s, 4s, 8s, 16s, 30s]\n- **🔐 JWT Authentication** - Seamless integration with CCMS auth system\n- **📡 Multiple Hubs** - Separate hubs for presence tracking (1 hub) and log streaming (4 hubs)\n- **⚛️ React Integration** - First-class React support with 8 dedicated hooks and context providers\n- **📱 Cross-Platform** - Works in web browsers and React Native applications\n- **🎨 Activity Detection** - Automatic user status updates based on platform-specific activity monitoring\n- **🔌 Auto-Management** - Automatic connection on login, disconnection on logout\n\nFor comprehensive documentation, see the [Realtime Module Documentation](src/realtime/README.md).\n\n#### Presence Tracking\n\nTrack user presence and status across the platform with automatic activity detection and real-time updates.\n\n**Features:**\n- **Auto-Connect on Login** - Automatically connects when user authenticates\n- **Activity Detection** - Monitors user activity (web: mouse/keyboard/visibility; React Native: AppState)\n- **Auto-Away Status** - Automatically sets status to \"Away\" after 5 minutes of inactivity\n- **Multi-Device Support** - Handles multiple concurrent connections per user\n- **Status Broadcasting** - Real-time updates broadcast to all connected clients\n\n**Available Statuses:** `Online`, `Away`, `Busy`, `Offline`\n\n**Setup Option 1: CCMSProvider (Recommended)**\n\nThe simplest way to add presence tracking is through CCMSProvider:\n\n```tsx\nimport { CCMSProvider, usePresenceClient, PresenceStatus } from '@actschurch/ccms-sdk/react';\n\n// Setup in your app root - presence auto-connects when user has token\nfunction App() {\n  return (\n    <CCMSProvider\n      config={{\n        baseUrl: 'https://api.ccms.com',\n        presenceUrl: 'https://ccms.actschurch.co.za/ws/presence',\n        getToken: async () => {\n          // Return current JWT token\n          return authManager.getUser()?.accessToken || null;\n        },\n        presenceOptions: {\n          activityTimeout: 5 * 60 * 1000,      // 5 minutes until \"Away\"\n          enableActivityDetection: true,\n          platform: 'web',                     // or 'react-native' (auto-detected)\n        },\n        debug: true,\n      }}\n      onConnectionChange={(connected) => console.log('Presence:', connected)}\n      onConnectionError={(error) => console.error('Presence error:', error)}\n    >\n      <YourApp />\n    </CCMSProvider>\n  );\n}\n\n// Use in components\nfunction UserStatusButton() {\n  const presence = usePresenceClient();\n\n  const updateStatus = async () => {\n    await presence.updateStatus(PresenceStatus.Busy, 'In a meeting');\n  };\n\n  const getOnlineUsers = async () => {\n    const users = await presence.getOnlineUsers();\n    console.log('Online:', users);\n  };\n\n  return <button onClick={updateStatus}>Set Status</button>;\n}\n```\n\n**Setup Option 2: PresenceProvider (Advanced)**\n\nFor fine-grained control, use the standalone PresenceProvider:\n\n```tsx\nimport { PresenceProvider, usePresence, useUserPresence, useOnlineUsers, usePresenceStatus, PresenceStatus } from '@actschurch/ccms-sdk/realtime/presence';\n\n// Setup in your app root with auto-connection management\nfunction App() {\n  return (\n    <PresenceProvider\n      authManager={authManager}\n      baseUrl=\"https://api.example.com\"\n      options={{\n        activityTimeout: 5 * 60 * 1000,        // 5 minutes until \"Away\"\n        enableActivityDetection: true,\n        platform: 'web',                       // or 'react-native'\n        autoReconnect: true,\n        maxReconnectAttempts: 10,\n      }}\n      onConnectionChange={(connected) => console.log('Presence:', connected)}\n    >\n      <YourApp />\n    </PresenceProvider>\n  );\n}\n\n// Use in components - get specific user's presence\nfunction UserStatus({ userId }: { userId: string }) {\n  const userPresence = useUserPresence(userId);\n  const { updateStatus } = usePresence();\n\n  return (\n    <div className=\"flex items-center gap-2\">\n      <StatusIndicator status={userPresence?.status || 'Offline'} />\n      <span>{userPresence?.statusMessage || userPresence?.status}</span>\n      <button onClick={() => updateStatus(PresenceStatus.Busy, 'In a meeting')}>\n        Set Busy\n      </button>\n    </div>\n  );\n}\n\n// Show all online users\nfunction OnlineUsersList() {\n  const onlineUsers = useOnlineUsers(); // Returns UserPresenceUpdate[]\n  const myStatus = usePresenceStatus();\n\n  return (\n    <div>\n      <p>My Status: {myStatus}</p>\n      <p>Online Users: {onlineUsers.length}</p>\n      <ul>\n        {onlineUsers.map(user => (\n          <li key={user.userId}>{user.userName} - {user.status}</li>\n        ))}\n      </ul>\n    </div>\n  );\n}\n```\n\n**Activity Detection:**\n- **Web Platform**: Monitors mouse movement, clicks, keyboard, scrolling, tab visibility\n- **React Native**: Monitors AppState changes (foreground/background)\n- **Throttled**: Maximum 1 status update per second for performance\n- **Configurable**: Customize inactivity timeout and check intervals\n\n#### Real-time Log Streaming\n\nStream application logs, API requests, database queries, and system metrics in real-time with powerful filtering capabilities.\n\n**Available Log Hubs:**\n1. **Application Logs** - General application logs (errors, warnings, information)\n2. **API Logs** - HTTP request/response logs with performance metrics\n3. **Query Logs** - Database query performance and slow query tracking\n4. **Dashboard** - Aggregated statistics and system health metrics\n\n**Features:**\n- **Filter-Based Subscription** - Subscribe only to relevant logs (by service, level, duration, etc.)\n- **Buffer Management** - Configurable in-memory buffer with FIFO eviction\n- **Auto-Load Recent** - Optionally load historical logs on subscription\n- **Correlation Tracing** - Track all logs related to a single request by correlation ID\n- **Manual Connection** - Connect/disconnect explicitly or with auto-connect option\n\n```tsx\nimport {\n  useApplicationLogs,\n  useApiLogs,\n  useQueryLogs,\n  useDashboard,\n} from '@actschurch/ccms-sdk/realtime/logs';\n\n// Application logs with filtering and event handling\nfunction LogsViewer() {\n  const {\n    logs,\n    isConnected,\n    isSubscribed,\n    error,\n    connect,\n    disconnect,\n    subscribe,\n    unsubscribe,\n    clearLogs,\n    loadRecent,\n  } = useApplicationLogs({\n    autoConnect: true,\n    filter: {\n      serviceNames: ['CCMS.API', 'CCMS.Tasks'],\n      logLevels: ['Error', 'Warning', 'Critical'],\n      userId: currentUser?.id,                        // Filter by user\n    },\n    maxBufferSize: 1000,                              // Keep last 1000 logs\n    autoLoadRecent: true,                             // Load recent on subscribe\n    recentLogsLimit: 100,                             // Load 100 recent logs\n    onLog: (log) => {\n      // Handle new log in real-time\n      if (log.level === 'Critical') {\n        showNotification({ title: 'Critical Error', message: log.message });\n      }\n    },\n  });\n\n  useEffect(() => {\n    subscribe();\n    return () => disconnect();\n  }, []);\n\n  return (\n    <div>\n      <div className=\"status\">\n        Status: {isConnected ? '🟢 Connected' : '🔴 Disconnected'}\n        {isSubscribed && ' (Subscribed)'}\n      </div>\n      <button onClick={clearLogs}>Clear Logs</button>\n      <table>\n        <thead>\n          <tr>\n            <th>Time</th>\n            <th>Level</th>\n            <th>Service</th>\n            <th>Message</th>\n          </tr>\n        </thead>\n        <tbody>\n          {logs.map((log) => (\n            <tr key={log.id} className={`log-${log.level.toLowerCase()}`}>\n              <td>{new Date(log.timestamp).toLocaleString()}</td>\n              <td>{log.level}</td>\n              <td>{log.serviceName}</td>\n              <td>{log.message}</td>\n            </tr>\n          ))}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\n// API request logs - track slow or failed requests\nfunction ApiLogsMonitor() {\n  const { logs } = useApiLogs({\n    autoConnect: true,\n    filter: {\n      minDurationMs: 1000,                             // Only slow requests (>1s)\n      statusCodes: [400, 404, 500, 502, 503],          // Error codes\n      pathFilter: '/api/',                             // Path pattern\n    },\n  });\n\n  return (\n    <div>\n      <h3>Slow & Failed API Requests</h3>\n      {logs.map(log => (\n        <div key={log.id}>\n          <span>{log.httpMethod} {log.path}</span>\n          <span>Status: {log.statusCode}</span>\n          <span>Duration: {log.durationMs}ms</span>\n        </div>\n      ))}\n    </div>\n  );\n}\n\n// Query performance logs - track slow database queries\nfunction QueryPerformanceMonitor() {\n  const { logs } = useQueryLogs({\n    filter: {\n      slowOnly: true,                                  // Only marked as slow\n      minDurationMs: 500,                              // >500ms\n      queryTypes: ['SELECT'],                          // Only SELECT queries\n    },\n  });\n\n  return (\n    <div>\n      <h3>Slow Database Queries</h3>\n      {logs.map(log => (\n        <div key={log.id}>\n          <span>{log.queryType} - {log.entityType}</span>\n          <span>Duration: {log.durationMs}ms</span>\n          <span>Rows: {log.rowCount}</span>\n        </div>\n      ))}\n    </div>\n  );\n}\n\n// System dashboard with real-time statistics\nfunction PerformanceDashboard() {\n  const {\n    stats,\n    isConnected,\n    refreshStats,\n    getLogsByCorrelationId,\n    getRecentErrors,\n    startAutoRefresh,\n    stopAutoRefresh,\n  } = useDashboard({\n    autoConnect: true,\n    refreshInterval: 5000,                             // Auto-refresh every 5s\n    onUpdate: (stats) => {\n      console.log('Dashboard updated:', stats);\n    },\n  });\n\n  useEffect(() => {\n    startAutoRefresh();\n    return () => stopAutoRefresh();\n  }, []);\n\n  const handleCorrelationTrace = async (correlationId: string) => {\n    const trace = await getLogsByCorrelationId(correlationId);\n    // trace.applicationLogs, trace.apiLogs, trace.queryLogs\n    console.log('Full request trace:', trace);\n  };\n\n  return (\n    <div>\n      <h2>System Health Dashboard</h2>\n      <div className=\"grid grid-cols-3 gap-4\">\n        <MetricCard\n          title=\"Avg Response Time\"\n          value={`${stats?.averageResponseTime.toFixed(2)}ms`}\n        />\n        <MetricCard\n          title=\"Error Rate\"\n          value={`${((stats?.errorRequests / stats?.totalApiRequests) * 100).toFixed(2)}%`}\n          alert={stats?.errorRequests > 10}\n        />\n        <MetricCard\n          title=\"Slow Queries\"\n          value={stats?.slowQueries}\n        />\n        <MetricCard\n          title=\"Active Services\"\n          value={stats?.activeServices.length}\n        />\n        <MetricCard\n          title=\"Logs/Minute\"\n          value={stats?.logsPerMinute}\n        />\n        <MetricCard\n          title=\"Total Errors\"\n          value={stats?.errorCount}\n        />\n      </div>\n      <button onClick={refreshStats}>Refresh Now</button>\n    </div>\n  );\n}\n```\n\n**Log Entry Structures:**\n- **ApplicationLogEntry**: timestamp, level, category, message, exception, correlationId, serviceName, properties\n- **ApiRequestLogEntry**: httpMethod, path, statusCode, durationMs, requestBody, responseBody, headers\n- **QueryPerformanceLogEntry**: queryType, entityType, queryText, durationMs, rowCount, isSlowQuery\n- **DashboardStats**: Aggregated metrics including averages, counts, and active services\n\n#### Migration from Legacy RealtimeClient\n\nThe old `RealtimeClient` is deprecated. Migrate to the new SignalR-based modules:\n\n```typescript\n// Old (deprecated)\nimport { RealtimeClient } from '@actschurch/ccms-sdk';\nconst realtime = new RealtimeClient(config);\nrealtime.updatePresence('Online');\n\n// New (recommended)\nimport { usePresence } from '@actschurch/ccms-sdk/realtime/presence';\nconst { updateStatus } = usePresence();\nupdateStatus(PresenceStatus.Online);\n```\n\n---\n\n### Error Handling\n\nThe SDK provides comprehensive error handling utilities.\n\n```typescript\nimport { ErrorHandler, CCMSError } from '@actschurch/ccms-sdk';\n\n// Create error handler\nconst errorHandler = new ErrorHandler({\n  onError: (error) => {\n    // Global error handling\n    console.error('Error:', error.message);\n  },\n  displayMode: 'toast', // 'toast' | 'modal' | 'none'\n});\n\n// Handle errors\ntry {\n  await someOperation();\n} catch (error) {\n  errorHandler.handle(error);\n}\n\n// Custom error class\nthrow new CCMSError('Something went wrong', {\n  code: 'VALIDATION_ERROR',\n  statusCode: 400,\n  details: { field: 'email' },\n});\n```\n\n---\n\n## React Integration\n\n### Provider Setup\n\nWrap your application with `CCMSProvider`:\n\n```tsx\nimport { CCMSProvider } from '@actschurch/ccms-sdk';\n\nfunction App() {\n  return (\n    <CCMSProvider\n      config={{\n        baseUrl: 'https://api.yourccms.com',\n        enableRealtime: true,\n        realtimeUrl: 'wss://api.yourccms.com', // Optional\n      }}\n      authConfig={{\n        autoRefresh: true,\n        refreshThresholdSeconds: 60,\n      }}\n    >\n      <YourApp />\n    </CCMSProvider>\n  );\n}\n```\n\n### Hooks\n\n#### Core Hooks\n\n```tsx\nimport {\n  useCCMS,\n  useAuth,\n  useHttpClient,\n  useRealtime,\n  usePermissions,\n} from '@actschurch/ccms-sdk';\n\nfunction MyComponent() {\n  // Access full SDK context\n  const { http, auth, realtime, permissions } = useCCMS();\n\n  // Or use specific hooks\n  const httpClient = useHttpClient();\n  const realtimeClient = useRealtime();\n  const permissionManager = usePermissions();\n}\n```\n\n#### Authentication Hooks\n\n```tsx\nimport { useAuth, useIsAuthenticated, useUser, useHasRole, useHasRight } from '@actschurch/ccms-sdk';\n\nfunction Profile() {\n  const { user, isAuthenticated, isLoading, login, logout } = useAuth();\n\n  // Or use individual hooks\n  const isLoggedIn = useIsAuthenticated();\n  const currentUser = useUser();\n  const isAdmin = useHasRole('admin');\n  const canEditMembers = useHasRight('members.edit');\n\n  if (isLoading) return <Loading />;\n  if (!isAuthenticated) return <LoginForm />;\n\n  return (\n    <div>\n      <h1>Welcome, {user?.firstName}</h1>\n      {isAdmin && <AdminPanel />}\n      {canEditMembers && <EditButton />}\n    </div>\n  );\n}\n```\n\n#### API Hooks\n\n```tsx\nimport { useQuery, useMutation, useInfiniteQuery, usePrefetch } from '@actschurch/ccms-sdk';\n\nfunction MemberList() {\n  // Fetch data\n  const {\n    data: members,\n    isLoading,\n    error,\n    refetch,\n  } = useQuery<Member[]>('/api/members', {\n    enabled: true,\n    refetchOnFocus: true,\n  });\n\n  // Mutations\n  const { mutate: createMember, isLoading: isCreating } = useMutation<Member>(\n    '/api/members',\n    'POST',\n    {\n      onSuccess: (member) => {\n        console.log('Created:', member);\n        refetch();\n      },\n      onError: (error) => console.error(error),\n    }\n  );\n\n  // Infinite scrolling\n  const {\n    pages,\n    fetchNextPage,\n    hasNextPage,\n    isFetchingNextPage,\n  } = useInfiniteQuery<Member>('/api/members', undefined, {\n    pageSize: 20,\n  });\n\n  // Prefetch for navigation\n  const { prefetch } = usePrefetch();\n\n  const handleHover = (memberId: string) => {\n    prefetch<Member>(`/api/members/${memberId}`);\n  };\n}\n```\n\n#### Realtime Hooks\n\n##### Presence Hooks\n\n```tsx\nimport {\n  usePresence,\n  usePresenceStatus,\n  useOnlineUsers,\n  useUserPresence,\n} from '@actschurch/ccms-sdk/realtime/presence';\n\nfunction ChatRoom() {\n  // Main presence hook\n  const { state, updateStatus, getUserPresence, getAllPresence } = usePresence();\n\n  // Get current user's status\n  const myStatus = usePresenceStatus(); // 'Online' | 'Away' | 'Busy' | 'Offline'\n\n  // Get all online users\n  const onlineUsers = useOnlineUsers(); // UserPresenceUpdate[]\n\n  // Get specific user's presence\n  const userPresence = useUserPresence('user-123');\n\n  useEffect(() => {\n    updateStatus('Online', 'In chat room');\n    return () => updateStatus('Offline');\n  }, []);\n\n  return (\n    <div>\n      <p>Your status: {myStatus}</p>\n      <p>Online users: {onlineUsers.length}</p>\n      {userPresence && <span>{userPresence.status}</span>}\n    </div>\n  );\n}\n```\n\n##### Log Streaming Hooks\n\n```tsx\nimport {\n  useApplicationLogs,\n  useApiLogs,\n  useQueryLogs,\n  useDashboard,\n} from '@actschurch/ccms-sdk/realtime/logs';\n\nfunction LogMonitor() {\n  // Application logs\n  const {\n    logs: appLogs,\n    isConnected,\n    subscribe,\n    clearLogs,\n    loadRecent,\n  } = useApplicationLogs({\n    autoConnect: true,\n    filter: { logLevels: ['Error', 'Critical'] },\n    maxBufferSize: 1000,\n  });\n\n  // API request logs\n  const { logs: apiLogs } = useApiLogs({\n    filter: { minDurationMs: 1000 }, // Slow requests only\n  });\n\n  // Database query logs\n  const { logs: queryLogs } = useQueryLogs({\n    filter: { slowOnly: true },\n  });\n\n  // Dashboard statistics\n  const { stats, refreshStats, getLogsByCorrelationId } = useDashboard({\n    autoConnect: true,\n    refreshInterval: 5000,\n  });\n\n  return (/* ... */);\n}\n```\n\n##### Legacy Realtime Hooks (Deprecated)\n\n```tsx\n// ⚠️ DEPRECATED: These hooks are deprecated and will be removed in v2.0.0\n// Use the new hooks above instead\n\nimport { useRealtimeEvent, useConnectionState } from '@actschurch/ccms-sdk';\n\nfunction OldComponent() {\n  const connectionState = useConnectionState(); // Use usePresence() instead\n  useRealtimeEvent('event', handler); // Use specific hooks instead\n}\n```\n\n#### Utility Hooks\n\n```tsx\nimport {\n  useDebounce,\n  useThrottle,\n  usePrevious,\n  useStorage,\n  useNetworkStatus,\n  useToggle,\n  useCounter,\n  useArray,\n  useMap,\n  useInterval,\n  useTimeout,\n  useMediaQuery,\n  useClipboard,\n  useClickOutside,\n  useKeyPress,\n} from '@actschurch/ccms-sdk';\n\nfunction SearchComponent() {\n  const [search, setSearch] = useState('');\n  const debouncedSearch = useDebounce(search, 300);\n\n  // Network status\n  const { isOnline, wasOffline } = useNetworkStatus();\n\n  // Persistent storage (cross-platform)\n  const [theme, setTheme] = useStorage('theme', 'light');\n\n  // Boolean toggle\n  const [isOpen, toggle] = useToggle(false);\n\n  // Counter with limits\n  const { count, increment, decrement } = useCounter(0, { min: 0, max: 100 });\n\n  // Array operations\n  const { array, push, remove, clear } = useArray<string>([]);\n\n  // Media queries\n  const isMobile = useMediaQuery('(max-width: 768px)');\n\n  // Clipboard\n  const { copy, copied } = useClipboard();\n\n  // Click outside detection\n  const ref = useClickOutside<HTMLDivElement>(() => setIsOpen(false));\n\n  // Keyboard shortcuts\n  useKeyPress('k', () => openSearch(), { meta: true }); // Cmd+K\n}\n```\n\n### Components\n\n#### Permission Components\n\n```tsx\nimport { Can, RequireAuth, RequireRole, RequireRight } from '@actschurch/ccms-sdk';\n\nfunction App() {\n  return (\n    <RequireAuth fallback={<LoginPage />}>\n      <Dashboard />\n    </RequireAuth>\n  );\n}\n\nfunction Dashboard() {\n  return (\n    <div>\n      {/* Feature-based access */}\n      <Can feature=\"members.view\">\n        <MemberList />\n      </Can>\n\n      {/* Role-based access */}\n      <RequireRole role=\"admin\" fallback={<AccessDenied />}>\n        <AdminPanel />\n      </RequireRole>\n\n      {/* Multiple roles (any) */}\n      <RequireRole roles={['admin', 'staff']} requireAll={false}>\n        <StaffTools />\n      </RequireRole>\n\n      {/* Right-based access */}\n      <RequireRight right=\"reports.view\">\n        <Reports />\n      </RequireRight>\n    </div>\n  );\n}\n```\n\n#### Error Boundary\n\n```tsx\nimport { ErrorBoundary } from '@actschurch/ccms-sdk';\n\nfunction App() {\n  return (\n    <ErrorBoundary\n      fallback={({ error, reset }) => (\n        <div>\n          <h1>Something went wrong</h1>\n          <p>{error.message}</p>\n          <button onClick={reset}>Try Again</button>\n        </div>\n      )}\n    >\n      <MyApp />\n    </ErrorBoundary>\n  );\n}\n```\n\n---\n\n## React Native Setup\n\n### Configure Global Storage\n\n```typescript\n// In your app entry point (App.tsx or index.js)\nimport AsyncStorage from '@react-native-async-storage/async-storage';\nimport NetInfo from '@react-native-community/netinfo';\nimport { setGlobalStorage, setGlobalNetworkStatus } from '@actschurch/ccms-sdk';\n\n// Configure storage (do this before using any SDK features)\nsetGlobalStorage(AsyncStorage);\n\n// Configure network status detection\nsetGlobalNetworkStatus({\n  isOnline: async () => {\n    const state = await NetInfo.fetch();\n    return state.isConnected ?? false;\n  },\n  subscribe: (callback) => {\n    return NetInfo.addEventListener((state) => {\n      callback(state.isConnected ?? false);\n    });\n  },\n});\n```\n\n### Use with Expo SecureStore\n\n```typescript\nimport * as SecureStore from 'expo-secure-store';\nimport { SecureStorageAdapter, AuthManager } from '@actschurch/ccms-sdk';\n\nconst authManager = new AuthManager(http, {\n  storage: new SecureStorageAdapter(SecureStore),\n});\n```\n\n---\n\n## Services\n\nThe SDK provides pre-built service classes that encapsulate common API operations for each domain. Services handle request formatting, response parsing, and provide a clean interface for interacting with the CCMS backend.\n\n### Available Service Modules\n\n| Module | Services | Key Services |\n|--------|----------|--------------|\n| **Task Management** | 12 services | TaskService, TaskStatusService, TaskPriorityService, TaskProgressStageService, TaskAssignmentService, TaskAttachmentService, TaskCommentService, TaskNoteService, TaskLogService, LogTypeService, TaskNotificationService, TaskNotificationQueueService |\n| **User Management** | 9 services | UserService, RoleService, RightService, AuthService, AuditService, AdminService, SystemService, UserPreferencesService, UserPushDeviceService |\n| **Payments** | 14 services | PaymentTransactionService, PayerService, PaymentMethodService, TransactionStatusService, TransactionCategoryService, TransactionRefundService, RefundStatusService, BillingAgreementService, RecurringTransactionService, SettlementService, SettlementLineService, PaymentIpnEventService, PaymentNotificationQueueService, PayFastWebhookService |\n| **Procurement** | 18 services | PurchaseRequestService, QuotationService, InvoiceService, RequestAttachmentService, RequestCommentService, RequestTypeService, RequestStatusService, RequestStageService, QuotationStatusService, InvoiceStatusService, ProcurementRoleTypeService, NotificationService, AuditLogService, QuotationLineService, InvoiceLineService, RequestApprovalStatusService, SagePurchaseOrderService, SageItemService |\n| **Projects** | 17 services | ProjectService, ProjectStatusService, ProjectTypeService, ProjectAuditLogService, ProjectMessageService, ProjectMilestoneService, ProjectMilestoneTaskService, ProjectRiskService, ProjectTeamMemberService, TaskTimeLogService, ProjectResourceService, ProjectDocumentService, PlannedBudgetItemService, TaskDependencyService, ResourceTypeService, ProjectRoleService, BudgetLineItemService |\n| **Orders** | 6 services | OrderService, OrderLineService, OrderPaymentService, OrderStatusService, PaymentStatusService, OrderNotificationService |\n| **Meetings** | 14 services | MeetingService, MeetingStatusService, MeetingTypeService, MeetingVenueService, MeetingAttendeeService, MeetingAttendanceStatusService, MeetingSetupService, MeetingRequestService, MeetingCommentService, MeetingFileService, SetupInMeetingService, RequestInMeetingService, LocationVenueRequestService, LocationVenueSetupService |\n| **Members** | 9 services | MemberService, FamilyService, MemberTypeService, MaritalStatusService, MemberAddressService, MemberLocationService, AllergyService, DisabilityService, RelationshipService |\n| **HR** | 19 services | EmployeeService, LeaveService, DutyService, EmployeeDutyService, EmployeeFileCategoryService, EmployeeFileTypeService, EmployeeFileService, EmployeeStatusService, EmployeeTypeService, LeaveDocumentTypeService, LeaveDocumentService, LeaveDutyService, LeaveNotificationQueueService, LeaveStatusService, LeaveTypeService, PolicyService, PolicyCategoryService, PolicySignatureService |\n| **Departments** | 10 services | DepartmentService, DesignationService, DesignationTaskService, MemberDesignationService, MemberInDepartmentService, MinistryService, MinistryActivityService, MinistryEquipmentService, MinistryRoleService, MinistryTeamService |\n| **Communication** | 6 services | EmailService, SmsService, PushNotificationService, WhatsAppService, TemplateService, DeviceService |\n| **File Management** | 2 services | FileService, MultipartUploadService |\n| **Locations** | 8 services | LocationService, AddressService, LocationInfoService, LocationLeaderService, LocationSocialMediaService, LocationVenueService, ServiceTimeService, SocialMediaService |\n| **Products** | 8 services | ProductService, ProductTypeService, ProductColorService, ProductSizeService, ProductImageService, ProductStockService, ProductTransactionService, TransactionTypeService |\n| **Suppliers** | 4 services | SupplierService, SupplierCategoryService, SupplierContactService, SupplierNoteService |\n| **Resources** | 8 services | CourseService, CourseCategoryService, CourseSessionService, UsageLogService, CourseStatusService, CourseCategoryStatusService, CourseSessionStatusService, CourseSessionTypeService |\n| **Feedback** | 5 services | FeedbackService, FeedbackCategoryService, FeedbackTypeService, FeedbackCategoryRecipientService, FeedbackNotificationQueueService |\n| **System** | 10 services | SystemService, ApiRequestLogService, QueryPerformanceLogService, LogsService, HealthService, ServicesService, RabbitMQManagementService, RedisManagementService, RabbitMQTestService, RedisTestService |\n| **Generators** | 4 services | BarcodeService, QrCodeService, UtilityCodeService, GeneratedCodeService |\n\nFor detailed information about the service architecture and how to create custom services, see [Services Module Documentation](src/services/README.md).\n\n### Using Services\n\n```typescript\nimport { MemberService, TaskService } from '@actschurch/ccms-sdk';\n\n// Initialize services with HTTP client\nconst memberService = new MemberService(http);\nconst taskService = new TaskService(http);\n\n// Member operations\nconst members = await memberService.getAll({ page: 1, pageSize: 20 });\nconst member = await memberService.getById('member-123');\nconst newMember = await memberService.create({\n  firstName: 'John',\n  lastName: 'Doe',\n  email: 'john@example.com',\n});\nawait memberService.update('member-123', { phone: '+1234567890' });\nawait memberService.delete('member-123');\n\n// Search members\nconst searchResults = await memberService.search({\n  query: 'John',\n  filters: { status: 'active', memberType: 'regular' },\n  sort: { field: 'lastName', direction: 'asc' },\n});\n\n// Task operations\nconst tasks = await taskService.getMyTasks();\nconst task = await taskService.create({\n  title: 'Follow up with new member',\n  description: 'Welcome call and orientation',\n  assignedTo: ['user-456'],\n  dueDate: '2024-02-01',\n  priority: 'high',\n});\nawait taskService.updateStatus('task-789', 'completed');\nawait taskService.addComment('task-789', 'Completed the follow-up call');\n```\n\n### Service with React Hooks\n\nThe SDK provides dedicated hooks for each service module for seamless React integration:\n\n```tsx\nimport {\n  useTaskServices,\n  useUsersServices,\n  useMembersServices,\n  useMeetingsServices,\n  useLocationsServices,\n  useFileServices,\n  useCommunicationServices,\n  useSupplierServices,\n  useResourcesServices,\n  useProjectsServices,\n  useProcurementsServices,\n  useProductsServices,\n  usePaymentServices,\n  useOrderServices,\n  useHrServices,\n  useDepartmentsServices,\n  useFeedbackServices,\n  useSystemServices,\n  useGeneratorsServices,\n} from '@actschurch/ccms-sdk';\n\nfunction TaskList() {\n  const { task, taskStatus, taskPriority } = useTaskServices();\n  const [tasks, setTasks] = useState<Task[]>([]);\n\n  useEffect(() => {\n    task.getAll().then(setTasks);\n  }, []);\n\n  const handleCreate = async (data: CreateTaskRequest) => {\n    const newTask = await task.create(data);\n    setTasks(prev => [...prev, newTask]);\n  };\n\n  return (/* ... */);\n}\n\n// Access multiple services in one module\nfunction CommunicationDashboard() {\n  const { email, sms, pushNotification, whatsApp } = useCommunicationServices();\n\n  const sendMultiChannelNotification = async (message: string, recipients: string[]) => {\n    await Promise.all([\n      email.send({ to: recipients, subject: 'Notification', body: message }),\n      sms.send({ to: recipients, message }),\n      pushNotification.send({ userIds: recipients, title: 'Alert', body: message }),\n    ]);\n  };\n\n  return (/* ... */);\n}\n\n// Use meeting services\nfunction MeetingScheduler() {\n  const { meeting, meetingAttendee, meetingVenue } = useMeetingsServices();\n\n  const createMeeting = async (data: MeetingRequest) => {\n    const newMeeting = await meeting.create(data);\n    await meetingAttendee.addAttendees(newMeeting.id, data.attendeeIds);\n    return newMeeting;\n  };\n\n  return (/* ... */);\n}\n```\n\n### Custom Service Creation\n\nYou can create custom services by extending the base service class:\n\n```typescript\nimport { BaseService } from '@actschurch/ccms-sdk';\n\nclass CustomService extends BaseService {\n  constructor(http: HttpClient) {\n    super(http, '/api/custom');\n  }\n\n  async getCustomData(id: string): Promise<CustomData> {\n    const response = await this.http.get<CustomData>(`${this.basePath}/${id}`);\n    return response.data!;\n  }\n\n  async performCustomAction(data: ActionRequest): Promise<ActionResult> {\n    const response = await this.http.post<ActionResult>(\n      `${this.basePath}/action`,\n      data\n    );\n    return response.data!;\n  }\n}\n```\n\n### Service Configuration\n\nServices can be configured with default options:\n\n```typescript\nconst memberService = new MemberService(http, {\n  // Default pagination\n  defaultPageSize: 50,\n\n  // Cache configuration\n  cacheEnabled: true,\n  cacheTTL: 5 * 60 * 1000, // 5 minutes\n\n  // Retry configuration\n  retryOnError: true,\n  maxRetries: 3,\n});\n```\n\n### Batch Operations\n\nServices support batch operations for efficiency:\n\n```typescript\n// Batch create\nconst members = await memberService.createMany([\n  { firstName: 'John', lastName: 'Doe' },\n  { firstName: 'Jane', lastName: 'Smith' },\n]);\n\n// Batch update\nawait memberService.updateMany([\n  { id: 'member-1', status: 'active' },\n  { id: 'member-2', status: 'active' },\n]);\n\n// Batch delete\nawait memberService.deleteMany(['member-3', 'member-4']);\n```\n\n### Service Events\n\nServices emit events for tracking operations:\n\n```typescript\nmemberService.on('created', (member) => {\n  console.log('Member created:', member.id);\n  analytics.track('member_created', { memberId: member.id });\n});\n\nmemberService.on('updated', (member) => {\n  console.log('Member updated:', member.id);\n});\n\nmemberService.on('deleted', (id) => {\n  console.log('Member deleted:', id);\n});\n\nmemberService.on('error', (error, operation) => {\n  console.error(`Error during ${operation}:`, error);\n});\n```\n\n---\n\n## Utilities\n\nThe SDK includes comprehensive cross-platform utilities:\n\n### String Utilities\n\n```typescript\nimport {\n  capitalize,\n  toCamelCase,\n  toKebabCase,\n  toSnakeCase,\n  toPascalCase,\n  slugify,\n  truncate,\n  mask,\n  getInitials,\n  pluralize,\n  similarity,\n} from '@actschurch/ccms-sdk';\n\ncapitalize('hello world'); // \"Hello world\"\ntoCamelCase('hello-world'); // \"helloWorld\"\nslugify('Hello World!'); // \"hello-world\"\ntruncate('Long text...', 10); // \"Long te...\"\nmask('1234567890', 4); // \"******7890\"\ngetInitials('John Doe'); // \"JD\"\npluralize('item', 5); // \"items\"\nsimilarity('hello', 'hallo'); // 0.8\n```\n\n### Number Utilities\n\n```typescript\nimport {\n  formatCurrency,\n  formatNumber,\n  formatPercentage,\n  humanizeNumber,\n  round,\n  clamp,\n  percentage,\n  toOrdinal,\n  formatFileSize,\n  formatDurationFromSeconds,\n} from '@actschurch/ccms-sdk';\n\nformatCurrency(1234.56, 'USD'); // \"$1,234.56\"\nformatNumber(1234567); // \"1,234,567\"\nformatPercentage(0.456); // \"45.60%\"\nhumanizeNumber(1500000); // \"1.5M\"\nround(3.14159, 2); // 3.14\nclamp(150, 0, 100); // 100\ntoOrdinal(1); // \"1st\"\nformatFileSize(1536); // \"1.50 KB\"\nformatDurationFromSeconds(3661); // \"1:01:01\"\n```\n\n### Date/Time Utilities\n\n```typescript\nimport {\n  formatDate,\n  parseDate,\n  addDays,\n  addMonths,\n  differenceInDays,\n  startOfDay,\n  endOfDay,\n  isWeekend,\n  humanize,\n  fromNow,\n  toUnix,\n  fromUnix,\n} from '@actschurch/ccms-sdk';\n\nformatDate(new Date(), 'YYYY-MM-DD'); // \"2024-01-15\"\naddDays(new Date(), 7); // Date 7 days from now\ndifferenceInDays(date1, date2); // Number of days between\nhumanize(pastDate); // \"2 hours ago\"\nisWeekend(new Date()); // true/false\n```\n\n### Array Utilities\n\n```typescript\nimport {\n  unique,\n  uniqueBy,\n  chunk,\n  sortBy,\n  groupBy,\n  partition,\n  shuffle,\n  sample,\n  intersection,\n  difference,\n  union,\n  flatten,\n  moveItem,\n} from '@actschurch/ccms-sdk';\n\nunique([1, 2, 2, 3]); // [1, 2, 3]\nuniqueBy(users, 'email'); // Remove duplicates by email\nchunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]\nsortBy(users, 'lastName', 'asc');\ngroupBy(users, 'department'); // { IT: [...], HR: [...] }\npartition(numbers, n => n > 5); // [[6, 7, 8], [1, 2, 3]]\nshuffle([1, 2, 3, 4, 5]); // Random order\nsample(items, 3); // Random 3 items\n```\n\n### Object Utilities\n\n```typescript\nimport {\n  deepClone,\n  deepMerge,\n  get,\n  set,\n  pick,\n  omit,\n  flattenObject,\n  unflattenObject,\n  deepEqual,\n  diff,\n  isEmpty,\n  mapValues,\n  filterObject,\n} from '@actschurch/ccms-sdk';\n\ndeepClone(complexObject);\ndeepMerge(defaults, userConfig);\nget(obj, 'user.address.city', 'Unknown');\nset(obj, 'user.address.city', 'New York');\npick(user, ['id', 'name', 'email']);\nomit(user, ['password', 'secretKey']);\nflattenObject({ a: { b: 1 } }); // { 'a.b': 1 }\ndeepEqual(obj1, obj2); // true/false\ndiff(original, modified); // { changed: 'fields' }\n```\n\n### Validation Utilities\n\n```typescript\nimport {\n  isEmail,\n  isPhoneNumber,\n  isUrl,\n  isUUID,\n  isStrongPassword,\n  getPasswordStrength,\n  isCreditCard,\n  getCreditCardType,\n  isIPv4,\n  isIPv6,\n  validateEmail,\n  validatePassword,\n  validateUsername,\n  validateAll,\n} from '@actschurch/ccms-sdk';\n\nisEmail('test@example.com'); // true\nisPhoneNumber('+1-555-123-4567'); // true\nisStrongPassword('MyP@ss123!'); // true\ngetPasswordStrength('weak'); // { score: 1, level: 'weak', suggestions: [...] }\nisCreditCard('4111111111111111'); // true (Luhn check)\ngetCreditCardType('4111...'); // 'visa'\n\n// Detailed validation\nvalidateEmail('invalid'); // { valid: false, error: 'Invalid email format' }\nvalidatePassword('weak', { minLength: 8, requireSpecial: true });\n\n// Multiple validations\nvalidateAll([\n  () => validateEmail(email),\n  () => validatePassword(password),\n  () => validateRequired(name, 'Name'),\n]); // { valid: false, errors: ['...', '...'] }\n```\n\n### Color Utilities\n\n```typescript\nimport {\n  hexToRgb,\n  rgbToHex,\n  hexToHsl,\n  lighten,\n  darken,\n  getContrastColor,\n  isLightColor,\n  mix,\n  generatePalette,\n} from '@actschurch/ccms-sdk';\n\nhexToRgb('#ff5500'); // { r: 255, g: 85, b: 0 }\nrgbToHex(255, 85, 0); // \"#ff5500\"\nlighten('#ff5500', 0.2); // Lighter version\ndarken('#ff5500', 0.2); // Darker version\ngetContrastColor('#ff5500'); // '#ffffff' or '#000000'\nmix('#ff0000', '#0000ff', 0.5); // Purple\ngeneratePalette('#ff5500', 5); // { light: [...], dark: [...] }\n```\n\n### Environment Utilities\n\n```typescript\nimport {\n  getEnv,\n  isProduction,\n  isDevelopment,\n  isBrowser,\n  isReactNative,\n  isNode,\n  getPlatform,\n  isMobile,\n  isIOS,\n  isAndroid,\n  getBrowserInfo,\n} from '@actschurch/ccms-sdk';\n\nif (isProduction()) {\n  // Production-only code\n}\n\nif (isReactNative()) {\n  // React Native specific code\n}\n\nif (isMobile()) {\n  // Mobile-specific UI\n}\n\nconst platform = getPlatform(); // 'ios' | 'android' | 'web' | 'node' | 'unknown'\n```\n\n### Device Utilities\n\n```typescript\nimport {\n  getScreenInfo,\n  getDeviceType,\n  getOrientation,\n  hasTouch,\n  hasGeolocation,\n  hasNotifications,\n  prefersDarkMode,\n  prefersReducedMotion,\n  getPreferredLanguage,\n  getTimezone,\n  isOnline,\n  getConnectionType,\n  getCurrentBreakpoint,\n  isAtLeast,\n  isAtMost,\n} from '@actschurch/ccms-sdk';\n\nconst screen = getScreenInfo(); // { width, height, pixelRatio, orientation }\nconst device = getDeviceType(); // 'phone' | 'tablet' | 'desktop'\nconst orientation = getOrientation(); // 'portrait' | 'landscape'\n\nif (prefersDarkMode()) {\n  // Apply dark theme\n}\n\nconst breakpoint = getCurrentBreakpoint(); // 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nif (isAtLeast('md')) {\n  // Tablet and above\n}\n```\n\n### API Response Helpers\n\n```typescript\nimport {\n  createSuccessResponse,\n  createErrorResponse,\n  createPaginatedResponse,\n  isSuccessResponse,\n  unwrapResponse,\n  safeUnwrap,\n  mapResponse,\n  paginateArray,\n  isSuccessStatus,\n  getStatusMessage,\n  fetchWithRetry,\n  createQueryString,\n  buildUrl,\n} from '@actschurch/ccms-sdk';\n\n// Create responses\nconst success = createSuccessResponse(data, 'Operation successful');\nconst error = createErrorResponse('Validation failed', ['Email is required']);\nconst paginated = createPaginatedResponse(items, { page: 1, pageSize: 20, totalItems: 100 });\n\n// Check and unwrap\nif (isSuccessResponse(response)) {\n  const data = unwrapResponse(response);\n}\n\n// Safe unwrap with fallback\nconst users = safeUnwrap(response, []);\n\n// Retry failed requests\nconst result = await fetchWithRetry(\n  () => fetch('/api/data'),\n  { maxRetries: 3, retryDelay: 1000, backoff: 'exponential' }\n);\n\n// Build URLs\nconst url = buildUrl('https://api.example.com', '/users', { page: 1, limit: 20 });\n// \"https://api.example.com/users?page=1&limit=20\"\n```\n\n### Error Utilities\n\n```typescript\nimport {\n  safeTry,\n  safeTryAsync,\n  toErrorMessage,\n  normalizeError,\n  isNetworkError,\n  isTimeoutError,\n  isAbortError,\n  retryOnError,\n  createErrorBoundary,\n  assert,\n  assertDefined,\n  formatErrorForUser,\n  ValidationError,\n  NetworkError,\n  TimeoutError,\n} from '@actschurch/ccms-sdk';\n\n// Safe execution with fallback\nconst result = safeTry(() => JSON.parse(input), {});\n\n// Async safe execution\nconst data = await safeTryAsync(() => fetchData(), defaultData);\n\n// Error classification\nif (isNetworkError(error)) {\n  showOfflineMessage();\n} else if (isTimeoutError(error)) {\n  showTimeoutMessage();\n}\n\n// Retry with configuration\nawait retryOnError(fetchData, {\n  maxRetries: 3,\n  delayMs: 1000,\n  shouldRetry: (error, attempt) => attempt < 3 && isNetworkError(error),\n});\n\n// Custom error classes\nthrow new ValidationError('Invalid input', { code: 'VALIDATION_ERROR' });\n\n// User-friendly messages\nconst message = formatErrorForUser(error);\n// \"Unable to connect. Please check your internet connection.\"\n```\n\n---\n\n## Models\n\nThe SDK includes TypeScript models for all CCMS entities:\n\n```typescript\nimport {\n  // Identity\n  LoggedOnUser,\n  UserModelView,\n  RoleModelView,\n\n  // Members\n  Member,\n  MemberModelView,\n  MemberType,\n  Family,\n\n  // Tasks\n  Task,\n  TaskModelView,\n  TaskStatus,\n  TaskPriority,\n  TaskAssignment,\n\n  // Departments\n  Department,\n  Ministry,\n  Designation,\n\n  // Locations\n  Location,\n  Address,\n\n  // And many more...\n} from '@actschurch/ccms-sdk';\n```\n\n---\n\n## Testing\n\nThe SDK includes testing utilities for mocking:\n\n```typescript\nimport {\n  MockHttpClient,\n  MockAuthManager,\n  MockRealtimeClient,\n  MockPermissionManager,\n  createMockUser,\n  createMockPagedResult,\n  TestProvider,\n} from '@actschurch/ccms-sdk/testing';\n\n// In your tests\ndescribe('MyComponent', () => {\n  it('renders member list', async () => {\n    const mockHttp = new MockHttpClient();\n    mockHttp.onGet('/api/members').reply(200, [\n      { id: '1', firstName: 'John' },\n      { id: '2', firstName: 'Jane' },\n    ]);\n\n    render(\n      <TestProvider http={mockHttp}>\n        <MemberList />\n      </TestProvider>\n    );\n\n    await waitFor(() => {\n      expect(screen.getByText('John')).toBeInTheDocument();\n    });\n  });\n});\n\n// Create mock data\nconst mockUser = createMockUser({\n  firstName: 'Test',\n  roles: ['admin'],\n});\n\nconst mockPaged = createMockPagedResult([item1, item2], {\n  page: 1,\n  pageSize: 20,\n  totalItems: 100,\n});\n```\n\n---\n\n## API Reference\n\n### Core Classes\n\n| Class | Description |\n|-------|-------------|\n| `HttpClient` | HTTP client for API requests with interceptors and retry logic |\n| `AuthManager` | Authentication state management with automatic token refresh |\n| `PermissionManager` | Role-based and feature-based access control |\n| `PresenceClient` | SignalR presence tracking hub client |\n| `ApplicationLogsClient` | SignalR application logs streaming client |\n| `ApiLogsClient` | SignalR API request logs streaming client |\n| `QueryLogsClient` | SignalR database query logs streaming client |\n| `DashboardClient` | SignalR dashboard statistics client |\n| `ErrorHandler` | Global error handling with custom error types |\n| ~~`RealtimeClient`~~ | ⚠️ Deprecated - Use SignalR-based clients instead |\n\n### React Hooks\n\n#### Core Hooks\n\n| Hook | Description |\n|------|-------------|\n| `useCCMS()` | Access full SDK context |\n| `useAuth()` | Authentication state and actions |\n| `useHttpClient()` | HTTP client instance |\n| `usePermissions()` | Permission manager instance |\n\n#### API Hooks\n\n| Hook | Description |\n|------|-------------|\n| `useQuery()` | Data fetching with caching |\n| `useMutation()` | Data mutations |\n| `useInfiniteQuery()` | Paginated/infinite data |\n| `usePrefetch()` | Prefetch data for navigation |\n\n#### Service Hooks\n\n| Hook | Services | Description |\n|------|----------|-------------|\n| `useTaskServices()` | 12 | Task, TaskStatus, TaskPriority, TaskAssignment, TaskComment, TaskNotification, etc. |\n| `useUsersServices()` | 9 | User, Role, Right, Auth, Audit, Admin, System, UserPreferences, UserPushDevice |\n| `useMembersServices()` | 9 | Member, Family, MemberType, MaritalStatus, MemberAddress, Allergy, Disability, etc. |\n| `useMeetingsServices()` | 14 | Meeting, MeetingStatus, MeetingType, MeetingVenue, MeetingAttendee, MeetingSetup, etc. |\n| `useLocationsServices()` | 8 | Location, Address, LocationInfo, LocationLeader, LocationVenue, ServiceTime, etc. |\n| `useFileServices()` | 2 | File, MultipartUpload |\n| `useCommunicationServices()` | 6 | Email, Sms, PushNotification, WhatsApp, Template, Device |\n| `useSupplierServices()` | 4 | Supplier, SupplierCategory, SupplierContact, SupplierNote |\n| `useResourcesServices()` | 8 | Course, CourseCategory, CourseSession, UsageLog, CourseStatus, etc. |\n| `useProjectsServices()` | 17 | Project, ProjectStatus, ProjectMilestone, ProjectTeamMember, TaskTimeLog, etc. |\n| `useProcurementsServices()` | 18 | PurchaseRequest, Quotation, Invoice, RequestAttachment, SagePurchaseOrder, etc. |\n| `useProductsServices()` | 8 | Product, ProductType, ProductColor, ProductSize, ProductStock, etc. |\n| `usePaymentServices()` | 14 | PaymentTransaction, Payer, Settlement, Refund, BillingAgreement, PayFast, etc. |\n| `useOrderServices()` | 6 | Order, OrderLine, OrderPayment, OrderStatus, PaymentStatus, OrderNotification |\n| `useHrServices()` | 19 | Employee, Leave, Duty, EmployeeFile, LeaveDocument, Policy, etc. |\n| `useDepartmentsServices()` | 10 | Department, Designation, Ministry, MinistryActivity, MinistryRole, etc. |\n| `useFeedbackServices()` | 5 | Feedback, FeedbackCategory, FeedbackType, FeedbackNotification, etc. |\n| `useSystemServices()` | 10 | System, ApiRequestLog, QueryPerformanceLog, Health, RabbitMQ, Redis, etc. |\n| `useGeneratorsServices()` | 4 | Barcode, QrCode, UtilityCode, GeneratedCode |\n\n#### Realtime Hooks - Presence (4 hooks)\n\n| Hook | Return Type | Description |\n|------|-------------|-------------|\n| `usePresence()` | `{ state, updateStatus, getUserPresence, getOnlineUsers, getAllPresence }` | Main presence hook with full state and methods |\n| `usePresenceStatus()` | `PresenceStatus` | Get current user's presence status (Online/Away/Busy/Offline) |\n| `useOnlineUsers()` | `UserPresenceUpdate[]` | Get array of all currently online users |\n| `useUserPresence(userId)` | `UserPresenceUpdate \\| null` | Get specific user's real-time presence information |\n\n**Presence State includes:** isConnected, currentUserPresence, onlineUsers (Map), connectionError\n\n#### Realtime Hooks - Logs (4 hooks)\n\n| Hook | Return Type | Description |\n|------|-------------|-------------|\n| `useApplicationLogs(options)` | `{ logs, isConnected, subscribe, unsubscribe, clearLogs, loadRecent, ... }` | Stream application logs with filtering (errors, warnings, info) |\n| `useApiLogs(options)` | `{ logs, isConnected, subscribe, unsubscribe, ... }` | Stream API request logs (HTTP requests, responses, performance) |\n| `useQueryLogs(options)` | `{ logs, isConnected, subscribe, unsubscribe, ... }` | Stream database query logs (query performance, slow queries) |\n| `useDashboard(options)` | `{ stats, refreshStats, getLogsByCorrelationId, getRecentErrors, ... }` | Real-time system statistics and aggregated metrics |\n\n**Common Options:** `autoConnect`, `filter` (serviceNames, logLevels, etc.), `maxBufferSize`, `autoLoadRecent`, `onLog`\n\n#### Utility Hooks\n\n| Hook | Description |\n|------|-------------|\n| `useDebounce()` | Debounced values |\n| `useThrottle()` | Throttled values |\n| `usePrevious()` | Previous value tracking |\n| `useStorage()` | Cross-platform storage |\n| `useNetworkStatus()` | Online/offline detection |\n| `useToggle()` | Boolean state toggle |\n| `useCounter()` | Counter with min/max |\n| `useArray()` | Array state operations |\n| `useMap()` | Map state operations |\n| `useInterval()` | Declarative intervals |\n| `useTimeout()` | Declarative timeouts |\n| `useMediaQuery()` | Responsive media queries |\n| `useClipboard()` | Clipboard operations |\n| `useClickOutside()` | Click outside detection |\n| `useKeyPress()` | Keyboard shortcuts |\n\n#### Upload Hooks\n\n| Hook | Description |\n|------|-------------|\n| `useFileUpload()` | File upload with progress |\n| `useMultipartUpload()` | Large file multipart upload |\n\n### React Components\n\n| Component | Description |\n|-----------|-------------|\n| `CCMSProvider` | Root provider component |\n| `Can` | Feature-based rendering |\n| `RequireAuth` | Authentication guard |\n| `RequireRole` | Role-based rendering |\n| `RequireRight` | Permission-based rendering |\n| `ErrorBoundary` | Error boundary with fallback |\n\n---\n\n## Deprecation Notices\n\n### Legacy Realtime Module\n\nThe original `RealtimeClient` and related hooks are deprecated and will be removed in version 2.0.0.\n\n#### Deprecated APIs\n\n- `RealtimeClient` class\n- `useConnectionState()` hook\n- `useRealtimeConnection()` hook\n- `useRealtimeEvent()` hook\n- `useRealtimeMessage()` hook\n- `useRealtimeSend()` hook\n- `useRealtimeGroup()` hook\n- Legacy `usePresence()` hook\n\n#### Migration Path\n\n| Old API | New API | Module |\n|---------|---------|--------|\n| `RealtimeClient` | `PresenceClient`, `ApplicationLogsClient`, etc. | `@actschurch/ccms-sdk/realtime/*` |\n| `useConnectionState()` | `usePresence().state` | `@actschurch/ccms-sdk/realtime/presence` |\n| `usePresence()` | `usePresence()` (new API) | `@actschurch/ccms-sdk/realtime/presence` |\n| `useRealtimeEvent()` | `useApplicationLogs()`, `useApiLogs()`, etc. | `@actschurch/ccms-sdk/realtime/logs` |\n\nFor detailed migration instructions, see the [Realtime Module Documentation](src/realtime/README.md#migration-guide).\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n---\n\n## Support\n\n- Documentation: [docs.ccms.com](https://docs.ccms.com)\n- Issues: [GitHub Issues](https://github.com/your-org/ccms-sdk/issues)\n- Email: support@ccms.com\n","readmeFilename":"README.md"}