@sakeetech/viva-payments-core 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/http.js +14 -9
- package/dist/auth/http.js.map +1 -1
- package/dist/auth/index.js +18 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth2-strategy.js +24 -20
- package/dist/auth/oauth2-strategy.js.map +1 -1
- package/dist/auth/reseller-strategy.js +5 -1
- package/dist/auth/reseller-strategy.js.map +1 -1
- package/dist/auth/single-flight.js +8 -3
- package/dist/auth/single-flight.js.map +1 -1
- package/dist/auth/token-cache.js +7 -2
- package/dist/auth/token-cache.js.map +1 -1
- package/dist/errors/api-error.js +6 -2
- package/dist/errors/api-error.js.map +1 -1
- package/dist/errors/auth-error.js +6 -2
- package/dist/errors/auth-error.js.map +1 -1
- package/dist/errors/base.js +5 -1
- package/dist/errors/base.js.map +1 -1
- package/dist/errors/index.js +17 -7
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/mode-mismatch-error.js +6 -2
- package/dist/errors/mode-mismatch-error.js.map +1 -1
- package/dist/errors/rate-limit-error.js +6 -2
- package/dist/errors/rate-limit-error.js.map +1 -1
- package/dist/errors/validation-error.js +6 -2
- package/dist/errors/validation-error.js.map +1 -1
- package/dist/errors/webhook-error.js +6 -2
- package/dist/errors/webhook-error.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/isv/accounts.js +5 -1
- package/dist/isv/accounts.js.map +1 -1
- package/dist/isv/client.js +23 -19
- package/dist/isv/client.js.map +1 -1
- package/dist/isv/index.js +17 -8
- package/dist/isv/index.js.map +1 -1
- package/dist/isv/sources.js +8 -4
- package/dist/isv/sources.js.map +1 -1
- package/dist/isv/webhooks-api.js +5 -1
- package/dist/isv/webhooks-api.js.map +1 -1
- package/dist/legacy/client.js +19 -15
- package/dist/legacy/client.js.map +1 -1
- package/dist/legacy/index.js +5 -1
- package/dist/legacy/index.js.map +1 -1
- package/dist/observability/context.js +15 -11
- package/dist/observability/context.js.map +1 -1
- package/dist/observability/index.js +16 -5
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/logger.js +11 -5
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.js +5 -1
- package/dist/observability/metrics.js.map +1 -1
- package/dist/observability/redact.js +4 -1
- package/dist/observability/redact.js.map +1 -1
- package/dist/observability/tracer.js +5 -1
- package/dist/observability/tracer.js.map +1 -1
- package/dist/payments/client.d.ts.map +1 -1
- package/dist/payments/client.js +23 -14
- package/dist/payments/client.js.map +1 -1
- package/dist/payments/index.js +5 -1
- package/dist/payments/index.js.map +1 -1
- package/dist/refunds/fast-refund-client.js +11 -7
- package/dist/refunds/fast-refund-client.js.map +1 -1
- package/dist/refunds/index.js +7 -2
- package/dist/refunds/index.js.map +1 -1
- package/dist/refunds/strategy.js +4 -1
- package/dist/refunds/strategy.js.map +1 -1
- package/dist/types/auth.js +2 -1
- package/dist/types/auth.js.map +1 -1
- package/dist/types/card-types.js +7 -3
- package/dist/types/card-types.js.map +1 -1
- package/dist/types/common.js +8 -4
- package/dist/types/common.js.map +1 -1
- package/dist/types/index.js +14 -6
- package/dist/types/index.js.map +1 -1
- package/dist/types/isv-accounts.js +2 -1
- package/dist/types/isv-accounts.js.map +1 -1
- package/dist/types/isv-payments.js +2 -1
- package/dist/types/isv-payments.js.map +1 -1
- package/dist/types/status.js +2 -1
- package/dist/types/status.js.map +1 -1
- package/dist/types/webhook-events.js +5 -2
- package/dist/types/webhook-events.js.map +1 -1
- package/dist/webhooks/challenge-response.js +6 -3
- package/dist/webhooks/challenge-response.js.map +1 -1
- package/dist/webhooks/event-types.js +10 -4
- package/dist/webhooks/event-types.js.map +1 -1
- package/dist/webhooks/extract-client-ip.js +4 -1
- package/dist/webhooks/extract-client-ip.js.map +1 -1
- package/dist/webhooks/hmac-verify.js +14 -11
- package/dist/webhooks/hmac-verify.js.map +1 -1
- package/dist/webhooks/index.js +22 -6
- package/dist/webhooks/index.js.map +1 -1
- package/dist/webhooks/ip-allowlist.js +11 -7
- package/dist/webhooks/ip-allowlist.js.map +1 -1
- package/dist/webhooks/status-lattice.js +8 -3
- package/dist/webhooks/status-lattice.js.map +1 -1
- package/package.json +12 -12
- package/dist/isv/legacy-basic-client.d.ts +0 -122
- package/dist/isv/legacy-basic-client.d.ts.map +0 -1
- package/dist/isv/legacy-basic-client.js +0 -281
- package/dist/isv/legacy-basic-client.js.map +0 -1
- package/dist/isv/payments.d.ts +0 -199
- package/dist/isv/payments.d.ts.map +0 -1
- package/dist/isv/payments.js +0 -385
- package/dist/isv/payments.js.map +0 -1
package/dist/auth/http.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Shared undici Pool dispatchers for outbound Viva API calls.
|
|
3
4
|
*
|
|
@@ -8,8 +9,12 @@
|
|
|
8
9
|
* @see references/viva-docs/md/oauth2-authentication.txt:145 (environment URLs)
|
|
9
10
|
* @see references/viva-docs/md/oauth2-authentication.txt:145 (demo vs production hosts)
|
|
10
11
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.getAuthDispatcher = getAuthDispatcher;
|
|
14
|
+
exports.getApiDispatcher = getApiDispatcher;
|
|
15
|
+
exports.closeAllDispatchers = closeAllDispatchers;
|
|
16
|
+
const undici_1 = require("undici");
|
|
17
|
+
const common_js_1 = require("../types/common.js");
|
|
13
18
|
/**
|
|
14
19
|
* Pool connection settings shared across auth and API dispatchers.
|
|
15
20
|
* Keep-alive is enabled with a 30 s idle timeout and a 10-minute max.
|
|
@@ -33,11 +38,11 @@ const apiPools = new Map();
|
|
|
33
38
|
* Demo: https://demo-accounts.vivapayments.com
|
|
34
39
|
* Production: https://accounts.vivapayments.com
|
|
35
40
|
*/
|
|
36
|
-
|
|
41
|
+
function getAuthDispatcher(env) {
|
|
37
42
|
let pool = authPools.get(env);
|
|
38
43
|
if (!pool) {
|
|
39
|
-
const { authBaseUrl } = ENVIRONMENT_URLS[env];
|
|
40
|
-
pool = new Pool(authBaseUrl, POOL_OPTIONS);
|
|
44
|
+
const { authBaseUrl } = common_js_1.ENVIRONMENT_URLS[env];
|
|
45
|
+
pool = new undici_1.Pool(authBaseUrl, POOL_OPTIONS);
|
|
41
46
|
authPools.set(env, pool);
|
|
42
47
|
}
|
|
43
48
|
return pool;
|
|
@@ -49,11 +54,11 @@ export function getAuthDispatcher(env) {
|
|
|
49
54
|
* Demo: https://demo-api.vivapayments.com
|
|
50
55
|
* Production: https://api.vivapayments.com
|
|
51
56
|
*/
|
|
52
|
-
|
|
57
|
+
function getApiDispatcher(env) {
|
|
53
58
|
let pool = apiPools.get(env);
|
|
54
59
|
if (!pool) {
|
|
55
|
-
const { apiBaseUrl } = ENVIRONMENT_URLS[env];
|
|
56
|
-
pool = new Pool(apiBaseUrl, POOL_OPTIONS);
|
|
60
|
+
const { apiBaseUrl } = common_js_1.ENVIRONMENT_URLS[env];
|
|
61
|
+
pool = new undici_1.Pool(apiBaseUrl, POOL_OPTIONS);
|
|
57
62
|
apiPools.set(env, pool);
|
|
58
63
|
}
|
|
59
64
|
return pool;
|
|
@@ -65,7 +70,7 @@ export function getApiDispatcher(env) {
|
|
|
65
70
|
* Note: dispatchers are process-shared; tests MUST call `closeAllDispatchers()`
|
|
66
71
|
* in `afterAll` when injecting a `MockAgent` to avoid cross-test leaks.
|
|
67
72
|
*/
|
|
68
|
-
|
|
73
|
+
async function closeAllDispatchers() {
|
|
69
74
|
const closers = [];
|
|
70
75
|
for (const pool of authPools.values()) {
|
|
71
76
|
closers.push(pool.close());
|
package/dist/auth/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/auth/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/auth/http.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAyCH,8CAQC;AASD,4CAQC;AASD,kDAWC;AApFD,mCAA+C;AAC/C,kDAAsD;AAatD;;;;GAIG;AACH,MAAM,YAAY,GAA0C;IAC1D,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,OAAO;IAC5B,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,+CAA+C;AAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;AACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,GAAoB;IACpD,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,WAAW,EAAE,GAAG,4BAAgB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,GAAG,IAAI,aAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,GAAoB;IACnD,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,UAAU,EAAE,GAAG,4BAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,GAAG,IAAI,aAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB;IACvC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/auth/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* viva-payments-core/auth — barrel export.
|
|
3
4
|
*
|
|
@@ -6,13 +7,25 @@
|
|
|
6
7
|
* Exports auth strategies, token cache types, single-flight primitives,
|
|
7
8
|
* and HTTP dispatcher helpers for re-use by S3 (ISV calls).
|
|
8
9
|
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.closeAllDispatchers = exports.getApiDispatcher = exports.getAuthDispatcher = exports.noopRedisLock = exports.singleFlight = exports.AsyncMutex = exports.RedisTokenCache = exports.InMemoryTokenCache = exports.ResellerBasicAuthStrategy = exports.OAuth2ClientCredentialsStrategy = void 0;
|
|
9
12
|
// Strategies
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
var oauth2_strategy_js_1 = require("./oauth2-strategy.js");
|
|
14
|
+
Object.defineProperty(exports, "OAuth2ClientCredentialsStrategy", { enumerable: true, get: function () { return oauth2_strategy_js_1.OAuth2ClientCredentialsStrategy; } });
|
|
15
|
+
var reseller_strategy_js_1 = require("./reseller-strategy.js");
|
|
16
|
+
Object.defineProperty(exports, "ResellerBasicAuthStrategy", { enumerable: true, get: function () { return reseller_strategy_js_1.ResellerBasicAuthStrategy; } });
|
|
12
17
|
// Token cache
|
|
13
|
-
|
|
18
|
+
var token_cache_js_1 = require("./token-cache.js");
|
|
19
|
+
Object.defineProperty(exports, "InMemoryTokenCache", { enumerable: true, get: function () { return token_cache_js_1.InMemoryTokenCache; } });
|
|
20
|
+
Object.defineProperty(exports, "RedisTokenCache", { enumerable: true, get: function () { return token_cache_js_1.RedisTokenCache; } });
|
|
14
21
|
// Single-flight primitives (exposed for SaaS to wire Redis)
|
|
15
|
-
|
|
22
|
+
var single_flight_js_1 = require("./single-flight.js");
|
|
23
|
+
Object.defineProperty(exports, "AsyncMutex", { enumerable: true, get: function () { return single_flight_js_1.AsyncMutex; } });
|
|
24
|
+
Object.defineProperty(exports, "singleFlight", { enumerable: true, get: function () { return single_flight_js_1.singleFlight; } });
|
|
25
|
+
Object.defineProperty(exports, "noopRedisLock", { enumerable: true, get: function () { return single_flight_js_1.noopRedisLock; } });
|
|
16
26
|
// HTTP dispatcher (re-exported so S3 can share the same pools)
|
|
17
|
-
|
|
27
|
+
var http_js_1 = require("./http.js");
|
|
28
|
+
Object.defineProperty(exports, "getAuthDispatcher", { enumerable: true, get: function () { return http_js_1.getAuthDispatcher; } });
|
|
29
|
+
Object.defineProperty(exports, "getApiDispatcher", { enumerable: true, get: function () { return http_js_1.getApiDispatcher; } });
|
|
30
|
+
Object.defineProperty(exports, "closeAllDispatchers", { enumerable: true, get: function () { return http_js_1.closeAllDispatchers; } });
|
|
18
31
|
//# sourceMappingURL=index.js.map
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,aAAa;AACb,2DAAuE;AAA9D,qIAAA,+BAA+B,OAAA;AAGxC,+DAAmE;AAA1D,iIAAA,yBAAyB,OAAA;AAGlC,cAAc;AACd,mDAAuE;AAA9D,oHAAA,kBAAkB,OAAA;AAAE,iHAAA,eAAe,OAAA;AAG5C,4DAA4D;AAC5D,uDAA6E;AAApE,8GAAA,UAAU,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,iHAAA,aAAa,OAAA;AAGhD,+DAA+D;AAC/D,qCAAqF;AAA5E,4GAAA,iBAAiB,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,8GAAA,mBAAmB,OAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* OAuth 2.0 client_credentials strategy for Viva Wallet ISV API calls.
|
|
3
4
|
*
|
|
@@ -10,14 +11,16 @@
|
|
|
10
11
|
* @see references/viva-docs/md/oauth2-authentication.txt:179 (token response shape, expires_in)
|
|
11
12
|
* @see references/viva-docs/md/oauth2-authentication.txt:192 (3600s expiry)
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OAuth2ClientCredentialsStrategy = void 0;
|
|
16
|
+
const common_js_1 = require("../types/common.js");
|
|
17
|
+
const auth_error_js_1 = require("../errors/auth-error.js");
|
|
18
|
+
const api_error_js_1 = require("../errors/api-error.js");
|
|
19
|
+
const rate_limit_error_js_1 = require("../errors/rate-limit-error.js");
|
|
20
|
+
const single_flight_js_1 = require("./single-flight.js");
|
|
21
|
+
const token_cache_js_1 = require("./token-cache.js");
|
|
22
|
+
const http_js_1 = require("./http.js");
|
|
23
|
+
const index_js_1 = require("../observability/index.js");
|
|
21
24
|
// ---------------------------------------------------------------------------
|
|
22
25
|
// Strategy implementation
|
|
23
26
|
// ---------------------------------------------------------------------------
|
|
@@ -36,7 +39,7 @@ import { NoopMetricsHook } from '../observability/index.js';
|
|
|
36
39
|
* `getBearerToken` unconditionally enters `singleFlight` when the cache check
|
|
37
40
|
* is bypassed or fails.
|
|
38
41
|
*/
|
|
39
|
-
|
|
42
|
+
class OAuth2ClientCredentialsStrategy {
|
|
40
43
|
name = 'oauth2-client-credentials';
|
|
41
44
|
_env;
|
|
42
45
|
_clientId;
|
|
@@ -54,14 +57,14 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
54
57
|
this._env = opts.environment;
|
|
55
58
|
this._clientId = opts.clientId;
|
|
56
59
|
this._clientSecret = opts.clientSecret;
|
|
57
|
-
this._cache = opts.cache ?? new InMemoryTokenCache();
|
|
58
|
-
this._mutex = opts.mutex ?? new AsyncMutex();
|
|
60
|
+
this._cache = opts.cache ?? new token_cache_js_1.InMemoryTokenCache();
|
|
61
|
+
this._mutex = opts.mutex ?? new single_flight_js_1.AsyncMutex();
|
|
59
62
|
this._redisLock = opts.redisLock;
|
|
60
63
|
this._refreshSkewMs = opts.refreshSkewMs ?? 5 * 60_000;
|
|
61
64
|
this._fetchImpl = opts.fetchImpl ?? globalThis.fetch;
|
|
62
65
|
this._dispatcher = opts.dispatcher;
|
|
63
66
|
this._now = opts.now ?? (() => Date.now());
|
|
64
|
-
this._metrics = opts.metrics ?? new NoopMetricsHook();
|
|
67
|
+
this._metrics = opts.metrics ?? new index_js_1.NoopMetricsHook();
|
|
65
68
|
this._logger = opts.logger;
|
|
66
69
|
}
|
|
67
70
|
/** Exposes the token cache for auth-status inspection. */
|
|
@@ -99,7 +102,7 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
99
102
|
const locks = this._redisLock
|
|
100
103
|
? { redis: this._redisLock }
|
|
101
104
|
: { local: this._mutex };
|
|
102
|
-
return singleFlight(this._cacheKey, async () => {
|
|
105
|
+
return (0, single_flight_js_1.singleFlight)(this._cacheKey, async () => {
|
|
103
106
|
// Re-check cache after acquiring the lock; another waiter may have
|
|
104
107
|
// already refreshed the token while we were queued.
|
|
105
108
|
if (!forceRefresh) {
|
|
@@ -127,14 +130,14 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
127
130
|
return this._metrics.timeAsync('viva_auth_token_refresh_duration_seconds', () => this._doFetchToken());
|
|
128
131
|
}
|
|
129
132
|
async _doFetchToken() {
|
|
130
|
-
const { authBaseUrl } = ENVIRONMENT_URLS[this._env];
|
|
133
|
+
const { authBaseUrl } = common_js_1.ENVIRONMENT_URLS[this._env];
|
|
131
134
|
const url = `${authBaseUrl}/connect/token`;
|
|
132
135
|
// Base64-encode Client_ID:Client_Secret per Viva OAuth2 docs line 153.
|
|
133
136
|
// @see references/viva-docs/md/oauth2-authentication.txt:153
|
|
134
137
|
const credentials = Buffer.from(`${this._clientId}:${this._clientSecret}`).toString('base64');
|
|
135
138
|
const controller = new AbortController();
|
|
136
139
|
const timer = setTimeout(() => controller.abort(), 30_000);
|
|
137
|
-
const dispatcher = this._dispatcher ?? getAuthDispatcher(this._env);
|
|
140
|
+
const dispatcher = this._dispatcher ?? (0, http_js_1.getAuthDispatcher)(this._env);
|
|
138
141
|
let response;
|
|
139
142
|
try {
|
|
140
143
|
response = await this._fetchImpl(url, {
|
|
@@ -160,7 +163,7 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
160
163
|
catch (err) {
|
|
161
164
|
clearTimeout(timer);
|
|
162
165
|
// Network / abort error — caller handles retry policy (plan Auth Flow line 316).
|
|
163
|
-
throw new VivaApiError({
|
|
166
|
+
throw new api_error_js_1.VivaApiError({
|
|
164
167
|
message: `Network error fetching Viva token: ${String(err)}`,
|
|
165
168
|
cause: err,
|
|
166
169
|
});
|
|
@@ -168,7 +171,7 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
168
171
|
clearTimeout(timer);
|
|
169
172
|
const requestId = response.headers.get('CorrelationId') ?? undefined;
|
|
170
173
|
if (response.status === 401 || response.status === 403) {
|
|
171
|
-
throw new VivaAuthError({
|
|
174
|
+
throw new auth_error_js_1.VivaAuthError({
|
|
172
175
|
message: `Viva token endpoint returned ${response.status}. Check client credentials.`,
|
|
173
176
|
httpStatus: response.status,
|
|
174
177
|
requestId,
|
|
@@ -177,7 +180,7 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
177
180
|
if (response.status === 429) {
|
|
178
181
|
const retryAfterHeader = response.headers.get('Retry-After');
|
|
179
182
|
const retryAfterMs = retryAfterHeader ? parseFloat(retryAfterHeader) * 1000 : undefined;
|
|
180
|
-
throw new VivaRateLimitError({
|
|
183
|
+
throw new rate_limit_error_js_1.VivaRateLimitError({
|
|
181
184
|
message: 'Viva token endpoint rate-limited (429).',
|
|
182
185
|
httpStatus: 429,
|
|
183
186
|
requestId,
|
|
@@ -185,14 +188,14 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
185
188
|
});
|
|
186
189
|
}
|
|
187
190
|
if (response.status >= 500) {
|
|
188
|
-
throw new VivaRateLimitError({
|
|
191
|
+
throw new rate_limit_error_js_1.VivaRateLimitError({
|
|
189
192
|
message: `Viva token endpoint server error (${response.status}). Retriable.`,
|
|
190
193
|
httpStatus: response.status,
|
|
191
194
|
requestId,
|
|
192
195
|
});
|
|
193
196
|
}
|
|
194
197
|
if (!response.ok) {
|
|
195
|
-
throw new VivaApiError({
|
|
198
|
+
throw new api_error_js_1.VivaApiError({
|
|
196
199
|
message: `Unexpected status ${response.status} from Viva token endpoint.`,
|
|
197
200
|
httpStatus: response.status,
|
|
198
201
|
requestId,
|
|
@@ -214,4 +217,5 @@ export class OAuth2ClientCredentialsStrategy {
|
|
|
214
217
|
return body.access_token;
|
|
215
218
|
}
|
|
216
219
|
}
|
|
220
|
+
exports.OAuth2ClientCredentialsStrategy = OAuth2ClientCredentialsStrategy;
|
|
217
221
|
//# sourceMappingURL=oauth2-strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-strategy.js","sourceRoot":"","sources":["../../src/auth/oauth2-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG
|
|
1
|
+
{"version":3,"file":"oauth2-strategy.js","sourceRoot":"","sources":["../../src/auth/oauth2-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Reseller basic-auth strategy for ISV endpoints that require it.
|
|
3
4
|
*
|
|
@@ -17,6 +18,8 @@
|
|
|
17
18
|
* validated against a live Viva demo response before shipping.
|
|
18
19
|
* @see references/viva-docs/md/payment-isv-api.txt:1
|
|
19
20
|
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.ResellerBasicAuthStrategy = void 0;
|
|
20
23
|
/**
|
|
21
24
|
* Returns a Basic-auth Authorization header value for ISV reseller calls.
|
|
22
25
|
*
|
|
@@ -26,7 +29,7 @@
|
|
|
26
29
|
*
|
|
27
30
|
* `getAuthorizationHeader()` is exposed as a convenience alias.
|
|
28
31
|
*/
|
|
29
|
-
|
|
32
|
+
class ResellerBasicAuthStrategy {
|
|
30
33
|
name = 'reseller-basic-auth';
|
|
31
34
|
_resellerId;
|
|
32
35
|
_merchantId;
|
|
@@ -65,4 +68,5 @@ export class ResellerBasicAuthStrategy {
|
|
|
65
68
|
return this._resellerId;
|
|
66
69
|
}
|
|
67
70
|
}
|
|
71
|
+
exports.ResellerBasicAuthStrategy = ResellerBasicAuthStrategy;
|
|
68
72
|
//# sourceMappingURL=reseller-strategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reseller-strategy.js","sourceRoot":"","sources":["../../src/auth/reseller-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG
|
|
1
|
+
{"version":3,"file":"reseller-strategy.js","sourceRoot":"","sources":["../../src/auth/reseller-strategy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAaH;;;;;;;;GAQG;AACH,MAAa,yBAAyB;IAC3B,IAAI,GAAG,qBAAqB,CAAC;IAErB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,eAAe,CAAS;IAEzC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAA2B;QAC7E,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAAC,KAAkC;QACrD,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,sBAAsB;QACpB,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CACzB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE,CAC9C,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,SAAS,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAC1E,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AA7CD,8DA6CC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Single-flight primitives for token refresh.
|
|
3
4
|
*
|
|
@@ -12,12 +13,15 @@
|
|
|
12
13
|
* Plan ref (A1): forceRefresh on 401 recovery MUST go through the same
|
|
13
14
|
* single-flight to prevent token stampede during secret rotation.
|
|
14
15
|
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.AsyncMutex = exports.noopRedisLock = void 0;
|
|
18
|
+
exports.singleFlight = singleFlight;
|
|
15
19
|
/**
|
|
16
20
|
* A no-op sentinel implementation that throws if actually invoked.
|
|
17
21
|
* Satisfies the type when Redis is not configured; safe to pass as default
|
|
18
22
|
* so callers don't need to guard for undefined.
|
|
19
23
|
*/
|
|
20
|
-
|
|
24
|
+
exports.noopRedisLock = {
|
|
21
25
|
acquire() {
|
|
22
26
|
throw new Error('RedisLockClient not configured. Provide a concrete implementation.');
|
|
23
27
|
},
|
|
@@ -40,7 +44,7 @@ export const noopRedisLock = {
|
|
|
40
44
|
* Internally, each acquire appends a promise to a chain. When the current
|
|
41
45
|
* holder calls release it resolves the next waiter.
|
|
42
46
|
*/
|
|
43
|
-
|
|
47
|
+
class AsyncMutex {
|
|
44
48
|
_tail = Promise.resolve();
|
|
45
49
|
/**
|
|
46
50
|
* Acquires the mutex. Resolves when this caller holds the lock.
|
|
@@ -61,6 +65,7 @@ export class AsyncMutex {
|
|
|
61
65
|
return prevTail.then(() => resolve);
|
|
62
66
|
}
|
|
63
67
|
}
|
|
68
|
+
exports.AsyncMutex = AsyncMutex;
|
|
64
69
|
/**
|
|
65
70
|
* Per-key in-flight promises. When a call is in progress, all concurrent
|
|
66
71
|
* callers with the same key share this promise instead of calling fn() again.
|
|
@@ -89,7 +94,7 @@ const inFlight = new Map();
|
|
|
89
94
|
*
|
|
90
95
|
* @see plan line 311 — Redis lock key pattern: `viva:isv:token:lock:{client_id}`
|
|
91
96
|
*/
|
|
92
|
-
|
|
97
|
+
function singleFlight(key, fn, locks) {
|
|
93
98
|
if ('local' in locks) {
|
|
94
99
|
// ---- In-process path ----
|
|
95
100
|
// Fast path: if there is already an in-flight promise, piggy-back on it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-flight.js","sourceRoot":"","sources":["../../src/auth/single-flight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"single-flight.js","sourceRoot":"","sources":["../../src/auth/single-flight.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/token-cache.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* TokenCache interface and built-in implementations.
|
|
3
4
|
*
|
|
@@ -5,10 +6,12 @@
|
|
|
5
6
|
* `RedisTokenCache` is declared as an interface; the SaaS layer provides
|
|
6
7
|
* the concrete implementation via dependency injection (plan P11, Q3).
|
|
7
8
|
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.RedisTokenCache = exports.InMemoryTokenCache = void 0;
|
|
8
11
|
// ---------------------------------------------------------------------------
|
|
9
12
|
// In-memory implementation
|
|
10
13
|
// ---------------------------------------------------------------------------
|
|
11
|
-
|
|
14
|
+
class InMemoryTokenCache {
|
|
12
15
|
_store = new Map();
|
|
13
16
|
/** Injectable clock; defaults to `Date.now`. Allows time-travel in tests. */
|
|
14
17
|
_now;
|
|
@@ -33,11 +36,12 @@ export class InMemoryTokenCache {
|
|
|
33
36
|
this._store.delete(key);
|
|
34
37
|
}
|
|
35
38
|
}
|
|
39
|
+
exports.InMemoryTokenCache = InMemoryTokenCache;
|
|
36
40
|
/**
|
|
37
41
|
* Thin wrapper that adapts a `RedisTokenCacheClient` to the `TokenCache`
|
|
38
42
|
* interface by JSON-serialising `CachedToken` values.
|
|
39
43
|
*/
|
|
40
|
-
|
|
44
|
+
class RedisTokenCache {
|
|
41
45
|
client;
|
|
42
46
|
constructor(client) {
|
|
43
47
|
this.client = client;
|
|
@@ -56,4 +60,5 @@ export class RedisTokenCache {
|
|
|
56
60
|
await this.client.delete(key);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
63
|
+
exports.RedisTokenCache = RedisTokenCache;
|
|
59
64
|
//# sourceMappingURL=token-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../src/auth/token-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../src/auth/token-cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAcH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAa,kBAAkB;IACZ,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEzD,6EAA6E;IAC5D,IAAI,CAAe;IAEpC,YAAY,IAA6B;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,mEAAmE;QACnE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF;AA5BD,gDA4BC;AAqBD;;;GAGG;AACH,MAAa,eAAe;IACG;IAA7B,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE9D,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAkB;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CACF;AAjBD,0CAiBC"}
|
package/dist/errors/api-error.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VivaApiError = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
2
5
|
/**
|
|
3
6
|
* Thrown when the Viva API returns a 4xx or 5xx response on a non-auth call,
|
|
4
7
|
* or when a network-level error occurs.
|
|
@@ -8,11 +11,12 @@ import { VivaError } from './base.js';
|
|
|
8
11
|
*
|
|
9
12
|
* Maps to `MedusaError(Types.PAYMENT_AUTHORIZATION_ERROR)` in the adapter.
|
|
10
13
|
*/
|
|
11
|
-
|
|
14
|
+
class VivaApiError extends base_js_1.VivaError {
|
|
12
15
|
code = 'VIVA_API_ERROR';
|
|
13
16
|
constructor(opts) {
|
|
14
17
|
super(opts);
|
|
15
18
|
this.name = 'VivaApiError';
|
|
16
19
|
}
|
|
17
20
|
}
|
|
21
|
+
exports.VivaApiError = VivaApiError;
|
|
18
22
|
//# sourceMappingURL=api-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/errors/api-error.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../src/errors/api-error.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAE7D;;;;;;;;GAQG;AACH,MAAa,YAAa,SAAQ,mBAAS;IAChC,IAAI,GAAG,gBAAyB,CAAC;IAE1C,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAPD,oCAOC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VivaAuthError = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
2
5
|
/**
|
|
3
6
|
* Thrown when authentication with Viva fails.
|
|
4
7
|
*
|
|
@@ -7,11 +10,12 @@ import { VivaError } from './base.js';
|
|
|
7
10
|
*
|
|
8
11
|
* Maps to `MedusaError(Types.UNAUTHORIZED)` in the Medusa adapter layer.
|
|
9
12
|
*/
|
|
10
|
-
|
|
13
|
+
class VivaAuthError extends base_js_1.VivaError {
|
|
11
14
|
code = 'VIVA_AUTH_ERROR';
|
|
12
15
|
constructor(opts) {
|
|
13
16
|
super(opts);
|
|
14
17
|
this.name = 'VivaAuthError';
|
|
15
18
|
}
|
|
16
19
|
}
|
|
20
|
+
exports.VivaAuthError = VivaAuthError;
|
|
17
21
|
//# sourceMappingURL=auth-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-error.js","sourceRoot":"","sources":["../../src/errors/auth-error.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"auth-error.js","sourceRoot":"","sources":["../../src/errors/auth-error.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAE7D;;;;;;;GAOG;AACH,MAAa,aAAc,SAAQ,mBAAS;IACjC,IAAI,GAAG,iBAA0B,CAAC;IAE3C,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAPD,sCAOC"}
|
package/dist/errors/base.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Abstract base class for all Viva Wallet errors.
|
|
3
4
|
*
|
|
@@ -6,7 +7,9 @@
|
|
|
6
7
|
*
|
|
7
8
|
* Subclasses implement `abstract readonly code: string` with a literal value.
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.VivaError = void 0;
|
|
12
|
+
class VivaError extends Error {
|
|
10
13
|
/** Viva's own error code extracted from the response body, if available. */
|
|
11
14
|
vivaCode;
|
|
12
15
|
/** HTTP status from the Viva API response, if available. */
|
|
@@ -48,4 +51,5 @@ export class VivaError extends Error {
|
|
|
48
51
|
}
|
|
49
52
|
}
|
|
50
53
|
}
|
|
54
|
+
exports.VivaError = VivaError;
|
|
51
55
|
//# sourceMappingURL=base.js.map
|
package/dist/errors/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/errors/base.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAuBH,MAAsB,SAAU,SAAQ,KAAK;IAO3C,4EAA4E;IACnE,QAAQ,CAAqB;IAEtC,4DAA4D;IACnD,UAAU,CAAqB;IAExC;;;OAGG;IACM,SAAS,CAAqB;IAEvC;;;;OAIG;IACM,iBAAiB,CAAqB;IAE/C;;;;OAIG;IACM,WAAW,CAAqB;IAEzC,sDAAsD;IACpC,KAAK,CAAU;IAEjC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAoB;QAC/G,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,qEAAqE;QACrE,oCAAoC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,mEAAmE;QACnE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;CACF;AAtDD,8BAsDC"}
|
package/dist/errors/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* viva-payments-core/errors — barrel export.
|
|
3
4
|
*
|
|
@@ -6,11 +7,20 @@
|
|
|
6
7
|
* All error classes extend `VivaError`. Callers can do:
|
|
7
8
|
* import { VivaError, VivaAuthError, VivaRateLimitError } from 'viva-payments-core/errors';
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.VivaModeMismatchError = exports.VivaRateLimitError = exports.VivaWebhookError = exports.VivaValidationError = exports.VivaApiError = exports.VivaAuthError = exports.VivaError = void 0;
|
|
12
|
+
var base_js_1 = require("./base.js");
|
|
13
|
+
Object.defineProperty(exports, "VivaError", { enumerable: true, get: function () { return base_js_1.VivaError; } });
|
|
14
|
+
var auth_error_js_1 = require("./auth-error.js");
|
|
15
|
+
Object.defineProperty(exports, "VivaAuthError", { enumerable: true, get: function () { return auth_error_js_1.VivaAuthError; } });
|
|
16
|
+
var api_error_js_1 = require("./api-error.js");
|
|
17
|
+
Object.defineProperty(exports, "VivaApiError", { enumerable: true, get: function () { return api_error_js_1.VivaApiError; } });
|
|
18
|
+
var validation_error_js_1 = require("./validation-error.js");
|
|
19
|
+
Object.defineProperty(exports, "VivaValidationError", { enumerable: true, get: function () { return validation_error_js_1.VivaValidationError; } });
|
|
20
|
+
var webhook_error_js_1 = require("./webhook-error.js");
|
|
21
|
+
Object.defineProperty(exports, "VivaWebhookError", { enumerable: true, get: function () { return webhook_error_js_1.VivaWebhookError; } });
|
|
22
|
+
var rate_limit_error_js_1 = require("./rate-limit-error.js");
|
|
23
|
+
Object.defineProperty(exports, "VivaRateLimitError", { enumerable: true, get: function () { return rate_limit_error_js_1.VivaRateLimitError; } });
|
|
24
|
+
var mode_mismatch_error_js_1 = require("./mode-mismatch-error.js");
|
|
25
|
+
Object.defineProperty(exports, "VivaModeMismatchError", { enumerable: true, get: function () { return mode_mismatch_error_js_1.VivaModeMismatchError; } });
|
|
16
26
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,qCAAsC;AAA7B,oGAAA,SAAS,OAAA;AAElB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,6DAA2D;AAAlD,yHAAA,kBAAkB,OAAA;AAE3B,mEAAiE;AAAxD,+HAAA,qBAAqB,OAAA"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VivaModeMismatchError = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
2
5
|
/**
|
|
3
6
|
* Thrown when a code path is invoked under the wrong plugin mode.
|
|
4
7
|
*
|
|
@@ -12,11 +15,12 @@ import { VivaError } from './base.js';
|
|
|
12
15
|
*
|
|
13
16
|
* Maps to `MedusaError(Types.NOT_ALLOWED)` in the adapter layer.
|
|
14
17
|
*/
|
|
15
|
-
|
|
18
|
+
class VivaModeMismatchError extends base_js_1.VivaError {
|
|
16
19
|
code = 'VIVA_MODE_MISMATCH';
|
|
17
20
|
constructor(opts) {
|
|
18
21
|
super(opts);
|
|
19
22
|
this.name = 'VivaModeMismatchError';
|
|
20
23
|
}
|
|
21
24
|
}
|
|
25
|
+
exports.VivaModeMismatchError = VivaModeMismatchError;
|
|
22
26
|
//# sourceMappingURL=mode-mismatch-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode-mismatch-error.js","sourceRoot":"","sources":["../../src/errors/mode-mismatch-error.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"mode-mismatch-error.js","sourceRoot":"","sources":["../../src/errors/mode-mismatch-error.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAE7D;;;;;;;;;;;;GAYG;AACH,MAAa,qBAAsB,SAAQ,mBAAS;IACzC,IAAI,GAAG,oBAA6B,CAAC;IAE9C,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAPD,sDAOC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VivaRateLimitError = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
2
5
|
/**
|
|
3
6
|
* Thrown when Viva returns HTTP 429 (Too Many Requests) or a retriable 5xx.
|
|
4
7
|
*
|
|
@@ -6,7 +9,7 @@ import { VivaError } from './base.js';
|
|
|
6
9
|
* `retryAfterMs` when present; otherwise falls back to exponential backoff
|
|
7
10
|
* per plan Auth Flow line 319.
|
|
8
11
|
*/
|
|
9
|
-
|
|
12
|
+
class VivaRateLimitError extends base_js_1.VivaError {
|
|
10
13
|
code = 'VIVA_RATE_LIMIT_ERROR';
|
|
11
14
|
retriable = true;
|
|
12
15
|
/** Milliseconds to wait before retrying, from `Retry-After` header. */
|
|
@@ -17,4 +20,5 @@ export class VivaRateLimitError extends VivaError {
|
|
|
17
20
|
this.retryAfterMs = opts.retryAfterMs;
|
|
18
21
|
}
|
|
19
22
|
}
|
|
23
|
+
exports.VivaRateLimitError = VivaRateLimitError;
|
|
20
24
|
//# sourceMappingURL=rate-limit-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-error.js","sourceRoot":"","sources":["../../src/errors/rate-limit-error.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"rate-limit-error.js","sourceRoot":"","sources":["../../src/errors/rate-limit-error.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAO7D;;;;;;GAMG;AACH,MAAa,kBAAmB,SAAQ,mBAAS;IACtC,IAAI,GAAG,uBAAgC,CAAC;IACxC,SAAS,GAAG,IAAa,CAAC;IAEnC,uEAAuE;IAC9D,YAAY,CAAqB;IAE1C,YAAY,IAA+B;QACzC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;CACF;AAZD,gDAYC"}
|