@openzeppelin/wizard 0.8.0 → 0.9.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 (73) hide show
  1. package/dist/account.js +8 -10
  2. package/dist/account.js.map +1 -1
  3. package/dist/common-options.js +3 -4
  4. package/dist/common-options.js.map +1 -1
  5. package/dist/contract.d.ts +25 -6
  6. package/dist/contract.d.ts.map +1 -1
  7. package/dist/contract.js +48 -7
  8. package/dist/contract.js.map +1 -1
  9. package/dist/custom.js +1 -2
  10. package/dist/custom.js.map +1 -1
  11. package/dist/erc1155.d.ts.map +1 -1
  12. package/dist/erc1155.js +6 -9
  13. package/dist/erc1155.js.map +1 -1
  14. package/dist/erc20.d.ts +1 -0
  15. package/dist/erc20.d.ts.map +1 -1
  16. package/dist/erc20.js +36 -27
  17. package/dist/erc20.js.map +1 -1
  18. package/dist/erc721.d.ts +1 -0
  19. package/dist/erc721.d.ts.map +1 -1
  20. package/dist/erc721.js +25 -17
  21. package/dist/erc721.js.map +1 -1
  22. package/dist/generate/alternatives.js +1 -1
  23. package/dist/generate/alternatives.js.map +1 -1
  24. package/dist/generate/erc20.d.ts.map +1 -1
  25. package/dist/generate/erc20.js +1 -0
  26. package/dist/generate/erc20.js.map +1 -1
  27. package/dist/generate/erc721.d.ts.map +1 -1
  28. package/dist/generate/erc721.js +1 -0
  29. package/dist/generate/erc721.js.map +1 -1
  30. package/dist/generate/stablecoin.d.ts.map +1 -1
  31. package/dist/generate/stablecoin.js +2 -0
  32. package/dist/generate/stablecoin.js.map +1 -1
  33. package/dist/governor.js +9 -10
  34. package/dist/governor.js.map +1 -1
  35. package/dist/infer-transpiled.js +1 -2
  36. package/dist/infer-transpiled.js.map +1 -1
  37. package/dist/options.js +1 -2
  38. package/dist/options.js.map +1 -1
  39. package/dist/print.d.ts.map +1 -1
  40. package/dist/print.js +24 -4
  41. package/dist/print.js.map +1 -1
  42. package/dist/scripts/prepare.js +1 -2
  43. package/dist/scripts/prepare.js.map +1 -1
  44. package/dist/set-access-control.d.ts.map +1 -1
  45. package/dist/set-access-control.js +1 -1
  46. package/dist/set-access-control.js.map +1 -1
  47. package/dist/set-namespaced-storage.d.ts +7 -0
  48. package/dist/set-namespaced-storage.d.ts.map +1 -0
  49. package/dist/set-namespaced-storage.js +61 -0
  50. package/dist/set-namespaced-storage.js.map +1 -0
  51. package/dist/stablecoin.js +5 -6
  52. package/dist/stablecoin.js.map +1 -1
  53. package/dist/utils/namespaced-slot.d.ts +5 -0
  54. package/dist/utils/namespaced-slot.d.ts.map +1 -0
  55. package/dist/utils/namespaced-slot.js +18 -0
  56. package/dist/utils/namespaced-slot.js.map +1 -0
  57. package/dist/utils/transitive-closure.js +1 -2
  58. package/dist/utils/transitive-closure.js.map +1 -1
  59. package/dist/zip-foundry.js +4 -4
  60. package/dist/zip-foundry.js.map +1 -1
  61. package/package.json +5 -2
  62. package/src/contract.ts +64 -9
  63. package/src/erc1155.ts +1 -3
  64. package/src/erc20.ts +43 -14
  65. package/src/erc721.ts +25 -9
  66. package/src/generate/erc20.ts +1 -0
  67. package/src/generate/erc721.ts +1 -0
  68. package/src/generate/stablecoin.ts +2 -0
  69. package/src/print.ts +34 -3
  70. package/src/set-access-control.ts +3 -1
  71. package/src/set-namespaced-storage.ts +69 -0
  72. package/src/stablecoin.ts +3 -1
  73. package/src/utils/namespaced-slot.ts +18 -0
