@albertomarturelo/sii-core 0.19.1 → 0.19.3

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/CHANGELOG.md CHANGED
@@ -4,6 +4,26 @@ All notable changes to `@albertomarturelo/sii-core` are documented here. The for
4
4
  loosely based on [Keep a Changelog](https://keepachangelog.com/); the package is
5
5
  pre-1.0, so MINOR bumps may carry breaking changes (pin or use `~` downstream).
6
6
 
7
+ ## 0.19.3 — 2026-11-10
8
+
9
+ ### Fixed
10
+
11
+ - **`repairMojibake` repairs SII's Windows-1252 double encoding (#271).** A UTF-8 second byte in
12
+ 0x80–0x9F (the capitals « À »–« ß »: « Ó », « É », « Ñ », « Ú ») arrives as one of cp1252's
13
+ characters above U+00FF, which the guard took for clean text, leaving the whole string broken
14
+ (« LIQUIDACIÓN … deberá »). They map back to their byte before the test and the round trip.
15
+ Every text repaired since 0.19.1 gains it: the F22's estado, historial, observaciones, códigos
16
+ and terceros, and the mipyme DTE borradores. Clean text with « “ », « – » or « € » is untouched.
17
+
18
+ ## 0.19.2 — 2026-11-09
19
+
20
+ ### Fixed
21
+
22
+ - **`f22Status` repairs double-encoded código glosas (#267).** `fetchF22Grid` (`f22Compacto`)
23
+ returns each código's `glosa` through `repairedText`, as the estado, historial and
24
+ observaciones do since 0.19.1 (« devolución » ⇒ « devolución »). Códigos, valores and the PII
25
+ drop are unchanged.
26
+
7
27
  ## 0.19.1 — 2026-11-09
8
28
 
9
29
  ### Changed
@@ -1,7 +1,7 @@
1
- /** Repair SII's double-encoded text by re-encoding the decoded string as Latin-1 and decoding it
2
- * as UTF-8 again. Applied ONLY when the string carries the tell-tale `Ã`/`Â` + continuation pair,
3
- * holds nothing above U+00FF, and the round trip decodes cleanly, so legitimately-accented text
4
- * is left untouched. */
1
+ /** Repair SII's double-encoded text by re-encoding the decoded string as Windows-1252 and decoding
2
+ * it as UTF-8 again. Applied ONLY when the string carries the tell-tale `Ã`/`Â` + continuation
3
+ * pair (the continuation byte in its Latin-1 or cp1252 form), holds nothing else beyond one byte,
4
+ * and the round trip decodes cleanly, so legitimately-accented text is left untouched. */
5
5
  export declare function repairMojibake(v: string): string;
6
6
  /** A wire value as text, repaired: null stays null, anything else is `String(v)` through
7
7
  * `repairMojibake`. For the free-text fields a facade curates (glosas, descripciones). */
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/format/text.ts"],"names":[],"mappings":"AAMA;;;yBAGyB;AACzB,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;2FAC2F;AAC3F,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,IACe,CAAC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/format/text.ts"],"names":[],"mappings":"AAmBA;;;2FAG2F;AAC3F,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAehD;AAED;2FAC2F;AAC3F,eAAO,MAAM,YAAY,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,IACe,CAAC"}
@@ -1,18 +1,31 @@
1
1
  // SII text as SII meant it. Some endpoints serve DOUBLE-ENCODED text: the UTF-8 bytes of an
2
2
  // already-mojibaked string, so even a correct decode yields "Fundación" / "Ñuñoa". Observed on
3
3
  // the DTE borradores (`listaBorrador`, 2026-09-08), one F22 terceros title (2026-10-21) and the
4
- // F22 estado glosas and historial glosas (2026-11-09, GH-264). Hoisted here after the third
5
- // facade needed it (conventions/sii-wire.md). Display-side only: nothing sent to SII passes here.
6
- /** Repair SII's double-encoded text by re-encoding the decoded string as Latin-1 and decoding it
7
- * as UTF-8 again. Applied ONLY when the string carries the tell-tale `Ã`/`Â` + continuation pair,
8
- * holds nothing above U+00FF, and the round trip decodes cleanly, so legitimately-accented text
9
- * is left untouched. */
4
+ // F22 estado and historial glosas (2026-11-09, GH-264) and the F22 código glosas (2026-11-10,
5
+ // GH-267, GH-271). Hoisted here after the third facade needed it (conventions/sii-wire.md).
6
+ // Display-side only: nothing sent to SII passes here.
7
+ // SII's double encoding is Windows-1252, not Latin-1 (GH-271): a UTF-8 byte in 0x80–0x9F was read
8
+ // as cp1252's printable character there, so « Ó » (C3 93) arrives as `Ó` (U+201C). These are the
9
+ // characters cp1252 puts at 0x80–0x9F, in byte order; its five undefined bytes (81, 8D, 8F, 90, 9D)
10
+ // decode to the C1 control of the same value, which already is that byte.
11
+ const CP1252_HIGH = '\u20ac\u0081\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\u008d\u017d\u008f' +
12
+ '\u0090\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\u009d\u017e\u0178';
13
+ const CP1252_BYTE = new Map(Array.from(CP1252_HIGH, (ch, i) => [ch, 0x80 + i]));
14
+ /** The byte a character stood for when SII decoded UTF-8 as cp1252; its code point otherwise. */
15
+ const cp1252Byte = (ch) => CP1252_BYTE.get(ch) ?? ch.codePointAt(0) ?? 0;
16
+ /** Repair SII's double-encoded text by re-encoding the decoded string as Windows-1252 and decoding
17
+ * it as UTF-8 again. Applied ONLY when the string carries the tell-tale `Ã`/`Â` + continuation
18
+ * pair (the continuation byte in its Latin-1 or cp1252 form), holds nothing else beyond one byte,
19
+ * and the round trip decodes cleanly, so legitimately-accented text is left untouched. */
10
20
  export function repairMojibake(v) {
11
- if (!/[\u00c2-\u00c3][\u0080-\u00bf]/.test(v))
21
+ if (!/[ÂÃ]/.test(v))
22
+ return v; // every tell-tale pair starts with  or Ã
23
+ const codes = Array.from(v, cp1252Byte);
24
+ const tellTale = codes.some((c, i) => (c === 0xc2 || c === 0xc3) && (codes[i + 1] ?? 0) >= 0x80 && (codes[i + 1] ?? 0) <= 0xbf);
25
+ if (!tellTale)
12
26
  return v;
13
- const codes = Array.from(v, (ch) => ch.charCodeAt(0));
14
27
  if (codes.some((c) => c > 0xff))
15
- return v; // a non-Latin-1 char ⇒ not a mojibake string
28
+ return v; // a char that is no cp1252 byte ⇒ not a mojibake string
16
29
  try {
17
30
  const decoded = new TextDecoder('utf-8', { fatal: true }).decode(Uint8Array.from(codes));
18
31
  return decoded.includes('\ufffd') ? v : decoded;
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/format/text.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,kGAAkG;AAClG,gGAAgG;AAChG,4FAA4F;AAC5F,kGAAkG;AAElG;;;yBAGyB;AACzB,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,6CAA6C;IACxF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC,6DAA6D;IACzE,CAAC;AACH,CAAC;AAED;2FAC2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAU,EAAiB,EAAE,CACxD,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/format/text.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,kGAAkG;AAClG,gGAAgG;AAChG,8FAA8F;AAC9F,4FAA4F;AAC5F,sDAAsD;AAEtD,kGAAkG;AAClG,kGAAkG;AAClG,oGAAoG;AACpG,0EAA0E;AAC1E,MAAM,WAAW,GACf,kGAAkG;IAClG,kGAAkG,CAAC;AACrG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,iGAAiG;AACjG,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEzF;;;2FAG2F;AAC3F,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,0CAA0C;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAC3F,CAAC;IACF,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IACxB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,wDAAwD;IACnG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC,6DAA6D;IACzE,CAAC;AACH,CAAC;AAED;2FAC2F;AAC3F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAU,EAAiB,EAAE,CACxD,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/portal/f22/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAqCnD;;;mCAGmC;AACnC,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,SAAS,EAAE,CAAC,CAQtB"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/portal/f22/grid.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAuCnD;;;mCAGmC;AACnC,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,SAAS,EAAE,CAAC,CAQtB"}
@@ -1,3 +1,4 @@
1
+ import { repairedText } from '../../format/text.js';
1
2
  // The código taxonomy (PII denylist + contador grouping) lives in its own domain module —
2
3
  // it changes when we observe a new código, not when the wire changes.
3
4
  import { isHeaderCodigo } from '../f22-codigos.js';
@@ -16,7 +17,8 @@ const CODIGO_ALIASES = {
16
17
  glosa: ['glosa', 'descripcion'],
17
18
  };
18
19
  /** Project a código grid (`data:[{codigo,valor,glosa}]`) into rows, DROPPING the
19
- * identity/bank PII códigos (HEADER_CODIGOS). Sign preserved. */
20
+ * identity/bank PII códigos (HEADER_CODIGOS). Sign preserved; glosas repaired
21
+ * (`repairMojibake`). */
20
22
  function parseCodigoGrid(data) {
21
23
  if (!Array.isArray(data))
22
24
  return [];
@@ -30,7 +32,8 @@ function parseCodigoGrid(data) {
30
32
  out.push({
31
33
  codigo,
32
34
  valor: asNumber(aliasGet(r, CODIGO_ALIASES.valor)),
33
- glosa: asStr(aliasGet(r, CODIGO_ALIASES.glosa)),
35
+ // SII double-encodes some glosas (observed 2026-11-10, GH-267)
36
+ glosa: repairedText(aliasGet(r, CODIGO_ALIASES.glosa)),
34
37
  });
35
38
  }
36
39
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/portal/f22/grid.ts"],"names":[],"mappings":"AAMA,0FAA0F;AAC1F,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7F,MAAM,gBAAgB,GAAG,GAAG,QAAQ,cAAc,CAAC;AACnD,MAAM,sBAAsB,GAC1B,sFAAsF,CAAC;AACzF,6FAA6F;AAC7F,8FAA8F;AAC9F,wFAAwF;AACxF,8FAA8F;AAC9F,6FAA6F;AAC7F,gGAAgG;AAEhG,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;CACvB,CAAC;AAEX;kEACkE;AAClE,SAAS,eAAe,CAAC,IAAa;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC;YAAE,SAAS,CAAC,yBAAyB;QAClF,GAAG,CAAC,IAAI,CAAC;YACP,MAAM;YACN,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;mCAGmC;AACnC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAsB,EACtB,MAA+C;IAE/C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE;QAC3E,GAAG,SAAS,CAAC,GAAG,CAAC;QACjB,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,KAAK;KACN,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/portal/f22/grid.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,0FAA0F;AAC1F,sEAAsE;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7F,MAAM,gBAAgB,GAAG,GAAG,QAAQ,cAAc,CAAC;AACnD,MAAM,sBAAsB,GAC1B,sFAAsF,CAAC;AACzF,6FAA6F;AAC7F,8FAA8F;AAC9F,wFAAwF;AACxF,8FAA8F;AAC9F,6FAA6F;AAC7F,gGAAgG;AAEhG,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;CACvB,CAAC;AAEX;;0BAE0B;AAC1B,SAAS,eAAe,CAAC,IAAa;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC;YAAE,SAAS,CAAC,yBAAyB;QAClF,GAAG,CAAC,IAAI,CAAC;YACP,MAAM;YACN,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;YAClD,+DAA+D;YAC/D,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SACvD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;mCAGmC;AACnC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAsB,EACtB,MAA+C;IAE/C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE;QAC3E,GAAG,SAAS,CAAC,GAAG,CAAC;QACjB,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,KAAK;KACN,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@albertomarturelo/sii-core",
3
- "version": "0.19.1",
3
+ "version": "0.19.3",
4
4
  "type": "module",
5
5
  "description": "Shared SII domain core: rut, config (prod hostnames), contracts, tasks, seams. A Node library; external side-effects (portal, secrets, audit, clock) are injected via seams (ADR-003).",
6
6
  "license": "MIT",