fiscalapi
Version:
SDK de Node.js para FiscalAPI
33 lines • 3.29 kB
JavaScript
import { DateTime } from 'luxon';
/**
* Clase base que proporciona funcionalidad de serialización para modelos de datos
*/
export class SerializableDto {
/**
* Convierte la instancia a una representación JSON en forma de string
* @returns {string} Representación JSON del objeto
*/
toString() {
try {
// Custom replacer function to handle dates correctly
const replacer = (_key, value) => {
// Handle DateTime objects
if (value instanceof DateTime) {
return value.toISO();
}
return value;
};
return JSON.stringify(this, replacer, 2);
}
catch (error) {
return '{"error":"Error generating JSON"}';
}
}
/**
* Custom implementation to ensure object is correctly serialized in console.log
*/
[Symbol.for('nodejs.util.inspect.custom')]() {
return this.toString();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXphYmxlLWR0by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vc2VyaWFsaXphYmxlLWR0by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFFMUI7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQztZQUNILHFEQUFxRDtZQUNyRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtnQkFDNUMsMEJBQTBCO2dCQUMxQixJQUFJLEtBQUssWUFBWSxRQUFRLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sbUNBQW1DLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuXG4vKipcbiAqIENsYXNlIGJhc2UgcXVlIHByb3BvcmNpb25hIGZ1bmNpb25hbGlkYWQgZGUgc2VyaWFsaXphY2nDs24gcGFyYSBtb2RlbG9zIGRlIGRhdG9zXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJpYWxpemFibGVEdG8ge1xuICBcbiAgLyoqXG4gICAqIENvbnZpZXJ0ZSBsYSBpbnN0YW5jaWEgYSB1bmEgcmVwcmVzZW50YWNpw7NuIEpTT04gZW4gZm9ybWEgZGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJlcHJlc2VudGFjacOzbiBKU09OIGRlbCBvYmpldG9cbiAgICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEN1c3RvbSByZXBsYWNlciBmdW5jdGlvbiB0byBoYW5kbGUgZGF0ZXMgY29ycmVjdGx5XG4gICAgICBjb25zdCByZXBsYWNlciA9IChfa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIERhdGVUaW1lIG9iamVjdHNcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZVRpbWUpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9JU08oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgICAgXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgcmVwbGFjZXIsIDIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gJ3tcImVycm9yXCI6XCJFcnJvciBnZW5lcmF0aW5nIEpTT05cIn0nO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0byBlbnN1cmUgb2JqZWN0IGlzIGNvcnJlY3RseSBzZXJpYWxpemVkIGluIGNvbnNvbGUubG9nXG4gICAqL1xuICBbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufSJdfQ==