create-prisma 0.3.2-pr.31.55.1 → 0.3.2-pr.31.57.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.
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "./create-CNU9RJVg.mjs";
2
+ import "./create-B39mwJIP.mjs";
3
3
  import { createCreatePrismaCli } from "./index.mjs";
4
4
 
5
5
  //#region src/cli.ts
@@ -12,6 +12,15 @@ import os from "node:os";
12
12
  import { PostHog } from "posthog-node";
13
13
  import { styleText } from "node:util";
14
14
 
15
+ //#region src/utils/runtime.ts
16
+ function usesNodeStyleRuntime(packageManager) {
17
+ return packageManager !== void 0 && packageManager !== "bun" && packageManager !== "deno";
18
+ }
19
+ function requiresDotenvConfigImport(packageManager) {
20
+ return usesNodeStyleRuntime(packageManager);
21
+ }
22
+
23
+ //#endregion
15
24
  //#region src/constants/dependencies.ts
16
25
  const dependencyVersionMap = {
17
26
  "@elysiajs/node": "^1.4.5",
@@ -29,13 +38,10 @@ const dependencyVersionMap = {
29
38
  function getWorkspaceDependencyVersion(packageManager) {
30
39
  return packageManager === "npm" ? "*" : "workspace:*";
31
40
  }
32
- function usesNodeStyleRuntime$1(packageManager) {
33
- return packageManager !== "bun" && packageManager !== "deno";
34
- }
35
41
  function getCreateTemplateDependencies(template, packageManager) {
36
42
  const targets = [];
37
43
  if (template === "hono" || template === "elysia" || template === "nest") {
38
- const runtimeDevDependencies = usesNodeStyleRuntime$1(packageManager) ? ["tsx"] : [];
44
+ const runtimeDevDependencies = usesNodeStyleRuntime(packageManager) ? ["tsx"] : [];
39
45
  if (template === "elysia" && packageManager !== "deno") targets.push({
40
46
  packageJsonPath: "package.json",
41
47
  dependencies: ["@elysiajs/node"],
@@ -240,12 +246,6 @@ function getRunScriptCommand(packageManager, scriptName) {
240
246
  function joinCommandParts(parts) {
241
247
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
242
248
  }
243
- function usesNodeStyleRuntime(packageManager) {
244
- return packageManager !== void 0 && packageManager !== "bun" && packageManager !== "deno";
245
- }
246
- function requiresDotenvConfigImport(packageManager) {
247
- return usesNodeStyleRuntime(packageManager);
248
- }
249
249
  function getRuntimeScriptCommand(packageManager, kind, options) {
250
250
  const { sourceEntrypoint, builtEntrypoint, denoFlags = [] } = options;
251
251
  if (packageManager === "deno") switch (kind) {
@@ -276,7 +276,7 @@ function getRuntimeScriptCommand(packageManager, kind, options) {
276
276
  switch (kind) {
277
277
  case "dev": return `tsx watch ${sourceEntrypoint}`;
278
278
  case "build": return "tsc";
279
- case "start": return `tsx ${builtEntrypoint ?? sourceEntrypoint}`;
279
+ case "start": return builtEntrypoint ? `node ${builtEntrypoint}` : `tsx ${sourceEntrypoint}`;
280
280
  }
281
281
  }
282
282
  function getInstallArgs(packageManager) {
@@ -359,7 +359,6 @@ function getOptionalHashStringList(hash, key) {
359
359
  return getOptionalHashString(hash, key)?.split(" ") ?? [];
360
360
  }
361
361
  Handlebars.registerHelper("eq", (left, right) => left === right);
362
- Handlebars.registerHelper("installCommand", (packageManager) => packageManager ? getInstallCommand(packageManager) : "");
363
362
  Handlebars.registerHelper("runScriptCommand", (packageManager, scriptName) => packageManager ? getRunScriptCommand(packageManager, scriptName) : "");
364
363
  Handlebars.registerHelper("packageManagerManifestValue", (packageManager) => getPackageManagerManifestValue(packageManager) ?? "");
365
364
  Handlebars.registerHelper("requiresDotenvConfigImport", (packageManager) => requiresDotenvConfigImport(packageManager));
@@ -454,10 +453,10 @@ async function scaffoldCreateTemplate(opts) {
454
453
  function getDbPackages(provider) {
455
454
  switch (provider) {
456
455
  case "postgresql":
457
- case "cockroachdb": return { adapterPackage: "@prisma/adapter-pg" };
458
- case "mysql": return { adapterPackage: "@prisma/adapter-mariadb" };
459
- case "sqlite": return { adapterPackage: "@prisma/adapter-better-sqlite3" };
460
- case "sqlserver": return { adapterPackage: "@prisma/adapter-mssql" };
456
+ case "cockroachdb": return "@prisma/adapter-pg";
457
+ case "mysql": return "@prisma/adapter-mariadb";
458
+ case "sqlite": return "@prisma/adapter-better-sqlite3";
459
+ case "sqlserver": return "@prisma/adapter-mssql";
461
460
  default: {
462
461
  const exhaustiveCheck = provider;
463
462
  throw new Error(`Unsupported database provider: ${String(exhaustiveCheck)}`);
@@ -522,9 +521,7 @@ async function projectContainsText(projectDir, text) {
522
521
  return false;
523
522
  }
524
523
  async function addPackageDependency(opts) {
525
- const { dependencies = [], devDependencies = [], customDependencies = {}, customDevDependencies = {}, scripts = {}, scriptMode = "upsert", projectDir } = opts;
526
- const addedScripts = [];
527
- const existingScripts = [];
524
+ const { dependencies = [], devDependencies = [], customDependencies = {}, scripts = {}, scriptMode, projectDir } = opts;
528
525
  const pkgJsonPath = path.join(projectDir, "package.json");
529
526
  if (!await fs.pathExists(pkgJsonPath)) throw new Error(`No package.json found in ${projectDir}. Run this command inside an existing JavaScript/TypeScript project.`);
530
527
  const pkgJson = await fs.readJson(pkgJsonPath);
@@ -542,61 +539,40 @@ async function addPackageDependency(opts) {
542
539
  else console.warn(`Warning: Dev dependency ${pkgName} not found in version map.`);
543
540
  }
544
541
  for (const [pkgName, version] of Object.entries(customDependencies)) pkgJson.dependencies[pkgName] = version;
545
- for (const [pkgName, version] of Object.entries(customDevDependencies)) pkgJson.devDependencies[pkgName] = version;
546
542
  for (const [scriptName, command] of Object.entries(scripts)) {
547
543
  if (scriptMode === "if-missing") {
548
- if (typeof pkgJson.scripts[scriptName] !== "string" || pkgJson.scripts[scriptName].trim().length === 0) {
549
- pkgJson.scripts[scriptName] = command;
550
- addedScripts.push(scriptName);
551
- } else existingScripts.push(scriptName);
544
+ if (typeof pkgJson.scripts[scriptName] !== "string" || pkgJson.scripts[scriptName].trim().length === 0) pkgJson.scripts[scriptName] = command;
552
545
  continue;
553
546
  }
554
- if (pkgJson.scripts[scriptName] === command) existingScripts.push(scriptName);
555
- else addedScripts.push(scriptName);
556
547
  pkgJson.scripts[scriptName] = command;
557
548
  }
558
549
  pkgJson.dependencies = sortRecord(pkgJson.dependencies);
559
550
  pkgJson.devDependencies = sortRecord(pkgJson.devDependencies);
560
551
  await fs.writeJson(pkgJsonPath, pkgJson, { spaces: 2 });
561
- return {
562
- addedScripts,
563
- existingScripts
564
- };
565
552
  }
566
553
  async function writePrismaDependencies(provider, packageManager, projectDir = process.cwd()) {
567
554
  const dependencies = ["@prisma/client"];
568
555
  const devDependencies = ["prisma"];
569
- const { adapterPackage } = getDbPackages(provider);
570
- dependencies.push(adapterPackage);
556
+ dependencies.push(getDbPackages(provider));
571
557
  if (requiresDotenvConfigImport(packageManager) || await projectContainsText(projectDir, "dotenv/config")) dependencies.push("dotenv");
572
558
  if (provider === "sqlite" && packageManager === "deno") devDependencies.push("node-gyp");
573
- const prismaScriptMap = getPrismaScriptMap(packageManager);
574
- const scriptWriteResult = await addPackageDependency({
559
+ await addPackageDependency({
575
560
  dependencies,
576
561
  devDependencies,
577
- scripts: prismaScriptMap,
562
+ scripts: getPrismaScriptMap(packageManager),
578
563
  scriptMode: "if-missing",
579
564
  projectDir
580
565
  });
581
- return {
582
- dependencies,
583
- devDependencies,
584
- scripts: Object.keys(prismaScriptMap),
585
- addedScripts: scriptWriteResult.addedScripts,
586
- existingScripts: scriptWriteResult.existingScripts
587
- };
588
566
  }
589
567
  async function writeCreateTemplateDependencies(opts) {
590
568
  const { template, packageManager, projectDir = process.cwd() } = opts;
591
569
  const targets = getCreateTemplateDependencies(template, packageManager);
592
570
  for (const dependencyTarget of targets) {
593
571
  const targetDirectory = path.join(projectDir, path.dirname(dependencyTarget.packageJsonPath));
594
- if (!(dependencyTarget.dependencies.length > 0 || dependencyTarget.devDependencies.length > 0 || Object.keys(dependencyTarget.customDependencies ?? {}).length > 0 || Object.keys(dependencyTarget.customDevDependencies ?? {}).length > 0)) continue;
595
572
  await addPackageDependency({
596
573
  dependencies: dependencyTarget.dependencies,
597
574
  devDependencies: dependencyTarget.devDependencies,
598
575
  customDependencies: dependencyTarget.customDependencies,
599
- customDevDependencies: dependencyTarget.customDevDependencies,
600
576
  projectDir: targetDirectory
601
577
  });
602
578
  }
@@ -861,36 +837,20 @@ async function ensureEnvVarInEnv(projectDir, envVarName, envVarValue, opts) {
861
837
  if (!await fs.pathExists(envPath)) {
862
838
  const content = opts.comment ? `# ${opts.comment}\n${envLine}\n` : `${envLine}\n`;
863
839
  await fs.writeFile(envPath, content, "utf8");
864
- return {
865
- envPath,
866
- status: "created"
867
- };
840
+ return;
868
841
  }
869
842
  const existingContent = await fs.readFile(envPath, "utf8");
870
843
  if (hasEnvVar(existingContent, envVarName)) {
871
- if (opts.mode === "keep-existing") return {
872
- envPath,
873
- status: "existing"
874
- };
844
+ if (opts.mode === "keep-existing") return;
875
845
  const escapedName = escapeRegExp(envVarName);
876
846
  const lineRegex = new RegExp(`(^|\\n)\\s*${escapedName}\\s*=.*(?=\\n|$)`, "gm");
877
847
  const updatedContent = existingContent.replace(lineRegex, `$1${envLine}`);
878
- if (updatedContent === existingContent) return {
879
- envPath,
880
- status: "existing"
881
- };
848
+ if (updatedContent === existingContent) return;
882
849
  await fs.writeFile(envPath, updatedContent, "utf8");
883
- return {
884
- envPath,
885
- status: "updated"
886
- };
850
+ return;
887
851
  }
888
852
  const insertion = `${existingContent.endsWith("\n") ? "" : "\n"}${opts.comment ? `\n# ${opts.comment}\n` : "\n"}${envLine}\n`;
889
853
  await fs.appendFile(envPath, insertion, "utf8");
890
- return {
891
- envPath,
892
- status: "appended"
893
- };
894
854
  }
895
855
  async function ensureEnvComment(projectDir, comment) {
896
856
  const envPath = path.join(projectDir, ".env");
@@ -915,22 +875,12 @@ async function ensureGitignoreEntry(projectDir, entry) {
915
875
  const gitignorePath = path.join(projectDir, ".gitignore");
916
876
  if (!await fs.pathExists(gitignorePath)) {
917
877
  await fs.writeFile(gitignorePath, `${entry}\n`, "utf8");
918
- return {
919
- gitignorePath,
920
- status: "created"
921
- };
878
+ return;
922
879
  }
923
880
  const existingContent = await fs.readFile(gitignorePath, "utf8");
924
- if (hasGitignoreEntry(existingContent, entry)) return {
925
- gitignorePath,
926
- status: "existing"
927
- };
881
+ if (hasGitignoreEntry(existingContent, entry)) return;
928
882
  const separator = existingContent.endsWith("\n") ? "" : "\n";
929
883
  await fs.appendFile(gitignorePath, `${separator}${entry}\n`, "utf8");
930
- return {
931
- gitignorePath,
932
- status: "appended"
933
- };
934
884
  }
935
885
  async function ensureRequiredPrismaFiles(projectDir) {
936
886
  const missingFiles = [];
@@ -950,34 +900,20 @@ async function ensureRequiredPrismaFiles(projectDir) {
950
900
  async function finalizePrismaFiles(options) {
951
901
  const projectDir = options.projectDir ?? process.cwd();
952
902
  const prismaProjectDir = await resolvePrismaProjectDir(projectDir);
953
- const schemaPath = path.join(prismaProjectDir, "prisma/schema.prisma");
954
- const configPath = path.join(prismaProjectDir, "prisma.config.ts");
955
903
  await ensureRequiredPrismaFiles(projectDir);
956
- const singletonPath = await fs.pathExists(path.join(prismaProjectDir, "src/lib/prisma.ts")) ? path.join(prismaProjectDir, "src/lib/prisma.ts") : await fs.pathExists(path.join(prismaProjectDir, "src/lib/prisma.server.ts")) ? path.join(prismaProjectDir, "src/lib/prisma.server.ts") : await fs.pathExists(path.join(prismaProjectDir, "src/lib/server/prisma.ts")) ? path.join(prismaProjectDir, "src/lib/server/prisma.ts") : await fs.pathExists(path.join(prismaProjectDir, "server/utils/prisma.ts")) ? path.join(prismaProjectDir, "server/utils/prisma.ts") : path.join(prismaProjectDir, "src/client.ts");
957
904
  const generatedDir = await fs.pathExists(path.join(prismaProjectDir, "server/utils/prisma.ts")) ? "server/generated" : "src/generated";
958
- const envResult = await ensureEnvVarInEnv(prismaProjectDir, "DATABASE_URL", options.databaseUrl ?? getDefaultDatabaseUrl(options.provider), {
905
+ await ensureEnvVarInEnv(prismaProjectDir, "DATABASE_URL", options.databaseUrl ?? getDefaultDatabaseUrl(options.provider), {
959
906
  mode: options.databaseUrl ? "upsert" : "keep-existing",
960
907
  comment: "Added by create-prisma"
961
908
  });
962
- let claimEnvStatus;
963
909
  if (options.claimUrl) {
964
- claimEnvStatus = (await ensureEnvVarInEnv(prismaProjectDir, "CLAIM_URL", options.claimUrl, {
910
+ await ensureEnvVarInEnv(prismaProjectDir, "CLAIM_URL", options.claimUrl, {
965
911
  mode: "upsert",
966
912
  comment: PRISMA_POSTGRES_TEMPORARY_NOTICE
967
- })).status;
913
+ });
968
914
  await ensureEnvComment(prismaProjectDir, PRISMA_POSTGRES_TEMPORARY_NOTICE);
969
915
  }
970
- const gitignoreResult = await ensureGitignoreEntry(prismaProjectDir, generatedDir);
971
- return {
972
- schemaPath,
973
- configPath,
974
- singletonPath,
975
- envPath: envResult.envPath,
976
- envStatus: envResult.status,
977
- gitignorePath: gitignoreResult.gitignorePath,
978
- gitignoreStatus: gitignoreResult.status,
979
- claimEnvStatus
980
- };
916
+ await ensureGitignoreEntry(prismaProjectDir, generatedDir);
981
917
  }
982
918
  async function provisionPrismaPostgresIfNeeded(context, projectDir) {
983
919
  if (!context.shouldUsePrismaPostgres) return { databaseUrl: context.databaseUrl };
@@ -1003,10 +939,11 @@ async function provisionPrismaPostgresIfNeeded(context, projectDir) {
1003
939
  async function writeDependenciesForContext(context, projectDir) {
1004
940
  const prismaProjectDir = await resolvePrismaProjectDir(projectDir);
1005
941
  try {
1006
- return await writePrismaDependencies(context.databaseProvider, context.packageManager, prismaProjectDir);
942
+ await writePrismaDependencies(context.databaseProvider, context.packageManager, prismaProjectDir);
943
+ return true;
1007
944
  } catch (error) {
1008
945
  cancel(getCommandErrorMessage(error));
1009
- return;
946
+ return false;
1010
947
  }
1011
948
  }
1012
949
  async function installDependenciesForContext(context, projectDir) {
@@ -1039,18 +976,18 @@ async function finalizePrismaFilesForContext(context, projectDir, provisionResul
1039
976
  const initSpinner = spinner();
1040
977
  initSpinner.start("Preparing Prisma files...");
1041
978
  try {
1042
- const finalizeResult = await finalizePrismaFiles({
979
+ await finalizePrismaFiles({
1043
980
  provider: context.databaseProvider,
1044
981
  databaseUrl: provisionResult.databaseUrl,
1045
982
  claimUrl: provisionResult.claimUrl,
1046
983
  projectDir
1047
984
  });
1048
985
  initSpinner.stop("Prisma files ready.");
1049
- return finalizeResult;
986
+ return true;
1050
987
  } catch (error) {
1051
988
  initSpinner.stop("Could not prepare Prisma files.");
1052
989
  cancel(getCommandErrorMessage(error));
1053
- return;
990
+ return false;
1054
991
  }
1055
992
  }
1056
993
  async function generatePrismaClientForContext(context, projectDir) {
@@ -1097,10 +1034,10 @@ function buildNextStepsForContext(opts) {
1097
1034
  async function executePrismaSetupContext(context, options = {}) {
1098
1035
  const projectDir = path.resolve(options.projectDir ?? context.projectDir);
1099
1036
  const provisionResult = await provisionPrismaPostgresIfNeeded(context, projectDir);
1100
- if (!provisionResult) return;
1101
- if (!await writeDependenciesForContext(context, projectDir)) return;
1102
- if (!await installDependenciesForContext(context, projectDir)) return;
1103
- if (!await finalizePrismaFilesForContext(context, projectDir, provisionResult)) return;
1037
+ if (!provisionResult) return false;
1038
+ if (!await writeDependenciesForContext(context, projectDir)) return false;
1039
+ if (!await installDependenciesForContext(context, projectDir)) return false;
1040
+ if (!await finalizePrismaFilesForContext(context, projectDir, provisionResult)) return false;
1104
1041
  const generateResult = await generatePrismaClientForContext(context, projectDir);
1105
1042
  const warningLines = buildWarningLines(provisionResult.warning, generateResult.warning);
1106
1043
  const nextSteps = buildNextStepsForContext({
@@ -1112,7 +1049,7 @@ async function executePrismaSetupContext(context, options = {}) {
1112
1049
 
1113
1050
  Next steps:
1114
1051
  ${nextSteps.join("\n")}`);
1115
- return { packageManager: context.packageManager };
1052
+ return true;
1116
1053
  }
1117
1054
 
1118
1055
  //#endregion
@@ -1672,7 +1609,7 @@ async function getAnonymousId() {
1672
1609
  }
1673
1610
  function getCommonProperties() {
1674
1611
  return {
1675
- "cli-version": "0.3.2-pr.31.55.1",
1612
+ "cli-version": "0.3.2-pr.31.57.1",
1676
1613
  "node-version": process.version,
1677
1614
  platform: process.platform,
1678
1615
  arch: process.arch
@@ -1732,7 +1669,7 @@ function getBaseCreateProperties(input, context) {
1732
1669
  template: context?.template ?? input.template ?? null,
1733
1670
  "database-provider": context?.prismaSetupContext.databaseProvider ?? input.provider ?? null,
1734
1671
  "package-manager": context?.prismaSetupContext.packageManager ?? input.packageManager ?? null,
1735
- "schema-preset": context?.schemaPreset ?? input.schemaPreset ?? null,
1672
+ "schema-preset": context?.prismaSetupContext.schemaPreset ?? input.schemaPreset ?? null,
1736
1673
  "should-install": context?.prismaSetupContext.shouldInstall ?? input.install ?? null,
1737
1674
  "should-generate": context?.prismaSetupContext.shouldGenerate ?? input.generate ?? null,
1738
1675
  "uses-prisma-postgres": context?.prismaSetupContext.shouldUsePrismaPostgres ?? input.prismaPostgres ?? null,
@@ -1929,7 +1866,7 @@ async function collectCreateContext(input) {
1929
1866
  const useDefaults = input.yes === true;
1930
1867
  const force = input.force === true;
1931
1868
  const projectNameInput = input.name ?? (useDefaults ? DEFAULT_PROJECT_NAME : await promptForProjectName());
1932
- if (!projectNameInput) return;
1869
+ if (projectNameInput === void 0) return;
1933
1870
  const projectName = String(projectNameInput).trim();
1934
1871
  const projectNameValidationError = validateProjectName(projectName);
1935
1872
  if (projectNameValidationError) {
@@ -1964,7 +1901,6 @@ async function collectCreateContext(input) {
1964
1901
  targetPathState,
1965
1902
  force,
1966
1903
  template,
1967
- schemaPreset: prismaSetupContext.schemaPreset,
1968
1904
  projectPackageName: toPackageName(path.basename(targetDirectory)),
1969
1905
  prismaSetupContext,
1970
1906
  addonSetupContext: addonSetupContext ?? void 0
@@ -1978,7 +1914,7 @@ async function executeCreateContext(context) {
1978
1914
  projectDir: context.targetDirectory,
1979
1915
  projectName: context.projectPackageName,
1980
1916
  template: context.template,
1981
- schemaPreset: context.schemaPreset,
1917
+ schemaPreset: context.prismaSetupContext.schemaPreset,
1982
1918
  provider: context.prismaSetupContext.databaseProvider,
1983
1919
  packageManager: context.prismaSetupContext.packageManager
1984
1920
  });
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-CNU9RJVg.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-B39mwJIP.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.3.2-pr.31.55.1";
7
+ const CLI_VERSION = "0.3.2-pr.31.57.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.3.2-pr.31.55.1",
3
+ "version": "0.3.2-pr.31.57.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",
@@ -13,7 +13,7 @@ import { prisma } from "./lib/prisma{{#if (eq packageManager "deno")}}.ts{{/if}}
13
13
  const rawPort = ({{#if (eq packageManager "deno")}}Deno.env.get("PORT"){{else}}process.env.PORT{{/if}} ?? "").trim();
14
14
  const parsedPort = rawPort.length > 0 ? Number(rawPort) : Number.NaN;
15
15
  const port =
16
- Number.isFinite(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
16
+ Number.isInteger(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
17
17
 
18
18
  const app = new Elysia({{#if (eq packageManager "deno")}}{{else}}{ adapter: node() }{{/if}})
19
19
  .get("/", () => {
@@ -31,7 +31,7 @@ app.get("/users", async (c) => {
31
31
  const rawPort = ({{#if (eq packageManager "deno")}}Deno.env.get("PORT"){{else}}process.env.PORT{{/if}} ?? "").trim();
32
32
  const parsedPort = rawPort.length > 0 ? Number(rawPort) : Number.NaN;
33
33
  const port =
34
- Number.isFinite(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
34
+ Number.isInteger(parsedPort) && parsedPort >= 0 && parsedPort <= 65535 ? parsedPort : 3000;
35
35
  serve({
36
36
  fetch: app.fetch,
37
37
  port,