@axtrabase/cli 0.1.3 → 0.1.5
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 +2 -0
- 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 +33 -17
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts +4 -4
- package/dist/commands/context.js +6 -6
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/keys.js +4 -2
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/permissions.d.ts +42 -4
- package/dist/commands/permissions.d.ts.map +1 -1
- package/dist/commands/permissions.js +144 -8
- package/dist/commands/permissions.js.map +1 -1
- package/dist/commands/tables.js +29 -0
- package/dist/commands/tables.js.map +1 -1
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/exit-codes.js +6 -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 +116 -14
- package/dist/generators/typescript.js.map +1 -1
- package/dist/http/client.d.ts +1 -0
- package/dist/http/client.d.ts.map +1 -1
- package/dist/http/client.js +3 -0
- package/dist/http/client.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 +1 -1
package/README.md
CHANGED
|
@@ -134,6 +134,8 @@ Every command supports `-h`/`--help`.
|
|
|
134
134
|
|
|
135
135
|
## `context` — the one command to start with
|
|
136
136
|
|
|
137
|
+
It runs against the **active project**, so select one first — `axtrabase projects list`, then `axtrabase projects use <project>` (or pass `--project <project>` to any command). Until then it stops with `AXTRA_CLI_NO_ACTIVE_PROJECT`.
|
|
138
|
+
|
|
137
139
|
```bash
|
|
138
140
|
axtrabase context
|
|
139
141
|
axtrabase context --json # the full payload, machine-readable
|
package/dist/api-types.d.ts
CHANGED
|
@@ -95,6 +95,15 @@ export interface TableColumn {
|
|
|
95
95
|
source?: string | null;
|
|
96
96
|
/** False for calculated/rollup and other derived columns; null when unknown. */
|
|
97
97
|
isWritable?: boolean | null;
|
|
98
|
+
/** File/Image columns: Dataverse's per-column size ceiling. null = not reported, never "no limit". */
|
|
99
|
+
maxSizeInKb?: number | null;
|
|
100
|
+
/**
|
|
101
|
+
* Image columns: false means only a thumbnail is stored. An image column
|
|
102
|
+
* always stores a thumbnail and keeps the full-size original only when
|
|
103
|
+
* configured to, so "image" alone does not mean the original is available.
|
|
104
|
+
*/
|
|
105
|
+
canStoreFullImage?: boolean | null;
|
|
106
|
+
isPrimaryImage?: boolean | null;
|
|
98
107
|
}
|
|
99
108
|
export interface TablePermissionRow {
|
|
100
109
|
apiKeyId: string;
|
|
@@ -140,10 +149,40 @@ export interface TablePermissionRowFlat {
|
|
|
140
149
|
table: string;
|
|
141
150
|
isEnabled: boolean;
|
|
142
151
|
apiKeyId: string;
|
|
152
|
+
apiKeyName?: string;
|
|
153
|
+
/** ISO timestamp when the owning key was revoked, or null if it is live. */
|
|
154
|
+
keyRevokedAt?: string | null;
|
|
155
|
+
/** False when the owning key is revoked — the grant row exists but confers nothing. */
|
|
156
|
+
isEffective?: boolean;
|
|
157
|
+
canRead: boolean;
|
|
158
|
+
canCreate: boolean;
|
|
159
|
+
canUpdate: boolean;
|
|
160
|
+
canDelete: boolean;
|
|
161
|
+
}
|
|
162
|
+
/** One table's outcome from PUT /api/v1/projects/:id/table-permissions/bulk. */
|
|
163
|
+
export interface TablePermissionResultRow {
|
|
164
|
+
table: string;
|
|
165
|
+
isEnabled: boolean;
|
|
143
166
|
canRead: boolean;
|
|
144
167
|
canCreate: boolean;
|
|
145
168
|
canUpdate: boolean;
|
|
146
169
|
canDelete: boolean;
|
|
170
|
+
/** "pending" means Dataverse refused the privilege change — the grant is recorded as desired but confers no access yet. */
|
|
171
|
+
status: "synced" | "pending";
|
|
172
|
+
dataverseRoleSync: {
|
|
173
|
+
roleId: string;
|
|
174
|
+
added: string[];
|
|
175
|
+
removed: string[];
|
|
176
|
+
} | null;
|
|
177
|
+
errorCode?: string;
|
|
178
|
+
errorMessage?: string;
|
|
179
|
+
}
|
|
180
|
+
export interface TablePermissionBulkResponse {
|
|
181
|
+
apiKeyId: string;
|
|
182
|
+
requested: number;
|
|
183
|
+
succeeded: number;
|
|
184
|
+
failed: number;
|
|
185
|
+
results: TablePermissionResultRow[];
|
|
147
186
|
}
|
|
148
187
|
export interface RequestLogRow {
|
|
149
188
|
id: string;
|
package/dist/api-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../src/api-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../src/api-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H5D"}
|
package/dist/commands/config.js
CHANGED
|
@@ -41,30 +41,46 @@ export function registerConfigCommand(program) {
|
|
|
41
41
|
const config = program.command("config").description("Inspect or change local CLI configuration");
|
|
42
42
|
config
|
|
43
43
|
.command("list")
|
|
44
|
-
.description("Show every
|
|
44
|
+
.description("Show every setting in effect, marking defaults")
|
|
45
45
|
.action(async function () {
|
|
46
46
|
const options = this.optsWithGlobals();
|
|
47
47
|
await runWithErrorHandling(async () => {
|
|
48
48
|
const values = new ConfigStore().read();
|
|
49
|
+
// "No config set." was true of the file and useless to the reader:
|
|
50
|
+
// the CLI is always on SOME environment talking to SOME origins, and
|
|
51
|
+
// a clean-room tester could not confirm which without making an
|
|
52
|
+
// authenticated call. Show what is in effect, marking defaults, so
|
|
53
|
+
// this answers "where am I pointed?" before any login.
|
|
54
|
+
const effective = {
|
|
55
|
+
environment: {
|
|
56
|
+
value: effectiveValueFor("environment"),
|
|
57
|
+
explicit: values.environment !== undefined
|
|
58
|
+
},
|
|
59
|
+
apiUrl: {
|
|
60
|
+
value: values.apiUrl ?? effectiveValueFor("apiUrl"),
|
|
61
|
+
explicit: values.apiUrl !== undefined
|
|
62
|
+
},
|
|
63
|
+
dashboardUrl: {
|
|
64
|
+
value: values.dashboardUrl ?? effectiveValueFor("dashboardUrl"),
|
|
65
|
+
explicit: values.dashboardUrl !== undefined
|
|
66
|
+
}
|
|
67
|
+
};
|
|
49
68
|
if (options.json) {
|
|
50
|
-
printJson(values);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const lines = [];
|
|
54
|
-
if (values.apiUrl)
|
|
55
|
-
lines.push(`api-url: ${values.apiUrl}`);
|
|
56
|
-
if (values.dashboardUrl)
|
|
57
|
-
lines.push(`dashboard-url: ${values.dashboardUrl}`);
|
|
58
|
-
if (values.organisationId) {
|
|
59
|
-
lines.push(`organisation: ${values.organisationSlug ?? values.organisationId} (${values.organisationId})`);
|
|
60
|
-
}
|
|
61
|
-
if (values.projectId) {
|
|
62
|
-
lines.push(`project: ${values.projectSlug ?? values.projectId} (${values.projectId})`);
|
|
63
|
-
}
|
|
64
|
-
if (lines.length === 0) {
|
|
65
|
-
printLine("No config set.");
|
|
69
|
+
printJson({ ...values, effective });
|
|
66
70
|
return;
|
|
67
71
|
}
|
|
72
|
+
const mark = (explicit) => (explicit ? "" : " (default)");
|
|
73
|
+
const lines = [
|
|
74
|
+
`environment: ${values.environment ?? effective.environment.value}${mark(effective.environment.explicit)}`,
|
|
75
|
+
`api-url: ${effective.apiUrl.value}${mark(effective.apiUrl.explicit)}`,
|
|
76
|
+
`dashboard-url: ${effective.dashboardUrl.value}${mark(effective.dashboardUrl.explicit)}`
|
|
77
|
+
];
|
|
78
|
+
lines.push(values.organisationId
|
|
79
|
+
? `organisation: ${values.organisationSlug ?? values.organisationId} (${values.organisationId})`
|
|
80
|
+
: "organisation: (none selected — axtrabase orgs use <org>)");
|
|
81
|
+
lines.push(values.projectId
|
|
82
|
+
? `project: ${values.projectSlug ?? values.projectId} (${values.projectId})`
|
|
83
|
+
: "project: (none selected — axtrabase projects use <project>)");
|
|
68
84
|
for (const line of lines)
|
|
69
85
|
printLine(line);
|
|
70
86
|
}, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAO1D,mOAAmO;AACnO,MAAM,WAAW,GAAoC;IACnD,sEAAsE;IACtE,oEAAoE;IACpE,8DAA8D;IAC9D,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,aAAa;IAClB,SAAS,EAAE,QAAQ;IACnB,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,gBAAgB;IAC9B,GAAG,EAAE,gBAAgB;IACrB,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,QAAQ,CAChB,4BAA4B,EAC5B,uBAAuB,KAAK,kBAAkB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACpF,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kJAAkJ;AAClJ,SAAS,iBAAiB,CAAC,KAAsB;IAC/C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,sBAAsB,EAAE,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,aAAa,EAAE,CAAC;QACzB,KAAK,cAAc;YACjB,OAAO,mBAAmB,EAAE,CAAC;QAC/B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC;IAElG,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,20 +23,20 @@ export declare const DATA_PLANE_AGENT_INFO: {
|
|
|
23
23
|
readonly envVar: "AXTRABASE_API_KEY";
|
|
24
24
|
readonly kind: "project API key — data plane only (records and events)";
|
|
25
25
|
readonly notTheSameAs: "the CLI token (axcli_...), which is control plane only and can never read records";
|
|
26
|
-
readonly howToObtain: "Ask the human operator. They run `axtrabase keys create --name <name>`, grant
|
|
26
|
+
readonly howToObtain: "Ask the human operator. They run `axtrabase keys create --name <name>`, then `axtrabase permissions grant <key-id> <table>` for the tables you need, and hand you the raw key.";
|
|
27
27
|
readonly howToRevoke: "The human runs `axtrabase keys revoke <id>` when you are done with it.";
|
|
28
28
|
readonly handling: "Never print, log, echo, write to a file, or commit this key.";
|
|
29
29
|
};
|
|
30
30
|
readonly reading: {
|
|
31
31
|
readonly sdk: "npm install @axtrabase/sdk";
|
|
32
32
|
readonly example: string;
|
|
33
|
-
readonly rest: "GET {apiBaseUrl}/<
|
|
34
|
-
readonly note: "Use the table's
|
|
33
|
+
readonly rest: "GET {apiBaseUrl}/<logicalName>?limit=3 with header: Authorization: Bearer $AXTRABASE_API_KEY";
|
|
34
|
+
readonly note: "Use the table's logicalName (e.g. adp_expenseitem). That is what GET /api/v1/tables returns as each table's `name`, and what table permissions are granted against. Entity-set names also resolve, but logicalName is the identifier to build on.";
|
|
35
35
|
};
|
|
36
36
|
readonly ifDenied: {
|
|
37
37
|
readonly code: "AXTRA_TABLE_PERMISSION_DENIED";
|
|
38
38
|
readonly meaning: "The key is valid but has not been granted this action on this table. This is the platform working as designed — do not route around it.";
|
|
39
|
-
readonly fix: "Ask the human to grant
|
|
39
|
+
readonly fix: "Ask the human to run `axtrabase permissions grant <key-id> <table>` for that table, then retry.";
|
|
40
40
|
};
|
|
41
41
|
readonly sampling: "When exploring an unfamiliar schema, read the smallest sample that answers your question (limit 3-5). Never bulk-export a customer table to inspect it.";
|
|
42
42
|
};
|
package/dist/commands/context.js
CHANGED
|
@@ -18,7 +18,7 @@ export const AGENT_RULES = [
|
|
|
18
18
|
"The access field on each table (R/C/U/D shorthand) is what this credential can actually do — never assume broader access than shown, and re-run this command after permissions change.",
|
|
19
19
|
"metadataCapabilities tells you what's actually known: 'unresolved' means AxtraBase does not have that information yet — never fabricate a relationship or a choice field's option values.",
|
|
20
20
|
"Two separate credentials, never interchangeable. The CLI token (axcli_...) is CONTROL PLANE only: projects, schema, permissions, metadata. It can never read or write records. A project API key (AXTRABASE_API_KEY) is DATA PLANE only: records and events. Never attempt to read records with the CLI token, and never ask for Dataverse or Microsoft credentials — AxtraBase does not expose them and does not need them.",
|
|
21
|
-
"If you have no API key, ask the human operator for one rather than creating it yourself. Creating a key is a deliberate human action (axtrabase keys create --name <name>), and a new key starts with NO table access until the human grants it
|
|
21
|
+
"If you have no API key, ask the human operator for one rather than creating it yourself. Creating a key is a deliberate human action (axtrabase keys create --name <name>), and a new key starts with NO table access until the human grants it (axtrabase permissions grant <key-id> <table>, or the dashboard). Say which tables you need to read and why; the human can then hand you a disposable key and revoke it afterwards with axtrabase keys revoke <id>.",
|
|
22
22
|
"Once given a key, set AXTRABASE_API_KEY and read through the SDK or REST API only — see the dataPlane field in this payload for the exact shape. Treat the key as a secret: never print it, never write it to a file, never commit it.",
|
|
23
23
|
"Use request IDs for debugging: axtrabase requests get <request-id> --json.",
|
|
24
24
|
'Events (the public Change Feed) are also available: axtrabase events list/get/tail, GET /api/v1/events(/:eventId|/stream), or axtra.events.* in the SDK — see this payload\'s events field. changedFields may be null, meaning the exact changed-field set is unknown, never "nothing changed." The stream is at-least-once, so deduplicate on event.id. Retention is finite — do not assume a full historical log exists.'
|
|
@@ -40,7 +40,7 @@ export const DATA_PLANE_AGENT_INFO = {
|
|
|
40
40
|
envVar: "AXTRABASE_API_KEY",
|
|
41
41
|
kind: "project API key — data plane only (records and events)",
|
|
42
42
|
notTheSameAs: "the CLI token (axcli_...), which is control plane only and can never read records",
|
|
43
|
-
howToObtain: "Ask the human operator. They run `axtrabase keys create --name <name>`, grant
|
|
43
|
+
howToObtain: "Ask the human operator. They run `axtrabase keys create --name <name>`, then `axtrabase permissions grant <key-id> <table>` for the tables you need, and hand you the raw key.",
|
|
44
44
|
howToRevoke: "The human runs `axtrabase keys revoke <id>` when you are done with it.",
|
|
45
45
|
handling: "Never print, log, echo, write to a file, or commit this key."
|
|
46
46
|
},
|
|
@@ -48,14 +48,14 @@ export const DATA_PLANE_AGENT_INFO = {
|
|
|
48
48
|
sdk: "npm install @axtrabase/sdk",
|
|
49
49
|
example: 'import { AxtraBase } from "@axtrabase/sdk";\n' +
|
|
50
50
|
"const axtra = new AxtraBase({ apiKey: process.env.AXTRABASE_API_KEY });\n" +
|
|
51
|
-
'const { data } = await axtra.table("<
|
|
52
|
-
rest: "GET {apiBaseUrl}/<
|
|
53
|
-
note: "Use the table's
|
|
51
|
+
'const { data } = await axtra.table("<logicalName>").list({ limit: 3 });',
|
|
52
|
+
rest: "GET {apiBaseUrl}/<logicalName>?limit=3 with header: Authorization: Bearer $AXTRABASE_API_KEY",
|
|
53
|
+
note: "Use the table's logicalName (e.g. adp_expenseitem). That is what GET /api/v1/tables returns as each table's `name`, and what table permissions are granted against. Entity-set names also resolve, but logicalName is the identifier to build on."
|
|
54
54
|
},
|
|
55
55
|
ifDenied: {
|
|
56
56
|
code: "AXTRA_TABLE_PERMISSION_DENIED",
|
|
57
57
|
meaning: "The key is valid but has not been granted this action on this table. This is the platform working as designed — do not route around it.",
|
|
58
|
-
fix: "Ask the human to grant
|
|
58
|
+
fix: "Ask the human to run `axtrabase permissions grant <key-id> <table>` for that table, then retry."
|
|
59
59
|
},
|
|
60
60
|
sampling: "When exploring an unfamiliar schema, read the smallest sample that answers your question (limit 3-5). Never bulk-export a customer table to inspect it."
|
|
61
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,2aAA2a;IAC3a,wKAAwK;IACxK,gGAAgG;IAChG,mIAAmI;IACnI,wLAAwL;IACxL,2LAA2L;IAC3L,8ZAA8Z;IAC9Z,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,2aAA2a;IAC3a,wKAAwK;IACxK,gGAAgG;IAChG,mIAAmI;IACnI,wLAAwL;IACxL,2LAA2L;IAC3L,8ZAA8Z;IAC9Z,qcAAqc;IACrc,wOAAwO;IACxO,4EAA4E;IAC5E,4ZAA4Z;CAC7Z,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU,EAAE;QACV,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,wDAAwD;QAC9D,YAAY,EACV,mFAAmF;QACrF,WAAW,EACT,gLAAgL;QAClL,WAAW,EAAE,wEAAwE;QACrF,QAAQ,EAAE,8DAA8D;KACzE;IACD,OAAO,EAAE;QACP,GAAG,EAAE,4BAA4B;QACjC,OAAO,EACL,+CAA+C;YAC/C,2EAA2E;YAC3E,yEAAyE;QAC3E,IAAI,EAAE,8FAA8F;QACpG,IAAI,EAAE,mPAAmP;KAC1P;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,+BAA+B;QACrC,OAAO,EACL,yIAAyI;QAC3I,GAAG,EAAE,iGAAiG;KACvG;IACD,QAAQ,EACN,yJAAyJ;CACnJ,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE;QACR,IAAI,EAAE,kGAAkG;QACxG,GAAG,EAAE,iCAAiC;QACtC,IAAI,EAAE,qGAAqG;KAC5G;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,oBAAoB;QAC1B,GAAG,EAAE,6BAA6B;QAClC,MAAM,EAAE,2BAA2B;KACpC;IACD,GAAG,EAAE,wEAAwE;IAC7E,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE;QACL,yMAAyM;QACzM,+KAA+K;QAC/K,4HAA4H;QAC5H,iIAAiI;QACjI,mKAAmK;KACpK;CACF,CAAC;AA+BF,MAAM,UAAU,mBAAmB,CAAC,EAClC,MAAM,EACN,WAAW,EACX,SAAS,EACQ;IACjB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,WAAW;YAAE,OAAO,YAAY,CAAC;QACrC,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC3E,CAAC;IACD,0EAA0E;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,yDAAyD;AACzD,MAAM,mBAAmB,GAAqC;IAC5D,mBAAmB,EAAE,0EAA0E;IAC/F,qBAAqB,EAAE,8DAA8D;IACrF,UAAU,EAAE,qCAAqC;IACjD,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;SACzE,MAAM,CAAC,SAAS,EAAE,+CAA+C,CAAC;SAClE,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAkB,CAAC;QACvD,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAuB;IAC/C,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;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,oBAAoB,SAAS,UAAU,EACvC;QACE,QAAQ,EAAE,OAAO,CAAC,MAAM;KACzB,CACF,CAAC;IACF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,CAAC;YACR,SAAS,EAAE;gBACT,KAAK,EAAE,WAAW;gBAClB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;gBACrB,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;gBACjD,SAAS,EAAE,EAAE,gBAAgB,EAAE,4CAA4C,EAAE;aAC9E;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,KAAK;gBACR,WAAW,EAAE,mBAAmB,CAAC;oBAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;oBACpC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;iBACnC,CAAC;aACH,CAAC,CAAC;YACH,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACxF,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,SAAS,EAAE,qBAAqB;YAChC,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA4B,EAC5B,MAAc,EACd,WAA+B;IAE/B,SAAS,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,SAAS,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACvF,IAAI,IAAI,CAAC,UAAU,EAAE,cAAc;QAAE,SAAS,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACjG,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,qBAAqB,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,kBAAkB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,SAAS,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,SAAS,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,SAAS,EAAE,CAAC;QACZ,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,CAAC,CAA4B,EAAE,EAAE,CAC/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YAChE,uEAAuE;YACvE,8CAA8C;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;YAC1E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,kBAAkB,CAAC,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS,EAAE,CAAC;gBACZ,SAAS,CAAC,mBAAmB,CAAC,CAAC;gBAC/B,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,SAAS,EAAE,CAAC;gBACZ,SAAS,CAAC,iCAAiC,CAAC,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,MAAM;oBAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,SAAS,EAAE,CAAC;gBACZ,SAAS,CAAC,+BAA+B,CAAC,CAAC;gBAC3C,KAAK,MAAM,CAAC,IAAI,UAAU;oBAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM;gBAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;YAChF,SAAS,EAAE,CAAC;YACZ,SAAS,CAAC,2DAA2D,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,kFAAkF,CAAC,CAAC;QAC9F,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAChE,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,MAAM,CAAC,CAAC;IAClB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,WAAW,CAAC,CAAC;IACvB,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAChC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC1C,SAAS,CAAC,qCAAqC,CAAC,CAAC;AACnD,CAAC"}
|
package/dist/commands/keys.js
CHANGED
|
@@ -87,8 +87,10 @@ async function runCreate(options) {
|
|
|
87
87
|
printLine("This key is DATA PLANE only — records and events. It cannot read or");
|
|
88
88
|
printLine("change projects, schema, or permissions, and it is not your CLI token.");
|
|
89
89
|
printLine();
|
|
90
|
-
printLine("It currently has NO table access. Grant it
|
|
91
|
-
printLine("
|
|
90
|
+
printLine("It currently has NO table access. Grant it the tables you want readable,");
|
|
91
|
+
printLine("before handing it to anyone:");
|
|
92
|
+
printLine(` axtrabase permissions grant ${data.id} <table> [<table>...]`);
|
|
93
|
+
printLine("That grants read only; --create/--update/--delete are explicit.");
|
|
92
94
|
printLine();
|
|
93
95
|
printLine("To hand it to a coding agent or CI job:");
|
|
94
96
|
printLine(` export AXTRABASE_API_KEY=${data.prefix}...`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,47 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
+
interface PermissionsOptions {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
debug?: boolean;
|
|
5
|
+
apiUrl?: string;
|
|
6
|
+
project?: string;
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
}
|
|
9
|
+
interface GrantOptions extends PermissionsOptions {
|
|
10
|
+
read?: boolean;
|
|
11
|
+
create?: boolean;
|
|
12
|
+
update?: boolean;
|
|
13
|
+
delete?: boolean;
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
16
|
+
* Inspect *and* change table permission grants (ADR-018). Writes were
|
|
17
|
+
* dashboard-only through v1; the second clean-room test showed what that
|
|
18
|
+
* cost — three dashboard round-trips in the middle of an agent handoff, and
|
|
19
|
+
* a key granted full CRUD when read was what was wanted. A control-plane
|
|
20
|
+
* token can already create and revoke the keys these grants apply to, so
|
|
21
|
+
* withholding the grant step bought no safety.
|
|
22
|
+
*
|
|
23
|
+
* Least privilege is the default here, not a flag: `grant` with no
|
|
24
|
+
* capability flags grants read and nothing else.
|
|
7
25
|
*/
|
|
8
26
|
export declare function registerPermissionsCommand(program: Command): void;
|
|
27
|
+
/**
|
|
28
|
+
* No capability flag means read, so the easy path is the least privileged
|
|
29
|
+
* one. `--create`/`--update`/`--delete` are additive and never imply read:
|
|
30
|
+
* the command prints the resulting access back so an over-broad grant is
|
|
31
|
+
* visible at the point it is made, not later in `permissions list`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function capabilitiesFor(options: GrantOptions): {
|
|
34
|
+
canRead: boolean;
|
|
35
|
+
canCreate: boolean;
|
|
36
|
+
canUpdate: boolean;
|
|
37
|
+
canDelete: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The argument is deliberately never echoed back. The likeliest wrong value
|
|
41
|
+
* here is a raw `axb_...` key pasted in place of its id, and this message
|
|
42
|
+
* reaches stderr, `--json` output and any CI log capturing them — so
|
|
43
|
+
* quoting the input would turn a typo into a leaked secret.
|
|
44
|
+
*/
|
|
45
|
+
export declare function requireApiKeyId(apiKeyId: string): string;
|
|
46
|
+
export {};
|
|
9
47
|
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAa,SAAQ,kBAAkB;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwCjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,CAQA;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASxD"}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { resolveActiveProjectId } from "../active-project.js";
|
|
2
2
|
import { requireControlPlaneClient } from "../http/authenticated-client.js";
|
|
3
|
+
import { CliError } from "../http/errors.js";
|
|
3
4
|
import { printJson, printLine } from "../output/print.js";
|
|
4
5
|
import { renderTable } from "../output/table.js";
|
|
5
6
|
import { runWithErrorHandling } from "../report-error.js";
|
|
7
|
+
/** A control-plane API key id, as `keys list` and `keys create` print it. */
|
|
8
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
6
9
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* Inspect *and* change table permission grants (ADR-018). Writes were
|
|
11
|
+
* dashboard-only through v1; the second clean-room test showed what that
|
|
12
|
+
* cost — three dashboard round-trips in the middle of an agent handoff, and
|
|
13
|
+
* a key granted full CRUD when read was what was wanted. A control-plane
|
|
14
|
+
* token can already create and revoke the keys these grants apply to, so
|
|
15
|
+
* withholding the grant step bought no safety.
|
|
16
|
+
*
|
|
17
|
+
* Least privilege is the default here, not a flag: `grant` with no
|
|
18
|
+
* capability flags grants read and nothing else.
|
|
11
19
|
*/
|
|
12
20
|
export function registerPermissionsCommand(program) {
|
|
13
21
|
const permissions = program
|
|
14
22
|
.command("permissions")
|
|
15
|
-
.description("Inspect table permission grants
|
|
23
|
+
.description("Inspect and change table permission grants");
|
|
16
24
|
permissions
|
|
17
25
|
.command("list")
|
|
18
26
|
.description("List every table permission grant in the active project")
|
|
@@ -22,6 +30,124 @@ export function registerPermissionsCommand(program) {
|
|
|
22
30
|
const options = this.optsWithGlobals();
|
|
23
31
|
await runWithErrorHandling(() => runList(options), options);
|
|
24
32
|
});
|
|
33
|
+
permissions
|
|
34
|
+
.command("grant")
|
|
35
|
+
.description("Grant an API key access to one or more tables (read only unless told otherwise)")
|
|
36
|
+
.argument("<api-key-id>", "the API key to grant access to (see `axtrabase keys list`)")
|
|
37
|
+
.argument("<tables...>", "one or more table logical names")
|
|
38
|
+
.option("--read", "allow reading records (the default when no capability flag is given)")
|
|
39
|
+
.option("--create", "allow creating records")
|
|
40
|
+
.option("--update", "allow updating records")
|
|
41
|
+
.option("--delete", "allow deleting records")
|
|
42
|
+
.option("--project <project>", "override the active project (id or slug)")
|
|
43
|
+
.action(async function (apiKeyId, tables) {
|
|
44
|
+
const options = this.optsWithGlobals();
|
|
45
|
+
await runWithErrorHandling(() => runGrant(apiKeyId, tables, options), options);
|
|
46
|
+
});
|
|
47
|
+
permissions
|
|
48
|
+
.command("revoke")
|
|
49
|
+
.description("Remove an API key's access to one or more tables")
|
|
50
|
+
.argument("<api-key-id>", "the API key to revoke access from")
|
|
51
|
+
.argument("<tables...>", "one or more table logical names")
|
|
52
|
+
.option("--project <project>", "override the active project (id or slug)")
|
|
53
|
+
.action(async function (apiKeyId, tables) {
|
|
54
|
+
const options = this.optsWithGlobals();
|
|
55
|
+
await runWithErrorHandling(() => runRevoke(apiKeyId, tables, options), options);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* No capability flag means read, so the easy path is the least privileged
|
|
60
|
+
* one. `--create`/`--update`/`--delete` are additive and never imply read:
|
|
61
|
+
* the command prints the resulting access back so an over-broad grant is
|
|
62
|
+
* visible at the point it is made, not later in `permissions list`.
|
|
63
|
+
*/
|
|
64
|
+
export function capabilitiesFor(options) {
|
|
65
|
+
const anyFlag = Boolean(options.read || options.create || options.update || options.delete);
|
|
66
|
+
return {
|
|
67
|
+
canRead: anyFlag ? Boolean(options.read) : true,
|
|
68
|
+
canCreate: Boolean(options.create),
|
|
69
|
+
canUpdate: Boolean(options.update),
|
|
70
|
+
canDelete: Boolean(options.delete)
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The argument is deliberately never echoed back. The likeliest wrong value
|
|
75
|
+
* here is a raw `axb_...` key pasted in place of its id, and this message
|
|
76
|
+
* reaches stderr, `--json` output and any CI log capturing them — so
|
|
77
|
+
* quoting the input would turn a typo into a leaked secret.
|
|
78
|
+
*/
|
|
79
|
+
export function requireApiKeyId(apiKeyId) {
|
|
80
|
+
if (!UUID.test(apiKeyId)) {
|
|
81
|
+
throw new CliError("AXTRA_CLI_VALIDATION_ERROR", "That is not an API key id. Run `axtrabase keys list` and use the ID column (a UUID) — not the key itself, and not its prefix.", { status: 0 });
|
|
82
|
+
}
|
|
83
|
+
return apiKeyId;
|
|
84
|
+
}
|
|
85
|
+
async function applyPermissions(apiKeyId, tables, permissions, options) {
|
|
86
|
+
// Validated before the client is built, so a mistyped id fails the same
|
|
87
|
+
// way whether or not the caller happens to be logged in.
|
|
88
|
+
const validApiKeyId = requireApiKeyId(apiKeyId);
|
|
89
|
+
const client = requireControlPlaneClient({ apiUrl: options.apiUrl });
|
|
90
|
+
const projectId = await resolveActiveProjectId(client, options.project);
|
|
91
|
+
const { data } = await client.put(`/api/v1/projects/${projectId}/table-permissions/bulk`, { apiKeyId: validApiKeyId, tables, permissions });
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
function resultRow(row) {
|
|
95
|
+
return [
|
|
96
|
+
row.table,
|
|
97
|
+
accessShorthand(row),
|
|
98
|
+
row.status === "synced" ? "granted" : "PENDING",
|
|
99
|
+
row.status === "synced" ? "" : (row.errorMessage ?? row.errorCode ?? "Dataverse refused it")
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A bulk write is per-row reconciliation, not all-or-nothing (see the bulk
|
|
104
|
+
* route's doc comment), so a partial result must not read as success: a
|
|
105
|
+
* script that granted nineteen of twenty tables has not done what it was
|
|
106
|
+
* asked, and for a revoke a pending row means the access may still be live.
|
|
107
|
+
*/
|
|
108
|
+
function failureError(data) {
|
|
109
|
+
return new CliError("AXTRA_CLI_PERMISSION_SYNC_INCOMPLETE", `${data.failed} of ${data.requested} table(s) could not be applied in Dataverse.`, { status: 0 });
|
|
110
|
+
}
|
|
111
|
+
function reportPending(data) {
|
|
112
|
+
printLine();
|
|
113
|
+
printLine(`${data.succeeded} of ${data.requested} table(s) applied. ${data.failed} pending.`);
|
|
114
|
+
printLine("A PENDING row is recorded as desired but Dataverse has not applied it:");
|
|
115
|
+
printLine("a pending grant confers no access, and a pending revoke may not have taken");
|
|
116
|
+
printLine("it away yet. Run Repair connection in the dashboard, then run this again.");
|
|
117
|
+
throw failureError(data);
|
|
118
|
+
}
|
|
119
|
+
async function runGrant(apiKeyId, tables, options) {
|
|
120
|
+
const data = await applyPermissions(apiKeyId, tables, capabilitiesFor(options), options);
|
|
121
|
+
if (options.json) {
|
|
122
|
+
printJson(data);
|
|
123
|
+
if (data.failed > 0)
|
|
124
|
+
throw failureError(data);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
printLine(renderTable(["TABLE", "ACCESS", "STATUS", "DETAIL"], data.results.map(resultRow)));
|
|
128
|
+
if (data.failed > 0)
|
|
129
|
+
reportPending(data);
|
|
130
|
+
printLine();
|
|
131
|
+
printLine(`Granted ${data.succeeded} of ${data.requested} table(s).`);
|
|
132
|
+
printLine("Access shorthand is R=read C=create U=update D=delete.");
|
|
133
|
+
}
|
|
134
|
+
async function runRevoke(apiKeyId, tables, options) {
|
|
135
|
+
const data = await applyPermissions(apiKeyId, tables, { canRead: false, canCreate: false, canUpdate: false, canDelete: false }, options);
|
|
136
|
+
if (options.json) {
|
|
137
|
+
printJson(data);
|
|
138
|
+
if (data.failed > 0)
|
|
139
|
+
throw failureError(data);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
printLine(renderTable(["TABLE", "ACCESS", "STATUS"], data.results.map((row) => [
|
|
143
|
+
row.table,
|
|
144
|
+
accessShorthand(row),
|
|
145
|
+
row.status === "synced" ? "revoked" : "PENDING"
|
|
146
|
+
])));
|
|
147
|
+
if (data.failed > 0)
|
|
148
|
+
reportPending(data);
|
|
149
|
+
printLine();
|
|
150
|
+
printLine(`Revoked access to ${data.succeeded} of ${data.requested} table(s).`);
|
|
25
151
|
}
|
|
26
152
|
function accessShorthand(row) {
|
|
27
153
|
return ((row.canRead ? "R" : "-") +
|
|
@@ -48,14 +174,24 @@ async function runList(options) {
|
|
|
48
174
|
printLine("No table permissions granted yet.");
|
|
49
175
|
return;
|
|
50
176
|
}
|
|
51
|
-
|
|
177
|
+
// A grant on a revoked key confers nothing. Showing it unmarked made this
|
|
178
|
+
// output actively misleading — a revoked key's five canRead rows read as
|
|
179
|
+
// "access is granted" while the only usable key showed nothing. Say so
|
|
180
|
+
// here rather than making a reader cross-check `keys list`.
|
|
181
|
+
printLine(renderTable(["TABLE", "API KEY", "ENABLED", "ACCESS", "KEY STATUS"], rows.map((row) => {
|
|
52
182
|
const key = keyById.get(row.apiKeyId);
|
|
183
|
+
const revoked = row.isEffective === false || Boolean(row.keyRevokedAt);
|
|
53
184
|
return [
|
|
54
185
|
row.table,
|
|
55
|
-
key ? `${key.name} (${key.prefix})` : row.apiKeyId,
|
|
186
|
+
key ? `${key.name} (${key.prefix})` : (row.apiKeyName ?? row.apiKeyId),
|
|
56
187
|
row.isEnabled ? "yes" : "no",
|
|
57
|
-
accessShorthand(row)
|
|
188
|
+
revoked ? `${accessShorthand(row)} (inactive)` : accessShorthand(row),
|
|
189
|
+
revoked ? "REVOKED" : "active"
|
|
58
190
|
];
|
|
59
191
|
})));
|
|
192
|
+
if (rows.some((row) => row.isEffective === false || Boolean(row.keyRevokedAt))) {
|
|
193
|
+
printLine();
|
|
194
|
+
printLine("Rows marked REVOKED belong to revoked API keys and grant no access.");
|
|
195
|
+
}
|
|
60
196
|
}
|
|
61
197
|
//# 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;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/commands/permissions.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tables.js
CHANGED
|
@@ -100,6 +100,13 @@ async function runDescribe(tableName, options) {
|
|
|
100
100
|
if (unresolvedChoices.length > 0) {
|
|
101
101
|
metadataGaps.push(`Choice values were not resolved for: ${unresolvedChoices.join(", ")}.`);
|
|
102
102
|
}
|
|
103
|
+
const unresolvedImages = data.columns
|
|
104
|
+
.filter((column) => column.type === "image" &&
|
|
105
|
+
(column.canStoreFullImage === null || column.canStoreFullImage === undefined))
|
|
106
|
+
.map((column) => column.logicalName);
|
|
107
|
+
if (unresolvedImages.length > 0) {
|
|
108
|
+
metadataGaps.push(`Whether the full-size image is stored was not resolved for: ${unresolvedImages.join(", ")}. A thumbnail is always stored; the original may not be.`);
|
|
109
|
+
}
|
|
103
110
|
printJson({ ...data, metadataGaps });
|
|
104
111
|
return;
|
|
105
112
|
}
|
|
@@ -122,6 +129,28 @@ async function runDescribe(tableName, options) {
|
|
|
122
129
|
column.source && column.source !== "stored" ? column.source : "—",
|
|
123
130
|
column.lookupTargets?.join(", ") || "—"
|
|
124
131
|
])));
|
|
132
|
+
// File and Image columns carry storage facts nothing else does, and an
|
|
133
|
+
// image column's most important one is invisible in the column list: it
|
|
134
|
+
// always stores a thumbnail and keeps the full-size original only when
|
|
135
|
+
// configured to. A caller that reads "image" and expects the original
|
|
136
|
+
// otherwise finds out from the bytes.
|
|
137
|
+
const fileColumns = data.columns.filter((column) => column.type === "file" || column.type === "image");
|
|
138
|
+
if (fileColumns.length > 0) {
|
|
139
|
+
printLine();
|
|
140
|
+
printLine("File and image columns:");
|
|
141
|
+
printLine(renderTable(["LOGICAL NAME", "TYPE", "MAX SIZE", "STORED"], fileColumns.map((column) => [
|
|
142
|
+
column.logicalName,
|
|
143
|
+
column.type,
|
|
144
|
+
typeof column.maxSizeInKb === "number" ? `${column.maxSizeInKb} KB` : "not reported",
|
|
145
|
+
column.type === "file"
|
|
146
|
+
? "file"
|
|
147
|
+
: column.canStoreFullImage === true
|
|
148
|
+
? "thumbnail + full size"
|
|
149
|
+
: column.canStoreFullImage === false
|
|
150
|
+
? "thumbnail only"
|
|
151
|
+
: "not reported"
|
|
152
|
+
])));
|
|
153
|
+
}
|
|
125
154
|
const choiceColumns = data.columns.filter((column) => column.options !== null && column.options !== undefined);
|
|
126
155
|
if (choiceColumns.length > 0) {
|
|
127
156
|
printLine();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/commands/tables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsB1D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAE5F,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;SACxC,MAAM,CAAC,YAAY,EAAE,uCAAuC,CAAC;SAC7D,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,4CAA4C,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,gBAAgB,EAAE,gEAAgE,CAAC;SAC1F,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAqB,CAAC;QAC1D,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,KAAK,WAAW,KAAa,EAAE,KAAc,EAAE,OAAgB;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAyB,CAAC;QACjE,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,WAA6C;IACpE,OAAO,CACL,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAA0B;IAC/C,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;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAsB,oBAAoB,SAAS,SAAS,EAAE;QAC7F,QAAQ,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACtD,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACtD,IACE,MAAM;YACN,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EACjD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,SAAS,CACP,WAAW,CACT,OAAO,EACP,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG;YACV,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YACtC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;SAC/B,CAAC;QACF,IAAI,OAAO,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,OAA8B;IAC1E,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;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,oBAAoB,SAAS,WAAW,SAAS,WAAW,CAC7D,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,sEAAsE;QACtE,kEAAkE;QAClE,oEAAoE;QACpE,2CAA2C;QAC3C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACpE,YAAY,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO;aACnC,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;YACjF,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAC5D;aACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,wCAAwC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7F,CAAC;QACD,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC;QACjB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;QAC3B,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;QAClC,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;QAClC,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QACrD,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;QACxC,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC;QACvC,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,IAAI,GAAG,CAAC;KACnD,CAAC,CAAC;IACH,SAAS,EAAE,CAAC;IACZ,SAAS,CAAC,UAAU,CAAC,CAAC;IACtB,SAAS,CACP,WAAW,CACT,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC,EAC/D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAChC,wEAAwE;QACxE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;QACjE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;KACxC,CAAC,CACH,CACF,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CACpE,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,KAAK,MAAM,CAAC,WAAW,wBAAwB,CAAC,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,SAAS,CAAC,KAAK,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,SAAS,CAAC,OAAO,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5B,SAAS,CACP,WAAW,CACT,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC,EAC/C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,YAAY,CAAC,IAAI;YACjB,YAAY,CAAC,IAAI;YACjB,YAAY,CAAC,IAAI,KAAK,cAAc;gBAClC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,IAAI,GAAG,CAAC;gBACpC,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,aAAa;oBACnC,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,IAAI,GAAG,CAAC;oBACvC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,IAAI,GAAG,CAAC;YAC5C,YAAY,CAAC,iBAAiB,IAAI,GAAG;SACtC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,SAAS,EAAE,CAAC;QACZ,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1B,SAAS,CACP,WAAW,CACT,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACnC,UAAU,CAAC,UAAU;YACrB,UAAU,CAAC,YAAY;YACvB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9B,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAClC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SACrC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO;SACnC,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;QACjF,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAC5D;SACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,wCAAwC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,EAAE,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/commands/tables.ts"],"names":[],"mappings":"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"}
|
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,CAsC3D"}
|
package/dist/exit-codes.js
CHANGED
|
@@ -42,6 +42,12 @@ export function exitCodeForErrorCode(code) {
|
|
|
42
42
|
// A mismatched API/dashboard pair is misconfiguration the caller can
|
|
43
43
|
// fix, not a server-side failure — see config/environments.ts.
|
|
44
44
|
return EXIT_CODES.INVALID_ARGUMENTS;
|
|
45
|
+
case "AXTRA_CLI_PERMISSION_SYNC_INCOMPLETE":
|
|
46
|
+
// A bulk grant/revoke Dataverse only partly applied. Not an argument
|
|
47
|
+
// error — the request was valid — so it stays a plain failure, but it
|
|
48
|
+
// must never exit 0: a pending grant confers no access, and a pending
|
|
49
|
+
// revoke may not have removed any.
|
|
50
|
+
return EXIT_CODES.GENERIC_FAILURE;
|
|
45
51
|
default:
|
|
46
52
|
return EXIT_CODES.GENERIC_FAILURE;
|
|
47
53
|
}
|
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,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"}
|
|
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,KAAK,sCAAsC;YACzC,qEAAqE;YACrE,sEAAsE;YACtE,sEAAsE;YACtE,mCAAmC;YACnC,OAAO,UAAU,CAAC,eAAe,CAAC;QACpC;YACE,OAAO,UAAU,CAAC,eAAe,CAAC;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { TableMetadataResponse } from "../api-types.js";
|
|
2
2
|
/** Generates a single `export interface` for one table's columns, over metadata fetched via HTTP (never Dataverse directly). */
|
|
3
3
|
export declare function generateInterface(table: TableMetadataResponse): string;
|
|
4
|
+
/**
|
|
5
|
+
* Create/update input types for one table.
|
|
6
|
+
*
|
|
7
|
+
* Requiredness alone is not enough to describe a column. Some columns are
|
|
8
|
+
* required on READ and impossible to WRITE — Dataverse's system columns
|
|
9
|
+
* (`createdbyyominame`, `owneridname`, `owningbusinessunitname` and
|
|
10
|
+
* friends) come back `isRequired: true` with `isWritable: false`. Emitting
|
|
11
|
+
* one interface for both directions made those mandatory in create
|
|
12
|
+
* payloads, so a caller building a create body from the generated types got
|
|
13
|
+
* a compiler demanding fields the API cannot accept.
|
|
14
|
+
*
|
|
15
|
+
* Read and write surfaces are therefore separate types, as Sprint #11 P1-8
|
|
16
|
+
* asks: preserve the contract rather than flatten it in either direction.
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateInputInterfaces(table: TableMetadataResponse): string;
|
|
4
19
|
export declare function generateTypeScriptModule(tables: TableMetadataResponse[]): string;
|
|
5
20
|
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/generators/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/generators/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAsH1E,gIAAgI;AAChI,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAe5E;AA2CD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAMhF"}
|
|
@@ -36,28 +36,108 @@ function toPascalCase(logicalName) {
|
|
|
36
36
|
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
37
37
|
.join("");
|
|
38
38
|
}
|
|
39
|
+
function tsTypeFor(column) {
|
|
40
|
+
return TS_TYPE_BY_COLUMN_TYPE[column.type] ?? "unknown";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Only an explicit `false` means not writable. Null or undefined means
|
|
44
|
+
* Dataverse did not say, and dropping a column on a guess would be a worse
|
|
45
|
+
* failure than keeping one that turns out to be read-only.
|
|
46
|
+
*/
|
|
47
|
+
function isWritableColumn(column) {
|
|
48
|
+
return column.isWritable !== false;
|
|
49
|
+
}
|
|
50
|
+
function isLookup(column) {
|
|
51
|
+
return column.type === "lookup" || column.type === "owner";
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Dataverse does not return a lookup under its own logical name. It returns
|
|
55
|
+
* the GUID as `_<logicalName>_value`, and the plain key is absent from the
|
|
56
|
+
* payload entirely. Emitting the plain name meant `record.adp_expensesubmission`
|
|
57
|
+
* was `undefined` on every row with a compiler that said it was fine — a
|
|
58
|
+
* silent failure on every lookup of every table, found by a clean-room test.
|
|
59
|
+
*/
|
|
60
|
+
function readPropertyName(column) {
|
|
61
|
+
return isLookup(column) ? `_${column.logicalName}_value` : column.logicalName;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Writes bind to the navigation property: `"<nav>@odata.bind": "/<set>(<guid>)"`.
|
|
65
|
+
* The navigation name comes from the table's resolved many-to-one
|
|
66
|
+
* relationships; without one the logical name is the best available guess,
|
|
67
|
+
* which the generated header says plainly.
|
|
68
|
+
*/
|
|
69
|
+
function writePropertyName(column, table) {
|
|
70
|
+
if (!isLookup(column))
|
|
71
|
+
return column.logicalName;
|
|
72
|
+
const relationship = (table.relationships ?? []).find((candidate) => candidate.kind === "many-to-one" && candidate.referencingColumn === column.logicalName);
|
|
73
|
+
return `"${relationship?.navigationName ?? column.logicalName}@odata.bind"`;
|
|
74
|
+
}
|
|
39
75
|
/**
|
|
40
|
-
* Requiredness is part of the schema contract, so it survives
|
|
41
|
-
* generated type:
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* platform guarantees it
|
|
76
|
+
* Read model. Requiredness is part of the schema contract, so it survives
|
|
77
|
+
* into the generated type: the primary key is always present, a
|
|
78
|
+
* Dataverse-required column is emitted as present and non-nullable, and
|
|
79
|
+
* everything else stays optional + nullable (a read need not return every
|
|
80
|
+
* column). Emitting required business fields as optional silently told
|
|
81
|
+
* every consumer a value might be absent when the platform guarantees it
|
|
82
|
+
* (Sprint #11 P1-8).
|
|
46
83
|
*/
|
|
47
84
|
function fieldLine(column) {
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
const alwaysPresent = column.isPrimaryId || column.isRequired;
|
|
85
|
+
// A lookup's _value property is not guaranteed present on a read that
|
|
86
|
+
// didn't select it, whatever the underlying column's required-ness says.
|
|
87
|
+
const alwaysPresent = (column.isPrimaryId || column.isRequired) && !isLookup(column);
|
|
52
88
|
const optional = alwaysPresent ? "" : "?";
|
|
53
89
|
const nullable = alwaysPresent ? "" : " | null";
|
|
54
|
-
return ` ${column
|
|
90
|
+
return ` ${readPropertyName(column)}${optional}: ${tsTypeFor(column)}${nullable};`;
|
|
91
|
+
}
|
|
92
|
+
/** Create input: the primary key is server-assigned, so accept it, never demand it. */
|
|
93
|
+
function createFieldLine(column, table) {
|
|
94
|
+
// The primary key is server-assigned, and so is the owner: Dataverse gives
|
|
95
|
+
// a new record to the calling user when ownerid is omitted, even though the
|
|
96
|
+
// column is SystemRequired. Demanding either would force callers to supply
|
|
97
|
+
// something the platform already fills in.
|
|
98
|
+
const required = column.isRequired && !column.isPrimaryId && column.type !== "owner";
|
|
99
|
+
return ` ${writePropertyName(column, table)}${required ? "" : "?"}: ${tsTypeFor(column)};`;
|
|
100
|
+
}
|
|
101
|
+
/** Update input: same writable surface, every field optional — updates are partial. */
|
|
102
|
+
function updateFieldLine(column, table) {
|
|
103
|
+
return ` ${writePropertyName(column, table)}?: ${tsTypeFor(column)};`;
|
|
55
104
|
}
|
|
56
105
|
/** Generates a single `export interface` for one table's columns, over metadata fetched via HTTP (never Dataverse directly). */
|
|
57
106
|
export function generateInterface(table) {
|
|
58
107
|
const name = toPascalCase(table.logicalName);
|
|
59
108
|
const lines = table.columns.map(fieldLine);
|
|
60
|
-
|
|
109
|
+
// Dataverse's @odata.etag arrives on every record through the data plane;
|
|
110
|
+
// the type says so rather than pretending it isn't there.
|
|
111
|
+
return [`export interface ${name} {`, ' "@odata.etag"?: string;', ...lines, `}`].join("\n");
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create/update input types for one table.
|
|
115
|
+
*
|
|
116
|
+
* Requiredness alone is not enough to describe a column. Some columns are
|
|
117
|
+
* required on READ and impossible to WRITE — Dataverse's system columns
|
|
118
|
+
* (`createdbyyominame`, `owneridname`, `owningbusinessunitname` and
|
|
119
|
+
* friends) come back `isRequired: true` with `isWritable: false`. Emitting
|
|
120
|
+
* one interface for both directions made those mandatory in create
|
|
121
|
+
* payloads, so a caller building a create body from the generated types got
|
|
122
|
+
* a compiler demanding fields the API cannot accept.
|
|
123
|
+
*
|
|
124
|
+
* Read and write surfaces are therefore separate types, as Sprint #11 P1-8
|
|
125
|
+
* asks: preserve the contract rather than flatten it in either direction.
|
|
126
|
+
*/
|
|
127
|
+
export function generateInputInterfaces(table) {
|
|
128
|
+
const name = toPascalCase(table.logicalName);
|
|
129
|
+
const writable = table.columns.filter(isWritableColumn);
|
|
130
|
+
return [
|
|
131
|
+
`export interface ${name}Create {`,
|
|
132
|
+
...writable.map((column) => createFieldLine(column, table)),
|
|
133
|
+
`}`,
|
|
134
|
+
``,
|
|
135
|
+
`export interface ${name}Update {`,
|
|
136
|
+
...writable
|
|
137
|
+
.filter((column) => !column.isPrimaryId)
|
|
138
|
+
.map((column) => updateFieldLine(column, table)),
|
|
139
|
+
`}`
|
|
140
|
+
].join("\n");
|
|
61
141
|
}
|
|
62
142
|
/**
|
|
63
143
|
* The generated-file header states the known metadata gap explicitly
|
|
@@ -76,12 +156,34 @@ function generatedHeader(tableNames) {
|
|
|
76
156
|
" * - Relationships (many-to-one, one-to-many, many-to-many).",
|
|
77
157
|
" * - Choice option values: a choice column is typed `number` (the",
|
|
78
158
|
" * underlying option value), not a literal union of its known options.",
|
|
159
|
+
" * - File and image storage limits. A file or image column is typed",
|
|
160
|
+
" * `string`; its size ceiling, and whether an image column stores the",
|
|
161
|
+
" * full-size original or only a thumbnail, are in",
|
|
162
|
+
" * `axtrabase tables describe <table>`.",
|
|
163
|
+
" *",
|
|
164
|
+
" * Lookups are not named after their column. Dataverse returns the GUID",
|
|
165
|
+
" * as `_<logicalName>_value` on read and accepts writes as",
|
|
166
|
+
" * `<navigationName>@odata.bind`; both forms are emitted below. Where no",
|
|
167
|
+
" * navigation name was resolved, the logical name is used and may need",
|
|
168
|
+
" * adjusting.",
|
|
169
|
+
" *",
|
|
170
|
+
" * Three types per table:",
|
|
171
|
+
" * - <Name> every column as read back; required columns present.",
|
|
172
|
+
" * - <Name>Create writable columns only; required-and-writable required.",
|
|
173
|
+
" * - <Name>Update writable columns only, all optional (partial update).",
|
|
174
|
+
" *",
|
|
175
|
+
" * Read-only columns (isWritable: false) are deliberately absent from the",
|
|
176
|
+
" * Create/Update types — several are required on read but rejected on",
|
|
177
|
+
" * write, so a single shared type would demand fields the API refuses.",
|
|
79
178
|
" */",
|
|
80
179
|
""
|
|
81
180
|
].join("\n");
|
|
82
181
|
}
|
|
83
182
|
export function generateTypeScriptModule(tables) {
|
|
84
|
-
const
|
|
85
|
-
|
|
183
|
+
const blocks = tables.flatMap((table) => [
|
|
184
|
+
generateInterface(table),
|
|
185
|
+
generateInputInterfaces(table)
|
|
186
|
+
]);
|
|
187
|
+
return `${generatedHeader(tables.map((t) => t.logicalName))}\n${blocks.join("\n\n")}\n`;
|
|
86
188
|
}
|
|
87
189
|
//# sourceMappingURL=typescript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/generators/typescript.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,sBAAsB,GAA2B;IACrD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,0EAA0E;IAC1E,gDAAgD;IAChD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,SAAS,YAAY,CAAC,WAAmB;IACvC,OAAO,WAAW;SACf,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/generators/typescript.ts"],"names":[],"mappings":"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"}
|
package/dist/http/client.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare class ControlPlaneClient {
|
|
|
37
37
|
}): Promise<RequestEnvelope<T>>;
|
|
38
38
|
get<T>(path: string, query?: Record<string, string | undefined>): Promise<RequestEnvelope<T>>;
|
|
39
39
|
post<T>(path: string, body?: unknown): Promise<RequestEnvelope<T>>;
|
|
40
|
+
put<T>(path: string, body?: unknown): Promise<RequestEnvelope<T>>;
|
|
40
41
|
delete<T>(path: string): Promise<RequestEnvelope<T>>;
|
|
41
42
|
}
|
|
42
43
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACzD;AAMD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,OAAO,EAAE,yBAAyB;IAOxC,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3E,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAiE9B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI7F,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIlE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAGrD"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACzD;AAMD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,OAAO,EAAE,yBAAyB;IAOxC,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3E,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAiE9B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAI7F,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAIjE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAGrD"}
|
package/dist/http/client.js
CHANGED
package/dist/http/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAuBvC;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IACZ,OAAO,CAAS;IAChB,KAAK,CAAqB;IAC1B,cAAc,CAAqB;IACnC,SAAS,CAAe;IAEzC,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAkB,EAClB,IAAY,EACZ,UAA0E,EAAE;QAE5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/D,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,OAAO,GAA2B;YACtC,oBAAoB,EAAE,eAAe;YACrC,yBAAyB,EAAE,WAAW;SACvC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,CAAC,6BAA6B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QACtF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAE7E,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;gBACnC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5E,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,yBAAyB,EACzB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,EAClE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAC5B,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,SAAS,CAAC;QAEpF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,4BAA4B,EAC5B,iEAAiE,EACjE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAiC,CAAC;YACpD,MAAM,IAAI,QAAQ,CAChB,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,yBAAyB,EAClD,SAAS,EAAE,KAAK,CAAC,OAAO,IAAI,8BAA8B,QAAQ,CAAC,MAAM,GAAG,EAC5E,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,eAAe,EAAE,CACtF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,SAAc,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,IAAI,EAAE,EAAE,EAAE,CAAC;QAC9E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAmC,CAAC;QACrD,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAS;YACxB,IAAI,EAAE;gBACJ,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,eAAe,IAAI,EAAE;gBAC5D,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU;aACtC;SACF,CAAC;IACJ,CAAC;IAED,GAAG,CAAI,IAAY,EAAE,KAA0C;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAI,IAAY,EAAE,IAAc;QAClC,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAI,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/report-error.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { CliError } from "./http/errors.js";
|
|
1
2
|
import { EXIT_CODES } from "./exit-codes.js";
|
|
2
3
|
export interface ErrorReportOptions {
|
|
3
4
|
json?: boolean;
|
|
4
|
-
/** Prints
|
|
5
|
+
/** Prints diagnostics (origins, credential source, status, cause) to stderr — never a raw secret (build brief §24: "redact secrets/tokens"). */
|
|
5
6
|
debug?: boolean;
|
|
7
|
+
/** The --api-url override, if the command was given one, so --debug reports the origin actually called. */
|
|
8
|
+
apiUrl?: string;
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
8
11
|
* The one place a caught error becomes CLI output + an exit code (build
|
|
@@ -12,6 +15,18 @@ export interface ErrorReportOptions {
|
|
|
12
15
|
* per-command.
|
|
13
16
|
*/
|
|
14
17
|
export declare function reportError(error: unknown, options?: ErrorReportOptions): never;
|
|
18
|
+
/**
|
|
19
|
+
* What --debug prints. It used to print only an error's `cause`, which an
|
|
20
|
+
* HTTP error response never has — so for a revoked token or a 403, the
|
|
21
|
+
* failures that most need diagnosing, --debug produced byte-identical output
|
|
22
|
+
* to running without it. A clean-room tester with a revoked first token then
|
|
23
|
+
* had to rule out an origin mismatch by hand, because the one fact that
|
|
24
|
+
* mattered — which origin the CLI just called — was never shown.
|
|
25
|
+
*
|
|
26
|
+
* Everything here is safe to paste into a bug report. The credential's
|
|
27
|
+
* SOURCE is shown; the credential itself never is.
|
|
28
|
+
*/
|
|
29
|
+
export declare function debugDiagnostics(error: CliError, apiUrlFlag?: string): string;
|
|
15
30
|
/** Wraps a command action so every command doesn't hand-roll the same try/catch; the action itself decides what --json/--debug values to pass through, since only it knows how to read the merged command options. */
|
|
16
31
|
export declare function runWithErrorHandling(action: () => Promise<void>, options: ErrorReportOptions): Promise<void>;
|
|
17
32
|
export { EXIT_CODES };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-error.d.ts","sourceRoot":"","sources":["../src/report-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report-error.d.ts","sourceRoot":"","sources":["../src/report-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAUnE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gJAAgJ;IAChJ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2GAA2G;IAC3G,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK,CA8BnF;AAuBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA2B7E;AAOD,sNAAsN;AACtN,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/report-error.js
CHANGED
|
@@ -2,6 +2,8 @@ import { AxtraBaseError } from "@axtrabase/sdk";
|
|
|
2
2
|
import { CliError } from "./http/errors.js";
|
|
3
3
|
import { EXIT_CODES, exitCodeForErrorCode } from "./exit-codes.js";
|
|
4
4
|
import { printJson, printLine } from "./output/print.js";
|
|
5
|
+
import { resolveApiUrl, resolveDashboardUrl, resolveEnvironmentName, resolveToken } from "./config/resolve.js";
|
|
6
|
+
import { CLI_VERSION } from "./version.js";
|
|
5
7
|
/**
|
|
6
8
|
* The one place a caught error becomes CLI output + an exit code (build
|
|
7
9
|
* brief §24). Every command's action calls this from its top-level catch —
|
|
@@ -33,8 +35,8 @@ export function reportError(error, options = {}) {
|
|
|
33
35
|
printLine(cliError.requestId);
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
if (options.debug
|
|
37
|
-
process.stderr.write(`${
|
|
38
|
+
if (options.debug) {
|
|
39
|
+
process.stderr.write(`${debugDiagnostics(cliError, options.apiUrl)}\n`);
|
|
38
40
|
}
|
|
39
41
|
process.exit(exitCodeForErrorCode(cliError.code));
|
|
40
42
|
}
|
|
@@ -59,6 +61,47 @@ function toCliError(error) {
|
|
|
59
61
|
}
|
|
60
62
|
return new CliError("AXTRA_CLI_UNEXPECTED_ERROR", "An unexpected error occurred.", { status: 0 });
|
|
61
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* What --debug prints. It used to print only an error's `cause`, which an
|
|
66
|
+
* HTTP error response never has — so for a revoked token or a 403, the
|
|
67
|
+
* failures that most need diagnosing, --debug produced byte-identical output
|
|
68
|
+
* to running without it. A clean-room tester with a revoked first token then
|
|
69
|
+
* had to rule out an origin mismatch by hand, because the one fact that
|
|
70
|
+
* mattered — which origin the CLI just called — was never shown.
|
|
71
|
+
*
|
|
72
|
+
* Everything here is safe to paste into a bug report. The credential's
|
|
73
|
+
* SOURCE is shown; the credential itself never is.
|
|
74
|
+
*/
|
|
75
|
+
export function debugDiagnostics(error, apiUrlFlag) {
|
|
76
|
+
const lines = ["", "--- debug ---", `cli version: ${CLI_VERSION}`];
|
|
77
|
+
const safely = (label, read) => {
|
|
78
|
+
try {
|
|
79
|
+
lines.push(`${label}${read()}`);
|
|
80
|
+
}
|
|
81
|
+
catch (resolveError) {
|
|
82
|
+
lines.push(`${label}(could not resolve: ${describeCause(resolveError)})`);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
safely("environment: ", () => resolveEnvironmentName());
|
|
86
|
+
safely("api origin: ", () => resolveApiUrl(apiUrlFlag));
|
|
87
|
+
safely("dashboard: ", () => resolveDashboardUrl());
|
|
88
|
+
safely("cli credential:", () => {
|
|
89
|
+
const token = resolveToken();
|
|
90
|
+
if (!token)
|
|
91
|
+
return " none";
|
|
92
|
+
return token.source === "env"
|
|
93
|
+
? " AXTRABASE_CLI_TOKEN (environment)"
|
|
94
|
+
: " stored credential file";
|
|
95
|
+
});
|
|
96
|
+
lines.push(`api key: ${process.env.AXTRABASE_API_KEY ? "AXTRABASE_API_KEY set" : "not set"}`);
|
|
97
|
+
lines.push(`http status: ${error.status || "(no response — network or local error)"}`);
|
|
98
|
+
lines.push(`error code: ${error.code}`);
|
|
99
|
+
if (error.requestId)
|
|
100
|
+
lines.push(`request id: ${error.requestId}`);
|
|
101
|
+
if (error.cause)
|
|
102
|
+
lines.push("cause:", describeCause(error.cause));
|
|
103
|
+
return lines.join("\n");
|
|
104
|
+
}
|
|
62
105
|
function describeCause(cause) {
|
|
63
106
|
if (cause instanceof Error)
|
|
64
107
|
return cause.stack ?? cause.message;
|
package/dist/report-error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-error.js","sourceRoot":"","sources":["../src/report-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"report-error.js","sourceRoot":"","sources":["../src/report-error.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Bump alongside package.json's version — read at runtime for --version and the X-AxtraBase-Client User-Agent, same convention as @axtrabase/sdk's SDK_VERSION. */
|
|
2
|
-
export declare const CLI_VERSION = "0.1.
|
|
2
|
+
export declare const CLI_VERSION = "0.1.5";
|
|
3
3
|
export declare const CLI_CLIENT_NAME = "axtrabase-cli";
|
|
4
4
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Bump alongside package.json's version — read at runtime for --version and the X-AxtraBase-Client User-Agent, same convention as @axtrabase/sdk's SDK_VERSION. */
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.5";
|
|
3
3
|
export const CLI_CLIENT_NAME = "axtrabase-cli";
|
|
4
4
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axtrabase/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "The AxtraBase CLI — inspect an AxtraBase project's schema, permissions, and environment, and build against it without touching Dataverse directly.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|