@openzeppelin/wizard 0.2.3 → 0.4.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/dist/add-pausable.d.ts +1 -0
- package/dist/add-pausable.d.ts.map +1 -1
- package/dist/add-pausable.js +9 -5
- package/dist/add-pausable.js.map +1 -1
- package/dist/contract.d.ts +13 -9
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +5 -5
- package/dist/contract.js.map +1 -1
- package/dist/environments/hardhat/package-lock.json +1717 -7286
- package/dist/environments/hardhat/package.json +4 -22
- package/dist/environments/hardhat/upgradeable/package-lock.json +2091 -7495
- package/dist/environments/hardhat/upgradeable/package.json +5 -22
- package/dist/erc1155.js +24 -15
- package/dist/erc1155.js.map +1 -1
- package/dist/erc20.d.ts +0 -1
- package/dist/erc20.d.ts.map +1 -1
- package/dist/erc20.js +45 -62
- package/dist/erc20.js.map +1 -1
- package/dist/erc721.js +54 -52
- package/dist/erc721.js.map +1 -1
- package/dist/generate/erc20.d.ts.map +1 -1
- package/dist/generate/erc20.js +0 -1
- package/dist/generate/erc20.js.map +1 -1
- package/dist/generate/governor.js +1 -1
- package/dist/generate/governor.js.map +1 -1
- package/dist/governor.d.ts +2 -2
- package/dist/governor.d.ts.map +1 -1
- package/dist/governor.js +110 -91
- package/dist/governor.js.map +1 -1
- package/dist/infer-transpiled.d.ts +3 -0
- package/dist/infer-transpiled.d.ts.map +1 -0
- package/dist/infer-transpiled.js +9 -0
- package/dist/infer-transpiled.js.map +1 -0
- package/dist/options.d.ts +3 -4
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +14 -11
- package/dist/options.js.map +1 -1
- package/dist/print-versioned.d.ts.map +1 -1
- package/dist/print-versioned.js +6 -1
- package/dist/print-versioned.js.map +1 -1
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +17 -9
- package/dist/print.js.map +1 -1
- package/dist/scripts/prepare.js +2 -4
- package/dist/scripts/prepare.js.map +1 -1
- package/dist/set-access-control.d.ts +1 -1
- package/dist/set-access-control.d.ts.map +1 -1
- package/dist/set-access-control.js +18 -7
- package/dist/set-access-control.js.map +1 -1
- package/dist/set-upgradeable.d.ts.map +1 -1
- package/dist/set-upgradeable.js +5 -4
- package/dist/set-upgradeable.js.map +1 -1
- package/dist/solidity-version.json +1 -1
- package/dist/zip-foundry.d.ts +5 -0
- package/dist/zip-foundry.d.ts.map +1 -0
- package/dist/zip-foundry.js +224 -0
- package/dist/zip-foundry.js.map +1 -0
- package/dist/zip-hardhat.d.ts.map +1 -1
- package/dist/zip-hardhat.js +36 -11
- package/dist/zip-hardhat.js.map +1 -1
- package/package.json +4 -5
- package/src/add-pausable.ts +7 -3
- package/src/contract.ts +17 -15
- package/src/environments/hardhat/package-lock.json +1717 -7286
- package/src/environments/hardhat/package.json +4 -22
- package/src/environments/hardhat/upgradeable/package-lock.json +2091 -7495
- package/src/environments/hardhat/upgradeable/package.json +5 -22
- package/src/erc1155.ts +30 -23
- package/src/erc20.ts +46 -67
- package/src/erc721.ts +64 -65
- package/src/generate/erc20.ts +0 -1
- package/src/generate/governor.ts +1 -1
- package/src/governor.ts +116 -102
- package/src/infer-transpiled.ts +5 -0
- package/src/options.ts +18 -16
- package/src/print-versioned.ts +6 -2
- package/src/print.ts +17 -13
- package/src/scripts/prepare.ts +1 -5
- package/src/set-access-control.ts +18 -7
- package/src/set-upgradeable.ts +5 -4
- package/src/solidity-version.json +1 -1
- package/src/zip-foundry.ts +259 -0
- package/src/zip-hardhat.ts +39 -11
- package/CHANGELOG.md +0 -26
- package/dist/zip.d.ts +0 -4
- package/dist/zip.d.ts.map +0 -1
- package/dist/zip.js +0 -48
- package/dist/zip.js.map +0 -1
- package/src/.DS_Store +0 -0
- package/src/environments/.DS_Store +0 -0
- package/src/environments/hardhat/.DS_Store +0 -0
- package/src/zip.ts +0 -53
package/dist/scripts/prepare.js
CHANGED
|
@@ -7,17 +7,15 @@ const fs_1 = require("fs");
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const hardhat_1 = __importDefault(require("hardhat"));
|
|
9
9
|
const utils_1 = require("solidity-ast/utils");
|
|
10
|
-
const rimraf_1 =
|
|
11
|
-
const util_1 = require("util");
|
|
10
|
+
const rimraf_1 = require("rimraf");
|
|
12
11
|
const package_json_1 = require("@openzeppelin/contracts/package.json");
|
|
13
|
-
const rimraf = (0, util_1.promisify)(rimraf_1.default);
|
|
14
12
|
const sources_1 = require("../generate/sources");
|
|
15
13
|
const map_values_1 = require("../utils/map-values");
|
|
16
14
|
const transitive_closure_1 = require("../utils/transitive-closure");
|
|
17
15
|
async function main() {
|
|
18
16
|
var _a;
|
|
19
17
|
const generatedSourcesPath = path_1.default.join(hardhat_1.default.config.paths.sources, 'generated');
|
|
20
|
-
await rimraf(generatedSourcesPath);
|
|
18
|
+
await (0, rimraf_1.rimraf)(generatedSourcesPath);
|
|
21
19
|
await (0, sources_1.writeGeneratedSources)(generatedSourcesPath, 'minimal-cover');
|
|
22
20
|
await hardhat_1.default.run('compile');
|
|
23
21
|
const dependencies = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/scripts/prepare.ts"],"names":[],"mappings":";;;;;AAAA,2BAAoC;AACpC,gDAAwB;AACxB,sDAA0B;
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/scripts/prepare.ts"],"names":[],"mappings":";;;;;AAAA,2BAAoC;AACpC,gDAAwB;AACxB,sDAA0B;AAE1B,8CAA6C;AAC7C,mCAAgC;AAChC,uEAA+D;AAG/D,iDAA4D;AAC5D,oDAAgD;AAChD,oEAAgE;AAEhE,KAAK,UAAU,IAAI;;IACjB,MAAM,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,IAAA,eAAM,EAAC,oBAAoB,CAAC,CAAC;IACnC,MAAM,IAAA,+BAAqB,EAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACnE,MAAM,iBAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEzB,MAAM,YAAY,GAAgC,EAAE,CAAC;IACrD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,KAAK,MAAM,aAAa,IAAI,MAAM,iBAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE;QACnE,MAAM,SAAS,GAAc,IAAI,CAAC,KAAK,CACrC,MAAM,aAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CACzC,CAAC;QAEF,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC5E,IAAI,UAAU,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE;gBACpD,MAAM,kBAAkB,GAAG,OAAC,YAAY,CAAC,UAAU,qCAAvB,YAAY,CAAC,UAAU,IAAM,IAAI,GAAG,EAAE,EAAC,CAAC;gBACpE,KAAK,MAAM,GAAG,IAAI,IAAA,eAAO,EAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE;oBACjD,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iBAC1C;aACF;SACF;QAED,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC/E,IAAI,UAAU,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE;gBACpD,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;aAC/B;SACF;KACF;IAED,MAAM,SAAS,GAA0B;QACvC,OAAO,EAAP,sBAAO;QACP,OAAO;QACP,YAAY,EAAE,IAAA,sBAAS,EAAC,IAAA,sCAAiB,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7E,CAAC;IAEF,MAAM,aAAE,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -8,5 +8,5 @@ export declare function setAccessControl(c: ContractBuilder, access: Access): vo
|
|
|
8
8
|
/**
|
|
9
9
|
* Enables access control for the contract and restricts the given function with access control.
|
|
10
10
|
*/
|
|
11
|
-
export declare function requireAccessControl(c: ContractBuilder, fn: BaseFunction, access: Access,
|
|
11
|
+
export declare function requireAccessControl(c: ContractBuilder, fn: BaseFunction, access: Access, roleIdPrefix: string, roleOwner: string | undefined): void;
|
|
12
12
|
//# sourceMappingURL=set-access-control.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhE,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAElD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhE,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAElD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAuBlE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,QAuB7I"}
|
|
@@ -9,14 +9,23 @@ exports.accessOptions = [false, 'ownable', 'roles'];
|
|
|
9
9
|
function setAccessControl(c, access) {
|
|
10
10
|
switch (access) {
|
|
11
11
|
case 'ownable': {
|
|
12
|
-
c.addParent(parents.Ownable)
|
|
12
|
+
if (c.addParent(parents.Ownable, [{ lit: 'initialOwner' }])) {
|
|
13
|
+
c.addConstructorArgument({
|
|
14
|
+
type: 'address',
|
|
15
|
+
name: 'initialOwner'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
13
18
|
break;
|
|
14
19
|
}
|
|
15
20
|
case 'roles': {
|
|
16
21
|
if (c.addParent(parents.AccessControl)) {
|
|
17
|
-
c.
|
|
22
|
+
c.addConstructorArgument({
|
|
23
|
+
type: 'address',
|
|
24
|
+
name: 'defaultAdmin'
|
|
25
|
+
});
|
|
26
|
+
c.addConstructorCode('_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);');
|
|
18
27
|
}
|
|
19
|
-
c.addOverride(parents.AccessControl
|
|
28
|
+
c.addOverride(parents.AccessControl, common_functions_1.supportsInterface);
|
|
20
29
|
break;
|
|
21
30
|
}
|
|
22
31
|
}
|
|
@@ -25,7 +34,7 @@ exports.setAccessControl = setAccessControl;
|
|
|
25
34
|
/**
|
|
26
35
|
* Enables access control for the contract and restricts the given function with access control.
|
|
27
36
|
*/
|
|
28
|
-
function requireAccessControl(c, fn, access,
|
|
37
|
+
function requireAccessControl(c, fn, access, roleIdPrefix, roleOwner) {
|
|
29
38
|
if (access === false) {
|
|
30
39
|
access = 'ownable';
|
|
31
40
|
}
|
|
@@ -36,9 +45,11 @@ function requireAccessControl(c, fn, access, role) {
|
|
|
36
45
|
break;
|
|
37
46
|
}
|
|
38
47
|
case 'roles': {
|
|
39
|
-
const roleId =
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
const roleId = roleIdPrefix + '_ROLE';
|
|
49
|
+
const addedConstant = c.addVariable(`bytes32 public constant ${roleId} = keccak256("${roleId}");`);
|
|
50
|
+
if (roleOwner && addedConstant) {
|
|
51
|
+
c.addConstructorArgument({ type: 'address', name: roleOwner });
|
|
52
|
+
c.addConstructorCode(`_grantRole(${roleId}, ${roleOwner});`);
|
|
42
53
|
}
|
|
43
54
|
c.addModifier(`onlyRole(${roleId})`, fn);
|
|
44
55
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AAE1C,QAAA,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAIlE;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAkB,EAAE,MAAc;IACjE,QAAQ,MAAM,EAAE;QACd,KAAK,SAAS,CAAC,CAAC;YACd,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":";;;AACA,yDAAuD;AAE1C,QAAA,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAIlE;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAkB,EAAE,MAAc;IACjE,QAAQ,MAAM,EAAE;QACd,KAAK,SAAS,CAAC,CAAC;YACd,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAE,EAAC,GAAG,EAAE,cAAc,EAAC,CAAE,CAAC,EAAE;gBAC3D,CAAC,CAAC,sBAAsB,CAAC;oBACvB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,cAAc;iBACrB,CAAC,CAAC;aACJ;YACD,MAAM;SACP;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACtC,CAAC,CAAC,sBAAsB,CAAC;oBACvB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,cAAc;iBACrB,CAAC,CAAC;gBACH,CAAC,CAAC,kBAAkB,CAAC,+CAA+C,CAAC,CAAC;aACvE;YACD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,oCAAiB,CAAC,CAAC;YACxD,MAAM;SACP;KACF;AACH,CAAC;AAvBD,4CAuBC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,CAAkB,EAAE,EAAgB,EAAE,MAAc,EAAE,YAAoB,EAAE,SAA6B;IAC5I,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,MAAM,GAAG,SAAS,CAAC;KACpB;IAED,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5B,QAAQ,MAAM,EAAE;QACd,KAAK,SAAS,CAAC,CAAC;YACd,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM;SACP;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;YACtC,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,2BAA2B,MAAM,iBAAiB,MAAM,KAAK,CAAC,CAAC;YACnG,IAAI,SAAS,IAAI,aAAa,EAAE;gBAC9B,CAAC,CAAC,sBAAsB,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,kBAAkB,CAAC,cAAc,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC;aAC9D;YACD,CAAC,CAAC,WAAW,CAAC,YAAY,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM;SACP;KACF;AACH,CAAC;AAvBD,oDAuBC;AAED,MAAM,OAAO,GAAG;IACd,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,4CAA4C;KACnD;IACD,aAAa,EAAE;QACb,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,kDAAkD;KACzD;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-upgradeable.d.ts","sourceRoot":"","sources":["../src/set-upgradeable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,EAAwB,MAAM,sBAAsB,CAAC;AAGpE,eAAO,MAAM,kBAAkB,yCAA0C,CAAC;AAE1E,MAAM,MAAM,WAAW,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"set-upgradeable.d.ts","sourceRoot":"","sources":["../src/set-upgradeable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,EAAwB,MAAM,sBAAsB,CAAC;AAGpE,eAAO,MAAM,kBAAkB,yCAA0C,CAAC;AAE1E,MAAM,MAAM,WAAW,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAgC1F"}
|
package/dist/set-upgradeable.js
CHANGED
|
@@ -16,12 +16,13 @@ function setUpgradeable(c, upgradeable, access) {
|
|
|
16
16
|
switch (upgradeable) {
|
|
17
17
|
case 'transparent': break;
|
|
18
18
|
case 'uups': {
|
|
19
|
-
(0, set_access_control_1.requireAccessControl)(c, functions._authorizeUpgrade, access, 'UPGRADER');
|
|
20
|
-
|
|
19
|
+
(0, set_access_control_1.requireAccessControl)(c, functions._authorizeUpgrade, access, 'UPGRADER', 'upgrader');
|
|
20
|
+
const UUPSUpgradeable = {
|
|
21
21
|
name: 'UUPSUpgradeable',
|
|
22
22
|
path: '@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol',
|
|
23
|
-
}
|
|
24
|
-
c.
|
|
23
|
+
};
|
|
24
|
+
c.addParent(UUPSUpgradeable);
|
|
25
|
+
c.addOverride(UUPSUpgradeable, functions._authorizeUpgrade);
|
|
25
26
|
c.setFunctionBody([], functions._authorizeUpgrade);
|
|
26
27
|
break;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-upgradeable.js","sourceRoot":"","sources":["../src/set-upgradeable.ts"],"names":[],"mappings":";;;AACA,6DAAoE;AACpE,+DAA2D;AAE9C,QAAA,kBAAkB,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAU,CAAC;AAI1E,SAAgB,cAAc,CAAC,CAAkB,EAAE,WAAwB,EAAE,MAAc;IACzF,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,OAAO;KACR;IAED,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;IAErB,CAAC,CAAC,SAAS,CAAC;QACV,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uDAAuD;KAC9D,CAAC,CAAC;IAEH,QAAQ,WAAW,EAAE;QACnB,KAAK,aAAa,CAAC,CAAC,MAAM;QAE1B,KAAK,MAAM,CAAC,CAAC;YACX,IAAA,yCAAoB,EAAC,CAAC,EAAE,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"set-upgradeable.js","sourceRoot":"","sources":["../src/set-upgradeable.ts"],"names":[],"mappings":";;;AACA,6DAAoE;AACpE,+DAA2D;AAE9C,QAAA,kBAAkB,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAU,CAAC;AAI1E,SAAgB,cAAc,CAAC,CAAkB,EAAE,WAAwB,EAAE,MAAc;IACzF,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,OAAO;KACR;IAED,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;IAErB,CAAC,CAAC,SAAS,CAAC;QACV,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uDAAuD;KAC9D,CAAC,CAAC;IAEH,QAAQ,WAAW,EAAE;QACnB,KAAK,aAAa,CAAC,CAAC,MAAM;QAE1B,KAAK,MAAM,CAAC,CAAC;YACX,IAAA,yCAAoB,EAAC,CAAC,EAAE,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACrF,MAAM,eAAe,GAAG;gBACtB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,yDAAyD;aAChE,CAAC;YACF,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC7B,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;YACnD,MAAM;SACP;QAED,OAAO,CAAC,CAAC;YACP,MAAM,CAAC,GAAU,WAAW,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;SACpD;KACF;AACH,CAAC;AAhCD,wCAgCC;AAED,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC;IAChC,iBAAiB,EAAE;QACjB,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;SAC/C;QACD,IAAI,EAAE,UAAU;KACjB;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"0.8.
|
|
1
|
+
"0.8.20"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-foundry.d.ts","sourceRoot":"","sources":["../src/zip-foundry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAsP3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBAUlE"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.zipFoundry = void 0;
|
|
7
|
+
const jszip_1 = __importDefault(require("jszip"));
|
|
8
|
+
const print_1 = require("./print");
|
|
9
|
+
const solidity_version_json_1 = __importDefault(require("./solidity-version.json"));
|
|
10
|
+
const openzeppelin_contracts_1 = __importDefault(require("../openzeppelin-contracts"));
|
|
11
|
+
const format_lines_1 = require("./utils/format-lines");
|
|
12
|
+
function getHeader(c) {
|
|
13
|
+
return [
|
|
14
|
+
`// SPDX-License-Identifier: ${c.license}`,
|
|
15
|
+
`pragma solidity ^${solidity_version_json_1.default};`
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
const test = (c, opts) => {
|
|
19
|
+
return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c), getTestCase(c)));
|
|
20
|
+
function getImports(c) {
|
|
21
|
+
return [
|
|
22
|
+
'import "forge-std/Test.sol";',
|
|
23
|
+
`import "../src/${c.name}.sol";`,
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
function getTestCase(c) {
|
|
27
|
+
const args = getAddressArgs(c);
|
|
28
|
+
return [
|
|
29
|
+
`contract ${c.name}Test is Test {`,
|
|
30
|
+
(0, format_lines_1.spaceBetween)([
|
|
31
|
+
`${c.name} public instance;`,
|
|
32
|
+
], [
|
|
33
|
+
'function setUp() public {',
|
|
34
|
+
getAddressVariables(args),
|
|
35
|
+
[
|
|
36
|
+
`instance = new ${getDeploymentCall(c, args)};`,
|
|
37
|
+
],
|
|
38
|
+
'}',
|
|
39
|
+
], getContractSpecificTestFunction()),
|
|
40
|
+
'}',
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
function getAddressVariables(args) {
|
|
44
|
+
const vars = [];
|
|
45
|
+
for (let i = 0; i < args.length; i++) {
|
|
46
|
+
// use i + 1 as the private key since it must be non-zero
|
|
47
|
+
vars.push(`address ${args[i]} = vm.addr(${i + 1});`);
|
|
48
|
+
}
|
|
49
|
+
return vars;
|
|
50
|
+
}
|
|
51
|
+
function getContractSpecificTestFunction() {
|
|
52
|
+
if (opts !== undefined) {
|
|
53
|
+
switch (opts.kind) {
|
|
54
|
+
case 'ERC20':
|
|
55
|
+
case 'ERC721':
|
|
56
|
+
return [
|
|
57
|
+
'function testName() public {',
|
|
58
|
+
[
|
|
59
|
+
`assertEq(instance.name(), "${opts.name}");`
|
|
60
|
+
],
|
|
61
|
+
'}',
|
|
62
|
+
];
|
|
63
|
+
case 'ERC1155':
|
|
64
|
+
return [
|
|
65
|
+
'function testUri() public {',
|
|
66
|
+
[
|
|
67
|
+
`assertEq(instance.uri(0), "${opts.uri}");`
|
|
68
|
+
],
|
|
69
|
+
'}',
|
|
70
|
+
];
|
|
71
|
+
case 'Governor':
|
|
72
|
+
case 'Custom':
|
|
73
|
+
return [
|
|
74
|
+
'function testSomething() public {',
|
|
75
|
+
[
|
|
76
|
+
'// Add your test here',
|
|
77
|
+
],
|
|
78
|
+
'}',
|
|
79
|
+
];
|
|
80
|
+
default:
|
|
81
|
+
throw new Error('Unknown ERC');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
function getAddressArgs(c) {
|
|
88
|
+
const args = [];
|
|
89
|
+
for (const constructorArg of c.constructorArgs) {
|
|
90
|
+
if (constructorArg.type === 'address') {
|
|
91
|
+
args.push(constructorArg.name);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return args;
|
|
95
|
+
}
|
|
96
|
+
function getDeploymentCall(c, args) {
|
|
97
|
+
return `${c.name}(${args.join(', ')})`;
|
|
98
|
+
}
|
|
99
|
+
const script = (c) => {
|
|
100
|
+
return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c), getScript(c)));
|
|
101
|
+
function getImports(c) {
|
|
102
|
+
return [
|
|
103
|
+
'import "forge-std/Script.sol";',
|
|
104
|
+
`import "../src/${c.name}.sol";`,
|
|
105
|
+
];
|
|
106
|
+
}
|
|
107
|
+
function getScript(c) {
|
|
108
|
+
const args = getAddressArgs(c);
|
|
109
|
+
const deploymentLines = [
|
|
110
|
+
'vm.startBroadcast();',
|
|
111
|
+
`${c.name} instance = new ${getDeploymentCall(c, args)};`,
|
|
112
|
+
'console.log("Contract deployed to %s", address(instance));',
|
|
113
|
+
'vm.stopBroadcast();',
|
|
114
|
+
];
|
|
115
|
+
return [
|
|
116
|
+
`contract ${c.name}Script is Script {`,
|
|
117
|
+
(0, format_lines_1.spaceBetween)([
|
|
118
|
+
'function setUp() public {}',
|
|
119
|
+
], [
|
|
120
|
+
'function run() public {',
|
|
121
|
+
args.length > 0 ? addTodoAndCommentOut(deploymentLines) : deploymentLines,
|
|
122
|
+
'}',
|
|
123
|
+
]),
|
|
124
|
+
'}',
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
function addTodoAndCommentOut(lines) {
|
|
128
|
+
return [
|
|
129
|
+
'// TODO: Set addresses for the contract arguments below, then uncomment the following lines',
|
|
130
|
+
...lines.map(l => `// ${l}`),
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const setupSh = `\
|
|
135
|
+
#!/usr/bin/env bash
|
|
136
|
+
|
|
137
|
+
# Check if git is installed
|
|
138
|
+
if ! which git &> /dev/null
|
|
139
|
+
then
|
|
140
|
+
echo "git command not found. Install git and try again."
|
|
141
|
+
exit 1
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
# Check if Foundry is installed
|
|
145
|
+
if ! which forge &> /dev/null
|
|
146
|
+
then
|
|
147
|
+
echo "forge command not found. Install Foundry and try again. See https://book.getfoundry.sh/getting-started/installation"
|
|
148
|
+
exit 1
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
# Setup Foundry project
|
|
152
|
+
if ! [ -f "foundry.toml" ]
|
|
153
|
+
then
|
|
154
|
+
echo "Initializing Foundry project..."
|
|
155
|
+
|
|
156
|
+
# Initialize sample Foundry project
|
|
157
|
+
forge init --force --no-commit --quiet
|
|
158
|
+
|
|
159
|
+
# Install OpenZeppelin Contracts
|
|
160
|
+
forge install OpenZeppelin/openzeppelin-contracts@v${openzeppelin_contracts_1.default.version} --no-commit --quiet
|
|
161
|
+
|
|
162
|
+
# Remove template contracts
|
|
163
|
+
rm src/Counter.sol
|
|
164
|
+
rm script/Counter.s.sol
|
|
165
|
+
rm test/Counter.t.sol
|
|
166
|
+
|
|
167
|
+
# Add remappings
|
|
168
|
+
if [ -f "remappings.txt" ]
|
|
169
|
+
then
|
|
170
|
+
echo "" >> remappings.txt
|
|
171
|
+
fi
|
|
172
|
+
echo "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/" >> remappings.txt
|
|
173
|
+
|
|
174
|
+
# Perform initial git commit
|
|
175
|
+
git add .
|
|
176
|
+
git commit -m "openzeppelin: add wizard output" --quiet
|
|
177
|
+
|
|
178
|
+
echo "Done."
|
|
179
|
+
else
|
|
180
|
+
echo "Foundry project already initialized."
|
|
181
|
+
fi
|
|
182
|
+
`;
|
|
183
|
+
const readme = (c) => `\
|
|
184
|
+
# Sample Foundry Project
|
|
185
|
+
|
|
186
|
+
This project demonstrates a basic Foundry use case. It comes with a contract generated by [OpenZeppelin Wizard](https://wizard.openzeppelin.com/), a test for that contract, and a script that deploys that contract.
|
|
187
|
+
|
|
188
|
+
## Installing Foundry
|
|
189
|
+
|
|
190
|
+
See [Foundry installation guide](https://book.getfoundry.sh/getting-started/installation).
|
|
191
|
+
|
|
192
|
+
## Initializing the project
|
|
193
|
+
|
|
194
|
+
\`\`\`
|
|
195
|
+
bash setup.sh
|
|
196
|
+
\`\`\`
|
|
197
|
+
|
|
198
|
+
## Testing the contract
|
|
199
|
+
|
|
200
|
+
\`\`\`
|
|
201
|
+
forge test
|
|
202
|
+
\`\`\`
|
|
203
|
+
|
|
204
|
+
## Deploying the contract
|
|
205
|
+
|
|
206
|
+
You can simulate a deployment by running the script:
|
|
207
|
+
|
|
208
|
+
\`\`\`
|
|
209
|
+
forge script script/${c.name}.s.sol
|
|
210
|
+
\`\`\`
|
|
211
|
+
|
|
212
|
+
See [Solidity scripting guide](https://book.getfoundry.sh/tutorials/solidity-scripting) for more information.
|
|
213
|
+
`;
|
|
214
|
+
async function zipFoundry(c, opts) {
|
|
215
|
+
const zip = new jszip_1.default();
|
|
216
|
+
zip.file(`src/${c.name}.sol`, (0, print_1.printContract)(c));
|
|
217
|
+
zip.file(`test/${c.name}.t.sol`, test(c, opts));
|
|
218
|
+
zip.file(`script/${c.name}.s.sol`, script(c));
|
|
219
|
+
zip.file('setup.sh', setupSh);
|
|
220
|
+
zip.file('README.md', readme(c));
|
|
221
|
+
return zip;
|
|
222
|
+
}
|
|
223
|
+
exports.zipFoundry = zipFoundry;
|
|
224
|
+
//# sourceMappingURL=zip-foundry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-foundry.js","sourceRoot":"","sources":["../src/zip-foundry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-hardhat.d.ts","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"zip-hardhat.d.ts","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA+L3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBAoBlE"}
|
package/dist/zip-hardhat.js
CHANGED
|
@@ -57,7 +57,8 @@ const tsConfig = `\
|
|
|
57
57
|
"esModuleInterop": true,
|
|
58
58
|
"forceConsistentCasingInFileNames": true,
|
|
59
59
|
"strict": true,
|
|
60
|
-
"skipLibCheck": true
|
|
60
|
+
"skipLibCheck": true,
|
|
61
|
+
"resolveJsonModule": true
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
`;
|
|
@@ -69,23 +70,24 @@ coverage.json
|
|
|
69
70
|
typechain
|
|
70
71
|
typechain-types
|
|
71
72
|
|
|
72
|
-
#Hardhat files
|
|
73
|
+
# Hardhat files
|
|
73
74
|
cache
|
|
74
75
|
artifacts
|
|
75
76
|
`;
|
|
76
77
|
const test = (c, opts) => {
|
|
77
78
|
return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getImports(c), getTestCase(c)));
|
|
78
79
|
function getTestCase(c) {
|
|
80
|
+
const args = getAddressArgs(c);
|
|
79
81
|
return [
|
|
80
82
|
`describe("${c.name}", function () {`,
|
|
81
83
|
[
|
|
82
84
|
'it("Test contract", async function () {',
|
|
83
85
|
(0, format_lines_1.spaceBetween)([
|
|
84
86
|
`const ContractFactory = await ethers.getContractFactory("${c.name}");`,
|
|
85
|
-
], [
|
|
86
|
-
`const instance = await ${c
|
|
87
|
-
'await instance.
|
|
88
|
-
],
|
|
87
|
+
], getAddressVariables(args), [
|
|
88
|
+
`const instance = await ${getDeploymentCall(c, args)};`,
|
|
89
|
+
'await instance.waitForDeployment();'
|
|
90
|
+
], getExpects()),
|
|
89
91
|
'});'
|
|
90
92
|
],
|
|
91
93
|
'});',
|
|
@@ -97,7 +99,7 @@ const test = (c, opts) => {
|
|
|
97
99
|
`import { ${getHardhatPlugins(c).join(', ')} } from "hardhat";`,
|
|
98
100
|
];
|
|
99
101
|
}
|
|
100
|
-
function
|
|
102
|
+
function getExpects() {
|
|
101
103
|
if (opts !== undefined) {
|
|
102
104
|
switch (opts.kind) {
|
|
103
105
|
case 'ERC20':
|
|
@@ -114,17 +116,39 @@ const test = (c, opts) => {
|
|
|
114
116
|
}
|
|
115
117
|
return [];
|
|
116
118
|
}
|
|
119
|
+
function getAddressVariables(args) {
|
|
120
|
+
const vars = [];
|
|
121
|
+
for (let i = 0; i < args.length; i++) {
|
|
122
|
+
vars.push(`const ${args[i]} = (await ethers.getSigners())[${i}].address;`);
|
|
123
|
+
}
|
|
124
|
+
return vars;
|
|
125
|
+
}
|
|
117
126
|
};
|
|
118
|
-
|
|
127
|
+
function getAddressArgs(c) {
|
|
128
|
+
const args = [];
|
|
129
|
+
for (const constructorArg of c.constructorArgs) {
|
|
130
|
+
if (constructorArg.type === 'address') {
|
|
131
|
+
args.push(constructorArg.name);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return args;
|
|
135
|
+
}
|
|
136
|
+
function getDeploymentCall(c, args) {
|
|
137
|
+
return c.upgradeable ? `upgrades.deployProxy(ContractFactory, [${args.join(', ')}])` : `ContractFactory.deploy(${args.join(', ')})`;
|
|
138
|
+
}
|
|
139
|
+
const script = (c) => {
|
|
140
|
+
const args = getAddressArgs(c);
|
|
141
|
+
return `\
|
|
119
142
|
import { ${getHardhatPlugins(c).join(', ')} } from "hardhat";
|
|
120
143
|
|
|
121
144
|
async function main() {
|
|
122
145
|
const ContractFactory = await ethers.getContractFactory("${c.name}");
|
|
123
146
|
|
|
124
|
-
|
|
125
|
-
await
|
|
147
|
+
${args.length > 0 ? '// TODO: Set addresses for the contract arguments below' : ''}
|
|
148
|
+
const instance = await ${getDeploymentCall(c, args)};
|
|
149
|
+
await instance.waitForDeployment();
|
|
126
150
|
|
|
127
|
-
console.log(\`${c.upgradeable ? 'Proxy' : 'Contract'} deployed to \${instance.
|
|
151
|
+
console.log(\`${c.upgradeable ? 'Proxy' : 'Contract'} deployed to \${await instance.getAddress()}\`);
|
|
128
152
|
}
|
|
129
153
|
|
|
130
154
|
// We recommend this pattern to be able to use async/await everywhere
|
|
@@ -134,6 +158,7 @@ main().catch((error) => {
|
|
|
134
158
|
process.exitCode = 1;
|
|
135
159
|
});
|
|
136
160
|
`;
|
|
161
|
+
};
|
|
137
162
|
const readme = `\
|
|
138
163
|
# Sample Hardhat Project
|
|
139
164
|
|
package/dist/zip-hardhat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip-hardhat.js","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,mCAAwC;AACxC,oFAAuD;AACvD,uDAAkF;AAElF,MAAM,aAAa,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC;;;EAG9C,WAAW,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE;;;;gBAI/C,+BAAgB;;;;;;;;;;CAU/B,CAAC;AAEF,MAAM,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"zip-hardhat.js","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/wizard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A boilerplate generator to get started with OpenZeppelin Contracts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "github:OpenZeppelin/contracts-wizard",
|
|
@@ -20,15 +20,14 @@
|
|
|
20
20
|
"update-env": "rm ./src/environments/hardhat/package-lock.json && npm install --package-lock-only --prefix ./src/environments/hardhat && rm ./src/environments/hardhat/upgradeable/package-lock.json && npm install --package-lock-only --prefix ./src/environments/hardhat/upgradeable"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@openzeppelin/contracts": "
|
|
24
|
-
"@openzeppelin/contracts-upgradeable": "
|
|
23
|
+
"@openzeppelin/contracts": "^5.0.0",
|
|
24
|
+
"@openzeppelin/contracts-upgradeable": "^5.0.0",
|
|
25
25
|
"@types/node": "^10.17.51",
|
|
26
|
-
"@types/rimraf": "^3.0.0",
|
|
27
26
|
"array.prototype.flat": "^1.2.4",
|
|
28
27
|
"ava": "^5.0.0",
|
|
29
28
|
"hardhat": "^2.1.1",
|
|
30
29
|
"jszip": "^3.6.0",
|
|
31
|
-
"rimraf": "^
|
|
30
|
+
"rimraf": "^5.0.0",
|
|
32
31
|
"solidity-ast": "^0.4.18",
|
|
33
32
|
"ts-node": "^10.4.0",
|
|
34
33
|
"typescript": "^4.9.0"
|
package/src/add-pausable.ts
CHANGED
|
@@ -5,17 +5,21 @@ import { defineFunctions } from './utils/define-functions';
|
|
|
5
5
|
export function addPausable(c: ContractBuilder, access: Access, pausableFns: BaseFunction[]) {
|
|
6
6
|
c.addParent({
|
|
7
7
|
name: 'Pausable',
|
|
8
|
-
path: '@openzeppelin/contracts/
|
|
8
|
+
path: '@openzeppelin/contracts/utils/Pausable.sol',
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
for (const fn of pausableFns) {
|
|
12
12
|
c.addModifier('whenNotPaused', fn);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
addPauseFunctions(c, access);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function addPauseFunctions(c: ContractBuilder, access: Access) {
|
|
19
|
+
requireAccessControl(c, functions.pause, access, 'PAUSER', 'pauser');
|
|
16
20
|
c.addFunctionCode('_pause();', functions.pause);
|
|
17
21
|
|
|
18
|
-
requireAccessControl(c, functions.unpause, access, 'PAUSER');
|
|
22
|
+
requireAccessControl(c, functions.unpause, access, 'PAUSER', 'pauser');
|
|
19
23
|
c.addFunctionCode('_unpause();', functions.unpause);
|
|
20
24
|
}
|
|
21
25
|
|