@ramonclaudio/vexpo 0.1.2 → 0.1.3
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/README.md +5 -1
- package/dist/cli.js +18 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,6 +31,10 @@ vexpo convex Provision Convex deployment + write .env.local
|
|
|
31
31
|
vexpo better-auth Set BETTER_AUTH_SECRET, SITE_URL, APP_NAME on Convex
|
|
32
32
|
vexpo resend Provision Resend sending key + webhook, flip REQUIRE_EMAIL_VERIFICATION=true
|
|
33
33
|
vexpo env push .env.local + .env.prod → Convex + EAS (one pass)
|
|
34
|
+
vexpo env convex-key Sync Convex deploy key + selector to EAS env (post-migration fix)
|
|
35
|
+
vexpo adopt Finish a project created by `eas integrations:convex:connect`
|
|
36
|
+
vexpo convex:migrate Copy server-side Convex env from another deployment
|
|
37
|
+
vexpo asc:connect Re-link the EAS project to its ASC app (standalone, wraps `eas integrations:asc:connect`)
|
|
34
38
|
```
|
|
35
39
|
|
|
36
40
|
## Apple
|
|
@@ -85,7 +89,7 @@ npx eas env [...] # env:push, env:pull, env:get, env:delete, env:
|
|
|
85
89
|
npx eas integrations:asc [...] # status, connect, disconnect
|
|
86
90
|
```
|
|
87
91
|
|
|
88
|
-
`vexpo full` orchestrates `eas init`, `eas env:push`, `eas credentials -p ios` (via `eas credentials:configure-build`), and `eas integrations:asc:connect` internally as setup steps
|
|
92
|
+
`vexpo full` orchestrates `eas init`, `eas env:push`, `eas credentials -p ios` (via `eas credentials:configure-build`), and `eas integrations:asc:connect` internally as setup steps. Only the ASC link step is also exposed standalone as `vexpo asc:connect` (re-link without re-running `full`); the rest are setup-only. The ASC API key flows through to both wizards via `EXPO_ASC_API_KEY_PATH` / `EXPO_ASC_KEY_ID` / `EXPO_ASC_ISSUER_ID` env vars pre-set from the cached `asc-key` state. These env vars set `AppStoreApi.defaultAuthenticationMode = API_KEY` inside eas-cli, so when the wizard reaches the Apple auth step during ASC key generation, it uses our cached key instead of prompting for Apple ID + password. The manual paste step doesn't auto-fill — the wizard skips it by auto-generating the key instead.
|
|
89
93
|
|
|
90
94
|
Earlier vexpo versions passed `--api-key-id <apple-key-id>` to `integrations:asc:connect`. That flag matches against EAS's uploaded key resources, not Apple-side identifiers, so it failed with `No App Store Connect API key found with Apple key identifier ...` whenever the key hadn't been uploaded to EAS yet (the common case on fresh projects). The current orchestration drops the flag and relies on the env vars + the wizard's "Create new or use existing" prompt instead.
|
|
91
95
|
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ import { createSign } from 'crypto';
|
|
|
13
13
|
|
|
14
14
|
// package.json
|
|
15
15
|
var package_default = {
|
|
16
|
-
version: "0.1.
|
|
16
|
+
version: "0.1.3"};
|
|
17
17
|
function deploymentName(value) {
|
|
18
18
|
if (!value) return void 0;
|
|
19
19
|
const m = /^(?:dev|prod|preview):(.+)$/.exec(value);
|
|
@@ -1090,6 +1090,12 @@ function describeDeployment(d) {
|
|
|
1090
1090
|
// src/commands/convex.ts
|
|
1091
1091
|
var BUNDLE_ID_RE = /^[A-Za-z0-9.-]+$/;
|
|
1092
1092
|
var TEAM_ID_RE = /^[A-Z0-9]{10}$/;
|
|
1093
|
+
function resolveTeamIdInput(raw, fromConfig) {
|
|
1094
|
+
const value = raw.trim().toUpperCase() || (fromConfig ?? "");
|
|
1095
|
+
if (!value) return { kind: "skip" };
|
|
1096
|
+
if (!TEAM_ID_RE.test(value)) return { kind: "invalid", value };
|
|
1097
|
+
return { kind: "ok", value };
|
|
1098
|
+
}
|
|
1093
1099
|
function planConvexDev(options2, needsProvisioning, projectName) {
|
|
1094
1100
|
const devArgs = ["convex", "dev", "--once", "--tail-logs", "disable"];
|
|
1095
1101
|
if (needsProvisioning) {
|
|
@@ -1234,13 +1240,18 @@ async function ensureIdentity(localEnv) {
|
|
|
1234
1240
|
` Apple Team id ${DIM}(10-char alphanumeric, find at developer.apple.com/account)${RESET}${cachedHint}
|
|
1235
1241
|
${DIM}> ${RESET}`
|
|
1236
1242
|
)).trim().toUpperCase();
|
|
1237
|
-
const
|
|
1238
|
-
if (
|
|
1239
|
-
|
|
1243
|
+
const resolved = resolveTeamIdInput(raw, fromConfig);
|
|
1244
|
+
if (resolved.kind === "skip") {
|
|
1245
|
+
yep("EXPO_PUBLIC_APPLE_TEAM_ID not set (optional for lite; `vexpo full` asks again)");
|
|
1246
|
+
} else if (resolved.kind === "invalid") {
|
|
1247
|
+
throw new Error(
|
|
1248
|
+
`invalid Apple Team id '${resolved.value}' (must be 10 uppercase alphanumeric)`
|
|
1249
|
+
);
|
|
1250
|
+
} else {
|
|
1251
|
+
teamId = resolved.value;
|
|
1252
|
+
await ensureLine("EXPO_PUBLIC_APPLE_TEAM_ID", teamId);
|
|
1253
|
+
ok(`wrote EXPO_PUBLIC_APPLE_TEAM_ID=${teamId}`);
|
|
1240
1254
|
}
|
|
1241
|
-
teamId = value;
|
|
1242
|
-
await ensureLine("EXPO_PUBLIC_APPLE_TEAM_ID", teamId);
|
|
1243
|
-
ok(`wrote EXPO_PUBLIC_APPLE_TEAM_ID=${teamId}`);
|
|
1244
1255
|
}
|
|
1245
1256
|
} else {
|
|
1246
1257
|
nop(`EXPO_PUBLIC_APPLE_TEAM_ID already set (${teamId})`);
|
package/package.json
CHANGED