@ramiidv/arca-empleados 0.2.0 → 0.3.0

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.
package/dist/errors.d.ts CHANGED
@@ -1,16 +1,39 @@
1
+ import { ArcaError } from '@ramiidv/arca-common';
1
2
  export { ArcaError, ArcaValidationError } from '@ramiidv/arca-common';
2
3
  export type { ValidationErrorDetail } from '@ramiidv/arca-common';
3
- import { ArcaError } from '@ramiidv/arca-common';
4
- /**
5
- * Base error class for ARCA Empleados SDK.
6
- */
4
+ /** Error base del SDK de empleados. */
7
5
  export declare class ArcaEmpleadosError extends ArcaError {
8
- constructor(message: string);
6
+ static readonly code: string;
7
+ constructor(message: string, options?: {
8
+ cause?: unknown;
9
+ });
10
+ }
11
+ /** Datos opcionales de un {@link ArcaSerializationError}. */
12
+ export interface ArcaSerializationErrorOptions {
13
+ /** Campo del registro que no se pudo escribir. */
14
+ field?: string;
15
+ /** Posición inicial del campo en el registro (1-based). */
16
+ desde?: number;
17
+ /** Posición final del campo en el registro (1-based, inclusive). */
18
+ hasta?: number;
19
+ /** Valor recibido. */
20
+ value?: unknown;
21
+ /** Índice (0-based) del registro dentro del archivo, si aplica. */
22
+ indice?: number;
23
+ cause?: unknown;
9
24
  }
10
25
  /**
11
- * Error thrown when file serialization fails.
26
+ * Un valor no se puede escribir en el formato de ancho fijo: tipo incorrecto,
27
+ * excede el largo del campo, fecha inexistente, caracter no representable, etc.
28
+ * Nunca se trunca en silencio.
12
29
  */
13
30
  export declare class ArcaSerializationError extends ArcaEmpleadosError {
14
- constructor(message: string);
31
+ static readonly code: string;
32
+ readonly field?: string;
33
+ readonly desde?: number;
34
+ readonly hasta?: number;
35
+ readonly value?: unknown;
36
+ readonly indice?: number;
37
+ constructor(message: string, options?: ArcaSerializationErrorOptions);
15
38
  }
16
39
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB;gBAChD,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,uCAAuC;AACvC,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,gBAAyB,IAAI,EAAE,MAAM,CAA0B;gBAEnD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,6DAA6D;AAC7D,MAAM,WAAW,6BAA6B;IAC5C,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAA8B;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,6BAAkC;CASzE"}
package/dist/errors.js CHANGED
@@ -1,22 +1,33 @@
1
- // Base error and validation from common
2
- export { ArcaError, ArcaValidationError } from '@ramiidv/arca-common';
3
1
  import { ArcaError } from '@ramiidv/arca-common';
