diff --git a/.github/workflows/build-lint-test.yml b/.github/workflows/build-lint-test.yml index 94745231b..1e4aae209 100644 --- a/.github/workflows/build-lint-test.yml +++ b/.github/workflows/build-lint-test.yml @@ -27,6 +27,15 @@ jobs: - name: 🎨 Run ESLint on JS/TS files run: npm run lint + - name: 📦 Test Building package for release + # Command `build:types` needs the folder structure generated + # by the `package` command to run successfully + run: | + npm run build + npm run build:js + npm run package + npm run build:types + # This will also generate the Typechain types used by the Chai tests - name: 🏗️ Build contract artifacts run: | diff --git a/packages/lsp-smart-contracts/tests/LSP23LinkedContractsDeployment/LSP23LinkedContractsDeployment.test.ts b/packages/lsp-smart-contracts/tests/LSP23LinkedContractsDeployment/LSP23LinkedContractsDeployment.test.ts index 9c2089ce3..067bc1d06 100644 --- a/packages/lsp-smart-contracts/tests/LSP23LinkedContractsDeployment/LSP23LinkedContractsDeployment.test.ts +++ b/packages/lsp-smart-contracts/tests/LSP23LinkedContractsDeployment/LSP23LinkedContractsDeployment.test.ts @@ -22,8 +22,12 @@ describe('UniversalProfileDeployer', function () { it('should deploy both contract (with no value)', async function () { const [allPermissionsSigner, universalReceiver, recoverySigner] = await ethers.getSigners(); - const KeyManagerFactory = await ethers.getContractFactory('LSP6KeyManager'); - const UniversalProfileFactory = await ethers.getContractFactory('UniversalProfile'); + const KeyManagerFactory = await ethers.getContractFactory( + '@lukso/lsp6-contracts/contracts/LSP6KeyManager.sol:LSP6KeyManager', + ); + const UniversalProfileFactory = await ethers.getContractFactory( + '@lukso/universalprofile-contracts/contracts/UniversalProfile.sol:UniversalProfile', + ); const keyManagerBytecode = KeyManagerFactory.bytecode; const universalProfileBytecode = UniversalProfileFactory.bytecode; @@ -149,9 +153,16 @@ describe('UniversalProfileDeployer', function () { const universalProfileFundAmount = ethers.parseEther('1'); - const keyManagerBytecode = (await ethers.getContractFactory('LSP6KeyManager')).bytecode; - const universalProfileBytecode = (await ethers.getContractFactory('UniversalProfile')) - .bytecode; + const keyManagerBytecode = ( + await ethers.getContractFactory( + '@lukso/lsp6-contracts/contracts/LSP6KeyManager.sol:LSP6KeyManager', + ) + ).bytecode; + const universalProfileBytecode = ( + await ethers.getContractFactory( + '@lukso/universalprofile-contracts/contracts/UniversalProfile.sol:UniversalProfile', + ) + ).bytecode; const { upPostDeploymentModule, LSP23LinkedContractsFactory } = await deployImplementationContracts(); @@ -250,9 +261,16 @@ describe('UniversalProfileDeployer', function () { const universalProfileFundAmount = ethers.parseEther('1'); - const keyManagerBytecode = (await ethers.getContractFactory('LSP6KeyManager')).bytecode; - const universalProfileBytecode = (await ethers.getContractFactory('UniversalProfile')) - .bytecode; + const keyManagerBytecode = ( + await ethers.getContractFactory( + '@lukso/lsp6-contracts/contracts/LSP6KeyManager.sol:LSP6KeyManager', + ) + ).bytecode; + const universalProfileBytecode = ( + await ethers.getContractFactory( + '@lukso/universalprofile-contracts/contracts/UniversalProfile.sol:UniversalProfile', + ) + ).bytecode; const { upPostDeploymentModule, LSP23LinkedContractsFactory } = await deployImplementationContracts(); @@ -339,7 +357,9 @@ describe('UniversalProfileDeployer', function () { const [allPermissionsSigner, universalReceiver, recoverySigner] = await ethers.getSigners(); const KeyManagerFactory = await ethers.getContractFactory('KeyManagerWithExtraParams'); - const UniversalProfileFactory = await ethers.getContractFactory('UniversalProfile'); + const UniversalProfileFactory = await ethers.getContractFactory( + '@lukso/universalprofile-contracts/contracts/UniversalProfile.sol:UniversalProfile', + ); let keyManagerBytecode = KeyManagerFactory.bytecode; const universalProfileBytecode = UniversalProfileFactory.bytecode; diff --git a/packages/lsp14-contracts/wagmi.config.ts b/packages/lsp14-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp14-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/lsp16-contracts/wagmi.config.ts b/packages/lsp16-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp16-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/lsp17-contracts/wagmi.config.ts b/packages/lsp17-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp17-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/lsp17contractextension-contracts/wagmi.config.ts b/packages/lsp17contractextension-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp17contractextension-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/lsp20-contracts/wagmi.config.ts b/packages/lsp20-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp20-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/lsp25-contracts/wagmi.config.ts b/packages/lsp25-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/lsp25-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +}); diff --git a/packages/universalprofile-contracts/wagmi.config.ts b/packages/universalprofile-contracts/wagmi.config.ts new file mode 100644 index 000000000..9f838fb8d --- /dev/null +++ b/packages/universalprofile-contracts/wagmi.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@wagmi/cli'; +import { react } from '@wagmi/cli/plugins'; +import fs from 'fs'; + +const artifacts = fs.readdirSync('./artifacts', {}); + +const contractsWagmiInputs = artifacts.map((artifact) => { + const jsonArtifact = JSON.parse(fs.readFileSync(`./artifacts/${artifact}`, 'utf-8')); + return { + name: jsonArtifact.contractName, + abi: jsonArtifact.abi, + }; +}); + +export default defineConfig({ + out: 'types/index.ts', + contracts: contractsWagmiInputs, + plugins: [react()], +});