@droplinked_inc/web3-kit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/THREAT_MODEL.md +139 -0
- package/dist/chains.d.ts +67 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +302 -0
- package/dist/chains.js.map +1 -0
- package/dist/deep-freeze.d.ts +17 -0
- package/dist/deep-freeze.d.ts.map +1 -0
- package/dist/deep-freeze.js +40 -0
- package/dist/deep-freeze.js.map +1 -0
- package/dist/errors.d.ts +96 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +157 -0
- package/dist/errors.js.map +1 -0
- package/dist/format.d.ts +48 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +0 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.d.ts +60 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +215 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tx-builder.d.ts +76 -0
- package/dist/tx-builder.d.ts.map +1 -0
- package/dist/tx-builder.js +116 -0
- package/dist/tx-builder.js.map +1 -0
- package/dist/types.d.ts +155 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +140 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
package/dist/types.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types and zod schemas for @droplinked_inc/web3-kit.
|
|
3
|
+
*
|
|
4
|
+
* Every value crossing an external boundary (user-supplied chain id,
|
|
5
|
+
* token symbol, RPC URL, ABI-encoded payload) is validated against these
|
|
6
|
+
* schemas. See THREAT_MODEL.md for the rationale on each invariant.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/* -------------------------------------------------------------------------- */
|
|
10
|
+
/* Chain identifiers (preserved 1:1 with the original v1.0.13 surface) */
|
|
11
|
+
/* -------------------------------------------------------------------------- */
|
|
12
|
+
/**
|
|
13
|
+
* Canonical chain identifier used across the kit. String-valued so the
|
|
14
|
+
* representation is stable across JSON wire-formats and survives
|
|
15
|
+
* postMessage / fetch round-trips.
|
|
16
|
+
*/
|
|
17
|
+
export var Chains;
|
|
18
|
+
(function (Chains) {
|
|
19
|
+
Chains["POLYGON"] = "POLYGON";
|
|
20
|
+
Chains["BINANCE"] = "BINANCE";
|
|
21
|
+
Chains["SKALE"] = "SKALE";
|
|
22
|
+
Chains["BASE"] = "BASE";
|
|
23
|
+
Chains["LINEA"] = "LINEA";
|
|
24
|
+
Chains["ETH"] = "ETH";
|
|
25
|
+
Chains["SOLANA"] = "SOLANA";
|
|
26
|
+
Chains["REDBELLY"] = "REDBELLY";
|
|
27
|
+
Chains["UNSTOPPABLE"] = "UNSTOPPABLE";
|
|
28
|
+
Chains["BITLAYER"] = "BITLAYER";
|
|
29
|
+
Chains["XION"] = "XION";
|
|
30
|
+
})(Chains || (Chains = {}));
|
|
31
|
+
export var Network;
|
|
32
|
+
(function (Network) {
|
|
33
|
+
Network["TESTNET"] = "TESTNET";
|
|
34
|
+
Network["MAINNET"] = "MAINNET";
|
|
35
|
+
})(Network || (Network = {}));
|
|
36
|
+
export var Groups;
|
|
37
|
+
(function (Groups) {
|
|
38
|
+
Groups["EVM"] = "EVM";
|
|
39
|
+
Groups["SOL"] = "SOL";
|
|
40
|
+
Groups["BTC"] = "BTC";
|
|
41
|
+
Groups["XION"] = "XION";
|
|
42
|
+
Groups["UD"] = "UD";
|
|
43
|
+
})(Groups || (Groups = {}));
|
|
44
|
+
export const ChainsSchema = z.nativeEnum(Chains);
|
|
45
|
+
export const NetworkSchema = z.nativeEnum(Network);
|
|
46
|
+
export const GroupsSchema = z.nativeEnum(Groups);
|
|
47
|
+
/* -------------------------------------------------------------------------- */
|
|
48
|
+
/* EVM primitives */
|
|
49
|
+
/* -------------------------------------------------------------------------- */
|
|
50
|
+
export const EvmAddressSchema = z
|
|
51
|
+
.string()
|
|
52
|
+
.regex(/^0x[a-fA-F0-9]{40}$/u, 'invalid EVM address')
|
|
53
|
+
.transform((s) => s.toLowerCase());
|
|
54
|
+
export const HexStringSchema = z
|
|
55
|
+
.string()
|
|
56
|
+
.regex(/^0x[a-fA-F0-9]*$/u, 'invalid hex string');
|
|
57
|
+
/**
|
|
58
|
+
* Accepts the v1.0.13 wire-format for unsigned 256-bit numbers
|
|
59
|
+
* (`bigint`, base-10 string, non-negative finite integer) and
|
|
60
|
+
* normalizes to bigint. Negative, fractional, or out-of-range
|
|
61
|
+
* inputs are rejected.
|
|
62
|
+
*/
|
|
63
|
+
export const Uint256Schema = z
|
|
64
|
+
.union([
|
|
65
|
+
z.bigint(),
|
|
66
|
+
z.number().int().nonnegative(),
|
|
67
|
+
z.string().regex(/^\d+$/u),
|
|
68
|
+
])
|
|
69
|
+
.transform((v) => (typeof v === 'bigint' ? v : BigInt(v)))
|
|
70
|
+
.refine((v) => v >= 0n && v <= (1n << 256n) - 1n, 'uint256 out of range');
|
|
71
|
+
/* -------------------------------------------------------------------------- */
|
|
72
|
+
/* Token identifiers */
|
|
73
|
+
/* -------------------------------------------------------------------------- */
|
|
74
|
+
/**
|
|
75
|
+
* Canonical short-symbol identifier for known fiat-equivalent or
|
|
76
|
+
* native tokens used during checkout. The set is intentionally small
|
|
77
|
+
* — anything outside is rejected by the registry to prevent symbol
|
|
78
|
+
* impersonation attacks (see THREAT_MODEL.md §4).
|
|
79
|
+
*/
|
|
80
|
+
export var PaymentTokens;
|
|
81
|
+
(function (PaymentTokens) {
|
|
82
|
+
PaymentTokens["ETH"] = "ETH";
|
|
83
|
+
PaymentTokens["BNB"] = "BNB";
|
|
84
|
+
PaymentTokens["MATIC"] = "MATIC";
|
|
85
|
+
PaymentTokens["SOL"] = "SOL";
|
|
86
|
+
PaymentTokens["BTC"] = "BTC";
|
|
87
|
+
PaymentTokens["USDC"] = "USDC";
|
|
88
|
+
PaymentTokens["USDT"] = "USDT";
|
|
89
|
+
PaymentTokens["USDS"] = "USDS";
|
|
90
|
+
PaymentTokens["DAI"] = "DAI";
|
|
91
|
+
PaymentTokens["WETH"] = "WETH";
|
|
92
|
+
})(PaymentTokens || (PaymentTokens = {}));
|
|
93
|
+
export const PaymentTokensSchema = z.nativeEnum(PaymentTokens);
|
|
94
|
+
/* -------------------------------------------------------------------------- */
|
|
95
|
+
/* Chain payment payload (replaces v1.0.13's `IChainPayment`) */
|
|
96
|
+
/* -------------------------------------------------------------------------- */
|
|
97
|
+
export const ChainPaymentSchema = z.object({
|
|
98
|
+
totalPrice: Uint256Schema,
|
|
99
|
+
tbdValues: z.array(Uint256Schema),
|
|
100
|
+
tbdReceivers: z.array(EvmAddressSchema),
|
|
101
|
+
tokenAddress: EvmAddressSchema.optional(),
|
|
102
|
+
memo: z.string().max(512, 'memo too long'),
|
|
103
|
+
chainLinkRoundId: z.string().regex(/^\d+$/u).optional(),
|
|
104
|
+
});
|
|
105
|
+
/* -------------------------------------------------------------------------- */
|
|
106
|
+
/* Purchase / claim signature */
|
|
107
|
+
/* -------------------------------------------------------------------------- */
|
|
108
|
+
export const PurchaseConfirmationDataSchema = z.array(z.object({
|
|
109
|
+
amount: z.number().int().nonnegative(),
|
|
110
|
+
productId: z.string().min(1).max(128),
|
|
111
|
+
nullifier: z.string().regex(/^0x[a-fA-F0-9]{1,128}$/u),
|
|
112
|
+
}));
|
|
113
|
+
export const PurchaseSignatureSchema = z.object({
|
|
114
|
+
signature: z.string().regex(/^0x[a-fA-F0-9]{130}$/u, 'invalid 65-byte secp256k1 signature'),
|
|
115
|
+
purchaseData: PurchaseConfirmationDataSchema,
|
|
116
|
+
});
|
|
117
|
+
/* -------------------------------------------------------------------------- */
|
|
118
|
+
/* Misc */
|
|
119
|
+
/* -------------------------------------------------------------------------- */
|
|
120
|
+
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
121
|
+
export var NFTType;
|
|
122
|
+
(function (NFTType) {
|
|
123
|
+
NFTType[NFTType["ERC1155"] = 0] = "ERC1155";
|
|
124
|
+
NFTType[NFTType["ERC721"] = 1] = "ERC721";
|
|
125
|
+
})(NFTType || (NFTType = {}));
|
|
126
|
+
export var ProductType;
|
|
127
|
+
(function (ProductType) {
|
|
128
|
+
ProductType[ProductType["DIGITAL"] = 0] = "DIGITAL";
|
|
129
|
+
ProductType[ProductType["POD"] = 1] = "POD";
|
|
130
|
+
ProductType[ProductType["PHYSICAL"] = 2] = "PHYSICAL";
|
|
131
|
+
})(ProductType || (ProductType = {}));
|
|
132
|
+
export var Actions;
|
|
133
|
+
(function (Actions) {
|
|
134
|
+
Actions["Payment"] = "Payment";
|
|
135
|
+
Actions["ClaimNFT"] = "ClaimNFT";
|
|
136
|
+
Actions["Record"] = "Record";
|
|
137
|
+
Actions["Auth"] = "Auth";
|
|
138
|
+
Actions["Login"] = "Login";
|
|
139
|
+
})(Actions || (Actions = {}));
|
|
140
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@droplinked_inc/web3-kit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Higher-level web3 building blocks (chain registry, known-token registry, display formatters, tx builders) — hardened rebuild of the original droplinked-web3-kit@1.0.13.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"THREAT_MODEL.md",
|
|
19
|
+
"CHANGELOG.md"
|
|
20
|
+
],
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"viem": "^2.21.0",
|
|
24
|
+
"zod": "^3.23.8"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@droplinked_inc/wallet-connection": "0.1.1"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/jest": "^29.5.12",
|
|
31
|
+
"@types/node": "^22.5.0",
|
|
32
|
+
"fast-check": "^3.22.0",
|
|
33
|
+
"typescript": "^5.6.0",
|
|
34
|
+
"@droplinked_inc/wallet-connection": "0.1.1"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"provenance": false,
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/droplinked/droplink-packages.git",
|
|
43
|
+
"directory": "packages/web3-kit"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=22.0.0"
|
|
47
|
+
},
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "tsc -p tsconfig.json",
|
|
50
|
+
"test": "jest",
|
|
51
|
+
"test:coverage": "jest --coverage",
|
|
52
|
+
"lint": "eslint src --max-warnings=0",
|
|
53
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
54
|
+
}
|
|
55
|
+
}
|