create-kubojs 0.3.1 → 0.4.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 { _ as getLatestCLIVersion, g as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli } from "./src-9z53Xnti.mjs";
2
+ import { _ as getLatestCLIVersion, g as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli } from "./src-L3WKWfns.mjs";
3
3
  import z from "zod";
4
4
  import { format } from "node:util";
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { C as UserCancelledError, S as ProjectCreationError, a as TEMPLATE_COUNT, b as DatabaseSetupError, c as builder, d as createVirtual, f as docs, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, v as CLIError, w as ValidationError, x as DirectoryConflictError, y as CompatibilityError } from "./src-9z53Xnti.mjs";
2
+ import { C as UserCancelledError, S as ProjectCreationError, a as TEMPLATE_COUNT, b as DatabaseSetupError, c as builder, d as createVirtual, f as docs, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, v as CLIError, w as ValidationError, x as DirectoryConflictError, y as CompatibilityError } from "./src-L3WKWfns.mjs";
3
3
  export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, SchemaNameSchema, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router };
@@ -87,7 +87,7 @@ const DEFAULT_CONFIG_BASE = {
87
87
  orm: "drizzle",
88
88
  auth: "better-auth",
89
89
  payments: [],
90
- observability: ["getmonitor"],
90
+ observability: [],
91
91
  communication: ["arara"],
92
92
  addons: ["turborepo"],
93
93
  examples: [],
@@ -109,6 +109,7 @@ function getDefaultConfig() {
109
109
  frontend: [...DEFAULT_CONFIG_BASE.frontend],
110
110
  payments: [...DEFAULT_CONFIG_BASE.payments],
111
111
  observability: [...DEFAULT_CONFIG_BASE.observability],
112
+ communication: [...DEFAULT_CONFIG_BASE.communication],
112
113
  addons: [...DEFAULT_CONFIG_BASE.addons],
113
114
  examples: [...DEFAULT_CONFIG_BASE.examples],
114
115
  testing: [...DEFAULT_CONFIG_BASE.testing]
@@ -3359,6 +3360,11 @@ const options$1 = [
3359
3360
  label: "Resend",
3360
3361
  hint: "Transactional email for developers"
3361
3362
  },
3363
+ {
3364
+ value: "millionsend",
3365
+ label: "MillionSend",
3366
+ hint: "Resend-compatible email via Cloud or self-hosting"
3367
+ },
3362
3368
  {
3363
3369
  value: "notifique",
3364
3370
  label: "Notifique",
@@ -3698,10 +3704,6 @@ async function getinstallChoice(install, previousValue) {
3698
3704
  //#endregion
3699
3705
  //#region src/prompts/observability.ts
3700
3706
  const options = [{
3701
- value: "getmonitor",
3702
- label: "GetMonitor",
3703
- hint: "Recommended — JS/TS error tracking for browser and server"
3704
- }, {
3705
3707
  value: "himetrica",
3706
3708
  label: "Himetrica",
3707
3709
  hint: "Product analytics, errors, and Web Vitals for web apps"
@@ -4397,7 +4399,7 @@ const TEMPLATE_PRESETS = {
4397
4399
  api: "orpc",
4398
4400
  auth: "better-auth",
4399
4401
  payments: [],
4400
- observability: ["getmonitor"],
4402
+ observability: [],
4401
4403
  communication: [],
4402
4404
  addons: ["turborepo"],
4403
4405
  examples: ["todo"],
@@ -4414,7 +4416,7 @@ const TEMPLATE_PRESETS = {
4414
4416
  api: "trpc",
4415
4417
  auth: "better-auth",
4416
4418
  payments: [],
4417
- observability: ["getmonitor"],
4419
+ observability: [],
4418
4420
  communication: [],
4419
4421
  addons: ["turborepo"],
4420
4422
  examples: ["todo"],
@@ -4431,7 +4433,7 @@ const TEMPLATE_PRESETS = {
4431
4433
  api: "trpc",
4432
4434
  auth: "better-auth",
4433
4435
  payments: [],
4434
- observability: ["getmonitor"],
4436
+ observability: [],
4435
4437
  communication: [],
4436
4438
  addons: ["biome", "turborepo"],
4437
4439
  examples: ["none"],
@@ -6128,7 +6130,7 @@ function getDesktopStaticBuildNote(frontend) {
6128
6130
  return `${pc$1.yellow("NOTE:")} Desktop builds package static web assets.\n ${staticBuildFrontends.get(staticBuildFrontend)} needs a static/export web build before desktop packaging will work.`;
6129
6131
  }
6130
6132
  async function displayPostInstallInstructions(config) {
6131
- const { api, database, relativePath, packageManager, depsInstalled, orm, addons, testing, runtime, frontend, backend, dbSetup, webDeploy, serverDeploy, observability, communication: rawCommunication } = config;
6133
+ const { api, database, relativePath, packageManager, depsInstalled, orm, addons, testing, runtime, frontend, backend, dbSetup, webDeploy, serverDeploy, communication: rawCommunication } = config;
6132
6134
  const communication = normalizeCommunication$2(rawCommunication ?? []);
6133
6135
  const isConvex = backend === "convex";
6134
6136
  const isBackendSelf = backend === "self";
@@ -6151,11 +6153,11 @@ async function displayPostInstallInstructions(config) {
6151
6153
  const playwrightInstructions = testing?.includes("playwright") ? getPlaywrightInstructions(runCmd, packageManager) : "";
6152
6154
  const clerkInstructions = config.auth === "clerk" ? getClerkInstructions(frontend || [], backend, api) : "";
6153
6155
  const alchemyDeployInstructions = getAlchemyDeployInstructions(runCmd, webDeploy, serverDeploy, backend);
6154
- const getMonitorInstructions = observability.includes("getmonitor") ? getGetMonitorInstructions() : "";
6156
+ const millionSendInstructions = communication.includes("millionsend") ? getMillionSendInstructions(backend) : "";
6155
6157
  const resendInstructions = communication.includes("resend") ? getResendInstructions() : "";
6156
6158
  const notifiqueInstructions = communication.includes("notifique") ? getNotifiqueInstructions() : "";
6157
6159
  const araraInstructions = communication.includes("arara") ? getAraraInstructions(backend) : "";
6158
- const hasWeb = frontend?.some((f) => types_exports.desktopWebFrontends.includes(f));
6160
+ const hasWeb = frontend?.some(types_exports.isDesktopWebFrontend);
6159
6161
  const hasNative = frontend?.includes("native-bare") || frontend?.includes("native-uniwind") || frontend?.includes("native-unistyles");
6160
6162
  const webPort = (0, types_exports.getWebPort)(frontend ?? []);
6161
6163
  const betterAuthConvexInstructions = isConvex && config.auth === "better-auth" ? getBetterAuthConvexInstructions(hasWeb ?? false, webPort, packageManager, runCmd) : "";
@@ -6207,7 +6209,7 @@ async function displayPostInstallInstructions(config) {
6207
6209
  if (playwrightInstructions) output += `\n${playwrightInstructions.trim()}\n`;
6208
6210
  if (clerkInstructions) output += `\n${clerkInstructions.trim()}\n`;
6209
6211
  if (betterAuthConvexInstructions) output += `\n${betterAuthConvexInstructions.trim()}\n`;
6210
- if (getMonitorInstructions) output += `\n${getMonitorInstructions.trim()}\n`;
6212
+ if (millionSendInstructions) output += `\n${millionSendInstructions.trim()}\n`;
6211
6213
  if (resendInstructions) output += `\n${resendInstructions.trim()}\n`;
6212
6214
  if (notifiqueInstructions) output += `\n${notifiqueInstructions.trim()}\n`;
6213
6215
  if (araraInstructions) output += `\n${araraInstructions.trim()}\n`;
@@ -6299,8 +6301,14 @@ function getPwaInstructions() {
6299
6301
  function getNoOrmWarning() {
6300
6302
  return `\n${pc$1.yellow("WARNING:")} Database selected without an ORM. Features requiring\n database access (e.g., examples, auth) need manual setup.`;
6301
6303
  }
6302
- function getGetMonitorInstructions() {
6303
- return `${pc$1.bold("GetMonitor observability:")}\n${pc$1.cyan("•")} Keys are optional on first run — the app starts without them; capture stays idle until configured\n${pc$1.cyan("•")} When ready, set GETMONITOR_API_KEY (public gm_xxx) in the web and/or server .env\n${pc$1.cyan("•")} Ingestion host is fixed (http://ingest.getmonitor.io) — no apiHost env var\n${pc$1.cyan("•")} Optional: set GETMONITOR_AUTH_TOKEN for Next/Nuxt source-map upload on production builds\n${pc$1.cyan("•")} Browser/Node capture is automatic; React trees include GetMonitorErrorBoundary\n${pc$1.cyan("•")} Opt out next time with --disable-observability\n${pc$1.dim(" https://github.com/get-monitor/getmonitor-js")}`;
6304
+ function getMillionSendInstructions(backend) {
6305
+ const envPath = backend === "convex" ? "packages/backend/.env.local (and the Convex deployment environment)" : backend === "self" ? "apps/web/.env" : "apps/server/.env";
6306
+ return `${pc$1.bold("MillionSend communication:")}
6307
+ ${pc$1.cyan("•")} Set MILLIONSEND_API_KEY in ${envPath} before importing the client
6308
+ ${pc$1.cyan("•")} Import millionsend / sendEmail from @project/millionsend (server-side only)
6309
+ ${pc$1.cyan("•")} Replace MILLIONSEND_FROM_EMAIL with a verified domain sender before sending
6310
+ ${pc$1.cyan("•")} Cloud is the default; set MILLIONSEND_BASE_URL for self-hosting
6311
+ ${pc$1.dim(" https://github.com/MillionSend/millionsend-node")}`;
6304
6312
  }
6305
6313
  function getResendInstructions() {
6306
6314
  return `${pc$1.bold("Resend communication:")}\n${pc$1.cyan("•")} Keys are optional on first run — sendEmail throws only when called without RESEND_API_KEY\n${pc$1.cyan("•")} Set RESEND_API_KEY (and optional RESEND_FROM_EMAIL) in the server .env\n${pc$1.cyan("•")} Import sendEmail from packages/email (e.g. @project/email)\n${pc$1.cyan("•")} Replace onboarding@resend.dev with a verified domain sender for production\n${pc$1.dim(" https://resend.com/docs/send-with-nodejs")}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-kubojs",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
5
5
  "keywords": [
6
6
  "better-auth",
@@ -73,8 +73,8 @@
73
73
  "dependencies": {
74
74
  "@clack/core": "^1.4.1",
75
75
  "@clack/prompts": "^1.5.1",
76
- "@kubojs/template-generator": "^0.3.1",
77
- "@kubojs/types": "^0.3.1",
76
+ "@kubojs/template-generator": "^0.4.1",
77
+ "@kubojs/types": "^0.4.1",
78
78
  "@modelcontextprotocol/sdk": "1.29.0",
79
79
  "@tanstack/router-generator": "1.167.28",
80
80
  "@trpc/server": "^11.17.0",