convex-zen 0.0.1 → 1.0.2

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 (128) hide show
  1. package/dist/cli/generate.d.ts.map +1 -1
  2. package/dist/cli/generate.js +195 -62
  3. package/dist/cli/generate.js.map +1 -1
  4. package/dist/cli/index.js +12 -13
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/client/index.d.ts +81 -32
  7. package/dist/client/index.d.ts.map +1 -1
  8. package/dist/client/index.js +153 -41
  9. package/dist/client/index.js.map +1 -1
  10. package/dist/client/plugins/admin.d.ts +29 -27
  11. package/dist/client/plugins/admin.d.ts.map +1 -1
  12. package/dist/client/plugins/admin.js +45 -75
  13. package/dist/client/plugins/admin.js.map +1 -1
  14. package/dist/client/providers.d.ts +2 -0
  15. package/dist/client/providers.d.ts.map +1 -1
  16. package/dist/client/providers.js +10 -2
  17. package/dist/client/providers.js.map +1 -1
  18. package/dist/client/tanstack-start-client-plugins.d.ts +1 -0
  19. package/dist/client/tanstack-start-client-plugins.d.ts.map +1 -1
  20. package/dist/client/tanstack-start-client-plugins.js +2 -1
  21. package/dist/client/tanstack-start-client-plugins.js.map +1 -1
  22. package/dist/client/tanstack-start-client.d.ts +17 -3
  23. package/dist/client/tanstack-start-client.d.ts.map +1 -1
  24. package/dist/client/tanstack-start-client.js +83 -6
  25. package/dist/client/tanstack-start-client.js.map +1 -1
  26. package/dist/client/tanstack-start-identity-jwt.d.ts +42 -0
  27. package/dist/client/tanstack-start-identity-jwt.d.ts.map +1 -0
  28. package/dist/client/tanstack-start-identity-jwt.js +203 -0
  29. package/dist/client/tanstack-start-identity-jwt.js.map +1 -0
  30. package/dist/client/tanstack-start-plugin-meta.d.ts +4 -0
  31. package/dist/client/tanstack-start-plugin-meta.d.ts.map +1 -0
  32. package/dist/client/tanstack-start-plugin-meta.js +8 -0
  33. package/dist/client/tanstack-start-plugin-meta.js.map +1 -0
  34. package/dist/client/tanstack-start-plugins.d.ts +33 -11
  35. package/dist/client/tanstack-start-plugins.d.ts.map +1 -1
  36. package/dist/client/tanstack-start-plugins.js +183 -55
  37. package/dist/client/tanstack-start-plugins.js.map +1 -1
  38. package/dist/client/tanstack-start.d.ts +58 -11
  39. package/dist/client/tanstack-start.d.ts.map +1 -1
  40. package/dist/client/tanstack-start.js +263 -30
  41. package/dist/client/tanstack-start.js.map +1 -1
  42. package/dist/types.d.ts +22 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/package.json +18 -3
  45. package/src/cli/generate.ts +248 -65
  46. package/src/cli/index.ts +16 -14
  47. package/src/client/index.ts +280 -70
  48. package/src/client/plugins/admin.ts +147 -89
  49. package/src/client/providers.ts +12 -2
  50. package/src/client/tanstack-start-client-plugins.ts +3 -1
  51. package/src/client/tanstack-start-client.ts +170 -11
  52. package/src/client/tanstack-start-identity-jwt.ts +287 -0
  53. package/src/client/tanstack-start-plugin-meta.ts +14 -0
  54. package/src/client/tanstack-start-plugins.ts +318 -77
  55. package/src/client/tanstack-start.ts +410 -40
  56. package/src/component/_generated/component.ts +48 -21
  57. package/src/component/core/sessions.ts +188 -152
  58. package/src/component/core/users.ts +209 -121
  59. package/src/component/core/verifications.ts +124 -99
  60. package/src/component/gateway.ts +173 -149
  61. package/src/component/lib/crypto.ts +90 -0
  62. package/src/component/lib/internalApi.ts +6 -6
  63. package/src/component/lib/rateLimit.ts +88 -72
  64. package/src/component/lib/validators.ts +1 -0
  65. package/src/component/plugins/admin.ts +157 -107
  66. package/src/component/providers/emailPassword.ts +289 -276
  67. package/src/component/providers/oauth.ts +308 -200
  68. package/src/types.ts +26 -0
  69. package/dist/component/_generated/api.d.ts +0 -50
  70. package/dist/component/_generated/api.d.ts.map +0 -1
  71. package/dist/component/_generated/api.js +0 -31
  72. package/dist/component/_generated/api.js.map +0 -1
  73. package/dist/component/_generated/component.d.ts +0 -92
  74. package/dist/component/_generated/component.d.ts.map +0 -1
  75. package/dist/component/_generated/component.js +0 -11
  76. package/dist/component/_generated/component.js.map +0 -1
  77. package/dist/component/_generated/dataModel.d.ts +0 -46
  78. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  79. package/dist/component/_generated/dataModel.js +0 -11
  80. package/dist/component/_generated/dataModel.js.map +0 -1
  81. package/dist/component/_generated/server.d.ts +0 -121
  82. package/dist/component/_generated/server.d.ts.map +0 -1
  83. package/dist/component/_generated/server.js +0 -78
  84. package/dist/component/_generated/server.js.map +0 -1
  85. package/dist/component/core/sessions.d.ts +0 -33
  86. package/dist/component/core/sessions.d.ts.map +0 -1
  87. package/dist/component/core/sessions.js +0 -186
  88. package/dist/component/core/sessions.js.map +0 -1
  89. package/dist/component/core/users.d.ts +0 -19
  90. package/dist/component/core/users.d.ts.map +0 -1
  91. package/dist/component/core/users.js +0 -154
  92. package/dist/component/core/users.js.map +0 -1
  93. package/dist/component/core/verifications.d.ts +0 -34
  94. package/dist/component/core/verifications.d.ts.map +0 -1
  95. package/dist/component/core/verifications.js +0 -135
  96. package/dist/component/core/verifications.js.map +0 -1
  97. package/dist/component/gateway.d.ts +0 -16
  98. package/dist/component/gateway.d.ts.map +0 -1
  99. package/dist/component/gateway.js +0 -229
  100. package/dist/component/gateway.js.map +0 -1
  101. package/dist/component/lib/crypto.d.ts +0 -24
  102. package/dist/component/lib/crypto.d.ts.map +0 -1
  103. package/dist/component/lib/crypto.js +0 -57
  104. package/dist/component/lib/crypto.js.map +0 -1
  105. package/dist/component/lib/rateLimit.d.ts +0 -26
  106. package/dist/component/lib/rateLimit.d.ts.map +0 -1
  107. package/dist/component/lib/rateLimit.js +0 -96
  108. package/dist/component/lib/rateLimit.js.map +0 -1
  109. package/dist/component/lib/validators.d.ts +0 -19
  110. package/dist/component/lib/validators.d.ts.map +0 -1
  111. package/dist/component/lib/validators.js +0 -12
  112. package/dist/component/lib/validators.js.map +0 -1
  113. package/dist/component/plugins/admin.d.ts +0 -72
  114. package/dist/component/plugins/admin.d.ts.map +0 -1
  115. package/dist/component/plugins/admin.js +0 -152
  116. package/dist/component/plugins/admin.js.map +0 -1
  117. package/dist/component/providers/emailPassword.d.ts +0 -49
  118. package/dist/component/providers/emailPassword.d.ts.map +0 -1
  119. package/dist/component/providers/emailPassword.js +0 -316
  120. package/dist/component/providers/emailPassword.js.map +0 -1
  121. package/dist/component/providers/oauth.d.ts +0 -33
  122. package/dist/component/providers/oauth.d.ts.map +0 -1
  123. package/dist/component/providers/oauth.js +0 -256
  124. package/dist/component/providers/oauth.js.map +0 -1
  125. package/dist/component/schema.d.ts +0 -132
  126. package/dist/component/schema.d.ts.map +0 -1
  127. package/dist/component/schema.js +0 -82
  128. package/dist/component/schema.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2RD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAyDzB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAsYD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CA8HzB"}
