@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.
Files changed (92) hide show
  1. package/dist/add-pausable.d.ts +1 -0
  2. package/dist/add-pausable.d.ts.map +1 -1
  3. package/dist/add-pausable.js +9 -5
  4. package/dist/add-pausable.js.map +1 -1
  5. package/dist/contract.d.ts +13 -9
  6. package/dist/contract.d.ts.map +1 -1
  7. package/dist/contract.js +5 -5
  8. package/dist/contract.js.map +1 -1
  9. package/dist/environments/hardhat/package-lock.json +1717 -7286
  10. package/dist/environments/hardhat/package.json +4 -22
  11. package/dist/environments/hardhat/upgradeable/package-lock.json +2091 -7495
  12. package/dist/environments/hardhat/upgradeable/package.json +5 -22
  13. package/dist/erc1155.js +24 -15
  14. package/dist/erc1155.js.map +1 -1
  15. package/dist/erc20.d.ts +0 -1
  16. package/dist/erc20.d.ts.map +1 -1
  17. package/dist/erc20.js +45 -62
  18. package/dist/erc20.js.map +1 -1
  19. package/dist/erc721.js +54 -52
  20. package/dist/erc721.js.map +1 -1
  21. package/dist/generate/erc20.d.ts.map +1 -1
  22. package/dist/generate/erc20.js +0 -1
  23. package/dist/generate/erc20.js.map +1 -1
  24. package/dist/generate/governor.js +1 -1
  25. package/dist/generate/governor.js.map +1 -1
  26. package/dist/governor.d.ts +2 -2
  27. package/dist/governor.d.ts.map +1 -1
  28. package/dist/governor.js +110 -91
  29. package/dist/governor.js.map +1 -1
  30. package/dist/infer-transpiled.d.ts +3 -0
  31. package/dist/infer-transpiled.d.ts.map +1 -0
  32. package/dist/infer-transpiled.js +9 -0
  33. package/dist/infer-transpiled.js.map +1 -0
  34. package/dist/options.d.ts +3 -4
  35. package/dist/options.d.ts.map +1 -1
  36. package/dist/options.js +14 -11
  37. package/dist/options.js.map +1 -1
  38. package/dist/print-versioned.d.ts.map +1 -1
  39. package/dist/print-versioned.js +6 -1
  40. package/dist/print-versioned.js.map +1 -1
  41. package/dist/print.d.ts.map +1 -1
  42. package/dist/print.js +17 -9
  43. package/dist/print.js.map +1 -1
  44. package/dist/scripts/prepare.js +2 -4
  45. package/dist/scripts/prepare.js.map +1 -1
  46. package/dist/set-access-control.d.ts +1 -1
  47. package/dist/set-access-control.d.ts.map +1 -1
  48. package/dist/set-access-control.js +18 -7
  49. package/dist/set-access-control.js.map +1 -1
  50. package/dist/set-upgradeable.d.ts.map +1 -1
  51. package/dist/set-upgradeable.js +5 -4
  52. package/dist/set-upgradeable.js.map +1 -1
  53. package/dist/solidity-version.json +1 -1
  54. package/dist/zip-foundry.d.ts +5 -0
  55. package/dist/zip-foundry.d.ts.map +1 -0
  56. package/dist/zip-foundry.js +224 -0
  57. package/dist/zip-foundry.js.map +1 -0
  58. package/dist/zip-hardhat.d.ts.map +1 -1
  59. package/dist/zip-hardhat.js +36 -11
  60. package/dist/zip-hardhat.js.map +1 -1
  61. package/package.json +4 -5
  62. package/src/add-pausable.ts +7 -3
  63. package/src/contract.ts +17 -15
  64. package/src/environments/hardhat/package-lock.json +1717 -7286
  65. package/src/environments/hardhat/package.json +4 -22
  66. package/src/environments/hardhat/upgradeable/package-lock.json +2091 -7495
  67. package/src/environments/hardhat/upgradeable/package.json +5 -22
  68. package/src/erc1155.ts +30 -23
  69. package/src/erc20.ts +46 -67
  70. package/src/erc721.ts +64 -65
  71. package/src/generate/erc20.ts +0 -1
  72. package/src/generate/governor.ts +1 -1
  73. package/src/governor.ts +116 -102
  74. package/src/infer-transpiled.ts +5 -0
  75. package/src/options.ts +18 -16
  76. package/src/print-versioned.ts +6 -2
  77. package/src/print.ts +17 -13
  78. package/src/scripts/prepare.ts +1 -5
  79. package/src/set-access-control.ts +18 -7
  80. package/src/set-upgradeable.ts +5 -4
  81. package/src/solidity-version.json +1 -1
  82. package/src/zip-foundry.ts +259 -0
  83. package/src/zip-hardhat.ts +39 -11
  84. package/CHANGELOG.md +0 -26
  85. package/dist/zip.d.ts +0 -4
  86. package/dist/zip.d.ts.map +0 -1
  87. package/dist/zip.js +0 -48
  88. package/dist/zip.js.map +0 -1
  89. package/src/.DS_Store +0 -0
  90. package/src/environments/.DS_Store +0 -0
  91. package/src/environments/hardhat/.DS_Store +0 -0
  92. package/src/zip.ts +0 -53
