@axtrabase/cli 0.1.2 → 0.1.4
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 +39 -4
- package/dist/api-types.d.ts +39 -0
- package/dist/api-types.d.ts.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +71 -20
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts +62 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +82 -6
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/keys.js +16 -0
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/login.js +14 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/permissions.js +13 -3
- package/dist/commands/permissions.js.map +1 -1
- package/dist/commands/status.js +22 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tables.js +69 -12
- package/dist/commands/tables.js.map +1 -1
- package/dist/config/environments.d.ts +43 -0
- package/dist/config/environments.d.ts.map +1 -0
- package/dist/config/environments.js +43 -0
- package/dist/config/environments.js.map +1 -0
- package/dist/config/resolve.d.ts +25 -4
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +59 -11
- package/dist/config/resolve.js.map +1 -1
- package/dist/config/store.d.ts +4 -2
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +1 -0
- package/dist/config/store.js.map +1 -1
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/exit-codes.js +8 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/generators/typescript.d.ts +15 -0
- package/dist/generators/typescript.d.ts.map +1 -1
- package/dist/generators/typescript.js +126 -11
- package/dist/generators/typescript.js.map +1 -1
- package/dist/prompt-masked.d.ts +3 -1
- package/dist/prompt-masked.d.ts.map +1 -1
- package/dist/prompt-masked.js +23 -2
- package/dist/prompt-masked.js.map +1 -1
- package/dist/report-error.d.ts +16 -1
- package/dist/report-error.d.ts.map +1 -1
- package/dist/report-error.js +45 -2
- package/dist/report-error.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +11 -11
package/dist/commands/login.js
CHANGED
|
@@ -22,6 +22,20 @@ async function runLogin(options) {
|
|
|
22
22
|
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
23
23
|
const dashboardUrl = resolveDashboardUrl(options.dashboardUrl);
|
|
24
24
|
const tokenPageUrl = `${dashboardUrl}/account/cli-tokens`;
|
|
25
|
+
// `login` is interactive by definition: it ends in a pasted secret. In an
|
|
26
|
+
// agent or CI environment there is no terminal to paste at, so fail here
|
|
27
|
+
// rather than opening a browser nobody can see and then blocking on a
|
|
28
|
+
// prompt nobody can answer (Sprint #11 P1-10). promptMasked enforces the
|
|
29
|
+
// same contract if stdin closes mid-flight; this is the early, explicit
|
|
30
|
+
// path that also avoids the pointless browser launch.
|
|
31
|
+
if (!process.stdin.isTTY) {
|
|
32
|
+
throw new CliError("AXTRA_CLI_NON_INTERACTIVE", "axtrabase login is interactive — it ends by pasting a CLI token — and there is no terminal attached.\n\n" +
|
|
33
|
+
"For an agent or CI environment, supply the token directly instead of logging in:\n" +
|
|
34
|
+
" export AXTRABASE_CLI_TOKEN=axcli_...\n\n" +
|
|
35
|
+
`Generate one at ${tokenPageUrl}\n` +
|
|
36
|
+
"The token is read fresh on every command and is never written to disk. " +
|
|
37
|
+
"Revoke it with `axtrabase logout --revoke` when the session is done.", { status: 0 });
|
|
38
|
+
}
|
|
25
39
|
if (options.open === false) {
|
|
26
40
|
printLine(`Visit this URL to generate a CLI token:`);
|
|
27
41
|
printLine(tokenPageUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAU1D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;SACzF,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;SACvE,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAgB,CAAC;QACrD,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,GAAG,YAAY,qBAAqB,CAAC;IAE1D,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,yEAAyE;IACzE,wEAAwE;IACxE,sDAAsD;IACtD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,0GAA0G;YACxG,oFAAoF;YACpF,4CAA4C;YAC5C,mBAAmB,YAAY,IAAI;YACnC,yEAAyE;YACzE,sEAAsE,EACxE,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACrD,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,iEAAiE,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IACD,SAAS,EAAE,CAAC;IAEZ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,kCAAkC,CAAC,CAAC;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAa,YAAY,CAAC,CAAC;IAE5D,IAAI,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,+DAA+D;IAC/D,wEAAwE;IACxE,qEAAqE;IACrE,qEAAqE;IACrE,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACpD,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC;YACR,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAE,EAAE,MAAM,EAAE;SAChB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,SAAS,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -48,14 +48,24 @@ async function runList(options) {
|
|
|
48
48
|
printLine("No table permissions granted yet.");
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
// A grant on a revoked key confers nothing. Showing it unmarked made this
|
|
52
|
+
// output actively misleading — a revoked key's five canRead rows read as
|
|
53
|
+
// "access is granted" while the only usable key showed nothing. Say so
|
|
54
|
+
// here rather than making a reader cross-check `keys list`.
|
|
55
|
+
printLine(renderTable(["TABLE", "API KEY", "ENABLED", "ACCESS", "KEY STATUS"], rows.map((row) => {
|
|
52
56
|
const key = keyById.get(row.apiKeyId);
|
|
57
|
+
const revoked = row.isEffective === false || Boolean(row.keyRevokedAt);
|
|
53
58
|
return [
|
|
54
59
|
row.table,
|
|
55
|
-
key ? `${key.name} (${key.prefix})` : row.apiKeyId,
|
|
60
|
+
key ? `${key.name} (${key.prefix})` : (row.apiKeyName ?? row.apiKeyId),
|
|
56
61
|
row.isEnabled ? "yes" : "no",
|
|
57
|
-
accessShorthand(row)
|
|
62
|
+
revoked ? `${accessShorthand(row)} (inactive)` : accessShorthand(row),
|
|
63
|
+
revoked ? "REVOKED" : "active"
|
|
58
64
|
];
|
|
59
65
|
})));
|
|
66
|
+
if (rows.some((row) => row.isEffective === false || Boolean(row.keyRevokedAt))) {
|
|
67
|
+
printLine();
|
|
68
|
+
printLine("Rows marked REVOKED belong to revoked API keys and grant no access.");
|
|
69
|
+
}
|
|
60
70
|
}
|
|
61
71
|
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAU1D;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,WAAW,GAAG,OAAO;SACxB,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,+DAA+D,CAAC,CAAC;IAEhF,WAAW;SACR,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;SACtD,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAsB,CAAC;QAC3D,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,GAA2B;IAClD,OAAO,CACL,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAA2B;IAChD,MAAM,MAAM,GAAG,yBAAyB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,MAAM,CAAC,GAAG,CAA2B,oBAAoB,SAAS,qBAAqB,CAAC;QACxF,MAAM,CAAC,GAAG,CAAkB,oBAAoB,SAAS,WAAW,CAAC;KACtE,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM;QACzB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC;QACzE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,SAAS,CACP,WAAW,CACT,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveActiveProjectId } from "../active-project.js";
|
|
2
|
-
import { resolveApiUrl } from "../config/resolve.js";
|
|
2
|
+
import { resolveApiUrl, resolveDashboardUrl, resolveEnvironment } from "../config/resolve.js";
|
|
3
3
|
import { requireControlPlaneClient } from "../http/authenticated-client.js";
|
|
4
4
|
import { printJson, printKeyValueBlock } from "../output/print.js";
|
|
5
5
|
import { runWithErrorHandling } from "../report-error.js";
|
|
@@ -24,8 +24,25 @@ async function runStatus(options) {
|
|
|
24
24
|
const client = requireControlPlaneClient({ apiUrl: options.apiUrl });
|
|
25
25
|
const projectId = await resolveActiveProjectId(client, options.project);
|
|
26
26
|
const { data } = await client.get(`/api/v1/projects/${projectId}/context`);
|
|
27
|
+
// Sprint #11 P0-2: which environment a command is actually talking to must
|
|
28
|
+
// be obvious, and the API/dashboard pair must be visible together — the
|
|
29
|
+
// clean-room tester had a staging API and a production dashboard with
|
|
30
|
+
// nothing on screen to reveal it.
|
|
31
|
+
const environment = resolveEnvironment();
|
|
32
|
+
const apiUrl = resolveApiUrl(options.apiUrl);
|
|
33
|
+
const dashboardUrl = resolveDashboardUrl();
|
|
27
34
|
if (options.json) {
|
|
28
|
-
printJson({
|
|
35
|
+
printJson({
|
|
36
|
+
authenticated: true,
|
|
37
|
+
environment: {
|
|
38
|
+
name: environment.name,
|
|
39
|
+
deployed: environment.deployed,
|
|
40
|
+
apiUrl,
|
|
41
|
+
dashboardUrl,
|
|
42
|
+
docsUrl: environment.docsUrl
|
|
43
|
+
},
|
|
44
|
+
...data
|
|
45
|
+
});
|
|
29
46
|
return;
|
|
30
47
|
}
|
|
31
48
|
const connectionConnected = data.connection?.status === "CONNECTED";
|
|
@@ -40,7 +57,9 @@ async function runStatus(options) {
|
|
|
40
57
|
["Tables available", String(data.tableCounts.available)],
|
|
41
58
|
["Tables enabled", String(data.tableCounts.enabled)],
|
|
42
59
|
["API keys", `${data.apiKeys.length} active`],
|
|
43
|
-
["
|
|
60
|
+
["Environment", environment.deployed ? environment.name : `${environment.name} (not deployed)`],
|
|
61
|
+
["API", apiUrl],
|
|
62
|
+
["Dashboard", dashboardUrl]
|
|
44
63
|
]);
|
|
45
64
|
}
|
|
46
65
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tables.js
CHANGED
|
@@ -85,13 +85,22 @@ async function runDescribe(tableName, options) {
|
|
|
85
85
|
const projectId = await resolveActiveProjectId(client, options.project);
|
|
86
86
|
const { data } = await client.get(`/api/v1/projects/${projectId}/tables/${tableName}/metadata`);
|
|
87
87
|
if (options.json) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
// Report only gaps that are actually present in THIS response, rather
|
|
89
|
+
// than a hardcoded list of the layer's old limitations. An absent
|
|
90
|
+
// (null/undefined) field means "not resolved"; an empty array means
|
|
91
|
+
// "none exist" — see Sprint #11 P0-4/P0-5.
|
|
92
|
+
const metadataGaps = [];
|
|
93
|
+
if (data.relationships === null || data.relationships === undefined) {
|
|
94
|
+
metadataGaps.push("Relationships were not resolved for this table.");
|
|
95
|
+
}
|
|
96
|
+
const unresolvedChoices = data.columns
|
|
97
|
+
.filter((column) => (column.type === "choice" || column.type === "state" || column.type === "status") &&
|
|
98
|
+
(column.options === null || column.options === undefined))
|
|
99
|
+
.map((column) => column.logicalName);
|
|
100
|
+
if (unresolvedChoices.length > 0) {
|
|
101
|
+
metadataGaps.push(`Choice values were not resolved for: ${unresolvedChoices.join(", ")}.`);
|
|
102
|
+
}
|
|
103
|
+
printJson({ ...data, metadataGaps });
|
|
95
104
|
return;
|
|
96
105
|
}
|
|
97
106
|
printKeyValueBlock([
|
|
@@ -99,17 +108,50 @@ async function runDescribe(tableName, options) {
|
|
|
99
108
|
["Logical name", data.logicalName],
|
|
100
109
|
["Entity set", data.entitySetName],
|
|
101
110
|
["Type", data.isCustomEntity ? "Custom" : "Standard"],
|
|
111
|
+
["Ownership", data.ownershipType ?? "—"],
|
|
102
112
|
["Primary ID", data.primaryIdAttribute],
|
|
103
113
|
["Primary name", data.primaryNameAttribute ?? "—"]
|
|
104
114
|
]);
|
|
105
115
|
printLine();
|
|
106
116
|
printLine("Columns:");
|
|
107
|
-
printLine(renderTable(["LOGICAL NAME", "TYPE", "REQUIRED", "LOOKUP TARGET"], data.columns.map((column) => [
|
|
117
|
+
printLine(renderTable(["LOGICAL NAME", "TYPE", "REQUIRED", "SOURCE", "LOOKUP TARGET"], data.columns.map((column) => [
|
|
108
118
|
column.logicalName,
|
|
109
|
-
column.type,
|
|
119
|
+
column.isMultiSelect ? `${column.type} (multi)` : column.type,
|
|
110
120
|
column.isRequired ? "yes" : "no",
|
|
121
|
+
// Calculated/rollup columns are derived — an agent must not write them.
|
|
122
|
+
column.source && column.source !== "stored" ? column.source : "—",
|
|
111
123
|
column.lookupTargets?.join(", ") || "—"
|
|
112
124
|
])));
|
|
125
|
+
const choiceColumns = data.columns.filter((column) => column.options !== null && column.options !== undefined);
|
|
126
|
+
if (choiceColumns.length > 0) {
|
|
127
|
+
printLine();
|
|
128
|
+
printLine("Choice values:");
|
|
129
|
+
for (const column of choiceColumns) {
|
|
130
|
+
const options = column.options ?? [];
|
|
131
|
+
if (options.length === 0) {
|
|
132
|
+
printLine(`- ${column.logicalName}: (no options defined)`);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
printLine(`- ${column.logicalName}:`);
|
|
136
|
+
for (const option of options) {
|
|
137
|
+
printLine(` ${option.value} = ${option.label ?? "(no label)"}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (data.relationships && data.relationships.length > 0) {
|
|
142
|
+
printLine();
|
|
143
|
+
printLine("Relationships:");
|
|
144
|
+
printLine(renderTable(["KIND", "NAME", "RELATED TABLE", "VIA COLUMN"], data.relationships.map((relationship) => [
|
|
145
|
+
relationship.kind,
|
|
146
|
+
relationship.name,
|
|
147
|
+
relationship.kind === "many-to-many"
|
|
148
|
+
? (relationship.relatedTable ?? "—")
|
|
149
|
+
: relationship.kind === "many-to-one"
|
|
150
|
+
? (relationship.referencedTable ?? "—")
|
|
151
|
+
: (relationship.referencingTable ?? "—"),
|
|
152
|
+
relationship.referencingColumn ?? "—"
|
|
153
|
+
])));
|
|
154
|
+
}
|
|
113
155
|
if (data.permissions.length > 0) {
|
|
114
156
|
printLine();
|
|
115
157
|
printLine("Permissions:");
|
|
@@ -122,8 +164,23 @@ async function runDescribe(tableName, options) {
|
|
|
122
164
|
(permission.canDelete ? "D" : "-")
|
|
123
165
|
])));
|
|
124
166
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
167
|
+
// Only report gaps that are real for this table. An empty relationships
|
|
168
|
+
// list means "none exist" and needs no note at all.
|
|
169
|
+
const notes = [];
|
|
170
|
+
if (data.relationships === null || data.relationships === undefined) {
|
|
171
|
+
notes.push("Relationships were not resolved for this table.");
|
|
172
|
+
}
|
|
173
|
+
const unresolvedChoices = data.columns
|
|
174
|
+
.filter((column) => (column.type === "choice" || column.type === "state" || column.type === "status") &&
|
|
175
|
+
(column.options === null || column.options === undefined))
|
|
176
|
+
.map((column) => column.logicalName);
|
|
177
|
+
if (unresolvedChoices.length > 0) {
|
|
178
|
+
notes.push(`Choice values were not resolved for: ${unresolvedChoices.join(", ")}.`);
|
|
179
|
+
}
|
|
180
|
+
if (notes.length > 0) {
|
|
181
|
+
printLine();
|
|
182
|
+
for (const note of notes)
|
|
183
|
+
printLine(`Note: ${note}`);
|
|
184
|
+
}
|
|
128
185
|
}
|
|
129
186
|
//# sourceMappingURL=tables.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/commands/tables.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/commands/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical AxtraBase environment registry — one place that knows which
|
|
3
|
+
* origins belong together (Sprint #11 P0-2).
|
|
4
|
+
*
|
|
5
|
+
* The clean-room test failed because the API origin and the dashboard origin
|
|
6
|
+
* were resolved wholly independently: pointing the CLI at staging left the
|
|
7
|
+
* dashboard on the production default, so `axtrabase login` opened an origin
|
|
8
|
+
* that isn't deployed and the real staging dashboard had to be found
|
|
9
|
+
* out-of-band. Origins are therefore paired here as a unit, and never
|
|
10
|
+
* defaulted one at a time.
|
|
11
|
+
*
|
|
12
|
+
* Staging runs on axtraxia.com (the trading-name domain the platform is
|
|
13
|
+
* deployed under today); production is reserved on axtrabase.com and does
|
|
14
|
+
* NOT exist yet — see PROGRESS.md. `DEFAULT_ENVIRONMENT` is staging for
|
|
15
|
+
* exactly that reason: defaulting to an undeployed production is what made
|
|
16
|
+
* a fresh install unusable. Flip it when production is live.
|
|
17
|
+
*/
|
|
18
|
+
export interface AxtraEnvironment {
|
|
19
|
+
name: AxtraEnvironmentName;
|
|
20
|
+
apiUrl: string;
|
|
21
|
+
dashboardUrl: string;
|
|
22
|
+
docsUrl: string;
|
|
23
|
+
/** False while the environment has no deployment behind it, so CLI output can say so plainly. */
|
|
24
|
+
deployed: boolean;
|
|
25
|
+
}
|
|
26
|
+
export type AxtraEnvironmentName = "staging" | "production";
|
|
27
|
+
export declare const ENVIRONMENTS: Record<AxtraEnvironmentName, AxtraEnvironment>;
|
|
28
|
+
/**
|
|
29
|
+
* The environment a fresh install talks to. Staging is the only deployed
|
|
30
|
+
* environment today (Sprint #11 P1-14: the supported live environment must
|
|
31
|
+
* be obvious without source-repository knowledge).
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_ENVIRONMENT: AxtraEnvironmentName;
|
|
34
|
+
export declare const ENVIRONMENT_NAMES: AxtraEnvironmentName[];
|
|
35
|
+
export declare function isEnvironmentName(value: string): value is AxtraEnvironmentName;
|
|
36
|
+
/**
|
|
37
|
+
* Which known environment an origin belongs to, or undefined for a custom
|
|
38
|
+
* origin (a local API, a preview stack). Used to pair a dashboard to an
|
|
39
|
+
* explicitly-set API URL, and to detect a cross-environment mismatch.
|
|
40
|
+
*/
|
|
41
|
+
export declare function environmentForApiUrl(apiUrl: string): AxtraEnvironment | undefined;
|
|
42
|
+
export declare function environmentForDashboardUrl(dashboardUrl: string): AxtraEnvironment | undefined;
|
|
43
|
+
//# sourceMappingURL=environments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/config/environments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE5D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAevE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,oBAAgC,CAAC;AAEnE,eAAO,MAAM,iBAAiB,EAAgC,oBAAoB,EAAE,CAAC;AAErF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,oBAAoB,CAE9E;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAGjF;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAG7F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const ENVIRONMENTS = {
|
|
2
|
+
staging: {
|
|
3
|
+
name: "staging",
|
|
4
|
+
apiUrl: "https://api-stg.axtraxia.com",
|
|
5
|
+
dashboardUrl: "https://app-stg.axtraxia.com",
|
|
6
|
+
docsUrl: "https://docs-stg.axtraxia.com",
|
|
7
|
+
deployed: true
|
|
8
|
+
},
|
|
9
|
+
production: {
|
|
10
|
+
name: "production",
|
|
11
|
+
apiUrl: "https://api.axtrabase.com",
|
|
12
|
+
dashboardUrl: "https://app.axtrabase.com",
|
|
13
|
+
docsUrl: "https://docs.axtrabase.com",
|
|
14
|
+
deployed: false
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The environment a fresh install talks to. Staging is the only deployed
|
|
19
|
+
* environment today (Sprint #11 P1-14: the supported live environment must
|
|
20
|
+
* be obvious without source-repository knowledge).
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_ENVIRONMENT = "staging";
|
|
23
|
+
export const ENVIRONMENT_NAMES = Object.keys(ENVIRONMENTS);
|
|
24
|
+
export function isEnvironmentName(value) {
|
|
25
|
+
return ENVIRONMENT_NAMES.includes(value);
|
|
26
|
+
}
|
|
27
|
+
function normaliseOrigin(url) {
|
|
28
|
+
return url.trim().replace(/\/$/, "").toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Which known environment an origin belongs to, or undefined for a custom
|
|
32
|
+
* origin (a local API, a preview stack). Used to pair a dashboard to an
|
|
33
|
+
* explicitly-set API URL, and to detect a cross-environment mismatch.
|
|
34
|
+
*/
|
|
35
|
+
export function environmentForApiUrl(apiUrl) {
|
|
36
|
+
const origin = normaliseOrigin(apiUrl);
|
|
37
|
+
return Object.values(ENVIRONMENTS).find((env) => normaliseOrigin(env.apiUrl) === origin);
|
|
38
|
+
}
|
|
39
|
+
export function environmentForDashboardUrl(dashboardUrl) {
|
|
40
|
+
const origin = normaliseOrigin(dashboardUrl);
|
|
41
|
+
return Object.values(ENVIRONMENTS).find((env) => normaliseOrigin(env.dashboardUrl) === origin);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=environments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/config/environments.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,YAAY,GAAmD;IAC1E,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,8BAA8B;QACtC,YAAY,EAAE,8BAA8B;QAC5C,OAAO,EAAE,+BAA+B;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,2BAA2B;QACnC,YAAY,EAAE,2BAA2B;QACzC,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAyB,SAAS,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAA2B,CAAC;AAErF,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,YAAoB;IAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,CAAC;AACjG,CAAC"}
|
package/dist/config/resolve.d.ts
CHANGED
|
@@ -1,8 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { type AxtraEnvironment, type AxtraEnvironmentName } from "./environments.js";
|
|
2
|
+
/**
|
|
3
|
+
* Kept as the *default environment's* origins rather than hard-coded
|
|
4
|
+
* production ones, so nothing can reintroduce the Sprint #11 P0-2 split
|
|
5
|
+
* where the API defaulted to one environment and the dashboard to another.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_API_URL: string;
|
|
8
|
+
export declare const DEFAULT_DASHBOARD_URL: string;
|
|
9
|
+
/** explicit flag > AXTRABASE_ENV > saved config > DEFAULT_ENVIRONMENT. */
|
|
10
|
+
export declare function resolveEnvironmentName(flagValue?: string): AxtraEnvironmentName;
|
|
11
|
+
export declare function resolveEnvironment(flagValue?: string): AxtraEnvironment;
|
|
12
|
+
/** explicit flag > AXTRABASE_API_URL > saved config > the active environment's API origin. */
|
|
4
13
|
export declare function resolveApiUrl(flagValue?: string): string;
|
|
5
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Resolved as one half of a PAIR, never independently (Sprint #11 P0-2).
|
|
16
|
+
*
|
|
17
|
+
* After the usual explicit sources, the dashboard follows whichever
|
|
18
|
+
* environment the resolved API URL belongs to — so configuring only the API
|
|
19
|
+
* can never again leave the dashboard pointing at a different (or
|
|
20
|
+
* undeployed) environment. A custom API origin with no dashboard override
|
|
21
|
+
* falls back to the active environment's dashboard.
|
|
22
|
+
*
|
|
23
|
+
* An explicit dashboard that belongs to a *different* known environment than
|
|
24
|
+
* the resolved API is a mismatch and throws rather than being silently
|
|
25
|
+
* accepted: that combination cannot produce a working login.
|
|
26
|
+
*/
|
|
6
27
|
export declare function resolveDashboardUrl(flagValue?: string): string;
|
|
7
28
|
/** explicit flag > AXTRABASE_PROJECT environment variable > saved config (build brief §9, §26). */
|
|
8
29
|
export declare function resolveProjectId(flagValue?: string): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAA2C,CAAC;AACxE,eAAO,MAAM,qBAAqB,QAAiD,CAAC;AAMpF,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAa/E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA4B9D;AAED,mGAAmG;AACnG,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,aAAa,GAAG,SAAS,CAMxD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAGlD"}
|
package/dist/config/resolve.js
CHANGED
|
@@ -1,22 +1,70 @@
|
|
|
1
1
|
import { CredentialStore } from "./credentials.js";
|
|
2
2
|
import { ConfigStore } from "./store.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
3
|
+
import { CliError } from "../http/errors.js";
|
|
4
|
+
import { DEFAULT_ENVIRONMENT, ENVIRONMENTS, environmentForApiUrl, environmentForDashboardUrl, isEnvironmentName } from "./environments.js";
|
|
5
|
+
/**
|
|
6
|
+
* Kept as the *default environment's* origins rather than hard-coded
|
|
7
|
+
* production ones, so nothing can reintroduce the Sprint #11 P0-2 split
|
|
8
|
+
* where the API defaulted to one environment and the dashboard to another.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_API_URL = ENVIRONMENTS[DEFAULT_ENVIRONMENT].apiUrl;
|
|
11
|
+
export const DEFAULT_DASHBOARD_URL = ENVIRONMENTS[DEFAULT_ENVIRONMENT].dashboardUrl;
|
|
12
|
+
function trimTrailingSlash(value) {
|
|
13
|
+
return value.replace(/\/$/, "");
|
|
14
|
+
}
|
|
15
|
+
/** explicit flag > AXTRABASE_ENV > saved config > DEFAULT_ENVIRONMENT. */
|
|
16
|
+
export function resolveEnvironmentName(flagValue) {
|
|
17
|
+
const raw = flagValue ?? process.env.AXTRABASE_ENV ?? new ConfigStore().read().environment;
|
|
18
|
+
if (raw === undefined)
|
|
19
|
+
return DEFAULT_ENVIRONMENT;
|
|
20
|
+
const value = raw.trim().toLowerCase();
|
|
21
|
+
if (!isEnvironmentName(value)) {
|
|
22
|
+
throw new CliError("AXTRA_CLI_VALIDATION_ERROR", `Unknown AxtraBase environment "${raw}". Expected one of: ${Object.keys(ENVIRONMENTS).join(", ")}.`, { status: 0 });
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
export function resolveEnvironment(flagValue) {
|
|
27
|
+
return ENVIRONMENTS[resolveEnvironmentName(flagValue)];
|
|
28
|
+
}
|
|
29
|
+
/** explicit flag > AXTRABASE_API_URL > saved config > the active environment's API origin. */
|
|
6
30
|
export function resolveApiUrl(flagValue) {
|
|
7
31
|
const value = flagValue ??
|
|
8
32
|
process.env.AXTRABASE_API_URL ??
|
|
9
33
|
new ConfigStore().read().apiUrl ??
|
|
10
|
-
|
|
11
|
-
return value
|
|
34
|
+
resolveEnvironment().apiUrl;
|
|
35
|
+
return trimTrailingSlash(value);
|
|
12
36
|
}
|
|
13
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Resolved as one half of a PAIR, never independently (Sprint #11 P0-2).
|
|
39
|
+
*
|
|
40
|
+
* After the usual explicit sources, the dashboard follows whichever
|
|
41
|
+
* environment the resolved API URL belongs to — so configuring only the API
|
|
42
|
+
* can never again leave the dashboard pointing at a different (or
|
|
43
|
+
* undeployed) environment. A custom API origin with no dashboard override
|
|
44
|
+
* falls back to the active environment's dashboard.
|
|
45
|
+
*
|
|
46
|
+
* An explicit dashboard that belongs to a *different* known environment than
|
|
47
|
+
* the resolved API is a mismatch and throws rather than being silently
|
|
48
|
+
* accepted: that combination cannot produce a working login.
|
|
49
|
+
*/
|
|
14
50
|
export function resolveDashboardUrl(flagValue) {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
51
|
+
const apiUrl = resolveApiUrl();
|
|
52
|
+
const apiEnvironment = environmentForApiUrl(apiUrl);
|
|
53
|
+
const explicit = flagValue ?? process.env.AXTRABASE_DASHBOARD_URL ?? new ConfigStore().read().dashboardUrl;
|
|
54
|
+
if (explicit !== undefined) {
|
|
55
|
+
const dashboardUrl = trimTrailingSlash(explicit);
|
|
56
|
+
const dashboardEnvironment = environmentForDashboardUrl(dashboardUrl);
|
|
57
|
+
if (apiEnvironment &&
|
|
58
|
+
dashboardEnvironment &&
|
|
59
|
+
dashboardEnvironment.name !== apiEnvironment.name) {
|
|
60
|
+
throw new CliError("AXTRA_CLI_ENVIRONMENT_MISMATCH", `The configured API (${apiUrl}) is AxtraBase ${apiEnvironment.name}, but the configured dashboard (${dashboardUrl}) is ${dashboardEnvironment.name}. ` +
|
|
61
|
+
`Logging in against mismatched origins cannot work. Set both to one environment — "axtrabase config set environment ${apiEnvironment.name}" pairs them for you.`, { status: 0 });
|
|
62
|
+
}
|
|
63
|
+
return dashboardUrl;
|
|
64
|
+
}
|
|
65
|
+
// No explicit dashboard: pair it to the API's environment when the API is
|
|
66
|
+
// a known origin, otherwise fall back to the active environment.
|
|
67
|
+
return trimTrailingSlash((apiEnvironment ?? resolveEnvironment()).dashboardUrl);
|
|
20
68
|
}
|
|
21
69
|
/** explicit flag > AXTRABASE_PROJECT environment variable > saved config (build brief §9, §26). */
|
|
22
70
|
export function resolveProjectId(flagValue) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/config/store.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export interface CliConfig {
|
|
2
|
-
/**
|
|
2
|
+
/** Selects a whole AxtraBase environment (api + dashboard + docs origins together) — see config/environments.ts. Preferred over setting apiUrl/dashboardUrl by hand. */
|
|
3
|
+
environment?: string;
|
|
4
|
+
/** Overrides the active environment's API origin — see http/base-url.ts for the full precedence order. */
|
|
3
5
|
apiUrl?: string;
|
|
4
|
-
/**
|
|
6
|
+
/** Overrides the dashboard origin `axtrabase login` sends a user to. Normally unnecessary: the dashboard is paired to the API's environment automatically (Sprint #11 P0-2), and an override belonging to a different environment is rejected rather than silently used. */
|
|
5
7
|
dashboardUrl?: string;
|
|
6
8
|
organisationId?: string;
|
|
7
9
|
organisationSlug?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,wKAAwK;IACxK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0GAA0G;IAC1G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4QAA4Q;IAC5Q,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgBD;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,IAAI,IAAI,SAAS;IAiBjB,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAK9B,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;IAM5C,+GAA+G;IAC/G,KAAK,CAAC,GAAG,EAAE,MAAM,SAAS,GAAG,SAAS;CAMvC"}
|
package/dist/config/store.js
CHANGED
package/dist/config/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAe5C,MAAM,WAAW,GAAG;IAClB,aAAa;IACb,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,WAAW;IACX,aAAa;CACkC,CAAC;AAElD,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAQ,WAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACtB,IAAI;QACF,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,qIAAqI;YACrI,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAiB;QACrB,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,cAAc,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,KAAyB;QAC9B,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+GAA+G;IAC/G,KAAK,CAAC,GAAoB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,MAA+B;IAC/C,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC"}
|
package/dist/exit-codes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEpE,qLAAqL;AACrL,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEpE,qLAAqL;AACrL,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAgC3D"}
|
package/dist/exit-codes.js
CHANGED
|
@@ -21,6 +21,11 @@ export function exitCodeForErrorCode(code) {
|
|
|
21
21
|
case "AXTRA_API_KEY_REVOKED":
|
|
22
22
|
case "AXTRA_CLI_NOT_LOGGED_IN":
|
|
23
23
|
case "AXTRA_CLI_NO_API_KEY":
|
|
24
|
+
case "AXTRA_CLI_NON_INTERACTIVE":
|
|
25
|
+
// AXTRA_CLI_NON_INTERACTIVE is `login` with no terminal to prompt at.
|
|
26
|
+
// Its remedy is supplying a credential (AXTRABASE_CLI_TOKEN), so agents
|
|
27
|
+
// and CI get the same "authentication required" signal they already
|
|
28
|
+
// branch on. See prompt-masked.ts (Sprint #11 P1-10).
|
|
24
29
|
return EXIT_CODES.AUTHENTICATION_REQUIRED;
|
|
25
30
|
case "AXTRA_AUTHORISATION_ERROR":
|
|
26
31
|
case "AXTRA_TABLE_PERMISSION_DENIED":
|
|
@@ -33,6 +38,9 @@ export function exitCodeForErrorCode(code) {
|
|
|
33
38
|
case "AXTRA_VALIDATION_ERROR":
|
|
34
39
|
case "AXTRA_CLI_VALIDATION_ERROR":
|
|
35
40
|
case "AXTRA_CLI_NO_ACTIVE_PROJECT":
|
|
41
|
+
case "AXTRA_CLI_ENVIRONMENT_MISMATCH":
|
|
42
|
+
// A mismatched API/dashboard pair is misconfiguration the caller can
|
|
43
|
+
// fix, not a server-side failure — see config/environments.ts.
|
|
36
44
|
return EXIT_CODES.INVALID_ARGUMENTS;
|
|
37
45
|
default:
|
|
38
46
|
return EXIT_CODES.GENERIC_FAILURE;
|
package/dist/exit-codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,uBAAuB,EAAE,CAAC;IAC1B,oBAAoB,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC;IACZ,oBAAoB,EAAE,CAAC;IACvB,iBAAiB,EAAE,CAAC;CACZ,CAAC;AAIX,qLAAqL;AACrL,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,4BAA4B,CAAC;QAClC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,sBAAsB;
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,uBAAuB,EAAE,CAAC;IAC1B,oBAAoB,EAAE,CAAC;IACvB,SAAS,EAAE,CAAC;IACZ,oBAAoB,EAAE,CAAC;IACvB,iBAAiB,EAAE,CAAC;CACZ,CAAC;AAIX,qLAAqL;AACrL,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,4BAA4B,CAAC;QAClC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,yBAAyB,CAAC;QAC/B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,2BAA2B;YAC9B,sEAAsE;YACtE,wEAAwE;YACxE,oEAAoE;YACpE,sDAAsD;YACtD,OAAO,UAAU,CAAC,uBAAuB,CAAC;QAC5C,KAAK,2BAA2B,CAAC;QACjC,KAAK,+BAA+B;YAClC,OAAO,UAAU,CAAC,oBAAoB,CAAC;QACzC,KAAK,wBAAwB,CAAC;QAC9B,KAAK,uBAAuB;YAC1B,OAAO,UAAU,CAAC,SAAS,CAAC;QAC9B,KAAK,4BAA4B;YAC/B,OAAO,UAAU,CAAC,oBAAoB,CAAC;QACzC,KAAK,wBAAwB,CAAC;QAC9B,KAAK,4BAA4B,CAAC;QAClC,KAAK,6BAA6B,CAAC;QACnC,KAAK,gCAAgC;YACnC,qEAAqE;YACrE,+DAA+D;YAC/D,OAAO,UAAU,CAAC,iBAAiB,CAAC;QACtC;YACE,OAAO,UAAU,CAAC,eAAe,CAAC;IACtC,CAAC;AACH,CAAC"}
|