@@ -1,4 +1,4 @@
1
- import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
1
+ import { access, mkdir, readFile, readdir, rm, writeFile, } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  const GENERATED_MARKER = "// @generated by convex-zen generate. DO NOT EDIT.";
4
4
  function normalizeContent(content) {
@@ -16,20 +16,87 @@ async function fileExists(filePath) {
16
16
  function isGeneratedFile(content) {
17
17
  return content.startsWith(GENERATED_MARKER);
18
18
  }
19
- function detectEnabledPlugins(indexSource) {
19
+ async function resolveAuthSource(cwd) {
20
+ const zenPath = path.join(cwd, "convex", "zenConvex.ts");
21
+ if (await fileExists(zenPath)) {
22
+ return {
23
+ absolutePath: zenPath,
24
+ relativePath: path.join("convex", "zenConvex.ts"),
25
+ layout: "zen",
26
+ coreAuthImportPath: "../zenConvex",
27
+ pluginAuthImportPath: "../../zenConvex",
28
+ };
29
+ }
30
+ const rootPath = path.join(cwd, "convex", "auth.ts");
31
+ if (await fileExists(rootPath)) {
32
+ return {
33
+ absolutePath: rootPath,
34
+ relativePath: path.join("convex", "auth.ts"),
35
+ layout: "root",
36
+ coreAuthImportPath: "../auth",
37
+ pluginAuthImportPath: "../../auth",
38
+ };
39
+ }
40
+ const indexPath = path.join(cwd, "convex", "auth", "index.ts");
41
+ if (await fileExists(indexPath)) {
42
+ return {
43
+ absolutePath: indexPath,
44
+ relativePath: path.join("convex", "auth", "index.ts"),
45
+ layout: "index",
46
+ coreAuthImportPath: ".",
47
+ pluginAuthImportPath: "..",
48
+ };
49
+ }
50
+ return null;
51
+ }
52
+ function detectEnabledPlugins(authSource) {
20
53
  const plugins = new Set();
21
- if (/adminPlugin\s*\(/.test(indexSource)) {
54
+ if (/adminPlugin\s*\(/.test(authSource)) {
22
55
  plugins.add("admin");
23
56
  }
24
57
  return plugins;
25
58
  }
26
- function renderCoreFile() {
59
+ function hasOAuthProviders(authSource) {
60
+ return (/\bproviders\s*:\s*\[/.test(authSource) ||
61
+ /\bgoogleProvider\s*\(/.test(authSource) ||
62
+ /\bgithubProvider\s*\(/.test(authSource));
63
+ }
64
+ function renderCoreFile(options) {
65
+ const serverImports = options.includeOAuth ? "action, mutation" : "mutation";
66
+ const authImportPath = options.authImportPath;
67
+ const oauthExports = options.includeOAuth
68
+ ? `
69
+ export const getOAuthUrl = action({
70
+ args: {
71
+ providerId: v.string(),
72
+ redirectUrl: v.optional(v.string()),
73
+ },
74
+ handler: async (ctx, args) => {
75
+ return auth.getOAuthUrl(ctx, args.providerId, args.redirectUrl);
76
+ },
77
+ });
78
+
79
+ export const handleOAuthCallback = action({
80
+ args: {
81
+ providerId: v.string(),
82
+ code: v.string(),
83
+ state: v.string(),
84
+ redirectUrl: v.optional(v.string()),
85
+ ipAddress: v.optional(v.string()),
86
+ userAgent: v.optional(v.string()),
87
+ },
88
+ handler: async (ctx, args) => {
89
+ return auth.handleCallback(ctx, args);
90
+ },
91
+ });
92
+ `
93
+ : "";
27
94
  return normalizeContent(`${GENERATED_MARKER}
28
95
  import { v } from "convex/values";
29
- import { action } from "../_generated/server";
30
- import { auth } from "./index";
96
+ import { ${serverImports} } from "../_generated/server";
97
+ import { auth } from "${authImportPath}";
31
98
 
32
- export const signUp = action({
99
+ export const signUp = mutation({
33
100
  args: {
34
101
  email: v.string(),
35
102
  password: v.string(),
@@ -41,7 +108,7 @@ export const signUp = action({
41
108
  },
42
109
  });
43
110
 
44
- export const signInWithEmail = action({
111
+ export const signInWithEmail = mutation({
45
112
  args: {
46
113
  email: v.string(),
47
114
  password: v.string(),
@@ -53,7 +120,7 @@ export const signInWithEmail = action({
53
120
  },
54
121
  });
55
122
 
56
- export const verifyEmail = action({
123
+ export const verifyEmail = mutation({
57
124
  args: {
58
125
  email: v.string(),
59
126
  code: v.string(),
@@ -63,7 +130,7 @@ export const verifyEmail = action({
63
130
  },
64
131
  });
65
132
 
66
- export const requestPasswordReset = action({
133
+ export const requestPasswordReset = mutation({
67
134
  args: {
68
135
  email: v.string(),
69
136
  ipAddress: v.optional(v.string()),
@@ -73,7 +140,7 @@ export const requestPasswordReset = action({
73
140
  },
74
141
  });
75
142
 
76
- export const resetPassword = action({
143
+ export const resetPassword = mutation({
77
144
  args: {
78
145
  email: v.string(),
79
146
  code: v.string(),
@@ -84,7 +151,7 @@ export const resetPassword = action({
84
151
  },
85
152
  });
86
153
 
87
- export const signOut = action({
154
+ export const signOut = mutation({
88
155
  args: {
89
156
  token: v.string(),
90
157
  },
@@ -93,7 +160,7 @@ export const signOut = action({
93
160
  },
94
161
  });
95
162
 
96
- export const validateSession = action({
163
+ export const validateSession = mutation({
97
164
  args: {
98
165
  token: v.string(),
99
166
  },
@@ -102,7 +169,7 @@ export const validateSession = action({
102
169
  },
103
170
  });
104
171
 
105
- export const currentUser = action({
172
+ export const currentUser = mutation({
106
173
  args: {
107
174
  token: v.optional(v.string()),
108
175
  },
@@ -111,40 +178,28 @@ export const currentUser = action({
111
178
  },
112
179
  });
113
180
 
114
- export const getOAuthUrl = action({
115
- args: {
116
- providerId: v.string(),
117
- redirectUrl: v.optional(v.string()),
118
- },
119
- handler: async (ctx, args) => {
120
- return auth.getOAuthUrl(ctx, args.providerId, args.redirectUrl);
121
- },
122
- });
123
-
124
- export const handleOAuthCallback = action({
125
- args: {
126
- providerId: v.string(),
127
- code: v.string(),
128
- state: v.string(),
129
- redirectUrl: v.optional(v.string()),
130
- ipAddress: v.optional(v.string()),
131
- userAgent: v.optional(v.string()),
132
- },
133
- handler: async (ctx, args) => {
134
- return auth.handleCallback(ctx, args);
135
- },
136
- });
181
+ ${oauthExports}
137
182
  `);
138
183
  }
139
- function renderAdminFile() {
184
+ function renderAdminPluginFile(options) {
185
+ const authImportPath = options.authImportPath;
140
186
  return normalizeContent(`${GENERATED_MARKER}
141
187
  import { v } from "convex/values";
142
- import { action } from "../_generated/server";
143
- import { auth } from "./index";
188
+ import { mutation, query } from "../../_generated/server";
189
+ import { auth } from "${authImportPath}";
190
+
191
+ export const isAdmin = query({
192
+ args: {},
193
+ handler: async (ctx) => {
194
+ if (!auth.admin) {
195
+ throw new Error("Admin plugin is not enabled");
196
+ }
197
+ return auth.admin.isAdmin(ctx);
198
+ },
199
+ });
144
200
 
145
- export const listUsers = action({
201
+ export const listUsers = query({
146
202
  args: {
147
- token: v.optional(v.string()),
148
203
  limit: v.optional(v.number()),
149
204
  cursor: v.optional(v.string()),
150
205
  },
@@ -156,9 +211,8 @@ export const listUsers = action({
156
211
  },
157
212
  });
158
213
 
159
- export const banUser = action({
214
+ export const banUser = mutation({
160
215
  args: {
161
- token: v.optional(v.string()),
162
216
  userId: v.string(),
163
217
  reason: v.optional(v.string()),
164
218
  expiresAt: v.optional(v.number()),
@@ -171,9 +225,8 @@ export const banUser = action({
171
225
  },
172
226
  });
173
227
 
174
- export const unbanUser = action({
228
+ export const unbanUser = mutation({
175
229
  args: {
176
- token: v.optional(v.string()),
177
230
  userId: v.string(),
178
231
  },
179
232
  handler: async (ctx, args) => {
@@ -184,9 +237,8 @@ export const unbanUser = action({
184
237
  },
185
238
  });
186
239
 
187
- export const setRole = action({
240
+ export const setRole = mutation({
188
241
  args: {
189
- token: v.optional(v.string()),
190
242
  userId: v.string(),
191
243
  role: v.string(),
192
244
  },
@@ -198,9 +250,8 @@ export const setRole = action({
198
250
  },
199
251
  });
200
252
 
201
- export const deleteUser = action({
253
+ export const deleteUser = mutation({
202
254
  args: {
203
- token: v.optional(v.string()),
204
255
  userId: v.string(),
205
256
  },
206
257
  handler: async (ctx, args) => {
@@ -212,6 +263,34 @@ export const deleteUser = action({
212
263
  });
213
264
  `);
214
265
  }
266
+ function parsePluginFunctionKinds(source) {
267
+ const result = {};
268
+ const pattern = /export\s+const\s+([A-Za-z0-9_]+)\s*=\s*(query|mutation|action)\s*\(/g;
269
+ let match = pattern.exec(source);
270
+ while (match) {
271
+ const functionName = match[1];
272
+ const functionKind = match[2];
273
+ if (functionName) {
274
+ result[functionName] = functionKind;
275
+ }
276
+ match = pattern.exec(source);
277
+ }
278
+ return result;
279
+ }
280
+ function renderPluginMetaFile(pluginMeta) {
281
+ const normalizedEntries = Object.entries(pluginMeta)
282
+ .sort(([a], [b]) => a.localeCompare(b))
283
+ .map(([pluginName, functions]) => {
284
+ const sortedFunctions = Object.fromEntries(Object.entries(functions).sort(([a], [b]) => a.localeCompare(b)));
285
+ return [pluginName, sortedFunctions];
286
+ });
287
+ const normalizedMeta = Object.fromEntries(normalizedEntries);
288
+ return normalizeContent(`${GENERATED_MARKER}
289
+ export const authPluginMeta = ${JSON.stringify(normalizedMeta, null, 2)} as const;
290
+
291
+ export type AuthPluginMeta = typeof authPluginMeta;
292
+ `);
293
+ }
215
294
  async function upsertGeneratedFile(file, options, result) {
216
295
  const exists = await fileExists(file.absolutePath);
217
296
  if (!exists) {
@@ -263,35 +342,89 @@ export async function generateAuthFunctions(options) {
263
342
  warnings: [],
264
343
  };
265
344
  const authDir = path.join(options.cwd, "convex", "auth");
266
- const indexPath = path.join(authDir, "index.ts");
267
- if (!(await fileExists(indexPath))) {
268
- throw new Error(`Missing auth source file at ${path.relative(options.cwd, indexPath)}`);
345
+ const pluginDir = path.join(authDir, "plugin");
346
+ const authSource = await resolveAuthSource(options.cwd);
347
+ if (!authSource) {
348
+ throw new Error(`Missing auth source file. Expected: ${path.join("convex", "zenConvex.ts")}`);
269
349
  }
270
- const indexSource = await readFile(indexPath, "utf8");
271
- const enabledPlugins = detectEnabledPlugins(indexSource);
272
- if (!/export\s+const\s+authOptions\s*=/.test(indexSource)) {
273
- result.warnings.push("authOptions export was not found in convex/auth/index.ts (recommended for generator compatibility).");
350
+ if (authSource.layout !== "zen") {
351
+ result.warnings.push(`Legacy auth source detected (${authSource.relativePath}). Move to ${path.join("convex", "zenConvex.ts")}.`);
352
+ }
353
+ const authSourceContents = await readFile(authSource.absolutePath, "utf8");
354
+ const enabledPlugins = detectEnabledPlugins(authSourceContents);
355
+ const includeOAuth = hasOAuthProviders(authSourceContents);
356
+ const coreAuthImportPath = authSource.coreAuthImportPath;
357
+ const pluginAuthImportPath = authSource.pluginAuthImportPath;
358
+ if (!/export\s+const\s+authOptions\s*=/.test(authSourceContents)) {
359
+ result.warnings.push(`authOptions export was not found in ${authSource.relativePath} (recommended for generator compatibility).`);
274
360
  }
275
361
  const filesToGenerate = [
276
362
  {
277
363
  absolutePath: path.join(authDir, "core.ts"),
278
364
  relativePath: path.join("convex", "auth", "core.ts"),
279
- content: renderCoreFile(),
365
+ content: renderCoreFile({
366
+ includeOAuth,
367
+ authImportPath: coreAuthImportPath,
368
+ }),
280
369
  },
281
370
  ];
371
+ const generatedPluginSources = new Map();
282
372
  if (enabledPlugins.has("admin")) {
373
+ const adminContent = renderAdminPluginFile({
374
+ authImportPath: pluginAuthImportPath,
375
+ });
283
376
  filesToGenerate.push({
284
- absolutePath: path.join(authDir, "admin.ts"),
285
- relativePath: path.join("convex", "auth", "admin.ts"),
286
- content: renderAdminFile(),
377
+ absolutePath: path.join(pluginDir, "admin.ts"),
378
+ relativePath: path.join("convex", "auth", "plugin", "admin.ts"),
379
+ content: adminContent,
287
380
  });
381
+ generatedPluginSources.set("admin", adminContent);
288
382
  }
289
383
  for (const file of filesToGenerate) {
290
384
  await upsertGeneratedFile(file, options, result);
291
385
  }
386
+ await deleteGeneratedFileIfExists(path.join(authDir, "admin.ts"), path.join("convex", "auth", "admin.ts"), options, result);
292
387
  if (!enabledPlugins.has("admin")) {
293
- await deleteGeneratedFileIfExists(path.join(authDir, "admin.ts"), path.join("convex", "auth", "admin.ts"), options, result);
388
+ await deleteGeneratedFileIfExists(path.join(pluginDir, "admin.ts"), path.join("convex", "auth", "plugin", "admin.ts"), options, result);
389
+ }
390
+ const pluginMeta = {};
391
+ for (const [pluginName, source] of generatedPluginSources) {
392
+ const kinds = parsePluginFunctionKinds(source);
393
+ if (Object.keys(kinds).length > 0) {
394
+ pluginMeta[pluginName] = kinds;
395
+ }
396
+ }
397
+ if (await fileExists(pluginDir)) {
398
+ const entries = await readdir(pluginDir, { withFileTypes: true });
399
+ for (const entry of entries) {
400
+ if (!entry.isFile() || !entry.name.endsWith(".ts")) {
401
+ continue;
402
+ }
403
+ if (entry.name === "metaGenerated.ts") {
404
+ continue;
405
+ }
406
+ const pluginName = entry.name.slice(0, -3);
407
+ if (generatedPluginSources.has(pluginName)) {
408
+ continue;
409
+ }
410
+ const absolutePath = path.join(pluginDir, entry.name);
411
+ const source = await readFile(absolutePath, "utf8");
412
+ if (pluginName === "admin" &&
413
+ !enabledPlugins.has("admin") &&
414
+ isGeneratedFile(source)) {
415
+ continue;
416
+ }
417
+ const kinds = parsePluginFunctionKinds(source);
418
+ if (Object.keys(kinds).length > 0) {
419
+ pluginMeta[pluginName] = kinds;
420
+ }
421
+ }
294
422
  }
423
+ await upsertGeneratedFile({
424
+ absolutePath: path.join(pluginDir, "metaGenerated.ts"),
425
+ relativePath: path.join("convex", "auth", "plugin", "metaGenerated.ts"),
426
+ content: renderPluginMetaFile(pluginMeta),
427
+ }, options, result);
295
428
  return result;
296
429
  }
297
430
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -6,7 +6,7 @@ function printHelp() {
6
6
  console.log(`convex-zen CLI
7
7
 
8
8
  Usage:
9
- convex-zen generate [--cwd <path>] [--check] [--verbose]
9
+ convex-zen generate [--cwd <path>] [--check]
10
10
 
11
11
  Commands:
12
12
  generate Generate Convex auth function wrappers in convex/auth/
@@ -14,7 +14,6 @@ Commands:
14
14
  Flags:
15
15
  --cwd Workspace root (default: current working directory)
16
16
  --check Check for drift without writing files
17
- --verbose Print additional details
18
17
  -h, --help Show this help message
19
18
  `);
20
19
  }
@@ -68,6 +67,17 @@ function printSummary(result) {
68
67
  if (totalChanges === 0) {
69
68
  console.log(" status: up-to-date");
70
69
  }
70
+ const orderedGroups = [
71
+ { status: "created", files: result.created },
72
+ { status: "updated", files: result.updated },
73
+ { status: "deleted", files: result.deleted },
74
+ { status: "unchanged", files: result.unchanged },
75
+ ];
76
+ for (const group of orderedGroups) {
77
+ for (const file of group.files) {
78
+ console.log(` ${group.status}: ${file}`);
79
+ }
80
+ }
71
81
  for (const warning of result.warnings) {
72
82
  console.warn(`warning: ${warning}`);
73
83
  }
@@ -83,17 +93,6 @@ async function main() {
83
93
  }
84
94
  const result = await generateAuthFunctions(options);
85
95
  printSummary(result);
86
- if (options.verbose) {
87
- for (const file of result.created) {
88
- console.log(`created: ${file}`);
89
- }
90
- for (const file of result.updated) {
91
- console.log(`updated: ${file}`);
92
- }
93
- for (const file of result.deleted) {
94
- console.log(`deleted: ${file}`);
95
- }
96
- }
97
96
  if (options.check) {
98
97
  const hasDrift = result.created.length > 0 ||
99
98
  result.updated.length > 0 ||
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}