prisma-flare 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.cjs +26 -82
- package/dist/cli/index.js +26 -82
- package/package.json +1 -1
- package/readme.md +15 -12
package/dist/cli/index.cjs
CHANGED
|
@@ -386,23 +386,32 @@ function generateClient() {
|
|
|
386
386
|
prismaClientImport = getPrismaClientPath(rootDir);
|
|
387
387
|
}
|
|
388
388
|
const isCustomOutput = hasCustomPrismaOutput(rootDir);
|
|
389
|
+
generateInNodeModules(rootDir, prismaClientImport, isCustomOutput);
|
|
389
390
|
if (isCustomOutput || config.prismaClientPath && config.prismaClientPath !== "@prisma/client") {
|
|
390
391
|
generateNextToPrismaClient(rootDir, prismaClientImport);
|
|
391
|
-
generateErrorStubInNodeModules(rootDir, prismaClientImport);
|
|
392
|
-
} else {
|
|
393
|
-
generateInNodeModules(rootDir);
|
|
394
392
|
}
|
|
395
393
|
}
|
|
396
|
-
function generateInNodeModules(rootDir) {
|
|
394
|
+
function generateInNodeModules(rootDir, prismaClientImport, isCustomOutput) {
|
|
397
395
|
const nodeModulesDir = path5.join(rootDir, "node_modules");
|
|
398
396
|
const prismaFlareDir = path5.join(nodeModulesDir, ".prisma-flare");
|
|
399
397
|
if (!fs5.existsSync(prismaFlareDir)) {
|
|
400
398
|
fs5.mkdirSync(prismaFlareDir, { recursive: true });
|
|
401
399
|
}
|
|
400
|
+
let resolvedImport;
|
|
401
|
+
if (prismaClientImport === "@prisma/client") {
|
|
402
|
+
resolvedImport = "@prisma/client";
|
|
403
|
+
} else {
|
|
404
|
+
resolvedImport = path5.relative(prismaFlareDir, prismaClientImport);
|
|
405
|
+
if (!resolvedImport.startsWith(".")) {
|
|
406
|
+
resolvedImport = "./" + resolvedImport;
|
|
407
|
+
}
|
|
408
|
+
resolvedImport = resolvedImport.replace(/\\/g, "/");
|
|
409
|
+
}
|
|
402
410
|
const esmContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
403
411
|
// This file provides FlareClient configured for your Prisma client output path
|
|
412
|
+
// Import path: ${prismaClientImport}
|
|
404
413
|
|
|
405
|
-
import { PrismaClient, Prisma } from '
|
|
414
|
+
import { PrismaClient, Prisma } from '${resolvedImport}';
|
|
406
415
|
import { createFlareClient } from 'prisma-flare';
|
|
407
416
|
|
|
408
417
|
// Create and export FlareClient using the factory
|
|
@@ -413,8 +422,9 @@ export { PrismaClient, Prisma };
|
|
|
413
422
|
`;
|
|
414
423
|
const cjsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
415
424
|
// This file provides FlareClient configured for your Prisma client output path
|
|
425
|
+
// Import path: ${prismaClientImport}
|
|
416
426
|
|
|
417
|
-
const { PrismaClient, Prisma } = require('
|
|
427
|
+
const { PrismaClient, Prisma } = require('${resolvedImport}');
|
|
418
428
|
const { createFlareClient } = require('prisma-flare');
|
|
419
429
|
|
|
420
430
|
// Create FlareClient using the factory
|
|
@@ -429,7 +439,7 @@ module.exports = {
|
|
|
429
439
|
const dtsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
430
440
|
// This file provides FlareClient configured for your Prisma client output path
|
|
431
441
|
|
|
432
|
-
import { PrismaClient as BasePrismaClient, Prisma as BasePrisma } from '
|
|
442
|
+
import { PrismaClient as BasePrismaClient, Prisma as BasePrisma } from '${resolvedImport}';
|
|
433
443
|
import type { FlareClientOptions } from 'prisma-flare';
|
|
434
444
|
import type { ModelName } from 'prisma-flare';
|
|
435
445
|
import type FlareBuilder from 'prisma-flare/flareBuilder';
|
|
@@ -482,83 +492,17 @@ export declare class FlareClient extends BasePrismaClient {
|
|
|
482
492
|
path5.join(prismaFlareDir, "package.json"),
|
|
483
493
|
JSON.stringify(packageJson, null, 2)
|
|
484
494
|
);
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
495
|
+
if (isCustomOutput) {
|
|
496
|
+
console.log(`\u2705 Generated .prisma-flare with custom Prisma output: ${prismaClientImport}`);
|
|
497
|
+
console.log(` Location: ${prismaFlareDir}`);
|
|
498
|
+
console.log(`
|
|
499
|
+
\u26A0\uFE0F For Turbopack/bundler compatibility, import from the generated flare.ts instead.`);
|
|
500
|
+
} else {
|
|
501
|
+
console.log(`\u2705 Generated prisma-flare client using @prisma/client`);
|
|
502
|
+
console.log(` Location: ${prismaFlareDir}`);
|
|
503
|
+
console.log(`
|
|
488
504
|
Import: import { FlareClient } from 'prisma-flare';`);
|
|
489
|
-
}
|
|
490
|
-
function generateErrorStubInNodeModules(rootDir, prismaClientImport) {
|
|
491
|
-
const nodeModulesDir = path5.join(rootDir, "node_modules");
|
|
492
|
-
const prismaFlareDir = path5.join(nodeModulesDir, ".prisma-flare");
|
|
493
|
-
if (!fs5.existsSync(prismaFlareDir)) {
|
|
494
|
-
fs5.mkdirSync(prismaFlareDir, { recursive: true });
|
|
495
|
-
}
|
|
496
|
-
let prismaOutputDir = prismaClientImport;
|
|
497
|
-
if (prismaOutputDir.endsWith("/client") || prismaOutputDir.endsWith("\\client")) {
|
|
498
|
-
prismaOutputDir = path5.dirname(prismaOutputDir);
|
|
499
505
|
}
|
|
500
|
-
const relativeFlareDir = path5.relative(rootDir, prismaOutputDir);
|
|
501
|
-
const correctImportPath = "./" + path5.join(relativeFlareDir, "flare").replace(/\\/g, "/");
|
|
502
|
-
const errorMessage = `
|
|
503
|
-
You are using a custom Prisma output path.
|
|
504
|
-
|
|
505
|
-
Instead of importing from 'prisma-flare', import from your generated flare file:
|
|
506
|
-
|
|
507
|
-
import { FlareClient } from '${correctImportPath}';
|
|
508
|
-
|
|
509
|
-
Run 'npx prisma-flare generate' after 'npx prisma generate' to regenerate.
|
|
510
|
-
`.trim();
|
|
511
|
-
const esmContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
512
|
-
// This project uses a custom Prisma output path.
|
|
513
|
-
// You must import from the generated flare.ts file instead.
|
|
514
|
-
|
|
515
|
-
throw new Error(\`${errorMessage.replace(/`/g, "\\`")}\`);
|
|
516
|
-
`;
|
|
517
|
-
const cjsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
518
|
-
// This project uses a custom Prisma output path.
|
|
519
|
-
// You must import from the generated flare.ts file instead.
|
|
520
|
-
|
|
521
|
-
throw new Error(\`${errorMessage.replace(/`/g, "\\`")}\`);
|
|
522
|
-
`;
|
|
523
|
-
const dtsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
524
|
-
// This project uses a custom Prisma output path.
|
|
525
|
-
//
|
|
526
|
-
// DO NOT import from 'prisma-flare' - import from your generated flare file:
|
|
527
|
-
//
|
|
528
|
-
// import { FlareClient } from '${correctImportPath}';
|
|
529
|
-
//
|
|
530
|
-
|
|
531
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
532
|
-
export declare const FlareClient: never;
|
|
533
|
-
|
|
534
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
535
|
-
export declare const PrismaClient: never;
|
|
536
|
-
|
|
537
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
538
|
-
export declare const Prisma: never;
|
|
539
|
-
`;
|
|
540
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.js"), esmContent);
|
|
541
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.cjs"), cjsContent);
|
|
542
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.d.ts"), dtsContent);
|
|
543
|
-
const packageJson = {
|
|
544
|
-
name: ".prisma-flare",
|
|
545
|
-
version: "0.0.0",
|
|
546
|
-
main: "./index.cjs",
|
|
547
|
-
module: "./index.js",
|
|
548
|
-
types: "./index.d.ts",
|
|
549
|
-
type: "module",
|
|
550
|
-
exports: {
|
|
551
|
-
".": {
|
|
552
|
-
types: "./index.d.ts",
|
|
553
|
-
import: "./index.js",
|
|
554
|
-
require: "./index.cjs"
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
};
|
|
558
|
-
fs5.writeFileSync(
|
|
559
|
-
path5.join(prismaFlareDir, "package.json"),
|
|
560
|
-
JSON.stringify(packageJson, null, 2)
|
|
561
|
-
);
|
|
562
506
|
}
|
|
563
507
|
function generateNextToPrismaClient(rootDir, prismaClientImport) {
|
|
564
508
|
let prismaOutputDir = prismaClientImport;
|
package/dist/cli/index.js
CHANGED
|
@@ -363,23 +363,32 @@ function generateClient() {
|
|
|
363
363
|
prismaClientImport = getPrismaClientPath(rootDir);
|
|
364
364
|
}
|
|
365
365
|
const isCustomOutput = hasCustomPrismaOutput(rootDir);
|
|
366
|
+
generateInNodeModules(rootDir, prismaClientImport, isCustomOutput);
|
|
366
367
|
if (isCustomOutput || config.prismaClientPath && config.prismaClientPath !== "@prisma/client") {
|
|
367
368
|
generateNextToPrismaClient(rootDir, prismaClientImport);
|
|
368
|
-
generateErrorStubInNodeModules(rootDir, prismaClientImport);
|
|
369
|
-
} else {
|
|
370
|
-
generateInNodeModules(rootDir);
|
|
371
369
|
}
|
|
372
370
|
}
|
|
373
|
-
function generateInNodeModules(rootDir) {
|
|
371
|
+
function generateInNodeModules(rootDir, prismaClientImport, isCustomOutput) {
|
|
374
372
|
const nodeModulesDir = path5.join(rootDir, "node_modules");
|
|
375
373
|
const prismaFlareDir = path5.join(nodeModulesDir, ".prisma-flare");
|
|
376
374
|
if (!fs5.existsSync(prismaFlareDir)) {
|
|
377
375
|
fs5.mkdirSync(prismaFlareDir, { recursive: true });
|
|
378
376
|
}
|
|
377
|
+
let resolvedImport;
|
|
378
|
+
if (prismaClientImport === "@prisma/client") {
|
|
379
|
+
resolvedImport = "@prisma/client";
|
|
380
|
+
} else {
|
|
381
|
+
resolvedImport = path5.relative(prismaFlareDir, prismaClientImport);
|
|
382
|
+
if (!resolvedImport.startsWith(".")) {
|
|
383
|
+
resolvedImport = "./" + resolvedImport;
|
|
384
|
+
}
|
|
385
|
+
resolvedImport = resolvedImport.replace(/\\/g, "/");
|
|
386
|
+
}
|
|
379
387
|
const esmContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
380
388
|
// This file provides FlareClient configured for your Prisma client output path
|
|
389
|
+
// Import path: ${prismaClientImport}
|
|
381
390
|
|
|
382
|
-
import { PrismaClient, Prisma } from '
|
|
391
|
+
import { PrismaClient, Prisma } from '${resolvedImport}';
|
|
383
392
|
import { createFlareClient } from 'prisma-flare';
|
|
384
393
|
|
|
385
394
|
// Create and export FlareClient using the factory
|
|
@@ -390,8 +399,9 @@ export { PrismaClient, Prisma };
|
|
|
390
399
|
`;
|
|
391
400
|
const cjsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
392
401
|
// This file provides FlareClient configured for your Prisma client output path
|
|
402
|
+
// Import path: ${prismaClientImport}
|
|
393
403
|
|
|
394
|
-
const { PrismaClient, Prisma } = require('
|
|
404
|
+
const { PrismaClient, Prisma } = require('${resolvedImport}');
|
|
395
405
|
const { createFlareClient } = require('prisma-flare');
|
|
396
406
|
|
|
397
407
|
// Create FlareClient using the factory
|
|
@@ -406,7 +416,7 @@ module.exports = {
|
|
|
406
416
|
const dtsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
407
417
|
// This file provides FlareClient configured for your Prisma client output path
|
|
408
418
|
|
|
409
|
-
import { PrismaClient as BasePrismaClient, Prisma as BasePrisma } from '
|
|
419
|
+
import { PrismaClient as BasePrismaClient, Prisma as BasePrisma } from '${resolvedImport}';
|
|
410
420
|
import type { FlareClientOptions } from 'prisma-flare';
|
|
411
421
|
import type { ModelName } from 'prisma-flare';
|
|
412
422
|
import type FlareBuilder from 'prisma-flare/flareBuilder';
|
|
@@ -459,83 +469,17 @@ export declare class FlareClient extends BasePrismaClient {
|
|
|
459
469
|
path5.join(prismaFlareDir, "package.json"),
|
|
460
470
|
JSON.stringify(packageJson, null, 2)
|
|
461
471
|
);
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
472
|
+
if (isCustomOutput) {
|
|
473
|
+
console.log(`\u2705 Generated .prisma-flare with custom Prisma output: ${prismaClientImport}`);
|
|
474
|
+
console.log(` Location: ${prismaFlareDir}`);
|
|
475
|
+
console.log(`
|
|
476
|
+
\u26A0\uFE0F For Turbopack/bundler compatibility, import from the generated flare.ts instead.`);
|
|
477
|
+
} else {
|
|
478
|
+
console.log(`\u2705 Generated prisma-flare client using @prisma/client`);
|
|
479
|
+
console.log(` Location: ${prismaFlareDir}`);
|
|
480
|
+
console.log(`
|
|
465
481
|
Import: import { FlareClient } from 'prisma-flare';`);
|
|
466
|
-
}
|
|
467
|
-
function generateErrorStubInNodeModules(rootDir, prismaClientImport) {
|
|
468
|
-
const nodeModulesDir = path5.join(rootDir, "node_modules");
|
|
469
|
-
const prismaFlareDir = path5.join(nodeModulesDir, ".prisma-flare");
|
|
470
|
-
if (!fs5.existsSync(prismaFlareDir)) {
|
|
471
|
-
fs5.mkdirSync(prismaFlareDir, { recursive: true });
|
|
472
|
-
}
|
|
473
|
-
let prismaOutputDir = prismaClientImport;
|
|
474
|
-
if (prismaOutputDir.endsWith("/client") || prismaOutputDir.endsWith("\\client")) {
|
|
475
|
-
prismaOutputDir = path5.dirname(prismaOutputDir);
|
|
476
482
|
}
|
|
477
|
-
const relativeFlareDir = path5.relative(rootDir, prismaOutputDir);
|
|
478
|
-
const correctImportPath = "./" + path5.join(relativeFlareDir, "flare").replace(/\\/g, "/");
|
|
479
|
-
const errorMessage = `
|
|
480
|
-
You are using a custom Prisma output path.
|
|
481
|
-
|
|
482
|
-
Instead of importing from 'prisma-flare', import from your generated flare file:
|
|
483
|
-
|
|
484
|
-
import { FlareClient } from '${correctImportPath}';
|
|
485
|
-
|
|
486
|
-
Run 'npx prisma-flare generate' after 'npx prisma generate' to regenerate.
|
|
487
|
-
`.trim();
|
|
488
|
-
const esmContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
489
|
-
// This project uses a custom Prisma output path.
|
|
490
|
-
// You must import from the generated flare.ts file instead.
|
|
491
|
-
|
|
492
|
-
throw new Error(\`${errorMessage.replace(/`/g, "\\`")}\`);
|
|
493
|
-
`;
|
|
494
|
-
const cjsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
495
|
-
// This project uses a custom Prisma output path.
|
|
496
|
-
// You must import from the generated flare.ts file instead.
|
|
497
|
-
|
|
498
|
-
throw new Error(\`${errorMessage.replace(/`/g, "\\`")}\`);
|
|
499
|
-
`;
|
|
500
|
-
const dtsContent = `// Generated by prisma-flare - DO NOT EDIT
|
|
501
|
-
// This project uses a custom Prisma output path.
|
|
502
|
-
//
|
|
503
|
-
// DO NOT import from 'prisma-flare' - import from your generated flare file:
|
|
504
|
-
//
|
|
505
|
-
// import { FlareClient } from '${correctImportPath}';
|
|
506
|
-
//
|
|
507
|
-
|
|
508
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
509
|
-
export declare const FlareClient: never;
|
|
510
|
-
|
|
511
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
512
|
-
export declare const PrismaClient: never;
|
|
513
|
-
|
|
514
|
-
/** @deprecated Import from '${correctImportPath}' instead */
|
|
515
|
-
export declare const Prisma: never;
|
|
516
|
-
`;
|
|
517
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.js"), esmContent);
|
|
518
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.cjs"), cjsContent);
|
|
519
|
-
fs5.writeFileSync(path5.join(prismaFlareDir, "index.d.ts"), dtsContent);
|
|
520
|
-
const packageJson = {
|
|
521
|
-
name: ".prisma-flare",
|
|
522
|
-
version: "0.0.0",
|
|
523
|
-
main: "./index.cjs",
|
|
524
|
-
module: "./index.js",
|
|
525
|
-
types: "./index.d.ts",
|
|
526
|
-
type: "module",
|
|
527
|
-
exports: {
|
|
528
|
-
".": {
|
|
529
|
-
types: "./index.d.ts",
|
|
530
|
-
import: "./index.js",
|
|
531
|
-
require: "./index.cjs"
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
};
|
|
535
|
-
fs5.writeFileSync(
|
|
536
|
-
path5.join(prismaFlareDir, "package.json"),
|
|
537
|
-
JSON.stringify(packageJson, null, 2)
|
|
538
|
-
);
|
|
539
483
|
}
|
|
540
484
|
function generateNextToPrismaClient(rootDir, prismaClientImport) {
|
|
541
485
|
let prismaOutputDir = prismaClientImport;
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -149,7 +149,7 @@ Example with custom plurals:
|
|
|
149
149
|
|
|
150
150
|
### Custom Prisma Output Path
|
|
151
151
|
|
|
152
|
-
If you use a custom `output` in your Prisma schema (common with Prisma 7+), prisma-flare automatically detects it
|
|
152
|
+
If you use a custom `output` in your Prisma schema (common with Prisma 7+), prisma-flare automatically detects it:
|
|
153
153
|
|
|
154
154
|
```prisma
|
|
155
155
|
// schema.prisma
|
|
@@ -166,26 +166,29 @@ npx prisma generate
|
|
|
166
166
|
npx prisma-flare generate
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
-
This
|
|
170
|
-
|
|
171
|
-
prisma/
|
|
172
|
-
generated/
|
|
173
|
-
client.ts ← Prisma generates this
|
|
174
|
-
flare.ts ← prisma-flare generates this
|
|
175
|
-
flare.d.ts ← TypeScript declarations
|
|
176
|
-
```
|
|
169
|
+
This generates FlareClient in **two locations**:
|
|
170
|
+
1. `node_modules/.prisma-flare/` - for Node.js and general use
|
|
171
|
+
2. `prisma/generated/flare.ts` - for bundler compatibility (Turbopack, Webpack, Vite)
|
|
177
172
|
|
|
178
|
-
**Import from the generated flare
|
|
173
|
+
**For Turbopack / Next.js 15+ users:** Import from the generated `flare.ts`:
|
|
179
174
|
|
|
180
175
|
```typescript
|
|
181
176
|
// prisma/db.ts
|
|
182
177
|
import './callbacks';
|
|
183
|
-
import { FlareClient } from './generated/flare'; // ←
|
|
178
|
+
import { FlareClient } from './generated/flare'; // ← Bundler-compatible path
|
|
184
179
|
|
|
185
180
|
export const db = new FlareClient();
|
|
186
181
|
```
|
|
187
182
|
|
|
188
|
-
|
|
183
|
+
**For Node.js / non-Turbopack users:** You can still import from `prisma-flare`:
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// prisma/db.ts
|
|
187
|
+
import './callbacks';
|
|
188
|
+
import { FlareClient } from 'prisma-flare'; // ← Works in Node.js
|
|
189
|
+
|
|
190
|
+
export const db = new FlareClient();
|
|
191
|
+
```
|
|
189
192
|
|
|
190
193
|
**Manual override:** If auto-detection doesn't work, add to `prisma-flare.config.json`:
|
|
191
194
|
|