run402 1.69.7 → 1.70.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.
Files changed (34) hide show
  1. package/README.md +1 -0
  2. package/lib/deploy-v2.mjs +35 -12
  3. package/lib/secrets.mjs +75 -12
  4. package/lib/tier.mjs +5 -2
  5. package/package.json +1 -1
  6. package/sdk/dist/namespaces/auth.d.ts.map +1 -1
  7. package/sdk/dist/namespaces/auth.js +60 -6
  8. package/sdk/dist/namespaces/auth.js.map +1 -1
  9. package/sdk/dist/namespaces/billing.d.ts.map +1 -1
  10. package/sdk/dist/namespaces/billing.js +42 -14
  11. package/sdk/dist/namespaces/billing.js.map +1 -1
  12. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  13. package/sdk/dist/namespaces/deploy.js +452 -12
  14. package/sdk/dist/namespaces/deploy.js.map +1 -1
  15. package/sdk/dist/namespaces/deploy.types.d.ts +11 -0
  16. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  17. package/sdk/dist/namespaces/deploy.types.js.map +1 -1
  18. package/sdk/dist/namespaces/email.d.ts.map +1 -1
  19. package/sdk/dist/namespaces/email.js +55 -12
  20. package/sdk/dist/namespaces/email.js.map +1 -1
  21. package/sdk/dist/namespaces/projects.d.ts.map +1 -1
  22. package/sdk/dist/namespaces/projects.js +7 -2
  23. package/sdk/dist/namespaces/projects.js.map +1 -1
  24. package/sdk/dist/namespaces/tier.d.ts +16 -0
  25. package/sdk/dist/namespaces/tier.d.ts.map +1 -1
  26. package/sdk/dist/namespaces/tier.js.map +1 -1
  27. package/sdk/dist/node/deploy-manifest.d.ts +2 -0
  28. package/sdk/dist/node/deploy-manifest.d.ts.map +1 -1
  29. package/sdk/dist/node/deploy-manifest.js +24 -1
  30. package/sdk/dist/node/deploy-manifest.js.map +1 -1
  31. package/sdk/dist/validation.d.ts +6 -3
  32. package/sdk/dist/validation.d.ts.map +1 -1
  33. package/sdk/dist/validation.js +30 -0
  34. package/sdk/dist/validation.js.map +1 -1
package/README.md CHANGED
@@ -136,6 +136,7 @@ import { db, adminDb, getUser, email, ai } from "@run402/functions";
136
136
 
137
137
  ```bash
138
138
  run402 secrets set <id> OPENAI_API_KEY --file ./.secrets/openai-key
139
+ printf %s "$OPENAI_API_KEY" | run402 secrets set <id> OPENAI_API_KEY --stdin
139
140
  run402 secrets list <id>
140
141
  run402 deploy apply --manifest run402.deploy.json # manifest uses secrets.require, not values
141
142
  ```
