@nhtio/lucid-resourceful 1.20251224.1 → 1.20251224.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"decorator_utils-DaUPeX74.js","sources":["../src/private/type_guards.ts","../src/private/decorator_utils.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Type Guards\n|--------------------------------------------------------------------------\n|\n| Utility functions that help determine the type of unknown values\n|\n*/\n\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { stripUndefinedValuesFromObject } from './utils'\nimport {\n isException,\n isJoiValidationError,\n isVineValidationError,\n isNotImplementedError,\n} from './router_macro/utils/errors'\nimport {\n isArray,\n isBigInt,\n isBigIntTypedArray,\n isError,\n isInstanceOf,\n isLucidBinaryValue,\n isLuxonDateTime,\n isLuxonDuration,\n isLuxonInterval,\n isLuxonSystemZone,\n isMap,\n isNegativeZero,\n isNumber,\n isObject,\n isPhoneObject,\n isPrimitive,\n isSet,\n isTypedArray,\n isUniterableObject,\n} from '@nhtio/encoder/type_guards'\nimport {\n ResourcefulStringTypeSchema,\n ResourcefulDateTypeSchema,\n ResourcefulDateTimeTypeSchema,\n ResourcefulBinaryTypeSchema,\n ResourcefulNumberTypeSchema,\n ResourcefulIntegerTypeSchema,\n ResourcefulBigintTypeSchema,\n ResourcefulUnsignedIntegerTypeSchema,\n ResourcefulBooleanTypeSchema,\n ResourcefulObjectTypeSchema,\n ResourcefulArrayTypeSchema,\n} from './data_type_schemas'\nimport type { OpenAPIV3 } from 'openapi-types'\nimport type { ResourcefulModel } from './mixin'\nimport type { ObjectSchema, AnySchema } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulStringType,\n ResourcefulDateType,\n ResourcefulDateTimeType,\n ResourcefulBinaryType,\n ResourcefulNumberType,\n ResourcefulIntegerType,\n ResourcefulBigintType,\n ResourcefulUnsignedIntegerType,\n ResourcefulBooleanType,\n ResourcefulObjectType,\n ResourcefulArrayType,\n} from '@nhtio/lucid-resourceful/definitions'\n\nexport {\n isArray,\n isBigInt,\n isBigIntTypedArray,\n isError,\n isInstanceOf,\n isLucidBinaryValue,\n isLuxonDateTime,\n isLuxonDuration,\n isLuxonInterval,\n isLuxonSystemZone,\n isMap,\n isNegativeZero,\n isNumber,\n isObject,\n isPhoneObject,\n isPrimitive,\n isSet,\n isTypedArray,\n isUniterableObject,\n isException,\n isJoiValidationError,\n isVineValidationError,\n isNotImplementedError,\n}\n\nconst isResourcefulModelCache = new Map<unknown, boolean>()\n\n/**\n * Type guard to check if a value is a ResourcefulModel\n * @param value - The value to check\n * @returns True if the value is a ResourcefulModel, false otherwise\n */\nexport const isResourcefulModel = (value: unknown): value is ResourcefulModel => {\n const cached = isResourcefulModelCache.get(value)\n if ('undefined' !== typeof cached) {\n return cached\n }\n if (!isObject(value) && !(typeof value === 'function')) return false\n\n // For class constructors (functions), check the properties directly on the constructor\n if (typeof value === 'function') {\n const returnable =\n '$resourcefulName' in value &&\n 'string' === typeof value.$resourcefulName &&\n '$resourcefulColumns' in value &&\n value.$resourcefulColumns instanceof Map &&\n '$resourcefulRelationships' in value &&\n value.$resourcefulRelationships instanceof Map &&\n '$resourcefulComputedAccessors' in value &&\n value.$resourcefulComputedAccessors instanceof Map\n isResourcefulModelCache.set(value, returnable)\n return returnable\n }\n\n // For instances, check the constructor of the instance\n /* istanbul ignore if -- @preserve */\n if ('constructor' in value) {\n // @ts-ignore\n const constructor = value.constructor\n /* istanbul ignore if -- @preserve */\n if (!constructor || typeof constructor !== 'function') {\n isResourcefulModelCache.set(value, false)\n return false\n }\n\n return isResourcefulModel(constructor) // Recursively check the constructor\n }\n\n /* istanbul ignore next -- @preserve */\n const proto = Object.getPrototypeOf(value)\n return isResourcefulModel(proto)\n}\n\nconst BaseDataTypeSchemaFactory = (name: string, type: string) => {\n return joi\n .object({\n type: joi.string().allow(type).required(),\n name: joi.string().allow(name).optional(),\n schema: joi\n .object({\n _cache: joi.required(),\n _flags: joi.object().unknown(true).required(),\n _ids: joi\n .object({\n _byId: joi.object().instance(Map).required(),\n _byKey: joi.object().instance(Map).required(),\n _schemaChain: joi.boolean().required(),\n })\n .unknown(true)\n .required(),\n _invalids: joi.required(),\n _preferences: joi.required(),\n _refs: joi.object().unknown(true).required(),\n _rules: joi.array().items(joi.any()).required(),\n _singleRules: joi.object().instance(Map).required(),\n _valids: joi.required(),\n $: joi.required(),\n $_root: joi.required(),\n $_super: joi.required(),\n $_temp: joi.required(),\n $_terms: joi.required(),\n ruleset: joi.func().required(),\n type: joi.string().required(),\n })\n .unknown(true)\n .optional(),\n })\n .unknown(true)\n}\n\nconst getDataTypeSchemaResults = (\n value: unknown,\n name: string,\n type: string,\n schema: ObjectSchema\n) => {\n if (!isObject(value)) return false\n if (value.type !== type) return false\n const base = BaseDataTypeSchemaFactory(name, type)\n const { error: errorFromSchema } = schema.validate(\n stripUndefinedValuesFromObject({\n ...value,\n type: undefined,\n name: undefined,\n schema: undefined,\n })\n )\n const { error: errorFromBase } = base.validate({\n type: value.type,\n name: value.name,\n schema: value.schema,\n })\n return 'undefined' === typeof errorFromSchema && 'undefined' === typeof errorFromBase\n}\n\nexport const isResourcefulStringType = (value: unknown): value is ResourcefulStringType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulStringType',\n 'string',\n ResourcefulStringTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulDateType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulDateType, false otherwise\n */\nexport const isResourcefulDateType = (value: unknown): value is ResourcefulDateType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulDateType',\n 'string',\n ResourcefulDateTypeSchema().append({\n format: joi.string().valid('date').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulDateTimeType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulDateTimeType, false otherwise\n */\nexport const isResourcefulDateTimeType = (value: unknown): value is ResourcefulDateTimeType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulDateTimeType',\n 'string',\n ResourcefulDateTimeTypeSchema().append({\n format: joi.string().valid('date-time').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBinaryType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBinaryType, false otherwise\n */\nexport const isResourcefulBinaryType = (value: unknown): value is ResourcefulBinaryType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBinaryType',\n 'string',\n ResourcefulBinaryTypeSchema().append({\n format: joi.string().valid('binary').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulNumberType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulNumberType, false otherwise\n */\nexport const isResourcefulNumberType = (value: unknown): value is ResourcefulNumberType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulNumberType',\n 'number',\n ResourcefulNumberTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulIntegerType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulIntegerType, false otherwise\n */\nexport const isResourcefulIntegerType = (value: unknown): value is ResourcefulIntegerType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulIntegerType',\n 'integer',\n ResourcefulIntegerTypeSchema().append({\n format: joi.string().valid('int32').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBigintType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBigintType, false otherwise\n */\nexport const isResourcefulBigintType = (value: unknown): value is ResourcefulBigintType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBigintType',\n 'integer',\n ResourcefulBigintTypeSchema().append({\n format: joi.string().valid('int64').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulUnsignedIntegerType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulUnsignedIntegerType, false otherwise\n */\nexport const isResourcefulUnsignedIntegerType = (\n value: unknown\n): value is ResourcefulUnsignedIntegerType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulUnsignedIntegerType',\n 'integer',\n ResourcefulUnsignedIntegerTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBooleanType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBooleanType, false otherwise\n */\nexport const isResourcefulBooleanType = (value: unknown): value is ResourcefulBooleanType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBooleanType',\n 'boolean',\n ResourcefulBooleanTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulObjectType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulObjectType, false otherwise\n */\nexport const isResourcefulObjectType = (value: unknown): value is ResourcefulObjectType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulObjectType',\n 'object',\n ResourcefulObjectTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulArrayType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulArrayType, false otherwise\n */\nexport const isResourcefulArrayType = (value: unknown): value is ResourcefulArrayType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulArrayType',\n 'array',\n ResourcefulArrayTypeSchema()\n )\n}\n\nconst matchesSchema = (value: unknown, schema: AnySchema): boolean => {\n const { error } = schema.validate(value, {\n abortEarly: true,\n })\n return !error\n}\n\nconst stringSchema = joi.string().allow('').required()\nconst booleanSchema = joi.boolean().required()\nconst bigintSchema = joi\n .any()\n .custom((value, helpers) => {\n if (typeof value === 'bigint') {\n return value\n }\n return helpers.error('any.invalid')\n })\n .required()\nconst nullSchema = joi.any().valid(null).required()\nconst undefinedSchema = joi.any().custom((value, helpers) => {\n /* v8 ignore next 3 */\n if (typeof value === 'undefined') {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nconst int8ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int8Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint8ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint8Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint8ClampedArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint8ClampedArray) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst int16ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int16Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint16ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint16Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst int32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst float32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Float32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst float64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Float64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst bigInt64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof BigInt64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst bigUint64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof BigUint64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nconst dateSchema = joi.any().custom((value, helpers) => {\n if (value instanceof Date) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst regExpSchema = joi.any().custom((value, helpers) => {\n if (value instanceof RegExp) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst arrayBufferSchema = joi.any().custom((value, helpers) => {\n if (value instanceof ArrayBuffer) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst dataViewSchema = joi.any().custom((value, helpers) => {\n if (value instanceof DataView) {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nexport const isString = (value: unknown): value is string => {\n return matchesSchema(value, stringSchema)\n}\n\nexport const isBoolean = (value: unknown): value is boolean => {\n return matchesSchema(value, booleanSchema)\n}\n\nexport const isBigint = (value: unknown): value is bigint => {\n return matchesSchema(value, bigintSchema)\n}\n\nexport const isNull = (value: unknown): value is null => {\n return matchesSchema(value, nullSchema)\n}\n\nexport const isUndefined = (value: unknown): value is undefined => {\n return matchesSchema(value, undefinedSchema)\n}\n\nexport const isInt8Array = (value: unknown): value is Int8Array => {\n return matchesSchema(value, int8ArraySchema)\n}\n\nexport const isUint8Array = (value: unknown): value is Uint8Array => {\n return matchesSchema(value, uint8ArraySchema)\n}\n\nexport const isUint8ClampedArray = (value: unknown): value is Uint8ClampedArray => {\n return matchesSchema(value, uint8ClampedArraySchema)\n}\n\nexport const isInt16Array = (value: unknown): value is Int16Array => {\n return matchesSchema(value, int16ArraySchema)\n}\n\nexport const isUint16Array = (value: unknown): value is Uint16Array => {\n return matchesSchema(value, uint16ArraySchema)\n}\n\nexport const isInt32Array = (value: unknown): value is Int32Array => {\n return matchesSchema(value, int32ArraySchema)\n}\n\nexport const isUint32Array = (value: unknown): value is Uint32Array => {\n return matchesSchema(value, uint32ArraySchema)\n}\n\nexport const isFloat32Array = (value: unknown): value is Float32Array => {\n return matchesSchema(value, float32ArraySchema)\n}\n\nexport const isFloat64Array = (value: unknown): value is Float64Array => {\n return matchesSchema(value, float64ArraySchema)\n}\n\nexport const isBigInt64Array = (value: unknown): value is BigInt64Array => {\n return matchesSchema(value, bigInt64ArraySchema)\n}\n\nexport const isBigUint64Array = (value: unknown): value is BigUint64Array => {\n return matchesSchema(value, bigUint64ArraySchema)\n}\n\nexport const isDate = (value: unknown): value is Date => {\n return matchesSchema(value, dateSchema)\n}\n\nexport const isRegExp = (value: unknown): value is RegExp => {\n return matchesSchema(value, regExpSchema)\n}\n\nexport const isArrayBuffer = (value: unknown): value is ArrayBuffer => {\n return matchesSchema(value, arrayBufferSchema)\n}\n\nexport const isDataView = (value: unknown): value is DataView => {\n return matchesSchema(value, dataViewSchema)\n}\n\nexport const isNonArraySchemaObject = (\n value?: OpenAPIV3.SchemaObject | undefined\n): value is OpenAPIV3.NonArraySchemaObject => {\n return isObject(value) && value.type !== 'array'\n}\n\nexport { isStringContent } from './utils'\n","/*\n|--------------------------------------------------------------------------\n| Decorator Utilities\n|--------------------------------------------------------------------------\n|\n| Utility functions for Resourceful decorators. These functions help to\n| ensure that information sent TO the database and information retrieved\n| FROM the database are the expected shapes and types.\n|\n*/\nimport { DateTime } from 'luxon'\nimport { isString } from '@/private/utils'\nimport { isLuxonDateTime, isLucidBinaryValue, isObject, isArray } from './type_guards'\nimport {\n E_INVALID_PREPARED_VALUE,\n E_INVALID_CONSUMED_VALUE,\n E_UNCASTABLE,\n} from '@nhtio/lucid-resourceful/errors'\nimport type { LucidBinaryValue, LucidPlainObject } from '@nhtio/lucid-resourceful/types'\n\n/**\n * Casts an unknown value to a string\n * @param value - The value to cast\n * @returns The value as a string\n * @throws E_UNCASTABLE when the value cannot be cast to a string\n */\nexport const castValueAsString = (value: unknown): string => {\n if ('string' === typeof value) return value\n if ('number' === typeof value) return value.toString()\n throw new E_UNCASTABLE(['String'])\n}\n/**\n * Casts an unknown value to a Luxon DateTime with enhanced string parsing\n * @param value - The value to cast (string, number, Date, or DateTime)\n * @returns The value as a Luxon DateTime\n * @throws E_UNCASTABLE when the value cannot be cast to a DateTime\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport const castValueAsDate = (value: unknown): DateTime => {\n switch (typeof value) {\n case 'string': {\n const ret = DateTime.fromSQL(value)\n if (!ret.isValid) {\n const fromIso = DateTime.fromISO(value)\n if (fromIso.isValid) return fromIso\n throw new E_UNCASTABLE(['Date'])\n }\n return ret\n }\n case 'number': {\n let ret = DateTime.fromSeconds(value)\n if (!ret.isValid) {\n throw new E_UNCASTABLE(['Date'])\n }\n if (ret.year > 9999 || ret.year < 0) {\n ret = DateTime.fromMillis(value)\n }\n return ret\n }\n case 'object': {\n if (isLuxonDateTime(value)) {\n return value\n }\n if (value instanceof Date) {\n const ret = DateTime.fromJSDate(value)\n if (!ret.isValid) {\n throw new E_UNCASTABLE(['Date'])\n }\n return ret\n }\n throw new E_UNCASTABLE(['Date'])\n }\n default: {\n throw new E_UNCASTABLE(['Date'])\n }\n }\n}\n/**\n * Casts an unknown value to a Luxon DateTime with enhanced error handling and string parsing\n * @param value - The value to cast (string, number, Date, or DateTime)\n * @returns The value as a Luxon DateTime\n * @throws E_UNCASTABLE when the value cannot be cast to a DateTime\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport const castValueAsDateTime = (value: unknown): DateTime => {\n try {\n return castValueAsDate(value)\n } catch {\n throw new E_UNCASTABLE(['DateTime'])\n }\n}\n/**\n * Casts an unknown value to a Uint8Array (binary data)\n * @param value - The value to cast\n * @returns The value as a Uint8Array\n * @throws E_UNCASTABLE when the value cannot be cast to binary data\n */\nexport const castValueAsBinary = (value: unknown): Uint8Array => {\n if (isLucidBinaryValue(value)) return value\n throw new E_UNCASTABLE(['Binary'])\n}\n/**\n * Casts an unknown value to a number\n * @param value - The value to cast\n * @returns The value as a number\n * @throws E_UNCASTABLE when the value cannot be cast to a number\n */\nexport const castValueAsNumber = (value: unknown): number => {\n if ('number' === typeof value) return value\n if ('string' === typeof value) {\n const parsed = Number(value)\n if (Number.isNaN(parsed)) {\n throw new E_UNCASTABLE(['Number'])\n }\n return parsed\n }\n throw new E_UNCASTABLE(['Number'])\n}\n/**\n * Casts an unknown value to an integer\n * @param value - The value to cast\n * @returns The value as an integer (truncated if necessary)\n * @throws E_UNCASTABLE when the value cannot be cast to an integer\n */\nexport const castValueAsInteger = (value: unknown): number => {\n const num = castValueAsNumber(value)\n return Math.trunc(num)\n}\n/**\n * Casts an unknown value to a bigint\n * @param value - The value to cast\n * @returns The value as a bigint\n * @throws E_UNCASTABLE when the value cannot be cast to a bigint\n */\nexport const castValueAsBigint = (value: unknown): bigint => {\n try {\n if (typeof value === 'bigint') return value\n const num = castValueAsNumber(value)\n return BigInt(num)\n } catch {\n throw new E_UNCASTABLE(['Bigint'])\n }\n}\n/**\n * Casts an unknown value to an unsigned integer\n * @param value - The value to cast\n * @returns The value as an unsigned integer (32-bit)\n * @throws E_UNCASTABLE when the value cannot be cast to an unsigned integer\n */\nexport const castValueAsUnsignedInt = (value: unknown): number => {\n try {\n const num = typeof value === 'bigint' ? Number(value) : castValueAsNumber(value)\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n throw new E_UNCASTABLE(['Unsignedint'])\n }\n return num >>> 0\n } catch {\n throw new E_UNCASTABLE(['Unsignedint'])\n }\n}\n/**\n * Casts an unknown value to a boolean\n * @param value - The value to cast\n * @returns The value as a boolean\n * @throws E_UNCASTABLE when the value cannot be cast to a boolean\n */\nexport const castValueAsBoolean = (value: unknown): boolean => {\n if ('boolean' === typeof value) return value\n if ('string' === typeof value) {\n const lower = value.toLowerCase()\n if (['true', '1'].includes(lower)) return true\n if (['false', '0'].includes(lower)) return false\n throw new E_UNCASTABLE(['Boolean'])\n }\n if ('number' === typeof value) {\n if (value === 0) return false\n if (value === 1) return true\n throw new E_UNCASTABLE(['Boolean'])\n }\n throw new E_UNCASTABLE(['Boolean'])\n}\n/**\n * Casts an unknown value to a plain object\n * @param value - The value to cast\n * @returns The value as a LucidPlainObject\n * @throws E_UNCASTABLE when the value cannot be cast to an object\n */\nexport const castValueAsObject = (value: unknown): LucidPlainObject => {\n if (isObject(value)) return value\n throw new E_UNCASTABLE(['Object'])\n}\n/**\n * Casts an unknown value to an array\n * @param value - The value to cast\n * @returns The value as an array of unknown elements\n * @throws E_UNCASTABLE when the value cannot be cast to an array\n */\nexport const castValueAsArray = (value: unknown): Array<unknown> => {\n if (isArray(value)) return value\n throw new E_UNCASTABLE(['Array'])\n}\n\n/**\n * Prepares a string value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared string value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareString(key: string, value: unknown, nullable: true): string | null\nexport function prepareString(key: string, value: unknown, nullable?: false): string\nexport function prepareString(\n key: string,\n value: unknown,\n nullable: boolean = false\n): string | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsString(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'String'])\n }\n}\n/**\n * Prepares a date value for database storage with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared DateTime value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function prepareDate(key: string, value: unknown, nullable: true): Date | null\nexport function prepareDate(key: string, value: unknown, nullable?: false): Date\nexport function prepareDate(key: string, value: unknown, nullable: boolean = false): Date | null {\n if (value === null && nullable === true) return null\n try {\n const dto = castValueAsDate(value)\n return dto.toJSDate()\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Date'])\n }\n}\n/**\n * Prepares a datetime value for database storage with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared DateTime value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function prepareDateTime(key: string, value: unknown, nullable: true): Date | null\nexport function prepareDateTime(key: string, value: unknown, nullable?: false): Date\nexport function prepareDateTime(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Date | null {\n if (value === null && nullable === true) return null\n try {\n const dto = castValueAsDateTime(value)\n return dto.toJSDate()\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'DateTime'])\n }\n}\n/**\n * Prepares a binary value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared binary value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBinary(key: string, value: unknown, nullable: true): LucidBinaryValue | null\nexport function prepareBinary(key: string, value: unknown, nullable?: false): LucidBinaryValue\nexport function prepareBinary(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidBinaryValue | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBinary(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Binary'])\n }\n}\n/**\n * Prepares a number value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared number value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareNumber(key: string, value: unknown, nullable: true): number | null\nexport function prepareNumber(key: string, value: unknown, nullable?: false): number\nexport function prepareNumber(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsNumber(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Number'])\n }\n}\n/**\n * Prepares an integer value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared integer value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareInteger(key: string, value: unknown, nullable: true): number | null\nexport function prepareInteger(key: string, value: unknown, nullable?: false): number\nexport function prepareInteger(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsInteger(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Integer'])\n }\n}\n/**\n * Prepares a bigint value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared bigint value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBigint(key: string, value: unknown, nullable: true): bigint | null\nexport function prepareBigint(key: string, value: unknown, nullable?: false): bigint\nexport function prepareBigint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): bigint | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBigint(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Bigint'])\n }\n}\n/**\n * Prepares an unsigned integer value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared unsigned integer value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareUnsignedint(key: string, value: unknown, nullable: true): number | null\nexport function prepareUnsignedint(key: string, value: unknown, nullable?: false): number\nexport function prepareUnsignedint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsUnsignedInt(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Unsignedint'])\n }\n}\n/**\n * Prepares a boolean value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared boolean value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBoolean(key: string, value: unknown, nullable: true): boolean | null\nexport function prepareBoolean(key: string, value: unknown, nullable?: false): boolean\nexport function prepareBoolean(\n key: string,\n value: unknown,\n nullable: boolean = false\n): boolean | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBoolean(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Boolean'])\n }\n}\n/**\n * Prepares an object value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared object value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareObject(key: string, value: unknown, nullable: true): LucidPlainObject | null\nexport function prepareObject(key: string, value: unknown, nullable?: false): LucidPlainObject\nexport function prepareObject(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidPlainObject | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsObject(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Object'])\n }\n}\n/**\n * Prepares an array value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared array value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareArray(key: string, value: unknown, nullable: true): Array<unknown> | null\nexport function prepareArray(key: string, value: unknown, nullable?: false): Array<unknown>\nexport function prepareArray(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Array<unknown> | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsArray(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Array'])\n }\n}\n\n/**\n * Consumes a string value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed string value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeString(key: string, value: unknown, nullable: true): string | null\nexport function consumeString(key: string, value: unknown, nullable?: false): string\nexport function consumeString(\n key: string,\n value: unknown,\n nullable: boolean = false\n): string | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsString(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'String'])\n }\n}\n/**\n * Consumes a date value from database results with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed DateTime value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function consumeDate(key: string, value: unknown, nullable: true): DateTime | null\nexport function consumeDate(key: string, value: unknown, nullable?: false): DateTime\nexport function consumeDate(\n key: string,\n value: unknown,\n nullable: boolean = false\n): DateTime | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsDate(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Date'])\n }\n}\n/**\n * Consumes a datetime value from database results with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed DateTime value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function consumeDateTime(key: string, value: unknown, nullable: true): DateTime | null\nexport function consumeDateTime(key: string, value: unknown, nullable?: false): DateTime\nexport function consumeDateTime(\n key: string,\n value: unknown,\n nullable: boolean = false\n): DateTime | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsDateTime(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'DateTime'])\n }\n}\n/**\n * Consumes a binary value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed LucidBinaryValue or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBinary(key: string, value: unknown, nullable: true): LucidBinaryValue | null\nexport function consumeBinary(key: string, value: unknown, nullable?: false): LucidBinaryValue\nexport function consumeBinary(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidBinaryValue | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBinary(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Binary'])\n }\n}\n/**\n * Consumes a number value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed number value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeNumber(key: string, value: unknown, nullable: true): number | null\nexport function consumeNumber(key: string, value: unknown, nullable?: false): number\nexport function consumeNumber(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsNumber(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Number'])\n }\n}\n/**\n * Consumes an integer value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed integer value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeInteger(key: string, value: unknown, nullable: true): number | null\nexport function consumeInteger(key: string, value: unknown, nullable?: false): number\nexport function consumeInteger(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsInteger(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Integer'])\n }\n}\n/**\n * Consumes a bigint value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed bigint value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBigint(key: string, value: unknown, nullable: true): bigint | null\nexport function consumeBigint(key: string, value: unknown, nullable?: false): bigint\nexport function consumeBigint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): bigint | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBigint(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Bigint'])\n }\n}\n/**\n * Consumes an unsigned integer value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed unsigned integer value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeUnsignedint(key: string, value: unknown, nullable: true): number | null\nexport function consumeUnsignedint(key: string, value: unknown, nullable?: false): number\nexport function consumeUnsignedint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsUnsignedInt(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Unsignedint'])\n }\n}\n/**\n * Consumes a boolean value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed boolean value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBoolean(key: string, value: unknown, nullable: true): boolean | null\nexport function consumeBoolean(key: string, value: unknown, nullable?: false): boolean\nexport function consumeBoolean(\n key: string,\n value: unknown,\n nullable: boolean = false\n): boolean | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBoolean(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Boolean'])\n }\n}\n/**\n * Consumes an object value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed LucidPlainObject or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeObject(key: string, value: unknown, nullable: true): LucidPlainObject | null\nexport function consumeObject(key: string, value: unknown, nullable?: false): LucidPlainObject\nexport function consumeObject(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidPlainObject | null {\n if (value === null && nullable === true) return null\n try {\n if (isString(value)) {\n value = JSON.parse(value)\n }\n\n return castValueAsObject(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Object'])\n }\n}\n/**\n * Consumes an array value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed array value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeArray(key: string, value: unknown, nullable: true): Array<unknown> | null\nexport function consumeArray(key: string, value: unknown, nullable?: false): Array<unknown>\nexport function consumeArray(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Array<unknown> | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsArray(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Array'])\n }\n}\n"],"names":["isObject","joi","isString"],"mappings":"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"}
1
+ {"version":3,"file":"decorator_utils-DYU-G6Gj.js","sources":["../src/private/type_guards.ts","../src/private/decorator_utils.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Type Guards\n|--------------------------------------------------------------------------\n|\n| Utility functions that help determine the type of unknown values\n|\n*/\n\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { stripUndefinedValuesFromObject } from './utils'\nimport {\n isException,\n isJoiValidationError,\n isVineValidationError,\n isNotImplementedError,\n} from './router_macro/utils/errors'\nimport {\n isArray,\n isBigInt,\n isBigIntTypedArray,\n isError,\n isInstanceOf,\n isLucidBinaryValue,\n isLuxonDateTime,\n isLuxonDuration,\n isLuxonInterval,\n isLuxonSystemZone,\n isMap,\n isNegativeZero,\n isNumber,\n isObject,\n isPhoneObject,\n isPrimitive,\n isSet,\n isTypedArray,\n isUniterableObject,\n} from '@nhtio/encoder/type_guards'\nimport {\n ResourcefulStringTypeSchema,\n ResourcefulDateTypeSchema,\n ResourcefulDateTimeTypeSchema,\n ResourcefulBinaryTypeSchema,\n ResourcefulNumberTypeSchema,\n ResourcefulIntegerTypeSchema,\n ResourcefulBigintTypeSchema,\n ResourcefulUnsignedIntegerTypeSchema,\n ResourcefulBooleanTypeSchema,\n ResourcefulObjectTypeSchema,\n ResourcefulArrayTypeSchema,\n} from './data_type_schemas'\nimport type { OpenAPIV3 } from 'openapi-types'\nimport type { ResourcefulModel } from './mixin'\nimport type { ObjectSchema, AnySchema } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulStringType,\n ResourcefulDateType,\n ResourcefulDateTimeType,\n ResourcefulBinaryType,\n ResourcefulNumberType,\n ResourcefulIntegerType,\n ResourcefulBigintType,\n ResourcefulUnsignedIntegerType,\n ResourcefulBooleanType,\n ResourcefulObjectType,\n ResourcefulArrayType,\n} from '@nhtio/lucid-resourceful/definitions'\n\nexport {\n isArray,\n isBigInt,\n isBigIntTypedArray,\n isError,\n isInstanceOf,\n isLucidBinaryValue,\n isLuxonDateTime,\n isLuxonDuration,\n isLuxonInterval,\n isLuxonSystemZone,\n isMap,\n isNegativeZero,\n isNumber,\n isObject,\n isPhoneObject,\n isPrimitive,\n isSet,\n isTypedArray,\n isUniterableObject,\n isException,\n isJoiValidationError,\n isVineValidationError,\n isNotImplementedError,\n}\n\nconst isResourcefulModelCache = new Map<unknown, boolean>()\n\n/**\n * Type guard to check if a value is a ResourcefulModel\n * @param value - The value to check\n * @returns True if the value is a ResourcefulModel, false otherwise\n */\nexport const isResourcefulModel = (value: unknown): value is ResourcefulModel => {\n const cached = isResourcefulModelCache.get(value)\n if ('undefined' !== typeof cached) {\n return cached\n }\n if (!isObject(value) && !(typeof value === 'function')) return false\n\n // For class constructors (functions), check the properties directly on the constructor\n if (typeof value === 'function') {\n const returnable =\n '$resourcefulName' in value &&\n 'string' === typeof value.$resourcefulName &&\n '$resourcefulColumns' in value &&\n value.$resourcefulColumns instanceof Map &&\n '$resourcefulRelationships' in value &&\n value.$resourcefulRelationships instanceof Map &&\n '$resourcefulComputedAccessors' in value &&\n value.$resourcefulComputedAccessors instanceof Map\n isResourcefulModelCache.set(value, returnable)\n return returnable\n }\n\n // For instances, check the constructor of the instance\n /* istanbul ignore if -- @preserve */\n if ('constructor' in value) {\n // @ts-ignore\n const constructor = value.constructor\n /* istanbul ignore if -- @preserve */\n if (!constructor || typeof constructor !== 'function') {\n isResourcefulModelCache.set(value, false)\n return false\n }\n\n return isResourcefulModel(constructor) // Recursively check the constructor\n }\n\n /* istanbul ignore next -- @preserve */\n const proto = Object.getPrototypeOf(value)\n return isResourcefulModel(proto)\n}\n\nconst BaseDataTypeSchemaFactory = (name: string, type: string) => {\n return joi\n .object({\n type: joi.string().allow(type).required(),\n name: joi.string().allow(name).optional(),\n schema: joi\n .object({\n _cache: joi.required(),\n _flags: joi.object().unknown(true).required(),\n _ids: joi\n .object({\n _byId: joi.object().instance(Map).required(),\n _byKey: joi.object().instance(Map).required(),\n _schemaChain: joi.boolean().required(),\n })\n .unknown(true)\n .required(),\n _invalids: joi.required(),\n _preferences: joi.required(),\n _refs: joi.object().unknown(true).required(),\n _rules: joi.array().items(joi.any()).required(),\n _singleRules: joi.object().instance(Map).required(),\n _valids: joi.required(),\n $: joi.required(),\n $_root: joi.required(),\n $_super: joi.required(),\n $_temp: joi.required(),\n $_terms: joi.required(),\n ruleset: joi.func().required(),\n type: joi.string().required(),\n })\n .unknown(true)\n .optional(),\n })\n .unknown(true)\n}\n\nconst getDataTypeSchemaResults = (\n value: unknown,\n name: string,\n type: string,\n schema: ObjectSchema\n) => {\n if (!isObject(value)) return false\n if (value.type !== type) return false\n const base = BaseDataTypeSchemaFactory(name, type)\n const { error: errorFromSchema } = schema.validate(\n stripUndefinedValuesFromObject({\n ...value,\n type: undefined,\n name: undefined,\n schema: undefined,\n })\n )\n const { error: errorFromBase } = base.validate({\n type: value.type,\n name: value.name,\n schema: value.schema,\n })\n return 'undefined' === typeof errorFromSchema && 'undefined' === typeof errorFromBase\n}\n\nexport const isResourcefulStringType = (value: unknown): value is ResourcefulStringType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulStringType',\n 'string',\n ResourcefulStringTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulDateType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulDateType, false otherwise\n */\nexport const isResourcefulDateType = (value: unknown): value is ResourcefulDateType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulDateType',\n 'string',\n ResourcefulDateTypeSchema().append({\n format: joi.string().valid('date').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulDateTimeType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulDateTimeType, false otherwise\n */\nexport const isResourcefulDateTimeType = (value: unknown): value is ResourcefulDateTimeType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulDateTimeType',\n 'string',\n ResourcefulDateTimeTypeSchema().append({\n format: joi.string().valid('date-time').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBinaryType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBinaryType, false otherwise\n */\nexport const isResourcefulBinaryType = (value: unknown): value is ResourcefulBinaryType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBinaryType',\n 'string',\n ResourcefulBinaryTypeSchema().append({\n format: joi.string().valid('binary').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulNumberType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulNumberType, false otherwise\n */\nexport const isResourcefulNumberType = (value: unknown): value is ResourcefulNumberType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulNumberType',\n 'number',\n ResourcefulNumberTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulIntegerType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulIntegerType, false otherwise\n */\nexport const isResourcefulIntegerType = (value: unknown): value is ResourcefulIntegerType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulIntegerType',\n 'integer',\n ResourcefulIntegerTypeSchema().append({\n format: joi.string().valid('int32').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBigintType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBigintType, false otherwise\n */\nexport const isResourcefulBigintType = (value: unknown): value is ResourcefulBigintType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBigintType',\n 'integer',\n ResourcefulBigintTypeSchema().append({\n format: joi.string().valid('int64').required(),\n })\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulUnsignedIntegerType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulUnsignedIntegerType, false otherwise\n */\nexport const isResourcefulUnsignedIntegerType = (\n value: unknown\n): value is ResourcefulUnsignedIntegerType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulUnsignedIntegerType',\n 'integer',\n ResourcefulUnsignedIntegerTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulBooleanType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulBooleanType, false otherwise\n */\nexport const isResourcefulBooleanType = (value: unknown): value is ResourcefulBooleanType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulBooleanType',\n 'boolean',\n ResourcefulBooleanTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulObjectType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulObjectType, false otherwise\n */\nexport const isResourcefulObjectType = (value: unknown): value is ResourcefulObjectType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulObjectType',\n 'object',\n ResourcefulObjectTypeSchema()\n )\n}\n\n/**\n * Type guard to check if a value is a ResourcefulArrayType\n * @param value - The value to check\n * @returns True if the value is a ResourcefulArrayType, false otherwise\n */\nexport const isResourcefulArrayType = (value: unknown): value is ResourcefulArrayType => {\n return getDataTypeSchemaResults(\n value,\n 'ResourcefulArrayType',\n 'array',\n ResourcefulArrayTypeSchema()\n )\n}\n\nconst matchesSchema = (value: unknown, schema: AnySchema): boolean => {\n const { error } = schema.validate(value, {\n abortEarly: true,\n })\n return !error\n}\n\nconst stringSchema = joi.string().allow('').required()\nconst booleanSchema = joi.boolean().required()\nconst bigintSchema = joi\n .any()\n .custom((value, helpers) => {\n if (typeof value === 'bigint') {\n return value\n }\n return helpers.error('any.invalid')\n })\n .required()\nconst nullSchema = joi.any().valid(null).required()\nconst undefinedSchema = joi.any().custom((value, helpers) => {\n /* v8 ignore next 3 */\n if (typeof value === 'undefined') {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nconst int8ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int8Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint8ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint8Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint8ClampedArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint8ClampedArray) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst int16ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int16Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint16ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint16Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst int32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Int32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst uint32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Uint32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst float32ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Float32Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst float64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof Float64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst bigInt64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof BigInt64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst bigUint64ArraySchema = joi.any().custom((value, helpers) => {\n if (value instanceof BigUint64Array) {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nconst dateSchema = joi.any().custom((value, helpers) => {\n if (value instanceof Date) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst regExpSchema = joi.any().custom((value, helpers) => {\n if (value instanceof RegExp) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst arrayBufferSchema = joi.any().custom((value, helpers) => {\n if (value instanceof ArrayBuffer) {\n return value\n }\n return helpers.error('any.invalid')\n})\nconst dataViewSchema = joi.any().custom((value, helpers) => {\n if (value instanceof DataView) {\n return value\n }\n return helpers.error('any.invalid')\n})\n\nexport const isString = (value: unknown): value is string => {\n return matchesSchema(value, stringSchema)\n}\n\nexport const isBoolean = (value: unknown): value is boolean => {\n return matchesSchema(value, booleanSchema)\n}\n\nexport const isBigint = (value: unknown): value is bigint => {\n return matchesSchema(value, bigintSchema)\n}\n\nexport const isNull = (value: unknown): value is null => {\n return matchesSchema(value, nullSchema)\n}\n\nexport const isUndefined = (value: unknown): value is undefined => {\n return matchesSchema(value, undefinedSchema)\n}\n\nexport const isInt8Array = (value: unknown): value is Int8Array => {\n return matchesSchema(value, int8ArraySchema)\n}\n\nexport const isUint8Array = (value: unknown): value is Uint8Array => {\n return matchesSchema(value, uint8ArraySchema)\n}\n\nexport const isUint8ClampedArray = (value: unknown): value is Uint8ClampedArray => {\n return matchesSchema(value, uint8ClampedArraySchema)\n}\n\nexport const isInt16Array = (value: unknown): value is Int16Array => {\n return matchesSchema(value, int16ArraySchema)\n}\n\nexport const isUint16Array = (value: unknown): value is Uint16Array => {\n return matchesSchema(value, uint16ArraySchema)\n}\n\nexport const isInt32Array = (value: unknown): value is Int32Array => {\n return matchesSchema(value, int32ArraySchema)\n}\n\nexport const isUint32Array = (value: unknown): value is Uint32Array => {\n return matchesSchema(value, uint32ArraySchema)\n}\n\nexport const isFloat32Array = (value: unknown): value is Float32Array => {\n return matchesSchema(value, float32ArraySchema)\n}\n\nexport const isFloat64Array = (value: unknown): value is Float64Array => {\n return matchesSchema(value, float64ArraySchema)\n}\n\nexport const isBigInt64Array = (value: unknown): value is BigInt64Array => {\n return matchesSchema(value, bigInt64ArraySchema)\n}\n\nexport const isBigUint64Array = (value: unknown): value is BigUint64Array => {\n return matchesSchema(value, bigUint64ArraySchema)\n}\n\nexport const isDate = (value: unknown): value is Date => {\n return matchesSchema(value, dateSchema)\n}\n\nexport const isRegExp = (value: unknown): value is RegExp => {\n return matchesSchema(value, regExpSchema)\n}\n\nexport const isArrayBuffer = (value: unknown): value is ArrayBuffer => {\n return matchesSchema(value, arrayBufferSchema)\n}\n\nexport const isDataView = (value: unknown): value is DataView => {\n return matchesSchema(value, dataViewSchema)\n}\n\nexport const isNonArraySchemaObject = (\n value?: OpenAPIV3.SchemaObject | undefined\n): value is OpenAPIV3.NonArraySchemaObject => {\n return isObject(value) && value.type !== 'array'\n}\n\nexport { isStringContent } from './utils'\n","/*\n|--------------------------------------------------------------------------\n| Decorator Utilities\n|--------------------------------------------------------------------------\n|\n| Utility functions for Resourceful decorators. These functions help to\n| ensure that information sent TO the database and information retrieved\n| FROM the database are the expected shapes and types.\n|\n*/\nimport { DateTime } from 'luxon'\nimport { isString } from '@/private/utils'\nimport { isLuxonDateTime, isLucidBinaryValue, isObject, isArray } from './type_guards'\nimport {\n E_INVALID_PREPARED_VALUE,\n E_INVALID_CONSUMED_VALUE,\n E_UNCASTABLE,\n} from '@nhtio/lucid-resourceful/errors'\nimport type { LucidBinaryValue, LucidPlainObject } from '@nhtio/lucid-resourceful/types'\n\n/**\n * Casts an unknown value to a string\n * @param value - The value to cast\n * @returns The value as a string\n * @throws E_UNCASTABLE when the value cannot be cast to a string\n */\nexport const castValueAsString = (value: unknown): string => {\n if ('string' === typeof value) return value\n if ('number' === typeof value) return value.toString()\n throw new E_UNCASTABLE(['String'])\n}\n/**\n * Casts an unknown value to a Luxon DateTime with enhanced string parsing\n * @param value - The value to cast (string, number, Date, or DateTime)\n * @returns The value as a Luxon DateTime\n * @throws E_UNCASTABLE when the value cannot be cast to a DateTime\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport const castValueAsDate = (value: unknown): DateTime => {\n switch (typeof value) {\n case 'string': {\n const ret = DateTime.fromSQL(value)\n if (!ret.isValid) {\n const fromIso = DateTime.fromISO(value)\n if (fromIso.isValid) return fromIso\n throw new E_UNCASTABLE(['Date'])\n }\n return ret\n }\n case 'number': {\n let ret = DateTime.fromSeconds(value)\n if (!ret.isValid) {\n throw new E_UNCASTABLE(['Date'])\n }\n if (ret.year > 9999 || ret.year < 0) {\n ret = DateTime.fromMillis(value)\n }\n return ret\n }\n case 'object': {\n if (isLuxonDateTime(value)) {\n return value\n }\n if (value instanceof Date) {\n const ret = DateTime.fromJSDate(value)\n if (!ret.isValid) {\n throw new E_UNCASTABLE(['Date'])\n }\n return ret\n }\n throw new E_UNCASTABLE(['Date'])\n }\n default: {\n throw new E_UNCASTABLE(['Date'])\n }\n }\n}\n/**\n * Casts an unknown value to a Luxon DateTime with enhanced error handling and string parsing\n * @param value - The value to cast (string, number, Date, or DateTime)\n * @returns The value as a Luxon DateTime\n * @throws E_UNCASTABLE when the value cannot be cast to a DateTime\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport const castValueAsDateTime = (value: unknown): DateTime => {\n try {\n return castValueAsDate(value)\n } catch {\n throw new E_UNCASTABLE(['DateTime'])\n }\n}\n/**\n * Casts an unknown value to a Uint8Array (binary data)\n * @param value - The value to cast\n * @returns The value as a Uint8Array\n * @throws E_UNCASTABLE when the value cannot be cast to binary data\n */\nexport const castValueAsBinary = (value: unknown): Uint8Array => {\n if (isLucidBinaryValue(value)) return value\n throw new E_UNCASTABLE(['Binary'])\n}\n/**\n * Casts an unknown value to a number\n * @param value - The value to cast\n * @returns The value as a number\n * @throws E_UNCASTABLE when the value cannot be cast to a number\n */\nexport const castValueAsNumber = (value: unknown): number => {\n if ('number' === typeof value) return value\n if ('string' === typeof value) {\n const parsed = Number(value)\n if (Number.isNaN(parsed)) {\n throw new E_UNCASTABLE(['Number'])\n }\n return parsed\n }\n throw new E_UNCASTABLE(['Number'])\n}\n/**\n * Casts an unknown value to an integer\n * @param value - The value to cast\n * @returns The value as an integer (truncated if necessary)\n * @throws E_UNCASTABLE when the value cannot be cast to an integer\n */\nexport const castValueAsInteger = (value: unknown): number => {\n const num = castValueAsNumber(value)\n return Math.trunc(num)\n}\n/**\n * Casts an unknown value to a bigint\n * @param value - The value to cast\n * @returns The value as a bigint\n * @throws E_UNCASTABLE when the value cannot be cast to a bigint\n */\nexport const castValueAsBigint = (value: unknown): bigint => {\n try {\n if (typeof value === 'bigint') return value\n const num = castValueAsNumber(value)\n return BigInt(num)\n } catch {\n throw new E_UNCASTABLE(['Bigint'])\n }\n}\n/**\n * Casts an unknown value to an unsigned integer\n * @param value - The value to cast\n * @returns The value as an unsigned integer (32-bit)\n * @throws E_UNCASTABLE when the value cannot be cast to an unsigned integer\n */\nexport const castValueAsUnsignedInt = (value: unknown): number => {\n try {\n const num = typeof value === 'bigint' ? Number(value) : castValueAsNumber(value)\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n throw new E_UNCASTABLE(['Unsignedint'])\n }\n return num >>> 0\n } catch {\n throw new E_UNCASTABLE(['Unsignedint'])\n }\n}\n/**\n * Casts an unknown value to a boolean\n * @param value - The value to cast\n * @returns The value as a boolean\n * @throws E_UNCASTABLE when the value cannot be cast to a boolean\n */\nexport const castValueAsBoolean = (value: unknown): boolean => {\n if ('boolean' === typeof value) return value\n if ('string' === typeof value) {\n const lower = value.toLowerCase()\n if (['true', '1'].includes(lower)) return true\n if (['false', '0'].includes(lower)) return false\n throw new E_UNCASTABLE(['Boolean'])\n }\n if ('number' === typeof value) {\n if (value === 0) return false\n if (value === 1) return true\n throw new E_UNCASTABLE(['Boolean'])\n }\n throw new E_UNCASTABLE(['Boolean'])\n}\n/**\n * Casts an unknown value to a plain object\n * @param value - The value to cast\n * @returns The value as a LucidPlainObject\n * @throws E_UNCASTABLE when the value cannot be cast to an object\n */\nexport const castValueAsObject = (value: unknown): LucidPlainObject => {\n if (isObject(value)) return value\n throw new E_UNCASTABLE(['Object'])\n}\n/**\n * Casts an unknown value to an array\n * @param value - The value to cast\n * @returns The value as an array of unknown elements\n * @throws E_UNCASTABLE when the value cannot be cast to an array\n */\nexport const castValueAsArray = (value: unknown): Array<unknown> => {\n if (isArray(value)) return value\n throw new E_UNCASTABLE(['Array'])\n}\n\n/**\n * Prepares a string value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared string value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareString(key: string, value: unknown, nullable: true): string | null\nexport function prepareString(key: string, value: unknown, nullable?: false): string\nexport function prepareString(\n key: string,\n value: unknown,\n nullable: boolean = false\n): string | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsString(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'String'])\n }\n}\n/**\n * Prepares a date value for database storage with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared DateTime value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function prepareDate(key: string, value: unknown, nullable: true): Date | null\nexport function prepareDate(key: string, value: unknown, nullable?: false): Date\nexport function prepareDate(key: string, value: unknown, nullable: boolean = false): Date | null {\n if (value === null && nullable === true) return null\n try {\n const dto = castValueAsDate(value)\n return dto.toJSDate()\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Date'])\n }\n}\n/**\n * Prepares a datetime value for database storage with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared DateTime value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function prepareDateTime(key: string, value: unknown, nullable: true): Date | null\nexport function prepareDateTime(key: string, value: unknown, nullable?: false): Date\nexport function prepareDateTime(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Date | null {\n if (value === null && nullable === true) return null\n try {\n const dto = castValueAsDateTime(value)\n return dto.toJSDate()\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'DateTime'])\n }\n}\n/**\n * Prepares a binary value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared binary value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBinary(key: string, value: unknown, nullable: true): LucidBinaryValue | null\nexport function prepareBinary(key: string, value: unknown, nullable?: false): LucidBinaryValue\nexport function prepareBinary(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidBinaryValue | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBinary(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Binary'])\n }\n}\n/**\n * Prepares a number value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared number value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareNumber(key: string, value: unknown, nullable: true): number | null\nexport function prepareNumber(key: string, value: unknown, nullable?: false): number\nexport function prepareNumber(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsNumber(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Number'])\n }\n}\n/**\n * Prepares an integer value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared integer value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareInteger(key: string, value: unknown, nullable: true): number | null\nexport function prepareInteger(key: string, value: unknown, nullable?: false): number\nexport function prepareInteger(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsInteger(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Integer'])\n }\n}\n/**\n * Prepares a bigint value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared bigint value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBigint(key: string, value: unknown, nullable: true): bigint | null\nexport function prepareBigint(key: string, value: unknown, nullable?: false): bigint\nexport function prepareBigint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): bigint | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBigint(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Bigint'])\n }\n}\n/**\n * Prepares an unsigned integer value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared unsigned integer value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareUnsignedint(key: string, value: unknown, nullable: true): number | null\nexport function prepareUnsignedint(key: string, value: unknown, nullable?: false): number\nexport function prepareUnsignedint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsUnsignedInt(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Unsignedint'])\n }\n}\n/**\n * Prepares a boolean value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared boolean value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareBoolean(key: string, value: unknown, nullable: true): boolean | null\nexport function prepareBoolean(key: string, value: unknown, nullable?: false): boolean\nexport function prepareBoolean(\n key: string,\n value: unknown,\n nullable: boolean = false\n): boolean | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBoolean(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Boolean'])\n }\n}\n/**\n * Prepares an object value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared object value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareObject(key: string, value: unknown, nullable: true): LucidPlainObject | null\nexport function prepareObject(key: string, value: unknown, nullable?: false): LucidPlainObject\nexport function prepareObject(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidPlainObject | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsObject(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Object'])\n }\n}\n/**\n * Prepares an array value for database storage with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to prepare\n * @param nullable - Whether the field can be null\n * @returns The prepared array value or null if nullable and value is null\n * @throws E_INVALID_PREPARED_VALUE when the value cannot be prepared\n */\nexport function prepareArray(key: string, value: unknown, nullable: true): Array<unknown> | null\nexport function prepareArray(key: string, value: unknown, nullable?: false): Array<unknown>\nexport function prepareArray(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Array<unknown> | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsArray(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_PREPARED_VALUE([key, 'Array'])\n }\n}\n\n/**\n * Consumes a string value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed string value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeString(key: string, value: unknown, nullable: true): string | null\nexport function consumeString(key: string, value: unknown, nullable?: false): string\nexport function consumeString(\n key: string,\n value: unknown,\n nullable: boolean = false\n): string | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsString(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'String'])\n }\n}\n/**\n * Consumes a date value from database results with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed DateTime value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function consumeDate(key: string, value: unknown, nullable: true): DateTime | null\nexport function consumeDate(key: string, value: unknown, nullable?: false): DateTime\nexport function consumeDate(\n key: string,\n value: unknown,\n nullable: boolean = false\n): DateTime | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsDate(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Date'])\n }\n}\n/**\n * Consumes a datetime value from database results with nullable support and enhanced string parsing\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed DateTime value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n * @remarks For string values, attempts SQL format parsing first, then falls back to ISO format parsing\n */\nexport function consumeDateTime(key: string, value: unknown, nullable: true): DateTime | null\nexport function consumeDateTime(key: string, value: unknown, nullable?: false): DateTime\nexport function consumeDateTime(\n key: string,\n value: unknown,\n nullable: boolean = false\n): DateTime | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsDateTime(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'DateTime'])\n }\n}\n/**\n * Consumes a binary value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed LucidBinaryValue or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBinary(key: string, value: unknown, nullable: true): LucidBinaryValue | null\nexport function consumeBinary(key: string, value: unknown, nullable?: false): LucidBinaryValue\nexport function consumeBinary(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidBinaryValue | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBinary(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Binary'])\n }\n}\n/**\n * Consumes a number value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed number value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeNumber(key: string, value: unknown, nullable: true): number | null\nexport function consumeNumber(key: string, value: unknown, nullable?: false): number\nexport function consumeNumber(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsNumber(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Number'])\n }\n}\n/**\n * Consumes an integer value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed integer value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeInteger(key: string, value: unknown, nullable: true): number | null\nexport function consumeInteger(key: string, value: unknown, nullable?: false): number\nexport function consumeInteger(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsInteger(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Integer'])\n }\n}\n/**\n * Consumes a bigint value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed bigint value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBigint(key: string, value: unknown, nullable: true): bigint | null\nexport function consumeBigint(key: string, value: unknown, nullable?: false): bigint\nexport function consumeBigint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): bigint | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBigint(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Bigint'])\n }\n}\n/**\n * Consumes an unsigned integer value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed unsigned integer value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeUnsignedint(key: string, value: unknown, nullable: true): number | null\nexport function consumeUnsignedint(key: string, value: unknown, nullable?: false): number\nexport function consumeUnsignedint(\n key: string,\n value: unknown,\n nullable: boolean = false\n): number | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsUnsignedInt(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Unsignedint'])\n }\n}\n/**\n * Consumes a boolean value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed boolean value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeBoolean(key: string, value: unknown, nullable: true): boolean | null\nexport function consumeBoolean(key: string, value: unknown, nullable?: false): boolean\nexport function consumeBoolean(\n key: string,\n value: unknown,\n nullable: boolean = false\n): boolean | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsBoolean(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Boolean'])\n }\n}\n/**\n * Consumes an object value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed LucidPlainObject or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeObject(key: string, value: unknown, nullable: true): LucidPlainObject | null\nexport function consumeObject(key: string, value: unknown, nullable?: false): LucidPlainObject\nexport function consumeObject(\n key: string,\n value: unknown,\n nullable: boolean = false\n): LucidPlainObject | null {\n if (value === null && nullable === true) return null\n try {\n if (isString(value)) {\n value = JSON.parse(value)\n }\n\n return castValueAsObject(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Object'])\n }\n}\n/**\n * Consumes an array value from database results with nullable support\n * @param key - The field name for error reporting\n * @param value - The value to consume\n * @param nullable - Whether the field can be null\n * @returns The consumed array value or null if nullable and value is null\n * @throws E_INVALID_CONSUMED_VALUE when the value cannot be consumed\n */\nexport function consumeArray(key: string, value: unknown, nullable: true): Array<unknown> | null\nexport function consumeArray(key: string, value: unknown, nullable?: false): Array<unknown>\nexport function consumeArray(\n key: string,\n value: unknown,\n nullable: boolean = false\n): Array<unknown> | null {\n if (value === null && nullable === true) return null\n try {\n return castValueAsArray(value)\n } catch {\n if (true === nullable) {\n return null\n }\n throw new E_INVALID_CONSUMED_VALUE([key, value, 'Array'])\n }\n}\n"],"names":["isObject","joi","isString"],"mappings":";;;;;AA8FA,MAAM,8CAA8B,IAAA;AAO7B,MAAM,qBAAqB,CAAC,UAA8C;AAC/E,QAAM,SAAS,wBAAwB,IAAI,KAAK;AAChD,MAAI,gBAAgB,OAAO,QAAQ;AACjC,WAAO;AAAA,EACT;AACA,MAAI,CAACA,WAAS,KAAK,KAAK,EAAE,OAAO,UAAU,YAAa,QAAO;AAG/D,MAAI,OAAO,UAAU,YAAY;AAC/B,UAAM,aACJ,sBAAsB,SACtB,aAAa,OAAO,MAAM,oBAC1B,yBAAyB,SACzB,MAAM,+BAA+B,OACrC,+BAA+B,SAC/B,MAAM,qCAAqC,OAC3C,mCAAmC,SACnC,MAAM,yCAAyC;AACjD,4BAAwB,IAAI,OAAO,UAAU;AAC7C,WAAO;AAAA,EACT;AAIA,MAAI,iBAAiB,OAAO;AAE1B,UAAM,cAAc,MAAM;AAE1B,QAAI,CAAC,eAAe,OAAO,gBAAgB,YAAY;AACrD,8BAAwB,IAAI,OAAO,KAAK;AACxC,aAAO;AAAA,IACT;AAEA,WAAO,mBAAmB,WAAW;AAAA,EACvC;AAGA,QAAM,QAAQ,OAAO,eAAe,KAAK;AACzC,SAAO,mBAAmB,KAAK;AACjC;AAEA,MAAM,4BAA4B,CAAC,MAAc,SAAiB;AAChE,SAAOC,UACJ,OAAO;AAAA,IACN,MAAMA,UAAI,OAAA,EAAS,MAAM,IAAI,EAAE,SAAA;AAAA,IAC/B,MAAMA,UAAI,OAAA,EAAS,MAAM,IAAI,EAAE,SAAA;AAAA,IAC/B,QAAQA,UACL,OAAO;AAAA,MACN,QAAQA,UAAI,SAAA;AAAA,MACZ,QAAQA,UAAI,OAAA,EAAS,QAAQ,IAAI,EAAE,SAAA;AAAA,MACnC,MAAMA,UACH,OAAO;AAAA,QACN,OAAOA,UAAI,OAAA,EAAS,SAAS,GAAG,EAAE,SAAA;AAAA,QAClC,QAAQA,UAAI,OAAA,EAAS,SAAS,GAAG,EAAE,SAAA;AAAA,QACnC,cAAcA,UAAI,QAAA,EAAU,SAAA;AAAA,MAAS,CACtC,EACA,QAAQ,IAAI,EACZ,SAAA;AAAA,MACH,WAAWA,UAAI,SAAA;AAAA,MACf,cAAcA,UAAI,SAAA;AAAA,MAClB,OAAOA,UAAI,OAAA,EAAS,QAAQ,IAAI,EAAE,SAAA;AAAA,MAClC,QAAQA,UAAI,QAAQ,MAAMA,UAAI,IAAA,CAAK,EAAE,SAAA;AAAA,MACrC,cAAcA,UAAI,OAAA,EAAS,SAAS,GAAG,EAAE,SAAA;AAAA,MACzC,SAASA,UAAI,SAAA;AAAA,MACb,GAAGA,UAAI,SAAA;AAAA,MACP,QAAQA,UAAI,SAAA;AAAA,MACZ,SAASA,UAAI,SAAA;AAAA,MACb,QAAQA,UAAI,SAAA;AAAA,MACZ,SAASA,UAAI,SAAA;AAAA,MACb,SAASA,UAAI,KAAA,EAAO,SAAA;AAAA,MACpB,MAAMA,UAAI,OAAA,EAAS,SAAA;AAAA,IAAS,CAC7B,EACA,QAAQ,IAAI,EACZ,SAAA;AAAA,EAAS,CACb,EACA,QAAQ,IAAI;AACjB;AAEA,MAAM,2BAA2B,CAC/B,OACA,MACA,MACA,WACG;AACH,MAAI,CAACD,WAAS,KAAK,EAAG,QAAO;AAC7B,MAAI,MAAM,SAAS,KAAM,QAAO;AAChC,QAAM,OAAO,0BAA0B,MAAM,IAAI;AACjD,QAAM,EAAE,OAAO,gBAAA,IAAoB,OAAO;AAAA,IACxC,+BAA+B;AAAA,MAC7B,GAAG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACT;AAAA,EAAA;AAEH,QAAM,EAAE,OAAO,kBAAkB,KAAK,SAAS;AAAA,IAC7C,MAAM,MAAM;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,EAAA,CACf;AACD,SAAO,gBAAgB,OAAO,mBAAmB,gBAAgB,OAAO;AAC1E;AAEO,MAAM,0BAA0B,CAAC,UAAmD;AACzF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAAA;AAAA,EAA4B;AAEhC;AAOO,MAAM,wBAAwB,CAAC,UAAiD;AACrF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,0BAAA,EAA4B,OAAO;AAAA,MACjC,QAAQC,UAAI,OAAA,EAAS,MAAM,MAAM,EAAE,SAAA;AAAA,IAAS,CAC7C;AAAA,EAAA;AAEL;AAOO,MAAM,4BAA4B,CAAC,UAAqD;AAC7F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,8BAAA,EAAgC,OAAO;AAAA,MACrC,QAAQA,UAAI,OAAA,EAAS,MAAM,WAAW,EAAE,SAAA;AAAA,IAAS,CAClD;AAAA,EAAA;AAEL;AAOO,MAAM,0BAA0B,CAAC,UAAmD;AACzF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAAA,EAA8B,OAAO;AAAA,MACnC,QAAQA,UAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IAAS,CAC/C;AAAA,EAAA;AAEL;AAOO,MAAM,0BAA0B,CAAC,UAAmD;AACzF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAAA;AAAA,EAA4B;AAEhC;AAOO,MAAM,2BAA2B,CAAC,UAAoD;AAC3F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,6BAAA,EAA+B,OAAO;AAAA,MACpC,QAAQA,UAAI,OAAA,EAAS,MAAM,OAAO,EAAE,SAAA;AAAA,IAAS,CAC9C;AAAA,EAAA;AAEL;AAOO,MAAM,0BAA0B,CAAC,UAAmD;AACzF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAAA,EAA8B,OAAO;AAAA,MACnC,QAAQA,UAAI,OAAA,EAAS,MAAM,OAAO,EAAE,SAAA;AAAA,IAAS,CAC9C;AAAA,EAAA;AAEL;AAOO,MAAM,mCAAmC,CAC9C,UAC4C;AAC5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,qCAAA;AAAA,EAAqC;AAEzC;AAOO,MAAM,2BAA2B,CAAC,UAAoD;AAC3F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,6BAAA;AAAA,EAA6B;AAEjC;AAOO,MAAM,0BAA0B,CAAC,UAAmD;AACzF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,4BAAA;AAAA,EAA4B;AAEhC;AAOO,MAAM,yBAAyB,CAAC,UAAkD;AACvF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,2BAAA;AAAA,EAA2B;AAE/B;AAEA,MAAM,gBAAgB,CAAC,OAAgB,WAA+B;AACpE,QAAM,EAAE,MAAA,IAAU,OAAO,SAAS,OAAO;AAAA,IACvC,YAAY;AAAA,EAAA,CACb;AACD,SAAO,CAAC;AACV;AAEA,MAAM,eAAeA,UAAI,OAAA,EAAS,MAAM,EAAE,EAAE,SAAA;AAC5C,MAAM,gBAAgBA,UAAI,QAAA,EAAU,SAAA;AACpC,MAAM,eAAeA,UAClB,IAAA,EACA,OAAO,CAAC,OAAO,YAAY;AAC1B,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC,EACA,SAAA;AACH,MAAM,aAAaA,UAAI,IAAA,EAAM,MAAM,IAAI,EAAE,SAAA;AACzC,MAAM,kBAAkBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAE3D,MAAI,OAAO,UAAU,aAAa;AAChC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AAED,MAAM,kBAAkBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC3D,MAAI,iBAAiB,WAAW;AAC9B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,mBAAmBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC5D,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,0BAA0BA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AACnE,MAAI,iBAAiB,mBAAmB;AACtC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,mBAAmBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC5D,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,oBAAoBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC7D,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,mBAAmBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC5D,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,oBAAoBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC7D,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,qBAAqBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC9D,MAAI,iBAAiB,cAAc;AACjC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,qBAAqBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC9D,MAAI,iBAAiB,cAAc;AACjC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,sBAAsBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC/D,MAAI,iBAAiB,eAAe;AAClC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,uBAAuBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAChE,MAAI,iBAAiB,gBAAgB;AACnC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AAED,MAAM,aAAaA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AACtD,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,eAAeA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AACxD,MAAI,iBAAiB,QAAQ;AAC3B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,oBAAoBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC7D,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AACD,MAAM,iBAAiBA,UAAI,IAAA,EAAM,OAAO,CAAC,OAAO,YAAY;AAC1D,MAAI,iBAAiB,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,MAAM,aAAa;AACpC,CAAC;AAEM,MAAM,WAAW,CAAC,UAAoC;AAC3D,SAAO,cAAc,OAAO,YAAY;AAC1C;AAEO,MAAM,YAAY,CAAC,UAAqC;AAC7D,SAAO,cAAc,OAAO,aAAa;AAC3C;AAEO,MAAM,WAAW,CAAC,UAAoC;AAC3D,SAAO,cAAc,OAAO,YAAY;AAC1C;AAEO,MAAM,SAAS,CAAC,UAAkC;AACvD,SAAO,cAAc,OAAO,UAAU;AACxC;AAEO,MAAM,cAAc,CAAC,UAAuC;AACjE,SAAO,cAAc,OAAO,eAAe;AAC7C;AAEO,MAAM,cAAc,CAAC,UAAuC;AACjE,SAAO,cAAc,OAAO,eAAe;AAC7C;AAEO,MAAM,eAAe,CAAC,UAAwC;AACnE,SAAO,cAAc,OAAO,gBAAgB;AAC9C;AAEO,MAAM,sBAAsB,CAAC,UAA+C;AACjF,SAAO,cAAc,OAAO,uBAAuB;AACrD;AAEO,MAAM,eAAe,CAAC,UAAwC;AACnE,SAAO,cAAc,OAAO,gBAAgB;AAC9C;AAEO,MAAM,gBAAgB,CAAC,UAAyC;AACrE,SAAO,cAAc,OAAO,iBAAiB;AAC/C;AAEO,MAAM,eAAe,CAAC,UAAwC;AACnE,SAAO,cAAc,OAAO,gBAAgB;AAC9C;AAEO,MAAM,gBAAgB,CAAC,UAAyC;AACrE,SAAO,cAAc,OAAO,iBAAiB;AAC/C;AAEO,MAAM,iBAAiB,CAAC,UAA0C;AACvE,SAAO,cAAc,OAAO,kBAAkB;AAChD;AAEO,MAAM,iBAAiB,CAAC,UAA0C;AACvE,SAAO,cAAc,OAAO,kBAAkB;AAChD;AAEO,MAAM,kBAAkB,CAAC,UAA2C;AACzE,SAAO,cAAc,OAAO,mBAAmB;AACjD;AAEO,MAAM,mBAAmB,CAAC,UAA4C;AAC3E,SAAO,cAAc,OAAO,oBAAoB;AAClD;AAEO,MAAM,SAAS,CAAC,UAAkC;AACvD,SAAO,cAAc,OAAO,UAAU;AACxC;AAEO,MAAM,WAAW,CAAC,UAAoC;AAC3D,SAAO,cAAc,OAAO,YAAY;AAC1C;AAEO,MAAM,gBAAgB,CAAC,UAAyC;AACrE,SAAO,cAAc,OAAO,iBAAiB;AAC/C;AAEO,MAAM,aAAa,CAAC,UAAsC;AAC/D,SAAO,cAAc,OAAO,cAAc;AAC5C;AAEO,MAAM,yBAAyB,CACpC,UAC4C;AAC5C,SAAOD,WAAS,KAAK,KAAK,MAAM,SAAS;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9hBO,MAAM,oBAAoB,CAAC,UAA2B;AAC3D,MAAI,aAAa,OAAO,MAAO,QAAO;AACtC,MAAI,aAAa,OAAO,MAAO,QAAO,MAAM,SAAA;AAC5C,QAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACnC;AAQO,MAAM,kBAAkB,CAAC,UAA6B;AAC3D,UAAQ,OAAO,OAAA;AAAA,IACb,KAAK,UAAU;AACb,YAAM,MAAM,SAAS,QAAQ,KAAK;AAClC,UAAI,CAAC,IAAI,SAAS;AAChB,cAAM,UAAU,SAAS,QAAQ,KAAK;AACtC,YAAI,QAAQ,QAAS,QAAO;AAC5B,cAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAAA,MACjC;AACA,aAAO;AAAA,IACT;AAAA,IACA,KAAK,UAAU;AACb,UAAI,MAAM,SAAS,YAAY,KAAK;AACpC,UAAI,CAAC,IAAI,SAAS;AAChB,cAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAAA,MACjC;AACA,UAAI,IAAI,OAAO,QAAQ,IAAI,OAAO,GAAG;AACnC,cAAM,SAAS,WAAW,KAAK;AAAA,MACjC;AACA,aAAO;AAAA,IACT;AAAA,IACA,KAAK,UAAU;AACb,UAAI,gBAAgB,KAAK,GAAG;AAC1B,eAAO;AAAA,MACT;AACA,UAAI,iBAAiB,MAAM;AACzB,cAAM,MAAM,SAAS,WAAW,KAAK;AACrC,YAAI,CAAC,IAAI,SAAS;AAChB,gBAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAAA,QACjC;AACA,eAAO;AAAA,MACT;AACA,YAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,SAAS;AACP,YAAM,IAAI,aAAa,CAAC,MAAM,CAAC;AAAA,IACjC;AAAA,EAAA;AAEJ;AAQO,MAAM,sBAAsB,CAAC,UAA6B;AAC/D,MAAI;AACF,WAAO,gBAAgB,KAAK;AAAA,EAC9B,QAAQ;AACN,UAAM,IAAI,aAAa,CAAC,UAAU,CAAC;AAAA,EACrC;AACF;AAOO,MAAM,oBAAoB,CAAC,UAA+B;AAC/D,MAAI,mBAAmB,KAAK,EAAG,QAAO;AACtC,QAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACnC;AAOO,MAAM,oBAAoB,CAAC,UAA2B;AAC3D,MAAI,aAAa,OAAO,MAAO,QAAO;AACtC,MAAI,aAAa,OAAO,OAAO;AAC7B,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,OAAO,MAAM,MAAM,GAAG;AACxB,YAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACnC;AAOO,MAAM,qBAAqB,CAAC,UAA2B;AAC5D,QAAM,MAAM,kBAAkB,KAAK;AACnC,SAAO,KAAK,MAAM,GAAG;AACvB;AAOO,MAAM,oBAAoB,CAAC,UAA2B;AAC3D,MAAI;AACF,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAM,MAAM,kBAAkB,KAAK;AACnC,WAAO,OAAO,GAAG;AAAA,EACnB,QAAQ;AACN,UAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AAAA,EACnC;AACF;AAOO,MAAM,yBAAyB,CAAC,UAA2B;AAChE,MAAI;AACF,UAAM,MAAM,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI,kBAAkB,KAAK;AAC/E,QAAI,CAAC,OAAO,SAAS,GAAG,KAAK,OAAO,MAAM,GAAG,GAAG;AAC9C,YAAM,IAAI,aAAa,CAAC,aAAa,CAAC;AAAA,IACxC;AACA,WAAO,QAAQ;AAAA,EACjB,QAAQ;AACN,UAAM,IAAI,aAAa,CAAC,aAAa,CAAC;AAAA,EACxC;AACF;AAOO,MAAM,qBAAqB,CAAC,UAA4B;AAC7D,MAAI,cAAc,OAAO,MAAO,QAAO;AACvC,MAAI,aAAa,OAAO,OAAO;AAC7B,UAAM,QAAQ,MAAM,YAAA;AACpB,QAAI,CAAC,QAAQ,GAAG,EAAE,SAAS,KAAK,EAAG,QAAO;AAC1C,QAAI,CAAC,SAAS,GAAG,EAAE,SAAS,KAAK,EAAG,QAAO;AAC3C,UAAM,IAAI,aAAa,CAAC,SAAS,CAAC;AAAA,EACpC;AACA,MAAI,aAAa,OAAO,OAAO;AAC7B,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,UAAM,IAAI,aAAa,CAAC,SAAS,CAAC;AAAA,EACpC;AACA,QAAM,IAAI,aAAa,CAAC,SAAS,CAAC;AACpC;AAOO,MAAM,oBAAoB,CAAC,UAAqC;AACrE,MAAIA,WAAS,KAAK,EAAG,QAAO;AAC5B,QAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACnC;AAOO,MAAM,mBAAmB,CAAC,UAAmC;AAClE,MAAI,QAAQ,KAAK,EAAG,QAAO;AAC3B,QAAM,IAAI,aAAa,CAAC,OAAO,CAAC;AAClC;AAYO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,QAAQ,CAAC;AAAA,EACpD;AACF;AAYO,SAAS,YAAY,KAAa,OAAgB,WAAoB,OAAoB;AAC/F,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,UAAM,MAAM,gBAAgB,KAAK;AACjC,WAAO,IAAI,SAAA;AAAA,EACb,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,MAAM,CAAC;AAAA,EAClD;AACF;AAYO,SAAS,gBACd,KACA,OACA,WAAoB,OACP;AACb,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,UAAM,MAAM,oBAAoB,KAAK;AACrC,WAAO,IAAI,SAAA;AAAA,EACb,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,UAAU,CAAC;AAAA,EACtD;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACK;AACzB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,QAAQ,CAAC;AAAA,EACpD;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,QAAQ,CAAC;AAAA,EACpD;AACF;AAWO,SAAS,eACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,mBAAmB,KAAK;AAAA,EACjC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,SAAS,CAAC;AAAA,EACrD;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,QAAQ,CAAC;AAAA,EACpD;AACF;AAWO,SAAS,mBACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,uBAAuB,KAAK;AAAA,EACrC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,aAAa,CAAC;AAAA,EACzD;AACF;AAWO,SAAS,eACd,KACA,OACA,WAAoB,OACJ;AAChB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,mBAAmB,KAAK;AAAA,EACjC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,SAAS,CAAC;AAAA,EACrD;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACK;AACzB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,QAAQ,CAAC;AAAA,EACpD;AACF;AAWO,SAAS,aACd,KACA,OACA,WAAoB,OACG;AACvB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,iBAAiB,KAAK;AAAA,EAC/B,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,CAAC;AAAA,EACnD;AACF;AAYO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC3D;AACF;AAYO,SAAS,YACd,KACA,OACA,WAAoB,OACH;AACjB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,gBAAgB,KAAK;AAAA,EAC9B,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,MAAM,CAAC;AAAA,EACzD;AACF;AAYO,SAAS,gBACd,KACA,OACA,WAAoB,OACH;AACjB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,oBAAoB,KAAK;AAAA,EAClC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,UAAU,CAAC;AAAA,EAC7D;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACK;AACzB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC3D;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC3D;AACF;AAWO,SAAS,eACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,mBAAmB,KAAK;AAAA,EACjC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,SAAS,CAAC;AAAA,EAC5D;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC3D;AACF;AAWO,SAAS,mBACd,KACA,OACA,WAAoB,OACL;AACf,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,uBAAuB,KAAK;AAAA,EACrC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,aAAa,CAAC;AAAA,EAChE;AACF;AAWO,SAAS,eACd,KACA,OACA,WAAoB,OACJ;AAChB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,mBAAmB,KAAK;AAAA,EACjC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,SAAS,CAAC;AAAA,EAC5D;AACF;AAWO,SAAS,cACd,KACA,OACA,WAAoB,OACK;AACzB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,QAAIE,WAAS,KAAK,GAAG;AACnB,cAAQ,KAAK,MAAM,KAAK;AAAA,IAC1B;AAEA,WAAO,kBAAkB,KAAK;AAAA,EAChC,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC3D;AACF;AAWO,SAAS,aACd,KACA,OACA,WAAoB,OACG;AACvB,MAAI,UAAU,QAAQ,aAAa,KAAM,QAAO;AAChD,MAAI;AACF,WAAO,iBAAiB,KAAK;AAAA,EAC/B,QAAQ;AACN,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,IACT;AACA,UAAM,IAAI,yBAAyB,CAAC,KAAK,OAAO,OAAO,CAAC;AAAA,EAC1D;AACF;"}
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
22
  mod