@@ -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 = __importDefault(require("rimraf"));
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;AAG1B,8CAA6C;AAC7C,oDAA6B;AAC7B,+BAAiC;AACjC,uEAA+D;AAE/D,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,gBAAO,CAAC,CAAC;AAGlC,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,MAAM,CAAC,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"}
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, role: string): void;
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,QAclE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAqBtG"}
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.addConstructorCode('_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);');
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.name, common_functions_1.supportsInterface);
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, role) {
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 = role + '_ROLE';
40
- if (c.addVariable(`bytes32 public constant ${roleId} = keccak256("${roleId}");`)) {
41
- c.addConstructorCode(`_grantRole(${roleId}, msg.sender);`);
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;YAC7B,MAAM;SACP;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACtC,CAAC,CAAC,kBAAkB,CAAC,6CAA6C,CAAC,CAAC;aACrE;YACD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,oCAAiB,CAAC,CAAC;YAC7D,MAAM;SACP;KACF;AACH,CAAC;AAdD,4CAcC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,CAAkB,EAAE,EAAgB,EAAE,MAAc,EAAE,IAAY;IACrG,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,IAAI,GAAG,OAAO,CAAC;YAC9B,IAAI,CAAC,CAAC,WAAW,CAAC,2BAA2B,MAAM,iBAAiB,MAAM,KAAK,CAAC,EAAE;gBAChF,CAAC,CAAC,kBAAkB,CAAC,cAAc,MAAM,gBAAgB,CAAC,CAAC;aAC5D;YACD,CAAC,CAAC,WAAW,CAAC,YAAY,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM;SACP;KACF;AACH,CAAC;AArBD,oDAqBC;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
+ {"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,QA+B1F"}
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"}
@@ -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
- c.addParent({
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.addOverride('UUPSUpgradeable', functions._authorizeUpgrade);
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;YACzE,CAAC,CAAC,SAAS,CAAC;gBACV,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,yDAAyD;aAChE,CAAC,CAAC;YACH,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC9D,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;AA/BD,wCA+BC;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
+ {"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.9"
1
+ "0.8.20"
@@ -0,0 +1,5 @@
1
+ import JSZip from "jszip";
2
+ import type { GenericOptions } from "./build-generic";
3
+ import type { Contract } from "./contract";
4
+ export declare function zipFoundry(c: Contract, opts?: GenericOptions): Promise<JSZip>;
5
+ //# sourceMappingURL=zip-foundry.d.ts.map
@@ -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;AAmK3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBAoBlE"}
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"}
@@ -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.upgradeable ? 'upgrades.deployProxy(ContractFactory)' : 'ContractFactory.deploy()'};`,
87
- 'await instance.deployed();'
88
- ], getContractSpecificExpects()),
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 getContractSpecificExpects() {
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
- const script = (c) => `\
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
- const instance = await ${c.upgradeable ? 'upgrades.deployProxy(ContractFactory)' : 'ContractFactory.deploy()'};
125
- await instance.deployed();
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.address}\`);
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"zip-hardhat.js","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"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"}
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.2.3",
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": "4.8.2",
24
- "@openzeppelin/contracts-upgradeable": "4.8.2",
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": "^3.0.2",
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"
@@ -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/security/Pausable.sol',
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
- requireAccessControl(c, functions.pause, access, 'PAUSER');
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