@absmartly/cli 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/api-client/api-client.d.ts +132 -14
- package/dist/api-client/api-client.d.ts.map +1 -1
- package/dist/api-client/api-client.js +255 -66
- package/dist/api-client/api-client.js.map +1 -1
- package/dist/commands/apikeys/index.js +9 -1
- package/dist/commands/apikeys/index.js.map +1 -1
- package/dist/commands/apps/index.js +9 -1
- package/dist/commands/apps/index.js.map +1 -1
- package/dist/commands/auth/index.js +30 -0
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/customfields/index.js +9 -1
- package/dist/commands/customfields/index.js.map +1 -1
- package/dist/commands/envs/index.js +9 -1
- package/dist/commands/envs/index.js.map +1 -1
- package/dist/commands/experiments/activity.js +1 -1
- package/dist/commands/experiments/activity.js.map +1 -1
- package/dist/commands/experiments/export.d.ts.map +1 -1
- package/dist/commands/experiments/export.js +11 -4
- package/dist/commands/experiments/export.js.map +1 -1
- package/dist/commands/experiments/list.js +1 -1
- package/dist/commands/experiments/list.js.map +1 -1
- package/dist/commands/goals/index.js +9 -1
- package/dist/commands/goals/index.js.map +1 -1
- package/dist/commands/goaltags/index.js +9 -1
- package/dist/commands/goaltags/index.js.map +1 -1
- package/dist/commands/metriccategories/index.js +9 -1
- package/dist/commands/metriccategories/index.js.map +1 -1
- package/dist/commands/metrics/index.d.ts.map +1 -1
- package/dist/commands/metrics/index.js +179 -29
- package/dist/commands/metrics/index.js.map +1 -1
- package/dist/commands/metrictags/index.js +9 -1
- package/dist/commands/metrictags/index.js.map +1 -1
- package/dist/commands/roles/index.js +9 -1
- package/dist/commands/roles/index.js.map +1 -1
- package/dist/commands/segments/index.js +9 -1
- package/dist/commands/segments/index.js.map +1 -1
- package/dist/commands/tags/index.js +9 -1
- package/dist/commands/tags/index.js.map +1 -1
- package/dist/commands/teams/index.js +10 -1
- package/dist/commands/teams/index.js.map +1 -1
- package/dist/commands/units/index.js +9 -1
- package/dist/commands/units/index.js.map +1 -1
- package/dist/commands/webhooks/index.js +9 -1
- package/dist/commands/webhooks/index.js.map +1 -1
- package/dist/core/activity/activity.js +1 -1
- package/dist/core/activity/activity.js.map +1 -1
- package/dist/core/apikeys/apikeys.js +1 -1
- package/dist/core/apikeys/apikeys.js.map +1 -1
- package/dist/core/apps/apps.js +1 -1
- package/dist/core/apps/apps.js.map +1 -1
- package/dist/core/customfields/list.js +1 -1
- package/dist/core/customfields/list.js.map +1 -1
- package/dist/core/envs/envs.js +1 -1
- package/dist/core/envs/envs.js.map +1 -1
- package/dist/core/experiments/custom-fields.js +1 -1
- package/dist/core/experiments/custom-fields.js.map +1 -1
- package/dist/core/experiments/metrics.js +1 -1
- package/dist/core/experiments/metrics.js.map +1 -1
- package/dist/core/goals/list.js +1 -1
- package/dist/core/goals/list.js.map +1 -1
- package/dist/core/goaltags/goaltags.js +1 -1
- package/dist/core/goaltags/goaltags.js.map +1 -1
- package/dist/core/metriccategories/metriccategories.js +1 -1
- package/dist/core/metriccategories/metriccategories.js.map +1 -1
- package/dist/core/metrics/create.d.ts +2 -12
- package/dist/core/metrics/create.d.ts.map +1 -1
- package/dist/core/metrics/create.js +3 -19
- package/dist/core/metrics/create.js.map +1 -1
- package/dist/core/metrics/new-version.d.ts +13 -0
- package/dist/core/metrics/new-version.d.ts.map +1 -0
- package/dist/core/metrics/new-version.js +9 -0
- package/dist/core/metrics/new-version.js.map +1 -0
- package/dist/core/metrics/payload.d.ts +56 -0
- package/dist/core/metrics/payload.d.ts.map +1 -0
- package/dist/core/metrics/payload.js +173 -0
- package/dist/core/metrics/payload.js.map +1 -0
- package/dist/core/metrics/update.d.ts +2 -0
- package/dist/core/metrics/update.d.ts.map +1 -1
- package/dist/core/metrics/update.js +4 -0
- package/dist/core/metrics/update.js.map +1 -1
- package/dist/core/metrictags/metrictags.js +1 -1
- package/dist/core/metrictags/metrictags.js.map +1 -1
- package/dist/core/resolve.d.ts +1 -0
- package/dist/core/resolve.d.ts.map +1 -1
- package/dist/core/resolve.js +8 -0
- package/dist/core/resolve.js.map +1 -1
- package/dist/core/roles/roles.js +1 -1
- package/dist/core/roles/roles.js.map +1 -1
- package/dist/core/segments/segments.js +1 -1
- package/dist/core/segments/segments.js.map +1 -1
- package/dist/core/tags/tags.js +1 -1
- package/dist/core/tags/tags.js.map +1 -1
- package/dist/core/teams/list.d.ts.map +1 -1
- package/dist/core/teams/list.js +5 -1
- package/dist/core/teams/list.js.map +1 -1
- package/dist/core/units/units.js +1 -1
- package/dist/core/units/units.js.map +1 -1
- package/dist/core/webhooks/list.js +1 -1
- package/dist/core/webhooks/list.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api/axios-adapter.d.ts +44 -11
- package/dist/lib/api/axios-adapter.d.ts.map +1 -1
- package/dist/lib/api/axios-adapter.js +211 -2
- package/dist/lib/api/axios-adapter.js.map +1 -1
- package/dist/lib/api/client.d.ts +2 -6
- package/dist/lib/api/client.d.ts.map +1 -1
- package/dist/lib/api/client.js +1 -1
- package/dist/lib/api/client.js.map +1 -1
- package/dist/lib/api/request-logger.d.ts +18 -0
- package/dist/lib/api/request-logger.d.ts.map +1 -0
- package/dist/lib/api/request-logger.js +353 -0
- package/dist/lib/api/request-logger.js.map +1 -0
- package/dist/lib/auth/token-exchange.d.ts.map +1 -1
- package/dist/lib/auth/token-exchange.js +30 -4
- package/dist/lib/auth/token-exchange.js.map +1 -1
- package/dist/lib/output/formatter.d.ts +1 -1
- package/dist/lib/output/formatter.d.ts.map +1 -1
- package/dist/lib/output/formatter.js +5 -0
- package/dist/lib/output/formatter.js.map +1 -1
- package/dist/lib/utils/api-helper.d.ts +7 -0
- package/dist/lib/utils/api-helper.d.ts.map +1 -1
- package/dist/lib/utils/api-helper.js +23 -1
- package/dist/lib/utils/api-helper.js.map +1 -1
- package/dist/lib/utils/download.d.ts +10 -1
- package/dist/lib/utils/download.d.ts.map +1 -1
- package/dist/lib/utils/download.js +69 -8
- package/dist/lib/utils/download.js.map +1 -1
- package/dist/lib/utils/list-command.d.ts.map +1 -1
- package/dist/lib/utils/list-command.js +7 -1
- package/dist/lib/utils/list-command.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,38 @@
|
|
|
1
1
|
import type { HttpClient, HttpRequestConfig, HttpResponse } from '../../api-client/http-client.js';
|
|
2
|
+
declare module 'axios' {
|
|
3
|
+
interface InternalAxiosRequestConfig {
|
|
4
|
+
metadata?: {
|
|
5
|
+
startTime: number;
|
|
6
|
+
suppressed?: boolean;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export interface AxiosHttpClientOptions {
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
timeout?: number;
|
|
13
|
+
insecure?: boolean;
|
|
14
|
+
showRequest?: boolean;
|
|
15
|
+
showResponse?: boolean;
|
|
16
|
+
curl?: boolean;
|
|
17
|
+
showSecrets?: boolean;
|
|
18
|
+
headersOnly?: boolean;
|
|
19
|
+
statusOnly?: boolean;
|
|
20
|
+
noColor?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Turn a Prisma-wrapped Postgres error into a readable summary.
|
|
24
|
+
* Input looks like (whitespace collapsed for this comment):
|
|
25
|
+
* Invalid `prisma.metric.create()` invocation: ... ConnectorError { ...
|
|
26
|
+
* PostgresError { code: "23514", message: "new row for relation \"metrics\"
|
|
27
|
+
* violates check constraint \"chk_goal_ratio\"", severity: "ERROR",
|
|
28
|
+
* detail: Some("Failing row contains (...)"), column: None, hint: None }
|
|
29
|
+
* ... }
|
|
30
|
+
*
|
|
31
|
+
* Returns the Postgres `message` on its own line, followed by the `detail`
|
|
32
|
+
* on a second line when present. Returns `undefined` when the input doesn't
|
|
33
|
+
* look like a Prisma error, so the caller can fall back to the raw body.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatPrismaError(text: string): string | undefined;
|
|
2
36
|
export type AuthConfig = {
|
|
3
37
|
method: 'api-key';
|
|
4
38
|
apiKey: string;
|
|
@@ -9,21 +43,20 @@ export type AuthConfig = {
|
|
|
9
43
|
};
|
|
10
44
|
export declare class AxiosHttpClient implements HttpClient {
|
|
11
45
|
private client;
|
|
12
|
-
private verbose;
|
|
46
|
+
private readonly verbose;
|
|
47
|
+
private readonly showRequest;
|
|
48
|
+
private readonly showResponse;
|
|
49
|
+
private readonly curl;
|
|
50
|
+
private readonly formatOpts;
|
|
51
|
+
private seenFingerprints;
|
|
52
|
+
private suppressedCount;
|
|
13
53
|
protected authConfig: AuthConfig;
|
|
14
|
-
constructor(endpoint: string, auth: string | AuthConfig, options?:
|
|
15
|
-
|
|
16
|
-
timeout?: number;
|
|
17
|
-
insecure?: boolean;
|
|
18
|
-
});
|
|
54
|
+
constructor(endpoint: string, auth: string | AuthConfig, options?: AxiosHttpClientOptions);
|
|
55
|
+
private fingerprint;
|
|
19
56
|
request<T>(config: HttpRequestConfig): Promise<HttpResponse<T>>;
|
|
20
57
|
getBaseUrl(): string;
|
|
21
58
|
getAuthHeader(): string;
|
|
22
59
|
private handleError;
|
|
23
60
|
}
|
|
24
|
-
export declare function createAxiosHttpClient(endpoint: string, auth: string | AuthConfig, options?:
|
|
25
|
-
verbose?: boolean;
|
|
26
|
-
timeout?: number;
|
|
27
|
-
insecure?: boolean;
|
|
28
|
-
}): AxiosHttpClient;
|
|
61
|
+
export declare function createAxiosHttpClient(endpoint: string, auth: string | AuthConfig, options?: AxiosHttpClientOptions): AxiosHttpClient;
|
|
29
62
|
//# sourceMappingURL=axios-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"axios-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAYnG,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,0BAA0B;QAClC,QAAQ,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQlE;AAqCD,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAclF,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,eAAe,CAAK;IAC5B,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAErB,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,sBAA2B;IA6L7F,OAAO,CAAC,WAAW;IAoBb,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAmCrE,UAAU,IAAI,MAAM;IAIpB,aAAa,IAAI,MAAM;IAOvB,OAAO,CAAC,WAAW;CA2FpB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,eAAe,CAEjB"}
|
|
@@ -3,16 +3,102 @@ import https from 'https';
|
|
|
3
3
|
import axiosRetry from 'axios-retry';
|
|
4
4
|
import { version } from '../utils/version.js';
|
|
5
5
|
import { APIError } from '../../api-client/http-client.js';
|
|
6
|
+
import { formatRequestHTTP, formatRequestCurl, formatResponseHTTP, formatNetworkError, formatGenericError, formatSuppressionNotice, safeStringify, } from './request-logger.js';
|
|
6
7
|
const DEFAULT_TIMEOUT = 30000;
|
|
7
8
|
const RETRY_COUNT = 3;
|
|
8
9
|
const NON_IDEMPOTENT_PUT_PATHS = ['/start', '/stop', '/restart', '/development', '/full_on'];
|
|
9
10
|
const IDEMPOTENT_METHODS = ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE'];
|
|
11
|
+
/**
|
|
12
|
+
* Turn a Prisma-wrapped Postgres error into a readable summary.
|
|
13
|
+
* Input looks like (whitespace collapsed for this comment):
|
|
14
|
+
* Invalid `prisma.metric.create()` invocation: ... ConnectorError { ...
|
|
15
|
+
* PostgresError { code: "23514", message: "new row for relation \"metrics\"
|
|
16
|
+
* violates check constraint \"chk_goal_ratio\"", severity: "ERROR",
|
|
17
|
+
* detail: Some("Failing row contains (...)"), column: None, hint: None }
|
|
18
|
+
* ... }
|
|
19
|
+
*
|
|
20
|
+
* Returns the Postgres `message` on its own line, followed by the `detail`
|
|
21
|
+
* on a second line when present. Returns `undefined` when the input doesn't
|
|
22
|
+
* look like a Prisma error, so the caller can fall back to the raw body.
|
|
23
|
+
*/
|
|
24
|
+
export function formatPrismaError(text) {
|
|
25
|
+
if (!text.includes('PostgresError') && !text.includes('prisma.'))
|
|
26
|
+
return undefined;
|
|
27
|
+
const message = extractRustString(text, /\bmessage:\s*"/);
|
|
28
|
+
if (message === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
const detail = extractRustString(text, /\bdetail:\s*Some\("/);
|
|
31
|
+
return detail !== undefined ? `${message}\n${detail}` : message;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Scan forward from the first match of `startRe` and return the contents of
|
|
35
|
+
* the following Rust-debug-formatted double-quoted string, unescaping `\"`
|
|
36
|
+
* and `\\` (the only escapes Rust's default Debug impl for &str emits).
|
|
37
|
+
*/
|
|
38
|
+
function extractRustString(text, startRe) {
|
|
39
|
+
const match = startRe.exec(text);
|
|
40
|
+
if (!match)
|
|
41
|
+
return undefined;
|
|
42
|
+
let i = match.index + match[0].length;
|
|
43
|
+
let out = '';
|
|
44
|
+
while (i < text.length) {
|
|
45
|
+
const ch = text[i];
|
|
46
|
+
if (ch === '\\' && i + 1 < text.length) {
|
|
47
|
+
const next = text[i + 1];
|
|
48
|
+
if (next === '"' || next === '\\') {
|
|
49
|
+
out += next;
|
|
50
|
+
i += 2;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (next === 'n') {
|
|
54
|
+
out += '\n';
|
|
55
|
+
i += 2;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
out += next;
|
|
59
|
+
i += 2;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (ch === '"')
|
|
63
|
+
return out;
|
|
64
|
+
out += ch;
|
|
65
|
+
i += 1;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
function extractAuthValue(headers) {
|
|
70
|
+
if (!headers || typeof headers !== 'object')
|
|
71
|
+
return '';
|
|
72
|
+
const obj = typeof headers.toJSON === 'function'
|
|
73
|
+
? headers.toJSON()
|
|
74
|
+
: headers;
|
|
75
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
76
|
+
if (k.toLowerCase() === 'authorization' && typeof v === 'string')
|
|
77
|
+
return v;
|
|
78
|
+
}
|
|
79
|
+
return '';
|
|
80
|
+
}
|
|
10
81
|
export class AxiosHttpClient {
|
|
11
82
|
client;
|
|
12
83
|
verbose;
|
|
84
|
+
showRequest;
|
|
85
|
+
showResponse;
|
|
86
|
+
curl;
|
|
87
|
+
formatOpts;
|
|
88
|
+
seenFingerprints = new Set();
|
|
89
|
+
suppressedCount = 0;
|
|
13
90
|
authConfig;
|
|
14
91
|
constructor(endpoint, auth, options = {}) {
|
|
15
92
|
this.verbose = options.verbose ?? false;
|
|
93
|
+
this.showRequest = options.showRequest ?? false;
|
|
94
|
+
this.showResponse = options.showResponse ?? false;
|
|
95
|
+
this.curl = options.curl ?? false;
|
|
96
|
+
this.formatOpts = {
|
|
97
|
+
showSecrets: options.showSecrets ?? false,
|
|
98
|
+
omitBody: options.headersOnly ?? false,
|
|
99
|
+
statusOnly: options.statusOnly ?? false,
|
|
100
|
+
color: !!process.stderr.isTTY && !(options.noColor ?? false),
|
|
101
|
+
};
|
|
16
102
|
this.authConfig = typeof auth === 'string' ? { method: 'api-key', apiKey: auth } : auth;
|
|
17
103
|
const authHeader = this.authConfig.method === 'api-key'
|
|
18
104
|
? `Api-Key ${this.authConfig.apiKey}`
|
|
@@ -53,6 +139,76 @@ export class AxiosHttpClient {
|
|
|
53
139
|
return config;
|
|
54
140
|
});
|
|
55
141
|
}
|
|
142
|
+
// Request interceptor stamps startTime even when only --show-response is
|
|
143
|
+
// set, so the response handler below can compute elapsed time.
|
|
144
|
+
if (this.showRequest || this.curl || this.showResponse) {
|
|
145
|
+
this.client.interceptors.request.use((config) => {
|
|
146
|
+
config.metadata = { startTime: Date.now() };
|
|
147
|
+
// Polling loops produce streams of repeating requests, often
|
|
148
|
+
// alternating between several URLs. Track every fingerprint we've
|
|
149
|
+
// already printed in this client and suppress any later request
|
|
150
|
+
// (and its matching response) that matches one we've seen. The
|
|
151
|
+
// first time a brand-new request comes through, flush a
|
|
152
|
+
// "(N suppressed)" summary before printing it.
|
|
153
|
+
//
|
|
154
|
+
// This trades response visibility for noise reduction: state
|
|
155
|
+
// changes that *only* show up in response bodies of otherwise-
|
|
156
|
+
// identical requests will be hidden. Acceptable for typical CLI
|
|
157
|
+
// debugging — the user can disable suppression by varying their
|
|
158
|
+
// requests, or split into separate invocations.
|
|
159
|
+
if (this.showRequest || this.curl || this.showResponse) {
|
|
160
|
+
const fp = this.fingerprint(config);
|
|
161
|
+
if (this.seenFingerprints.has(fp)) {
|
|
162
|
+
this.suppressedCount++;
|
|
163
|
+
config.metadata.suppressed = true;
|
|
164
|
+
return config;
|
|
165
|
+
}
|
|
166
|
+
if (this.suppressedCount > 0) {
|
|
167
|
+
process.stderr.write(formatSuppressionNotice(this.suppressedCount, this.formatOpts.color) + '\n');
|
|
168
|
+
this.suppressedCount = 0;
|
|
169
|
+
}
|
|
170
|
+
this.seenFingerprints.add(fp);
|
|
171
|
+
if (this.showRequest) {
|
|
172
|
+
process.stderr.write(formatRequestHTTP(config, this.formatOpts) + '\n');
|
|
173
|
+
}
|
|
174
|
+
if (this.curl) {
|
|
175
|
+
process.stderr.write(formatRequestCurl(config, this.formatOpts) + '\n');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return config;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if (this.showResponse) {
|
|
182
|
+
this.client.interceptors.response.use((response) => {
|
|
183
|
+
if (response.config.metadata?.suppressed)
|
|
184
|
+
return response;
|
|
185
|
+
const start = response.config.metadata?.startTime ?? Date.now();
|
|
186
|
+
const elapsed = Date.now() - start;
|
|
187
|
+
process.stderr.write(formatResponseHTTP(response, elapsed, this.formatOpts) + '\n');
|
|
188
|
+
return response;
|
|
189
|
+
}, (error) => {
|
|
190
|
+
if (axios.isAxiosError(error)) {
|
|
191
|
+
if (error.config?.metadata?.suppressed)
|
|
192
|
+
return Promise.reject(error);
|
|
193
|
+
const start = error.config?.metadata?.startTime ?? Date.now();
|
|
194
|
+
const elapsed = Date.now() - start;
|
|
195
|
+
if (error.response) {
|
|
196
|
+
process.stderr.write(formatResponseHTTP(error.response, elapsed, this.formatOpts) + '\n');
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
process.stderr.write(formatNetworkError(error, elapsed, this.formatOpts) + '\n');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// Non-axios errors reach this handler when an upstream interceptor
|
|
204
|
+
// (e.g. the OAuth refresh path below) wraps and rejects with a
|
|
205
|
+
// custom error type. Without this branch --show-response would go
|
|
206
|
+
// silent in those cases.
|
|
207
|
+
process.stderr.write(formatGenericError(error, 0, this.formatOpts) + '\n');
|
|
208
|
+
}
|
|
209
|
+
return Promise.reject(error);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
56
212
|
if (this.authConfig.method === 'oauth-jwt' && this.authConfig.onExpired) {
|
|
57
213
|
const onExpired = this.authConfig.onExpired;
|
|
58
214
|
let isRefreshing = false;
|
|
@@ -91,6 +247,18 @@ export class AxiosHttpClient {
|
|
|
91
247
|
throw error;
|
|
92
248
|
});
|
|
93
249
|
}
|
|
250
|
+
fingerprint(config) {
|
|
251
|
+
const method = (config.method ?? 'GET').toUpperCase();
|
|
252
|
+
const url = config.url ?? '';
|
|
253
|
+
const params = config.params ? safeStringify(config.params) : '';
|
|
254
|
+
const body = config.data ? safeStringify(config.data) : '';
|
|
255
|
+
// Include the Authorization header so OAuth refresh retries (which change
|
|
256
|
+
// the token) and the axios-retry retryCount so failed-then-retried
|
|
257
|
+
// requests are not collapsed into the original.
|
|
258
|
+
const auth = extractAuthValue(config.headers);
|
|
259
|
+
const retry = config['axios-retry']?.retryCount ?? 0;
|
|
260
|
+
return `${method}|${url}|${params}|${body}|${auth}|${retry}`;
|
|
261
|
+
}
|
|
94
262
|
async request(config) {
|
|
95
263
|
const axiosConfig = {
|
|
96
264
|
method: config.method,
|
|
@@ -132,6 +300,40 @@ export class AxiosHttpClient {
|
|
|
132
300
|
const endpoint = error.config?.url || 'unknown endpoint';
|
|
133
301
|
const method = error.config?.method?.toUpperCase() || 'unknown method';
|
|
134
302
|
const status = error.response?.status;
|
|
303
|
+
const responseData = error.response?.data;
|
|
304
|
+
// Surface a human-readable body message from common error shapes.
|
|
305
|
+
// The backend returns {errors: [...]} for validation failures (handled by
|
|
306
|
+
// handleCommandError when the APIError reaches the command layer) and may
|
|
307
|
+
// return {message: "..."} or a raw string for other errors.
|
|
308
|
+
const rawBodyMessage = (() => {
|
|
309
|
+
if (!responseData)
|
|
310
|
+
return undefined;
|
|
311
|
+
if (typeof responseData === 'string')
|
|
312
|
+
return responseData;
|
|
313
|
+
const msg = responseData.message ?? responseData.error ?? responseData.detail;
|
|
314
|
+
return typeof msg === 'string' ? msg : undefined;
|
|
315
|
+
})();
|
|
316
|
+
// DB errors from Prisma come back with a long wrapper that buries the two
|
|
317
|
+
// parts an operator actually needs: the Postgres `message` and `detail`.
|
|
318
|
+
// When we recognise the shape, render just those so the user sees
|
|
319
|
+
// message: new row for relation "metrics" violates check constraint "chk_goal_ratio"
|
|
320
|
+
// detail: Failing row contains (...)
|
|
321
|
+
// instead of the full ConnectorError/PostgresError debug dump.
|
|
322
|
+
const bodyMessage = rawBodyMessage
|
|
323
|
+
? (formatPrismaError(rawBodyMessage) ?? rawBodyMessage)
|
|
324
|
+
: undefined;
|
|
325
|
+
// DB check-constraint failures (5xx) often bubble up cryptic Prisma text.
|
|
326
|
+
// Detect the goal_ratio constraint and add a concrete hint.
|
|
327
|
+
const constraintHint = (() => {
|
|
328
|
+
const haystack = `${error.message ?? ''} ${rawBodyMessage ?? ''}`;
|
|
329
|
+
if (haystack.includes('chk_goal_ratio')) {
|
|
330
|
+
return (`Hint: goal_ratio needs consistent numerator/denominator fields. Verify\n` +
|
|
331
|
+
`that goal_id/value_source_property match the numerator_type and that\n` +
|
|
332
|
+
`denominator_goal_id/denominator_value_source_property match the\n` +
|
|
333
|
+
`denominator_type. Empty strings are not equivalent to null.`);
|
|
334
|
+
}
|
|
335
|
+
return undefined;
|
|
336
|
+
})();
|
|
135
337
|
let message;
|
|
136
338
|
switch (status) {
|
|
137
339
|
case 401:
|
|
@@ -171,8 +373,15 @@ export class AxiosHttpClient {
|
|
|
171
373
|
`The server took too long to respond. Please try again.`;
|
|
172
374
|
}
|
|
173
375
|
else {
|
|
174
|
-
|
|
175
|
-
`API error: ${error.message || 'unknown error'}
|
|
376
|
+
const lines = [
|
|
377
|
+
`API error: ${error.message || 'unknown error'}`,
|
|
378
|
+
`Endpoint: ${method} ${endpoint}`,
|
|
379
|
+
];
|
|
380
|
+
if (bodyMessage)
|
|
381
|
+
lines.push('', bodyMessage);
|
|
382
|
+
if (constraintHint)
|
|
383
|
+
lines.push('', constraintHint);
|
|
384
|
+
message = lines.join('\n');
|
|
176
385
|
}
|
|
177
386
|
}
|
|
178
387
|
return new APIError(message, status, error.response?.data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-adapter.js","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"axios-adapter.js","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api/client.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { APIClient as EngineAPIClient } from '../../api-client/api-client.js';
|
|
2
|
-
import { type AuthConfig } from './axios-adapter.js';
|
|
3
|
-
export
|
|
4
|
-
verbose?: boolean;
|
|
5
|
-
timeout?: number;
|
|
6
|
-
insecure?: boolean;
|
|
7
|
-
}
|
|
2
|
+
import { type AuthConfig, type AxiosHttpClientOptions } from './axios-adapter.js';
|
|
3
|
+
export type ClientOptions = AxiosHttpClientOptions;
|
|
8
4
|
export declare class APIClient extends EngineAPIClient {
|
|
9
5
|
constructor(endpoint: string, auth: string | AuthConfig, options?: ClientOptions);
|
|
10
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEnD,qBAAa,SAAU,SAAQ,eAAe;gBAChC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,aAAkB;CAIrF;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,SAAS,CAEX"}
|
package/dist/lib/api/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { APIClient as EngineAPIClient } from '../../api-client/api-client.js';
|
|
2
|
-
import { createAxiosHttpClient } from './axios-adapter.js';
|
|
2
|
+
import { createAxiosHttpClient, } from './axios-adapter.js';
|
|
3
3
|
export class APIClient extends EngineAPIClient {
|
|
4
4
|
constructor(endpoint, auth, options = {}) {
|
|
5
5
|
const httpClient = createAxiosHttpClient(endpoint, auth, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EACL,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC5C,YAAY,QAAgB,EAAE,IAAyB,EAAE,UAAyB,EAAE;QAClF,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,IAAyB,EACzB,OAAuB;IAEvB,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { InternalAxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
|
|
2
|
+
export interface FormatOptions {
|
|
3
|
+
showSecrets: boolean;
|
|
4
|
+
color: boolean;
|
|
5
|
+
omitBody?: boolean;
|
|
6
|
+
statusOnly?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function redactUrl(url: string, showSecrets: boolean): string;
|
|
9
|
+
export declare function redactHeaders(headers: Record<string, string>, showSecrets: boolean): Record<string, string>;
|
|
10
|
+
export declare function redactBody(data: unknown, showSecrets: boolean): unknown;
|
|
11
|
+
export declare function safeStringify(value: unknown, indentSpaces?: number): string;
|
|
12
|
+
export declare function formatRequestHTTP(config: InternalAxiosRequestConfig, opts: FormatOptions): string;
|
|
13
|
+
export declare function formatRequestCurl(config: InternalAxiosRequestConfig, opts: FormatOptions): string;
|
|
14
|
+
export declare function formatResponseHTTP(response: AxiosResponse, elapsedMs: number, opts: FormatOptions): string;
|
|
15
|
+
export declare function formatNetworkError(error: AxiosError, elapsedMs: number, opts: FormatOptions): string;
|
|
16
|
+
export declare function formatGenericError(error: unknown, elapsedMs: number, opts: FormatOptions): string;
|
|
17
|
+
export declare function formatSuppressionNotice(count: number, color: boolean): string;
|
|
18
|
+
//# sourceMappingURL=request-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-logger.d.ts","sourceRoot":"","sources":["../../../src/lib/api/request-logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAYnF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IAIf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyDD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAgBnE;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,OAAO,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBxB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAGvE;AA4ID,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAkBjG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CA8BjG;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,GAClB,MAAM,CAsBR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,GAClB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAMjG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAI7E"}
|