/* * This file is part of the xPack project (http://xpack.github.io). * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software * for any purpose is hereby granted, under the terms of the MIT license. * * If a copy of the license was not distributed with this file, it can * be obtained from https://opensource.org/license/mit. */ // ============================================================================ // JavaScript provides the following standard error types: // // - Error: The base error type for all errors. // - EvalError: An error regarding the global eval() function. // - RangeError: An error when a value is not in the set or range of // allowed values. // - ReferenceError: An error when an invalid reference is made. // - SyntaxError: An error when trying to interpret syntactically // invalid code. // - TypeError: An error when a value is not of the expected type. // - URIError: An error when encodeURI() or decodeURI() functions are // used incorrectly. /** * Error indicating a syntax error in configuration or template files. * * @remarks * This error is thrown when parsing JSON files. * This typically occurs during the parsing phase before semantic * validation. Use this error when the structure of the input is * malformed, as opposed to {@link InputError} or * {@link ConfigurationError} which indicate * semantically invalid but syntactically correct input. */ export class JsonSyntaxError extends Error {} /** * Error indicating that required prerequisites are not met. * * @remarks * This error is thrown when dependencies, tools, or system requirements * necessary for an operation are missing or incompatible. Common scenarios * include missing npm packages, unavailable system tools, unsupported * platform versions, or insufficient xpm version requirements. Use this * error when validation of the execution environment fails before * attempting an operation. */ export class PrerequisitesError extends Error {} /** * Error indicating a configuration issue. * * @remarks * This error is thrown when configuration files, such as `package.json`, * contain invalid values, missing required fields, circular references, or * other issues that prevent proper initialisation or execution. Use this error * when the problem is related to the content of configuration files rather * than user input or output generation. */ export class ConfigurationError extends Error {} /** * Error indicating a template evaluation failure. * * @remarks * This error is thrown when Liquid template rendering fails during output * generation. Common scenarios include undefined variables in templates, * invalid filter usage, template syntax errors caught during evaluation, * circular template references, or template size limit exceeded. This differs * from {@link ConfigurationError} which indicates issues in the template * configuration structure itself, and {@link OutputError} which indicates * file system or broader output failures. */ export class TemplateError extends Error {} /** * Error indicating that user input is invalid. * * @remarks * This error is thrown when command-line arguments, * or other user-provided input fails validation. Common scenarios * include invalid property values, missing required fields, * out-of-range parameter values, missing files or directories, or other * issues that prevent proper execution. The error message should clearly * indicate what input was invalid and why, helping users correct their * configuration or arguments. */ export class InputError extends Error {} /** * Error indicating a failure during output generation. * * @remarks * This error is thrown when file generation, Liquid template rendering, * or other output operations fail. Common scenarios include template * evaluation errors, file system write failures, or variable substitution * problems. This error indicates that the input was valid but the * transformation or output process encountered a problem during execution. */ export class OutputError extends Error {} // ----------------------------------------------------------------------------