facturas 0.12.3 → 0.13.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/README.md +41 -35
- package/dist/{chunk-QHYJ424J.mjs → chunk-BPBTQDCO.mjs} +18 -175
- package/dist/chunk-BPBTQDCO.mjs.map +1 -0
- package/dist/{chunk-ZOSNASXB.mjs → chunk-BYEP3ABS.mjs} +1 -1
- package/dist/chunk-BYEP3ABS.mjs.map +1 -0
- package/dist/{chunk-G7BWMDFT.mjs → chunk-KPWAQMR5.mjs} +881 -216
- package/dist/chunk-KPWAQMR5.mjs.map +1 -0
- package/dist/{chunk-GX5ERXT6.mjs → chunk-LQMNKQ2V.mjs} +1 -1
- package/dist/chunk-LQMNKQ2V.mjs.map +1 -0
- package/dist/{chunk-UDX6HLAU.mjs → chunk-PHXH34L6.mjs} +2 -2
- package/dist/{chunk-ZPVXXSUC.mjs → chunk-WN62NMUJ.mjs} +15 -15
- package/dist/chunk-WN62NMUJ.mjs.map +1 -0
- package/dist/{chunk-7LEKQ4P7.mjs → chunk-WVKVJTFG.mjs} +2 -2
- package/dist/cli.d.ts +5 -5
- package/dist/cli.mjs +7 -7
- package/dist/{client-BT_F1N8o.d.ts → client-bblLZeUb.d.ts} +87 -45
- package/dist/constants.d.ts +1 -1
- package/dist/constants.mjs +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.mjs +1 -1
- package/dist/{fiscal-evidence-Dpj-Iao8.d.ts → fiscal-evidence-DaCyGd5o.d.ts} +3 -3
- package/dist/{index-CT1ffEAL.d.ts → index-DAC3edtw.d.ts} +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.mjs +11 -17
- package/dist/index.mjs.map +1 -1
- package/dist/padron.d.ts +2 -2
- package/dist/padron.mjs +2 -2
- package/dist/{types-SdBQAflw.d.ts → types-Su7QwloQ.d.ts} +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/wsfe.d.ts +255 -31
- package/dist/wsfe.mjs +3 -10
- package/dist/wsmtxca.d.ts +6 -6
- package/dist/wsmtxca.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-G7BWMDFT.mjs.map +0 -1
- package/dist/chunk-GX5ERXT6.mjs.map +0 -1
- package/dist/chunk-QHYJ424J.mjs.map +0 -1
- package/dist/chunk-VGNLXU4T.mjs +0 -169
- package/dist/chunk-VGNLXU4T.mjs.map +0 -1
- package/dist/chunk-ZOSNASXB.mjs.map +0 -1
- package/dist/chunk-ZPVXXSUC.mjs.map +0 -1
- package/dist/decimal-xie0oMOQ.d.ts +0 -272
- /package/dist/{chunk-UDX6HLAU.mjs.map → chunk-PHXH34L6.mjs.map} +0 -0
- /package/dist/{chunk-7LEKQ4P7.mjs.map → chunk-WVKVJTFG.mjs.map} +0 -0
package/dist/errors.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as ArcaServiceName } from './types-
|
|
1
|
+
import { b as ArcaServiceName } from './types-Su7QwloQ.js';
|
|
2
2
|
|
|
3
3
|
/** Base error class for all ARCA-related errors. */
|
|
4
4
|
declare class ArcaError extends Error {
|
|
@@ -12,7 +12,7 @@ declare class ArcaConfigurationError extends ArcaError {
|
|
|
12
12
|
constructor(message: string, options?: ErrorOptions);
|
|
13
13
|
}
|
|
14
14
|
/** Stable routing codes for caller-provided input failures. */
|
|
15
|
-
type ArcaInputErrorCode = "ARCA_INPUT_IDEMPOTENCY_MISMATCH" | "ARCA_INPUT_INVALID_DATE" | "ARCA_INPUT_INVALID_AMOUNT" | "ARCA_INPUT_AMOUNT_PRECISION" | "ARCA_INPUT_AMOUNT_MISMATCH" | "ARCA_INPUT_INVALID_EXCHANGE_RATE" | "ARCA_INPUT_INVALID_VALUE" | "ARCA_INPUT_MISSING_FIELD" | "ARCA_INPUT_RESERVED_FIELD";
|
|
15
|
+
type ArcaInputErrorCode = "ARCA_INPUT_IDEMPOTENCY_MISMATCH" | "ARCA_INPUT_RESERVATION_NOT_FOUND" | "ARCA_INPUT_INVALID_DATE" | "ARCA_INPUT_INVALID_AMOUNT" | "ARCA_INPUT_AMOUNT_PRECISION" | "ARCA_INPUT_AMOUNT_MISMATCH" | "ARCA_INPUT_INVALID_EXCHANGE_RATE" | "ARCA_INPUT_INVALID_VALUE" | "ARCA_INPUT_MISSING_FIELD" | "ARCA_INPUT_RESERVED_FIELD";
|
|
16
16
|
type ArcaInputErrorOptions = ErrorOptions & {
|
|
17
17
|
code: ArcaInputErrorCode;
|
|
18
18
|
field?: string;
|
|
@@ -194,4 +194,4 @@ type ArcaVoucherLookupResult<TVoucher, TService extends ArcaFiscalService = Arca
|
|
|
194
194
|
raw: Record<string, unknown>;
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
-
export {
|
|
197
|
+
export { ArcaAuthenticationError as A, type ArcaAuthenticationErrorOptions as a, type ArcaAuthenticationEvidence as b, type ArcaAuthenticationReason as c, type ArcaAuthorizationIndeterminateReason as d, type ArcaAuthorizationOutcome as e, ArcaConfigurationError as f, ArcaError as g, type ArcaFiscalIssue as h, type ArcaFiscalResultLevel as i, type ArcaFiscalResults as j, type ArcaFiscalService as k, ArcaInputError as l, type ArcaInputErrorCode as m, type ArcaInputErrorOptions as n, ArcaInvalidSoapResponseError as o, type ArcaSafeErrorMetadata as p, ArcaServiceError as q, ArcaSoapFaultError as r, ArcaTransportError as s, type ArcaVoucherLookupResult as t, isArcaAuthenticationError as u, toArcaSafeErrorMetadata as v };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as ArcaSoapExecutionOptions, d as ArcaSoapResponse, e as ArcaWsaaServiceId, f as ArcaAuthOptions, g as ArcaAuthCredentials } from './types-
|
|
1
|
+
import { c as ArcaSoapExecutionOptions, d as ArcaSoapResponse, e as ArcaWsaaServiceId, f as ArcaAuthOptions, g as ArcaAuthCredentials } from './types-Su7QwloQ.js';
|
|
2
2
|
|
|
3
3
|
type SoapTransport = {
|
|
4
4
|
execute<TBody, TResult>(request: ArcaSoapExecutionOptions<TBody>): Promise<ArcaSoapResponse<TResult>>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
export { a as AmountItem, A as ArcaClient, b as ArcaClientConfigView, C as CreditNoteInput, D as DebitNoteInput,
|
|
2
|
-
import { h as ArcaEnvironment, a as ArcaClientConfig, i as ArcaStore, j as ArcaWsaaSessionStore } from './types-
|
|
3
|
-
export { g as ArcaAuthCredentials, f as ArcaAuthOptions, A as ArcaClientConfig, k as ArcaLogLevel, l as ArcaLoggerConfig, m as ArcaPadronServiceName, n as ArcaRepresentedTaxId, b as ArcaServiceName, o as ArcaServiceTarget, e as ArcaWsaaServiceId, p as ArcaWsaaSessionKey } from './types-
|
|
1
|
+
export { a as AmountItem, A as ArcaClient, b as ArcaClientConfigView, C as CreditNoteInput, D as DebitNoteInput, F as FceOptions, I as InvoiceFamily, c as IssuanceFields, d as IssuanceService, e as IssueAmounts, f as IssueCommon, g as IssueInput, h as IssueOptions, i as IssueOutcome, j as IssuePreview, k as IssueRequest, l as IssuedVoucher, m as ItemLine, N as NotePreview, P as PeriodNoteInput, n as PreviewOptions, R as Receiver, o as RecoveryOptions, T as Tribute, V as VatItem, p as VatRate, q as VoucherAmounts, r as VoucherCoordinates, s as VoucherSummary, t as VouchersService, W as WsfeIdentityMatch, u as WsmtxcaIssueRequest, v as WsmtxcaLine, w as createArcaClient, x as matchWsfeVoucherIdentity } from './client-bblLZeUb.js';
|
|
2
|
+
import { h as ArcaEnvironment, a as ArcaClientConfig, i as ArcaStore, j as ArcaWsaaSessionStore } from './types-Su7QwloQ.js';
|
|
3
|
+
export { g as ArcaAuthCredentials, f as ArcaAuthOptions, A as ArcaClientConfig, k as ArcaLogLevel, l as ArcaLoggerConfig, m as ArcaPadronServiceName, n as ArcaRepresentedTaxId, b as ArcaServiceName, o as ArcaServiceTarget, e as ArcaWsaaServiceId, p as ArcaWsaaSessionKey } from './types-Su7QwloQ.js';
|
|
4
4
|
export { ARCA_FINAL_CONSUMER_IDENTIFICATION_THRESHOLD_MINOR_UNITS, ARCA_INVOICE_CLASS_BY_ISSUER, ARCA_ISSUER_CONDITION_IDS, ARCA_RECEIVER_CONDITION_IDS, IssuerCondition, ReceiverCondition, VoucherClass } from './constants.js';
|
|
5
|
-
export {
|
|
5
|
+
export { A as ArcaAuthenticationError, a as ArcaAuthenticationErrorOptions, b as ArcaAuthenticationEvidence, c as ArcaAuthenticationReason, d as ArcaAuthorizationIndeterminateReason, e as ArcaAuthorizationOutcome, f as ArcaConfigurationError, g as ArcaError, h as ArcaFiscalIssue, i as ArcaFiscalResultLevel, j as ArcaFiscalResults, k as ArcaFiscalService, l as ArcaInputError, m as ArcaInputErrorCode, n as ArcaInputErrorOptions, o as ArcaInvalidSoapResponseError, p as ArcaSafeErrorMetadata, q as ArcaServiceError, r as ArcaSoapFaultError, s as ArcaTransportError, t as ArcaVoucherLookupResult, u as isArcaAuthenticationError, v as toArcaSafeErrorMetadata } from './fiscal-evidence-DaCyGd5o.js';
|
|
6
6
|
export { CreatePadronServiceOptions, PadronService, PadronTaxIdLookupResult, PadronTaxpayerResult, createPadronService } from './padron.js';
|
|
7
|
-
export {
|
|
8
|
-
export { BuildFacturaBInput, BuildFacturaCInput, WsfeBuilderCurrencyInput, WsfeBuilderVatRate, buildFacturaB, buildFacturaC } from './wsfe.js';
|
|
7
|
+
export { CreateWsfeServiceOptions, WsfeActivity, WsfeActivityType, WsfeAssociatedPeriod, WsfeAssociatedVoucher, WsfeAuthorizationOutcome, WsfeAuthorizeVoucherInput, WsfeBuyer, WsfeCatalogEntry, WsfeCurrencyType, WsfeDateInput, WsfeOptionalField, WsfeQuotation, WsfeReceiverVatCondition, WsfeSalesPoint, WsfeServerStatus, WsfeService, WsfeTax, WsfeVatRate, WsfeVoucherInfo, WsfeVoucherInput, WsfeVoucherLookupResult, createWsfeService } from './wsfe.js';
|
|
9
8
|
export { CreateWsmtxcaServiceOptions, WsmtxcaAuthorizationOutcome, WsmtxcaAuthorizeVoucherInput, WsmtxcaLastAuthorizedVoucherResult, WsmtxcaSalesPoint, WsmtxcaSalesPointsResult, WsmtxcaService, WsmtxcaVoucherInfo, WsmtxcaVoucherLookupOutcome, WsmtxcaVoucherLookupResult, createWsmtxcaService } from './wsmtxca.js';
|
|
10
|
-
import './index-
|
|
9
|
+
import './index-DAC3edtw.js';
|
|
11
10
|
|
|
12
11
|
/** Valid ARCA environment names. */
|
|
13
12
|
declare const ARCA_ENVIRONMENTS: readonly ["production", "test"];
|
package/dist/index.mjs
CHANGED
|
@@ -11,27 +11,23 @@ import {
|
|
|
11
11
|
resolveArcaEnvironment,
|
|
12
12
|
storeCall,
|
|
13
13
|
withLease
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
createPadronService
|
|
17
|
-
} from "./chunk-7LEKQ4P7.mjs";
|
|
18
|
-
import {
|
|
19
|
-
buildFacturaB,
|
|
20
|
-
buildFacturaC
|
|
21
|
-
} from "./chunk-VGNLXU4T.mjs";
|
|
22
|
-
import {
|
|
23
|
-
createWsfeService
|
|
24
|
-
} from "./chunk-QHYJ424J.mjs";
|
|
14
|
+
} from "./chunk-KPWAQMR5.mjs";
|
|
25
15
|
import {
|
|
26
16
|
ARCA_FINAL_CONSUMER_IDENTIFICATION_THRESHOLD_MINOR_UNITS,
|
|
27
17
|
ARCA_INVOICE_CLASS_BY_ISSUER,
|
|
28
18
|
ARCA_ISSUER_CONDITION_IDS,
|
|
29
19
|
ARCA_RECEIVER_CONDITION_IDS
|
|
30
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-LQMNKQ2V.mjs";
|
|
21
|
+
import {
|
|
22
|
+
createPadronService
|
|
23
|
+
} from "./chunk-WVKVJTFG.mjs";
|
|
24
|
+
import {
|
|
25
|
+
createWsfeService
|
|
26
|
+
} from "./chunk-BPBTQDCO.mjs";
|
|
31
27
|
import {
|
|
32
28
|
createWsmtxcaService
|
|
33
|
-
} from "./chunk-
|
|
34
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-WN62NMUJ.mjs";
|
|
30
|
+
import "./chunk-PHXH34L6.mjs";
|
|
35
31
|
import {
|
|
36
32
|
ArcaAuthenticationError,
|
|
37
33
|
ArcaConfigurationError,
|
|
@@ -43,7 +39,7 @@ import {
|
|
|
43
39
|
ArcaTransportError,
|
|
44
40
|
isArcaAuthenticationError,
|
|
45
41
|
toArcaSafeErrorMetadata
|
|
46
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-BYEP3ABS.mjs";
|
|
47
43
|
|
|
48
44
|
// src/store/memory.ts
|
|
49
45
|
function createMemoryStore() {
|
|
@@ -236,8 +232,6 @@ export {
|
|
|
236
232
|
ArcaSoapFaultError,
|
|
237
233
|
ArcaTransportError,
|
|
238
234
|
assertArcaClientConfig,
|
|
239
|
-
buildFacturaB,
|
|
240
|
-
buildFacturaC,
|
|
241
235
|
createArcaClient,
|
|
242
236
|
createArcaClientConfigFromEnv,
|
|
243
237
|
createFileStore,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/store/memory.ts","../src/store/postgres.ts","../src/store/redis.ts"],"sourcesContent":["import type { ArcaStore } from \"./types\";\n\n/** In-process store for tests; reservations do not survive a restart. */\nexport function createMemoryStore(): ArcaStore {\n const values = new Map<string, string>();\n const locks = new Map<string, Promise<void>>();\n return {\n get: (key) => Promise.resolve(values.get(key) ?? null),\n set(key, value) {\n values.set(key, value);\n return Promise.resolve();\n },\n add(key, value) {\n if (values.has(key)) {\n return Promise.resolve(false);\n }\n values.set(key, value);\n return Promise.resolve(true);\n },\n delete(key) {\n values.delete(key);\n return Promise.resolve();\n },\n async withLock(key, fn) {\n const previous = locks.get(key) ?? Promise.resolve();\n let release: () => void = () => undefined;\n const current = new Promise<void>((resolve) => {\n release = resolve;\n });\n const queued = previous.catch(() => undefined).then(() => current);\n locks.set(key, queued);\n await previous.catch(() => undefined);\n try {\n return await fn();\n } finally {\n release();\n if (locks.get(key) === queued) {\n locks.delete(key);\n }\n }\n },\n };\n}\n","import { ArcaConfigurationError } from \"../errors\";\nimport { ARCA_LEASE_MS, withLease } from \"./lock\";\nimport { type ArcaStore, storeCall } from \"./types\";\n\ntype Row = { key?: string; value?: string };\n/** Uses the caller's SQL client; provision the table before use. */\nexport function createPostgresStore({\n query,\n table = \"arca_store\",\n}: {\n query: (text: string, params: string[]) => Promise<Row[] | { rows: Row[] }>;\n table?: string;\n}): ArcaStore {\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(table)) {\n throw new ArcaConfigurationError(\"Invalid ARCA store table identifier.\");\n }\n const name = `\"${table}\"`;\n const lease = Math.round(ARCA_LEASE_MS / 1000);\n const run = (text: string, params: string[]) =>\n storeCall(async () => {\n const result = await query(text, params);\n return Array.isArray(result) ? result : result.rows;\n });\n return {\n async get(key) {\n return (\n (await run(`SELECT value FROM ${name} WHERE key = $1`, [key]))[0]\n ?.value ?? null\n );\n },\n async set(key, value) {\n await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = now()`,\n [key, value]\n );\n },\n async add(key, value) {\n return (\n (\n await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT DO NOTHING RETURNING key`,\n [key, value]\n )\n ).length > 0\n );\n },\n async delete(key) {\n await run(`DELETE FROM ${name} WHERE key = $1`, [key]);\n },\n withLock(key, fn) {\n // A lease row, not an advisory lock: it survives a transaction-mode\n // pooler, where a session-scoped lock would be taken on another backend.\n return withLease(\n key,\n {\n async acquire(owner) {\n const taken = await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT DO NOTHING RETURNING key`,\n [key, owner]\n );\n if (taken.length > 0) {\n return true;\n }\n const expired = await run(\n `UPDATE ${name} SET value = $2, updated_at = now() WHERE key = $1 AND updated_at < now() - interval '${lease} seconds' RETURNING key`,\n [key, owner]\n );\n return expired.length > 0;\n },\n async renew(owner) {\n await run(\n `UPDATE ${name} SET updated_at = now() WHERE key = $1 AND value = $2`,\n [key, owner]\n );\n },\n async release(owner) {\n await run(`DELETE FROM ${name} WHERE key = $1 AND value = $2`, [\n key,\n owner,\n ]);\n },\n },\n fn\n );\n },\n };\n}\n","import { ArcaConfigurationError } from \"../errors\";\nimport { ARCA_LEASE_MS, withLease } from \"./lock\";\nimport { type ArcaStore, storeCall } from \"./types\";\n\ntype RedisClient = {\n get(key: string): Promise<unknown>;\n set(key: string, value: string): Promise<unknown>;\n call?(...args: string[]): Promise<unknown>;\n del?(key: string): Promise<unknown>;\n};\n/** Uses ioredis or Upstash without importing either driver. */\nexport function createRedisStore(\n client: RedisClient,\n options: { flavor?: \"ioredis\" | \"upstash\" } = {}\n): ArcaStore {\n const flavor =\n options.flavor ??\n (typeof client.call === \"function\" ? \"ioredis\" : \"upstash\");\n if (flavor === \"ioredis\" && !client.call) {\n throw new ArcaConfigurationError(\n \"ARCA Redis ioredis flavor requires client.call.\"\n );\n }\n // The public structural type accepts ioredis's overloaded set method.\n // Only the Upstash flavor invokes its options-object overload.\n const upstashSet = client.set as (\n key: string,\n value: string,\n options: { nx?: true; xx?: true; px?: number }\n ) => Promise<unknown>;\n const read = async (key: string) => {\n const value = await client.get(key);\n if (value === null || value === undefined) {\n return null;\n }\n // Upstash can deserialize stored JSON automatically.\n return typeof value === \"string\" ? value : JSON.stringify(value);\n };\n // A lease, so a crashed holder frees the key; a renewal keeps a live one.\n const lease = (key: string, owner: string, mode: \"nx\" | \"xx\") =>\n storeCall(\n async () =>\n (flavor === \"ioredis\"\n ? await client.call?.(\n \"SET\",\n key,\n owner,\n mode.toUpperCase(),\n \"PX\",\n String(ARCA_LEASE_MS)\n )\n : await upstashSet.call(client, key, owner, {\n [mode]: true,\n px: ARCA_LEASE_MS,\n })) === \"OK\"\n );\n return {\n get: (key) => storeCall(() => read(key)),\n set: (key, value) =>\n storeCall(async () => {\n await client.set(key, value);\n }),\n add: (key, value) =>\n storeCall(\n async () =>\n (flavor === \"ioredis\"\n ? await client.call?.(\"SET\", key, value, \"NX\")\n : await upstashSet.call(client, key, value, { nx: true })) === \"OK\"\n ),\n ...(client.del\n ? {\n delete: (key: string) =>\n storeCall(async () => {\n await client.del?.(key);\n }),\n withLock: <T>(key: string, fn: () => Promise<T>) =>\n withLease(\n key,\n {\n acquire: (owner) => lease(key, owner, \"nx\"),\n renew: async (owner) => {\n // Check and set: only the holder extends its own lease.\n if ((await storeCall(() => read(key))) === owner) {\n await lease(key, owner, \"xx\");\n }\n },\n release: async (owner) => {\n await storeCall(async () => {\n if ((await read(key)) === owner) {\n await client.del?.(key);\n }\n });\n },\n },\n fn\n ),\n }\n : {}),\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/store/memory.ts","../src/store/postgres.ts","../src/store/redis.ts"],"sourcesContent":["import type { ArcaStore } from \"./types\";\n\n/** In-process store for tests; reservations do not survive a restart. */\nexport function createMemoryStore(): ArcaStore {\n const values = new Map<string, string>();\n const locks = new Map<string, Promise<void>>();\n return {\n get: (key) => Promise.resolve(values.get(key) ?? null),\n set(key, value) {\n values.set(key, value);\n return Promise.resolve();\n },\n add(key, value) {\n if (values.has(key)) {\n return Promise.resolve(false);\n }\n values.set(key, value);\n return Promise.resolve(true);\n },\n delete(key) {\n values.delete(key);\n return Promise.resolve();\n },\n async withLock(key, fn) {\n const previous = locks.get(key) ?? Promise.resolve();\n let release: () => void = () => undefined;\n const current = new Promise<void>((resolve) => {\n release = resolve;\n });\n const queued = previous.catch(() => undefined).then(() => current);\n locks.set(key, queued);\n await previous.catch(() => undefined);\n try {\n return await fn();\n } finally {\n release();\n if (locks.get(key) === queued) {\n locks.delete(key);\n }\n }\n },\n };\n}\n","import { ArcaConfigurationError } from \"../errors\";\nimport { ARCA_LEASE_MS, withLease } from \"./lock\";\nimport { type ArcaStore, storeCall } from \"./types\";\n\ntype Row = { key?: string; value?: string };\n/** Uses the caller's SQL client; provision the table before use. */\nexport function createPostgresStore({\n query,\n table = \"arca_store\",\n}: {\n query: (text: string, params: string[]) => Promise<Row[] | { rows: Row[] }>;\n table?: string;\n}): ArcaStore {\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(table)) {\n throw new ArcaConfigurationError(\"Invalid ARCA store table identifier.\");\n }\n const name = `\"${table}\"`;\n const lease = Math.round(ARCA_LEASE_MS / 1000);\n const run = (text: string, params: string[]) =>\n storeCall(async () => {\n const result = await query(text, params);\n return Array.isArray(result) ? result : result.rows;\n });\n return {\n async get(key) {\n return (\n (await run(`SELECT value FROM ${name} WHERE key = $1`, [key]))[0]\n ?.value ?? null\n );\n },\n async set(key, value) {\n await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = now()`,\n [key, value]\n );\n },\n async add(key, value) {\n return (\n (\n await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT DO NOTHING RETURNING key`,\n [key, value]\n )\n ).length > 0\n );\n },\n async delete(key) {\n await run(`DELETE FROM ${name} WHERE key = $1`, [key]);\n },\n withLock(key, fn) {\n // A lease row, not an advisory lock: it survives a transaction-mode\n // pooler, where a session-scoped lock would be taken on another backend.\n return withLease(\n key,\n {\n async acquire(owner) {\n const taken = await run(\n `INSERT INTO ${name} (key, value) VALUES ($1, $2) ON CONFLICT DO NOTHING RETURNING key`,\n [key, owner]\n );\n if (taken.length > 0) {\n return true;\n }\n const expired = await run(\n `UPDATE ${name} SET value = $2, updated_at = now() WHERE key = $1 AND updated_at < now() - interval '${lease} seconds' RETURNING key`,\n [key, owner]\n );\n return expired.length > 0;\n },\n async renew(owner) {\n await run(\n `UPDATE ${name} SET updated_at = now() WHERE key = $1 AND value = $2`,\n [key, owner]\n );\n },\n async release(owner) {\n await run(`DELETE FROM ${name} WHERE key = $1 AND value = $2`, [\n key,\n owner,\n ]);\n },\n },\n fn\n );\n },\n };\n}\n","import { ArcaConfigurationError } from \"../errors\";\nimport { ARCA_LEASE_MS, withLease } from \"./lock\";\nimport { type ArcaStore, storeCall } from \"./types\";\n\ntype RedisClient = {\n get(key: string): Promise<unknown>;\n set(key: string, value: string): Promise<unknown>;\n call?(...args: string[]): Promise<unknown>;\n del?(key: string): Promise<unknown>;\n};\n/** Uses ioredis or Upstash without importing either driver. */\nexport function createRedisStore(\n client: RedisClient,\n options: { flavor?: \"ioredis\" | \"upstash\" } = {}\n): ArcaStore {\n const flavor =\n options.flavor ??\n (typeof client.call === \"function\" ? \"ioredis\" : \"upstash\");\n if (flavor === \"ioredis\" && !client.call) {\n throw new ArcaConfigurationError(\n \"ARCA Redis ioredis flavor requires client.call.\"\n );\n }\n // The public structural type accepts ioredis's overloaded set method.\n // Only the Upstash flavor invokes its options-object overload.\n const upstashSet = client.set as (\n key: string,\n value: string,\n options: { nx?: true; xx?: true; px?: number }\n ) => Promise<unknown>;\n const read = async (key: string) => {\n const value = await client.get(key);\n if (value === null || value === undefined) {\n return null;\n }\n // Upstash can deserialize stored JSON automatically.\n return typeof value === \"string\" ? value : JSON.stringify(value);\n };\n // A lease, so a crashed holder frees the key; a renewal keeps a live one.\n const lease = (key: string, owner: string, mode: \"nx\" | \"xx\") =>\n storeCall(\n async () =>\n (flavor === \"ioredis\"\n ? await client.call?.(\n \"SET\",\n key,\n owner,\n mode.toUpperCase(),\n \"PX\",\n String(ARCA_LEASE_MS)\n )\n : await upstashSet.call(client, key, owner, {\n [mode]: true,\n px: ARCA_LEASE_MS,\n })) === \"OK\"\n );\n return {\n get: (key) => storeCall(() => read(key)),\n set: (key, value) =>\n storeCall(async () => {\n await client.set(key, value);\n }),\n add: (key, value) =>\n storeCall(\n async () =>\n (flavor === \"ioredis\"\n ? await client.call?.(\"SET\", key, value, \"NX\")\n : await upstashSet.call(client, key, value, { nx: true })) === \"OK\"\n ),\n ...(client.del\n ? {\n delete: (key: string) =>\n storeCall(async () => {\n await client.del?.(key);\n }),\n withLock: <T>(key: string, fn: () => Promise<T>) =>\n withLease(\n key,\n {\n acquire: (owner) => lease(key, owner, \"nx\"),\n renew: async (owner) => {\n // Check and set: only the holder extends its own lease.\n if ((await storeCall(() => read(key))) === owner) {\n await lease(key, owner, \"xx\");\n }\n },\n release: async (owner) => {\n await storeCall(async () => {\n if ((await read(key)) === owner) {\n await client.del?.(key);\n }\n });\n },\n },\n fn\n ),\n }\n : {}),\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/padron.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as ArcaClientConfig } from './types-
|
|
2
|
-
import { W as WsaaAuthModule, S as SoapTransport } from './index-
|
|
1
|
+
import { a as ArcaClientConfig } from './types-Su7QwloQ.js';
|
|
2
|
+
import { W as WsaaAuthModule, S as SoapTransport } from './index-DAC3edtw.js';
|
|
3
3
|
|
|
4
4
|
/** Result of a taxpayer lookup via Padron A5. */
|
|
5
5
|
type PadronTaxpayerResult = {
|
package/dist/padron.mjs
CHANGED
|
@@ -64,7 +64,7 @@ type ArcaAuthOptions = {
|
|
|
64
64
|
forceRefresh?: boolean;
|
|
65
65
|
representedTaxId?: ArcaRepresentedTaxId;
|
|
66
66
|
/** Aborts login, submission and consultation with the caller's deadline. */
|
|
67
|
-
|
|
67
|
+
abortSignal?: AbortSignal;
|
|
68
68
|
};
|
|
69
69
|
type ArcaSoapExecutionOptions<TBody> = {
|
|
70
70
|
service: ArcaServiceName;
|
package/dist/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { g as ArcaAuthCredentials, f as ArcaAuthOptions, A as ArcaClientConfig, h as ArcaEnvironment, k as ArcaLogLevel, l as ArcaLoggerConfig, m as ArcaPadronServiceName, n as ArcaRepresentedTaxId, b as ArcaServiceName, o as ArcaServiceTarget, e as ArcaWsaaServiceId, p as ArcaWsaaSessionKey, j as ArcaWsaaSessionStore } from './types-
|
|
1
|
+
export { g as ArcaAuthCredentials, f as ArcaAuthOptions, A as ArcaClientConfig, h as ArcaEnvironment, k as ArcaLogLevel, l as ArcaLoggerConfig, m as ArcaPadronServiceName, n as ArcaRepresentedTaxId, b as ArcaServiceName, o as ArcaServiceTarget, e as ArcaWsaaServiceId, p as ArcaWsaaSessionKey, j as ArcaWsaaSessionStore } from './types-Su7QwloQ.js';
|
package/dist/wsfe.d.ts
CHANGED
|
@@ -1,45 +1,269 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import './
|
|
4
|
-
import './index-CT1ffEAL.js';
|
|
5
|
-
import './fiscal-evidence-Dpj-Iao8.js';
|
|
1
|
+
import { a as ArcaClientConfig } from './types-Su7QwloQ.js';
|
|
2
|
+
import { W as WsaaAuthModule, S as SoapTransport } from './index-DAC3edtw.js';
|
|
3
|
+
import { e as ArcaAuthorizationOutcome, t as ArcaVoucherLookupResult } from './fiscal-evidence-DaCyGd5o.js';
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
currency: "USD";
|
|
13
|
-
exchangeRate: string;
|
|
14
|
-
sameCurrencyForeignCancellation?: false;
|
|
15
|
-
} | {
|
|
16
|
-
currency: "USD";
|
|
17
|
-
exchangeRate?: never;
|
|
18
|
-
sameCurrencyForeignCancellation: true;
|
|
19
|
-
};
|
|
20
|
-
type WsfeBuilderVatRate = SupportedVatRate;
|
|
21
|
-
type WsfeInvoiceBuilderBaseInput = {
|
|
5
|
+
/** Accepted public date inputs for WSFE request fields. */
|
|
6
|
+
type WsfeDateInput = `${number}${number}${number}${number}-${number}${number}-${number}${number}` | `${number}${number}${number}${number}${number}${number}${number}${number}`;
|
|
7
|
+
/** An associated voucher referenced by a WSFE invoice request. */
|
|
8
|
+
type WsfeAssociatedVoucher = {
|
|
9
|
+
type: number;
|
|
22
10
|
salesPoint: number;
|
|
11
|
+
number: number;
|
|
12
|
+
taxId?: string;
|
|
13
|
+
voucherDate?: WsfeDateInput;
|
|
14
|
+
};
|
|
15
|
+
/** An associated period used by WSFE credit/debit notes without associated vouchers. */
|
|
16
|
+
type WsfeAssociatedPeriod = {
|
|
17
|
+
startDate: WsfeDateInput;
|
|
18
|
+
endDate: WsfeDateInput;
|
|
19
|
+
};
|
|
20
|
+
/** A tax (tributo) item in a WSFE invoice request. */
|
|
21
|
+
type WsfeTax = {
|
|
22
|
+
id: number;
|
|
23
|
+
description?: string;
|
|
24
|
+
baseAmount: number;
|
|
25
|
+
rate: number;
|
|
26
|
+
amount: number;
|
|
27
|
+
};
|
|
28
|
+
/** A VAT rate (alícuota IVA) item in a WSFE invoice request. */
|
|
29
|
+
type WsfeVatRate = {
|
|
30
|
+
id: number;
|
|
31
|
+
baseAmount: number;
|
|
32
|
+
amount: number;
|
|
33
|
+
};
|
|
34
|
+
/** An optional field (campo opcional) in a WSFE invoice request. */
|
|
35
|
+
type WsfeOptionalField = {
|
|
36
|
+
id: string;
|
|
37
|
+
value: string;
|
|
38
|
+
};
|
|
39
|
+
/** A buyer (comprador) in a WSFE invoice request. */
|
|
40
|
+
type WsfeBuyer = {
|
|
41
|
+
documentType: number;
|
|
42
|
+
documentNumber: number;
|
|
43
|
+
percentage: number;
|
|
44
|
+
};
|
|
45
|
+
/** An activity associated with a WSFE invoice request. */
|
|
46
|
+
type WsfeActivity = {
|
|
47
|
+
id: number;
|
|
48
|
+
};
|
|
49
|
+
/** Input data for authorizing a WSFE voucher. */
|
|
50
|
+
type WsfeVoucherInput = {
|
|
51
|
+
salesPoint: number;
|
|
52
|
+
voucherType: number;
|
|
23
53
|
concept: number;
|
|
24
54
|
documentType: number;
|
|
25
55
|
documentNumber: number;
|
|
26
56
|
receiverVatConditionId: number;
|
|
27
57
|
voucherDate: WsfeDateInput;
|
|
58
|
+
totalAmount: number;
|
|
59
|
+
nonTaxableAmount: number;
|
|
60
|
+
netAmount: number;
|
|
61
|
+
exemptAmount: number;
|
|
62
|
+
taxAmount: number;
|
|
63
|
+
vatAmount: number;
|
|
64
|
+
currencyId: string;
|
|
65
|
+
exchangeRate?: number | string;
|
|
66
|
+
sameCurrencyForeignCancellation?: "S" | "N";
|
|
28
67
|
serviceStartDate?: WsfeDateInput;
|
|
29
68
|
serviceEndDate?: WsfeDateInput;
|
|
30
69
|
paymentDueDate?: WsfeDateInput;
|
|
70
|
+
associatedVouchers?: WsfeAssociatedVoucher[];
|
|
71
|
+
associatedPeriod?: WsfeAssociatedPeriod;
|
|
72
|
+
taxes?: WsfeTax[];
|
|
73
|
+
vatRates?: WsfeVatRate[];
|
|
74
|
+
optionalFields?: WsfeOptionalField[];
|
|
75
|
+
buyers?: WsfeBuyer[];
|
|
76
|
+
activities?: WsfeActivity[];
|
|
31
77
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
78
|
+
/** Input for authorizing a WSFE voucher with an explicit voucher number. */
|
|
79
|
+
type WsfeAuthorizeVoucherInput = {
|
|
80
|
+
representedTaxId?: number | string;
|
|
81
|
+
data: WsfeVoucherInput;
|
|
82
|
+
voucherNumber: number;
|
|
83
|
+
forceRefresh?: boolean;
|
|
84
|
+
/** Aborts login, submission and consultation with the caller's deadline. */
|
|
85
|
+
abortSignal?: AbortSignal;
|
|
36
86
|
};
|
|
37
|
-
|
|
38
|
-
|
|
87
|
+
/** Structured evidence from one exact WSFE authorization attempt. */
|
|
88
|
+
type WsfeAuthorizationOutcome = ArcaAuthorizationOutcome<"wsfe">;
|
|
89
|
+
/** A point-of-sale entry returned by {@link WsfeService.getSalesPoints}. */
|
|
90
|
+
type WsfeSalesPoint = {
|
|
91
|
+
number: number;
|
|
92
|
+
emissionType?: string;
|
|
93
|
+
blocked?: string;
|
|
94
|
+
deletedSince?: string;
|
|
95
|
+
};
|
|
96
|
+
/** Voucher details returned by {@link WsfeService.getVoucherInfo}. */
|
|
97
|
+
type WsfeVoucherInfo = {
|
|
98
|
+
voucherNumber: number;
|
|
99
|
+
voucherDate?: string;
|
|
100
|
+
salesPoint?: number;
|
|
101
|
+
voucherType?: number;
|
|
102
|
+
concept?: number;
|
|
103
|
+
documentType?: number;
|
|
104
|
+
documentNumber?: string;
|
|
105
|
+
receiverVatConditionId?: number;
|
|
106
|
+
totalAmount?: number;
|
|
107
|
+
nonTaxableAmount?: number;
|
|
108
|
+
netAmount?: number;
|
|
109
|
+
exemptAmount?: number;
|
|
110
|
+
taxAmount?: number;
|
|
111
|
+
vatAmount?: number;
|
|
112
|
+
currencyId?: string;
|
|
113
|
+
exchangeRate?: number;
|
|
114
|
+
result?: string;
|
|
115
|
+
cae?: string;
|
|
116
|
+
caeExpiry?: string;
|
|
117
|
+
vatRates?: WsfeVatRate[];
|
|
118
|
+
serviceStartDate?: string;
|
|
119
|
+
serviceEndDate?: string;
|
|
120
|
+
paymentDueDate?: string;
|
|
121
|
+
taxes?: WsfeTax[];
|
|
122
|
+
associatedVouchers?: WsfeAssociatedVoucher[];
|
|
123
|
+
associatedPeriod?: WsfeAssociatedPeriod;
|
|
124
|
+
optionalFields?: WsfeOptionalField[];
|
|
125
|
+
buyers?: WsfeBuyer[];
|
|
126
|
+
activities?: WsfeActivity[];
|
|
127
|
+
sameCurrencyForeignCancellation?: "S" | "N";
|
|
128
|
+
raw: Record<string, unknown>;
|
|
129
|
+
};
|
|
130
|
+
/** Typed exact-voucher consultation result for WSFE. */
|
|
131
|
+
type WsfeVoucherLookupResult = ArcaVoucherLookupResult<WsfeVoucherInfo, "wsfe">;
|
|
132
|
+
type WsfeCatalogEntry = {
|
|
133
|
+
id: number;
|
|
134
|
+
description: string;
|
|
135
|
+
};
|
|
136
|
+
type WsfeActivityType = WsfeCatalogEntry & {
|
|
137
|
+
order: number;
|
|
138
|
+
};
|
|
139
|
+
type WsfeReceiverVatCondition = WsfeCatalogEntry & {
|
|
140
|
+
voucherClass: string;
|
|
141
|
+
};
|
|
142
|
+
type WsfeCurrencyType = {
|
|
143
|
+
id: string;
|
|
144
|
+
description: string;
|
|
145
|
+
validFrom: string;
|
|
146
|
+
validTo: string;
|
|
147
|
+
};
|
|
148
|
+
type WsfeServerStatus = {
|
|
149
|
+
appServer: string;
|
|
150
|
+
dbServer: string;
|
|
151
|
+
authServer: string;
|
|
152
|
+
};
|
|
153
|
+
type WsfeQuotation = {
|
|
154
|
+
currencyId: string;
|
|
155
|
+
rate: number;
|
|
156
|
+
date: string;
|
|
157
|
+
};
|
|
158
|
+
/** WSFE electronic invoicing service. */
|
|
159
|
+
type WsfeService = {
|
|
160
|
+
/**
|
|
161
|
+
* Issues one exact voucher: a single FECAESolicitar for the caller-owned
|
|
162
|
+
* `voucherNumber`, without transport retries, returning structured evidence
|
|
163
|
+
* (`authorized`, `rejected` or `indeterminate`) instead of throwing.
|
|
164
|
+
*/
|
|
165
|
+
issue(input: WsfeAuthorizeVoucherInput): Promise<WsfeAuthorizationOutcome>;
|
|
166
|
+
/** Returns the next available voucher number for the given sales point and type. */
|
|
167
|
+
getNextVoucherNumber(input: {
|
|
168
|
+
representedTaxId?: number | string;
|
|
169
|
+
salesPoint: number;
|
|
170
|
+
voucherType: number;
|
|
171
|
+
forceRefresh?: boolean;
|
|
172
|
+
abortSignal?: AbortSignal;
|
|
173
|
+
}): Promise<number>;
|
|
174
|
+
/**
|
|
175
|
+
* @deprecated Use `getNextVoucherNumber()` instead.
|
|
176
|
+
* Returns the next available voucher number, not the last authorized one.
|
|
177
|
+
*/
|
|
178
|
+
getLastVoucher(input: {
|
|
179
|
+
representedTaxId?: number | string;
|
|
180
|
+
salesPoint: number;
|
|
181
|
+
voucherType: number;
|
|
182
|
+
forceRefresh?: boolean;
|
|
183
|
+
}): Promise<number>;
|
|
184
|
+
/** Lists all configured points of sale for the taxpayer. */
|
|
185
|
+
getSalesPoints(input: {
|
|
186
|
+
representedTaxId?: number | string;
|
|
187
|
+
forceRefresh?: boolean;
|
|
188
|
+
}): Promise<WsfeSalesPoint[]>;
|
|
189
|
+
/** Lists voucher types accepted by WSFE. */
|
|
190
|
+
getVoucherTypes(input: {
|
|
191
|
+
representedTaxId?: number | string;
|
|
192
|
+
forceRefresh?: boolean;
|
|
193
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
194
|
+
/** Lists document types accepted by WSFE. */
|
|
195
|
+
getDocumentTypes(input: {
|
|
196
|
+
representedTaxId?: number | string;
|
|
197
|
+
forceRefresh?: boolean;
|
|
198
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
199
|
+
/** Lists concept types accepted by WSFE. */
|
|
200
|
+
getConceptTypes(input: {
|
|
201
|
+
representedTaxId?: number | string;
|
|
202
|
+
forceRefresh?: boolean;
|
|
203
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
204
|
+
/** Lists live ARCA currency identifiers such as PES and DOL, not ISO codes. */
|
|
205
|
+
getCurrencyTypes(input: {
|
|
206
|
+
representedTaxId?: number | string;
|
|
207
|
+
forceRefresh?: boolean;
|
|
208
|
+
}): Promise<WsfeCurrencyType[]>;
|
|
209
|
+
/** Lists VAT rates accepted by WSFE. */
|
|
210
|
+
getVatRates(input: {
|
|
211
|
+
representedTaxId?: number | string;
|
|
212
|
+
forceRefresh?: boolean;
|
|
213
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
214
|
+
/** Lists tax types accepted by WSFE. */
|
|
215
|
+
getTaxTypes(input: {
|
|
216
|
+
representedTaxId?: number | string;
|
|
217
|
+
forceRefresh?: boolean;
|
|
218
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
219
|
+
/** Lists optional field types accepted by WSFE. */
|
|
220
|
+
getOptionalTypes(input: {
|
|
221
|
+
representedTaxId?: number | string;
|
|
222
|
+
forceRefresh?: boolean;
|
|
223
|
+
}): Promise<WsfeCatalogEntry[]>;
|
|
224
|
+
/** Lists activities enabled for the taxpayer. */
|
|
225
|
+
getActivities(input: {
|
|
226
|
+
representedTaxId?: number | string;
|
|
227
|
+
forceRefresh?: boolean;
|
|
228
|
+
}): Promise<WsfeActivityType[]>;
|
|
229
|
+
/** Lists receiver VAT condition values accepted by WSFE. */
|
|
230
|
+
getReceiverVatConditions(input: {
|
|
231
|
+
representedTaxId?: number | string;
|
|
232
|
+
voucherClass?: string;
|
|
233
|
+
forceRefresh?: boolean;
|
|
234
|
+
}): Promise<WsfeReceiverVatCondition[]>;
|
|
235
|
+
/** Reports WSFE backend status without requiring taxpayer authorization. */
|
|
236
|
+
getServerStatus(): Promise<WsfeServerStatus>;
|
|
237
|
+
/** Returns the exchange rate for a given currency. */
|
|
238
|
+
getQuotation(input: {
|
|
239
|
+
currencyId: string;
|
|
240
|
+
representedTaxId?: number | string;
|
|
241
|
+
forceRefresh?: boolean;
|
|
242
|
+
}): Promise<WsfeQuotation>;
|
|
243
|
+
/** Retrieves details for a specific voucher. Returns `null` if not found. */
|
|
244
|
+
getVoucherInfo(input: {
|
|
245
|
+
representedTaxId?: number | string;
|
|
246
|
+
number: number;
|
|
247
|
+
salesPoint: number;
|
|
248
|
+
voucherType: number;
|
|
249
|
+
forceRefresh?: boolean;
|
|
250
|
+
}): Promise<WsfeVoucherInfo | null>;
|
|
251
|
+
/** Consults one exact voucher and normalizes WSFE error 602 to `not_found`. */
|
|
252
|
+
lookupVoucher(input: {
|
|
253
|
+
representedTaxId?: number | string;
|
|
254
|
+
number: number;
|
|
255
|
+
salesPoint: number;
|
|
256
|
+
voucherType: number;
|
|
257
|
+
forceRefresh?: boolean;
|
|
258
|
+
abortSignal?: AbortSignal;
|
|
259
|
+
}): Promise<WsfeVoucherLookupResult>;
|
|
260
|
+
};
|
|
261
|
+
type CreateWsfeServiceOptions = {
|
|
262
|
+
config: ArcaClientConfig;
|
|
263
|
+
auth: WsaaAuthModule;
|
|
264
|
+
soap: SoapTransport;
|
|
39
265
|
};
|
|
40
|
-
/**
|
|
41
|
-
declare function
|
|
42
|
-
/** Builds a narrow Factura C exact WSFE input from integer currency minor units. */
|
|
43
|
-
declare function buildFacturaC(input: BuildFacturaCInput): WsfeVoucherInput;
|
|
266
|
+
/** Creates a WSFE service instance wired with authentication and SOAP transport. */
|
|
267
|
+
declare function createWsfeService(options: CreateWsfeServiceOptions): WsfeService;
|
|
44
268
|
|
|
45
|
-
export { type
|
|
269
|
+
export { type CreateWsfeServiceOptions, type WsfeActivity, type WsfeActivityType, type WsfeAssociatedPeriod, type WsfeAssociatedVoucher, type WsfeAuthorizationOutcome, type WsfeAuthorizeVoucherInput, type WsfeBuyer, type WsfeCatalogEntry, type WsfeCurrencyType, type WsfeDateInput, type WsfeOptionalField, type WsfeQuotation, type WsfeReceiverVatCondition, type WsfeSalesPoint, type WsfeServerStatus, type WsfeService, type WsfeTax, type WsfeVatRate, type WsfeVoucherInfo, type WsfeVoucherInput, type WsfeVoucherLookupResult, createWsfeService };
|
package/dist/wsfe.mjs
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildFacturaB,
|
|
3
|
-
buildFacturaC
|
|
4
|
-
} from "./chunk-VGNLXU4T.mjs";
|
|
5
1
|
import {
|
|
6
2
|
createWsfeService
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-ZOSNASXB.mjs";
|
|
3
|
+
} from "./chunk-BPBTQDCO.mjs";
|
|
4
|
+
import "./chunk-PHXH34L6.mjs";
|
|
5
|
+
import "./chunk-BYEP3ABS.mjs";
|
|
11
6
|
export {
|
|
12
|
-
buildFacturaB,
|
|
13
|
-
buildFacturaC,
|
|
14
7
|
createWsfeService
|
|
15
8
|
};
|
|
16
9
|
//# sourceMappingURL=wsfe.mjs.map
|
package/dist/wsmtxca.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as ArcaRepresentedTaxId, a as ArcaClientConfig } from './types-
|
|
2
|
-
import { W as WsaaAuthModule, S as SoapTransport } from './index-
|
|
3
|
-
import {
|
|
1
|
+
import { n as ArcaRepresentedTaxId, a as ArcaClientConfig } from './types-Su7QwloQ.js';
|
|
2
|
+
import { W as WsaaAuthModule, S as SoapTransport } from './index-DAC3edtw.js';
|
|
3
|
+
import { e as ArcaAuthorizationOutcome, t as ArcaVoucherLookupResult } from './fiscal-evidence-DaCyGd5o.js';
|
|
4
4
|
|
|
5
5
|
/** Input data for one WSMTXCA voucher authorization. */
|
|
6
6
|
type WsmtxcaAuthorizeVoucherInput = {
|
|
@@ -8,7 +8,7 @@ type WsmtxcaAuthorizeVoucherInput = {
|
|
|
8
8
|
data: Record<string, unknown>;
|
|
9
9
|
forceRefresh?: boolean;
|
|
10
10
|
/** Aborts login, submission and consultation with the caller's deadline. */
|
|
11
|
-
|
|
11
|
+
abortSignal?: AbortSignal;
|
|
12
12
|
};
|
|
13
13
|
/** Structured evidence from one exact WSMTXCA authorization attempt. */
|
|
14
14
|
type WsmtxcaAuthorizationOutcome = ArcaAuthorizationOutcome<"wsmtxca">;
|
|
@@ -73,7 +73,7 @@ type WsmtxcaService = {
|
|
|
73
73
|
voucherType: number;
|
|
74
74
|
salesPoint: number;
|
|
75
75
|
forceRefresh?: boolean;
|
|
76
|
-
|
|
76
|
+
abortSignal?: AbortSignal;
|
|
77
77
|
}): Promise<WsmtxcaLastAuthorizedVoucherResult>;
|
|
78
78
|
/** Returns the points of sale enabled for WSMTXCA. */
|
|
79
79
|
getSalesPoints(input: {
|
|
@@ -87,7 +87,7 @@ type WsmtxcaService = {
|
|
|
87
87
|
salesPoint: number;
|
|
88
88
|
voucherNumber: number;
|
|
89
89
|
forceRefresh?: boolean;
|
|
90
|
-
|
|
90
|
+
abortSignal?: AbortSignal;
|
|
91
91
|
}): Promise<WsmtxcaVoucherLookupOutcome>;
|
|
92
92
|
/** Retrieves details for a specific voucher. */
|
|
93
93
|
getVoucher(input: {
|
package/dist/wsmtxca.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createWsmtxcaService
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-WN62NMUJ.mjs";
|
|
4
|
+
import "./chunk-PHXH34L6.mjs";
|
|
5
|
+
import "./chunk-BYEP3ABS.mjs";
|
|
6
6
|
export {
|
|
7
7
|
createWsmtxcaService
|
|
8
8
|
};
|