{"_id":"@alancode95/core-prisma","name":"@alancode95/core-prisma","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@alancode95/core-prisma","version":"1.0.0","type":"module","main":"src/index.ts","exports":{"./Support/Auth":"./src/Support/Auth/index.ts","./Support/Broadcasting":"./src/Support/Broadcasting/index.ts","./Support/Cache":"./src/Support/Cache/index.ts","./Support/Database":"./src/Support/Database/index.ts","./Support/Encryption":"./src/Support/Encryption/index.ts","./Support/Events":"./src/Support/Events/index.ts","./Support/Logging":"./src/Support/Logging/index.ts","./Support/Mail":"./src/Support/Mail/index.ts","./Support/Maintenance":"./src/Support/Maintenance/index.ts","./Support/Notifications":"./src/Support/Notifications/index.ts","./Support/Queue":"./src/Support/Queue/index.ts","./Support/Routing":"./src/Support/Routing/index.ts","./Support/Runtime":"./src/Support/Runtime/index.ts","./Support/Scheduling":"./src/Support/Scheduling/index.ts","./Support/Storage":"./src/Support/Storage/index.ts","./Support/Broadcasting/Channels":"./src/Support/Broadcasting/Channels.ts","./Support/Broadcasting/Broadcaster":"./src/Support/Broadcasting/Broadcaster.ts","./Bootstrap/*":"./src/Bootstrap/*.ts","./Config/*":"./src/Config/*.ts","./Console/*":"./src/Console/*.ts","./Http/Middlewares/*":"./src/Http/Middlewares/*.ts","./Providers/*":"./src/Providers/*.ts","./Scripts/*":"./src/Scripts/*.ts","./tests/*":"./tests/*.ts","./*":"./src/*.ts"},"peerDependencies":{"elysia":"^1.1.25","@prisma/client":"^7.9.0","mysql2":"^3.11.0","pino":"^9.5.0","postgres":"^3.4.4","zod":"^3.23.8"},"peerDependenciesMeta":{"mysql2":{"optional":true},"postgres":{"optional":true}},"dependencies":{"@libsql/client":"^0.17.4","@prisma/adapter-libsql":"^7.9.0","@prisma/adapter-mariadb":"^7.9.0","@prisma/adapter-pg":"^7.9.0","bcryptjs":"^3.0.3","fast-glob":"^3.3.3","ioredis":"^5.11.1"},"devDependencies":{"@types/bcryptjs":"^3.0.0","@types/bun":"^1.3.14","prisma":"^7.9.0"},"_id":"@alancode95/core-prisma@1.0.0","description":"Paket inti (core package) yang membungkus berbagai fitur backend penting untuk aplikasi modern berbasis **Bun** dan **Elysia.js**. Paket ini dirancang untuk memberikan fondasi yang kuat, terstruktur, dan terskala dengan mengintegrasikan ORM, sistem antrea","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-W6OvrUnL7dCbd4mU0ixdSSeZQrrSa+9ozotVA118srKjbwgFzFcMH+mFyG2cU51Xqvg21E3uZkMsndgjMNdliA==","shasum":"f8daf27eba0a52fb8a12009587aae3fa0b4968d8","tarball":"https://registry.npmjs.org/@alancode95/core-prisma/-/core-prisma-1.0.0.tgz","fileCount":357,"unpackedSize":1169724,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQChOUamEh2rq+Lh8LowBrFN0/7NqMd5ZuiLMdP9bu7HXwIgcHVyAWXT07NHjK2cSqQ7FLE6sdLYtjGcomLB1KA24S8="}]},"_npmUser":{"name":"alancode95","email":"alangentina95@gmail.com"},"directories":{},"maintainers":[{"name":"alancode95","email":"alangentina95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-prisma_1.0.0_1784793006307_0.4298997657022883"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T07:50:06.061Z","1.0.0":"2026-07-23T07:50:06.457Z","modified":"2026-07-23T07:50:06.914Z"},"maintainers":[{"name":"alancode95","email":"alangentina95@gmail.com"}],"description":"Paket inti (core package) yang membungkus berbagai fitur backend penting untuk aplikasi modern berbasis **Bun** dan **Elysia.js**. Paket ini dirancang untuk memberikan fondasi yang kuat, terstruktur, dan terskala dengan mengintegrasikan ORM, sistem antrea","readme":"# @alancode95/core-prisma\n\nPaket inti (core package) yang membungkus berbagai fitur backend penting untuk aplikasi modern berbasis **Bun** dan **Elysia.js**. Paket ini dirancang untuk memberikan fondasi yang kuat, terstruktur, dan terskala dengan mengintegrasikan ORM, sistem antrean, cache, otentikasi, dan berbagai utilitas lainnya.\n\n## 🚀 Fitur Utama\n\nPaket ini menyediakan modul-modul (Support modules) berikut:\n\n- **Database (Prisma ORM)**\n  Mendukung berbagai dialek database relasional, dipilih saat runtime lewat `DB_CONNECTION`:\n  - MySQL / MariaDB (`provider = \"mysql\"`)\n  - PostgreSQL (`provider = \"postgresql\"`)\n  - SQLite (`provider = \"sqlite\"`)\n  Setiap dialek punya schema Prisma sendiri di `prisma-<dialek>/schema.prisma` dengan client ter-generate terpisah (`src/generated/prisma/<dialek>`), sehingga peralihan dialek runtime tetap terjaga.\n  *Catatan: Dukungan terhadap **Supabase** juga tersedia karena Supabase menggunakan PostgreSQL (cukup masukkan URL database Supabase pada konfigurasi).*\n  \n- **Authentication & Authorization**\n  Manajemen otentikasi (JWT / Session), hashing kata sandi dengan `bcryptjs`, manajemen token, dan pengaturan policy/otorisasi akses.\n  \n- **Cache Management**\n  Sistem caching yang dinamis dan mendukung beberapa driver (File, Database, dan Redis via `ioredis`).\n  \n- **Queue & Background Jobs**\n  Sistem antrean pekerjaan (queueing) asinkron untuk memproses background jobs menggunakan database queue.\n\n- **Broadcasting & Events**\n  Sistem event-driven dan broadcasting data secara realtime (misalnya menggunakan RedisBroadcaster).\n  \n- **Storage & Uploads**\n  Manajemen file dan penyimpanan yang mendukung penyimpanan disk lokal (Local) maupun cloud/object storage seperti AWS S3 (S3StorageDisk).\n\n- **Logging**\n  Sistem logging terpusat dan terstruktur menggunakan `pino`, lengkap dengan penyaringan error, peringatan, dan rotasi log.\n\n- **Mail & Notifications**\n  Dukungan pengiriman email melalui SMTP dan notifikasi multi-saluran (multi-channel).\n\n- **Scheduling**\n  Manajemen Cron Jobs atau penjadwalan tugas latar belakang.\n\n## 📦 Instalasi\n\nJika Anda menggunakan [Bun](https://bun.sh/):\n\n```bash\nbun add @alancode95/core-prisma\n```\n\nPastikan juga untuk menginstal *peer dependencies* yang diperlukan (Prisma **7**):\n\n```bash\nbun add elysia @prisma/client pino zod\nbun add -d prisma\n```\n\nDriver database di-runtime memakai **Prisma Driver Adapter** (Prisma 7 tidak lagi memakai URL koneksi klasik). Adapter berikut sudah menjadi dependency paket ini dan driver-nya ikut terpasang otomatis:\n- SQLite → `@prisma/adapter-libsql` (memakai `@libsql/client`; dipilih karena `better-sqlite3` native gagal di-load di Bun)\n- MySQL/MariaDB → `@prisma/adapter-mariadb`\n- PostgreSQL/Supabase → `@prisma/adapter-pg`\n\nPerkakas reset schema (`db:migrate:fresh`/`db:migrate:reset`) memakai driver mentah terpisah (opsional, hanya untuk dialek terkait):\n\n```bash\nbun add mysql2      # untuk reset MySQL/MariaDB\nbun add postgres    # untuk reset PostgreSQL/Supabase\n```\n\nSetelah itu, generate Prisma Client untuk tiap dialek yang dipakai:\n\n```bash\nbunx prisma generate --schema=prisma-mysql/schema.prisma\nbunx prisma generate --schema=prisma-postgresql/schema.prisma\nbunx prisma generate --schema=prisma-sqlite/schema.prisma\n```\n\n## 🛠 Konfigurasi Database\n\nPaket ini menggunakan **Prisma ORM (v7)** sebagai fondasi akses database. Konfigurasi otomatis diambil dari variabel lingkungan (`.env`). Perintah `db:*` (mis. `bun run db:migrate`) memilih schema `prisma-<DB_CONNECTION>/schema.prisma` dan menyetel `DATABASE_URL` yang sesuai secara otomatis; client runtime tersambung lewat driver adapter per-dialek. Path SQLite di-resolusi absolut agar CLI migrasi dan adapter runtime menunjuk file yang sama.\n\n### 1. MySQL (Default)\n```env\nDB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=nama_database\nDB_USERNAME=root\nDB_PASSWORD=secret\n```\n\n### 2. PostgreSQL / Supabase\nSupabase menggunakan PostgreSQL sehingga cukup arahkan parameter ke pooler Supabase.\n```env\nDB_CONNECTION=postgresql\nDB_HOST=aws-0-ap-southeast-1.pooler.supabase.com\nDB_PORT=6543\nDB_DATABASE=postgres\nDB_USERNAME=postgres.xxxx\nDB_PASSWORD=secret_password\nDB_SSL=require\n```\n\n### 3. SQLite\n```env\nDB_CONNECTION=sqlite\nDB_URL=database/database.sqlite\n```\n\n*(Catatan Audit: Saat ini MongoDB belum didukung secara bawaan karena lapisan database berfokus pada database relasional SQL. Prisma sebenarnya memiliki konektor MongoDB, namun mengaktifkannya memerlukan schema/relasi terpisah di luar cakupan paket ini.)*\n\n## 📚 Struktur Modul (Ekspor)\n\nAnda dapat mengimpor modul yang spesifik langsung dari sub-path yang disediakan:\n\n```typescript\n// Contoh impor modul database\nimport { getDatabaseClient } from \"@alancode95/core-prisma/Support/Database\";\n\n// Contoh impor modul cache\nimport { CacheManager } from \"@alancode95/core-prisma/Support/Cache\";\n\n// Contoh impor modul antrean\nimport { QueueManager } from \"@alancode95/core-prisma/Support/Queue\";\n```\n\nUntuk melihat daftar lengkap ekspor, Anda dapat memeriksa *exports* field di dalam `package.json`.\n\n## 🔒 Otentikasi dan Keamanan\n\nFungsi otentikasi bawaan sudah dilengkapi dengan enkripsi password (menggunakan bcrypt) dan pengelolaan token pembaharuan (reset token). Modul `Encryption` juga dapat dimanfaatkan untuk melakukan enkripsi dan dekripsi data sensitif dalam aplikasi.\n\n## 🚦 Routing dan Middleware\n\nTerintegrasi erat dengan *Elysia*, paket ini juga memiliki dukungan pengelolaan middleware bawaan untuk menyaring *request* seperti batasan akses (Rate Limiting), perlindungan CSRF, dan pembersihan data (Sanitization).\n\n## 📄 Lisensi\nHak Cipta © 2026. Alancode95.\n","readmeFilename":"README.md","_rev":"1-7846c886a0a287f21802e025fea455bd"}