@devlas/dte-sii 2.5.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.
Files changed (60) hide show
  1. package/BoletaService.js +109 -0
  2. package/CAF.js +173 -0
  3. package/CafSolicitor.js +380 -0
  4. package/Certificado.js +123 -0
  5. package/ConsumoFolio.js +376 -0
  6. package/DTE.js +399 -0
  7. package/EnviadorSII.js +1304 -0
  8. package/Envio.js +196 -0
  9. package/FolioRegistry.js +553 -0
  10. package/FolioService.js +703 -0
  11. package/LICENSE +27 -0
  12. package/LibroBase.js +134 -0
  13. package/LibroCompraVenta.js +205 -0
  14. package/LibroGuia.js +225 -0
  15. package/README.md +239 -0
  16. package/Signer.js +94 -0
  17. package/SiiCertificacion.js +1189 -0
  18. package/SiiPortalAuth.js +460 -0
  19. package/SiiSession.js +499 -0
  20. package/cert/BoletaCert.js +731 -0
  21. package/cert/CertFolioHelper.js +185 -0
  22. package/cert/CertRunner.js +2658 -0
  23. package/cert/ConfigLoader.js +133 -0
  24. package/cert/IntercambioCert.js +429 -0
  25. package/cert/LibroCompras.js +359 -0
  26. package/cert/LibroGuias.js +171 -0
  27. package/cert/LibroVentas.js +153 -0
  28. package/cert/MuestrasImpresas.js +676 -0
  29. package/cert/SetBase.js +321 -0
  30. package/cert/SetBasico.js +413 -0
  31. package/cert/SetCompra.js +472 -0
  32. package/cert/SetExenta.js +490 -0
  33. package/cert/SetGuia.js +283 -0
  34. package/cert/SetParser.js +1184 -0
  35. package/cert/SetsProvider.js +499 -0
  36. package/cert/Simulacion.js +521 -0
  37. package/cert/comunaOficina.js +460 -0
  38. package/cert/index.js +124 -0
  39. package/cert/types.js +330 -0
  40. package/dte-sii.d.ts +458 -0
  41. package/index.js +428 -0
  42. package/package.json +48 -0
  43. package/utils/c14n.js +275 -0
  44. package/utils/calculo.js +396 -0
  45. package/utils/config.js +276 -0
  46. package/utils/constants.js +302 -0
  47. package/utils/emisor.js +174 -0
  48. package/utils/endpoints.js +225 -0
  49. package/utils/error.js +235 -0
  50. package/utils/index.js +339 -0
  51. package/utils/logger.js +239 -0
  52. package/utils/pfx.js +203 -0
  53. package/utils/receptor.js +218 -0
  54. package/utils/referencia.js +169 -0
  55. package/utils/resolucion.js +119 -0
  56. package/utils/rut.js +169 -0
  57. package/utils/sanitize.js +124 -0
  58. package/utils/tokenCache.js +214 -0
  59. package/utils/xml.js +358 -0
  60. package/utils.js +4 -0
