forest-cli
Version:
The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.
37 lines • 3.21 kB
JavaScript
;
/** Errors raised by the layout commands' HTTP adapter. */
Object.defineProperty(exports, "__esModule", { value: true });
exports.toLayoutApiError = exports.extractDetail = exports.LayoutApiError = void 0;
/** A non-2xx response from a layout endpoint, normalized to status + detail. */
class LayoutApiError extends Error {
constructor(status, detail) {
super(`Forest API error ${status}: ${detail}`);
this.name = 'LayoutApiError';
this.status = status;
this.detail = detail;
}
}
exports.LayoutApiError = LayoutApiError;
/** Extract a readable message from a JSON:API error document (or raw text). */
function extractDetail(body) {
if (body && typeof body === 'object') {
const parsed = body;
if (Array.isArray(parsed.errors) && parsed.errors.length > 0) {
const first = parsed.errors[0];
return first.detail || first.message || JSON.stringify(body);
}
if (parsed.message)
return parsed.message;
}
return typeof body === 'string' && body ? body : 'no response body';
}
exports.extractDetail = extractDetail;
/** Turn a superagent error into a {@link LayoutApiError} (status + readable detail). */
function toLayoutApiError(error) {
const superagentError = error;
const status = superagentError.status ?? 0;
const body = superagentError.response?.body ?? superagentError.response?.text;
return new LayoutApiError(status, extractDetail(body));
}
exports.toLayoutApiError = toLayoutApiError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2xheW91dC9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBEQUEwRDs7O0FBRTFELGdGQUFnRjtBQUNoRixNQUFhLGNBQWUsU0FBUSxLQUFLO0lBT3ZDLFlBQVksTUFBYyxFQUFFLE1BQWM7UUFDeEMsS0FBSyxDQUFDLG9CQUFvQixNQUFNLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQWJELHdDQWFDO0FBRUQsK0VBQStFO0FBQy9FLFNBQWdCLGFBQWEsQ0FBQyxJQUFhO0lBQ3pDLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUdkLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPO1lBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0tBQzNDO0lBRUQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO0FBQ3RFLENBQUM7QUFoQkQsc0NBZ0JDO0FBRUQsd0ZBQXdGO0FBQ3hGLFNBQWdCLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsTUFBTSxlQUFlLEdBQUcsS0FHdkIsQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBRTlFLE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFURCw0Q0FTQyJ9