23
23
  ));
24
- const decorator_utils = require("./decorator_utils-C8Ey-j9s.cjs");
24
+ const decorator_utils = require("./decorator_utils-Cid9z4BU.cjs");
25
25
  const http = require("@adonisjs/core/http");
26
26
  const joi = require("./joi.cjs");
27
27
  const database = require("@adonisjs/lucid/database");
@@ -33,10 +33,10 @@ const index = require("./index-ZoqwfV67.cjs");
33
33
  const encoding = require("./encoding.cjs");
34
34
  const type_guardsBbzVmysZ = require("./type_guards-BbzVmysZ-vWjjqz8O.cjs");
35
35
  const string = require("@poppinss/string");
36
+ const luxon = require("luxon");
36
37
  const definitions = require("./definitions-CODA0W-W.cjs");
37
38
  const resourceful_error_middleware = require("./resourceful_error_middleware-CBk4CKQ7.cjs");
38
39
  const resourceful_router_context_service = require("./resourceful_router_context_service-Crl_ZluR.cjs");
39
- const luxon_mjs = require("/builds/nht4944308/libraries/lucid-resourceful/node_modules/.pnpm/luxon@3.7.2/node_modules/luxon/build/es6/luxon.mjs");
40
40
  const qs = require("qs");
41
41
  const odata_context = require("./context-D91n6yWO.cjs");
