convex-zen 1.16.0 → 1.16.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.
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/cli/detect.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,8BAA8B,GAC9B,wCAAwC,GACxC,qCAAqC,GACrC,qCAAqC,GACrC,oCAAoC,GACpC,SAAS,CAAC;AACd,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,gBAAgB,GAChB,0BAA0B,GAC1B,0BAA0B,GAC1B,yBAAyB,GACzB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA2eD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYtE"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/cli/detect.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,8BAA8B,GAC9B,wCAAwC,GACxC,qCAAqC,GACrC,qCAAqC,GACrC,oCAAoC,GACpC,SAAS,CAAC;AACd,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,gBAAgB,GAChB,0BAA0B,GAC1B,0BAA0B,GAC1B,yBAAyB,GACzB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAqlBD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYtE"}
@@ -1,6 +1,11 @@
1
1
  import { access, readFile, readdir, stat } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  const DOC_ROOT = "apps/docs/external/install";
4
+ const SOURCE_FILE_PATTERN = /\.(cjs|cts|js|json|jsx|mjs|mts|ts|tsx)$/;
5
+ const SCRIPT_EXTENSIONS = ["ts", "tsx", "js", "jsx", "mts", "cts", "mjs", "cjs"];
6
+ function toPosixPath(filePath) {
7
+ return filePath.split(path.sep).join(path.posix.sep);
8
+ }
4
9
  async function pathExists(targetPath) {
5
10
  try {
6
11
  await access(targetPath);
@@ -68,7 +73,7 @@ async function collectSourceTexts(cwd) {
68
73
  }
69
74
  continue;
70
75
  }
71
- if (!/\.(cjs|cts|js|json|jsx|mjs|mts|ts|tsx)$/.test(current)) {
76
+ if (!SOURCE_FILE_PATTERN.test(current)) {
72
77
  continue;
73
78
  }
74
79
  const source = await readTextIfExists(current);
@@ -81,6 +86,72 @@ async function collectSourceTexts(cwd) {
81
86
  function hasAnyNeedle(haystack, needles) {
82
87
  return needles.some((needle) => haystack.includes(needle));
83
88
  }
89
+ async function findFirstExistingPath(cwd, candidates) {
90
+ for (const candidate of candidates) {
91
+ if (await pathExists(path.join(cwd, candidate))) {
92
+ return candidate;
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ async function findFileContainingNeedles(rootPath, needles) {
98
+ const queue = [rootPath];
99
+ while (queue.length > 0) {
100
+ const current = queue.shift();
101
+ if (!current || !(await pathExists(current))) {
102
+ continue;
103
+ }
104
+ const currentStat = await stat(current);
105
+ if (currentStat.isDirectory()) {
106
+ const entries = await readdir(current, { withFileTypes: true });
107
+ for (const entry of entries) {
108
+ if (entry.name.startsWith(".") || entry.name === "node_modules") {
109
+ continue;
110
+ }
111
+ queue.push(path.join(current, entry.name));
112
+ }
113
+ continue;
114
+ }
115
+ if (!SOURCE_FILE_PATTERN.test(current)) {
116
+ continue;
117
+ }
118
+ const source = await readTextIfExists(current);
119
+ if (source && hasAnyNeedle(source, needles)) {
120
+ return current;
121
+ }
122
+ }
123
+ return null;
124
+ }
125
+ async function findTanstackApiRoutePath(cwd) {
126
+ const routeCandidates = SCRIPT_EXTENSIONS.flatMap((extension) => [
127
+ path.posix.join("src", "routes", `api.auth.$.${extension}`),
128
+ path.posix.join("src", "routes", "api", `auth.$.${extension}`),
129
+ path.posix.join("src", "routes", "api", "auth", `$.${extension}`),
130
+ ]);
131
+ const directMatch = await findFirstExistingPath(cwd, routeCandidates);
132
+ if (directMatch) {
133
+ return directMatch;
134
+ }
135
+ const semanticMatch = await findFileContainingNeedles(path.join(cwd, "src", "routes"), ['createFileRoute("/api/auth/$")', "createFileRoute('/api/auth/$')"]);
136
+ if (semanticMatch) {
137
+ return toPosixPath(path.relative(cwd, semanticMatch));
138
+ }
139
+ const routeTreePath = await findFirstExistingPath(cwd, ["src/routeTree.gen.ts"]);
140
+ if (!routeTreePath) {
141
+ return null;
142
+ }
143
+ const routeTreeSource = await readTextIfExists(path.join(cwd, routeTreePath));
144
+ if (routeTreeSource &&
145
+ hasAnyNeedle(routeTreeSource, [
146
+ "path: '/api/auth/$'",
147
+ 'path: "/api/auth/$"',
148
+ "fullPath: '/api/auth/$'",
149
+ 'fullPath: "/api/auth/$"',
150
+ ])) {
151
+ return routeTreePath;
152
+ }
153
+ return null;
154
+ }
84
155
  async function collectSignals(cwd) {
85
156
  const packageJson = await readPackageJson(cwd);
86
157
  const packageNames = listPackageNames(packageJson);
@@ -93,17 +164,19 @@ async function collectSignals(cwd) {
93
164
  findConfigMatch(cwd, ["next.config.ts", "next.config.mjs", "next.config.js"]),
94
165
  findConfigMatch(cwd, ["vite.config.ts", "vite.config.mjs", "vite.config.js"]),
95
166
  ]);
96
- const [hasConvexConfig, hasAuthConfig, hasZenConfig, hasZenGeneratedMeta, hasNextAuthRoute, hasNextAuthProvider, hasTanstackApiRoute, hasTanstackRouter, hasTanstackRootRoute,] = await Promise.all([
167
+ const tanstackApiRoutePathPromise = findTanstackApiRoutePath(cwd);
168
+ const [hasConvexConfig, hasAuthConfig, hasZenConfig, hasZenGeneratedMeta, hasNextAuthRoute, hasNextAuthProvider, hasTanstackRouter, hasTanstackRootRoute, tanstackApiRoutePath,] = await Promise.all([
97
169
  pathExists(path.join(cwd, "convex", "convex.config.ts")),
98
170
  pathExists(path.join(cwd, "convex", "auth.config.ts")),
99
171
  pathExists(path.join(cwd, "convex", "zen.config.ts")),
100
172
  pathExists(path.join(cwd, "convex", "zen", "_generated", "meta.ts")),
101
173
  pathExists(path.join(cwd, "app", "api", "auth", "[...auth]", "route.ts")),
102
174
  pathExists(path.join(cwd, "app", "auth-provider.tsx")),
103
- pathExists(path.join(cwd, "src", "routes", "api.auth.$.tsx")),
104
175
  pathExists(path.join(cwd, "src", "router.tsx")),
105
176
  pathExists(path.join(cwd, "src", "routes", "__root.tsx")),
177
+ tanstackApiRoutePathPromise,
106
178
  ]);
179
+ const hasTanstackApiRoute = tanstackApiRoutePath !== null;
107
180
  let framework = "unknown";
108
181
  if (packageNames.has("next") ||
109
182
  hasAppDir ||
@@ -170,6 +243,7 @@ async function collectSignals(cwd) {
170
243
  hasNextAuthRoute,
171
244
  hasNextAuthProvider,
172
245
  hasTanstackApiRoute,
246
+ tanstackApiRoutePath,
173
247
  hasTanstackRouter,
174
248
  hasTanstackRootRoute,
175
249
  convexAuthDetected,
@@ -259,6 +333,11 @@ function buildFindings(signals, state) {
259
333
  ? "Generated convex-zen metadata is present."
260
334
  : "Generated convex-zen metadata is missing. Run `npx convex-zen generate` after setup.",
261
335
  },
336
+ {
337
+ id: "layout_assumptions",
338
+ status: "info",
339
+ message: "Doctor assumes conventional app/, src/, and convex/ locations at the current workspace root. Custom layouts may need manual verification.",
340
+ },
262
341
  ];
263
342
  if (signals.framework === "next") {
264
343
  findings.push({
@@ -281,7 +360,8 @@ function buildFindings(signals, state) {
281
360
  findings.push({
282
361
  id: "tanstack_auth_route",
283
362
  status: signals.hasTanstackApiRoute ? "ok" : "missing",
284
- path: "src/routes/api.auth.$.tsx",
363
+ path: signals.tanstackApiRoutePath ??
364
+ "src/routes/api.auth.$.* or another /api/auth/$ TanStack route file",
285
365
  message: signals.hasTanstackApiRoute
286
366
  ? "TanStack auth route is present."
287
367
  : "TanStack auth route is missing.",
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/cli/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/cli/detect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-zen",
3
- "version": "1.16.0",
3
+ "version": "1.16.1",
4
4
  "description": "Production-grade auth component for Convex",
5
5
  "repository": {
6
6
  "type": "git",
package/src/cli/detect.ts CHANGED
@@ -58,6 +58,7 @@ type ProjectSignals = {
58
58
  hasNextAuthRoute: boolean;
59
59
  hasNextAuthProvider: boolean;
60
60
  hasTanstackApiRoute: boolean;
61
+ tanstackApiRoutePath: string | null;
61
62
  hasTanstackRouter: boolean;
62
63
  hasTanstackRootRoute: boolean;
63
64
  convexAuthDetected: boolean;
@@ -67,6 +68,12 @@ type ProjectSignals = {
67
68
  };
68
69
 
69
70
  const DOC_ROOT = "apps/docs/external/install";
71
+ const SOURCE_FILE_PATTERN = /\.(cjs|cts|js|json|jsx|mjs|mts|ts|tsx)$/;
72
+ const SCRIPT_EXTENSIONS = ["ts", "tsx", "js", "jsx", "mts", "cts", "mjs", "cjs"] as const;
73
+
74
+ function toPosixPath(filePath: string): string {
75
+ return filePath.split(path.sep).join(path.posix.sep);
76
+ }
70
77
 
71
78
  async function pathExists(targetPath: string): Promise<boolean> {
72
79
  try {
@@ -141,7 +148,7 @@ async function collectSourceTexts(cwd: string): Promise<string> {
141
148
  }
142
149
  continue;
143
150
  }
144
- if (!/\.(cjs|cts|js|json|jsx|mjs|mts|ts|tsx)$/.test(current)) {
151
+ if (!SOURCE_FILE_PATTERN.test(current)) {
145
152
  continue;
146
153
  }
147
154
  const source = await readTextIfExists(current);
@@ -157,6 +164,94 @@ function hasAnyNeedle(haystack: string, needles: readonly string[]): boolean {
157
164
  return needles.some((needle) => haystack.includes(needle));
158
165
  }
159
166
 
167
+ async function findFirstExistingPath(
168
+ cwd: string,
169
+ candidates: readonly string[]
170
+ ): Promise<string | null> {
171
+ for (const candidate of candidates) {
172
+ if (await pathExists(path.join(cwd, candidate))) {
173
+ return candidate;
174
+ }
175
+ }
176
+ return null;
177
+ }
178
+
179
+ async function findFileContainingNeedles(
180
+ rootPath: string,
181
+ needles: readonly string[]
182
+ ): Promise<string | null> {
183
+ const queue = [rootPath];
184
+
185
+ while (queue.length > 0) {
186
+ const current = queue.shift();
187
+ if (!current || !(await pathExists(current))) {
188
+ continue;
189
+ }
190
+
191
+ const currentStat = await stat(current);
192
+ if (currentStat.isDirectory()) {
193
+ const entries = await readdir(current, { withFileTypes: true });
194
+ for (const entry of entries) {
195
+ if (entry.name.startsWith(".") || entry.name === "node_modules") {
196
+ continue;
197
+ }
198
+ queue.push(path.join(current, entry.name));
199
+ }
200
+ continue;
201
+ }
202
+
203
+ if (!SOURCE_FILE_PATTERN.test(current)) {
204
+ continue;
205
+ }
206
+
207
+ const source = await readTextIfExists(current);
208
+ if (source && hasAnyNeedle(source, needles)) {
209
+ return current;
210
+ }
211
+ }
212
+
213
+ return null;
214
+ }
215
+
216
+ async function findTanstackApiRoutePath(cwd: string): Promise<string | null> {
217
+ const routeCandidates = SCRIPT_EXTENSIONS.flatMap((extension) => [
218
+ path.posix.join("src", "routes", `api.auth.$.${extension}`),
219
+ path.posix.join("src", "routes", "api", `auth.$.${extension}`),
220
+ path.posix.join("src", "routes", "api", "auth", `$.${extension}`),
221
+ ]);
222
+ const directMatch = await findFirstExistingPath(cwd, routeCandidates);
223
+ if (directMatch) {
224
+ return directMatch;
225
+ }
226
+
227
+ const semanticMatch = await findFileContainingNeedles(
228
+ path.join(cwd, "src", "routes"),
229
+ ['createFileRoute("/api/auth/$")', "createFileRoute('/api/auth/$')"]
230
+ );
231
+ if (semanticMatch) {
232
+ return toPosixPath(path.relative(cwd, semanticMatch));
233
+ }
234
+
235
+ const routeTreePath = await findFirstExistingPath(cwd, ["src/routeTree.gen.ts"]);
236
+ if (!routeTreePath) {
237
+ return null;
238
+ }
239
+ const routeTreeSource = await readTextIfExists(path.join(cwd, routeTreePath));
240
+ if (
241
+ routeTreeSource &&
242
+ hasAnyNeedle(routeTreeSource, [
243
+ "path: '/api/auth/$'",
244
+ 'path: "/api/auth/$"',
245
+ "fullPath: '/api/auth/$'",
246
+ 'fullPath: "/api/auth/$"',
247
+ ])
248
+ ) {
249
+ return routeTreePath;
250
+ }
251
+
252
+ return null;
253
+ }
254
+
160
255
  async function collectSignals(cwd: string): Promise<ProjectSignals> {
161
256
  const packageJson = await readPackageJson(cwd);
162
257
  const packageNames = listPackageNames(packageJson);
@@ -169,6 +264,7 @@ async function collectSignals(cwd: string): Promise<ProjectSignals> {
169
264
  findConfigMatch(cwd, ["next.config.ts", "next.config.mjs", "next.config.js"]),
170
265
  findConfigMatch(cwd, ["vite.config.ts", "vite.config.mjs", "vite.config.js"]),
171
266
  ]);
267
+ const tanstackApiRoutePathPromise = findTanstackApiRoutePath(cwd);
172
268
  const [
173
269
  hasConvexConfig,
174
270
  hasAuthConfig,
@@ -176,9 +272,9 @@ async function collectSignals(cwd: string): Promise<ProjectSignals> {
176
272
  hasZenGeneratedMeta,
177
273
  hasNextAuthRoute,
178
274
  hasNextAuthProvider,
179
- hasTanstackApiRoute,
180
275
  hasTanstackRouter,
181
276
  hasTanstackRootRoute,
277
+ tanstackApiRoutePath,
182
278
  ] = await Promise.all([
183
279
  pathExists(path.join(cwd, "convex", "convex.config.ts")),
184
280
  pathExists(path.join(cwd, "convex", "auth.config.ts")),
@@ -186,10 +282,11 @@ async function collectSignals(cwd: string): Promise<ProjectSignals> {
186
282
  pathExists(path.join(cwd, "convex", "zen", "_generated", "meta.ts")),
187
283
  pathExists(path.join(cwd, "app", "api", "auth", "[...auth]", "route.ts")),
188
284
  pathExists(path.join(cwd, "app", "auth-provider.tsx")),
189
- pathExists(path.join(cwd, "src", "routes", "api.auth.$.tsx")),
190
285
  pathExists(path.join(cwd, "src", "router.tsx")),
191
286
  pathExists(path.join(cwd, "src", "routes", "__root.tsx")),
287
+ tanstackApiRoutePathPromise,
192
288
  ]);
289
+ const hasTanstackApiRoute = tanstackApiRoutePath !== null;
193
290
 
194
291
  let framework: DoctorFramework = "unknown";
195
292
  if (
@@ -265,6 +362,7 @@ async function collectSignals(cwd: string): Promise<ProjectSignals> {
265
362
  hasNextAuthRoute,
266
363
  hasNextAuthProvider,
267
364
  hasTanstackApiRoute,
365
+ tanstackApiRoutePath,
268
366
  hasTanstackRouter,
269
367
  hasTanstackRootRoute,
270
368
  convexAuthDetected,
@@ -359,6 +457,12 @@ function buildFindings(signals: ProjectSignals, state: DoctorState): DoctorFindi
359
457
  ? "Generated convex-zen metadata is present."
360
458
  : "Generated convex-zen metadata is missing. Run `npx convex-zen generate` after setup.",
361
459
  },
460
+ {
461
+ id: "layout_assumptions",
462
+ status: "info",
463
+ message:
464
+ "Doctor assumes conventional app/, src/, and convex/ locations at the current workspace root. Custom layouts may need manual verification.",
465
+ },
362
466
  ];
363
467
 
364
468
  if (signals.framework === "next") {
@@ -387,7 +491,9 @@ function buildFindings(signals: ProjectSignals, state: DoctorState): DoctorFindi
387
491
  {
388
492
  id: "tanstack_auth_route",
389
493
  status: signals.hasTanstackApiRoute ? "ok" : "missing",
390
- path: "src/routes/api.auth.$.tsx",
494
+ path:
495
+ signals.tanstackApiRoutePath ??
496
+ "src/routes/api.auth.$.* or another /api/auth/$ TanStack route file",
391
497
  message: signals.hasTanstackApiRoute
392
498
  ? "TanStack auth route is present."
393
499
  : "TanStack auth route is missing.",