package/index.js ADDED
@@ -0,0 +1,428 @@
1
+ // Copyright (c) 2026 Devlas SpA — https://devlas.cl
2
+ // Licencia MIT. Ver archivo LICENSE para mas detalles.
3
+ /**
4
+ * @devlas/dte-sii
5
+ *
6
+ * Facturación y boletas electrónicas para el SII de Chile.
7
+ *
8
+ * @version 2.5.0
9
+ * @author Devlas SpA <hola@devlas.cl>
10
+ * @license MIT
11
+
12
+ // Módulos core
13
+ const Certificado = require('./Certificado');
14
+ const CAF = require('./CAF');
15
+ const DTE = require('./DTE');
16
+ const Signer = require('./Signer');
17
+ const { EnvioBOLETA, EnvioDTE } = require('./Envio');
18
+
19
+ // Servicios
20
+ const BoletaService = require('./BoletaService');
21
+ const EnviadorSII = require('./EnviadorSII');
22
+
23
+ // Gestión de Folios
24
+ const FolioService = require('./FolioService');
25
+ const FolioRegistry = require('./FolioRegistry');
26
+ const SiiSession = require('./SiiSession');
27
+ const CafSolicitor = require('./CafSolicitor');
28
+
29
+ // Libros y reportes
30
+ const ConsumoFolio = require('./ConsumoFolio');
31
+ const LibroCompraVenta = require('./LibroCompraVenta');
32
+ const LibroGuia = require('./LibroGuia');
33
+
34
+ // Helpers para certificación
35
+ const CertFolioHelper = require('./cert/CertFolioHelper');
36
+
37
+ const utils = require('./utils');
38
+
39
+ // Re-exports de utilidades para compatibilidad
40
+ const {
41
+ // Sanitización
42
+ sanitizeSiiText,
43
+ truncateText,
44
+ sanitizeGiroRecep,
45
+ sanitizeRazonSocial,
46
+ sanitizeNombreItem,
47
+ sanitizeDescripcionItem,
48
+ safeSegment,
49
+
50
+ // RUT
51
+ formatRut,
52
+ cleanRut,
53
+ splitRut,
54
+ formatRutWithDots,
55
+ formatRutSii,
56
+ calcularDV,
57
+ validarRut,
58
+ validateAndFormatRut,
59
+
60
+ // XML
61
+ formatBase64InXml,
62
+ expandSelfClosingTags,
63
+ normalizeArray,
64
+ extractEnvioMetadata,
65
+ saveEnvioArtifacts,
66
+ parseXml,
67
+ parseXmlNoNs,
68
+ buildXml,
69
+ decodeXmlEntities,
70
+ extractTagContent,
71
+ extractAttribute,
72
+
73
+ // Resolución SII
74
+ normalizeFechaResolucion,
75
+ createResolucion,
76
+ createResolucionCertificacion,
77
+ createResolucionProduccion,
78
+ validarResolucion,
79
+
80
+ // Cálculo
81
+ TASA_IVA_DEFAULT,
82
+ formatDecimal,
83
+ calcularMontoItem,
84
+ calcularTotalesDesdeItems,
85
+ calcularTotalesDesdeDetalle,
86
+ buildDetalle,
87
+ buildDetalleGuia,
88
+ buildDetalleCompra,
89
+ buildDescuentoGlobal,
90
+
91
+ // Referencia
92
+ buildSetReferencia,
93
+ buildDocReferencia,
94
+ buildAnulacionReferencia,
95
+ buildCorreccionTextoReferencia,
96
+ buildCorreccionMontosReferencia,
97
+ buildReferenciasNcNd,
98
+ CODIGOS_REFERENCIA,
99
+
100
+ // Emisor
101
+ buildEmisor,
102
+ buildEmisorBoleta,
103
+ normalizeEmisor,
104
+ validarEmisor,
105
+
106
+ // Receptor
107
+ RUT_CONSUMIDOR_FINAL,
108
+ RECEPTOR_CONSUMIDOR_FINAL,
109
+ buildReceptor,
110
+ buildReceptorBoleta,
111
+ buildReceptorConsumidorFinal,
112
+ normalizeReceptor,
113
+ validarReceptor,
114
+ esConsumidorFinal,
115
+
116
+ // Errores
117
+ DteSiiError,
118
+ ERROR_CODES,
119
+ configError,
120
+ certError,
121
+ cafError,
122
+ dteError,
123
+ siiError,
124
+ xmlError,
125
+ wrapError,
126
+
127
+ // Logger
128
+ logger,
129
+ LOG_LEVELS,
130
+ configureLogger,
131
+ silenceLogger,
132
+ enableLogger,
133
+ getLoggerConfig,
134
+ createScopedLogger,
135
+
136
+ // Configuración Global
137
+ getConfig,
138
+ getConfigSection,
139
+ configure,
140
+ configureRetry,
141
+ configureTokenCache,
142
+ configureTimeout,
143
+ resetConfig,
144
+ configureForProduction,
145
+ configureForDevelopment,
146
+ calculateRetryDelay,
147
+ isRetryableError,
148
+ isRetryableStatus,
149
+ withRetry,
150
+ DEFAULT_CONFIG,
151
+
152
+ // Token Cache
153
+ getCachedToken,
154
+ setCachedToken,
155
+ invalidateToken,
156
+ invalidateAmbiente,
157
+ invalidateEmisor,
158
+ clearTokenCache,
159
+ getTokenCacheStats,
160
+ pruneExpiredTokens,
161
+
162
+ // Endpoints SII (v2.5.0)
163
+ HOSTS,
164
+ SOAP_ENDPOINTS,
165
+ REST_ENDPOINTS,
166
+ CERT_ENDPOINTS,
167
+ getHost,
168
+ getSoapUrl,
169
+ getRestUrl,
170
+ getCertUrl,
171
+ validateAmbiente,
172
+
173
+ // Constantes DTE (v2.5.0)
174
+ TIPOS_DTE,
175
+ TIPOS_BOLETA,
176
+ TIPOS_EXENTOS,
177
+ NOMBRES_DTE,
178
+ TASA_IVA,
179
+ IDK_CERTIFICACION,
180
+ esBoleta,
181
+ esExento,
182
+ esNota,
183
+ getNombreDte,
184
+ esTipoValido,
185
+
186
+ // PFX Utils (v2.5.0)
187
+ loadPfxFromBuffer,
188
+ loadPfxFromFile,
189
+ extractSubjectFields,
190
+ extractRutFromCertificate,
191
+ isCertificateExpired,
192
+ getDaysUntilExpiry,
193
+ createTlsOptions,
194
+ } = utils;
195
+
196
+ // ============================================
197
+ // EXPORTS
198
+ // ============================================
199
+
200
+ module.exports = {
201
+ // ─────────────────────────────────────────
202
+ // Clases principales
203
+ // ─────────────────────────────────────────
204
+ Certificado,
205
+ CAF,
206
+ DTE,
207
+ Signer,
208
+ EnvioBOLETA,
209
+ EnvioDTE,
210
+
211
+ // ─────────────────────────────────────────
212
+ // Servicios
213
+ // ─────────────────────────────────────────
214
+ BoletaService,
215
+ EnviadorSII,
216
+
217
+ // ─────────────────────────────────────────
218
+ // Gestión de Folios
219
+ // ─────────────────────────────────────────
220
+ FolioService,
221
+ FolioRegistry,
222
+ SiiSession,
223
+ CafSolicitor,
224
+
225
+ // Funciones helper de folios (acceso directo)
226
+ createCafFingerprint: FolioRegistry.createCafFingerprint,
227
+ findLatestCaf: FolioRegistry.findLatestCaf,
228
+ resolveCafPath: FolioRegistry.resolveCafPath,
229
+
230
+ // ─────────────────────────────────────────
231
+ // Libros y reportes
232
+ // ─────────────────────────────────────────
233
+ ConsumoFolio,
234
+ LibroCompraVenta,
235
+ LibroGuia,
236
+
237
+ // ─────────────────────────────────────────
238
+ // Helpers para certificación
239
+ // ─────────────────────────────────────────
240
+ CertFolioHelper,
241
+
242
+ // ─────────────────────────────────────────
243
+ // UTILIDADES (todo el namespace)
244
+ // ─────────────────────────────────────────
245
+ utils,
246
+
247
+ // ─────────────────────────────────────────
248
+ // Sanitización
249
+ // ─────────────────────────────────────────
250
+ sanitizeSiiText,
251
+ truncateText,
252
+ sanitizeGiroRecep,
253
+ sanitizeRazonSocial,
254
+ sanitizeNombreItem,
255
+ sanitizeDescripcionItem,
256
+ safeSegment,
257
+
258
+ // ─────────────────────────────────────────
259
+ // RUT
260
+ // ─────────────────────────────────────────
261
+ formatRut,
262
+ cleanRut,
263
+ splitRut,
264
+ formatRutWithDots,
265
+ formatRutSii,
266
+ calcularDV,
267
+ validarRut,
268
+ validateAndFormatRut,
269
+
270
+ // ─────────────────────────────────────────
271
+ // XML
272
+ // ─────────────────────────────────────────
273
+ formatBase64InXml,
274
+ expandSelfClosingTags,
275
+ normalizeArray,
276
+ extractEnvioMetadata,
277
+ saveEnvioArtifacts,
278
+ parseXml,
279
+ parseXmlNoNs,
280
+ buildXml,
281
+ decodeXmlEntities,
282
+ extractTagContent,
283
+ extractAttribute,
284
+
285
+ // ─────────────────────────────────────────
286
+ // Resolución SII
287
+ // ─────────────────────────────────────────
288
+ normalizeFechaResolucion,
289
+ createResolucion,
290
+ createResolucionCertificacion,
291
+ createResolucionProduccion,
292
+ validarResolucion,
293
+
294
+ // ─────────────────────────────────────────
295
+ // Cálculo
296
+ // ─────────────────────────────────────────
297
+ TASA_IVA_DEFAULT,
298
+ formatDecimal,
299
+ calcularMontoItem,
300
+ calcularTotalesDesdeItems,
301
+ calcularTotalesDesdeDetalle,
302
+ buildDetalle,
303
+ buildDetalleGuia, buildDetalleCompra, buildDescuentoGlobal,
304
+
305
+ // ─────────────────────────────────────────
306
+ // Referencia
307
+ // ─────────────────────────────────────────
308
+ buildSetReferencia,
309
+ buildDocReferencia,
310
+ buildAnulacionReferencia,
311
+ buildCorreccionTextoReferencia,
312
+ buildCorreccionMontosReferencia,
313
+ buildReferenciasNcNd,
314
+ CODIGOS_REFERENCIA,
315
+
316
+ // ─────────────────────────────────────────
317
+ // Emisor
318
+ // ─────────────────────────────────────────
319
+ buildEmisor,
320
+ buildEmisorBoleta,
321
+ normalizeEmisor,
322
+ validarEmisor,
323
+
324
+ // ─────────────────────────────────────────
325
+ // Receptor
326
+ // ─────────────────────────────────────────
327
+ RUT_CONSUMIDOR_FINAL,
328
+ RECEPTOR_CONSUMIDOR_FINAL,
329
+ buildReceptor,
330
+ buildReceptorBoleta,
331
+ buildReceptorConsumidorFinal,
332
+ normalizeReceptor,
333
+ validarReceptor,
334
+ esConsumidorFinal,
335
+
336
+ // ─────────────────────────────────────────
337
+ // Errores
338
+ // ─────────────────────────────────────────
339
+ DteSiiError,
340
+ ERROR_CODES,
341
+ configError,
342
+ certError,
343
+ cafError,
344
+ dteError,
345
+ siiError,
346
+ xmlError,
347
+ wrapError,
348
+
349
+ // ─────────────────────────────────────────
350
+ // Logger
351
+ // ─────────────────────────────────────────
352
+ logger,
353
+ LOG_LEVELS,
354
+ configureLogger,
355
+ silenceLogger,
356
+ enableLogger,
357
+ getLoggerConfig,
358
+ createScopedLogger,
359
+
360
+ // ─────────────────────────────────────────
361
+ // Configuración Global
362
+ // ─────────────────────────────────────────
363
+ getConfig,
364
+ getConfigSection,
365
+ configure,
366
+ configureRetry,
367
+ configureTokenCache,
368
+ configureTimeout,
369
+ resetConfig,
370
+ configureForProduction,
371
+ configureForDevelopment,
372
+ calculateRetryDelay,
373
+ isRetryableError,
374
+ isRetryableStatus,
375
+ withRetry,
376
+ DEFAULT_CONFIG,
377
+
378
+ // ─────────────────────────────────────────
379
+ // Token Cache
380
+ // ─────────────────────────────────────────
381
+ getCachedToken,
382
+ setCachedToken,
383
+ invalidateToken,
384
+ invalidateAmbiente,
385
+ invalidateEmisor,
386
+ clearTokenCache,
387
+ getTokenCacheStats,
388
+ pruneExpiredTokens,
389
+
390
+ // ─────────────────────────────────────────
391
+ // Endpoints SII (v2.5.0)
392
+ // ─────────────────────────────────────────
393
+ HOSTS,
394
+ SOAP_ENDPOINTS,
395
+ REST_ENDPOINTS,
396
+ CERT_ENDPOINTS,
397
+ getHost,
398
+ getSoapUrl,
399
+ getRestUrl,
400
+ getCertUrl,
401
+ validateAmbiente,
402
+
403
+ // ─────────────────────────────────────────
404
+ // Constantes DTE (v2.5.0)
405
+ // ─────────────────────────────────────────
406
+ TIPOS_DTE,
407
+ TIPOS_BOLETA,
408
+ TIPOS_EXENTOS,
409
+ NOMBRES_DTE,
410
+ TASA_IVA,
411
+ IDK_CERTIFICACION,
412
+ esBoleta,
413
+ esExento,
414
+ esNota,
415
+ getNombreDte,
416
+ esTipoValido,
417
+
418
+ // ─────────────────────────────────────────
419
+ // PFX Utils (v2.5.0)
420
+ // ─────────────────────────────────────────
421
+ loadPfxFromBuffer,
422
+ loadPfxFromFile,
423
+ extractSubjectFields,
424
+ extractRutFromCertificate,
425
+ isCertificateExpired,
426
+ getDaysUntilExpiry,
427
+ createTlsOptions,
428
+ };
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@devlas/dte-sii",
3
+ "version": "2.5.0",
4
+ "description": "Facturación y boletas electrónicas para el SII de Chile. Genera, timbra, firma y envía DTEs, libros electrónicos y automatiza la certificación.",
5
+ "main": "index.js",
6
+ "types": "dte-sii.d.ts",
7
+ "license": "MIT",
8
+ "author": "Devlas SpA <hola@devlas.cl> (https://devlas.cl)",
9
+ "homepage": "https://github.com/devlas-cl/dte-sii",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/devlas-cl/dte-sii.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/devlas-cl/dte-sii/issues"
16
+ },
17
+ "keywords": [
18
+ "sii",
19
+ "chile",
20
+ "dte",
21
+ "facturacion-electronica",
22
+ "boleta-electronica",
23
+ "certificacion-sii",
24
+ "caf",
25
+ "xml-firmado",
26
+ "tributario"
27
+ ],
28
+ "engines": {
29
+ "node": ">=18.0.0"
30
+ },
31
+ "dependencies": {
32
+ "@xmldom/xmldom": "^0.8.11",
33
+ "fast-xml-parser": "^5.3.3",
34
+ "got": "^11.8.6",
35
+ "node-forge": "^1.3.3",
36
+ "puppeteer": "^24.12.1",
37
+ "soap": "^1.6.3",
38
+ "xml-c14n": "^0.0.6",
39
+ "xml-crypto": "^6.1.2"
40
+ },
41
+ "files": [
42
+ "index.js",
43
+ "dte-sii.d.ts",
44
+ "*.js",
45
+ "utils/",
46
+ "cert/"
47
+ ]
48
+ }