convex 1.36.0 → 1.37.0
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/CHANGELOG.md +50 -27
- package/dist/browser.bundle.js +1 -1
- package/dist/browser.bundle.js.map +1 -1
- package/dist/cjs/cli/codegen_templates/agentsmd.js +8 -2
- package/dist/cjs/cli/codegen_templates/agentsmd.js.map +2 -2
- package/dist/cjs/cli/codegen_templates/claudemd.js +2 -0
- package/dist/cjs/cli/codegen_templates/claudemd.js.map +2 -2
- package/dist/cjs/cli/configure.js +0 -8
- package/dist/cjs/cli/configure.js.map +2 -2
- package/dist/cjs/cli/deployment.js +2 -1
- package/dist/cjs/cli/deployment.js.map +2 -2
- package/dist/cjs/cli/deploymentToken.js +30 -0
- package/dist/cjs/cli/deploymentToken.js.map +7 -0
- package/dist/cjs/cli/deploymentTokenCreate.js +109 -0
- package/dist/cjs/cli/deploymentTokenCreate.js.map +7 -0
- package/dist/cjs/cli/deploymentTokenDelete.js +87 -0
- package/dist/cjs/cli/deploymentTokenDelete.js.map +7 -0
- package/dist/cjs/cli/envDefault.js +130 -41
- package/dist/cjs/cli/envDefault.js.map +3 -3
- package/dist/cjs/cli/generatedApi.js.map +1 -1
- package/dist/cjs/cli/lib/command.js +1 -1
- package/dist/cjs/cli/lib/command.js.map +1 -1
- package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
- package/dist/cjs/cli/lib/login.js +51 -0
- package/dist/cjs/cli/lib/login.js.map +3 -3
- package/dist/cjs/cli/lib/usage.js +13 -6
- package/dist/cjs/cli/lib/usage.js.map +2 -2
- package/dist/cjs/cli/lib/workos/environmentApi.js +6 -12
- package/dist/cjs/cli/lib/workos/environmentApi.js.map +3 -3
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react/client.js +40 -42
- package/dist/cjs/react/client.js.map +2 -2
- package/dist/cjs/react/index.js +1 -0
- package/dist/cjs/react/index.js.map +2 -2
- package/dist/cjs/react/use_paginated_query.js +5 -46
- package/dist/cjs/react/use_paginated_query.js.map +2 -2
- package/dist/cjs/react/use_paginated_query2.js.map +2 -2
- package/dist/cjs/server/audit_logging.js +67 -0
- package/dist/cjs/server/audit_logging.js.map +7 -0
- package/dist/cjs/server/impl/meta_impl.js +27 -3
- package/dist/cjs/server/impl/meta_impl.js.map +2 -2
- package/dist/cjs/server/impl/registration_impl.js +2 -0
- package/dist/cjs/server/impl/registration_impl.js.map +2 -2
- package/dist/cjs/server/index.js +2 -0
- package/dist/cjs/server/index.js.map +2 -2
- package/dist/cjs/server/log.js +30 -0
- package/dist/cjs/server/log.js.map +7 -0
- package/dist/cjs/server/logVars.js +48 -0
- package/dist/cjs/server/logVars.js.map +7 -0
- package/dist/cjs/server/meta.js.map +1 -1
- package/dist/cjs/server/registration.js.map +1 -1
- package/dist/cjs-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
- package/dist/cjs-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
- package/dist/cjs-types/cli/configure.d.ts.map +1 -1
- package/dist/cjs-types/cli/deployment.d.ts.map +1 -1
- package/dist/cjs-types/cli/deploymentToken.d.ts +3 -0
- package/dist/cjs-types/cli/deploymentToken.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentToken.test.d.ts +2 -0
- package/dist/cjs-types/cli/deploymentToken.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentTokenCreate.d.ts +13 -0
- package/dist/cjs-types/cli/deploymentTokenCreate.d.ts.map +1 -0
- package/dist/cjs-types/cli/deploymentTokenDelete.d.ts +11 -0
- package/dist/cjs-types/cli/deploymentTokenDelete.d.ts.map +1 -0
- package/dist/cjs-types/cli/envDefault.d.ts +2 -2
- package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
- package/dist/cjs-types/cli/envDefault.test.d.ts +2 -0
- package/dist/cjs-types/cli/envDefault.test.d.ts.map +1 -0
- package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
- package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
- package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/login.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
- package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
- package/dist/cjs-types/index.d.ts +1 -1
- package/dist/cjs-types/react/client.d.ts +52 -0
- package/dist/cjs-types/react/client.d.ts.map +1 -1
- package/dist/cjs-types/react/index.d.ts +2 -2
- package/dist/cjs-types/react/index.d.ts.map +1 -1
- package/dist/cjs-types/react/use_paginated_query.d.ts.map +1 -1
- package/dist/cjs-types/react/use_paginated_query2.d.ts +63 -1
- package/dist/cjs-types/react/use_paginated_query2.d.ts.map +1 -1
- package/dist/cjs-types/server/api.intersect.test.d.ts +2 -0
- package/dist/cjs-types/server/api.intersect.test.d.ts.map +1 -0
- package/dist/cjs-types/server/audit_logging.d.ts +19 -0
- package/dist/cjs-types/server/audit_logging.d.ts.map +1 -0
- package/dist/cjs-types/server/audit_logging.test.d.ts +2 -0
- package/dist/cjs-types/server/audit_logging.test.d.ts.map +1 -0
- package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/cjs-types/server/index.d.ts +2 -2
- package/dist/cjs-types/server/index.d.ts.map +1 -1
- package/dist/cjs-types/server/log.d.ts +2 -0
- package/dist/cjs-types/server/log.d.ts.map +1 -0
- package/dist/cjs-types/server/logVars.d.ts +20 -0
- package/dist/cjs-types/server/logVars.d.ts.map +1 -0
- package/dist/cjs-types/server/meta.d.ts +40 -0
- package/dist/cjs-types/server/meta.d.ts.map +1 -1
- package/dist/cjs-types/server/registration.d.ts +5 -2
- package/dist/cjs-types/server/registration.d.ts.map +1 -1
- package/dist/cli.bundle.cjs +362 -74
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/esm/cli/codegen_templates/agentsmd.js +8 -2
- package/dist/esm/cli/codegen_templates/agentsmd.js.map +2 -2
- package/dist/esm/cli/codegen_templates/claudemd.js +2 -0
- package/dist/esm/cli/codegen_templates/claudemd.js.map +2 -2
- package/dist/esm/cli/configure.js +0 -8
- package/dist/esm/cli/configure.js.map +2 -2
- package/dist/esm/cli/deployment.js +2 -1
- package/dist/esm/cli/deployment.js.map +2 -2
- package/dist/esm/cli/deploymentToken.js +8 -0
- package/dist/esm/cli/deploymentToken.js.map +7 -0
- package/dist/esm/cli/deploymentTokenCreate.js +91 -0
- package/dist/esm/cli/deploymentTokenCreate.js.map +7 -0
- package/dist/esm/cli/deploymentTokenDelete.js +68 -0
- package/dist/esm/cli/deploymentTokenDelete.js.map +7 -0
- package/dist/esm/cli/envDefault.js +131 -42
- package/dist/esm/cli/envDefault.js.map +3 -3
- package/dist/esm/cli/lib/command.js +1 -1
- package/dist/esm/cli/lib/command.js.map +1 -1
- package/dist/esm/cli/lib/login.js +52 -0
- package/dist/esm/cli/lib/login.js.map +3 -3
- package/dist/esm/cli/lib/usage.js +15 -8
- package/dist/esm/cli/lib/usage.js.map +2 -2
- package/dist/esm/cli/lib/workos/environmentApi.js +6 -12
- package/dist/esm/cli/lib/workos/environmentApi.js.map +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react/client.js +38 -41
- package/dist/esm/react/client.js.map +2 -2
- package/dist/esm/react/index.js +4 -1
- package/dist/esm/react/index.js.map +2 -2
- package/dist/esm/react/use_paginated_query.js +5 -46
- package/dist/esm/react/use_paginated_query.js.map +2 -2
- package/dist/esm/react/use_paginated_query2.js.map +2 -2
- package/dist/esm/server/audit_logging.js +44 -0
- package/dist/esm/server/audit_logging.js.map +7 -0
- package/dist/esm/server/impl/meta_impl.js +27 -3
- package/dist/esm/server/impl/meta_impl.js.map +2 -2
- package/dist/esm/server/impl/registration_impl.js +2 -0
- package/dist/esm/server/impl/registration_impl.js.map +2 -2
- package/dist/esm/server/index.js +1 -0
- package/dist/esm/server/index.js.map +2 -2
- package/dist/esm/server/log.js +8 -0
- package/dist/esm/server/log.js.map +7 -0
- package/dist/esm/server/logVars.js +25 -0
- package/dist/esm/server/logVars.js.map +7 -0
- package/dist/esm-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
- package/dist/esm-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
- package/dist/esm-types/cli/configure.d.ts.map +1 -1
- package/dist/esm-types/cli/deployment.d.ts.map +1 -1
- package/dist/esm-types/cli/deploymentToken.d.ts +3 -0
- package/dist/esm-types/cli/deploymentToken.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentToken.test.d.ts +2 -0
- package/dist/esm-types/cli/deploymentToken.test.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentTokenCreate.d.ts +13 -0
- package/dist/esm-types/cli/deploymentTokenCreate.d.ts.map +1 -0
- package/dist/esm-types/cli/deploymentTokenDelete.d.ts +11 -0
- package/dist/esm-types/cli/deploymentTokenDelete.d.ts.map +1 -0
- package/dist/esm-types/cli/envDefault.d.ts +2 -2
- package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
- package/dist/esm-types/cli/envDefault.test.d.ts +2 -0
- package/dist/esm-types/cli/envDefault.test.d.ts.map +1 -0
- package/dist/esm-types/cli/generatedApi.d.ts +1 -1
- package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
- package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/login.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
- package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
- package/dist/esm-types/index.d.ts +1 -1
- package/dist/esm-types/react/client.d.ts +52 -0
- package/dist/esm-types/react/client.d.ts.map +1 -1
- package/dist/esm-types/react/index.d.ts +2 -2
- package/dist/esm-types/react/index.d.ts.map +1 -1
- package/dist/esm-types/react/use_paginated_query.d.ts.map +1 -1
- package/dist/esm-types/react/use_paginated_query2.d.ts +63 -1
- package/dist/esm-types/react/use_paginated_query2.d.ts.map +1 -1
- package/dist/esm-types/server/api.intersect.test.d.ts +2 -0
- package/dist/esm-types/server/api.intersect.test.d.ts.map +1 -0
- package/dist/esm-types/server/audit_logging.d.ts +19 -0
- package/dist/esm-types/server/audit_logging.d.ts.map +1 -0
- package/dist/esm-types/server/audit_logging.test.d.ts +2 -0
- package/dist/esm-types/server/audit_logging.test.d.ts.map +1 -0
- package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -1
- package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
- package/dist/esm-types/server/index.d.ts +2 -2
- package/dist/esm-types/server/index.d.ts.map +1 -1
- package/dist/esm-types/server/log.d.ts +2 -0
- package/dist/esm-types/server/log.d.ts.map +1 -0
- package/dist/esm-types/server/logVars.d.ts +20 -0
- package/dist/esm-types/server/logVars.d.ts.map +1 -0
- package/dist/esm-types/server/meta.d.ts +40 -0
- package/dist/esm-types/server/meta.d.ts.map +1 -1
- package/dist/esm-types/server/registration.d.ts +5 -2
- package/dist/esm-types/server/registration.d.ts.map +1 -1
- package/dist/react.bundle.js +45 -88
- package/dist/react.bundle.js.map +2 -2
- package/package.json +4 -4
- package/src/cli/codegen_templates/agentsmd.ts +8 -2
- package/src/cli/codegen_templates/claudemd.ts +2 -0
- package/src/cli/configure.ts +0 -9
- package/src/cli/deployment.ts +3 -1
- package/src/cli/deploymentToken.test.ts +372 -0
- package/src/cli/deploymentToken.ts +11 -0
- package/src/cli/deploymentTokenCreate.ts +113 -0
- package/src/cli/deploymentTokenDelete.ts +91 -0
- package/src/cli/envDefault.test.ts +495 -0
- package/src/cli/envDefault.ts +222 -107
- package/src/cli/generatedApi.ts +1 -1
- package/src/cli/lib/command.ts +1 -1
- package/src/cli/lib/generatedFunctionLogsApi.ts +1 -0
- package/src/cli/lib/login.ts +67 -0
- package/src/cli/lib/usage.ts +18 -8
- package/src/cli/lib/workos/environmentApi.test.ts +107 -0
- package/src/cli/lib/workos/environmentApi.ts +12 -19
- package/src/index.ts +1 -1
- package/src/react/client.test.tsx +10 -8
- package/src/react/client.ts +88 -96
- package/src/react/index.ts +6 -1
- package/src/react/use_paginated_query.test.tsx +215 -132
- package/src/react/use_paginated_query.ts +8 -142
- package/src/react/use_paginated_query2.ts +78 -5
- package/src/react/use_query_object_options.test.ts +8 -7
- package/src/react/use_query_result.test.ts +40 -7
- package/src/server/api.intersect.test.ts +109 -0
- package/src/server/audit_logging.test.ts +129 -0
- package/src/server/audit_logging.ts +75 -0
- package/src/server/impl/meta_impl.ts +28 -0
- package/src/server/impl/registration_impl.ts +2 -0
- package/src/server/index.ts +12 -0
- package/src/server/log.ts +16 -0
- package/src/server/logVars.ts +34 -0
- package/src/server/meta.ts +53 -1
- package/src/server/registration.ts +10 -8
package/dist/cli.bundle.cjs
CHANGED
|
@@ -18183,7 +18183,7 @@ var require_context = __commonJS({
|
|
|
18183
18183
|
};
|
|
18184
18184
|
});
|
|
18185
18185
|
var nodeContextIntegration = core.defineIntegration(_nodeContextIntegration);
|
|
18186
|
-
var
|
|
18186
|
+
var Context12 = core.convertIntegrationFnToClass(INTEGRATION_NAME, nodeContextIntegration);
|
|
18187
18187
|
function _updateContext(contexts) {
|
|
18188
18188
|
if (_optionalChain([contexts, "optionalAccess", (_11) => _11.app, "optionalAccess", (_12) => _12.app_memory])) {
|
|
18189
18189
|
contexts.app.app_memory = process.memoryUsage().rss;
|
|
@@ -18393,7 +18393,7 @@ var require_context = __commonJS({
|
|
|
18393
18393
|
return void 0;
|
|
18394
18394
|
}
|
|
18395
18395
|
}
|
|
18396
|
-
exports2.Context =
|
|
18396
|
+
exports2.Context = Context12;
|
|
18397
18397
|
exports2.getDeviceContext = getDeviceContext;
|
|
18398
18398
|
exports2.nodeContextIntegration = nodeContextIntegration;
|
|
18399
18399
|
exports2.readDirAsync = readDirAsync;
|
|
@@ -28695,7 +28695,7 @@ var version;
|
|
|
28695
28695
|
var init_index = __esm({
|
|
28696
28696
|
"src/index.ts"() {
|
|
28697
28697
|
"use strict";
|
|
28698
|
-
version = "1.
|
|
28698
|
+
version = "1.37.0";
|
|
28699
28699
|
}
|
|
28700
28700
|
});
|
|
28701
28701
|
|
|
@@ -62688,13 +62688,10 @@ async function createRedirectURI(ctx, apiKey, uri) {
|
|
|
62688
62688
|
}
|
|
62689
62689
|
);
|
|
62690
62690
|
if (!response.ok) {
|
|
62691
|
-
if (response.status === 422) {
|
|
62692
|
-
const errorText2 = await response.text();
|
|
62693
|
-
if (errorText2.includes("already exists")) {
|
|
62694
|
-
return { modified: false };
|
|
62695
|
-
}
|
|
62696
|
-
}
|
|
62697
62691
|
const errorText = await response.text();
|
|
62692
|
+
if (response.status === 422 && errorText.includes("already exists")) {
|
|
62693
|
+
return { modified: false };
|
|
62694
|
+
}
|
|
62698
62695
|
return await ctx.crash({
|
|
62699
62696
|
exitCode: 1,
|
|
62700
62697
|
errorType: "fatal",
|
|
@@ -62741,13 +62738,10 @@ async function createCORSOrigin(ctx, apiKey, origin) {
|
|
|
62741
62738
|
}
|
|
62742
62739
|
);
|
|
62743
62740
|
if (!response.ok) {
|
|
62744
|
-
if (response.status === 409) {
|
|
62745
|
-
const errorText2 = await response.text();
|
|
62746
|
-
if (errorText2.includes("duplicate_cors_origin") || errorText2.includes("already exists")) {
|
|
62747
|
-
return { modified: false };
|
|
62748
|
-
}
|
|
62749
|
-
}
|
|
62750
62741
|
const errorText = await response.text();
|
|
62742
|
+
if (response.status === 409 && (errorText.includes("duplicate_cors_origin") || errorText.includes("already exists"))) {
|
|
62743
|
+
return { modified: false };
|
|
62744
|
+
}
|
|
62751
62745
|
return await ctx.crash({
|
|
62752
62746
|
exitCode: 1,
|
|
62753
62747
|
errorType: "fatal",
|
|
@@ -77820,13 +77814,19 @@ function convexAiMarkdownBody(convexDir) {
|
|
|
77820
77814
|
const normalizedConvexDir = convexDir.replaceAll("\\", "/");
|
|
77821
77815
|
return `This project uses [Convex](https://convex.dev) as its backend.
|
|
77822
77816
|
|
|
77823
|
-
When working on Convex code, **always read
|
|
77817
|
+
When working on Convex code, **always read
|
|
77818
|
+
\`${normalizedConvexDir}/_generated/ai/guidelines.md\` first** for important guidelines on
|
|
77819
|
+
how to correctly use Convex APIs and patterns. The file contains rules that
|
|
77820
|
+
override what you may have learned about Convex from training data.
|
|
77824
77821
|
|
|
77825
|
-
Convex agent skills for common tasks can be installed by running
|
|
77822
|
+
Convex agent skills for common tasks can be installed by running
|
|
77823
|
+
\`npx convex ai-files install\`.`;
|
|
77826
77824
|
}
|
|
77827
77825
|
function agentsMdConvexSection(convexDir) {
|
|
77828
77826
|
return `${AGENTS_MD_START_MARKER}
|
|
77827
|
+
|
|
77829
77828
|
${convexAiMarkdownBody(convexDir)}
|
|
77829
|
+
|
|
77830
77830
|
${AGENTS_MD_END_MARKER}`;
|
|
77831
77831
|
}
|
|
77832
77832
|
var AGENTS_MD_START_MARKER, AGENTS_MD_END_MARKER;
|
|
@@ -77893,7 +77893,9 @@ var init_agentsmd2 = __esm({
|
|
|
77893
77893
|
// src/cli/codegen_templates/claudemd.ts
|
|
77894
77894
|
function claudeMdConvexSection(convexDir) {
|
|
77895
77895
|
return `${CLAUDE_MD_START_MARKER}
|
|
77896
|
+
|
|
77896
77897
|
${convexAiMarkdownBody(convexDir)}
|
|
77898
|
+
|
|
77897
77899
|
${CLAUDE_MD_END_MARKER}`;
|
|
77898
77900
|
}
|
|
77899
77901
|
var CLAUDE_MD_START_MARKER, CLAUDE_MD_END_MARKER;
|
|
@@ -133408,6 +133410,57 @@ async function performLogin(ctx, {
|
|
|
133408
133410
|
printedMessage: null
|
|
133409
133411
|
});
|
|
133410
133412
|
}
|
|
133413
|
+
if (vercel) {
|
|
133414
|
+
await promptJoinVercelTeams(ctx);
|
|
133415
|
+
}
|
|
133416
|
+
}
|
|
133417
|
+
async function promptJoinVercelTeams(ctx) {
|
|
133418
|
+
const fetch2 = bigBrainFetch(ctx);
|
|
133419
|
+
let teams;
|
|
133420
|
+
try {
|
|
133421
|
+
const res = await fetch2(
|
|
133422
|
+
new URL("vercel/potential_teams", `${provisionHost}/`)
|
|
133423
|
+
);
|
|
133424
|
+
if (!res.ok) {
|
|
133425
|
+
logVerbose(
|
|
133426
|
+
`vercel/potential_teams returned ${res.status}; skipping team-join prompt`
|
|
133427
|
+
);
|
|
133428
|
+
return;
|
|
133429
|
+
}
|
|
133430
|
+
teams = await res.json();
|
|
133431
|
+
} catch (err) {
|
|
133432
|
+
logVerbose(`Failed to fetch potential Vercel teams: ${String(err)}`);
|
|
133433
|
+
return;
|
|
133434
|
+
}
|
|
133435
|
+
if (teams.length === 0) return;
|
|
133436
|
+
for (const [index, team] of teams.entries()) {
|
|
133437
|
+
const displayName = team.teamName.replace(/ \(Vercel\)$/, "");
|
|
133438
|
+
const counter = teams.length > 1 ? `[${index + 1}/${teams.length}] ` : "";
|
|
133439
|
+
const lines = [
|
|
133440
|
+
chalkStderr.bold(`${counter}You've been invited to join ${displayName}`) + ` (${team.planName}) through the Vercel marketplace.`
|
|
133441
|
+
];
|
|
133442
|
+
if (team.pricingNotice) {
|
|
133443
|
+
lines.push(chalkStderr.yellow(team.pricingNotice));
|
|
133444
|
+
}
|
|
133445
|
+
lines.push(`Join "${displayName}"?`);
|
|
133446
|
+
const join = await promptYesNo(ctx, {
|
|
133447
|
+
message: `${lines.join("\n")}`,
|
|
133448
|
+
default: true
|
|
133449
|
+
});
|
|
133450
|
+
if (!join) continue;
|
|
133451
|
+
try {
|
|
133452
|
+
await fetch2(
|
|
133453
|
+
new URL(
|
|
133454
|
+
`vercel/potential_teams/${team.teamId}/join`,
|
|
133455
|
+
`${provisionHost}/`
|
|
133456
|
+
),
|
|
133457
|
+
{ method: "POST" }
|
|
133458
|
+
);
|
|
133459
|
+
logFinishedStep(`Joined ${displayName}`);
|
|
133460
|
+
} catch (err) {
|
|
133461
|
+
logFailure(`Failed to join ${displayName}: ${String(err)}`);
|
|
133462
|
+
}
|
|
133463
|
+
}
|
|
133411
133464
|
}
|
|
133412
133465
|
async function optins(ctx, acceptOptIns) {
|
|
133413
133466
|
const bbAuth = ctx.bigBrainAuth();
|
|
@@ -133860,14 +133913,6 @@ async function selectExistingProject(ctx, chosenConfiguration, config3) {
|
|
|
133860
133913
|
forceDevDeployment: config3.local ? "local" : config3.cloud ? "cloud" : void 0
|
|
133861
133914
|
});
|
|
133862
133915
|
logFinishedStep(`Reinitialized project ${chalkStderr.bold(projectSlug)}`);
|
|
133863
|
-
const { configPath, projectConfig } = await readProjectConfig(ctx);
|
|
133864
|
-
const folder = functionsDir(configPath, projectConfig);
|
|
133865
|
-
await attemptSetupAiFiles({
|
|
133866
|
-
ctx,
|
|
133867
|
-
aiFilesConfig: projectConfig.aiFiles,
|
|
133868
|
-
convexDir: import_path31.default.resolve(folder),
|
|
133869
|
-
projectDir: import_path31.default.resolve(import_path31.default.dirname(configPath))
|
|
133870
|
-
});
|
|
133871
133916
|
return { teamSlug, projectSlug, devDeployment };
|
|
133872
133917
|
}
|
|
133873
133918
|
async function askToConfigure(ctx) {
|
|
@@ -133986,7 +134031,7 @@ async function warn(ctx, options) {
|
|
|
133986
134031
|
);
|
|
133987
134032
|
}
|
|
133988
134033
|
async function teamUsageState(ctx, teamId) {
|
|
133989
|
-
const { usageState } = await
|
|
134034
|
+
const { usageState } = await bigBrainAPIMaybeThrows({
|
|
133990
134035
|
ctx,
|
|
133991
134036
|
method: "GET",
|
|
133992
134037
|
path: "dashboard/teams/" + teamId + "/usage/team_usage_state"
|
|
@@ -133994,7 +134039,7 @@ async function teamUsageState(ctx, teamId) {
|
|
|
133994
134039
|
return usageState;
|
|
133995
134040
|
}
|
|
133996
134041
|
async function teamSpendingLimitsState(ctx, teamId) {
|
|
133997
|
-
const response = await
|
|
134042
|
+
const response = await bigBrainAPIMaybeThrows({
|
|
133998
134043
|
ctx,
|
|
133999
134044
|
method: "GET",
|
|
134000
134045
|
path: "dashboard/teams/" + teamId + "/get_spending_limits"
|
|
@@ -134007,10 +134052,17 @@ async function usageStateWarning(ctx, targetDeployment) {
|
|
|
134007
134052
|
return;
|
|
134008
134053
|
}
|
|
134009
134054
|
const { teamId, team } = await fetchTeamAndProject(ctx, targetDeployment);
|
|
134010
|
-
|
|
134011
|
-
|
|
134012
|
-
|
|
134013
|
-
|
|
134055
|
+
let usageState;
|
|
134056
|
+
let spendingLimitsState;
|
|
134057
|
+
try {
|
|
134058
|
+
[usageState, spendingLimitsState] = await Promise.all([
|
|
134059
|
+
teamUsageState(ctx, teamId),
|
|
134060
|
+
teamSpendingLimitsState(ctx, teamId)
|
|
134061
|
+
]);
|
|
134062
|
+
} catch (err) {
|
|
134063
|
+
logVerbose("Skipping usage state warning:", err);
|
|
134064
|
+
return;
|
|
134065
|
+
}
|
|
134014
134066
|
if (spendingLimitsState === "Disabled") {
|
|
134015
134067
|
await warn(ctx, {
|
|
134016
134068
|
title: "Your projects are disabled because you exceeded your spending limit.",
|
|
@@ -134192,7 +134244,7 @@ Command.prototype.addDeploymentSelectionOptions = function(action, options) {
|
|
|
134192
134244
|
).addOption(
|
|
134193
134245
|
new Option(
|
|
134194
134246
|
"--deployment <deployment>",
|
|
134195
|
-
action + " a specific deployment. Accepts:\n\u2022 a deployment name (e.g. joyful-capybara-123)\u2022 a deployment reference (e.g. dev/james, staging)\n\u2022 `dev` (for your personal dev deployment)\n\u2022 `prod` (for your project\u2019s default production deployment)\n\u2022 `local` (for your local dev deployment).\nYou can also select deployments in other projects with `project-slug:reference` or `team-slug:project-slug:reference`."
|
|
134247
|
+
action + " a specific deployment. Accepts:\n\u2022 a deployment name (e.g. joyful-capybara-123)\n\u2022 a deployment reference (e.g. dev/james, staging)\n\u2022 `dev` (for your personal dev deployment)\n\u2022 `prod` (for your project\u2019s default production deployment)\n\u2022 `local` (for your local dev deployment).\nYou can also select deployments in other projects with `project-slug:reference` or `team-slug:project-slug:reference`."
|
|
134196
134248
|
).conflicts(["--prod", "--preview-name", "--deployment-name", "--url"])
|
|
134197
134249
|
).addOption(
|
|
134198
134250
|
new Option(
|
|
@@ -136259,22 +136311,33 @@ function defaultEnvBackend(ctx, projectId, dtype) {
|
|
|
136259
136311
|
|
|
136260
136312
|
// src/cli/envDefault.ts
|
|
136261
136313
|
init_api3();
|
|
136262
|
-
|
|
136263
|
-
|
|
136264
|
-
|
|
136265
|
-
|
|
136266
|
-
|
|
136267
|
-
)
|
|
136268
|
-
|
|
136269
|
-
|
|
136270
|
-
|
|
136314
|
+
function addEnvDefaultOptions(cmd) {
|
|
136315
|
+
return cmd.addOption(
|
|
136316
|
+
new Option(
|
|
136317
|
+
"--type <type>",
|
|
136318
|
+
"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment."
|
|
136319
|
+
)
|
|
136320
|
+
).addOption(
|
|
136321
|
+
new Option(
|
|
136322
|
+
"--project <project>",
|
|
136323
|
+
"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type."
|
|
136324
|
+
)
|
|
136325
|
+
);
|
|
136326
|
+
}
|
|
136327
|
+
var envDefaultSet = addEnvDefaultOptions(
|
|
136328
|
+
new Command("set").usage("[options] <name> <value>").arguments("[name] [value]").summary("Set a default variable").description(
|
|
136329
|
+
"Set default environment variables for your project's deployment type.\n\n npx convex env default set NAME 'value'\n npx convex env default set NAME # omit a value to set one interactively\n npx convex env default set NAME --from-file value.txt\n npx convex env default set --from-file .env.defaults\nWhen setting multiple values, it will refuse all changes if any variables are already set to different values by default. Pass --force to overwrite the provided values.\nThe deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\n"
|
|
136330
|
+
).option(
|
|
136331
|
+
"--from-file <file>",
|
|
136332
|
+
"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value."
|
|
136333
|
+
).option(
|
|
136334
|
+
"--force",
|
|
136335
|
+
"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch."
|
|
136336
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
136337
|
+
).action(async (name, value, cmdOptions, cmd) => {
|
|
136271
136338
|
const options = cmd.optsWithGlobals();
|
|
136272
|
-
const { ctx,
|
|
136339
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
136273
136340
|
await ensureHasConvexDependency(ctx, "env default set");
|
|
136274
|
-
const backend = await resolveDefaultEnvBackend(
|
|
136275
|
-
ctx,
|
|
136276
|
-
deployment2.deploymentFields
|
|
136277
|
-
);
|
|
136278
136341
|
const didAnything = await envSet(ctx, backend, name, value, cmdOptions);
|
|
136279
136342
|
if (didAnything === false) {
|
|
136280
136343
|
cmd.outputHelp({ error: true });
|
|
@@ -136285,46 +136348,122 @@ var envDefaultSet = new Command("set").usage("[options] <name> <value>").argumen
|
|
|
136285
136348
|
});
|
|
136286
136349
|
}
|
|
136287
136350
|
});
|
|
136288
|
-
var envDefaultGet =
|
|
136289
|
-
"Print a default variable's value
|
|
136290
|
-
|
|
136351
|
+
var envDefaultGet = addEnvDefaultOptions(
|
|
136352
|
+
new Command("get").arguments("<name>").summary("Print a default variable's value").description(
|
|
136353
|
+
"Print a default variable's value: `npx convex env default get NAME`\nThe deployment type is determined by the current deployment (local maps to dev), or by --type if provided."
|
|
136354
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
136355
|
+
).action(async (envVarName, _options2, cmd) => {
|
|
136291
136356
|
const options = cmd.optsWithGlobals();
|
|
136292
|
-
const { ctx,
|
|
136357
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
136293
136358
|
await ensureHasConvexDependency(ctx, "env default get");
|
|
136294
|
-
const backend = await resolveDefaultEnvBackend(
|
|
136295
|
-
ctx,
|
|
136296
|
-
deployment2.deploymentFields
|
|
136297
|
-
);
|
|
136298
136359
|
await envGet(ctx, backend, envVarName);
|
|
136299
136360
|
});
|
|
136300
|
-
var envDefaultRemove =
|
|
136301
|
-
"Unset a default variable
|
|
136302
|
-
|
|
136361
|
+
var envDefaultRemove = addEnvDefaultOptions(
|
|
136362
|
+
new Command("remove").alias("rm").alias("unset").arguments("<name>").summary("Unset a default variable").description(
|
|
136363
|
+
"Unset a default variable: `npx convex env default remove NAME`\nIf the variable doesn't exist, the command doesn't do anything and succeeds.\nThe deployment type is determined by the current deployment (local maps to dev), or by --type if provided."
|
|
136364
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
136365
|
+
).action(async (name, _options2, cmd) => {
|
|
136303
136366
|
const options = cmd.optsWithGlobals();
|
|
136304
|
-
const { ctx,
|
|
136367
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
136305
136368
|
await ensureHasConvexDependency(ctx, "env default remove");
|
|
136306
|
-
const backend = await resolveDefaultEnvBackend(
|
|
136307
|
-
ctx,
|
|
136308
|
-
deployment2.deploymentFields
|
|
136309
|
-
);
|
|
136310
136369
|
await envRemove(ctx, backend, name);
|
|
136311
136370
|
});
|
|
136312
|
-
var envDefaultList =
|
|
136313
|
-
"List all default variables
|
|
136314
|
-
|
|
136371
|
+
var envDefaultList = addEnvDefaultOptions(
|
|
136372
|
+
new Command("list").summary("List all default variables").description(
|
|
136373
|
+
"List all default variables: `npx convex env default list`\nThe deployment type is determined by the current deployment (local maps to dev), or by --type if provided."
|
|
136374
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
136375
|
+
).action(async (_options2, cmd) => {
|
|
136315
136376
|
const options = cmd.optsWithGlobals();
|
|
136316
|
-
const { ctx,
|
|
136377
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
136317
136378
|
await ensureHasConvexDependency(ctx, "env default list");
|
|
136318
|
-
const backend = await resolveDefaultEnvBackend(
|
|
136319
|
-
ctx,
|
|
136320
|
-
deployment2.deploymentFields
|
|
136321
|
-
);
|
|
136322
136379
|
await envList(ctx, backend);
|
|
136323
136380
|
});
|
|
136324
136381
|
var envDefault = new Command("default").summary("Manage project-level default environment variables").description(
|
|
136325
|
-
"Manage default environment variables for your project.\n\nThe default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases).\n\n Set a default variable: `npx convex env default set NAME 'value'`\n Unset a default variable: `npx convex env default remove NAME`\n List all default variables: `npx convex env default list`\n Print a default variable's value: `npx convex env default get NAME`\n\n"
|
|
136382
|
+
"Manage default environment variables for your project.\n\nThe default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases), unless --type is provided.\n\n Set a default variable: `npx convex env default set NAME 'value'`\n Unset a default variable: `npx convex env default remove NAME`\n List all default variables: `npx convex env default list`\n Print a default variable's value: `npx convex env default get NAME`\n\n"
|
|
136326
136383
|
).addCommand(envDefaultSet).addCommand(envDefaultGet).addCommand(envDefaultRemove).addCommand(envDefaultList).helpCommand(false);
|
|
136327
|
-
async function
|
|
136384
|
+
async function resolveEnvDefaultBackend(options) {
|
|
136385
|
+
const dtypeOverride = normalizeTypeOption(options.type);
|
|
136386
|
+
if (options.project !== void 0) {
|
|
136387
|
+
const parsedProject = parseProjectOption(options.project);
|
|
136388
|
+
if (parsedProject === null) {
|
|
136389
|
+
const ctx3 = await oneoffContext(options);
|
|
136390
|
+
return await ctx3.crash({
|
|
136391
|
+
exitCode: 1,
|
|
136392
|
+
errorType: "fatal",
|
|
136393
|
+
printedMessage: "error: --project must be `team-slug:project-slug` or `project-slug`."
|
|
136394
|
+
});
|
|
136395
|
+
}
|
|
136396
|
+
if (dtypeOverride === void 0) {
|
|
136397
|
+
const ctx3 = await oneoffContext(options);
|
|
136398
|
+
return await ctx3.crash({
|
|
136399
|
+
exitCode: 1,
|
|
136400
|
+
errorType: "fatal",
|
|
136401
|
+
printedMessage: "error: --project requires --type to also be set."
|
|
136402
|
+
});
|
|
136403
|
+
}
|
|
136404
|
+
let ctx2;
|
|
136405
|
+
let resolved;
|
|
136406
|
+
if (parsedProject.kind === "teamAndProject") {
|
|
136407
|
+
ctx2 = await oneoffContext(options);
|
|
136408
|
+
resolved = {
|
|
136409
|
+
teamSlug: parsedProject.teamSlug,
|
|
136410
|
+
projectSlug: parsedProject.projectSlug
|
|
136411
|
+
};
|
|
136412
|
+
} else {
|
|
136413
|
+
const selected = await selectEnvDeployment(options);
|
|
136414
|
+
ctx2 = selected.ctx;
|
|
136415
|
+
if (selected.deployment.deploymentFields === null) {
|
|
136416
|
+
return await ctx2.crash({
|
|
136417
|
+
exitCode: 1,
|
|
136418
|
+
errorType: "fatal",
|
|
136419
|
+
printedMessage: "error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly."
|
|
136420
|
+
});
|
|
136421
|
+
}
|
|
136422
|
+
const { team } = await fetchTeamAndProject(
|
|
136423
|
+
ctx2,
|
|
136424
|
+
selected.deployment.deploymentFields.deploymentName
|
|
136425
|
+
);
|
|
136426
|
+
resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };
|
|
136427
|
+
}
|
|
136428
|
+
const details = await getProjectDetails(ctx2, {
|
|
136429
|
+
kind: "teamAndProjectSlugs",
|
|
136430
|
+
teamSlug: resolved.teamSlug,
|
|
136431
|
+
projectSlug: resolved.projectSlug
|
|
136432
|
+
});
|
|
136433
|
+
return {
|
|
136434
|
+
ctx: ctx2,
|
|
136435
|
+
backend: defaultEnvBackend(ctx2, details.id, dtypeOverride)
|
|
136436
|
+
};
|
|
136437
|
+
}
|
|
136438
|
+
const { ctx, deployment: deployment2 } = await selectEnvDeployment(options);
|
|
136439
|
+
const backend = await resolveDefaultEnvBackend(
|
|
136440
|
+
ctx,
|
|
136441
|
+
deployment2.deploymentFields,
|
|
136442
|
+
dtypeOverride
|
|
136443
|
+
);
|
|
136444
|
+
return { ctx, backend };
|
|
136445
|
+
}
|
|
136446
|
+
function normalizeTypeOption(type) {
|
|
136447
|
+
if (type === void 0) return void 0;
|
|
136448
|
+
if (type === "development") return "dev";
|
|
136449
|
+
if (type === "production") return "prod";
|
|
136450
|
+
return type;
|
|
136451
|
+
}
|
|
136452
|
+
function parseProjectOption(value) {
|
|
136453
|
+
const parts = value.split(":");
|
|
136454
|
+
if (parts.length === 1 && parts[0].length > 0) {
|
|
136455
|
+
return { kind: "projectOnly", projectSlug: parts[0] };
|
|
136456
|
+
}
|
|
136457
|
+
if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {
|
|
136458
|
+
return {
|
|
136459
|
+
kind: "teamAndProject",
|
|
136460
|
+
teamSlug: parts[0],
|
|
136461
|
+
projectSlug: parts[1]
|
|
136462
|
+
};
|
|
136463
|
+
}
|
|
136464
|
+
return null;
|
|
136465
|
+
}
|
|
136466
|
+
async function resolveDefaultEnvBackend(ctx, deploymentFields, dtypeOverride) {
|
|
136328
136467
|
if (deploymentFields === null) {
|
|
136329
136468
|
return await ctx.crash({
|
|
136330
136469
|
exitCode: 1,
|
|
@@ -136339,7 +136478,7 @@ async function resolveDefaultEnvBackend(ctx, deploymentFields) {
|
|
|
136339
136478
|
printedMessage: "Default environment variables are not available for anonymous deployments."
|
|
136340
136479
|
});
|
|
136341
136480
|
}
|
|
136342
|
-
const dtype = resolveDefaultEnvDtype(deploymentFields.deploymentType);
|
|
136481
|
+
const dtype = dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);
|
|
136343
136482
|
const { projectId } = await fetchTeamAndProject(
|
|
136344
136483
|
ctx,
|
|
136345
136484
|
deploymentFields.deploymentName
|
|
@@ -147385,8 +147524,157 @@ function defaultRef(branch, deploymentType) {
|
|
|
147385
147524
|
return ref;
|
|
147386
147525
|
}
|
|
147387
147526
|
|
|
147527
|
+
// src/cli/deploymentTokenCreate.ts
|
|
147528
|
+
init_source();
|
|
147529
|
+
init_log();
|
|
147530
|
+
init_api3();
|
|
147531
|
+
init_envvars();
|
|
147532
|
+
init_utils5();
|
|
147533
|
+
var deploymentTokenCreate = new Command("create").summary("Create an access token").description(
|
|
147534
|
+
`Creates a deploy key that, when set as ${chalkStderr.bold(CONVEX_DEPLOY_KEY_ENV_VAR_NAME)}, scopes all commands to the target deployment. Defaults to the current deployment if '--deployment' isn't passed
|
|
147535
|
+
|
|
147536
|
+
Print a new deploy key to stdout: \`npx convex deployment token create my-token\`
|
|
147537
|
+
Save a new deploy key in ${ENV_VAR_FILE_PATH}: \`npx convex deployment token create my-token --save-env\`
|
|
147538
|
+
Save a new deploy key in a custom env file: \`npx convex deployment token create ci-token --save-env .env.production\`
|
|
147539
|
+
Create a key for the project's prod: \`npx convex deployment token create ci-token --deployment prod\`
|
|
147540
|
+
`
|
|
147541
|
+
).argument("<name>", "Name for the new deploy key").allowExcessArguments(false).option(
|
|
147542
|
+
"--save-env [path]",
|
|
147543
|
+
`Save the new key as ${CONVEX_DEPLOY_KEY_ENV_VAR_NAME} in an env file instead of printing it. Defaults to ${ENV_VAR_FILE_PATH}.`
|
|
147544
|
+
).addDeploymentSelectionOptions(actionDescription("Create a deploy key for")).showHelpAfterError().action(async (name, options) => {
|
|
147545
|
+
const ctx = await oneoffContext(options);
|
|
147546
|
+
const auth2 = ctx.bigBrainAuth();
|
|
147547
|
+
if (auth2 === null || auth2.kind !== "accessToken") {
|
|
147548
|
+
return await ctx.crash({
|
|
147549
|
+
exitCode: 1,
|
|
147550
|
+
errorType: "fatal",
|
|
147551
|
+
printedMessage: `Creating a deploy key currently requires being logged in with a personal access token. ${process.env[CONVEX_DEPLOY_KEY_ENV_VAR_NAME] ? `Unset ${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}` : `Run ${chalkStderr.bold("npx convex login")}`} and try again.`
|
|
147552
|
+
});
|
|
147553
|
+
}
|
|
147554
|
+
const deploymentSelection = await getDeploymentSelection(ctx, options);
|
|
147555
|
+
const deployment2 = await loadSelectedDeploymentCredentials(
|
|
147556
|
+
ctx,
|
|
147557
|
+
deploymentSelection,
|
|
147558
|
+
{ ensureLocalRunning: false }
|
|
147559
|
+
);
|
|
147560
|
+
if (deployment2.deploymentFields === null) {
|
|
147561
|
+
return await ctx.crash({
|
|
147562
|
+
exitCode: 1,
|
|
147563
|
+
errorType: "fatal",
|
|
147564
|
+
printedMessage: "Cannot create a deploy key for a self-hosted deployment."
|
|
147565
|
+
});
|
|
147566
|
+
}
|
|
147567
|
+
const { deploymentName, deploymentType } = deployment2.deploymentFields;
|
|
147568
|
+
if (deploymentType === "local" || deploymentType === "anonymous") {
|
|
147569
|
+
return await ctx.crash({
|
|
147570
|
+
exitCode: 1,
|
|
147571
|
+
errorType: "fatal",
|
|
147572
|
+
printedMessage: `Cannot create a deploy key for a ${deploymentType} deployment.`
|
|
147573
|
+
});
|
|
147574
|
+
}
|
|
147575
|
+
showSpinner(`Creating deploy key for ${deploymentName}...`);
|
|
147576
|
+
const response = await typedPlatformClient(ctx).POST(
|
|
147577
|
+
"/deployments/{deployment_name}/create_deploy_key",
|
|
147578
|
+
{
|
|
147579
|
+
params: { path: { deployment_name: deploymentName } },
|
|
147580
|
+
body: { name }
|
|
147581
|
+
}
|
|
147582
|
+
);
|
|
147583
|
+
const deployKey = response.data.deployKey;
|
|
147584
|
+
if (options.saveEnv === void 0) {
|
|
147585
|
+
logFinishedStep(`Created deploy key "${name}" for ${deploymentName}.`);
|
|
147586
|
+
logOutput(deployKey);
|
|
147587
|
+
return;
|
|
147588
|
+
}
|
|
147589
|
+
const envFile = typeof options.saveEnv === "string" ? options.saveEnv : ENV_VAR_FILE_PATH;
|
|
147590
|
+
const existingFileContent = ctx.fs.exists(envFile) ? ctx.fs.readUtf8File(envFile) : null;
|
|
147591
|
+
const updatedContent = changedEnvVarFile({
|
|
147592
|
+
existingFileContent,
|
|
147593
|
+
envVarName: CONVEX_DEPLOY_KEY_ENV_VAR_NAME,
|
|
147594
|
+
envVarValue: deployKey,
|
|
147595
|
+
commentAfterValue: null,
|
|
147596
|
+
commentOnPreviousLine: null
|
|
147597
|
+
});
|
|
147598
|
+
if (updatedContent === null) {
|
|
147599
|
+
logFinishedStep(
|
|
147600
|
+
`Deploy key for ${deploymentName} already present in ${envFile}; no changes made.`
|
|
147601
|
+
);
|
|
147602
|
+
return;
|
|
147603
|
+
}
|
|
147604
|
+
ctx.fs.writeUtf8File(envFile, updatedContent);
|
|
147605
|
+
logFinishedStep(
|
|
147606
|
+
`Saved deploy key "${name}" for ${deploymentName} as ${CONVEX_DEPLOY_KEY_ENV_VAR_NAME} in ${envFile}.`
|
|
147607
|
+
);
|
|
147608
|
+
});
|
|
147609
|
+
|
|
147610
|
+
// src/cli/deploymentTokenDelete.ts
|
|
147611
|
+
init_source();
|
|
147612
|
+
init_log();
|
|
147613
|
+
init_api3();
|
|
147614
|
+
init_utils5();
|
|
147615
|
+
var deploymentTokenDelete = new Command("delete").summary("Delete an access token").description(
|
|
147616
|
+
"Delete an access token. Currently only deploy keys (deployment-scoped access tokens) are supported.\n\nThe positional `<nameOrToken>` can be the unique name of the deploy key (as passed to `token create`) or the deploy key value itself. The target deployment defaults to the currently-selected one; pass `--deployment` to target a different deployment.\n\n Delete by name: `npx convex deployment token delete my-token`\n Delete by value: `npx convex deployment token delete 'dev:happy-animal-123|ey...'`\n Target prod: `npx convex deployment token delete ci-token --deployment prod`"
|
|
147617
|
+
).argument(
|
|
147618
|
+
"<nameOrToken>",
|
|
147619
|
+
"The unique name of the deploy key, or the deploy key value itself."
|
|
147620
|
+
).allowExcessArguments(false).addDeploymentSelectionOptions(actionDescription("Delete a deploy key for")).showHelpAfterError().action(async (nameOrToken, options) => {
|
|
147621
|
+
const ctx = await oneoffContext(options);
|
|
147622
|
+
const auth2 = ctx.bigBrainAuth();
|
|
147623
|
+
if (auth2 === null || auth2.kind !== "accessToken") {
|
|
147624
|
+
return await ctx.crash({
|
|
147625
|
+
exitCode: 1,
|
|
147626
|
+
errorType: "fatal",
|
|
147627
|
+
printedMessage: `Deleting a deploy key requires being logged in with a personal access token. ${auth2 === null ? "Run " : `Unset ${CONVEX_DEPLOY_KEY_ENV_VAR_NAME} and run `}${chalkStderr.bold("npx convex login")} and try again.`
|
|
147628
|
+
});
|
|
147629
|
+
}
|
|
147630
|
+
const deploymentSelection = await getDeploymentSelection(ctx, options);
|
|
147631
|
+
const deployment2 = await loadSelectedDeploymentCredentials(
|
|
147632
|
+
ctx,
|
|
147633
|
+
deploymentSelection,
|
|
147634
|
+
{ ensureLocalRunning: false }
|
|
147635
|
+
);
|
|
147636
|
+
if (deployment2.deploymentFields === null) {
|
|
147637
|
+
return await ctx.crash({
|
|
147638
|
+
exitCode: 1,
|
|
147639
|
+
errorType: "fatal",
|
|
147640
|
+
printedMessage: "Cannot delete a deploy key for a self-hosted deployment."
|
|
147641
|
+
});
|
|
147642
|
+
}
|
|
147643
|
+
const { deploymentName, deploymentType } = deployment2.deploymentFields;
|
|
147644
|
+
if (deploymentType === "local" || deploymentType === "anonymous") {
|
|
147645
|
+
return await ctx.crash({
|
|
147646
|
+
exitCode: 1,
|
|
147647
|
+
errorType: "fatal",
|
|
147648
|
+
printedMessage: `Cannot delete a deploy key for a ${deploymentType} deployment.`
|
|
147649
|
+
});
|
|
147650
|
+
}
|
|
147651
|
+
if (/^(dev|prod|preview|local):[^|]*$/.test(nameOrToken)) {
|
|
147652
|
+
return await ctx.crash({
|
|
147653
|
+
exitCode: 1,
|
|
147654
|
+
errorType: "fatal",
|
|
147655
|
+
printedMessage: `"${nameOrToken}" looks like a partial deploy key \u2014 your shell likely consumed the \`|\` and everything after it. Wrap the value in single quotes (e.g. ${chalkStderr.bold(`npx convex deployment token delete '${nameOrToken}|...'`)}) and try again.`
|
|
147656
|
+
});
|
|
147657
|
+
}
|
|
147658
|
+
const pipeIdx = nameOrToken.indexOf("|");
|
|
147659
|
+
const id = pipeIdx >= 0 ? nameOrToken.slice(pipeIdx + 1) : nameOrToken;
|
|
147660
|
+
showSpinner(`Deleting deploy key for ${deploymentName}...`);
|
|
147661
|
+
await typedPlatformClient(ctx).POST(
|
|
147662
|
+
"/deployments/{deployment_name}/delete_deploy_key",
|
|
147663
|
+
{
|
|
147664
|
+
params: { path: { deployment_name: deploymentName } },
|
|
147665
|
+
body: { id }
|
|
147666
|
+
}
|
|
147667
|
+
);
|
|
147668
|
+
logFinishedStep(`Deleted deploy key for ${deploymentName}.`);
|
|
147669
|
+
});
|
|
147670
|
+
|
|
147671
|
+
// src/cli/deploymentToken.ts
|
|
147672
|
+
var deploymentToken = new Command("token").summary("Manage access tokens").description(
|
|
147673
|
+
"Create and delete access tokens. Currently supports deploy keys."
|
|
147674
|
+
).addCommand(deploymentTokenCreate).addCommand(deploymentTokenDelete);
|
|
147675
|
+
|
|
147388
147676
|
// src/cli/deployment.ts
|
|
147389
|
-
var deployment = new Command("deployment").summary("Manage deployments").description("Manage deployments in your project.").addCommand(deploymentSelect).addCommand(deploymentCreate);
|
|
147677
|
+
var deployment = new Command("deployment").summary("Manage deployments").description("Manage deployments in your project.").addCommand(deploymentSelect).addCommand(deploymentCreate).addCommand(deploymentToken);
|
|
147390
147678
|
|
|
147391
147679
|
// src/cli/aiFiles.ts
|
|
147392
147680
|
var import_path34 = __toESM(require("path"), 1);
|