@blocklet/payment-broker-client 1.20.17
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/examples/README.md +277 -0
- package/examples/browser/README.md +119 -0
- package/examples/browser/simple-example.js +223 -0
- package/examples/nodejs/README.md +180 -0
- package/examples/nodejs/deploy-example.mjs +200 -0
- package/examples/nodejs/package.json +30 -0
- package/lib/adapters/config/browser.d.ts +12 -0
- package/lib/adapters/config/browser.d.ts.map +1 -0
- package/lib/adapters/config/browser.js +48 -0
- package/lib/adapters/config/browser.js.map +1 -0
- package/lib/adapters/config/node.d.ts +13 -0
- package/lib/adapters/config/node.d.ts.map +1 -0
- package/lib/adapters/config/node.js +62 -0
- package/lib/adapters/config/node.js.map +1 -0
- package/lib/adapters/http/browser.d.ts +12 -0
- package/lib/adapters/http/browser.d.ts.map +1 -0
- package/lib/adapters/http/browser.js +50 -0
- package/lib/adapters/http/browser.js.map +1 -0
- package/lib/adapters/http/node.d.ts +12 -0
- package/lib/adapters/http/node.d.ts.map +1 -0
- package/lib/adapters/http/node.js +30 -0
- package/lib/adapters/http/node.js.map +1 -0
- package/lib/browser/adapters/config/browser.d.ts +12 -0
- package/lib/browser/adapters/config/browser.d.ts.map +1 -0
- package/lib/browser/adapters/config/node.d.ts +13 -0
- package/lib/browser/adapters/config/node.d.ts.map +1 -0
- package/lib/browser/adapters/http/browser.d.ts +12 -0
- package/lib/browser/adapters/http/browser.d.ts.map +1 -0
- package/lib/browser/adapters/http/node.d.ts +12 -0
- package/lib/browser/adapters/http/node.d.ts.map +1 -0
- package/lib/browser/browser/factory.d.ts +19 -0
- package/lib/browser/browser/factory.d.ts.map +1 -0
- package/lib/browser/browser/index.d.ts +9 -0
- package/lib/browser/browser/index.d.ts.map +1 -0
- package/lib/browser/core/client.d.ts +29 -0
- package/lib/browser/core/client.d.ts.map +1 -0
- package/lib/browser/core/deployment.d.ts +20 -0
- package/lib/browser/core/deployment.d.ts.map +1 -0
- package/lib/browser/core/errors.d.ts +15 -0
- package/lib/browser/core/errors.d.ts.map +1 -0
- package/lib/browser/core/index.d.ts +10 -0
- package/lib/browser/core/index.d.ts.map +1 -0
- package/lib/browser/core/interfaces.d.ts +24 -0
- package/lib/browser/core/interfaces.d.ts.map +1 -0
- package/lib/browser/core/logger.d.ts +8 -0
- package/lib/browser/core/logger.d.ts.map +1 -0
- package/lib/browser/core/polling.d.ts +23 -0
- package/lib/browser/core/polling.d.ts.map +1 -0
- package/lib/browser/core/session.d.ts +31 -0
- package/lib/browser/core/session.d.ts.map +1 -0
- package/lib/browser/core/types.d.ts +175 -0
- package/lib/browser/core/types.d.ts.map +1 -0
- package/lib/browser/core/utils.d.ts +27 -0
- package/lib/browser/core/utils.d.ts.map +1 -0
- package/lib/browser/factory.d.ts +19 -0
- package/lib/browser/factory.d.ts.map +1 -0
- package/lib/browser/factory.js +30 -0
- package/lib/browser/factory.js.map +1 -0
- package/lib/browser/index.d.ts +8 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +973 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/node/factory.d.ts +9 -0
- package/lib/browser/node/factory.d.ts.map +1 -0
- package/lib/browser/node/index.d.ts +8 -0
- package/lib/browser/node/index.d.ts.map +1 -0
- package/lib/core/client.d.ts +29 -0
- package/lib/core/client.d.ts.map +1 -0
- package/lib/core/client.js +150 -0
- package/lib/core/client.js.map +1 -0
- package/lib/core/deployment.d.ts +20 -0
- package/lib/core/deployment.d.ts.map +1 -0
- package/lib/core/deployment.js +184 -0
- package/lib/core/deployment.js.map +1 -0
- package/lib/core/errors.d.ts +15 -0
- package/lib/core/errors.d.ts.map +1 -0
- package/lib/core/errors.js +21 -0
- package/lib/core/errors.js.map +1 -0
- package/lib/core/index.d.ts +10 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/index.js +32 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/interfaces.d.ts +24 -0
- package/lib/core/interfaces.d.ts.map +1 -0
- package/lib/core/interfaces.js +4 -0
- package/lib/core/interfaces.js.map +1 -0
- package/lib/core/logger.d.ts +8 -0
- package/lib/core/logger.d.ts.map +1 -0
- package/lib/core/logger.js +39 -0
- package/lib/core/logger.js.map +1 -0
- package/lib/core/polling.d.ts +23 -0
- package/lib/core/polling.d.ts.map +1 -0
- package/lib/core/polling.js +97 -0
- package/lib/core/polling.js.map +1 -0
- package/lib/core/session.d.ts +31 -0
- package/lib/core/session.d.ts.map +1 -0
- package/lib/core/session.js +202 -0
- package/lib/core/session.js.map +1 -0
- package/lib/core/types.d.ts +175 -0
- package/lib/core/types.d.ts.map +1 -0
- package/lib/core/types.js +48 -0
- package/lib/core/types.js.map +1 -0
- package/lib/core/utils.d.ts +27 -0
- package/lib/core/utils.d.ts.map +1 -0
- package/lib/core/utils.js +181 -0
- package/lib/core/utils.js.map +1 -0
- package/lib/index.d.ts +484 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.esm.js +969 -0
- package/lib/index.esm.js.map +1 -0
- package/lib/index.js +984 -0
- package/lib/index.js.map +1 -0
- package/lib/node/adapters/config/browser.d.ts +12 -0
- package/lib/node/adapters/config/browser.d.ts.map +1 -0
- package/lib/node/adapters/config/node.d.ts +13 -0
- package/lib/node/adapters/config/node.d.ts.map +1 -0
- package/lib/node/adapters/http/browser.d.ts +12 -0
- package/lib/node/adapters/http/browser.d.ts.map +1 -0
- package/lib/node/adapters/http/node.d.ts +12 -0
- package/lib/node/adapters/http/node.d.ts.map +1 -0
- package/lib/node/browser/factory.d.ts +19 -0
- package/lib/node/browser/factory.d.ts.map +1 -0
- package/lib/node/browser/index.d.ts +9 -0
- package/lib/node/browser/index.d.ts.map +1 -0
- package/lib/node/core/client.d.ts +29 -0
- package/lib/node/core/client.d.ts.map +1 -0
- package/lib/node/core/deployment.d.ts +20 -0
- package/lib/node/core/deployment.d.ts.map +1 -0
- package/lib/node/core/errors.d.ts +15 -0
- package/lib/node/core/errors.d.ts.map +1 -0
- package/lib/node/core/index.d.ts +10 -0
- package/lib/node/core/index.d.ts.map +1 -0
- package/lib/node/core/interfaces.d.ts +24 -0
- package/lib/node/core/interfaces.d.ts.map +1 -0
- package/lib/node/core/logger.d.ts +8 -0
- package/lib/node/core/logger.d.ts.map +1 -0
- package/lib/node/core/polling.d.ts +23 -0
- package/lib/node/core/polling.d.ts.map +1 -0
- package/lib/node/core/session.d.ts +31 -0
- package/lib/node/core/session.d.ts.map +1 -0
- package/lib/node/core/types.d.ts +175 -0
- package/lib/node/core/types.d.ts.map +1 -0
- package/lib/node/core/utils.d.ts +27 -0
- package/lib/node/core/utils.d.ts.map +1 -0
- package/lib/node/factory.d.ts +9 -0
- package/lib/node/factory.d.ts.map +1 -0
- package/lib/node/factory.js +34 -0
- package/lib/node/factory.js.map +1 -0
- package/lib/node/index.d.ts +8 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +984 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/node/factory.d.ts +9 -0
- package/lib/node/node/factory.d.ts.map +1 -0
- package/lib/node/node/index.d.ts +8 -0
- package/lib/node/node/index.d.ts.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PollingManager } from './polling';
|
|
2
|
+
/**
|
|
3
|
+
* HTTP request interface - abstracts HTTP implementation for different environments
|
|
4
|
+
*/
|
|
5
|
+
export interface HttpClient {
|
|
6
|
+
get(url: string): Promise<any>;
|
|
7
|
+
post(url: string, data: any): Promise<any>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Configuration provider interface - abstracts configuration retrieval for different environments
|
|
11
|
+
* Only responsible for getting raw blocklet information, unified processing logic is in SessionManager
|
|
12
|
+
*/
|
|
13
|
+
export interface ConfigProvider {
|
|
14
|
+
getBlockletInfo(): Promise<any>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Unified manager dependencies
|
|
18
|
+
*/
|
|
19
|
+
export interface ManagerDependencies {
|
|
20
|
+
httpClient: HttpClient;
|
|
21
|
+
configProvider: ConfigProvider;
|
|
22
|
+
pollingManager: PollingManager;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":";AAAA,iDAAiD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const logger: {
|
|
2
|
+
debug: (message: string, data?: any) => void;
|
|
3
|
+
info: (message: string, data?: any) => void;
|
|
4
|
+
warn: (message: string, data?: any) => void;
|
|
5
|
+
error: (message: string, data?: any) => void;
|
|
6
|
+
};
|
|
7
|
+
export default logger;
|
|
8
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,MAAM;qBACO,MAAM,SAAS,GAAG;oBAMnB,MAAM,SAAS,GAAG;oBAMlB,MAAM,SAAS,GAAG;qBAKjB,MAAM,SAAS,GAAG;CAKpC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable import/prefer-default-export */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
// Internal debug logger - only logs when BROKER_CLIENT_DEBUG=true
|
|
5
|
+
const isDebugEnabled = (() => {
|
|
6
|
+
try {
|
|
7
|
+
return typeof process !== 'undefined' && process.env?.BROKER_CLIENT_DEBUG === 'true';
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
// In browser environments, check localStorage or global variables
|
|
11
|
+
return typeof window !== 'undefined' && window.BROKER_CLIENT_DEBUG === 'true';
|
|
12
|
+
}
|
|
13
|
+
})();
|
|
14
|
+
const logger = {
|
|
15
|
+
debug: (message, data) => {
|
|
16
|
+
if (isDebugEnabled) {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.log(`[BROKER-CLIENT-DEBUG] ${message}`, data ? JSON.stringify(data) : '');
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
info: (message, data) => {
|
|
22
|
+
if (isDebugEnabled) {
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.log(`[BROKER-CLIENT-DEBUG] ${message}`, data ? JSON.stringify(data) : '');
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
warn: (message, data) => {
|
|
28
|
+
if (isDebugEnabled) {
|
|
29
|
+
console.warn(`[BROKER-CLIENT-DEBUG] ${message}`, data ? JSON.stringify(data) : '');
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
error: (message, data) => {
|
|
33
|
+
if (isDebugEnabled) {
|
|
34
|
+
console.error(`[BROKER-CLIENT-DEBUG] ${message}`, data ? JSON.stringify(data) : '');
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.default = logger;
|
|
39
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":";AAAA,iDAAiD;;AAEjD,kEAAkE;AAClE,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;IAC3B,IAAI,CAAC;QACH,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,OAAO,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,mBAAmB,KAAK,MAAM,CAAC;IACzF,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACrC,IAAI,cAAc,EAAE,CAAC;YACnB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACpC,IAAI,cAAc,EAAE,CAAC;YACnB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACpC,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,IAAU,EAAE,EAAE;QACrC,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface PollOptions {
|
|
2
|
+
checkCondition: () => Promise<any>;
|
|
3
|
+
stepName?: string;
|
|
4
|
+
interval?: number;
|
|
5
|
+
maxAttempts?: number;
|
|
6
|
+
backoffStrategy?: 'linear' | 'exponential';
|
|
7
|
+
onProgress?: (attempt: number, maxAttempts: number) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare class PollingManager {
|
|
10
|
+
private baseInterval;
|
|
11
|
+
private maxAttempts;
|
|
12
|
+
private backoffStrategy;
|
|
13
|
+
constructor(options?: {
|
|
14
|
+
baseInterval?: number;
|
|
15
|
+
maxAttempts?: number;
|
|
16
|
+
backoffStrategy?: 'linear' | 'exponential';
|
|
17
|
+
});
|
|
18
|
+
poll<T>(options: PollOptions): Promise<T>;
|
|
19
|
+
private calculateWaitTime;
|
|
20
|
+
pollWithTimeout<T>(options: PollOptions, timeoutMs: number): Promise<T>;
|
|
21
|
+
pollBatch<T>(items: T[], checkCondition: (item: T) => Promise<boolean>, options?: Omit<PollOptions, 'checkCondition'>): Promise<T[]>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=polling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/core/polling.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAsC;gBAG3D,OAAO,GAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;KACvC;IAOF,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAgD/C,OAAO,CAAC,iBAAiB;IAazB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IASjE,SAAS,CAAC,CAAC,EACf,KAAK,EAAE,CAAC,EAAE,EACV,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAC7C,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAM,GAChD,OAAO,CAAC,CAAC,EAAE,CAAC;CA+BhB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable import/prefer-default-export */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PollingManager = void 0;
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const errors_1 = require("./errors");
|
|
10
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
11
|
+
class PollingManager {
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.baseInterval = 1000;
|
|
14
|
+
this.maxAttempts = 60;
|
|
15
|
+
this.backoffStrategy = 'linear';
|
|
16
|
+
this.baseInterval = options.baseInterval || 1000;
|
|
17
|
+
this.maxAttempts = options.maxAttempts || 60;
|
|
18
|
+
this.backoffStrategy = options.backoffStrategy || 'linear';
|
|
19
|
+
}
|
|
20
|
+
async poll(options) {
|
|
21
|
+
const { checkCondition, stepName = 'polling', interval = this.baseInterval, maxAttempts = this.maxAttempts, backoffStrategy = this.backoffStrategy, onProgress, } = options;
|
|
22
|
+
for (let attempts = 1; attempts <= maxAttempts; attempts++) {
|
|
23
|
+
try {
|
|
24
|
+
logger_1.default.debug(`${stepName} - Attempt ${attempts}/${maxAttempts}`);
|
|
25
|
+
// eslint-disable-next-line no-await-in-loop
|
|
26
|
+
const result = await checkCondition();
|
|
27
|
+
if (result !== null && result !== false && result !== undefined) {
|
|
28
|
+
logger_1.default.debug(`${stepName} - Success on attempt ${attempts}`);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
onProgress?.(attempts, maxAttempts);
|
|
32
|
+
if (attempts < maxAttempts) {
|
|
33
|
+
const waitTime = this.calculateWaitTime(attempts, interval, backoffStrategy);
|
|
34
|
+
logger_1.default.debug(`${stepName} - Waiting ${waitTime}ms before next attempt`);
|
|
35
|
+
// eslint-disable-next-line no-await-in-loop
|
|
36
|
+
await utils_1.timeUtils.sleep(waitTime);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
logger_1.default.error(`${stepName} - Error on attempt ${attempts}:`, error.message);
|
|
41
|
+
if (attempts === maxAttempts) {
|
|
42
|
+
throw (0, errors_1.createDeploymentError)(`${stepName} failed after ${maxAttempts} attempts: ${error.message}`, 'TIMEOUT_ERROR');
|
|
43
|
+
}
|
|
44
|
+
const waitTime = this.calculateWaitTime(attempts, interval, backoffStrategy);
|
|
45
|
+
// eslint-disable-next-line no-await-in-loop
|
|
46
|
+
await utils_1.timeUtils.sleep(waitTime);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
throw (0, errors_1.createDeploymentError)(`${stepName} timed out after ${maxAttempts} attempts`, 'TIMEOUT_ERROR');
|
|
50
|
+
}
|
|
51
|
+
calculateWaitTime(attempt, baseInterval, strategy) {
|
|
52
|
+
switch (strategy) {
|
|
53
|
+
case 'linear':
|
|
54
|
+
return baseInterval;
|
|
55
|
+
case 'exponential':
|
|
56
|
+
return Math.min(baseInterval * 2 ** (attempt - 1), 30000);
|
|
57
|
+
default:
|
|
58
|
+
return baseInterval;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
pollWithTimeout(options, timeoutMs) {
|
|
62
|
+
return Promise.race([
|
|
63
|
+
this.poll(options),
|
|
64
|
+
new Promise((_, reject) => {
|
|
65
|
+
setTimeout(() => reject((0, errors_1.createDeploymentError)('Polling timed out', 'TIMEOUT_ERROR')), timeoutMs);
|
|
66
|
+
}),
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
async pollBatch(items, checkCondition, options = {}) {
|
|
70
|
+
const completed = [];
|
|
71
|
+
const remaining = [...items];
|
|
72
|
+
while (remaining.length > 0) {
|
|
73
|
+
const batchPromises = remaining.map(async (item) => {
|
|
74
|
+
const isComplete = await checkCondition(item);
|
|
75
|
+
return { item, isComplete };
|
|
76
|
+
});
|
|
77
|
+
// eslint-disable-next-line no-await-in-loop
|
|
78
|
+
const results = await Promise.all(batchPromises);
|
|
79
|
+
results.forEach(({ item, isComplete }) => {
|
|
80
|
+
if (isComplete) {
|
|
81
|
+
completed.push(item);
|
|
82
|
+
const index = remaining.indexOf(item);
|
|
83
|
+
if (index > -1) {
|
|
84
|
+
remaining.splice(index, 1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (remaining.length > 0) {
|
|
89
|
+
// eslint-disable-next-line no-await-in-loop
|
|
90
|
+
await utils_1.timeUtils.sleep(options.interval || this.baseInterval);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return completed;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.PollingManager = PollingManager;
|
|
97
|
+
//# sourceMappingURL=polling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/core/polling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ManagerDependencies } from './interfaces';
|
|
2
|
+
import { BrokerConfig, PaymentSession, DeploymentOptions } from './types';
|
|
3
|
+
export declare class SessionManager {
|
|
4
|
+
private config;
|
|
5
|
+
private deps;
|
|
6
|
+
private cachedConfig?;
|
|
7
|
+
constructor(config: BrokerConfig, deps: ManagerDependencies);
|
|
8
|
+
getConfigInfo(): Promise<{
|
|
9
|
+
linkId: string;
|
|
10
|
+
mountPoint: string;
|
|
11
|
+
paymentKitDid: string;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Get linkId
|
|
15
|
+
*/
|
|
16
|
+
getLinkId(): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Get mountPoint
|
|
19
|
+
*/
|
|
20
|
+
getMountPoint(): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Get paymentKitDid
|
|
23
|
+
*/
|
|
24
|
+
getPaymentKitDid(): Promise<string>;
|
|
25
|
+
checkCacheCheckoutId(checkoutId: string): Promise<string>;
|
|
26
|
+
createSession(options?: Partial<DeploymentOptions>): Promise<PaymentSession>;
|
|
27
|
+
getSessionStatus(sessionId: string): Promise<any>;
|
|
28
|
+
waitForPayment(sessionId: string): Promise<any>;
|
|
29
|
+
getOrderDetails(sessionId: string): Promise<any>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAKzF,qBAAa,cAAc;IAIvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAJd,OAAO,CAAC,YAAY,CAAC,CAAgE;gBAG3E,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,mBAAmB;IAG7B,aAAa,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA6C7F;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKlC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBzD,aAAa,CAAC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkDhF,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBvD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCzC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAsBvD"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable import/prefer-default-export */
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SessionManager = void 0;
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const errors_1 = require("./errors");
|
|
11
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
12
|
+
class SessionManager {
|
|
13
|
+
constructor(config, deps) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.deps = deps;
|
|
16
|
+
}
|
|
17
|
+
async getConfigInfo() {
|
|
18
|
+
if (this.cachedConfig) {
|
|
19
|
+
return this.cachedConfig;
|
|
20
|
+
}
|
|
21
|
+
const blockletInfo = await this.deps.configProvider.getBlockletInfo();
|
|
22
|
+
const paymentLinkKey = this.config.paymentLinkKey || 'PAYMENT_LINK_ID';
|
|
23
|
+
const linkId = blockletInfo[paymentLinkKey];
|
|
24
|
+
if (!linkId) {
|
|
25
|
+
throw (0, errors_1.createDeploymentError)(`Payment link ID not found using key '${paymentLinkKey}' in blocklet configuration`, 'VALIDATION_ERROR', {
|
|
26
|
+
step: 'creating_session',
|
|
27
|
+
recovery: {
|
|
28
|
+
canRetry: false,
|
|
29
|
+
suggestions: [
|
|
30
|
+
`Make sure ${paymentLinkKey} is set in the environment`,
|
|
31
|
+
'Check if the Payment Kit is properly configured',
|
|
32
|
+
'Verify the paymentLinkKey configuration is correct',
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const paymentKitDid = 'z2qaCNvKMv5GjouKdcDWexv6WqtHbpNPQDnAk';
|
|
38
|
+
let mountPoint = '/';
|
|
39
|
+
if (blockletInfo.componentMountPoints && Array.isArray(blockletInfo.componentMountPoints)) {
|
|
40
|
+
const paymentKitComponent = blockletInfo.componentMountPoints.find((component) => component.did === paymentKitDid || component.appId === paymentKitDid);
|
|
41
|
+
if (paymentKitComponent?.mountPoint) {
|
|
42
|
+
mountPoint = paymentKitComponent.mountPoint;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.cachedConfig = { linkId, mountPoint, paymentKitDid };
|
|
46
|
+
logger_1.default.info('Configuration processed', this.cachedConfig);
|
|
47
|
+
return this.cachedConfig;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get linkId
|
|
51
|
+
*/
|
|
52
|
+
async getLinkId() {
|
|
53
|
+
const { linkId } = await this.getConfigInfo();
|
|
54
|
+
return linkId;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get mountPoint
|
|
58
|
+
*/
|
|
59
|
+
async getMountPoint() {
|
|
60
|
+
const { mountPoint } = await this.getConfigInfo();
|
|
61
|
+
return mountPoint;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get paymentKitDid
|
|
65
|
+
*/
|
|
66
|
+
async getPaymentKitDid() {
|
|
67
|
+
const { paymentKitDid } = await this.getConfigInfo();
|
|
68
|
+
return paymentKitDid;
|
|
69
|
+
}
|
|
70
|
+
async checkCacheCheckoutId(checkoutId) {
|
|
71
|
+
try {
|
|
72
|
+
if (!checkoutId) {
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
// API_ENDPOINTS already includes /api prefix
|
|
76
|
+
const orderStatusUrl = utils_1.urlUtils.join(this.config.baseUrl, types_1.API_ENDPOINTS.orderStatus.replace('{id}', checkoutId));
|
|
77
|
+
const response = await this.deps.httpClient.get(orderStatusUrl);
|
|
78
|
+
if (response.error) {
|
|
79
|
+
throw new Error(response.error);
|
|
80
|
+
}
|
|
81
|
+
// Check payment status
|
|
82
|
+
const isPaid = response.payment_status === 'paid';
|
|
83
|
+
return isPaid ? checkoutId : '';
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return '';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async createSession(options = {}) {
|
|
90
|
+
const { linkId, mountPoint, paymentKitDid } = await this.getConfigInfo();
|
|
91
|
+
logger_1.default.info('Creating payment session', { linkId, mountPoint, paymentKitDid });
|
|
92
|
+
try {
|
|
93
|
+
// Build URL - API_ENDPOINTS already includes /api prefix
|
|
94
|
+
const url = utils_1.urlUtils.join(this.config.baseUrl, types_1.API_ENDPOINTS.createCheckout, linkId);
|
|
95
|
+
const { needShortUrl = true, page_info: pageInfo } = options;
|
|
96
|
+
const payload = {
|
|
97
|
+
needShortUrl,
|
|
98
|
+
metadata: {
|
|
99
|
+
page_info: {
|
|
100
|
+
has_vendor: true,
|
|
101
|
+
...pageInfo,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const response = await utils_1.timeUtils.timeout(this.deps.httpClient.post(url, payload), this.config.timeout || 30000);
|
|
106
|
+
const session = {
|
|
107
|
+
id: response.checkoutSession.id,
|
|
108
|
+
paymentUrl: response.paymentUrl,
|
|
109
|
+
status: 'pending',
|
|
110
|
+
linkId,
|
|
111
|
+
vendorDid: paymentKitDid,
|
|
112
|
+
createdAt: utils_1.timeUtils.now(),
|
|
113
|
+
updatedAt: utils_1.timeUtils.now(),
|
|
114
|
+
expiresAt: new Date(Date.now() + (this.config.timeout || 300000)).toISOString(),
|
|
115
|
+
currency: 'USD',
|
|
116
|
+
};
|
|
117
|
+
logger_1.default.info('Session created successfully', { sessionId: session.id });
|
|
118
|
+
return session;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
logger_1.default.error('Failed to create session', { error: error.message, linkId });
|
|
122
|
+
throw (0, errors_1.createDeploymentError)(`Failed to create session: ${error.message}`, 'SESSION_ERROR', {
|
|
123
|
+
step: 'creating_session',
|
|
124
|
+
linkId,
|
|
125
|
+
details: { originalError: error },
|
|
126
|
+
recovery: {
|
|
127
|
+
canRetry: true,
|
|
128
|
+
suggestions: ['Check your network connection', 'Verify the Payment Kit service is available'],
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async getSessionStatus(sessionId) {
|
|
134
|
+
logger_1.default.debug('Getting session status', { sessionId });
|
|
135
|
+
try {
|
|
136
|
+
// API_ENDPOINTS already includes /api prefix
|
|
137
|
+
const url = utils_1.urlUtils.join(this.config.baseUrl, types_1.API_ENDPOINTS.orderStatus.replace('{id}', sessionId));
|
|
138
|
+
const response = await utils_1.timeUtils.timeout(this.deps.httpClient.get(url), this.config.timeout || 30000);
|
|
139
|
+
logger_1.default.debug('Session status retrieved', { sessionId, status: response.payment_status });
|
|
140
|
+
return response;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
logger_1.default.error('Failed to get session status', { error: error.message, sessionId });
|
|
144
|
+
throw (0, errors_1.createDeploymentError)(`Failed to get session status: ${error.message}`, 'SESSION_ERROR', {
|
|
145
|
+
sessionId,
|
|
146
|
+
recovery: {
|
|
147
|
+
canRetry: true,
|
|
148
|
+
suggestions: ['Check your network connection', 'Verify the session ID is correct'],
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
waitForPayment(sessionId) {
|
|
154
|
+
logger_1.default.info('Waiting for payment completion', { sessionId });
|
|
155
|
+
return this.deps.pollingManager.poll({
|
|
156
|
+
checkCondition: async () => {
|
|
157
|
+
const status = await this.getSessionStatus(sessionId);
|
|
158
|
+
if (status.payment_status === 'paid') {
|
|
159
|
+
logger_1.default.info('Payment completed', { sessionId });
|
|
160
|
+
return status.vendors || true;
|
|
161
|
+
}
|
|
162
|
+
if (status.payment_status === 'expired' || status.payment_status === 'cancelled') {
|
|
163
|
+
throw (0, errors_1.createDeploymentError)(`Payment ${status.payment_status}`, 'SESSION_ERROR', {
|
|
164
|
+
sessionId,
|
|
165
|
+
recovery: {
|
|
166
|
+
canRetry: status.payment_status === 'expired',
|
|
167
|
+
suggestions: status.payment_status === 'expired'
|
|
168
|
+
? ['Create a new payment session', 'Try the deployment again']
|
|
169
|
+
: ['Payment was cancelled', 'Start a new deployment if needed'],
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
},
|
|
175
|
+
stepName: 'waiting for payment',
|
|
176
|
+
maxAttempts: this.config.polling?.maxAttempts || 100,
|
|
177
|
+
interval: this.config.polling?.interval || 3000,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
async getOrderDetails(sessionId) {
|
|
181
|
+
logger_1.default.debug('Getting order details', { sessionId });
|
|
182
|
+
try {
|
|
183
|
+
// API_ENDPOINTS already includes /api prefix
|
|
184
|
+
const url = utils_1.urlUtils.join(this.config.baseUrl, types_1.API_ENDPOINTS.orderDetail.replace('{id}', sessionId));
|
|
185
|
+
const response = await utils_1.timeUtils.timeout(this.deps.httpClient.get(url), this.config.timeout || 30000);
|
|
186
|
+
logger_1.default.debug('Order details retrieved', { sessionId });
|
|
187
|
+
return response;
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
logger_1.default.error('Failed to get order details', { error: error.message, sessionId });
|
|
191
|
+
throw (0, errors_1.createDeploymentError)(`Failed to get order details: ${error.message}`, 'SESSION_ERROR', {
|
|
192
|
+
sessionId,
|
|
193
|
+
recovery: {
|
|
194
|
+
canRetry: true,
|
|
195
|
+
suggestions: ['Check your network connection', 'Verify the session is still active'],
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.SessionManager = SessionManager;
|
|
202
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
export type DeploymentStatus = 'initializing' | 'creating_session' | 'payment_required' | 'payment_processing' | 'payment_completed' | 'installing' | 'starting_service' | 'getting_urls' | 'completed' | 'failed' | 'cancelled';
|
|
2
|
+
export type DeploymentStep = 'creating_session' | 'waiting_payment' | 'installation_started' | 'installing' | 'starting_service' | 'getting_urls' | 'getting_vendors' | 'completed' | 'cancelled';
|
|
3
|
+
export interface BrokerConfig {
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
authToken?: string;
|
|
6
|
+
paymentLinkKey?: string;
|
|
7
|
+
api?: any;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
polling?: {
|
|
10
|
+
interval?: number;
|
|
11
|
+
maxAttempts?: number;
|
|
12
|
+
backoffStrategy?: 'linear' | 'exponential';
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare const STEPS: {
|
|
16
|
+
readonly PAYMENT_PENDING: "payment_pending";
|
|
17
|
+
readonly PAYMENT_COMPLETED: "payment_completed";
|
|
18
|
+
readonly INSTALLATION_STARTING: "installation_starting";
|
|
19
|
+
readonly INSTALLATION_COMPLETED: "installation_completed";
|
|
20
|
+
readonly SERVICE_STARTING: "service_starting";
|
|
21
|
+
readonly SERVICE_READY: "service_ready";
|
|
22
|
+
readonly ACCESS_PREPARING: "access_preparing";
|
|
23
|
+
readonly ACCESS_READY: "access_ready";
|
|
24
|
+
};
|
|
25
|
+
export interface DeploymentHooks {
|
|
26
|
+
[STEPS.PAYMENT_PENDING]?: (data: {
|
|
27
|
+
sessionId?: string;
|
|
28
|
+
paymentUrl?: string;
|
|
29
|
+
linkId?: string;
|
|
30
|
+
isResuming?: boolean;
|
|
31
|
+
}) => void;
|
|
32
|
+
[STEPS.PAYMENT_COMPLETED]?: (data: {
|
|
33
|
+
sessionId: string;
|
|
34
|
+
vendors: VendorInfo[];
|
|
35
|
+
}) => void;
|
|
36
|
+
[STEPS.INSTALLATION_STARTING]?: (data: {
|
|
37
|
+
vendors: VendorInfo[];
|
|
38
|
+
}) => void;
|
|
39
|
+
[STEPS.INSTALLATION_COMPLETED]?: (data: {
|
|
40
|
+
vendors: VendorInfo[];
|
|
41
|
+
progress?: number;
|
|
42
|
+
}) => void;
|
|
43
|
+
[STEPS.SERVICE_STARTING]?: (data: {
|
|
44
|
+
vendors: VendorInfo[];
|
|
45
|
+
}) => void;
|
|
46
|
+
[STEPS.SERVICE_READY]?: (data: {
|
|
47
|
+
vendors: VendorInfo[];
|
|
48
|
+
}) => void;
|
|
49
|
+
[STEPS.ACCESS_PREPARING]?: (data: {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
}) => void;
|
|
52
|
+
[STEPS.ACCESS_READY]?: (data: {
|
|
53
|
+
sessionId: string;
|
|
54
|
+
appUrl?: string;
|
|
55
|
+
dashboardUrl?: string;
|
|
56
|
+
subscriptionUrl?: string;
|
|
57
|
+
homeUrl?: string;
|
|
58
|
+
}) => void;
|
|
59
|
+
}
|
|
60
|
+
export interface DeploymentOptions {
|
|
61
|
+
cachedCheckoutId?: string;
|
|
62
|
+
cachedPaymentUrl?: string;
|
|
63
|
+
needShortUrl?: boolean;
|
|
64
|
+
page_info: {
|
|
65
|
+
success_message: {
|
|
66
|
+
en: string;
|
|
67
|
+
zh: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
[key: string]: any;
|
|
71
|
+
hooks?: DeploymentHooks;
|
|
72
|
+
onError?: (error: DeploymentError, step?: DeploymentStep) => void;
|
|
73
|
+
}
|
|
74
|
+
export interface PaymentSession {
|
|
75
|
+
id: string;
|
|
76
|
+
paymentUrl: string;
|
|
77
|
+
status: 'pending' | 'paid' | 'expired' | 'cancelled';
|
|
78
|
+
linkId: string;
|
|
79
|
+
vendorDid: string;
|
|
80
|
+
amount?: number;
|
|
81
|
+
currency?: string;
|
|
82
|
+
createdAt: string;
|
|
83
|
+
updatedAt: string;
|
|
84
|
+
expiresAt: string;
|
|
85
|
+
paidAt?: string;
|
|
86
|
+
metadata?: Record<string, any>;
|
|
87
|
+
}
|
|
88
|
+
export interface VendorInfo {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
status: 'pending' | 'installing' | 'starting' | 'running' | 'failed';
|
|
92
|
+
progress: number;
|
|
93
|
+
appUrl?: string;
|
|
94
|
+
dashboardUrl?: string;
|
|
95
|
+
homeUrl?: string;
|
|
96
|
+
token?: string;
|
|
97
|
+
subscriptionUrl?: string;
|
|
98
|
+
metadata?: Record<string, any>;
|
|
99
|
+
details?: Record<string, any>;
|
|
100
|
+
}
|
|
101
|
+
export interface DeploymentResult {
|
|
102
|
+
success: boolean;
|
|
103
|
+
sessionId: string;
|
|
104
|
+
status?: string;
|
|
105
|
+
vendors?: VendorInfo[];
|
|
106
|
+
appUrl?: string;
|
|
107
|
+
homeUrl?: string;
|
|
108
|
+
dashboardUrl?: string;
|
|
109
|
+
token?: string;
|
|
110
|
+
subscriptionUrl?: string;
|
|
111
|
+
duration?: number;
|
|
112
|
+
startTime?: string;
|
|
113
|
+
endTime?: string;
|
|
114
|
+
metadata?: Record<string, any>;
|
|
115
|
+
data?: any;
|
|
116
|
+
completedAt?: string;
|
|
117
|
+
}
|
|
118
|
+
export interface DeploymentError extends Error {
|
|
119
|
+
code: ErrorCode;
|
|
120
|
+
step?: DeploymentStep;
|
|
121
|
+
sessionId?: string;
|
|
122
|
+
paymentUrl?: string;
|
|
123
|
+
linkId?: string;
|
|
124
|
+
timestamp?: string;
|
|
125
|
+
details?: Record<string, any>;
|
|
126
|
+
recovery?: {
|
|
127
|
+
canRetry?: boolean;
|
|
128
|
+
retryAfter?: number;
|
|
129
|
+
suggestions?: string[];
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export type ErrorCode = 'NETWORK_ERROR' | 'TIMEOUT_ERROR' | 'PAYMENT_ERROR' | 'VALIDATION_ERROR' | 'SESSION_ERROR' | 'DEPLOYMENT_ERROR' | 'VENDOR_ERROR' | 'INSTALLATION_ERROR' | 'SERVICE_ERROR' | 'ACCESS_ERROR' | 'CONFIG_ERROR' | 'UNKNOWN_ERROR';
|
|
133
|
+
export interface DeploymentEvent {
|
|
134
|
+
type: string;
|
|
135
|
+
timestamp: string;
|
|
136
|
+
data?: any;
|
|
137
|
+
}
|
|
138
|
+
export type DeploymentEventType = 'session.created' | 'payment.required' | 'payment.started' | 'payment.completed' | 'payment.failed' | 'installation.started' | 'installation.progress' | 'installation.completed' | 'service.started' | 'service.failed' | 'deployment.completed' | 'deployment.failed' | 'deployment.cancelled';
|
|
139
|
+
export type PartialExcept<T, K extends keyof T> = Partial<T> & Pick<T, K>;
|
|
140
|
+
export type DeepPartial<T> = {
|
|
141
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
142
|
+
};
|
|
143
|
+
export declare const DEFAULT_CONFIG: {
|
|
144
|
+
timeout: number;
|
|
145
|
+
polling: {
|
|
146
|
+
interval: number;
|
|
147
|
+
maxAttempts: number;
|
|
148
|
+
backoffStrategy: "linear";
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
export declare const API_ENDPOINTS: {
|
|
152
|
+
createCheckout: string;
|
|
153
|
+
paymentPage: string;
|
|
154
|
+
orderStatus: string;
|
|
155
|
+
orderDetail: string;
|
|
156
|
+
vendors: string;
|
|
157
|
+
};
|
|
158
|
+
export declare const DEPLOYMENT_STEPS: {
|
|
159
|
+
readonly CREATING_SESSION: "creating_session";
|
|
160
|
+
readonly WAITING_PAYMENT: "waiting_payment";
|
|
161
|
+
readonly INSTALLING: "installing";
|
|
162
|
+
readonly STARTING_SERVICE: "starting_service";
|
|
163
|
+
readonly GETTING_URLS: "getting_urls";
|
|
164
|
+
readonly COMPLETED: "completed";
|
|
165
|
+
};
|
|
166
|
+
export declare const ERROR_CODES: {
|
|
167
|
+
readonly NETWORK_ERROR: "NETWORK_ERROR";
|
|
168
|
+
readonly TIMEOUT_ERROR: "TIMEOUT_ERROR";
|
|
169
|
+
readonly PAYMENT_ERROR: "PAYMENT_ERROR";
|
|
170
|
+
readonly VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
171
|
+
readonly SESSION_ERROR: "SESSION_ERROR";
|
|
172
|
+
readonly DEPLOYMENT_ERROR: "DEPLOYMENT_ERROR";
|
|
173
|
+
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=types.d.ts.map
|