facturas 0.12.3 → 0.12.4

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 (31) hide show
  1. package/dist/{chunk-ZPVXXSUC.mjs → chunk-3EJINDBP.mjs} +3 -3
  2. package/dist/{chunk-G7BWMDFT.mjs → chunk-7V5S3ISG.mjs} +120 -31
  3. package/dist/chunk-7V5S3ISG.mjs.map +1 -0
  4. package/dist/{chunk-ZOSNASXB.mjs → chunk-BYEP3ABS.mjs} +1 -1
  5. package/dist/chunk-BYEP3ABS.mjs.map +1 -0
  6. package/dist/{chunk-UDX6HLAU.mjs → chunk-PHXH34L6.mjs} +2 -2
  7. package/dist/{chunk-7LEKQ4P7.mjs → chunk-WVKVJTFG.mjs} +2 -2
  8. package/dist/{chunk-QHYJ424J.mjs → chunk-YYDSBHMO.mjs} +3 -3
  9. package/dist/{chunk-VGNLXU4T.mjs → chunk-ZZDL6I56.mjs} +3 -3
  10. package/dist/cli.d.ts +3 -3
  11. package/dist/cli.mjs +6 -6
  12. package/dist/{client-BT_F1N8o.d.ts → client-tzfxAy7w.d.ts} +11 -6
  13. package/dist/{decimal-xie0oMOQ.d.ts → decimal-CgWMOiAC.d.ts} +1 -1
  14. package/dist/errors.d.ts +1 -1
  15. package/dist/errors.mjs +1 -1
  16. package/dist/{fiscal-evidence-Dpj-Iao8.d.ts → fiscal-evidence-DXl_U1uz.d.ts} +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.mjs +7 -7
  19. package/dist/padron.mjs +2 -2
  20. package/dist/wsfe.d.ts +3 -3
  21. package/dist/wsfe.mjs +4 -4
  22. package/dist/wsmtxca.d.ts +1 -1
  23. package/dist/wsmtxca.mjs +3 -3
  24. package/package.json +1 -1
  25. package/dist/chunk-G7BWMDFT.mjs.map +0 -1
  26. package/dist/chunk-ZOSNASXB.mjs.map +0 -1
  27. /package/dist/{chunk-ZPVXXSUC.mjs.map → chunk-3EJINDBP.mjs.map} +0 -0
  28. /package/dist/{chunk-UDX6HLAU.mjs.map → chunk-PHXH34L6.mjs.map} +0 -0
  29. /package/dist/{chunk-7LEKQ4P7.mjs.map → chunk-WVKVJTFG.mjs.map} +0 -0
  30. /package/dist/{chunk-QHYJ424J.mjs.map → chunk-YYDSBHMO.mjs.map} +0 -0
  31. /package/dist/{chunk-VGNLXU4T.mjs.map → chunk-ZZDL6I56.mjs.map} +0 -0
@@ -3,14 +3,14 @@ import {
3
3
  classifyArcaAuthenticationIssues,
4
4
  createArcaAuthenticationEvidence,
5
5
  executeWithAuthenticationRecovery
6
- } from "./chunk-UDX6HLAU.mjs";
6
+ } from "./chunk-PHXH34L6.mjs";
7
7
  import {
8
8
  ArcaInputError,
9
9
  ArcaInvalidSoapResponseError,
10
10
  ArcaServiceError,
11
11
  ArcaSoapFaultError,
12
12
  ArcaTransportError
13
- } from "./chunk-ZOSNASXB.mjs";
13
+ } from "./chunk-BYEP3ABS.mjs";
14
14
 
15
15
  // src/services/wsmtxca.ts
16
16
  function createWsmtxcaService(options) {
@@ -655,4 +655,4 @@ function formatCompactDateToIso(dateValue) {
655
655
  export {
656
656
  createWsmtxcaService
657
657
  };
658
- //# sourceMappingURL=chunk-ZPVXXSUC.mjs.map
658
+ //# sourceMappingURL=chunk-3EJINDBP.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createPadronService
3
- } from "./chunk-7LEKQ4P7.mjs";
3
+ } from "./chunk-WVKVJTFG.mjs";
4
4
  import {
5
5
  arcaMinorUnitsToNumber,
6
6
  assertArcaMinorUnits,
@@ -11,7 +11,7 @@ import {
11
11
  normalizeWsfeDateInput,
12
12
  normalizeWsfeVoucherInput,
13
13
  serializeArcaExchangeRate
14
- } from "./chunk-QHYJ424J.mjs";
14
+ } from "./chunk-YYDSBHMO.mjs";
15
15
  import {
16
16
  ARCA_CURRENCY_IDS,
17
17
  ARCA_DOCUMENT_TYPES,
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-GX5ERXT6.mjs";
24
24
  import {
25
25
  createWsmtxcaService
26
- } from "./chunk-ZPVXXSUC.mjs";
26
+ } from "./chunk-3EJINDBP.mjs";
27
27
  import {
28
28
  ArcaConfigurationError,
29
29
  ArcaError,
@@ -35,7 +35,7 @@ import {
35
35
  createResponseBodyDiagnostic,
36
36
  createSafeErrorDiagnostic,
37
37
  toArcaSafeErrorMetadata
38
- } from "./chunk-ZOSNASXB.mjs";
38
+ } from "./chunk-BYEP3ABS.mjs";
39
39
 
