bkper 4.12.12 → 4.12.13
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/lib/auth/auth-errors.d.ts +2 -2
- package/lib/auth/auth-errors.d.ts.map +1 -1
- package/lib/auth/auth-errors.js +29 -22
- package/lib/auth/auth-errors.js.map +1 -1
- package/lib/commands/action.d.ts.map +1 -1
- package/lib/commands/action.js +2 -7
- package/lib/commands/action.js.map +1 -1
- package/lib/commands/apps/config.d.ts.map +1 -1
- package/lib/commands/apps/config.js +2 -19
- package/lib/commands/apps/config.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const AUTHENTICATION_REQUIRED_MESSAGE = "Authentication required. Run: bkper auth login";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Extracts a concise human-readable message from CLI and API errors.
|
|
4
4
|
*/
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
6
6
|
//# sourceMappingURL=auth-errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-errors.d.ts","sourceRoot":"","sources":["../../src/auth/auth-errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-errors.d.ts","sourceRoot":"","sources":["../../src/auth/auth-errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,mDACQ,CAAC;AAkBrD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA6BtD"}
|
package/lib/auth/auth-errors.js
CHANGED
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
import { BkperError } from 'bkper-js';
|
|
2
1
|
export const AUTHENTICATION_REQUIRED_MESSAGE = 'Authentication required. Run: bkper auth login';
|
|
2
|
+
function normalizeMessage(message) {
|
|
3
|
+
if (typeof message !== 'string') {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
const trimmed = message.trim();
|
|
7
|
+
return trimmed ? trimmed : undefined;
|
|
8
|
+
}
|
|
3
9
|
/**
|
|
4
|
-
*
|
|
10
|
+
* Extracts a concise human-readable message from CLI and API errors.
|
|
5
11
|
*/
|
|
6
|
-
export function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
message.includes('invalid or expired token'))));
|
|
12
|
+
export function getErrorMessage(error) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (error instanceof Error) {
|
|
15
|
+
return error.message;
|
|
16
|
+
}
|
|
17
|
+
if (typeof error === 'string') {
|
|
18
|
+
return error;
|
|
14
19
|
}
|
|
15
20
|
if (typeof error !== 'object' || error === null) {
|
|
16
|
-
return
|
|
21
|
+
return String(error);
|
|
22
|
+
}
|
|
23
|
+
const typedError = error;
|
|
24
|
+
const nestedMessage = normalizeMessage((_a = typedError.error) === null || _a === void 0 ? void 0 : _a.message);
|
|
25
|
+
if (nestedMessage) {
|
|
26
|
+
return nestedMessage;
|
|
27
|
+
}
|
|
28
|
+
const topLevelMessage = normalizeMessage(typedError.message);
|
|
29
|
+
if (topLevelMessage) {
|
|
30
|
+
return topLevelMessage;
|
|
17
31
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const message = typeof (nested === null || nested === void 0 ? void 0 : nested.message) === 'string' ? nested.message.toLowerCase() : undefined;
|
|
21
|
-
if (code && (code.includes('TOKEN') || code.includes('AUTH'))) {
|
|
22
|
-
return true;
|
|
32
|
+
try {
|
|
33
|
+
return JSON.stringify(error);
|
|
23
34
|
}
|
|
24
|
-
|
|
25
|
-
(
|
|
26
|
-
message.includes('authentication') ||
|
|
27
|
-
message.includes('login required'))) {
|
|
28
|
-
return true;
|
|
35
|
+
catch (_b) {
|
|
36
|
+
return String(error);
|
|
29
37
|
}
|
|
30
|
-
return false;
|
|
31
38
|
}
|
|
32
39
|
//# sourceMappingURL=auth-errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-errors.js","sourceRoot":"","sources":["../../src/auth/auth-errors.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"auth-errors.js","sourceRoot":"","sources":["../../src/auth/auth-errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GACxC,gDAAgD,CAAC;AASrD,SAAS,gBAAgB,CAAC,OAAgB;IACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;;IAC1C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,UAAU,GAAG,KAAgC,CAAC;IACpD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAA,UAAU,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC;IAClE,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,eAAe,EAAE,CAAC;QAClB,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/commands/action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,UAAU,aAAa;IACnB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/commands/action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,UAAU,aAAa;IACnB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,CAAC,EAAE,aAAa,GACxB,MAAM,OAAO,CAAC,IAAI,CAAC,CAYrB"}
|
package/lib/commands/action.js
CHANGED
|
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { getErrorMessage } from '../auth/auth-errors.js';
|
|
11
11
|
import { setupBkper } from '../bkper-factory.js';
|
|
12
12
|
import { getFormat } from './cli-helpers.js';
|
|
13
13
|
/**
|
|
@@ -29,12 +29,7 @@ export function withAction(label, fn, options) {
|
|
|
29
29
|
yield fn(getFormat());
|
|
30
30
|
}
|
|
31
31
|
catch (err) {
|
|
32
|
-
|
|
33
|
-
console.error(`Error ${label}: ${AUTHENTICATION_REQUIRED_MESSAGE}`);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
console.error(`Error ${label}:`, err);
|
|
37
|
-
}
|
|
32
|
+
console.error(`Error ${label}: ${getErrorMessage(err)}`);
|
|
38
33
|
process.exit(1);
|
|
39
34
|
}
|
|
40
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/commands/action.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/commands/action.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAW7C;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACtB,KAAa,EACb,EAA2C,EAC3C,OAAuB;IAEvB,OAAO,GAAS,EAAE;QACd,IAAI,CAAC;YACD,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA,EAAE,CAAC;gBACtB,UAAU,EAAE,CAAC;YACjB,CAAC;YACD,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAA,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC,GAAG,CAiBzC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,GAAG,SAAS,CAuBnE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAY3D;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,SAAS,CA2B/E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAUzC;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/apps/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC,GAAG,CAiBzC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,GAAG,SAAS,CAuBnE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAY3D;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,SAAS,CA2B/E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAUzC;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,GAAG,KAAK,CAGjE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { App } from 'bkper-js';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import * as YAML from 'yaml';
|
|
4
|
-
import {
|
|
4
|
+
import { getErrorMessage } from '../../auth/auth-errors.js';
|
|
5
5
|
// =============================================================================
|
|
6
6
|
// App Config Loading
|
|
7
7
|
// =============================================================================
|
|
@@ -128,24 +128,7 @@ export function createConfiguredApp() {
|
|
|
128
128
|
* Handles error response from Platform API
|
|
129
129
|
*/
|
|
130
130
|
export function handleError(error) {
|
|
131
|
-
|
|
132
|
-
if (isAuthenticationError(error)) {
|
|
133
|
-
console.error(`Error: ${AUTHENTICATION_REQUIRED_MESSAGE}`);
|
|
134
|
-
process.exit(1);
|
|
135
|
-
}
|
|
136
|
-
// Handle unexpected error shapes (e.g., network errors, non-JSON responses)
|
|
137
|
-
if (!error ||
|
|
138
|
-
typeof error !== 'object' ||
|
|
139
|
-
!('error' in error) ||
|
|
140
|
-
!((_a = error.error) === null || _a === void 0 ? void 0 : _a.message)) {
|
|
141
|
-
console.error('Error deploying app:', error);
|
|
142
|
-
process.exit(1);
|
|
143
|
-
}
|
|
144
|
-
const typedError = error;
|
|
145
|
-
console.error(`Error: ${typedError.error.message}`);
|
|
146
|
-
if (typedError.error.details) {
|
|
147
|
-
console.error('Details:', JSON.stringify(typedError.error.details, null, 2));
|
|
148
|
-
}
|
|
131
|
+
console.error(`Error: ${getErrorMessage(error)}`);
|
|
149
132
|
process.exit(1);
|
|
150
133
|
}
|
|
151
134
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/apps/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/apps/config.ts"],"names":[],"mappings":"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"}
|