package/lib/deploy-v2.mjs CHANGED
@@ -37,8 +37,8 @@ import { normalizeArgv } from "./argparse.mjs";
37
37
  const APPLY_HELP = `run402 deploy apply — Unified deploy primitive (v1.34+)
38
38
 
39
39
  Usage:
40
- run402 deploy apply --manifest <path> [--project <id>] [--quiet] [--allow-warnings]
41
- run402 deploy apply --spec '<json>' [--project <id>] [--quiet] [--allow-warnings]
40
+ run402 deploy apply --manifest <path> [--project <id>] [--quiet|--final-only] [--allow-warning <code>] [--allow-warnings]
41
+ run402 deploy apply --spec '<json>' [--project <id>] [--quiet|--final-only] [--allow-warning <code>] [--allow-warnings]
42
42
  cat spec.json | run402 deploy apply [--project <id>]
43
43
 
44
44
  Manifest format mirrors the MCP \`deploy\` tool's ReleaseSpec:
@@ -80,14 +80,17 @@ Options:
80
80
  --spec '<json>' Inline JSON spec (single-quote in shell)
81
81
  --project <id> Override project_id from the manifest
82
82
  --quiet Suppress per-event JSON-line stderr (final result still on stdout)
83
+ --final-only Alias for --quiet; final success/error envelope is still preserved
84
+ --allow-warning <code> Continue past this reviewed warning code (repeatable)
83
85
  --allow-warnings Continue past plan warnings that require confirmation
84
86
 
85
87
  Output:
86
88
  stdout: { "status": "ok", "release_id": "rel_...", "operation_id": "op_...", "urls": {...}, "warnings": [...] }
87
- stderr: one JSON event per line (suppressed with --quiet)
89
+ stderr: one JSON event per line (suppressed with --quiet or --final-only)
88
90
 
89
91
  Secrets:
90
92
  Secret values do not belong in deploy manifests. Set them first:
93
+ printf %s "$OPENAI_API_KEY" | run402 secrets set prj_... OPENAI_API_KEY --stdin
91
94
  run402 secrets set prj_... OPENAI_API_KEY --file ./.secrets/openai-key
92
95
  Then deploy a value-free declaration:
93
96
  { "project_id": "prj_...", "secrets": { "require": ["OPENAI_API_KEY"] } }
@@ -284,8 +287,8 @@ function makeStderrEventWriter(quiet) {
284
287
  }
285
288
 
286
289
  function parseApplyArgs(args) {
287
- const opts = { manifest: null, spec: null, project: null, quiet: false, allowWarnings: false };
288
- const allowedFlags = ["--manifest", "--spec", "--project", "--quiet", "--allow-warnings", "--help", "-h"];
290
+ const opts = { manifest: null, spec: null, project: null, quiet: false, allowWarnings: false, allowWarningCodes: [] };
291
+ const allowedFlags = ["--manifest", "--spec", "--project", "--quiet", "--final-only", "--allow-warning", "--allow-warnings", "--help", "-h"];
289
292
 
290
293
  for (let i = 0; i < args.length; i++) {
291
294
  const arg = args[i];
@@ -293,7 +296,7 @@ function parseApplyArgs(args) {
293
296
  console.log(APPLY_HELP);
294
297
  process.exit(0);
295
298
  }
296
- if (arg === "--manifest" || arg === "--spec" || arg === "--project") {
299
+ if (arg === "--manifest" || arg === "--spec" || arg === "--project" || arg === "--allow-warning") {
297
300
  const value = args[i + 1];
298
301
  if (value === undefined || (typeof value === "string" && value.startsWith("--"))) {
299
302
  fail({
@@ -320,13 +323,15 @@ function parseApplyArgs(args) {
320
323
  });
321
324
  }
322
325
  opts.spec = value;
323
- } else {
326
+ } else if (arg === "--project") {
324
327
  opts.project = value;
328
+ } else {
329
+ opts.allowWarningCodes.push(value);
325
330
  }
326
331
  i += 1;
327
332
  continue;
328
333
  }
329
- if (arg === "--quiet") { opts.quiet = true; continue; }
334
+ if (arg === "--quiet" || arg === "--final-only") { opts.quiet = true; continue; }
330
335
  if (arg === "--allow-warnings") { opts.allowWarnings = true; continue; }
331
336
  if (typeof arg === "string" && arg.startsWith("-")) {
332
337
  fail({
@@ -491,6 +496,7 @@ async function applyCmd(args) {
491
496
  onEvent: makeStderrEventWriter(opts.quiet),
492
497
  idempotencyKey,
493
498
  allowWarnings: opts.allowWarnings,
499
+ allowWarningCodes: opts.allowWarningCodes,
494
500
  });
495
501
  console.log(JSON.stringify({ status: "ok", ...result }, null, 2));
496
502
  } catch (err) {
@@ -596,12 +602,28 @@ function enhanceDeployWarningError(err) {
596
602
  const affected = warnings
597
603
  ? warnings.flatMap((w) => Array.isArray(w?.affected) ? w.affected : [])
598
604
  : [];
605
+ const unacknowledgedCodes = Array.isArray(existingBody.unacknowledged_warning_codes)
606
+ ? existingBody.unacknowledged_warning_codes
607
+ : warnings
608
+ ? Array.from(new Set(warnings
609
+ .filter((w) => w?.requires_confirmation || w?.code === "MISSING_REQUIRED_SECRET")
610
+ .map((w) => w?.code)
611
+ .filter(Boolean)))
612
+ : code
613
+ ? [code]
614
+ : [];
615
+ const allowWarningAction = unacknowledgedCodes.length === 1
616
+ ? `Retry with \`--allow-warning ${unacknowledgedCodes[0]}\` only after reviewing that warning.`
617
+ : unacknowledgedCodes.length > 1
618
+ ? `Retry with one \`--allow-warning <code>\` per reviewed warning code: ${unacknowledgedCodes.join(", ")}.`
619
+ : "Retry with `--allow-warning <code>` only after reviewing the warning.";
599
620
  const defaultNextActions = [
600
621
  ...(affected.length > 0
601
622
  ? [`Set or inspect affected secrets: ${Array.from(new Set(affected)).join(", ")}`]
602
623
  : []),
603
624
  "Retry `run402 deploy apply` after resolving warnings.",
604
- "Use `--allow-warnings` only when the warning was explicitly reviewed.",
625
+ allowWarningAction,
626
+ "Use `--allow-warnings` only when every warning was explicitly reviewed.",
605
627
  ];
