dequanto 0.2.52 → 0.2.55
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/lib/cjs/contracts/ContractStorageReaderBase.js.map +1 -1
- package/lib/cjs/contracts/deploy/proxy/$proxyDeploy.js +4 -4
- package/lib/cjs/contracts/deploy/proxy/$proxyDeploy.js.map +1 -1
- package/lib/cjs/gen/Generator.js +1 -0
- package/lib/cjs/gen/Generator.js.map +1 -1
- package/lib/cjs/gen/GeneratorFromAbi.js +38 -9
- package/lib/cjs/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/cjs/gen/GeneratorStorageReader.js +13 -2
- package/lib/cjs/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/cjs/solidity/SlotsParser/Ast.js +20 -2
- package/lib/cjs/solidity/SlotsParser/Ast.js.map +1 -1
- package/lib/cjs/solidity/SlotsParser.js +31 -19
- package/lib/cjs/solidity/SlotsParser.js.map +1 -1
- package/lib/cjs/solidity/SlotsStorage.js +4 -1
- package/lib/cjs/solidity/SlotsStorage.js.map +1 -1
- package/lib/cjs/solidity/storage/SlotsStorageTransport.js +6 -9
- package/lib/cjs/solidity/storage/SlotsStorageTransport.js.map +1 -1
- package/lib/cjs/solidity/storage/handlers/SlotDynamicArrayHandler.js +1 -1
- package/lib/cjs/solidity/storage/handlers/SlotDynamicArrayHandler.js.map +1 -1
- package/lib/cjs/utils/$bigint.js +3 -1
- package/lib/cjs/utils/$bigint.js.map +1 -1
- package/lib/esm/contracts/ContractStorageReaderBase.js.map +1 -1
- package/lib/esm/contracts/deploy/proxy/$proxyDeploy.js.map +1 -1
- package/lib/esm/contracts/deploy/proxy/$proxyDeploy.mjs +4 -4
- package/lib/esm/gen/Generator.js.map +1 -1
- package/lib/esm/gen/Generator.mjs +1 -0
- package/lib/esm/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/esm/gen/GeneratorFromAbi.mjs +38 -9
- package/lib/esm/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/esm/gen/GeneratorStorageReader.mjs +13 -2
- package/lib/esm/solidity/SlotsParser/Ast.js.map +1 -1
- package/lib/esm/solidity/SlotsParser/Ast.mjs +20 -2
- package/lib/esm/solidity/SlotsParser.js.map +1 -1
- package/lib/esm/solidity/SlotsParser.mjs +31 -19
- package/lib/esm/solidity/SlotsStorage.js.map +1 -1
- package/lib/esm/solidity/SlotsStorage.mjs +4 -1
- package/lib/esm/solidity/storage/SlotsStorageTransport.js.map +1 -1
- package/lib/esm/solidity/storage/SlotsStorageTransport.mjs +6 -9
- package/lib/esm/solidity/storage/handlers/SlotDynamicArrayHandler.js.map +1 -1
- package/lib/esm/solidity/storage/handlers/SlotDynamicArrayHandler.mjs +1 -1
- package/lib/esm/utils/$bigint.js.map +1 -1
- package/lib/esm/utils/$bigint.mjs +3 -1
- package/lib/types/contracts/ContractStorageReaderBase.d.ts +2 -2
- package/lib/types/gen/Generator.d.ts +17 -0
- package/lib/types/gen/GeneratorFromAbi.d.ts +7 -0
- package/lib/types/gen/GeneratorStorageReader.d.ts +1 -0
- package/lib/types/solidity/SlotsParser/models.d.ts +6 -1
- package/lib/types/solidity/SlotsStorage.d.ts +4 -4
- package/lib/types/solidity/storage/SlotsStorageTransport.d.ts +5 -5
- package/lib/types/utils/$bigint.d.ts +1 -1
- package/package.json +2 -2
- package/src/contracts/ContractStorageReaderBase.ts +2 -2
- package/src/contracts/deploy/proxy/$proxyDeploy.ts +4 -4
- package/src/gen/Generator.ts +4 -0
- package/src/gen/GeneratorFromAbi.ts +40 -10
- package/src/gen/GeneratorStorageReader.ts +20 -7
- package/src/solidity/SlotsParser/Ast.ts +20 -2
- package/src/solidity/SlotsParser/models.ts +5 -1
- package/src/solidity/SlotsParser.ts +38 -22
- package/src/solidity/SlotsStorage.ts +8 -3
- package/src/solidity/storage/SlotsStorageTransport.ts +6 -9
- package/src/solidity/storage/handlers/SlotDynamicArrayHandler.ts +1 -1
- package/src/utils/$bigint.ts +4 -1
- package/tsconfig.json +2 -1
- package/lib/cjs/gen/Ast.js +0 -14
- package/lib/cjs/gen/Ast.js.map +0 -1
- package/lib/esm/gen/Ast.js.map +0 -1
- package/lib/esm/gen/Ast.mjs +0 -10
- package/lib/types/gen/Ast.d.ts +0 -3
- package/src/gen/Ast.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlotsStorageTransport.js","sourceRoot":"","sources":["../../../../src/solidity/storage/SlotsStorageTransport.ts"],"names":[],"mappings":";;;AAEA,uDAAoD;AACpD,wDAAqD;AAErD,oDAAiD;AACjD,wDAAqD;AACrD,8CAA2C;AAC3C,4CAAyC;AACzC,sDAAmD;AAoBnD,MAAa,oBAAoB;IAE7B,YAAoB,MAInB,EAAU,SAAyD;QAJhD,WAAM,GAAN,MAAM,CAIzB;QAAU,cAAS,GAAT,SAAS,CAAgD;IAEpE,CAAC;IAED,YAAY,CAAC,IAA8B,EAAE,QAAgB,EAAE,IAAY;QACvE,IAAI,UAAU,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,cAAc,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAA;QAE3D,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAE1B,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,YAAY,CAAC,IAA8B,EAAE,QAAgB,EAAE,IAAY,EAAE,MAA0C;QACnH,IAAI,UAAU,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,cAAc,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC;IAED,kBAAkB,CAAE,GAAG;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,eAAe,CAAE,
|
|
1
|
+
{"version":3,"file":"SlotsStorageTransport.js","sourceRoot":"","sources":["../../../../src/solidity/storage/SlotsStorageTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export class SlotsCursorTransport {
|
|
|
24
24
|
extractMappingKeys(ctx) {
|
|
25
25
|
return this.transport.extractMappingKeys(ctx);
|
|
26
26
|
}
|
|
27
|
-
mapToGlobalSlot(slot =
|
|
27
|
+
mapToGlobalSlot(slot = 0n) {
|
|
28
28
|
return BigInt(this.cursor.slot) + BigInt(slot);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -61,7 +61,7 @@ export class SlotsStorageTransport {
|
|
|
61
61
|
extractMappingKeys(ctx) {
|
|
62
62
|
throw new Error(`SlotMappingReader does not support the fetchAll method, as the size could be infinite`);
|
|
63
63
|
}
|
|
64
|
-
mapToGlobalSlot(slot =
|
|
64
|
+
mapToGlobalSlot(slot = 0n) {
|
|
65
65
|
return BigInt(slot);
|
|
66
66
|
}
|
|
67
67
|
async getStorageAtInner(slot) {
|
|
@@ -69,7 +69,7 @@ export class SlotsStorageTransport {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
export class SlotsStorageTransportForArray {
|
|
72
|
-
constructor(transport, slotNr, elementI = 0, slotsPerElement =
|
|
72
|
+
constructor(transport, slotNr, elementI = 0, slotsPerElement = 1n, slot) {
|
|
73
73
|
this.transport = transport;
|
|
74
74
|
this.slotNr = slotNr;
|
|
75
75
|
this.elementI = elementI;
|
|
@@ -77,19 +77,16 @@ export class SlotsStorageTransportForArray {
|
|
|
77
77
|
this.slot = slot;
|
|
78
78
|
}
|
|
79
79
|
async getStorageAt(slot, position = 0, size = 256) {
|
|
80
|
-
if (typeof slot !== 'number') {
|
|
81
|
-
throw new Error(`Array slot reader supports only numeric positions. Slot ${slot}`);
|
|
82
|
-
}
|
|
83
80
|
let location = this.mapToGlobalSlot(slot);
|
|
84
81
|
let memory = await this.getUnderlyingTransport().getStorageAt(location, position, size);
|
|
85
82
|
return memory;
|
|
86
83
|
}
|
|
87
84
|
async setStorageAt(slot, position, size, buffer) {
|
|
88
|
-
let location = this.mapToGlobalSlot(
|
|
85
|
+
let location = this.mapToGlobalSlot(BigInt(slot));
|
|
89
86
|
let memory = await this.transport.setStorageAt(location, position, size, buffer);
|
|
90
87
|
return memory;
|
|
91
88
|
}
|
|
92
|
-
mapToGlobalSlot(slotPositionNr =
|
|
89
|
+
mapToGlobalSlot(slotPositionNr = 0n) {
|
|
93
90
|
let packedRoot = this.transport?.mapToGlobalSlot(this.slotNr) ?? 0n;
|
|
94
91
|
let packedNextHash = $abiUtils.encodePacked({
|
|
95
92
|
value: $hex.padBytes($hex.toHexBuffer(packedRoot), 32),
|
|
@@ -111,7 +108,7 @@ export class SlotsStorageTransportForArray {
|
|
|
111
108
|
}
|
|
112
109
|
}
|
|
113
110
|
export class SlotsStorageTransportForMapping {
|
|
114
|
-
constructor(transport, slotNr, key, slotsPerElement =
|
|
111
|
+
constructor(transport, slotNr, key, slotsPerElement = 1n) {
|
|
115
112
|
this.transport = transport;
|
|
116
113
|
this.slotNr = slotNr;
|
|
117
114
|
this.key = key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlotDynamicArrayHandler.js","sourceRoot":"","sources":["../../../../../src/solidity/storage/handlers/SlotDynamicArrayHandler.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,+DAA4D;AAC5D,sDAAmD;AACnD,qDAAkD;AAElD,oEAAyE;AACzE,0DAAwD;AAExD,MAAa,uBAAwB,SAAQ,oCAAiB;IAE1D,KAAK,CAAC,GAAG,CAAC,IAAqB;QAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACxB;QACD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAqB,EAAE,KAAU;QACvC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpC,OAAO,MAAM,cAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAGO,KAAK,CAAC,eAAe,CAAC,GAAkB;QAE5C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SAClG;QAED,IAAI,QAAQ,GAAG,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,SAAS,GAAG,MAAM,yBAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzD,gFAAgF;QAChF,IAAI,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"SlotDynamicArrayHandler.js","sourceRoot":"","sources":["../../../../../src/solidity/storage/handlers/SlotDynamicArrayHandler.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,+DAA4D;AAC5D,sDAAmD;AACnD,qDAAkD;AAElD,oEAAyE;AACzE,0DAAwD;AAExD,MAAa,uBAAwB,SAAQ,oCAAiB;IAE1D,KAAK,CAAC,GAAG,CAAC,IAAqB;QAC3B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC1B;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACxB;QACD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAqB,EAAE,KAAU;QACvC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC9C;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpC,OAAO,MAAM,cAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAC,CAAC,EAAC,EAAE;YACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAGO,KAAK,CAAC,eAAe,CAAC,GAAkB;QAE5C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SAClG;QAED,IAAI,QAAQ,GAAG,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,SAAS,GAAG,MAAM,yBAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzD,gFAAgF;QAChF,IAAI,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAEhE,IAAI,SAAS,GAAG,IAAI,qDAA6B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvH,IAAI,OAAO,GAAG,IAAI,2BAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACnB,CAAC;CAEJ;AAjDD,0DAiDC"}
|
|
@@ -37,7 +37,7 @@ export class SlotDynamicArrayHandler extends ASlotDynamicArray {
|
|
|
37
37
|
let baseType = $abiType.array.getBaseType(this.slot.type);
|
|
38
38
|
let baseSlots = await SlotsParser.slotsFromAbi(baseType);
|
|
39
39
|
// take the last slot index as that one will give us the TOTAL SLOTs per element
|
|
40
|
-
let slotsPerElement = baseSlots[baseSlots.length - 1].slot +
|
|
40
|
+
let slotsPerElement = baseSlots[baseSlots.length - 1].slot + 1n;
|
|
41
41
|
let transport = new SlotsStorageTransportForArray(this.transport, this.slot.slot, key.key, slotsPerElement, this.slot);
|
|
42
42
|
let storage = new SlotsStorage(transport, baseSlots);
|
|
43
43
|
return storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$bigint.js","sourceRoot":"","sources":["../../../src/utils/$bigint.ts"],"names":[],"mappings":";;;AACA,uCAAoC;AACpC,yCAAsC;AACtC,4CAAyC;AAEzC,IAAiB,OAAO,
|
|
1
|
+
{"version":3,"file":"$bigint.js","sourceRoot":"","sources":["../../../src/utils/$bigint.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,9 +66,11 @@ export var $bigint;
|
|
|
66
66
|
}
|
|
67
67
|
$bigint_1.from = from;
|
|
68
68
|
/**
|
|
69
|
-
* @param amount e.g "2.4 ether", "10 gwei", "1.7^18", "123456", "1.7e18"
|
|
69
|
+
* @param amount e.g "2.4 ether", "10 gwei", "1.7^18", "123456", "1.7e18", "1_000_000"
|
|
70
70
|
*/
|
|
71
71
|
function parse(amount) {
|
|
72
|
+
// clean 1_000
|
|
73
|
+
amount = amount.replaceAll('_', '');
|
|
72
74
|
if (/^\d+$/.test(amount) || $is.Hex(amount)) {
|
|
73
75
|
return BigInt(amount);
|
|
74
76
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ISlotVarDefinitionInput } from 'dequanto/solidity/SlotsParser/models';
|
|
2
2
|
import { IBlockchainExplorer } from 'dequanto/explorer/IBlockchainExplorer';
|
|
3
3
|
import { Web3Client } from 'dequanto/clients/Web3Client';
|
|
4
4
|
import { TAddress } from 'dequanto/models/TAddress';
|
|
@@ -11,5 +11,5 @@ export declare class ContractStorageReaderBase {
|
|
|
11
11
|
constructor(address: TAddress, client: Web3Client, explorer: IBlockchainExplorer);
|
|
12
12
|
$get(...args: Parameters<SlotsStorage['get']>): Promise<any>;
|
|
13
13
|
$set(...args: Parameters<SlotsStorage['set']>): Promise<void>;
|
|
14
|
-
protected $createHandler(slots:
|
|
14
|
+
protected $createHandler(slots: ISlotVarDefinitionInput[]): void;
|
|
15
15
|
}
|
|
@@ -27,6 +27,8 @@ export interface IGenerateOptions {
|
|
|
27
27
|
* c) Method function to read the implementation address from
|
|
28
28
|
*/
|
|
29
29
|
implementation?: TEth.Hex | TEth.Address | string;
|
|
30
|
+
/** When false: no files will be saved. Use "files" in result */
|
|
31
|
+
save?: boolean;
|
|
30
32
|
/** ABI will be save alongside with TS classes */
|
|
31
33
|
saveAbi?: boolean;
|
|
32
34
|
/** Sources will not be saved if FALSE */
|
|
@@ -44,6 +46,11 @@ export declare class Generator {
|
|
|
44
46
|
address: `0x${string}`;
|
|
45
47
|
implementation: `0x${string}`;
|
|
46
48
|
contractName: string;
|
|
49
|
+
files: {
|
|
50
|
+
kind: string;
|
|
51
|
+
path: string;
|
|
52
|
+
content: string;
|
|
53
|
+
}[];
|
|
47
54
|
}>;
|
|
48
55
|
static generateFromJson(artifact: string): Promise<{
|
|
49
56
|
main: string;
|
|
@@ -52,6 +59,11 @@ export declare class Generator {
|
|
|
52
59
|
address: `0x${string}`;
|
|
53
60
|
implementation: `0x${string}`;
|
|
54
61
|
contractName: string;
|
|
62
|
+
files: {
|
|
63
|
+
kind: string;
|
|
64
|
+
path: string;
|
|
65
|
+
content: string;
|
|
66
|
+
}[];
|
|
55
67
|
}>;
|
|
56
68
|
/**
|
|
57
69
|
* @deprecated Was possible to generate the Contract Class based on the meta information header in TS file
|
|
@@ -64,6 +76,11 @@ export declare class Generator {
|
|
|
64
76
|
address: `0x${string}`;
|
|
65
77
|
implementation: `0x${string}`;
|
|
66
78
|
contractName: string;
|
|
79
|
+
files: {
|
|
80
|
+
kind: string;
|
|
81
|
+
path: string;
|
|
82
|
+
content: string;
|
|
83
|
+
}[];
|
|
67
84
|
}>;
|
|
68
85
|
private getAbi;
|
|
69
86
|
private getSources;
|
|
@@ -13,6 +13,8 @@ export declare class GeneratorFromAbi {
|
|
|
13
13
|
output: string;
|
|
14
14
|
outputFileExt?: string;
|
|
15
15
|
implementation: TAddress;
|
|
16
|
+
/** No FS writes, use files in response */
|
|
17
|
+
save?: boolean;
|
|
16
18
|
saveAbi?: boolean;
|
|
17
19
|
saveSources?: boolean;
|
|
18
20
|
sources?: {
|
|
@@ -31,6 +33,11 @@ export declare class GeneratorFromAbi {
|
|
|
31
33
|
address: `0x${string}`;
|
|
32
34
|
implementation: `0x${string}`;
|
|
33
35
|
contractName: string;
|
|
36
|
+
files: {
|
|
37
|
+
kind: string;
|
|
38
|
+
path: string;
|
|
39
|
+
content: string;
|
|
40
|
+
}[];
|
|
34
41
|
}>;
|
|
35
42
|
private getRelativePath;
|
|
36
43
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TEth } from 'dequanto/models/TEth';
|
|
1
2
|
import type { SourceFile } from './SourceFile';
|
|
2
3
|
export type TSourceFileImport = {
|
|
3
4
|
error?: string;
|
|
@@ -5,7 +6,7 @@ export type TSourceFileImport = {
|
|
|
5
6
|
file: SourceFile;
|
|
6
7
|
};
|
|
7
8
|
export interface ISlotVarDefinition {
|
|
8
|
-
slot:
|
|
9
|
+
slot: bigint;
|
|
9
10
|
position: number;
|
|
10
11
|
name: string;
|
|
11
12
|
type: string;
|
|
@@ -13,6 +14,10 @@ export interface ISlotVarDefinition {
|
|
|
13
14
|
memory?: 'storage' | 'constant' | 'immutable';
|
|
14
15
|
value?: string | number | bigint;
|
|
15
16
|
}
|
|
17
|
+
/** Slot definitions accepted from callers, including older generated readers. */
|
|
18
|
+
export type ISlotVarDefinitionInput = Omit<ISlotVarDefinition, 'slot'> & {
|
|
19
|
+
slot: number | bigint | TEth.Hex | string;
|
|
20
|
+
};
|
|
16
21
|
export interface ISlotsParserOption {
|
|
17
22
|
files?: {
|
|
18
23
|
path: string;
|
|
@@ -2,16 +2,16 @@ import { Web3Client } from 'dequanto/clients/Web3Client';
|
|
|
2
2
|
import { ISlotsStorageTransport } from './storage/SlotsStorageTransport';
|
|
3
3
|
import { TAddress } from 'dequanto/models/TAddress';
|
|
4
4
|
import { IAccessorItem } from './storage/Accessor';
|
|
5
|
-
import { ISlotVarDefinition } from './SlotsParser/models';
|
|
5
|
+
import { ISlotVarDefinition, ISlotVarDefinitionInput } from './SlotsParser/models';
|
|
6
6
|
import { TEth } from 'dequanto/models/TEth';
|
|
7
7
|
export declare class SlotsStorage {
|
|
8
8
|
transport: ISlotsStorageTransport;
|
|
9
|
-
slots:
|
|
10
|
-
static createWithClient(client: Web3Client, address: TAddress, slots: ISlotVarDefinition[], params?: {
|
|
9
|
+
static createWithClient(client: Web3Client, address: TAddress, slots: ISlotVarDefinitionInput[], params?: {
|
|
11
10
|
blockNumber?: number;
|
|
12
11
|
storageOffset?: TEth.Hex | bigint;
|
|
13
12
|
}): SlotsStorage;
|
|
14
|
-
|
|
13
|
+
slots: ISlotVarDefinition[];
|
|
14
|
+
constructor(transport: ISlotsStorageTransport, slots: ISlotVarDefinitionInput[]);
|
|
15
15
|
get<T = any>(path?: string | (string | number | bigint)[] | IAccessorItem[]): Promise<T>;
|
|
16
16
|
set(path: string | IAccessorItem[], value: any): Promise<void>;
|
|
17
17
|
fetchAll(): Promise<any>;
|
|
@@ -28,7 +28,7 @@ export declare class SlotsCursorTransport implements ISlotsStorageTransport {
|
|
|
28
28
|
extractMappingKeys(ctx: any): Promise<{
|
|
29
29
|
keys: (string | number | bigint)[][];
|
|
30
30
|
}>;
|
|
31
|
-
mapToGlobalSlot(slot?: number): bigint;
|
|
31
|
+
mapToGlobalSlot(slot?: string | number | bigint): bigint;
|
|
32
32
|
}
|
|
33
33
|
export declare class SlotsStorageTransport implements ISlotsStorageTransport {
|
|
34
34
|
client: Web3Client;
|
|
@@ -44,7 +44,7 @@ export declare class SlotsStorageTransport implements ISlotsStorageTransport {
|
|
|
44
44
|
extractMappingKeys(ctx: any): Promise<{
|
|
45
45
|
keys: (string | number | bigint)[][];
|
|
46
46
|
}>;
|
|
47
|
-
mapToGlobalSlot(slot?: number): bigint;
|
|
47
|
+
mapToGlobalSlot(slot?: string | number | bigint): bigint;
|
|
48
48
|
protected getStorageAtInner(slot: number | bigint | TEth.Hex): Promise<`0x${string}`>;
|
|
49
49
|
}
|
|
50
50
|
export declare class SlotsStorageTransportForArray implements ISlotsStorageTransport {
|
|
@@ -53,10 +53,10 @@ export declare class SlotsStorageTransportForArray implements ISlotsStorageTrans
|
|
|
53
53
|
private elementI;
|
|
54
54
|
private slotsPerElement;
|
|
55
55
|
private slot?;
|
|
56
|
-
constructor(transport: ISlotsStorageTransport, slotNr: number | bigint, elementI?: number, slotsPerElement?: number, slot?: ISlotVarDefinition);
|
|
56
|
+
constructor(transport: ISlotsStorageTransport, slotNr: number | bigint, elementI?: number, slotsPerElement?: number | bigint, slot?: ISlotVarDefinition);
|
|
57
57
|
getStorageAt(slot: string | number | bigint, position?: number, size?: number): Promise<string>;
|
|
58
58
|
setStorageAt(slot: string | number | bigint, position: number, size: number, buffer: string | number | bigint | boolean): Promise<void>;
|
|
59
|
-
mapToGlobalSlot(slotPositionNr?: number | bigint): bigint;
|
|
59
|
+
mapToGlobalSlot(slotPositionNr?: string | number | bigint): bigint;
|
|
60
60
|
extractMappingKeys(ctx: any): Promise<{
|
|
61
61
|
keys: (string | number | bigint)[][];
|
|
62
62
|
}>;
|
|
@@ -67,7 +67,7 @@ export declare class SlotsStorageTransportForMapping implements ISlotsStorageTra
|
|
|
67
67
|
private slotNr;
|
|
68
68
|
private key;
|
|
69
69
|
private slotsPerElement;
|
|
70
|
-
constructor(transport: ISlotsStorageTransport, slotNr: number, key: any, slotsPerElement?: number);
|
|
70
|
+
constructor(transport: ISlotsStorageTransport, slotNr: number | bigint, key: any, slotsPerElement?: number | bigint);
|
|
71
71
|
getStorageAt(slot: string | number | bigint, position: number, size: number): Promise<string>;
|
|
72
72
|
setStorageAt(slot: string | number | bigint, position: number, size: number, buffer: string | number | bigint | boolean): Promise<void>;
|
|
73
73
|
mapToGlobalSlot(slotPositionNr?: number | string | bigint): bigint;
|
|
@@ -9,7 +9,7 @@ export declare namespace $bigint {
|
|
|
9
9
|
function toBigInt(amount: string | number | bigint | Uint8Array): bigint;
|
|
10
10
|
function from(amount: number | bigint | string): bigint;
|
|
11
11
|
/**
|
|
12
|
-
* @param amount e.g "2.4 ether", "10 gwei", "1.7^18", "123456", "1.7e18"
|
|
12
|
+
* @param amount e.g "2.4 ether", "10 gwei", "1.7^18", "123456", "1.7e18", "1_000_000"
|
|
13
13
|
*/
|
|
14
14
|
function parse(amount: string): bigint;
|
|
15
15
|
function ensureWei(amount: number | bigint, decimals: number): bigint;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dequanto",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.55",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Alex Kit",
|
|
6
6
|
"email": "alex.kit@atmajs.com"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@noble/hashes": "^1.3.2",
|
|
69
69
|
"@scure/bip32": "^1.3.2",
|
|
70
70
|
"@scure/bip39": "^1.2.1",
|
|
71
|
-
"@solidity-parser/parser": "^0.
|
|
71
|
+
"@solidity-parser/parser": "^0.20.2",
|
|
72
72
|
"a-di": "^1.0.29",
|
|
73
73
|
"alot": "^0.3.12",
|
|
74
74
|
"appcfg": "^0.5.12",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ISlotVarDefinitionInput } from 'dequanto/solidity/SlotsParser/models';
|
|
2
2
|
import { IBlockchainExplorer } from 'dequanto/explorer/IBlockchainExplorer';
|
|
3
3
|
import { Web3Client } from 'dequanto/clients/Web3Client';
|
|
4
4
|
import { TAddress } from 'dequanto/models/TAddress';
|
|
@@ -23,7 +23,7 @@ export class ContractStorageReaderBase {
|
|
|
23
23
|
return this.$storage.set(...args);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
protected $createHandler(slots:
|
|
26
|
+
protected $createHandler(slots: ISlotVarDefinitionInput[]) {
|
|
27
27
|
this.$storage = SlotsStorage.createWithClient(this.client, this.address, slots);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -277,14 +277,14 @@ export namespace $proxyDeploy {
|
|
|
277
277
|
// Dynamic variables occupy a single slot.
|
|
278
278
|
return {
|
|
279
279
|
variable: $var,
|
|
280
|
-
offset: $var.slot *
|
|
281
|
-
length:
|
|
280
|
+
offset: BigInt($var.slot) * 256n,
|
|
281
|
+
length: 256n
|
|
282
282
|
}
|
|
283
283
|
};
|
|
284
284
|
return {
|
|
285
285
|
variable: $var,
|
|
286
|
-
offset: $var.slot *
|
|
287
|
-
length: $var.size
|
|
286
|
+
offset: BigInt($var.slot) * 256n + BigInt($var.position),
|
|
287
|
+
length: BigInt($var.size)
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
290
|
function serializePath (path: string, $var: ISlotVarDefinition) {
|
package/src/gen/Generator.ts
CHANGED
|
@@ -56,6 +56,9 @@ export interface IGenerateOptions {
|
|
|
56
56
|
*/
|
|
57
57
|
implementation?: TEth.Hex | TEth.Address | string
|
|
58
58
|
|
|
59
|
+
/** When false: no files will be saved. Use "files" in result */
|
|
60
|
+
save?: boolean
|
|
61
|
+
|
|
59
62
|
/** ABI will be save alongside with TS classes */
|
|
60
63
|
saveAbi?: boolean
|
|
61
64
|
|
|
@@ -240,6 +243,7 @@ export class Generator {
|
|
|
240
243
|
implementation: implementation,
|
|
241
244
|
sources: sources?.files,
|
|
242
245
|
sourceMain: sourceMain,
|
|
246
|
+
save: this.options.save,
|
|
243
247
|
saveAbi: this.options.saveAbi,
|
|
244
248
|
saveSources: this.options.saveSources,
|
|
245
249
|
client: this.client,
|
|
@@ -33,6 +33,8 @@ export class GeneratorFromAbi {
|
|
|
33
33
|
output: string
|
|
34
34
|
outputFileExt?: string
|
|
35
35
|
implementation: TAddress
|
|
36
|
+
/** No FS writes, use files in response */
|
|
37
|
+
save?: boolean
|
|
36
38
|
saveAbi?: boolean
|
|
37
39
|
saveSources?: boolean
|
|
38
40
|
sources?: {
|
|
@@ -320,24 +322,45 @@ export class GeneratorFromAbi {
|
|
|
320
322
|
.replace(`/* $METHOD_TYPES$ */`, () => Str.indent(methodTypings.map(x => x.code).join('\n'), ' '))
|
|
321
323
|
;
|
|
322
324
|
|
|
325
|
+
if (opts.save !== false) {
|
|
326
|
+
await File.writeAsync(outputPath, code, { skipHooks: true });
|
|
327
|
+
}
|
|
328
|
+
const files = [
|
|
329
|
+
{
|
|
330
|
+
kind: 'binding',
|
|
331
|
+
path: outputPath,
|
|
332
|
+
content: code,
|
|
333
|
+
}
|
|
334
|
+
];
|
|
323
335
|
|
|
324
|
-
await File.writeAsync(outputPath, code, { skipHooks: true });
|
|
325
336
|
if (outputSourceType === 'js') {
|
|
326
337
|
let outputPathDts = outputPath.replace(/\.\w+$/, '.d.ts');
|
|
327
|
-
|
|
338
|
+
if (opts.save !== false) {
|
|
339
|
+
await File.writeAsync(outputPathDts, codeDts, { skipHooks: true });
|
|
340
|
+
}
|
|
341
|
+
files.push({
|
|
342
|
+
kind: 'declaration',
|
|
343
|
+
path: outputPathDts,
|
|
344
|
+
content: codeDts,
|
|
345
|
+
});
|
|
328
346
|
}
|
|
329
347
|
|
|
330
348
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
await File.writeAsync(
|
|
349
|
+
let outputPathAbi = class_Uri.combine(opts.output, outputDirectory, `${outputFilename}Abi.json`);
|
|
350
|
+
if (opts.saveAbi && opts.save !== false) {
|
|
351
|
+
await File.writeAsync(outputPathAbi, abiJson);
|
|
334
352
|
}
|
|
353
|
+
files.push({
|
|
354
|
+
kind: 'abi',
|
|
355
|
+
path: outputPathAbi,
|
|
356
|
+
content: JSON.stringify(abiJson),
|
|
357
|
+
});
|
|
335
358
|
|
|
336
359
|
$logger.log(`bold<green<${className}>> ABI wrapper class created: bold<${outputPath}>`);
|
|
337
360
|
|
|
338
361
|
let sources = opts.sources;
|
|
339
362
|
let sourceFiles = [];
|
|
340
|
-
if (sources
|
|
363
|
+
if (sources) {
|
|
341
364
|
sourceFiles = await alot.fromObject(sources).mapAsync(async entry => {
|
|
342
365
|
let sourceFilename = /\/?([^/]+$)/.exec(entry.key)[1];
|
|
343
366
|
let sourcePath = entry.key;
|
|
@@ -351,9 +374,15 @@ export class GeneratorFromAbi {
|
|
|
351
374
|
// sourcePath = `node_modules/${ sourcePath }`;
|
|
352
375
|
// }
|
|
353
376
|
let path = class_Uri.combine(opts.output, outputDirectory, outputFilename, sourcePath);
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
377
|
+
if (opts.saveSources !== false && opts.save !== false) {
|
|
378
|
+
await File.writeAsync(path, entry.value.content, { skipHooks: true });
|
|
379
|
+
$logger.log(`Source code saved: ${path}`);
|
|
380
|
+
}
|
|
381
|
+
files.push({
|
|
382
|
+
kind: 'source',
|
|
383
|
+
path: path,
|
|
384
|
+
content: entry.value.content,
|
|
385
|
+
});
|
|
357
386
|
return path;
|
|
358
387
|
}).toArrayAsync();
|
|
359
388
|
}
|
|
@@ -363,7 +392,8 @@ export class GeneratorFromAbi {
|
|
|
363
392
|
platform: opts.network,
|
|
364
393
|
address: opts.address,
|
|
365
394
|
implementation: opts.implementation,
|
|
366
|
-
contractName: opts.contractName
|
|
395
|
+
contractName: opts.contractName,
|
|
396
|
+
files
|
|
367
397
|
};
|
|
368
398
|
}
|
|
369
399
|
|
|
@@ -11,6 +11,7 @@ import { $path } from 'dequanto/utils/$path'
|
|
|
11
11
|
import { $gen } from './utils/$gen'
|
|
12
12
|
import { ISlotVarDefinition } from 'dequanto/solidity/SlotsParser/models'
|
|
13
13
|
|
|
14
|
+
|
|
14
15
|
export class GeneratorStorageReader {
|
|
15
16
|
|
|
16
17
|
async generate(opts: {
|
|
@@ -72,12 +73,12 @@ export class GeneratorStorageReader {
|
|
|
72
73
|
let code = template
|
|
73
74
|
.replace(`$NAME$`, className)
|
|
74
75
|
.replace(`/* METHODS */`, () => codeMethods)
|
|
75
|
-
.replace(`$SLOTS$`, () =>
|
|
76
|
+
.replace(`$SLOTS$`, () => this.serializeSlotDefinitions(slots))
|
|
76
77
|
|
|
77
78
|
let codeTypings = templateTypings
|
|
78
79
|
.replace(`$NAME$`, className)
|
|
79
80
|
.replace(`/* METHODS */`, () => codeMethodsTypings)
|
|
80
|
-
.replace(`$SLOTS$`, () =>
|
|
81
|
+
.replace(`$SLOTS$`, () => this.serializeSlotDefinitions(slots))
|
|
81
82
|
|
|
82
83
|
return {
|
|
83
84
|
className: className,
|
|
@@ -87,7 +88,19 @@ export class GeneratorStorageReader {
|
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
|
|
90
|
-
private
|
|
91
|
+
private serializeSlotDefinitions(slots: ISlotVarDefinition[]): string {
|
|
92
|
+
return JSON.stringify(slots, function (_key, value) {
|
|
93
|
+
if (typeof value !== 'bigint') {
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
if (value < Number.MAX_SAFE_INTEGER) {
|
|
97
|
+
return Number(value);
|
|
98
|
+
}
|
|
99
|
+
return value.toString();
|
|
100
|
+
}, ' ');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private serializeSlots(slots: ISlotVarDefinition[]) {
|
|
91
104
|
return slots
|
|
92
105
|
.map(slot => this.serializeSlot(slot))
|
|
93
106
|
.map(entry => {
|
|
@@ -99,14 +112,14 @@ export class GeneratorStorageReader {
|
|
|
99
112
|
});
|
|
100
113
|
}
|
|
101
114
|
|
|
102
|
-
private serializeSlot
|
|
115
|
+
private serializeSlot(slot: ISlotVarDefinition) {
|
|
103
116
|
let name = slot.name;
|
|
104
117
|
let type = slot.type;
|
|
105
118
|
let { parametersTypes, parametersCall, returnType } = this.getParameters(type);
|
|
106
119
|
return {
|
|
107
120
|
ts: `
|
|
108
121
|
async ${name}(${parametersTypes?.ts ?? ''}): Promise<${returnType}> {
|
|
109
|
-
return this.$storage.get(['${name}', ${
|
|
122
|
+
return this.$storage.get(['${name}', ${parametersCall ?? ''}]);
|
|
110
123
|
}
|
|
111
124
|
`,
|
|
112
125
|
types: `
|
|
@@ -114,13 +127,13 @@ export class GeneratorStorageReader {
|
|
|
114
127
|
`,
|
|
115
128
|
js: `
|
|
116
129
|
async ${name}(${parametersTypes?.js ?? ''}) {
|
|
117
|
-
return this.$storage.get(['${name}', ${
|
|
130
|
+
return this.$storage.get(['${name}', ${parametersCall ?? ''}]);
|
|
118
131
|
}
|
|
119
132
|
`
|
|
120
133
|
};
|
|
121
134
|
}
|
|
122
135
|
|
|
123
|
-
private getParameters
|
|
136
|
+
private getParameters(type: string): { parametersTypes?: { ts, js }, parametersCall?, returnType } {
|
|
124
137
|
|
|
125
138
|
if (type.startsWith('mapping')) {
|
|
126
139
|
let valueType = $abiType.mapping.getValueType(type);
|
|
@@ -43,6 +43,7 @@ import { $abiUtils } from 'dequanto/utils/$abiUtils';
|
|
|
43
43
|
import { SourceFile, TSourceFileContract } from './SourceFile';
|
|
44
44
|
import { $array } from 'dequanto/utils/$array';
|
|
45
45
|
import { $types } from '../utils/$types';
|
|
46
|
+
import { $bigint } from 'dequanto/utils/$bigint';
|
|
46
47
|
|
|
47
48
|
export namespace Ast {
|
|
48
49
|
export function parse(code: string, opts?: { path: string; }): { ast: SourceUnit, version: string } {
|
|
@@ -520,8 +521,23 @@ export namespace Ast {
|
|
|
520
521
|
}
|
|
521
522
|
|
|
522
523
|
export function evaluate<TResult extends bigint | string = bigint | string>(node: Expression): TResult {
|
|
523
|
-
if (isNumberLiteral(node)) {
|
|
524
|
-
return
|
|
524
|
+
if (isNumberLiteral(node) && node.subdenomination == null) {
|
|
525
|
+
return $bigint.parse(node.number) as TResult;
|
|
526
|
+
}
|
|
527
|
+
if (node.type === 'TupleExpression' && node.components.length === 1 && node.components[0] != null) {
|
|
528
|
+
return evaluate(node.components[0] as Expression);
|
|
529
|
+
}
|
|
530
|
+
if (Ast.isUnaryOperation(node)) {
|
|
531
|
+
let value = evaluate(node.subExpression);
|
|
532
|
+
if (node.operator === '-') {
|
|
533
|
+
return -value as TResult;
|
|
534
|
+
}
|
|
535
|
+
if (node.operator === '+') {
|
|
536
|
+
return value as TResult;
|
|
537
|
+
}
|
|
538
|
+
if (node.operator === '~') {
|
|
539
|
+
return ~value as TResult;
|
|
540
|
+
}
|
|
525
541
|
}
|
|
526
542
|
if (isBinaryOperation(node)) {
|
|
527
543
|
let a = evaluate<bigint>(node.left);
|
|
@@ -541,6 +557,8 @@ export namespace Ast {
|
|
|
541
557
|
return a % b as TResult;
|
|
542
558
|
case '<<':
|
|
543
559
|
return a << b as TResult;
|
|
560
|
+
case '|':
|
|
561
|
+
return (a | b) as TResult;
|
|
544
562
|
case '>>':
|
|
545
563
|
return a >> b as TResult;
|
|
546
564
|
}
|