{"_id":"@bastards/bcs-data-localfs","name":"@bastards/bcs-data-localfs","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@bastards/bcs-data-localfs","version":"0.2.0","description":"Local filesystem implementation of the BCS CMS datalayer","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","lint":"eslint src --ext .ts","type-check":"tsc --noEmit"},"keywords":["bcs","cms","datalayer","filesystem"],"author":{"name":"Software Bastards"},"license":"MIT","dependencies":{"@bastards/bcs":"*"},"devDependencies":{"@repo/eslint-config":"*","@repo/typescript-config":"*","@types/node":"^20.11.19","typescript":"^5.3.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"_id":"@bastards/bcs-data-localfs@0.2.0","gitHead":"ee1075160d84e72bb00feb01842e2bf3866c217c","_nodeVersion":"22.12.0","_npmVersion":"11.1.0","dist":{"integrity":"sha512-hfYxGAx6mlFbVj0F8trAv25wSlxgEQwvCy/upLXpH47s7pV0z2+A1OTRUXqtQUGOfT6NmZzREzKvbJ6CZdO52Q==","shasum":"35ef1bb448c018c955c2884f4403b31823206bb8","tarball":"https://registry.npmjs.org/@bastards/bcs-data-localfs/-/bcs-data-localfs-0.2.0.tgz","fileCount":9,"unpackedSize":17801,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDHNl1hGCzKfrXCNbo1jaFJCPST1xW4FpBeDaygEy6BeAiA2GalqUb8ivXkN/qxiQt48HGhuMI8pC9V7cL69tl0Huw=="}]},"_npmUser":{"name":"dympydev","email":"dympydev@gmail.com"},"directories":{},"maintainers":[{"name":"dympydev","email":"dympydev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bcs-data-localfs_0.2.0_1742765913226_0.5556963340435346"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-23T21:38:33.103Z","0.2.0":"2025-03-23T21:38:33.409Z","modified":"2025-03-23T21:38:33.788Z"},"maintainers":[{"name":"dympydev","email":"dympydev@gmail.com"}],"description":"Local filesystem implementation of the BCS CMS datalayer","keywords":["bcs","cms","datalayer","filesystem"],"author":{"name":"Software Bastards"},"license":"MIT","readme":"# @bastards/bcs-data-localfs 💾\r\n\r\nA local filesystem implementation of the BCS data layer that provides simple and efficient content storage using JSON files in your project directory.\r\n\r\n## Features 🌟\r\n\r\n- **Simple File Storage** 📁\r\n  - Store content as JSON files\r\n  - Automatic file organization by schema\r\n  - Easy version control integration\r\n  - Direct file system access\r\n\r\n- **Type-Safe Content** 🛡️\r\n  - Full TypeScript support\r\n  - Schema-based type generation\r\n  - Runtime type validation\r\n  - Strongly typed content access\r\n\r\n- **Developer Friendly** 💻\r\n  - Zero configuration needed\r\n  - Instant setup\r\n  - Easy content inspection\r\n  - Human-readable storage format\r\n\r\n- **Media Management** 🖼️\r\n  - Local media file storage\r\n  - Automatic file organization\r\n  - Public URL generation\r\n  - Media metadata handling\r\n\r\n## Installation 📦\r\n\r\n```bash\r\nnpm install @bastards/bcs-data-localfs\r\n# or\r\npnpm add @bastards/bcs-data-localfs\r\n# or\r\nyarn add @bastards/bcs-data-localfs\r\n```\r\n\r\n## Usage 🚀\r\n\r\n1. Configure the content endpoints in your `bcs.config.ts`:\r\n\r\n```typescript\r\nimport { defineConfig } from '@bastards/bcs';\r\n\r\nexport default defineConfig({\r\n  admin: {\r\n    // ... other admin config\r\n    data: {\r\n      content: '/api/bcs/content',  // Content endpoint\r\n      media: '/api/bcs/media'       // Media endpoint\r\n    }\r\n  },\r\n  build: {\r\n    adminOutputDir: './static/admin',\r\n    typesOutputDir: './src/lib/bcs-types'  // Where to generate TypeScript types\r\n  }\r\n});\r\n```\r\n\r\n2. Set up the content API endpoints in your application (example in SvelteKit):\r\n\r\n```typescript\r\n// src/routes/api/bcs/content/+server.ts\r\nimport { localFs } from '@bastards/bcs-data-localfs';\r\n\r\nexport const GET = async ({ url }) => {\r\n  const storage = localFs();\r\n  return storage.handleContentRequest(url);\r\n};\r\n\r\nexport const POST = async ({ request }) => {\r\n  const storage = localFs();\r\n  return storage.handleContentRequest(request);\r\n};\r\n\r\n// src/routes/api/bcs/media/+server.ts\r\nimport { localFs } from '@bastards/bcs-data-localfs';\r\n\r\nexport const GET = async ({ url }) => {\r\n  const storage = localFs();\r\n  return storage.handleMediaRequest(url);\r\n};\r\n\r\nexport const POST = async ({ request }) => {\r\n  const storage = localFs();\r\n  return storage.handleMediaRequest(request);\r\n};\r\n```\r\n\r\n3. Your content will be automatically stored in:\r\n   - `./content/` - JSON files for each schema\r\n   - `./static/media/` - Uploaded media files\r\n\r\n## Directory Structure 📂\r\n\r\n```\r\nyour-project/\r\n├── content/\r\n│   ├── Main.json\r\n│   └── General.json\r\n├── static/\r\n│   ├── media/\r\n│   │   └── uploads/\r\n│   └── admin/\r\n└── src/\r\n    └── lib/\r\n        └── bcs-types/\r\n            └── schema.d.ts\r\n```\r\n\r\n## API Reference 📚\r\n\r\nThe package exports the following:\r\n\r\n```typescript\r\nfunction localFs(options?: {\r\n  contentDir?: string;     // Override default content directory\r\n  mediaDir?: string;       // Override default media directory\r\n}): StorageHandler;\r\n\r\ninterface StorageHandler {\r\n  handleContentRequest(urlOrRequest: URL | Request): Promise<Response>;\r\n  handleMediaRequest(urlOrRequest: URL | Request): Promise<Response>;\r\n}\r\n```\r\n\r\n## Content Format 📄\r\n\r\nContent is stored as JSON files, one per schema:\r\n\r\n```json\r\n{\r\n  \"welcomeSection\": {\r\n    \"title\": \"Welcome to BCS\",\r\n    \"emoji\": \"🚀\",\r\n    \"subtitle\": \"A modern CMS for modern web development\"\r\n  }\r\n}\r\n```\r\n\r\n## Contributing 🤝\r\n\r\nWe welcome contributions! Please see our [Contributing Guide](https://github.com/softwarebastards/bcs/blob/main/CONTRIBUTING.md) for details.\r\n\r\n## License 📄\r\n\r\nMIT - see the [main project repository](https://github.com/softwarebastards/bcs) for details.\r\n\r\n## Learn More 📚\r\n\r\nFor more information about BCS and its features, check out:\r\n- [BCS Documentation](https://bcs-cms.dev/docs) (Coming soon, still working on it!)\r\n- [Main Project README](https://github.com/softwarebastards/bcs#readme)\r\n- [Software Bastards](https://softwarebastards.nl) ","readmeFilename":"README.md","_rev":"1-8644a89a114adf26a87b5620af7b2c74"}