@webacy-xyz/sdk-core 1.0.1
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/LICENSE +21 -0
- package/README.md +96 -0
- package/dist/cjs/client-base.js +134 -0
- package/dist/cjs/client-base.js.map +1 -0
- package/dist/cjs/config.js +30 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/errors/authentication.js +35 -0
- package/dist/cjs/errors/authentication.js.map +1 -0
- package/dist/cjs/errors/base.js +76 -0
- package/dist/cjs/errors/base.js.map +1 -0
- package/dist/cjs/errors/index.js +16 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/errors/network.js +45 -0
- package/dist/cjs/errors/network.js.map +1 -0
- package/dist/cjs/errors/not-found.js +38 -0
- package/dist/cjs/errors/not-found.js.map +1 -0
- package/dist/cjs/errors/rate-limit.js +53 -0
- package/dist/cjs/errors/rate-limit.js.map +1 -0
- package/dist/cjs/errors/validation.js +49 -0
- package/dist/cjs/errors/validation.js.map +1 -0
- package/dist/cjs/http/client.js +393 -0
- package/dist/cjs/http/client.js.map +1 -0
- package/dist/cjs/http/index.js +11 -0
- package/dist/cjs/http/index.js.map +1 -0
- package/dist/cjs/http/retry.js +43 -0
- package/dist/cjs/http/retry.js.map +1 -0
- package/dist/cjs/index.js +52 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/resources/base.js +43 -0
- package/dist/cjs/resources/base.js.map +1 -0
- package/dist/cjs/resources/index.js +6 -0
- package/dist/cjs/resources/index.js.map +1 -0
- package/dist/cjs/types/chain.js +114 -0
- package/dist/cjs/types/chain.js.map +1 -0
- package/dist/cjs/types/common.js +49 -0
- package/dist/cjs/types/common.js.map +1 -0
- package/dist/cjs/types/index.js +18 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/modules.js +64 -0
- package/dist/cjs/types/modules.js.map +1 -0
- package/dist/cjs/utils/address-validation.js +124 -0
- package/dist/cjs/utils/address-validation.js.map +1 -0
- package/dist/cjs/utils/index.js +16 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/url-validation.js +31 -0
- package/dist/cjs/utils/url-validation.js.map +1 -0
- package/dist/esm/client-base.js +130 -0
- package/dist/esm/client-base.js.map +1 -0
- package/dist/esm/config.js +26 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/errors/authentication.js +31 -0
- package/dist/esm/errors/authentication.js.map +1 -0
- package/dist/esm/errors/base.js +72 -0
- package/dist/esm/errors/base.js.map +1 -0
- package/dist/esm/errors/index.js +7 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/errors/network.js +41 -0
- package/dist/esm/errors/network.js.map +1 -0
- package/dist/esm/errors/not-found.js +34 -0
- package/dist/esm/errors/not-found.js.map +1 -0
- package/dist/esm/errors/rate-limit.js +49 -0
- package/dist/esm/errors/rate-limit.js.map +1 -0
- package/dist/esm/errors/validation.js +45 -0
- package/dist/esm/errors/validation.js.map +1 -0
- package/dist/esm/http/client.js +389 -0
- package/dist/esm/http/client.js.map +1 -0
- package/dist/esm/http/index.js +3 -0
- package/dist/esm/http/index.js.map +1 -0
- package/dist/esm/http/retry.js +37 -0
- package/dist/esm/http/retry.js.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/resources/base.js +39 -0
- package/dist/esm/resources/base.js.map +1 -0
- package/dist/esm/resources/index.js +2 -0
- package/dist/esm/resources/index.js.map +1 -0
- package/dist/esm/types/chain.js +109 -0
- package/dist/esm/types/chain.js.map +1 -0
- package/dist/esm/types/common.js +46 -0
- package/dist/esm/types/common.js.map +1 -0
- package/dist/esm/types/index.js +4 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/modules.js +61 -0
- package/dist/esm/types/modules.js.map +1 -0
- package/dist/esm/utils/address-validation.js +113 -0
- package/dist/esm/utils/address-validation.js.map +1 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/url-validation.js +28 -0
- package/dist/esm/utils/url-validation.js.map +1 -0
- package/dist/types/client-base.d.ts +90 -0
- package/dist/types/client-base.d.ts.map +1 -0
- package/dist/types/config.d.ts +124 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/errors/authentication.d.ts +24 -0
- package/dist/types/errors/authentication.d.ts.map +1 -0
- package/dist/types/errors/base.d.ts +53 -0
- package/dist/types/errors/base.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +7 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/errors/network.d.ts +30 -0
- package/dist/types/errors/network.d.ts.map +1 -0
- package/dist/types/errors/not-found.d.ts +27 -0
- package/dist/types/errors/not-found.d.ts.map +1 -0
- package/dist/types/errors/rate-limit.d.ts +37 -0
- package/dist/types/errors/rate-limit.d.ts.map +1 -0
- package/dist/types/errors/validation.d.ts +34 -0
- package/dist/types/errors/validation.d.ts.map +1 -0
- package/dist/types/http/client.d.ts +160 -0
- package/dist/types/http/client.d.ts.map +1 -0
- package/dist/types/http/index.d.ts +3 -0
- package/dist/types/http/index.d.ts.map +1 -0
- package/dist/types/http/retry.d.ts +32 -0
- package/dist/types/http/retry.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/resources/base.d.ts +26 -0
- package/dist/types/resources/base.d.ts.map +1 -0
- package/dist/types/resources/index.d.ts +2 -0
- package/dist/types/resources/index.d.ts.map +1 -0
- package/dist/types/types/chain.d.ts +60 -0
- package/dist/types/types/chain.d.ts.map +1 -0
- package/dist/types/types/common.d.ts +251 -0
- package/dist/types/types/common.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +5 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/modules.d.ts +51 -0
- package/dist/types/types/modules.d.ts.map +1 -0
- package/dist/types/utils/address-validation.d.ts +50 -0
- package/dist/types/utils/address-validation.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/url-validation.d.ts +16 -0
- package/dist/types/utils/url-validation.d.ts.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CHAIN_NAMES = exports.CHAIN_IDS = exports.ChainCompatibility = exports.Chain = void 0;
|
|
4
|
+
exports.getChainCompatibility = getChainCompatibility;
|
|
5
|
+
exports.isEvmChain = isEvmChain;
|
|
6
|
+
/**
|
|
7
|
+
* Supported blockchain networks
|
|
8
|
+
*/
|
|
9
|
+
var Chain;
|
|
10
|
+
(function (Chain) {
|
|
11
|
+
/** Ethereum Mainnet */
|
|
12
|
+
Chain["ETH"] = "eth";
|
|
13
|
+
/** Ethereum Sepolia Testnet */
|
|
14
|
+
Chain["SEP"] = "sep";
|
|
15
|
+
/** Arbitrum One */
|
|
16
|
+
Chain["ARB"] = "arb";
|
|
17
|
+
/** Polygon (MATIC) */
|
|
18
|
+
Chain["POL"] = "pol";
|
|
19
|
+
/** Solana */
|
|
20
|
+
Chain["SOL"] = "sol";
|
|
21
|
+
/** Optimism */
|
|
22
|
+
Chain["OPT"] = "opt";
|
|
23
|
+
/** Base */
|
|
24
|
+
Chain["BASE"] = "base";
|
|
25
|
+
/** BNB Smart Chain */
|
|
26
|
+
Chain["BSC"] = "bsc";
|
|
27
|
+
/** TON (The Open Network) */
|
|
28
|
+
Chain["TON"] = "ton";
|
|
29
|
+
/** Sei */
|
|
30
|
+
Chain["SEI"] = "sei";
|
|
31
|
+
/** Bitcoin */
|
|
32
|
+
Chain["BTC"] = "btc";
|
|
33
|
+
/** Sui */
|
|
34
|
+
Chain["SUI"] = "sui";
|
|
35
|
+
/** Stellar */
|
|
36
|
+
Chain["STELLAR"] = "stellar";
|
|
37
|
+
})(Chain || (exports.Chain = Chain = {}));
|
|
38
|
+
/**
|
|
39
|
+
* Chain compatibility groups for feature detection
|
|
40
|
+
*/
|
|
41
|
+
var ChainCompatibility;
|
|
42
|
+
(function (ChainCompatibility) {
|
|
43
|
+
ChainCompatibility["EVM"] = "EVM";
|
|
44
|
+
ChainCompatibility["SOLANA"] = "SOLANA";
|
|
45
|
+
ChainCompatibility["TON"] = "TON";
|
|
46
|
+
ChainCompatibility["BTC"] = "BTC";
|
|
47
|
+
ChainCompatibility["SEI"] = "SEI";
|
|
48
|
+
ChainCompatibility["SUI"] = "SUI";
|
|
49
|
+
ChainCompatibility["STELLAR"] = "STELLAR";
|
|
50
|
+
})(ChainCompatibility || (exports.ChainCompatibility = ChainCompatibility = {}));
|
|
51
|
+
/**
|
|
52
|
+
* Get the compatibility group for a chain
|
|
53
|
+
*/
|
|
54
|
+
function getChainCompatibility(chain) {
|
|
55
|
+
switch (chain) {
|
|
56
|
+
case Chain.ETH:
|
|
57
|
+
case Chain.SEP:
|
|
58
|
+
case Chain.ARB:
|
|
59
|
+
case Chain.POL:
|
|
60
|
+
case Chain.OPT:
|
|
61
|
+
case Chain.BASE:
|
|
62
|
+
case Chain.BSC:
|
|
63
|
+
return ChainCompatibility.EVM;
|
|
64
|
+
case Chain.SOL:
|
|
65
|
+
return ChainCompatibility.SOLANA;
|
|
66
|
+
case Chain.TON:
|
|
67
|
+
return ChainCompatibility.TON;
|
|
68
|
+
case Chain.BTC:
|
|
69
|
+
return ChainCompatibility.BTC;
|
|
70
|
+
case Chain.SEI:
|
|
71
|
+
return ChainCompatibility.SEI;
|
|
72
|
+
case Chain.SUI:
|
|
73
|
+
return ChainCompatibility.SUI;
|
|
74
|
+
case Chain.STELLAR:
|
|
75
|
+
return ChainCompatibility.STELLAR;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if a chain is EVM-compatible
|
|
80
|
+
*/
|
|
81
|
+
function isEvmChain(chain) {
|
|
82
|
+
return getChainCompatibility(chain) === ChainCompatibility.EVM;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Chain ID mapping for EVM chains
|
|
86
|
+
*/
|
|
87
|
+
exports.CHAIN_IDS = {
|
|
88
|
+
[Chain.ETH]: 1,
|
|
89
|
+
[Chain.SEP]: 11155111,
|
|
90
|
+
[Chain.BSC]: 56,
|
|
91
|
+
[Chain.POL]: 137,
|
|
92
|
+
[Chain.OPT]: 10,
|
|
93
|
+
[Chain.ARB]: 42161,
|
|
94
|
+
[Chain.BASE]: 8453,
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Human-readable chain names
|
|
98
|
+
*/
|
|
99
|
+
exports.CHAIN_NAMES = {
|
|
100
|
+
[Chain.ETH]: 'Ethereum',
|
|
101
|
+
[Chain.SEP]: 'Sepolia',
|
|
102
|
+
[Chain.ARB]: 'Arbitrum',
|
|
103
|
+
[Chain.POL]: 'Polygon',
|
|
104
|
+
[Chain.SOL]: 'Solana',
|
|
105
|
+
[Chain.OPT]: 'Optimism',
|
|
106
|
+
[Chain.BASE]: 'Base',
|
|
107
|
+
[Chain.BSC]: 'BNB Smart Chain',
|
|
108
|
+
[Chain.TON]: 'TON',
|
|
109
|
+
[Chain.SEI]: 'Sei',
|
|
110
|
+
[Chain.BTC]: 'Bitcoin',
|
|
111
|
+
[Chain.SUI]: 'Sui',
|
|
112
|
+
[Chain.STELLAR]: 'Stellar',
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/types/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenStandard = exports.TypeOfAddress = exports.RiskLevel = exports.RiskScore = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Risk score classification
|
|
6
|
+
*/
|
|
7
|
+
var RiskScore;
|
|
8
|
+
(function (RiskScore) {
|
|
9
|
+
RiskScore["HIGH"] = "High Risk";
|
|
10
|
+
RiskScore["MEDIUM"] = "Medium Risk";
|
|
11
|
+
RiskScore["LOW"] = "Low Risk";
|
|
12
|
+
RiskScore["TRUSTED"] = "Trusted";
|
|
13
|
+
RiskScore["UNKNOWN"] = "Unknown";
|
|
14
|
+
})(RiskScore || (exports.RiskScore = RiskScore = {}));
|
|
15
|
+
/**
|
|
16
|
+
* Risk level enum
|
|
17
|
+
*/
|
|
18
|
+
var RiskLevel;
|
|
19
|
+
(function (RiskLevel) {
|
|
20
|
+
RiskLevel["Low"] = "low";
|
|
21
|
+
RiskLevel["Medium"] = "medium";
|
|
22
|
+
RiskLevel["High"] = "high";
|
|
23
|
+
RiskLevel["Suspicious"] = "suspicious";
|
|
24
|
+
})(RiskLevel || (exports.RiskLevel = RiskLevel = {}));
|
|
25
|
+
/**
|
|
26
|
+
* Address type classification
|
|
27
|
+
*/
|
|
28
|
+
var TypeOfAddress;
|
|
29
|
+
(function (TypeOfAddress) {
|
|
30
|
+
TypeOfAddress["EOA"] = "EOA";
|
|
31
|
+
TypeOfAddress["CONTRACT"] = "CONTRACT";
|
|
32
|
+
TypeOfAddress["TOKEN"] = "TOKEN";
|
|
33
|
+
TypeOfAddress["CONTRACT_WALLET"] = "CONTRACT_WALLET";
|
|
34
|
+
TypeOfAddress["MULTISIG"] = "MULTISIG";
|
|
35
|
+
})(TypeOfAddress || (exports.TypeOfAddress = TypeOfAddress = {}));
|
|
36
|
+
/**
|
|
37
|
+
* Token standard
|
|
38
|
+
*/
|
|
39
|
+
var TokenStandard;
|
|
40
|
+
(function (TokenStandard) {
|
|
41
|
+
TokenStandard["ERC20"] = "ERC20";
|
|
42
|
+
TokenStandard["ERC721"] = "ERC721";
|
|
43
|
+
TokenStandard["ERC1155"] = "ERC1155";
|
|
44
|
+
TokenStandard["SPL"] = "SPL";
|
|
45
|
+
TokenStandard["JETTON"] = "JETTON";
|
|
46
|
+
TokenStandard["STELLAR_ASSET"] = "STELLAR_ASSET";
|
|
47
|
+
TokenStandard["SUI_COIN"] = "SUI_COIN";
|
|
48
|
+
})(TokenStandard || (exports.TokenStandard = TokenStandard = {}));
|
|
49
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":";;;AA8CA;;GAEG;AACH,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,+BAAkB,CAAA;IAClB,mCAAsB,CAAA;IACtB,6BAAgB,CAAA;IAChB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;AACrB,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB;AAED;;GAEG;AACH,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,0BAAa,CAAA;IACb,sCAAyB,CAAA;AAC3B,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AA2ID;;GAEG;AACH,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,4BAAW,CAAA;IACX,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,oDAAmC,CAAA;IACnC,sCAAqB,CAAA;AACvB,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB;AAED;;GAEG;AACH,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,4BAAW,CAAA;IACX,kCAAiB,CAAA;IACjB,gDAA+B,CAAA;IAC/B,sCAAqB,CAAA;AACvB,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenStandard = exports.TypeOfAddress = exports.RiskLevel = exports.RiskScore = exports.RiskModule = exports.CHAIN_NAMES = exports.CHAIN_IDS = exports.isEvmChain = exports.getChainCompatibility = exports.ChainCompatibility = exports.Chain = void 0;
|
|
4
|
+
var chain_1 = require("./chain");
|
|
5
|
+
Object.defineProperty(exports, "Chain", { enumerable: true, get: function () { return chain_1.Chain; } });
|
|
6
|
+
Object.defineProperty(exports, "ChainCompatibility", { enumerable: true, get: function () { return chain_1.ChainCompatibility; } });
|
|
7
|
+
Object.defineProperty(exports, "getChainCompatibility", { enumerable: true, get: function () { return chain_1.getChainCompatibility; } });
|
|
8
|
+
Object.defineProperty(exports, "isEvmChain", { enumerable: true, get: function () { return chain_1.isEvmChain; } });
|
|
9
|
+
Object.defineProperty(exports, "CHAIN_IDS", { enumerable: true, get: function () { return chain_1.CHAIN_IDS; } });
|
|
10
|
+
Object.defineProperty(exports, "CHAIN_NAMES", { enumerable: true, get: function () { return chain_1.CHAIN_NAMES; } });
|
|
11
|
+
var modules_1 = require("./modules");
|
|
12
|
+
Object.defineProperty(exports, "RiskModule", { enumerable: true, get: function () { return modules_1.RiskModule; } });
|
|
13
|
+
var common_1 = require("./common");
|
|
14
|
+
Object.defineProperty(exports, "RiskScore", { enumerable: true, get: function () { return common_1.RiskScore; } });
|
|
15
|
+
Object.defineProperty(exports, "RiskLevel", { enumerable: true, get: function () { return common_1.RiskLevel; } });
|
|
16
|
+
Object.defineProperty(exports, "TypeOfAddress", { enumerable: true, get: function () { return common_1.TypeOfAddress; } });
|
|
17
|
+
Object.defineProperty(exports, "TokenStandard", { enumerable: true, get: function () { return common_1.TokenStandard; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,iCAOiB;AANf,8FAAA,KAAK,OAAA;AACL,2GAAA,kBAAkB,OAAA;AAClB,8GAAA,qBAAqB,OAAA;AACrB,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AAGb,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAoBnB,mCAA8E;AAArE,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,uGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RiskModule = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Risk analysis modules available for requests
|
|
6
|
+
*
|
|
7
|
+
* Use these to specify which analysis modules to run when making API requests.
|
|
8
|
+
* Requesting fewer modules can improve response time.
|
|
9
|
+
*/
|
|
10
|
+
var RiskModule;
|
|
11
|
+
(function (RiskModule) {
|
|
12
|
+
// Core security analysis
|
|
13
|
+
/** Contract ownership, upgradeability, access controls */
|
|
14
|
+
RiskModule["GOVERNANCE_ANALYSIS"] = "governance_analysis";
|
|
15
|
+
/** Freezeable, mintable, blacklist, whitelist */
|
|
16
|
+
RiskModule["TOKEN_SECURITY"] = "token_security";
|
|
17
|
+
/** Static/dynamic code analysis, vulnerabilities */
|
|
18
|
+
RiskModule["CONTRACT_ANALYSIS"] = "contract_analysis";
|
|
19
|
+
/** Source code analysis, vulnerabilities */
|
|
20
|
+
RiskModule["SOURCE_CODE_ANALYSIS"] = "source_code_analysis";
|
|
21
|
+
// Financial risk analysis
|
|
22
|
+
/** Price, volatility, market cap, liquidity */
|
|
23
|
+
RiskModule["MARKET_DATA"] = "market_data";
|
|
24
|
+
/** Token distribution, concentration risks */
|
|
25
|
+
RiskModule["HOLDER_ANALYSIS"] = "holder_analysis";
|
|
26
|
+
/** Pool data, unlock schedules, LP analysis */
|
|
27
|
+
RiskModule["LIQUIDITY_ANALYSIS"] = "liquidity_analysis";
|
|
28
|
+
// Fraud and compliance
|
|
29
|
+
/** Hacker, drainer, rugpull detection */
|
|
30
|
+
RiskModule["FRAUD_DETECTION"] = "fraud_detection";
|
|
31
|
+
/** OFAC, sanctioned addresses */
|
|
32
|
+
RiskModule["SANCTIONS_COMPLIANCE"] = "sanctions_compliance";
|
|
33
|
+
/** Tornado cash, coin mixers */
|
|
34
|
+
RiskModule["MIXER_DETECTION"] = "mixer_detection";
|
|
35
|
+
// Address behavior analysis
|
|
36
|
+
/** Trading patterns, automated trading */
|
|
37
|
+
RiskModule["ADDRESS_BEHAVIOR"] = "address_behavior";
|
|
38
|
+
/** Address poisoning, wash trading */
|
|
39
|
+
RiskModule["TRANSACTION_ANALYSIS"] = "transaction_analysis";
|
|
40
|
+
/** Reported addresses, spam detection */
|
|
41
|
+
RiskModule["REPUTATION_ANALYSIS"] = "reputation_analysis";
|
|
42
|
+
// Chain-specific analysis
|
|
43
|
+
/** Solana-only risks (bundling, sniping) */
|
|
44
|
+
RiskModule["SOLANA_SPECIFIC"] = "solana_specific";
|
|
45
|
+
/** EVM-only risks (gas optimization, MEV) */
|
|
46
|
+
RiskModule["EVM_SPECIFIC"] = "evm_specific";
|
|
47
|
+
/** TON-only risks (jetton standards, etc.) */
|
|
48
|
+
RiskModule["TON_SPECIFIC"] = "ton_specific";
|
|
49
|
+
/** SUI-only risks (coin standards, object model) */
|
|
50
|
+
RiskModule["SUI_SPECIFIC"] = "sui_specific";
|
|
51
|
+
// Basic metadata (always fast)
|
|
52
|
+
/** Address type, age, balance checks */
|
|
53
|
+
RiskModule["BASIC_INFO"] = "basic_info";
|
|
54
|
+
// Ultra-fast module for core security flags
|
|
55
|
+
/** Only is_mintable, freezeable, is_metadata_immutable */
|
|
56
|
+
RiskModule["SECURITY_ESSENTIALS"] = "security_essentials";
|
|
57
|
+
// Fast fund flow screening with boolean indicators
|
|
58
|
+
/** Boolean flags for OFAC, hacker, mixer, drainer risks */
|
|
59
|
+
RiskModule["FUND_FLOW_SCREENING"] = "fund_flow_screening";
|
|
60
|
+
// Developer behavior and migration pattern analysis
|
|
61
|
+
/** Multi-platform developer behavior, token launch patterns */
|
|
62
|
+
RiskModule["DEVELOPER_MIGRATION"] = "developer_migration";
|
|
63
|
+
})(RiskModule || (exports.RiskModule = RiskModule = {}));
|
|
64
|
+
//# sourceMappingURL=modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/types/modules.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,IAAY,UA4DX;AA5DD,WAAY,UAAU;IACpB,yBAAyB;IACzB,0DAA0D;IAC1D,yDAA2C,CAAA;IAC3C,iDAAiD;IACjD,+CAAiC,CAAA;IACjC,oDAAoD;IACpD,qDAAuC,CAAA;IACvC,4CAA4C;IAC5C,2DAA6C,CAAA;IAE7C,0BAA0B;IAC1B,+CAA+C;IAC/C,yCAA2B,CAAA;IAC3B,8CAA8C;IAC9C,iDAAmC,CAAA;IACnC,+CAA+C;IAC/C,uDAAyC,CAAA;IAEzC,uBAAuB;IACvB,yCAAyC;IACzC,iDAAmC,CAAA;IACnC,iCAAiC;IACjC,2DAA6C,CAAA;IAC7C,gCAAgC;IAChC,iDAAmC,CAAA;IAEnC,4BAA4B;IAC5B,0CAA0C;IAC1C,mDAAqC,CAAA;IACrC,sCAAsC;IACtC,2DAA6C,CAAA;IAC7C,yCAAyC;IACzC,yDAA2C,CAAA;IAE3C,0BAA0B;IAC1B,4CAA4C;IAC5C,iDAAmC,CAAA;IACnC,6CAA6C;IAC7C,2CAA6B,CAAA;IAC7B,8CAA8C;IAC9C,2CAA6B,CAAA;IAC7B,oDAAoD;IACpD,2CAA6B,CAAA;IAE7B,+BAA+B;IAC/B,wCAAwC;IACxC,uCAAyB,CAAA;IAEzB,4CAA4C;IAC5C,0DAA0D;IAC1D,yDAA2C,CAAA;IAE3C,mDAAmD;IACnD,2DAA2D;IAC3D,yDAA2C,CAAA;IAE3C,oDAAoD;IACpD,+DAA+D;IAC/D,yDAA2C,CAAA;AAC7C,CAAC,EA5DW,UAAU,0BAAV,UAAU,QA4DrB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidEvmAddress = isValidEvmAddress;
|
|
4
|
+
exports.isValidSolanaAddress = isValidSolanaAddress;
|
|
5
|
+
exports.isValidBitcoinAddress = isValidBitcoinAddress;
|
|
6
|
+
exports.isValidTonAddress = isValidTonAddress;
|
|
7
|
+
exports.isValidSuiAddress = isValidSuiAddress;
|
|
8
|
+
exports.isValidStellarAddress = isValidStellarAddress;
|
|
9
|
+
exports.isValidAddress = isValidAddress;
|
|
10
|
+
exports.normalizeEvmAddress = normalizeEvmAddress;
|
|
11
|
+
exports.normalizeAddress = normalizeAddress;
|
|
12
|
+
const types_1 = require("../types");
|
|
13
|
+
/**
|
|
14
|
+
* Validate an Ethereum address format
|
|
15
|
+
*/
|
|
16
|
+
function isValidEvmAddress(address) {
|
|
17
|
+
return /^0x[a-fA-F0-9]{40}$/.test(address);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Validate a Solana address format (base58)
|
|
21
|
+
*/
|
|
22
|
+
function isValidSolanaAddress(address) {
|
|
23
|
+
// Base58 character set (no 0, O, I, l)
|
|
24
|
+
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate a Bitcoin address format
|
|
28
|
+
*/
|
|
29
|
+
function isValidBitcoinAddress(address) {
|
|
30
|
+
// P2PKH (starts with 1), P2SH (starts with 3), Bech32 (starts with bc1)
|
|
31
|
+
return /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(address) || /^bc1[a-z0-9]{39,59}$/.test(address);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Validate a TON address format
|
|
35
|
+
*/
|
|
36
|
+
function isValidTonAddress(address) {
|
|
37
|
+
// Raw format (48 bytes hex with workchain)
|
|
38
|
+
if (/^-?\d:[a-fA-F0-9]{64}$/.test(address)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
// User-friendly format (base64)
|
|
42
|
+
if (/^[A-Za-z0-9_-]{48}$/.test(address)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate a Sui address format
|
|
49
|
+
*/
|
|
50
|
+
function isValidSuiAddress(address) {
|
|
51
|
+
return /^0x[a-fA-F0-9]{64}$/.test(address);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate a Stellar address format
|
|
55
|
+
*
|
|
56
|
+
* Supports both:
|
|
57
|
+
* - Standard account ID (G...)
|
|
58
|
+
* - Asset identifier (CODE:ISSUER)
|
|
59
|
+
*/
|
|
60
|
+
function isValidStellarAddress(address) {
|
|
61
|
+
// Standard Stellar account ID
|
|
62
|
+
if (/^G[A-Z2-7]{55}$/.test(address)) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// Asset identifier (CODE:ISSUER)
|
|
66
|
+
if (/^[A-Za-z0-9]{1,12}:G[A-Z2-7]{55}$/.test(address)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Validate an address for a specific chain
|
|
73
|
+
*
|
|
74
|
+
* @param address - The address to validate
|
|
75
|
+
* @param chain - The blockchain to validate against
|
|
76
|
+
* @returns true if the address is valid for the chain
|
|
77
|
+
*/
|
|
78
|
+
function isValidAddress(address, chain) {
|
|
79
|
+
if (!address || typeof address !== 'string') {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
if ((0, types_1.isEvmChain)(chain)) {
|
|
83
|
+
return isValidEvmAddress(address);
|
|
84
|
+
}
|
|
85
|
+
switch (chain) {
|
|
86
|
+
case types_1.Chain.SOL:
|
|
87
|
+
return isValidSolanaAddress(address);
|
|
88
|
+
case types_1.Chain.BTC:
|
|
89
|
+
return isValidBitcoinAddress(address);
|
|
90
|
+
case types_1.Chain.TON:
|
|
91
|
+
return isValidTonAddress(address);
|
|
92
|
+
case types_1.Chain.SUI:
|
|
93
|
+
return isValidSuiAddress(address);
|
|
94
|
+
case types_1.Chain.STELLAR:
|
|
95
|
+
return isValidStellarAddress(address);
|
|
96
|
+
default:
|
|
97
|
+
// Unknown chain, allow any non-empty string
|
|
98
|
+
return address.length > 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Normalize an EVM address to checksum format
|
|
103
|
+
*/
|
|
104
|
+
function normalizeEvmAddress(address) {
|
|
105
|
+
if (!isValidEvmAddress(address)) {
|
|
106
|
+
throw new Error(`Invalid EVM address: ${address}`);
|
|
107
|
+
}
|
|
108
|
+
return address.toLowerCase();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Normalize an address for a specific chain
|
|
112
|
+
*
|
|
113
|
+
* @param address - The address to normalize
|
|
114
|
+
* @param chain - The blockchain
|
|
115
|
+
* @returns The normalized address
|
|
116
|
+
*/
|
|
117
|
+
function normalizeAddress(address, chain) {
|
|
118
|
+
if ((0, types_1.isEvmChain)(chain)) {
|
|
119
|
+
return normalizeEvmAddress(address);
|
|
120
|
+
}
|
|
121
|
+
// For non-EVM chains, return as-is
|
|
122
|
+
return address;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=address-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address-validation.js","sourceRoot":"","sources":["../../../src/utils/address-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidUrl = exports.normalizeEvmAddress = exports.normalizeAddress = exports.isValidStellarAddress = exports.isValidSuiAddress = exports.isValidTonAddress = exports.isValidBitcoinAddress = exports.isValidSolanaAddress = exports.isValidEvmAddress = exports.isValidAddress = void 0;
|
|
4
|
+
var address_validation_1 = require("./address-validation");
|
|
5
|
+
Object.defineProperty(exports, "isValidAddress", { enumerable: true, get: function () { return address_validation_1.isValidAddress; } });
|
|
6
|
+
Object.defineProperty(exports, "isValidEvmAddress", { enumerable: true, get: function () { return address_validation_1.isValidEvmAddress; } });
|
|
7
|
+
Object.defineProperty(exports, "isValidSolanaAddress", { enumerable: true, get: function () { return address_validation_1.isValidSolanaAddress; } });
|
|
8
|
+
Object.defineProperty(exports, "isValidBitcoinAddress", { enumerable: true, get: function () { return address_validation_1.isValidBitcoinAddress; } });
|
|
9
|
+
Object.defineProperty(exports, "isValidTonAddress", { enumerable: true, get: function () { return address_validation_1.isValidTonAddress; } });
|
|
10
|
+
Object.defineProperty(exports, "isValidSuiAddress", { enumerable: true, get: function () { return address_validation_1.isValidSuiAddress; } });
|
|
11
|
+
Object.defineProperty(exports, "isValidStellarAddress", { enumerable: true, get: function () { return address_validation_1.isValidStellarAddress; } });
|
|
12
|
+
Object.defineProperty(exports, "normalizeAddress", { enumerable: true, get: function () { return address_validation_1.normalizeAddress; } });
|
|
13
|
+
Object.defineProperty(exports, "normalizeEvmAddress", { enumerable: true, get: function () { return address_validation_1.normalizeEvmAddress; } });
|
|
14
|
+
var url_validation_1 = require("./url-validation");
|
|
15
|
+
Object.defineProperty(exports, "isValidUrl", { enumerable: true, get: function () { return url_validation_1.isValidUrl; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAU8B;AAT5B,oHAAA,cAAc,OAAA;AACd,uHAAA,iBAAiB,OAAA;AACjB,0HAAA,oBAAoB,OAAA;AACpB,2HAAA,qBAAqB,OAAA;AACrB,uHAAA,iBAAiB,OAAA;AACjB,uHAAA,iBAAiB,OAAA;AACjB,2HAAA,qBAAqB,OAAA;AACrB,sHAAA,gBAAgB,OAAA;AAChB,yHAAA,mBAAmB,OAAA;AAGrB,mDAA8C;AAArC,4GAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidUrl = isValidUrl;
|
|
4
|
+
/**
|
|
5
|
+
* Validate that a string is a valid URL
|
|
6
|
+
*
|
|
7
|
+
* @param url - String to validate
|
|
8
|
+
* @returns True if the string is a valid URL
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* isValidUrl('https://example.com'); // true
|
|
13
|
+
* isValidUrl('http://example.com/path?query=1'); // true
|
|
14
|
+
* isValidUrl('not-a-url'); // false
|
|
15
|
+
* isValidUrl(''); // false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function isValidUrl(url) {
|
|
19
|
+
if (!url || typeof url !== 'string') {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const parsed = new URL(url);
|
|
24
|
+
// Only allow http and https protocols
|
|
25
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=url-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-validation.js","sourceRoot":"","sources":["../../../src/utils/url-validation.ts"],"names":[],"mappings":";;AAcA,gCAYC;AA1BD;;;;;;;;;;;;;GAaG;AACH,SAAgB,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,sCAAsC;QACtC,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { DEFAULT_CONFIG, buildBaseUrl } from './config.js';
|
|
2
|
+
import { HttpClient, } from './http/index.js';
|
|
3
|
+
import { AuthenticationError } from './errors/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Base client class for Webacy SDK
|
|
6
|
+
*
|
|
7
|
+
* Provides shared functionality for all Webacy client implementations
|
|
8
|
+
* including HTTP client setup, authentication, and interceptors.
|
|
9
|
+
*/
|
|
10
|
+
export class BaseClient {
|
|
11
|
+
httpClient;
|
|
12
|
+
config;
|
|
13
|
+
/**
|
|
14
|
+
* Default chain to use when chain is not specified in API calls
|
|
15
|
+
*/
|
|
16
|
+
defaultChain;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
if (!config.apiKey) {
|
|
19
|
+
throw new AuthenticationError('API key is required');
|
|
20
|
+
}
|
|
21
|
+
this.config = {
|
|
22
|
+
...config,
|
|
23
|
+
baseUrl: config.baseUrl ?? DEFAULT_CONFIG.baseUrl,
|
|
24
|
+
apiVersion: config.apiVersion ?? DEFAULT_CONFIG.apiVersion,
|
|
25
|
+
timeout: config.timeout ?? DEFAULT_CONFIG.timeout,
|
|
26
|
+
};
|
|
27
|
+
this.defaultChain = config.defaultChain;
|
|
28
|
+
this.httpClient = new HttpClient({
|
|
29
|
+
baseUrl: buildBaseUrl(this.config),
|
|
30
|
+
timeout: this.config.timeout,
|
|
31
|
+
retry: config.retry,
|
|
32
|
+
debug: config.debug,
|
|
33
|
+
logger: config.logger,
|
|
34
|
+
headers: {
|
|
35
|
+
'x-api-key': config.apiKey,
|
|
36
|
+
...config.headers,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add a request interceptor
|
|
42
|
+
*
|
|
43
|
+
* Request interceptors are called before each request is sent.
|
|
44
|
+
* Use them to modify requests, add headers, or log requests.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* client.addRequestInterceptor((url, config) => {
|
|
49
|
+
* console.log(`Making request to ${url}`);
|
|
50
|
+
* return config;
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
addRequestInterceptor(interceptor) {
|
|
55
|
+
this.httpClient.addRequestInterceptor(interceptor);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Add a response interceptor
|
|
59
|
+
*
|
|
60
|
+
* Response interceptors are called after each successful response.
|
|
61
|
+
* Use them to transform responses or log data.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* client.addResponseInterceptor((response) => {
|
|
66
|
+
* console.log(`Received ${response.status} response`);
|
|
67
|
+
* return response;
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
addResponseInterceptor(interceptor) {
|
|
72
|
+
this.httpClient.addResponseInterceptor(interceptor);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Add an error interceptor
|
|
76
|
+
*
|
|
77
|
+
* Error interceptors are called when a request fails.
|
|
78
|
+
* Use them to handle errors globally or transform error types.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* client.addErrorInterceptor((error) => {
|
|
83
|
+
* if (error instanceof RateLimitError) {
|
|
84
|
+
* console.warn('Rate limited, will retry...');
|
|
85
|
+
* }
|
|
86
|
+
* return error;
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
addErrorInterceptor(interceptor) {
|
|
91
|
+
this.httpClient.addErrorInterceptor(interceptor);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Make a GET request
|
|
95
|
+
*/
|
|
96
|
+
get(path, options) {
|
|
97
|
+
return this.httpClient.get(path, {
|
|
98
|
+
timeout: options?.timeout,
|
|
99
|
+
signal: options?.signal,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Make a POST request
|
|
104
|
+
*/
|
|
105
|
+
post(path, body, options) {
|
|
106
|
+
return this.httpClient.post(path, body, {
|
|
107
|
+
timeout: options?.timeout,
|
|
108
|
+
signal: options?.signal,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Make a PUT request
|
|
113
|
+
*/
|
|
114
|
+
put(path, body, options) {
|
|
115
|
+
return this.httpClient.put(path, body, {
|
|
116
|
+
timeout: options?.timeout,
|
|
117
|
+
signal: options?.signal,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Make a DELETE request
|
|
122
|
+
*/
|
|
123
|
+
delete(path, options) {
|
|
124
|
+
return this.httpClient.delete(path, {
|
|
125
|
+
timeout: options?.timeout,
|
|
126
|
+
signal: options?.signal,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=client-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-base.js","sourceRoot":"","sources":["../../src/client-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default console logger implementation
|
|
3
|
+
*/
|
|
4
|
+
export const defaultLogger = {
|
|
5
|
+
debug: (message, data) => console.debug(`[Webacy SDK] ${message}`, data ?? ''),
|
|
6
|
+
info: (message, data) => console.info(`[Webacy SDK] ${message}`, data ?? ''),
|
|
7
|
+
warn: (message, data) => console.warn(`[Webacy SDK] ${message}`, data ?? ''),
|
|
8
|
+
error: (message, data) => console.error(`[Webacy SDK] ${message}`, data ?? ''),
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Default API configuration
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_CONFIG = {
|
|
14
|
+
baseUrl: 'https://api.webacy.com',
|
|
15
|
+
apiVersion: 'v2',
|
|
16
|
+
timeout: 30000,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Build the full base URL from configuration
|
|
20
|
+
*/
|
|
21
|
+
export function buildBaseUrl(config) {
|
|
22
|
+
const baseUrl = config.baseUrl ?? DEFAULT_CONFIG.baseUrl;
|
|
23
|
+
// API doesn't need /api/v2 prefix - endpoints are directly on base URL
|
|
24
|
+
return baseUrl.replace(/\/$/, '');
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;IAC9E,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;CAC/E,CAAC;AAwGF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,wBAAwB;IACjC,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;CACN,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC;IACzD,uEAAuE;IACvE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WebacyError } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when API key is invalid or missing
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* try {
|
|
8
|
+
* await client.addresses.analyze(address, { chain: Chain.ETH });
|
|
9
|
+
* } catch (error) {
|
|
10
|
+
* if (error instanceof AuthenticationError) {
|
|
11
|
+
* console.error('Authentication failed:', error.message);
|
|
12
|
+
* console.error('Suggestion:', error.getRecoverySuggestion());
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class AuthenticationError extends WebacyError {
|
|
18
|
+
constructor(message = 'Invalid or missing API key', options = {}) {
|
|
19
|
+
super(message, {
|
|
20
|
+
status: 401,
|
|
21
|
+
code: 'AUTHENTICATION_ERROR',
|
|
22
|
+
requestId: options.requestId,
|
|
23
|
+
endpoint: options.endpoint,
|
|
24
|
+
});
|
|
25
|
+
this.name = 'AuthenticationError';
|
|
26
|
+
}
|
|
27
|
+
getRecoverySuggestion() {
|
|
28
|
+
return 'Verify your API key is correct and has not expired. You can get a new API key from the Webacy dashboard at https://webacy.com';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=authentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../src/errors/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YACE,OAAO,GAAG,4BAA4B,EACtC,UAAqD,EAAE;QAEvD,KAAK,CAAC,OAAO,EAAE;YACb,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;IAEQ,qBAAqB;QAC5B,OAAO,+HAA+H,CAAC;IACzI,CAAC;CACF"}
|