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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
import { Command } from "@commander-js/extra-typings";
|
|
2
|
+
import { Command, Option } from "@commander-js/extra-typings";
|
|
3
3
|
import {
|
|
4
4
|
envGet,
|
|
5
5
|
envList,
|
|
@@ -11,23 +11,36 @@ import { defaultEnvBackend } from "./lib/defaultEnv.js";
|
|
|
11
11
|
import {
|
|
12
12
|
fetchTeamAndProject
|
|
13
13
|
} from "./lib/api.js";
|
|
14
|
+
import { oneoffContext } from "../bundler/context.js";
|
|
14
15
|
import { selectEnvDeployment } from "./env.js";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
).
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
import { getProjectDetails } from "./lib/deploymentSelection.js";
|
|
17
|
+
function addEnvDefaultOptions(cmd) {
|
|
18
|
+
return cmd.addOption(
|
|
19
|
+
new Option(
|
|
20
|
+
"--type <type>",
|
|
21
|
+
"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment."
|
|
22
|
+
)
|
|
23
|
+
).addOption(
|
|
24
|
+
new Option(
|
|
25
|
+
"--project <project>",
|
|
26
|
+
"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type."
|
|
27
|
+
)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
const envDefaultSet = addEnvDefaultOptions(
|
|
31
|
+
new Command("set").usage("[options] <name> <value>").arguments("[name] [value]").summary("Set a default variable").description(
|
|
32
|
+
"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"
|
|
33
|
+
).option(
|
|
34
|
+
"--from-file <file>",
|
|
35
|
+
"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value."
|
|
36
|
+
).option(
|
|
37
|
+
"--force",
|
|
38
|
+
"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch."
|
|
39
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
40
|
+
).action(async (name, value, cmdOptions, cmd) => {
|
|
24
41
|
const options = cmd.optsWithGlobals();
|
|
25
|
-
const { ctx,
|
|
42
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
26
43
|
await ensureHasConvexDependency(ctx, "env default set");
|
|
27
|
-
const backend = await resolveDefaultEnvBackend(
|
|
28
|
-
ctx,
|
|
29
|
-
deployment.deploymentFields
|
|
30
|
-
);
|
|
31
44
|
const didAnything = await envSet(ctx, backend, name, value, cmdOptions);
|
|
32
45
|
if (didAnything === false) {
|
|
33
46
|
cmd.outputHelp({ error: true });
|
|
@@ -38,46 +51,122 @@ const envDefaultSet = new Command("set").usage("[options] <name> <value>").argum
|
|
|
38
51
|
});
|
|
39
52
|
}
|
|
40
53
|
});
|
|
41
|
-
const envDefaultGet =
|
|
42
|
-
"Print a default variable's value
|
|
43
|
-
|
|
54
|
+
const envDefaultGet = addEnvDefaultOptions(
|
|
55
|
+
new Command("get").arguments("<name>").summary("Print a default variable's value").description(
|
|
56
|
+
"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."
|
|
57
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
58
|
+
).action(async (envVarName, _options, cmd) => {
|
|
44
59
|
const options = cmd.optsWithGlobals();
|
|
45
|
-
const { ctx,
|
|
60
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
46
61
|
await ensureHasConvexDependency(ctx, "env default get");
|
|
47
|
-
const backend = await resolveDefaultEnvBackend(
|
|
48
|
-
ctx,
|
|
49
|
-
deployment.deploymentFields
|
|
50
|
-
);
|
|
51
62
|
await envGet(ctx, backend, envVarName);
|
|
52
63
|
});
|
|
53
|
-
const envDefaultRemove =
|
|
54
|
-
"Unset a default variable
|
|
55
|
-
|
|
64
|
+
const envDefaultRemove = addEnvDefaultOptions(
|
|
65
|
+
new Command("remove").alias("rm").alias("unset").arguments("<name>").summary("Unset a default variable").description(
|
|
66
|
+
"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."
|
|
67
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
68
|
+
).action(async (name, _options, cmd) => {
|
|
56
69
|
const options = cmd.optsWithGlobals();
|
|
57
|
-
const { ctx,
|
|
70
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
58
71
|
await ensureHasConvexDependency(ctx, "env default remove");
|
|
59
|
-
const backend = await resolveDefaultEnvBackend(
|
|
60
|
-
ctx,
|
|
61
|
-
deployment.deploymentFields
|
|
62
|
-
);
|
|
63
72
|
await envRemove(ctx, backend, name);
|
|
64
73
|
});
|
|
65
|
-
const envDefaultList =
|
|
66
|
-
"List all default variables
|
|
67
|
-
|
|
74
|
+
const envDefaultList = addEnvDefaultOptions(
|
|
75
|
+
new Command("list").summary("List all default variables").description(
|
|
76
|
+
"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."
|
|
77
|
+
).configureHelp({ showGlobalOptions: true }).allowExcessArguments(false)
|
|
78
|
+
).action(async (_options, cmd) => {
|
|
68
79
|
const options = cmd.optsWithGlobals();
|
|
69
|
-
const { ctx,
|
|
80
|
+
const { ctx, backend } = await resolveEnvDefaultBackend(options);
|
|
70
81
|
await ensureHasConvexDependency(ctx, "env default list");
|
|
71
|
-
const backend = await resolveDefaultEnvBackend(
|
|
72
|
-
ctx,
|
|
73
|
-
deployment.deploymentFields
|
|
74
|
-
);
|
|
75
82
|
await envList(ctx, backend);
|
|
76
83
|
});
|
|
77
84
|
export const envDefault = new Command("default").summary("Manage project-level default environment variables").description(
|
|
78
|
-
"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"
|
|
85
|
+
"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"
|
|
79
86
|
).addCommand(envDefaultSet).addCommand(envDefaultGet).addCommand(envDefaultRemove).addCommand(envDefaultList).helpCommand(false);
|
|
80
|
-
|
|
87
|
+
async function resolveEnvDefaultBackend(options) {
|
|
88
|
+
const dtypeOverride = normalizeTypeOption(options.type);
|
|
89
|
+
if (options.project !== void 0) {
|
|
90
|
+
const parsedProject = parseProjectOption(options.project);
|
|
91
|
+
if (parsedProject === null) {
|
|
92
|
+
const ctx3 = await oneoffContext(options);
|
|
93
|
+
return await ctx3.crash({
|
|
94
|
+
exitCode: 1,
|
|
95
|
+
errorType: "fatal",
|
|
96
|
+
printedMessage: "error: --project must be `team-slug:project-slug` or `project-slug`."
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (dtypeOverride === void 0) {
|
|
100
|
+
const ctx3 = await oneoffContext(options);
|
|
101
|
+
return await ctx3.crash({
|
|
102
|
+
exitCode: 1,
|
|
103
|
+
errorType: "fatal",
|
|
104
|
+
printedMessage: "error: --project requires --type to also be set."
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
let ctx2;
|
|
108
|
+
let resolved;
|
|
109
|
+
if (parsedProject.kind === "teamAndProject") {
|
|
110
|
+
ctx2 = await oneoffContext(options);
|
|
111
|
+
resolved = {
|
|
112
|
+
teamSlug: parsedProject.teamSlug,
|
|
113
|
+
projectSlug: parsedProject.projectSlug
|
|
114
|
+
};
|
|
115
|
+
} else {
|
|
116
|
+
const selected = await selectEnvDeployment(options);
|
|
117
|
+
ctx2 = selected.ctx;
|
|
118
|
+
if (selected.deployment.deploymentFields === null) {
|
|
119
|
+
return await ctx2.crash({
|
|
120
|
+
exitCode: 1,
|
|
121
|
+
errorType: "fatal",
|
|
122
|
+
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."
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const { team } = await fetchTeamAndProject(
|
|
126
|
+
ctx2,
|
|
127
|
+
selected.deployment.deploymentFields.deploymentName
|
|
128
|
+
);
|
|
129
|
+
resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };
|
|
130
|
+
}
|
|
131
|
+
const details = await getProjectDetails(ctx2, {
|
|
132
|
+
kind: "teamAndProjectSlugs",
|
|
133
|
+
teamSlug: resolved.teamSlug,
|
|
134
|
+
projectSlug: resolved.projectSlug
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
ctx: ctx2,
|
|
138
|
+
backend: defaultEnvBackend(ctx2, details.id, dtypeOverride)
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const { ctx, deployment } = await selectEnvDeployment(options);
|
|
142
|
+
const backend = await resolveDefaultEnvBackend(
|
|
143
|
+
ctx,
|
|
144
|
+
deployment.deploymentFields,
|
|
145
|
+
dtypeOverride
|
|
146
|
+
);
|
|
147
|
+
return { ctx, backend };
|
|
148
|
+
}
|
|
149
|
+
function normalizeTypeOption(type) {
|
|
150
|
+
if (type === void 0) return void 0;
|
|
151
|
+
if (type === "development") return "dev";
|
|
152
|
+
if (type === "production") return "prod";
|
|
153
|
+
return type;
|
|
154
|
+
}
|
|
155
|
+
function parseProjectOption(value) {
|
|
156
|
+
const parts = value.split(":");
|
|
157
|
+
if (parts.length === 1 && parts[0].length > 0) {
|
|
158
|
+
return { kind: "projectOnly", projectSlug: parts[0] };
|
|
159
|
+
}
|
|
160
|
+
if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {
|
|
161
|
+
return {
|
|
162
|
+
kind: "teamAndProject",
|
|
163
|
+
teamSlug: parts[0],
|
|
164
|
+
projectSlug: parts[1]
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
export async function resolveDefaultEnvBackend(ctx, deploymentFields, dtypeOverride) {
|
|
81
170
|
if (deploymentFields === null) {
|
|
82
171
|
return await ctx.crash({
|
|
83
172
|
exitCode: 1,
|
|
@@ -92,7 +181,7 @@ export async function resolveDefaultEnvBackend(ctx, deploymentFields) {
|
|
|
92
181
|
printedMessage: "Default environment variables are not available for anonymous deployments."
|
|
93
182
|
});
|
|
94
183
|
}
|
|
95
|
-
const dtype = resolveDefaultEnvDtype(deploymentFields.deploymentType);
|
|
184
|
+
const dtype = dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);
|
|
96
185
|
const { projectId } = await fetchTeamAndProject(
|
|
97
186
|
ctx,
|
|
98
187
|
deploymentFields.deploymentName
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/cli/envDefault.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\n\nconst envDefaultSet = new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .arguments(\"[name] [value]\")\n .summary(\"Set a default variable\")\n .description(\n \"Set default environment variables for your project's deployment type.\\n\\n\" +\n \" npx convex env default set NAME 'value'\\n\" +\n \" npx convex env default set NAME # omit a value to set one interactively\\n\" +\n \" npx convex env default set NAME --from-file value.txt\\n\" +\n \" npx convex env default set --from-file .env.defaults\\n\" +\n \"When setting multiple values, it will refuse all changes if any \" +\n \"variables are already set to different values by default. \" +\n \"Pass --force to overwrite the provided values.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev).\\n\",\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n );\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n });\n\nconst envDefaultGet = new Command(\"get\")\n .arguments(\"<name>\")\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev).\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n );\n await envGet(ctx, backend, envVarName);\n });\n\nconst envDefaultRemove = new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .arguments(\"<name>\")\n .summary(\"Unset a default variable\")\n .description(\n \"Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev).\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n );\n await envRemove(ctx, backend, name);\n });\n\nconst envDefaultList = new Command(\"list\")\n .summary(\"List all default variables\")\n .description(\n \"List all default variables: `npx convex env default list`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev).\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false)\n .action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions;\n const { ctx, deployment } = await selectEnvDeployment(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n );\n await envList(ctx, backend);\n });\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n \"Manage default environment variables for your project.\\n\\n\" +\n \"The 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\" +\n \" Set a default variable: `npx convex env default set NAME 'value'`\\n\" +\n \" Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \" List all default variables: `npx convex env default list`\\n\" +\n \" Print a default variable's value: `npx convex env default get NAME`\\n\\n\",\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype = resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\nimport { getProjectDetails } from \"./lib/deploymentSelection.js\";\n\ntype EnvDefaultExtraOptions = {\n type?: string;\n project?: string;\n};\n\nfunction addEnvDefaultOptions<T extends Command<any, any>>(cmd: T): T {\n return cmd\n .addOption(\n new Option(\n \"--type <type>\",\n \"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--project <project>\",\n \"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type.\",\n ),\n ) as T;\n}\n\nconst envDefaultSet = addEnvDefaultOptions(\n new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .arguments(\"[name] [value]\")\n .summary(\"Set a default variable\")\n .description(\n \"Set default environment variables for your project's deployment type.\\n\\n\" +\n \" npx convex env default set NAME 'value'\\n\" +\n \" npx convex env default set NAME # omit a value to set one interactively\\n\" +\n \" npx convex env default set NAME --from-file value.txt\\n\" +\n \" npx convex env default set --from-file .env.defaults\\n\" +\n \"When setting multiple values, it will refuse all changes if any \" +\n \"variables are already set to different values by default. \" +\n \"Pass --force to overwrite the provided values.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\\n\",\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n});\n\nconst envDefaultGet = addEnvDefaultOptions(\n new Command(\"get\")\n .arguments(\"<name>\")\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n await envGet(ctx, backend, envVarName);\n});\n\nconst envDefaultRemove = addEnvDefaultOptions(\n new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .arguments(\"<name>\")\n .summary(\"Unset a default variable\")\n .description(\n \"Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n await envRemove(ctx, backend, name);\n});\n\nconst envDefaultList = addEnvDefaultOptions(\n new Command(\"list\")\n .summary(\"List all default variables\")\n .description(\n \"List all default variables: `npx convex env default list`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n await envList(ctx, backend);\n});\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n \"Manage default environment variables for your project.\\n\\n\" +\n \"The 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\" +\n \" Set a default variable: `npx convex env default set NAME 'value'`\\n\" +\n \" Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \" List all default variables: `npx convex env default list`\\n\" +\n \" Print a default variable's value: `npx convex env default get NAME`\\n\\n\",\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\ntype ParsedProjectOption =\n | { kind: \"teamAndProject\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectOnly\"; projectSlug: string };\n\nasync function resolveEnvDefaultBackend(\n options: DeploymentSelectionOptions & EnvDefaultExtraOptions,\n): Promise<{ ctx: Context; backend: EnvVarBackend }> {\n const dtypeOverride = normalizeTypeOption(options.type);\n\n if (options.project !== undefined) {\n const parsedProject = parseProjectOption(options.project);\n if (parsedProject === null) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project must be `team-slug:project-slug` or `project-slug`.\",\n });\n }\n if (dtypeOverride === undefined) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: --project requires --type to also be set.\",\n });\n }\n\n let ctx: Context;\n let resolved: { teamSlug: string; projectSlug: string };\n if (parsedProject.kind === \"teamAndProject\") {\n ctx = await oneoffContext(options);\n resolved = {\n teamSlug: parsedProject.teamSlug,\n projectSlug: parsedProject.projectSlug,\n };\n } else {\n const selected = await selectEnvDeployment(options);\n ctx = selected.ctx;\n if (selected.deployment.deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly.\",\n });\n }\n const { team } = await fetchTeamAndProject(\n ctx,\n selected.deployment.deploymentFields.deploymentName,\n );\n resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };\n }\n\n const details = await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: resolved.teamSlug,\n projectSlug: resolved.projectSlug,\n });\n return {\n ctx,\n backend: defaultEnvBackend(ctx, details.id, dtypeOverride),\n };\n }\n\n const { ctx, deployment } = await selectEnvDeployment(options);\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n dtypeOverride,\n );\n return { ctx, backend };\n}\n\nfunction normalizeTypeOption(\n type: string | undefined,\n): CloudDeploymentType | undefined {\n if (type === undefined) return undefined;\n if (type === \"development\") return \"dev\";\n if (type === \"production\") return \"prod\";\n return type as CloudDeploymentType;\n}\n\nfunction parseProjectOption(value: string): ParsedProjectOption | null {\n const parts = value.split(\":\");\n if (parts.length === 1 && parts[0].length > 0) {\n return { kind: \"projectOnly\", projectSlug: parts[0] };\n }\n if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {\n return {\n kind: \"teamAndProject\",\n teamSlug: parts[0],\n projectSlug: parts[1],\n };\n }\n return null;\n}\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n dtypeOverride?: CloudDeploymentType,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype =\n dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,SAAS,cAAc;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,iCAAiC;AAC1C,SAAS,yBAAyB;AAClC;AAAA,EAIE;AAAA,OACK;AACP,SAAkB,qBAAqB;AACvC,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAOlC,SAAS,qBAAkD,KAAW;AACpE,SAAO,IACJ;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACJ;AAEA,MAAM,gBAAgB;AAAA,EACpB,IAAI,QAAQ,KAAK,EACd,MAAM,0BAA0B,EAChC,UAAU,gBAAgB,EAC1B,QAAQ,wBAAwB,EAChC;AAAA,IACC;AAAA,EASF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,MAAM,OAAO,YAAY,QAAQ;AAC/C,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,QAAM,0BAA0B,KAAK,iBAAiB;AACtD,QAAM,cAAc,MAAM,OAAO,KAAK,SAAS,MAAM,OAAO,UAAU;AACtE,MAAI,gBAAgB,OAAO;AACzB,QAAI,WAAW,EAAE,OAAO,KAAK,CAAC;AAC9B,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AACF,CAAC;AAED,MAAM,gBAAgB;AAAA,EACpB,IAAI,QAAQ,KAAK,EACd,UAAU,QAAQ,EAClB,QAAQ,kCAAkC,EAC1C;AAAA,IACC;AAAA,EAEF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,YAAY,UAAU,QAAQ;AAC5C,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,QAAM,0BAA0B,KAAK,iBAAiB;AACtD,QAAM,OAAO,KAAK,SAAS,UAAU;AACvC,CAAC;AAED,MAAM,mBAAmB;AAAA,EACvB,IAAI,QAAQ,QAAQ,EACjB,MAAM,IAAI,EACV,MAAM,OAAO,EACb,UAAU,QAAQ,EAClB,QAAQ,0BAA0B,EAClC;AAAA,IACC;AAAA,EAGF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,MAAM,UAAU,QAAQ;AACtC,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,QAAM,0BAA0B,KAAK,oBAAoB;AACzD,QAAM,UAAU,KAAK,SAAS,IAAI;AACpC,CAAC;AAED,MAAM,iBAAiB;AAAA,EACrB,IAAI,QAAQ,MAAM,EACf,QAAQ,4BAA4B,EACpC;AAAA,IACC;AAAA,EAEF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,UAAU,QAAQ;AAChC,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,QAAM,0BAA0B,KAAK,kBAAkB;AACvD,QAAM,QAAQ,KAAK,OAAO;AAC5B,CAAC;AAEM,aAAM,aAAa,IAAI,QAAQ,SAAS,EAC5C,QAAQ,oDAAoD,EAC5D;AAAA,EACC;AAMF,EACC,WAAW,aAAa,EACxB,WAAW,aAAa,EACxB,WAAW,gBAAgB,EAC3B,WAAW,cAAc,EACzB,YAAY,KAAK;AAMpB,eAAe,yBACb,SACmD;AACnD,QAAM,gBAAgB,oBAAoB,QAAQ,IAAI;AAEtD,MAAI,QAAQ,YAAY,QAAW;AACjC,UAAM,gBAAgB,mBAAmB,QAAQ,OAAO;AACxD,QAAI,kBAAkB,MAAM;AAC1B,YAAMA,OAAM,MAAM,cAAc,OAAO;AACvC,aAAO,MAAMA,KAAI,MAAM;AAAA,QACrB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,gBACE;AAAA,MACJ,CAAC;AAAA,IACH;AACA,QAAI,kBAAkB,QAAW;AAC/B,YAAMA,OAAM,MAAM,cAAc,OAAO;AACvC,aAAO,MAAMA,KAAI,MAAM;AAAA,QACrB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,QAAIA;AACJ,QAAI;AACJ,QAAI,cAAc,SAAS,kBAAkB;AAC3C,MAAAA,OAAM,MAAM,cAAc,OAAO;AACjC,iBAAW;AAAA,QACT,UAAU,cAAc;AAAA,QACxB,aAAa,cAAc;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,YAAM,WAAW,MAAM,oBAAoB,OAAO;AAClD,MAAAA,OAAM,SAAS;AACf,UAAI,SAAS,WAAW,qBAAqB,MAAM;AACjD,eAAO,MAAMA,KAAI,MAAM;AAAA,UACrB,UAAU;AAAA,UACV,WAAW;AAAA,UACX,gBACE;AAAA,QACJ,CAAC;AAAA,MACH;AACA,YAAM,EAAE,KAAK,IAAI,MAAM;AAAA,QACrBA;AAAA,QACA,SAAS,WAAW,iBAAiB;AAAA,MACvC;AACA,iBAAW,EAAE,UAAU,MAAM,aAAa,cAAc,YAAY;AAAA,IACtE;AAEA,UAAM,UAAU,MAAM,kBAAkBA,MAAK;AAAA,MAC3C,MAAM;AAAA,MACN,UAAU,SAAS;AAAA,MACnB,aAAa,SAAS;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,MACL,KAAAA;AAAA,MACA,SAAS,kBAAkBA,MAAK,QAAQ,IAAI,aAAa;AAAA,IAC3D;AAAA,EACF;AAEA,QAAM,EAAE,KAAK,WAAW,IAAI,MAAM,oBAAoB,OAAO;AAC7D,QAAM,UAAU,MAAM;AAAA,IACpB;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF;AACA,SAAO,EAAE,KAAK,QAAQ;AACxB;AAEA,SAAS,oBACP,MACiC;AACjC,MAAI,SAAS,OAAW,QAAO;AAC/B,MAAI,SAAS,cAAe,QAAO;AACnC,MAAI,SAAS,aAAc,QAAO;AAClC,SAAO;AACT;AAEA,SAAS,mBAAmB,OAA2C;AACrE,QAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,MAAI,MAAM,WAAW,KAAK,MAAM,CAAC,EAAE,SAAS,GAAG;AAC7C,WAAO,EAAE,MAAM,eAAe,aAAa,MAAM,CAAC,EAAE;AAAA,EACtD;AACA,MAAI,MAAM,WAAW,KAAK,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC,EAAE,SAAS,GAAG;AACpE,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,MAAM,CAAC;AAAA,MACjB,aAAa,MAAM,CAAC;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AACT;AAEA,sBAAsB,yBACpB,KACA,kBAIA,eACwB;AACxB,MAAI,qBAAqB,MAAM;AAC7B,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBACE;AAAA,IACJ,CAAC;AAAA,EACH;AACA,MAAI,iBAAiB,mBAAmB,aAAa;AACnD,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBACE;AAAA,IACJ,CAAC;AAAA,EACH;AACA,QAAM,QACJ,iBAAiB,uBAAuB,iBAAiB,cAAc;AACzE,QAAM,EAAE,UAAU,IAAI,MAAM;AAAA,IAC1B;AAAA,IACA,iBAAiB;AAAA,EACnB;AACA,SAAO,kBAAkB,KAAK,WAAW,KAAK;AAChD;AAEA,SAAS,uBACP,gBACqB;AACrB,MAAI,mBAAmB,QAAS,QAAO;AACvC,SAAO;AACT;",
|
|
6
|
+
"names": ["ctx"]
|
|
7
7
|
}
|
|
@@ -44,7 +44,7 @@ Command.prototype.addDeploymentSelectionOptions = function(action, options) {
|
|
|
44
44
|
).addOption(
|
|
45
45
|
new Option(
|
|
46
46
|
"--deployment <deployment>",
|
|
47
|
-
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`."
|
|
47
|
+
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`."
|
|
48
48
|
).conflicts(["--prod", "--preview-name", "--deployment-name", "--url"])
|
|
49
49
|
).addOption(
|
|
50
50
|
new Option(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/cli/lib/command.ts"],
|
|
4
|
-
"sourcesContent": ["import { Command, Option, OptionValues } from \"@commander-js/extra-typings\";\nimport { OneoffCtx } from \"../../bundler/context.js\";\nimport { LogMode } from \"./logs.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n parseInteger,\n parsePositiveInteger,\n} from \"./utils/utils.js\";\nimport { INLINE_QUERY_DESCRIPTION } from \"./runTestFunction.js\";\n\ndeclare module \"@commander-js/extra-typings\" {\n interface Command<Args extends any[] = [], Opts extends OptionValues = {}> {\n /**\n * For a command that talks to the configured dev deployment by default,\n * add flags for talking to prod, preview, or other deployment in the same\n * project.\n *\n * These flags are added to the end of `command` (ordering matters for `--help`\n * output). `action` should look like \"Import data into\" because it is prefixed\n * onto help strings.\n *\n * The options can be passed to `deploymentSelectionFromOptions`.\n *\n * NOTE: This method only exists at runtime if this file is imported.\n * To help avoid this bug, this method takes in an `ActionDescription` which\n * can only be constructed via `actionDescription` from this file.\n *\n * @param action - The action description\n * @param options - Optional settings\n * @param options.showUrlHelp - If true, show the --url option in help output\n */\n addDeploymentSelectionOptions(\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n ): Command<\n Args,\n Opts & {\n envFile?: string;\n url?: string;\n adminKey?: string;\n prod?: boolean;\n previewName?: string;\n deploymentName?: string;\n deployment?: string;\n }\n >;\n\n /**\n * Adds options for the `deploy` command.\n */\n addDeployOptions(): Command<\n Args,\n Opts & {\n verbose?: boolean;\n dryRun?: boolean;\n yes?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string;\n cmdUrlEnvVarName?: string;\n debugBundlePath?: string;\n debug?: boolean;\n writePushRequest?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for `self-host` subcommands.\n */\n addSelfHostOptions(): Command<\n Args,\n Opts & {\n url?: string;\n adminKey?: string;\n env?: string;\n }\n >;\n\n /**\n * Adds options and arguments for the `run` command.\n */\n addRunOptions(): Command<\n [...Args, string | undefined, string | undefined],\n Opts & {\n watch?: boolean;\n push?: boolean;\n identity?: string;\n inlineQuery?: string;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n component?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for the `import` command.\n */\n addImportOptions(): Command<\n [...Args, string],\n Opts & {\n table?: string;\n format?: \"csv\" | \"jsonLines\" | \"jsonArray\" | \"zip\";\n replace?: boolean;\n append?: boolean;\n replaceAll?: boolean;\n yes?: boolean;\n component?: string;\n }\n >;\n\n /**\n * Adds options for the `export` command.\n */\n addExportOptions(): Command<\n Args,\n Opts & {\n path: string;\n includeFileStorage?: boolean;\n }\n >;\n\n /**\n * Adds options for the `data` command.\n */\n addDataOptions(): Command<\n [...Args, string | undefined],\n Opts & {\n limit: number;\n order: \"asc\" | \"desc\";\n component?: string;\n format?: \"json\" | \"jsonArray\" | \"jsonLines\" | \"jsonl\" | \"pretty\";\n }\n >;\n\n /**\n * Adds options for the `logs` command.\n */\n addLogsOptions(): Command<\n Args,\n Opts & {\n history: number;\n success: boolean;\n jsonl: boolean;\n }\n >;\n\n /**\n * Adds options for the `network-test` command.\n */\n addNetworkTestOptions(): Command<\n Args,\n Opts & {\n timeout?: string;\n ipFamily?: string;\n speedTest?: boolean;\n }\n >;\n }\n}\n\nCommand.prototype.addDeploymentSelectionOptions = function (\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n) {\n const urlOption = new Option(\n \"--url <url>\",\n options?.showUrlHelp\n ? action + \" the deployment at the given URL.\"\n : undefined,\n ).conflicts([\n \"--prod\",\n \"--preview-name\",\n \"--deployment-name\",\n \"--deployment\",\n ]);\n if (!options?.showUrlHelp) {\n urlOption.hideHelp();\n }\n return this.addOption(urlOption)\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(\n new Option(\n \"--prod\",\n action + \" this project's default production deployment.\",\n ).conflicts([\n \"--preview-name\",\n \"--deployment-name\",\n \"--url\",\n \"--deployment\",\n ]),\n )\n .addOption(\n new Option(\n \"--preview-name <previewName>\",\n action + \" the preview deployment with the given name.\",\n )\n .conflicts([\"--prod\", \"--deployment-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment-name <deploymentName>\",\n action + \" the specified deployment.\",\n )\n .conflicts([\"--prod\", \"--preview-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment <deployment>\",\n action +\n \" a specific deployment. Accepts:\\n\" +\n \"\u2022 a deployment name (e.g. joyful-capybara-123)\" +\n \"\u2022 a deployment reference (e.g. dev/james, staging)\\n\" +\n \"\u2022 `dev` (for your personal dev deployment)\\n\" +\n \"\u2022 `prod` (for your project\u2019s default production deployment)\\n\" +\n \"\u2022 `local` (for your local dev deployment).\" +\n \"\\nYou can also select deployments in other projects with `project-slug:reference` or `team-slug:project-slug:reference`.\",\n ).conflicts([\"--prod\", \"--preview-name\", \"--deployment-name\", \"--url\"]),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ).hideHelp(),\n ) as any;\n};\n\ndeclare const tag: unique symbol;\ntype ActionDescription = string & { readonly [tag]: \"noop\" };\nexport function actionDescription(action: string): ActionDescription {\n return action as any;\n}\n\nexport async function normalizeDevOptions(\n ctx: OneoffCtx,\n cmdOptions: {\n verbose?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents?: boolean;\n codegen: \"enable\" | \"disable\";\n once?: boolean;\n untilSuccess: boolean;\n start?: string;\n runSh?: string;\n run?: string | undefined;\n runComponent?: string;\n tailLogs?: string | true;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis?: boolean;\n liveComponentSources?: boolean;\n pushAllModules?: boolean;\n while?: string;\n },\n): Promise<{\n verbose: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: boolean;\n once: boolean;\n untilSuccess: boolean;\n run?:\n | { kind: \"function\"; name: string; component?: string | undefined }\n | { kind: \"shell\"; command: string }\n | undefined;\n tailLogs: LogMode;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis: boolean;\n liveComponentSources: boolean;\n pushAllModules: boolean;\n}> {\n if (cmdOptions.runComponent && !cmdOptions.run) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Can't specify `--run-component` option without `--run`\",\n });\n }\n\n if (cmdOptions.debugBundlePath !== undefined && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-bundle-path` can only be used with `--once`.\",\n });\n }\n if (cmdOptions.debugNodeApis && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-node-apis` can only be used with `--once`.\",\n });\n }\n\n return {\n verbose: !!cmdOptions.verbose,\n typecheck: cmdOptions.typecheck,\n typecheckComponents: !!cmdOptions.typecheckComponents,\n codegen: cmdOptions.codegen === \"enable\",\n once: !!cmdOptions.once,\n untilSuccess: cmdOptions.untilSuccess,\n run:\n cmdOptions.run !== undefined\n ? {\n kind: \"function\",\n name: cmdOptions.run,\n component: cmdOptions.runComponent,\n }\n : (cmdOptions.start ?? cmdOptions.runSh) !== undefined\n ? {\n kind: \"shell\",\n command: (cmdOptions.start ?? cmdOptions.runSh)!,\n }\n : undefined,\n tailLogs:\n typeof cmdOptions.tailLogs === \"string\"\n ? (cmdOptions.tailLogs as LogMode)\n : \"pause-on-deploy\",\n traceEvents: cmdOptions.traceEvents,\n debugBundlePath: cmdOptions.debugBundlePath,\n debugNodeApis: !!cmdOptions.debugNodeApis,\n liveComponentSources: !!cmdOptions.liveComponentSources,\n pushAllModules: !!cmdOptions.pushAllModules,\n };\n}\n\nCommand.prototype.addDeployOptions = function () {\n return this.option(\"-v, --verbose\", \"Show full listing of changes\")\n .option(\n \"--dry-run\",\n \"Print out the generated configuration without deploying to your Convex deployment\",\n )\n .addOption(\n new Option(\n \"-y, --yes\",\n \"Skip confirmation prompt when running interactively. Warning: this deploys to PRODUCTION. To deploy to your current dev environment, run npx convex dev --once\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\` before deploying.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Whether to regenerate code in `convex/_generated/` before pushing.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--cmd <command>\",\n \"Command to run as part of deploying your app (e.g. `vite build`). This command can depend on the environment variables specified in `--cmd-url-env-var-name` being set.\",\n ),\n )\n .addOption(\n new Option(\n \"--cmd-url-env-var-name <name>\",\n \"Environment variable name to set Convex deployment URL (e.g. `VITE_CONVEX_URL`) when using `--cmd`\",\n ),\n )\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug\").hideHelp())\n .addOption(new Option(\"--write-push-request <writePushRequest>\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n );\n};\n\nCommand.prototype.addSelfHostOptions = function () {\n return this.option(\n \"--admin-key <adminKey>\",\n `An admin key for the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--url <url>\",\n `The url of the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--env <env>\",\n `Path to a custom file of environment variables, containing \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` and \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\`.`,\n );\n};\n\nCommand.prototype.addRunOptions = function () {\n return (\n this.argument(\n \"[functionName]\",\n \"identifier of the function to run, like `listMessages` or `dir/file:myFunction`\",\n )\n .argument(\n \"[args]\",\n \"JSON-formatted arguments object to pass to the function.\",\n )\n .option(\n \"-w, --watch\",\n \"Watch a query, printing its result if the underlying data changes. Given function must be a query.\",\n )\n .addOption(\n new Option(\n \"--inline-query <query>\",\n INLINE_QUERY_DESCRIPTION,\n ).conflicts(\"--watch\"),\n )\n .option(\"--push\", \"Push code to deployment before running the function.\")\n .addOption(\n new Option(\n \"--identity <identity>\",\n 'JSON-formatted UserIdentity object, e.g. \\'{ name: \"John\", address: \"0x123\" }\\'',\n ),\n )\n // For backwards compatibility we still support --no-push which is a noop\n .addOption(new Option(\"--no-push\").hideHelp())\n // Options for the deploy that --push does\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Regenerate code in `convex/_generated/`\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n );\n};\n\nCommand.prototype.addImportOptions = function () {\n return this.argument(\"<path>\", \"Path to the input file\")\n .addOption(\n new Option(\n \"--table <table>\",\n \"Destination table name. Required if format is csv, jsonLines, or jsonArray. Not supported if format is zip.\",\n ),\n )\n .addOption(\n new Option(\n \"--replace\",\n \"Replace all existing data in any of the imported tables\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace-all\"),\n )\n .addOption(\n new Option(\"--append\", \"Append imported data to any existing tables\")\n .conflicts(\"--replace-all\")\n .conflicts(\"--replace\"),\n )\n .addOption(\n new Option(\n \"--replace-all\",\n \"Replace all existing data in the deployment with the imported tables,\\n\" +\n \" deleting tables that don't appear in the import file or the schema,\\n\" +\n \" and clearing tables that appear in the schema but not in the import file\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace\"),\n )\n .option(\n \"-y, --yes\",\n \"Skip confirmation prompt when import leads to deleting existing documents\",\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Input file format. This flag is only required if the filename is missing an extension.\\n\" +\n \"- CSV files must have a header, and each row's entries are interpreted either as a (floating point) number or a string.\\n\" +\n \"- JSON files must be an array of JSON objects.\\n\" +\n \"- JSONLines files must have a JSON object per line.\\n\" +\n \"- ZIP files must have one directory per table, containing <table>/documents.jsonl. Snapshot exports from the Convex dashboard have this format.\",\n ).choices([\"csv\", \"jsonLines\", \"jsonArray\", \"zip\"]),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n );\n};\n\nCommand.prototype.addExportOptions = function () {\n return this.requiredOption(\n \"--path <zipFilePath>\",\n \"Exports data into a ZIP file at this path, which may be a directory or unoccupied .zip path\",\n ).addOption(\n new Option(\n \"--include-file-storage\",\n \"Includes stored files (https://dashboard.convex.dev/deployment/files) in a _storage folder within the ZIP file\",\n ),\n );\n};\n\nCommand.prototype.addDataOptions = function () {\n return this.addOption(\n new Option(\n \"--limit <n>\",\n \"List only the `n` the most recently created documents.\",\n )\n .default(100)\n .argParser(parsePositiveInteger),\n )\n .addOption(\n new Option(\n \"--order <choice>\",\n \"Order the documents by their `_creationTime`.\",\n )\n .choices([\"asc\", \"desc\"])\n .default(\"desc\"),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Format to print the data in. This flag is only required if the filename is missing an extension.\\n\" +\n \"- jsonArray (aka json): print the data as a JSON array of objects.\\n\" +\n \"- jsonLines (aka jsonl): print the data as a JSON object per line.\\n\" +\n \"- pretty: print the data in a human-readable format.\",\n ).choices([\"jsonArray\", \"json\", \"jsonLines\", \"jsonl\", \"pretty\"]),\n )\n .argument(\"[table]\", \"If specified, list documents in this table.\");\n};\n\nCommand.prototype.addLogsOptions = function () {\n return this.option(\n \"--history [n]\",\n \"Show `n` most recent logs. Defaults to showing all available logs.\",\n parseInteger,\n )\n .option(\n \"--success\",\n \"Print a log line for every successful function execution\",\n false,\n )\n .option(\"--jsonl\", \"Output raw log events as JSONL\", false);\n};\n\nCommand.prototype.addNetworkTestOptions = function () {\n return this.addOption(\n new Option(\n \"--timeout <timeout>\",\n \"Timeout in seconds for the network test (default: 30).\",\n ),\n )\n .addOption(\n new Option(\n \"--ip-family <ipFamily>\",\n \"IP family to use (ipv4, ipv6, or auto)\",\n ),\n )\n .addOption(\n new Option(\n \"--speed-test\",\n \"Perform a large echo test to measure network speed.\",\n ),\n );\n};\n"],
|
|
4
|
+
"sourcesContent": ["import { Command, Option, OptionValues } from \"@commander-js/extra-typings\";\nimport { OneoffCtx } from \"../../bundler/context.js\";\nimport { LogMode } from \"./logs.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n parseInteger,\n parsePositiveInteger,\n} from \"./utils/utils.js\";\nimport { INLINE_QUERY_DESCRIPTION } from \"./runTestFunction.js\";\n\ndeclare module \"@commander-js/extra-typings\" {\n interface Command<Args extends any[] = [], Opts extends OptionValues = {}> {\n /**\n * For a command that talks to the configured dev deployment by default,\n * add flags for talking to prod, preview, or other deployment in the same\n * project.\n *\n * These flags are added to the end of `command` (ordering matters for `--help`\n * output). `action` should look like \"Import data into\" because it is prefixed\n * onto help strings.\n *\n * The options can be passed to `deploymentSelectionFromOptions`.\n *\n * NOTE: This method only exists at runtime if this file is imported.\n * To help avoid this bug, this method takes in an `ActionDescription` which\n * can only be constructed via `actionDescription` from this file.\n *\n * @param action - The action description\n * @param options - Optional settings\n * @param options.showUrlHelp - If true, show the --url option in help output\n */\n addDeploymentSelectionOptions(\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n ): Command<\n Args,\n Opts & {\n envFile?: string;\n url?: string;\n adminKey?: string;\n prod?: boolean;\n previewName?: string;\n deploymentName?: string;\n deployment?: string;\n }\n >;\n\n /**\n * Adds options for the `deploy` command.\n */\n addDeployOptions(): Command<\n Args,\n Opts & {\n verbose?: boolean;\n dryRun?: boolean;\n yes?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string;\n cmdUrlEnvVarName?: string;\n debugBundlePath?: string;\n debug?: boolean;\n writePushRequest?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for `self-host` subcommands.\n */\n addSelfHostOptions(): Command<\n Args,\n Opts & {\n url?: string;\n adminKey?: string;\n env?: string;\n }\n >;\n\n /**\n * Adds options and arguments for the `run` command.\n */\n addRunOptions(): Command<\n [...Args, string | undefined, string | undefined],\n Opts & {\n watch?: boolean;\n push?: boolean;\n identity?: string;\n inlineQuery?: string;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n component?: string;\n liveComponentSources?: boolean;\n }\n >;\n\n /**\n * Adds options for the `import` command.\n */\n addImportOptions(): Command<\n [...Args, string],\n Opts & {\n table?: string;\n format?: \"csv\" | \"jsonLines\" | \"jsonArray\" | \"zip\";\n replace?: boolean;\n append?: boolean;\n replaceAll?: boolean;\n yes?: boolean;\n component?: string;\n }\n >;\n\n /**\n * Adds options for the `export` command.\n */\n addExportOptions(): Command<\n Args,\n Opts & {\n path: string;\n includeFileStorage?: boolean;\n }\n >;\n\n /**\n * Adds options for the `data` command.\n */\n addDataOptions(): Command<\n [...Args, string | undefined],\n Opts & {\n limit: number;\n order: \"asc\" | \"desc\";\n component?: string;\n format?: \"json\" | \"jsonArray\" | \"jsonLines\" | \"jsonl\" | \"pretty\";\n }\n >;\n\n /**\n * Adds options for the `logs` command.\n */\n addLogsOptions(): Command<\n Args,\n Opts & {\n history: number;\n success: boolean;\n jsonl: boolean;\n }\n >;\n\n /**\n * Adds options for the `network-test` command.\n */\n addNetworkTestOptions(): Command<\n Args,\n Opts & {\n timeout?: string;\n ipFamily?: string;\n speedTest?: boolean;\n }\n >;\n }\n}\n\nCommand.prototype.addDeploymentSelectionOptions = function (\n action: ActionDescription,\n options?: { showUrlHelp?: boolean },\n) {\n const urlOption = new Option(\n \"--url <url>\",\n options?.showUrlHelp\n ? action + \" the deployment at the given URL.\"\n : undefined,\n ).conflicts([\n \"--prod\",\n \"--preview-name\",\n \"--deployment-name\",\n \"--deployment\",\n ]);\n if (!options?.showUrlHelp) {\n urlOption.hideHelp();\n }\n return this.addOption(urlOption)\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(\n new Option(\n \"--prod\",\n action + \" this project's default production deployment.\",\n ).conflicts([\n \"--preview-name\",\n \"--deployment-name\",\n \"--url\",\n \"--deployment\",\n ]),\n )\n .addOption(\n new Option(\n \"--preview-name <previewName>\",\n action + \" the preview deployment with the given name.\",\n )\n .conflicts([\"--prod\", \"--deployment-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment-name <deploymentName>\",\n action + \" the specified deployment.\",\n )\n .conflicts([\"--prod\", \"--preview-name\", \"--url\", \"--deployment\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--deployment <deployment>\",\n action +\n \" a specific deployment. Accepts:\\n\" +\n \"\u2022 a deployment name (e.g. joyful-capybara-123)\\n\" +\n \"\u2022 a deployment reference (e.g. dev/james, staging)\\n\" +\n \"\u2022 `dev` (for your personal dev deployment)\\n\" +\n \"\u2022 `prod` (for your project\u2019s default production deployment)\\n\" +\n \"\u2022 `local` (for your local dev deployment).\" +\n \"\\nYou can also select deployments in other projects with `project-slug:reference` or `team-slug:project-slug:reference`.\",\n ).conflicts([\"--prod\", \"--preview-name\", \"--deployment-name\", \"--url\"]),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ).hideHelp(),\n ) as any;\n};\n\ndeclare const tag: unique symbol;\ntype ActionDescription = string & { readonly [tag]: \"noop\" };\nexport function actionDescription(action: string): ActionDescription {\n return action as any;\n}\n\nexport async function normalizeDevOptions(\n ctx: OneoffCtx,\n cmdOptions: {\n verbose?: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents?: boolean;\n codegen: \"enable\" | \"disable\";\n once?: boolean;\n untilSuccess: boolean;\n start?: string;\n runSh?: string;\n run?: string | undefined;\n runComponent?: string;\n tailLogs?: string | true;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis?: boolean;\n liveComponentSources?: boolean;\n pushAllModules?: boolean;\n while?: string;\n },\n): Promise<{\n verbose: boolean;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: boolean;\n once: boolean;\n untilSuccess: boolean;\n run?:\n | { kind: \"function\"; name: string; component?: string | undefined }\n | { kind: \"shell\"; command: string }\n | undefined;\n tailLogs: LogMode;\n traceEvents: boolean;\n debugBundlePath?: string | undefined;\n debugNodeApis: boolean;\n liveComponentSources: boolean;\n pushAllModules: boolean;\n}> {\n if (cmdOptions.runComponent && !cmdOptions.run) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Can't specify `--run-component` option without `--run`\",\n });\n }\n\n if (cmdOptions.debugBundlePath !== undefined && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-bundle-path` can only be used with `--once`.\",\n });\n }\n if (cmdOptions.debugNodeApis && !cmdOptions.once) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"`--debug-node-apis` can only be used with `--once`.\",\n });\n }\n\n return {\n verbose: !!cmdOptions.verbose,\n typecheck: cmdOptions.typecheck,\n typecheckComponents: !!cmdOptions.typecheckComponents,\n codegen: cmdOptions.codegen === \"enable\",\n once: !!cmdOptions.once,\n untilSuccess: cmdOptions.untilSuccess,\n run:\n cmdOptions.run !== undefined\n ? {\n kind: \"function\",\n name: cmdOptions.run,\n component: cmdOptions.runComponent,\n }\n : (cmdOptions.start ?? cmdOptions.runSh) !== undefined\n ? {\n kind: \"shell\",\n command: (cmdOptions.start ?? cmdOptions.runSh)!,\n }\n : undefined,\n tailLogs:\n typeof cmdOptions.tailLogs === \"string\"\n ? (cmdOptions.tailLogs as LogMode)\n : \"pause-on-deploy\",\n traceEvents: cmdOptions.traceEvents,\n debugBundlePath: cmdOptions.debugBundlePath,\n debugNodeApis: !!cmdOptions.debugNodeApis,\n liveComponentSources: !!cmdOptions.liveComponentSources,\n pushAllModules: !!cmdOptions.pushAllModules,\n };\n}\n\nCommand.prototype.addDeployOptions = function () {\n return this.option(\"-v, --verbose\", \"Show full listing of changes\")\n .option(\n \"--dry-run\",\n \"Print out the generated configuration without deploying to your Convex deployment\",\n )\n .addOption(\n new Option(\n \"-y, --yes\",\n \"Skip confirmation prompt when running interactively. Warning: this deploys to PRODUCTION. To deploy to your current dev environment, run npx convex dev --once\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\` before deploying.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Whether to regenerate code in `convex/_generated/` before pushing.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--cmd <command>\",\n \"Command to run as part of deploying your app (e.g. `vite build`). This command can depend on the environment variables specified in `--cmd-url-env-var-name` being set.\",\n ),\n )\n .addOption(\n new Option(\n \"--cmd-url-env-var-name <name>\",\n \"Environment variable name to set Convex deployment URL (e.g. `VITE_CONVEX_URL`) when using `--cmd`\",\n ),\n )\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug\").hideHelp())\n .addOption(new Option(\"--write-push-request <writePushRequest>\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n );\n};\n\nCommand.prototype.addSelfHostOptions = function () {\n return this.option(\n \"--admin-key <adminKey>\",\n `An admin key for the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--url <url>\",\n `The url of the deployment. Can alternatively be set as \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` environment variable.`,\n )\n .option(\n \"--env <env>\",\n `Path to a custom file of environment variables, containing \\`${CONVEX_SELF_HOSTED_URL_VAR_NAME}\\` and \\`${CONVEX_SELF_HOSTED_ADMIN_KEY_VAR_NAME}\\`.`,\n );\n};\n\nCommand.prototype.addRunOptions = function () {\n return (\n this.argument(\n \"[functionName]\",\n \"identifier of the function to run, like `listMessages` or `dir/file:myFunction`\",\n )\n .argument(\n \"[args]\",\n \"JSON-formatted arguments object to pass to the function.\",\n )\n .option(\n \"-w, --watch\",\n \"Watch a query, printing its result if the underlying data changes. Given function must be a query.\",\n )\n .addOption(\n new Option(\n \"--inline-query <query>\",\n INLINE_QUERY_DESCRIPTION,\n ).conflicts(\"--watch\"),\n )\n .option(\"--push\", \"Push code to deployment before running the function.\")\n .addOption(\n new Option(\n \"--identity <identity>\",\n 'JSON-formatted UserIdentity object, e.g. \\'{ name: \"John\", address: \"0x123\" }\\'',\n ),\n )\n // For backwards compatibility we still support --no-push which is a noop\n .addOption(new Option(\"--no-push\").hideHelp())\n // Options for the deploy that --push does\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Whether to check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\n \"--codegen <mode>\",\n \"Regenerate code in `convex/_generated/`\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n );\n};\n\nCommand.prototype.addImportOptions = function () {\n return this.argument(\"<path>\", \"Path to the input file\")\n .addOption(\n new Option(\n \"--table <table>\",\n \"Destination table name. Required if format is csv, jsonLines, or jsonArray. Not supported if format is zip.\",\n ),\n )\n .addOption(\n new Option(\n \"--replace\",\n \"Replace all existing data in any of the imported tables\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace-all\"),\n )\n .addOption(\n new Option(\"--append\", \"Append imported data to any existing tables\")\n .conflicts(\"--replace-all\")\n .conflicts(\"--replace\"),\n )\n .addOption(\n new Option(\n \"--replace-all\",\n \"Replace all existing data in the deployment with the imported tables,\\n\" +\n \" deleting tables that don't appear in the import file or the schema,\\n\" +\n \" and clearing tables that appear in the schema but not in the import file\",\n )\n .conflicts(\"--append\")\n .conflicts(\"--replace\"),\n )\n .option(\n \"-y, --yes\",\n \"Skip confirmation prompt when import leads to deleting existing documents\",\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Input file format. This flag is only required if the filename is missing an extension.\\n\" +\n \"- CSV files must have a header, and each row's entries are interpreted either as a (floating point) number or a string.\\n\" +\n \"- JSON files must be an array of JSON objects.\\n\" +\n \"- JSONLines files must have a JSON object per line.\\n\" +\n \"- ZIP files must have one directory per table, containing <table>/documents.jsonl. Snapshot exports from the Convex dashboard have this format.\",\n ).choices([\"csv\", \"jsonLines\", \"jsonArray\", \"zip\"]),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n );\n};\n\nCommand.prototype.addExportOptions = function () {\n return this.requiredOption(\n \"--path <zipFilePath>\",\n \"Exports data into a ZIP file at this path, which may be a directory or unoccupied .zip path\",\n ).addOption(\n new Option(\n \"--include-file-storage\",\n \"Includes stored files (https://dashboard.convex.dev/deployment/files) in a _storage folder within the ZIP file\",\n ),\n );\n};\n\nCommand.prototype.addDataOptions = function () {\n return this.addOption(\n new Option(\n \"--limit <n>\",\n \"List only the `n` the most recently created documents.\",\n )\n .default(100)\n .argParser(parsePositiveInteger),\n )\n .addOption(\n new Option(\n \"--order <choice>\",\n \"Order the documents by their `_creationTime`.\",\n )\n .choices([\"asc\", \"desc\"])\n .default(\"desc\"),\n )\n .addOption(\n new Option(\n \"--component <path>\",\n \"Path to the component in the component tree defined in convex.config.ts.\",\n ),\n )\n .addOption(\n new Option(\n \"--format <format>\",\n \"Format to print the data in. This flag is only required if the filename is missing an extension.\\n\" +\n \"- jsonArray (aka json): print the data as a JSON array of objects.\\n\" +\n \"- jsonLines (aka jsonl): print the data as a JSON object per line.\\n\" +\n \"- pretty: print the data in a human-readable format.\",\n ).choices([\"jsonArray\", \"json\", \"jsonLines\", \"jsonl\", \"pretty\"]),\n )\n .argument(\"[table]\", \"If specified, list documents in this table.\");\n};\n\nCommand.prototype.addLogsOptions = function () {\n return this.option(\n \"--history [n]\",\n \"Show `n` most recent logs. Defaults to showing all available logs.\",\n parseInteger,\n )\n .option(\n \"--success\",\n \"Print a log line for every successful function execution\",\n false,\n )\n .option(\"--jsonl\", \"Output raw log events as JSONL\", false);\n};\n\nCommand.prototype.addNetworkTestOptions = function () {\n return this.addOption(\n new Option(\n \"--timeout <timeout>\",\n \"Timeout in seconds for the network test (default: 30).\",\n ),\n )\n .addOption(\n new Option(\n \"--ip-family <ipFamily>\",\n \"IP family to use (ipv4, ipv6, or auto)\",\n ),\n )\n .addOption(\n new Option(\n \"--speed-test\",\n \"Perform a large echo test to measure network speed.\",\n ),\n );\n};\n"],
|
|
5
5
|
"mappings": ";AAAA,SAAS,SAAS,cAA4B;AAG9C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gCAAgC;AA4JzC,QAAQ,UAAU,gCAAgC,SAChD,QACA,SACA;AACA,QAAM,YAAY,IAAI;AAAA,IACpB;AAAA,IACA,SAAS,cACL,SAAS,sCACT;AAAA,EACN,EAAE,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,MAAI,CAAC,SAAS,aAAa;AACzB,cAAU,SAAS;AAAA,EACrB;AACA,SAAO,KAAK,UAAU,SAAS,EAC5B,UAAU,IAAI,OAAO,wBAAwB,EAAE,SAAS,CAAC,EACzD;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA,SAAS;AAAA,IACX,EAAE,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA,SAAS;AAAA,IACX,EACG,UAAU,CAAC,UAAU,qBAAqB,SAAS,cAAc,CAAC,EAClE,SAAS;AAAA,EACd,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA,SAAS;AAAA,IACX,EACG,UAAU,CAAC,UAAU,kBAAkB,SAAS,cAAc,CAAC,EAC/D,SAAS;AAAA,EACd,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA,SACE;AAAA,IAOJ,EAAE,UAAU,CAAC,UAAU,kBAAkB,qBAAqB,OAAO,CAAC;AAAA,EACxE,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA,qFACW,8BAA8B,OAAO,+BAA+B;AAAA,IAEjF,EAAE,SAAS;AAAA,EACb;AACJ;AAIO,gBAAS,kBAAkB,QAAmC;AACnE,SAAO;AACT;AAEA,sBAAsB,oBACpB,KACA,YAoCC;AACD,MAAI,WAAW,gBAAgB,CAAC,WAAW,KAAK;AAC9C,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,MAAI,WAAW,oBAAoB,UAAa,CAAC,WAAW,MAAM;AAChE,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AACA,MAAI,WAAW,iBAAiB,CAAC,WAAW,MAAM;AAChD,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,SAAS,CAAC,CAAC,WAAW;AAAA,IACtB,WAAW,WAAW;AAAA,IACtB,qBAAqB,CAAC,CAAC,WAAW;AAAA,IAClC,SAAS,WAAW,YAAY;AAAA,IAChC,MAAM,CAAC,CAAC,WAAW;AAAA,IACnB,cAAc,WAAW;AAAA,IACzB,KACE,WAAW,QAAQ,SACf;AAAA,MACE,MAAM;AAAA,MACN,MAAM,WAAW;AAAA,MACjB,WAAW,WAAW;AAAA,IACxB,KACC,WAAW,SAAS,WAAW,WAAW,SACzC;AAAA,MACE,MAAM;AAAA,MACN,SAAU,WAAW,SAAS,WAAW;AAAA,IAC3C,IACA;AAAA,IACR,UACE,OAAO,WAAW,aAAa,WAC1B,WAAW,WACZ;AAAA,IACN,aAAa,WAAW;AAAA,IACxB,iBAAiB,WAAW;AAAA,IAC5B,eAAe,CAAC,CAAC,WAAW;AAAA,IAC5B,sBAAsB,CAAC,CAAC,WAAW;AAAA,IACnC,gBAAgB,CAAC,CAAC,WAAW;AAAA,EAC/B;AACF;AAEA,QAAQ,UAAU,mBAAmB,WAAY;AAC/C,SAAO,KAAK,OAAO,iBAAiB,8BAA8B,EAC/D;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,SAAS;AAAA,EACb,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,OAAO,SAAS,CAAU,EAC7C,QAAQ,KAAc;AAAA,EAC3B,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,SAAS,CAAU,EACtC,QAAQ,QAAiB;AAAA,EAC9B,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,UAAU,IAAI,OAAO,4BAA4B,EAAE,SAAS,CAAC,EAC7D,UAAU,IAAI,OAAO,SAAS,EAAE,SAAS,CAAC,EAC1C,UAAU,IAAI,OAAO,yCAAyC,EAAE,SAAS,CAAC,EAC1E,UAAU,IAAI,OAAO,0BAA0B,EAAE,SAAS,CAAC,EAC3D;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,KAAK,EACb,SAAS;AAAA,EACd;AACJ;AAEA,QAAQ,UAAU,qBAAqB,WAAY;AACjD,SAAO,KAAK;AAAA,IACV;AAAA,IACA,kEAAkE,qCAAqC;AAAA,EACzG,EACG;AAAA,IACC;AAAA,IACA,4DAA4D,+BAA+B;AAAA,EAC7F,EACC;AAAA,IACC;AAAA,IACA,gEAAgE,+BAA+B,YAAY,qCAAqC;AAAA,EAClJ;AACJ;AAEA,QAAQ,UAAU,gBAAgB,WAAY;AAC5C,SACE,KAAK;AAAA,IACH;AAAA,IACA;AAAA,EACF,EACG;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EAAE,UAAU,SAAS;AAAA,EACvB,EACC,OAAO,UAAU,sDAAsD,EACvE;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EAEC,UAAU,IAAI,OAAO,WAAW,EAAE,SAAS,CAAC,EAE5C;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,OAAO,SAAS,CAAU,EAC7C,QAAQ,KAAc;AAAA,EAC3B,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,UAAU,SAAS,CAAU,EACtC,QAAQ,QAAiB;AAAA,EAC9B,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC,UAAU,IAAI,OAAO,0BAA0B,EAAE,SAAS,CAAC;AAElE;AAEA,QAAQ,UAAU,mBAAmB,WAAY;AAC/C,SAAO,KAAK,SAAS,UAAU,wBAAwB,EACpD;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,UAAU,UAAU,EACpB,UAAU,eAAe;AAAA,EAC9B,EACC;AAAA,IACC,IAAI,OAAO,YAAY,6CAA6C,EACjE,UAAU,eAAe,EACzB,UAAU,WAAW;AAAA,EAC1B,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IAGF,EACG,UAAU,UAAU,EACpB,UAAU,WAAW;AAAA,EAC1B,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IAKF,EAAE,QAAQ,CAAC,OAAO,aAAa,aAAa,KAAK,CAAC;AAAA,EACpD,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACJ;AAEA,QAAQ,UAAU,mBAAmB,WAAY;AAC/C,SAAO,KAAK;AAAA,IACV;AAAA,IACA;AAAA,EACF,EAAE;AAAA,IACA,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,QAAQ,UAAU,iBAAiB,WAAY;AAC7C,SAAO,KAAK;AAAA,IACV,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,GAAG,EACX,UAAU,oBAAoB;AAAA,EACnC,EACG;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF,EACG,QAAQ,CAAC,OAAO,MAAM,CAAC,EACvB,QAAQ,MAAM;AAAA,EACnB,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IAIF,EAAE,QAAQ,CAAC,aAAa,QAAQ,aAAa,SAAS,QAAQ,CAAC;AAAA,EACjE,EACC,SAAS,WAAW,6CAA6C;AACtE;AAEA,QAAQ,UAAU,iBAAiB,WAAY;AAC7C,SAAO,KAAK;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACG;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,WAAW,kCAAkC,KAAK;AAC9D;AAEA,QAAQ,UAAU,wBAAwB,WAAY;AACpD,SAAO,KAAK;AAAA,IACV,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACG;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { errors, custom } from "openid-client";
|
|
3
3
|
import {
|
|
4
4
|
bigBrainAPI,
|
|
5
|
+
bigBrainFetch,
|
|
5
6
|
logAndHandleFetchError,
|
|
6
7
|
throwingFetch,
|
|
7
8
|
isWebContainer
|
|
@@ -302,6 +303,57 @@ export async function performLogin(ctx, {
|
|
|
302
303
|
printedMessage: null
|
|
303
304
|
});
|
|
304
305
|
}
|
|
306
|
+
if (vercel) {
|
|
307
|
+
await promptJoinVercelTeams(ctx);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
async function promptJoinVercelTeams(ctx) {
|
|
311
|
+
const fetch2 = bigBrainFetch(ctx);
|
|
312
|
+
let teams;
|
|
313
|
+
try {
|
|
314
|
+
const res = await fetch2(
|
|
315
|
+
new URL("vercel/potential_teams", `${provisionHost}/`)
|
|
316
|
+
);
|
|
317
|
+
if (!res.ok) {
|
|
318
|
+
logVerbose(
|
|
319
|
+
`vercel/potential_teams returned ${res.status}; skipping team-join prompt`
|
|
320
|
+
);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
teams = await res.json();
|
|
324
|
+
} catch (err) {
|
|
325
|
+
logVerbose(`Failed to fetch potential Vercel teams: ${String(err)}`);
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
if (teams.length === 0) return;
|
|
329
|
+
for (const [index, team] of teams.entries()) {
|
|
330
|
+
const displayName = team.teamName.replace(/ \(Vercel\)$/, "");
|
|
331
|
+
const counter = teams.length > 1 ? `[${index + 1}/${teams.length}] ` : "";
|
|
332
|
+
const lines = [
|
|
333
|
+
chalkStderr.bold(`${counter}You've been invited to join ${displayName}`) + ` (${team.planName}) through the Vercel marketplace.`
|
|
334
|
+
];
|
|
335
|
+
if (team.pricingNotice) {
|
|
336
|
+
lines.push(chalkStderr.yellow(team.pricingNotice));
|
|
337
|
+
}
|
|
338
|
+
lines.push(`Join "${displayName}"?`);
|
|
339
|
+
const join = await promptYesNo(ctx, {
|
|
340
|
+
message: `${lines.join("\n")}`,
|
|
341
|
+
default: true
|
|
342
|
+
});
|
|
343
|
+
if (!join) continue;
|
|
344
|
+
try {
|
|
345
|
+
await fetch2(
|
|
346
|
+
new URL(
|
|
347
|
+
`vercel/potential_teams/${team.teamId}/join`,
|
|
348
|
+
`${provisionHost}/`
|
|
349
|
+
),
|
|
350
|
+
{ method: "POST" }
|
|
351
|
+
);
|
|
352
|
+
logFinishedStep(`Joined ${displayName}`);
|
|
353
|
+
} catch (err) {
|
|
354
|
+
logFailure(`Failed to join ${displayName}: ${String(err)}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
305
357
|
}
|
|
306
358
|
async function optins(ctx, acceptOptIns) {
|
|
307
359
|
const bbAuth = ctx.bigBrainAuth();
|