create-prisma 0.4.1 → 0.4.2-pr.36.76.1

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.
Files changed (41) hide show
  1. package/dist/cli.mjs +1 -1
  2. package/dist/{create-H6Tk0JlE.mjs → create-DuV1nh0P.mjs} +135 -35
  3. package/dist/index.d.mts +2 -0
  4. package/dist/index.mjs +2 -2
  5. package/package.json +1 -1
  6. package/templates/create/astro/prisma/seed.ts.hbs +1 -1
  7. package/templates/create/{svelte/prisma.config.ts → astro/prisma.config.ts.hbs} +3 -1
  8. package/templates/create/astro/src/lib/prisma.ts.hbs +8 -6
  9. package/templates/create/elysia/prisma/seed.ts.hbs +0 -4
  10. package/templates/create/elysia/prisma.config.ts.hbs +2 -2
  11. package/templates/create/elysia/src/lib/prisma.ts.hbs +3 -3
  12. package/templates/create/hono/prisma/seed.ts.hbs +0 -4
  13. package/templates/create/hono/prisma.config.ts.hbs +2 -2
  14. package/templates/create/hono/src/lib/prisma.ts.hbs +3 -3
  15. package/templates/create/nest/prisma/seed.ts.hbs +0 -4
  16. package/templates/create/nest/prisma.config.ts.hbs +2 -2
  17. package/templates/create/nest/src/lib/prisma.ts.hbs +3 -3
  18. package/templates/create/next/prisma/seed.ts.hbs +1 -1
  19. package/templates/create/{astro/prisma.config.ts → next/prisma.config.ts.hbs} +3 -1
  20. package/templates/create/next/src/app/page.tsx.hbs +1 -3
  21. package/templates/create/next/src/lib/prisma.ts.hbs +8 -5
  22. package/templates/create/next/tsconfig.json +1 -0
  23. package/templates/create/nuxt/nuxt.config.ts +16 -0
  24. package/templates/create/nuxt/prisma/seed.ts.hbs +1 -1
  25. package/templates/create/{next/prisma.config.ts → nuxt/prisma.config.ts.hbs} +3 -1
  26. package/templates/create/nuxt/server/utils/prisma.ts.hbs +8 -5
  27. package/templates/create/svelte/package.json.hbs +2 -1
  28. package/templates/create/svelte/prisma/seed.ts.hbs +1 -50
  29. package/templates/create/{nuxt/prisma.config.ts → svelte/prisma.config.ts.hbs} +3 -1
  30. package/templates/create/svelte/src/lib/server/prisma.ts.hbs +6 -6
  31. package/templates/create/tanstack-start/prisma/seed.ts.hbs +5 -4
  32. package/templates/create/tanstack-start/prisma.config.ts.hbs +15 -0
  33. package/templates/create/tanstack-start/src/lib/prisma.server.ts.hbs +8 -5
  34. package/templates/create/turborepo/apps/api/package.json.hbs +7 -0
  35. package/templates/create/turborepo/package.json.hbs +10 -4
  36. package/templates/create/turborepo/packages/db/package.json.hbs +5 -0
  37. package/templates/create/turborepo/packages/db/prisma/seed.ts.hbs +1 -1
  38. package/templates/create/turborepo/packages/db/prisma.config.ts.hbs +15 -0
  39. package/templates/create/turborepo/packages/db/src/client.ts.hbs +10 -5
  40. package/templates/create/tanstack-start/prisma.config.ts +0 -13
  41. package/templates/create/turborepo/packages/db/prisma.config.ts +0 -13
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "./create-H6Tk0JlE.mjs";
2
+ import "./create-DuV1nh0P.mjs";
3
3
  import { createCreatePrismaCli } from "./index.mjs";
4
4
 
5
5
  //#region src/cli.ts
