@openzeppelin/wizard 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -1
- package/dist/add-pausable.d.ts.map +1 -1
- package/dist/add-pausable.js +2 -2
- package/dist/add-pausable.js.map +1 -1
- package/dist/api.d.ts +8 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +15 -5
- package/dist/api.js.map +1 -1
- package/dist/build-generic.d.ts +4 -0
- package/dist/build-generic.d.ts.map +1 -1
- package/dist/build-generic.js +3 -0
- package/dist/build-generic.js.map +1 -1
- package/dist/common-options.js +2 -2
- package/dist/common-options.js.map +1 -1
- package/dist/custom.d.ts +11 -0
- package/dist/custom.d.ts.map +1 -0
- package/dist/custom.js +47 -0
- package/dist/custom.js.map +1 -0
- package/dist/environments/hardhat/package-lock.json +14913 -0
- package/dist/environments/hardhat/package.json +34 -0
- package/dist/environments/hardhat/upgradeable/package-lock.json +15333 -0
- package/dist/environments/hardhat/upgradeable/package.json +35 -0
- package/dist/erc1155.d.ts +2 -0
- package/dist/erc1155.d.ts.map +1 -1
- package/dist/erc1155.js +16 -7
- package/dist/erc1155.js.map +1 -1
- package/dist/erc20.d.ts +1 -0
- package/dist/erc20.d.ts.map +1 -1
- package/dist/erc20.js +8 -3
- package/dist/erc20.js.map +1 -1
- package/dist/erc721.d.ts +1 -0
- package/dist/erc721.d.ts.map +1 -1
- package/dist/erc721.js +9 -2
- package/dist/erc721.js.map +1 -1
- package/dist/generate/custom.d.ts +3 -0
- package/dist/generate/custom.d.ts.map +1 -0
- package/dist/generate/custom.js +20 -0
- package/dist/generate/custom.js.map +1 -0
- package/dist/generate/erc1155.d.ts.map +1 -1
- package/dist/generate/erc1155.js +1 -0
- package/dist/generate/erc1155.js.map +1 -1
- package/dist/generate/sources.d.ts.map +1 -1
- package/dist/generate/sources.js +5 -1
- package/dist/generate/sources.js.map +1 -1
- package/dist/governor.d.ts +1 -0
- package/dist/governor.d.ts.map +1 -1
- package/dist/governor.js +8 -2
- package/dist/governor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/kind.js +1 -0
- package/dist/kind.js.map +1 -1
- package/dist/print.d.ts.map +1 -1
- package/dist/print.js +21 -14
- package/dist/print.js.map +1 -1
- package/dist/set-access-control.d.ts +9 -2
- package/dist/set-access-control.d.ts.map +1 -1
- package/dist/set-access-control.js +27 -6
- package/dist/set-access-control.js.map +1 -1
- package/dist/set-upgradeable.d.ts.map +1 -1
- package/dist/set-upgradeable.js +1 -1
- package/dist/set-upgradeable.js.map +1 -1
- package/dist/solidity-version.json +1 -0
- package/dist/test.js +30 -1
- package/dist/test.js.map +1 -1
- package/dist/utils/format-lines.d.ts +1 -0
- package/dist/utils/format-lines.d.ts.map +1 -1
- package/dist/utils/format-lines.js +9 -5
- package/dist/utils/format-lines.js.map +1 -1
- package/dist/zip-hardhat.d.ts +5 -0
- package/dist/zip-hardhat.d.ts.map +1 -0
- package/dist/zip-hardhat.js +187 -0
- package/dist/zip-hardhat.js.map +1 -0
- package/dist/zip.js +1 -1
- package/dist/zip.js.map +1 -1
- package/package.json +8 -6
- package/src/add-pausable.ts +3 -3
- package/src/api.ts +25 -8
- package/src/build-generic.ts +5 -0
- package/src/common-options.ts +2 -2
- package/src/custom.ts +55 -0
- package/src/environments/hardhat/package-lock.json +14913 -0
- package/src/environments/hardhat/package.json +34 -0
- package/src/environments/hardhat/upgradeable/package-lock.json +15333 -0
- package/src/environments/hardhat/upgradeable/package.json +35 -0
- package/src/erc1155.ts +17 -7
- package/src/erc20.ts +8 -4
- package/src/erc721.ts +9 -3
- package/src/generate/custom.ts +19 -0
- package/src/generate/erc1155.ts +1 -0
- package/src/generate/sources.ts +6 -1
- package/src/governor.ts +7 -2
- package/src/index.ts +1 -1
- package/src/kind.ts +1 -0
- package/src/print.ts +18 -14
- package/src/set-access-control.ts +27 -4
- package/src/set-upgradeable.ts +2 -2
- package/src/solidity-version.json +1 -0
- package/src/test.ts +34 -2
- package/src/utils/format-lines.ts +8 -3
- package/src/zip-hardhat.ts +186 -0
- package/src/zip.ts +1 -1
- package/dist/contract.test.d.ts +0 -2
- package/dist/contract.test.d.ts.map +0 -1
- package/dist/contract.test.js +0 -147
- package/dist/contract.test.js.map +0 -1
- package/dist/erc1155.test.d.ts +0 -2
- package/dist/erc1155.test.d.ts.map +0 -1
- package/dist/erc1155.test.js +0 -80
- package/dist/erc1155.test.js.map +0 -1
- package/dist/erc20.test.d.ts +0 -2
- package/dist/erc20.test.d.ts.map +0 -1
- package/dist/erc20.test.js +0 -126
- package/dist/erc20.test.js.map +0 -1
- package/dist/erc721.test.d.ts +0 -2
- package/dist/erc721.test.d.ts.map +0 -1
- package/dist/erc721.test.js +0 -106
- package/dist/erc721.test.js.map +0 -1
- package/dist/general.d.ts +0 -8
- package/dist/general.d.ts.map +0 -1
- package/dist/general.js +0 -22
- package/dist/general.js.map +0 -1
- package/dist/general.test.d.ts +0 -2
- package/dist/general.test.d.ts.map +0 -1
- package/dist/general.test.js +0 -42
- package/dist/general.test.js.map +0 -1
- package/dist/governor.test.d.ts +0 -2
- package/dist/governor.test.d.ts.map +0 -1
- package/dist/governor.test.js +0 -104
- package/dist/governor.test.js.map +0 -1
- package/dist/utils/to-identifier.test.d.ts +0 -2
- package/dist/utils/to-identifier.test.d.ts.map +0 -1
- package/dist/utils/to-identifier.test.js +0 -21
- package/dist/utils/to-identifier.test.js.map +0 -1
- package/dist/zip.test.d.ts +0 -2
- package/dist/zip.test.d.ts.map +0 -1
- package/dist/zip.test.js +0 -37
- package/dist/zip.test.js.map +0 -1
- package/src/contract.test.ts +0 -164
- package/src/contract.test.ts.md +0 -272
- package/src/contract.test.ts.snap +0 -0
- package/src/erc1155.test.ts +0 -90
- package/src/erc1155.test.ts.md +0 -416
- package/src/erc1155.test.ts.snap +0 -0
- package/src/erc20.test.ts +0 -144
- package/src/erc20.test.ts.md +0 -571
- package/src/erc20.test.ts.snap +0 -0
- package/src/erc721.test.ts +0 -122
- package/src/erc721.test.ts.md +0 -517
- package/src/erc721.test.ts.snap +0 -0
- package/src/governor.test.ts +0 -120
- package/src/governor.test.ts.md +0 -1419
- package/src/governor.test.ts.snap +0 -0
- package/src/utils/to-identifier.test.ts +0 -20
- package/src/zip.test.ts +0 -35
package/src/api.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { CommonOptions } from './common-options';
|
|
2
|
-
import { printERC20, defaults as erc20defaults, ERC20Options } from './erc20';
|
|
3
|
-
import { printERC721, defaults as erc721defaults, ERC721Options } from './erc721';
|
|
4
|
-
import { printERC1155, defaults as erc1155defaults, ERC1155Options } from './erc1155';
|
|
5
|
-
import { printGovernor, defaults as governorDefaults, GovernorOptions } from './governor';
|
|
2
|
+
import { printERC20, defaults as erc20defaults, isAccessControlRequired as erc20IsAccessControlRequired, ERC20Options } from './erc20';
|
|
3
|
+
import { printERC721, defaults as erc721defaults, isAccessControlRequired as erc721IsAccessControlRequired, ERC721Options } from './erc721';
|
|
4
|
+
import { printERC1155, defaults as erc1155defaults, isAccessControlRequired as erc1155IsAccessControlRequired, ERC1155Options } from './erc1155';
|
|
5
|
+
import { printGovernor, defaults as governorDefaults, isAccessControlRequired as governorIsAccessControlRequired, GovernorOptions } from './governor';
|
|
6
|
+
import { printCustom, defaults as customDefaults, isAccessControlRequired as customIsAccessControlRequired, CustomOptions } from './custom';
|
|
6
7
|
|
|
7
8
|
export interface WizardContractAPI<Options extends CommonOptions> {
|
|
8
9
|
/**
|
|
@@ -14,26 +15,42 @@ export interface WizardContractAPI<Options extends CommonOptions> {
|
|
|
14
15
|
* The default options that are used for `print`.
|
|
15
16
|
*/
|
|
16
17
|
defaults: Required<Options>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Whether any of the provided options require access control to be enabled. If this returns `true`, then calling `print` with the
|
|
21
|
+
* same options would cause the `access` option to default to `'ownable'` if it was `undefined` or `false`.
|
|
22
|
+
*/
|
|
23
|
+
isAccessControlRequired: (opts: Partial<Options>) => boolean,
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
export type ERC20 = WizardContractAPI<ERC20Options>;
|
|
20
27
|
export type ERC721 = WizardContractAPI<ERC721Options>;
|
|
21
28
|
export type ERC1155 = WizardContractAPI<ERC1155Options>;
|
|
22
29
|
export type Governor = WizardContractAPI<GovernorOptions>;
|
|
30
|
+
export type Custom = WizardContractAPI<CustomOptions>;
|
|
23
31
|
|
|
24
32
|
export const erc20: ERC20 = {
|
|
25
33
|
print: printERC20,
|
|
26
|
-
defaults: erc20defaults
|
|
34
|
+
defaults: erc20defaults,
|
|
35
|
+
isAccessControlRequired: erc20IsAccessControlRequired
|
|
27
36
|
}
|
|
28
37
|
export const erc721: ERC721 = {
|
|
29
38
|
print: printERC721,
|
|
30
|
-
defaults: erc721defaults
|
|
39
|
+
defaults: erc721defaults,
|
|
40
|
+
isAccessControlRequired: erc721IsAccessControlRequired
|
|
31
41
|
}
|
|
32
42
|
export const erc1155: ERC1155 = {
|
|
33
43
|
print: printERC1155,
|
|
34
|
-
defaults: erc1155defaults
|
|
44
|
+
defaults: erc1155defaults,
|
|
45
|
+
isAccessControlRequired: erc1155IsAccessControlRequired
|
|
35
46
|
}
|
|
36
47
|
export const governor: Governor = {
|
|
37
48
|
print: printGovernor,
|
|
38
|
-
defaults: governorDefaults
|
|
49
|
+
defaults: governorDefaults,
|
|
50
|
+
isAccessControlRequired: governorIsAccessControlRequired
|
|
51
|
+
}
|
|
52
|
+
export const custom: Custom = {
|
|
53
|
+
print: printCustom,
|
|
54
|
+
defaults: customDefaults,
|
|
55
|
+
isAccessControlRequired: customIsAccessControlRequired
|
|
39
56
|
}
|
package/src/build-generic.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CustomOptions, buildCustom } from './custom';
|
|
1
2
|
import { ERC20Options, buildERC20 } from './erc20';
|
|
2
3
|
import { ERC721Options, buildERC721 } from './erc721';
|
|
3
4
|
import { ERC1155Options, buildERC1155 } from './erc1155';
|
|
@@ -8,6 +9,7 @@ export interface KindedOptions {
|
|
|
8
9
|
ERC721: { kind: 'ERC721' } & ERC721Options;
|
|
9
10
|
ERC1155: { kind: 'ERC1155' } & ERC1155Options;
|
|
10
11
|
Governor: { kind: 'Governor' } & GovernorOptions;
|
|
12
|
+
Custom: { kind: 'Custom' } & CustomOptions;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
export type GenericOptions = KindedOptions[keyof KindedOptions];
|
|
@@ -26,6 +28,9 @@ export function buildGeneric(opts: GenericOptions) {
|
|
|
26
28
|
case 'Governor':
|
|
27
29
|
return buildGovernor(opts);
|
|
28
30
|
|
|
31
|
+
case 'Custom':
|
|
32
|
+
return buildCustom(opts);
|
|
33
|
+
|
|
29
34
|
default:
|
|
30
35
|
const _: never = opts;
|
|
31
36
|
throw new Error('Unknown ERC');
|
package/src/common-options.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { defaults as infoDefaults } from "./set-info";
|
|
|
4
4
|
import type { Upgradeable } from "./set-upgradeable";
|
|
5
5
|
|
|
6
6
|
export const defaults: Required<CommonOptions> = {
|
|
7
|
-
access:
|
|
7
|
+
access: false,
|
|
8
8
|
upgradeable: false,
|
|
9
9
|
info: infoDefaults,
|
|
10
10
|
} as const;
|
|
@@ -17,7 +17,7 @@ export interface CommonOptions {
|
|
|
17
17
|
|
|
18
18
|
export function withCommonDefaults(opts: CommonOptions): Required<CommonOptions> {
|
|
19
19
|
return {
|
|
20
|
-
access: opts.access ??
|
|
20
|
+
access: opts.access ?? false,
|
|
21
21
|
upgradeable: opts.upgradeable ?? false,
|
|
22
22
|
info: opts.info ?? {},
|
|
23
23
|
};
|
package/src/custom.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Contract, ContractBuilder } from './contract';
|
|
2
|
+
import { CommonOptions, withCommonDefaults, defaults as commonDefaults } from './common-options';
|
|
3
|
+
import { setUpgradeable } from './set-upgradeable';
|
|
4
|
+
import { setInfo } from './set-info';
|
|
5
|
+
import { setAccessControl } from './set-access-control';
|
|
6
|
+
import { addPausable } from './add-pausable';
|
|
7
|
+
import { printContract } from './print';
|
|
8
|
+
|
|
9
|
+
export interface CustomOptions extends CommonOptions {
|
|
10
|
+
name: string;
|
|
11
|
+
pausable?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const defaults: Required<CustomOptions> = {
|
|
15
|
+
name: 'MyContract',
|
|
16
|
+
pausable: false,
|
|
17
|
+
access: commonDefaults.access,
|
|
18
|
+
upgradeable: commonDefaults.upgradeable,
|
|
19
|
+
info: commonDefaults.info,
|
|
20
|
+
} as const;
|
|
21
|
+
|
|
22
|
+
function withDefaults(opts: CustomOptions): Required<CustomOptions> {
|
|
23
|
+
return {
|
|
24
|
+
...opts,
|
|
25
|
+
...withCommonDefaults(opts),
|
|
26
|
+
pausable: opts.pausable ?? defaults.pausable,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function printCustom(opts: CustomOptions = defaults): string {
|
|
31
|
+
return printContract(buildCustom(opts));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function isAccessControlRequired(opts: Partial<CustomOptions>): boolean {
|
|
35
|
+
return opts.pausable || opts.upgradeable === 'uups';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function buildCustom(opts: CustomOptions): Contract {
|
|
39
|
+
const allOpts = withDefaults(opts);
|
|
40
|
+
|
|
41
|
+
const c = new ContractBuilder(allOpts.name);
|
|
42
|
+
|
|
43
|
+
const { access, upgradeable, info } = allOpts;
|
|
44
|
+
|
|
45
|
+
if (allOpts.pausable) {
|
|
46
|
+
addPausable(c, access, []);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
setAccessControl(c, access);
|
|
50
|
+
setUpgradeable(c, upgradeable, access);
|
|
51
|
+
setInfo(c, info);
|
|
52
|
+
|
|
53
|
+
return c;
|
|
54
|
+
}
|
|
55
|
+
|