Skip to content

Commit 975642a

Browse files
authored
Add Account compilation tests and simplify community contracts imports (#537)
1 parent 58b7cbe commit 975642a

14 files changed

+349
-315
lines changed

packages/core/solidity/hardhat.config.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
const fs = require('fs');
12
const { task } = require('hardhat/config');
23
const { HardhatError } = require('hardhat/internal/core/errors');
34
const { ERRORS } = require('hardhat/internal/core/errors-list');
45
const {
56
TASK_COMPILE_SOLIDITY_CHECK_ERRORS,
67
TASK_COMPILE_SOLIDITY_LOG_COMPILATION_ERRORS,
78
TASK_COMPILE_SOLIDITY_MERGE_COMPILATION_JOBS,
9+
TASK_COMPILE_GET_REMAPPINGS,
810
} = require('hardhat/builtin-tasks/task-names');
911
const SOLIDITY_VERSION = require('./src/solidity-version.json');
1012

@@ -37,6 +39,21 @@ task(TASK_COMPILE_SOLIDITY_MERGE_COMPILATION_JOBS, async ({ compilationJobs }, _
3739
return mergedChunks.flat();
3840
});
3941

42+
task(TASK_COMPILE_GET_REMAPPINGS).setAction((_, __, runSuper) =>
43+
runSuper().then(remappings =>
44+
Object.assign(
45+
remappings,
46+
Object.fromEntries(
47+
fs
48+
.readFileSync('remappings.txt', 'utf-8')
49+
.split('\n')
50+
.filter(Boolean)
51+
.map(line => line.trim().split('=')),
52+
),
53+
),
54+
),
55+
);
56+
4057
/**
4158
* @type import('hardhat/config').HardhatUserConfig
4259
*/

packages/core/solidity/remappings.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@openzeppelin/community-contracts/=node_modules/@openzeppelin/community-contracts/contracts/
2+
@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/

packages/core/solidity/src/account.test.ts.md

Lines changed: 280 additions & 276 deletions
Large diffs are not rendered by default.
-24 Bytes
Binary file not shown.

packages/core/solidity/src/account.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { defineFunctions } from './utils/define-functions';
44
import { printContract } from './print';
55
import { defaults as commonDefaults, withCommonDefaults, type CommonOptions } from './common-options';
66
import { setInfo } from './set-info';
7-
import { addSigner, signerFunctions, type SignerOptions } from './signer';
7+
import { addSigner, signerFunctions, signers, type SignerOptions } from './signer';
88

99
export const defaults: Required<AccountOptions> = {
1010
...commonDefaults,
@@ -76,7 +76,7 @@ function addParents(c: ContractBuilder, opts: AccountOptions): void {
7676
// Base
7777
c.addParent({
7878
name: 'Account',
79-
path: `@openzeppelin/community-contracts/contracts/account/Account.sol`,
79+
path: `@openzeppelin/community-contracts/account/Account.sol`,
8080
});
8181
c.addOverride({ name: 'Account' }, functions._validateUserOp);
8282

@@ -97,7 +97,7 @@ function addSignatureValidation(c: ContractBuilder, opts: AccountOptions) {
9797
case 'ERC7739':
9898
c.addParent({
9999
name: 'ERC7739',
100-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/ERC7739.sol',
100+
path: '@openzeppelin/community-contracts/utils/cryptography/ERC7739.sol',
101101
});
102102
break;
103103
case 'ERC1271':
@@ -139,7 +139,7 @@ function addBatchedExecution(c: ContractBuilder, opts: AccountOptions): void {
139139
if (!opts.batchedExecution || !!opts.ERC7579Modules) return;
140140
c.addParent({
141141
name: 'ERC7821',
142-
path: '@openzeppelin/community-contracts/contracts/account/extensions/ERC7821.sol',
142+
path: '@openzeppelin/community-contracts/account/extensions/ERC7821.sol',
143143
});
144144
c.addOverride({ name: 'ERC7821' }, functions._erc7821AuthorizedExecutor);
145145
c.setFunctionBody(
@@ -152,12 +152,12 @@ function addERC7579Modules(c: ContractBuilder, opts: AccountOptions): void {
152152
if (!opts.ERC7579Modules) return;
153153
c.addParent({
154154
name: opts.ERC7579Modules,
155-
path: `@openzeppelin/community-contracts/contracts/account/extensions/${opts.ERC7579Modules}.sol`,
155+
path: `@openzeppelin/community-contracts/account/extensions/${opts.ERC7579Modules}.sol`,
156156
});
157157
if (opts.ERC7579Modules !== 'AccountERC7579') {
158158
c.addImportOnly({
159159
name: 'AccountERC7579',
160-
path: `@openzeppelin/community-contracts/contracts/account/extensions/AccountERC7579.sol`,
160+
path: `@openzeppelin/community-contracts/account/extensions/AccountERC7579.sol`,
161161
});
162162
}
163163
c.addOverride({ name: 'AccountERC7579' }, functions.isValidSignature);
@@ -220,7 +220,7 @@ function overrideRawSignatureValidation(c: ContractBuilder, opts: AccountOptions
220220
if (opts.signer && opts.ERC7579Modules) {
221221
c.addImportOnly({
222222
name: 'AbstractSigner',
223-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/AbstractSigner.sol',
223+
path: '@openzeppelin/community-contracts/utils/cryptography/AbstractSigner.sol',
224224
});
225225
c.addOverride({ name: 'AbstractSigner' }, signerFunctions._rawSignatureValidation);
226226
c.addOverride({ name: 'AccountERC7579' }, signerFunctions._rawSignatureValidation);
@@ -233,6 +233,10 @@ function overrideRawSignatureValidation(c: ContractBuilder, opts: AccountOptions
233233
],
234234
signerFunctions._rawSignatureValidation,
235235
);
236+
// Base override for `_rawSignatureValidation` given MultiSignerERC7913Weighted is MultiSignerERC7913
237+
if (opts.signer === 'MultisigWeighted') {
238+
c.addImportOnly(signers.Multisig);
239+
}
236240
}
237241
}
238242

packages/core/solidity/src/erc20.test.ts.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ Generated by [AVA](https://avajs.dev).
528528
pragma solidity ^0.8.27;␊
529529
530530
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
531-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
531+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
532532
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
533533
534534
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit {␊
@@ -558,7 +558,7 @@ Generated by [AVA](https://avajs.dev).
558558
pragma solidity ^0.8.27;␊
559559
560560
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
561-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
561+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
562562
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
563563
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
564564
@@ -590,7 +590,7 @@ Generated by [AVA](https://avajs.dev).
590590
pragma solidity ^0.8.27;␊
591591
592592
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
593-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
593+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
594594
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";␊
595595
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
596596
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
@@ -628,7 +628,7 @@ Generated by [AVA](https://avajs.dev).
628628
629629
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
630630
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
631-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
631+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
632632
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
633633
634634
contract MyToken is ERC20, ERC20Bridgeable, AccessControl, ERC20Permit {␊
@@ -671,7 +671,7 @@ Generated by [AVA](https://avajs.dev).
671671
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
672672
import {AuthorityUtils} from "@openzeppelin/contracts/access/manager/AuthorityUtils.sol";␊
673673
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
674-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
674+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
675675
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
676676
677677
contract MyToken is ERC20, ERC20Bridgeable, AccessManaged, ERC20Permit {␊
@@ -699,7 +699,7 @@ Generated by [AVA](https://avajs.dev).
699699
pragma solidity ^0.8.27;␊
700700
701701
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
702-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
702+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
703703
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
704704
705705
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit {␊
@@ -728,7 +728,7 @@ Generated by [AVA](https://avajs.dev).
728728
pragma solidity ^0.8.27;␊
729729
730730
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
731-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
731+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
732732
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
733733
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
734734
@@ -763,7 +763,7 @@ Generated by [AVA](https://avajs.dev).
763763
764764
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
765765
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
766-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
766+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
767767
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
768768
769769
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit, AccessControl {␊
@@ -809,7 +809,7 @@ Generated by [AVA](https://avajs.dev).
809809
810810
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
811811
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
812-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
812+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
813813
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
814814
815815
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit, AccessManaged {␊
@@ -863,7 +863,7 @@ Generated by [AVA](https://avajs.dev).
863863
pragma solidity ^0.8.27;␊
864864
865865
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
866-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
866+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
867867
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
868868
869869
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit {␊
@@ -896,7 +896,7 @@ Generated by [AVA](https://avajs.dev).
896896
pragma solidity ^0.8.27;␊
897897
898898
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
899-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
899+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
900900
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
901901
902902
contract MyToken is ERC20, ERC20Bridgeable, ERC20Permit {␊
@@ -934,7 +934,7 @@ Generated by [AVA](https://avajs.dev).
934934
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
935935
import {ERC1363} from "@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol";␊
936936
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
937-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
937+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
938938
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";␊
939939
import {ERC20FlashMint} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol";␊
940940
import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";␊
-8 Bytes
Binary file not shown.

packages/core/solidity/src/erc20.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ function addCrossChainBridging(
313313
) {
314314
const ERC20Bridgeable = {
315315
name: 'ERC20Bridgeable',
316-
path: `@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol`,
316+
path: `@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol`,
317317
};
318318

319319
c.addParent(ERC20Bridgeable);

packages/core/solidity/src/signer.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ export type SignerOptions = (typeof SignerOptions)[number];
66

77
export function addSigner(c: ContractBuilder, signer: SignerOptions): void {
88
if (!signer) return;
9-
const parent = parents[signer];
9+
const parent = signers[signer];
10+
const name = parent.name;
1011
c.addParent(parent);
11-
c.addOverride({ name: parent.name }, signerFunctions._rawSignatureValidation);
12+
c.addOverride(
13+
{ name: name === signers.MultisigWeighted.name ? signers.Multisig.name : name },
14+
signerFunctions._rawSignatureValidation,
15+
);
1216

1317
// ERC-7702 doesn't require initialization
1418
if (signer === 'ERC7702') return;
@@ -45,30 +49,30 @@ export function addSigner(c: ContractBuilder, signer: SignerOptions): void {
4549
}
4650
}
4751

48-
const parents = {
52+
export const signers = {
4953
ERC7702: {
5054
name: 'SignerERC7702',
51-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/SignerERC7702.sol',
55+
path: '@openzeppelin/community-contracts/utils/cryptography/SignerERC7702.sol',
5256
},
5357
ECDSA: {
5458
name: 'SignerECDSA',
55-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/SignerECDSA.sol',
59+
path: '@openzeppelin/community-contracts/utils/cryptography/SignerECDSA.sol',
5660
},
5761
P256: {
5862
name: 'SignerP256',
59-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/SignerP256.sol',
63+
path: '@openzeppelin/community-contracts/utils/cryptography/SignerP256.sol',
6064
},
6165
RSA: {
6266
name: 'SignerRSA',
63-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/SignerRSA.sol',
67+
path: '@openzeppelin/community-contracts/utils/cryptography/SignerRSA.sol',
6468
},
6569
Multisig: {
6670
name: 'MultiSignerERC7913',
67-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/MultiSignerERC7913.sol',
71+
path: '@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913.sol',
6872
},
6973
MultisigWeighted: {
7074
name: 'MultiSignerERC7913Weighted',
71-
path: '@openzeppelin/community-contracts/contracts/utils/cryptography/MultiSignerERC7913Weighted.sol',
75+
path: '@openzeppelin/community-contracts/utils/cryptography/MultiSignerERC7913Weighted.sol',
7276
},
7377
};
7478

packages/core/solidity/src/stablecoin.test.ts.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ Generated by [AVA](https://avajs.dev).
331331
pragma solidity ^0.8.27;␊
332332
333333
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
334-
import {ERC20Custodian} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Custodian.sol";␊
334+
import {ERC20Custodian} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Custodian.sol";␊
335335
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
336336
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
337337
@@ -366,7 +366,7 @@ Generated by [AVA](https://avajs.dev).
366366
pragma solidity ^0.8.27;␊
367367
368368
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
369-
import {ERC20Allowlist} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Allowlist.sol";␊
369+
import {ERC20Allowlist} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Allowlist.sol";␊
370370
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
371371
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
372372
@@ -412,7 +412,7 @@ Generated by [AVA](https://avajs.dev).
412412
pragma solidity ^0.8.27;␊
413413
414414
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
415-
import {ERC20Blocklist} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Blocklist.sol";␊
415+
import {ERC20Blocklist} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Blocklist.sol";␊
416416
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
417417
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
418418
@@ -594,10 +594,10 @@ Generated by [AVA](https://avajs.dev).
594594
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
595595
import {ERC1363} from "@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol";␊
596596
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";␊
597-
import {ERC20Allowlist} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Allowlist.sol";␊
598-
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
597+
import {ERC20Allowlist} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Allowlist.sol";␊
598+
import {ERC20Bridgeable} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Bridgeable.sol";␊
599599
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";␊
600-
import {ERC20Custodian} from "@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Custodian.sol";␊
600+
import {ERC20Custodian} from "@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Custodian.sol";␊
601601
import {ERC20FlashMint} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol";␊
602602
import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";␊
603603
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
Binary file not shown.

packages/core/solidity/src/stablecoin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ function addLimitations(c: ContractBuilder, access: Access, mode: boolean | 'all
6565
const type = mode === 'allowlist';
6666
const ERC20Limitation = {
6767
name: type ? 'ERC20Allowlist' : 'ERC20Blocklist',
68-
path: `@openzeppelin/community-contracts/contracts/token/ERC20/extensions/${type ? 'ERC20Allowlist' : 'ERC20Blocklist'}.sol`,
68+
path: `@openzeppelin/community-contracts/token/ERC20/extensions/${type ? 'ERC20Allowlist' : 'ERC20Blocklist'}.sol`,
6969
};
7070

7171
c.addParent(ERC20Limitation);
@@ -86,7 +86,7 @@ function addLimitations(c: ContractBuilder, access: Access, mode: boolean | 'all
8686
function addCustodian(c: ContractBuilder, access: Access) {
8787
const ERC20Custodian = {
8888
name: 'ERC20Custodian',
89-
path: '@openzeppelin/community-contracts/contracts/token/ERC20/extensions/ERC20Custodian.sol',
89+
path: '@openzeppelin/community-contracts/token/ERC20/extensions/ERC20Custodian.sol',
9090
};
9191

9292
c.addParent(ERC20Custodian);

packages/core/solidity/src/test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ test.serial('stablecoin result compiles', async t => {
3030
await testCompile(t, 'Stablecoin');
3131
});
3232

33+
test.serial('account result compiles', async t => {
34+
await testCompile(t, 'Account');
35+
});
36+
3337
test.serial('governor result compiles', async t => {
3438
await testCompile(t, 'Governor');
3539
});

packages/ui/src/solidity/inject-hyperlinks.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ export function injectHyperlinks(code: string) {
44
// We are modifying HTML, so use HTML escaped chars. The pattern excludes paths that include /../ in the URL.
55
const contractsRegex =
66
/&quot;(@openzeppelin\/)(contracts-upgradeable\/|contracts\/)((?:(?!\.\.)[^/]+\/)*?[^/]*?)&quot;/g;
7-
const communityContractsRegex =
8-
/&quot;(@openzeppelin\/)(community-contracts\/contracts\/)((?:(?!\.\.)[^/]+\/)*?[^/]*?)&quot;/g;
7+
const communityContractsRegex = /&quot;(@openzeppelin\/)(community-contracts\/)((?:(?!\.\.)[^/]+\/)*?[^/]*?)&quot;/g;
98

109
return code
1110
.replace(

0 commit comments

Comments
 (0)