@@ -19,20 +19,23 @@ function usesNodeStyleRuntime(packageManager) {
19
19
  function requiresDotenvConfigImport(packageManager) {
20
20
  return usesNodeStyleRuntime(packageManager);
21
21
  }
22
+ function requiresPrismaConfigDotenvImport(packageManager) {
23
+ return packageManager !== "deno";
24
+ }
22
25
 
23
26
  //#endregion
24
27
  //#region src/constants/dependencies.ts
25
28
  const dependencyVersionMap = {
26
29
  "@elysiajs/node": "^1.4.5",
27
- "@prisma/client": "^7.4.0",
28
- "@prisma/adapter-pg": "^7.4.0",
29
- "@prisma/adapter-mariadb": "^7.4.0",
30
- "@prisma/adapter-better-sqlite3": "^7.4.0",
31
- "@prisma/adapter-mssql": "^7.4.0",
30
+ "@libsql/client": "^0.17.3",
31
+ "@prisma/client": "^7.8.0",
32
+ "@prisma/adapter-pg": "^7.8.0",
33
+ "@prisma/adapter-libsql": "^7.8.0",
34
+ "@prisma/adapter-mariadb": "^7.8.0",
35
+ "@prisma/adapter-mssql": "^7.8.0",
32
36
  "@types/node": "^24.3.0",
33
37
  dotenv: "^17.2.3",
34
- "node-gyp": "^11.5.0",
35
- prisma: "^7.4.0",
38
+ prisma: "^7.8.0",
36
39
  tsx: "^4.21.0"
37
40
  };
38
41
  function getWorkspaceDependencyVersion(packageManager) {
@@ -128,6 +131,7 @@ const PrismaSetupOptionsSchema = z.object({
128
131
  databaseUrl: DatabaseUrlSchema.optional().describe("DATABASE_URL value"),
129
132
  install: z.boolean().optional().describe("Install dependencies with selected package manager"),
130
133
  generate: z.boolean().optional().describe("Generate Prisma Client after scaffolding"),
134
+ migrateAndSeed: z.boolean().optional().describe("Run an initial migration and seed after Prisma Client generation"),
131
135
  schemaPreset: SchemaPresetSchema.optional().describe("Schema preset to scaffold in prisma/schema.prisma")
132
136
  });
133
137
  const PrismaSetupCommandInputSchema = CommonCommandOptionsSchema.extend(PrismaSetupOptionsSchema.shape);
@@ -243,6 +247,15 @@ function getRunScriptCommand(packageManager, scriptName) {
243
247
  default: return `npm run ${scriptName}`;
244
248
  }
245
249
  }
250
+ function getRunScriptInDirectoryCommand(packageManager, directory, scriptName) {
251
+ switch (packageManager) {
252
+ case "deno": return `deno task --cwd ${directory} ${scriptName}`;
253
+ case "bun": return `bun run --cwd ${directory} ${scriptName}`;
254
+ case "pnpm": return `pnpm --dir ${directory} run ${scriptName}`;
255
+ case "yarn": return `yarn --cwd ${directory} run ${scriptName}`;
256
+ default: return `npm --prefix ${directory} run ${scriptName}`;
257
+ }
258
+ }
246
259
  function joinCommandParts(parts) {
247
260
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
248
261
  }
@@ -358,10 +371,26 @@ function getOptionalHashString(hash, key) {
358
371
  function getOptionalHashStringList(hash, key) {
359
372
  return getOptionalHashString(hash, key)?.split(" ") ?? [];
360
373
  }
374
+ function getSeedCommand(packageManager) {
375
+ if (packageManager === "deno") return "deno run -A --env-file=.env ./prisma/seed.ts";
376
+ if (packageManager === "bun") return "bun ./prisma/seed.ts";
377
+ return "tsx ./prisma/seed.ts";
378
+ }
379
+ function getPrismaCommand(packageManager, subcommand) {
380
+ if (packageManager === "deno") return `deno run -A --env-file=.env npm:prisma@${dependencyVersionMap.prisma} ${subcommand}`;
381
+ if (packageManager === "bun") return `bun --env-file=.env ./node_modules/.bin/prisma ${subcommand}`;
382
+ return `prisma ${subcommand}`;
383
+ }
361
384
  Handlebars.registerHelper("eq", (left, right) => left === right);
362
385
  Handlebars.registerHelper("runScriptCommand", (packageManager, scriptName) => packageManager ? getRunScriptCommand(packageManager, scriptName) : "");
386
+ Handlebars.registerHelper("runScriptInDirectoryCommand", (packageManager, directory, scriptName) => packageManager ? getRunScriptInDirectoryCommand(packageManager, directory, scriptName) : "");
363
387
  Handlebars.registerHelper("packageManagerManifestValue", (packageManager) => getPackageManagerManifestValue(packageManager) ?? "");
364
388
  Handlebars.registerHelper("requiresDotenvConfigImport", (packageManager) => requiresDotenvConfigImport(packageManager));
389
+ Handlebars.registerHelper("requiresPrismaConfigDotenvImport", (packageManager) => requiresPrismaConfigDotenvImport(packageManager));
390
+ Handlebars.registerHelper("sqliteAdapterPackage", () => "@prisma/adapter-libsql");
391
+ Handlebars.registerHelper("sqliteAdapterClass", () => "PrismaLibSql");
392
+ Handlebars.registerHelper("seedCommand", (packageManager) => getSeedCommand(packageManager));
393
+ Handlebars.registerHelper("prismaCommand", (packageManager, subcommand) => getPrismaCommand(packageManager, subcommand));
365
394
  Handlebars.registerHelper("runtimeScript", (packageManager, kind, sourceEntrypoint, builtEntrypoint, options) => {
366
395
  if (!packageManager) return "";
367
396
  const hash = options.hash;
@@ -450,12 +479,12 @@ async function scaffoldCreateTemplate(opts) {
450
479
 
451
480
  //#endregion
452
481
  //#region src/constants/db-packages.ts
453
- function getDbPackages(provider) {
482
+ function getDbPackages(provider, _packageManager) {
454
483
  switch (provider) {
455
484
  case "postgresql":
456
485
  case "cockroachdb": return "@prisma/adapter-pg";
457
486
  case "mysql": return "@prisma/adapter-mariadb";
458
- case "sqlite": return "@prisma/adapter-better-sqlite3";
487
+ case "sqlite": return "@prisma/adapter-libsql";
459
488
  case "sqlserver": return "@prisma/adapter-mssql";
460
489
  default: {
461
490
  const exhaustiveCheck = provider;
@@ -468,12 +497,12 @@ function getDbPackages(provider) {
468
497
  //#region src/tasks/install.ts
469
498
  function getPrismaScriptMap(packageManager) {
470
499
  if (packageManager === "deno") {
471
- const prismaSpecifier = getDenoPrismaSpecifier();
500
+ const prismaCli = `deno run -A --env-file=.env ${getDenoPrismaSpecifier()}`;
472
501
  return {
473
- "db:generate": `deno run -A --env-file=.env ${prismaSpecifier} generate`,
474
- "db:push": `deno run -A --env-file=.env ${prismaSpecifier} db push`,
475
- "db:migrate": `deno run -A --env-file=.env ${prismaSpecifier} migrate dev`,
476
- "db:seed": `deno run -A --env-file=.env ${prismaSpecifier} db seed`
502
+ "db:generate": `${prismaCli} generate`,
503
+ "db:push": `${prismaCli} db push`,
504
+ "db:migrate": `${prismaCli} migrate dev`,
505
+ "db:seed": `${prismaCli} db seed`
477
506
  };
478
507
  }
479
508
  if (packageManager === "bun") {
@@ -553,9 +582,9 @@ async function addPackageDependency(opts) {
553
582
  async function writePrismaDependencies(provider, packageManager, projectDir = process.cwd()) {
554
583
  const dependencies = ["@prisma/client"];
555
584
  const devDependencies = ["prisma"];
556
- dependencies.push(getDbPackages(provider));
585
+ dependencies.push(getDbPackages(provider, packageManager));
586
+ if (provider === "sqlite") dependencies.push("@libsql/client");
557
587
  if (requiresDotenvConfigImport(packageManager) || await projectContainsText(projectDir, "dotenv/config")) dependencies.push("dotenv");
558
- if (provider === "sqlite" && packageManager === "deno") devDependencies.push("node-gyp");
559
588
  await addPackageDependency({
560
589
  dependencies,
561
590
  devDependencies,
@@ -648,6 +677,8 @@ const DEFAULT_SCHEMA_PRESET$1 = "empty";
648
677
  const DEFAULT_PRISMA_POSTGRES = true;
649
678
  const DEFAULT_INSTALL = true;
650
679
  const DEFAULT_GENERATE = true;
680
+ const DEFAULT_MIGRATE_AND_SEED = true;
681
+ const PRISMA_POSTGRES_MIGRATION_DELAY_MS = 2e3;
651
682
  const requiredPrismaFileGroups = [
652
683
  ["prisma/schema.prisma", "packages/db/prisma/schema.prisma"],
653
684
  ["prisma/seed.ts", "packages/db/prisma/seed.ts"],
@@ -753,6 +784,17 @@ async function promptForDependencyInstall(packageManager) {
753
784
  }
754
785
  return Boolean(shouldInstall);
755
786
  }
787
+ async function promptForMigrateAndSeed() {
788
+ const shouldMigrateAndSeed = await confirm({
789
+ message: "Run an initial migration and seed your database now?",
790
+ initialValue: DEFAULT_MIGRATE_AND_SEED
791
+ });
792
+ if (isCancel(shouldMigrateAndSeed)) {
793
+ cancel("Operation cancelled.");
794
+ return;
795
+ }
796
+ return Boolean(shouldMigrateAndSeed);
797
+ }
756
798
  async function promptForPrismaPostgres() {
757
799
  const shouldUsePrismaPostgres = await confirm({
758
800
  message: "Use Prisma Postgres and auto-generate DATABASE_URL with create-db?",
@@ -791,6 +833,8 @@ async function collectPrismaSetupContext(input, options = {}) {
791
833
  if (!packageManager) return;
792
834
  const shouldInstall = input.install ?? (useDefaults ? DEFAULT_INSTALL : await promptForDependencyInstall(packageManager));
793
835
  if (shouldInstall === void 0) return;
836
+ const shouldMigrateAndSeed = !(shouldInstall && shouldGenerate) ? false : input.migrateAndSeed ?? (useDefaults ? DEFAULT_MIGRATE_AND_SEED : await promptForMigrateAndSeed());
837
+ if (shouldMigrateAndSeed === void 0) return;
794
838
  return {
795
839
  projectDir,
796
840
  verbose,
@@ -800,7 +844,8 @@ async function collectPrismaSetupContext(input, options = {}) {
800
844
  databaseUrl,
801
845
  shouldUsePrismaPostgres,
802
846
  packageManager,
803
- shouldInstall
847
+ shouldInstall,
848
+ shouldMigrateAndSeed
804
849
  };
805
850
  }
806
851
  function getDefaultDatabaseUrl(provider) {
@@ -1015,19 +1060,20 @@ async function generatePrismaClientForContext(context, projectDir) {
1015
1060
  };
1016
1061
  }
1017
1062
  }
1018
- function buildWarningLines(provisionWarning, generateWarning) {
1063
+ function buildWarningLines(provisionWarning, generateWarning, migrateAndSeedWarning) {
1019
1064
  const warningLines = [];
1020
1065
  if (provisionWarning) warningLines.push(`- ${provisionWarning}`);
1021
1066
  if (generateWarning) warningLines.push(`- ${generateWarning}`);
1067
+ if (migrateAndSeedWarning) warningLines.push(`- ${migrateAndSeedWarning}`);
1022
1068
  return warningLines;
1023
1069
  }
1024
1070
  function buildNextStepsForContext(opts) {
1025
- const { context, options, didGenerateClient } = opts;
1071
+ const { context, options, didGenerateClient, didMigrate, didSeed } = opts;
1026
1072
  const nextSteps = [...options.prependNextSteps ?? []];
1027
1073
  if (!context.shouldInstall) nextSteps.push(`- ${getInstallCommand(context.packageManager)}`);
1028
1074
  if (!didGenerateClient || !context.shouldGenerate) nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "db:generate")}`);
1029
- nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "db:migrate")}`);
1030
- nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "db:seed")}`);
1075
+ if (!didMigrate) nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "db:migrate")}`);
1076
+ if (!didSeed) nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "db:seed")}`);
1031
1077
  if (options.includeDevNextStep) nextSteps.push(`- ${getRunScriptCommand(context.packageManager, "dev")}`);
1032
1078
  return nextSteps;
1033
1079
  }
@@ -1039,11 +1085,14 @@ async function executePrismaSetupContext(context, options = {}) {
1039
1085
  if (!await installDependenciesForContext(context, projectDir)) return false;
1040
1086
  if (!await finalizePrismaFilesForContext(context, projectDir, provisionResult)) return false;
1041
1087
  const generateResult = await generatePrismaClientForContext(context, projectDir);
1042
- const warningLines = buildWarningLines(provisionResult.warning, generateResult.warning);
1088
+ const migrateAndSeedResult = await migrateAndSeedIfRequested(context, projectDir, { didGenerateClient: generateResult.didGenerateClient });
1089
+ const warningLines = buildWarningLines(provisionResult.warning, generateResult.warning, migrateAndSeedResult.warning);
1043
1090
  const nextSteps = buildNextStepsForContext({
1044
1091
  context,
1045
1092
  options,
1046
- didGenerateClient: generateResult.didGenerateClient
1093
+ didGenerateClient: generateResult.didGenerateClient,
1094
+ didMigrate: migrateAndSeedResult.didMigrate,
1095
+ didSeed: migrateAndSeedResult.didSeed
1047
1096
  });
1048
1097
  outro(`Setup complete.${warningLines.length > 0 ? `\n\n${warningLines.join("\n")}` : ""}
1049
1098
 
@@ -1051,6 +1100,66 @@ Next steps:
1051
1100
  ${nextSteps.join("\n")}`);
1052
1101
  return true;
1053
1102
  }
1103
+ async function migrateAndSeedIfRequested(context, projectDir, options) {
1104
+ const prismaProjectDir = await resolvePrismaProjectDir(projectDir);
1105
+ if (!context.shouldMigrateAndSeed) return {
1106
+ didMigrate: false,
1107
+ didSeed: false
1108
+ };
1109
+ if (!options.didGenerateClient) return {
1110
+ didMigrate: false,
1111
+ didSeed: false,
1112
+ warning: "Skipped migrate + seed because the Prisma Client was not generated."
1113
+ };
1114
+ const migrateInvocation = getPrismaCliArgs(context.packageManager, [
1115
+ "migrate",
1116
+ "dev",
1117
+ "--name",
1118
+ "init"
1119
+ ]);
1120
+ const seedInvocation = getPrismaCliArgs(context.packageManager, ["db", "seed"]);
1121
+ const migrateSpinner = spinner();
1122
+ migrateSpinner.start("Creating and applying initial migration...");
1123
+ let didMigrate = false;
1124
+ try {
1125
+ if (context.shouldUsePrismaPostgres) await new Promise((resolve) => setTimeout(resolve, PRISMA_POSTGRES_MIGRATION_DELAY_MS));
1126
+ await execa(migrateInvocation.command, migrateInvocation.args, {
1127
+ cwd: prismaProjectDir,
1128
+ stdio: context.verbose ? "inherit" : "pipe"
1129
+ });
1130
+ migrateSpinner.stop("Initial migration applied.");
1131
+ didMigrate = true;
1132
+ } catch (error) {
1133
+ migrateSpinner.error(`Migration failed${error instanceof Error ? `: ${error.message}` : "."}`);
1134
+ return {
1135
+ didMigrate: false,
1136
+ didSeed: false,
1137
+ warning: `Migration failed; run \`${getRunScriptCommand(context.packageManager, "db:migrate")}\` manually.`
1138
+ };
1139
+ }
1140
+ const seedSpinner = spinner();
1141
+ seedSpinner.start("Seeding database...");
1142
+ let didSeed = false;
1143
+ try {
1144
+ await execa(seedInvocation.command, seedInvocation.args, {
1145
+ cwd: prismaProjectDir,
1146
+ stdio: context.verbose ? "inherit" : "pipe"
1147
+ });
1148
+ seedSpinner.stop("Database seeded.");
1149
+ didSeed = true;
1150
+ } catch (error) {
1151
+ seedSpinner.error(`Seed failed${error instanceof Error ? `: ${error.message}` : "."}`);
1152
+ return {
1153
+ didMigrate,
1154
+ didSeed: false,
1155
+ warning: `Seed failed; run \`${getRunScriptCommand(context.packageManager, "db:seed")}\` manually.`
1156
+ };
1157
+ }
1158
+ return {
1159
+ didMigrate,
1160
+ didSeed
1161
+ };
1162
+ }
1054
1163
 
1055
1164
  //#endregion
1056
1165
  //#region src/tasks/setup-addons.ts
@@ -1582,21 +1691,12 @@ async function executeCreateAddonSetupContext(params) {
1582
1691
 
1583
1692
  //#endregion
1584
1693
  //#region src/telemetry/client.ts
1585
- const TELEMETRY_API_KEY = "phc_cmc85avbWyuJ2JyKdGPdv7dxXli8xLdWDBPbvIXWJfs";
1694
+ const TELEMETRY_API_KEY = "";
1586
1695
  const TELEMETRY_HOST = "https://us.i.posthog.com";
1587
1696
  const TELEMETRY_CONFIG_FILE = "telemetry.json";
1588
1697
  const UUID_V4_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
1589
- function isTruthyEnvValue(value) {
1590
- return [
1591
- "1",
1592
- "true",
1593
- "yes",
1594
- "on"
1595
- ].includes(String(value ?? "").trim().toLowerCase());
1596
- }
1597
1698
  function shouldDisableTelemetry() {
1598
- if (isTruthyEnvValue(process.env.CI) || isTruthyEnvValue(process.env.GITHUB_ACTIONS)) return true;
1599
- return process.env.CREATE_PRISMA_DISABLE_TELEMETRY !== void 0 || process.env.CREATE_PRISMA_TELEMETRY_DISABLED !== void 0 || process.env.DO_NOT_TRACK !== void 0;
1699
+ return true;
1600
1700
  }
1601
1701
  function getTelemetryConfigDir() {
1602
1702
  if (process.platform === "darwin") return path.join(os.homedir(), "Library", "Application Support", "create-prisma");
@@ -1618,7 +1718,7 @@ async function getAnonymousId() {
1618
1718
  }
1619
1719
  function getCommonProperties() {
1620
1720
  return {
1621
- "cli-version": "0.4.1",
1721
+ "cli-version": "0.4.2-pr.36.76.1",
1622
1722
  "node-version": process.version,
1623
1723
  platform: process.platform,
1624
1724
  arch: process.arch
package/dist/index.d.mts CHANGED
@@ -228,6 +228,7 @@ declare const CreateCommandInputSchema: z.ZodObject<{
228
228
  databaseUrl: z.ZodOptional<z.ZodString>;
229
229
  install: z.ZodOptional<z.ZodBoolean>;
230
230
  generate: z.ZodOptional<z.ZodBoolean>;
231
+ migrateAndSeed: z.ZodOptional<z.ZodBoolean>;
231
232
  schemaPreset: z.ZodOptional<z.ZodEnum<{
232
233
  empty: "empty";
233
234
  basic: "basic";
@@ -274,6 +275,7 @@ declare const router: {
274
275
  databaseUrl: zod.ZodOptional<zod.ZodString>;
275
276
  install: zod.ZodOptional<zod.ZodBoolean>;
276
277
  generate: zod.ZodOptional<zod.ZodBoolean>;
278
+ migrateAndSeed: zod.ZodOptional<zod.ZodBoolean>;
277
279
  schemaPreset: zod.ZodOptional<zod.ZodEnum<{
278
280
  empty: "empty";
279
281
  basic: "basic";
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { a as DatabaseUrlSchema, i as DatabaseProviderSchema, n as CreateCommandInputSchema, o as PackageManagerSchema, r as CreateTemplateSchema, s as SchemaPresetSchema, t as runCreateCommand } from "./create-H6Tk0JlE.mjs";
2
+ import { a as DatabaseUrlSchema, i as DatabaseProviderSchema, n as CreateCommandInputSchema, o as PackageManagerSchema, r as CreateTemplateSchema, s as SchemaPresetSchema, t as runCreateCommand } from "./create-DuV1nh0P.mjs";
3
3
  import { os } from "@orpc/server";
4
4
  import { createCli } from "trpc-cli";
5
5
 
6
6
  //#region src/index.ts
7
- const CLI_VERSION = "0.4.1";
7
+ const CLI_VERSION = "0.4.2-pr.36.76.1";
8
8
  const router = os.router({ create: os.meta({
9
9
  description: "Create a new project with Prisma setup",
10
10
  default: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-prisma",
3
- "version": "0.4.1",
3
+ "version": "0.4.2-pr.36.76.1",
4
4
  "private": false,
5
5
  "description": "Create Prisma 7 projects with first-party templates and great DX.",
6
6
  "homepage": "https://github.com/prisma/create-prisma",
@@ -1,4 +1,4 @@
1
- import prisma from "../src/lib/prisma";
1
+ import prisma from "../src/lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -1,11 +1,13 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
1
2
  import "dotenv/config";
3
+ {{/if}}
2
4
  import { defineConfig, env } from "prisma/config";
3
5
 
4
6
  export default defineConfig({
5
7
  schema: "prisma/schema.prisma",
6
8
  migrations: {
7
9
  path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
10
+ seed: "{{seedCommand this.packageManager}}",
9
11
  },
10
12
  datasource: {
11
13
  url: env("DATABASE_URL"),
@@ -1,5 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport this.packageManager)}}
1
2
  import "dotenv/config";
2
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
5
  {{#if (eq provider "postgresql")}}
4
6
  import { PrismaPg } from "@prisma/adapter-pg";
5
7
  {{/if}}
@@ -10,17 +12,17 @@ import { PrismaPg } from "@prisma/adapter-pg";
10
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
13
  {{/if}}
12
14
  {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass this.packageManager}} } from "{{sqliteAdapterPackage this.packageManager}}";
14
16
  {{/if}}
15
17
  {{#if (eq provider "sqlserver")}}
16
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
19
  {{/if}}
18
20
 
21
+ const rawDatabaseUrl = {{#if (eq packageManager "deno")}}process.env.DATABASE_URL{{else}}import.meta.env?.DATABASE_URL ?? process.env.DATABASE_URL{{/if}};
19
22
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl =
21
- import.meta.env?.DATABASE_URL ?? process.env.DATABASE_URL ?? "file:./dev.db";
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
22
24
  {{else}}
23
- const databaseUrl = import.meta.env?.DATABASE_URL ?? process.env.DATABASE_URL;
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
24
26
  if (!databaseUrl) {
25
27
  throw new Error("DATABASE_URL is required");
26
28
  }
@@ -40,7 +42,7 @@ const adapter = new PrismaPg({
40
42
  const adapter = new PrismaMariaDb(databaseUrl);
41
43
  {{/if}}
42
44
  {{#if (eq provider "sqlite")}}
43
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass this.packageManager}}({
44
46
  url: databaseUrl,
45
47
  });
46
48
  {{/if}}
@@ -34,9 +34,5 @@ main()
34
34
  .catch(async (error) => {
35
35
  console.error(error);
36
36
  await prisma.$disconnect();
37
- {{#if (eq packageManager "deno")}}
38
- Deno.exit(1);
39
- {{else}}
40
37
  process.exit(1);
41
- {{/if}}
42
38
  });
@@ -1,4 +1,4 @@
1
- {{#if (requiresDotenvConfigImport packageManager)}}
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
2
2
  import "dotenv/config";
3
3
  {{/if}}
4
4
  import { defineConfig, env } from "prisma/config";
@@ -7,7 +7,7 @@ export default defineConfig({
7
7
  schema: "prisma/schema.prisma",
8
8
  migrations: {
9
9
  path: "prisma/migrations",
10
- seed: "{{#if (eq packageManager "deno")}}deno run -A --env-file=.env ./prisma/seed.ts{{else}}{{#if (eq packageManager "bun")}}bun ./prisma/seed.ts{{else}}tsx prisma/seed.ts{{/if}}{{/if}}",
10
+ seed: "{{seedCommand this.packageManager}}",
11
11
  },
12
12
  datasource: {
13
13
  url: env("DATABASE_URL"),
@@ -12,13 +12,13 @@ import { PrismaPg } from "@prisma/adapter-pg";
12
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
13
13
  {{/if}}
14
14
  {{#if (eq provider "sqlite")}}
15
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
16
16
  {{/if}}
17
17
  {{#if (eq provider "sqlserver")}}
18
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
19
19
  {{/if}}
20
20
 
21
- const rawDatabaseUrl = {{#if (eq packageManager "deno")}}Deno.env.get("DATABASE_URL"){{else}}process.env.DATABASE_URL{{/if}};
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
22
22
  {{#if (eq provider "sqlite")}}
23
23
  const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
24
24
  {{else}}
@@ -42,7 +42,7 @@ const adapter = new PrismaPg({
42
42
  const adapter = new PrismaMariaDb(databaseUrl);
43
43
  {{/if}}
44
44
  {{#if (eq provider "sqlite")}}
45
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass packageManager}}({
46
46
  url: databaseUrl,
47
47
  });
48
48
  {{/if}}
@@ -34,9 +34,5 @@ main()
34
34
  .catch(async (error) => {
35
35
  console.error(error);
36
36
  await prisma.$disconnect();
37
- {{#if (eq packageManager "deno")}}
38
- Deno.exit(1);
39
- {{else}}
40
37
  process.exit(1);
41
- {{/if}}
42
38
  });
@@ -1,4 +1,4 @@
1
- {{#if (requiresDotenvConfigImport packageManager)}}
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
2
2
  import "dotenv/config";
3
3
  {{/if}}
4
4
  import { defineConfig, env } from "prisma/config";
@@ -7,7 +7,7 @@ export default defineConfig({
7
7
  schema: "prisma/schema.prisma",
8
8
  migrations: {
9
9
  path: "prisma/migrations",
10
- seed: "{{#if (eq packageManager "deno")}}deno run -A --env-file=.env ./prisma/seed.ts{{else}}{{#if (eq packageManager "bun")}}bun ./prisma/seed.ts{{else}}tsx prisma/seed.ts{{/if}}{{/if}}",
10
+ seed: "{{seedCommand this.packageManager}}",
11
11
  },
12
12
  datasource: {
13
13
  url: env("DATABASE_URL"),
@@ -12,13 +12,13 @@ import { PrismaPg } from "@prisma/adapter-pg";
12
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
13
13
  {{/if}}
14
14
  {{#if (eq provider "sqlite")}}
15
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
16
16
  {{/if}}
17
17
  {{#if (eq provider "sqlserver")}}
18
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
19
19
  {{/if}}
20
20
 
21
- const rawDatabaseUrl = {{#if (eq packageManager "deno")}}Deno.env.get("DATABASE_URL"){{else}}process.env.DATABASE_URL{{/if}};
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
22
22
  {{#if (eq provider "sqlite")}}
23
23
  const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
24
24
  {{else}}
@@ -42,7 +42,7 @@ const adapter = new PrismaPg({
42
42
  const adapter = new PrismaMariaDb(databaseUrl);
43
43
  {{/if}}
44
44
  {{#if (eq provider "sqlite")}}
45
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass packageManager}}({
46
46
  url: databaseUrl,
47
47
  });
48
48
  {{/if}}
@@ -36,9 +36,5 @@ main()
36
36
  .catch(async (error) => {
37
37
  console.error(error);
38
38
  await prisma.$disconnect();
39
- {{#if (eq packageManager "deno")}}
40
- Deno.exit(1);
41
- {{else}}
42
39
  process.exit(1);
43
- {{/if}}
44
40
  });
@@ -1,4 +1,4 @@
1
- {{#if (requiresDotenvConfigImport packageManager)}}
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
2
2
  import "dotenv/config";
3
3
  {{/if}}
4
4
  import { defineConfig, env } from "prisma/config";
@@ -7,7 +7,7 @@ export default defineConfig({
7
7
  schema: "prisma/schema.prisma",
8
8
  migrations: {
9
9
  path: "prisma/migrations",
10
- seed: "{{#if (eq packageManager "deno")}}deno run -A --env-file=.env ./prisma/seed.ts{{else}}{{#if (eq packageManager "bun")}}bun ./prisma/seed.ts{{else}}tsx prisma/seed.ts{{/if}}{{/if}}",
10
+ seed: "{{seedCommand this.packageManager}}",
11
11
  },
12
12
  datasource: {
13
13
  url: env("DATABASE_URL"),
@@ -13,13 +13,13 @@ import { PrismaPg } from "@prisma/adapter-pg";
13
13
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
14
14
  {{/if}}
15
15
  {{#if (eq provider "sqlite")}}
16
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
16
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
17
17
  {{/if}}
18
18
  {{#if (eq provider "sqlserver")}}
19
19
  import { PrismaMssql } from "@prisma/adapter-mssql";
20
20
  {{/if}}
21
21
 
22
- const rawDatabaseUrl = {{#if (eq packageManager "deno")}}Deno.env.get("DATABASE_URL"){{else}}process.env.DATABASE_URL{{/if}};
22
+ const rawDatabaseUrl = process.env.DATABASE_URL;
23
23
  {{#if (eq provider "sqlite")}}
24
24
  const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
25
25
  {{else}}
@@ -43,7 +43,7 @@ const adapter = new PrismaPg({
43
43
  const adapter = new PrismaMariaDb(databaseUrl);
44
44
  {{/if}}
45
45
  {{#if (eq provider "sqlite")}}
46
- const adapter = new PrismaBetterSqlite3({
46
+ const adapter = new {{sqliteAdapterClass packageManager}}({
47
47
  url: databaseUrl,
48
48
  });
49
49
  {{/if}}
@@ -1,4 +1,4 @@
1
- import prisma from "../src/lib/prisma";
1
+ import prisma from "../src/lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -1,11 +1,13 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
1
2
  import "dotenv/config";
3
+ {{/if}}
2
4
  import { defineConfig, env } from "prisma/config";
3
5
 
4
6
  export default defineConfig({
5
7
  schema: "prisma/schema.prisma",
6
8
  migrations: {
7
9
  path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
10
+ seed: "{{seedCommand this.packageManager}}",
9
11
  },
10
12
  datasource: {
11
13
  url: env("DATABASE_URL"),
@@ -1,6 +1,3 @@
1
- {{#if (eq schemaPreset "basic")}}
2
- import { prisma } from "../lib/prisma";
3
- {{/if}}
4
1
  {{#if (eq packageManager "deno")}}
5
2
 
6
3
  export const dynamic = "force-dynamic";
@@ -8,6 +5,7 @@ export const dynamic = "force-dynamic";
8
5
 
9
6
  export default async function Home() {
10
7
  {{#if (eq schemaPreset "basic")}}
8
+ const { prisma } = await import("../lib/prisma");
11
9
  const formatter = new Intl.DateTimeFormat("en", {
12
10
  dateStyle: "medium",
13
11
  timeStyle: "short",
@@ -1,5 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
1
2
  import "dotenv/config";
2
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
5
  {{#if (eq provider "postgresql")}}
4
6
  import { PrismaPg } from "@prisma/adapter-pg";
5
7
  {{/if}}
@@ -10,16 +12,17 @@ import { PrismaPg } from "@prisma/adapter-pg";
10
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
13
  {{/if}}
12
14
  {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
14
16
  {{/if}}
15
17
  {{#if (eq provider "sqlserver")}}
16
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
19
  {{/if}}
18
20
 
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
19
22
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
21
24
  {{else}}
22
- const databaseUrl = process.env.DATABASE_URL;
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
23
26
  if (!databaseUrl) {
24
27
  throw new Error("DATABASE_URL is required");
25
28
  }
@@ -39,7 +42,7 @@ const adapter = new PrismaPg({
39
42
  const adapter = new PrismaMariaDb(databaseUrl);
40
43
  {{/if}}
41
44
  {{#if (eq provider "sqlite")}}
42
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass packageManager}}({
43
46
  url: databaseUrl,
44
47
  });
45
48
  {{/if}}
@@ -9,6 +9,7 @@
9
9
  "esModuleInterop": true,
10
10
  "module": "esnext",
11
11
  "moduleResolution": "bundler",
12
+ "allowImportingTsExtensions": true,
12
13
  "resolveJsonModule": true,
13
14
  "isolatedModules": true,
14
15
  "jsx": "react-jsx",
@@ -2,4 +2,20 @@
2
2
  export default defineNuxtConfig({
3
3
  compatibilityDate: "2025-07-15",
4
4
  devtools: { enabled: true },
5
+ typescript: {
6
+ tsConfig: {
7
+ compilerOptions: {
8
+ allowImportingTsExtensions: true,
9
+ },
10
+ },
11
+ },
12
+ nitro: {
13
+ typescript: {
14
+ tsConfig: {
15
+ compilerOptions: {
16
+ allowImportingTsExtensions: true,
17
+ },
18
+ },
19
+ },
20
+ },
5
21
  });
@@ -1,4 +1,4 @@
1
- import prisma from "../server/utils/prisma";
1
+ import prisma from "../server/utils/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -1,11 +1,13 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
1
2
  import "dotenv/config";
3
+ {{/if}}
2
4
  import { defineConfig, env } from "prisma/config";
3
5
 
4
6
  export default defineConfig({
5
7
  schema: "prisma/schema.prisma",
6
8
  migrations: {
7
9
  path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
10
+ seed: "{{seedCommand this.packageManager}}",
9
11
  },
10
12
  datasource: {
11
13
  url: env("DATABASE_URL"),
@@ -1,5 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
1
2
  import "dotenv/config";
2
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
5
  {{#if (eq provider "postgresql")}}
4
6
  import { PrismaPg } from "@prisma/adapter-pg";
5
7
  {{/if}}
@@ -10,16 +12,17 @@ import { PrismaPg } from "@prisma/adapter-pg";
10
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
13
  {{/if}}
12
14
  {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
14
16
  {{/if}}
15
17
  {{#if (eq provider "sqlserver")}}
16
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
19
  {{/if}}
18
20
 
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
19
22
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
21
24
  {{else}}
22
- const databaseUrl = process.env.DATABASE_URL;
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
23
26
  if (!databaseUrl) {
24
27
  throw new Error("DATABASE_URL is required");
25
28
  }
@@ -39,7 +42,7 @@ const adapter = new PrismaPg({
39
42
  const adapter = new PrismaMariaDb(databaseUrl);
40
43
  {{/if}}
41
44
  {{#if (eq provider "sqlite")}}
42
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass packageManager}}({
43
46
  url: databaseUrl,
44
47
  });
45
48
  {{/if}}
@@ -12,7 +12,8 @@
12
12
  "preview": "vite preview",
13
13
  "prepare": "svelte-kit sync || echo ''",
14
14
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
15
- "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
15
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
16
+ "db:generate": "svelte-kit sync && {{prismaCommand packageManager "generate"}}"
16
17
  },
17
18
  "devDependencies": {
18
19
  "@sveltejs/adapter-auto": "^7.0.0",
@@ -1,53 +1,4 @@
1
- import "dotenv/config";
2
- import { PrismaClient } from "../src/generated/prisma/client";
3
- {{#if (eq provider "postgresql")}}
4
- import { PrismaPg } from "@prisma/adapter-pg";
5
- {{/if}}
6
- {{#if (eq provider "cockroachdb")}}
7
- import { PrismaPg } from "@prisma/adapter-pg";
8
- {{/if}}
9
- {{#if (eq provider "mysql")}}
10
- import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
- {{/if}}
12
- {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
14
- {{/if}}
15
- {{#if (eq provider "sqlserver")}}
16
- import { PrismaMssql } from "@prisma/adapter-mssql";
17
- {{/if}}
18
-
19
- {{#if (eq provider "sqlite")}}
20
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
21
- {{else}}
22
- const databaseUrl = process.env.DATABASE_URL;
23
- if (!databaseUrl) {
24
- throw new Error("DATABASE_URL is required");
25
- }
26
- {{/if}}
27
-
28
- {{#if (eq provider "postgresql")}}
29
- const adapter = new PrismaPg({
30
- connectionString: databaseUrl,
31
- });
32
- {{/if}}
33
- {{#if (eq provider "cockroachdb")}}
34
- const adapter = new PrismaPg({
35
- connectionString: databaseUrl,
36
- });
37
- {{/if}}
38
- {{#if (eq provider "mysql")}}
39
- const adapter = new PrismaMariaDb(databaseUrl);
40
- {{/if}}
41
- {{#if (eq provider "sqlite")}}
42
- const adapter = new PrismaBetterSqlite3({
43
- url: databaseUrl,
44
- });
45
- {{/if}}
46
- {{#if (eq provider "sqlserver")}}
47
- const adapter = new PrismaMssql(databaseUrl);
48
- {{/if}}
49
-
50
- const prisma = new PrismaClient({ adapter });
1
+ import prisma from "../src/lib/server/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}";
51
2
 
52
3
  async function main() {
53
4
  {{#if (eq schemaPreset "basic")}}
@@ -1,11 +1,13 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
1
2
  import "dotenv/config";
3
+ {{/if}}
2
4
  import { defineConfig, env } from "prisma/config";
3
5
 
4
6
  export default defineConfig({
5
7
  schema: "prisma/schema.prisma",
6
8
  migrations: {
7
9
  path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
10
+ seed: "{{seedCommand this.packageManager}}",
9
11
  },
10
12
  datasource: {
11
13
  url: env("DATABASE_URL"),
@@ -1,5 +1,4 @@
1
- import { env } from "$env/dynamic/private";
2
- import { PrismaClient } from "../../generated/prisma/client";
1
+ import { PrismaClient } from "../../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
2
  {{#if (eq provider "postgresql")}}
4
3
  import { PrismaPg } from "@prisma/adapter-pg";
5
4
  {{/if}}
@@ -10,16 +9,17 @@ import { PrismaPg } from "@prisma/adapter-pg";
10
9
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
10
  {{/if}}
12
11
  {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
12
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
14
13
  {{/if}}
15
14
  {{#if (eq provider "sqlserver")}}
16
15
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
16
  {{/if}}
18
17
 
18
+ const rawDatabaseUrl = process.env.DATABASE_URL;
19
19
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl = env.DATABASE_URL ?? "file:./dev.db";
20
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
21
21
  {{else}}
22
- const databaseUrl = env.DATABASE_URL;
22
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
23
23
  if (!databaseUrl) {
24
24
  throw new Error("DATABASE_URL is required");
25
25
  }
@@ -39,7 +39,7 @@ const adapter = new PrismaPg({
39
39
  const adapter = new PrismaMariaDb(databaseUrl);
40
40
  {{/if}}
41
41
  {{#if (eq provider "sqlite")}}
42
- const adapter = new PrismaBetterSqlite3({
42
+ const adapter = new {{sqliteAdapterClass packageManager}}({
43
43
  url: databaseUrl,
44
44
  });
45
45
  {{/if}}
@@ -1,4 +1,4 @@
1
- import prisma from "../src/lib/prisma.server";
1
+ import prisma from "../src/lib/prisma.server{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -28,10 +28,11 @@ async function main() {
28
28
  }
29
29
 
30
30
  main()
31
+ .then(async () => {
32
+ await prisma.$disconnect();
33
+ })
31
34
  .catch(async (error: unknown) => {
32
35
  console.error(error);
33
- process.exitCode = 1;
34
- })
35
- .finally(async () => {
36
36
  await prisma.$disconnect();
37
+ process.exit(1);
37
38
  });
@@ -0,0 +1,15 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ import { defineConfig, env } from "prisma/config";
5
+
6
+ export default defineConfig({
7
+ schema: "prisma/schema.prisma",
8
+ migrations: {
9
+ path: "prisma/migrations",
10
+ seed: "{{seedCommand this.packageManager}}",
11
+ },
12
+ datasource: {
13
+ url: env("DATABASE_URL"),
14
+ },
15
+ });
@@ -1,5 +1,7 @@
1
+ {{#if (requiresDotenvConfigImport packageManager)}}
1
2
  import "dotenv/config";
2
- import { PrismaClient } from "../generated/prisma/client";
3
+ {{/if}}
4
+ import { PrismaClient } from "../generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
3
5
  {{#if (eq provider "postgresql")}}
4
6
  import { PrismaPg } from "@prisma/adapter-pg";
5
7
  {{/if}}
@@ -10,16 +12,17 @@ import { PrismaPg } from "@prisma/adapter-pg";
10
12
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
11
13
  {{/if}}
12
14
  {{#if (eq provider "sqlite")}}
13
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
15
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
14
16
  {{/if}}
15
17
  {{#if (eq provider "sqlserver")}}
16
18
  import { PrismaMssql } from "@prisma/adapter-mssql";
17
19
  {{/if}}
18
20
 
21
+ const rawDatabaseUrl = process.env.DATABASE_URL;
19
22
  {{#if (eq provider "sqlite")}}
20
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
23
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
21
24
  {{else}}
22
- const databaseUrl = process.env.DATABASE_URL;
25
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
23
26
  if (!databaseUrl) {
24
27
  throw new Error("DATABASE_URL is required");
25
28
  }
@@ -39,7 +42,7 @@ const adapter = new PrismaPg({
39
42
  const adapter = new PrismaMariaDb(databaseUrl);
40
43
  {{/if}}
41
44
  {{#if (eq provider "sqlite")}}
42
- const adapter = new PrismaBetterSqlite3({
45
+ const adapter = new {{sqliteAdapterClass packageManager}}({
43
46
  url: databaseUrl,
44
47
  });
45
48
  {{/if}}
@@ -3,10 +3,17 @@
3
3
  "private": true,
4
4
  "type": "module",
5
5
  "scripts": {
6
+ {{#if (eq packageManager "deno")}}
7
+ "dev": "deno run -A --env-file=.env --watch src/index.ts",
8
+ "build": "deno check src/index.ts",
9
+ "start": "deno run -A --env-file=.env src/index.ts",
10
+ "typecheck": "deno check src/index.ts"
11
+ {{else}}
6
12
  "dev": "tsx watch src/index.ts",
7
13
  "build": "tsc",
8
14
  "start": "node dist/src/index.js",
9
15
  "typecheck": "tsc --noEmit"
16
+ {{/if}}
10
17
  },
11
18
  "dependencies": {
12
19
  "@hono/node-server": "^1.19.9",
@@ -10,13 +10,19 @@
10
10
  "packages/*"
11
11
  ],
12
12
  "scripts": {
13
+ {{#if (eq packageManager "deno")}}
14
+ "build": "deno task --filter=@repo/db build && deno task --filter=@repo/api build",
15
+ "dev": "deno task --filter=@repo/api dev",
16
+ "typecheck": "deno task --filter=@repo/db typecheck && deno task --filter=@repo/api typecheck",
17
+ {{else}}
13
18
  "build": "turbo run build",
14
19
  "dev": "turbo run dev --filter=@repo/api",
15
20
  "typecheck": "turbo run typecheck",
16
- "db:generate": "turbo run db:generate --filter=@repo/db",
17
- "db:push": "turbo run db:push --filter=@repo/db",
18
- "db:migrate": "turbo run db:migrate --filter=@repo/db",
19
- "db:seed": "turbo run db:seed --filter=@repo/db"
21
+ {{/if}}
22
+ "db:generate": "{{runScriptInDirectoryCommand packageManager "packages/db" "db:generate"}}",
23
+ "db:push": "{{runScriptInDirectoryCommand packageManager "packages/db" "db:push"}}",
24
+ "db:migrate": "{{runScriptInDirectoryCommand packageManager "packages/db" "db:migrate"}}",
25
+ "db:seed": "{{runScriptInDirectoryCommand packageManager "packages/db" "db:seed"}}"
20
26
  },
21
27
  "devDependencies": {
22
28
  "turbo": "^2.5.6"
@@ -6,8 +6,13 @@
6
6
  ".": "./src/index.ts"
7
7
  },
8
8
  "scripts": {
9
+ {{#if (eq packageManager "deno")}}
10
+ "build": "deno check src/index.ts",
11
+ "typecheck": "deno check src/index.ts"
12
+ {{else}}
9
13
  "build": "tsc",
10
14
  "typecheck": "tsc --noEmit"
15
+ {{/if}}
11
16
  },
12
17
  "devDependencies": {
13
18
  "@types/node": "^24.3.0",
@@ -1,4 +1,4 @@
1
- import prisma from "../src/client";
1
+ import prisma from "../src/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
2
2
 
3
3
  async function main() {
4
4
  {{#if (eq schemaPreset "basic")}}
@@ -0,0 +1,15 @@
1
+ {{#if (requiresPrismaConfigDotenvImport this.packageManager)}}
2
+ import "dotenv/config";
3
+ {{/if}}
4
+ import { defineConfig, env } from "prisma/config";
5
+
6
+ export default defineConfig({
7
+ schema: "prisma/schema.prisma",
8
+ migrations: {
9
+ path: "prisma/migrations",
10
+ seed: "{{seedCommand this.packageManager}}",
11
+ },
12
+ datasource: {
13
+ url: env("DATABASE_URL"),
14
+ },
15
+ });
@@ -1,7 +1,9 @@
1
+ {{#unless (eq packageManager "deno")}}
1
2
  import path from "node:path";
2
3
  import { fileURLToPath } from "node:url";
3
4
  import dotenv from "dotenv";
4
- import { PrismaClient } from "./generated/prisma/client";
5
+ {{/unless}}
6
+ import { PrismaClient } from "./generated/prisma/client{{#if (eq packageManager "deno")}}.ts{{/if}}";
5
7
  {{#if (eq provider "postgresql")}}
6
8
  import { PrismaPg } from "@prisma/adapter-pg";
7
9
  {{/if}}
@@ -12,19 +14,22 @@ import { PrismaPg } from "@prisma/adapter-pg";
12
14
  import { PrismaMariaDb } from "@prisma/adapter-mariadb";
13
15
  {{/if}}
14
16
  {{#if (eq provider "sqlite")}}
15
- import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
17
+ import { {{sqliteAdapterClass packageManager}} } from "{{sqliteAdapterPackage packageManager}}";
16
18
  {{/if}}
17
19
  {{#if (eq provider "sqlserver")}}
18
20
  import { PrismaMssql } from "@prisma/adapter-mssql";
19
21
  {{/if}}
20
22
 
23
+ {{#unless (eq packageManager "deno")}}
21
24
  const moduleDir = path.dirname(fileURLToPath(import.meta.url));
22
25
  dotenv.config({ path: path.resolve(moduleDir, "../.env"), quiet: true });
26
+ {{/unless}}
23
27
 
28
+ const rawDatabaseUrl = process.env.DATABASE_URL;
24
29
  {{#if (eq provider "sqlite")}}
25
- const databaseUrl = process.env.DATABASE_URL ?? "file:./dev.db";
30
+ const databaseUrl = (rawDatabaseUrl ?? "").trim() || "file:./dev.db";
26
31
  {{else}}
27
- const databaseUrl = process.env.DATABASE_URL;
32
+ const databaseUrl = (rawDatabaseUrl ?? "").trim();
28
33
  if (!databaseUrl) {
29
34
  throw new Error("DATABASE_URL is required");
30
35
  }
@@ -44,7 +49,7 @@ const adapter = new PrismaPg({
44
49
  const adapter = new PrismaMariaDb(databaseUrl);
45
50
  {{/if}}
46
51
  {{#if (eq provider "sqlite")}}
47
- const adapter = new PrismaBetterSqlite3({
52
+ const adapter = new {{sqliteAdapterClass packageManager}}({
48
53
  url: databaseUrl,
49
54
  });
50
55
  {{/if}}
@@ -1,13 +0,0 @@
1
- import "dotenv/config";
2
- import { defineConfig, env } from "prisma/config";
3
-
4
- export default defineConfig({
5
- schema: "prisma/schema.prisma",
6
- migrations: {
7
- path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
9
- },
10
- datasource: {
11
- url: env("DATABASE_URL"),
12
- },
13
- });
@@ -1,13 +0,0 @@
1
- import "dotenv/config";
2
- import { defineConfig, env } from "prisma/config";
3
-
4
- export default defineConfig({
5
- schema: "prisma/schema.prisma",
6
- migrations: {
7
- path: "prisma/migrations",
8
- seed: "tsx prisma/seed.ts",
9
- },
10
- datasource: {
11
- url: env("DATABASE_URL"),
12
- },
13
- });