@innvoid/getmarket-sdk 0.2.5 → 0.2.7
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/{chunk-5S2JP7PR.js → chunk-4KD6646F.js} +12 -1
- package/dist/chunk-4KD6646F.js.map +1 -0
- package/dist/{chunk-HA2XKSTP.js → chunk-PBN2JCRX.js} +232 -28
- package/dist/chunk-PBN2JCRX.js.map +1 -0
- package/dist/clients/index.cjs +230 -25
- package/dist/clients/index.cjs.map +1 -1
- package/dist/clients/index.d.cts +45 -16
- package/dist/clients/index.d.ts +45 -16
- package/dist/clients/index.js +4 -2
- package/dist/core/index.cjs +14 -2
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +6 -2
- package/dist/core/index.d.ts +6 -2
- package/dist/core/index.js +5 -3
- package/dist/index.cjs +244 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-5S2JP7PR.js.map +0 -1
- package/dist/chunk-HA2XKSTP.js.map +0 -1
|
@@ -39,6 +39,16 @@ function createHttpClient(opts) {
|
|
|
39
39
|
headers: opts.headers ?? {}
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
+
function withRequestIdConfig(config = {}, requestId) {
|
|
43
|
+
if (!requestId) return config;
|
|
44
|
+
return {
|
|
45
|
+
...config,
|
|
46
|
+
headers: {
|
|
47
|
+
...config.headers ?? {},
|
|
48
|
+
"x-request-id": requestId
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
42
52
|
|
|
43
53
|
// src/core/internalHttp.ts
|
|
44
54
|
var DEFAULT_RETRY = {
|
|
@@ -148,6 +158,7 @@ export {
|
|
|
148
158
|
UpstreamError,
|
|
149
159
|
mapAxiosToUpstreamError,
|
|
150
160
|
createHttpClient,
|
|
161
|
+
withRequestIdConfig,
|
|
151
162
|
InternalHttp
|
|
152
163
|
};
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
164
|
+
//# sourceMappingURL=chunk-4KD6646F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/errors.ts","../src/core/http.ts","../src/core/internalHttp.ts"],"sourcesContent":["export type ClientErrorCode =\n | \"UPSTREAM_TIMEOUT\"\n | \"UPSTREAM_UNAVAILABLE\"\n | \"UPSTREAM_BAD_RESPONSE\"\n | \"UPSTREAM_NOT_FOUND\"\n | \"UPSTREAM_UNAUTHORIZED\"\n | \"UPSTREAM_FORBIDDEN\"\n | \"UPSTREAM_UNKNOWN\";\n\nexport class UpstreamError extends Error {\n public code: ClientErrorCode;\n public status?: number;\n public details?: any;\n\n constructor(message: string, code: ClientErrorCode, status?: number, details?: any) {\n super(message);\n this.name = \"UpstreamError\";\n this.code = code;\n this.status = status;\n this.details = details;\n }\n}\n\nexport function mapAxiosToUpstreamError(err: any, svc: string): UpstreamError {\n const status = err?.response?.status;\n const data = err?.response?.data;\n const isTimeout = err?.code === \"ECONNABORTED\" || String(err?.message || \"\").includes(\"timeout\");\n\n if (isTimeout) {\n return new UpstreamError(`[${svc}] timeout`, \"UPSTREAM_TIMEOUT\", 504, {cause: err?.message});\n }\n if (!err?.response) {\n return new UpstreamError(`[${svc}] unavailable`, \"UPSTREAM_UNAVAILABLE\", 503, {cause: err?.message});\n }\n if (status === 404) return new UpstreamError(`[${svc}] not found`, \"UPSTREAM_NOT_FOUND\", 404, data);\n if (status === 401) return new UpstreamError(`[${svc}] unauthorized`, \"UPSTREAM_UNAUTHORIZED\", 401, data);\n if (status === 403) return new UpstreamError(`[${svc}] forbidden`, \"UPSTREAM_FORBIDDEN\", 403, data);\n if (status >= 400 && status < 600) {\n return new UpstreamError(`[${svc}] bad response`, \"UPSTREAM_BAD_RESPONSE\", status, data);\n }\n return new UpstreamError(`[${svc}] unknown error`, \"UPSTREAM_UNKNOWN\", status, data);\n}\n","import axios, {AxiosInstance, AxiosRequestConfig} from \"axios\";\n\nexport type HttpClient = AxiosInstance;\n\nexport type HttpClientOpts = {\n baseURL: string;\n timeoutMs?: number;\n headers?: Record<string, string>;\n};\n\nexport function createHttpClient(opts: HttpClientOpts): HttpClient {\n return axios.create({\n baseURL: opts.baseURL.replace(/\\/+$/, \"\"),\n timeout: opts.timeoutMs ?? 8000,\n headers: opts.headers ?? {},\n } satisfies AxiosRequestConfig);\n}\n\n/**\n * Injects x-request-id into an Axios config while preserving existing headers.\n */\nexport function withRequestIdConfig<T extends AxiosRequestConfig = AxiosRequestConfig>(\n config: T = {} as T,\n requestId?: string\n): T {\n if (!requestId) return config;\n\n return {\n ...config,\n headers: {\n ...(config.headers ?? {}),\n \"x-request-id\": requestId,\n },\n } as T;\n}\n","// clients/internalHttp.ts\n\ntype RetryPolicy = {\n retries: number;\n baseDelayMs: number;\n retryOnStatuses: number[];\n retryOnNetworkErrors: boolean;\n};\n\ntype InternalHttpOptions = {\n baseUrl: string;\n apiKey?: string; // x-internal-api-key\n timeoutMs?: number;\n retry?: Partial<RetryPolicy>;\n};\n\nconst DEFAULT_RETRY: RetryPolicy = {\n retries: 1,\n baseDelayMs: 150,\n retryOnStatuses: [429, 502, 503, 504],\n retryOnNetworkErrors: true,\n};\n\nfunction sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction safeJsonStringify(v: any) {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\nfunction toHeaders(init?: HeadersInit): Headers {\n return new Headers(init || {});\n}\n\nfunction isJsonContentType(contentType: string | null): boolean {\n if (!contentType) return false;\n const ct = contentType.toLowerCase();\n return ct.includes(\"application/json\") || ct.includes(\"+json\");\n}\n\nfunction isAbortError(e: any): boolean {\n return e?.name === \"AbortError\";\n}\n\nfunction withJitter(ms: number): number {\n // jitter +-20%\n const jitter = ms * 0.2;\n const delta = (Math.random() * 2 - 1) * jitter;\n return Math.max(0, Math.floor(ms + delta));\n}\n\nexport class InternalHttp {\n private readonly baseUrl: string;\n private readonly apiKey: string | undefined;\n private readonly timeoutMs: number;\n private retry: RetryPolicy;\n\n constructor(opts: InternalHttpOptions) {\n this.baseUrl = opts.baseUrl.replace(/\\/+$/, \"\");\n this.apiKey = opts.apiKey;\n\n // ✅ Default más seguro para internas (evita cascadas)\n this.timeoutMs = opts.timeoutMs ?? 4000;\n\n this.retry = {...DEFAULT_RETRY, ...(opts.retry || {})};\n }\n\n async request<T>(\n path: string,\n init: RequestInit & {\n requestId?: string;\n idempotencyKey?: string;\n headers?: HeadersInit;\n } = {}\n ): Promise<T> {\n const url = `${this.baseUrl}${path.startsWith(\"/\") ? \"\" : \"/\"}${path}`;\n\n const baseHeaders = toHeaders(init.headers);\n\n if (!baseHeaders.has(\"Content-Type\")) baseHeaders.set(\"Content-Type\", \"application/json\");\n if (this.apiKey) baseHeaders.set(\"x-internal-api-key\", this.apiKey);\n\n if (init.requestId) baseHeaders.set(\"x-request-id\", init.requestId);\n if (init.idempotencyKey) baseHeaders.set(\"Idempotency-Key\", init.idempotencyKey);\n\n const {headers: _ignored, ...restInit} = init;\n\n const doFetchOnce = async () => {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n\n try {\n const res = await fetch(url, {\n ...restInit,\n headers: baseHeaders,\n signal: controller.signal,\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n const err: any = new Error(\n `HTTP ${res.status} ${res.statusText}${text ? ` - ${text}` : \"\"}`\n );\n err.status = res.status;\n err.body = text;\n throw err;\n }\n\n if (res.status === 204) return undefined as unknown as T;\n\n const contentType = res.headers.get(\"content-type\");\n if (isJsonContentType(contentType)) {\n return (await res.json()) as T;\n }\n\n const text = await res.text().catch(() => \"\");\n return text as unknown as T;\n } finally {\n clearTimeout(timeout);\n }\n };\n\n let attempt = 0;\n\n while (true) {\n try {\n return await doFetchOnce();\n } catch (e: any) {\n attempt++;\n\n const status = e?.status;\n const retryableStatus = !!status && this.retry.retryOnStatuses.includes(status);\n\n const retryableNetwork =\n this.retry.retryOnNetworkErrors &&\n (isAbortError(e) || !status); // sin status suele ser red/dns/timeout\n\n const isRetryable = retryableStatus || retryableNetwork;\n\n if (!isRetryable || attempt > this.retry.retries) {\n console.error(\n `[InternalHttp] request failed: ${url} attempt=${attempt} status=${status ?? \"n/a\"} err=${e?.message\n } body=${safeJsonStringify(e?.body)}`\n );\n throw e;\n }\n\n const backoff = withJitter(this.retry.baseDelayMs * attempt);\n await sleep(backoff);\n }\n }\n }\n}\n"],"mappings":"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","names":["text"]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-QVPPDOXY.js";
|
|
5
5
|
import {
|
|
6
6
|
createHttpClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4KD6646F.js";
|
|
8
8
|
import {
|
|
9
9
|
HEADER_BRANCH_UID,
|
|
10
10
|
HEADER_COMPANY_UID,
|
|
@@ -311,8 +311,43 @@ function createResClient() {
|
|
|
311
311
|
apiPrefix: env.apiPrefix,
|
|
312
312
|
path: "/refs/varieties"
|
|
313
313
|
});
|
|
314
|
+
const resources = createBulkRefsClient({
|
|
315
|
+
namespace: "res:resource",
|
|
316
|
+
baseURL: env.baseURL,
|
|
317
|
+
apiPrefix: env.apiPrefix,
|
|
318
|
+
path: "/refs/resources"
|
|
319
|
+
});
|
|
320
|
+
const categories = createBulkRefsClient({
|
|
321
|
+
namespace: "res:category",
|
|
322
|
+
baseURL: env.baseURL,
|
|
323
|
+
apiPrefix: env.apiPrefix,
|
|
324
|
+
path: "/refs/categories"
|
|
325
|
+
});
|
|
326
|
+
const attributes = createBulkRefsClient({
|
|
327
|
+
namespace: "res:attribute",
|
|
328
|
+
baseURL: env.baseURL,
|
|
329
|
+
apiPrefix: env.apiPrefix,
|
|
330
|
+
path: "/refs/attributes"
|
|
331
|
+
});
|
|
332
|
+
const attributeOptions = createBulkRefsClient({
|
|
333
|
+
namespace: "res:attribute_option",
|
|
334
|
+
baseURL: env.baseURL,
|
|
335
|
+
apiPrefix: env.apiPrefix,
|
|
336
|
+
path: "/refs/attribute-options"
|
|
337
|
+
});
|
|
338
|
+
const attributeValues = createBulkRefsClient({
|
|
339
|
+
namespace: "res:attribute_value",
|
|
340
|
+
baseURL: env.baseURL,
|
|
341
|
+
apiPrefix: env.apiPrefix,
|
|
342
|
+
path: "/refs/attribute-values"
|
|
343
|
+
});
|
|
314
344
|
return {
|
|
315
|
-
varietiesRefs: (uids, opts) => varieties.bulkRefs(uids, opts)
|
|
345
|
+
varietiesRefs: (uids, opts) => varieties.bulkRefs(uids, opts),
|
|
346
|
+
resourcesRefs: (uids, opts) => resources.bulkRefs(uids, opts),
|
|
347
|
+
categoriesRefs: (uids, opts) => categories.bulkRefs(uids, opts),
|
|
348
|
+
attributesRefs: (uids, opts) => attributes.bulkRefs(uids, opts),
|
|
349
|
+
attributeOptionsRefs: (uids, opts) => attributeOptions.bulkRefs(uids, opts),
|
|
350
|
+
attributeValuesRefs: (uids, opts) => attributeValues.bulkRefs(uids, opts)
|
|
316
351
|
};
|
|
317
352
|
}
|
|
318
353
|
|
|
@@ -337,10 +372,31 @@ function createMdClient() {
|
|
|
337
372
|
apiPrefix: env.apiPrefix,
|
|
338
373
|
path: "/refs/countries"
|
|
339
374
|
});
|
|
375
|
+
const currencies = createBulkRefsClient({
|
|
376
|
+
namespace: "md:currency",
|
|
377
|
+
baseURL: env.baseURL,
|
|
378
|
+
apiPrefix: env.apiPrefix,
|
|
379
|
+
path: "/refs/currencies"
|
|
380
|
+
});
|
|
381
|
+
const regions = createBulkRefsClient({
|
|
382
|
+
namespace: "md:region",
|
|
383
|
+
baseURL: env.baseURL,
|
|
384
|
+
apiPrefix: env.apiPrefix,
|
|
385
|
+
path: "/refs/regions"
|
|
386
|
+
});
|
|
387
|
+
const communes = createBulkRefsClient({
|
|
388
|
+
namespace: "md:commune",
|
|
389
|
+
baseURL: env.baseURL,
|
|
390
|
+
apiPrefix: env.apiPrefix,
|
|
391
|
+
path: "/refs/communes"
|
|
392
|
+
});
|
|
340
393
|
return {
|
|
341
394
|
measuresRefs: (uids, opts) => measures.bulkRefs(uids, opts),
|
|
342
395
|
measureTypesRefs: (uids, opts) => measureTypes.bulkRefs(uids, opts),
|
|
343
|
-
countriesRefs: (uids, opts) => countries.bulkRefs(uids, opts)
|
|
396
|
+
countriesRefs: (uids, opts) => countries.bulkRefs(uids, opts),
|
|
397
|
+
currenciesRefs: (uids, opts) => currencies.bulkRefs(uids, opts),
|
|
398
|
+
regionsRefs: (uids, opts) => regions.bulkRefs(uids, opts),
|
|
399
|
+
communesRefs: (uids, opts) => communes.bulkRefs(uids, opts)
|
|
344
400
|
};
|
|
345
401
|
}
|
|
346
402
|
|
|
@@ -351,11 +407,11 @@ function createFisClient() {
|
|
|
351
407
|
baseURL: `${env.baseURL}${env.apiPrefix}`,
|
|
352
408
|
timeoutMs: 8e3
|
|
353
409
|
});
|
|
354
|
-
const
|
|
355
|
-
namespace: "fis:
|
|
410
|
+
const profiles = createBulkRefsClient({
|
|
411
|
+
namespace: "fis:profile",
|
|
356
412
|
baseURL: env.baseURL,
|
|
357
413
|
apiPrefix: env.apiPrefix,
|
|
358
|
-
path: "/refs/
|
|
414
|
+
path: "/refs/profiles"
|
|
359
415
|
});
|
|
360
416
|
const documents = createBulkRefsClient({
|
|
361
417
|
namespace: "fis:document",
|
|
@@ -363,77 +419,113 @@ function createFisClient() {
|
|
|
363
419
|
apiPrefix: env.apiPrefix,
|
|
364
420
|
path: "/refs/documents"
|
|
365
421
|
});
|
|
422
|
+
const snapshots = createBulkRefsClient({
|
|
423
|
+
namespace: "fis:snapshot",
|
|
424
|
+
baseURL: env.baseURL,
|
|
425
|
+
apiPrefix: env.apiPrefix,
|
|
426
|
+
path: "/refs/snapshots"
|
|
427
|
+
});
|
|
366
428
|
const submissions = createBulkRefsClient({
|
|
367
429
|
namespace: "fis:submission",
|
|
368
430
|
baseURL: env.baseURL,
|
|
369
431
|
apiPrefix: env.apiPrefix,
|
|
370
432
|
path: "/refs/submissions"
|
|
371
433
|
});
|
|
434
|
+
const folioPools = createBulkRefsClient({
|
|
435
|
+
namespace: "fis:folio_pool",
|
|
436
|
+
baseURL: env.baseURL,
|
|
437
|
+
apiPrefix: env.apiPrefix,
|
|
438
|
+
path: "/refs/folio-pools"
|
|
439
|
+
});
|
|
440
|
+
const taxRules = createBulkRefsClient({
|
|
441
|
+
namespace: "fis:tax_rule",
|
|
442
|
+
baseURL: env.baseURL,
|
|
443
|
+
apiPrefix: env.apiPrefix,
|
|
444
|
+
path: "/refs/tax-rules"
|
|
445
|
+
});
|
|
372
446
|
return {
|
|
373
447
|
// -----------------------------------------------------------------------
|
|
374
448
|
// Bulk refs
|
|
375
449
|
// -----------------------------------------------------------------------
|
|
376
|
-
|
|
450
|
+
profilesRefs: (uids, opts) => profiles.bulkRefs(uids, opts),
|
|
377
451
|
documentsRefs: (uids, opts) => documents.bulkRefs(uids, opts),
|
|
452
|
+
snapshotsRefs: (uids, opts) => snapshots.bulkRefs(uids, opts),
|
|
378
453
|
submissionsRefs: (uids, opts) => submissions.bulkRefs(uids, opts),
|
|
454
|
+
folioPoolsRefs: (uids, opts) => folioPools.bulkRefs(uids, opts),
|
|
455
|
+
taxRulesRefs: (uids, opts) => taxRules.bulkRefs(uids, opts),
|
|
379
456
|
// -----------------------------------------------------------------------
|
|
380
457
|
// Fiscal calculation / build / lifecycle
|
|
381
458
|
// -----------------------------------------------------------------------
|
|
382
|
-
|
|
459
|
+
async calculate(body) {
|
|
383
460
|
const { data } = await http.post("/calculate", body);
|
|
384
461
|
return data;
|
|
385
462
|
},
|
|
386
|
-
|
|
387
|
-
const { data } = await http.post("/
|
|
463
|
+
async calculateTaxes(body) {
|
|
464
|
+
const { data } = await http.post("/tax/calculate", body);
|
|
388
465
|
return data;
|
|
389
466
|
},
|
|
390
|
-
|
|
391
|
-
const { data } = await http.post("/documents
|
|
467
|
+
async buildDocument(body) {
|
|
468
|
+
const { data } = await http.post("/documents", body);
|
|
469
|
+
return data;
|
|
470
|
+
},
|
|
471
|
+
async signDocument(body) {
|
|
472
|
+
const { data } = await http.post(
|
|
473
|
+
`/documents/${body.document_uid}/sign`,
|
|
474
|
+
body
|
|
475
|
+
);
|
|
392
476
|
return data;
|
|
393
477
|
},
|
|
394
|
-
|
|
395
|
-
const { data } = await http.post(
|
|
478
|
+
async submitDocument(body) {
|
|
479
|
+
const { data } = await http.post(
|
|
480
|
+
`/documents/${body.document_uid}/submit`,
|
|
481
|
+
body
|
|
482
|
+
);
|
|
396
483
|
return data;
|
|
397
484
|
},
|
|
398
|
-
|
|
399
|
-
const { data } = await http.post(
|
|
485
|
+
async cancelDocument(body) {
|
|
486
|
+
const { data } = await http.post(
|
|
487
|
+
`/documents/${body.document_uid}/cancel`,
|
|
488
|
+
body
|
|
489
|
+
);
|
|
400
490
|
return data;
|
|
401
491
|
},
|
|
402
492
|
// -----------------------------------------------------------------------
|
|
403
493
|
// Folios / series
|
|
404
494
|
// -----------------------------------------------------------------------
|
|
405
|
-
|
|
495
|
+
async reserveFolio(body) {
|
|
406
496
|
const { data } = await http.post("/folios/reserve", body);
|
|
407
497
|
return data;
|
|
408
498
|
},
|
|
409
|
-
|
|
499
|
+
async consumeFolio(body) {
|
|
410
500
|
const { data } = await http.post("/folios/consume", body);
|
|
411
501
|
return data;
|
|
412
502
|
},
|
|
413
503
|
// -----------------------------------------------------------------------
|
|
414
504
|
// Queries / detail
|
|
415
505
|
// -----------------------------------------------------------------------
|
|
416
|
-
|
|
417
|
-
const { data } = await http.
|
|
506
|
+
async queryDocuments(body) {
|
|
507
|
+
const { data } = await http.post("/documents/query", body);
|
|
418
508
|
return data;
|
|
419
509
|
},
|
|
420
|
-
|
|
510
|
+
async getDocumentByUid(uid) {
|
|
421
511
|
const { data } = await http.get(`/documents/${uid}`);
|
|
422
512
|
return data;
|
|
423
513
|
},
|
|
424
|
-
|
|
514
|
+
async getSnapshotByUid(uid) {
|
|
425
515
|
const { data } = await http.get(`/snapshots/${uid}`);
|
|
426
516
|
return data;
|
|
427
517
|
},
|
|
428
|
-
|
|
518
|
+
async getSubmissionByUid(uid) {
|
|
429
519
|
const { data } = await http.get(`/submissions/${uid}`);
|
|
430
520
|
return data;
|
|
431
521
|
},
|
|
432
|
-
|
|
433
|
-
const { data } = await http.get(
|
|
522
|
+
async getStatusEventsByDocumentUid(documentUid) {
|
|
523
|
+
const { data } = await http.get(
|
|
524
|
+
`/documents/${documentUid}/status-events`
|
|
525
|
+
);
|
|
434
526
|
return data;
|
|
435
527
|
},
|
|
436
|
-
|
|
528
|
+
async retrySubmission(body) {
|
|
437
529
|
const { data } = await http.post("/submissions/retry", body);
|
|
438
530
|
return data;
|
|
439
531
|
}
|
|
@@ -482,6 +574,117 @@ function createMkpClient() {
|
|
|
482
574
|
};
|
|
483
575
|
}
|
|
484
576
|
|
|
577
|
+
// src/clients/payClient.ts
|
|
578
|
+
function createPayClient() {
|
|
579
|
+
const env = readServiceEnv("PAY", { apiPrefix: "/internal/v1" });
|
|
580
|
+
const http = createHttpClient({
|
|
581
|
+
baseURL: `${env.baseURL}${env.apiPrefix}`,
|
|
582
|
+
timeoutMs: 8e3
|
|
583
|
+
});
|
|
584
|
+
const intents = createBulkRefsClient({
|
|
585
|
+
namespace: "pay:intent",
|
|
586
|
+
baseURL: env.baseURL,
|
|
587
|
+
apiPrefix: env.apiPrefix,
|
|
588
|
+
path: "/refs/intents"
|
|
589
|
+
});
|
|
590
|
+
const attempts = createBulkRefsClient({
|
|
591
|
+
namespace: "pay:attempt",
|
|
592
|
+
baseURL: env.baseURL,
|
|
593
|
+
apiPrefix: env.apiPrefix,
|
|
594
|
+
path: "/refs/attempts"
|
|
595
|
+
});
|
|
596
|
+
const transactions = createBulkRefsClient({
|
|
597
|
+
namespace: "pay:transaction",
|
|
598
|
+
baseURL: env.baseURL,
|
|
599
|
+
apiPrefix: env.apiPrefix,
|
|
600
|
+
path: "/refs/transactions"
|
|
601
|
+
});
|
|
602
|
+
const refunds = createBulkRefsClient({
|
|
603
|
+
namespace: "pay:refund",
|
|
604
|
+
baseURL: env.baseURL,
|
|
605
|
+
apiPrefix: env.apiPrefix,
|
|
606
|
+
path: "/refs/refunds"
|
|
607
|
+
});
|
|
608
|
+
const allocations = createBulkRefsClient({
|
|
609
|
+
namespace: "pay:allocation",
|
|
610
|
+
baseURL: env.baseURL,
|
|
611
|
+
apiPrefix: env.apiPrefix,
|
|
612
|
+
path: "/refs/allocations"
|
|
613
|
+
});
|
|
614
|
+
const providerAccounts = createBulkRefsClient({
|
|
615
|
+
namespace: "pay:provider_account",
|
|
616
|
+
baseURL: env.baseURL,
|
|
617
|
+
apiPrefix: env.apiPrefix,
|
|
618
|
+
path: "/refs/provider-accounts"
|
|
619
|
+
});
|
|
620
|
+
const paymentMethods = createBulkRefsClient({
|
|
621
|
+
namespace: "pay:payment_method",
|
|
622
|
+
baseURL: env.baseURL,
|
|
623
|
+
apiPrefix: env.apiPrefix,
|
|
624
|
+
path: "/refs/payment-methods"
|
|
625
|
+
});
|
|
626
|
+
return {
|
|
627
|
+
// -----------------------------------------------------------------------
|
|
628
|
+
// Payment intents
|
|
629
|
+
// -----------------------------------------------------------------------
|
|
630
|
+
async createIntent(body) {
|
|
631
|
+
const { data } = await http.post("/payment-intents", body);
|
|
632
|
+
return data;
|
|
633
|
+
},
|
|
634
|
+
async getIntentByUid(uid) {
|
|
635
|
+
const { data } = await http.get(`/payment-intents/${uid}`);
|
|
636
|
+
return data;
|
|
637
|
+
},
|
|
638
|
+
async confirmIntent(body) {
|
|
639
|
+
const { data } = await http.post(
|
|
640
|
+
`/payment-intents/${body.intent_uid}/confirm`,
|
|
641
|
+
body
|
|
642
|
+
);
|
|
643
|
+
return data;
|
|
644
|
+
},
|
|
645
|
+
// -----------------------------------------------------------------------
|
|
646
|
+
// Attempts
|
|
647
|
+
// -----------------------------------------------------------------------
|
|
648
|
+
async startAttempt(body) {
|
|
649
|
+
const { data } = await http.post("/attempts", body);
|
|
650
|
+
return data;
|
|
651
|
+
},
|
|
652
|
+
// -----------------------------------------------------------------------
|
|
653
|
+
// Methods / availability
|
|
654
|
+
// -----------------------------------------------------------------------
|
|
655
|
+
async getAvailableMethods(params) {
|
|
656
|
+
const { data } = await http.get("/methods/available", {
|
|
657
|
+
params
|
|
658
|
+
});
|
|
659
|
+
return data;
|
|
660
|
+
},
|
|
661
|
+
// -----------------------------------------------------------------------
|
|
662
|
+
// Queries / allocations
|
|
663
|
+
// -----------------------------------------------------------------------
|
|
664
|
+
async queryPayments(body) {
|
|
665
|
+
const { data } = await http.post("/payments/query", body);
|
|
666
|
+
return data;
|
|
667
|
+
},
|
|
668
|
+
async getAllocationsByTarget(body) {
|
|
669
|
+
const { data } = await http.post(
|
|
670
|
+
"/allocations/by-target",
|
|
671
|
+
body
|
|
672
|
+
);
|
|
673
|
+
return data;
|
|
674
|
+
},
|
|
675
|
+
// -----------------------------------------------------------------------
|
|
676
|
+
// Bulk refs
|
|
677
|
+
// -----------------------------------------------------------------------
|
|
678
|
+
intentsRefs: (uids, opts) => intents.bulkRefs(uids, opts),
|
|
679
|
+
attemptsRefs: (uids, opts) => attempts.bulkRefs(uids, opts),
|
|
680
|
+
transactionsRefs: (uids, opts) => transactions.bulkRefs(uids, opts),
|
|
681
|
+
refundsRefs: (uids, opts) => refunds.bulkRefs(uids, opts),
|
|
682
|
+
allocationsRefs: (uids, opts) => allocations.bulkRefs(uids, opts),
|
|
683
|
+
providerAccountsRefs: (uids, opts) => providerAccounts.bulkRefs(uids, opts),
|
|
684
|
+
paymentMethodsRefs: (uids, opts) => paymentMethods.bulkRefs(uids, opts)
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
|
|
485
688
|
export {
|
|
486
689
|
InternalHttpError,
|
|
487
690
|
buildInternalHeaders,
|
|
@@ -493,6 +696,7 @@ export {
|
|
|
493
696
|
createMdClient,
|
|
494
697
|
createFisClient,
|
|
495
698
|
createMediaClient,
|
|
496
|
-
createMkpClient
|
|
699
|
+
createMkpClient,
|
|
700
|
+
createPayClient
|
|
497
701
|
};
|
|
498
|
-
//# sourceMappingURL=chunk-
|
|
702
|
+
//# sourceMappingURL=chunk-PBN2JCRX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/clients/env.ts","../src/internalHttpClient.ts","../src/clients/cacheFactory.ts","../src/clients/bulkRefsClient.ts","../src/clients/platformClient.ts","../src/clients/resClient.ts","../src/clients/mdClient.ts","../src/clients/fisClient.ts","../src/clients/mediaClient.ts","../src/clients/mkpClient.ts","../src/clients/payClient.ts"],"sourcesContent":["// packages/sdk/src/clients/env.ts\nimport type {ServiceClientEnv} from \"./types\";\n\nfunction must(v: string | undefined, name: string): string {\n const s = (v || \"\").trim();\n if (!s) throw new Error(`Missing env var: ${name}`);\n return s;\n}\n\nexport function readServiceEnv(prefix: string, defaults?: Partial<ServiceClientEnv>): ServiceClientEnv {\n const baseURL = (process.env[`${prefix}_BASE_URL`] || defaults?.baseURL || \"\").trim();\n const apiPrefix = (process.env[`${prefix}_API_PREFIX`] || defaults?.apiPrefix || \"/internal/v1\").trim();\n\n return {\n baseURL: must(baseURL, `${prefix}_BASE_URL`),\n apiPrefix,\n };\n}\n","// packages/sdk/src/internalHttpClient.ts\nimport fs from \"fs\";\nimport {\n HEADER_INTERNAL_API_KEY,\n HEADER_REQUEST_ID,\n HEADER_COMPANY_UID,\n HEADER_BRANCH_UID,\n HEADER_EMPLOYEE_UID\n} from \"./headers\";\nimport type {RequestContext} from \"./headers\";\n\nexport type InternalHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport type InternalHttpClientOptions = {\n baseURL: string; // ej: http://platform:3010\n apiPrefix?: string; // ej: /internal/v1\n timeoutMs?: number; // default 15000\n retries?: number; // default 2\n retryDelayMs?: number; // default 250\n apiKey?: string | null; // override opcional\n};\n\nexport type InternalRequestOptions = {\n method: InternalHttpMethod;\n path: string; // \"/tenants/provision\"\n query?: Record<string, string | number | boolean | null | undefined>;\n body?: any; // JSON\n headers?: Record<string, string | undefined>;\n ctx?: RequestContext | null;\n\n idempotencyKey?: string | null;\n\n expectJson?: boolean; // default true\n};\n\nexport class InternalHttpError extends Error {\n status: number;\n code: string;\n details: any;\n\n constructor(status: number, code: string, message: string, details?: any) {\n super(message);\n this.status = status;\n this.code = code;\n this.details = details ?? null;\n }\n}\n\nfunction readSecretFile(path?: string): string | null {\n if (!path) return null;\n try {\n const v = fs.readFileSync(path, \"utf8\").trim();\n return v.length ? v : null;\n } catch {\n return null;\n }\n}\n\nfunction splitKeys(v?: string | null): string[] {\n if (!v) return [];\n return v.split(\",\").map((s) => s.trim()).filter(Boolean);\n}\n\n/**\n * ✅ MISMA lógica que internalAuth.ts:\n * - INTERNAL_API_KEY_FILE tiene prioridad\n * - fallback a INTERNAL_API_KEY\n * - permite CSV\n *\n * Nota: Para enviar, usamos la primera key disponible.\n */\nfunction getInternalApiKey(override?: string | null): string | null {\n if (override && override.trim()) return override.trim();\n\n const fileKey = readSecretFile(process.env.INTERNAL_API_KEY_FILE);\n const envKey = (process.env.INTERNAL_API_KEY || \"\").trim();\n const raw = fileKey || envKey;\n const keys = splitKeys(raw);\n return keys[0] || null;\n}\n\nfunction normalizeBaseURL(baseURL: string): string {\n const b = (baseURL || \"\").trim();\n if (!b) throw new Error(\"InternalHttpClient: baseURL is required\");\n return b.replace(/\\/+$/g, \"\");\n}\n\nfunction normalizePrefix(prefix?: string): string {\n const p = (prefix || \"\").trim();\n if (!p) return \"\";\n const withSlash = p.startsWith(\"/\") ? p : `/${p}`;\n return withSlash.replace(/\\/+$/g, \"\");\n}\n\nfunction buildQuery(query?: InternalRequestOptions[\"query\"]): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v === null || v === undefined) continue;\n params.set(k, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\n/**\n * ✅ Propaga contexto estándar (SDK)\n * - x-request-id\n * - x-company\n * - x-branch\n * - x-employee-uid\n */\nexport function buildInternalHeaders(\n ctx?: RequestContext | null,\n extra?: Record<string, string | undefined>,\n idempotencyKey?: string | null\n): Record<string, string> {\n const h: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (ctx?.requestId) h[HEADER_REQUEST_ID] = String(ctx.requestId);\n if (ctx?.company_uid) h[HEADER_COMPANY_UID] = String(ctx.company_uid);\n if (ctx?.branch_uid) h[HEADER_BRANCH_UID] = String(ctx.branch_uid);\n if (ctx?.employee_uid) h[HEADER_EMPLOYEE_UID] = String(ctx.employee_uid);\n\n if (idempotencyKey && idempotencyKey.trim()) {\n h[\"Idempotency-Key\"] = idempotencyKey.trim();\n }\n\n for (const [k, v] of Object.entries(extra || {})) {\n if (v === undefined) continue;\n const vv = String(v).trim();\n if (!vv) continue;\n h[k] = vv;\n }\n\n return h;\n}\n\nasync function sleep(ms: number) {\n await new Promise((r) => setTimeout(r, ms));\n}\n\nfunction shouldRetry(status: number | null, err: any): boolean {\n if (err?.name === \"AbortError\") return true;\n if (!status) return true;\n if (status >= 500) return true;\n if (status === 429) return true;\n return false;\n}\n\nasync function safeReadJson(res: Response): Promise<any> {\n const text = await res.text();\n if (!text) return null;\n try {\n return JSON.parse(text);\n } catch {\n return {raw: text};\n }\n}\n\n/**\n * Cliente interno universal (fetch)\n */\nexport function createInternalHttpClient(opts: InternalHttpClientOptions) {\n const baseURL = normalizeBaseURL(opts.baseURL);\n const apiPrefix = normalizePrefix(opts.apiPrefix);\n const timeoutMs = typeof opts.timeoutMs === \"number\" ? opts.timeoutMs : 15000;\n const retries = typeof opts.retries === \"number\" ? opts.retries : 2;\n const retryDelayMs = typeof opts.retryDelayMs === \"number\" ? opts.retryDelayMs : 250;\n\n const apiKey = getInternalApiKey(opts.apiKey ?? null);\n if (!apiKey) {\n throw new Error(\n \"InternalHttpClient: INTERNAL_API_KEY or INTERNAL_API_KEY_FILE is required to call internal endpoints.\"\n );\n }\n\n async function request<T = any>(r: InternalRequestOptions): Promise<T> {\n const path = (r.path || \"\").trim();\n if (!path.startsWith(\"/\")) {\n throw new Error(`InternalHttpClient: path must start with '/': ${path}`);\n }\n\n const url = `${baseURL}${apiPrefix}${path}${buildQuery(r.query)}`;\n\n const headers = buildInternalHeaders(r.ctx ?? null, r.headers, r.idempotencyKey ?? null);\n if (apiKey != null) {\n headers[HEADER_INTERNAL_API_KEY] = apiKey;\n }\n\n const method = r.method;\n const expectJson = r.expectJson !== false;\n\n const body =\n method === \"GET\" || method === \"DELETE\"\n ? undefined\n : r.body !== undefined\n ? JSON.stringify(r.body)\n : undefined;\n\n let attempt = 0;\n let lastErr: any = null;\n\n while (attempt <= retries) {\n attempt++;\n\n const ac = new AbortController();\n const to = setTimeout(() => ac.abort(), timeoutMs);\n\n try {\n const res = await fetch(url, {\n method,\n headers,\n body,\n signal: ac.signal,\n });\n\n clearTimeout(to);\n\n if (res.ok) {\n if (!expectJson) return (undefined as any) as T;\n const data = await safeReadJson(res);\n return data as T;\n }\n\n const errBody = await safeReadJson(res);\n const status = res.status;\n\n if (attempt <= retries && shouldRetry(status, null)) {\n lastErr = new InternalHttpError(\n status,\n \"INTERNAL_HTTP_RETRY\",\n `Retryable internal HTTP error (${status})`,\n {url, status, response: errBody, attempt}\n );\n await sleep(retryDelayMs * attempt);\n continue;\n }\n\n throw new InternalHttpError(\n status,\n \"INTERNAL_HTTP_ERROR\",\n `Internal HTTP error (${status})`,\n {url, status, response: errBody}\n );\n } catch (e: any) {\n clearTimeout(to);\n\n if (attempt <= retries && shouldRetry(null, e)) {\n lastErr = e;\n await sleep(retryDelayMs * attempt);\n continue;\n }\n\n if (e instanceof InternalHttpError) throw e;\n\n throw new InternalHttpError(\n 0,\n \"INTERNAL_HTTP_NETWORK_ERROR\",\n e?.message || \"Internal HTTP network error\",\n {url, attempt, error: String(e)}\n );\n }\n }\n\n throw lastErr || new InternalHttpError(0, \"INTERNAL_HTTP_FAILED\", \"Internal request failed\");\n }\n\n return {\n request,\n get: <T = any>(path: string, o?: Omit<InternalRequestOptions, \"method\" | \"path\">) =>\n request<T>({...(o || {}), method: \"GET\", path}),\n post: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"POST\", path, body}),\n put: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"PUT\", path, body}),\n patch: <T = any>(path: string, body?: any, o?: Omit<InternalRequestOptions, \"method\" | \"path\" | \"body\">) =>\n request<T>({...(o || {}), method: \"PATCH\", path, body}),\n del: <T = any>(path: string, o?: Omit<InternalRequestOptions, \"method\" | \"path\">) =>\n request<T>({...(o || {}), method: \"DELETE\", path}),\n };\n}\n","// packages/sdk/src/clients/cacheFactory.ts\nimport {TwoLevelCache} from \"../cache\";\nimport {createCacheProvider} from \"../cache/cacheProvider\";\n\n/**\n * Crea un TwoLevelCache por \"namespace\" (ej: \"res:variety\")\n * - L1: in-memory (TTL corto)\n * - L2: redis (TTL medio)\n *\n * Nota: createCacheProvider ya aplica REDIS_KEY_PREFIX desde env,\n * y además TwoLevelCache agrega namespace como prefijo lógico.\n */\nexport function makeRefsCache<T>(namespace: string) {\n const l2 = createCacheProvider(); // redis o noop según env\n return new TwoLevelCache<T>(l2, {\n namespace,\n ttlMsL1: 30_000,\n ttlMsL2: 300_000,\n negativeTtlMsL1: 30_000,\n negativeTtlMsL2: 30_000,\n });\n}\n","// packages/sdk/src/clients/bulkRefsClient.ts\nimport type {RequestContext} from \"../headers\";\nimport {createInternalHttpClient} from \"../internalHttpClient\";\nimport type {BulkRefsResponse, BulkUidsRequest, InternalBulkRefsOptions} from \"./types\";\nimport {makeRefsCache} from \"./cacheFactory\";\n\nfunction uniq(arr: string[]) {\n return Array.from(new Set(arr.filter(Boolean)));\n}\n\nexport function createBulkRefsClient<TRef extends { uid: string }>(args: {\n namespace: string; // cache namespace e.g. \"res:variety\"\n baseURL: string;\n apiPrefix: string;\n path: string; // e.g. \"/refs/varieties\"\n defaultTtlMsL1?: number;\n defaultTtlMsL2?: number;\n}) {\n const http = createInternalHttpClient({\n baseURL: args.baseURL,\n apiPrefix: args.apiPrefix,\n });\n\n // ✅ cache tipado\n const cache = makeRefsCache<TRef>(args.namespace);\n\n async function bulkRefs(\n uids: string[],\n opts?: InternalBulkRefsOptions\n ): Promise<BulkRefsResponse<TRef>> {\n const list = uniq(uids);\n if (list.length === 0) {\n return {ok: true, refs: [], meta: {requested: 0, returned: 0, missing: []}};\n }\n\n // 1) cache hits\n const hits: TRef[] = [];\n const missing: string[] = [];\n\n for (const uid of list) {\n const v = await cache.get(uid); // ✅ sin genéricos\n if (v) hits.push(v);\n else missing.push(uid);\n }\n\n // 2) fetch missing\n let fetched: TRef[] = [];\n if (missing.length) {\n const resp = await http.post<BulkRefsResponse<TRef>>(\n args.path,\n {uids: missing} as BulkUidsRequest,\n {\n ctx: (opts?.ctx ?? null) as RequestContext | null,\n }\n );\n\n const refs = (resp.refs ?? resp.items ?? []) as TRef[];\n fetched = refs;\n\n const ttlMsL1 = opts?.ttlMsL1 ?? args.defaultTtlMsL1;\n const ttlMsL2 = opts?.ttlMsL2 ?? args.defaultTtlMsL2;\n\n for (const ref of refs) {\n const uid = String(ref?.uid || \"\").trim();\n if (!uid) continue;\n\n await cache.set(uid, ref, {\n ttlMsL1,\n ttlMsL2,\n });\n }\n }\n\n const all = [...hits, ...fetched];\n\n // missing final (uids requested but not returned)\n const returnedSet = new Set(all.map((r) => String(r?.uid || \"\")));\n const missingFinal = list.filter((u) => !returnedSet.has(u));\n\n return {\n ok: true,\n refs: all,\n meta: {\n requested: list.length,\n returned: all.length,\n missing: missingFinal,\n },\n };\n }\n\n return {bulkRefs};\n}\n","// packages/sdk/src/clients/platformClient.ts\nimport type {PlatformResolveTenantResponse, PlatformServiceCode} from \"@innvoid/getmarket-contracts\";\nimport type {RequestContext} from \"../headers\";\nimport {createInternalHttpClient} from \"../internalHttpClient\";\nimport {makeRefsCache} from \"./cacheFactory\";\n\nexport function createPlatformClient(env: { baseURL: string; apiPrefix: string }) {\n const http = createInternalHttpClient(env);\n\n // ✅ cache tipado\n const cache = makeRefsCache<PlatformResolveTenantResponse>(\"platform:tenant\");\n\n async function resolveTenant(\n input: { company_uid: string; service: PlatformServiceCode },\n ctx?: RequestContext | null\n ) {\n const key = `${input.company_uid}:${input.service}`;\n\n const cached = await cache.get(key); // ✅ sin genéricos\n if (cached) return cached;\n\n const resp = await http.post<PlatformResolveTenantResponse>(\n \"/tenants/resolve\",\n input,\n {ctx: ctx ?? null}\n );\n\n await cache.set(key, resp);\n return resp;\n }\n\n return {resolveTenant};\n}\n","// packages/sdk/src/clients/resClient.ts\nimport type {\n ResVarietyRef,\n ResVarietiesRefsResponse,\n ResResourceRef,\n ResResourcesRefsResponse,\n ResCategoryRef,\n ResCategoriesRefsResponse,\n ResAttributeRef,\n ResAttributesRefsResponse,\n ResAttributeOptionRef,\n ResAttributeOptionsRefsResponse,\n ResAttributeValueRef,\n ResAttributeValuesRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createResClient() {\n const env = readServiceEnv(\"RES\", {apiPrefix: \"/internal/v1\"});\n\n const varieties = createBulkRefsClient<ResVarietyRef>({\n namespace: \"res:variety\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/varieties\",\n });\n\n const resources = createBulkRefsClient<ResResourceRef>({\n namespace: \"res:resource\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/resources\",\n });\n\n const categories = createBulkRefsClient<ResCategoryRef>({\n namespace: \"res:category\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/categories\",\n });\n\n const attributes = createBulkRefsClient<ResAttributeRef>({\n namespace: \"res:attribute\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attributes\",\n });\n\n const attributeOptions = createBulkRefsClient<ResAttributeOptionRef>({\n namespace: \"res:attribute_option\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attribute-options\",\n });\n\n const attributeValues = createBulkRefsClient<ResAttributeValueRef>({\n namespace: \"res:attribute_value\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attribute-values\",\n });\n\n return {\n varietiesRefs: (uids: string[], opts?: any) =>\n varieties.bulkRefs(uids, opts) as Promise<ResVarietiesRefsResponse>,\n\n resourcesRefs: (uids: string[], opts?: any) =>\n resources.bulkRefs(uids, opts) as Promise<ResResourcesRefsResponse>,\n\n categoriesRefs: (uids: string[], opts?: any) =>\n categories.bulkRefs(uids, opts) as Promise<ResCategoriesRefsResponse>,\n\n attributesRefs: (uids: string[], opts?: any) =>\n attributes.bulkRefs(uids, opts) as Promise<ResAttributesRefsResponse>,\n\n attributeOptionsRefs: (uids: string[], opts?: any) =>\n attributeOptions.bulkRefs(uids, opts) as Promise<ResAttributeOptionsRefsResponse>,\n\n attributeValuesRefs: (uids: string[], opts?: any) =>\n attributeValues.bulkRefs(uids, opts) as Promise<ResAttributeValuesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/mdClient.ts\nimport type {\n MdMeasureRef,\n MdMeasuresRefsResponse,\n MdMeasureTypeRef,\n MdMeasureTypesRefsResponse,\n MdCountryRef,\n MdCountriesRefsResponse,\n MdCurrencyRef,\n MdCurrenciesRefsResponse,\n MdRegionRef,\n MdRegionsRefsResponse,\n MdCommuneRef,\n MdCommunesRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMdClient() {\n const env = readServiceEnv(\"MD\", {apiPrefix: \"/internal/v1\"});\n\n const measures = createBulkRefsClient<MdMeasureRef>({\n namespace: \"md:measure\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/measures\",\n });\n\n const measureTypes = createBulkRefsClient<MdMeasureTypeRef>({\n namespace: \"md:measure_type\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/measure-types\",\n });\n\n const countries = createBulkRefsClient<MdCountryRef>({\n namespace: \"md:country\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/countries\",\n });\n\n const currencies = createBulkRefsClient<MdCurrencyRef>({\n namespace: \"md:currency\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/currencies\",\n });\n\n const regions = createBulkRefsClient<MdRegionRef>({\n namespace: \"md:region\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/regions\",\n });\n\n const communes = createBulkRefsClient<MdCommuneRef>({\n namespace: \"md:commune\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/communes\",\n });\n\n return {\n measuresRefs: (uids: string[], opts?: any) =>\n measures.bulkRefs(uids, opts) as Promise<MdMeasuresRefsResponse>,\n\n measureTypesRefs: (uids: string[], opts?: any) =>\n measureTypes.bulkRefs(uids, opts) as Promise<MdMeasureTypesRefsResponse>,\n\n countriesRefs: (uids: string[], opts?: any) =>\n countries.bulkRefs(uids, opts) as Promise<MdCountriesRefsResponse>,\n\n currenciesRefs: (uids: string[], opts?: any) =>\n currencies.bulkRefs(uids, opts) as Promise<MdCurrenciesRefsResponse>,\n\n regionsRefs: (uids: string[], opts?: any) =>\n regions.bulkRefs(uids, opts) as Promise<MdRegionsRefsResponse>,\n\n communesRefs: (uids: string[], opts?: any) =>\n communes.bulkRefs(uids, opts) as Promise<MdCommunesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/fisClient.ts\nimport type {\n UID,\n FisProfileRef,\n FisProfilesRefsResponse,\n FisDocumentRef,\n FisDocumentsRefsResponse,\n FisSnapshotRef,\n FisSnapshotsRefsResponse,\n FisSubmissionRef,\n FisSubmissionsRefsResponse,\n FisFolioPoolRef,\n FisFolioPoolsRefsResponse,\n FisTaxRuleRef,\n FisTaxRulesRefsResponse,\n FisCalculateRequest,\n FisCalculateResponse,\n FisTaxCalculateRequest,\n FisTaxCalculateResponse,\n FisBuildDocumentRequest,\n FisBuildDocumentResponse,\n FisSignDocumentRequest,\n FisSignDocumentResponse,\n FisSubmitDocumentRequest,\n FisSubmitDocumentResponse,\n FisCancelDocumentRequest,\n FisCancelDocumentResponse,\n FisReserveFolioRequest,\n FisReserveFolioResponse,\n FisConsumeFolioRequest,\n FisConsumeFolioResponse,\n FisDocumentsQueryRequest,\n FisDocumentsQueryResponse,\n FisSubmissionRetryRequest,\n FisSubmissionRetryResponse,\n FisDocumentResponse,\n FisSnapshotResponse,\n FisSubmissionResponse,\n FisStatusEventsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\nimport {createHttpClient, type HttpClient} from \"../core\";\n\nexport function createFisClient() {\n const env = readServiceEnv(\"FIS\", {apiPrefix: \"/internal/v1\"});\n\n const http: HttpClient = createHttpClient({\n baseURL: `${env.baseURL}${env.apiPrefix}`,\n timeoutMs: 8000,\n });\n\n const profiles = createBulkRefsClient<FisProfileRef>({\n namespace: \"fis:profile\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/profiles\",\n });\n\n const documents = createBulkRefsClient<FisDocumentRef>({\n namespace: \"fis:document\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/documents\",\n });\n\n const snapshots = createBulkRefsClient<FisSnapshotRef>({\n namespace: \"fis:snapshot\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/snapshots\",\n });\n\n const submissions = createBulkRefsClient<FisSubmissionRef>({\n namespace: \"fis:submission\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/submissions\",\n });\n\n const folioPools = createBulkRefsClient<FisFolioPoolRef>({\n namespace: \"fis:folio_pool\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/folio-pools\",\n });\n\n const taxRules = createBulkRefsClient<FisTaxRuleRef>({\n namespace: \"fis:tax_rule\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/tax-rules\",\n });\n\n return {\n // -----------------------------------------------------------------------\n // Bulk refs\n // -----------------------------------------------------------------------\n profilesRefs: (uids: string[], opts?: any) =>\n profiles.bulkRefs(uids, opts) as Promise<FisProfilesRefsResponse>,\n\n documentsRefs: (uids: string[], opts?: any) =>\n documents.bulkRefs(uids, opts) as Promise<FisDocumentsRefsResponse>,\n\n snapshotsRefs: (uids: string[], opts?: any) =>\n snapshots.bulkRefs(uids, opts) as Promise<FisSnapshotsRefsResponse>,\n\n submissionsRefs: (uids: string[], opts?: any) =>\n submissions.bulkRefs(uids, opts) as Promise<FisSubmissionsRefsResponse>,\n\n folioPoolsRefs: (uids: string[], opts?: any) =>\n folioPools.bulkRefs(uids, opts) as Promise<FisFolioPoolsRefsResponse>,\n\n taxRulesRefs: (uids: string[], opts?: any) =>\n taxRules.bulkRefs(uids, opts) as Promise<FisTaxRulesRefsResponse>,\n\n // -----------------------------------------------------------------------\n // Fiscal calculation / build / lifecycle\n // -----------------------------------------------------------------------\n async calculate(body: FisCalculateRequest): Promise<FisCalculateResponse> {\n const {data} = await http.post<FisCalculateResponse>(\"/calculate\", body);\n return data;\n },\n\n async calculateTaxes(body: FisTaxCalculateRequest): Promise<FisTaxCalculateResponse> {\n const {data} = await http.post<FisTaxCalculateResponse>(\"/tax/calculate\", body);\n return data;\n },\n\n async buildDocument(body: FisBuildDocumentRequest): Promise<FisBuildDocumentResponse> {\n const {data} = await http.post<FisBuildDocumentResponse>(\"/documents\", body);\n return data;\n },\n\n async signDocument(body: FisSignDocumentRequest): Promise<FisSignDocumentResponse> {\n const {data} = await http.post<FisSignDocumentResponse>(\n `/documents/${body.document_uid}/sign`,\n body\n );\n return data;\n },\n\n async submitDocument(body: FisSubmitDocumentRequest): Promise<FisSubmitDocumentResponse> {\n const {data} = await http.post<FisSubmitDocumentResponse>(\n `/documents/${body.document_uid}/submit`,\n body\n );\n return data;\n },\n\n async cancelDocument(body: FisCancelDocumentRequest): Promise<FisCancelDocumentResponse> {\n const {data} = await http.post<FisCancelDocumentResponse>(\n `/documents/${body.document_uid}/cancel`,\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Folios / series\n // -----------------------------------------------------------------------\n async reserveFolio(body: FisReserveFolioRequest): Promise<FisReserveFolioResponse> {\n const {data} = await http.post<FisReserveFolioResponse>(\"/folios/reserve\", body);\n return data;\n },\n\n async consumeFolio(body: FisConsumeFolioRequest): Promise<FisConsumeFolioResponse> {\n const {data} = await http.post<FisConsumeFolioResponse>(\"/folios/consume\", body);\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Queries / detail\n // -----------------------------------------------------------------------\n async queryDocuments(body: FisDocumentsQueryRequest): Promise<FisDocumentsQueryResponse> {\n const {data} = await http.post<FisDocumentsQueryResponse>(\"/documents/query\", body);\n return data;\n },\n\n async getDocumentByUid(uid: UID): Promise<FisDocumentResponse> {\n const {data} = await http.get<FisDocumentResponse>(`/documents/${uid}`);\n return data;\n },\n\n async getSnapshotByUid(uid: UID): Promise<FisSnapshotResponse> {\n const {data} = await http.get<FisSnapshotResponse>(`/snapshots/${uid}`);\n return data;\n },\n\n async getSubmissionByUid(uid: UID): Promise<FisSubmissionResponse> {\n const {data} = await http.get<FisSubmissionResponse>(`/submissions/${uid}`);\n return data;\n },\n\n async getStatusEventsByDocumentUid(documentUid: UID): Promise<FisStatusEventsResponse> {\n const {data} = await http.get<FisStatusEventsResponse>(\n `/documents/${documentUid}/status-events`\n );\n return data;\n },\n\n async retrySubmission(body: FisSubmissionRetryRequest): Promise<FisSubmissionRetryResponse> {\n const {data} = await http.post<FisSubmissionRetryResponse>(\"/submissions/retry\", body);\n return data;\n },\n };\n}\n","// packages/sdk/src/clients/mediaClient.ts\nimport type {MediaFileRef, MediaFilesRefsResponse} from \"@innvoid/getmarket-contracts\";\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMediaClient() {\n const env = readServiceEnv(\"MEDIA\", {apiPrefix: \"/internal/v1\"});\n\n const files = createBulkRefsClient<MediaFileRef>({\n namespace: \"media:file\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/files\",\n });\n\n return {\n filesRefs: (uids: string[], opts?: any) =>\n files.bulkRefs(uids, opts) as Promise<MediaFilesRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/mkpClient.ts\nimport type {\n MkpPublicationRef,\n MkpPublicationsRefsResponse,\n MkpEventRef,\n MkpEventsRefsResponse,\n MkpPromotionRef,\n MkpPromotionsRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\n\nexport function createMkpClient() {\n const env = readServiceEnv(\"MKP\", {apiPrefix: \"/internal/v1\"});\n\n const publications = createBulkRefsClient<MkpPublicationRef>({\n namespace: \"mkp:publication\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/publications\",\n });\n\n const events = createBulkRefsClient<MkpEventRef>({\n namespace: \"mkp:event\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/events\",\n });\n\n const promotions = createBulkRefsClient<MkpPromotionRef>({\n namespace: \"mkp:promotion\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/promotions\",\n });\n\n return {\n publicationsRefs: (uids: string[], opts?: any) =>\n publications.bulkRefs(uids, opts) as Promise<MkpPublicationsRefsResponse>,\n\n eventsRefs: (uids: string[], opts?: any) =>\n events.bulkRefs(uids, opts) as Promise<MkpEventsRefsResponse>,\n\n promotionsRefs: (uids: string[], opts?: any) =>\n promotions.bulkRefs(uids, opts) as Promise<MkpPromotionsRefsResponse>,\n };\n}\n","// packages/sdk/src/clients/payClient.ts\nimport type {\n UID,\n PayCreateIntentRequest,\n PayCreateIntentResponse,\n PayConfirmIntentRequest,\n PayConfirmIntentResponse,\n PayStartAttemptRequest,\n PayStartAttemptResponse,\n PayIntentResponse,\n PayMethodsAvailabilityQuery,\n PayMethodsAvailabilityResponse,\n PayPaymentsQueryRequest,\n PayPaymentsQueryResponse,\n PayAllocationsByTargetRequest,\n PayAllocationsByTargetResponse,\n PayIntentRef,\n PayAttemptRef,\n PayTransactionRef,\n PayRefundRef,\n PayAllocationRef,\n PayProviderAccountRef,\n PayPaymentMethodRef,\n PayIntentsRefsResponse,\n PayAttemptsRefsResponse,\n PayTransactionsRefsResponse,\n PayRefundsRefsResponse,\n PayAllocationsRefsResponse,\n PayProviderAccountsRefsResponse,\n PayPaymentMethodsRefsResponse,\n} from \"@innvoid/getmarket-contracts\";\n\nimport {readServiceEnv} from \"./env\";\nimport {createBulkRefsClient} from \"./bulkRefsClient\";\nimport {createHttpClient, type HttpClient} from \"../core\";\n\nexport function createPayClient() {\n const env = readServiceEnv(\"PAY\", {apiPrefix: \"/internal/v1\"});\n\n const http: HttpClient = createHttpClient({\n baseURL: `${env.baseURL}${env.apiPrefix}`,\n timeoutMs: 8000,\n });\n\n const intents = createBulkRefsClient<PayIntentRef>({\n namespace: \"pay:intent\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/intents\",\n });\n\n const attempts = createBulkRefsClient<PayAttemptRef>({\n namespace: \"pay:attempt\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/attempts\",\n });\n\n const transactions = createBulkRefsClient<PayTransactionRef>({\n namespace: \"pay:transaction\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/transactions\",\n });\n\n const refunds = createBulkRefsClient<PayRefundRef>({\n namespace: \"pay:refund\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/refunds\",\n });\n\n const allocations = createBulkRefsClient<PayAllocationRef>({\n namespace: \"pay:allocation\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/allocations\",\n });\n\n const providerAccounts = createBulkRefsClient<PayProviderAccountRef>({\n namespace: \"pay:provider_account\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/provider-accounts\",\n });\n\n const paymentMethods = createBulkRefsClient<PayPaymentMethodRef>({\n namespace: \"pay:payment_method\",\n baseURL: env.baseURL,\n apiPrefix: env.apiPrefix,\n path: \"/refs/payment-methods\",\n });\n\n return {\n // -----------------------------------------------------------------------\n // Payment intents\n // -----------------------------------------------------------------------\n async createIntent(body: PayCreateIntentRequest): Promise<PayCreateIntentResponse> {\n const {data} = await http.post<PayCreateIntentResponse>(\"/payment-intents\", body);\n return data;\n },\n\n async getIntentByUid(uid: UID): Promise<PayIntentResponse> {\n const {data} = await http.get<PayIntentResponse>(`/payment-intents/${uid}`);\n return data;\n },\n\n async confirmIntent(body: PayConfirmIntentRequest): Promise<PayConfirmIntentResponse> {\n const {data} = await http.post<PayConfirmIntentResponse>(\n `/payment-intents/${body.intent_uid}/confirm`,\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Attempts\n // -----------------------------------------------------------------------\n async startAttempt(body: PayStartAttemptRequest): Promise<PayStartAttemptResponse> {\n const {data} = await http.post<PayStartAttemptResponse>(\"/attempts\", body);\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Methods / availability\n // -----------------------------------------------------------------------\n async getAvailableMethods(\n params: PayMethodsAvailabilityQuery\n ): Promise<PayMethodsAvailabilityResponse> {\n const {data} = await http.get<PayMethodsAvailabilityResponse>(\"/methods/available\", {\n params,\n });\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Queries / allocations\n // -----------------------------------------------------------------------\n async queryPayments(body: PayPaymentsQueryRequest): Promise<PayPaymentsQueryResponse> {\n const {data} = await http.post<PayPaymentsQueryResponse>(\"/payments/query\", body);\n return data;\n },\n\n async getAllocationsByTarget(\n body: PayAllocationsByTargetRequest\n ): Promise<PayAllocationsByTargetResponse> {\n const {data} = await http.post<PayAllocationsByTargetResponse>(\n \"/allocations/by-target\",\n body\n );\n return data;\n },\n\n // -----------------------------------------------------------------------\n // Bulk refs\n // -----------------------------------------------------------------------\n intentsRefs: (uids: string[], opts?: any) =>\n intents.bulkRefs(uids, opts) as Promise<PayIntentsRefsResponse>,\n\n attemptsRefs: (uids: string[], opts?: any) =>\n attempts.bulkRefs(uids, opts) as Promise<PayAttemptsRefsResponse>,\n\n transactionsRefs: (uids: string[], opts?: any) =>\n transactions.bulkRefs(uids, opts) as Promise<PayTransactionsRefsResponse>,\n\n refundsRefs: (uids: string[], opts?: any) =>\n refunds.bulkRefs(uids, opts) as Promise<PayRefundsRefsResponse>,\n\n allocationsRefs: (uids: string[], opts?: any) =>\n allocations.bulkRefs(uids, opts) as Promise<PayAllocationsRefsResponse>,\n\n providerAccountsRefs: (uids: string[], opts?: any) =>\n providerAccounts.bulkRefs(uids, opts) as Promise<PayProviderAccountsRefsResponse>,\n\n paymentMethodsRefs: (uids: string[], opts?: any) =>\n paymentMethods.bulkRefs(uids, opts) as Promise<PayPaymentMethodsRefsResponse>,\n };\n}\n"],"mappings":"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","names":[]}
|