@@ -1 +1 @@
1
- {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ContractBuilder } from './contract';
2
+ /**
3
+ * Sets namespaced variables in storage struct, and adds a function to retrieve namespaced storage.
4
+ */
5
+ export declare function setNamespacedStorage(c: ContractBuilder, structVariables: string[], namespacePrefix: string): void;
6
+ export declare function toStorageStructInstantiation(name: string): string;
7
+ //# sourceMappingURL=set-namespaced-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-namespaced-storage.d.ts","sourceRoot":"","sources":["../src/set-namespaced-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,eAAe,EAAkB,MAAM,YAAY,CAAC;AAIhF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,QAe1G;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,UAExD"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setNamespacedStorage = setNamespacedStorage;
4
+ exports.toStorageStructInstantiation = toStorageStructInstantiation;
5
+ const namespaced_slot_1 = require("./utils/namespaced-slot");
6
+ const error_1 = require("./error");
7
+ /**
8
+ * Sets namespaced variables in storage struct, and adds a function to retrieve namespaced storage.
9
+ */
10
+ function setNamespacedStorage(c, structVariables, namespacePrefix) {
11
+ validateNoWhitespace(namespacePrefix);
12
+ const namespaceId = toNamespaceId(namespacePrefix, c.name);
13
+ const storageFn = makeStorageFunction(c.name);
14
+ const storageStruct = makeStorageStruct(c.name, namespaceId);
15
+ const namespacedStorageConstant = `${c.name.toUpperCase()}_STORAGE_LOCATION`;
16
+ structVariables.forEach(v => c.addStructVariable(storageStruct, v));
17
+ c.addConstantOrImmutableOrErrorDefinition(`bytes32 private constant ${namespacedStorageConstant} = ${(0, namespaced_slot_1.computeNamespacedStorageSlot)(namespaceId)};`, [`// keccak256(abi.encode(uint256(keccak256("${namespaceId}")) - 1)) & ~bytes32(uint256(0xff))`]);
18
+ c.addFunctionCode(`assembly { $.slot := ${namespacedStorageConstant} }`, storageFn);
19
+ }
20
+ function toStorageStructInstantiation(name) {
21
+ return `${name}Storage storage $ = ${makeStorageFunction(name).name}();`;
22
+ }
23
+ /**
24
+ * According to ERC-7201, namespace ids should not contain any whitespace characters.
25
+ */
26
+ function validateNoWhitespace(namespacePrefix) {
27
+ if (namespacePrefix.match(/\s+/)) {
28
+ throw new error_1.OptionsError({ namespacePrefix: 'Namespace prefix should not contain whitespace characters' });
29
+ }
30
+ }
31
+ /**
32
+ * Creates a namespace ID from a namespace prefix and a contract name.
33
+ * If the namespace prefix is empty, returns the contract name.
34
+ */
35
+ function toNamespaceId(namespacePrefix, name) {
36
+ if (namespacePrefix.length === 0) {
37
+ return name;
38
+ }
39
+ else {
40
+ return `${namespacePrefix}.${name}`;
41
+ }
42
+ }
43
+ function makeStorageFunction(name) {
44
+ const fn = {
45
+ name: `_get${name}Storage`,
46
+ kind: 'private',
47
+ mutability: 'pure',
48
+ args: [],
49
+ returns: [`${name}Storage storage $`],
50
+ };
51
+ return fn;
52
+ }
53
+ function makeStorageStruct(name, namespaceId) {
54
+ const struct = {
55
+ name: `${name}Storage`,
56
+ comments: [`/// @custom:storage-location erc7201:${namespaceId}`],
57
+ variables: [],
58
+ };
59
+ return struct;
60
+ }
61
+ //# sourceMappingURL=set-namespaced-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-namespaced-storage.js","sourceRoot":"","sources":["../src/set-namespaced-storage.ts"],"names":[],"mappings":";;AAOA,oDAeC;AAED,oEAEC;AAzBD,6DAAuE;AACvE,mCAAuC;AAEvC;;GAEG;AACH,SAAgB,oBAAoB,CAAC,CAAkB,EAAE,eAAyB,EAAE,eAAuB;IACzG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,yBAAyB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAE7E,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpE,CAAC,CAAC,uCAAuC,CACvC,4BAA4B,yBAAyB,MAAM,IAAA,8CAA4B,EAAC,WAAW,CAAC,GAAG,EACvG,CAAC,8CAA8C,WAAW,qCAAqC,CAAC,CACjG,CAAC;IACF,CAAC,CAAC,eAAe,CAAC,wBAAwB,yBAAyB,IAAI,EAAE,SAAS,CAAC,CAAC;AACtF,CAAC;AAED,SAAgB,4BAA4B,CAAC,IAAY;IACvD,OAAO,GAAG,IAAI,uBAAuB,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,eAAuB;IACnD,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,oBAAY,CAAC,EAAE,eAAe,EAAE,2DAA2D,EAAE,CAAC,CAAC;IAC3G,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,eAAuB,EAAE,IAAY;IAC1D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,eAAe,IAAI,IAAI,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,EAAE,GAAiB;QACvB,IAAI,EAAE,OAAO,IAAI,SAAS;QAC1B,IAAI,EAAE,SAAkB;QACxB,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,CAAC,GAAG,IAAI,mBAAmB,CAAC;KACtC,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,WAAmB;IAC1D,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,GAAG,IAAI,SAAS;QACtB,QAAQ,EAAE,CAAC,wCAAwC,WAAW,EAAE,CAAC;QACjE,SAAS,EAAE,EAAE;KACd,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -16,13 +16,12 @@ exports.defaults = {
16
16
  custodian: false,
