tbc-tx-parser 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/README.md +214 -0
- package/dist/adapters/partial-sha256.d.ts +2 -0
- package/dist/adapters/partial-sha256.d.ts.map +1 -0
- package/dist/adapters/partial-sha256.js +5 -0
- package/dist/adapters/partial-sha256.js.map +1 -0
- package/dist/adapters/tbc-lib.d.ts +4 -0
- package/dist/adapters/tbc-lib.d.ts.map +1 -0
- package/dist/adapters/tbc-lib.js +4 -0
- package/dist/adapters/tbc-lib.js.map +1 -0
- package/dist/constants/chain.d.ts +4 -0
- package/dist/constants/chain.d.ts.map +1 -0
- package/dist/constants/chain.js +7 -0
- package/dist/constants/chain.js.map +1 -0
- package/dist/core/chain.d.ts +10 -0
- package/dist/core/chain.d.ts.map +1 -0
- package/dist/core/chain.js +41 -0
- package/dist/core/chain.js.map +1 -0
- package/dist/core/input-utxos.d.ts +3 -0
- package/dist/core/input-utxos.d.ts.map +1 -0
- package/dist/core/input-utxos.js +69 -0
- package/dist/core/input-utxos.js.map +1 -0
- package/dist/core/public-chain-compression.d.ts +4 -0
- package/dist/core/public-chain-compression.d.ts.map +1 -0
- package/dist/core/public-chain-compression.js +87 -0
- package/dist/core/public-chain-compression.js.map +1 -0
- package/dist/core/public-script.d.ts +4 -0
- package/dist/core/public-script.d.ts.map +1 -0
- package/dist/core/public-script.js +94 -0
- package/dist/core/public-script.js.map +1 -0
- package/dist/decode-tx-raw.d.ts +3 -0
- package/dist/decode-tx-raw.d.ts.map +1 -0
- package/dist/decode-tx-raw.js +350 -0
- package/dist/decode-tx-raw.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/ft/index.d.ts +7 -0
- package/dist/protocols/ft/index.d.ts.map +1 -0
- package/dist/protocols/ft/index.js +393 -0
- package/dist/protocols/ft/index.js.map +1 -0
- package/dist/protocols/index.d.ts +5 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +61 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/nft/index.d.ts +8 -0
- package/dist/protocols/nft/index.d.ts.map +1 -0
- package/dist/protocols/nft/index.js +335 -0
- package/dist/protocols/nft/index.js.map +1 -0
- package/dist/protocols/nft/media.js.map +1 -0
- package/dist/protocols/order-book/actions.d.ts +7 -0
- package/dist/protocols/order-book/actions.d.ts.map +1 -0
- package/dist/protocols/order-book/actions.js +102 -0
- package/dist/protocols/order-book/actions.js.map +1 -0
- package/dist/protocols/order-book/facts.d.ts +7 -0
- package/dist/protocols/order-book/facts.d.ts.map +1 -0
- package/dist/protocols/order-book/facts.js +81 -0
- package/dist/protocols/order-book/facts.js.map +1 -0
- package/dist/protocols/order-book/identity.d.ts +3 -0
- package/dist/protocols/order-book/identity.d.ts.map +1 -0
- package/dist/protocols/order-book/identity.js +46 -0
- package/dist/protocols/order-book/identity.js.map +1 -0
- package/dist/protocols/order-book/index.d.ts +12 -0
- package/dist/protocols/order-book/index.d.ts.map +1 -0
- package/dist/protocols/order-book/index.js +34 -0
- package/dist/protocols/order-book/index.js.map +1 -0
- package/dist/protocols/order-book/settlement.d.ts +10 -0
- package/dist/protocols/order-book/settlement.d.ts.map +1 -0
- package/dist/protocols/order-book/settlement.js +318 -0
- package/dist/protocols/order-book/settlement.js.map +1 -0
- package/dist/protocols/order-book/types.d.ts +101 -0
- package/dist/protocols/order-book/types.d.ts.map +1 -0
- package/dist/protocols/order-book/types.js +2 -0
- package/dist/protocols/order-book/types.js.map +1 -0
- package/dist/protocols/piggy-bank/index.d.ts +7 -0
- package/dist/protocols/piggy-bank/index.d.ts.map +1 -0
- package/dist/protocols/piggy-bank/index.js +91 -0
- package/dist/protocols/piggy-bank/index.js.map +1 -0
- package/dist/protocols/pool-nft/actions.d.ts +15 -0
- package/dist/protocols/pool-nft/actions.d.ts.map +1 -0
- package/dist/protocols/pool-nft/actions.js +90 -0
- package/dist/protocols/pool-nft/actions.js.map +1 -0
- package/dist/protocols/pool-nft/amounts.d.ts +10 -0
- package/dist/protocols/pool-nft/amounts.d.ts.map +1 -0
- package/dist/protocols/pool-nft/amounts.js +45 -0
- package/dist/protocols/pool-nft/amounts.js.map +1 -0
- package/dist/protocols/pool-nft/constants.d.ts +15 -0
- package/dist/protocols/pool-nft/constants.d.ts.map +1 -0
- package/dist/protocols/pool-nft/constants.js +27 -0
- package/dist/protocols/pool-nft/constants.js.map +1 -0
- package/dist/protocols/pool-nft/facts.d.ts +11 -0
- package/dist/protocols/pool-nft/facts.d.ts.map +1 -0
- package/dist/protocols/pool-nft/facts.js +113 -0
- package/dist/protocols/pool-nft/facts.js.map +1 -0
- package/dist/protocols/pool-nft/fees.d.ts +14 -0
- package/dist/protocols/pool-nft/fees.d.ts.map +1 -0
- package/dist/protocols/pool-nft/fees.js +161 -0
- package/dist/protocols/pool-nft/fees.js.map +1 -0
- package/dist/protocols/pool-nft/index.d.ts +4 -0
- package/dist/protocols/pool-nft/index.d.ts.map +1 -0
- package/dist/protocols/pool-nft/index.js +19 -0
- package/dist/protocols/pool-nft/index.js.map +1 -0
- package/dist/protocols/pool-nft/movements.d.ts +5 -0
- package/dist/protocols/pool-nft/movements.d.ts.map +1 -0
- package/dist/protocols/pool-nft/movements.js +804 -0
- package/dist/protocols/pool-nft/movements.js.map +1 -0
- package/dist/protocols/pool-nft/selectors.d.ts +40 -0
- package/dist/protocols/pool-nft/selectors.d.ts.map +1 -0
- package/dist/protocols/pool-nft/selectors.js +173 -0
- package/dist/protocols/pool-nft/selectors.js.map +1 -0
- package/dist/protocols/pool-nft/types.d.ts +34 -0
- package/dist/protocols/pool-nft/types.d.ts.map +1 -0
- package/dist/protocols/pool-nft/types.js +2 -0
- package/dist/protocols/pool-nft/types.js.map +1 -0
- package/dist/protocols/tbc/index.d.ts +3 -0
- package/dist/protocols/tbc/index.d.ts.map +1 -0
- package/dist/protocols/tbc/index.js +21 -0
- package/dist/protocols/tbc/index.js.map +1 -0
- package/dist/protocols/types.d.ts +15 -0
- package/dist/protocols/types.d.ts.map +1 -0
- package/dist/protocols/types.js +2 -0
- package/dist/protocols/types.js.map +1 -0
- package/dist/result/index.d.ts +7 -0
- package/dist/result/index.d.ts.map +1 -0
- package/dist/result/index.js +869 -0
- package/dist/result/index.js.map +1 -0
- package/dist/result/semantic.d.ts +6 -0
- package/dist/result/semantic.d.ts.map +1 -0
- package/dist/result/semantic.js +950 -0
- package/dist/result/semantic.js.map +1 -0
- package/dist/script-parser/contracts.d.ts +7 -0
- package/dist/script-parser/contracts.d.ts.map +1 -0
- package/dist/script-parser/contracts.js +104 -0
- package/dist/script-parser/contracts.js.map +1 -0
- package/dist/script-parser/op-return.d.ts +8 -0
- package/dist/script-parser/op-return.d.ts.map +1 -0
- package/dist/script-parser/op-return.js +315 -0
- package/dist/script-parser/op-return.js.map +1 -0
- package/dist/script-parser/origin.d.ts +6 -0
- package/dist/script-parser/origin.d.ts.map +1 -0
- package/dist/script-parser/origin.js +68 -0
- package/dist/script-parser/origin.js.map +1 -0
- package/dist/script-parser.d.ts +3 -0
- package/dist/script-parser.d.ts.map +1 -0
- package/dist/script-parser.js +183 -0
- package/dist/script-parser.js.map +1 -0
- package/dist/types/protocol.d.ts +175 -0
- package/dist/types/protocol.d.ts.map +1 -0
- package/dist/types/protocol.js +2 -0
- package/dist/types/protocol.js.map +1 -0
- package/dist/types/result.d.ts +167 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +2 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/script.d.ts +180 -0
- package/dist/types/script.d.ts.map +1 -0
- package/dist/types/script.js +9 -0
- package/dist/types/script.js.map +1 -0
- package/dist/types/semantic.d.ts +94 -0
- package/dist/types/semantic.d.ts.map +1 -0
- package/dist/types/semantic.js +2 -0
- package/dist/types/semantic.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/asm-converter.d.ts +7 -0
- package/dist/utils/asm-converter.d.ts.map +1 -0
- package/dist/utils/asm-converter.js +105 -0
- package/dist/utils/asm-converter.js.map +1 -0
- package/dist/utils/binary.d.ts +3 -0
- package/dist/utils/binary.d.ts.map +1 -0
- package/dist/utils/binary.js +17 -0
- package/dist/utils/binary.js.map +1 -0
- package/dist/utils/multi-sig.d.ts +9 -0
- package/dist/utils/multi-sig.d.ts.map +1 -0
- package/dist/utils/multi-sig.js +125 -0
- package/dist/utils/multi-sig.js.map +1 -0
- package/dist/utils/token-amount.d.ts +3 -0
- package/dist/utils/token-amount.d.ts.map +1 -0
- package/dist/utils/token-amount.js +37 -0
- package/dist/utils/token-amount.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-amount.d.ts","sourceRoot":"","sources":["../../src/utils/token-amount.ts"],"names":[],"mappings":"AAmCA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExF;AAGD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Token amount formatting uses smallest units internally and scales by decimal for display.
|
|
2
|
+
const MAX_TOKEN_DISPLAY_DECIMALS = 6;
|
|
3
|
+
const MAX_SAFE_DECIMALS = 18;
|
|
4
|
+
// Clamp decimals read from on-chain tape to a safe range to bound processing cost for malformed input.
|
|
5
|
+
function normalizeDecimal(decimal) {
|
|
6
|
+
if (!Number.isFinite(decimal)) {
|
|
7
|
+
return 0;
|
|
8
|
+
}
|
|
9
|
+
return Math.min(Math.max(Math.floor(decimal), 0), MAX_SAFE_DECIMALS);
|
|
10
|
+
}
|
|
11
|
+
// Format a smallest-unit amount for humans without rounding away significant trailing digits.
|
|
12
|
+
function formatMinimalUnitAmount(rawAmount, decimal, maxFractionDigits) {
|
|
13
|
+
const value = typeof rawAmount === 'bigint' ? rawAmount : BigInt(rawAmount || '0');
|
|
14
|
+
const safeDecimal = normalizeDecimal(decimal);
|
|
15
|
+
if (safeDecimal === 0) {
|
|
16
|
+
return value.toString();
|
|
17
|
+
}
|
|
18
|
+
const divisor = BigInt(10) ** BigInt(safeDecimal);
|
|
19
|
+
const integerPart = value / divisor;
|
|
20
|
+
const fractionPart = value % divisor;
|
|
21
|
+
if (fractionPart === BigInt(0)) {
|
|
22
|
+
return integerPart.toString();
|
|
23
|
+
}
|
|
24
|
+
const displayDecimals = Math.min(safeDecimal, Math.max(Math.floor(maxFractionDigits), 0));
|
|
25
|
+
const fractionStr = fractionPart.toString().padStart(safeDecimal, '0').slice(0, displayDecimals);
|
|
26
|
+
return `${integerPart.toString()}.${fractionStr}`;
|
|
27
|
+
}
|
|
28
|
+
// Display at most six decimal places by default for UI and semantic display amounts.
|
|
29
|
+
export function formatTokenRawAmount(rawAmount, decimal) {
|
|
30
|
+
return formatMinimalUnitAmount(rawAmount, decimal, MAX_TOKEN_DISPLAY_DECIMALS);
|
|
31
|
+
}
|
|
32
|
+
// Support legacy numeric amounts while preferring raw and display fields for exact values.
|
|
33
|
+
export function toTokenAmountNumber(rawAmount, decimal) {
|
|
34
|
+
const n = Number(formatMinimalUnitAmount(rawAmount, decimal, MAX_SAFE_DECIMALS));
|
|
35
|
+
return Number.isFinite(n) ? n : 0;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=token-amount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-amount.js","sourceRoot":"","sources":["../../src/utils/token-amount.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,uGAAuG;AACvG,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACvE,CAAC;AAED,8FAA8F;AAC9F,SAAS,uBAAuB,CAAC,SAA0B,EAAE,OAAe,EAAE,iBAAyB;IACrG,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,CAAC;IACpC,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;IACrC,IAAI,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACjG,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;AACpD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,SAA0B,EAAE,OAAe;IAC9E,OAAO,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;AACjF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,SAA0B,EAAE,OAAe;IAC7E,MAAM,CAAC,GAAG,MAAM,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tbc-tx-parser",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Decode TBC txraw hex into structured transaction facts.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"packageManager": "pnpm@10.25.0",
|
|
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
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.check.json",
|
|
22
|
+
"test": "vitest run tests/unit tests/integration",
|
|
23
|
+
"generate:decode-cases": "vitest run tests/decode",
|
|
24
|
+
"pool-nft:preflight": "node --experimental-strip-types scripts/pool-nft.ts preflight",
|
|
25
|
+
"pool-nft:run": "node --experimental-strip-types scripts/pool-nft.ts run",
|
|
26
|
+
"pool-nft:status": "node --experimental-strip-types scripts/pool-nft.ts status",
|
|
27
|
+
"pool-nft:fixtures": "npm run build && node --experimental-strip-types scripts/generate-pool-nft-fixtures.ts",
|
|
28
|
+
"prepack": "pnpm build",
|
|
29
|
+
"prepublishOnly": "pnpm build && pnpm typecheck && pnpm test"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^25.9.1",
|
|
33
|
+
"typescript": "~5.8.0",
|
|
34
|
+
"vitest": "^3.2.0"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"tbc",
|
|
38
|
+
"txraw",
|
|
39
|
+
"decoder",
|
|
40
|
+
"blockchain",
|
|
41
|
+
"transaction"
|
|
42
|
+
],
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"tbc-contract": "1.6.5",
|
|
45
|
+
"tbc-lib-js": "^1.0.30"
|
|
46
|
+
}
|
|
47
|
+
}
|