@openzeppelin/wizard 0.10.3 → 0.10.5

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 (51) hide show
  1. package/dist/contract.d.ts +13 -4
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +34 -11
  4. package/dist/contract.js.map +1 -1
  5. package/dist/environments/hardhat/polkadot/package-lock.json +12683 -0
  6. package/dist/environments/hardhat/polkadot/package.json +17 -0
  7. package/dist/get-versioned-remappings.js +3 -3
  8. package/dist/get-versioned-remappings.js.map +1 -1
  9. package/dist/governor.d.ts +2 -1
  10. package/dist/governor.d.ts.map +1 -1
  11. package/dist/governor.js.map +1 -1
  12. package/dist/index.d.ts +11 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +20 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/options.d.ts +8 -0
  17. package/dist/options.d.ts.map +1 -1
  18. package/dist/options.js +1 -0
  19. package/dist/options.js.map +1 -1
  20. package/dist/print.d.ts.map +1 -1
  21. package/dist/print.js +41 -12
  22. package/dist/print.js.map +1 -1
  23. package/dist/stablecoin.d.ts +1 -0
  24. package/dist/stablecoin.d.ts.map +1 -1
  25. package/dist/stablecoin.js.map +1 -1
  26. package/dist/utils/imports-libraries.d.ts +1 -1
  27. package/dist/utils/imports-libraries.d.ts.map +1 -1
  28. package/dist/utils/imports-libraries.js +3 -3
  29. package/dist/utils/imports-libraries.js.map +1 -1
  30. package/dist/zip-hardhat-polkadot.d.ts +5 -0
  31. package/dist/zip-hardhat-polkadot.d.ts.map +1 -0
  32. package/dist/zip-hardhat-polkadot.js +115 -0
  33. package/dist/zip-hardhat-polkadot.js.map +1 -0
  34. package/dist/zip-hardhat.d.ts +21 -0
  35. package/dist/zip-hardhat.d.ts.map +1 -1
  36. package/dist/zip-hardhat.js +181 -115
  37. package/dist/zip-hardhat.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/contract.ts +49 -14
  40. package/src/environments/hardhat/polkadot/package-lock.json +12683 -0
  41. package/src/environments/hardhat/polkadot/package.json +17 -0
  42. package/src/get-versioned-remappings.ts +1 -1
  43. package/src/governor.ts +3 -1
  44. package/src/index.ts +13 -2
  45. package/src/options.ts +5 -0
  46. package/src/print.ts +44 -11
  47. package/src/stablecoin.ts +2 -0
  48. package/src/utils/imports-libraries.ts +2 -2
  49. package/src/zip-hardhat-polkadot.ts +86 -0
  50. package/src/zip-hardhat.ts +203 -129
  51. /package/{openzeppelin-contracts-version.d.ts → openzeppelin-contracts-version.json.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-hardhat-polkadot.js","sourceRoot":"","sources":["../src/zip-hardhat-polkadot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFA,gDAEC;AAnFD,+CAAoD;AAEpD,oFAAuD;AAEvD,MAAM,2BAA4B,SAAQ,iCAAmB;IACjD,2BAA2B;QACnC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;IAES,0BAA0B;QAClC,OAAO;;;gBAGK,+BAAgB;;;;;;;;;;;;;;;;;;;;;;;;;EAyB9B,CAAC;IACD,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,CAAW;QACxC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,wDAAa,8CAA8C,GAAC,CAAC;QAC9F,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAChC,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,CAAW;QACxC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,wDAAa,mDAAmD,GAAC,CAAC;QACnG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,6BAA6B;QACrC,OAAO;;;;;;;CAOV,CAAC;IACA,CAAC;IAES,uCAAuC;QAC/C,OAAO;;;;;CAKV,CAAC;IACA,CAAC;IAES,2BAA2B;QACnC,OAAO;;;KAGN,CAAC;IACJ,CAAC;CACF;AAEM,KAAK,UAAU,kBAAkB,CAAC,CAAW,EAAE,IAAqB;IACzE,OAAO,IAAI,2BAA2B,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,5 +1,26 @@
1
1
  import JSZip from 'jszip';
2
2
  import type { GenericOptions } from './build-generic';
3
3
  import type { Contract } from './contract';
4
+ export declare class HardhatZipGenerator {
5
+ protected getAdditionalHardhatImports(): string[];
6
+ protected getHardhatConfigJsonString(): string;
7
+ protected getHardhatConfig(upgradeable: boolean): string;
8
+ protected getTsConfig(): string;
9
+ protected getGitIgnoreHardhatIgnition(): string;
10
+ protected getGitIgnore(): string;
11
+ protected getTest(c: Contract, opts?: GenericOptions): string;
12
+ getDeploymentCall(c: Contract, args: string[]): string;
13
+ protected getScript(c: Contract): string;
14
+ private lowerFirstCharacter;
15
+ protected getIgnitionModule(c: Contract): string;
16
+ protected getReadmeTestingEnvironmentSetupSection(): string;
17
+ protected getReadmePrerequisitesSection(): string;
18
+ protected getReadme(c: Contract): string;
19
+ getHardhatPlugins(c: Contract): string[];
20
+ protected getPackageJson(c: Contract): Promise<unknown>;
21
+ protected getPackageLock(c: Contract): Promise<unknown>;
22
+ protected getPrintContract(c: Contract): string;
23
+ zipHardhat(c: Contract, opts?: GenericOptions): Promise<JSZip>;
24
+ }
4
25
  export declare function zipHardhat(c: Contract, opts?: GenericOptions): Promise<JSZip>;
5
26
  //# sourceMappingURL=zip-hardhat.d.ts.map
@@ -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;AA8M3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBA8BlE"}
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,EAAoB,MAAM,YAAY,CAAC;AAqF7D,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,2BAA2B,IAAI,MAAM,EAAE;IAIjD,SAAS,CAAC,0BAA0B,IAAI,MAAM;IAe9C,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM;IAgBxD,SAAS,CAAC,WAAW,IAAI,MAAM;IAgB/B,SAAS,CAAC,2BAA2B,IAAI,MAAM;IAO/C,SAAS,CAAC,YAAY,IAAI,MAAM;IAehC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM;IAItD,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IAW7D,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM;IA0BxC,OAAO,CAAC,mBAAmB;IAI3B,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM;IAchD,SAAS,CAAC,uCAAuC,IAAI,MAAM;IAI3D,SAAS,CAAC,6BAA6B,IAAI,MAAM;IAIjD,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM;IA4BjC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAE;cAQ/B,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;cAQ7C,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7D,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM;IAIzC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;CAwBrE;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAEnF"}
@@ -36,17 +36,87 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.HardhatZipGenerator = void 0;
39
40
  exports.zipHardhat = zipHardhat;
40
41
  const jszip_1 = __importDefault(require("jszip"));
41
42
  const print_1 = require("./print");
42
43
  const solidity_version_json_1 = __importDefault(require("./solidity-version.json"));
43
44
  const format_lines_1 = require("./utils/format-lines");
44
- const hardhatConfig = (upgradeable) => `\
45
- import { HardhatUserConfig } from "hardhat/config";
46
- import "@nomicfoundation/hardhat-toolbox";
47
- ${upgradeable ? `import "@openzeppelin/hardhat-upgrades";` : ''}
48
-
49
- const config: HardhatUserConfig = {
45
+ class TestGenerator {
46
+ constructor(parent) {
47
+ this.parent = parent;
48
+ }
49
+ getContent(c, opts) {
50
+ return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(this.getImports(c), this.getTestCase(c, opts)));
51
+ }
52
+ getTestCase(c, opts) {
53
+ return [
54
+ `describe("${c.name}", function () {`,
55
+ [
56
+ 'it("Test contract", async function () {',
57
+ (0, format_lines_1.spaceBetween)([`const ContractFactory = await ethers.getContractFactory("${c.name}");`], this.declareVariables(c.constructorArgs), this.getDeployLines(c, c.constructorArgs.map(a => a.name)), this.getExpects(opts)),
58
+ '});',
59
+ ],
60
+ '});',
61
+ ];
62
+ }
63
+ getImports(c) {
64
+ return [
65
+ 'import { expect } from "chai";',
66
+ `import { ${this.parent.getHardhatPlugins(c).join(', ')} } from "hardhat";`,
67
+ ];
68
+ }
69
+ getExpects(opts) {
70
+ if (opts !== undefined) {
71
+ switch (opts.kind) {
72
+ case 'ERC20':
73
+ case 'ERC721':
74
+ return [`expect(await instance.name()).to.equal("${opts.name}");`];
75
+ case 'ERC1155':
76
+ return [`expect(await instance.uri(0)).to.equal("${opts.uri}");`];
77
+ case 'Account':
78
+ case 'Governor':
79
+ case 'Custom':
80
+ break;
81
+ default:
82
+ throw new Error('Unknown ERC');
83
+ }
84
+ }
85
+ return [];
86
+ }
87
+ declareVariables(args) {
88
+ return args.flatMap((arg, i) => {
89
+ if (arg.type === 'address') {
90
+ return [`const ${arg.name} = (await ethers.getSigners())[${i}].address;`];
91
+ }
92
+ else {
93
+ return [`// TODO: Set the following constructor argument`, `// const ${arg.name} = ...;`];
94
+ }
95
+ });
96
+ }
97
+ getDeployLines(c, argNames) {
98
+ if (c.constructorArgs.some(a => a.type !== 'address')) {
99
+ return [
100
+ `// TODO: Uncomment the below when the missing constructor arguments are set above`,
101
+ `// const instance = await ${this.parent.getDeploymentCall(c, argNames)};`,
102
+ `// await instance.waitForDeployment();`,
103
+ ];
104
+ }
105
+ else {
106
+ return [
107
+ `const instance = await ${this.parent.getDeploymentCall(c, argNames)};`,
108
+ 'await instance.waitForDeployment();',
109
+ ];
110
+ }
111
+ }
112
+ }
113
+ class HardhatZipGenerator {
114
+ getAdditionalHardhatImports() {
115
+ return [];
116
+ }
117
+ getHardhatConfigJsonString() {
118
+ return `\
119
+ {
50
120
  solidity: {
51
121
  version: "${solidity_version_json_1.default}",
52
122
  settings: {
@@ -56,11 +126,23 @@ const config: HardhatUserConfig = {
56
126
  },
57
127
  },
58
128
  },
59
- };
129
+ }`;
130
+ }
131
+ getHardhatConfig(upgradeable) {
132
+ const additionalImports = this.getAdditionalHardhatImports();
133
+ const importsSection = additionalImports.length > 0 ? additionalImports.map(imp => `import "${imp}";`).join('\n') + '\n' : '';
134
+ return `\
135
+ import { HardhatUserConfig } from "hardhat/config";
136
+ import "@nomicfoundation/hardhat-toolbox";
137
+ ${importsSection}${upgradeable ? `import "@openzeppelin/hardhat-upgrades";` : ''}
138
+
139
+ const config: HardhatUserConfig = ${this.getHardhatConfigJsonString()};
60
140
 
61
141
  export default config;
62
142
  `;
63
- const tsConfig = `\
143
+ }
144
+ getTsConfig() {
145
+ return `\
64
146
  {
65
147
  "compilerOptions": {
66
148
  "target": "es2020",
@@ -73,7 +155,15 @@ const tsConfig = `\
73
155
  }
74
156
  }
75
157
  `;
76
- const gitIgnore = `\
158
+ }
159
+ getGitIgnoreHardhatIgnition() {
160
+ return `
161
+ # Hardhat Ignition default folder for deployments against a local node
162
+ ignition/deployments/chain-31337
163
+ `;
164
+ }
165
+ getGitIgnore() {
166
+ return `\
77
167
  node_modules
78
168
  .env
79
169
  coverage
@@ -84,78 +174,29 @@ typechain-types
84
174
  # Hardhat files
85
175
  cache
86
176
  artifacts
87
- `;
88
- const test = (c, opts) => {
89
- return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getImports(c), getTestCase(c)));
90
- function getTestCase(c) {
91
- const args = getAddressArgs(c);
92
- return [
93
- `describe("${c.name}", function () {`,
94
- [
95
- 'it("Test contract", async function () {',
96
- (0, format_lines_1.spaceBetween)([`const ContractFactory = await ethers.getContractFactory("${c.name}");`], getAddressVariables(args), [`const instance = await ${getDeploymentCall(c, args)};`, 'await instance.waitForDeployment();'], getExpects()),
97
- '});',
98
- ],
99
- '});',
100
- ];
101
- }
102
- function getImports(c) {
103
- return ['import { expect } from "chai";', `import { ${getHardhatPlugins(c).join(', ')} } from "hardhat";`];
104
- }
105
- function getExpects() {
106
- if (opts !== undefined) {
107
- switch (opts.kind) {
108
- case 'ERC20':
109
- case 'ERC721':
110
- return [`expect(await instance.name()).to.equal("${opts.name}");`];
111
- case 'ERC1155':
112
- return [`expect(await instance.uri(0)).to.equal("${opts.uri}");`];
113
- case 'Account':
114
- case 'Governor':
115
- case 'Custom':
116
- break;
117
- default:
118
- throw new Error('Unknown ERC');
119
- }
120
- }
121
- return [];
177
+ ${this.getGitIgnoreHardhatIgnition()}`;
122
178
  }
123
- function getAddressVariables(args) {
124
- const vars = [];
125
- for (let i = 0; i < args.length; i++) {
126
- vars.push(`const ${args[i]} = (await ethers.getSigners())[${i}].address;`);
127
- }
128
- return vars;
179
+ getTest(c, opts) {
180
+ return new TestGenerator(this).getContent(c, opts);
129
181
  }
130
- };
131
- function getAddressArgs(c) {
132
- const args = [];
133
- for (const constructorArg of c.constructorArgs) {
134
- if (constructorArg.type === 'address') {
135
- args.push(constructorArg.name);
136
- }
182
+ getDeploymentCall(c, args) {
183
+ // TODO: remove that selector when the upgrades plugin supports @custom:oz-upgrades-unsafe-allow-reachable
184
+ const unsafeAllowConstructor = c.parents.find(p => ['EIP712'].includes(p.contract.name)) !== undefined;
185
+ return !c.upgradeable
186
+ ? `ContractFactory.deploy(${args.join(', ')})`
187
+ : unsafeAllowConstructor
188
+ ? `upgrades.deployProxy(ContractFactory, [${args.join(', ')}], { unsafeAllow: ['constructor'] })`
189
+ : `upgrades.deployProxy(ContractFactory, [${args.join(', ')}])`;
137
190
  }
138
- return args;
139
- }
140
- function getDeploymentCall(c, args) {
141
- // TODO: remove that selector when the upgrades plugin supports @custom:oz-upgrades-unsafe-allow-reachable
142
- const unsafeAllowConstructor = c.parents.find(p => ['EIP712'].includes(p.contract.name)) !== undefined;
143
- return !c.upgradeable
144
- ? `ContractFactory.deploy(${args.join(', ')})`
145
- : unsafeAllowConstructor
146
- ? `upgrades.deployProxy(ContractFactory, [${args.join(', ')}], { unsafeAllow: 'constructor' })`
147
- : `upgrades.deployProxy(ContractFactory, [${args.join(', ')}])`;
148
- }
149
- const script = (c) => {
150
- const args = getAddressArgs(c);
151
- return `\
152
- import { ${getHardhatPlugins(c).join(', ')} } from "hardhat";
191
+ getScript(c) {
192
+ return `\
193
+ import { ${this.getHardhatPlugins(c).join(', ')} } from "hardhat";
153
194
 
154
195
  async function main() {
155
196
  const ContractFactory = await ethers.getContractFactory("${c.name}");
156
197
 
157
- ${args.length > 0 ? '// TODO: Set addresses for the contract arguments below' : ''}
158
- const instance = await ${getDeploymentCall(c, args)};
198
+ ${c.constructorArgs.length > 0 ? '// TODO: Set values for the constructor arguments below' : ''}
199
+ const instance = await ${this.getDeploymentCall(c, c.constructorArgs.map(a => a.name))};
159
200
  await instance.waitForDeployment();
160
201
 
161
202
  console.log(\`${c.upgradeable ? 'Proxy' : 'Contract'} deployed to \${await instance.getAddress()}\`);
@@ -168,34 +209,42 @@ main().catch((error) => {
168
209
  process.exitCode = 1;
169
210
  });
170
211
  `;
171
- };
172
- const lowerFirstCharacter = (str) => str.charAt(0).toLowerCase() + str.slice(1);
173
- const ignitionModule = (c) => {
174
- const deployArguments = getAddressArgs(c);
175
- const contractVariableName = lowerFirstCharacter(c.name);
176
- return `import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
212
+ }
213
+ lowerFirstCharacter(str) {
214
+ return str.charAt(0).toLowerCase() + str.slice(1);
215
+ }
216
+ getIgnitionModule(c) {
217
+ const contractVariableName = this.lowerFirstCharacter(c.name);
218
+ return `import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
177
219
 
178
220
  export default buildModule("${c.name}Module", (m) => {
179
221
 
180
- ${deployArguments.length > 0 ? '// TODO: Set addresses for the contract arguments below' : ''}
181
- const ${contractVariableName} = m.contract("${c.name}", [${deployArguments.join(', ')}]);
222
+ ${c.constructorArgs.length > 0 ? '// TODO: Set values for the constructor arguments below' : ''}
223
+ const ${contractVariableName} = m.contract("${c.name}", [${c.constructorArgs.map(a => a.name).join(', ')}]);
182
224
 
183
225
  return { ${contractVariableName} };
184
226
  });
185
227
  `;
186
- };
187
- const readme = (c) => `\
228
+ }
229
+ getReadmeTestingEnvironmentSetupSection() {
230
+ return '';
231
+ }
232
+ getReadmePrerequisitesSection() {
233
+ return '';
234
+ }
235
+ getReadme(c) {
236
+ return `\
188
237
  # Sample Hardhat Project
189
238
 
190
239
  This project demonstrates a basic Hardhat use case. It comes with a contract generated by [OpenZeppelin Wizard](https://wizard.openzeppelin.com/), a test for that contract, ${c.upgradeable ? 'and a script that deploys that contract' : 'and a Hardhat Ignition module that deploys that contract'}.
191
240
 
192
- ## Installing dependencies
241
+ ${this.getReadmePrerequisitesSection()}## Installing dependencies
193
242
 
194
243
  \`\`\`
195
244
  npm install
196
245
  \`\`\`
197
246
 
198
- ## Testing the contract
247
+ ${this.getReadmeTestingEnvironmentSetupSection()}## Testing the contract
199
248
 
200
249
  \`\`\`
201
250
  npm test
@@ -209,37 +258,54 @@ You can target any network from your Hardhat config using:
209
258
  ${c.upgradeable ? 'npx hardhat run --network <network-name> scripts/deploy.ts' : `npx hardhat ignition deploy ignition/modules/${c.name}.ts --network <network-name>`}
210
259
  \`\`\`
211
260
  `;
212
- function getHardhatPlugins(c) {
213
- const plugins = ['ethers'];
214
- if (c.upgradeable) {
215
- plugins.push('upgrades');
216
261
  }
217
- return plugins;
262
+ getHardhatPlugins(c) {
263
+ const plugins = ['ethers'];
264
+ if (c.upgradeable) {
265
+ plugins.push('upgrades');
266
+ }
267
+ return plugins;
268
+ }
269
+ async getPackageJson(c) {
270
+ const { default: packageJson } = c.upgradeable
271
+ ? await Promise.resolve().then(() => __importStar(require('./environments/hardhat/upgradeable/package.json')))
272
+ : await Promise.resolve().then(() => __importStar(require('./environments/hardhat/package.json')));
273
+ packageJson.license = c.license;
274
+ return packageJson;
275
+ }
276
+ async getPackageLock(c) {
277
+ const { default: packageLock } = c.upgradeable
278
+ ? await Promise.resolve().then(() => __importStar(require('./environments/hardhat/upgradeable/package-lock.json')))
279
+ : await Promise.resolve().then(() => __importStar(require('./environments/hardhat/package-lock.json')));
280
+ packageLock.packages[''].license = c.license;
281
+ return packageLock;
282
+ }
283
+ getPrintContract(c) {
284
+ return (0, print_1.printContract)(c);
285
+ }
286
+ async zipHardhat(c, opts) {
287
+ const zip = new jszip_1.default();
288
+ const packageJson = await this.getPackageJson(c);
289
+ const packageLock = await this.getPackageLock(c);
290
+ zip.file(`contracts/${c.name}.sol`, this.getPrintContract(c));
291
+ zip.file('test/test.ts', this.getTest(c, opts));
292
+ if (c.upgradeable) {
293
+ zip.file('scripts/deploy.ts', this.getScript(c));
294
+ }
295
+ else {
296
+ zip.file(`ignition/modules/${c.name}.ts`, this.getIgnitionModule(c));
297
+ }
298
+ zip.file('.gitignore', this.getGitIgnore());
299
+ zip.file('hardhat.config.ts', this.getHardhatConfig(c.upgradeable));
300
+ zip.file('package.json', JSON.stringify(packageJson, null, 2));
301
+ zip.file(`package-lock.json`, JSON.stringify(packageLock, null, 2));
302
+ zip.file('README.md', this.getReadme(c));
303
+ zip.file('tsconfig.json', this.getTsConfig());
304
+ return zip;
305
+ }
218
306
  }
307
+ exports.HardhatZipGenerator = HardhatZipGenerator;
219
308
  async function zipHardhat(c, opts) {
220
- const zip = new jszip_1.default();
221
- const { default: packageJson } = c.upgradeable
222
- ? await Promise.resolve().then(() => __importStar(require('./environments/hardhat/upgradeable/package.json')))
223
- : await Promise.resolve().then(() => __importStar(require('./environments/hardhat/package.json')));
224
- packageJson.license = c.license;
225
- const { default: packageLock } = c.upgradeable
226
- ? await Promise.resolve().then(() => __importStar(require('./environments/hardhat/upgradeable/package-lock.json')))
227
- : await Promise.resolve().then(() => __importStar(require('./environments/hardhat/package-lock.json')));
228
- packageLock.packages[''].license = c.license;
229
- zip.file(`contracts/${c.name}.sol`, (0, print_1.printContract)(c));
230
- zip.file('test/test.ts', test(c, opts));
231
- if (c.upgradeable) {
232
- zip.file('scripts/deploy.ts', script(c));
233
- }
234
- else {
235
- zip.file(`ignition/modules/${c.name}.ts`, ignitionModule(c));
236
- }
237
- zip.file('.gitignore', gitIgnore);
238
- zip.file('hardhat.config.ts', hardhatConfig(c.upgradeable));
239
- zip.file('package.json', JSON.stringify(packageJson, null, 2));
240
- zip.file(`package-lock.json`, JSON.stringify(packageLock, null, 2));
241
- zip.file('README.md', readme(c));
242
- zip.file('tsconfig.json', tsConfig);
243
- return zip;
309
+ return new HardhatZipGenerator().zipHardhat(c, opts);
244
310
  }
245
311
  //# sourceMappingURL=zip-hardhat.js.map
@@ -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.10.3",
3
+ "version": "0.10.5",
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",
@@ -12,7 +12,7 @@
12
12
  "/dist",
13
13
  "/src",
14
14
  "openzeppelin-contracts-version.json",
15
- "openzeppelin-contracts-version.d.ts",
15
+ "openzeppelin-contracts-version.json.d.ts",
16
16
  "!**/*.test.*"
17
17
  ],
18
18
  "scripts": {
package/src/contract.ts CHANGED
@@ -4,7 +4,9 @@ export interface Contract {
4
4
  name: string;
5
5
  license: string;
6
6
  parents: Parent[];
7
+ topLevelComments: string[];
7
8
  natspecTags: NatspecTag[];
9
+ libraries: Library[];
8
10
  imports: ImportContract[];
9
11
  functions: ContractFunction[];
10
12
  structs: ContractStruct[];
@@ -20,6 +22,7 @@ export interface Parent {
20
22
  contract: ImportContract;
21
23
  params: Value[];
22
24
  importOnly?: boolean;
25
+ constructionOnly?: boolean;
23
26
  }
24
27
 
25
28
  export interface ImportContract extends ReferencedContract {
@@ -31,9 +34,9 @@ export interface ReferencedContract {
31
34
  transpiled?: boolean;
32
35
  }
33
36
 
34
- export interface Using {
37
+ export interface Library {
35
38
  library: ImportContract;
36
- usingFor: string;
39
+ usingFor: Set<string>;
37
40
  }
38
41
 
39
42
  export interface BaseFunction {
@@ -53,13 +56,13 @@ export interface ContractFunction extends BaseFunction {
53
56
  comments: string[];
54
57
  }
55
58
 
59
+ export type FunctionKind = 'private' | 'internal' | 'public' | 'external';
56
60
  export interface ContractStruct {
57
61
  name: string;
58
62
  comments: string[];
59
63
  variables: string[];
60
64
  }
61
65
 
62
- export type FunctionKind = 'internal' | 'public' | 'private';
63
66
  export type FunctionMutability = (typeof mutabilityRank)[number];
64
67
 
65
68
  // Order is important
@@ -89,7 +92,7 @@ export class ContractBuilder implements Contract {
89
92
  license: string = 'MIT';
90
93
  upgradeable = false;
91
94
 
92
- readonly using: Using[] = [];
95
+ readonly topLevelComments: string[] = [];
93
96
  readonly natspecTags: NatspecTag[] = [];
94
97
 
95
98
  readonly constructorArgs: FunctionArgument[] = [];
@@ -97,6 +100,7 @@ export class ContractBuilder implements Contract {
97
100
 
98
101
  readonly variableOrErrorMap: Map<string, VariableOrErrorDefinition> = new Map<string, VariableOrErrorDefinition>();
99
102
  private parentMap: Map<string, Parent> = new Map<string, Parent>();
103
+ private libraryMap: Map<string, Library> = new Map<string, Library>();
100
104
  private functionMap: Map<string, ContractFunction> = new Map();
101
105
  private structMap: Map<string, ContractStruct> = new Map();
102
106
 
@@ -119,7 +123,13 @@ export class ContractBuilder implements Contract {
119
123
  }
120
124
 
121
125
  get imports(): ImportContract[] {
122
- return [...[...this.parentMap.values()].map(p => p.contract), ...this.using.map(u => u.library)];
126
+ const parents = [...this.parentMap.values()].map(p => p.contract);
127
+ const libraries = [...this.libraryMap.values()].map(l => l.library);
128
+ return [...parents, ...libraries];
129
+ }
130
+
131
+ get libraries(): Library[] {
132
+ return [...this.libraryMap.values()];
123
133
  }
124
134
 
125
135
  get functions(): ContractFunction[] {
@@ -134,20 +144,41 @@ export class ContractBuilder implements Contract {
134
144
  return [...this.variableOrErrorMap.values()];
135
145
  }
136
146
 
137
- addParent(contract: ImportContract, params: Value[] = []): boolean {
147
+ private updateParentMap(
148
+ contract: ImportContract,
149
+ params: Value[] = [],
150
+ flags: Partial<Pick<Parent, 'importOnly' | 'constructionOnly'>> = {},
151
+ ): boolean {
138
152
  const present = this.parentMap.has(contract.name);
139
- this.parentMap.set(contract.name, { contract, params });
153
+ this.parentMap = new Map(this.parentMap).set(contract.name, { contract, params, ...flags });
140
154
  return !present;
141
155
  }
142
156
 
157
+ addParent(contract: ImportContract, params: Value[] = []): boolean {
158
+ return this.updateParentMap(contract, params);
159
+ }
160
+
143
161
  addImportOnly(contract: ImportContract): boolean {
144
- const present = this.parentMap.has(contract.name);
145
- this.parentMap.set(contract.name, {
146
- contract,
147
- params: [],
148
- importOnly: true,
149
- });
150
- return !present;
162
+ return this.updateParentMap(contract, [], { importOnly: true });
163
+ }
164
+
165
+ addConstructionOnly(contract: ImportContract, params: Value[] = []): boolean {
166
+ return this.updateParentMap(contract, params, { constructionOnly: true });
167
+ }
168
+
169
+ addLibrary(library: ImportContract, usingFor: string[]): boolean {
170
+ let modified = false;
171
+ if (this.libraryMap.has(library.name)) {
172
+ const existing = this.libraryMap.get(library.name)!;
173
+ const initialSize = existing.usingFor.size;
174
+ usingFor.forEach(type => existing.usingFor.add(type));
175
+ modified = existing.usingFor.size > initialSize;
176
+ } else {
177
+ this.libraryMap.set(library.name, { library, usingFor: new Set(usingFor) });
178
+ modified = true;
179
+ }
180
+
181
+ return modified;
151
182
  }
152
183
 
153
184
  addOverride(parent: ReferencedContract, baseFn: BaseFunction, mutability?: FunctionMutability) {
@@ -163,6 +194,10 @@ export class ContractBuilder implements Contract {
163
194
  fn.modifiers.push(modifier);
164
195
  }
165
196
 
197
+ addTopLevelComment(comment: string) {
198
+ this.topLevelComments.push(comment);
199
+ }
200
+
166
201
  addNatspecTag(key: string, value: string) {
167
202
  // eslint-disable-next-line no-useless-escape
168
203
  if (!/^(@custom:)?[a-z][a-z\-]*$/.exec(key)) throw new Error(`Invalid natspec key: ${key}`);