@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
188 lines (180 loc) • 5.04 kB
JavaScript
import {
constants_default,
translations_default
} from "./chunk-7XW7FQ7W.js";
// src/utils/errors/error-type-defaults.ts
var errorTypeDefaults = (error) => {
switch (error.type) {
case "validation": {
return {
status: 400,
name: error.name ?? translations_default("validation_error"),
message: error.message ?? translations_default("validation_error_message")
};
}
case "authorisation": {
return {
status: 401,
name: error.name ?? translations_default("authorisation_error"),
message: error.message ?? translations_default("authorisation_error_message")
};
}
case "forbidden": {
return {
status: 403,
name: error.name ?? translations_default("forbidden_error"),
message: error.message ?? translations_default("forbidden_error_message")
};
}
default: {
return {
status: error.status,
name: error.name,
message: error.message
};
}
}
};
var error_type_defaults_default = errorTypeDefaults;
// src/utils/errors/lucid-api-error.ts
var LucidAPIError = class _LucidAPIError extends Error {
error;
constructor(error) {
super(error.message);
this.error = error;
if (error.zod !== void 0) {
this.error.errorResponse = _LucidAPIError.formatZodErrors(
error.zod?.issues || []
);
}
const errorTypeRes = error_type_defaults_default(error);
this.error.status = errorTypeRes.status;
this.name = errorTypeRes.name ?? constants_default.errors.name;
this.message = errorTypeRes.message ?? constants_default.errors.message;
}
// static
static formatZodErrors(error) {
const result = {};
for (const item of error) {
let current = result;
for (const key of item.path) {
if (typeof key === "number") {
current = current.children || (current.children = []);
current = current[key] || (current[key] = {});
} else {
current = current[key] || (current[key] = {});
}
}
current.code = item.code;
current.message = item.message;
}
return result ?? void 0;
}
};
var lucid_api_error_default = LucidAPIError;
// src/utils/logging/logger.ts
import { format, createLogger } from "winston";
import transports from "winston/lib/winston/transports/index.js";
var winstonLogger = createLogger({
level: "info",
format: format.json()
});
if (process.env.NODE_ENV !== "production") {
winstonLogger.add(
new transports.Console({
format: format.combine(format.colorize(), format.simple())
})
);
}
var logger_default = winstonLogger;
// src/utils/logging/index.ts
var logger = (level, data) => {
let logFn = logger_default.error;
switch (level) {
case "error":
logFn = logger_default.error;
break;
case "warn":
logFn = logger_default.warn;
break;
case "info":
logFn = logger_default.info;
break;
case "debug":
logFn = logger_default.debug;
break;
default:
logFn = logger_default.error;
break;
}
logFn(messageFormat(level, data), data.data);
};
var messageFormat = (level, data) => {
const msgParts = [data.message];
if (data.scope) {
msgParts.unshift(`[${data.scope}]`);
}
return msgParts.join(" ");
};
var logging_default = logger;
// src/utils/errors/lucid-error.ts
var LucidError = class extends Error {
scope;
kill;
constructor(data) {
super(data.message);
this.scope = data.scope;
this.kill = data.kill;
logging_default("error", {
message: this.message,
scope: this.scope,
data: data.data ?? void 0
});
if (this.kill) process.exit(1);
}
};
var lucid_error_default = LucidError;
// src/utils/errors/decode-error.ts
var decodeError = (error) => {
if (error instanceof lucid_api_error_default) {
return {
name: error.error.name,
message: error.error.message,
status: error.error.status,
errorResponse: error.error.errorResponse,
code: error.error.code
};
}
if (error?.statusCode === 429) {
return {
code: "rate_limit",
name: translations_default("rate_limit_error_name"),
message: error.message || constants_default.errors.message,
status: 429
};
}
return {
name: constants_default.errors.name,
message: error.message || constants_default.errors.message,
status: constants_default.errors.status,
errorResponse: constants_default.errors.errorResponse,
code: constants_default.errors.code
};
};
var decode_error_default = decodeError;
// src/utils/errors/tidy-zod-errors.ts
import z from "zod";
var tidyZodError = (error) => {
return z.prettifyError(error).replace(/✖/g, "");
};
var tidy_zod_errors_default = tidyZodError;
export {
decode_error_default,
error_type_defaults_default,
lucid_api_error_default,
logger_default,
logging_default,
lucid_error_default,
tidy_zod_errors_default
};
//# sourceMappingURL=chunk-7SRFYA4B.js.map