4
- /**
5
- * Base error class for ARCA Empleados SDK.
6
- */
2
+ export { ArcaError, ArcaValidationError } from '@ramiidv/arca-common';
3
+ /** Error base del SDK de empleados. */
7
4
  export class ArcaEmpleadosError extends ArcaError {
8
- constructor(message) {
9
- super(message);
5
+ static code = 'ARCA_EMPLEADOS_ERROR';
6
+ constructor(message, options) {
7
+ super(message, options);
10
8
  this.name = 'ArcaEmpleadosError';
11
9
  }
12
10
  }
13
11
  /**
14
- * Error thrown when file serialization fails.
12
+ * Un valor no se puede escribir en el formato de ancho fijo: tipo incorrecto,
13
+ * excede el largo del campo, fecha inexistente, caracter no representable, etc.
14
+ * Nunca se trunca en silencio.
15
15
  */
16
16
  export class ArcaSerializationError extends ArcaEmpleadosError {
17
- constructor(message) {
18
- super(message);
17
+ static code = 'ARCA_SERIALIZATION_ERROR';
18
+ field;
19
+ desde;
20
+ hasta;
21
+ value;
22
+ indice;
23
+ constructor(message, options = {}) {
24
+ super(message, options.cause !== undefined ? { cause: options.cause } : undefined);
19
25
  this.name = 'ArcaSerializationError';
26
+ this.field = options.field;
27
+ this.desde = options.desde;
28
+ this.hasta = options.hasta;
29
+ this.value = options.value;
30
+ this.indice = options.indice;
20
31
  }
21
32
  }
22
33
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,uCAAuC;AACvC,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,MAAM,CAAmB,IAAI,GAAW,sBAAsB,CAAC;IAE/D,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;;AAkBH;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,MAAM,CAAmB,IAAI,GAAW,0BAA0B,CAAC;IAC1D,KAAK,CAAU;IACf,KAAK,CAAU;IACf,KAAK,CAAU;IACf,KAAK,CAAW;IAChB,MAAM,CAAU;IAEzB,YAAY,OAAe,EAAE,UAAyC,EAAE;QACtE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export { ArcaEmpleados } from './f935-builder.js';
2
- export { ArcaError, ArcaValidationError, ArcaEmpleadosError, ArcaSerializationError, } from './errors.js';
3
- export type { ValidationErrorDetail } from './errors.js';
4
- export type { ArcaEmpleadosConfig, DomicilioExplotacion, AltaEmpleado, BajaEmpleado, ModificacionEmpleado, DatosComplementarios, DatosCBU, RelacionFamiliar, F935RegistroAlta, F935RegistroBaja, F935RegistroModificacion, F935RegistroDatosComplementarios, F935RegistroCBU, F935RegistroRelacionFamiliar, F935RegistroDomicilio, F935Registro, F935Archivo, F935Resumen, F935Output, } from './types.js';
5
- export { ModalidadContratacion, SituacionRevista, MotivoBaja, NivelEducacion, EstadoCivil, TipoRelacionFamiliar, Provincia, TipoServicio, ModalidadLiquidacion, TipoOperacion, TipoCuenta, Escolaridad, MODALIDAD_CONTRATACION_DESCRIPCION, MOTIVO_BAJA_DESCRIPCION, SITUACION_REVISTA_DESCRIPCION, NIVEL_EDUCACION_DESCRIPCION, ESTADO_CIVIL_DESCRIPCION, TIPO_RELACION_FAMILIAR_DESCRIPCION, PROVINCIA_DESCRIPCION, MODALIDAD_LIQUIDACION_DESCRIPCION, TIPO_CUENTA_DESCRIPCION, ESCOLARIDAD_DESCRIPCION, TIPO_SERVICIO_DESCRIPCION, MODALIDADES_CON_FECHA_FIN, } from './constants.js';
6
- export { validateCuil, validateCBU, normalizeCuil, formatCuil, validateFecha, validateFechaRango, validateAlta, validateBaja, validateModificacion, validateDatosComplementarios, validateCBUData, validateRelacionFamiliar, validateDomicilio, } from './validators.js';
7
- export { formatDate, boolToStr, serializeArchivo, serializeHeader, serializeAlta, serializeBaja, serializeModificacion, serializeDatosComplementarios, serializeCBU, serializeRelacionFamiliar, serializeDomicilio, } from './serializer.js';
1
+ export { ArcaEmpleados } from './ingreso-masivo.js';
2
+ export { ArcaError, ArcaValidationError, ArcaEmpleadosError, ArcaSerializationError } from './errors.js';
3
+ export type { ValidationErrorDetail, ArcaSerializationErrorOptions } from './errors.js';
4
+ export type { FechaInput, CodigoNumerico, DatosRelacionLaboral, RegistroRelacionLaboral, AltaRelacionLaboral, BajaRelacionLaboral, ModificacionRelacionLaboral, EncodingArchivo, OpcionesSerializacion, ArcaEmpleadosConfig, ResumenIngresoMasivo, ArchivoIngresoMasivo, } from './types.js';
5
+ export { LONGITUD_REGISTRO, TIPO_REGISTRO, CodigoMovimiento, CODIGOS_MOVIMIENTO, VALORES_RECTIFICACION, VALORES_MARCA_COVID_CCG, PREFIJOS_CUIL_PERSONA_FISICA, } from './constants.js';
6
+ export { validateCuilTrabajador, validateRegistro, CAMPOS_OBLIGATORIOS } from './validators.js';
7
+ export { DISENO_REGISTRO, formatFechaSR, serializarRegistro, serializarArchivo, codificarArchivo, } from './serializer.js';
8
+ export type { CampoDiseno, TipoCampo } from './serializer.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAKzD,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gCAAgC,EAChC,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,WAAW,EACX,kCAAkC,EAClC,uBAAuB,EACvB,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,EACxB,kCAAkC,EAClC,qBAAqB,EACrB,iCAAiC,EACjC,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACzG,YAAY,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAGxF,YAAY,EACV,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,11 @@
1
- // ---------------------------------------------------------------------------
2
- // Main class
3
- // ---------------------------------------------------------------------------
4
- export { ArcaEmpleados } from './f935-builder.js';
5
- // ---------------------------------------------------------------------------
6
- // Errors (base from common, domain-specific local)
7
- // ---------------------------------------------------------------------------
8
- export { ArcaError, ArcaValidationError, ArcaEmpleadosError, ArcaSerializationError, } from './errors.js';
9
- // ---------------------------------------------------------------------------
10
- // Constants / Enums
11
- // ---------------------------------------------------------------------------
12
- export { ModalidadContratacion, SituacionRevista, MotivoBaja, NivelEducacion, EstadoCivil, TipoRelacionFamiliar, Provincia, TipoServicio, ModalidadLiquidacion, TipoOperacion, TipoCuenta, Escolaridad, MODALIDAD_CONTRATACION_DESCRIPCION, MOTIVO_BAJA_DESCRIPCION, SITUACION_REVISTA_DESCRIPCION, NIVEL_EDUCACION_DESCRIPCION, ESTADO_CIVIL_DESCRIPCION, TIPO_RELACION_FAMILIAR_DESCRIPCION, PROVINCIA_DESCRIPCION, MODALIDAD_LIQUIDACION_DESCRIPCION, TIPO_CUENTA_DESCRIPCION, ESCOLARIDAD_DESCRIPCION, TIPO_SERVICIO_DESCRIPCION, MODALIDADES_CON_FECHA_FIN, } from './constants.js';
13
- // ---------------------------------------------------------------------------
14
- // Validators / Utilities (shared from common + local record-level)
15
- // ---------------------------------------------------------------------------
16
- export { validateCuil, validateCBU, normalizeCuil, formatCuil, validateFecha, validateFechaRango, validateAlta, validateBaja, validateModificacion, validateDatosComplementarios, validateCBUData, validateRelacionFamiliar, validateDomicilio, } from './validators.js';
17
- // ---------------------------------------------------------------------------
18
- // Serializer (advanced usage)
19
- // ---------------------------------------------------------------------------
20
- export { formatDate, boolToStr, serializeArchivo, serializeHeader, serializeAlta, serializeBaja, serializeModificacion, serializeDatosComplementarios, serializeCBU, serializeRelacionFamiliar, serializeDomicilio, } from './serializer.js';
1
+ // Builder
2
+ export { ArcaEmpleados } from './ingreso-masivo.js';
3
+ // Errores
4
+ export { ArcaError, ArcaValidationError, ArcaEmpleadosError, ArcaSerializationError } from './errors.js';
5
+ // Constantes (solo las publicadas en el manual de Simplificación Registral)
6
+ export { LONGITUD_REGISTRO, TIPO_REGISTRO, CodigoMovimiento, CODIGOS_MOVIMIENTO, VALORES_RECTIFICACION, VALORES_MARCA_COVID_CCG, PREFIJOS_CUIL_PERSONA_FISICA, } from './constants.js';
7
+ // Validadores
8
+ export { validateCuilTrabajador, validateRegistro, CAMPOS_OBLIGATORIOS } from './validators.js';
9
+ // Serializador (uso avanzado)
10
+ export { DISENO_REGISTRO, formatFechaSR, serializarRegistro, serializarArchivo, codificarArchivo, } from './serializer.js';
21
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAC9E,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AA4BrB,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAC9E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,WAAW,EACX,kCAAkC,EAClC,uBAAuB,EACvB,6BAA6B,EAC7B,2BAA2B,EAC3B,wBAAwB,EACxB,kCAAkC,EAClC,qBAAqB,EACrB,iCAAiC,EACjC,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAC9E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAC9E,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,6BAA6B,EAC7B,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,UAAU;AACV,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAmBzG,4EAA4E;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEhG,8BAA8B;AAC9B,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { AltaRelacionLaboral, ArcaEmpleadosConfig, ArchivoIngresoMasivo, BajaRelacionLaboral, ModificacionRelacionLaboral, RegistroRelacionLaboral, ResumenIngresoMasivo } from './types.js';
2
+ /**
3
+ * Arma el archivo TXT de "Ingreso masivo de datos - Relaciones laborales" de
4
+ * Simplificación Registral (registros `01` de 130 posiciones).
5
+ *
6
+ * Cada registro se valida y se serializa al agregarlo: si algo falla, se lanza
7
+ * el error y el registro no se agrega. Las operaciones masivas son atómicas.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const sr = new ArcaEmpleados();
12
+ * sr.alta({ cuil: '20-12345678-6', fechaInicio: '2026-11-02', modalidadContrato: 8,
13
+ * obraSocial: '126205', sucursal: 1 });
14
+ * const { buffer } = sr.generar();
15
+ * fs.writeFileSync('relaciones.txt', buffer);
16
+ * ```
17
+ */
18
+ export declare class ArcaEmpleados {
19
+ private readonly strict;
20
+ private readonly serializacion;
21
+ private entradas;
22
+ constructor(config?: ArcaEmpleadosConfig);
23
+ /** Copia de los registros agregados (modificarla no afecta al builder). */
24
+ get registros(): RegistroRelacionLaboral[];
25
+ /** Cantidad de registros agregados. */
26
+ get cantidad(): number;
27
+ /** Agrega un alta (`AT`). */
28
+ alta(datos: AltaRelacionLaboral): this;
29
+ /** Agrega una baja (`BT`). La fecha de baja va en `fechaFin`. */
30
+ baja(datos: BajaRelacionLaboral): this;
31
+ /** Agrega una modificación (`MR`). */
32
+ modificacion(datos: ModificacionRelacionLaboral): this;
33
+ /**
34
+ * Agrega un registro con cualquier código de movimiento (`AT`, `BT`, `MR`, `NA`, `NB`).
35
+ * Es la única vía para `NA` y `NB`, cuyo significado el manual no documenta.
36
+ */
37
+ novedad(registro: RegistroRelacionLaboral): this;
38
+ /** Agrega varias altas. Atómico. */
39
+ altasMasivas(datos: readonly AltaRelacionLaboral[]): this;
40
+ /** Agrega varias bajas. Atómico. */
41
+ bajasMasivas(datos: readonly BajaRelacionLaboral[]): this;
42
+ /** Agrega varias modificaciones. Atómico. */
43
+ modificacionesMasivas(datos: readonly ModificacionRelacionLaboral[]): this;
44
+ /**
45
+ * Agrega varios registros con cualquier código de movimiento. Atómico: valida
46
+ * todos y, si alguno falla, lanza un `ArcaValidationError` con los errores de
47
+ * todos los registros (campo `"[i].campo"`) sin agregar ninguno.
48
+ */
49
+ novedadesMasivas(registros: readonly RegistroRelacionLaboral[]): this;
50
+ /**
51
+ * Genera el archivo.
52
+ * @throws ArcaValidationError si no hay registros.
53
+ */
54
+ generar(): ArchivoIngresoMasivo;
55
+ /** Cantidad de registros por movimiento. */
56
+ resumen(): ResumenIngresoMasivo;
57
+ /** Elimina todos los registros. */
58
+ limpiar(): this;
59
+ private lista;
60
+ private conMovimiento;
61
+ private preparar;
62
+ }
63
+ //# sourceMappingURL=ingreso-masivo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingreso-masivo.d.ts","sourceRoot":"","sources":["../src/ingreso-masivo.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EAEnB,2BAA2B,EAE3B,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAiB;gBAErB,MAAM,GAAE,mBAAwB;IAa5C,2EAA2E;IAC3E,IAAI,SAAS,IAAI,uBAAuB,EAAE,CAEzC;IAED,uCAAuC;IACvC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAMD,6BAA6B;IAC7B,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAItC,iEAAiE;IACjE,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAItC,sCAAsC;IACtC,YAAY,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI;IAItD;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IAShD,oCAAoC;IACpC,YAAY,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI;IAIzD,oCAAoC;IACpC,YAAY,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI;IAIzD,6CAA6C;IAC7C,qBAAqB,CAAC,KAAK,EAAE,SAAS,2BAA2B,EAAE,GAAG,IAAI;IAI1E;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI;IAmCrE;;;OAGG;IACH,OAAO,IAAI,oBAAoB;IAoB/B,4CAA4C;IAC5C,OAAO,IAAI,oBAAoB;IAc/B,mCAAmC;IACnC,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,QAAQ;CAqBjB"}
@@ -0,0 +1,215 @@
1
+ import { ArcaValidationError } from '@ramiidv/arca-common';
2
+ import { ArcaSerializationError } from './errors.js';
3
+ import { CodigoMovimiento, CODIGOS_MOVIMIENTO } from './constants.js';
4
+ import { codificarArchivo, serializarRegistro, unirLineas } from './serializer.js';
5
+ import { validateRegistro } from './validators.js';
6
+ /** Copia superficial (los `Date` se copian; el resto de los valores son primitivos). */
7
+ function copiar(r) {
8
+ const copia = {};
9
+ for (const [k, v] of Object.entries(r)) {
10
+ copia[k] = v instanceof Date ? new Date(v.getTime()) : v;
11
+ }
12
+ return copia;
13
+ }
14
+ function clonar(r) {
15
+ return Object.freeze(copiar(r));
16
+ }
17
+ function exportar(r) {
18
+ return copiar(r);
19
+ }
20
+ /**
21
+ * Arma el archivo TXT de "Ingreso masivo de datos - Relaciones laborales" de
22
+ * Simplificación Registral (registros `01` de 130 posiciones).
23
+ *
24
+ * Cada registro se valida y se serializa al agregarlo: si algo falla, se lanza
25
+ * el error y el registro no se agrega. Las operaciones masivas son atómicas.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const sr = new ArcaEmpleados();
30
+ * sr.alta({ cuil: '20-12345678-6', fechaInicio: '2026-11-02', modalidadContrato: 8,
31
+ * obraSocial: '126205', sucursal: 1 });
32
+ * const { buffer } = sr.generar();
33
+ * fs.writeFileSync('relaciones.txt', buffer);
34
+ * ```
35
+ */
36
+ export class ArcaEmpleados {
37
+ strict;
38
+ serializacion;
39
+ entradas = [];
40
+ constructor(config = {}) {
41
+ if (typeof config !== 'object' || config === null) {
42
+ throw new TypeError('ArcaEmpleados: config debe ser un objeto.');
43
+ }
44
+ if (config.strict !== undefined && typeof config.strict !== 'boolean') {
45
+ throw new TypeError('ArcaEmpleados: config.strict debe ser boolean.');
46
+ }
47
+ this.strict = config.strict ?? true;
48
+ this.serializacion = Object.freeze({ ...config.serializacion });
49
+ // Valida las opciones de serialización enseguida.
50
+ unirLineas([], this.serializacion);
51
+ }
52
+ /** Copia de los registros agregados (modificarla no afecta al builder). */
53
+ get registros() {
54
+ return this.entradas.map((e) => exportar(e.registro));
55
+ }
56
+ /** Cantidad de registros agregados. */
57
+ get cantidad() {
58
+ return this.entradas.length;
59
+ }
60
+ // -------------------------------------------------------------------------
61
+ // Movimientos individuales
62
+ // -------------------------------------------------------------------------
63
+ /** Agrega un alta (`AT`). */
64
+ alta(datos) {
65
+ return this.novedad(this.conMovimiento(CodigoMovimiento.ALTA, datos));
66
+ }
67
+ /** Agrega una baja (`BT`). La fecha de baja va en `fechaFin`. */
68
+ baja(datos) {
69
+ return this.novedad(this.conMovimiento(CodigoMovimiento.BAJA, datos));
70
+ }
71
+ /** Agrega una modificación (`MR`). */
72
+ modificacion(datos) {
73
+ return this.novedad(this.conMovimiento(CodigoMovimiento.MODIFICACION, datos));
74
+ }
75
+ /**
76
+ * Agrega un registro con cualquier código de movimiento (`AT`, `BT`, `MR`, `NA`, `NB`).
77
+ * Es la única vía para `NA` y `NB`, cuyo significado el manual no documenta.
78
+ */
79
+ novedad(registro) {
80
+ this.entradas.push(this.preparar(registro));
81
+ return this;
82
+ }
83
+ // -------------------------------------------------------------------------
84
+ // Operaciones masivas (atómicas: si un registro falla, no se agrega ninguno)
85
+ // -------------------------------------------------------------------------
86
+ /** Agrega varias altas. Atómico. */
87
+ altasMasivas(datos) {
88
+ return this.novedadesMasivas(this.lista(datos).map((d) => this.conMovimiento(CodigoMovimiento.ALTA, d)));
89
+ }
90
+ /** Agrega varias bajas. Atómico. */
91
+ bajasMasivas(datos) {
92
+ return this.novedadesMasivas(this.lista(datos).map((d) => this.conMovimiento(CodigoMovimiento.BAJA, d)));
93
+ }
94
+ /** Agrega varias modificaciones. Atómico. */
95
+ modificacionesMasivas(datos) {
96
+ return this.novedadesMasivas(this.lista(datos).map((d) => this.conMovimiento(CodigoMovimiento.MODIFICACION, d)));
97
+ }
98
+ /**
99
+ * Agrega varios registros con cualquier código de movimiento. Atómico: valida
100
+ * todos y, si alguno falla, lanza un `ArcaValidationError` con los errores de
101
+ * todos los registros (campo `"[i].campo"`) sin agregar ninguno.
102
+ */
103
+ novedadesMasivas(registros) {
104
+ const lista = this.lista(registros);
105
+ const nuevas = [];
106
+ const detalles = [];
107
+ const causas = [];
108
+ lista.forEach((r, i) => {
109
+ try {
110
+ nuevas.push(this.preparar(r));
111
+ }
112
+ catch (e) {
113
+ if (e instanceof ArcaValidationError) {
114
+ detalles.push(...e.details.map((d) => ({ ...d, field: `[${i}].${d.field}` })));
115
+ }
116
+ else if (e instanceof ArcaSerializationError) {
117
+ detalles.push({ field: `[${i}].${e.field ?? 'registro'}`, message: e.message, value: e.value });
118
+ }
119
+ else {
120
+ throw e;
121
+ }
122
+ causas.push(e);
123
+ }
124
+ });
125
+ if (detalles.length > 0) {
126
+ throw new ArcaValidationError(`${causas.length} de ${lista.length} registros inválidos; no se agregó ninguno. ${detalles.map((d) => `${d.field}: ${d.message}`).join('; ')}`, detalles, detalles[0].field, { cause: causas.length === 1 ? causas[0] : new AggregateError(causas, 'Errores por registro') });
127
+ }
128
+ this.entradas.push(...nuevas);
129
+ return this;
130
+ }
131
+ // -------------------------------------------------------------------------
132
+ // Salida
133
+ // -------------------------------------------------------------------------
134
+ /**
135
+ * Genera el archivo.
136
+ * @throws ArcaValidationError si no hay registros.
137
+ */
138
+ generar() {
139
+ if (this.entradas.length === 0) {
140
+ throw new ArcaValidationError('No hay registros para generar el archivo.', [{ field: 'registros', message: 'Agregue al menos un registro antes de generar el archivo' }], 'registros');
141
+ }
142
+ const lineas = this.entradas.map((e) => e.linea);
143
+ const contenido = unirLineas(lineas, this.serializacion);
144
+ const encoding = this.serializacion.encoding ?? 'latin1';
145
+ return {
146
+ contenido,
147
+ lineas,
148
+ encoding,
149
+ buffer: codificarArchivo(contenido, encoding),
150
+ resumen: this.resumen(),
151
+ };
152
+ }
153
+ /** Cantidad de registros por movimiento. */
154
+ resumen() {
155
+ const r = { totalRegistros: this.entradas.length, altas: 0, bajas: 0, modificaciones: 0, na: 0, nb: 0 };
156
+ for (const { registro } of this.entradas) {
157
+ switch (registro.movimiento) {
158
+ case 'AT':
159
+ r.altas++;
160
+ break;
161
+ case 'BT':
162
+ r.bajas++;
163
+ break;
164
+ case 'MR':
165
+ r.modificaciones++;
166
+ break;
167
+ case 'NA':
168
+ r.na++;
169
+ break;
170
+ case 'NB':
171
+ r.nb++;
172
+ break;
173
+ }
174
+ }
175
+ return r;
176
+ }
177
+ /** Elimina todos los registros. */
178
+ limpiar() {
179
+ this.entradas = [];
180
+ return this;
181
+ }
182
+ // -------------------------------------------------------------------------
183
+ // Internos
184
+ // -------------------------------------------------------------------------
185
+ lista(datos) {
186
+ if (!Array.isArray(datos)) {
187
+ throw new ArcaValidationError('Se esperaba un array de registros.', [{ field: 'registros', message: 'Se esperaba un array', value: datos }], 'registros');
188
+ }
189
+ return datos;
190
+ }
191
+ conMovimiento(movimiento, datos) {
192
+ if (typeof datos !== 'object' || datos === null || Array.isArray(datos)) {
193
+ throw new ArcaValidationError(`Los datos del movimiento ${movimiento} deben ser un objeto (se recibió ${datos === null ? 'null' : typeof datos}).`, [{ field: 'registro', message: 'Se esperaba un objeto', value: datos }], 'registro');
194
+ }
195
+ if ('movimiento' in datos && datos.movimiento !== movimiento) {
196
+ throw new ArcaValidationError(`El registro trae movimiento "${String(datos.movimiento)}" pero se agregó como ${movimiento}.`, [{ field: 'movimiento', message: `Se esperaba ${movimiento}`, value: datos.movimiento }], 'movimiento');
197
+ }
198
+ return { ...datos, movimiento };
199
+ }
200
+ preparar(registro) {
201
+ if (typeof registro !== 'object' || registro === null || Array.isArray(registro)) {
202
+ throw new ArcaValidationError(`El registro debe ser un objeto (se recibió ${registro === null ? 'null' : typeof registro}).`, [{ field: 'registro', message: 'Se esperaba un objeto', value: registro }], 'registro');
203
+ }
204
+ if (!CODIGOS_MOVIMIENTO.includes(registro.movimiento)) {
205
+ throw new ArcaValidationError(`Código de movimiento inválido: ${JSON.stringify(registro.movimiento) ?? String(registro.movimiento)}. Valores: ${CODIGOS_MOVIMIENTO.join(', ')}.`, [{ field: 'movimiento', message: `Debe ser uno de ${CODIGOS_MOVIMIENTO.join(', ')}`, value: registro.movimiento }], 'movimiento');
206
+ }
207
+ const copia = clonar(registro);
208
+ if (this.strict)
209
+ validateRegistro(copia, this.serializacion);
210
+ // En modo no estricto, los errores de formato salen como ArcaSerializationError.
211
+ const linea = serializarRegistro(copia, this.serializacion);
212
+ return { registro: copia, linea };
213
+ }
214
+ }
215
+ //# sourceMappingURL=ingreso-masivo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingreso-masivo.js","sourceRoot":"","sources":["../src/ingreso-masivo.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,52 @@
1
- import type { AltaEmpleado, BajaEmpleado, ModificacionEmpleado, DatosComplementarios, DatosCBU, RelacionFamiliar, DomicilioExplotacion, F935Archivo } from './types.js';
2
- /**
3
- * Formats a Date as DDMMYYYY.
4
- */
5
- export declare function formatDate(date: Date): string;
6
- /**
7
- * Converts a boolean to 'S' or 'N'.
8
- */
9
- export declare function boolToStr(val?: boolean): string;
10
- /**
11
- * Serializes the file header line.
12
- * Format: 00|CUIT|RAZON_SOCIAL|FECHA_GENERACION|CANTIDAD_REGISTROS|
13
- */
14
- export declare function serializeHeader(archivo: F935Archivo): string;
15
- /**
16
- * Serializes an alta (employee registration) record.
17
- * Format: 01|CUIT_EMPLEADOR|TIPO_OP|CUIL|FECHA_INICIO|MODALIDAD|OBRA_SOCIAL|ACTIVIDAD|AGROPECUARIO|FECHA_FIN|CALLE|NUMERO|PISO|DEPTO|LOCALIDAD|CP|PROVINCIA|TELEFONO|
18
- */
19
- export declare function serializeAlta(cuitEmpleador: string, alta: AltaEmpleado): string;
20
- /**
21
- * Serializes a baja (employee termination) record.
22
- * Format: 01|CUIT_EMPLEADOR|TIPO_OP|CUIL|FECHA_BAJA|MOTIVO_BAJA|
23
- */
24
- export declare function serializeBaja(cuitEmpleador: string, baja: BajaEmpleado): string;
25
- /**
26
- * Serializes a modificacion (employee modification) record.
27
- * Format: 01|CUIT_EMPLEADOR|TIPO_OP|CUIL|FECHA_INICIO|MODALIDAD|OBRA_SOCIAL|ACTIVIDAD|AGROPECUARIO|FECHA_FIN|CALLE|NUMERO|PISO|DEPTO|LOCALIDAD|CP|PROVINCIA|TELEFONO|
28
- */
29
- export declare function serializeModificacion(cuitEmpleador: string, mod: ModificacionEmpleado): string;
30
- /**
31
- * Serializes a datos complementarios record.
32
- * Format: 02|CUIT_EMPLEADOR|CUIL|FECHA_INICIO|SITUACION_REVISTA|NIVEL_EDUCACION|PUESTO|CCT|TIPO_SERVICIO|MOD_LIQUIDACION|ESTADO_CIVIL|REMUNERACION|HORAS|APORTE_ADICIONAL|CONTRIB_TAREAS_DIF|COD_SINIESTRADO|MARCA_PREAVISO|FECHA_PREAVISO|CONCEPTO_LIQUIDACION|
33
- */
34
- export declare function serializeDatosComplementarios(cuitEmpleador: string, datos: DatosComplementarios): string;
35
- /**
36
- * Serializes a CBU record.
37
- * Format: 03|CUIT_EMPLEADOR|CUIL|FECHA_INICIO|CBU|TIPO_CUENTA|
38
- */
39
- export declare function serializeCBU(cuitEmpleador: string, cbuData: DatosCBU): string;
40
- /**
41
- * Serializes a relacion familiar record.
42
- * Format: 04|CUIT_EMPLEADOR|CUIL|FECHA_INICIO|TIPO_RELACION|CUIL_FAMILIAR|DNI_FAMILIAR|NOMBRE|APELLIDO|FECHA_NACIMIENTO|DISCAPACITADO|ESCOLARIDAD|OBRA_SOCIAL_FAMILIAR|CUIL_TITULAR_OS|
43
- */
44
- export declare function serializeRelacionFamiliar(cuitEmpleador: string, rel: RelacionFamiliar): string;
45
- /**
46
- * Serializes a domicilio de explotacion record.
47
- * Format: 05|CUIT_EMPLEADOR|CUIL|CALLE|NUMERO|PISO|DEPTO|LOCALIDAD|CP|PROVINCIA|TELEFONO|ACTIVIDAD_ECONOMICA|
48
- */
49
- export declare function serializeDomicilio(cuitEmpleador: string, dom: DomicilioExplotacion & {
50
- cuil: string;
51
- }): string;
52
- /**
53
- * Serializes a complete F935Archivo to a string.
54
- * Returns the full file content with header and all record lines.
55
- * @throws ArcaSerializationError if serialization fails.
56
- */
57
- export declare function serializeArchivo(archivo: F935Archivo): string;
1
+ import type { ValidationErrorDetail } from '@ramiidv/arca-common';
2
+ import type { EncodingArchivo, FechaInput, OpcionesSerializacion, RegistroRelacionLaboral } from './types.js';
3
+ /** `N` numérico, `A` alfanumérico, `F` fecha (alfanumérico de 10, `AAAA/MM/DD`). */
4
+ export type TipoCampo = 'N' | 'A' | 'F';
5
+ /** Un campo del diseño de registro oficial. */
6
+ export interface CampoDiseno {
7
+ /** Nombre de la propiedad en {@link RegistroRelacionLaboral} (`tipoRegistro` es fijo). */
8
+ readonly campo: keyof RegistroRelacionLaboral | 'tipoRegistro';
9
+ /** Descripción tal como figura en el manual. */
10
+ readonly descripcion: string;
11
+ readonly desde: number;
12
+ readonly hasta: number;
13
+ readonly longitud: number;
14
+ readonly tipo: TipoCampo;
15
+ }
16
+ /** Diseño de registro `01` (manual de Simplificación Registral, pág. 24). */
17
+ export declare const DISENO_REGISTRO: readonly CampoDiseno[];
18
+ /**
19
+ * Formatea una fecha como `AAAA/MM/DD` (formato de las fechas del archivo de
20
+ * Simplificación Registral). Distinto del `formatDate` de common (`AAAAMMDD`).
21
+ *
22
+ * - `Date`: fecha calendario en Argentina (`America/Argentina/Buenos_Aires`),
23
+ * independiente de la zona horaria del proceso.
24
+ * - string `AAAA-MM-DD`, `AAAAMMDD` o `AAAA/MM/DD`: se toma literal.
25
+ *
26
+ * @throws ArcaValidationError si el formato es otro, la fecha no existe o el `Date` es inválido.
27
+ */
28
+ export declare function formatFechaSR(fecha: FechaInput): string;
29
+ /**
30
+ * Serializa un registro `01` a una línea de exactamente 130 caracteres (sin fin de línea).
31
+ * @throws ArcaSerializationError si algún campo no se puede escribir (nunca trunca).
32
+ */
33
+ export declare function serializarRegistro(registro: RegistroRelacionLaboral, opciones?: OpcionesSerializacion): string;
34
+ /**
35
+ * Devuelve todos los errores de formato de un registro (sin lanzar), uno por campo.
36
+ * @internal Lo usa `validateRegistro`.
37
+ */
38
+ export declare function erroresDeFormato(registro: unknown, opciones?: OpcionesSerializacion): ValidationErrorDetail[];
39
+ /**
40
+ * Serializa varios registros al contenido completo del archivo (string).
41
+ * Por defecto: líneas separadas por CRLF y CRLF final.
42
+ * @throws ArcaSerializationError con `indice` del registro que falló y `cause` = error original.
43
+ */
44
+ export declare function serializarArchivo(registros: readonly RegistroRelacionLaboral[], opciones?: OpcionesSerializacion): string;
45
+ /** @internal */
46
+ export declare function unirLineas(lineas: readonly string[], opciones?: OpcionesSerializacion): string;
47
+ /**
48
+ * Codifica el contenido del archivo a `Buffer` (ISO-8859-1 por defecto, un byte por caracter).
49
+ * @throws ArcaSerializationError si hay un caracter no representable en la codificación.
50
+ */
51
+ export declare function codificarArchivo(contenido: string, encoding?: EncodingArchivo): Buffer;
58
52
  //# sourceMappingURL=serializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EAEZ,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/C;AA6CD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAM5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CA0B/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAa/E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,MAAM,CA0B9F;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,oBAAoB,GAC1B,MAAM,CA0BR;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM,CAa7E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,gBAAgB,GACpB,MAAM,CAqBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAmBR;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAoB7D"}
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAMpB,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAExC,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,uBAAuB,GAAG,cAAc,CAAC;IAC/D,gDAAgD;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAYD,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,SAAS,WAAW,EAuBhD,CAAC;AAqDH;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAuBvD;AAsID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAS9G;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,CAiB7G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,uBAAuB,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAgBzH;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAI9F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,eAA0B,GAAG,MAAM,CAchG"}