{"_id":"@baotek/kubo-core","_rev":"3-ebb9e2c215ccdc611e7f1c14c07b6fa6","name":"@baotek/kubo-core","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@baotek/kubo-core","version":"0.1.0","_id":"@baotek/kubo-core@0.1.0","maintainers":[{"name":"vcoder","email":"doanngocbao@gmail.com"}],"dist":{"shasum":"b6361eab7d829758562bf673744d6a59612f0510","tarball":"https://registry.npmjs.org/@baotek/kubo-core/-/kubo-core-0.1.0.tgz","fileCount":44,"integrity":"sha512-a552rJtZAbChwIOUME9/vXOd31H9PhTKU2BhiFK6/vFJdXnkBQ7cXbSDN5OwU984Z0ATZjo9CTnoU34TgjJO5w==","signatures":[{"sig":"MEQCIEEIaM6ZC7TdB3ou9eEkJ+rXdfrP1sFWeYVTnBC5HCL8AiBoq0iL5YZ/IvB0uc5E3l8FVmzJr8e1rITiPi33UPbaVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32223},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"vcoder","email":"doanngocbao@gmail.com"},"repository":{"url":"https://github.com/baotek/kubo.git","type":"git","directory":"packages/core"},"directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.10","jsdom":"^24.1.0","react":"^19.2.8","vitest":"^3.2.4","react-dom":"^19.2.8","tsc-alias":"^1.8.10","typescript":"~5.6.2","@types/react":"^19.2.18","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.4.5","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^19.2.8"},"_npmOperationalInternal":{"tmp":"tmp/kubo-core_0.1.0_1787989241833_0.5979607327094252","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@baotek/kubo-core","version":"0.2.0","_id":"@baotek/kubo-core@0.2.0","maintainers":[{"name":"vcoder","email":"doanngocbao@gmail.com"}],"dist":{"shasum":"ad7cf93861d4d60ca4e83a3e185ddff5e7f30e85","tarball":"https://registry.npmjs.org/@baotek/kubo-core/-/kubo-core-0.2.0.tgz","fileCount":50,"integrity":"sha512-tF+YgAu2ntSyd0o4lyyJIVSleBCw21jD2AgUK3u42PQ1rGLM+7H9kcSRXhZovvKC0p9kCSk/UiJzlEeOlZMB5Q==","signatures":[{"sig":"MEMCHxexnaz2Nd3zjXc56vsFO6pvi0M32uumwkxh0xjThRkCIHbYskQEW34ft4Z2KqfCBkWq6d3ORQxRnSPGwYmrPV0w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41249},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"vcoder","email":"doanngocbao@gmail.com"},"repository":{"url":"https://github.com/baotek/kubo.git","type":"git","directory":"packages/core"},"directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.10","jsdom":"^24.1.0","react":"^19.2.8","vitest":"^3.2.4","react-dom":"^19.2.8","tsc-alias":"^1.8.10","typescript":"~5.6.2","@types/react":"^19.2.18","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.4.5","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^19.2.8"},"_npmOperationalInternal":{"tmp":"tmp/kubo-core_0.2.0_1788358512739_0.4035531052992192","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@baotek/kubo-core","version":"0.2.1","repository":{"type":"git","url":"https://github.com/baotek/kubo.git","directory":"packages/core"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"peerDependencies":{"react":"^19.2.8"},"devDependencies":{"@testing-library/jest-dom":"^6.4.5","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.6.1","@types/react":"^19.2.18","jsdom":"^24.1.0","react":"^19.2.8","react-dom":"^19.2.8","tsc-alias":"^1.8.10","typescript":"~5.6.2","vite":"^5.4.10","vitest":"^3.2.4"},"scripts":{"typecheck":"tsc --noEmit","build":"tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","test":"vitest run","test:watch":"vitest"},"_nodeVersion":"24.18.0","_id":"@baotek/kubo-core@0.2.1","dist":{"integrity":"sha512-ZsuONwfUP/r2Fk9/qL9frZBeXUefzVlMkIiEZT19wBqjqgYpq7HNVlj5gu656qgquUlwPrwHXeblxZpBGrbAKQ==","shasum":"36da0d4da1bc7dbd74895e44eae45f6f5f9f3ab6","tarball":"https://registry.npmjs.org/@baotek/kubo-core/-/kubo-core-0.2.1.tgz","fileCount":59,"unpackedSize":43091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC08klmBJ3zaqB/nh9NQeh8aZy54XBh9NS5WrxPjmR2qAIhAMKBiUILSxj7fspCwptFXKcGlXn3oGEgsZC64JAc21mn"}]},"_npmUser":{"name":"vcoder","email":"doanngocbao@gmail.com"},"directories":{},"maintainers":[{"name":"vcoder","email":"doanngocbao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kubo-core_0.2.1_1788580289145_0.3405425755745739"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-29T07:40:41.697Z","modified":"2026-09-05T03:51:29.481Z","0.1.0":"2026-08-29T07:40:41.990Z","0.2.0":"2026-09-02T14:15:12.877Z","0.2.1":"2026-09-05T03:51:29.307Z"},"repository":{"type":"git","url":"https://github.com/baotek/kubo.git","directory":"packages/core"},"maintainers":[{"name":"vcoder","email":"doanngocbao@gmail.com"}],"readme":"# @baotek/kubo-core\n\nHeadless data/auth/permission framework for Kubo back-office apps. No rendering opinions beyond\n`PermissionGuard`'s children/fallback behavior, and ships **zero built-in provider implementations** - your app\nwrites a `DataProvider`/`AuthProvider` adapter against its own backend, and everything else (hooks, guards,\nregistration) works unchanged regardless of what that backend looks like.\n\n## Install\n\n```bash\npnpm add @baotek/kubo-core\n```\n\n## What's in it\n\n- **`data`** - `DataProvider` interface (`getList`/`getOne`/`create`/`update`/`deleteOne`, react-admin/refine-shaped)\n  plus `usePaginatedList`/`useOne` hooks built against it, and `DataContextProvider` for wiring a provider instance\n  in.\n- **`auth`** - `AuthProvider` interface (`getIdentity` resolves `null` for \"not authenticated,\" doesn't reject),\n  `AuthContextProvider`/`useAuth`, and `PermissionGuard` (headless, permission + children + optional fallback).\n- **`menu`** - `registerMenuItems`, explicit-registration only (no auto-discovery); throws on duplicate keys by\n  design - a loud startup failure, not a bug to silence.\n- **`i18n`** - `registerTranslations` + `t(key, lang)` + `LangProvider`/`useLang`.\n\n## Usage\n\n```tsx\nimport { DataContextProvider, AuthContextProvider, LangProvider } from '@baotek/kubo-core'\nimport { dataProvider } from './providers/dataProvider'\nimport { authProvider } from './providers/authProvider'\n\nfunction App() {\n  return (\n    <LangProvider>\n      <AuthContextProvider provider={authProvider}>\n        <DataContextProvider provider={dataProvider}>{/* ... */}</DataContextProvider>\n      </AuthContextProvider>\n    </LangProvider>\n  )\n}\n```\n\nPairs with `@baotek/kubo-ui` for the component layer. Both are scaffolded automatically into new apps by Kubo's\n`kubo-init-app` agent skill.\n\nSource: https://github.com/baotek/kubo.git (`packages/core`).\n","readmeFilename":""}