@openzeppelin/wizard 0.1.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 +82 -0
- package/dist/add-pausable.d.ts +4 -0
- package/dist/add-pausable.d.ts.map +1 -0
- package/dist/add-pausable.js +30 -0
- package/dist/add-pausable.js.map +1 -0
- package/dist/api.d.ts +24 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +24 -0
- package/dist/api.js.map +1 -0
- package/dist/build-generic.d.ts +21 -0
- package/dist/build-generic.d.ts.map +1 -0
- package/dist/build-generic.js +24 -0
- package/dist/build-generic.js.map +1 -0
- package/dist/common-functions.d.ts +3 -0
- package/dist/common-functions.d.ts.map +1 -0
- package/dist/common-functions.js +13 -0
- package/dist/common-functions.js.map +1 -0
- package/dist/common-options.d.ts +11 -0
- package/dist/common-options.d.ts.map +1 -0
- package/dist/common-options.js +19 -0
- package/dist/common-options.js.map +1 -0
- package/dist/contract.d.ts +86 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +125 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.test.d.ts +2 -0
- package/dist/contract.test.d.ts.map +1 -0
- package/dist/contract.test.js +147 -0
- package/dist/contract.test.js.map +1 -0
- package/dist/erc1155.d.ts +14 -0
- package/dist/erc1155.d.ts.map +1 -0
- package/dist/erc1155.js +130 -0
- package/dist/erc1155.js.map +1 -0
- package/dist/erc1155.test.d.ts +2 -0
- package/dist/erc1155.test.d.ts.map +1 -0
- package/dist/erc1155.test.js +80 -0
- package/dist/erc1155.test.js.map +1 -0
- package/dist/erc20.d.ts +19 -0
- package/dist/erc20.d.ts.map +1 -0
- package/dist/erc20.js +202 -0
- package/dist/erc20.js.map +1 -0
- package/dist/erc20.test.d.ts +2 -0
- package/dist/erc20.test.d.ts.map +1 -0
- package/dist/erc20.test.js +126 -0
- package/dist/erc20.test.js.map +1 -0
- package/dist/erc721.d.ts +18 -0
- package/dist/erc721.d.ts.map +1 -0
- package/dist/erc721.js +200 -0
- package/dist/erc721.js.map +1 -0
- package/dist/erc721.test.d.ts +2 -0
- package/dist/erc721.test.d.ts.map +1 -0
- package/dist/erc721.test.js +106 -0
- package/dist/erc721.test.js.map +1 -0
- package/dist/error.d.ts +8 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +11 -0
- package/dist/error.js.map +1 -0
- package/dist/general.d.ts +8 -0
- package/dist/general.d.ts.map +1 -0
- package/dist/general.js +22 -0
- package/dist/general.js.map +1 -0
- package/dist/general.test.d.ts +2 -0
- package/dist/general.test.d.ts.map +1 -0
- package/dist/general.test.js +42 -0
- package/dist/general.test.js.map +1 -0
- package/dist/generate/alternatives.d.ts +7 -0
- package/dist/generate/alternatives.d.ts.map +1 -0
- package/dist/generate/alternatives.js +29 -0
- package/dist/generate/alternatives.js.map +1 -0
- package/dist/generate/erc1155.d.ts +3 -0
- package/dist/generate/erc1155.d.ts.map +1 -0
- package/dist/generate/erc1155.js +24 -0
- package/dist/generate/erc1155.js.map +1 -0
- package/dist/generate/erc20.d.ts +3 -0
- package/dist/generate/erc20.d.ts.map +1 -0
- package/dist/generate/erc20.js +28 -0
- package/dist/generate/erc20.js.map +1 -0
- package/dist/generate/erc721.d.ts +3 -0
- package/dist/generate/erc721.d.ts.map +1 -0
- package/dist/generate/erc721.js +28 -0
- package/dist/generate/erc721.js.map +1 -0
- package/dist/generate/governor.d.ts +3 -0
- package/dist/generate/governor.d.ts.map +1 -0
- package/dist/generate/governor.js +32 -0
- package/dist/generate/governor.js.map +1 -0
- package/dist/generate/sources.d.ts +16 -0
- package/dist/generate/sources.d.ts.map +1 -0
- package/dist/generate/sources.js +79 -0
- package/dist/generate/sources.js.map +1 -0
- package/dist/governor.d.ts +26 -0
- package/dist/governor.d.ts.map +1 -0
- package/dist/governor.js +386 -0
- package/dist/governor.js.map +1 -0
- package/dist/governor.test.d.ts +2 -0
- package/dist/governor.test.d.ts.map +1 -0
- package/dist/governor.test.js +104 -0
- package/dist/governor.test.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/kind.d.ts +4 -0
- package/dist/kind.d.ts.map +1 -0
- package/dist/kind.js +28 -0
- package/dist/kind.js.map +1 -0
- package/dist/options.d.ts +11 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +40 -0
- package/dist/options.js.map +1 -0
- package/dist/print-versioned.d.ts +3 -0
- package/dist/print-versioned.d.ts.map +1 -0
- package/dist/print-versioned.js +12 -0
- package/dist/print-versioned.js.map +1 -0
- package/dist/print.d.ts +6 -0
- package/dist/print.d.ts.map +1 -0
- package/dist/print.js +182 -0
- package/dist/print.js.map +1 -0
- package/dist/scripts/prepare.d.ts +2 -0
- package/dist/scripts/prepare.d.ts.map +1 -0
- package/dist/scripts/prepare.js +52 -0
- package/dist/scripts/prepare.js.map +1 -0
- package/dist/set-access-control.d.ts +5 -0
- package/dist/set-access-control.d.ts.map +1 -0
- package/dist/set-access-control.js +38 -0
- package/dist/set-access-control.js.map +1 -0
- package/dist/set-info.d.ts +13 -0
- package/dist/set-info.d.ts.map +1 -0
- package/dist/set-info.js +17 -0
- package/dist/set-info.js.map +1 -0
- package/dist/set-upgradeable.d.ts +6 -0
- package/dist/set-upgradeable.d.ts.map +1 -0
- package/dist/set-upgradeable.js +43 -0
- package/dist/set-upgradeable.js.map +1 -0
- package/dist/test.d.ts +2 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +23 -0
- package/dist/test.js.map +1 -0
- package/dist/utils/define-functions.d.ts +5 -0
- package/dist/utils/define-functions.d.ts.map +1 -0
- package/dist/utils/define-functions.js +11 -0
- package/dist/utils/define-functions.js.map +1 -0
- package/dist/utils/duration.d.ts +3 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +31 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/find-cover.d.ts +2 -0
- package/dist/utils/find-cover.d.ts.map +1 -0
- package/dist/utils/find-cover.js +23 -0
- package/dist/utils/find-cover.js.map +1 -0
- package/dist/utils/format-lines.d.ts +7 -0
- package/dist/utils/format-lines.d.ts.map +1 -0
- package/dist/utils/format-lines.js +30 -0
- package/dist/utils/format-lines.js.map +1 -0
- package/dist/utils/map-values.d.ts +2 -0
- package/dist/utils/map-values.d.ts.map +1 -0
- package/dist/utils/map-values.js +12 -0
- package/dist/utils/map-values.js.map +1 -0
- package/dist/utils/sorted-by.d.ts +2 -0
- package/dist/utils/sorted-by.d.ts.map +1 -0
- package/dist/utils/sorted-by.js +8 -0
- package/dist/utils/sorted-by.js.map +1 -0
- package/dist/utils/to-identifier.d.ts +2 -0
- package/dist/utils/to-identifier.d.ts.map +1 -0
- package/dist/utils/to-identifier.js +12 -0
- package/dist/utils/to-identifier.js.map +1 -0
- package/dist/utils/to-identifier.test.d.ts +2 -0
- package/dist/utils/to-identifier.test.d.ts.map +1 -0
- package/dist/utils/to-identifier.test.js +21 -0
- package/dist/utils/to-identifier.test.js.map +1 -0
- package/dist/utils/transitive-closure.d.ts +5 -0
- package/dist/utils/transitive-closure.d.ts.map +1 -0
- package/dist/utils/transitive-closure.js +27 -0
- package/dist/utils/transitive-closure.js.map +1 -0
- package/dist/zip.d.ts +4 -0
- package/dist/zip.d.ts.map +1 -0
- package/dist/zip.js +48 -0
- package/dist/zip.js.map +1 -0
- package/dist/zip.test.d.ts +2 -0
- package/dist/zip.test.d.ts.map +1 -0
- package/dist/zip.test.js +37 -0
- package/dist/zip.test.js.map +1 -0
- package/package.json +37 -0
- package/src/add-pausable.ts +32 -0
- package/src/api.ts +39 -0
- package/src/build-generic.ts +33 -0
- package/src/common-functions.ts +11 -0
- package/src/common-options.ts +24 -0
- package/src/contract.test.ts +164 -0
- package/src/contract.test.ts.md +272 -0
- package/src/contract.test.ts.snap +0 -0
- package/src/contract.ts +201 -0
- package/src/erc1155.test.ts +90 -0
- package/src/erc1155.test.ts.md +416 -0
- package/src/erc1155.test.ts.snap +0 -0
- package/src/erc1155.ts +160 -0
- package/src/erc20.test.ts +144 -0
- package/src/erc20.test.ts.md +571 -0
- package/src/erc20.test.ts.snap +0 -0
- package/src/erc20.ts +250 -0
- package/src/erc721.test.ts +122 -0
- package/src/erc721.test.ts.md +517 -0
- package/src/erc721.test.ts.snap +0 -0
- package/src/erc721.ts +250 -0
- package/src/error.ts +7 -0
- package/src/generate/alternatives.ts +38 -0
- package/src/generate/erc1155.ts +23 -0
- package/src/generate/erc20.ts +27 -0
- package/src/generate/erc721.ts +27 -0
- package/src/generate/governor.ts +30 -0
- package/src/generate/sources.ts +91 -0
- package/src/governor.test.ts +120 -0
- package/src/governor.test.ts.md +1419 -0
- package/src/governor.test.ts.snap +0 -0
- package/src/governor.ts +445 -0
- package/src/index.ts +23 -0
- package/src/kind.ts +30 -0
- package/src/options.ts +45 -0
- package/src/print-versioned.ts +12 -0
- package/src/print.ts +236 -0
- package/src/scripts/prepare.ts +60 -0
- package/src/set-access-control.ts +39 -0
- package/src/set-info.ts +24 -0
- package/src/set-upgradeable.ts +49 -0
- package/src/test.ts +21 -0
- package/src/utils/define-functions.ts +18 -0
- package/src/utils/duration.ts +34 -0
- package/src/utils/find-cover.ts +26 -0
- package/src/utils/format-lines.ts +31 -0
- package/src/utils/map-values.ts +10 -0
- package/src/utils/sorted-by.ts +3 -0
- package/src/utils/to-identifier.test.ts +20 -0
- package/src/utils/to-identifier.ts +7 -0
- package/src/utils/transitive-closure.ts +27 -0
- package/src/zip.test.ts +35 -0
- package/src/zip.ts +53 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findCover = void 0;
|
|
4
|
+
const sorted_by_1 = require("./sorted-by");
|
|
5
|
+
// Greedy approximation of minimum set cover.
|
|
6
|
+
function findCover(sets, getElements) {
|
|
7
|
+
const sortedSets = (0, sorted_by_1.sortedBy)(sets.map(set => ({ set, elems: getElements(set) })), s => -s.elems.length);
|
|
8
|
+
const seen = new Set();
|
|
9
|
+
const res = [];
|
|
10
|
+
for (const { set, elems } of sortedSets) {
|
|
11
|
+
let included = false;
|
|
12
|
+
for (const e of elems) {
|
|
13
|
+
if (!included && !seen.has(e)) {
|
|
14
|
+
res.push(set);
|
|
15
|
+
included = true;
|
|
16
|
+
}
|
|
17
|
+
seen.add(e);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return res;
|
|
21
|
+
}
|
|
22
|
+
exports.findCover = findCover;
|
|
23
|
+
//# sourceMappingURL=find-cover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-cover.js","sourceRoot":"","sources":["../../src/utils/find-cover.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,6CAA6C;AAE7C,SAAgB,SAAS,CAAmB,IAAS,EAAE,WAAkC;IACvF,MAAM,UAAU,GAAG,IAAA,oBAAQ,EACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EACnD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CACrB,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE;QACvC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AArBD,8BAqBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import 'array.prototype.flatmap/auto';
|
|
2
|
+
export declare type Lines = string | typeof whitespace | Lines[];
|
|
3
|
+
declare const whitespace: unique symbol;
|
|
4
|
+
export declare function formatLines(...lines: Lines[]): string;
|
|
5
|
+
export declare function spaceBetween(...lines: Lines[][]): Lines[];
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=format-lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lines.d.ts","sourceRoot":"","sources":["../../src/utils/format-lines.ts"],"names":[],"mappings":"AAAA,OAAO,8BAA8B,CAAC;AAEtC,oBAAY,KAAK,GAAG,MAAM,GAAG,OAAO,UAAU,GAAG,KAAK,EAAE,CAAC;AAEzD,QAAA,MAAM,UAAU,eAAuB,CAAC;AAExC,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAErD;AAiBD,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,CAKzD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.spaceBetween = exports.formatLines = void 0;
|
|
4
|
+
require("array.prototype.flatmap/auto");
|
|
5
|
+
const whitespace = Symbol('whitespace');
|
|
6
|
+
function formatLines(...lines) {
|
|
7
|
+
return [...indentEach(0, lines)].join('\n') + '\n';
|
|
8
|
+
}
|
|
9
|
+
exports.formatLines = formatLines;
|
|
10
|
+
function* indentEach(indent, lines) {
|
|
11
|
+
for (const line of lines) {
|
|
12
|
+
if (line === whitespace) {
|
|
13
|
+
yield '';
|
|
14
|
+
}
|
|
15
|
+
else if (Array.isArray(line)) {
|
|
16
|
+
yield* indentEach(indent + 1, line);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
yield ' '.repeat(indent) + line;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function spaceBetween(...lines) {
|
|
24
|
+
return lines
|
|
25
|
+
.filter(l => l.length > 0)
|
|
26
|
+
.flatMap(l => [whitespace, ...l])
|
|
27
|
+
.slice(1);
|
|
28
|
+
}
|
|
29
|
+
exports.spaceBetween = spaceBetween;
|
|
30
|
+
//# sourceMappingURL=format-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-lines.js","sourceRoot":"","sources":["../../src/utils/format-lines.ts"],"names":[],"mappings":";;;AAAA,wCAAsC;AAItC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAExC,SAAgB,WAAW,CAAC,GAAG,KAAc;IAC3C,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrD,CAAC;AAFD,kCAEC;AAED,QAAQ,CAAC,CAAC,UAAU,CAClB,MAAc,EACd,KAAc;IAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,IAAI,KAAK,UAAU,EAAE;YACvB,MAAM,EAAE,CAAC;SACV;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;SACrC;aAAM;YACL,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;SACpC;KACF;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,GAAG,KAAgB;IAC9C,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzB,OAAO,CAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AALD,oCAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-values.d.ts","sourceRoot":"","sources":["../../src/utils/map-values.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EACjD,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAChB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAMd"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapValues = void 0;
|
|
4
|
+
function mapValues(obj, fn) {
|
|
5
|
+
const res = {};
|
|
6
|
+
for (const key in obj) {
|
|
7
|
+
res[key] = fn(obj[key]);
|
|
8
|
+
}
|
|
9
|
+
return res;
|
|
10
|
+
}
|
|
11
|
+
exports.mapValues = mapValues;
|
|
12
|
+
//# sourceMappingURL=map-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-values.js","sourceRoot":"","sources":["../../src/utils/map-values.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CACvB,GAAiB,EACjB,EAAiB;IAEjB,MAAM,GAAG,GAAG,EAAkB,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AATD,8BASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorted-by.d.ts","sourceRoot":"","sources":["../../src/utils/sorted-by.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAEtE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sortedBy = void 0;
|
|
4
|
+
function sortedBy(xs, fn) {
|
|
5
|
+
return Array.from(xs).sort((a, b) => fn(a) - fn(b));
|
|
6
|
+
}
|
|
7
|
+
exports.sortedBy = sortedBy;
|
|
8
|
+
//# sourceMappingURL=sorted-by.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorted-by.js","sourceRoot":"","sources":["../../src/utils/sorted-by.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAI,EAAe,EAAE,EAAoB;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAFD,4BAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-identifier.d.ts","sourceRoot":"","sources":["../../src/utils/to-identifier.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAMpE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toIdentifier = void 0;
|
|
4
|
+
function toIdentifier(str, capitalize = false) {
|
|
5
|
+
return str
|
|
6
|
+
.normalize('NFD').replace(/[\u0300-\u036f]/g, '') // remove accents
|
|
7
|
+
.replace(/^[^a-zA-Z$_]+/, '')
|
|
8
|
+
.replace(/^(.)/, c => capitalize ? c.toUpperCase() : c)
|
|
9
|
+
.replace(/[^\w$]+(.?)/g, (_, c) => c.toUpperCase());
|
|
10
|
+
}
|
|
11
|
+
exports.toIdentifier = toIdentifier;
|
|
12
|
+
//# sourceMappingURL=to-identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-identifier.js","sourceRoot":"","sources":["../../src/utils/to-identifier.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAAC,GAAW,EAAE,UAAU,GAAG,KAAK;IAC1D,OAAO,GAAG;SACP,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,iBAAiB;SAClE,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAND,oCAMC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-identifier.test.d.ts","sourceRoot":"","sources":["../../src/utils/to-identifier.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
const ava_1 = __importDefault(require("ava"));
|
|
7
|
+
const to_identifier_1 = require("./to-identifier");
|
|
8
|
+
(0, ava_1.default)('unmodified', t => {
|
|
9
|
+
t.is((0, to_identifier_1.toIdentifier)('abc'), 'abc');
|
|
10
|
+
});
|
|
11
|
+
(0, ava_1.default)('remove leading specials', t => {
|
|
12
|
+
t.is((0, to_identifier_1.toIdentifier)('--abc'), 'abc');
|
|
13
|
+
});
|
|
14
|
+
(0, ava_1.default)('remove specials and upcase next char', t => {
|
|
15
|
+
t.is((0, to_identifier_1.toIdentifier)('abc-def'), 'abcDef');
|
|
16
|
+
t.is((0, to_identifier_1.toIdentifier)('abc--def'), 'abcDef');
|
|
17
|
+
});
|
|
18
|
+
(0, ava_1.default)('capitalize', t => {
|
|
19
|
+
t.is((0, to_identifier_1.toIdentifier)('abc', true), 'Abc');
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=to-identifier.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-identifier.test.js","sourceRoot":"","sources":["../../src/utils/to-identifier.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,mDAA+C;AAE/C,IAAA,aAAI,EAAC,YAAY,EAAE,CAAC,CAAC,EAAE;IACrB,CAAC,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE;IAClC,CAAC,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE;IAC/C,CAAC,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,YAAY,EAAE,CAAC,CAAC,EAAE;IACrB,CAAC,CAAC,EAAE,CAAC,IAAA,4BAAY,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitive-closure.d.ts","sourceRoot":"","sources":["../../src/utils/transitive-closure.ts"],"names":[],"mappings":"AAAA,aAAK,CAAC,GAAG,MAAM,CAAC;AAEhB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAQhF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAcrE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reachable = exports.transitiveClosure = void 0;
|
|
4
|
+
function transitiveClosure(obj) {
|
|
5
|
+
const closure = {};
|
|
6
|
+
for (const key in obj) {
|
|
7
|
+
closure[key] = reachable(obj, key);
|
|
8
|
+
}
|
|
9
|
+
return closure;
|
|
10
|
+
}
|
|
11
|
+
exports.transitiveClosure = transitiveClosure;
|
|
12
|
+
function reachable(obj, key) {
|
|
13
|
+
var _a;
|
|
14
|
+
let prevSize = 0;
|
|
15
|
+
const res = new Set(obj[key]);
|
|
16
|
+
while (prevSize < res.size) {
|
|
17
|
+
prevSize = res.size;
|
|
18
|
+
for (const k of res) {
|
|
19
|
+
for (const v of (_a = obj[k]) !== null && _a !== void 0 ? _a : []) {
|
|
20
|
+
res.add(v);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return res;
|
|
25
|
+
}
|
|
26
|
+
exports.reachable = reachable;
|
|
27
|
+
//# sourceMappingURL=transitive-closure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitive-closure.js","sourceRoot":"","sources":["../../src/utils/transitive-closure.ts"],"names":[],"mappings":";;;AAEA,SAAgB,iBAAiB,CAAC,GAA2B;IAC3D,MAAM,OAAO,GAAG,EAAuB,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AARD,8CAQC;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;QAC1B,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;YACnB,KAAK,MAAM,CAAC,IAAI,MAAA,GAAG,CAAC,CAAC,CAAC,mCAAI,EAAE,EAAE;gBAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACZ;SACF;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAdD,8BAcC"}
|
package/dist/zip.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAA8C,MAAM,YAAY,CAAC;AAsBvF,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CA4B9C"}
|
package/dist/zip.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
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.zipContract = void 0;
|
|
7
|
+
const jszip_1 = __importDefault(require("jszip"));
|
|
8
|
+
const print_1 = require("./print");
|
|
9
|
+
const transitive_closure_1 = require("./utils/transitive-closure");
|
|
10
|
+
const openzeppelin_contracts_1 = __importDefault(require("../openzeppelin-contracts"));
|
|
11
|
+
const options_1 = require("./options");
|
|
12
|
+
const readme = (variant) => `\
|
|
13
|
+
# OpenZeppelin Contracts
|
|
14
|
+
|
|
15
|
+
The files in this directory were sourced unmodified from OpenZeppelin Contracts v${openzeppelin_contracts_1.default.version}.
|
|
16
|
+
|
|
17
|
+
They are not meant to be edited.
|
|
18
|
+
|
|
19
|
+
The originals can be found on [GitHub] and [npm].
|
|
20
|
+
|
|
21
|
+
[GitHub]: https://github.com/OpenZeppelin/openzeppelin-contracts${variant}/tree/v${openzeppelin_contracts_1.default.version}
|
|
22
|
+
[npm]: https://www.npmjs.com/package/@openzeppelin/contracts${variant}/v/${openzeppelin_contracts_1.default.version}
|
|
23
|
+
|
|
24
|
+
Generated with OpenZeppelin Contracts Wizard (https://zpl.in/wizard).
|
|
25
|
+
`;
|
|
26
|
+
function zipContract(c) {
|
|
27
|
+
const { transformImport } = (0, options_1.withHelpers)(c);
|
|
28
|
+
const contractsVariant = c.upgradeable ? '-upgradeable' : '';
|
|
29
|
+
const fileName = c.name + '.sol';
|
|
30
|
+
const dependencies = {
|
|
31
|
+
[fileName]: c.parents.map(p => transformImport(p.contract.path)),
|
|
32
|
+
...openzeppelin_contracts_1.default.dependencies,
|
|
33
|
+
};
|
|
34
|
+
const allImports = (0, transitive_closure_1.reachable)(dependencies, fileName);
|
|
35
|
+
const zip = new jszip_1.default();
|
|
36
|
+
zip.file(fileName, (0, print_1.printContract)(c, { transformImport: p => './' + p }));
|
|
37
|
+
zip.file(`@openzeppelin/contracts${contractsVariant}/README.md`, readme(contractsVariant));
|
|
38
|
+
for (const importPath of allImports) {
|
|
39
|
+
const source = openzeppelin_contracts_1.default.sources[importPath];
|
|
40
|
+
if (source === undefined) {
|
|
41
|
+
throw new Error(`Source for ${importPath} not found`);
|
|
42
|
+
}
|
|
43
|
+
zip.file(importPath, source);
|
|
44
|
+
}
|
|
45
|
+
return zip;
|
|
46
|
+
}
|
|
47
|
+
exports.zipContract = zipContract;
|
|
48
|
+
//# sourceMappingURL=zip.js.map
|
package/dist/zip.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,mCAAwC;AACxC,mEAAuD;AAEvD,uFAAkD;AAClD,uCAAwC;AAExC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC;;;mFAG+C,gCAAS,CAAC,OAAO;;;;;;kEAMlC,OAAO,UAAU,gCAAS,CAAC,OAAO;8DACtC,OAAO,MAAM,gCAAS,CAAC,OAAO;;;CAG3F,CAAC;AAEF,SAAgB,WAAW,CAAC,CAAW;IACrC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,qBAAW,EAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;IAEjC,MAAM,YAAY,GAAG;QACnB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,GAAG,gCAAS,CAAC,YAAY;KAC1B,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,8BAAS,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,IAAI,eAAK,EAAE,CAAC;IAExB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAA,qBAAa,EAAC,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzE,GAAG,CAAC,IAAI,CAAC,0BAA0B,gBAAgB,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE3F,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE;QACnC,MAAM,MAAM,GAAG,gCAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;SACvD;QACD,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;KAC9B;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AA5BD,kCA4BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.test.d.ts","sourceRoot":"","sources":["../src/zip.test.ts"],"names":[],"mappings":""}
|
package/dist/zip.test.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
const ava_1 = __importDefault(require("ava"));
|
|
7
|
+
const zip_1 = require("./zip");
|
|
8
|
+
const erc20_1 = require("./erc20");
|
|
9
|
+
const sources_1 = require("./generate/sources");
|
|
10
|
+
const build_generic_1 = require("./build-generic");
|
|
11
|
+
(0, ava_1.default)('erc20 basic', t => {
|
|
12
|
+
const c = (0, erc20_1.buildERC20)({ name: 'MyToken', symbol: 'MTK' });
|
|
13
|
+
const zip = (0, zip_1.zipContract)(c);
|
|
14
|
+
const files = Object.values(zip.files).map(f => f.name).sort();
|
|
15
|
+
t.deepEqual(files, [
|
|
16
|
+
'@openzeppelin/',
|
|
17
|
+
'@openzeppelin/contracts/',
|
|
18
|
+
'@openzeppelin/contracts/README.md',
|
|
19
|
+
'@openzeppelin/contracts/token/',
|
|
20
|
+
'@openzeppelin/contracts/token/ERC20/',
|
|
21
|
+
'@openzeppelin/contracts/token/ERC20/ERC20.sol',
|
|
22
|
+
'@openzeppelin/contracts/token/ERC20/IERC20.sol',
|
|
23
|
+
'@openzeppelin/contracts/token/ERC20/extensions/',
|
|
24
|
+
'@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol',
|
|
25
|
+
'@openzeppelin/contracts/utils/',
|
|
26
|
+
'@openzeppelin/contracts/utils/Context.sol',
|
|
27
|
+
'MyToken.sol',
|
|
28
|
+
]);
|
|
29
|
+
});
|
|
30
|
+
(0, ava_1.default)('can zip all combinations', t => {
|
|
31
|
+
for (const { options } of (0, sources_1.generateSources)('all')) {
|
|
32
|
+
const c = (0, build_generic_1.buildGeneric)(options);
|
|
33
|
+
(0, zip_1.zipContract)(c);
|
|
34
|
+
}
|
|
35
|
+
t.pass();
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=zip.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.test.js","sourceRoot":"","sources":["../src/zip.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,+BAAoC;AACpC,mCAAqC;AACrC,gDAAqD;AACrD,mDAA+C;AAE/C,IAAA,aAAI,EAAC,aAAa,EAAE,CAAC,CAAC,EAAE;IACtB,MAAM,CAAC,GAAG,IAAA,kBAAU,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAA,iBAAW,EAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/D,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;QACjB,gBAAgB;QAChB,0BAA0B;QAC1B,mCAAmC;QACnC,gCAAgC;QAChC,sCAAsC;QACtC,+CAA+C;QAC/C,gDAAgD;QAChD,iDAAiD;QACjD,mEAAmE;QACnE,gCAAgC;QAChC,2CAA2C;QAC3C,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;IACnC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAA,yBAAe,EAAC,KAAK,CAAC,EAAE;QAChD,MAAM,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC;QAChC,IAAA,iBAAW,EAAC,CAAC,CAAC,CAAC;KAChB;IACD,CAAC,CAAC,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@openzeppelin/wizard",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A boilerplate generator to get started with OpenZeppelin Contracts",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": "github:OpenZeppelin/contracts-wizard",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"ts:main": "src/index.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"/dist",
|
|
11
|
+
"/src",
|
|
12
|
+
"!*.test.{js,d.ts}{,.map}"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"prepare": "tsc && node dist/scripts/prepare.js",
|
|
16
|
+
"prepublish": "rimraf dist *.tsbuildinfo && hardhat clean",
|
|
17
|
+
"test": "ava",
|
|
18
|
+
"test:watch": "ava --watch"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@openzeppelin/contracts": "4.6.0",
|
|
22
|
+
"@openzeppelin/contracts-upgradeable": "4.6.0",
|
|
23
|
+
"@types/node": "^10.17.51",
|
|
24
|
+
"@types/rimraf": "^3.0.0",
|
|
25
|
+
"array.prototype.flat": "^1.2.4",
|
|
26
|
+
"ava": "^4.0.0",
|
|
27
|
+
"hardhat": "^2.1.1",
|
|
28
|
+
"jszip": "^3.6.0",
|
|
29
|
+
"rimraf": "^3.0.2",
|
|
30
|
+
"solidity-ast": "^0.4.18",
|
|
31
|
+
"ts-node": "^10.4.0",
|
|
32
|
+
"typescript": "^4.1.3"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"array.prototype.flatmap": "^1.2.4"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ContractBuilder, BaseFunction } from './contract';
|
|
2
|
+
import { Access, setAccessControl } from './set-access-control';
|
|
3
|
+
import { defineFunctions } from './utils/define-functions';
|
|
4
|
+
|
|
5
|
+
export function addPausable(c: ContractBuilder, access: Access, pausableFns: BaseFunction[]) {
|
|
6
|
+
c.addParent({
|
|
7
|
+
name: 'Pausable',
|
|
8
|
+
path: '@openzeppelin/contracts/security/Pausable.sol',
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
for (const fn of pausableFns) {
|
|
12
|
+
c.addModifier('whenNotPaused', fn);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
setAccessControl(c, functions.pause, access, 'PAUSER');
|
|
16
|
+
c.addFunctionCode('_pause();', functions.pause);
|
|
17
|
+
|
|
18
|
+
setAccessControl(c, functions.unpause, access, 'PAUSER');
|
|
19
|
+
c.addFunctionCode('_unpause();', functions.unpause);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const functions = defineFunctions({
|
|
23
|
+
pause: {
|
|
24
|
+
kind: 'public' as const,
|
|
25
|
+
args: [],
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
unpause: {
|
|
29
|
+
kind: 'public' as const,
|
|
30
|
+
args: [],
|
|
31
|
+
},
|
|
32
|
+
});
|
package/src/api.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
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';
|
|
6
|
+
|
|
7
|
+
export interface WizardContractAPI<Options extends CommonOptions> {
|
|
8
|
+
/**
|
|
9
|
+
* Returns a string representation of a contract generated using the provided options. If opts is not provided, uses `defaults`.
|
|
10
|
+
*/
|
|
11
|
+
print: (opts?: Options) => string,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The default options that are used for `print`.
|
|
15
|
+
*/
|
|
16
|
+
defaults: Required<Options>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type ERC20 = WizardContractAPI<ERC20Options>;
|
|
20
|
+
export type ERC721 = WizardContractAPI<ERC721Options>;
|
|
21
|
+
export type ERC1155 = WizardContractAPI<ERC1155Options>;
|
|
22
|
+
export type Governor = WizardContractAPI<GovernorOptions>;
|
|
23
|
+
|
|
24
|
+
export const erc20: ERC20 = {
|
|
25
|
+
print: printERC20,
|
|
26
|
+
defaults: erc20defaults
|
|
27
|
+
}
|
|
28
|
+
export const erc721: ERC721 = {
|
|
29
|
+
print: printERC721,
|
|
30
|
+
defaults: erc721defaults
|
|
31
|
+
}
|
|
32
|
+
export const erc1155: ERC1155 = {
|
|
33
|
+
print: printERC1155,
|
|
34
|
+
defaults: erc1155defaults
|
|
35
|
+
}
|
|
36
|
+
export const governor: Governor = {
|
|
37
|
+
print: printGovernor,
|
|
38
|
+
defaults: governorDefaults
|
|
39
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ERC20Options, buildERC20 } from './erc20';
|
|
2
|
+
import { ERC721Options, buildERC721 } from './erc721';
|
|
3
|
+
import { ERC1155Options, buildERC1155 } from './erc1155';
|
|
4
|
+
import { GovernorOptions, buildGovernor } from './governor';
|
|
5
|
+
|
|
6
|
+
export interface KindedOptions {
|
|
7
|
+
ERC20: { kind: 'ERC20' } & ERC20Options;
|
|
8
|
+
ERC721: { kind: 'ERC721' } & ERC721Options;
|
|
9
|
+
ERC1155: { kind: 'ERC1155' } & ERC1155Options;
|
|
10
|
+
Governor: { kind: 'Governor' } & GovernorOptions;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type GenericOptions = KindedOptions[keyof KindedOptions];
|
|
14
|
+
|
|
15
|
+
export function buildGeneric(opts: GenericOptions) {
|
|
16
|
+
switch (opts.kind) {
|
|
17
|
+
case 'ERC20':
|
|
18
|
+
return buildERC20(opts);
|
|
19
|
+
|
|
20
|
+
case 'ERC721':
|
|
21
|
+
return buildERC721(opts);
|
|
22
|
+
|
|
23
|
+
case 'ERC1155':
|
|
24
|
+
return buildERC1155(opts);
|
|
25
|
+
|
|
26
|
+
case 'Governor':
|
|
27
|
+
return buildGovernor(opts);
|
|
28
|
+
|
|
29
|
+
default:
|
|
30
|
+
const _: never = opts;
|
|
31
|
+
throw new Error('Unknown ERC');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Access } from "./set-access-control";
|
|
2
|
+
import type { Info } from "./set-info";
|
|
3
|
+
import { defaults as infoDefaults } from "./set-info";
|
|
4
|
+
import type { Upgradeable } from "./set-upgradeable";
|
|
5
|
+
|
|
6
|
+
export const defaults: Required<CommonOptions> = {
|
|
7
|
+
access: 'ownable',
|
|
8
|
+
upgradeable: false,
|
|
9
|
+
info: infoDefaults,
|
|
10
|
+
} as const;
|
|
11
|
+
|
|
12
|
+
export interface CommonOptions {
|
|
13
|
+
access?: Access;
|
|
14
|
+
upgradeable?: Upgradeable;
|
|
15
|
+
info?: Info;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function withCommonDefaults(opts: CommonOptions): Required<CommonOptions> {
|
|
19
|
+
return {
|
|
20
|
+
access: opts.access ?? 'ownable',
|
|
21
|
+
upgradeable: opts.upgradeable ?? false,
|
|
22
|
+
info: opts.info ?? {},
|
|
23
|
+
};
|
|
24
|
+
}
|