42
42
  const odata_error_middleware = require("./odata_error_middleware-2jrLCGCX.cjs");
@@ -6948,9 +6948,9 @@ const toXmlValue = (value, parent) => {
6948
6948
  };
6949
6949
  const encoder$3 = (_key, value) => {
6950
6950
  if (value instanceof Date) {
6951
- return luxon_mjs.DateTime.fromJSDate(value).toISO();
6951
+ return luxon.DateTime.fromJSDate(value).toISO();
6952
6952
  }
6953
- if (value instanceof luxon_mjs.DateTime) {
6953
+ if (value instanceof luxon.DateTime) {
6954
6954
  return value.toISO();
6955
6955
  }
6956
6956
  if (typeof value === "bigint") {
@@ -6963,9 +6963,9 @@ const makeEncodable$1 = (data) => {
6963
6963
  return data.map((item) => makeEncodable$1(item));
6964
6964
  }
6965
6965
  if (data instanceof Date) {
6966
- return luxon_mjs.DateTime.fromJSDate(data).toISO();
6966
+ return luxon.DateTime.fromJSDate(data).toISO();
6967
6967
  }
6968
- if (data instanceof luxon_mjs.DateTime) {
6968
+ if (data instanceof luxon.DateTime) {
6969
6969
  return data.toISO();
6970
6970
  }
6971
6971
  if (type_guardsBbzVmysZ.isObject$1(data)) {
@@ -8726,9 +8726,9 @@ class Middleware {
8726
8726
  }
8727
8727
  const encoder$2 = (_key, value) => {
8728
8728
  if (value instanceof Date) {
8729
- return luxon_mjs.DateTime.fromJSDate(value).toISO();
8729
+ return luxon.DateTime.fromJSDate(value).toISO();
8730
8730
  }
8731
- if (value instanceof luxon_mjs.DateTime) {
8731
+ if (value instanceof luxon.DateTime) {
8732
8732
  return value.toISO();
8733
8733
  }
8734
8734
  if (typeof value === "bigint") {
@@ -8741,9 +8741,9 @@ const makeEncodable = (data) => {
8741
8741
  return data.map((item) => makeEncodable(item));
8742
8742
  }
8743
8743
  if (data instanceof Date) {
8744
- return luxon_mjs.DateTime.fromJSDate(data).toISO();
8744
+ return luxon.DateTime.fromJSDate(data).toISO();
8745
8745
  }
8746
- if (data instanceof luxon_mjs.DateTime) {
8746
+ if (data instanceof luxon.DateTime) {
8747
8747
  return data.toISO();
8748
8748
  }
8749
8749
  if (type_guardsBbzVmysZ.isObject$1(data)) {
@@ -9048,9 +9048,9 @@ var HttpMethodSortOrder = /* @__PURE__ */ ((HttpMethodSortOrder2) => {
9048
9048
  })(HttpMethodSortOrder || {});
9049
9049
  const encoder$1 = (_key, value) => {
9050
9050
  if (value instanceof Date) {
9051
- return luxon_mjs.DateTime.fromJSDate(value).toISO();
9051
+ return luxon.DateTime.fromJSDate(value).toISO();
9052
9052
  }
9053
- if (value instanceof luxon_mjs.DateTime) {
9053
+ if (value instanceof luxon.DateTime) {
9054
9054
  return value.toISO();
9055
9055
  }
9056
9056
  if (typeof value === "bigint") {
@@ -13967,9 +13967,9 @@ class ODataToLucidTranslator {
13967
13967
  }
13968
13968
  const encoder = (_key, value) => {
13969
13969
  if (value instanceof Date) {
13970
- return luxon_mjs.DateTime.fromJSDate(value).toISO();
13970
+ return luxon.DateTime.fromJSDate(value).toISO();
13971
13971
  }
13972
- if (value instanceof luxon_mjs.DateTime) {
13972
+ if (value instanceof luxon.DateTime) {
13973
13973
  return value.toISO();
13974
13974
  }
13975
13975
  if (typeof value === "bigint") {
@@ -15600,7 +15600,7 @@ async function configure(command) {
15600
15600
  }
15601
15601
  ]);
15602
15602
  }
15603
- const version = "1.20251224.1";
15603
+ const version = "1.20251224.2";
15604
15604
  exports.configure = configure;
15605
15605
  exports.getResourcefulModelCreatePayloadValidationSchema = getResourcefulModelCreatePayloadValidationSchema;
15606
15606
  exports.odataRouterMacro = odataRouterMacro;
@@ -15614,4 +15614,4 @@ exports.resourcefulManyToMany = resourcefulManyToMany;
15614
15614
  exports.resourcefulRouterMacro = resourcefulRouterMacro;
15615
15615
  exports.version = version;
15616
15616
  exports.withResourceful = withResourceful;
15617
- //# sourceMappingURL=index-CubdE8Rd.cjs.map
15617
+ //# sourceMappingURL=index-Bs-raR1m.cjs.map