{"_id":"@alleen/core","_rev":"9-3ee896de3fc3e1866d2abc55fd7b4fe6","name":"@alleen/core","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"name":"@alleen/core","version":"0.1.0","author":{"name":"OLIVIER ADOU"},"license":"ISC","_id":"@alleen/core@0.1.0","maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"dist":{"shasum":"d91260f1f26be73f7d849e512fff9cb08a757485","tarball":"https://registry.npmjs.org/@alleen/core/-/core-0.1.0.tgz","fileCount":34,"integrity":"sha512-cqnvK1cfqYt3oCUimgZogf9vHP9WWXuRNiTyKpg/AH0bvt40erfg225cWK+lfskKtbu5qgruiKJIjg2x79wZfQ==","signatures":[{"sig":"MEYCIQCvm4Hwu7GAVCX8rA83o0NvTLlLCQlDKiB5HAvbaT3kIQIhANw+ZVEEKztLRcvZnMhxG06e6Q6RodjltIO+wcTvFw3h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40971},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"ts-node src/index.ts","build":"tsc"},"_npmUser":{"name":"olivieradou","email":"adouolivier@outlook.com"},"_npmVersion":"10.8.2","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","directories":{},"_nodeVersion":"18.20.8","dependencies":{"rxjs":"^7.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.4.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1775407733839_0.20500606673319788","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alleen/core","version":"0.1.1","author":{"name":"OLIVIER ADOU"},"license":"ISC","_id":"@alleen/core@0.1.1","maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"dist":{"shasum":"a5d2abceea07bb793e27196d8925cfbe6ec3937b","tarball":"https://registry.npmjs.org/@alleen/core/-/core-0.1.1.tgz","fileCount":34,"integrity":"sha512-SXdkrC9Ff8PsxSgmjYxjdcZ2gtWOTr8W1mXhrExiskOPzea9eC+TkUi/z5Y/LE4iJwJ6AbK2q0lDP5/noXlIJg==","signatures":[{"sig":"MEUCIB/D7ZiBCzfrffkxwAgsgRwaDYRuByoimryy91H48vxQAiEA+SRRymjvo44hJ3jxwqMI6Ywr6mL4xP4Yn5FcoawJ4S8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40971},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"ts-node src/index.ts","build":"tsc"},"_npmUser":{"name":"olivieradou","email":"adouolivier@outlook.com"},"_npmVersion":"10.8.2","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","directories":{},"_nodeVersion":"18.20.8","dependencies":{"rxjs":"^7.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.4.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.1_1775431859683_0.8081163872248043","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alleen/core","version":"0.1.2","author":{"name":"OLIVIER ADOU"},"license":"ISC","_id":"@alleen/core@0.1.2","maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"dist":{"shasum":"55f79ad7a2da5b441657cd5973663b2cda7f3e5b","tarball":"https://registry.npmjs.org/@alleen/core/-/core-0.1.2.tgz","fileCount":34,"integrity":"sha512-z7cdt03qCycc57wuN/05E94QKBdIkMT9sQcpFnT+afbnmdl65ShRKC7V4NQomT9c/eIrJa70/X3erA/pGxPbwg==","signatures":[{"sig":"MEUCIHzTPq9MFP65H7kAX8O2yYqYRW+vmB5HplRJP/qONZK1AiEA1xackBl8WHuXNQuyIpvX1Ckd3bDMykt6OBlNCWzKf6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37870},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"ts-node src/index.ts","build":"tsc"},"_npmUser":{"name":"olivieradou","email":"adouolivier@outlook.com"},"_npmVersion":"10.8.2","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","directories":{},"_nodeVersion":"18.20.8","dependencies":{"rxjs":"^7.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.4.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.2_1775432276362_0.629578426557319","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alleen/core","version":"0.1.3","author":{"name":"OLIVIER ADOU"},"license":"ISC","_id":"@alleen/core@0.1.3","maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"dist":{"shasum":"ce764590900fc1e1cde28dd1fd740ba6e9b2f78f","tarball":"https://registry.npmjs.org/@alleen/core/-/core-0.1.3.tgz","fileCount":38,"integrity":"sha512-X6QBXYH8s0Qr9UpFFrer3zgYRMaqT2uWhYrQ2SzJ7881WGIbsoSWsuHpsErjDWPC89cOrASeMFTUJat88d6unw==","signatures":[{"sig":"MEQCIEPoyTxAZUfxlWVU0xVcuJqx5hcAsRx86fZpLEEw/6xqAiAy0CJUuhG8TopnjqcBmDriMqnibCivXGwzjOq4cv/nuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38357},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"dev":"ts-node src/index.ts","build":"tsc"},"_npmUser":{"name":"olivieradou","email":"adouolivier@outlook.com"},"_npmVersion":"10.8.2","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","directories":{},"_nodeVersion":"18.20.8","dependencies":{"rxjs":"^7.8.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.4.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","reflect-metadata":"^0.1.13"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.3_1775464019259_0.4531790550714385","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alleen/core","version":"1.0.1","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","publishConfig":{"access":"public"},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","dev":"ts-node src/index.ts"},"peerDependencies":{"@nestjs/common":"^10.0.0","@nestjs/core":"^10.0.0","reflect-metadata":"^0.1.13"},"devDependencies":{"@nestjs/common":"^10.0.0","@nestjs/core":"^10.0.0","@types/node":"^20.0.0","reflect-metadata":"^0.1.13","ts-node":"^10.9.2","typescript":"^5.4.0"},"engines":{"node":">=18.0.0"},"dependencies":{"rxjs":"^7.8.2"},"author":{"name":"OLIVIER ADOU"},"license":"ISC","_id":"@alleen/core@1.0.1","gitHead":"ccaa0585784198e1cf229391bf427e328398c6bb","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-e2LgEsm+nOjrakwREApQlieGfnbPPCGfJjLuqjyKJII02SDa1gmejh8z0kFs5bK1DejsMA8fL3lN2KaCaa95/w==","shasum":"b283a5309783001ac998d60c7eb0ebb2e7f8ab7e","tarball":"https://registry.npmjs.org/@alleen/core/-/core-1.0.1.tgz","fileCount":38,"unpackedSize":38470,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIATq12no+EipMPLCS6aoXyM5e6WzIrzPzBNyAvEYGw3NAiA9PKXp3y6LSuKCgaColMSaojr9qB7BdzbFVpAY1KvEMw=="}]},"_npmUser":{"name":"olivieradou","email":"adouolivier@outlook.com"},"directories":{},"maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.0.1_1775517326506_0.17112615013926824"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-05T16:48:53.715Z","modified":"2026-04-06T23:15:26.847Z","0.1.0":"2026-04-05T16:48:54.000Z","0.1.1":"2026-04-05T23:30:59.827Z","0.1.2":"2026-04-05T23:37:56.510Z","0.1.3":"2026-04-06T08:26:59.400Z","2.0.0":"2026-04-06T22:56:44.105Z","1.0.0":"2026-04-06T23:02:19.682Z","1.0.1":"2026-04-06T23:15:26.693Z"},"author":{"name":"OLIVIER ADOU"},"license":"ISC","description":"Core NestJS module for alleen-api — dynamic multi-database Prisma registry","maintainers":[{"name":"olivieradou","email":"adouolivier@outlook.com"}],"readme":"# @alleen/core\n\n> ⚠️ **Important**\n>\n> This package cannot function on its own.  \n> It is designed as a required dependency for **alleen** to work properly within a project.\n>\n> 👉 To correctly initialize a compatible project, use the official repository:  \n> https://github.com/olivierAdou/alleen-api.git\n\n\n> Core NestJS module for **alleen-api** — Dynamic multi-database Prisma registry. No more switch statements.\n\n---\n\n## Installation\n\n```bash\nnpm install @alleen/core\n```\n\n---\n\n## Setup (3 étapes)\n\n### 1. Ajouter tes bases de données via le CLI\n```bash\nnpx alleen db:add --name=phoenix --url=postgresql://...\nnpx alleen db:add --name=bulk    --url=postgresql://...\n```\n\n### 2. Brancher dans `app.module.ts`\n```ts\nimport { AlleenModule } from '@alleen/core';\nimport { PRISMA_REGISTRY, PRISMA_PROVIDERS } from './prisma/prisma.registry';\n\n@Module({\n  imports: [\n    AlleenModule.forRoot({\n      registry:  PRISMA_REGISTRY,\n      providers: PRISMA_PROVIDERS,\n      exposeApi: true,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### 3. C'est tout ✅\nTon API est prête.\n\n---\n\n## Endpoints exposés automatiquement\n\n### `POST /alleen/query`\nEffectue n'importe quelle opération Prisma sur n'importe quelle DB enregistrée.\n\n```json\n{\n  \"database\": \"phoenix\",\n  \"model\":    \"User\",\n  \"action\":   \"findMany\",\n  \"args\": {\n    \"where\":   { \"active\": true },\n    \"include\": { \"profile\": true },\n    \"take\":    10\n  }\n}\n```\n\n**Réponse :**\n```json\n{\n  \"success\": true,\n  \"data\": [...],\n  \"meta\": {\n    \"database\": \"phoenix\",\n    \"model\":    \"User\",\n    \"action\":   \"findMany\",\n    \"duration\": 38\n  }\n}\n```\n\n---\n\n### `GET /alleen/databases`\nListe toutes les DBs enregistrées.\n```json\n{\n  \"success\": true,\n  \"databases\": [\"phoenix\", \"bulk\", \"finance\"]\n}\n```\n\n### `GET /alleen/health`\nHealth check.\n```json\n{\n  \"status\": \"ok\",\n  \"databases\": 3,\n  \"registered\": [\"phoenix\", \"bulk\", \"finance\"],\n  \"timestamp\": \"2026-04-05T10:00:00.000Z\"\n}\n```\n\n---\n\n## Actions Prisma supportées\n\n| Action | Description |\n|---|---|\n| `findUnique` | Trouver un enregistrement unique |\n| `findFirst` | Premier enregistrement correspondant |\n| `findMany` | Liste d'enregistrements |\n| `create` | Créer un enregistrement |\n| `createMany` | Créer plusieurs enregistrements |\n| `update` | Mettre à jour un enregistrement |\n| `updateMany` | Mettre à jour plusieurs enregistrements |\n| `upsert` | Créer ou mettre à jour |\n| `delete` | Supprimer un enregistrement |\n| `deleteMany` | Supprimer plusieurs enregistrements |\n| `count` | Compter les enregistrements |\n| `aggregate` | Agréger des données |\n| `groupBy` | Grouper des données |\n\n---\n\n## Utiliser `DatabaseService` directement\n\nPour les cas complexes, injecte `DatabaseService` dans tes propres services :\n\n```ts\nimport { Injectable }    from '@nestjs/common';\nimport { DatabaseService } from '@alleen/core';\n\n@Injectable()\nexport class OrderService {\n  constructor(private readonly db: DatabaseService) {}\n\n  async getActiveOrders() {\n    return this.db.execute({\n      database: 'phoenix',\n      model:    'Order',\n      action:   'findMany',\n      args: { where: { status: 'ACTIVE' } },\n    });\n  }\n}\n```\n\n---\n\n## Logging (optionnel)\n\n```ts\n// main.ts\nimport { AlleenLoggerInterceptor } from '@alleen/core';\n\napp.useGlobalInterceptors(new AlleenLoggerInterceptor());\n```\n\n```\n✅ [phoenix] User.findMany — 42ms\n✅ [bulk] Order.create — 18ms\n❌ [finance] Invoice.findUnique — 5ms\n```\n\n---\n\n## License\n\nMIT © olivier adou","readmeFilename":"README.md"}