17
17
  };
18
18
  function withDefaults(opts) {
19
- var _a, _b, _c, _d;
20
19
  return {
21
20
  ...(0, erc20_1.withDefaults)(opts),
22
- name: (_a = opts.name) !== null && _a !== void 0 ? _a : exports.defaults.name,
23
- symbol: (_b = opts.symbol) !== null && _b !== void 0 ? _b : exports.defaults.symbol,
24
- limitations: (_c = opts.limitations) !== null && _c !== void 0 ? _c : exports.defaults.limitations,
25
- custodian: (_d = opts.custodian) !== null && _d !== void 0 ? _d : exports.defaults.custodian,
21
+ name: opts.name ?? exports.defaults.name,
22
+ symbol: opts.symbol ?? exports.defaults.symbol,
23
+ limitations: opts.limitations ?? exports.defaults.limitations,
24
+ custodian: opts.custodian ?? exports.defaults.custodian,
26
25
  };
27
26
  }
28
27
  function printStablecoin(opts = exports.defaults) {
@@ -81,7 +80,7 @@ function addCustodian(c, access) {
81
80
  case 'roles': {
82
81
  const roleOwner = 'custodian';
83
82
  const roleId = 'CUSTODIAN_ROLE';
84
- const addedConstant = c.addVariable(`bytes32 public constant ${roleId} = keccak256("${roleId}");`);
83
+ const addedConstant = c.addConstantOrImmutableOrErrorDefinition(`bytes32 public constant ${roleId} = keccak256("${roleId}");`);
85
84
  if (roleOwner && addedConstant) {
86
85
  c.addConstructorArgument({ type: 'address', name: roleOwner });
87
86
  c.addConstructorCode(`_grantRole(${roleId}, ${roleOwner});`);
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns the ERC-7201 storage location for a given namespace id
3
+ */
4
+ export declare function computeNamespacedStorageSlot(id: string): string;
5
+ //# sourceMappingURL=namespaced-slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespaced-slot.d.ts","sourceRoot":"","sources":["../../src/utils/namespaced-slot.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAW/D"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeNamespacedStorageSlot = computeNamespacedStorageSlot;
4
+ const keccak_1 = require("ethereum-cryptography/keccak");
5
+ const utils_1 = require("ethereum-cryptography/utils");
6
+ /**
7
+ * Returns the ERC-7201 storage location for a given namespace id
8
+ */
9
+ function computeNamespacedStorageSlot(id) {
10
+ const innerHash = (0, keccak_1.keccak256)((0, utils_1.utf8ToBytes)(id));
11
+ const minusOne = BigInt('0x' + (0, utils_1.toHex)(innerHash)) - 1n;
12
+ const minusOneBytes = (0, utils_1.hexToBytes)(minusOne.toString(16).padStart(64, '0'));
13
+ const outerHash = (0, keccak_1.keccak256)(minusOneBytes);
14
+ const mask = BigInt('0xff');
15
+ const masked = BigInt('0x' + (0, utils_1.toHex)(outerHash)) & ~mask;
16
+ return '0x' + masked.toString(16).padStart(64, '0');
17
+ }
18
+ //# sourceMappingURL=namespaced-slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespaced-slot.js","sourceRoot":"","sources":["../../src/utils/namespaced-slot.ts"],"names":[],"mappings":";;AAMA,oEAWC;AAjBD,yDAAyD;AACzD,uDAA6E;AAE7E;;GAEG;AACH,SAAgB,4BAA4B,CAAC,EAAU;IACrD,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IACtD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAEvD,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC"}
@@ -10,13 +10,12 @@ function transitiveClosure(obj) {
10
10
  return closure;
11
11
  }
12
12
  function reachable(obj, key) {
13
- var _a;
14
13
  let prevSize = 0;
15
14
  const res = new Set(obj[key]);
16
15
  while (prevSize < res.size) {
17
16
  prevSize = res.size;
18
17
  for (const k of res) {
19
- for (const v of (_a = obj[k]) !== null && _a !== void 0 ? _a : []) {
18
+ for (const v of obj[k] ?? []) {
20
19
  res.add(v);
21
20
  }
22
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transitive-closure.js","sourceRoot":"","sources":["../../src/utils/transitive-closure.ts"],"names":[],"mappings":";;AAEA,8CAQC;AAED,8BAcC;AAxBD,SAAgB,iBAAiB,CAAC,GAA2B;IAC3D,MAAM,OAAO,GAAG,EAAuB,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,SAAS,CAAC,GAA2B,EAAE,GAAM;;IAC3D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9B,OAAO,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,MAAA,GAAG,CAAC,CAAC,CAAC,mCAAI,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"transitive-closure.js","sourceRoot":"","sources":["../../src/utils/transitive-closure.ts"],"names":[],"mappings":";;AAEA,8CAQC;AAED,8BAcC;AAxBD,SAAgB,iBAAiB,CAAC,GAA2B;IAC3D,MAAM,OAAO,GAAG,EAAuB,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,SAAS,CAAC,GAA2B,EAAE,GAAM;IAC3D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9B,OAAO,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -72,7 +72,7 @@ const test = (c, opts) => {
72
72
  (0, format_lines_1.spaceBetween)([`${c.name} public instance;`], [
73
73
  'function setUp() public {',
74
74
  getAddressVariables(c, args),
75
- getDeploymentCode(c, args, false, opts === null || opts === void 0 ? void 0 : opts.upgradeable),
75
+ getDeploymentCode(c, args, false, opts?.upgradeable),
76
76
  '}',
77
77
  ], getContractSpecificTestFunction()),
78
78
  '}',
@@ -81,7 +81,7 @@ const test = (c, opts) => {
81
81
  function getAddressVariables(c, args) {
82
82
  const vars = [];
83
83
  let i = 1; // private key index starts from 1 since it must be non-zero
84
- if (c.upgradeable && (opts === null || opts === void 0 ? void 0 : opts.upgradeable) === 'transparent' && !args.includes('initialOwner')) {
84
+ if (c.upgradeable && opts?.upgradeable === 'transparent' && !args.includes('initialOwner')) {
85
85
  vars.push(`address initialOwner = vm.addr(${i++});`);
86
86
  }
87
87
  for (const arg of args) {
@@ -124,7 +124,7 @@ const script = (c, opts) => {
124
124
  const deploymentLines = [
125
125
  'vm.startBroadcast();',
126
126
  ...getAddressVariables(c, args),
127
- ...getDeploymentCode(c, args, true, opts === null || opts === void 0 ? void 0 : opts.upgradeable),
127
+ ...getDeploymentCode(c, args, true, opts?.upgradeable),
128
128
  `console.log("${c.upgradeable ? 'Proxy' : 'Contract'} deployed to %s", address(instance));`,
129
129
  'vm.stopBroadcast();',
130
130
  ];
@@ -136,7 +136,7 @@ const script = (c, opts) => {
136
136
  }
137
137
  function getAddressVariables(c, args) {
138
138
  const vars = [];
139
- if (c.upgradeable && (opts === null || opts === void 0 ? void 0 : opts.upgradeable) === 'transparent' && !args.includes('initialOwner')) {
139
+ if (c.upgradeable && opts?.upgradeable === 'transparent' && !args.includes('initialOwner')) {
140
140
  vars.push('address initialOwner = <Set initialOwner address here>;');
141
141
  }
142
142
  for (const arg of args) {
@@ -1 +1 @@
1
- {"version":3,"file":"zip-foundry.js","sourceRoot":"","sources":["../src/zip-foundry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip-foundry.js","sourceRoot":"","sources":["../src/zip-foundry.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.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "A boilerplate generator to get started with OpenZeppelin Contracts",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": "https://github.com/OpenZeppelin/contracts-wizard",
@@ -21,8 +21,11 @@
21
21
  "test:watch": "ava --watch",
22
22
  "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"
23
23
  },
24
+ "dependencies": {
25
+ "ethereum-cryptography": "^3.2.0"
26
+ },
24
27
  "devDependencies": {
25
- "@openzeppelin/community-contracts": "git+https://github.com/OpenZeppelin/openzeppelin-community-contracts.git#2d607bd",
28
+ "@openzeppelin/community-contracts": "git+https://github.com/OpenZeppelin/openzeppelin-community-contracts.git#b0ddd27",
26
29
  "@openzeppelin/contracts": "^5.4.0",
27
30
  "@openzeppelin/contracts-upgradeable": "^5.4.0",
28
31
  "@types/node": "^20.0.0",
package/src/contract.ts CHANGED
@@ -7,9 +7,10 @@ export interface Contract {
7
7
  natspecTags: NatspecTag[];
8
8
  imports: ImportContract[];
9
9
  functions: ContractFunction[];
10
+ structs: ContractStruct[];
10
11
  constructorCode: string[];
11
12
  constructorArgs: FunctionArgument[];
12
- variables: string[];
13
+ variableOrErrorDefinitions: VariableOrErrorDefinition[];
13
14
  upgradeable: boolean;
14
15
  }
15
16
 
@@ -52,7 +53,13 @@ export interface ContractFunction extends BaseFunction {
52
53
  comments: string[];
53
54
  }
54
55
 
55
- export type FunctionKind = 'internal' | 'public';
56
+ export interface ContractStruct {
57
+ name: string;
58
+ comments: string[];
59
+ variables: string[];
60
+ }
61
+
62
+ export type FunctionKind = 'internal' | 'public' | 'private';
56
63
  export type FunctionMutability = (typeof mutabilityRank)[number];
57
64
 
58
65
  // Order is important
@@ -72,6 +79,11 @@ export interface NatspecTag {
72
79
  value: string;
73
80
  }
74
81
 
82
+ export interface VariableOrErrorDefinition {
83
+ code: string;
84
+ comments?: string[];
85
+ }
86
+
75
87
  export class ContractBuilder implements Contract {
76
88
  readonly name: string;
77
89
  license: string = 'MIT';
@@ -82,10 +94,11 @@ export class ContractBuilder implements Contract {
82
94
 
83
95
  readonly constructorArgs: FunctionArgument[] = [];
84
96
  readonly constructorCode: string[] = [];
85
- readonly variableSet: Set<string> = new Set();
86
97
 
98
+ readonly variableOrErrorMap: Map<string, VariableOrErrorDefinition> = new Map<string, VariableOrErrorDefinition>();
87
99
  private parentMap: Map<string, Parent> = new Map<string, Parent>();
88
100
  private functionMap: Map<string, ContractFunction> = new Map();
101
+ private structMap: Map<string, ContractStruct> = new Map();
89
102
 
90
103
  constructor(name: string) {
91
104
  this.name = toIdentifier(name, true);
@@ -113,8 +126,12 @@ export class ContractBuilder implements Contract {
113
126
  return [...this.functionMap.values()];
114
127
  }
115
128
 
116
- get variables(): string[] {
117
- return [...this.variableSet];
129
+ get structs(): ContractStruct[] {
130
+ return [...this.structMap.values()];
131
+ }
132
+
133
+ get variableOrErrorDefinitions(): VariableOrErrorDefinition[] {
134
+ return [...this.variableOrErrorMap.values()];
118
135
  }
119
136
 
120
137
  addParent(contract: ImportContract, params: Value[] = []): boolean {
@@ -172,6 +189,19 @@ export class ContractBuilder implements Contract {
172
189
  }
173
190
  }
174
191
 
192
+ private addStruct(_struct: ContractStruct): ContractStruct {
193
+ const got = this.structMap.get(_struct.name);
194
+ if (got !== undefined) {
195
+ return got;
196
+ } else {
197
+ const struct: ContractStruct = {
198
+ ..._struct,
199
+ };
200
+ this.structMap.set(_struct.name, struct);
201
+ return struct;
202
+ }
203
+ }
204
+
175
205
  addConstructorArgument(arg: FunctionArgument) {
176
206
  this.constructorArgs.push(arg);
177
207
  }
@@ -212,11 +242,36 @@ export class ContractBuilder implements Contract {
212
242
  }
213
243
 
214
244
  /**
215
- * Note: The type in the variable is not currently transpiled, even if it refers to a contract
245
+ * Note: The type in the code is not currently transpiled, even if it refers to a contract
246
+ */
247
+ addStateVariable(code: string, upgradeable: boolean): boolean {
248
+ if (upgradeable) {
249
+ throw new Error('State variables should not be used when upgradeable is true. Set namespaced storage instead.');
250
+ } else {
251
+ return this._addVariableOrErrorDefinition({ code });
252
+ }
253
+ }
254
+
255
+ /**
256
+ * Note: The type in the code is not currently transpiled, even if it refers to a contract
216
257
  */
217
- addVariable(code: string): boolean {
218
- const present = this.variableSet.has(code);
219
- this.variableSet.add(code);
258
+ addConstantOrImmutableOrErrorDefinition(code: string, comments?: string[]): boolean {
259
+ return this._addVariableOrErrorDefinition({ code, comments });
260
+ }
261
+
262
+ private _addVariableOrErrorDefinition(variableOrErrorDefinition: VariableOrErrorDefinition): boolean {
263
+ const present = this.variableOrErrorMap.has(variableOrErrorDefinition.code);
264
+ this.variableOrErrorMap.set(variableOrErrorDefinition.code, variableOrErrorDefinition);
265
+ return !present;
266
+ }
267
+
268
+ addStructVariable(baseStruct: ContractStruct, code: string): boolean {
269
+ let struct = this.structMap.get(baseStruct.name);
270
+ if (!struct) {
271
+ struct = this.addStruct(baseStruct);
272
+ }
273
+ const present = struct.variables.includes(code);
274
+ if (!present) struct.variables.push(code);
220
275
  return !present;
221
276
  }
222
277
  }
package/src/erc1155.ts CHANGED
@@ -22,6 +22,7 @@ export interface ERC1155Options extends CommonOptions {
22
22
  }
23
23
 
24
24
  export const defaults: Required<ERC1155Options> = {
25
+ ...commonDefaults,
25
26
  name: 'MyToken',
26
27
  uri: '',
27
28
  burnable: false,
@@ -29,9 +30,6 @@ export const defaults: Required<ERC1155Options> = {
29
30
  mintable: false,
30
31
  supply: false,
31
32
  updatableUri: true,
32
- access: commonDefaults.access,
33
- upgradeable: commonDefaults.upgradeable,
34
- info: commonDefaults.info,
35
33
  } as const;
36
34
 
37
35
  function withDefaults(opts: ERC1155Options): Required<ERC1155Options> {
package/src/erc20.ts CHANGED
@@ -6,6 +6,7 @@ import { defineFunctions } from './utils/define-functions';
6
6
  import type { CommonOptions } from './common-options';
7
7
  import { withCommonDefaults, defaults as commonDefaults } from './common-options';
8
8
  import { setUpgradeable } from './set-upgradeable';
9
+ import type { Upgradeable } from './set-upgradeable';
9
10
  import { setInfo } from './set-info';
10
11
  import { printContract } from './print';
11
12
  import type { ClockMode } from './set-clock-mode';
@@ -13,6 +14,7 @@ import { clockModeDefault, setClockMode } from './set-clock-mode';
13
14
  import { supportsInterface } from './common-functions';
14
15
  import { OptionsError } from './error';
15
16
  import { toUint256, UINT256_MAX } from './utils/convert-strings';
17
+ import { setNamespacedStorage, toStorageStructInstantiation } from './set-namespaced-storage';
16
18
 
17
19
  export const crossChainBridgingOptions = [false, 'custom', 'superchain'] as const;
18
20
  export type CrossChainBridging = (typeof crossChainBridgingOptions)[number];
@@ -34,9 +36,11 @@ export interface ERC20Options extends CommonOptions {
34
36
  votes?: boolean | ClockMode;
35
37
  flashmint?: boolean;
36
38
  crossChainBridging?: CrossChainBridging;
39
+ namespacePrefix?: string;
37
40
  }
38
41
 
39
42
  export const defaults: Required<ERC20Options> = {
43
+ ...commonDefaults,
40
44
  name: 'MyToken',
41
45
  symbol: 'MTK',
42
46
  burnable: false,
@@ -49,9 +53,7 @@ export const defaults: Required<ERC20Options> = {
49
53
  votes: false,
50
54
  flashmint: false,
51
55
  crossChainBridging: false,
52
- access: commonDefaults.access,
53
- upgradeable: commonDefaults.upgradeable,
54
- info: commonDefaults.info,
56
+ namespacePrefix: 'myProject',
55
57
  } as const;
56
58
 
57
59
  export function withDefaults(opts: ERC20Options): Required<ERC20Options> {
@@ -68,6 +70,7 @@ export function withDefaults(opts: ERC20Options): Required<ERC20Options> {
68
70
  votes: opts.votes ?? defaults.votes,
69
71
  flashmint: opts.flashmint ?? defaults.flashmint,
70
72
  crossChainBridging: opts.crossChainBridging ?? defaults.crossChainBridging,
73
+ namespacePrefix: opts.namespacePrefix ?? defaults.namespacePrefix,
71
74
  };
72
75
  }
73
76
 
@@ -89,7 +92,7 @@ export function buildERC20(opts: ERC20Options): ContractBuilder {
89
92
  addBase(c, allOpts.name, allOpts.symbol);
90
93
 
91
94
  if (allOpts.crossChainBridging) {
92
- addCrossChainBridging(c, allOpts.crossChainBridging, access);
95
+ addCrossChainBridging(c, allOpts.crossChainBridging, access, upgradeable, allOpts.namespacePrefix);
93
96
  }
94
97
 
95
98
  if (allOpts.premint) {
@@ -304,7 +307,13 @@ function addFlashMint(c: ContractBuilder) {
304
307
  });
305
308
  }
306
309
 
307
- function addCrossChainBridging(c: ContractBuilder, crossChainBridging: 'custom' | 'superchain', access: Access) {
310
+ function addCrossChainBridging(
311
+ c: ContractBuilder,
312
+ crossChainBridging: 'custom' | 'superchain',
313
+ access: Access,
314
+ upgradeable: Upgradeable,
315
+ namespacePrefix: string,
316
+ ) {
308
317
  const ERC20Bridgeable = {
309
318
  name: 'ERC20Bridgeable',
310
319
  path: `@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Bridgeable.sol`,
@@ -316,7 +325,7 @@ function addCrossChainBridging(c: ContractBuilder, crossChainBridging: 'custom'
316
325
  c.addOverride(ERC20Bridgeable, functions._checkTokenBridge);
317
326
  switch (crossChainBridging) {
318
327
  case 'custom':
319
- addCustomBridging(c, access);
328
+ addCustomBridging(c, access, upgradeable, namespacePrefix);
320
329
  break;
321
330
  case 'superchain':
322
331
  addSuperchainERC20(c);
@@ -326,27 +335,45 @@ function addCrossChainBridging(c: ContractBuilder, crossChainBridging: 'custom'
326
335
  throw new Error('Unknown value for `crossChainBridging`');
327
336
  }
328
337
  }
329
- c.addVariable('error Unauthorized();');
338
+ c.addConstantOrImmutableOrErrorDefinition('error Unauthorized();');
330
339
  }
331
340
 
332
- function addCustomBridging(c: ContractBuilder, access: Access) {
341
+ function addCustomBridging(c: ContractBuilder, access: Access, upgradeable: Upgradeable, namespacePrefix: string) {
333
342
  switch (access) {
334
343
  case false:
335
344
  case 'ownable': {
336
- const addedBridgeImmutable = c.addVariable(`address public tokenBridge;`);
337
- if (addedBridgeImmutable) {
345
+ if (!upgradeable) {
346
+ const addedBridge = c.addStateVariable(`address public tokenBridge;`, false);
347
+ if (addedBridge) {
348
+ c.addConstructorArgument({ type: 'address', name: 'tokenBridge_' });
349
+ c.addConstructorCode(`require(tokenBridge_ != address(0), "Invalid tokenBridge_ address");`);
350
+ c.addConstructorCode(`tokenBridge = tokenBridge_;`);
351
+ }
352
+ c.setFunctionBody([`if (caller != tokenBridge) revert Unauthorized();`], functions._checkTokenBridge, 'view');
353
+ } else {
354
+ setNamespacedStorage(c, ['address tokenBridge;'], namespacePrefix);
355
+
338
356
  c.addConstructorArgument({ type: 'address', name: 'tokenBridge_' });
339
357
  c.addConstructorCode(`require(tokenBridge_ != address(0), "Invalid tokenBridge_ address");`);
340
- c.addConstructorCode(`tokenBridge = tokenBridge_;`);
358
+
359
+ c.addConstructorCode(toStorageStructInstantiation(c.name));
360
+ c.addConstructorCode(`$.tokenBridge = tokenBridge_;`);
361
+
362
+ c.setFunctionBody(
363
+ [toStorageStructInstantiation(c.name), `if (caller != $.tokenBridge) revert Unauthorized();`],
364
+ functions._checkTokenBridge,
365
+ 'view',
366
+ );
341
367
  }
342
- c.setFunctionBody([`if (caller != tokenBridge) revert Unauthorized();`], functions._checkTokenBridge, 'view');
343
368
  break;
344
369
  }
345
370
  case 'roles': {
346
371
  setAccessControl(c, access);
347
372
  const roleOwner = 'tokenBridge';
348
373
  const roleId = 'TOKEN_BRIDGE_ROLE';
349
- const addedRoleConstant = c.addVariable(`bytes32 public constant ${roleId} = keccak256("${roleId}");`);
374
+ const addedRoleConstant = c.addConstantOrImmutableOrErrorDefinition(
375
+ `bytes32 public constant ${roleId} = keccak256("${roleId}");`,
376
+ );
350
377
  if (addedRoleConstant) {
351
378
  c.addConstructorArgument({ type: 'address', name: roleOwner });
352
379
  c.addConstructorCode(`_grantRole(${roleId}, ${roleOwner});`);
@@ -382,7 +409,9 @@ function addCustomBridging(c: ContractBuilder, access: Access) {
382
409
  }
383
410
 
384
411
  function addSuperchainERC20(c: ContractBuilder) {
385
- c.addVariable('address internal constant SUPERCHAIN_TOKEN_BRIDGE = 0x4200000000000000000000000000000000000028;');
412
+ c.addConstantOrImmutableOrErrorDefinition(
413
+ 'address internal constant SUPERCHAIN_TOKEN_BRIDGE = 0x4200000000000000000000000000000000000028;',
414
+ );
386
415
  c.setFunctionBody(
387
416
  ['if (caller != SUPERCHAIN_TOKEN_BRIDGE) revert Unauthorized();'],
388
417
  functions._checkTokenBridge,