kitcn 0.13.0 → 0.13.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.
@@ -5662,6 +5662,7 @@ const CONVEX_OUTPUT_NOISE_LINES = [
5662
5662
  /^Changelog: https:\/\/github\.com\/get-convex\/convex-js\/blob\/main\/CHANGELOG\.md#changelog$/
5663
5663
  ];
5664
5664
  const CONVEX_OUTPUT_LINE_SPLIT_RE = /\r?\n/;
5665
+ const REAL_CONVEX_CLI_PATH = join(dirname(createRequire(import.meta.url).resolve("convex/package.json")), "bin/main.js");
5665
5666
  const CLEARED_CONVEX_ENV = {
5666
5667
  CONVEX_DEPLOYMENT: void 0,
5667
5668
  CONVEX_DEPLOY_KEY: void 0,
@@ -5683,16 +5684,15 @@ const formatConvexCommandFailure = (args, result) => {
5683
5684
  return output.length > 0 ? `convex ${args.join(" ")} failed.\n${output}` : `convex ${args.join(" ")} failed.`;
5684
5685
  };
5685
5686
  const runLocalConvexCommand = async (args, options) => {
5686
- return normalizeConvexCommandResult(await execa("convex", args, {
5687
+ return normalizeConvexCommandResult(await execa("node", [REAL_CONVEX_CLI_PATH, ...args], {
5687
5688
  cwd: options.cwd,
5688
5689
  env: {
5689
5690
  ...process.env,
5690
5691
  ...CLEARED_CONVEX_ENV,
5691
5692
  ...options.env
5692
5693
  },
5693
- localDir: options.cwd,
5694
- preferLocal: true,
5695
- reject: false
5694
+ reject: false,
5695
+ stdio: "pipe"
5696
5696
  }));
5697
5697
  };
5698
5698
 
@@ -12562,7 +12562,7 @@ const TS_EXTENSION_RE = /\.ts$/;
12562
12562
  const LEADING_SLASHES_RE = /^\/+/;
12563
12563
  const AGGREGATE_STATE_RELATIVE_PATH = join(".convex", "kitcn", "aggregate-backfill-state.json");
12564
12564
  const AGGREGATE_STATE_VERSION = 1;
12565
- const INIT_SHADCN_PACKAGE_SPEC = "shadcn@4.0.1";
12565
+ const INIT_SHADCN_PACKAGE_SPEC = "shadcn@4.3.0";
12566
12566
  const INIT_LOCAL_BOOTSTRAP_TIMEOUT_MS = 3e4;
12567
12567
  const LOCAL_BACKEND_NOT_RUNNING_RE = /Local backend isn't running/i;
12568
12568
  const INIT_GENERATED_SERVER_STUB_TEMPLATE = `// @ts-nocheck
@@ -12992,8 +12992,15 @@ async function createProjectWithShadcn(params) {
12992
12992
  });
12993
12993
  }
12994
12994
  }
12995
+ function buildMissingShadcnScaffoldMessage(projectDir) {
12996
+ return [
12997
+ "Shadcn exited without creating a supported local scaffold.",
12998
+ "This usually means you chose the Custom preset.",
12999
+ `Run the generated shadcn command from ui.shadcn.com in ${normalizePath(relative(process.cwd(), projectDir) || ".")} then re-run \`kitcn init --yes\` to adopt it.`
13000
+ ].join(" ");
13001
+ }
12995
13002
  function moveStagedProjectIntoExistingDir(params) {
12996
- if (!fs.existsSync(params.stagedProjectDir)) throw new Error(`shadcn init did not create the staged project at ${params.stagedProjectDir}.`);
13003
+ if (!fs.existsSync(params.stagedProjectDir)) throw new Error(buildMissingShadcnScaffoldMessage(params.targetDir));
12997
13004
  if (!fs.existsSync(params.targetDir) || fs.readdirSync(params.targetDir).length > 0) throw new Error(`Cannot move staged project into non-empty target ${params.targetDir}.`);
12998
13005
  for (const entry of fs.readdirSync(params.stagedProjectDir)) fs.renameSync(join(params.stagedProjectDir, entry), join(params.targetDir, entry));
12999
13006
  }
@@ -13928,6 +13935,11 @@ async function runScaffoldCommandFlow(params) {
13928
13935
  execaFn: params.execaFn
13929
13936
  });
13930
13937
  const scaffoldProjectDir = resolveShadcnScaffoldProjectDir(params.projectDir, params.template);
13938
+ if (params.template && !resolveProjectScaffoldContext({
13939
+ cwd: scaffoldProjectDir,
13940
+ allowMissing: true,
13941
+ allowUnsupported: true
13942
+ })) throw new Error(buildMissingShadcnScaffoldMessage(scaffoldProjectDir));
13931
13943
  return withWorkingDirectory(scaffoldProjectDir, async () => {
13932
13944
  const config = params.loadCliConfigFn(params.configPath);
13933
13945
  const backend = resolveConfiguredBackend({
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as promptForScaffoldTemplateSelection, A as resolveCodegenTrimSegments, B as runConfiguredCodegen, C as isEntryPoint, Ct as serializeEnvValue, D as parseInitCommandArgs, Dt as logger, E as parseBackendRunJson, F as resolveRunDeps, G as runMigrationFlow, H as runDevSchemaBackfillIfNeeded, I as runAfterScaffoldScript, J as withWorkingDirectory, K as trackProcess, L as runAggregateBackfillFlow, M as resolveDocTopic, N as resolveInitProjectDir, O as readPackageVersions, Ot as highlighter, P as resolveMigrationConfig, Q as promptForPluginSelection, R as runAggregatePruneFlow, S as isConvexDevPreRunConflictFlag, St as resolveAuthEnvState, T as parseArgs, U as runInitCommandFlow, V as runConvexInitIfNeeded, W as runMigrationCreate, X as collectPluginScaffoldTemplates, Y as createSpinner, Z as filterScaffoldTemplatePathMap, _ as formatInfoOutput, _t as applyPlanningDependencyInstall, a as cleanup, at as getPluginCatalogEntry, b as getDevAggregateBackfillStatePath, bt as resolveSupportedDependencyWarnings, c as createCommandEnv, ct as buildPluginInstallPlan, d as extractBackfillCliOptions, dt as collectInstalledPluginKeys, et as resolveAddTemplateDefaults, f as extractConcaveRunTargetArgs, ft as getPluginLockfilePath, g as formatDocsOutput, gt as applyDependencyHintsInstall, h as extractResetCliOptions, ht as resolveSchemaInstalledPlugins, i as buildInitializationPlan, it as resolveTemplatesByIdOrThrow, j as resolveConfiguredBackend, k as resolveBackfillConfig, l as ensureConvexGitignoreEntry, lt as resolvePluginScaffoldRoots, m as extractMigrationDownOptions, mt as readPluginLockfile, n as applyPluginInstallPlanFiles, nt as resolvePresetScaffoldTemplates, o as createBackendAdapter, ot as getSupportedPluginKeys, p as extractMigrationCliOptions, pt as getSchemaFilePath, q as withLocalCodegenEnv, r as assertNoRemovedDevPreRunFlag, rt as resolveTemplateSelectionSource, s as createBackendCommandEnv, st as isSupportedPluginKey, t as applyDependencyInstallPlan, tt as resolvePluginPreset, u as extractBackendRunTargetArgs, ut as assertSchemaFileExists, v as getAggregateBackfillDeploymentKey, vt as applyPluginDependencyInstall, w as isInitialized, wt as stripConvexCommandNoise, x as hasRemoteConvexDeploymentEnv, xt as resolveProjectScaffoldContext, y as getConvexDeploymentCommandEnv, yt as inspectPluginDependencyInstall, z as runBackendFunction } from "./backend-core-CXmrWqdi.mjs";
2
+ import { $ as promptForScaffoldTemplateSelection, A as resolveCodegenTrimSegments, B as runConfiguredCodegen, C as isEntryPoint, Ct as serializeEnvValue, D as parseInitCommandArgs, Dt as logger, E as parseBackendRunJson, F as resolveRunDeps, G as runMigrationFlow, H as runDevSchemaBackfillIfNeeded, I as runAfterScaffoldScript, J as withWorkingDirectory, K as trackProcess, L as runAggregateBackfillFlow, M as resolveDocTopic, N as resolveInitProjectDir, O as readPackageVersions, Ot as highlighter, P as resolveMigrationConfig, Q as promptForPluginSelection, R as runAggregatePruneFlow, S as isConvexDevPreRunConflictFlag, St as resolveAuthEnvState, T as parseArgs, U as runInitCommandFlow, V as runConvexInitIfNeeded, W as runMigrationCreate, X as collectPluginScaffoldTemplates, Y as createSpinner, Z as filterScaffoldTemplatePathMap, _ as formatInfoOutput, _t as applyPlanningDependencyInstall, a as cleanup, at as getPluginCatalogEntry, b as getDevAggregateBackfillStatePath, bt as resolveSupportedDependencyWarnings, c as createCommandEnv, ct as buildPluginInstallPlan, d as extractBackfillCliOptions, dt as collectInstalledPluginKeys, et as resolveAddTemplateDefaults, f as extractConcaveRunTargetArgs, ft as getPluginLockfilePath, g as formatDocsOutput, gt as applyDependencyHintsInstall, h as extractResetCliOptions, ht as resolveSchemaInstalledPlugins, i as buildInitializationPlan, it as resolveTemplatesByIdOrThrow, j as resolveConfiguredBackend, k as resolveBackfillConfig, l as ensureConvexGitignoreEntry, lt as resolvePluginScaffoldRoots, m as extractMigrationDownOptions, mt as readPluginLockfile, n as applyPluginInstallPlanFiles, nt as resolvePresetScaffoldTemplates, o as createBackendAdapter, ot as getSupportedPluginKeys, p as extractMigrationCliOptions, pt as getSchemaFilePath, q as withLocalCodegenEnv, r as assertNoRemovedDevPreRunFlag, rt as resolveTemplateSelectionSource, s as createBackendCommandEnv, st as isSupportedPluginKey, t as applyDependencyInstallPlan, tt as resolvePluginPreset, u as extractBackendRunTargetArgs, ut as assertSchemaFileExists, v as getAggregateBackfillDeploymentKey, vt as applyPluginDependencyInstall, w as isInitialized, wt as stripConvexCommandNoise, x as hasRemoteConvexDeploymentEnv, xt as resolveProjectScaffoldContext, y as getConvexDeploymentCommandEnv, yt as inspectPluginDependencyInstall, z as runBackendFunction } from "./backend-core-yq-eWLRJ.mjs";
3
3
  import fs, { existsSync, readFileSync } from "node:fs";
4
4
  import path, { delimiter, dirname, join, relative, resolve } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
package/dist/watcher.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { Dt as logger, Et as getConvexConfig, F as resolveRunDeps, Tt as generateMeta, j as resolveConfiguredBackend, q as withLocalCodegenEnv } from "./backend-core-CXmrWqdi.mjs";
2
+ import { Dt as logger, Et as getConvexConfig, F as resolveRunDeps, Tt as generateMeta, j as resolveConfiguredBackend, q as withLocalCodegenEnv } from "./backend-core-yq-eWLRJ.mjs";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitcn",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "kitcn - React Query integration and CLI tools for Convex",
5
5
  "keywords": [
6
6
  "convex",
@@ -75,6 +75,15 @@ parentId: text().references((): AnyColumn => commentsTable.id, {
75
75
  onDelete: "cascade",
76
76
  });
77
77
 
78
+ // Bidirectional CMS revision pointers also work.
79
+ // This shape is valid:
80
+ // - revision.pageLocaleId -> pageLocales.id
81
+ // - pageLocales.currentRevisionId -> pageLocaleRevisions.id
82
+ // - pageLocales.publishedRevisionId -> pageLocaleRevisions.id
83
+ currentRevisionId: id("pageLocaleRevisions").references(
84
+ () => pageLocaleRevisions.id
85
+ );
86
+
78
87
  // Table-level (foreignKey builder, for non-id references)
79
88
  import { foreignKey } from "kitcn/orm";
80
89
  (t) => [foreignKey({ columns: [t.userSlug], foreignColumns: [users.slug] })];