40
40
  // src/config.ts
41
41
  var ARCA_ENVIRONMENTS = ["production", "test"];
@@ -3658,10 +3658,11 @@ async function previewNote(wsfe, input, inputOptions, context, kind) {
3658
3658
  ["representedTaxId", "service", "forceRefresh"],
3659
3659
  "options"
3660
3660
  );
3661
- return toPreview(
3662
- await prepareNote(wsfe, input, options, context, kind),
3663
- options
3664
- );
3661
+ const prepared = await prepareNote(wsfe, input, options, context, kind);
3662
+ return {
3663
+ ...toPreview(prepared, options),
3664
+ ...prepared.original === void 0 ? {} : { original: prepared.original }
3665
+ };
3665
3666
  }
3666
3667
  async function prepareNote(wsfe, input, options, context, kind) {
3667
3668
  validateOptions(options);
@@ -3714,7 +3715,7 @@ async function prepareNote(wsfe, input, options, context, kind) {
3714
3715
  }
3715
3716
  }
3716
3717
  validatePrepared(prepared, options);
3717
- return prepared;
3718
+ return { ...prepared, original: toVoucherSummary(original.voucher) };
3718
3719
  }
3719
3720
  function preparePeriodNote(input, options, kind) {
3720
3721
  const { associatedPeriod, ...invoice } = input;
@@ -3769,7 +3770,7 @@ async function recoverOperation(select, key, inputOptions, context) {
3769
3770
  );
3770
3771
  if (json === null) {
3771
3772
  throw new ArcaInputError("No reservation exists for this idempotency key", {
3772
- code: "ARCA_INPUT_INVALID_VALUE",
3773
+ code: "ARCA_INPUT_RESERVATION_NOT_FOUND",
3773
3774
  field: "idempotencyKey"
3774
3775
  });
3775
3776
  }
@@ -4088,10 +4089,12 @@ function createArcaClient(config = {}) {
4088
4089
  // src/store/file.ts
4089
4090
  import { createHash as createHash3, randomUUID as randomUUID2 } from "crypto";
4090
4091
  import {
4092
+ link,
4091
4093
  mkdir,
4094
+ open,
4092
4095
  readFile,
4093
4096
  rename,
4094
- rm,
4097
+ rmdir,
4095
4098
  stat,
4096
4099
  unlink,
4097
4100
  writeFile
@@ -4194,35 +4197,28 @@ function fileLease(directory, ensure) {
4194
4197
  owner,
4195
4198
  expiresAt: new Date(Date.now() + ARCA_LEASE_MS).toISOString()
4196
4199
  });
4197
- const read = async () => {
4198
- try {
4199
- return JSON.parse(await readFile(holder, "utf8"));
4200
- } catch {
4201
- return null;
4202
- }
4203
- };
4204
4200
  return {
4205
4201
  acquire: (owner) => storeCall(async () => {
4206
4202
  await ensure();
4207
4203
  if (!await createDirectory(directory)) {
4208
- if (await stillHeld(directory, await read())) {
4204
+ const current = await readHolder(holder);
4205
+ if (await stillHeld(directory, current?.value ?? null)) {
4209
4206
  return false;
4210
4207
  }
4211
- await rm(directory, { recursive: true, force: true });
4212
- if (!await createDirectory(directory)) {
4213
- return false;
4208
+ if (current) {
4209
+ await retireHolder(directory, holder, current.raw);
4210
+ } else {
4211
+ await removeEmptyDirectory(directory);
4214
4212
  }
4213
+ return false;
4215
4214
  }
4216
4215
  return await writeHolder(holder, claim(owner));
4217
4216
  }),
4218
- renew: (owner) => storeCall(async () => {
4219
- if ((await read())?.owner === owner) {
4220
- await writeFile(holder, claim(owner), { mode: 384 });
4221
- }
4222
- }),
4217
+ renew: (owner) => storeCall(() => renewHolder(holder, owner, claim(owner))),
4223
4218
  release: (owner) => storeCall(async () => {
4224
- if ((await read())?.owner === owner) {
4225
- await rm(directory, { recursive: true, force: true });
4219
+ const current = await readHolder(holder);
4220
+ if (current?.value?.owner === owner) {
4221
+ await retireHolder(directory, holder, current.raw);
4226
4222
  }
4227
4223
  })
4228
4224
  };
@@ -4243,12 +4239,105 @@ async function writeHolder(holder, value) {
4243
4239
  await writeFile(holder, value, { mode: 384, flag: "wx" });
4244
4240
  return true;
4245
4241
  } catch (error) {
4246
- if (error.code === "EEXIST") {
4242
+ if (error.code === "EEXIST" || error.code === "ENOENT") {
4247
4243
  return false;
4248
4244
  }
4249
4245
  throw error;
4250
4246
  }
4251
4247
  }
4248
+ async function readHolder(holder) {
4249
+ let raw;
4250
+ try {
4251
+ raw = await readFile(holder, "utf8");
4252
+ } catch (error) {
4253
+ if (error.code === "ENOENT") {
4254
+ return null;
4255
+ }
4256
+ throw error;
4257
+ }
4258
+ try {
4259
+ return { raw, value: JSON.parse(raw) };
4260
+ } catch {
4261
+ return { raw, value: null };
4262
+ }
4263
+ }
4264
+ async function renewHolder(holder, owner, value) {
4265
+ let file;
4266
+ try {
4267
+ file = await open(holder, "r+");
4268
+ } catch (error) {
4269
+ if (error.code === "ENOENT") {
4270
+ return;
4271
+ }
4272
+ throw error;
4273
+ }
4274
+ try {
4275
+ let current = null;
4276
+ try {
4277
+ current = JSON.parse(await file.readFile("utf8"));
4278
+ } catch {
4279
+ }
4280
+ if (current?.owner === owner) {
4281
+ await file.truncate(0);
4282
+ await file.write(value, 0, "utf8");
4283
+ }
4284
+ } finally {
4285
+ await file.close();
4286
+ }
4287
+ }
4288
+ async function retireHolder(directory, holder, expected) {
4289
+ const retired = `${directory}.${randomUUID2()}.stale`;
4290
+ try {
4291
+ await rename(holder, retired);
4292
+ } catch (error) {
4293
+ if (error.code === "ENOENT") {
4294
+ return;
4295
+ }
4296
+ throw error;
4297
+ }
4298
+ let removed = false;
4299
+ try {
4300
+ if (await readFile(retired, "utf8") !== expected) {
4301
+ return;
4302
+ }
4303
+ try {
4304
+ await rmdir(directory);
4305
+ removed = true;
4306
+ } catch (error) {
4307
+ if (!isDirectoryContention(error)) {
4308
+ throw error;
4309
+ }
4310
+ }
4311
+ } finally {
4312
+ if (!removed) {
4313
+ await restoreHolder(retired, holder);
4314
+ }
4315
+ await unlink(retired).catch(() => void 0);
4316
+ }
4317
+ }
4318
+ async function restoreHolder(retired, holder) {
4319
+ try {
4320
+ await link(retired, holder);
4321
+ } catch (error) {
4322
+ const code = error.code;
4323
+ if (code !== "EEXIST" && code !== "ENOENT") {
4324
+ throw error;
4325
+ }
4326
+ }
4327
+ }
4328
+ async function removeEmptyDirectory(directory) {
4329
+ try {
4330
+ await rmdir(directory);
4331
+ } catch (error) {
4332
+ if (!isDirectoryContention(error)) {
4333
+ throw error;
4334
+ }
4335
+ }
4336
+ }
4337
+ function isDirectoryContention(error) {
4338
+ const code = error.code;
4339
+ return code === "ENOENT" || code === "ENOTEMPTY" || code === "EEXIST";
4340
+ }
4252
4341
  async function stillHeld(directory, holder) {
4253
4342
  if (holder) {
4254
4343
  return Date.parse(holder.expiresAt) > Date.now();
@@ -4278,4 +4367,4 @@ export {
4278
4367
  withLease,
4279
4368
  createFileStore
4280
4369
  };
4281
- //# sourceMappingURL=chunk-G7BWMDFT.mjs.map
4370
+ //# sourceMappingURL=chunk-7V5S3ISG.mjs.map