606
628
  enhanced.body = {
607
629
  ...existingBody,
@@ -610,8 +632,8 @@ function enhanceDeployWarningError(err) {
610
632
  hint: existingBody.hint ||
611
633
  routeGuidance?.hint ||
612
634
  (code === "MISSING_REQUIRED_SECRET"
613
- ? "Set the missing secret values with `run402 secrets set`, then retry deploy apply. Use --allow-warnings only after explicit review."
614
- : "Review the plan warnings, then retry with --allow-warnings if you intentionally accept them."),
635
+ ? "Set the missing secret values with `run402 secrets set <project> <KEY> --stdin` or `--file <path>`, then retry deploy apply."
636
+ : "Review the plan warnings, then retry with --allow-warning <code> for reviewed warnings if you intentionally accept them."),
615
637
  next_actions: Array.isArray(existingBody.next_actions) && existingBody.next_actions.length > 0
616
638
  ? existingBody.next_actions
617
639
  : (routeGuidance?.next_actions ?? defaultNextActions),
@@ -665,7 +687,8 @@ const ROUTE_WARNING_GUIDANCE = {
665
687
  next_actions: [
666
688
  "Add the mutation methods the routed function supports, such as POST.",
667
689
  "Omit methods to allow every supported method when the route is an API surface.",
668
- "Use --allow-warnings only if the wildcard prefix is intentionally read-only.",
690
+ "Set acknowledge_readonly: true on an intentionally read-only GET/HEAD wildcard function route.",
691
+ "Use --allow-warning WILDCARD_ROUTE_EXCLUDES_MUTATION_METHODS only as a reviewed CLI escape hatch.",
669
692
  ],
670
693
  },
671
694
  ROUTE_TABLE_NEAR_LIMIT: {
package/lib/secrets.mjs CHANGED
@@ -9,11 +9,12 @@ Usage:
9
9
  run402 secrets <subcommand> [args...]
10
10
 
11
11
  Subcommands:
12
- set <id> <key> <value> [--file <path>] Set a secret on a project
12
+ set <id> <key> <value> [--file <path>|--stdin] Set a secret on a project
13
13
  list <id> List all secrets for a project
14
14
  delete <id> <key> Delete a secret from a project
15
15
 
16
16
  Examples:
17
+ printf %s "$STRIPE_KEY" | run402 secrets set prj_abc123 STRIPE_KEY --stdin
17
18
  run402 secrets set prj_abc123 STRIPE_KEY --file ./.secrets/stripe-key
18
19
  run402 secrets set prj_abc123 TLS_CERT --file cert.pem
19
20
  run402 secrets list prj_abc123
@@ -29,23 +30,28 @@ const SUB_HELP = {
29
30
  set: `run402 secrets set — Set a secret on a project
30
31
 
31
32
  Usage:
32
- run402 secrets set <id> <key> <value> [--file <path>]
33
+ run402 secrets set <id> <key> <value>
33
34
  run402 secrets set <id> <key> --file <path>
35
+ run402 secrets set <id> <key> --stdin
34
36
 
35
37
  Arguments:
36
38
  <id> Project ID (from 'run402 projects list')
37
39
  <key> Secret key name (exposed as process.env.<key>)
38
- <value> Inline secret value (omit if using --file)
40
+ <value> Inline secret value (omit if using --file or --stdin)
39
41
 
40
42
  Options:
41
43
  --file <path> Read the secret value from a file instead of inline
44
+ Use --file - or --file /dev/stdin to read from stdin
45
+ --stdin Read the secret value from stdin until EOF
42
46
 
43
47
  Notes:
44
48
  - Secrets are injected as process.env in serverless functions
45
49
  - Values are write-only; 'list' cannot verify values by hash
46
- - Prefer --file for real secrets so values do not land in shell history
50
+ - Prefer --stdin or --file for real secrets so values do not land in shell history
47
51
 
48
52
  Examples:
53
+ printf %s "$STRIPE_KEY" | run402 secrets set prj_abc123 STRIPE_KEY --stdin
54
+ cat ./.secrets/stripe-key | run402 secrets set prj_abc123 STRIPE_KEY --file -
49
55
  run402 secrets set prj_abc123 STRIPE_KEY --file ./.secrets/stripe-key
50
56
  run402 secrets set prj_abc123 TLS_CERT --file cert.pem
51
57
  `,
@@ -77,25 +83,48 @@ Examples:
77
83
  `,
78
84
  };
79
85
 
86
+ export function readSecretValueForSet(parsedArgs, values, readers = {}) {
87
+ const readStdin = readers.readStdin ?? (() => readFileSync(0, "utf-8"));
88
+ const readFile = readers.readFile ?? ((path) => readFileSync(path, "utf-8"));
89
+ const validateFile = readers.validateFile ?? validateRegularFile;
90
+ const file = flagValue(parsedArgs, "--file");
91
+ const stdinRequested = parsedArgs.includes("--stdin");
92
+ const stdinFile = isStdinAlias(file);
93
+ const sources = [];
94
+ if (values.length === 1) sources.push("inline");
95
+ if (file) sources.push(stdinFile ? "--file stdin" : "--file");
96
+ if (stdinRequested) sources.push("--stdin");
97
+
98
+ if (sources.length > 1) {
99
+ fail({
100
+ code: "BAD_USAGE",
101
+ message: "Provide exactly one secret value source.",
102
+ details: { sources },
103
+ hint: "Use one of: inline value, --file <path>, or --stdin.",
104
+ });
105
+ }
106
+ if (file && !stdinFile) validateFile(file, "--file");
107
+
108
+ if (stdinRequested || stdinFile) return readStdin();
109
+ if (file) return readFile(file);
110
+ if (values.length === 1) return values[0];
111
+ return undefined;
112
+ }
113
+
80
114
  async function set(projectId, key, args = []) {
81
115
  const parsedArgs = normalizeArgv(args);
82
116
  const valueFlags = ["--file"];
83
- assertKnownFlags(parsedArgs, [...valueFlags, "--help", "-h"], valueFlags);
117
+ assertKnownFlags(parsedArgs, [...valueFlags, "--stdin", "--help", "-h"], valueFlags);
84
118
  const values = positionalArgs(parsedArgs, valueFlags);
85
119
  if (values.length > 1) {
86
120
  fail({ code: "BAD_USAGE", message: `Unexpected argument for secrets set: ${values[1]}` });
87
121
  }
88
- const file = flagValue(parsedArgs, "--file");
89
- if (file && values.length > 0) {
90
- fail({ code: "BAD_USAGE", message: "Provide either an inline value or --file, not both." });
91
- }
92
- if (file) validateRegularFile(file, "--file");
93
- const val = file ? readFileSync(file, "utf-8") : values.length === 1 ? values[0] : undefined;
122
+ const val = await readSecretValueForSet(parsedArgs, values, { readStdin: readStdinSecret });
94
123
  if (val === undefined) {
95
124
  fail({
96
125
  code: "BAD_USAGE",
97
126
  message: "Missing secret value.",
98
- hint: "Provide inline or use --file <path>",
127
+ hint: "Pipe a value to --stdin, use --file <path>, or provide an inline value only when shell history exposure is acceptable.",
99
128
  });
100
129
  }
101
130
  try {
@@ -106,6 +135,40 @@ async function set(projectId, key, args = []) {
106
135
  }
107
136
  }
108
137
 
138
+ function isStdinAlias(file) {
139
+ return file === "-" || file === "/dev/stdin";
140
+ }
141
+
142
+ async function readStdinSecret() {
143
+ if (process.stdin?.isTTY) {
144
+ failMissingStdin();
145
+ }
146
+ const chunks = [];
147
+ for await (const chunk of process.stdin) {
148
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
149
+ }
150
+ if (chunks.length === 0) {
151
+ failMissingStdin();
152
+ }
153
+ const value = Buffer.concat(chunks).toString("utf-8");
154
+ if (value.length === 0) {
155
+ failMissingStdin();
156
+ }
157
+ return value;
158
+ }
159
+
160
+ function failMissingStdin() {
161
+ fail({
162
+ code: "BAD_USAGE",
163
+ message: "Missing secret value on stdin.",
164
+ hint: "Pipe a value, use --file <path>, or provide an inline value only when shell history exposure is acceptable.",
165
+ next_actions: [
166
+ "printf %s \"$VALUE\" | run402 secrets set <project> <KEY> --stdin",
167
+ "run402 secrets set <project> <KEY> --file <path>",
168
+ ],
169
+ });
170
+ }
171
+
109
172
  async function list(projectId, args = []) {
110
173
  const parsedArgs = normalizeArgv(args);
111
174
  assertKnownFlags(parsedArgs, ["--help", "-h"]);
package/lib/tier.mjs CHANGED
@@ -8,7 +8,7 @@ Usage:
8
8
  run402 tier <subcommand> [args...]
9
9
 
10
10
  Subcommands:
11
- status Show current tier (tier name, status, expiry)
11
+ status Show current tier, expiry, usage, and function caps when returned
12
12
  set <tier> Subscribe, renew, or upgrade (pays via x402)
13
13
 
14
14
  Tiers: prototype ($0.10/7d, free with testnet faucet), hobby ($5/30d), team ($20/30d)
@@ -32,7 +32,10 @@ Usage:
32
32
  run402 tier status
33
33
 
34
34
  Notes:
35
- - Returns the current tier name, status, and expiry
35
+ - Returns the current tier name, status, expiry, and usage
36
+ - Newer gateways include function authoring caps such as max timeout,
37
+ max memory, max scheduled functions, minimum cron interval, and current
38
+ scheduled-function usage
36
39
  - Use 'run402 tier set <tier>' to subscribe, renew, or upgrade
37
40
 
38
41
  Examples:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run402",
3
- "version": "1.69.7",
3
+ "version": "1.70.0",
4
4
  "description": "CLI for Run402 — provision Postgres databases, deploy static sites, generate images, and manage wallets via x402 and MPP micropayments.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,38 @@
6
6
  * end-user flows). Settings + promote/demote use the service key.
7
7
  */
8
8
  import { LocalError, ProjectNotFound } from "../errors.js";
9
+ import { assertEmailAddress, assertHttpUrl, assertNonEmptyString, assertStringInSet, } from "../validation.js";
10
+ const MAGIC_LINK_INTENTS = ["signin", "invite", "claim", "recovery"];
11
+ const AUTH_SETTINGS_FIELDS = [
12
+ "allow_password_set",
13
+ "preferred_sign_in_method",
14
+ "public_signup",
15
+ "require_passkey_for_project_admin",
16
+ ];
17
+ const SIGN_IN_METHODS = ["password", "magic_link", "oauth_google", "passkey"];
18
+ const PUBLIC_SIGNUP_POLICIES = ["open", "known_email", "invite_only"];
19
+ function validateAuthSettings(settings) {
20
+ const raw = settings;
21
+ for (const key of Object.keys(raw)) {
22
+ if (!AUTH_SETTINGS_FIELDS.includes(key)) {
23
+ throw new LocalError(`Unknown auth settings field: ${key}`, "updating auth settings");
24
+ }
25
+ }
26
+ if (raw.allow_password_set !== undefined &&
27
+ typeof raw.allow_password_set !== "boolean") {
28
+ throw new LocalError("allow_password_set must be a boolean.", "updating auth settings");
29
+ }
30
+ if (raw.require_passkey_for_project_admin !== undefined &&
31
+ typeof raw.require_passkey_for_project_admin !== "boolean") {
32
+ throw new LocalError("require_passkey_for_project_admin must be a boolean.", "updating auth settings");
33
+ }
34
+ if (raw.preferred_sign_in_method !== undefined && raw.preferred_sign_in_method !== null) {
35
+ assertStringInSet(raw.preferred_sign_in_method, SIGN_IN_METHODS, "preferred_sign_in_method", "updating auth settings");
36
+ }
37
+ if (raw.public_signup !== undefined) {
38
+ assertStringInSet(raw.public_signup, PUBLIC_SIGNUP_POLICIES, "public_signup", "updating auth settings");
39
+ }
40
+ }
9
41
  export class Auth {
10
42
  client;
11
43
  magicLink;
@@ -23,9 +55,14 @@ export class Auth {
23
55
  }
24
56
  /** Send a passwordless login email (magic link). 15-minute token. */
25
57
  async requestMagicLink(projectId, opts) {
26
- if (!opts || typeof opts !== "object") {
58
+ if (!opts || typeof opts !== "object" || Array.isArray(opts)) {
27
59
  throw new LocalError("r.auth.requestMagicLink(projectId, opts) requires an opts object as the 2nd argument (e.g., { email, redirectUrl })", "requesting magic link");
28
60
  }
61
+ assertEmailAddress(opts.email, "email", "requesting magic link");
62
+ assertHttpUrl(opts.redirectUrl, "redirectUrl", "requesting magic link");
63
+ if (opts.intent !== undefined) {
64
+ assertStringInSet(opts.intent, MAGIC_LINK_INTENTS, "intent", "requesting magic link");
65
+ }
29
66
  const project = await this.client.getProject(projectId);
30
67
  if (!project)
31
68
  throw new ProjectNotFound(projectId, "requesting magic link");
@@ -49,6 +86,7 @@ export class Auth {
49
86
  }
50
87
  /** Exchange a magic-link token for access + refresh tokens. */
51
88
  async verifyMagicLink(projectId, token) {
89
+ assertNonEmptyString(token, "token", "verifying magic link");
52
90
  const project = await this.client.getProject(projectId);
53
91
  if (!project)
54
92
  throw new ProjectNotFound(projectId, "verifying magic link");
@@ -68,14 +106,19 @@ export class Auth {
68
106
  * Bearer credential.
69
107
  */
70
108
  async setUserPassword(projectId, opts) {
71
- if (!opts || typeof opts !== "object") {
109
+ if (!opts || typeof opts !== "object" || Array.isArray(opts)) {
72
110
  throw new LocalError("r.auth.setUserPassword(projectId, opts) requires an opts object as the 2nd argument (e.g., { accessToken, newPassword })", "setting user password");
73
111
  }
112
+ assertNonEmptyString(opts.accessToken, "accessToken", "setting user password");
113
+ assertNonEmptyString(opts.newPassword, "newPassword", "setting user password");
114
+ if (opts.currentPassword !== undefined) {
115
+ assertNonEmptyString(opts.currentPassword, "currentPassword", "setting user password");
116
+ }
74
117
  const project = await this.client.getProject(projectId);
75
118
  if (!project)
76
119
  throw new ProjectNotFound(projectId, "setting user password");
77
120
  const body = { new_password: opts.newPassword };
78
- if (opts.currentPassword)
121
+ if (opts.currentPassword !== undefined)
79
122
  body.current_password = opts.currentPassword;
80
123
  await this.client.request("/auth/v1/user/password", {
81
124
  method: "PUT",
@@ -89,9 +132,10 @@ export class Auth {
89
132
  }
90
133
  /** Update project-level auth settings. Requires service key. */
91
134
  async settings(projectId, settings) {
92
- if (!settings || typeof settings !== "object") {
135
+ if (!settings || typeof settings !== "object" || Array.isArray(settings)) {
93
136
  throw new LocalError("r.auth.settings(projectId, settings) requires a settings object as the 2nd argument (e.g., { allow_password_set: true })", "updating auth settings");
94
137
  }
138
+ validateAuthSettings(settings);
95
139
  const project = await this.client.getProject(projectId);
96
140
  if (!project)
97
141
  throw new ProjectNotFound(projectId, "updating auth settings");
@@ -107,9 +151,19 @@ export class Auth {
107
151
  }
108
152
  /** Create or update an auth user. Requires service key. */
109
153
  async createUser(projectId, opts) {
110
- if (!opts || typeof opts !== "object") {
154
+ if (!opts || typeof opts !== "object" || Array.isArray(opts)) {
111
155
  throw new LocalError("r.auth.createUser(projectId, opts) requires an opts object as the 2nd argument (e.g., { email, isAdmin })", "creating auth user");
112
156
  }
157
+ assertEmailAddress(opts.email, "email", "creating auth user");
158
+ if (opts.redirectUrl !== undefined) {
159
+ assertHttpUrl(opts.redirectUrl, "redirectUrl", "creating auth user");
160
+ }
161
+ if (opts.isAdmin !== undefined && typeof opts.isAdmin !== "boolean") {
162
+ throw new LocalError("isAdmin must be a boolean when provided.", "creating auth user");
163
+ }
164
+ if (opts.sendInvite !== undefined && typeof opts.sendInvite !== "boolean") {
165
+ throw new LocalError("sendInvite must be a boolean when provided.", "creating auth user");
166
+ }
113
167
  const project = await this.client.getProject(projectId);
114
168
  if (!project)
115
169
  throw new ProjectNotFound(projectId, "creating auth user");
@@ -118,7 +172,7 @@ export class Auth {
118
172
  body.is_admin = opts.isAdmin;
119
173
  if (typeof opts.sendInvite === "boolean")
120
174
  body.send_invite = opts.sendInvite;
121
- if (opts.redirectUrl)
175
+ if (opts.redirectUrl !== undefined)
122
176
  body.redirect_url = opts.redirectUrl;
123
177
  if (opts.clientState !== undefined)
124
178
  body.client_state = opts.clientState;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/namespaces/billing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/namespaces/billing.ts"],"names":[],"mappings":"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"}
@@ -4,26 +4,48 @@
4
4
  * account by wallet address or email.
5
5
  */
6
6
  import { LocalError } from "../errors.js";
7
- import { assertPositiveSafeInteger } from "../validation.js";
8
- function encodeBillingIdentifier(identifier) {
9
- const normalized = /^0x/i.test(identifier)
10
- ? identifier.toLowerCase()
11
- : identifier;
7
+ import { assertEmailAddress, assertEvmAddress, assertNonEmptyString, assertPositiveSafeInteger, assertStringInSet, } from "../validation.js";
8
+ const BILLING_TIERS = ["prototype", "hobby", "team"];
9
+ function encodeBillingIdentifier(identifier, context) {
10
+ const normalized = normalizeBillingIdentifier(identifier, context);
12
11
  return encodeURIComponent(normalized);
13
12
  }
13
+ function normalizeBillingIdentifier(identifier, context) {
14
+ assertNonEmptyString(identifier, "identifier", context);
15
+ if (/^0x/i.test(identifier)) {
16
+ assertEvmAddress(identifier, "identifier", context);
17
+ return identifier.toLowerCase();
18
+ }
19
+ assertEmailAddress(identifier, "identifier", context);
20
+ return identifier;
21
+ }
14
22
  function assertNonNegativeSafeInteger(value, name, context) {
15
23
  if (!Number.isSafeInteger(value) || value < 0) {
16
24
  throw new LocalError(`${name} must be a non-negative safe integer.`, context);
17
25
  }
18
26
  }
27
+ function assertUsdMicrosAmount(value, name, context) {
28
+ if (!Number.isSafeInteger(value) || value < 500_000 || value % 10_000 !== 0) {
29
+ throw new LocalError(`${name} must be a safe integer USD-micros amount of at least 500000 and whole-cent aligned.`, context);
30
+ }
31
+ }
19
32
  function checkoutIdentifierBody(identifier, context) {
20
- if (identifier.email && identifier.wallet) {
33
+ if (!identifier || typeof identifier !== "object" || Array.isArray(identifier)) {
34
+ throw new LocalError("identifier must be an object with either `email` or `wallet`.", context);
35
+ }
36
+ const hasEmail = identifier.email !== undefined;
37
+ const hasWallet = identifier.wallet !== undefined;
38
+ if (hasEmail && hasWallet) {
21
39
  throw new LocalError("Provide either `email` or `wallet` in identifier, not both.", context);
22
40
  }
23
- if (identifier.wallet)
24
- return { wallet: identifier.wallet };
25
- if (identifier.email)
41
+ if (hasWallet) {
42
+ assertEvmAddress(identifier.wallet, "identifier.wallet", context);
43
+ return { wallet: identifier.wallet.toLowerCase() };
44
+ }
45
+ if (hasEmail) {
46
+ assertEmailAddress(identifier.email, "identifier.email", context);
26
47
  return { email: identifier.email };
48
+ }
27
49
  throw new LocalError("Provide either `email` or `wallet` in identifier.", context);
28
50
  }
29
51
  export class Billing {
@@ -43,7 +65,7 @@ export class Billing {
43
65
  }
44
66
  /** Check a billing account by wallet or email identifier. Public, no auth. */
45
67
  async getAccount(identifier) {
46
- const encoded = encodeBillingIdentifier(identifier);
68
+ const encoded = encodeBillingIdentifier(identifier, "checking balance");
47
69
  return this.client.request(`/billing/v1/accounts/${encoded}`, {
48
70
  context: "checking balance",
49
71
  withAuth: false,
@@ -55,7 +77,7 @@ export class Billing {
55
77
  }
56
78
  /** Fetch billing history by wallet or email identifier. */
57
79
  async getHistory(identifier, limit) {
58
- const encoded = encodeBillingIdentifier(identifier);
80
+ const encoded = encodeBillingIdentifier(identifier, "fetching billing history");
59
81
  if (limit !== undefined) {
60
82
  assertPositiveSafeInteger(limit, "limit", "fetching billing history");
61
83
  }
@@ -69,6 +91,8 @@ export class Billing {
69
91
  }
70
92
  /** Create a Stripe checkout URL to fund a wallet's billing balance. */
71
93
  async createCheckout(wallet, amountUsdMicros) {
94
+ assertEvmAddress(wallet, "wallet", "creating checkout");
95
+ assertUsdMicrosAmount(amountUsdMicros, "amountUsdMicros", "creating checkout");
72
96
  return this.client.request("/billing/v1/checkouts", {
73
97
  method: "POST",
74
98
  body: { wallet: wallet.toLowerCase(), amount_usd_micros: amountUsdMicros },
@@ -78,6 +102,7 @@ export class Billing {
78
102
  }
79
103
  /** Create an email-only (no-wallet) billing account. Sends a verification email. */
80
104
  async createEmailAccount(email) {
105
+ assertEmailAddress(email, "email", "creating email billing account");
81
106
  return this.client.request("/billing/v1/accounts", {
82
107
  method: "POST",
83
108
  body: { email },
@@ -87,17 +112,20 @@ export class Billing {
87
112
  }
88
113
  /** Link a wallet to an existing email billing account to enable hybrid Stripe + x402. */
89
114
  async linkWallet(billingAccountId, wallet) {
90
- await this.client.request(`/billing/v1/accounts/${billingAccountId}/link-wallet`, {
115
+ assertNonEmptyString(billingAccountId, "billingAccountId", "linking wallet");
116
+ assertEvmAddress(wallet, "wallet", "linking wallet");
117
+ await this.client.request(`/billing/v1/accounts/${encodeURIComponent(billingAccountId)}/link-wallet`, {
91
118
  method: "POST",
92
- body: { wallet },
119
+ body: { wallet: wallet.toLowerCase() },
93
120
  context: "linking wallet",
94
121
  withAuth: false,
95
122
  });
96
123
  }
97
124
  /** Create a Stripe checkout for a tier subscription/renewal/upgrade. */
98
125
  async tierCheckout(tier, identifier) {
126
+ assertStringInSet(tier, BILLING_TIERS, "tier", "creating tier checkout");
99
127
  const body = checkoutIdentifierBody(identifier, "creating tier checkout");
100
- return this.client.request(`/billing/v1/tiers/${tier}/checkout`, {
128
+ return this.client.request(`/billing/v1/tiers/${encodeURIComponent(tier)}/checkout`, {
101
129
  method: "POST",
102
130
  body,
103
131
  context: "creating tier checkout",