From 4435faf86819ab8df350e5c43f5d9a3c40747eac Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 22 Apr 2021 17:39:54 -0500 Subject: [PATCH 01/53] upgrade toolchain + add ethereum connection argument --- demos/ens/protocol/.gitignore | 1 + demos/ens/protocol/deploy-contracts.js | 15 ++- demos/ens/protocol/package.json | 15 ++- demos/ens/protocol/recipes/constants.json | 8 +- demos/ens/protocol/recipes/e2e.json | 78 ++++++++--- .../mutations/deployFIFSRegistrar.graphql | 10 +- .../recipes/mutations/register.graphql | 11 +- .../recipes/mutations/reverseRegister.graphql | 9 +- .../recipes/mutations/setAddress.graphql | 9 +- .../recipes/mutations/setContentHash.graphql | 9 +- .../recipes/mutations/setOwner.graphql | 9 +- .../recipes/mutations/setRecord.graphql | 15 ++- .../recipes/mutations/setResolver.graphql | 11 +- .../mutations/setSubdomainOwner.graphql | 7 +- .../mutations/setSubdomainRecord.graphql | 16 ++- .../recipes/queries/getAddress.graphql | 7 +- .../recipes/queries/getContentHash.graphql | 7 +- .../recipes/queries/getExpiryTimes.graphql | 7 +- .../queries/getNameFromAddress.graphql | 7 +- .../protocol/recipes/queries/getOwner.graphql | 7 +- .../recipes/queries/getResolver.graphql | 7 +- demos/ens/protocol/script/configure.ts | 6 + demos/ens/protocol/src/mutation/index.ts | 76 +++-------- .../ens/protocol/src/mutation/schema.graphql | 121 +++++++++++++++--- demos/ens/protocol/src/query/index.ts | 50 ++------ demos/ens/protocol/src/query/schema.graphql | 71 ++++++++-- demos/ens/protocol/src/utils.ts | 3 +- 27 files changed, 390 insertions(+), 202 deletions(-) create mode 100644 demos/ens/protocol/.gitignore create mode 100644 demos/ens/protocol/script/configure.ts diff --git a/demos/ens/protocol/.gitignore b/demos/ens/protocol/.gitignore new file mode 100644 index 0000000000..2eea525d88 --- /dev/null +++ b/demos/ens/protocol/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/demos/ens/protocol/deploy-contracts.js b/demos/ens/protocol/deploy-contracts.js index 27509e0441..c11f3f9c16 100644 --- a/demos/ens/protocol/deploy-contracts.js +++ b/demos/ens/protocol/deploy-contracts.js @@ -1,9 +1,20 @@ -const axios = require("axios") +const axios = require("axios"); +const fs = require("fs"); async function main() { const { data } = await axios.get("http://localhost:4040/deploy-ens"); - ensAddress = data.ensAddress; + // Store the address in our recipes' constants file + const constants = require(`${__dirname}/recipes/constants.json`); + constants.Registry = data.ensAddress; + constants.Registrar = data.registrarAddress; + constants.Resolver = data.resolverAddress; + constants.Reverse = data.reverseAddress; + + fs.writeFileSync( + `${__dirname}/recipes/constants.json`, + JSON.stringify(constants, null, 2) + ); console.log(data) } diff --git a/demos/ens/protocol/package.json b/demos/ens/protocol/package.json index a78b0cd797..d267788ed7 100644 --- a/demos/ens/protocol/package.json +++ b/demos/ens/protocol/package.json @@ -5,14 +5,17 @@ "version": "0.0.1-prealpha.15", "scripts": { "build": "npx w3 build", - "codegen": "npx w3 codegen", - "test:env:up": "npx w3 test-env up && node ./deploy-contracts", - "test:env:down": "npx w3 test-env down" + "test:env:up": "npx w3 test-env up", + "test:env:down": "npx w3 test-env down", + "deploy": "yarn deploy:contract && yarn deploy:web3api", + "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens ens.eth", + "deploy:contract": "node ./deploy-contracts.js", + "test": "npx w3 query ./recipes/e2e.json --redirects ./redirects.ts" }, "devDependencies": { - "@web3api/cli": "0.0.1-prealpha.15", - "@web3api/ethereum-plugin-js": "0.0.1-prealpha.15", - "@web3api/wasm-as": "0.0.1-prealpha.15", + "@web3api/cli": "0.0.1-prealpha.21", + "@web3api/ethereum-plugin-js": "0.0.1-prealpha.21", + "@web3api/wasm-as": "0.0.1-prealpha.21", "ethers": "5.0.8", "js-yaml": "3.14.0" } diff --git a/demos/ens/protocol/recipes/constants.json b/demos/ens/protocol/recipes/constants.json index 880fd49485..2f5a995d4d 100644 --- a/demos/ens/protocol/recipes/constants.json +++ b/demos/ens/protocol/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", - "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", - "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", - "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", + "Registry": "0x47a2Db5D68751EeAdFBC44851E84AcDB4F7299Cc", + "Registrar": "0xF16165f1046f1B3cDB37dA25E835B986E696313A", + "Resolver": "0x988B6CFBf3332FF98FFBdED665b1F53a61f92612", + "Reverse": "0x8914a9E5C5E234fDC3Ce9dc155ec19F43947ab59", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/demos/ens/protocol/recipes/e2e.json b/demos/ens/protocol/recipes/e2e.json index 475be726f2..e4f0a35e1a 100644 --- a/demos/ens/protocol/recipes/e2e.json +++ b/demos/ens/protocol/recipes/e2e.json @@ -7,7 +7,8 @@ "query": "./mutations/deployFIFSRegistrar.graphql", "variables": { "registryAddress": "$Registry", - "tld": "$Tld" + "tld": "$Tld", + "network": "testnet" } }, { @@ -16,7 +17,8 @@ "domain": "$Domain", "registrarAddress": "$Registrar", "registryAddress": "$Registry", - "owner": "$Signer" + "owner": "$Signer", + "network": "testnet" } }, { @@ -25,7 +27,8 @@ "domain": "$Domain", "resolverAddress": "$Resolver", "registryAddress": "$Registry", - "owner": "$Signer" + "owner": "$Signer", + "network": "testnet" } }, { @@ -36,7 +39,8 @@ "owner": "$Signer", "resolverAddress": "$Resolver", "ttl": "$Ttl", - "registryAddress": "$Registry" + "registryAddress": "$Registry", + "network": "testnet" } }, { @@ -44,7 +48,8 @@ "variables": { "domain": "$Domain", "address": "$Signer", - "resolverAddress": "$Resolver" + "resolverAddress": "$Resolver", + "network": "testnet" } }, { @@ -52,7 +57,8 @@ "variables": { "domain": "$Domain", "cid": "$CID", - "resolverAddress": "$Resolver" + "resolverAddress": "$Resolver", + "network": "testnet" } }, { @@ -60,7 +66,8 @@ "variables": { "domain": "$Domain", "reverseRegistryAddress": "$Reverse", - "owner": "$Signer" + "owner": "$Signer", + "network": "testnet" } }, { @@ -68,7 +75,8 @@ "variables": { "subdomain": "$Subdomain", "owner": "$Signer", - "registryAddress": "$Registry" + "registryAddress": "$Registry", + "network": "testnet" } }, { @@ -77,47 +85,81 @@ "domain": "$Subdomain", "resolverAddress": "$Resolver", "registryAddress": "$Registry", - "owner": "$Signer" + "owner": "$Signer", + "network": "testnet" } }, { "query": "./queries/getOwner.graphql", - "variables": { "registryAddress": "$Registry", "domain": "$Domain" } + "variables": { + "registryAddress": "$Registry", + "domain": "$Domain", + "network": "testnet" + } }, { "query": "./mutations/setOwner.graphql", "variables": { "domain": "$Domain", "registryAddress": "$Registry", - "newOwner": "$AlternateOwner" + "newOwner": "$AlternateOwner", + "network": "testnet" } }, { "query": "./queries/getOwner.graphql", - "variables": { "registryAddress": "$Registry", "domain": "$Domain" } + "variables": { + "registryAddress": "$Registry", + "domain": "$Domain", + "network": "testnet" + } }, { "query": "./queries/getOwner.graphql", - "variables": { "registryAddress": "$Registry", "domain": "$Subdomain" } + "variables": { + "registryAddress": "$Registry", + "domain": "$Subdomain", + "network": "testnet" + } }, { "query": "./queries/getResolver.graphql", - "variables": { "registryAddress": "$Registry", "domain": "$Domain" } + "variables": { + "registryAddress": "$Registry", + "domain": "$Domain", + "network": "testnet" + } }, { "query": "./queries/getResolver.graphql", - "variables": { "registryAddress": "$Registry", "domain": "$Subdomain" } + "variables": { + "registryAddress": "$Registry", + "domain": "$Subdomain", + "network": "testnet" + } }, { "query": "./queries/getAddress.graphql", - "variables": { "resolverAddress": "$Resolver", "domain": "$Domain" } + "variables": { + "resolverAddress": "$Resolver", + "domain": "$Domain", + "network": "testnet" + } }, { "query": "./queries/getContentHash.graphql", - "variables": { "resolverAddress": "$Resolver", "domain": "$Domain" } + "variables": { + "resolverAddress": "$Resolver", + "domain": "$Domain", + "network": "testnet" + } }, { "query": "./queries/getNameFromAddress.graphql", - "variables": { "address": "$Signer", "registryAddress": "$Registry" } + "variables": { + "address": "$Signer", + "registryAddress": "$Registry", + "network": "testnet" + } } ] diff --git a/demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql b/demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql index 7600b4fd89..cf5ddb4953 100644 --- a/demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql +++ b/demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql @@ -1,3 +1,9 @@ -mutation deployFIFSRegistrar($registryAddress: String!, $tld: String!) { - deployFIFSRegistrar(registryAddress: $registryAddress, tld: $tld) +mutation { + deployFIFSRegistrar( + registryAddress: $registryAddress + tld: $tld + connection: { + networkNameOrChainId: $network + } + ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/register.graphql b/demos/ens/protocol/recipes/mutations/register.graphql index 06083d99df..41eb8837bc 100644 --- a/demos/ens/protocol/recipes/mutations/register.graphql +++ b/demos/ens/protocol/recipes/mutations/register.graphql @@ -1,8 +1,11 @@ -mutation RegisterDomain($domain: String!, $registrarAddress: String!, $registryAddress: String!, $owner: String!) { +mutation { registerDomain( - domain: $domain, - registrarAddress: $registrarAddress, - registryAddress: $registryAddress, + domain: $domain + registrarAddress: $registrarAddress + registryAddress: $registryAddress owner: $owner + connection: { + networkNameOrChainId: $network + } ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/reverseRegister.graphql b/demos/ens/protocol/recipes/mutations/reverseRegister.graphql index 751c7ce117..ca3edb2c21 100644 --- a/demos/ens/protocol/recipes/mutations/reverseRegister.graphql +++ b/demos/ens/protocol/recipes/mutations/reverseRegister.graphql @@ -1,7 +1,10 @@ -mutation reverseRegisterDomain($domain: String! $reverseRegistryAddress: String!, $owner: String!) { +mutation { reverseRegisterDomain( - domain: $domain, - reverseRegistryAddress: $reverseRegistryAddress, + domain: $domain + reverseRegistryAddress: $reverseRegistryAddress owner: $owner + connection: { + networkNameOrChainId: $network + } ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setAddress.graphql b/demos/ens/protocol/recipes/mutations/setAddress.graphql index 922a0129cc..4f50e952b0 100644 --- a/demos/ens/protocol/recipes/mutations/setAddress.graphql +++ b/demos/ens/protocol/recipes/mutations/setAddress.graphql @@ -1,7 +1,10 @@ -mutation setAddress($domain: String!, $address: String!, $resolverAddress: String!) { +mutation { setAddress( - domain: $domain, - address: $address, + domain: $domain + address: $address resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setContentHash.graphql b/demos/ens/protocol/recipes/mutations/setContentHash.graphql index d18d75ab97..9f7222580e 100644 --- a/demos/ens/protocol/recipes/mutations/setContentHash.graphql +++ b/demos/ens/protocol/recipes/mutations/setContentHash.graphql @@ -1,7 +1,10 @@ -mutation setContentHash($domain: String!, $cid: String!, $resolverAddress: String!) { +mutation { setContentHash( - domain: $domain, - cid: $cid, + domain: $domain + cid: $cid resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setOwner.graphql b/demos/ens/protocol/recipes/mutations/setOwner.graphql index ecc131fb17..ec6a3fa3e6 100644 --- a/demos/ens/protocol/recipes/mutations/setOwner.graphql +++ b/demos/ens/protocol/recipes/mutations/setOwner.graphql @@ -1,11 +1,10 @@ -mutation setOwner( - $domain: String! - $newOwner: String! - $registryAddress: String! -) { +mutation { setOwner( domain: $domain newOwner: $newOwner registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/mutations/setRecord.graphql b/demos/ens/protocol/recipes/mutations/setRecord.graphql index 4dca382f21..20daefe42d 100644 --- a/demos/ens/protocol/recipes/mutations/setRecord.graphql +++ b/demos/ens/protocol/recipes/mutations/setRecord.graphql @@ -1,5 +1,12 @@ -mutation setRecord( - $domain: String!, $owner: String!, $resolverAddress: String!, $ttl: String!, $registryAddress: String! -) { - setRecord(domain: $domain, owner: $owner, resolverAddress: $resolverAddress, ttl: $ttl, registryAddress: $registryAddress) +mutation { + setRecord( + domain: $domain + owner: $owner + resolverAddress: $resolverAddress + ttl: $ttl + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setResolver.graphql b/demos/ens/protocol/recipes/mutations/setResolver.graphql index 5352ad1894..b67ca42663 100644 --- a/demos/ens/protocol/recipes/mutations/setResolver.graphql +++ b/demos/ens/protocol/recipes/mutations/setResolver.graphql @@ -1,3 +1,10 @@ -mutation setResolver($domain: String!, $resolverAddress: String!, $registryAddress: String!) { - setResolver(domain: $domain, resolverAddress: $resolverAddress, registryAddress: $registryAddress) +mutation { + setResolver( + domain: $domain + resolverAddress: $resolverAddress + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql b/demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql index 1e53be7989..224daa01e6 100644 --- a/demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql +++ b/demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql @@ -1,9 +1,10 @@ -mutation setSubdomainOwner( - $subdomain: String!, $owner: String!, $registryAddress: String! -) { +mutation { setSubdomainOwner( subdomain: $subdomain owner: $owner registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql b/demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql index f1de6783ea..ee4a7ef359 100644 --- a/demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql +++ b/demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql @@ -1,5 +1,13 @@ -mutation setSubdomainRecord( - $domain: String!, $label: String!, $owner: String!, $resolverAddress: String!, $ttl: String!, $registryAddress: String! -) { - setSubdomainRecord(domain: $domain, label: $label, owner: $owner, resolverAddress: $resolverAddress, ttl: $ttl, registryAddress: $registryAddress) +mutation { + setSubdomainRecord( + domain: $domain + label: $label + owner: $owner + resolverAddress: $resolverAddress + ttl: $ttl + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) } \ No newline at end of file diff --git a/demos/ens/protocol/recipes/queries/getAddress.graphql b/demos/ens/protocol/recipes/queries/getAddress.graphql index 0d60450137..e9cfd6e9de 100644 --- a/demos/ens/protocol/recipes/queries/getAddress.graphql +++ b/demos/ens/protocol/recipes/queries/getAddress.graphql @@ -1,6 +1,9 @@ -query getAddress($domain: String!, $resolverAddress: String!) { +query { getAddress( - domain: $domain, + domain: $domain resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/queries/getContentHash.graphql b/demos/ens/protocol/recipes/queries/getContentHash.graphql index 33bd2be2b7..a0bfc35a55 100644 --- a/demos/ens/protocol/recipes/queries/getContentHash.graphql +++ b/demos/ens/protocol/recipes/queries/getContentHash.graphql @@ -1,6 +1,9 @@ -query getContentHash($domain: String!, $resolverAddress: String!) { +query { getContentHash( - domain: $domain, + domain: $domain resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/queries/getExpiryTimes.graphql b/demos/ens/protocol/recipes/queries/getExpiryTimes.graphql index 5bd71cfa23..f393a71ddb 100644 --- a/demos/ens/protocol/recipes/queries/getExpiryTimes.graphql +++ b/demos/ens/protocol/recipes/queries/getExpiryTimes.graphql @@ -1,6 +1,9 @@ -query getExpiryTimes($domain: String!, $registrarAddress: String!) { +query { getExpiryTimes( - domain: $domain, + domain: $domain registrarAddress: $registrarAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/queries/getNameFromAddress.graphql b/demos/ens/protocol/recipes/queries/getNameFromAddress.graphql index 1d018059fd..5a00ef475e 100644 --- a/demos/ens/protocol/recipes/queries/getNameFromAddress.graphql +++ b/demos/ens/protocol/recipes/queries/getNameFromAddress.graphql @@ -1,6 +1,9 @@ -query getNameFromAddress($address: String!, $registryAddress: String!) { +query { getNameFromAddress( - address: $address, + address: $address registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/queries/getOwner.graphql b/demos/ens/protocol/recipes/queries/getOwner.graphql index e1d0a65e99..f2ae7c81ef 100644 --- a/demos/ens/protocol/recipes/queries/getOwner.graphql +++ b/demos/ens/protocol/recipes/queries/getOwner.graphql @@ -1,6 +1,9 @@ -query getOwner($domain: String!, $registryAddress: String!) { +query { getOwner( - domain: $domain, + domain: $domain registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/recipes/queries/getResolver.graphql b/demos/ens/protocol/recipes/queries/getResolver.graphql index e6b36f9b21..7bd03033c8 100644 --- a/demos/ens/protocol/recipes/queries/getResolver.graphql +++ b/demos/ens/protocol/recipes/queries/getResolver.graphql @@ -1,6 +1,9 @@ -query getResolver($registryAddress: String!, $domain: String!) { +query { getResolver( - domain: $domain, + domain: $domain registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } ) } diff --git a/demos/ens/protocol/script/configure.ts b/demos/ens/protocol/script/configure.ts new file mode 100644 index 0000000000..91fa9a15f5 --- /dev/null +++ b/demos/ens/protocol/script/configure.ts @@ -0,0 +1,6 @@ +import { Web3ApiClient } from "@web3api/client-js"; + +// TODO: +// - deploy web3api to testnet at testnet/ens.eth +// - create Web3ApiClient pointed to rinkeby w/ signer($ETH_PRIV_KEY) +// - send queries diff --git a/demos/ens/protocol/src/mutation/index.ts b/demos/ens/protocol/src/mutation/index.ts index d04fac5e02..d800ab9e79 100644 --- a/demos/ens/protocol/src/mutation/index.ts +++ b/demos/ens/protocol/src/mutation/index.ts @@ -24,10 +24,7 @@ export function setResolver(input: Input_setResolver): string { address: input.registryAddress, method: "function setResolver(bytes32 node, address owner)", args: [namehash(input.domain), input.resolverAddress], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setResolverTx; @@ -40,10 +37,7 @@ export function registerDomain(input: Input_registerDomain): string { address: input.registrarAddress, method: "function register(bytes32 label, address owner)", args: [keccak256(label), input.owner], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return tx; @@ -54,10 +48,7 @@ export function setOwner(input: Input_setOwner): string { address: input.registryAddress, method: "function setOwner(bytes32 node, address owner) external", args: [namehash(input.domain), input.newOwner], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return tx @@ -72,10 +63,7 @@ export function setSubdomainOwner(input: Input_setSubdomainOwner): string { address: input.registryAddress, method: "function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external", args: [namehash(domain), keccak256(subdomainLabel), input.owner], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return tx @@ -86,10 +74,7 @@ export function setSubdomainRecord(input: Input_setSubdomainRecord): string { address: input.registryAddress, method: "function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl)", args: [namehash(input.domain), keccak256(input.label), input.owner, input.resolverAddress, input.ttl], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return tx @@ -101,10 +86,7 @@ export function setRecord(input: Input_setRecord): string { address: input.registryAddress, method: "function setRecord(bytes32 node, address owner, address resolver, uint64 ttl)", args: [namehash(input.domain), input.owner, input.resolverAddress, input.ttl], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return tx @@ -115,10 +97,7 @@ export function setName(input: Input_setName): string { address: input.reverseRegistryAddress, method: "function setName(string name)", args: [input.domain], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setNameTx; @@ -131,10 +110,7 @@ export function reverseRegisterDomain( address: input.reverseRegistryAddress, method: "function claim(address owner)", args: [input.owner], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); const setNameTx = setName({ @@ -150,10 +126,7 @@ export function setAddress(input: Input_setAddress): string { address: input.resolverAddress, method: "function setAddr(bytes32 node, address addr)", args: [namehash(input.domain), input.address], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setAddrTx; @@ -164,10 +137,7 @@ export function setContentHash(input: Input_setContentHash): string { address: input.resolverAddress, method: "function setContenthash(bytes32 node, bytes hash)", args: [namehash(input.domain), input.cid], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setContentHash; @@ -183,10 +153,7 @@ export function setAddressFromDomain(input: Input_setAddressFromDomain): string address: resolverAddress, method: "function setAddr(bytes32 node, address addr)", args: [namehash(input.domain), input.address], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setAddrTx; @@ -202,10 +169,7 @@ export function setContentHashFromDomain(input: Input_setContentHashFromDomain): address: resolverAddress, method: "function setContenthash(bytes32 node, bytes hash)", args: [namehash(input.domain), input.cid], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return setContentHash; @@ -216,13 +180,10 @@ export function deployFIFSRegistrar(input: Input_deployFIFSRegistrar): string { abi, bytecode, args: [input.registryAddress, namehash(input.tld)], - connection: { - networkNameOrChainId: "testnet", - node: null - }, - }) + connection: input.connection + }); - return address + return address; } //TODO: needs testing here with a recipe. Was tested in the Web3Hub @@ -232,11 +193,8 @@ export function registerSubnodeOwnerWithFIFSRegistrar(input: Input_registerSubno address: input.fifsRegistrarAddress, method: "function register(bytes32 label, address owner) external", args: [keccak256(input.label), input.owner], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); - return txHash + return txHash; } diff --git a/demos/ens/protocol/src/mutation/schema.graphql b/demos/ens/protocol/src/mutation/schema.graphql index a0e3dd8238..6b74296cca 100644 --- a/demos/ens/protocol/src/mutation/schema.graphql +++ b/demos/ens/protocol/src/mutation/schema.graphql @@ -1,18 +1,107 @@ -#import { Mutation } into Ethereum from "w3://ens/ethereum.web3api.eth" +#import { Mutation, Connection } into Ethereum from "w3://ens/ethereum.web3api.eth" +#import { Query } into UTS46 from "w3://ens/uts46.web3api.eth" +#import { Query } into SHA3 from "w3://ens/sha3.web3api.eth" type Mutation { - setResolver(domain: String!, resolverAddress: String!, registryAddress: String!): String! - registerDomain(domain: String!, registrarAddress: String!, registryAddress: String!, owner: String!): String! - reverseRegisterDomain(domain: String! reverseRegistryAddress: String!, owner: String!): String! - setName(domain: String!, reverseRegistryAddress: String!): String! - setAddress(domain: String!, address: String!, resolverAddress: String!): String! - setOwner(domain: String!, newOwner: String!, registryAddress: String!): String! - setSubdomainOwner(subdomain: String!, owner: String!, registryAddress: String!): String! - setRecord(domain: String!, owner: String!, resolverAddress: String!, ttl: String!, registryAddress: String!): String! - setSubdomainRecord(domain: String!, label: String!, owner: String!, resolverAddress: String!, ttl: String!, registryAddress: String!): String! - setContentHash(domain: String!, cid: String!, resolverAddress: String!): String! - setAddressFromDomain(domain: String!, address: String!, registryAddress: String!): String! - setContentHashFromDomain(domain: String!, cid: String!, registryAddress: String!): String! - deployFIFSRegistrar(registryAddress: String!, tld: String!): String! - registerSubnodeOwnerWithFIFSRegistrar(label: String!, owner: String!, fifsRegistrarAddress: String!): String! -} \ No newline at end of file + setResolver( + domain: String! + resolverAddress: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + registerDomain( + domain: String! + registrarAddress: String! + registryAddress: String! + owner: String! + connection: Ethereum_Connection + ): String! + + reverseRegisterDomain( + domain: String! + reverseRegistryAddress: String! + owner: String! + connection: Ethereum_Connection + ): String! + + setName( + domain: String! + reverseRegistryAddress: String! + connection: Ethereum_Connection + ): String! + + setAddress( + domain: String! + address: String! + resolverAddress: String! + connection: Ethereum_Connection + ): String! + + setOwner( + domain: String! + newOwner: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + setSubdomainOwner( + subdomain: String! + owner: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + setRecord( + domain: String! + owner: String! + resolverAddress: String! + ttl: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + setSubdomainRecord( + domain: String! + label: String! + owner: String! + resolverAddress: String! + ttl: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + setContentHash( + domain: String! + cid: String! + resolverAddress: String! + connection: Ethereum_Connection + ): String! + + setAddressFromDomain( + domain: String! + address: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + setContentHashFromDomain( + domain: String! + cid: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + deployFIFSRegistrar( + registryAddress: String! + tld: String! + connection: Ethereum_Connection + ): String! + + registerSubnodeOwnerWithFIFSRegistrar( + label: String! + owner: String! + fifsRegistrarAddress: String! + connection: Ethereum_Connection + ): String! +} diff --git a/demos/ens/protocol/src/query/index.ts b/demos/ens/protocol/src/query/index.ts index 1962ec5f65..43209025e5 100644 --- a/demos/ens/protocol/src/query/index.ts +++ b/demos/ens/protocol/src/query/index.ts @@ -20,10 +20,7 @@ export function getResolver(input: Input_getResolver): string { address: input.registryAddress, method: "function resolver(bytes32 node) external view returns (address)", args: [domain], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return resolverAddress; @@ -34,10 +31,7 @@ export function getOwner(input: Input_getOwner): string { address: input.registryAddress, method: "function owner(bytes32 node) external view returns (address)", args: [namehash(input.domain)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return owner; @@ -48,10 +42,7 @@ export function getAddress(input: Input_getAddress): string { address: input.resolverAddress, method: "function addr(bytes32 node) external view returns (address)", args: [namehash(input.domain)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return address; @@ -62,10 +53,7 @@ export function getContentHash(input: Input_getContentHash): string { address: input.resolverAddress, method: "function contenthash(bytes32 node) external view returns (bytes)", args: [namehash(input.domain)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return hash; @@ -83,10 +71,7 @@ export function getAddressFromDomain( address: resolverAddress, method: "function addr(bytes32 node) external view returns (address)", args: [namehash(input.domain)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return address; @@ -104,10 +89,7 @@ export function getContentHashFromDomain( address: resolverAddress, method: "function contenthash(bytes32 node) external view returns (bytes)", args: [namehash(input.domain)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return hash; @@ -121,10 +103,7 @@ export function getExpiryTimes(input: Input_getExpiryTimes): string { method: "function expiryTimes(bytes32 label) external view returns (uint256)", args: [keccak256(label)], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return expiryTime; @@ -137,10 +116,7 @@ export function getReverseResolver(input: Input_getReverseResolver): string { address: input.registryAddress, method: "function resolver(bytes32 node) external view returns (address)", args: [address], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return resolverAddress; @@ -158,10 +134,7 @@ export function getNameFromAddress(input: Input_getNameFromAddress): string { address: resolverAddress, method: "function name(bytes32 node) external view returns (string)", args: [address], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return name; @@ -176,10 +149,7 @@ export function getNameFromReverseResolver( address: input.resolverAddress, method: "function name(bytes32 node) external view returns (string)", args: [address], - connection: { - networkNameOrChainId: "testnet", - node: null - } + connection: input.connection }); return name; diff --git a/demos/ens/protocol/src/query/schema.graphql b/demos/ens/protocol/src/query/schema.graphql index c81d75c03f..84e582c9ab 100644 --- a/demos/ens/protocol/src/query/schema.graphql +++ b/demos/ens/protocol/src/query/schema.graphql @@ -1,16 +1,65 @@ -#import { Query } into Ethereum from "w3://ens/ethereum.web3api.eth" +#import { Query, Connection } into Ethereum from "w3://ens/ethereum.web3api.eth" #import { Query } into UTS46 from "w3://ens/uts46.web3api.eth" #import { Query } into SHA3 from "w3://ens/sha3.web3api.eth" type Query { - getResolver(registryAddress: String!, domain: String!): String! - getOwner(domain: String!, registryAddress: String!): String! - getAddress(domain: String!, resolverAddress: String!): String! - getAddressFromDomain(domain: String!, registryAddress: String!): String! - getContentHash(domain: String!, resolverAddress: String!): String! - getContentHashFromDomain(domain: String!, registryAddress: String!): String! - getExpiryTimes(domain: String!, registrarAddress: String!): String! - getReverseResolver(address: String!, registryAddress: String!): String! - getNameFromReverseResolver(address: String!, resolverAddress: String!): String! - getNameFromAddress(address: String!, registryAddress: String!): String! + getResolver( + registryAddress: String! + domain: String! + connection: Ethereum_Connection + ): String! + + getOwner( + domain: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + getAddress( + domain: String! + resolverAddress: String! + connection: Ethereum_Connection + ): String! + + getAddressFromDomain( + domain: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + getContentHash( + domain: String! + resolverAddress: String! + connection: Ethereum_Connection + ): String! + + getContentHashFromDomain( + domain: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + getExpiryTimes( + domain: String! + registrarAddress: String! + connection: Ethereum_Connection + ): String! + + getReverseResolver( + address: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! + + getNameFromReverseResolver( + address: String! + resolverAddress: String! + connection: Ethereum_Connection + ): String! + + getNameFromAddress( + address: String! + registryAddress: String! + connection: Ethereum_Connection + ): String! } diff --git a/demos/ens/protocol/src/utils.ts b/demos/ens/protocol/src/utils.ts index 62da560698..6dae74a8d9 100644 --- a/demos/ens/protocol/src/utils.ts +++ b/demos/ens/protocol/src/utils.ts @@ -1,4 +1,5 @@ -import { SHA3_Query, UTS46_Query } from "./query/w3/imported"; +import { SHA3_Query } from "./mutation/w3/imported/SHA3_Query"; +import { UTS46_Query } from "./mutation/w3/imported/UTS46_Query"; export function namehash (inputName: string): string { let node = '' From 203cccc463ff36bfe33b00568f766f81425909cd Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 22 Apr 2021 19:01:56 -0500 Subject: [PATCH 02/53] custom redirects + fix uts46 plugin folder name --- demos/ens/protocol/package.json | 2 +- demos/ens/protocol/recipes/constants.json | 8 ++++---- demos/ens/protocol/redirects.js | 13 +++++++++++++ packages/js/plugins/{idna-uts => uts46}/README.md | 0 .../js/plugins/{idna-uts => uts46}/jest.config.js | 0 .../js/plugins/{idna-uts => uts46}/package.json | 2 +- .../js/plugins/{idna-uts => uts46}/schema.graphql | 0 .../{idna-uts => uts46}/src/__tests__/index.test.ts | 0 .../js/plugins/{idna-uts => uts46}/src/index.ts | 2 +- .../js/plugins/{idna-uts => uts46}/src/manifest.ts | 0 .../js/plugins/{idna-uts => uts46}/src/resolvers.ts | 0 .../plugins/{idna-uts => uts46}/tsconfig.build.json | 0 .../js/plugins/{idna-uts => uts46}/tsconfig.json | 0 13 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 demos/ens/protocol/redirects.js rename packages/js/plugins/{idna-uts => uts46}/README.md (100%) rename packages/js/plugins/{idna-uts => uts46}/jest.config.js (100%) rename packages/js/plugins/{idna-uts => uts46}/package.json (96%) rename packages/js/plugins/{idna-uts => uts46}/schema.graphql (100%) rename packages/js/plugins/{idna-uts => uts46}/src/__tests__/index.test.ts (100%) rename packages/js/plugins/{idna-uts => uts46}/src/index.ts (89%) rename packages/js/plugins/{idna-uts => uts46}/src/manifest.ts (100%) rename packages/js/plugins/{idna-uts => uts46}/src/resolvers.ts (100%) rename packages/js/plugins/{idna-uts => uts46}/tsconfig.build.json (100%) rename packages/js/plugins/{idna-uts => uts46}/tsconfig.json (100%) diff --git a/demos/ens/protocol/package.json b/demos/ens/protocol/package.json index d267788ed7..dfba5885ac 100644 --- a/demos/ens/protocol/package.json +++ b/demos/ens/protocol/package.json @@ -10,7 +10,7 @@ "deploy": "yarn deploy:contract && yarn deploy:web3api", "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens ens.eth", "deploy:contract": "node ./deploy-contracts.js", - "test": "npx w3 query ./recipes/e2e.json --redirects ./redirects.ts" + "test": "npx w3 query ./recipes/e2e.json --redirects ./redirects.js" }, "devDependencies": { "@web3api/cli": "0.0.1-prealpha.21", diff --git a/demos/ens/protocol/recipes/constants.json b/demos/ens/protocol/recipes/constants.json index 2f5a995d4d..880fd49485 100644 --- a/demos/ens/protocol/recipes/constants.json +++ b/demos/ens/protocol/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0x47a2Db5D68751EeAdFBC44851E84AcDB4F7299Cc", - "Registrar": "0xF16165f1046f1B3cDB37dA25E835B986E696313A", - "Resolver": "0x988B6CFBf3332FF98FFBdED665b1F53a61f92612", - "Reverse": "0x8914a9E5C5E234fDC3Ce9dc155ec19F43947ab59", + "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", + "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", + "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", + "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/demos/ens/protocol/redirects.js b/demos/ens/protocol/redirects.js new file mode 100644 index 0000000000..082e1c8c05 --- /dev/null +++ b/demos/ens/protocol/redirects.js @@ -0,0 +1,13 @@ +var uts46 = require(__dirname + "/../../../node_modules/@web3api/uts46-plugin-js"); +var sha3 = require(__dirname + "/../../../node_modules/@web3api/sha3-plugin-js"); + +module.exports.redirects = [ + { + from: "ens/uts46.web3api.eth", + to: uts46.plugin() + }, + { + from: "ens/sha3.web3api.eth", + to: sha3.plugin() + } +]; diff --git a/packages/js/plugins/idna-uts/README.md b/packages/js/plugins/uts46/README.md similarity index 100% rename from packages/js/plugins/idna-uts/README.md rename to packages/js/plugins/uts46/README.md diff --git a/packages/js/plugins/idna-uts/jest.config.js b/packages/js/plugins/uts46/jest.config.js similarity index 100% rename from packages/js/plugins/idna-uts/jest.config.js rename to packages/js/plugins/uts46/jest.config.js diff --git a/packages/js/plugins/idna-uts/package.json b/packages/js/plugins/uts46/package.json similarity index 96% rename from packages/js/plugins/idna-uts/package.json rename to packages/js/plugins/uts46/package.json index 849b4464ff..1402b71f87 100644 --- a/packages/js/plugins/idna-uts/package.json +++ b/packages/js/plugins/uts46/package.json @@ -7,7 +7,7 @@ "type": "git", "url": "https://github.com/web3-api/monorepo.git" }, - "main": "build/idna-uts/src/index.js", + "main": "build/index.js", "files": [ "build", "schema.graphql" diff --git a/packages/js/plugins/idna-uts/schema.graphql b/packages/js/plugins/uts46/schema.graphql similarity index 100% rename from packages/js/plugins/idna-uts/schema.graphql rename to packages/js/plugins/uts46/schema.graphql diff --git a/packages/js/plugins/idna-uts/src/__tests__/index.test.ts b/packages/js/plugins/uts46/src/__tests__/index.test.ts similarity index 100% rename from packages/js/plugins/idna-uts/src/__tests__/index.test.ts rename to packages/js/plugins/uts46/src/__tests__/index.test.ts diff --git a/packages/js/plugins/idna-uts/src/index.ts b/packages/js/plugins/uts46/src/index.ts similarity index 89% rename from packages/js/plugins/idna-uts/src/index.ts rename to packages/js/plugins/uts46/src/index.ts index ae6f71cd1e..9504ce1a54 100644 --- a/packages/js/plugins/idna-uts/src/index.ts +++ b/packages/js/plugins/uts46/src/index.ts @@ -1,4 +1,4 @@ -import { manifest } from "../../ethereum/src/manifest"; +import { manifest } from "./manifest"; import { query } from "./resolvers"; import { diff --git a/packages/js/plugins/idna-uts/src/manifest.ts b/packages/js/plugins/uts46/src/manifest.ts similarity index 100% rename from packages/js/plugins/idna-uts/src/manifest.ts rename to packages/js/plugins/uts46/src/manifest.ts diff --git a/packages/js/plugins/idna-uts/src/resolvers.ts b/packages/js/plugins/uts46/src/resolvers.ts similarity index 100% rename from packages/js/plugins/idna-uts/src/resolvers.ts rename to packages/js/plugins/uts46/src/resolvers.ts diff --git a/packages/js/plugins/idna-uts/tsconfig.build.json b/packages/js/plugins/uts46/tsconfig.build.json similarity index 100% rename from packages/js/plugins/idna-uts/tsconfig.build.json rename to packages/js/plugins/uts46/tsconfig.build.json diff --git a/packages/js/plugins/idna-uts/tsconfig.json b/packages/js/plugins/uts46/tsconfig.json similarity index 100% rename from packages/js/plugins/idna-uts/tsconfig.json rename to packages/js/plugins/uts46/tsconfig.json From e8f0e32310a8e1583d6f568b03995c396bae99a8 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Sat, 24 Apr 2021 23:52:46 -0500 Subject: [PATCH 03/53] added open domain script, need to merge prealpha-dev to get it to work --- demos/ens/protocol/package.json | 4 +- demos/ens/protocol/recipes/constants.json | 8 +- demos/ens/protocol/script/configure.ts | 141 + demos/ens/protocol/script/create-domain.ts | 6 + demos/ens/protocol/yarn.lock | 3105 ++++++++++++++++++++ 5 files changed, 3259 insertions(+), 5 deletions(-) create mode 100644 demos/ens/protocol/script/create-domain.ts create mode 100644 demos/ens/protocol/yarn.lock diff --git a/demos/ens/protocol/package.json b/demos/ens/protocol/package.json index dfba5885ac..ab6247f679 100644 --- a/demos/ens/protocol/package.json +++ b/demos/ens/protocol/package.json @@ -17,6 +17,8 @@ "@web3api/ethereum-plugin-js": "0.0.1-prealpha.21", "@web3api/wasm-as": "0.0.1-prealpha.21", "ethers": "5.0.8", - "js-yaml": "3.14.0" + "js-yaml": "3.14.0", + "dotenv": "8.2.0", + "ts-node": "9.1.1" } } diff --git a/demos/ens/protocol/recipes/constants.json b/demos/ens/protocol/recipes/constants.json index 880fd49485..9c92d2e107 100644 --- a/demos/ens/protocol/recipes/constants.json +++ b/demos/ens/protocol/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", - "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", - "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", - "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", + "Registry": "0xA57B8a5584442B467b4689F1144D269d096A3daF", + "Registrar": "0xA94B7f0465E98609391C623d0560C5720a3f2D33", + "Resolver": "0x26b4AFb60d6C903165150C6F0AA14F8016bE4aec", + "Reverse": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/demos/ens/protocol/script/configure.ts b/demos/ens/protocol/script/configure.ts index 91fa9a15f5..1801c2de19 100644 --- a/demos/ens/protocol/script/configure.ts +++ b/demos/ens/protocol/script/configure.ts @@ -1,6 +1,147 @@ import { Web3ApiClient } from "@web3api/client-js"; +import { ipfsPlugin } from "@web3api/ipfs-plugin-js"; +import { ethereumPlugin, EthereumProvider } from "@web3api/ethereum-plugin-js"; +import { ensPlugin } from "@web3api/ens-plugin-js"; +import { uts46Plugin } from "@web3api/uts46-plugin-js"; +import { sha3Plugin } from "@web3api/sha3-plugin-js"; + +import { ethers, Wallet } from "ethers"; +import axios from "axios"; +import dotenv from "dotenv"; +dotenv.config(); // TODO: // - deploy web3api to testnet at testnet/ens.eth // - create Web3ApiClient pointed to rinkeby w/ signer($ETH_PRIV_KEY) // - send queries + +async function main() { + const uri = "ipfs/QmZKcHjxXHrWapE9MXDseVUEJqhFtrP6QGX1TUfcoQJfAx"; + const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; + // const resolverAddress = "0xf6305c19e814d2a75429Fd637d01F7ee0E77d615"; + const network = "rinkeby"; + const domain = "open.someopendomain.eth"; + const privKey = process.env.ETH_PRIV_KEY as string; + + if (!privKey) { + throw Error("ETH_PRIV_KEY env variable is missing"); + } + + // Get the test ens address + const { data } = await axios.get("http://localhost:4040/ens"); + const testnetEnsAddress = data.ensAddress as string; + + console.log(testnetEnsAddress) + + const client = new Web3ApiClient({ + redirects: [ + { + from: "w3://ens/uts46.web3api.eth", + to: uts46Plugin(), + }, + { + from: "w3://ens/sha3.web3api.eth", + to: sha3Plugin(), + }, + { + from: "w3://ens/ipfs.web3api.eth", + to: ipfsPlugin({ + provider: "http://localhost:5001", + fallbackProviders: ["https://ipfs.io"] + }), + }, + { + from: "w3://ens/ens.web3api.eth", + to: ensPlugin({ + addresses: { + testnet: testnetEnsAddress + } + }), + }, + { + from: "w3://ens/ethereum.web3api.eth", + to: ethereumPlugin({ + networks: { + rinkeby: { + provider: ethers.getDefaultProvider("rinkeby") as EthereumProvider, + signer: new Wallet(privKey) + }, + testnet: { + provider: "http://localhost:8545" + } + } + }), + } + ] + }) + + // Deploy a new instance of the FIFS registrar + const deployFifs = await client.query<{ + deployFIFSRegistrar: string + }>({ + uri, + query: `mutation { + deployFIFSRegistrar( + registryAddress: "${ensAddress}" + tld: "${domain}" + connection: { + networkNameOrChainId: "${network}" + } + ) + }` + }); + + if (!deployFifs.errors) { + console.log("Deployed FIFSRegistrar!") + console.log(deployFifs.data?.deployFIFSRegistrar); + } else { + throw Error(`Failed to deploy FIFSRegistrar: ${deployFifs.errors}`); + } + + const fifsAddress = deployFifs.data?.deployFIFSRegistrar; + + // Set the subdomain's owner to the FIFSRegistrar + const setOwner = await client.query<{ + setSubdomainOwner: string + }>({ + uri, + query: `mutation { + setSubdomainOwner( + subdomain: "${domain}" + owner: "${fifsAddress}" + registryAddress: "${ensAddress}" + connection: { + networkNameOrChainId: "${network}" + } + ) + }` + }) + + if (!setOwner.errors) { + console.log("Set Owner Succeeded!") + console.log(setOwner.data?.setSubdomainOwner); + } else { + throw Error(`Failed to Set Owner: ${setOwner.errors}`); + } +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(() => + process.exit(0) + ); + +/* +//PSEUDO-CODE Recipe to deploy and configure public subdomain +x const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" +x const publicResolverAddress = "0x..." +x const label = "mysubdomain" +const owner = "0x..." +x const domain = "public.domain.eth" + +x const fifsRegistrarAddress = await deployFIFSRegistrar(ensAddress, domain) +x await setSubdomainOwner(domain, fifsRegistrarAddress, ensAddress) +*/ diff --git a/demos/ens/protocol/script/create-domain.ts b/demos/ens/protocol/script/create-domain.ts new file mode 100644 index 0000000000..dbb8a06e99 --- /dev/null +++ b/demos/ens/protocol/script/create-domain.ts @@ -0,0 +1,6 @@ +/* +//PSEUDO-CODE Recipe to register subdomain under public subdomain + +await registerSubnodeOwnerWithFIFSRegistrar(label, owner, fifsRegistrarAddress) +await setResolver(`${label}.${domain}`, publicResolverAddress, ensAddress) +*/ diff --git a/demos/ens/protocol/yarn.lock b/demos/ens/protocol/yarn.lock new file mode 100644 index 0000000000..2740af3982 --- /dev/null +++ b/demos/ens/protocol/yarn.lock @@ -0,0 +1,3105 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@dorgjelli-test/ipfs-http-client-lite@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@dorgjelli-test/ipfs-http-client-lite/-/ipfs-http-client-lite-0.3.1.tgz#5514b4400e0c91ea64e0b5faf426ba808809ddfe" + integrity sha512-N96ilOlJnjnprOOIrwKjEA7lu67mbXyGmJO/vOBXQvY9AQw9XrPdIEn0x30bHwQ6pWSwN4RhIgJUy1/A7u/hEg== + dependencies: + abort-controller "^3.0.0" + async-iterator-to-pull-stream "^1.3.0" + buffer "^5.2.1" + cids "^0.7.1" + explain-error "^1.0.4" + form-data "^2.4.0" + iterable-ndjson "^1.1.0" + node-fetch "^2.6.0" + pull-stream-to-async-iterator "^1.0.2" + querystring "^0.2.0" + +"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.1.1.tgz#79525f582338d98660ac709c65b44c3c081ed2fc" + integrity sha512-UNmhRL4ngm1nCWvhJWRd55PvP1JWojGD4BR63JxyiiWZQAszYzaHHeYdRcj+NY3S0kV6SmAS2dZWSBOZPnXbSw== + dependencies: + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/abstract-provider@^5.0.0", "@ethersproject/abstract-provider@^5.0.3", "@ethersproject/abstract-provider@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.1.0.tgz#1f24c56cda5524ef4ed3cfc562a01d6b6f8eeb0b" + integrity sha512-8dJUnT8VNvPwWhYIau4dwp7qe1g+KgdRm4XTWvjkI9gAT2zZa90WF5ApdZ3vl1r6NDmnn6vUVvyphClRZRteTQ== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/networks" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/web" "^5.1.0" + +"@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.3", "@ethersproject/abstract-signer@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.1.0.tgz#744c7a2d0ebe3cc0bc38294d0f53d5ca3f4e49e3" + integrity sha512-qQDMkjGZSSJSKl6AnfTgmz9FSnzq3iEoEbHTYwjDlEAv+LNP7zd4ixCcVWlWyk+2siud856M5CRhAmPdupeN9w== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + +"@ethersproject/address@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.7.tgz#ee7fd7d3b3a400dec6035c7b3f0b7e4652207308" + integrity sha512-+63DiYG+2og6rFNvQmLlLw8i5LtyT65n+jtHd06Ic81rLHc+JUKRpeZFhBa+gqh9f+P8V0xtKR5NI/EHXOfgSw== + dependencies: + "@ethersproject/bignumber" "^5.0.10" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/rlp" "^5.0.3" + +"@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.3", "@ethersproject/address@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.1.0.tgz#3854fd7ebcb6af7597de66f847c3345dae735b58" + integrity sha512-rfWQR12eHn2cpstCFS4RF7oGjfbkZb0oqep+BfrT+gWEGWG2IowJvIsacPOvzyS1jhNF4MQ4BS59B04Mbovteg== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + +"@ethersproject/base64@^5.0.0", "@ethersproject/base64@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.1.0.tgz#27240c174d0a4e13f6eae87416fd876caf7f42b6" + integrity sha512-npD1bLvK4Bcxz+m4EMkx+F8Rd7CnqS9DYnhNu0/GlQBXhWjvfoAZzk5HJ0f1qeyp8d+A86PTuzLOGOXf4/CN8g== + dependencies: + "@ethersproject/bytes" "^5.1.0" + +"@ethersproject/basex@^5.0.0", "@ethersproject/basex@^5.0.3", "@ethersproject/basex@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.1.0.tgz#80da2e86f9da0cb5ccd446b337364d791f6a131c" + integrity sha512-vBKr39bum7DDbOvkr1Sj19bRMEPA4FnST6Utt6xhDzI7o7L6QNkDn2yrCfP+hnvJGhZFKtLygWwqlTBZoBXYLg== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + +"@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.10", "@ethersproject/bignumber@^5.0.6", "@ethersproject/bignumber@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.1.1.tgz#84812695253ccbc639117f7ac49ee1529b68e637" + integrity sha512-AVz5iqz7+70RIqoQTznsdJ6DOVBYciNlvO+AlQmPTB6ofCvoihI9bQdr6wljsX+d5W7Yc4nyvQvP4JMzg0Agig== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + bn.js "^4.4.0" + +"@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.1.0.tgz#55dfa9c4c21df1b1b538be3accb50fb76d5facfd" + integrity sha512-sGTxb+LVjFxJcJeUswAIK6ncgOrh3D8c192iEJd7mLr95V6du119rRfYT/b87WPkZ5I3gRBUYIYXtdgCWACe8g== + dependencies: + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.3", "@ethersproject/constants@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.1.0.tgz#4e7da6367ea0e9be87585d8b09f3fccf384b1452" + integrity sha512-0/SuHrxc8R8k+JiLmJymxHJbojUDWBQqO+b+XFdwaP0jGzqC09YDy/CAlSZB6qHsBifY8X3I89HcK/oMqxRdBw== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + +"@ethersproject/contracts@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.1.1.tgz#c66cb6d618fcbd73e20a6b808e8f768b2b781d0b" + integrity sha512-6WwktLJ0DFWU8pDkgH4IGttQHhQN4SnwKFu9h+QYVe48VGWtbDu4W8/q/7QA1u/HWlWMrKxqawPiZUJj0UMvOw== + dependencies: + "@ethersproject/abi" "^5.1.0" + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + +"@ethersproject/hash@^5.0.0", "@ethersproject/hash@^5.0.3", "@ethersproject/hash@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.1.0.tgz#40961d64837d57f580b7b055e0d74174876d891e" + integrity sha512-fNwry20yLLPpnRRwm3fBL+2ksgO+KMadxM44WJmRIoTKzy4269+rbq9KFoe2LTqq2CXJM2CE70beGaNrpuqflQ== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/hdnode@^5.0.0", "@ethersproject/hdnode@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.1.0.tgz#2bf5c4048935136ce83e9242e1bd570afcc0bc83" + integrity sha512-obIWdlujloExPHWJGmhJO/sETOOo7SEb6qemV4f8kyFoXg+cJK+Ta9SvBrj7hsUK85n3LZeZJZRjjM7oez3Clg== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/basex" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/pbkdf2" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/wordlists" "^5.1.0" + +"@ethersproject/json-wallets@^5.0.0", "@ethersproject/json-wallets@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.1.0.tgz#bba7af2e520e8aea4d3829d80520db5d2e4fb8d2" + integrity sha512-00n2iBy27w8zrGZSiU762UOVuzCQZxUZxopsZC47++js6xUFuI74DHcJ5K/2pddlF1YBskvmMuboEu1geK8mnA== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hdnode" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/pbkdf2" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.1.0.tgz#fdcd88fb13bfef4271b225cdd8dec4d315c8e60e" + integrity sha512-vrTB1W6AEYoadww5c9UyVJ2YcSiyIUTNDRccZIgwTmFFoSHwBtcvG1hqy9RzJ1T0bMdATbM9Hfx2mJ6H0i7Hig== + dependencies: + "@ethersproject/bytes" "^5.1.0" + js-sha3 "0.5.7" + +"@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.1.0.tgz#4cdeeefac029373349d5818f39c31b82cc6d9bbf" + integrity sha512-wtUaD1lBX10HBXjjKV9VHCBnTdUaKQnQ2XSET1ezglqLdPdllNOIlLfhyCRqXm5xwcjExVI5ETokOYfjPtaAlw== + +"@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.0.3", "@ethersproject/networks@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.1.0.tgz#f537290cb05aa6dc5e81e910926c04cfd5814bca" + integrity sha512-A/NIrIED/G/IgU1XUukOA3WcFRxn2I4O5GxsYGA5nFlIi+UZWdGojs85I1VXkR1gX9eFnDXzjE6OtbgZHjFhIA== + dependencies: + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.1.0.tgz#6b740a85dc780e879338af74856ca2c0d3b24d19" + integrity sha512-B8cUbHHTgs8OtgJIafrRcz/YPDobVd5Ru8gTnShOiM9EBuFpYHQpq3+8iQJ6pyczDu6HP/oc/njAsIBhwFZYew== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + +"@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.1.0.tgz#9484bd6def16595fc6e4bdc26f29dff4d3f6ac42" + integrity sha512-519KKTwgmH42AQL3+GFV3SX6khYEfHsvI6v8HYejlkigSDuqttdgVygFTDsGlofNFchhDwuclrxQnD5B0YLNMg== + dependencies: + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/providers@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.7.tgz#8dfb9eacb36d3c05c08831f71ad43fb46d2aaec6" + integrity sha512-lT+w/w2PKX9oyddX0DTBYl2CVHJTJONZP5HLJ3MzVvSA5dTOdiJ9Sx5rpqR7Tw+mxVA9xPjanoNCaPPIT7cykQ== + dependencies: + "@ethersproject/abstract-provider" "^5.0.3" + "@ethersproject/abstract-signer" "^5.0.3" + "@ethersproject/address" "^5.0.3" + "@ethersproject/basex" "^5.0.3" + "@ethersproject/bignumber" "^5.0.6" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.3" + "@ethersproject/hash" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/networks" "^5.0.3" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/random" "^5.0.3" + "@ethersproject/rlp" "^5.0.3" + "@ethersproject/sha2" "^5.0.3" + "@ethersproject/strings" "^5.0.3" + "@ethersproject/transactions" "^5.0.3" + "@ethersproject/web" "^5.0.4" + bech32 "1.1.4" + ws "7.2.3" + +"@ethersproject/providers@^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.1.2.tgz#4e4459698903f911402fe91aa7544eb07f3921ed" + integrity sha512-GqsS8rd+eyd4eNkcNgzZ4l9IRULBPUZa7JPnv22k4MHflMobUseyhfbVnmoN5bVNNkOxjV1IPTw9i0sV1hwdpg== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/basex" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/networks" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/web" "^5.1.0" + bech32 "1.1.4" + ws "7.2.3" + +"@ethersproject/random@^5.0.0", "@ethersproject/random@^5.0.3", "@ethersproject/random@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.1.0.tgz#0bdff2554df03ebc5f75689614f2d58ea0d9a71f" + integrity sha512-+uuczLQZ4+no9cP6TCoCktXx0u2YbNaRT7lRkSt12d8263e702f0u+4JnnRO8Qmv5nylWJebnqCHzyxP+6mLqw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/rlp@^5.0.0", "@ethersproject/rlp@^5.0.3", "@ethersproject/rlp@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.1.0.tgz#700f4f071c27fa298d3c1d637485fefe919dd084" + integrity sha512-vDTyHIwNPrecy55gKGZ47eJZhBm8LLBxihzi5ou+zrSvYTpkSTWRcKUlXFDFQVwfWB+P5PGyERAdiDEI76clxw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/sha2@^5.0.0", "@ethersproject/sha2@^5.0.3", "@ethersproject/sha2@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.1.0.tgz#6ca42d1a26884b3e32ffa943fe6494af7211506c" + integrity sha512-+fNSeZRstOpdRJpdGUkRONFCaiAqWkc91zXgg76Nlp5ndBQE25Kk5yK8gCPG1aGnCrbariiPr5j9DmrYH78JCA== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + hash.js "1.1.3" + +"@ethersproject/signing-key@^5.0.0", "@ethersproject/signing-key@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.1.0.tgz#6eddfbddb6826b597b9650e01acf817bf8991b9c" + integrity sha512-tE5LFlbmdObG8bY04NpuwPWSRPgEswfxweAI1sH7TbP0ml1elNfqcq7ii/3AvIN05i5U0Pkm3Tf8bramt8MmLw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + bn.js "^4.4.0" + elliptic "6.5.4" + +"@ethersproject/solidity@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.1.0.tgz#095a9c75244edccb26c452c155736d363399b954" + integrity sha512-kPodsGyo9zg1g9XSXp1lGhFaezBAUUsAUB1Vf6OkppE5Wksg4Et+x3kG4m7J/uShDMP2upkJtHNsIBK2XkVpKQ== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.3", "@ethersproject/strings@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.1.0.tgz#0f95a56c3c8c9d5510a06c241d818779750e2da5" + integrity sha512-perBZy0RrmmL0ejiFGUOlBVjMsUceqLut3OBP3zP96LhiJWWbS8u1NqQVgN4/Gyrbziuda66DxiQocXhsvx+Sw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.3", "@ethersproject/transactions@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.1.1.tgz#5a6bbb25fb062c3cc75eb0db12faefcdd3870813" + integrity sha512-Nwgbp09ttIVN0OoUBatCXaHxR7grWPHbozJN8v7AXDLrl6nnOIBEMDh+yJTnosSQlFhcyjfTGGN+Mx6R8HdvMw== + dependencies: + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + +"@ethersproject/units@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.1.0.tgz#b6ab3430ebc22adc3cb4839516496f167bee3ad5" + integrity sha512-isvJrx6qG0nKWfxsGORNjmOq/nh175fStfvRTA2xEKrGqx8JNJY83fswu4GkILowfriEM/eYpretfJnfzi7YhA== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/wallet@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.1.0.tgz#134c5816eaeaa586beae9f9ff67891104a2c9a15" + integrity sha512-ULmUtiYQLTUS+y3DgkLzRhFEK10zMwmjOthnjiZxee3Q/MVwr3rnmuAnXIUZrPjna6hvUPnyRIdW5XuF0Ld0YQ== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/hdnode" "^5.1.0" + "@ethersproject/json-wallets" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/wordlists" "^5.1.0" + +"@ethersproject/web@^5.0.0", "@ethersproject/web@^5.0.4", "@ethersproject/web@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.1.0.tgz#ed56bbe4e3d9a8ffe3b2ed882da5c62d3551381b" + integrity sha512-LTeluWgTq04+RNqAkVhpydPcRZK/kKxD2Vy7PYGrAD27ABO9kTqTBKwiOuzTyAHKUQHfnvZbXmxBXJAGViSDcA== + dependencies: + "@ethersproject/base64" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.1.0.tgz#54eb9ef3a00babbff90ffe124e19c89e07e6aace" + integrity sha512-NsUCi/TpBb+oTFvMSccUkJGtp5o/84eOyqp5q5aBeiNBSLkYyw21znRn9mAmxZgySpxgruVgKbaapnYPgvctPQ== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@formatjs/ecma402-abstract@1.6.2": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.2.tgz#9d064a2cf790769aa6721e074fb5d5c357084bb9" + integrity sha512-aLBODrSRhHaL/0WdQ0T2UsGqRbdtRRHqqrs4zwNQoRsGBEtEAvlj/rgr6Uea4PSymVJrbZBoAyECM2Z3Pq4i0g== + dependencies: + tslib "^2.1.0" + +"@formatjs/intl-datetimeformat@3.2.12": + version "3.2.12" + resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.12.tgz#c9b2e85f0267ee13ea615a8991995da3075e3b13" + integrity sha512-qvY5+dl3vlgH0iWRXwl8CG9UkSVB5uP2+HH//fyZZ01G4Ww5rxMJmia1SbUqatpoe/dX+Z+aLejCqUUyugyL2g== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + tslib "^2.1.0" + +"@formatjs/intl-displaynames@4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.10.tgz#5bbd1bbcd64a036b4be27798b650c864dcf4466a" + integrity sha512-KmYJQHynGnnMeqIWVXhbzCMcEC8lg1TfGVdcO9May6paDT+dksZoOBQc741t7iXi/YVO/wXEZdmXhUNX7ODZug== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + tslib "^2.1.0" + +"@formatjs/intl-listformat@5.0.10": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.10.tgz#9f8c4ad5e8a925240e151ba794c41fba01f742cc" + integrity sha512-FLtrtBPfBoeteRlYcHvThYbSW2YdJTllR0xEnk6cr/6FRArbfPRYMzDpFYlESzb5g8bpQMKZy+kFQ6V2Z+5KaA== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + tslib "^2.1.0" + +"@formatjs/intl-relativetimeformat@8.1.2": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.1.2.tgz#119f3dce97458991f86bf34a736880e4a7bc1697" + integrity sha512-LZUxbc9GHVGmDc4sqGAXugoxhvZV7EG2lG2c0aKERup2ixvmDMbbEN3iEEr5aKkP7YyGxXxgqDn2dwg7QCPR6Q== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + tslib "^2.1.0" + +"@formatjs/intl@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.8.2.tgz#6090e6c1826a92e70668dfe08b4ba30127ea3a85" + integrity sha512-9xHoNKPv4qQIQ5AVfpQbIPZanz50i7oMtZWrd6Fz7Q2GM/5uhBr9mrCrY1tz/+diP7uguKmhj1IweLYaxY3DTQ== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + "@formatjs/intl-datetimeformat" "3.2.12" + "@formatjs/intl-displaynames" "4.0.10" + "@formatjs/intl-listformat" "5.0.10" + "@formatjs/intl-relativetimeformat" "8.1.2" + fast-memoize "^2.5.2" + intl-messageformat "9.5.2" + intl-messageformat-parser "6.4.2" + tslib "^2.1.0" + +"@msgpack/msgpack@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-2.3.0.tgz#a9043b920837b2dd63482e7bf6b8345813e9816b" + integrity sha512-xxRejzNpiVQ2lzxMG/yo2ocfZSk+cKo2THq54AimaubMucg66DpQm9Yj7ESMr/l2EqDkmF2Dx4r0F/cbsitAaw== + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@web3api/cli@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/cli/-/cli-0.0.1-prealpha.21.tgz#6a34b5aa6f1f5b7deff291d2ae3b308f8e2fef03" + integrity sha512-7ZUGQP7Zq1qTzWM5EVqsS7c9U7p8vGqwyTSHdemOtm6Exn4V8CywjbpcuWATcoJTbs98dni7OYvep4mggJwu6g== + dependencies: + "@formatjs/intl" "1.8.2" + "@web3api/client-js" "0.0.1-prealpha.21" + "@web3api/client-test-env" "0.0.1-prealpha.21" + "@web3api/core-js" "0.0.1-prealpha.21" + "@web3api/ens-plugin-js" "0.0.1-prealpha.21" + "@web3api/ethereum-plugin-js" "0.0.1-prealpha.21" + "@web3api/ipfs-plugin-js" "0.0.1-prealpha.21" + "@web3api/schema-bind" "0.0.1-prealpha.21" + "@web3api/schema-compose" "0.0.1-prealpha.21" + "@web3api/schema-parse" "0.0.1-prealpha.21" + assemblyscript "0.17.14" + axios "0.19.2" + chalk "4.1.0" + chokidar "3.5.1" + fs-extra "9.0.1" + gluegun "4.6.1" + graphql-tag "2.11.0" + ipfs-http-client "48.1.3" + js-yaml "3.14.0" + mustache "4.0.1" + ora "4.0.0" + os-locale "5.0.0" + spawn-command "0.0.2-1" + ws "7.3.1" + +"@web3api/client-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/client-js/-/client-js-0.0.1-prealpha.21.tgz#ff8031d82cc4f28d3cce94bb0e36c73e9a9c2fb6" + integrity sha512-b0KEwCNflY3jgSRY9Rm8rtcyWIYM98UZP02zFbKG9uPjAf8OPhs2f426B6urrxlGJqf4m01jyCC+6lkgGfT87Q== + dependencies: + "@msgpack/msgpack" "2.3.0" + "@web3api/core-js" "0.0.1-prealpha.21" + "@web3api/ens-plugin-js" "0.0.1-prealpha.21" + "@web3api/ethereum-plugin-js" "0.0.1-prealpha.21" + "@web3api/ipfs-plugin-js" "0.0.1-prealpha.21" + "@web3api/logger-plugin-js" "0.0.1-prealpha.21" + "@web3api/schema-parse" "0.0.1-prealpha.21" + graphql "15.5.0" + js-yaml "3.14.0" + web-worker "1.0.0" + +"@web3api/client-test-env@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/client-test-env/-/client-test-env-0.0.1-prealpha.21.tgz#c881bdcfcb0a1f6019ba06e3ac3fd6b9795ddb0c" + integrity sha512-OgVzbkg1AInec2OOH8/H3FhBNRIHqp0LM132MJ3F1KWuA1Shp1CF9vPS9cIhumS2O9mDklV7MCyjXZ0Iuqbwyg== + +"@web3api/core-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/core-js/-/core-js-0.0.1-prealpha.21.tgz#58a55a796bc1a1364401f97c7f1013388d0e9ffc" + integrity sha512-DBnRrQv2pVUzLmimG6hJ6VlYdG34NE0GqC0IvpicQ0vFERoR7jkgRMELpY0S77mZ03pjC3FXRb+QA0azGtPmWA== + dependencies: + "@web3api/manifest-schema" "0.0.1-prealpha.21" + graphql "15.5.0" + graphql-tag "2.10.4" + js-yaml "3.14.0" + jsonschema "1.4.0" + semver "7.3.4" + +"@web3api/ens-plugin-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/ens-plugin-js/-/ens-plugin-js-0.0.1-prealpha.21.tgz#72cbf68ae35620db5fc4beff4c40ee1362d389a9" + integrity sha512-AWckkLdXXfnGMhre5GtnQIQXUrp5RH0kUXlxDeGU/uiTXQdoNyUvZySiBzn79eIJkM0K4sBuGIiFodc4bYW5nQ== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.21" + ethers "5.0.7" + +"@web3api/ethereum-plugin-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/ethereum-plugin-js/-/ethereum-plugin-js-0.0.1-prealpha.21.tgz#ba90728d020eea9e0b4b974638557a60395292b1" + integrity sha512-BiYSM/zxUJ037WgsX9aTEvtznFt0pJ4tp8aCNro5P53jpmUx/PLqs3RV64eklX8ksYlxtdc6exYBfWNaN9m8Dw== + dependencies: + "@ethersproject/address" "5.0.7" + "@ethersproject/providers" "5.0.7" + "@web3api/core-js" "0.0.1-prealpha.21" + ethers "5.0.7" + +"@web3api/ipfs-plugin-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/ipfs-plugin-js/-/ipfs-plugin-js-0.0.1-prealpha.21.tgz#977221411004c77841019df2a723c9790f917b00" + integrity sha512-RecWEvXF8NA3OwUNi46kohEJbiUbwlmndmil+RKqrC8y5K76LtL5ZrD22FiUbQAVz4Q/LI1Po2g2CihbejK3Yg== + dependencies: + "@dorgjelli-test/ipfs-http-client-lite" "0.3.1" + "@web3api/core-js" "0.0.1-prealpha.21" + abort-controller "3.0.0" + cids "^1.1.4" + is-ipfs "1.0.3" + +"@web3api/logger-plugin-js@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/logger-plugin-js/-/logger-plugin-js-0.0.1-prealpha.21.tgz#9283649912d22d1b1225546d81839c962354870f" + integrity sha512-ndmL7ac/iAHBHrTYd1L9ta0oiqamXxAS1uMBkA8DTDDSM55hQXyg6GKrfMNxpMHrO4JwdPkUvXcFj44M3GEOGQ== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.21" + +"@web3api/manifest-schema@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/manifest-schema/-/manifest-schema-0.0.1-prealpha.21.tgz#41bcdcac821b38fc6623b7ac3513440eebb816bd" + integrity sha512-it0/XkL5PpjLKuKsax57Ozo+Fgz19z46+0/sVYRlTzQwNTlikFkZZ2Sw+1WYNDk8tMAGgVvfCWTZhHWgOzCGZg== + +"@web3api/schema-bind@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/schema-bind/-/schema-bind-0.0.1-prealpha.21.tgz#624bf406c0d1a80feb2edc08811f043f8334d087" + integrity sha512-e3HgDiKEmBsvLl8/JAMCh8cVKMA4ZXpu8LyN7VymPdEQoJXuyRFpMRwvLMqHZzDHYpQm5D4K1czst1hypB3OSw== + dependencies: + "@web3api/schema-parse" "0.0.1-prealpha.21" + mustache "4.0.1" + +"@web3api/schema-compose@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/schema-compose/-/schema-compose-0.0.1-prealpha.21.tgz#2eaee99227e43a7ee05cd2a6f32a5b0d88b8b72c" + integrity sha512-1QYqyW4lpn1kTwgMb9vALb6+h2I21L5iGBmEt2oeeXHoYaWwEgisKu5eSA8URuF3gVPYwRz5v54c6cXYa0IHwg== + dependencies: + "@web3api/schema-parse" "0.0.1-prealpha.21" + graphql "15.5.0" + mustache "4.0.1" + +"@web3api/schema-parse@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/schema-parse/-/schema-parse-0.0.1-prealpha.21.tgz#ace0f31fd915150d017161c5c57d67af99b3413b" + integrity sha512-SBxzzoreTsERPePZx6AbczJq5MzA0LrBgx6sviXw7xD3MQ/woygeXr3fl++ueghy/nqOZnojfRwBRNikAJvBMA== + dependencies: + graphql "15.5.0" + graphql-schema-cycles "1.1.2" + +"@web3api/wasm-as@0.0.1-prealpha.21": + version "0.0.1-prealpha.21" + resolved "https://registry.yarnpkg.com/@web3api/wasm-as/-/wasm-as-0.0.1-prealpha.21.tgz#ffb383f6b0013686aefaf87e2dc5767d6dca51b2" + integrity sha512-QuGSlhhgR2ncXFh9dPWR9timfkT8fGwrnYbodCvG7wFOBNpDZDDJtAHEIMafr4VPgfxKSxPBQi/o1FTO7T3qqw== + +"@zxing/text-encoding@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + +abort-controller@3.0.0, abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + +ansi-colors@^3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-signal@^2.0.0, any-signal@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + +anymatch@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apisauce@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.1.tgz#0b8bc7f2544e6ef710a6fa1d6f49583856940dd2" + integrity sha512-P4SsLvmsH8BLLruBn/nsO+65j+ChZlGQ2zC5avCIjbWstYS4PgjxeVWtbeVwFGEWX7dEkLp85OvdapGXy1zS8g== + dependencies: + axios "^0.21.1" + ramda "^0.25.0" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +assemblyscript@0.17.14: + version "0.17.14" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.17.14.tgz#9ea4a04a50dc53042b35d492fff947101ae00248" + integrity sha512-TLuwNvZAIH26wu2puKpAJokzLp10kJkVXxbgDjFFmbW9VF/qg7rkmi0hjsiu41bjoH1UaVgY4vYvbbUeOHtKyg== + dependencies: + binaryen "98.0.0-nightly.20201109" + long "^4.0.0" + +async-iterator-to-pull-stream@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/async-iterator-to-pull-stream/-/async-iterator-to-pull-stream-1.3.0.tgz#3a6b9f3cceadff972ca20eb480e3cb43f8789732" + integrity sha512-NjyhAEz/sx32olqgKIk/2xbWEM6o8qef1yetIgb0U/R3oBgndP1kE/0CslowH3jvnA94BO4I6OXpOkTKH7Z1AA== + dependencies: + get-iterator "^1.0.2" + pull-stream-to-async-iterator "^1.0.1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + +axios@0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bignumber.js@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binaryen@98.0.0-nightly.20201109: + version "98.0.0-nightly.20201109" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz#512bf6ca15c67bf7402144734a4836e63993aa05" + integrity sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw== + +bl@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" + integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= + +blob-to-it@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.2.tgz#bc76550638ca13280dbd3f202422a6a132ffcc8d" + integrity sha512-yD8tikfTlUGEOSHExz4vDCIQFLaBPXIL0KcxGQt9RbwMVXBEh+jokdJyStvTXPgWrdKfwgk7RX8GPsgrYzsyng== + dependencies: + browser-readablestream-to-it "^1.0.2" + +bn.js@^4.11.9, bn.js@^4.4.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +borc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" + integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== + dependencies: + bignumber.js "^9.0.0" + buffer "^5.5.0" + commander "^2.15.0" + ieee754 "^1.1.13" + iso-url "~0.4.7" + json-text-sequence "~0.1.0" + readable-stream "^3.6.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.2.tgz#f6b8d18e7a35b0321359261a32aa2c70f46921c4" + integrity sha512-lv4M2Z6RKJpyJijJzBQL5MNssS7i8yedl+QkhnLCyPtgNGNSXv1KthzUnye9NlRAtBAI80X6S9i+vK09Rzjcvg== + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cids@^1.0.0, cids@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.6.tgz#ac7aea7dbcabaa64ca242b5d970d596a5c34d006" + integrity sha512-5P+Jas2bVpjiHibp/SOwKY+v7JhAjTChaAZN+vCIrsWXn/JZV0frX22Vp5zZgEyJRPco79pX+yNQ2S3LkRukHQ== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^2.1.3" + +cids@~0.8.0: + version "0.8.3" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" + integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== + dependencies: + buffer "^5.6.0" + class-is "^1.1.0" + multibase "^1.0.0" + multicodec "^1.0.1" + multihashes "^1.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + +cli-table3@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.1.2, colors@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.15.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cosmiconfig@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^4.1.1, debug@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dns-over-http-resolver@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.2.tgz#148740c1b14d81b78078a1af1d606f2d0c6cc255" + integrity sha512-4J7LoLl26mczU6LdWlhvNM51aWXHJmTz6iDUrGz1sqiAgNb6HzBc/huvkgqS6bYfbCzvlOKW/bGkugReliac0A== + dependencies: + debug "^4.2.0" + native-fetch "^3.0.0" + receptacle "^1.3.2" + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-fetch@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.7.3.tgz#06cf363d7f64073ec00a37e9949ec9d29ce6b08a" + integrity sha512-1AVMaxrHXTTMqd7EK0MGWusdqNr07Rpj8Th6bG4at0oNgIi/1LBwa9CjT/0Zy+M0k/tSJPS04nFxHj0SXDVgVw== + dependencies: + encoding "^0.1.13" + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" + integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== + dependencies: + ansi-colors "^3.2.1" + +err-code@^2.0.0, err-code@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +err-code@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +ethers@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.7.tgz#41c3d774e0a57bfde12b0198885789fb41a14976" + integrity sha512-1Zu9s+z4BgsDAZcGIYACJdWBB6mVtCCmUonj68Njul7STcSdgwOyj0sCAxCUr2Nsmsamckr4E12q3ecvZPGAUw== + dependencies: + "@ethersproject/abi" "^5.0.0" + "@ethersproject/abstract-provider" "^5.0.0" + "@ethersproject/abstract-signer" "^5.0.0" + "@ethersproject/address" "^5.0.0" + "@ethersproject/base64" "^5.0.0" + "@ethersproject/bignumber" "^5.0.0" + "@ethersproject/bytes" "^5.0.0" + "@ethersproject/constants" "^5.0.0" + "@ethersproject/contracts" "^5.0.0" + "@ethersproject/hash" "^5.0.0" + "@ethersproject/hdnode" "^5.0.0" + "@ethersproject/json-wallets" "^5.0.0" + "@ethersproject/keccak256" "^5.0.0" + "@ethersproject/logger" "^5.0.0" + "@ethersproject/networks" "^5.0.0" + "@ethersproject/pbkdf2" "^5.0.0" + "@ethersproject/properties" "^5.0.0" + "@ethersproject/providers" "^5.0.0" + "@ethersproject/random" "^5.0.0" + "@ethersproject/rlp" "^5.0.0" + "@ethersproject/sha2" "^5.0.0" + "@ethersproject/signing-key" "^5.0.0" + "@ethersproject/solidity" "^5.0.0" + "@ethersproject/strings" "^5.0.0" + "@ethersproject/transactions" "^5.0.0" + "@ethersproject/units" "^5.0.0" + "@ethersproject/wallet" "^5.0.0" + "@ethersproject/web" "^5.0.0" + "@ethersproject/wordlists" "^5.0.0" + +ethers@5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.8.tgz#c13d0fdf5e66db8085e2036d3309ed2f8a17ed89" + integrity sha512-of/rPgJ7E3yyBADUv5A7Gtkd7EB8ta/T9NS5CCG9tj9cifnXcI3KIdYQ7d8AS+9vm38pR1g6S5I+Q/mRnlQZlg== + dependencies: + "@ethersproject/abi" "^5.0.0" + "@ethersproject/abstract-provider" "^5.0.0" + "@ethersproject/abstract-signer" "^5.0.0" + "@ethersproject/address" "^5.0.0" + "@ethersproject/base64" "^5.0.0" + "@ethersproject/basex" "^5.0.0" + "@ethersproject/bignumber" "^5.0.0" + "@ethersproject/bytes" "^5.0.0" + "@ethersproject/constants" "^5.0.0" + "@ethersproject/contracts" "^5.0.0" + "@ethersproject/hash" "^5.0.0" + "@ethersproject/hdnode" "^5.0.0" + "@ethersproject/json-wallets" "^5.0.0" + "@ethersproject/keccak256" "^5.0.0" + "@ethersproject/logger" "^5.0.0" + "@ethersproject/networks" "^5.0.0" + "@ethersproject/pbkdf2" "^5.0.0" + "@ethersproject/properties" "^5.0.0" + "@ethersproject/providers" "^5.0.0" + "@ethersproject/random" "^5.0.0" + "@ethersproject/rlp" "^5.0.0" + "@ethersproject/sha2" "^5.0.0" + "@ethersproject/signing-key" "^5.0.0" + "@ethersproject/solidity" "^5.0.0" + "@ethersproject/strings" "^5.0.0" + "@ethersproject/transactions" "^5.0.0" + "@ethersproject/units" "^5.0.0" + "@ethersproject/wallet" "^5.0.0" + "@ethersproject/web" "^5.0.0" + "@ethersproject/wordlists" "^5.0.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +execa@^3.0.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +explain-error@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" + integrity sha1-p5PTrAytTGq1cemWj7urbLJTKSk= + +fast-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.0.0.tgz#9bc72e6860347bb045a876d1c5c0af11e9b984e7" + integrity sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ== + +fast-memoize@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" + integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.10.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" + integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +form-data@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-jetpack@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" + integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== + dependencies: + minimatch "^3.0.2" + rimraf "^2.6.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globalthis@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" + integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== + dependencies: + define-properties "^1.1.3" + +gluegun@4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/gluegun/-/gluegun-4.6.1.tgz#f2a65d20378873de87a2143b8c3939ffc9a9e2b6" + integrity sha512-Jd5hV1Uku2rjBg59mYA/bnwLwynK7u9A1zmK/LIb/p5d3pzjDCKRjWFuxZXyPwl9rsvKGhJUQxkFo2HEy8crKQ== + dependencies: + apisauce "^2.0.1" + app-module-path "^2.2.0" + cli-table3 "~0.5.0" + colors "^1.3.3" + cosmiconfig "6.0.0" + cross-spawn "^7.0.0" + ejs "^2.6.1" + enquirer "2.3.4" + execa "^3.0.0" + fs-jetpack "^2.2.2" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.lowercase "^4.3.0" + lodash.lowerfirst "^4.3.1" + lodash.pad "^4.5.1" + lodash.padend "^4.6.1" + lodash.padstart "^4.6.1" + lodash.repeat "^4.1.0" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.trim "^4.5.1" + lodash.trimend "^4.5.1" + lodash.trimstart "^4.5.1" + lodash.uppercase "^4.3.0" + lodash.upperfirst "^4.3.1" + ora "^4.0.0" + pluralize "^8.0.0" + ramdasauce "^2.1.0" + semver "^7.0.0" + which "^2.0.0" + yargs-parser "^16.1.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +graphql-json-transform@^1.1.0-alpha.0: + version "1.1.0-alpha.0" + resolved "https://registry.yarnpkg.com/graphql-json-transform/-/graphql-json-transform-1.1.0-alpha.0.tgz#fb0c88d24840067e6c55ac64bbc8d4e5de245d2d" + integrity sha512-I6lR/lYEezSz4iru0f7a/wR8Rzi3pCafk7S0bX2b/WQOtK0vKabxLShGBXIslsi0arMehIjvOPHJl7MpOUqj0w== + +graphql-schema-cycles@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/graphql-schema-cycles/-/graphql-schema-cycles-1.1.2.tgz#925d65d774d296238620aaedc391f26a9e46eb33" + integrity sha512-0I1pOOZZ8MhcNvhvYVRBIGnco8Q4EWfRYJ8vBuGEajuEuSXhC340Tasx7so1jjSphk+48kaoXy2+LNaTnEaSjA== + dependencies: + graphql "15.5.0" + graphql-json-transform "^1.1.0-alpha.0" + +graphql-tag@2.10.4: + version "2.10.4" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.4.tgz#2f301a98219be8b178a6453bb7e33b79b66d8f83" + integrity sha512-O7vG5BT3w6Sotc26ybcvLKNTdfr4GfsIVMD+LdYqXCeJIYPRyp8BIsDOUtxw7S1PYvRw5vH3278J2EDezR6mfA== + +graphql-tag@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" + integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== + +graphql@15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" + integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +intl-messageformat-parser@6.4.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.4.2.tgz#e2d28c3156c27961ead9d613ca55b6a155078d7d" + integrity sha512-IVNGy24lNEYr/KPWId5tF3KXRHFFbMgzIMI4kUonNa/ide2ywUYyBuOUro1IBGZJqjA2ncBVUyXdYKlMfzqpAA== + dependencies: + "@formatjs/ecma402-abstract" "1.6.2" + tslib "^2.1.0" + +intl-messageformat@9.5.2: + version "9.5.2" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.5.2.tgz#e72d32152c760b7411e413780e462909987c005a" + integrity sha512-sBGXcSQLyBuBA/kzAYhTpzhzkOGfSwGIau2W6FuwLZk0JE+VF3C+y0077FhVDOcRSi60iSfWzT8QC3Z7//dFxw== + dependencies: + fast-memoize "^2.5.2" + intl-messageformat-parser "6.4.2" + tslib "^2.1.0" + +invert-kv@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-3.0.1.tgz#a93c7a3d4386a1dc8325b97da9bb1620c0282523" + integrity sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw== + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ipfs-core-utils@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.5.4.tgz#c7fa508562086be65cebb51feb13c58abbbd3d8d" + integrity sha512-V+OHCkqf/263jHU0Fc9Rx/uDuwlz3PHxl3qu6a5ka/mNi6gucbFuI53jWsevCrOOY9giWMLB29RINGmCV5dFeQ== + dependencies: + any-signal "^2.0.0" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + cids "^1.0.0" + err-code "^2.0.3" + ipfs-utils "^5.0.0" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.1" + multiaddr "^8.0.0" + multiaddr-to-uri "^6.0.0" + parse-duration "^0.4.4" + timeout-abort-controller "^1.1.1" + uint8arrays "^1.1.0" + +ipfs-http-client@48.1.3: + version "48.1.3" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-48.1.3.tgz#d9b91b1f65d54730de92290d3be5a11ef124b400" + integrity sha512-+JV4cdMaTvYN3vd4r6+mcVxV3LkJXzc4kn2ToVbObpVpdqmG34ePf1KlvFF8A9gjcel84WpiP5xCEV/IrisPBA== + dependencies: + any-signal "^2.0.0" + bignumber.js "^9.0.0" + cids "^1.0.0" + debug "^4.1.1" + form-data "^3.0.0" + ipfs-core-utils "^0.5.4" + ipfs-utils "^5.0.0" + ipld-block "^0.11.0" + ipld-dag-cbor "^0.17.0" + ipld-dag-pb "^0.20.0" + ipld-raw "^6.0.0" + it-last "^1.0.4" + it-map "^1.0.4" + it-tar "^1.2.2" + it-to-stream "^0.1.2" + merge-options "^2.0.0" + multiaddr "^8.0.0" + multibase "^3.0.0" + multicodec "^2.0.1" + multihashes "^3.0.1" + nanoid "^3.1.12" + native-abort-controller "~0.0.3" + parse-duration "^0.4.4" + stream-to-it "^0.2.2" + uint8arrays "^1.1.0" + +ipfs-utils@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-5.0.1.tgz#7c0053d5e77686f45577257a73905d4523e6b4f7" + integrity sha512-28KZPgO4Uf5duT2ORLAYfboUp98iUshDD7yRAfbNxNAR8Dtidfn6o20rZfoXnkri2zKBVIPlJkuCPmPJB+6erg== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^2.0.0" + fs-extra "^9.0.1" + is-electron "^2.2.0" + iso-url "^1.0.0" + it-glob "0.0.10" + it-to-stream "^0.1.2" + merge-options "^2.0.0" + nanoid "^3.1.3" + native-abort-controller "0.0.3" + native-fetch "^2.0.0" + node-fetch "^2.6.0" + stream-to-it "^0.2.0" + +ipld-block@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/ipld-block/-/ipld-block-0.11.1.tgz#c3a7b41aee3244187bd87a73f980e3565d299b6e" + integrity sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw== + dependencies: + cids "^1.0.0" + +ipld-dag-cbor@^0.17.0: + version "0.17.1" + resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz#842e6c250603e5791049168831a425ec03471fb1" + integrity sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== + dependencies: + borc "^2.1.2" + cids "^1.0.0" + is-circular "^1.0.2" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + uint8arrays "^2.1.3" + +ipld-dag-pb@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.20.0.tgz#025c0343aafe6cb9db395dd1dc93c8c60a669360" + integrity sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + protons "^2.0.0" + reset "^0.1.0" + run "^1.4.0" + stable "^0.1.8" + uint8arrays "^1.0.0" + +ipld-raw@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-6.0.0.tgz#74d947fcd2ce4e0e1d5bb650c1b5754ed8ea6da0" + integrity sha512-UK7fjncAzs59iu/o2kwYtb8jgTtW6B+cNWIiNpAJkfRwqoMk1xD/6i25ktzwe4qO8gQgoR9RxA5ibC23nq8BLg== + dependencies: + cids "^1.0.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-circular@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" + integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-electron@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.0.tgz#8943084f09e8b731b3a7a0298a7b5d56f6b7eef0" + integrity sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-generator-function@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-ipfs@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-1.0.3.tgz#4b8c4995c46beac38f0c05f8cecd77093dd6a6b3" + integrity sha512-7SAfhxp39rxMvr95qjHMtsle1xa7zXpIbhX/Q77iXKtMVnQ0Fr9AVpAUq+bl3HPXGXDpZJFP0hzWBZaMwD6vGg== + dependencies: + buffer "^5.6.0" + cids "~0.8.0" + iso-url "~0.4.7" + mafmt "^7.1.0" + multiaddr "^7.4.3" + multibase "~0.7.0" + multihashes "~0.4.19" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +iso-constants@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/iso-constants/-/iso-constants-0.1.2.tgz#3d2456ed5aeaa55d18564f285ba02a47a0d885b4" + integrity sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ== + +iso-url@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.1.5.tgz#875a0f2bf33fa1fc200f8d89e3f49eee57a8f0d9" + integrity sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ== + +iso-url@~0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" + integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== + +it-all@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.5.tgz#e880510d7e73ebb79063a76296a2eb3cb77bbbdb" + integrity sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA== + +it-concat@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-1.0.3.tgz#84db9376e4c77bf7bc1fd933bb90f184e7cef32b" + integrity sha512-sjeZQ1BWQ9U/W2oI09kZgUyvSWzQahTkOkLIsnEPgyqZFaF9ME5gV6An4nMjlyhXKWQMKEakQU8oRHs2SdmeyA== + dependencies: + bl "^4.0.0" + +it-glob@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-0.0.10.tgz#4defd9286f693847c3ff483d2ff65f22e1359ad8" + integrity sha512-p1PR15djgPV7pxdLOW9j4WcJdla8+91rJdUU2hU2Jm68vkxpIEXK55VHBeH8Lvqh2vqLtM83t8q4BuJxue6niA== + dependencies: + fs-extra "^9.0.1" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.5.tgz#5c711c7d58948bcbc8e0cb129af3a039ba2a585b" + integrity sha512-PV/2S4zg5g6dkVuKfgrQfN2rUN4wdTI1FzyAvU+i8RV96syut40pa2s9Dut5X7SkjwA3P0tOhLABLdnOJ0Y/4Q== + +it-map@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.5.tgz#2f6a9b8f0ba1ed1aeadabf86e00b38c73a1dc299" + integrity sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ== + +it-peekable@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.2.tgz#3b2c7948b765f35b3bb07abbb9b2108c644e73c1" + integrity sha512-LRPLu94RLm+lxLZbChuc9iCXrKCOu1obWqxfaKhF00yIp30VGkl741b5P60U+rdBxuZD/Gt1bnmakernv7bVFg== + +it-reader@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-2.1.0.tgz#b1164be343f8538d8775e10fb0339f61ccf71b0f" + integrity sha512-hSysqWTO9Tlwc5EGjVf8JYZzw0D2FsxD/g+eNNWrez9zODxWt6QlN6JAMmycK72Mv4jHEKEXoyzUN4FYGmJaZw== + dependencies: + bl "^4.0.0" + +it-tar@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/it-tar/-/it-tar-1.2.2.tgz#8d79863dad27726c781a4bcc491f53c20f2866cf" + integrity sha512-M8V4a9I+x/vwXTjqvixcEZbQZHjwDIb8iUQ+D4M2QbhAdNs3WKVSl+45u5/F2XFx6jYMFOGzMVlKNK/uONgNIA== + dependencies: + bl "^4.0.0" + buffer "^5.4.3" + iso-constants "^0.1.2" + it-concat "^1.0.0" + it-reader "^2.0.0" + p-defer "^3.0.0" + +it-to-stream@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-0.1.2.tgz#7163151f75b60445e86b8ab1a968666acaacfe7b" + integrity sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ== + dependencies: + buffer "^5.6.0" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +iterable-ndjson@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" + integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== + dependencies: + string_decoder "^1.2.0" + +js-sha3@0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-text-sequence@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= + dependencies: + delimit-stream "0.1.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" + integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== + +lcid@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-3.1.1.tgz#9030ec479a058fc36b5e8243ebaac8b6ac582fd0" + integrity sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg== + dependencies: + invert-kv "^3.0.0" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.lowercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" + integrity sha1-RlFaztSssLcJMTMzOvBo5MOxTp0= + +lodash.lowerfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" + integrity sha1-3jx7EuAsZSSgBZwvbLfFxSZVoT0= + +lodash.pad@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= + +lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= + +lodash.repeat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" + integrity sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ= + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= + +lodash.trim@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" + integrity sha1-NkJefukL5KpeJ7zruFt9EepHqlc= + +lodash.trimend@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" + integrity sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8= + +lodash.trimstart@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" + integrity sha1-j/TexTLYJIavWVc8OURZFOlEp/E= + +lodash.uppercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" + integrity sha1-xASr/RRp+Tkx+bskz2zH1XBZvHM= + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +mafmt@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" + integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== + dependencies: + multiaddr "^7.3.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +mem@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-5.1.1.tgz#7059b67bf9ac2c924c9f1cff7155a064394adfb3" + integrity sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^2.1.0" + p-is-promise "^2.1.0" + +merge-options@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-2.0.0.tgz#36ca5038badfc3974dbde5e58ba89d3df80882c3" + integrity sha512-S7xYIeWHl2ZUKF7SDeBhGg6rfv5bKxVBdk95s/I7wVF8d+hjLSztJ/B271cnUiF6CAFduEQ5Zn3HYwAjT16DlQ== + dependencies: + is-plain-obj "^2.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + +mime-types@^2.1.12: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@*, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multiaddr-to-uri@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-6.0.0.tgz#8f08a75c6eeb2370d5d24b77b8413e3f0fa9bcc0" + integrity sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A== + dependencies: + multiaddr "^8.0.0" + +multiaddr@^7.3.0, multiaddr@^7.4.3: + version "7.5.0" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" + integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== + dependencies: + buffer "^5.5.0" + cids "~0.8.0" + class-is "^1.1.0" + is-ip "^3.1.0" + multibase "^0.7.0" + varint "^5.0.0" + +multiaddr@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-8.1.2.tgz#74060ff8636ba1c01b2cf0ffd53950b852fa9b1f" + integrity sha512-r13IzW8+Sv9zab9Gt8RPMIN2WkptIPq99EpAzg4IbJ/zTELhiEwXWr9bAmEatSCI4j/LSA6ESJzvz95JZ+ZYXQ== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + dns-over-http-resolver "^1.0.0" + err-code "^2.0.3" + is-ip "^3.1.0" + multibase "^3.0.0" + uint8arrays "^1.1.0" + varint "^5.0.0" + +multibase@^0.7.0, multibase@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@^1.0.0, multibase@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" + integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@^3.0.0, multibase@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-3.1.2.tgz#59314e1e2c35d018db38e4c20bb79026827f0f2f" + integrity sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw== + dependencies: + "@multiformats/base-x" "^4.0.1" + web-encoding "^1.0.6" + +multibase@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.4.tgz#55ef53e6acce223c5a09341a8a3a3d973871a577" + integrity sha512-8/JmrdSGzlw6KTgAJCOqUBSGd1V6186i/X8dDCGy/lbCKrQ+1QB6f3HE+wPr7Tpdj4U3gutaj9jG2rNX6UpiJg== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^1.0.0, multicodec@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multicodec@^2.0.0, multicodec@^2.0.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-2.1.3.tgz#b9850635ad4e2a285a933151b55b4a2294152a5d" + integrity sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA== + dependencies: + uint8arrays "1.1.0" + varint "^6.0.0" + +multicodec@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.0.1.tgz#94e043847ee11fcce92487609ac9010429a95e31" + integrity sha512-Y6j3wiPojvkF/z6KFIGt84KdJdP2oILEdzc/3YbD3qQ3EerhqtYlfsZTPPNVoCCxNZZdzIpCKrdYFSav17sIrQ== + dependencies: + uint8arrays "^2.1.3" + varint "^5.0.2" + +multihashes@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" + integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== + dependencies: + buffer "^5.6.0" + multibase "^1.0.1" + varint "^5.0.0" + +multihashes@^3.0.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-3.1.2.tgz#ffa5e50497aceb7911f7b4a3b6cada9b9730edfc" + integrity sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ== + dependencies: + multibase "^3.1.0" + uint8arrays "^2.0.5" + varint "^6.0.0" + +multihashes@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.2.tgz#d76aeac3a302a1bed9fe1ec964fb7a22fa662283" + integrity sha512-xpx++1iZr4ZQHjN1mcrXS6904R36LWLxX/CBifczjtmrtCXEX623DMWOF1eiNSg+pFpiZDFVBgou/4v6ayCHSQ== + dependencies: + multibase "^4.0.1" + uint8arrays "^2.1.3" + varint "^5.0.2" + +multihashes@~0.4.15, multihashes@~0.4.19: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +multihashing-async@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.2.tgz#9ed68f183bde70e0416b166bbc59a0c0623a0ede" + integrity sha512-FTPNnWWxwIK5dXXmTFhySSF8Fkdqf7vzqpV09+RWsmfUhrsL/b3Arg3+bRrBnXTtjxm3JRGI3wSAtQHL0QCxhQ== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^2.1.3" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +mustache@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.1.tgz#d99beb031701ad433338e7ea65e0489416c854a2" + integrity sha512-yL5VE97+OXn4+Er3THSmTdCFCtx5hHWzrolvH+JObZnUYwuaG7XV+Ch4fR2cIrcYI0tFHxS7iyFYl14bW8y2sA== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.1.12, nanoid@^3.1.3: + version "3.1.22" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" + integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== + +native-abort-controller@0.0.3, native-abort-controller@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-0.0.3.tgz#4c528a6c9c7d3eafefdc2c196ac9deb1a5edf2f8" + integrity sha512-YIxU5nWqSHG1Xbu3eOu3pdFRD882ivQpIcu6AiPVe2oSVoRbfYW63DVkZm3g1gHiMtZSvZzF6THSzTGEBYl8YA== + dependencies: + globalthis "^1.0.1" + +native-abort-controller@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.3.tgz#35974a2e189c0d91399c8767a989a5bf058c1435" + integrity sha512-fd5LY5q06mHKZPD5FmMrn7Lkd2H018oBGKNOAdLpctBDEPFKsfJ1nX9ke+XRa8PEJJpjqrpQkGjq2IZ27QNmYA== + +native-fetch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-2.0.1.tgz#319d53741a7040def92d5dc8ea5fe9416b1fad89" + integrity sha512-gv4Bea+ga9QdXINurpkEqun3ap3vnB+WYoe4c8ddqUYEH7B2h6iD39RF8uVN7OwmSfMY3RDxkvBnoI4e2/vLXQ== + dependencies: + globalthis "^1.0.1" + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + +node-fetch@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-inspect@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.2.tgz#b6385a3e2b7cae0b5eafcf90cddf85d128767f30" + integrity sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.0.tgz#374c4ee8c5fb91b5dbcd82de199f188d3e8fd5ec" + integrity sha512-2RaV0LWJgpWEjvpsW57H8pnzdVQJrtAr4VGk9cIqn58ePx5k1b0H3h9DS2Qj4cL1Cm012JSeg+7AcVNsis6AVQ== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +ora@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" + integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-locale@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-5.0.0.tgz#6d26c1d95b6597c5d5317bf5fba37eccec3672e0" + integrity sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA== + dependencies: + execa "^4.0.0" + lcid "^3.0.0" + mem "^5.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-duration@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-0.4.4.tgz#11c0f51a689e97d06c57bd772f7fda7dc013243c" + integrity sha512-KbAJuYGUhZkB9gotDiKLnZ7Z3VTacK3fgwmDdB6ZVDtJbMBT6MfLga0WJaYpPDu0mzqT0NgHtHDt5PY4l0nidg== + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +protocol-buffers-schema@^3.3.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.5.1.tgz#8388e768d383ac8cbea23e1280dfadb79f4122ad" + integrity sha512-YVCvdhxWNDP8/nJDyXLuM+UFsuPk4+1PB7WGPVDzm3HTHbzFLxQYeW2iZpS4mmnXrQJGBzt230t/BbEb7PrQaw== + +protons@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protons/-/protons-2.0.1.tgz#bfee5123c100001dcf56ab8f71b1b36f2e8289f1" + integrity sha512-FlmPorLEeCEDPu+uIn0Qardgiy5XqVA4IyNTz9wb9c0e2U7BEXdRcIbx64r09o4Abtf+4B7mkTtMbsIXMxZzKw== + dependencies: + protocol-buffers-schema "^3.3.1" + signed-varint "^2.0.1" + uint8arrays "^2.1.3" + varint "^5.0.0" + +pull-stream-to-async-iterator@^1.0.1, pull-stream-to-async-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pull-stream-to-async-iterator/-/pull-stream-to-async-iterator-1.0.2.tgz#5cc1a3a146ef6bbf01c17755647369b683b24986" + integrity sha512-c3KRs2EneuxP7b6pG9fvQTIjatf33RbIErhbQ75s5r2MI6E8R74NZC1nJgXc8kcmqiQxmr+TWY+WwK2mWaUnlA== + dependencies: + pull-stream "^3.6.9" + +pull-stream@^3.6.9: + version "3.6.14" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" + integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +ramda@^0.24.1: + version "0.24.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" + integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= + +ramda@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" + integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== + +ramdasauce@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" + integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== + dependencies: + ramda "^0.24.1" + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + +reset@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/reset/-/reset-0.1.0.tgz#9fc7314171995ae6cb0b7e58b06ce7522af4bafb" + integrity sha1-n8cxQXGZWubLC35YsGznUir0uvs= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retimer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-2.0.0.tgz#e8bd68c5e5a8ec2f49ccb5c636db84c04063bbca" + integrity sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg== + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +run@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/run/-/run-1.4.0.tgz#e17d9e9043ab2fe17776cb299e1237f38f0b4ffa" + integrity sha1-4X2ekEOrL+F3dsspnhI3848LT/o= + dependencies: + minimatch "*" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +semver@7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +semver@^7.0.0: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +signed-varint@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" + integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= + dependencies: + varint "~5.0.0" + +source-map-support@^0.5.17: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-command@0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stream-to-it@^0.2.0, stream-to-it@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.3.tgz#b9320ceb26a51b313de81036d4354d9b657f4d2d" + integrity sha512-xaK9EjPtLox5rrC7YLSBXSanTtUJN/lzJlMFvy9VaROmnyvy0U/X6m2uMhXPJRn3g3M9uOSIzTszW7BPiWSg9w== + dependencies: + get-iterator "^1.0.2" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1, string_decoder@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +timeout-abort-controller@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz#2c3c3c66f13c783237987673c276cbd7a9762f29" + integrity sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ== + dependencies: + abort-controller "^3.0.0" + retimer "^2.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-node@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tslib@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + +uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" + integrity sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA== + dependencies: + multibase "^3.0.0" + web-encoding "^1.0.2" + +uint8arrays@^2.0.5, uint8arrays@^2.1.3: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.5.tgz#9e6e6377a9463d5eba4620a3f0450f7eb389a351" + integrity sha512-CSR7AO+4AHUeSOnZ/NBNCElDeWfRh9bXtOck27083kc7SznmmHIhNEkEOCQOn0wvrIMjS3IH0TNLR16vuc46mA== + dependencies: + multibase "^4.0.1" + +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +varint@^5.0.0, varint@^5.0.2, varint@~5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +web-encoding@^1.0.2, web-encoding@^1.0.6: + version "1.1.5" + resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" + integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== + dependencies: + util "^0.12.3" + optionalDependencies: + "@zxing/text-encoding" "0.9.0" + +web-worker@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.0.0.tgz#c7ced4e1eb6227636ada35056a9e5a477414e4d0" + integrity sha512-BzuMqeKVkKKwHV6tJuwePFcxYMxvC97D448mXTgh/CxXAB4sRtoV26gRPN+JDxsXRR7QZyioMV9O6NzQaASf7Q== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + +which@^2.0.0, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + +ws@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From fbf341ce6eb66a5add0d187aba7508c252b765f9 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Sun, 25 Apr 2021 21:54:32 -0500 Subject: [PATCH 04/53] move ens into packages/apis folder --- {demos/ens/protocol => packages/apis/ens}/.gitignore | 0 {demos/ens/protocol => packages/apis/ens}/README.md | 0 {demos/ens/protocol => packages/apis/ens}/deploy-contracts.js | 0 {demos/ens/protocol => packages/apis/ens}/package.json | 0 {demos/ens/protocol => packages/apis/ens}/recipes/constants.json | 0 {demos/ens/protocol => packages/apis/ens}/recipes/e2e.json | 0 .../apis/ens}/recipes/mutations/deployFIFSRegistrar.graphql | 0 .../apis/ens}/recipes/mutations/register.graphql | 0 .../apis/ens}/recipes/mutations/reverseRegister.graphql | 0 .../apis/ens}/recipes/mutations/setAddress.graphql | 0 .../apis/ens}/recipes/mutations/setContentHash.graphql | 0 .../apis/ens}/recipes/mutations/setOwner.graphql | 0 .../apis/ens}/recipes/mutations/setRecord.graphql | 0 .../apis/ens}/recipes/mutations/setResolver.graphql | 0 .../apis/ens}/recipes/mutations/setSubdomainOwner.graphql | 0 .../apis/ens}/recipes/mutations/setSubdomainRecord.graphql | 0 .../apis/ens}/recipes/queries/getAddress.graphql | 0 .../apis/ens}/recipes/queries/getContentHash.graphql | 0 .../apis/ens}/recipes/queries/getExpiryTimes.graphql | 0 .../apis/ens}/recipes/queries/getNameFromAddress.graphql | 0 .../apis/ens}/recipes/queries/getOwner.graphql | 0 .../apis/ens}/recipes/queries/getResolver.graphql | 0 {demos/ens/protocol => packages/apis/ens}/redirects.js | 0 {demos/ens/protocol => packages/apis/ens}/script/configure.ts | 0 {demos/ens/protocol => packages/apis/ens}/script/create-domain.ts | 0 {demos/ens/protocol => packages/apis/ens}/src/contracts/ENS.json | 0 {demos/ens/protocol => packages/apis/ens}/src/contracts/ENS.sol | 0 .../protocol => packages/apis/ens}/src/contracts/ENSRegistry.json | 0 .../protocol => packages/apis/ens}/src/contracts/ENSRegistry.sol | 0 .../protocol => packages/apis/ens}/src/contracts/FIFSRegistrar.ts | 0 {demos/ens/protocol => packages/apis/ens}/src/mutation/index.ts | 0 .../protocol => packages/apis/ens}/src/mutation/schema.graphql | 0 {demos/ens/protocol => packages/apis/ens}/src/query/index.ts | 0 .../ens/protocol => packages/apis/ens}/src/query/schema.graphql | 0 {demos/ens/protocol => packages/apis/ens}/src/utils.ts | 0 {demos/ens/protocol => packages/apis/ens}/web3api.yaml | 0 36 files changed, 0 insertions(+), 0 deletions(-) rename {demos/ens/protocol => packages/apis/ens}/.gitignore (100%) rename {demos/ens/protocol => packages/apis/ens}/README.md (100%) rename {demos/ens/protocol => packages/apis/ens}/deploy-contracts.js (100%) rename {demos/ens/protocol => packages/apis/ens}/package.json (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/constants.json (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/e2e.json (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/deployFIFSRegistrar.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/register.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/reverseRegister.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setAddress.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setContentHash.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setOwner.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setRecord.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setResolver.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setSubdomainOwner.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/mutations/setSubdomainRecord.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getAddress.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getContentHash.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getExpiryTimes.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getNameFromAddress.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getOwner.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/recipes/queries/getResolver.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/redirects.js (100%) rename {demos/ens/protocol => packages/apis/ens}/script/configure.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/script/create-domain.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/src/contracts/ENS.json (100%) rename {demos/ens/protocol => packages/apis/ens}/src/contracts/ENS.sol (100%) rename {demos/ens/protocol => packages/apis/ens}/src/contracts/ENSRegistry.json (100%) rename {demos/ens/protocol => packages/apis/ens}/src/contracts/ENSRegistry.sol (100%) rename {demos/ens/protocol => packages/apis/ens}/src/contracts/FIFSRegistrar.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/src/mutation/index.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/src/mutation/schema.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/src/query/index.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/src/query/schema.graphql (100%) rename {demos/ens/protocol => packages/apis/ens}/src/utils.ts (100%) rename {demos/ens/protocol => packages/apis/ens}/web3api.yaml (100%) diff --git a/demos/ens/protocol/.gitignore b/packages/apis/ens/.gitignore similarity index 100% rename from demos/ens/protocol/.gitignore rename to packages/apis/ens/.gitignore diff --git a/demos/ens/protocol/README.md b/packages/apis/ens/README.md similarity index 100% rename from demos/ens/protocol/README.md rename to packages/apis/ens/README.md diff --git a/demos/ens/protocol/deploy-contracts.js b/packages/apis/ens/deploy-contracts.js similarity index 100% rename from demos/ens/protocol/deploy-contracts.js rename to packages/apis/ens/deploy-contracts.js diff --git a/demos/ens/protocol/package.json b/packages/apis/ens/package.json similarity index 100% rename from demos/ens/protocol/package.json rename to packages/apis/ens/package.json diff --git a/demos/ens/protocol/recipes/constants.json b/packages/apis/ens/recipes/constants.json similarity index 100% rename from demos/ens/protocol/recipes/constants.json rename to packages/apis/ens/recipes/constants.json diff --git a/demos/ens/protocol/recipes/e2e.json b/packages/apis/ens/recipes/e2e.json similarity index 100% rename from demos/ens/protocol/recipes/e2e.json rename to packages/apis/ens/recipes/e2e.json diff --git a/demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql b/packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/deployFIFSRegistrar.graphql rename to packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql diff --git a/demos/ens/protocol/recipes/mutations/register.graphql b/packages/apis/ens/recipes/mutations/register.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/register.graphql rename to packages/apis/ens/recipes/mutations/register.graphql diff --git a/demos/ens/protocol/recipes/mutations/reverseRegister.graphql b/packages/apis/ens/recipes/mutations/reverseRegister.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/reverseRegister.graphql rename to packages/apis/ens/recipes/mutations/reverseRegister.graphql diff --git a/demos/ens/protocol/recipes/mutations/setAddress.graphql b/packages/apis/ens/recipes/mutations/setAddress.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setAddress.graphql rename to packages/apis/ens/recipes/mutations/setAddress.graphql diff --git a/demos/ens/protocol/recipes/mutations/setContentHash.graphql b/packages/apis/ens/recipes/mutations/setContentHash.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setContentHash.graphql rename to packages/apis/ens/recipes/mutations/setContentHash.graphql diff --git a/demos/ens/protocol/recipes/mutations/setOwner.graphql b/packages/apis/ens/recipes/mutations/setOwner.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setOwner.graphql rename to packages/apis/ens/recipes/mutations/setOwner.graphql diff --git a/demos/ens/protocol/recipes/mutations/setRecord.graphql b/packages/apis/ens/recipes/mutations/setRecord.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setRecord.graphql rename to packages/apis/ens/recipes/mutations/setRecord.graphql diff --git a/demos/ens/protocol/recipes/mutations/setResolver.graphql b/packages/apis/ens/recipes/mutations/setResolver.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setResolver.graphql rename to packages/apis/ens/recipes/mutations/setResolver.graphql diff --git a/demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql b/packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setSubdomainOwner.graphql rename to packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql diff --git a/demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql b/packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql similarity index 100% rename from demos/ens/protocol/recipes/mutations/setSubdomainRecord.graphql rename to packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql diff --git a/demos/ens/protocol/recipes/queries/getAddress.graphql b/packages/apis/ens/recipes/queries/getAddress.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getAddress.graphql rename to packages/apis/ens/recipes/queries/getAddress.graphql diff --git a/demos/ens/protocol/recipes/queries/getContentHash.graphql b/packages/apis/ens/recipes/queries/getContentHash.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getContentHash.graphql rename to packages/apis/ens/recipes/queries/getContentHash.graphql diff --git a/demos/ens/protocol/recipes/queries/getExpiryTimes.graphql b/packages/apis/ens/recipes/queries/getExpiryTimes.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getExpiryTimes.graphql rename to packages/apis/ens/recipes/queries/getExpiryTimes.graphql diff --git a/demos/ens/protocol/recipes/queries/getNameFromAddress.graphql b/packages/apis/ens/recipes/queries/getNameFromAddress.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getNameFromAddress.graphql rename to packages/apis/ens/recipes/queries/getNameFromAddress.graphql diff --git a/demos/ens/protocol/recipes/queries/getOwner.graphql b/packages/apis/ens/recipes/queries/getOwner.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getOwner.graphql rename to packages/apis/ens/recipes/queries/getOwner.graphql diff --git a/demos/ens/protocol/recipes/queries/getResolver.graphql b/packages/apis/ens/recipes/queries/getResolver.graphql similarity index 100% rename from demos/ens/protocol/recipes/queries/getResolver.graphql rename to packages/apis/ens/recipes/queries/getResolver.graphql diff --git a/demos/ens/protocol/redirects.js b/packages/apis/ens/redirects.js similarity index 100% rename from demos/ens/protocol/redirects.js rename to packages/apis/ens/redirects.js diff --git a/demos/ens/protocol/script/configure.ts b/packages/apis/ens/script/configure.ts similarity index 100% rename from demos/ens/protocol/script/configure.ts rename to packages/apis/ens/script/configure.ts diff --git a/demos/ens/protocol/script/create-domain.ts b/packages/apis/ens/script/create-domain.ts similarity index 100% rename from demos/ens/protocol/script/create-domain.ts rename to packages/apis/ens/script/create-domain.ts diff --git a/demos/ens/protocol/src/contracts/ENS.json b/packages/apis/ens/src/contracts/ENS.json similarity index 100% rename from demos/ens/protocol/src/contracts/ENS.json rename to packages/apis/ens/src/contracts/ENS.json diff --git a/demos/ens/protocol/src/contracts/ENS.sol b/packages/apis/ens/src/contracts/ENS.sol similarity index 100% rename from demos/ens/protocol/src/contracts/ENS.sol rename to packages/apis/ens/src/contracts/ENS.sol diff --git a/demos/ens/protocol/src/contracts/ENSRegistry.json b/packages/apis/ens/src/contracts/ENSRegistry.json similarity index 100% rename from demos/ens/protocol/src/contracts/ENSRegistry.json rename to packages/apis/ens/src/contracts/ENSRegistry.json diff --git a/demos/ens/protocol/src/contracts/ENSRegistry.sol b/packages/apis/ens/src/contracts/ENSRegistry.sol similarity index 100% rename from demos/ens/protocol/src/contracts/ENSRegistry.sol rename to packages/apis/ens/src/contracts/ENSRegistry.sol diff --git a/demos/ens/protocol/src/contracts/FIFSRegistrar.ts b/packages/apis/ens/src/contracts/FIFSRegistrar.ts similarity index 100% rename from demos/ens/protocol/src/contracts/FIFSRegistrar.ts rename to packages/apis/ens/src/contracts/FIFSRegistrar.ts diff --git a/demos/ens/protocol/src/mutation/index.ts b/packages/apis/ens/src/mutation/index.ts similarity index 100% rename from demos/ens/protocol/src/mutation/index.ts rename to packages/apis/ens/src/mutation/index.ts diff --git a/demos/ens/protocol/src/mutation/schema.graphql b/packages/apis/ens/src/mutation/schema.graphql similarity index 100% rename from demos/ens/protocol/src/mutation/schema.graphql rename to packages/apis/ens/src/mutation/schema.graphql diff --git a/demos/ens/protocol/src/query/index.ts b/packages/apis/ens/src/query/index.ts similarity index 100% rename from demos/ens/protocol/src/query/index.ts rename to packages/apis/ens/src/query/index.ts diff --git a/demos/ens/protocol/src/query/schema.graphql b/packages/apis/ens/src/query/schema.graphql similarity index 100% rename from demos/ens/protocol/src/query/schema.graphql rename to packages/apis/ens/src/query/schema.graphql diff --git a/demos/ens/protocol/src/utils.ts b/packages/apis/ens/src/utils.ts similarity index 100% rename from demos/ens/protocol/src/utils.ts rename to packages/apis/ens/src/utils.ts diff --git a/demos/ens/protocol/web3api.yaml b/packages/apis/ens/web3api.yaml similarity index 100% rename from demos/ens/protocol/web3api.yaml rename to packages/apis/ens/web3api.yaml From e5100b89d919e5e3651da6449c7ae13146e85da9 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Sun, 25 Apr 2021 22:15:57 -0500 Subject: [PATCH 05/53] minor changes --- packages/apis/ens/recipes/constants.json | 8 ++++---- packages/apis/ens/script/configure.ts | 8 -------- packages/apis/ens/web3api.yaml | 7 ------- packages/js/core/src/algorithms/resolve-uri.ts | 5 ++++- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index 9c92d2e107..f17eac7f4a 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xA57B8a5584442B467b4689F1144D269d096A3daF", - "Registrar": "0xA94B7f0465E98609391C623d0560C5720a3f2D33", - "Resolver": "0x26b4AFb60d6C903165150C6F0AA14F8016bE4aec", - "Reverse": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6", + "Registry": "0xC5aFE31AE505594B190AC71EA689B58139d1C354", + "Registrar": "0x94dFeceb91678ec912ef8f14c72721c102ed2Df7", + "Resolver": "0x42D4BA5e542d9FeD87EA657f0295F1968A61c00A", + "Reverse": "0x9ce4cd6D7f5e8b14c7a3e8e6A257A86Bd5a6EeA0", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/script/configure.ts b/packages/apis/ens/script/configure.ts index 1801c2de19..57b3410eae 100644 --- a/packages/apis/ens/script/configure.ts +++ b/packages/apis/ens/script/configure.ts @@ -35,14 +35,6 @@ async function main() { const client = new Web3ApiClient({ redirects: [ - { - from: "w3://ens/uts46.web3api.eth", - to: uts46Plugin(), - }, - { - from: "w3://ens/sha3.web3api.eth", - to: sha3Plugin(), - }, { from: "w3://ens/ipfs.web3api.eth", to: ipfsPlugin({ diff --git a/packages/apis/ens/web3api.yaml b/packages/apis/ens/web3api.yaml index 84dde7d228..c5332376c9 100644 --- a/packages/apis/ens/web3api.yaml +++ b/packages/apis/ens/web3api.yaml @@ -12,10 +12,3 @@ mutation: module: language: wasm/assemblyscript file: ./src/mutation/index.ts -import_redirects: - - uri: w3://ens/ethereum.web3api.eth - schema: ./node_modules/@web3api/ethereum-plugin-js/schema.graphql - - uri: w3://ens/sha3.web3api.eth - schema: ../../../node_modules/@web3api/sha3-plugin-js/schema.graphql - - uri: w3://ens/uts46.web3api.eth - schema: ../../../node_modules/@web3api/uts46-plugin-js/schema.graphql diff --git a/packages/js/core/src/algorithms/resolve-uri.ts b/packages/js/core/src/algorithms/resolve-uri.ts index 6b104d0227..66a8800e8b 100644 --- a/packages/js/core/src/algorithms/resolve-uri.ts +++ b/packages/js/core/src/algorithms/resolve-uri.ts @@ -110,6 +110,9 @@ export async function resolveUri( throw Error( `No Web3API found at URI: ${uri.uri}` + `\nResolution Path: ${JSON.stringify(uriHistory, null, 2)}` + - `\nResolvers Used: ${uriResolverImplementations}` + `\nResolvers Used: ${uriResolverImplementations}` + + `\nPlugins Found: ${redirects.filter((redirect) => + typeof redirect.to !== "string" + ).map((redirect) => redirect.from.uri)}` ); } From a3fda12737cd16707463d5655d799342326c06bd Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Sun, 25 Apr 2021 23:52:17 -0500 Subject: [PATCH 06/53] fix nodehash --- packages/apis/ens/recipes/constants.json | 8 +-- packages/apis/ens/script/configure.ts | 22 +++--- .../apis/ens/src/contracts/FIFSRegistrar.ts | 68 +++++++++---------- packages/apis/ens/src/mutation/index.ts | 6 +- packages/apis/ens/src/utils.ts | 35 +++++++--- packages/js/plugins/sha3/schema.graphql | 2 +- .../plugins/sha3/src/__tests__/index.test.ts | 9 ++- packages/js/plugins/sha3/src/manifest.ts | 2 +- packages/js/plugins/sha3/src/resolvers.ts | 13 +++- yarn.lock | 17 +++++ 10 files changed, 117 insertions(+), 65 deletions(-) diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index f17eac7f4a..cce466b1eb 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xC5aFE31AE505594B190AC71EA689B58139d1C354", - "Registrar": "0x94dFeceb91678ec912ef8f14c72721c102ed2Df7", - "Resolver": "0x42D4BA5e542d9FeD87EA657f0295F1968A61c00A", - "Reverse": "0x9ce4cd6D7f5e8b14c7a3e8e6A257A86Bd5a6EeA0", + "Registry": "0x4c51C686CBE79e26B8Cc93b04BF0f530E7B0a872", + "Registrar": "0xa41795579e6779aE007200DE58DA175d78eE0bA6", + "Resolver": "0x3E5F619487FB074BEE52AA7764cCB51d9c0c2f17", + "Reverse": "0xfAa5Bd59B7Be0b06705D8EaED0636288279860b4", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/script/configure.ts b/packages/apis/ens/script/configure.ts index 57b3410eae..247313810b 100644 --- a/packages/apis/ens/script/configure.ts +++ b/packages/apis/ens/script/configure.ts @@ -2,8 +2,6 @@ import { Web3ApiClient } from "@web3api/client-js"; import { ipfsPlugin } from "@web3api/ipfs-plugin-js"; import { ethereumPlugin, EthereumProvider } from "@web3api/ethereum-plugin-js"; import { ensPlugin } from "@web3api/ens-plugin-js"; -import { uts46Plugin } from "@web3api/uts46-plugin-js"; -import { sha3Plugin } from "@web3api/sha3-plugin-js"; import { ethers, Wallet } from "ethers"; import axios from "axios"; @@ -16,7 +14,7 @@ dotenv.config(); // - send queries async function main() { - const uri = "ipfs/QmZKcHjxXHrWapE9MXDseVUEJqhFtrP6QGX1TUfcoQJfAx"; + const uri = "ipfs/QmfPBVeJkVL78yecnTXx4tKd6kyFcGkAXSNtznKacHWvbG"; const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; // const resolverAddress = "0xf6305c19e814d2a75429Fd637d01F7ee0E77d615"; const network = "rinkeby"; @@ -31,7 +29,7 @@ async function main() { const { data } = await axios.get("http://localhost:4040/ens"); const testnetEnsAddress = data.ensAddress as string; - console.log(testnetEnsAddress) + const rinkebyProvider = ethers.getDefaultProvider("rinkeby"); const client = new Web3ApiClient({ redirects: [ @@ -55,8 +53,8 @@ async function main() { to: ethereumPlugin({ networks: { rinkeby: { - provider: ethers.getDefaultProvider("rinkeby") as EthereumProvider, - signer: new Wallet(privKey) + provider: rinkebyProvider as EthereumProvider, + signer: new Wallet(privKey, rinkebyProvider) }, testnet: { provider: "http://localhost:8545" @@ -94,24 +92,24 @@ async function main() { // Set the subdomain's owner to the FIFSRegistrar const setOwner = await client.query<{ - setSubdomainOwner: string + setOwner: string }>({ uri, query: `mutation { - setSubdomainOwner( - subdomain: "${domain}" - owner: "${fifsAddress}" + setOwner( + domain: "${domain}" + newOwner: "${fifsAddress}" registryAddress: "${ensAddress}" connection: { networkNameOrChainId: "${network}" } ) }` - }) + }); if (!setOwner.errors) { console.log("Set Owner Succeeded!") - console.log(setOwner.data?.setSubdomainOwner); + console.log(setOwner.data?.setOwner); } else { throw Error(`Failed to Set Owner: ${setOwner.errors}`); } diff --git a/packages/apis/ens/src/contracts/FIFSRegistrar.ts b/packages/apis/ens/src/contracts/FIFSRegistrar.ts index a42d60a315..601c301cf8 100644 --- a/packages/apis/ens/src/contracts/FIFSRegistrar.ts +++ b/packages/apis/ens/src/contracts/FIFSRegistrar.ts @@ -1,38 +1,38 @@ export const abi = `[ - { - "inputs": [ - { - "internalType": "contract ENS", - "name": "ensAddr", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "label", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "register", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } + { + "inputs": [ + { + "internalType": "contract ENS", + "name": "ensAddr", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } ]` export const bytecode = `0x608060405234801561001057600080fd5b506040516103883803806103888339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555050506102e2806100a66000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061007e565b005b8160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3600154846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d602081101561014d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806101c657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6101cf57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab592360015486866040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561026a57600080fd5b505af115801561027e573d6000803e3d6000fd5b505050506040513d602081101561029457600080fd5b8101908080519060200190929190505050505050505056fea264697066735822122068df005ced0968f1413cf7e64af5c92cf8f2940f6d95a51455e99cefa14673e064736f6c63430007060033` \ No newline at end of file diff --git a/packages/apis/ens/src/mutation/index.ts b/packages/apis/ens/src/mutation/index.ts index d800ab9e79..250b8abeea 100644 --- a/packages/apis/ens/src/mutation/index.ts +++ b/packages/apis/ens/src/mutation/index.ts @@ -44,7 +44,7 @@ export function registerDomain(input: Input_registerDomain): string { } export function setOwner(input: Input_setOwner): string { - let tx = Ethereum_Mutation.sendTransaction({ + const tx = Ethereum_Mutation.sendTransaction({ address: input.registryAddress, method: "function setOwner(bytes32 node, address owner) external", args: [namehash(input.domain), input.newOwner], @@ -58,8 +58,8 @@ export function setSubdomainOwner(input: Input_setSubdomainOwner): string { const splitDomain = input.subdomain.split(".") const subdomainLabel = splitDomain[0] const domain = splitDomain.slice(1, splitDomain.length).join(".") - - let tx = Ethereum_Mutation.sendTransaction({ + + const tx = Ethereum_Mutation.sendTransaction({ address: input.registryAddress, method: "function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external", args: [namehash(domain), keccak256(subdomainLabel), input.owner], diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index 6dae74a8d9..2ee479ad27 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -2,23 +2,42 @@ import { SHA3_Query } from "./mutation/w3/imported/SHA3_Query"; import { UTS46_Query } from "./mutation/w3/imported/UTS46_Query"; export function namehash (inputName: string): string { - let node = '' - for (let i: number = 0; i < 32; i++) { - node += '00' - } + let node = new Uint8Array(32); + node.fill(0); const name: string = normalize(inputName) if (name) { - let labels: string[] = name.split('.') + const labels: string[] = name.split('.') for(let i = labels.length - 1; i >= 0; i--) { - let labelSha = SHA3_Query.keccak_256({ message: labels[i] }) - node = SHA3_Query.buffer_keccak_256({ message: (node + labelSha) }) + const labelSha = SHA3_Query.buffer_keccak_256({ + message: String.UTF8.encode(labels[i]) + }); + const combined = new Uint8Array(node.byteLength + labelSha.byteLength); + combined.set(node); + combined.set(Uint8Array.wrap(labelSha), node.byteLength); + node = Uint8Array.wrap( + SHA3_Query.buffer_keccak_256({ + message: combined.buffer + }) + ); } } - return '0x' + node + let result = '0x'; + + for (let i = 0; i < node.byteLength; ++i) { + let hexStr = node[i].toString(16); + + if (hexStr.length === 1) { + hexStr = "0" + hexStr; + } + + result += hexStr; + } + + return result; } export function normalize(name: string): string { diff --git a/packages/js/plugins/sha3/schema.graphql b/packages/js/plugins/sha3/schema.graphql index 4e1c4e812a..d8510897c2 100644 --- a/packages/js/plugins/sha3/schema.graphql +++ b/packages/js/plugins/sha3/schema.graphql @@ -9,7 +9,7 @@ type Query { keccak_256(message: String!): String! keccak_224(message: String!): String! - buffer_keccak_256(message: Bytes!): String! + buffer_keccak_256(message: Bytes!): Bytes! shake_128(message: String!, outputBits: Int!): String! shake_256(message: String!, outputBits: Int!): String! diff --git a/packages/js/plugins/sha3/src/__tests__/index.test.ts b/packages/js/plugins/sha3/src/__tests__/index.test.ts index bb1a8908c1..600bdecd5b 100644 --- a/packages/js/plugins/sha3/src/__tests__/index.test.ts +++ b/packages/js/plugins/sha3/src/__tests__/index.test.ts @@ -145,6 +145,13 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { const encoder = new TextEncoder(); const testMessageBuffer = encoder.encode(testMessage); const expected = keccak256(testMessageBuffer) + const hexValues = expected.match(/[\da-f]{2}/gi); + const expectedBuff = new Uint8Array( + hexValues ? hexValues.map((h) => { + return parseInt(h, 16) + }) : [] + ); + const response = await client.query<{ buffer_keccak_256: string }>({ uri: "w3://ens/sha3.web3api.eth", query: ` @@ -159,7 +166,7 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { expect(response.data).toBeDefined() expect(response.errors).toBeUndefined() - expect(response.data?.buffer_keccak_256).toBe(expected) + expect(response.data?.buffer_keccak_256).toMatchObject(expectedBuff) }) it("keccak224 matches", async () => { diff --git a/packages/js/plugins/sha3/src/manifest.ts b/packages/js/plugins/sha3/src/manifest.ts index 35492b4ae1..844196df14 100644 --- a/packages/js/plugins/sha3/src/manifest.ts +++ b/packages/js/plugins/sha3/src/manifest.ts @@ -15,7 +15,7 @@ type Query { keccak_256(message: String!): String! keccak_224(message: String!): String! - buffer_keccak_256(message: Bytes!): String! + buffer_keccak_256(message: Bytes!): Bytes! shake_128(message: String!, outputBits: Int!): String! shake_256(message: String!, outputBits: Int!): String! diff --git a/packages/js/plugins/sha3/src/resolvers.ts b/packages/js/plugins/sha3/src/resolvers.ts index a5929169a2..ec8143d3db 100644 --- a/packages/js/plugins/sha3/src/resolvers.ts +++ b/packages/js/plugins/sha3/src/resolvers.ts @@ -36,7 +36,18 @@ export const query = (): PluginModule => ({ return keccak_256(input.message); }, buffer_keccak_256: (input: { message: ArrayBuffer }) => { - return keccak_256(input.message); + const result = keccak_256(input.message); + const hexValues = result.match(/[\da-f]{2}/gi); + + if (!hexValues) { + return new Uint8Array(0); + } + + return new Uint8Array( + hexValues.map(function (h) { + return parseInt(h, 16) + }) + ); }, keccak_224: (input: { message: string }) => { return keccak_224(input.message); diff --git a/yarn.lock b/yarn.lock index ba24ebd576..f98f163dc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6981,6 +6981,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.5.tgz#2739d2981892e7ab488a7ad03b92df2816e03f4c" @@ -18438,6 +18443,18 @@ ts-node@8.10.2: source-map-support "^0.5.17" yn "3.1.1" +ts-node@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + ts-pnp@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a" From efd1ea55490530f3b49733141fc6d1c008108121 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 26 Apr 2021 00:32:38 -0500 Subject: [PATCH 07/53] rinkeby setup --- packages/apis/ens/recipes/constants.json | 8 +- packages/apis/ens/script/configure.ts | 21 +--- packages/apis/ens/script/create-domain.ts | 124 +++++++++++++++++++++- 3 files changed, 125 insertions(+), 28 deletions(-) diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index cce466b1eb..ab0ceeb7ff 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0x4c51C686CBE79e26B8Cc93b04BF0f530E7B0a872", - "Registrar": "0xa41795579e6779aE007200DE58DA175d78eE0bA6", - "Resolver": "0x3E5F619487FB074BEE52AA7764cCB51d9c0c2f17", - "Reverse": "0xfAa5Bd59B7Be0b06705D8EaED0636288279860b4", + "Registry": "0xdEe5E09e2851BF2f0847c9deb48FFC952Fef9012", + "Registrar": "0x55cB51dbEC6E7460935Dbeb65D85De4fa9b1f6b3", + "Resolver": "0x642072d6Aec4AEF4498E96184073625ed87Ddf1B", + "Reverse": "0x0dF7777969315968f0c74103a5e7B50ECcE51569", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/script/configure.ts b/packages/apis/ens/script/configure.ts index 247313810b..a146017db6 100644 --- a/packages/apis/ens/script/configure.ts +++ b/packages/apis/ens/script/configure.ts @@ -8,17 +8,12 @@ import axios from "axios"; import dotenv from "dotenv"; dotenv.config(); -// TODO: -// - deploy web3api to testnet at testnet/ens.eth -// - create Web3ApiClient pointed to rinkeby w/ signer($ETH_PRIV_KEY) -// - send queries - async function main() { - const uri = "ipfs/QmfPBVeJkVL78yecnTXx4tKd6kyFcGkAXSNtznKacHWvbG"; + const uri = "ipfs/QmdAsjKDB8rJEdYc8nqCCXVMcCweDArau2oZ9qaF33KJZr"; const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; // const resolverAddress = "0xf6305c19e814d2a75429Fd637d01F7ee0E77d615"; const network = "rinkeby"; - const domain = "open.someopendomain.eth"; + const domain = "open.web3api.eth"; const privKey = process.env.ETH_PRIV_KEY as string; if (!privKey) { @@ -123,15 +118,3 @@ main() .finally(() => process.exit(0) ); - -/* -//PSEUDO-CODE Recipe to deploy and configure public subdomain -x const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" -x const publicResolverAddress = "0x..." -x const label = "mysubdomain" -const owner = "0x..." -x const domain = "public.domain.eth" - -x const fifsRegistrarAddress = await deployFIFSRegistrar(ensAddress, domain) -x await setSubdomainOwner(domain, fifsRegistrarAddress, ensAddress) -*/ diff --git a/packages/apis/ens/script/create-domain.ts b/packages/apis/ens/script/create-domain.ts index dbb8a06e99..9fadad46ea 100644 --- a/packages/apis/ens/script/create-domain.ts +++ b/packages/apis/ens/script/create-domain.ts @@ -1,6 +1,120 @@ -/* -//PSEUDO-CODE Recipe to register subdomain under public subdomain +import { Web3ApiClient } from "@web3api/client-js"; +import { ipfsPlugin } from "@web3api/ipfs-plugin-js"; +import { ethereumPlugin, EthereumProvider } from "@web3api/ethereum-plugin-js"; +import { ensPlugin } from "@web3api/ens-plugin-js"; -await registerSubnodeOwnerWithFIFSRegistrar(label, owner, fifsRegistrarAddress) -await setResolver(`${label}.${domain}`, publicResolverAddress, ensAddress) -*/ +import { ethers, Wallet } from "ethers"; +import axios from "axios"; +import dotenv from "dotenv"; +dotenv.config(); + +async function main() { + const uri = "ipfs/QmdAsjKDB8rJEdYc8nqCCXVMcCweDArau2oZ9qaF33KJZr"; + const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; + const fifsAddress = "0x7bED8d0f143D14665bc438Fea4f4a952797D30fc"; + const resolverAddress = "0xf6305c19e814d2a75429Fd637d01F7ee0E77d615"; + const network = "rinkeby"; + const domain = "open.web3api.eth"; + const label = "test"; + const privKey = process.env.ETH_PRIV_KEY as string; + + if (!privKey) { + throw Error("ETH_PRIV_KEY env variable is missing"); + } + + // Get the test ens address + const { data } = await axios.get("http://localhost:4040/ens"); + const testnetEnsAddress = data.ensAddress as string; + + const provider = ethers.getDefaultProvider(network); + const signer = new Wallet(privKey, provider); + + const client = new Web3ApiClient({ + redirects: [ + { + from: "w3://ens/ipfs.web3api.eth", + to: ipfsPlugin({ + provider: "http://localhost:5001", + fallbackProviders: ["https://ipfs.io"] + }), + }, + { + from: "w3://ens/ens.web3api.eth", + to: ensPlugin({ + addresses: { + testnet: testnetEnsAddress + } + }), + }, + { + from: "w3://ens/ethereum.web3api.eth", + to: ethereumPlugin({ + networks: { + rinkeby: { + provider: provider as EthereumProvider, + signer + }, + testnet: { + provider: "http://localhost:8545" + } + } + }), + } + ] + }); + + const reg = await client.query<{ + registerSubnodeOwnerWithFIFSRegistrar: string + }>({ + uri, + query: `mutation { + registerSubnodeOwnerWithFIFSRegistrar( + label: "${label}" + owner: "${await signer.getAddress()}" + fifsRegistrarAddress: "${fifsAddress}" + connection: { + networkNameOrChainId: "${network}" + } + ) + }` + }); + + if (!reg.errors) { + console.log(`Registered Subdomain "${label}"!`) + console.log(reg.data?.registerSubnodeOwnerWithFIFSRegistrar); + } else { + throw Error(`Failed to register subdomain: ${reg.errors}`); + } + + const setRes = await client.query<{ + setResolver: string + }>({ + uri, + query: `mutation { + setResolver( + domain: "${label}.${domain}" + resolverAddress: "${resolverAddress}" + registryAddress: "${ensAddress}" + connection: { + networkNameOrChainId: "${network}" + } + ) + }` + }); + + if (!setRes.errors) { + console.log(`Set Resolver!`) + console.log(setRes.data?.setResolver); + } else { + throw Error(`Failed to set resolver: ${setRes.errors}`); + } +} + +main() + .catch(e => { + console.error(e); + process.exit(1); + }) + .finally(() => + process.exit(0) + ); From 70556217ff3a6c4acb786a572574cf950bd77255 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 26 Apr 2021 14:37:53 -0500 Subject: [PATCH 08/53] brainstorming --- packages/apis/ens/recipes/configure-fifs.json | 1 + packages/apis/ens/recipes/create-fifs-subdomain.json | 1 + packages/apis/ens/script/configure.ts | 1 - packages/apis/ens/src/utils.ts | 2 +- 4 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 packages/apis/ens/recipes/configure-fifs.json create mode 100644 packages/apis/ens/recipes/create-fifs-subdomain.json diff --git a/packages/apis/ens/recipes/configure-fifs.json b/packages/apis/ens/recipes/configure-fifs.json new file mode 100644 index 0000000000..30404ce4c5 --- /dev/null +++ b/packages/apis/ens/recipes/configure-fifs.json @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/packages/apis/ens/recipes/create-fifs-subdomain.json b/packages/apis/ens/recipes/create-fifs-subdomain.json new file mode 100644 index 0000000000..30404ce4c5 --- /dev/null +++ b/packages/apis/ens/recipes/create-fifs-subdomain.json @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/packages/apis/ens/script/configure.ts b/packages/apis/ens/script/configure.ts index a146017db6..eb0decc54a 100644 --- a/packages/apis/ens/script/configure.ts +++ b/packages/apis/ens/script/configure.ts @@ -11,7 +11,6 @@ dotenv.config(); async function main() { const uri = "ipfs/QmdAsjKDB8rJEdYc8nqCCXVMcCweDArau2oZ9qaF33KJZr"; const ensAddress = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; - // const resolverAddress = "0xf6305c19e814d2a75429Fd637d01F7ee0E77d615"; const network = "rinkeby"; const domain = "open.web3api.eth"; const privKey = process.env.ETH_PRIV_KEY as string; diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index 2ee479ad27..c9e8c8a086 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -8,7 +8,7 @@ export function namehash (inputName: string): string { const name: string = normalize(inputName) if (name) { - const labels: string[] = name.split('.') + const labels: string[] = name.split('.'); for(let i = labels.length - 1; i >= 0; i--) { const labelSha = SHA3_Query.buffer_keccak_256({ From cb658c509d2201511b0c86092f3632156ef9e37e Mon Sep 17 00:00:00 2001 From: namesty Date: Tue, 3 Aug 2021 15:26:50 +0200 Subject: [PATCH 09/53] [WIP] adding JSON type support --- .../src/__tests__/Web3ApiClient.spec.ts | 64 +++++++++++++++++++ .../cases/apis/json-type/package.json | 8 +++ .../cases/apis/json-type/query/index.ts | 21 ++++++ .../cases/apis/json-type/query/schema.graphql | 9 +++ .../cases/apis/json-type/web3api.yaml | 7 ++ packages/wasm/as/assembly/index.ts | 6 ++ packages/wasm/as/assembly/msgpack/Read.ts | 4 ++ .../wasm/as/assembly/msgpack/ReadDecoder.ts | 15 +++++ packages/wasm/as/assembly/msgpack/Write.ts | 4 ++ .../wasm/as/assembly/msgpack/WriteEncoder.ts | 16 +++++ .../wasm/as/assembly/msgpack/WriteSizer.ts | 16 +++++ packages/wasm/as/package.json | 3 +- 12 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 packages/test-cases/cases/apis/json-type/package.json create mode 100644 packages/test-cases/cases/apis/json-type/query/index.ts create mode 100644 packages/test-cases/cases/apis/json-type/query/schema.graphql create mode 100644 packages/test-cases/cases/apis/json-type/web3api.yaml diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 487a270b3a..10049292db 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -857,6 +857,70 @@ describe("Web3ApiClient", () => { } }); + it("JSON-type", async () => { + const api = await buildAndDeployApi( + `${GetPathToTestApis()}/json-type`, + ipfsProvider, + ensAddress + ); + const ensUri = `ens/testnet/${api.ensDomain}`; + + const client = await getClient(); + + { + const response = await client.query<{ + method: string + }>({ + uri: ensUri, + query: `query { + method( + arg1: "123456789123456789" + obj: { + prop1: "987654321987654321" + } + ) + }` + }); + + const result = BigInt("123456789123456789") * BigInt("987654321987654321"); + + expect(response.errors).toBeFalsy(); + expect(response.data).toBeTruthy(); + expect(response.data).toMatchObject({ + method: result.toString() + }); + } + + { + const response = await client.query<{ + method: string + }>({ + uri: ensUri, + query: `query { + method( + arg1: "123456789123456789" + arg2: "123456789123456789123456789123456789" + obj: { + prop1: "987654321987654321" + prop2: "987654321987654321987654321987654321" + } + ) + }` + }); + + const result = BigInt("123456789123456789") + * BigInt("123456789123456789123456789123456789") + * BigInt("987654321987654321") + * BigInt("987654321987654321987654321987654321"); + + expect(response.errors).toBeFalsy(); + expect(response.data).toBeTruthy(); + expect(response.data).toMatchObject({ + method: result.toString() + }); + } + }); + it("bytes-type", async () => { const api = await buildAndDeployApi( `${GetPathToTestApis()}/bytes-type`, diff --git a/packages/test-cases/cases/apis/json-type/package.json b/packages/test-cases/cases/apis/json-type/package.json new file mode 100644 index 0000000000..39e8b19be1 --- /dev/null +++ b/packages/test-cases/cases/apis/json-type/package.json @@ -0,0 +1,8 @@ +{ + "name": "test-case-json-type", + "private": true, + "dependencies": { + "@web3api/wasm-as": "0.0.1-prealpha.28", + "assemblyscript": "0.19.1" + } +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/json-type/query/index.ts b/packages/test-cases/cases/apis/json-type/query/index.ts new file mode 100644 index 0000000000..22319c9dc0 --- /dev/null +++ b/packages/test-cases/cases/apis/json-type/query/index.ts @@ -0,0 +1,21 @@ +import { + Input_method +} from "./w3"; +import { BigInt, JSON } from "@web3api/wasm-as"; + +export function stringifyMethod(input: Input_stringifyMethod): String { + let result = input.arg1.mul(input.obj.prop1); + + if (input.arg2) { + result = result.mul(input.arg2 as BigInt); + } + if (input.obj.prop2) { + result = result.mul(input.obj.prop2 as BigInt); + } + + return result; +} + +export function parseMethod(input: Input_parseMethod): JSON { + +} diff --git a/packages/test-cases/cases/apis/json-type/query/schema.graphql b/packages/test-cases/cases/apis/json-type/query/schema.graphql new file mode 100644 index 0000000000..1ce1832f1d --- /dev/null +++ b/packages/test-cases/cases/apis/json-type/query/schema.graphql @@ -0,0 +1,9 @@ +type Query { + stringifyMethod( + arg: JSON! + ): String! + + parseMethod( + arg: String! + ): JSON! +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/json-type/web3api.yaml b/packages/test-cases/cases/apis/json-type/web3api.yaml new file mode 100644 index 0000000000..cee38aa338 --- /dev/null +++ b/packages/test-cases/cases/apis/json-type/web3api.yaml @@ -0,0 +1,7 @@ +format: 0.0.1-prealpha.1 +query: + schema: + file: ./query/schema.graphql + module: + language: wasm/assemblyscript + file: ./query/index.ts diff --git a/packages/wasm/as/assembly/index.ts b/packages/wasm/as/assembly/index.ts index 4eab490a69..98939c23bf 100644 --- a/packages/wasm/as/assembly/index.ts +++ b/packages/wasm/as/assembly/index.ts @@ -10,6 +10,12 @@ export { export { BigInt } from "./BigInt"; +export { + JSON, + JSONDecoder, + JSONEncoder, + JSONHandler, +} from "assemblyscript-json"; export * from "./abort"; export * from "./invoke"; export * from "./subinvoke"; diff --git a/packages/wasm/as/assembly/msgpack/Read.ts b/packages/wasm/as/assembly/msgpack/Read.ts index 24b80823ec..9ef515e73b 100644 --- a/packages/wasm/as/assembly/msgpack/Read.ts +++ b/packages/wasm/as/assembly/msgpack/Read.ts @@ -2,6 +2,8 @@ import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; +import { JSON } from "assemblyscript-json"; + export abstract class Read { abstract readBool(): bool; abstract readInt8(): i8; @@ -17,6 +19,7 @@ export abstract class Read { abstract readBytesLength(): u32; abstract readBytes(): ArrayBuffer; abstract readBigInt(): BigInt; + abstract readJSON(): JSON.Obj; abstract readArrayLength(): u32; abstract readArray(fn: (reader: Read) => T): Array; abstract readMapLength(): u32; @@ -37,6 +40,7 @@ export abstract class Read { abstract readNullableString(): string | null; abstract readNullableBytes(): ArrayBuffer | null; abstract readNullableBigInt(): BigInt | null; + abstract readNullableJSON(): JSON.Obj | null; abstract readNullableArray(fn: (decoder: Read) => T): Array | null; abstract readNullableMap( key_fn: (reader: Read) => K, diff --git a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts index a2cc62ba88..7e5a5c65ef 100644 --- a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts +++ b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts @@ -14,6 +14,8 @@ import { Read } from "./Read"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; +import { JSON } from "assemblyscript-json"; + export class ReadDecoder extends Read { private readonly _context: Context; private view: DataView; @@ -209,6 +211,11 @@ export class ReadDecoder extends Read { return BigInt.fromString(str); } + readJSON(): JSON.Obj { + const str = this.readString(); + return JSON.parse(str); + } + readArrayLength(): u32 { if (this.isNextNil()) { return 0; @@ -367,6 +374,14 @@ export class ReadDecoder extends Read { return this.readBigInt(); } + readNullableJSON(): JSON.Obj | null { + if (this.isNextNil()) { + return null; + } + + return this.readJSON(); + } + readNullableArray(fn: (decoder: Read) => T): Array | null { if (this.isNextNil()) { return null; diff --git a/packages/wasm/as/assembly/msgpack/Write.ts b/packages/wasm/as/assembly/msgpack/Write.ts index 7a3555097c..80c5c3cc5c 100644 --- a/packages/wasm/as/assembly/msgpack/Write.ts +++ b/packages/wasm/as/assembly/msgpack/Write.ts @@ -2,6 +2,8 @@ import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; +import { JSON } from "assemblyscript-json"; + export abstract class Write { abstract writeNil(): void; abstract writeBool(value: bool): void; @@ -18,6 +20,7 @@ export abstract class Write { abstract writeBytesLength(length: u32): void; abstract writeBytes(value: ArrayBuffer): void; abstract writeBigInt(value: BigInt): void; + abstract writeJSON(value: JSON.Obj): void; abstract writeArrayLength(length: u32): void; abstract writeArray( a: Array, @@ -42,6 +45,7 @@ export abstract class Write { abstract writeNullableString(value: string | null): void; abstract writeNullableBytes(value: ArrayBuffer | null): void; abstract writeNullableBigInt(value: BigInt | null): void; + abstract writeNullableJSON(value: JSON.Obj | null): void; abstract writeNullableArray( a: Array | null, fn: (writer: Write, item: T) => void diff --git a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts index 3d87ebbcb2..8ce9b6d08e 100644 --- a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts +++ b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts @@ -5,6 +5,8 @@ import { Write } from "./Write"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; +import { JSON } from "assemblyscript-json"; + export class WriteEncoder extends Write { private readonly _context: Context; private view: DataView; @@ -133,6 +135,11 @@ export class WriteEncoder extends Write { this.writeString(str); } + writeJSON(value: JSON.Obj): void { + const str = value.stringify(); + this.writeString(str); + } + writeArrayLength(length: u32): void { if (length < 16) { this.view.setUint8((length) | (Format.FIXARRAY)); @@ -287,6 +294,15 @@ export class WriteEncoder extends Write { this.writeBigInt(value); } + writeNullableJSON(value: JSON.Obj | null): void { + if (value === null) { + this.writeNil(); + return; + } + + this.writeJSON(value); + } + writeNullableArray( a: Array | null, fn: (encoder: Write, item: T) => void diff --git a/packages/wasm/as/assembly/msgpack/WriteSizer.ts b/packages/wasm/as/assembly/msgpack/WriteSizer.ts index a9238b7277..5c0b1f350b 100644 --- a/packages/wasm/as/assembly/msgpack/WriteSizer.ts +++ b/packages/wasm/as/assembly/msgpack/WriteSizer.ts @@ -3,6 +3,8 @@ import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; +import { JSON } from "assemblyscript-json"; + export class WriteSizer extends Write { length: i32; private readonly _context: Context; @@ -114,6 +116,11 @@ export class WriteSizer extends Write { this.writeString(str); } + writeJSON(value: JSON.Obj): void { + const str = value.stringify(); + this.writeString(str); + } + writeArrayLength(length: u32): void { if (length < 16) { this.length++; @@ -264,6 +271,15 @@ export class WriteSizer extends Write { this.writeBigInt(value); } + writeNullableJSON(value: JSON.Obj | null): void { + if (value === null) { + this.writeNil(); + return; + } + + this.writeJSON(value); + } + writeNullableArray( a: Array | null, fn: (sizer: Write, item: T) => void diff --git a/packages/wasm/as/package.json b/packages/wasm/as/package.json index 3b09effcfd..253beafd3c 100644 --- a/packages/wasm/as/package.json +++ b/packages/wasm/as/package.json @@ -21,7 +21,8 @@ "test:ci": "asp --summary" }, "dependencies": { - "as-bigint": "0.2.4" + "as-bigint": "0.2.4", + "assemblyscript-json": "1.1.0" }, "devDependencies": { "@as-pect/cli": "5.0.1", From 51bcdee65a9207b0446eaa749c1314dcf527a53e Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 10 Aug 2021 17:16:56 +0200 Subject: [PATCH 10/53] feat: ens wrapper building once again --- packages/apis/ens/src/mutation/schema.graphql | 2 +- packages/apis/ens/src/utils.ts | 2 ++ packages/apis/ens/web3api.yaml | 5 +++++ packages/js/plugins/sha3/schema.graphql | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/apis/ens/src/mutation/schema.graphql b/packages/apis/ens/src/mutation/schema.graphql index c430d7cfd5..35944d9df8 100644 --- a/packages/apis/ens/src/mutation/schema.graphql +++ b/packages/apis/ens/src/mutation/schema.graphql @@ -110,7 +110,7 @@ type Mutation { tld: String! connection: Ethereum_Connection txOverrides: TxOverrides - ): Ethereum_TxResponse! + ): String! registerSubnodeOwnerWithFIFSRegistrar( label: String! diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index c9e8c8a086..f846d57fa5 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -14,6 +14,8 @@ export function namehash (inputName: string): string { const labelSha = SHA3_Query.buffer_keccak_256({ message: String.UTF8.encode(labels[i]) }); + + const combined = new Uint8Array(node.byteLength + labelSha.byteLength); combined.set(node); combined.set(Uint8Array.wrap(labelSha), node.byteLength); diff --git a/packages/apis/ens/web3api.yaml b/packages/apis/ens/web3api.yaml index d9278fc39d..d2fda63b92 100644 --- a/packages/apis/ens/web3api.yaml +++ b/packages/apis/ens/web3api.yaml @@ -8,3 +8,8 @@ modules: query: schema: ./src/query/schema.graphql module: ./src/query/index.ts +import_redirects: + - uri: w3://ens/sha3.web3api.eth + schema: ../../../node_modules/@web3api/sha3-plugin-js/schema.graphql + - uri: w3://ens/uts46.web3api.eth + schema: ../../../node_modules/@web3api/uts46-plugin-js/schema.graphql \ No newline at end of file diff --git a/packages/js/plugins/sha3/schema.graphql b/packages/js/plugins/sha3/schema.graphql index 5f6fae0e28..e87b8092a2 100644 --- a/packages/js/plugins/sha3/schema.graphql +++ b/packages/js/plugins/sha3/schema.graphql @@ -10,7 +10,7 @@ type Query { keccak_224(message: String!): String! hex_keccak_256(message: String!): String! - buffer_keccak_256(message: Bytes!): String! + buffer_keccak_256(message: Bytes!): Bytes! shake_128(message: String!, outputBits: Int!): String! shake_256(message: String!, outputBits: Int!): String! From f4eaef1a9a41bae7a158a7b468c73a0c8fc84245 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 10 Aug 2021 22:42:08 +0200 Subject: [PATCH 11/53] feat: metadata added --- packages/apis/ens/.DS_Store | Bin 0 -> 6148 bytes packages/apis/ens/meta/imgs/logo.png | Bin 0 -> 25527 bytes .../meta/queries/deployFIFSRegistrar.graphql | 9 +++++++++ .../apis/ens/meta/queries/getAddress.graphql | 9 +++++++++ .../ens/meta/queries/getContentHash.graphql | 9 +++++++++ .../ens/meta/queries/getExpiryTimes.graphql | 9 +++++++++ .../ens/meta/queries/getNameFromAddress.graphql | 9 +++++++++ packages/apis/ens/meta/queries/getOwner.graphql | 9 +++++++++ .../apis/ens/meta/queries/getResolver.graphql | 9 +++++++++ packages/apis/ens/meta/queries/register.graphql | 11 +++++++++++ .../ens/meta/queries/reverseRegister.graphql | 10 ++++++++++ .../apis/ens/meta/queries/setAddress.graphql | 10 ++++++++++ .../ens/meta/queries/setContentHash.graphql | 10 ++++++++++ packages/apis/ens/meta/queries/setOwner.graphql | 10 ++++++++++ .../apis/ens/meta/queries/setRecord.graphql | 12 ++++++++++++ .../apis/ens/meta/queries/setResolver.graphql | 10 ++++++++++ .../ens/meta/queries/setSubdomainOwner.graphql | 10 ++++++++++ .../ens/meta/queries/setSubdomainRecord.graphql | 13 +++++++++++++ packages/apis/ens/recipes/constants.json | 8 ++++---- packages/apis/ens/web3api.meta.yaml | 9 +++++++++ 20 files changed, 172 insertions(+), 4 deletions(-) create mode 100644 packages/apis/ens/.DS_Store create mode 100644 packages/apis/ens/meta/imgs/logo.png create mode 100644 packages/apis/ens/meta/queries/deployFIFSRegistrar.graphql create mode 100644 packages/apis/ens/meta/queries/getAddress.graphql create mode 100644 packages/apis/ens/meta/queries/getContentHash.graphql create mode 100644 packages/apis/ens/meta/queries/getExpiryTimes.graphql create mode 100644 packages/apis/ens/meta/queries/getNameFromAddress.graphql create mode 100644 packages/apis/ens/meta/queries/getOwner.graphql create mode 100644 packages/apis/ens/meta/queries/getResolver.graphql create mode 100644 packages/apis/ens/meta/queries/register.graphql create mode 100644 packages/apis/ens/meta/queries/reverseRegister.graphql create mode 100644 packages/apis/ens/meta/queries/setAddress.graphql create mode 100644 packages/apis/ens/meta/queries/setContentHash.graphql create mode 100644 packages/apis/ens/meta/queries/setOwner.graphql create mode 100644 packages/apis/ens/meta/queries/setRecord.graphql create mode 100644 packages/apis/ens/meta/queries/setResolver.graphql create mode 100644 packages/apis/ens/meta/queries/setSubdomainOwner.graphql create mode 100644 packages/apis/ens/meta/queries/setSubdomainRecord.graphql create mode 100644 packages/apis/ens/web3api.meta.yaml diff --git a/packages/apis/ens/.DS_Store b/packages/apis/ens/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f93ad8857d0e223bfc5694936234d2e28cdd8166 GIT binary patch literal 6148 zcmeH~O^O0R4256(0bw>SUDn0}c!NTm6U+rf8$l3Ui2FLaFR5&7XFW8-3#48pRq3B^ z(bWN9`{%F&)&N#?S8RP4nK54CgeR`JVYm#B^XY!Sc^b3a>j9nDcwf(Di3o^*2#A0P zh`@vh#39b}|7$|eq(>0}5ts%6|2`DDYfWukw^_-6!carimx`BHhde!QONkD2v(qf=u$hqs>q27VN8=wVzhKB3ms)|DBWegp!8 J1`+sE0xx3T6K((i literal 0 HcmV?d00001 diff --git a/packages/apis/ens/meta/imgs/logo.png b/packages/apis/ens/meta/imgs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6ada3051504e8f9b5a1c3d52a910bb4a40855135 GIT binary patch literal 25527 zcmb5VXIoQU7cIOKLJ3GQ2q;AYhAK@#nm~fmyYvn=1f)rkB9MeCiqb?7rAqGt(lJ3) z6bmRFDN#TmC`2FZ&KV_}G=9puSSyqOfjVUj;C^rBAyyj*`_5c84 zy@CKP4%Wjnyw;EPfQFg5MF0Q~?7tuA+d?7@0N{YRk)dPE+@Ar?7|-D-&3^fijH{*x zSLAN}6#kyE{BQW*nnr=+y@4d-0WFVQnVgE5^Mi|b*hP5$E#BF#bahnvxL_mx{ov;C!^aVRzpUi14W;plX$H--UjBc7nKLzd zt>oymQGdrXdH>jl7Ppc8`q$0$(e}&BHhj=)fX9*u`<8m5%E4|(j;;7*Kc-;tOm`mE zcI4qa2{n(W}9M$ z(B_Bt5(3_IgDk)V{&r~0C~vD^DvBPD+Hi=qS>>fu6Xh%i{?ii%0yZCF)66!@?- zWXR;sB|1P!?zwX#vvh08l5oQ#D$cGkvE(}KBz>)ls=GUuXf8T^<`pca>B@h*=@6UL zO4XBfa!>Appfzs{=}Kt^XTu*}jkjkO|AZ6NxllD=BLqc%`gTYGdg<+Pq1rR9TE0W? z{$!dF_q<;yP=7E!w(hiqE-7N4!cS*y9%uKQ7BI58@D&NRA-Jauo&U5D-X33F~HHe)- zxww{2#ZM(iXz?Vn@=?|?R}-`>TB`qMg3;o{M9&5dUXu}PBY<$5e~P0BTpRmfVis~c zVAtfJZ*$rSTJH5$leWbV`IaiZ$q_W;f01; z)YgwZVLrunBq09eQpB{0o)bS;U(nMc8H!~5f*b(=vzzrLjio(seouBQ81WVNM zLN_(sW=kz!nM9hD#KY0U;6d0(Q5WXk*IAZsL zATT@~Nse5_IgFi~w=yUx;Rb$>Zr;dNfma0b`85Gc&5YmDTS!4Ok9$#Zz6D3Ww|=c8 zHXQnvhekS8-Prk4MvREyk1lIO7dD+EWTmLP&|YRf`m|S$yHB#SP|T+4JuEq6=Brmq z+m~5Dg|+AMiV4#OH}q>0&!TT5p{>Q5<9C4aryTL>dcnBocI&t?_|4ltRJC+^0_uS0 z0mI#i)~dys?=|>b~%-;xe1-lXs9YWj>lIxiWz^5T!vw^s&fRyH_ zHvcJOEna0v=rn;$eE-C)S2e|^_Bi#?kuz!oeuS>$$>5aSvtIr+M}i}*Na=L17~_sa zAGY6FhTPw|v@I?tU@|(AByAOFsS6Dsc=baXL>7|N!F&DGrBjtc+Ysz7|f zzkFxX$PtJpxmn**Tj$t|lsZ&+hpS;8CQD=n&B)JtBBOFL7oRP^;@P(}|6s0s>d9lD zO5R<4^);Lc$Z-oCG!FK7%zhy A0qMKygr`%TCRuHjHf(fV@4%1O3{CwS_!RFg83c>+k$yWHL|)K6=Nw0e#<@wou8V)-ELZ z8uur9&<$%AD1pI$8D}Jf_o`JSCi)Yi3po5Fey0z=D?VW&lYHl&^^(5)ywCDx1a{$0 z$Vt2imWXtS`19Ky;~Jvi+g1tYA31Tq)tr6)o%j*kE%&_?*|z75#ncJrX-kOamgi)P z#rJmpD->CS30@D)B2T31q{xQ=WWMOS`=Cp5YKIwR3WoAi#CLLV7fP?;IGGPI7qiDx z<9gN8mdIg*b4k|Lf6_(B#$z-%`F9wR|yzF;MfNgs*1Iu%!h|>r+8<&*)T0lH^bsuB;U2<5#RU! z!XN?ZEPU!F^9t=&D@mls+QI+CXQR`zY#!hI*mo#hPlQrR>VgSW9@>`>(AtWiSH28b z><=I9LskD^KSlreX$7BYd{np+G2jXXo_l%|D5^;+>nrwE<0;yk)CLuEtI2s7s`d3< zW<*L=nP@oGYH2DrepCLuz9gniT6tWprx~PC#8b1@NI{_`e3*6(Pc|D83;+JYB70tW zi!i=$n9JF3ENYTRt=L^n6tg=E%~z};RHhY^Igt8y-#p2BE28y=$Xs^gxAHpI^F76wCo(MqZTlfjVy$>(05|*lsx$3HszNI6_9M=kU@;qW zcIh4wu5%XPoMT#qE?Fd78~sspJ0ykt;K6%kqfo9{)<=x&dGGdoYSI1x8fr^8fu58Z8^QC|4DV++Qhf?&Qlck zr7{z~f7&Z?=X$O=l;Q!Qb-b2T_Xw0cGu5S^w8TV@%xgBNAF&wUl|@UAoS zijPZbDC7iKt4zzyfXg3DaU{l-^Go((JEj*(7kRWo<5aWw``zFX^8&U;B8<7ypu!st z>TItBXQtkGW818VA5a@@A7Bx0}|`crKi114PX z^^>o+M9AvLIGs8drp#ze^#PZ%Z*+Bl(xqG|^xj^~tXkkv_!Dn7N*w#E#H?H9ITLh| ze?vjfV-NnzOex!L9y@j;TD?BZ+sS{GV^QvbBzL z-6W+?xBhGedCkzl24OBMd*0eQ1Jm3+i7K0+;mkuT>}mg|?c;L!K|7c23vhT`OYe)| zA>{+)ead*%#7)e`)XLWNczTbLu?Nfd?XO0$^Efr$TA}YuLZy?wRi5%yJxU-iM#=ru z`WcyA9O}+Vt4qaQ6g4uA-r>~z*!g3)vp#}-)f;QJ*4GI7qDn2_S4`KW>pwLikc_h&?(>_7fFeoayeGj{Rxm1`)7^JIT`eFKphGfezulWQmopsBr8Xggs-8HjZARpy&KD`LjWjC71y&zY+fI^w^w2zMj_Lo+y6$Xy*P2 zn3;aTv$KS=1Qli|HA5G>5O>9)2Rs?mEntdh+Ld_f14jW2SR z!9Gf0M2@A6Sg-!|W#7MSg$zEh2t+IlPf?ZjK&@{RjKlp5s#uFvkd+0LO`ZEw=olp`KCH^Q#`;5NlT zW`5@LUWIRpCvmxS(qG1nq(7al1>E*Y4fm z481Cs-J8btC3&%-$s@HkvvnC@4p)g`1YO&mCl#kKfZ~)ptov$3{H2TjBNcJ%jJLeT z<08`^`R5v|GMXbEYtlj#93>HiPd-~QMG(rBBiR@LdiR| zN14}fWh(D+avImY5s}*0OPMmf$!pCJl1ms1Jp{;I2*eC?N`kr zQ~vIGX_X<#9^VDI*o&Rq^wJ6H7&@+nQ_)B?9FR?-R-km%LK&h`eoE$~Czhh~vzCHJ zU~vR~4aglN-{ZG5i?k$VYoy6wHMtG;79eu~uZL#Q|NeIeE z5zWRDPEs;tX74SO9|1>!#Ww&>DAy{)-rV<+D0Ka2nKX7X4dN;a?bb1e+aav5j&y_qG?DvyHYZD&~&)oJ-$gtof zn%ervuuLu`LC6!)8U) zmq(^opDG`n?~J*AyZ9DphfO2SJ7GV=G6jIfEU!&RWMf$0PBQnsr3n2LAPm+1ECo{k zGaPv_)4F%vSo!Vw${j6ZFa`N!U_i(LyT|L9^P8w@n(BxK<30wU=%B=3DP7zzuCQGN z(5i9oR-ex2UN3??4r$x|5u72_PP|}i)5P=O+4CL7(Fo$Us7@E7U|Bfs%BOx^5d{1$ zL{=Uquz^scSDRz7kZ14AFfJqGVf5ENyj#d3cS^hDNoIC_D_V)t7mxs{vdnpE#oktj zzRpLU=ELAsIq|j-d^y7i9CVH={@h)Ffc}(?|Ms~E(&;J^_HnuD$;%zxpiX;qCD>9{ zNf3-6;GqK0Fl(^18F+Qp%-1{@^6M7@OK`_p!CZ^Y!JeVg;S-CI`$BZA>Pv#{DeN^) zsXXraCJ~ERt@Eb^%tHh$V5ntcC>N#?S#b6F=`x1OPT~s=g~2xKt=+TiGrxsZCl&B8 zOK_J#+L!v%Q`4gZXZxnaG;3@!3mt|H!SQ?Zx_mH!t83FT=DvovVTCytz`RX{V9z{E zA4u|=z~JVOs6etul?rV(?O0s^>Tw*N+x(fX&|Qr@piTKppgnzBc2E_H$^-DW$rDR# zl!Ky$3n)5Hc@nLz10w&v-!-?t_xMf3_|1z~*J91s0$0z%mci>p=p1f>JnCo)f<`lF@YP}M_eVg*y#|CD$bzFmfe2M=CDPrMt zxp5t;mugy6&SJ2Y=4Gr%SQx9_na6fRR1iOS4H*p*%Y3$h{9WFA2LEMR7p*?8J9SeTKZ zW%@y2B?t~m*X3z)TW+peOA(WIYa7`*A36`EAbh7d9@Uj(esc19vU78A@gC8ZAmUDk z(!@I@iQ94S58ql;vfb}$YdZ#;`IRah+=UqP`@1($G}cvf^^+Yj>kv95%*`TOj?qRo z=mZRUw-EtoseO^dau|boHm~1m4S?B<EzxIOxc)rn;4iE4=rc>wMefB*d{cASIAS z5qC<|Zgwl~T->te%ShdAR<3xJ*kYTj%hU7D~|&6 zC__7}^)7jzascjy+B7AIY@sRNf?WF5o=>s;4~uA6?WiG`SI6A*R>O=Qo*2LaM^XLQv;Ojgibp4=>-`+PI)IiK{lmILG&6$UHG{vb z>Yh`Yh!Gv@B(`v&l1nerKY+AP??YdNJ-rk4gU^A7goypjI{)6k@_1%bz~3?TBA}!M z=0kq%DfQ}H(_<_oMH(ymw?Y;x6@XBym_=m!=R)?5fPAFyaKC>AUL>}bIVCeI@GaGy z*?covt!~DK%tFm^dm4U9mdd61G}w21F*%fz!VzuqkP$GBd*?+rNq#PZ2fwsmphs7Ofk?8rqp zR$|M+f}Sr{*p+t|U!B+l;311+!~P4dhTxyGjR?DfR0uKE zTkVk{_=IJ;m>j6t9PiOtBnYJmD-4!?Q~#+rd7n?}#aG(h%Fo=uSTgycp)ed+v?sUt zThO(BIik&h`<)hKPKrJVOcG{MeJ2t$$;?Dxi%V#YUly)I%gEm_=C|tVv#joACHg%U z$SRm_mHT+}jf2C_708<|wIk5@^T`mRyA8OffNz%_o|JkT7IZG0`Svty^xLkocU>>P zs!#AFZdC=3yr!|v^`+sL6x9>E67ta_|4@uv^HXw_0ZHULo_o zcjm|D7c_3pAkpjpnEp(PM#w zc8XAqt4vIQ((A|Rb<@5-E3Pr#N_Y4gOQ$&EUj;PT@r+&b6~2_95G!gIXh_nmMRH*# zmY&o857-`ZpNTHea<0S4rTRXU!9304lzmfG^$LA~#(%Q#IP=3P2N>7}&vLO!4(WBs zt0(s%e!rx#y)335TVa4~5GaW>;pUYN-}Q#Q_%O)MQ17+tuUV_EKTzzG|m+_-TRk{0w<1O#MF}Ye1&2)*Qnq>nK4SnJJMVz+e*O zCnZ!kFg?WlANsEg z(}E9m&X9ply{O@`pxxquAEqqFlLc&H_-9_tT4*GfZ`R?iTi*b3Oab-PY7+=gM$+#L zt|MhnDvF8a0Yg#$=nkoXlr|jna00~&ES0|zq^4(xv1e67y#4VxN_=fP4UioCiMZ+w zOVJDC!so_7i1OHv%AgKoqu1{gs2@|90!xRfk>Ja*zeVbhqjt=fT^97JopC}dvy$;8 zSMb88xn=8I@C(x(%#%YUXeCD9Z6nI^jKQ%+M$!6tU5fw=jsN#~S8#OyzKpUogH*SaGvOaen_X_*f1vmJ1 zuyjMew+Q1?xgE`4_{Mm)@c1TD^Ib#^{uIjwXL+D{p=NL<>)7)!>Nn3tNi_SIjk1}- z2a#7Z*qKd*N5|L=!RQyaIlgzlk

ylsvB}Z#y&ji{UzJMH9a_dgG7Cm3Ia$!pm3f<^S~CNOP-v366b)uyQF ze@tN~f4f(t4h^0UhuPJk-XtV`bT%Z8(hQhd&lyi6>Tm^F|C!?CQJ@ajPI`pEy0JE) zAfomM^ZmsVUh(Cp@lYE4@K-ur6vYjSl(;0(kDR_KE*J(5*}gO>od>D-EREG;ef>aW zp|!iBe-TMre|YAA*ZBFbsWe&Dpw_$nyrq(g+|DMh^8Gd-C=q@8x$b)2hghcK>>6_5 zd#J}RMjfOKKYC+px8IF374wIw{Ejn<+fIXAHjN$hIRQZ)HX3kA{}2IRL$kda+RUb_uC8l{ZzaC7tI(!UpQ#-6c6;s@uyEACxh=n?DzkJz?Ya> z=3Skro&N3|s#@-?-6k@w7)1JbI-FsjP}~;VhoP#QHXv~ih^l^yqzL&}=MUw%2$=nU zE6IUqVC$lTZUs**w?^Du$2KIiBfjE#ap`Ag2xL72a!=^Q{LEaixJVfI2m;^tpix-g zq&gSnCJLP|cmR>D$wfV8`M|a$DQz?&1H!mD^V_|r_UcSf6ra>L(EZont$=(dr4GL) zZ?V=d337Pmz)LfB7Wz4mp|7azCa0OP^*B4?b`s#pM~+^5CIFto)gUm*65rWtWr{CH z-<_Q)w;emEm%x4F;Ek+nbl^YC)~+5ZP-CP_tRt;|H$t zEHD_vC1@wXR>6(bu5`?5fy+$dWJ2A&sK=1j$Famh)ps5hjQbvT2cs2?M~5FlZ*N4{ zT7qXxMs>&-7d>*BSW)=U}l&;kFjMKMDE-QGVU&iT1RFvf=I77)iBw%;l?2bzy*+dM8y(ihnmN5JD@$8!+a z#WcvfYjRjwmYYap*My+ms-J2P#0UQIs0Usby}~E^@~gp>2e(13^s_>!EhY%Voc>|G zb2rqs0Xf>ax-VRZERDmj+MzYq8U5aO_*%46+u9)?@t^3W z1utH;~v|bHo3g1z52J4>~13_$^5&f;=1C zO^pe0|Lhp&m5tTS@ON%9_Pm3@z8pCNrr7H_H{Hl;{w@W@us=Mo2>v(AO+?lNkmbMv z4jB->xGkkh&}zD#PQKnM#svc7vex|unu64hAl1FRkr`iGHGe`Eh_g;jCG!{kgyHlf z`j`PT5fC!%Fs(1$G}QuhjFN{4yO@iL&PI)Dz}8Dmz;6Ge(ycB(HEC?A-ub4j{q?9@ zJ{?sRDtq6o8W?}hmC=A#V&Iwk$DrNm(@Bu^6rY6mayVX=pdgeDUp_dP7|I2Ra*{g+ z&gJA9nwmu#4)!KrwOXee~siIZCuuq^Ngr^ESu&($?8t!)j12B&{k3 zPl7{@grJ!rxe&^!yq~O~a@gdSBz%NiGo5lu{*p@ByNX7M;lKfTE_^}Atx1l3bvyKp zRTJCwiv}B+$dcP*rnkvU)syHu4YfFF%*B(Ol-b`A7px3^f8cw)nm&*V9p;_~Ii@;@ zp3m*YmG7W`DS}BJdgJth4okDAP&0G3+mRBRM?q?CoN$rs3*gCINUxt1*5n`m`>hLb zP_@{@t@3H`iDO8OGbiJ2yDL|Lgs=a3!U|()5CYhO9QC_bKZy%3wQ4JaVQs?DfQU0~ zU@kr*s#cF_ujEkM-EJ5Hrv1fx@!i4&B2+6(C)00rX?nFEt-VZ(cH%nHut==u%RVFM zTMbUXEheV{lE>dTh5h1Y1|MdC_+SK9Dv%5bybFP4*)$($3`||kTi)p@eG)jywBgDJ zw~mcG=#_0v&2OB+FCIB11W>$q6Bm`p(-5`j8}}!DU??3O%uuryIYl7vVGQnB%$vUZ zCAYpE?ehQm^|dWqCcU%;^Tn0m%V`c!xoUZTt&K|nJLqNL)l}>?WdJ?2iQvK33!@NY zbx_#*7ylETdIlHAG=4zhB(%YG(ze!hIh=WO-51S#ld1D4vgICm>2#+#ID7a`!$pG= zER5Jrm0pc;u!Vxgm<_U+pGnqi()okl=-*!5%p8OL1)h$mf15xUfMnC5CB{jhY5*xO zE?UAo^TyhxC`kCI0A`ybJQo$E2_vu#e+am+kNv=xgXbqe7L8jXm?^I7JpsH@m2ARJ z(XNdXh*qmS{LX_d;(KpH;m;(*`r>mLIL8apLaGy?O_S;^lLAn!p^^Ir9u?9 zF~_5ZKFg2!RkXTW zfxfP1bD73n<};vECrY_Ijl=q=*be zgI1X1vDY40upNW0gn=C;Sp|#;;7sZBSCfki0Z2E@G;J^JN=srSmw2Fn7eu^bLT9Rpfs7eqm5QidHo+jzB%(26{pzD zA`I0b&)1`0A2oYJl^Uzn}KL}zcmo9ctKZ5=j z=7j?Al&g!$d!F#5*NtpOxrYqNg*JujfB8pq!C~2HR%~I#1y*dX)Ou9=IZDGTHm*+` zD~8~mH552x^aWHJ+jWF=C$q77d3c=$x?gfZ3Tu52QbuKs4k^T=1VGyE^aJZU=Bxfm zAFD?Y0t}?B?#&JokFGHTYi~WyJl&y-;b{KAEZC$OcraAkK5@`Q%m@P;>d-jdF(1*) z%?~TT%H~zz4!L zWKn+UOrl*H>T!iAK0@JewfC_r^S4|=_)kV>1_B{c*d-sv&G!WNW*Rc~bwjCW_nh*4 zg9G%Uw7E#O6SLs^bHs7);!vg&iC>? z*9OMeQVNE5*2Xj`Y1}E`G9<6w;XTA%o-{P+e!2YeITR85RmI`PWa|Hz z!a`Qsc3;T#|2!kd^M<`rlMyL-wvQ?O;Q`W`cR-`CX&Pczv44z}Mvr~sE_BELZN9qj z&JXfwI;7w$G#uIzeHQJ~2fe7I$*m=P0yfiJ6!DY#dSobRC$T!3_BWR0C+VV2=r+c) zcQM_V7jgqFEUwrP!o|NralxyA<9^F*-_g4uG+yDoQ*!BaWp3M9wa@Idc27~OLpFJK zGi$aO-U@!-IWOaUpRmSYb=Aq}E;-2$=JjGu23ecNm@7~W@&i`6ggNk(n6cf8rXJKqtOlcwLJukfU`rQ60AU54T?^xMTqR!|OUIh|F>J z3qT;WRSGkJJqJkphyZW-r@)Le#SpMDs$GQ;5oe8RBh+vv;CAn73voC6C6|6I)p~Qe z37vkQJpcg^RNWFCQFJesbPu(s@3Rt!3_$xR>Oe@!q%=HT9!#-nc`)Bk$mTg6zsV`aU&5Edy)_`o4O)WDn-W&}|ntwX6heNvcWGgP8?Ib&Ej z8B)fu(mGsWWty|UkyuHh?OWtU;O6?v%gpHLd%c0ZkM zW^)HGRr=Y5`CMnxM;Bub$6TrzXu1dVUzr!-22qspNHEFy;|1@+*w1V@AD(P>L#nsT zx4ULW);!Kc=~Kl=1OarJ51`C<4@N=r;F%eW#2gtwtd2Dj$th=7(Y*CZMh;Skd+w32 zJLQ7TdQ@ud2nie0#^j{tf{k+d2zkfJ#3Mj~mLQE%#8_{;Cn51|V6KxK|2Xy(b zoM<6%5hC2~#l>Qm=3R2hS!UpD1$-}WE^8dN`O5Yg8(%UNBEk0r9O5nsOrk?u2{#5q zPn`z+{(GSv1yS+wUU@GyPC&q_|YlarI)PDJt zzTdVJfsJ&ZOjd_5P8{m2GCU=A6hj6Oui+&4&&U(yzPio)YKLX{^Tm zIt}?L#(|Kv!hv)wJqik&NjTZO1Ho*g$V`(wj4ofGgyqRo!mWqJzjJ-WV&7O5ek(;Or^*wSF@3w6^G)meRe#BPG zeJF-C$h!@;%Ohm@lhWIhef&v+q=gad3ytoZw3xTLP6BTdzTV@V0?qjACZ+x$(2poW zk{~1ey{r<{#02~|b5X~P9R*l@Mf)RLGo6vJE*vId5}2yuhf6EQg!|DZtsmr76* zB#|YlFr_W->6^MP@ckR7r`t!(NG%QQF|#1gj^o>UI;JR3UV;c({%~%{%tYJ{c&)6W@`1(jKS;r#p(O ztz!1?08HEJQUOS!3oBl9QcE8bYUY>3==B0aUt*Ue6H9QWI+)i_*vAHdYo-LBac`g$ zC;~C=%@agUPg{_7g*2wryTbbfK2EnAvf85!Nd$XKKr_4nH>>r{tyF_V0bOdIXy;B63W+wmTX%}m~L~_wAr#YP< zh=|f6qfU2X08MS=P)v(7sK$TLM6M(9xeQ3moD^-LOwFPCY@adTI-ygBbGi07(^h{a zhsueY z_S4JI;bPsdkb}eajH}_FsKGK4_mFt?)r6sB|C9f){pp;Px6Y_)09jQL0amjiNOUus4an1=IpBS0->qJ~ux1%ggUacTjiz>XECAt-@&p=$YLCQZ;ck9xH&+`RcOd zv(RsNlCseWqL{N52*r;o-sXOBEjhvyhOajIn#-%y;eS=S!{6a`MOm^S%3WmRbAVT+ z_0oGOT`zgE7hn%agIp6gg5*yAT}(e@mc(0>kT#zS8xa1=h-H`-Fq@K>R`Mg)Qd$4xU`VwQM}} zB&+Gn>P3w0_9rDuHotB0lxHPFd>oU9pn3XJ8Bn*91TD}DElQdG1!a&G2qLX?aRMjl zNmqP>zBUdTMGsv(w{yM;Lv24)le+`BMC-j}$nD4HAa6E#M=7RZqB^DWI;0 zn-ZwX6CdQj;MyaN+o4|n!_ul8>AcXLRM(CVZWg1MhWJw=ti`dDOBxTFPJR!LZ;Ohb z`*6v#D<=ZQQ94D?TC>Tf-Xt`*1I<3u>G8Q#K}u}Nf5m_Y2M-aL!4Xi5%tfBJAV=pm zJEQ1L5J+jU?X4WJ_-LnvF9{v&Kp3{`luXWe%S{v4L2|Aif4MW#YMW%G4u!R^8z!V##O*o^PJv_YpNK@|A;m%j2B!;_8p?&Ymcg@RPQ z4VIR4A#PXIqT48@gmgCTQ5jHw{9vC83=qeE6yd4lKrO@>f@O#$50=1|C!4QXZEb{l zkd_q(RfU6Xx<5ukvGdHfSQQJxvp2O0_8pWnY|TV_a%Lzc6Pnqwefyo&OOCCNV;23bF4>BUybg1H~#zffHTl_bV+L zHy5E|zaglDtfoVzjo=MC94?YpK(EIHdK;2H>9sPeG4eiG1Q1{0-Qk z=w|htsk_s|8ieHBz+l7(9F!-B>|fwC7s=_3iCo! z*N>J{;uoh<`eM2S-ZSsi9z%WR{?w^bM#3YFlhOSnhv&0!f3>2s8gA=m-M{zcDnR=R zP-+ADV0Hw_#}BwdD*G_ZF$7_4 z8qj0b3*!PsF9!xIs!d(+^vV02cC9~^8BE;e<^6BC%@ zy{i-gCxG?bRa=LTu_dbj^^!?HKTe-Wm^*ZsVTwH;{a}MztiswHhSpAE%rC+~oH zMNDRmcGj2B;mOdax8HM=Jly&f(SWz@Eak$C&dR1^{_OjO+P>dqzY%PC%mXGbKpIV> zs%ED3S~-m@MFsBd=kU=QzwgC?q{Du2LFNI@quF94bNE}{Beu8Ls%`N8KLlQtRCu8> zHV_)rO0f#TgmOx5m`U-i!^}HQx2aL(4Aw*l8&MTODQBGWE`Wr&Co!Lih=ymRbE~kI zxq4NF2hT9tUOxQ*Qgi9rv0z72sSIZ}qyqW^1V1V)A#i2t-6o1vEr) zV>ac0#2aK?m(Cq9C02m;@w@QSoABp$$~kzg zN}l71L!r_Z3IKUG{ih{-Iq?r=`dYiK$xX)iL@6%*>+;1GRx))zGtG17p3kclAz4u2 zMO|l8SB0&m#uOfave1!s(i(&8843ORPB>Ze)ZmSyprD(qX^ekwK1uN6SjAH>pKjGQ zMA!|JedBBNhH@IK6&X=stSh1Y?P`u(@2AYO=HT&$*n)sd;cQ7}W$m)qBU);*L%fCT z7auMn)tt^_a`*D8fp}|RabUUmgI{U${9c|TT9FYu)NDz@(UU^hG>=b}+GCP3CpVvs zStR%l*GGLRiaMVX^z(%OYE;Ajk~EYpAzJvP@RfHD)6T&t=O+xXb&r89J+NydW+uwp z@m0Flnu+9k&l^FnHGtOs+z8zNF*8sa6wU_6)@Cah9z3WNE6m>D*g9E^0Li~<=;U|7 zDMEc+qb#m|&8g{G8ke*ooa)ZX>V~Jt0``g5nX0cD<9kaop%3lR-u9%>v5}~HK7f<- ze(p~aYP2m08F9l$lmcQ=ycH?*ix|tgI;!$;@To|9`y`oNsJiLkr%f5JA zhwenMm^dEXMB}O0-qgiW*A_%3?}tR>fInfWEXNtGmz5Uqk~u05TR$r^$s0Kp0=L9w zCv&N-a8$Tsn5yTX$DVvPiLBtqZ{-2u%=W9zA48BKzC`|irFSm2aG#-6?4N65yuGNh z^Ex3}o*e)k3y`K9o4{RO<(S_4yR6KCbEf+xu@VY@63~8bfmr^pS*v}2L&p%6;f`@q?b(D z^+zQ#Hzgv_3jNld+qbVv;&{8nX%~`9uL@9#4ciNQcn`Y&U z(kvZ+@K38o`+&z(U%MV(^%8O1ZQeBmb}LpmQf{+Vd~Ed3<*GjSgTtOXMa#7-Lp)%R zcQ#TuCHu-!IaR85KpL~#zwiGC025XJFbS56$Lkmc{V;PD{k}%GJFgqiKTf~MxEX!v zFyvjxDawa`5g5tmSljQbTq}&Ak>)oyHcs4fTJVYX5E%;@^f~&rR(32sPQ_uDvGCZ~ z_Fp}THE$f{qm+S(_5jL;pplaZ-+5HQyLtRdq!yefrGIxOa4I;LQ!8v)ZQ$g$|Q<%5Mz7=9&I)oO)KLPmv}6%GM#5YQoViG4EITe3@0$mI&IZ-p9dL zjJwehWM{*XZ4N5sC5%%1ZV)%liL)bw5`gpA($6M}z$UZX9{p0&_uI**93AILE`g*L z`&6VSlWPOt66ZXTvGwu!Ni$TW2RGSNH(Qd`bzyrlp4z{gB7f9Se;#kjs)97x=zPj6 zisRF7@nq!*i`Ywn!=>j_c9>cS(4Nab9GfFE`5YjRL)&paLfc>KD$}PQA#j4!N+4)y zb{daXjWcb05V>E?>XmJSLBDP8?s)MoP9&57BsAL?GXsIu4-Ce?8DLG-*Q~nYw;}TVP<*v{`~O3KUwvT#6^1Yi^yaPwlF#v-{KKtN!pFa zBa!JlqaQdJe^{dS6x)C9aPa`dNKxPH7HDN0ZDPo%cTK0u{to7{p1Dzs>a$};or&UY z0DESI?QP$2e#dTx*>~mrj#C^l1ot1_t5su7;KJR1ah&B&5f8!t(L84u;){s{1nqgS zsy-zDo1t~mfI-}+@8O@(3ubP#<*P|VBqf|v8n6JZ-&N@b>gw$nf(_B!ZFH4$e?6ZC ztxn2Q)~Xb63e>73NxU5RJ^%l<_*VzNZLP2L=FI@FS3Xs%cB|zv5OQa4PJo9zcl;u^ zodnUz>G?eBI=RO{%nKy#yD$x`2mwr@{5+5r$)+f`ga5y?06@&E5O{EJtEC?{dx*Dn zOI_cBr{wwc@VTLpAA*VN&?>!!BbZsvfQR# z$I~#tf*auU{r4{!*pj?$&E-Yo*&IQCuxw={pD$w74kh{U;$ttabhu*F2u>vig%hBrmSr9r+av(Hw83grdI4jT_)o@D%m}GJe3fN(8uolSeL|_mWTDq zq0$`GUR0fcAo|jbx235;MJCi=fuhp1eCKXeRW`(Uz|fW=V-y(@3(Mciq9uOwLw>r|`(Xl86Wvc8x-BzDj z;QaAG3&3MCLoRkR`-JBux_s3LZT?rNPVI!B%)vAu_F|P{@S()*oeYCt@6%|l<|6!y z&WTc-NQ33(ZOov_j5+hLO(xO!X7eSCT)?_{Z?>fyXcF(|bBysWwI4Mi%c4E*r3}11 zS>+;9YP=Vir)agsU(S(1F-w)8dVa;hl-SpA(*>ITWn)X93==y3SBtrnr-C<>g#~MYfU@Q{nc&g3`pF7;;@5QwC9q9 z#)sgLBI5v~#DqMs86YHNr;5iKA3)|K>7w@JBW+S2i=z>(g_waW_ji((gbEW+1_Cao zjNoEsfhotV-R?xS8%!GutULRXw$O8dAQ&#d$U4>QfrrVv6E zn2gm{sJ^3iIjRI>n0w{ABw)joL)DZa_GO3z-%8k}Fqfn=R|&9{bN-EIT=koe$-L^< zcqWA5YoY<)tbsAdyit-q(m<-M3Mm)qNx%1YYYg7UE(G_si18Lv1f&pM>))+ocl-0~ zw)3^-iestv)h!X&wOl+AKV{Yr$u_JPPCKYB&}Dy z$1{?Cs3Tn7a~W4(jU@mJqX0z%qJwt_HEN`kE6to6p*l>6rii>h=`5M%mwT?ZP?o>l zZco9dS{*g`iyK9N?ESbEqKmev^InMK#`!Hsp?3W&j-3(_>TaYE@P2gdNvJmsB$w=+ zN|OeJY=9dxw*_}uVC@q~>pq^@;`oL|Q`0|Qgv(zZT^t*mzQ{I4W|J&?d|>%TM2 z#%=rH@3l#Q%%exh;eR|*N?Qxdf6Tt03l1T^-THd0C}o5=VmNf!E9z=eyLUR$Q_uhV zTjh%E7oS2CV zKNdvE9rC1C^n$nF3Nwz4qpNV!ujKwpFq+W-hc}6lh3w8`ZO;dgP9wJ?F!YA8l**B^^ElX;{!QYiP*jaIM~YN#n+FQN;-2`g^{ zGIe3d{rObV?OmGwnV59st9nwRMB4mzL+MUG#OK0tu5&(c{J7!{l^3CYLC9VjfLH0S ze>e`|t>2#c8j)x{qlpkqSEh^v$EKjjCC5K2K=*C?A6}r%d~Ko#^%E%%dMPf?g|Cp^ z4`yQa!zhfSwJ$^m#u3KvxoTIfFz`HFVX8P?R1+%SI)01(^hgO7d7oGz*|RPe_6X@m zekvM)pfO%*=((=J)PI@Rm<8P23DZfgY8f*}8xgr|F=|)nHV*nc1m|JJIF?&zO7R9T z_>-Wm5pR~rkO_+Zu=2G?QzX#ShXmFYyU#~juP?W>Kd4R09e`93d z9ia{GBD5Zji_LggR3^sdXeq@%N+q}o>9_hRCQP-JR%5?bdHS?l^76_Jt3AJ)r0sJ0 z)cUE$53HzJ?Ll_Nr7tw|%whL((zy%ZktbcKV;qD`@V2mn;!x3%V6c;`n$E()i2;ys zpw&~h!wCi1s6rwQO7WqPJ}%lcHZSLiSjrFrqLc&m>1NyGyhl4>vwjA!KPcgDZ-ML6_jpRdOI3u?t{-gs z-gG&-DGsTui3_1>lUg#i$gG9jSL*P^Y;sZTEF^k-xG|=*y+ev$7ihr^iFX;vXdu7Z zTz=&Jy>3am^MTuM^}`2xOQf)OqTJS(0weCDSxk>4e#mCN*s1?vfcQx)fzP3parhngWnVv|N0JNDoEtS7R*peXSXlWOoP<5xCm#^Kfh!BRCY~+lbP%s>5+1hu+x;|tQf`r(CDFn~mRIDkq ziFg~%?It;W;lweOYo7GsKVRGY^l129$r4A^wWxIzEKlcaBKOCO19N%=U%JO1Y<}q+jZWV@D zWu>Aspv|JL#~9M)Ggp!hM>G36jd`3&QHtM80ZiCnP0fY9pkxPahbntX5up|79!({& zO&+ol+xdym*GeQWDtp=mQr*MAPZr`Bg}KP>>ma1{X$hRzE4E*-556e}w`QX-7=3%?uDP4GjyFDjbrvcFghvz;^CHg)E9jb-zO!HPV&O>q}wSn5k7WSW{ zoZC%hGEj)?{{p2V%FNtg6VCi5=w$+W!*y&)v~BSRAV9M3kRa$Bcf~-Q?&S=J!Mppx zCOv*pNiItz_PS&qX_#$5be-4)NNG6b<9u!qcc$203@LXl4Z(EH?(YeNoJPMxY5~$k zD;ri!J+c|_Vo@GL`G>GS$I9xtV?Izw*{ciwNmYfiv9+P(&CEytH$Rn^06Kj(uLf?4vr;*+XFkJ?SIbFet-Swr7f51mB%xQ7)T!sr|H!4%IL{ zS^yM+W!ekR$-3D6qX|mN&-uNbSu|x%)DL3_qJ0jj;GPglc)#OZsq5g(pj<6QTZQ`B zYU4CGb#bqLHzQ)?5e%aKY?Qw97Z`smd9@l&YQ2gym4RO5zI%#62;IIyX{KOG^p(7L zBttthVs3YNCT7l!t)542>8R4spg6R!%@lVt!P=|Z#hm$>p)uUy65v?6~S{4J^9$F!$;ah!D^EU z_%(!aIy9lx$m^5(a|-iyRumA9n$%pS>ZU%SN-3Ll_x-I#9}IARg;UnyZvetWxU#x`%)GORKl)I8(F5jKtN%%NKWv#Lfk`JBx7fKl;JG zIz7H`4qAh`Ln~|_(6r#5ovMty{t7^uPKu^zc9YME>>mpx6tdOLUzkr7sziO3;y)c& z`qe&bnZR&Q?;IO`zVfbmtE)C^!Ccdgp%_R9Q~}P!t1Jd7Uc38S#`gHIPF@mI%?0tF zeWZxsNhoO>cBN0#tbCp6F@CW}G6P)(ZuY#kNpg^BEx-_S?BN3Peipe6NIu5VZH{^*yl_H38387CXtvg`V_fby0 z(;VJbpi8_St#HMgaWd%);tbLk|4_D4=C@q?{sb0YJv3*--5G>(7 zDX4Bh@0e6eIJCYT38zm-oPu(B^k)R0<^sbKb0Hi9N^C{>u4PrHyZmI}R6?J%;*wo% zS@o>6rauH)x;>i*@Kh$V7Elk%0~nS6b~wPVH;`UKX*@o;C;iRKOtzMJn8n<>jq)U- zOELnnH$lx)DJgHW&M?J%@XjxXy=W^k+LF?g!Bs?KpABVSw>SxE0ifAvdl!P^JKCMf z8;(z64!l!6|aQE z4nk3JwQ?rD#l<@OZCm;r!LJfLAm&L%ljmkY!K~h2o7k}M^27`txT=|9}1&81Y zaFl1d`&`VaeQgi6E*h=jkW17rDL+YSAEfw_Hm7p!UddExR@sU@v_~qq#ase7_tlHV z4>OVvAXz2;JVM2(xO#w6Sya~Zy~UF`FlO+V(m_(YW?X80>Pt)9k<9k4zS5$(+%3em zhl-a>E=g?VOL%g)0!#|1$~nKEuIB-4ItZLQvHM`TWe8^Y%4yo4WVq2moD9h$y25W$ z-OSNLZZK_3*W!Gn=JDTU2f{kw6wDdU{f6#cqtyh?c!P!oa1iMxWW)G3ZcL|bjn9|i zs1PE%maT*jh6V?Mna=ZNsO0;tP?P!h@~YXw-B9u6UmL~h&{_59AKM2pZStBhpA$XF zb>AD=j&OReB?b@?25sk`DA4T27vLgCa5-@GMQysEP>G3y2h-&t}9%~+|v z1GgYPxD~bPq66XqJ}+a3TH>s|4XLd8Ng+ODp` z^XDX(-IK91_p@SJ)BCbs(q?3A)NSdVRKhoqZtEW9HTq=n-cq3VSl0$V7aQG$&Zisi zrc-JhiQ=6Y5a70BoG%D| z1T@`K(q4w&z!HfM~zjrPl-wbIS6kt_JX3>Mx222$@zA){RprIi5o zIx-~$b6fV$6~r}2SqMJSzaV{xkM0|Un1jT@kRRX~Jd;e9poyMyFO2)z^Sly3{Q@3*t zctTBDck3&(YO@#}*x4;Y1*ji2viuxm8Boy;r0R`ESaXV7jRq3dT?%KHG9)xo)Czsw zR1!5gT~+l-gT%FG$C8w+0DiZmcAvHNGYTG)#w8%=;CNnjgfm%^*?1P3<zq^jtz&hCrp-%;TfNVyN#r(37$4k4XIV*cx3aSc1Fwl#$3xxr zq&zW+G#4;P>I_{;by4>u>;zL4#g}wT8jXFk&=ib4k6qj2K9MdL^@#f~^uLp$XKMU5Yh_#08w zKFZSrbKi@M5bDp9HHgI;iN;sDii*3NPb_7lFZ&O;G zX;eq;4u1i;?^;5Owz>Qwl7rR3^W2+|51nW{f!O6=7ybbfDRI-0m6x&(YpdyiVlbf! zZKtfo2?%wEO-{SsGo!ms2?nWP7(|OnE&Bi+MuR&#d>M^Ct7$GU&Ag?0gg8|vc`%Cb zi6%BKnruVA&OJL$)`eeqFIDK9rAx1dtB>xD$L_PaN8R1>6Q9GYRla0%JosPoyrdjlFXuF&8B`9C1c%5uK|kB;Xd}ECUGO2p;f$@ zsKyKGyYPa2qX~z3HBiQ*FyW`C91Ke;LqmLBDgH3dmHB1gXkaSo>0&E9tO zKy>T(vDHh7@1O;LkZ}JDBJUKsuHW_`#(A7EZ#sD*`kOIl`MexXmT$c)2zMf|JI411 zSnGWV#UD*@5;^qcN^@Gn<|5yh^)1)?HAuT_A8~EfZ|B%hzpyWlT3-Fqv6lN~V2A95n9kfly~c`b1ekePTsPYq{%lx-<(fm! zhE=s_9|Pn0mlFlKwy;@M1d=aQ;OrUFE44kf<8G{zSlHXQoTAKzj1|y^3ig{*b|9$? z7{BItvSnW&6?6+>7OY4T%V-EiV3;w=^R^Mk_}MTo9ac59>Q3w+zbiw>de`Ega~c(R z(XS;4^~5qR`yPpQFmqpM;}yzQd#2G5+sEfl2%fiL;6WRg--KI7)!f`3*O4$c%l>F- z7KolCh*2r@t3jo){A+gfm@S-1YwS1n>i<~eL}O9ktFL(!V+hSLdMsT2O*(s-#pOny z7i3+5F}uPD0aPVZhT5w41%ZI#QIRaxleVJIZ%o)ACmHT)j`;?swHa>G04`0i>c%J_ zXJb3~fisg{9Fpsk3I0A<2h+hKI5rodf)wqO13eOI)FSxGon5Cl29qwWetpQbBM$P26y&20ZftPT$?FLr1oS@VodXNC^w<%#e? zhdm`LYp>`}DNWR}mDh#ry%7U+R;(ca#!|xzMU{yHV5m-TW9+jSosE6;LV(7`>Z&Ge zvS(7YPIAAPjR}Cg^8BR&5y~^VB7zKoCgIFF2KCFm)ztyhDS2*`X;HRuc#%h zU4{+gp+VOX4d^{;^l3{fdAc>gXXtlOc*WbFPrXS0y#BPlr^?@9oDrXx`Br!sacA1( zlOodA_~ERL*Pm*2X6~jx?8oOSN;qbaRASLOk8#%fxcw0{p3o}GRyOEUeyrPgt{p2NB0iKJvrRCV z$j^z{+UM$QyZ{ZjEs=k7V>)@XPfQnBT)Y+H-(3xrF<>@t%qf#Mc14`;0`RS+_*KU@ z8eBwb+SSZ)KXh9c_4rZ!bk@qrWkvpL>YCqzVjV+4XX(!4k8=jFQwy)dwZ(!77s^8x z!Wq?{>w|s?31S>VJQfEq8xb{CQoGM@1bcPH$6_njdzBNc|6P`m>im7`C|XByjk8-5 zceCW?-LzYVy%JbW61tj?sS{L`}8ehcf`AM|X6yL;y zGhbysSqFQuYCvaKvYEl;fW(8?Kzg}!HFuBI1&&xCav{oVh2PZW@6&qzGax;k(fj~YszG2xr*yrXq+u5Fk8sQ!AecfLF z4d-Wb!!K^^=!92~cD@imu!HCANrqPA7Z%#k-Eg-%fYx_x2 zBH|tD*|?|%mu{&ip18-7c55_4DXT06n=C?28Qy2)fLVrtzOac3e|)KFT>umF$S+-i zE(h3=JF-_P6X+bf^6}<(-kp$!`^BL;=XM4Oy^g@O_GyKFp4V1NY~#+332QV;Pe#O} z$^~LRSjy-|KgGkhYkI8P=cKOifHtn3%aY{KF&d zaP{&9MB7va-0L{Ms8U||XRVCux1hH~DK9fTXSknmmjMk}zZQb=x?#K-Sd`mZX^Io1 zTb_#`BrSZ=-D8W^`VIw6UiQlky@A}SS(`b2q>ZgjeKa?6t7&RfrG)g$a|U*9@v63f4FNo&(UKN4uQX`6>^EC*D*n30MvNg0nz0{kFMZGG z(YpTtf3|__-&Ca(q0(qf$u{Yp@Lu0iR zlDgf;`U;j>yi38B6F9p;dAnv>>lnyLvcl;l52!<1DfmsGdEUrL&n*`e*L9yni`2wF zE=5K$8Ml`jbI0e?NxkK!ZfD;(h7G<5*S5cdbrCf7k zuK^RfD&oTk&LF@Mza6?k!47QJXv~4UAVr;2_{q*ILRc8ZJMi|%t^fDs6~S*_b3mBK WIa;5EV89H3eg_Y@*w^g$Px(Lh9O~x) literal 0 HcmV?d00001 diff --git a/packages/apis/ens/meta/queries/deployFIFSRegistrar.graphql b/packages/apis/ens/meta/queries/deployFIFSRegistrar.graphql new file mode 100644 index 0000000000..cf5ddb4953 --- /dev/null +++ b/packages/apis/ens/meta/queries/deployFIFSRegistrar.graphql @@ -0,0 +1,9 @@ +mutation { + deployFIFSRegistrar( + registryAddress: $registryAddress + tld: $tld + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/getAddress.graphql b/packages/apis/ens/meta/queries/getAddress.graphql new file mode 100644 index 0000000000..e9cfd6e9de --- /dev/null +++ b/packages/apis/ens/meta/queries/getAddress.graphql @@ -0,0 +1,9 @@ +query { + getAddress( + domain: $domain + resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/getContentHash.graphql b/packages/apis/ens/meta/queries/getContentHash.graphql new file mode 100644 index 0000000000..a0bfc35a55 --- /dev/null +++ b/packages/apis/ens/meta/queries/getContentHash.graphql @@ -0,0 +1,9 @@ +query { + getContentHash( + domain: $domain + resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/getExpiryTimes.graphql b/packages/apis/ens/meta/queries/getExpiryTimes.graphql new file mode 100644 index 0000000000..f393a71ddb --- /dev/null +++ b/packages/apis/ens/meta/queries/getExpiryTimes.graphql @@ -0,0 +1,9 @@ +query { + getExpiryTimes( + domain: $domain + registrarAddress: $registrarAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/getNameFromAddress.graphql b/packages/apis/ens/meta/queries/getNameFromAddress.graphql new file mode 100644 index 0000000000..5a00ef475e --- /dev/null +++ b/packages/apis/ens/meta/queries/getNameFromAddress.graphql @@ -0,0 +1,9 @@ +query { + getNameFromAddress( + address: $address + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/getOwner.graphql b/packages/apis/ens/meta/queries/getOwner.graphql new file mode 100644 index 0000000000..f2ae7c81ef --- /dev/null +++ b/packages/apis/ens/meta/queries/getOwner.graphql @@ -0,0 +1,9 @@ +query { + getOwner( + domain: $domain + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/getResolver.graphql b/packages/apis/ens/meta/queries/getResolver.graphql new file mode 100644 index 0000000000..7bd03033c8 --- /dev/null +++ b/packages/apis/ens/meta/queries/getResolver.graphql @@ -0,0 +1,9 @@ +query { + getResolver( + domain: $domain + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/register.graphql b/packages/apis/ens/meta/queries/register.graphql new file mode 100644 index 0000000000..41eb8837bc --- /dev/null +++ b/packages/apis/ens/meta/queries/register.graphql @@ -0,0 +1,11 @@ +mutation { + registerDomain( + domain: $domain + registrarAddress: $registrarAddress + registryAddress: $registryAddress + owner: $owner + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/reverseRegister.graphql b/packages/apis/ens/meta/queries/reverseRegister.graphql new file mode 100644 index 0000000000..ca3edb2c21 --- /dev/null +++ b/packages/apis/ens/meta/queries/reverseRegister.graphql @@ -0,0 +1,10 @@ +mutation { + reverseRegisterDomain( + domain: $domain + reverseRegistryAddress: $reverseRegistryAddress + owner: $owner + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setAddress.graphql b/packages/apis/ens/meta/queries/setAddress.graphql new file mode 100644 index 0000000000..4f50e952b0 --- /dev/null +++ b/packages/apis/ens/meta/queries/setAddress.graphql @@ -0,0 +1,10 @@ +mutation { + setAddress( + domain: $domain + address: $address + resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setContentHash.graphql b/packages/apis/ens/meta/queries/setContentHash.graphql new file mode 100644 index 0000000000..9f7222580e --- /dev/null +++ b/packages/apis/ens/meta/queries/setContentHash.graphql @@ -0,0 +1,10 @@ +mutation { + setContentHash( + domain: $domain + cid: $cid + resolverAddress: $resolverAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setOwner.graphql b/packages/apis/ens/meta/queries/setOwner.graphql new file mode 100644 index 0000000000..ec6a3fa3e6 --- /dev/null +++ b/packages/apis/ens/meta/queries/setOwner.graphql @@ -0,0 +1,10 @@ +mutation { + setOwner( + domain: $domain + newOwner: $newOwner + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/queries/setRecord.graphql b/packages/apis/ens/meta/queries/setRecord.graphql new file mode 100644 index 0000000000..20daefe42d --- /dev/null +++ b/packages/apis/ens/meta/queries/setRecord.graphql @@ -0,0 +1,12 @@ +mutation { + setRecord( + domain: $domain + owner: $owner + resolverAddress: $resolverAddress + ttl: $ttl + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setResolver.graphql b/packages/apis/ens/meta/queries/setResolver.graphql new file mode 100644 index 0000000000..b67ca42663 --- /dev/null +++ b/packages/apis/ens/meta/queries/setResolver.graphql @@ -0,0 +1,10 @@ +mutation { + setResolver( + domain: $domain + resolverAddress: $resolverAddress + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setSubdomainOwner.graphql b/packages/apis/ens/meta/queries/setSubdomainOwner.graphql new file mode 100644 index 0000000000..224daa01e6 --- /dev/null +++ b/packages/apis/ens/meta/queries/setSubdomainOwner.graphql @@ -0,0 +1,10 @@ +mutation { + setSubdomainOwner( + subdomain: $subdomain + owner: $owner + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/meta/queries/setSubdomainRecord.graphql b/packages/apis/ens/meta/queries/setSubdomainRecord.graphql new file mode 100644 index 0000000000..ee4a7ef359 --- /dev/null +++ b/packages/apis/ens/meta/queries/setSubdomainRecord.graphql @@ -0,0 +1,13 @@ +mutation { + setSubdomainRecord( + domain: $domain + label: $label + owner: $owner + resolverAddress: $resolverAddress + ttl: $ttl + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} \ No newline at end of file diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index 64b1ae26f5..54756b3381 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xFF6049B87215476aBf744eaA3a476cBAd46fB1cA", - "Registrar": "0xaf5C4C6C7920B4883bC6252e9d9B8fE27187Cf68", - "Resolver": "0xA586074FA4Fe3E546A132a16238abe37951D41fE", - "Reverse": "0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E", + "Registry": "0xFcCeD5E997E7fb1D0594518D3eD57245bB8ed17E", + "Registrar": "0xc0b3B62DD0400E4baa721DdEc9B8A384147b23fF", + "Resolver": "0x4339316e04CFfB5961D1c41fEF8E44bfA2A7fBd1", + "Reverse": "0x47a2Db5D68751EeAdFBC44851E84AcDB4F7299Cc", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/web3api.meta.yaml b/packages/apis/ens/web3api.meta.yaml new file mode 100644 index 0000000000..937e01c8ab --- /dev/null +++ b/packages/apis/ens/web3api.meta.yaml @@ -0,0 +1,9 @@ +name: ENS Domains +subtext: Wrapper for ENS domains +description: Protocol that allows you to attach your address to a human readable string +icon: ./meta/imgs/logo.png +queries: + - name: Set Resolver + query: ./meta/queries/setResolver.graphql + - name: Get Resolver + query: ./meta/queries/getResolver.graphql \ No newline at end of file From 9367255c2d45469168af8772ecb967deb84105b8 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 10 Aug 2021 23:14:43 +0200 Subject: [PATCH 12/53] chore: fix conflicts --- .gitignore | 1 + packages/apis/ens/.DS_Store | Bin 6148 -> 0 bytes packages/apis/ens/src/utils.ts | 2 +- .../js/plugins/sha3/src/__tests__/index.test.ts | 14 -------------- 4 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 packages/apis/ens/.DS_Store diff --git a/.gitignore b/.gitignore index f9d989c20e..3ed28a5ec6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ coverage *.log w3 .w3 +.DS_Store \ No newline at end of file diff --git a/packages/apis/ens/.DS_Store b/packages/apis/ens/.DS_Store deleted file mode 100644 index f93ad8857d0e223bfc5694936234d2e28cdd8166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~O^O0R4256(0bw>SUDn0}c!NTm6U+rf8$l3Ui2FLaFR5&7XFW8-3#48pRq3B^ z(bWN9`{%F&)&N#?S8RP4nK54CgeR`JVYm#B^XY!Sc^b3a>j9nDcwf(Di3o^*2#A0P zh`@vh#39b}|7$|eq(>0}5ts%6|2`DDYfWukw^_-6!carimx`BHhde!QONkD2v(qf=u$hqs>q27VN8=wVzhKB3ms)|DBWegp!8 J1`+sE0xx3T6K((i diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index f846d57fa5..c26214e38f 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -1,7 +1,7 @@ import { SHA3_Query } from "./mutation/w3/imported/SHA3_Query"; import { UTS46_Query } from "./mutation/w3/imported/UTS46_Query"; -export function namehash (inputName: string): string { +export function namehash(inputName: string): string { let node = new Uint8Array(32); node.fill(0); diff --git a/packages/js/plugins/sha3/src/__tests__/index.test.ts b/packages/js/plugins/sha3/src/__tests__/index.test.ts index 4d9d5b0481..972e916b7d 100644 --- a/packages/js/plugins/sha3/src/__tests__/index.test.ts +++ b/packages/js/plugins/sha3/src/__tests__/index.test.ts @@ -145,16 +145,6 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { const encoder = new TextEncoder(); const testMessageBuffer = encoder.encode(testMessage); const expected = keccak256(testMessageBuffer) -<<<<<<< HEAD - const hexValues = expected.match(/[\da-f]{2}/gi); - const expectedBuff = new Uint8Array( - hexValues ? hexValues.map((h) => { - return parseInt(h, 16) - }) : [] - ); - -======= ->>>>>>> prealpha-dev const response = await client.query<{ buffer_keccak_256: string }>({ uri: "w3://ens/sha3.web3api.eth", query: ` @@ -169,11 +159,7 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { expect(response.data).toBeDefined() expect(response.errors).toBeUndefined() -<<<<<<< HEAD - expect(response.data?.buffer_keccak_256).toMatchObject(expectedBuff) -======= expect(response.data?.buffer_keccak_256).toMatch(expected) ->>>>>>> prealpha-dev }) it("keccak224 matches", async () => { From a7562bc79f63ff0b552366b9e02d45fb183d1c9f Mon Sep 17 00:00:00 2001 From: cbrzn Date: Thu, 12 Aug 2021 05:12:30 +0200 Subject: [PATCH 13/53] feat: tests with jest setup implemented --- packages/apis/ens/jest.config.js | 7 + packages/apis/ens/package.json | 9 +- .../ens/src/__tests__/mutation_e2e.spec.ts | 97 ++ packages/apis/ens/src/__tests__/utils.ts | 53 + yarn.lock | 905 +++++++++++++++++- 5 files changed, 1063 insertions(+), 8 deletions(-) create mode 100644 packages/apis/ens/jest.config.js create mode 100644 packages/apis/ens/src/__tests__/mutation_e2e.spec.ts create mode 100644 packages/apis/ens/src/__tests__/utils.ts diff --git a/packages/apis/ens/jest.config.js b/packages/apis/ens/jest.config.js new file mode 100644 index 0000000000..7ee69a33f7 --- /dev/null +++ b/packages/apis/ens/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + collectCoverage: true, + preset: "ts-jest", + testEnvironment: "node", + testMatch: ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"], + modulePathIgnorePatterns: ["./src/__tests__/query", "./src/__tests__/utils"], +}; diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index ca6b53ee36..0afc615391 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -10,15 +10,22 @@ "deploy": "yarn deploy:contract && yarn deploy:web3api", "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens ens.eth", "deploy:contract": "node ./deploy-contracts.js", - "test": "npx w3 query ./recipes/e2e.json --redirects ./redirects.js" + "test": "yarn test:e2e && yarn test:recipe", + "test:e2e": "jest --passWithNoTests --runInBand --verbose", + "test:recipe": "npx w3 query ./recipes/e2e.json --redirects ./redirects.js" }, "devDependencies": { + "@types/jest": "22.2.3", "@web3api/cli": "0.0.1-prealpha.30", "@web3api/ethereum-plugin-js": "0.0.1-prealpha.30", + "@web3api/test-env-js": "0.0.1-prealpha.30", "@web3api/wasm-as": "0.0.1-prealpha.30", + "assemblyscript": "0.19.10", "ethers": "5.0.8", + "jest": "27.0.6", "js-yaml": "3.14.0", "dotenv": "8.2.0", + "ts-jest": "27.0.4", "ts-node": "9.1.1" } } diff --git a/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts b/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts new file mode 100644 index 0000000000..565019883d --- /dev/null +++ b/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts @@ -0,0 +1,97 @@ +import { + buildAndDeployApi, + initTestEnvironment, + stopTestEnvironment, +} from "@web3api/test-env-js"; +import { Web3ApiClient } from "@web3api/client-js"; +import path from "path"; +import { providers } from "ethers"; +import { getPlugins } from "./utils"; + +jest.setTimeout(300000); + +describe("Mutations", () => { + let client: Web3ApiClient; + let ensUri: string; + let ethersProvider: providers.JsonRpcProvider; + let ensAddress: string; + beforeAll(async () => { + const { + ensAddress: ensRegistryAddress, + ipfs, + ethereum, + } = await initTestEnvironment(); + // get client + const plugins = getPlugins(ethereum, ipfs, ensRegistryAddress); + client = new Web3ApiClient({ plugins }); + + // deploy api + const apiPath: string = path.resolve(__dirname + "/../../"); + const api = await buildAndDeployApi(apiPath, ipfs, ensRegistryAddress); + ensUri = `ens/testnet/${api.ensDomain}`; + // set up ethers provider + ethersProvider = providers.getDefaultProvider( + "http://localhost:8546" + ) as providers.JsonRpcProvider; + console.log({ ethersProvider }); + ensAddress = ensRegistryAddress; + }); + + afterAll(async () => { + await stopTestEnvironment(); + }); + + it("Deploy FIFS Registrar", async () => { + const { data: fifsRegistrarData } = await client.query({ + uri: ensUri, + query: ` + mutation { + deployFIFSRegistrar( + registryAddress: $registryAddress + tld: $tld + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: { + registryAddress: ensAddress, + tld: "eth", + network: "testnet", + }, + }); + + const deployFIFSRegistrar = fifsRegistrarData?.deployFIFSRegistrar; + + const variables = { + domain: "web3api.eth", + newOwner: deployFIFSRegistrar, + registryAddress: ensAddress, + network: "testnet", + txOverrides: { + gasLimit: 60000 + } + }; + console.log({ variables }); + const setOwner = await client.query<{ + setOwner: string; + }>({ + uri: ensUri, + query: `mutation { + setOwner( + domain: $domain + newOwner: $newOwner + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) + }`, + variables, + }); + + console.log(setOwner); + expect(setOwner.data?.setOwner).toBeTruthy(); + }); +}); diff --git a/packages/apis/ens/src/__tests__/utils.ts b/packages/apis/ens/src/__tests__/utils.ts new file mode 100644 index 0000000000..05932e435b --- /dev/null +++ b/packages/apis/ens/src/__tests__/utils.ts @@ -0,0 +1,53 @@ +import { PluginRegistration } from "@web3api/client-js"; +import { ethereumPlugin } from "@web3api/ethereum-plugin-js"; +import { ipfsPlugin } from "@web3api/ipfs-plugin-js"; +import { ensPlugin } from "@web3api/ens-plugin-js"; +import axios from "axios"; + +interface TestEnvironment { + ipfs: string; + ethereum: string; + ensAddress: string; + plugins: PluginRegistration[]; +} + +export async function getProviders(): Promise { + const { + data: { ipfs, ethereum }, + } = await axios.get("http://localhost:4040/providers"); + const { data } = await axios.get("http://localhost:4040/deploy-ens"); + const plugins: PluginRegistration[] = getPlugins( + ethereum, + ipfs, + data.ensAddress + ); + return { ipfs, ethereum, ensAddress: data.ensAddress, plugins }; +} + +export function getPlugins( + ethereum: string, + ipfs: string, + ensAddress: string +): PluginRegistration[] { + return [ + { + uri: "ens/ethereum.web3api.eth", + plugin: ethereumPlugin({ + networks: { + testnet: { + provider: ethereum, + }, + }, + defaultNetwork: "testnet", + }), + }, + { + uri: "ens/ipfs.web3api.eth", + plugin: ipfsPlugin({ provider: ipfs }), + }, + { + uri: "ens/ens.web3api.eth", + plugin: ensPlugin({ addresses: { testnet: ensAddress } }), + }, + ]; +} diff --git a/yarn.lock b/yarn.lock index 77074bec4d..e3002a2592 100644 --- a/yarn.lock +++ b/yarn.lock @@ -136,7 +136,7 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== @@ -148,6 +148,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== +"@babel/compat-data@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" + integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== + "@babel/core@7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" @@ -211,6 +216,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.7.2": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" + integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.0" + "@babel/helper-compilation-targets" "^7.15.0" + "@babel/helper-module-transforms" "^7.15.0" + "@babel/helpers" "^7.14.8" + "@babel/parser" "^7.15.0" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.14.5", "@babel/generator@^7.4.0", "@babel/generator@^7.4.4", "@babel/generator@^7.9.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" @@ -220,6 +246,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.15.0", "@babel/generator@^7.7.2": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" + integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== + dependencies: + "@babel/types" "^7.15.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" @@ -245,6 +280,16 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" + integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.14.6", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz#f114469b6c06f8b5c59c6c4e74621f5085362542" @@ -316,6 +361,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-member-expression-to-functions@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" + integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== + dependencies: + "@babel/types" "^7.15.0" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" @@ -337,6 +389,20 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-module-transforms@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" + integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.15.0" + "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.9" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" @@ -368,6 +434,16 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-replace-supers@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" + integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.15.0" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + "@babel/helper-simple-access@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" @@ -375,6 +451,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-simple-access@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== + dependencies: + "@babel/types" "^7.14.8" + "@babel/helper-skip-transparent-expression-wrappers@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" @@ -394,6 +477,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + "@babel/helper-validator-option@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" @@ -418,6 +506,15 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helpers@^7.14.8": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.3.tgz#c96838b752b95dcd525b4e741ed40bb1dc2a1357" + integrity sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.15.0" + "@babel/types" "^7.15.0" + "@babel/highlight@^7.14.5", "@babel/highlight@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -432,6 +529,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== +"@babel/parser@^7.15.0", "@babel/parser@^7.7.2": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.3.tgz#3416d9bea748052cfcb63dbcc27368105b1ed862" + integrity sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA== + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" @@ -743,7 +845,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.14.5": +"@babel/plugin-syntax-typescript@^7.14.5", "@babel/plugin-syntax-typescript@^7.7.2": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== @@ -1422,6 +1524,21 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.15.0", "@babel/traverse@^7.7.2": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" + integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.0" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.15.0" + "@babel/types" "^7.15.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" @@ -1430,6 +1547,14 @@ "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" +"@babel/types@^7.14.8", "@babel/types@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2120,6 +2245,18 @@ jest-util "^26.6.2" slash "^3.0.0" +"@jest/console@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" + integrity sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg== + dependencies: + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.0.6" + jest-util "^27.0.6" + slash "^3.0.0" + "@jest/core@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" @@ -2188,6 +2325,41 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/core@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.6.tgz#c5f642727a0b3bf0f37c4b46c675372d0978d4a1" + integrity sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow== + dependencies: + "@jest/console" "^27.0.6" + "@jest/reporters" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^27.0.6" + jest-config "^27.0.6" + jest-haste-map "^27.0.6" + jest-message-util "^27.0.6" + jest-regex-util "^27.0.6" + jest-resolve "^27.0.6" + jest-resolve-dependencies "^27.0.6" + jest-runner "^27.0.6" + jest-runtime "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + jest-validate "^27.0.6" + jest-watcher "^27.0.6" + micromatch "^4.0.4" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + "@jest/environment@^24.3.0", "@jest/environment@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" @@ -2208,6 +2380,16 @@ "@types/node" "*" jest-mock "^26.6.2" +"@jest/environment@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" + integrity sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg== + dependencies: + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" + "@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" @@ -2229,6 +2411,18 @@ jest-mock "^26.6.2" jest-util "^26.6.2" +"@jest/fake-timers@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" + integrity sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ== + dependencies: + "@jest/types" "^27.0.6" + "@sinonjs/fake-timers" "^7.0.2" + "@types/node" "*" + jest-message-util "^27.0.6" + jest-mock "^27.0.6" + jest-util "^27.0.6" + "@jest/globals@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" @@ -2238,6 +2432,15 @@ "@jest/types" "^26.6.2" expect "^26.6.2" +"@jest/globals@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" + integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw== + dependencies: + "@jest/environment" "^27.0.6" + "@jest/types" "^27.0.6" + expect "^27.0.6" + "@jest/reporters@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" @@ -2297,6 +2500,36 @@ optionalDependencies: node-notifier "^8.0.0" +"@jest/reporters@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00" + integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^27.0.6" + jest-resolve "^27.0.6" + jest-util "^27.0.6" + jest-worker "^27.0.6" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.0.0" + "@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" @@ -2315,6 +2548,15 @@ graceful-fs "^4.2.4" source-map "^0.6.0" +"@jest/source-map@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" + integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + "@jest/test-result@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" @@ -2334,6 +2576,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-result@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" + integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w== + dependencies: + "@jest/console" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + "@jest/test-sequencer@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" @@ -2355,6 +2607,16 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" +"@jest/test-sequencer@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" + integrity sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA== + dependencies: + "@jest/test-result" "^27.0.6" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.6" + jest-runtime "^27.0.6" + "@jest/transform@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" @@ -2398,6 +2660,27 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/transform@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" + integrity sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.0.6" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.6" + jest-regex-util "^27.0.6" + jest-util "^27.0.6" + micromatch "^4.0.4" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/types@^24.3.0", "@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" @@ -2428,6 +2711,17 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^27.0.6": + version "27.0.6" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b" + integrity sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -3428,6 +3722,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/fake-timers@^7.0.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" @@ -3593,7 +3894,7 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": version "7.1.15" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== @@ -3715,6 +4016,11 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@22.2.3": + version "22.2.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.3.tgz#0157c0316dc3722c43a7b71de3fdf3acbccef10d" + integrity sha512-e74sM9W/4qqWB6D4TWV9FQk0WoHtX1X4FJpbjxucMSVJHtFjbQOH3H6yp+xno4br0AKG0wz/kPtaN599GUOvAg== + "@types/jest@26.0.8": version "26.0.8" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.8.tgz#f5c5559cf25911ce227f7ce30f1f160f24966369" @@ -3919,6 +4225,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/eslint-plugin@4.11.1": version "4.11.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz#7579c6d17ad862154c10bc14b40e5427b729e209" @@ -4701,6 +5014,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -4999,6 +5317,14 @@ assemblyscript@0.19.1: binaryen "101.0.0-nightly.20210527" long "^4.0.0" +assemblyscript@0.19.10: + version "0.19.10" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" + integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== + dependencies: + binaryen "101.0.0-nightly.20210723" + long "^4.0.0" + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" @@ -5291,6 +5617,20 @@ babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" +babel-jest@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" + integrity sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA== + dependencies: + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^27.0.6" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + babel-loader@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" @@ -5368,6 +5708,16 @@ babel-plugin-jest-hoist@^26.6.2: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" + integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + babel-plugin-macros@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" @@ -5741,6 +6091,14 @@ babel-preset-jest@^26.6.2: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" +babel-preset-jest@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" + integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== + dependencies: + babel-plugin-jest-hoist "^27.0.6" + babel-preset-current-node-syntax "^1.0.0" + babel-preset-react-app@^9.1.2: version "9.1.2" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz#54775d976588a8a6d1a99201a702befecaf48030" @@ -5888,6 +6246,11 @@ binaryen@101.0.0-nightly.20210527: resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210527.tgz#7677155efc965e0276dd206ed30f2d9e216ed6e2" integrity sha512-dbKentJwA6H0LfI+pRuzNNzAooJwYFNrg1L8rRw8j6rlfkU815ytNLO+uDzGNcltYehUa5ERZFJHPIdqX12n0w== +binaryen@101.0.0-nightly.20210723: + version "101.0.0-nightly.20210723" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" + integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== + binaryen@98.0.0-nightly.20201109: version "98.0.0-nightly.20201109" resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz#512bf6ca15c67bf7402144734a4836e63993aa05" @@ -6436,7 +6799,7 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== @@ -6599,6 +6962,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + cids@^0.7.1: version "0.7.5" resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" @@ -6644,6 +7012,11 @@ cjs-module-lexer@^0.6.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + class-is@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" @@ -7925,6 +8298,11 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" + integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -8214,6 +8592,11 @@ emittery@^0.7.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -9182,6 +9565,18 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" +expect@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" + integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== + dependencies: + "@jest/types" "^27.0.6" + ansi-styles "^5.0.0" + jest-get-type "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-regex-util "^27.0.6" + explain-error@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" @@ -9787,7 +10182,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.3.1, fsevents@~2.3.2: +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -11202,6 +11597,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + dependencies: + ci-info "^3.1.1" + is-circular@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" @@ -11828,6 +12230,40 @@ jest-changed-files@^26.6.2: execa "^4.0.0" throat "^5.0.0" +jest-changed-files@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.6.tgz#bed6183fcdea8a285482e3b50a9a7712d49a7a8b" + integrity sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA== + dependencies: + "@jest/types" "^27.0.6" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" + integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== + dependencies: + "@jest/environment" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.0.6" + is-generator-fn "^2.0.0" + jest-each "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-runtime "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + jest-cli@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" @@ -11866,6 +12302,24 @@ jest-cli@^26.2.2, jest-cli@^26.6.3: prompts "^2.0.1" yargs "^15.4.1" +jest-cli@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" + integrity sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg== + dependencies: + "@jest/core" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + jest-config "^27.0.6" + jest-util "^27.0.6" + jest-validate "^27.0.6" + prompts "^2.0.1" + yargs "^16.0.3" + jest-config@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" @@ -11913,6 +12367,33 @@ jest-config@^26.6.3: micromatch "^4.0.2" pretty-format "^26.6.2" +jest-config@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" + integrity sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^27.0.6" + "@jest/types" "^27.0.6" + babel-jest "^27.0.6" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + jest-circus "^27.0.6" + jest-environment-jsdom "^27.0.6" + jest-environment-node "^27.0.6" + jest-get-type "^27.0.6" + jest-jasmine2 "^27.0.6" + jest-regex-util "^27.0.6" + jest-resolve "^27.0.6" + jest-runner "^27.0.6" + jest-util "^27.0.6" + jest-validate "^27.0.6" + micromatch "^4.0.4" + pretty-format "^27.0.6" + jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" @@ -11943,6 +12424,16 @@ jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-diff@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" + integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.0.6" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" + jest-docblock@^24.3.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" @@ -11957,6 +12448,13 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" +jest-docblock@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" + integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== + dependencies: + detect-newline "^3.0.0" + jest-each@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" @@ -11979,6 +12477,17 @@ jest-each@^26.6.2: jest-util "^26.6.2" pretty-format "^26.6.2" +jest-each@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" + integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== + dependencies: + "@jest/types" "^27.0.6" + chalk "^4.0.0" + jest-get-type "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" + jest-environment-jsdom-fourteen@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz#4cd0042f58b4ab666950d96532ecb2fc188f96fb" @@ -12016,6 +12525,19 @@ jest-environment-jsdom@^26.0.1, jest-environment-jsdom@^26.6.2: jest-util "^26.6.2" jsdom "^16.4.0" +jest-environment-jsdom@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz#f66426c4c9950807d0a9f209c590ce544f73291f" + integrity sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw== + dependencies: + "@jest/environment" "^27.0.6" + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" + jest-util "^27.0.6" + jsdom "^16.6.0" + jest-environment-node@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" @@ -12039,6 +12561,18 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" +jest-environment-node@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" + integrity sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w== + dependencies: + "@jest/environment" "^27.0.6" + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" + jest-util "^27.0.6" + jest-get-type@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" @@ -12054,6 +12588,11 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" + integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== + jest-haste-map@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" @@ -12094,6 +12633,26 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" +jest-haste-map@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" + integrity sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w== + dependencies: + "@jest/types" "^27.0.6" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^27.0.6" + jest-serializer "^27.0.6" + jest-util "^27.0.6" + jest-worker "^27.0.6" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + jest-jasmine2@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" @@ -12140,6 +12699,30 @@ jest-jasmine2@^26.6.3: pretty-format "^26.6.2" throat "^5.0.0" +jest-jasmine2@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" + integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^27.0.6" + "@jest/source-map" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.0.6" + is-generator-fn "^2.0.0" + jest-each "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-runtime "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" + throat "^6.0.1" + jest-leak-detector@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" @@ -12156,6 +12739,14 @@ jest-leak-detector@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-leak-detector@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz#545854275f85450d4ef4b8fe305ca2a26450450f" + integrity sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ== + dependencies: + jest-get-type "^27.0.6" + pretty-format "^27.0.6" + jest-matcher-utils@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" @@ -12176,6 +12767,16 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-matcher-utils@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" + integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA== + dependencies: + chalk "^4.0.0" + jest-diff "^27.0.6" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" + jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -12205,6 +12806,21 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" +jest-message-util@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" + integrity sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.0.6" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + pretty-format "^27.0.6" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^24.0.0, jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" @@ -12220,6 +12836,14 @@ jest-mock@^26.6.2: "@jest/types" "^26.6.2" "@types/node" "*" +jest-mock@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467" + integrity sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw== + dependencies: + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -12235,6 +12859,11 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== +jest-regex-util@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" + integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== + jest-resolve-dependencies@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" @@ -12253,6 +12882,15 @@ jest-resolve-dependencies@^26.6.3: jest-regex-util "^26.0.0" jest-snapshot "^26.6.2" +jest-resolve-dependencies@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz#3e619e0ef391c3ecfcf6ef4056207a3d2be3269f" + integrity sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA== + dependencies: + "@jest/types" "^27.0.6" + jest-regex-util "^27.0.6" + jest-snapshot "^27.0.6" + jest-resolve@24.9.0, jest-resolve@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" @@ -12278,6 +12916,21 @@ jest-resolve@^26.6.2: resolve "^1.18.1" slash "^3.0.0" +jest-resolve@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" + integrity sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA== + dependencies: + "@jest/types" "^27.0.6" + chalk "^4.0.0" + escalade "^3.1.1" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^27.0.6" + jest-validate "^27.0.6" + resolve "^1.20.0" + slash "^3.0.0" + jest-runner@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" @@ -12329,6 +12982,34 @@ jest-runner@^26.6.3: source-map-support "^0.5.6" throat "^5.0.0" +jest-runner@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" + integrity sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ== + dependencies: + "@jest/console" "^27.0.6" + "@jest/environment" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-docblock "^27.0.6" + jest-environment-jsdom "^27.0.6" + jest-environment-node "^27.0.6" + jest-haste-map "^27.0.6" + jest-leak-detector "^27.0.6" + jest-message-util "^27.0.6" + jest-resolve "^27.0.6" + jest-runtime "^27.0.6" + jest-util "^27.0.6" + jest-worker "^27.0.6" + source-map-support "^0.5.6" + throat "^6.0.1" + jest-runtime@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" @@ -12391,6 +13072,38 @@ jest-runtime@^26.6.3: strip-bom "^4.0.0" yargs "^15.4.1" +jest-runtime@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" + integrity sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q== + dependencies: + "@jest/console" "^27.0.6" + "@jest/environment" "^27.0.6" + "@jest/fake-timers" "^27.0.6" + "@jest/globals" "^27.0.6" + "@jest/source-map" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.6" + jest-message-util "^27.0.6" + jest-mock "^27.0.6" + jest-regex-util "^27.0.6" + jest-resolve "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + jest-validate "^27.0.6" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^16.0.3" + jest-serializer@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" @@ -12404,6 +13117,14 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" +jest-serializer@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" + integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + jest-snapshot@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" @@ -12445,6 +13166,36 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" +jest-snapshot@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" + integrity sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/parser" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.0.6" + graceful-fs "^4.2.4" + jest-diff "^27.0.6" + jest-get-type "^27.0.6" + jest-haste-map "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-resolve "^27.0.6" + jest-util "^27.0.6" + natural-compare "^1.4.0" + pretty-format "^27.0.6" + semver "^7.3.2" + jest-util@26.x, jest-util@^26.1.0, jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" @@ -12475,6 +13226,18 @@ jest-util@^24.0.0, jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" +jest-util@^27.0.0, jest-util@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" + integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ== + dependencies: + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + picomatch "^2.2.3" + jest-validate@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" @@ -12499,6 +13262,18 @@ jest-validate@^26.6.2: leven "^3.1.0" pretty-format "^26.6.2" +jest-validate@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" + integrity sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA== + dependencies: + "@jest/types" "^27.0.6" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.0.6" + leven "^3.1.0" + pretty-format "^27.0.6" + jest-watch-typeahead@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" @@ -12538,6 +13313,19 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" +jest-watcher@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.6.tgz#89526f7f9edf1eac4e4be989bcb6dec6b8878d9c" + integrity sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ== + dependencies: + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.0.6" + string-length "^4.0.1" + jest-worker@^24.6.0, jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" @@ -12563,6 +13351,15 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" + integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" @@ -12589,6 +13386,15 @@ jest@26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" +jest@27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" + integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== + dependencies: + "@jest/core" "^27.0.6" + import-local "^3.0.2" + jest-cli "^27.0.6" + js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" @@ -12744,6 +13550,39 @@ jsdom@^16.4.0: ws "^7.4.5" xml-name-validator "^3.0.0" +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -16188,6 +17027,16 @@ pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +pretty-format@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" + integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ== + dependencies: + "@jest/types" "^27.0.6" + ansi-regex "^5.0.0" + ansi-styles "^5.0.0" + react-is "^17.0.1" + private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -18086,7 +18935,7 @@ stack-utils@^1.0.1: dependencies: escape-string-regexp "^2.0.0" -stack-utils@^2.0.2: +stack-utils@^2.0.2, stack-utils@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== @@ -18447,6 +19296,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" @@ -18677,6 +19533,11 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + through2@^2.0.0, through2@^2.0.1, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -18917,6 +19778,22 @@ ts-jest@26.5.4: semver "7.x" yargs-parser "20.x" +ts-jest@27.0.4: + version "27.0.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.4.tgz#df49683535831560ccb58f94c023d831b1b80df0" + integrity sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + ts-loader@8.0.17: version "8.0.17" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.17.tgz#98f2ccff9130074f4079fd89b946b4c637b1f2fc" @@ -19495,6 +20372,15 @@ v8-to-istanbul@^7.0.0: convert-source-map "^1.6.0" source-map "^0.7.3" +v8-to-istanbul@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" + integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -20546,6 +21432,11 @@ ws@^7.4.5: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.2.tgz#09cc8fea3bec1bc5ed44ef51b42f945be36900f6" integrity sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ== +ws@^7.4.6: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -20795,7 +21686,7 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.1.0: +yargs@^16.0.3, yargs@^16.1.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== From d8f602e513441f4dea0e05ebb20ada484132e4d1 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 17 Aug 2021 02:12:29 +0200 Subject: [PATCH 14/53] feat: ens wrapper e2e tests almost finished --- packages/apis/ens/jest.config.js | 4 +- packages/apis/ens/src/__tests__/e2e.spec.ts | 506 ++++++++++++++++++ .../ens/src/__tests__/mutation_e2e.spec.ts | 97 ---- packages/js/test-env/src/index.ts | 6 +- 4 files changed, 512 insertions(+), 101 deletions(-) create mode 100644 packages/apis/ens/src/__tests__/e2e.spec.ts delete mode 100644 packages/apis/ens/src/__tests__/mutation_e2e.spec.ts diff --git a/packages/apis/ens/jest.config.js b/packages/apis/ens/jest.config.js index 7ee69a33f7..7e2937cb70 100644 --- a/packages/apis/ens/jest.config.js +++ b/packages/apis/ens/jest.config.js @@ -1,7 +1,7 @@ module.exports = { collectCoverage: true, + collectCoverageFrom: ["**/src/*/index.ts"], preset: "ts-jest", testEnvironment: "node", - testMatch: ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"], - modulePathIgnorePatterns: ["./src/__tests__/query", "./src/__tests__/utils"], + testMatch: ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"] }; diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts new file mode 100644 index 0000000000..8a140a9596 --- /dev/null +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -0,0 +1,506 @@ +import { + buildAndDeployApi, + initTestEnvironment, + stopTestEnvironment, +} from "@web3api/test-env-js"; +import { Web3ApiClient } from "@web3api/client-js"; +import path from "path"; +import { providers } from "ethers"; +import { getPlugins } from "./utils"; + +jest.setTimeout(300000); + +const AddressOne = "0x0000000000000000000000000000000000000001"; + +describe("ENS Wrapper", () => { + let client: Web3ApiClient; + let ensUri: string; + let ethersProvider: providers.JsonRpcProvider; + let ensAddress: string; + let registrarAddress: string; + let resolverAddress: string; + let owner: string; + + const domain: string = "doe.eth"; + const subdomain: string = "john.doe.eth"; + const network: string = "testnet"; + + beforeAll(async () => { + const { + ensAddress: ensRegistryAddress, + registrarAddress: ensRegistrarAddress, + resolverAddress: ensResolverAddress, + ipfs, + ethereum, + } = await initTestEnvironment(); + // get client + const plugins = getPlugins(ethereum, ipfs, ensRegistryAddress); + client = new Web3ApiClient({ plugins }); + + // deploy api + const apiPath: string = path.resolve(__dirname + "/../../"); + const api = await buildAndDeployApi(apiPath, ipfs, ensRegistryAddress); + ensUri = `ens/testnet/${api.ensDomain}`; + // set up ethers provider + ethersProvider = providers.getDefaultProvider( + "http://localhost:8546" + ) as providers.JsonRpcProvider; + owner = await ethersProvider.getSigner().getAddress(); + ensAddress = ensRegistryAddress; + registrarAddress = ensRegistrarAddress; + resolverAddress = ensResolverAddress; + }); + + afterAll(async () => { + await stopTestEnvironment(); + }); + + it("should deploy FIFS Registrar", async () => { + const { + data: fifsDeploymentData, + errors: fifsDeploymentErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + deployFIFSRegistrar( + registryAddress: $registryAddress + tld: $tld + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: { + registryAddress: ensAddress, + tld: "eth", + network, + }, + }); + + expect(fifsDeploymentData?.deployFIFSRegistrar).toBeDefined(); + expect(fifsDeploymentErrors).toBeUndefined(); + + const variables = { + domain, + owner, + registryAddress: ensAddress, + registrarAddress: registrarAddress, + network, + }; + + const { data: registerData, errors: registerErrors } = await client.query<{ + registerDomain: string; + }>({ + uri: ensUri, + query: `mutation { + registerDomain( + domain: $domain + owner: $owner + registrarAddress: $registrarAddress + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) + }`, + variables, + }); + + expect(registerData?.registerDomain).toBeDefined(); + expect(registerErrors).toBeUndefined(); + }); + + it("should set and get resolver", async () => { + const setResolverVariables = { + domain, + owner, + registry: ensAddress, + resolver: resolverAddress, + network, + }; + const { + data: setResolverData, + errors: setResolverErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setResolver( + domain: $domain + resolverAddress: $resolver + registryAddress: $registry + owner: $owner + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setResolverVariables, + }); + + expect(setResolverData?.setResolver).toBeDefined(); + expect(setResolverErrors).toBeUndefined(); + + const getResolverVariables = { + domain, + registryAddress: ensAddress, + network, + }; + + const { + data: getResolverData, + errors: getResolverErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getResolver( + domain: $domain + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getResolverVariables, + }); + + expect(getResolverData?.getResolver).toEqual(resolverAddress); + expect(getResolverErrors).toBeUndefined(); + }); + + it("should set subdomain record and fetch it", async () => { + const setSubdomainRecordVariables = { + subdomain, + owner, + registry: ensAddress, + network, + }; + + const { + data: setSubdomainData, + errors: setSubdomainErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setSubdomainOwner( + subdomain: $subdomain + owner: $owner + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setSubdomainRecordVariables, + }); + + expect(setSubdomainData?.setSubdomainOwner).toBeDefined(); + expect(setSubdomainErrors).toBeUndefined(); + + const getSubdomainRecordVariables = { + domain: subdomain, + registry: ensAddress, + network, + }; + + const { + data: getSubdomainRecordData, + errors: getSubdomainRecordErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getSubdomainRecordVariables, + }); + + expect(getSubdomainRecordData?.getOwner).toBeDefined(); + expect(getSubdomainRecordErrors).toBeUndefined(); + }); + + it("should update and fetch owner", async () => { + const getOldOwnerVariables = { + domain, + registry: ensAddress, + network, + }; + + const { + data: getOldOwnerData, + errors: getOldOwnerErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getOldOwnerVariables, + }); + + expect(getOldOwnerData?.getOwner).toEqual(owner); + expect(getOldOwnerErrors).toBeUndefined(); + + const setOwnerVariables = { + domain, + newOwner: AddressOne, + registry: ensAddress, + network, + }; + + const { data: setOwnerData, errors: setOwnerErrors } = await client.query({ + uri: ensUri, + query: ` + mutation { + setOwner( + domain: $domain + newOwner: $newOwner + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setOwnerVariables, + }); + + expect(setOwnerData?.setOwner).toBeDefined(); + expect(setOwnerErrors).toBeUndefined(); + + const getNewOwnerVariables = { + domain, + registry: ensAddress, + network, + }; + + const { + data: getNewOwnerData, + errors: getNewOwnerErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getNewOwnerVariables, + }); + + expect(getNewOwnerData?.getOwner).toEqual(AddressOne); + expect(getNewOwnerErrors).toBeUndefined(); + }); + + it("should set content hash and fetch it", async () => { + const cid = "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C".toLowerCase(); + const setContentHashVariables = { + domain: subdomain, + cid, + resolver: resolverAddress, + network: "testnet", + }; + + const { + data: setContentHashData, + errors: setContentHashErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setContentHash( + domain: $domain + cid: $cid + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setContentHashVariables, + }); + + expect(setContentHashData?.setContentHash).toBeDefined(); + expect(setContentHashErrors).toBeUndefined(); + + const getContentHashVariables = { + domain: subdomain, + resolver: resolverAddress, + network, + }; + + const { + data: getContentHashData, + errors: getContentHashErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getContentHash( + domain: $domain + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getContentHashVariables, + }); + + expect(getContentHashData?.getContentHash).toEqual(cid); + expect(getContentHashErrors).toBeUndefined(); + }); + + it("should add subdomain record", async () => { + const setSubdomainRecordVariables = { + domain: subdomain, + owner, + registry: ensAddress, + resolver: resolverAddress, + ttl: "0", + label: "label", + network, + }; + + const { + data: setSubdomainRecordData, + errors: setSubdomainRecordErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setSubdomainRecord( + domain: $domain + label: $label + owner: $owner + registryAddress: $registry + resolverAddress: $resolver + ttl: $ttl + network: $network + ) + } + `, + variables: setSubdomainRecordVariables, + }); + + console.log({ setSubdomainRecordErrors }); + expect(setSubdomainRecordData?.setSubdomainRecord).toBeDefined(); + expect(setSubdomainRecordErrors).toBeUndefined(); + }); + + it("should set address and fetch it", async () => { + const setAddressVariables = { + domain, + address: owner, + resolver: resolverAddress, + network, + }; + + const { + data: setAddressData, + errors: setAddressErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setAddress( + domain: $domain + address: $address + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setAddressVariables, + }); + + expect(setAddressData).toBeDefined(); + expect(setAddressErrors).toBeUndefined(); + + const getAddressVariables = { + domain, + resolver: resolverAddress, + network, + }; + + const { + data: getAddressData, + errors: getAddressErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getAddress( + domain: $domain + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getAddressVariables, + }); + + expect(getAddressData?.getAddress).toEqual(owner); + expect(getAddressErrors).toBeUndefined(); + + const getAddressFromDomainVariables = { + domain, + registry: ensAddress, + network, + }; + + const { + data: getAddressFromDomainData, + errors: getAddressFromDomainErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getAddressFromDomain( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getAddressFromDomainVariables, + }); + + expect(getAddressFromDomainData?.getAddressFromDomain).toEqual(owner); + expect(getAddressFromDomainErrors).toBeUndefined(); + }); +}); diff --git a/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts b/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts deleted file mode 100644 index 565019883d..0000000000 --- a/packages/apis/ens/src/__tests__/mutation_e2e.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - buildAndDeployApi, - initTestEnvironment, - stopTestEnvironment, -} from "@web3api/test-env-js"; -import { Web3ApiClient } from "@web3api/client-js"; -import path from "path"; -import { providers } from "ethers"; -import { getPlugins } from "./utils"; - -jest.setTimeout(300000); - -describe("Mutations", () => { - let client: Web3ApiClient; - let ensUri: string; - let ethersProvider: providers.JsonRpcProvider; - let ensAddress: string; - beforeAll(async () => { - const { - ensAddress: ensRegistryAddress, - ipfs, - ethereum, - } = await initTestEnvironment(); - // get client - const plugins = getPlugins(ethereum, ipfs, ensRegistryAddress); - client = new Web3ApiClient({ plugins }); - - // deploy api - const apiPath: string = path.resolve(__dirname + "/../../"); - const api = await buildAndDeployApi(apiPath, ipfs, ensRegistryAddress); - ensUri = `ens/testnet/${api.ensDomain}`; - // set up ethers provider - ethersProvider = providers.getDefaultProvider( - "http://localhost:8546" - ) as providers.JsonRpcProvider; - console.log({ ethersProvider }); - ensAddress = ensRegistryAddress; - }); - - afterAll(async () => { - await stopTestEnvironment(); - }); - - it("Deploy FIFS Registrar", async () => { - const { data: fifsRegistrarData } = await client.query({ - uri: ensUri, - query: ` - mutation { - deployFIFSRegistrar( - registryAddress: $registryAddress - tld: $tld - connection: { - networkNameOrChainId: $network - } - ) - } - `, - variables: { - registryAddress: ensAddress, - tld: "eth", - network: "testnet", - }, - }); - - const deployFIFSRegistrar = fifsRegistrarData?.deployFIFSRegistrar; - - const variables = { - domain: "web3api.eth", - newOwner: deployFIFSRegistrar, - registryAddress: ensAddress, - network: "testnet", - txOverrides: { - gasLimit: 60000 - } - }; - console.log({ variables }); - const setOwner = await client.query<{ - setOwner: string; - }>({ - uri: ensUri, - query: `mutation { - setOwner( - domain: $domain - newOwner: $newOwner - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) - }`, - variables, - }); - - console.log(setOwner); - expect(setOwner.data?.setOwner).toBeTruthy(); - }); -}); diff --git a/packages/js/test-env/src/index.ts b/packages/js/test-env/src/index.ts index d8e16c3785..f2577a236b 100644 --- a/packages/js/test-env/src/index.ts +++ b/packages/js/test-env/src/index.ts @@ -6,6 +6,9 @@ interface TestEnvironment { ipfs: string; ethereum: string; ensAddress: string; + registrarAddress: string; + reverseAddress: string; + resolverAddress: string; } export const initTestEnvironment = async (): Promise => { @@ -29,8 +32,7 @@ export const initTestEnvironment = async (): Promise => { // re-deploy ENS const { data } = await axios.get("http://localhost:4040/deploy-ens"); - - return { ipfs, ethereum, ensAddress: data.ensAddress }; + return { ipfs, ethereum, ...data }; }; export const stopTestEnvironment = async (): Promise => { From 96a197b72c4e8ddacd50289443e106bb83f97b31 Mon Sep 17 00:00:00 2001 From: namesty Date: Tue, 17 Aug 2021 03:19:43 +0200 Subject: [PATCH 15/53] Tests passing and serialization/deserialization working --- .../bind/src/bindings/wasm-as/functions.ts | 5 + packages/schema/parse/src/header.ts | 1 + packages/schema/parse/src/typeInfo/scalar.ts | 1 + .../test-cases/cases/parse/sanity/output.ts | 2 + packages/wasm/as/assembly/JSON.ts | 1 + .../as/assembly/__tests__/context.spec.ts | 12 +- .../as/assembly/__tests__/msgpack.spec.ts | 42 +++-- packages/wasm/as/assembly/index.ts | 7 +- packages/wasm/as/assembly/msgpack/Read.ts | 3 +- .../wasm/as/assembly/msgpack/ReadDecoder.ts | 3 +- packages/wasm/as/assembly/msgpack/Write.ts | 3 +- .../wasm/as/assembly/msgpack/WriteEncoder.ts | 3 +- .../wasm/as/assembly/msgpack/WriteSizer.ts | 3 +- packages/wasm/as/package.json | 4 +- yarn.lock | 149 ++++++++++-------- 15 files changed, 134 insertions(+), 105 deletions(-) create mode 100644 packages/wasm/as/assembly/JSON.ts diff --git a/packages/schema/bind/src/bindings/wasm-as/functions.ts b/packages/schema/bind/src/bindings/wasm-as/functions.ts index dce9740777..93006dd030 100644 --- a/packages/schema/bind/src/bindings/wasm-as/functions.ts +++ b/packages/schema/bind/src/bindings/wasm-as/functions.ts @@ -72,6 +72,8 @@ export const toWasmInit: MustacheFunction = () => { return `new ArrayBuffer(0)`; case "BigInt": return `BigInt.fromUInt16(0)`; + case "JSON": + return `JSON.Value.Object()`; default: if (type.includes("Enum_")) { return "0"; @@ -133,6 +135,9 @@ export const toWasm: MustacheFunction = () => { case "BigInt": type = "BigInt"; break; + case "JSON": + type = "JSON"; + break; default: if (type.includes("Enum_")) { type = `Types.${type.replace("Enum_", "")}`; diff --git a/packages/schema/parse/src/header.ts b/packages/schema/parse/src/header.ts index 28c955a230..d5f53da04e 100644 --- a/packages/schema/parse/src/header.ts +++ b/packages/schema/parse/src/header.ts @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/schema/parse/src/typeInfo/scalar.ts b/packages/schema/parse/src/typeInfo/scalar.ts index 56fb8be7c4..d4c1b04470 100644 --- a/packages/schema/parse/src/typeInfo/scalar.ts +++ b/packages/schema/parse/src/typeInfo/scalar.ts @@ -11,6 +11,7 @@ const scalarTypes = { Boolean: "Boolean", Bytes: "Bytes", BigInt: "BigInt", + JSON: "JSON", }; export type ScalarTypes = typeof scalarTypes; diff --git a/packages/test-cases/cases/parse/sanity/output.ts b/packages/test-cases/cases/parse/sanity/output.ts index a66ce2a781..be70cb2396 100644 --- a/packages/test-cases/cases/parse/sanity/output.ts +++ b/packages/test-cases/cases/parse/sanity/output.ts @@ -36,6 +36,8 @@ export const output: TypeInfo = { createScalarPropertyDefinition({ name: "i32", type: "Int32", required: true }), createScalarPropertyDefinition({ name: "bigint", type: "BigInt", required: true }), createScalarPropertyDefinition({ name: "optBigint", type: "BigInt", required: false }), + createScalarPropertyDefinition({ name: "JSON", type: "JSON", required: true }), + createScalarPropertyDefinition({ name: "optJSON", type: "JSON", required: false }), createScalarPropertyDefinition({ name: "bytes", type: "Bytes", required: true }), createArrayPropertyDefinition({ name: "uArray", diff --git a/packages/wasm/as/assembly/JSON.ts b/packages/wasm/as/assembly/JSON.ts new file mode 100644 index 0000000000..e1ffff65a8 --- /dev/null +++ b/packages/wasm/as/assembly/JSON.ts @@ -0,0 +1 @@ +export * from "assemblyscript-json"; diff --git a/packages/wasm/as/assembly/__tests__/context.spec.ts b/packages/wasm/as/assembly/__tests__/context.spec.ts index 2ce4387bec..d2a22cc08c 100644 --- a/packages/wasm/as/assembly/__tests__/context.spec.ts +++ b/packages/wasm/as/assembly/__tests__/context.spec.ts @@ -1,8 +1,6 @@ import { Context } from "../msgpack"; - describe("Context class", () => { - it("pushes and pops values", () => { const context: Context = new Context(); expect(context.length).toStrictEqual(0); @@ -25,18 +23,16 @@ describe("Context class", () => { expect("\n" + context.toString()).toStrictEqual( `\nContext: Deserializing MyObject\n at propertyOne: unknown >> searching for property type` - ) + ); expect(context.printWithContext("\nInvalid length")).toStrictEqual( `\nInvalid length\n Context: Deserializing MyObject\n at propertyOne: unknown >> searching for property type` - ) + ); context.push("propertyOne", "i32", "type found, reading property"); expect(context.printWithContext("\nInvalid length")).toStrictEqual( `\nInvalid length\n Context: Deserializing MyObject\n at propertyOne: i32 >> type found, reading property\n at propertyOne: unknown >> searching for property type` - ) - + ); }); - -}); \ No newline at end of file +}); diff --git a/packages/wasm/as/assembly/__tests__/msgpack.spec.ts b/packages/wasm/as/assembly/__tests__/msgpack.spec.ts index 7fa70464d6..ded22a8714 100644 --- a/packages/wasm/as/assembly/__tests__/msgpack.spec.ts +++ b/packages/wasm/as/assembly/__tests__/msgpack.spec.ts @@ -7,6 +7,7 @@ import { Write, WriteEncoder, WriteSizer, + JSON, } from "../"; class Sanity { @@ -23,6 +24,7 @@ class Sanity { float32: f32; float64: f64; str: string = ""; + json: JSON.Obj = JSON.Value.Object(); largeStr: string = ""; bytes: ArrayBuffer = new ArrayBuffer(1); largeBytes: ArrayBuffer = new ArrayBuffer(1); @@ -48,6 +50,7 @@ class Sanity { this.float32 = 3.40282344818115234375; this.float64 = 3124124512.598273468017578125; this.str = "Hello, world!"; + this.json = JSON.parse(`{"foo": "bar", "bar": "baz"}`); this.largeStr = new Array(10).join("web3api "); this.bytes = new ArrayBuffer(12); this.largeBytes = largeBytes; @@ -90,7 +93,7 @@ class Sanity { } function serializeSanity(writer: Write, type: Sanity): void { - writer.writeMapLength(20); + writer.writeMapLength(21); writer.writeString("nil"); writer.writeNullableString(type.nil); writer.writeString("int8"); @@ -123,6 +126,8 @@ function serializeSanity(writer: Write, type: Sanity): void { writer.writeBytes(type.bytes); writer.writeString("largeBytes"); writer.writeBytes(type.largeBytes); + writer.writeString("json"); + writer.writeJSON(type.json); writer.writeString("array"); writer.writeArray(type.array, (writer: Write, item: u8) => { writer.writeUInt8(item); @@ -132,9 +137,12 @@ function serializeSanity(writer: Write, type: Sanity): void { writer.writeString(item); }); writer.writeString("largeBytesArray"); - writer.writeArray(type.largeBytesArray, (writer: Write, item: ArrayBuffer) => { - writer.writeBytes(item); - }); + writer.writeArray( + type.largeBytesArray, + (writer: Write, item: ArrayBuffer) => { + writer.writeBytes(item); + } + ); writer.writeString("map"); writer.writeMap( type.map, @@ -151,7 +159,6 @@ function serializeSanity(writer: Write, type: Sanity): void { function deserializeSanity(reader: Read, type: Sanity): void { let numFields = reader.readMapLength(); - while (numFields > 0) { numFields--; const field = reader.readString(); @@ -182,6 +189,8 @@ function deserializeSanity(reader: Read, type: Sanity): void { type.float64 = reader.readFloat64(); } else if (field == "str") { type.str = reader.readString(); + } else if (field == "json") { + type.json = reader.readJSON(); } else if (field == "largeStr") { type.largeStr = reader.readString(); } else if (field == "bytes") { @@ -195,11 +204,9 @@ function deserializeSanity(reader: Read, type: Sanity): void { } ); } else if (field == "largeStrArray") { - type.largeStrArray = reader.readArray( - (reader: Read): string => { - return reader.readString(); - } - ); + type.largeStrArray = reader.readArray((reader: Read): string => { + return reader.readString(); + }); } else if (field == "largeBytesArray") { type.largeBytesArray = reader.readArray( (reader: Read): ArrayBuffer => { @@ -243,7 +250,7 @@ function deserializeWithOverflow(reader: Read, type: Sanity): void { } else if (field == "uint8") { type.uint8 = reader.readUInt32(); } else if (field == "uint16") { - type.uint16 = reader.readUInt8() + type.uint16 = reader.readUInt8(); } else if (field == "uint32") { type.uint32 = reader.readUInt16(); } else if (field == "boolean") { @@ -258,6 +265,8 @@ function deserializeWithOverflow(reader: Read, type: Sanity): void { type.float64 = reader.readFloat32(); } else if (field == "str") { type.str = reader.readString(); + } else if (field == "json") { + type.json = reader.readJSON(); } else if (field == "bytes") { type.bytes = reader.readBytes(); } else if (field == "array") { @@ -320,6 +329,8 @@ function deserializeWithInvalidTypes(reader: Read, type: Sanity): void { type.float64 = reader.readFloat64(); } else if (field == "str") { type.str = reader.readString(); + } else if (field == "json") { + type.json = reader.readJSON(); } else if (field == "largeStr") { type.largeStr = reader.readString(); } else if (field == "bytes") { @@ -333,11 +344,9 @@ function deserializeWithInvalidTypes(reader: Read, type: Sanity): void { } ); } else if (field == "largeStrArray") { - type.largeStrArray = reader.readArray( - (reader: Read): string => { - return reader.readString(); - } - ); + type.largeStrArray = reader.readArray((reader: Read): string => { + return reader.readString(); + }); } else if (field == "largeBytesArray") { type.largeBytesArray = reader.readArray( (reader: Read): ArrayBuffer => { @@ -380,7 +389,6 @@ describe("MsgPack: Sanity", () => { output.fromBufferWithOverflows(input.toBuffer()); }).toThrow(); }); - }); describe("MsgPack: Sanity", () => { diff --git a/packages/wasm/as/assembly/index.ts b/packages/wasm/as/assembly/index.ts index 98939c23bf..419551fec5 100644 --- a/packages/wasm/as/assembly/index.ts +++ b/packages/wasm/as/assembly/index.ts @@ -9,13 +9,8 @@ export { } from "./msgpack"; export { BigInt } from "./BigInt"; +export * from "./JSON"; -export { - JSON, - JSONDecoder, - JSONEncoder, - JSONHandler, -} from "assemblyscript-json"; export * from "./abort"; export * from "./invoke"; export * from "./subinvoke"; diff --git a/packages/wasm/as/assembly/msgpack/Read.ts b/packages/wasm/as/assembly/msgpack/Read.ts index 9ef515e73b..35416f66c2 100644 --- a/packages/wasm/as/assembly/msgpack/Read.ts +++ b/packages/wasm/as/assembly/msgpack/Read.ts @@ -1,8 +1,7 @@ import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; - -import { JSON } from "assemblyscript-json"; +import { JSON } from "../JSON"; export abstract class Read { abstract readBool(): bool; diff --git a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts index 7e5a5c65ef..6adbf03cfb 100644 --- a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts +++ b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts @@ -13,8 +13,7 @@ import { Nullable } from "./Nullable"; import { Read } from "./Read"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; - -import { JSON } from "assemblyscript-json"; +import { JSON } from "../JSON"; export class ReadDecoder extends Read { private readonly _context: Context; diff --git a/packages/wasm/as/assembly/msgpack/Write.ts b/packages/wasm/as/assembly/msgpack/Write.ts index 80c5c3cc5c..439003d21c 100644 --- a/packages/wasm/as/assembly/msgpack/Write.ts +++ b/packages/wasm/as/assembly/msgpack/Write.ts @@ -1,8 +1,7 @@ import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; - -import { JSON } from "assemblyscript-json"; +import { JSON } from "../JSON"; export abstract class Write { abstract writeNil(): void; diff --git a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts index 8ce9b6d08e..1a8551cf47 100644 --- a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts +++ b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts @@ -4,8 +4,7 @@ import { Nullable } from "./Nullable"; import { Write } from "./Write"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; - -import { JSON } from "assemblyscript-json"; +import { JSON } from "../JSON"; export class WriteEncoder extends Write { private readonly _context: Context; diff --git a/packages/wasm/as/assembly/msgpack/WriteSizer.ts b/packages/wasm/as/assembly/msgpack/WriteSizer.ts index 5c0b1f350b..2cd8a8b870 100644 --- a/packages/wasm/as/assembly/msgpack/WriteSizer.ts +++ b/packages/wasm/as/assembly/msgpack/WriteSizer.ts @@ -2,8 +2,7 @@ import { Write } from "./Write"; import { Nullable } from "./Nullable"; import { BigInt } from "../BigInt"; import { Context } from "./Context"; - -import { JSON } from "assemblyscript-json"; +import { JSON } from "../JSON"; export class WriteSizer extends Write { length: i32; diff --git a/packages/wasm/as/package.json b/packages/wasm/as/package.json index 253beafd3c..152a4ad6ca 100644 --- a/packages/wasm/as/package.json +++ b/packages/wasm/as/package.json @@ -25,8 +25,8 @@ "assemblyscript-json": "1.1.0" }, "devDependencies": { - "@as-pect/cli": "5.0.1", - "assemblyscript": "0.17.14" + "@as-pect/cli": "6.2.4", + "assemblyscript": "0.19.5" }, "gitHead": "7346adaf5adb7e6bbb70d9247583e995650d390a", "publishConfig": { diff --git a/yarn.lock b/yarn.lock index 1f59651d55..cf26e72ab1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,29 +12,41 @@ call-me-maybe "^1.0.1" js-yaml "^4.1.0" -"@as-pect/assembly@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/assembly/-/assembly-5.0.1.tgz#052bb0082db81ec11c4756312ab182ec6eda3025" - integrity sha512-8tkBALZa8jjUmBoz67gRyl8X501IWzkyRl7rxIcJq6HycudlmL8zfxtZL4x70gtvK4nDcb885FmrnnknH5L+hQ== +"@as-covers/assembly@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@as-covers/assembly/-/assembly-0.2.0.tgz#6f335834483ddf91b21da06955bd86647f9e8db9" + integrity sha512-3Mo0pdLmaorJPqookq10LmJlWIpyXF/D9JWjphMtv5Th23yO537t6vMGi92uKe35d07k2xMOH/4WRHi04mlk6Q== + +"@as-covers/core@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@as-covers/core/-/core-0.2.1.tgz#362a4719a1901d416941f5425b63fa46288ce8e6" + integrity sha512-/GGTzPB850shvL6ZiidKDmIXSpBflYfzhYyipe7HA1eijBQKKluaLSRy/JLSN53f6kp3tLrCevPXN6HA2fyuBw== + dependencies: + "@as-covers/assembly" "^0.2.0" + "@as-covers/glue" "^0.2.0" + "@as-covers/transform" "^0.2.1" + +"@as-covers/glue@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@as-covers/glue/-/glue-0.2.0.tgz#c829491bcda643087259675361efba300d477615" + integrity sha512-oIRC3q5TA4zfNBv+UwNH10FKq1poAeRTrZUg5pmEcFNv2HpZfED30mb9fF0anNRbr7gmXrSY9iMsRSz6hkrmYQ== + dependencies: + csv-stringify "^5.6.2" + table "^6.7.1" + +"@as-covers/transform@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@as-covers/transform/-/transform-0.2.1.tgz#ea3cb56371493ba77b5761766d3ef46aba36d7c0" + integrity sha512-FutGj2yMIT2GOfqXrbnqSpeZ0eB5Bsnsg+BLnmqpEszthFhe/5/hKYmfNsiF2QBYZnqcIQ7dHw/z31+PlyUDug== + dependencies: + line-column "^1.0.2" + visitor-as "^0.6.0" "@as-pect/assembly@^6.0.0", "@as-pect/assembly@^6.2.0": version "6.2.0" resolved "https://registry.yarnpkg.com/@as-pect/assembly/-/assembly-6.2.0.tgz#29a0efa173df321354b76d92228e46944159ba95" integrity sha512-jYr1jdlr0xNndIhOpTMBaPHmlhD/c3PcVCzow8wIkzLxgcSOzhBkqjip+LWPWGsiFK1vsZ8ZUaMTeK3fcnXQhw== -"@as-pect/cli@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/cli/-/cli-5.0.1.tgz#2f66026aac759c837048dfd43cdf94c332a64aef" - integrity sha512-ceQFmeBpBqqbs8yJnyG2ZRfyaOUg8df7UFjoX8d++rlMOLHW0ZP/QByXZgmCpYo1aLP1wwvB2so6zUj2NeWECw== - dependencies: - "@as-pect/assembly" "^5.0.1" - "@as-pect/core" "^5.0.1" - chalk "^4.1.0" - glob "^7.1.6" - optionalDependencies: - "@as-pect/csv-reporter" "^5.0.1" - "@as-pect/json-reporter" "^5.0.1" - "@as-pect/cli@6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@as-pect/cli/-/cli-6.0.0.tgz#eee9862709d23dffcee4bb7573866d7109e50840" @@ -48,15 +60,19 @@ "@as-pect/csv-reporter" "^6.0.0" "@as-pect/json-reporter" "^6.0.0" -"@as-pect/core@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/core/-/core-5.0.1.tgz#eab6d5a578c963d163ec43626e926d96a8ec294e" - integrity sha512-xG9UPngMZSXqfrvmRaeLuM/HVGsXQ1ftCuAqcBfx4HSoCEfrvda0XchEwO7ftWSuNv2tkfBscANGn4vOEjBcMg== +"@as-pect/cli@6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@as-pect/cli/-/cli-6.2.4.tgz#83476d235a6bfb9052e78cef24e450c199ae9146" + integrity sha512-OSWehx90djGxgR4RxFZKixRyh9hsMLNM/6otayAljijEPjiD1zS2lxu3WCu/DiwSWIRJUYdGOUVzw15nqvdcZQ== dependencies: - "@as-pect/assembly" "^5.0.1" - "@as-pect/snapshots" "^5.0.1" - chalk "^4.1.0" - long "^4.0.0" + "@as-covers/core" "0.2.1" + "@as-pect/assembly" "^6.2.0" + "@as-pect/core" "^6.2.1" + chalk "^4.1.1" + glob "^7.1.7" + optionalDependencies: + "@as-pect/csv-reporter" "^6.2.1" + "@as-pect/json-reporter" "^6.2.1" "@as-pect/core@^6.0.0", "@as-pect/core@^6.2.1": version "6.2.1" @@ -68,42 +84,20 @@ chalk "^4.1.1" long "^4.0.0" -"@as-pect/csv-reporter@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/csv-reporter/-/csv-reporter-5.0.1.tgz#9eb2b3fbdd659306762cfdfbd0177127dd5d835f" - integrity sha512-XbzbVqXrB7Wds5yYgWiqFe9fNnYMZJQRdZafd7iETlkHhhfZgtYvLbYsdJfMeLMZSdhKInA91y+GkDi0fHEmDQ== - dependencies: - "@as-pect/core" "^5.0.1" - -"@as-pect/csv-reporter@^6.0.0": +"@as-pect/csv-reporter@^6.0.0", "@as-pect/csv-reporter@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@as-pect/csv-reporter/-/csv-reporter-6.2.1.tgz#fe7e23ac2d811e2519006ccc82f5245adcaad526" integrity sha512-jy8ka8dEP4UY/pK/OIjHFUqs4j2Hvw3r6no6XfX1AkOd9CRLlt/JIDddlzwEqCGEfF83GSBQfQ1At86FkE7RtA== dependencies: "@as-pect/core" "^6.2.1" -"@as-pect/json-reporter@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/json-reporter/-/json-reporter-5.0.1.tgz#c594773e867ad50f7958e6259a3d35855bcb1476" - integrity sha512-pE3GFihSSgNCSVvJtOWJiZfzIOARALPj/U3c5j5D9ZcCG8N1lb/Ge2doOEb9cuVpVKymi5+e6+GCH8+PU3W5bA== - dependencies: - "@as-pect/core" "^5.0.1" - -"@as-pect/json-reporter@^6.0.0": +"@as-pect/json-reporter@^6.0.0", "@as-pect/json-reporter@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@as-pect/json-reporter/-/json-reporter-6.2.1.tgz#a77c3257aed8e5b1e5175509fb1046c1f94851cf" integrity sha512-vsTYOiqB42+WPpec0M3apm9P2SjstUe6MfXepDvVIu2DCZzt1rkEuIIXro13LLQCnOzwXgHO/00sn+uPEjsmSQ== dependencies: "@as-pect/core" "^6.2.1" -"@as-pect/snapshots@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@as-pect/snapshots/-/snapshots-5.0.1.tgz#7945db8ce5a771699658febe0cf20454afda6c35" - integrity sha512-+fQbJ2FfYcILPphKILFQmxf9Fbck4TmmQTLEJS0MbIv3tt2LeyTk5n8y/+JMAQ3pTb029EJjjAX8g1b83cCVig== - dependencies: - diff "^5.0.0" - nearley "^2.20.1" - "@as-pect/snapshots@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@as-pect/snapshots/-/snapshots-6.2.1.tgz#237ed3b958e85b3e527a0e9f43292813b6dbf789" @@ -4975,13 +4969,10 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assemblyscript@0.17.14: - version "0.17.14" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.17.14.tgz#9ea4a04a50dc53042b35d492fff947101ae00248" - integrity sha512-TLuwNvZAIH26wu2puKpAJokzLp10kJkVXxbgDjFFmbW9VF/qg7rkmi0hjsiu41bjoH1UaVgY4vYvbbUeOHtKyg== - dependencies: - binaryen "98.0.0-nightly.20201109" - long "^4.0.0" +assemblyscript-json@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assemblyscript-json/-/assemblyscript-json-1.1.0.tgz#49d38bc21f1ac36f2887528a35de6cf7d59c17be" + integrity sha512-UbE8ts8csTWQgd5TnSPN7MRV9NveuHv1bVnKmDLoo/tzjqxkmsZb3lu59Uk8H7SGoqdkDSEE049alx/nHnSdFw== assemblyscript@0.19.1: version "0.19.1" @@ -4991,6 +4982,14 @@ assemblyscript@0.19.1: binaryen "101.0.0-nightly.20210527" long "^4.0.0" +assemblyscript@0.19.5: + version "0.19.5" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.5.tgz#12f5976c41f6b866dd0d1aad5275dcd358a5d82f" + integrity sha512-mAx7gcwjJI5OSu2RcOlugHFNxKt/rtWn3vyp46cN1+uXb7YSS//rgO044+KKwfxnGvoWj0ClsU0dNt5eWoXF7A== + dependencies: + binaryen "101.0.0-nightly.20210604" + long "^4.0.0" + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" @@ -5880,10 +5879,10 @@ binaryen@101.0.0-nightly.20210527: resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210527.tgz#7677155efc965e0276dd206ed30f2d9e216ed6e2" integrity sha512-dbKentJwA6H0LfI+pRuzNNzAooJwYFNrg1L8rRw8j6rlfkU815ytNLO+uDzGNcltYehUa5ERZFJHPIdqX12n0w== -binaryen@98.0.0-nightly.20201109: - version "98.0.0-nightly.20201109" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz#512bf6ca15c67bf7402144734a4836e63993aa05" - integrity sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw== +binaryen@101.0.0-nightly.20210604: + version "101.0.0-nightly.20210604" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210604.tgz#3498a0a0c1108f3386b15ca79f1608425057db9e" + integrity sha512-aTgX1JDN8m3tTFK8g9hazJcEOdQl7mK4yVfElkKAh7q+TRUCaea4a2SMLr1z2xZL7s9N4lkrvrBblxRuEPvxWQ== bindings@^1.5.0: version "1.5.0" @@ -7604,6 +7603,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== +csv-stringify@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.2.tgz#e653783e2189c4c797fbb12abf7f4943c787caa9" + integrity sha512-n3rIVbX6ylm1YsX2NEug9IaPV8xRnT+9/NNZbrA/bcHgOSSeqtWla6XnI/xmyu57wIw+ASCAoX1oM6EZtqJV0A== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -9953,7 +9957,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -13036,6 +13040,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -18462,7 +18474,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.4: +table@^6.0.4, table@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== @@ -18879,6 +18891,11 @@ ts-loader@8.0.17: micromatch "^4.0.0" semver "^7.3.4" +ts-mixer@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-5.4.1.tgz#b90db9ced48531aa17ce9184a2890d1e3c99b1e5" + integrity sha512-Zo9HgPCtNouDgJ+LGtrzVOjSg8+7WGQktIKLwAfaNrlOK1mWGlz1ejsAF/YqUEqAGjUTeB5fEg8gH9Aui6w9xA== + ts-morph@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-10.0.1.tgz#5a620cc4ef85e3e6d161989e690f44d0a0f723b0" @@ -19478,6 +19495,14 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +visitor-as@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/visitor-as/-/visitor-as-0.6.0.tgz#b0cca3c918bd9d396545faf08529d2b9ba968a40" + integrity sha512-4WcnwCLXWjhNkwJj9gSqh46sdIv9CyIvnSuwr61OOfrGCtN2mKcW5KE828OeEr1rYjEy0Z/CIdPBJKJRLsUgDA== + dependencies: + lodash.clonedeep "^4.5.0" + ts-mixer "^5.4.1" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" From e6c337d3da3ce73b66abbe21704aaf49ed45329d Mon Sep 17 00:00:00 2001 From: namesty Date: Tue, 17 Aug 2021 06:44:08 +0200 Subject: [PATCH 16/53] [WIP] JSON type test cases --- .../src/__tests__/Web3ApiClient.spec.ts | 616 +++++++++--------- .../cases/apis/json-type/query/index.ts | 37 +- .../cases/apis/json-type/query/schema.graphql | 14 +- 3 files changed, 324 insertions(+), 343 deletions(-) diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 10049292db..35bf664926 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -1,18 +1,14 @@ -import { - ClientConfig, - createWeb3ApiClient, - Plugin, - Uri -} from "../"; +import { ClientConfig, createWeb3ApiClient, Plugin, Uri } from "../"; import { buildAndDeployApi, initTestEnvironment, - stopTestEnvironment + stopTestEnvironment, } from "@web3api/test-env-js"; import { GetPathToTestApis } from "@web3api/test-cases"; import { Web3ApiClient } from "../Web3ApiClient"; import { getDefaultClientConfig } from "../default-client-config"; -import { coreInterfaceUris } from '@web3api/core-js'; +import { coreInterfaceUris } from "@web3api/core-js"; +import { JSON as ASJSON } from "@web3api/wasm-as"; jest.setTimeout(200000); @@ -33,67 +29,65 @@ describe("Web3ApiClient", () => { }); const getClient = async (config?: ClientConfig) => { - return createWeb3ApiClient({ - ethereum: { - networks: { - testnet: { - provider: ethProvider + return createWeb3ApiClient( + { + ethereum: { + networks: { + testnet: { + provider: ethProvider, + }, + }, + }, + ipfs: { provider: ipfsProvider }, + ens: { + addresses: { + testnet: ensAddress, }, }, }, - ipfs: { provider: ipfsProvider }, - ens: { - addresses: { - testnet: ensAddress - } - } - }, config); - } - + config + ); + }; + it("default client config", () => { const client = new Web3ApiClient(); expect(client.redirects()).toStrictEqual([]); - expect( - client.plugins().map(x => x.uri) - ).toStrictEqual([ - new Uri("w3://ens/ipfs.web3api.eth"), - new Uri("w3://ens/ens.web3api.eth"), - new Uri("w3://ens/ethereum.web3api.eth"), - new Uri("w3://ens/js-logger.web3api.eth"), - new Uri("w3://ens/uts46.web3api.eth"), - new Uri("w3://ens/sha3.web3api.eth"), - ]); - expect( - client.interfaces() - ).toStrictEqual([ + expect(client.plugins().map((x) => x.uri)).toStrictEqual([ + new Uri("w3://ens/ipfs.web3api.eth"), + new Uri("w3://ens/ens.web3api.eth"), + new Uri("w3://ens/ethereum.web3api.eth"), + new Uri("w3://ens/js-logger.web3api.eth"), + new Uri("w3://ens/uts46.web3api.eth"), + new Uri("w3://ens/sha3.web3api.eth"), + ]); + expect(client.interfaces()).toStrictEqual([ { interface: coreInterfaceUris.uriResolver, implementations: [ - new Uri("w3://ens/ipfs.web3api.eth"), - new Uri("w3://ens/ens.web3api.eth") - ] + new Uri("w3://ens/ipfs.web3api.eth"), + new Uri("w3://ens/ens.web3api.eth"), + ], }, { interface: coreInterfaceUris.logger, - implementations: [ - new Uri("w3://ens/js-logger.web3api.eth") - ] - }]); + implementations: [new Uri("w3://ens/js-logger.web3api.eth")], + }, + ]); }); it("redirect registration", () => { const implementation1Uri = "w3://ens/some-implementation1.eth"; const implementation2Uri = "w3://ens/some-implementation2.eth"; - + const client = new Web3ApiClient({ - redirects: [ - { - from: implementation1Uri, - to: implementation2Uri - } - ] - }); + redirects: [ + { + from: implementation1Uri, + to: implementation2Uri, + }, + ], + }); const redirects = client.redirects(); @@ -101,7 +95,7 @@ describe("Web3ApiClient", () => { { from: new Uri(implementation1Uri), to: new Uri(implementation2Uri), - } + }, ]); }); @@ -117,21 +111,21 @@ describe("Web3ApiClient", () => { ]; const client = new Web3ApiClient({ - plugins: [ - { - uri: implementationUri, - plugin: { - factory: () => ({} as Plugin), - manifest: { - schema: "", - implements: [], - } - } - } - ] - }); + plugins: [ + { + uri: implementationUri, + plugin: { + factory: () => ({} as Plugin), + manifest: { + schema: "", + implements: [], + }, + }, + }, + ], + }); - const pluginUris = client.plugins().map(x => x.uri.uri); + const pluginUris = client.plugins().map((x) => x.uri.uri); expect(pluginUris).toEqual([implementationUri].concat(defaultPlugins)); }); @@ -140,44 +134,38 @@ describe("Web3ApiClient", () => { const interfaceUri = "w3://ens/some-interface1.eth"; const implementation1Uri = "w3://ens/some-implementation1.eth"; const implementation2Uri = "w3://ens/some-implementation2.eth"; - + const client = new Web3ApiClient({ - interfaces: [ - { - interface: interfaceUri, - implementations: [ - implementation1Uri, - implementation2Uri - ] - } - ] - }); + interfaces: [ + { + interface: interfaceUri, + implementations: [implementation1Uri, implementation2Uri], + }, + ], + }); const interfaces = client.interfaces(); - const defaultClientConfig = getDefaultClientConfig(); - expect(interfaces).toEqual([ + expect(interfaces).toEqual( + [ { interface: new Uri(interfaceUri), implementations: [ new Uri(implementation1Uri), - new Uri(implementation2Uri) - ] - } - ].concat(defaultClientConfig.interfaces ?? [])); + new Uri(implementation2Uri), + ], + }, + ].concat(defaultClientConfig.interfaces ?? []) + ); const implementations = client.getImplementations(interfaceUri); - expect(implementations).toEqual([ - implementation1Uri, - implementation2Uri - ]); + expect(implementations).toEqual([implementation1Uri, implementation2Uri]); }); it("get all implementations of interface", async () => { - const interface1Uri = "w3://ens/some-interface1.eth"; const interface2Uri = "w3://ens/some-interface2.eth"; const interface3Uri = "w3://ens/some-interface3.eth"; @@ -191,16 +179,16 @@ describe("Web3ApiClient", () => { redirects: [ { from: interface1Uri, - to: interface2Uri + to: interface2Uri, }, { from: implementation1Uri, - to: implementation2Uri + to: implementation2Uri, }, { from: implementation2Uri, - to: implementation3Uri - } + to: implementation3Uri, + }, ], plugins: [ { @@ -210,54 +198,49 @@ describe("Web3ApiClient", () => { manifest: { schema: "", implements: [], - } - } - } + }, + }, + }, ], interfaces: [ { interface: interface1Uri, - implementations: [ - implementation1Uri, - implementation2Uri - ] + implementations: [implementation1Uri, implementation2Uri], }, { interface: interface2Uri, - implementations: [ - implementation3Uri - ] + implementations: [implementation3Uri], }, { interface: interface3Uri, - implementations: [ - implementation3Uri, - implementation4Uri - ] - } - ] + implementations: [implementation3Uri, implementation4Uri], + }, + ], + }); + + const implementations1 = client.getImplementations(interface1Uri, { + applyRedirects: true, + }); + const implementations2 = client.getImplementations(interface2Uri, { + applyRedirects: true, + }); + const implementations3 = client.getImplementations(interface3Uri, { + applyRedirects: true, }); - - const implementations1 = client.getImplementations(interface1Uri, { applyRedirects: true }); - const implementations2 = client.getImplementations(interface2Uri, { applyRedirects: true }); - const implementations3 = client.getImplementations(interface3Uri, { applyRedirects: true }); expect(implementations1).toEqual([ - implementation1Uri, - implementation2Uri, - implementation3Uri - ]); + implementation1Uri, + implementation2Uri, + implementation3Uri, + ]); expect(implementations2).toEqual([ - implementation1Uri, - implementation2Uri, - implementation3Uri - ]); - - expect(implementations3).toEqual([ - implementation3Uri, - implementation4Uri - ]); + implementation1Uri, + implementation2Uri, + implementation3Uri, + ]); + + expect(implementations3).toEqual([implementation3Uri, implementation4Uri]); }); it("plugins should not get registered with an interface uri (without default plugins)", () => { @@ -266,7 +249,7 @@ describe("Web3ApiClient", () => { const interface3Uri = "w3://ens/some-interface3.eth"; const implementationUri = "w3://ens/some-implementation.eth"; - + expect(() => { new Web3ApiClient({ plugins: [ @@ -277,8 +260,8 @@ describe("Web3ApiClient", () => { manifest: { schema: "", implements: [], - } - } + }, + }, }, { uri: interface2Uri, @@ -287,39 +270,38 @@ describe("Web3ApiClient", () => { manifest: { schema: "", implements: [], - } - } - } + }, + }, + }, ], interfaces: [ { interface: interface1Uri, - implementations: [ - implementationUri - ] + implementations: [implementationUri], }, { interface: interface2Uri, - implementations: [ - implementationUri - ] + implementations: [implementationUri], }, { interface: interface3Uri, - implementations: [ - implementationUri - ] - } - ] + implementations: [implementationUri], + }, + ], }); - }).toThrow(`Plugins can't use interfaces for their URI. Invalid plugins: ${[interface1Uri, interface2Uri]}`); + }).toThrow( + `Plugins can't use interfaces for their URI. Invalid plugins: ${[ + interface1Uri, + interface2Uri, + ]}` + ); }); it("plugins should not get registered with an interface uri (with default plugins)", async () => { const interfaceUri = "w3://ens/some-interface.eth"; const implementationUri = "w3://ens/some-implementation.eth"; - + await expect(async () => { await getClient({ plugins: [ @@ -330,22 +312,22 @@ describe("Web3ApiClient", () => { manifest: { schema: "", implements: [], - } - } - } + }, + }, + }, ], interfaces: [ { interface: interfaceUri, - implementations: [ - implementationUri - ] - } - ] + implementations: [implementationUri], + }, + ], }); - }) - .rejects - .toThrow(`Plugins can't use interfaces for their URI. Invalid plugins: ${[interfaceUri]}`); + }).rejects.toThrow( + `Plugins can't use interfaces for their URI. Invalid plugins: ${[ + interfaceUri, + ]}` + ); }); it("get implementations - do not return plugins that are not explicitly registered", () => { @@ -361,30 +343,26 @@ describe("Web3ApiClient", () => { plugin: { factory: () => ({} as Plugin), manifest: { - schema: '', + schema: "", implements: [new Uri(interfaceUri)], - } - } - } + }, + }, + }, ], interfaces: [ { interface: interfaceUri, - implementations: [ - implementation2Uri - ] - } - ] + implementations: [implementation2Uri], + }, + ], }); const getImplementationsResult = client.getImplementations( - new Uri(interfaceUri), - { applyRedirects: true } - ); - - expect(getImplementationsResult).toEqual([ - new Uri(implementation2Uri) - ]); + new Uri(interfaceUri), + { applyRedirects: true } + ); + + expect(getImplementationsResult).toEqual([new Uri(implementation2Uri)]); }); it("get implementations - return implementations for plugins which don't have interface stated in manifest", () => { @@ -400,21 +378,18 @@ describe("Web3ApiClient", () => { plugin: { factory: () => ({} as Plugin), manifest: { - schema: '', + schema: "", implements: [], - } - } - } - ], + }, + }, + }, + ], interfaces: [ { interface: interfaceUri, - implementations: [ - implementation1Uri, - implementation2Uri - ] - } - ] + implementations: [implementation1Uri, implementation2Uri], + }, + ], }); const getImplementationsResult = client.getImplementations( @@ -424,7 +399,7 @@ describe("Web3ApiClient", () => { expect(getImplementationsResult).toEqual([ new Uri(implementation1Uri), - new Uri(implementation2Uri) + new Uri(implementation2Uri), ]); }); @@ -805,7 +780,7 @@ describe("Web3ApiClient", () => { { const response = await client.query<{ - method: string + method: string; }>({ uri: ensUri, query: `query { @@ -815,21 +790,22 @@ describe("Web3ApiClient", () => { prop1: "987654321987654321" } ) - }` + }`, }); - const result = BigInt("123456789123456789") * BigInt("987654321987654321"); + const result = + BigInt("123456789123456789") * BigInt("987654321987654321"); expect(response.errors).toBeFalsy(); expect(response.data).toBeTruthy(); expect(response.data).toMatchObject({ - method: result.toString() + method: result.toString(), }); } { const response = await client.query<{ - method: string + method: string; }>({ uri: ensUri, query: `query { @@ -841,18 +817,19 @@ describe("Web3ApiClient", () => { prop2: "987654321987654321987654321987654321" } ) - }` + }`, }); - const result = BigInt("123456789123456789") - * BigInt("123456789123456789123456789123456789") - * BigInt("987654321987654321") - * BigInt("987654321987654321987654321987654321"); + const result = + BigInt("123456789123456789") * + BigInt("123456789123456789123456789123456789") * + BigInt("987654321987654321") * + BigInt("987654321987654321987654321987654321"); expect(response.errors).toBeFalsy(); expect(response.data).toBeTruthy(); expect(response.data).toMatchObject({ - method: result.toString() + method: result.toString(), }); } }); @@ -867,58 +844,55 @@ describe("Web3ApiClient", () => { const client = await getClient(); - { - const response = await client.query<{ - method: string - }>({ - uri: ensUri, - query: `query { - method( - arg1: "123456789123456789" - obj: { - prop1: "987654321987654321" - } - ) - }` - }); + const parseResponse = await client.query<{ + parse: string; + }>({ + uri: ensUri, + query: `query { + parse(value: '{ "foo": "bar", "bar": "baz" }') + }`, + }); - const result = BigInt("123456789123456789") * BigInt("987654321987654321"); + const parseResult = ASJSON.parse(`{ "foo": "bar", "bar": "baz" }`); + expect(parseResponse.parse).toEqual(parseResult); - expect(response.errors).toBeFalsy(); - expect(response.data).toBeTruthy(); - expect(response.data).toMatchObject({ - method: result.toString() - }); - } + const stringifyResponse = await client.query<{ + stringify: string; + }>({ + uri: ensUri, + query: `query { + stringify(value: ${ASJSON.parse('{ "foo": "bar", "bar": "baz" }')}) + }`, + }); - { - const response = await client.query<{ - method: string - }>({ - uri: ensUri, - query: `query { - method( - arg1: "123456789123456789" - arg2: "123456789123456789123456789123456789" - obj: { - prop1: "987654321987654321" - prop2: "987654321987654321987654321987654321" - } - ) - }` - }); + const stringifyResult = `{ "foo": "bar", "bar": "baz" }`; + expect(stringifyResponse.stringify).toEqual(stringifyResult); - const result = BigInt("123456789123456789") - * BigInt("123456789123456789123456789123456789") - * BigInt("987654321987654321") - * BigInt("987654321987654321987654321987654321"); + const methodStringResponse = await client.query<{ + methodString: string; + }>({ + uri: ensUri, + query: `query { + methodString(valueA: 5, valueB: "foo", valueC: true) + }`, + }); - expect(response.errors).toBeFalsy(); - expect(response.data).toBeTruthy(); - expect(response.data).toMatchObject({ - method: result.toString() - }); - } + const methodStringResult = `{ "valueA": 5, "valueB": "foo", "valueC": true }`; + expect(methodStringResponse.methodString).toEqual(methodStringResult); + + const methodJSONResponse = await client.query<{ + methodJSON: string; + }>({ + uri: ensUri, + query: `query { + methodJSON(valueA: 5, valueB: "foo", valueC: true) + }`, + }); + + const methodJSONResult = ASJSON.parse( + `{ "valueA": 5, "valueB": "foo", "valueC": true }` + ); + expect(methodJSONResponse.methodJSON).toEqual(methodJSONResult); }); it("bytes-type", async () => { @@ -1045,12 +1019,12 @@ describe("Web3ApiClient", () => { const ensUri = `ens/testnet/${api.ensDomain}`; const client = await getClient(); - const largeStr = new Array(10000).join("web3api ") + const largeStr = new Array(10000).join("web3api "); const largeBytes = new Uint8Array(Buffer.from(largeStr)); const largeStrArray = []; const largeBytesArray = []; - for (let i=0; i<100; i++) { + for (let i = 0; i < 100; i++) { largeStrArray.push(largeStr); largeBytesArray.push(largeBytes); } @@ -1074,7 +1048,7 @@ describe("Web3ApiClient", () => { largeBytes: largeBytes, largeStrArray: largeStrArray, largeBytesArray: largeBytesArray, - } + }, }); expect(largeTypesMethodCall.data).toBeTruthy(); @@ -1083,8 +1057,8 @@ describe("Web3ApiClient", () => { largeStr: largeStr, largeBytes: largeBytes, largeStrArray: largeStrArray, - largeBytesArray: largeBytesArray - } + largeBytesArray: largeBytesArray, + }, }); }); @@ -1098,7 +1072,7 @@ describe("Web3ApiClient", () => { const client = await getClient(); const i8Underflow = await client.query<{ - i8Method: number + i8Method: number; }>({ uri: ensUri, query: ` @@ -1111,8 +1085,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: -129, // min i8 = -128 - secondInt: 10 - } + secondInt: 10, + }, }); expect(i8Underflow.errors).toBeTruthy(); expect(i8Underflow.errors?.[0].message).toMatch( @@ -1121,7 +1095,7 @@ describe("Web3ApiClient", () => { expect(i8Underflow.data?.i8Method).toBeUndefined(); const u8Overflow = await client.query<{ - u8Method: number + u8Method: number; }>({ uri: ensUri, query: ` @@ -1134,8 +1108,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: 256, // max u8 = 255 - secondInt: 10 - } + secondInt: 10, + }, }); expect(u8Overflow.errors).toBeTruthy(); expect(u8Overflow.errors?.[0].message).toMatch( @@ -1144,7 +1118,7 @@ describe("Web3ApiClient", () => { expect(u8Overflow.data?.u8Method).toBeUndefined(); const i16Underflow = await client.query<{ - i16Method: number + i16Method: number; }>({ uri: ensUri, query: ` @@ -1157,8 +1131,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: -32769, // min i16 = -32768 - secondInt: 10 - } + secondInt: 10, + }, }); expect(i16Underflow.errors).toBeTruthy(); expect(i16Underflow.errors?.[0].message).toMatch( @@ -1167,7 +1141,7 @@ describe("Web3ApiClient", () => { expect(i16Underflow.data?.i16Method).toBeUndefined(); const u16Overflow = await client.query<{ - u16Method: number + u16Method: number; }>({ uri: ensUri, query: ` @@ -1180,8 +1154,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: 65536, // max u16 = 65535 - secondInt: 10 - } + secondInt: 10, + }, }); expect(u16Overflow.errors).toBeTruthy(); expect(u16Overflow.errors?.[0].message).toMatch( @@ -1190,7 +1164,7 @@ describe("Web3ApiClient", () => { expect(u16Overflow.data?.u16Method).toBeUndefined(); const i32Underflow = await client.query<{ - i32Method: number + i32Method: number; }>({ uri: ensUri, query: ` @@ -1203,8 +1177,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: -2147483649, // min i32 = -2147483648 - secondInt: 10 - } + secondInt: 10, + }, }); expect(i32Underflow.errors).toBeTruthy(); expect(i32Underflow.errors?.[0].message).toMatch( @@ -1213,7 +1187,7 @@ describe("Web3ApiClient", () => { expect(i32Underflow.data?.i32Method).toBeUndefined(); const u32Overflow = await client.query<{ - u32Method: number + u32Method: number; }>({ uri: ensUri, query: ` @@ -1226,8 +1200,8 @@ describe("Web3ApiClient", () => { `, variables: { firstInt: 4294967296, // max u32 = 4294967295 - secondInt: 10 - } + secondInt: 10, + }, }); expect(u32Overflow.errors).toBeTruthy(); expect(u32Overflow.errors?.[0].message).toMatch( @@ -1255,8 +1229,8 @@ describe("Web3ApiClient", () => { } `, variables: { - integer: 10 - } + integer: 10, + }, }); expect(invalidBoolIntSent.errors).toBeTruthy(); expect(invalidBoolIntSent.errors?.[0].message).toMatch( @@ -1273,8 +1247,8 @@ describe("Web3ApiClient", () => { } `, variables: { - bool: true - } + bool: true, + }, }); expect(invalidIntBoolSent.errors).toBeTruthy(); expect(invalidIntBoolSent.errors?.[0].message).toMatch( @@ -1291,8 +1265,8 @@ describe("Web3ApiClient", () => { } `, variables: { - array: [10] - } + array: [10], + }, }); expect(invalidUIntArraySent.errors).toBeTruthy(); expect(invalidUIntArraySent.errors?.[0].message).toMatch( @@ -1309,8 +1283,8 @@ describe("Web3ApiClient", () => { } `, variables: { - float: 10.15 - } + float: 10.15, + }, }); expect(invalidBytesFloatSent.errors).toBeTruthy(); expect(invalidBytesFloatSent.errors?.[0].message).toMatch( @@ -1328,9 +1302,9 @@ describe("Web3ApiClient", () => { `, variables: { object: { - prop: "prop" - } - } + prop: "prop", + }, + }, }); expect(invalidArrayMapSent.errors).toBeTruthy(); expect(invalidArrayMapSent.errors?.[0].message).toMatch( @@ -1341,22 +1315,22 @@ describe("Web3ApiClient", () => { it("loadWeb3Api - pass string or Uri", async () => { const implementationUri = "w3://ens/some-implementation.eth"; const schemaStr = "test-schema"; - + const client = new Web3ApiClient({ - plugins: [ - { - uri: implementationUri, - plugin: { - factory: () => ({} as Plugin), - manifest: { - schema: schemaStr, - implements: [], - } - } - } - ] - }); - + plugins: [ + { + uri: implementationUri, + plugin: { + factory: () => ({} as Plugin), + manifest: { + schema: schemaStr, + implements: [], + }, + }, + }, + ], + }); + const apiWhenString = await client.loadWeb3Api(implementationUri); const apiWhenUri = await client.loadWeb3Api(new Uri(implementationUri)); @@ -1378,36 +1352,39 @@ describe("Web3ApiClient", () => { redirects: [ { from: oldInterfaceUri, - to: newInterfaceUri - } + to: newInterfaceUri, + }, ], interfaces: [ { interface: oldInterfaceUri, - implementations: [ - implementation1Uri, - ] + implementations: [implementation1Uri], }, { interface: newInterfaceUri, - implementations: [ - implementation2Uri, - ] - } - ] + implementations: [implementation2Uri], + }, + ], }); - + let result = client.getImplementations(oldInterfaceUri); expect(result).toEqual([implementation1Uri]); - - result = client.getImplementations(oldInterfaceUri, { applyRedirects: true }); + + result = client.getImplementations(oldInterfaceUri, { + applyRedirects: true, + }); expect(result).toEqual([implementation1Uri, implementation2Uri]); let result2 = client.getImplementations(new Uri(oldInterfaceUri)); expect(result2).toEqual([new Uri(implementation1Uri)]); - - result2 = client.getImplementations(new Uri(oldInterfaceUri), { applyRedirects: true }); - expect(result2).toEqual([new Uri(implementation1Uri), new Uri(implementation2Uri)]); + + result2 = client.getImplementations(new Uri(oldInterfaceUri), { + applyRedirects: true, + }); + expect(result2).toEqual([ + new Uri(implementation1Uri), + new Uri(implementation2Uri), + ]); }); it("e2e interface implementations", async () => { @@ -1429,17 +1406,14 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interfaceUri, - implementations: [ - implementationUri - ] - } - ] + implementations: [implementationUri], + }, + ], }); - expect( - client.getImplementations(interfaceUri) - ) - .toEqual([implementationUri]); + expect(client.getImplementations(interfaceUri)).toEqual([ + implementationUri, + ]); const query = await client.query<{ queryMethod: string; @@ -1459,19 +1433,19 @@ describe("Web3ApiClient", () => { variables: { argument1: { uint8: 1, - str: "Test String 1" + str: "Test String 1", }, argument2: { - str: "Test String 2" - } - } + str: "Test String 2", + }, + }, }); expect(query.errors).toBeFalsy(); expect(query.data).toBeTruthy(); expect(query.data?.queryMethod).toEqual({ uint8: 1, - str: "Test String 1" + str: "Test String 1", }); expect(query.data?.abstractQueryMethod).toBe("Test String 2"); @@ -1493,8 +1467,8 @@ describe("Web3ApiClient", () => { `, variables: { argument1: 1, - argument2: 2 - } + argument2: 2, + }, }); expect(mutation.errors).toBeFalsy(); diff --git a/packages/test-cases/cases/apis/json-type/query/index.ts b/packages/test-cases/cases/apis/json-type/query/index.ts index 22319c9dc0..d59aa1622d 100644 --- a/packages/test-cases/cases/apis/json-type/query/index.ts +++ b/packages/test-cases/cases/apis/json-type/query/index.ts @@ -1,21 +1,28 @@ -import { - Input_method -} from "./w3"; -import { BigInt, JSON } from "@web3api/wasm-as"; +import { Input_stringify, Input_parse } from "./w3"; +import { JSON } from "@web3api/wasm-as"; -export function stringifyMethod(input: Input_stringifyMethod): String { - let result = input.arg1.mul(input.obj.prop1); +export function stringify(input: Input_stringify): string { + return input.value.stringify(); +} - if (input.arg2) { - result = result.mul(input.arg2 as BigInt); - } - if (input.obj.prop2) { - result = result.mul(input.obj.prop2 as BigInt); - } +export function parse(input: Input_parse): JSON.Obj { + return JSON.parse(input.value); +} - return result; +export function methodString(input: Input_methodString): string { + const result = JSON.Value.Object(); + result.set("valueA", JSON.from(input.valueA)); + result.set("valueB", JSON.from(input.valueA)); + result.set("valueC", JSON.from(input.valueA)); + + return result.stringify(); } -export function parseMethod(input: Input_parseMethod): JSON { - +export function methodJSON(input: Input_methodJSON): JSON.Obj { + const result = JSON.Value.Object(); + result.set("valueA", JSON.from(input.valueA)); + result.set("valueB", JSON.from(input.valueA)); + result.set("valueC", JSON.from(input.valueA)); + + return result; } diff --git a/packages/test-cases/cases/apis/json-type/query/schema.graphql b/packages/test-cases/cases/apis/json-type/query/schema.graphql index 1ce1832f1d..c5af091411 100644 --- a/packages/test-cases/cases/apis/json-type/query/schema.graphql +++ b/packages/test-cases/cases/apis/json-type/query/schema.graphql @@ -1,9 +1,9 @@ type Query { - stringifyMethod( - arg: JSON! - ): String! + parse(value: String!): JSON! - parseMethod( - arg: String! - ): JSON! -} \ No newline at end of file + stringify(value: JSON!): String! + + methodString(valueA: Int!, valueB: String!, valueC: Boolean!): String! + + methodJSON(valueA: Int!, valueB: String!, valueC: Boolean!): JSON! +} From a0c1d9865d71e88d5abe03c6d9d5a5dc7aa2b729 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 17 Aug 2021 12:24:33 +0200 Subject: [PATCH 17/53] feat: e2e tests finished --- packages/apis/ens/src/__tests__/e2e.spec.ts | 364 ++++++++++++++------ 1 file changed, 267 insertions(+), 97 deletions(-) diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index 8fc455ac3d..c2773d18ff 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -19,10 +19,12 @@ describe("ENS Wrapper", () => { let ensAddress: string; let registrarAddress: string; let resolverAddress: string; + let reverseRegistryAddress: string; let owner: string; const domain: string = "doe.eth"; - const subdomain: string = "john.doe.eth"; + const subdomain: string = "john." + domain; + const anotherSubdomain: string = "bob." + domain; const network: string = "testnet"; beforeAll(async () => { @@ -30,6 +32,7 @@ describe("ENS Wrapper", () => { ensAddress: ensRegistryAddress, registrarAddress: ensRegistrarAddress, resolverAddress: ensResolverAddress, + reverseAddress: ensReverseAddress, ipfs, ethereum, } = await initTestEnvironment(); @@ -49,6 +52,7 @@ describe("ENS Wrapper", () => { ensAddress = ensRegistryAddress; registrarAddress = ensRegistrarAddress; resolverAddress = ensResolverAddress; + reverseRegistryAddress = ensReverseAddress; }); afterAll(async () => { @@ -146,7 +150,7 @@ describe("ENS Wrapper", () => { const getResolverVariables = { domain, - registryAddress: ensAddress, + registry: ensAddress, network, }; @@ -159,7 +163,7 @@ describe("ENS Wrapper", () => { query { getResolver( domain: $domain - registryAddress: $registryAddress + registryAddress: $registry connection: { networkNameOrChainId: $network } @@ -173,8 +177,8 @@ describe("ENS Wrapper", () => { expect(getResolverErrors).toBeUndefined(); }); - it("should set subdomain record and fetch it", async () => { - const setSubdomainRecordVariables = { + it("should set owner to subdomain and fetch it", async () => { + const setSubdomainOwnerVariables = { subdomain, owner, registry: ensAddress, @@ -182,7 +186,7 @@ describe("ENS Wrapper", () => { }; const { - data: setSubdomainData, + data: setSubdomainOwnerData, errors: setSubdomainErrors, } = await client.query({ uri: ensUri, @@ -198,22 +202,19 @@ describe("ENS Wrapper", () => { ) } `, - variables: setSubdomainRecordVariables, + variables: setSubdomainOwnerVariables, }); - expect(setSubdomainData?.setSubdomainOwner).toBeDefined(); + expect(setSubdomainOwnerData?.setSubdomainOwner).toBeDefined(); expect(setSubdomainErrors).toBeUndefined(); - const getSubdomainRecordVariables = { + const getOwnerVariables = { domain: subdomain, registry: ensAddress, network, }; - const { - data: getSubdomainRecordData, - errors: getSubdomainRecordErrors, - } = await client.query({ + const { data: getOwnerData, errors: getOwnerErrors } = await client.query({ uri: ensUri, query: ` query { @@ -226,79 +227,57 @@ describe("ENS Wrapper", () => { ) } `, - variables: getSubdomainRecordVariables, + variables: getOwnerVariables, }); - expect(getSubdomainRecordData?.getOwner).toBeDefined(); - expect(getSubdomainRecordErrors).toBeUndefined(); + expect(getOwnerData?.getOwner).toBeDefined(); + expect(getOwnerErrors).toBeUndefined(); }); - it("should update and fetch owner", async () => { - const getOldOwnerVariables = { + it("should set subdomain owner, resolver and ttl", async () => { + const setSubdomainRecordVariables = { domain, + owner, registry: ensAddress, + resolver: resolverAddress, + ttl: "0", + label: "bob", network, }; const { - data: getOldOwnerData, - errors: getOldOwnerErrors, + data: setSubdomainRecordData, + errors: setSubdomainRecordErrors, } = await client.query({ - uri: ensUri, - query: ` - query { - getOwner( - domain: $domain - registryAddress: $registry - connection: { - networkNameOrChainId: $network - } - ) - } - `, - variables: getOldOwnerVariables, - }); - - expect(getOldOwnerData?.getOwner).toEqual(owner); - expect(getOldOwnerErrors).toBeUndefined(); - - const setOwnerVariables = { - domain, - newOwner: AddressOne, - registry: ensAddress, - network, - }; - - const { data: setOwnerData, errors: setOwnerErrors } = await client.query({ uri: ensUri, query: ` mutation { - setOwner( + setSubdomainRecord( domain: $domain - newOwner: $newOwner + label: $label + owner: $owner registryAddress: $registry + resolverAddress: $resolver + ttl: $ttl connection: { networkNameOrChainId: $network } ) } `, - variables: setOwnerVariables, + variables: setSubdomainRecordVariables, }); - expect(setOwnerData?.setOwner).toBeDefined(); - expect(setOwnerErrors).toBeUndefined(); + expect(setSubdomainRecordData?.setSubdomainRecord).toBeDefined(); + expect(setSubdomainRecordErrors).toBeUndefined(); - const getNewOwnerVariables = { - domain, + const getOwnerVariables = { + domain: anotherSubdomain, registry: ensAddress, network, }; - const { - data: getNewOwnerData, - errors: getNewOwnerErrors, - } = await client.query({ + const { data: getOwnerData, errors: getOwnerErrors } = await client.query({ uri: ensUri, query: ` query { @@ -311,11 +290,10 @@ describe("ENS Wrapper", () => { ) } `, - variables: getNewOwnerVariables, + variables: getOwnerVariables, }); - - expect(getNewOwnerData?.getOwner).toEqual(AddressOne); - expect(getNewOwnerErrors).toBeUndefined(); + expect(getOwnerData?.getOwner).toEqual(owner); + expect(getOwnerErrors).toBeUndefined(); }); it("should set content hash and fetch it", async () => { @@ -333,17 +311,17 @@ describe("ENS Wrapper", () => { } = await client.query({ uri: ensUri, query: ` - mutation { - setContentHash( - domain: $domain - cid: $cid - resolverAddress: $resolver - connection: { - networkNameOrChainId: $network - } + mutation { + setContentHash( + domain: $domain + cid: $cid + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } ) } - `, + `, variables: setContentHashVariables, }); @@ -377,49 +355,64 @@ describe("ENS Wrapper", () => { expect(getContentHashData?.getContentHash).toEqual(cid); expect(getContentHashErrors).toBeUndefined(); - }); - it("should add subdomain record", async () => { - const setSubdomainRecordVariables = { + await client.query({ + uri: ensUri, + query: ` + mutation { + setResolver( + domain: $domain + resolverAddress: $resolver + registryAddress: $registry + owner: $owner + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: { + domain: subdomain, + resolver: resolverAddress, + registry: ensAddress, + owner, + network, + }, + }); + + const getContentHashFromDomainVariables = { domain: subdomain, - owner, registry: ensAddress, - resolver: resolverAddress, - ttl: "0", - label: "label", network, }; const { - data: setSubdomainRecordData, - errors: setSubdomainRecordErrors, + data: getContentHashFromDomainData, + errors: getContentHashFromDomainErrors, } = await client.query({ uri: ensUri, query: ` - mutation { - setSubdomainRecord( + query { + getContentHashFromDomain( domain: $domain - label: $label - owner: $owner registryAddress: $registry - resolverAddress: $resolver - ttl: $ttl - network: $network + connection: { + networkNameOrChainId: $network + } ) } `, - variables: setSubdomainRecordVariables, + variables: getContentHashFromDomainVariables, }); - console.log({ setSubdomainRecordErrors }); - expect(setSubdomainRecordData?.setSubdomainRecord).toBeDefined(); - expect(setSubdomainRecordErrors).toBeUndefined(); + expect(getContentHashFromDomainData?.getContentHashFromDomain).toEqual(cid); + expect(getContentHashFromDomainErrors).toBeUndefined(); }); - it.skip("should set address and fetch it", async () => { + it("should set address and fetch it", async () => { const setAddressVariables = { - domain, - address: owner, + domain: anotherSubdomain, + address: AddressOne, resolver: resolverAddress, network, }; @@ -448,7 +441,7 @@ describe("ENS Wrapper", () => { expect(setAddressErrors).toBeUndefined(); const getAddressVariables = { - domain, + domain: anotherSubdomain, resolver: resolverAddress, network, }; @@ -472,11 +465,11 @@ describe("ENS Wrapper", () => { variables: getAddressVariables, }); - expect(getAddressData?.getAddress).toEqual(owner); + expect(getAddressData?.getAddress).toEqual(AddressOne); expect(getAddressErrors).toBeUndefined(); const getAddressFromDomainVariables = { - domain, + domain: anotherSubdomain, registry: ensAddress, network, }; @@ -500,7 +493,184 @@ describe("ENS Wrapper", () => { variables: getAddressFromDomainVariables, }); - expect(getAddressFromDomainData?.getAddressFromDomain).toEqual(owner); + expect(getAddressFromDomainData?.getAddressFromDomain).toEqual(AddressOne); expect(getAddressFromDomainErrors).toBeUndefined(); }); + + it("should set reverse registry", async () => { + const serReverseRegistryVariables = { + domain: subdomain, + owner, + reverseRegistry: reverseRegistryAddress, + network, + }; + + const { + data: reverseRegistryData, + errors: reverseRegistryErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + reverseRegisterDomain( + domain: $domain + reverseRegistryAddress: $reverseRegistry + owner: $owner + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: serReverseRegistryVariables, + }); + + expect(reverseRegistryData?.reverseRegisterDomain).toBeDefined(); + expect(reverseRegistryErrors).toBeUndefined(); + }); + + it("should fetch name based on address from registry and resolver", async () => { + const getNameFromAddressVariables = { + address: owner, + registry: ensAddress, + network, + }; + + const { + data: getNameFromAddressData, + errors: getNameFromAddressErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getNameFromAddress( + address: $address + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getNameFromAddressVariables, + }); + + expect(getNameFromAddressData?.getNameFromAddress).toEqual(subdomain); + expect(getNameFromAddressErrors).toBeUndefined(); + + const getNameFromReverseResolverVariables = { + address: owner, + resolver: resolverAddress, + network, + }; + + const { + data: getNameFromReverseResolverData, + errors: getNameFromReverseResolverErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getNameFromReverseResolver( + address: $address + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getNameFromReverseResolverVariables, + }); + + expect(getNameFromReverseResolverData?.getNameFromReverseResolver).toEqual( + subdomain + ); + expect(getNameFromReverseResolverErrors).toBeUndefined(); + }); + + it("should update and fetch owner", async () => { + const getOldOwnerVariables = { + domain, + registry: ensAddress, + network, + }; + + const { + data: getOldOwnerData, + errors: getOldOwnerErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getOldOwnerVariables, + }); + + expect(getOldOwnerData?.getOwner).toEqual(owner); + expect(getOldOwnerErrors).toBeUndefined(); + + const setOwnerVariables = { + domain, + newOwner: AddressOne, + registry: ensAddress, + network, + }; + + const { data: setOwnerData, errors: setOwnerErrors } = await client.query({ + uri: ensUri, + query: ` + mutation { + setOwner( + domain: $domain + newOwner: $newOwner + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setOwnerVariables, + }); + + expect(setOwnerData?.setOwner).toBeDefined(); + expect(setOwnerErrors).toBeUndefined(); + + const getNewOwnerVariables = { + domain, + registry: ensAddress, + network, + }; + + const { + data: getNewOwnerData, + errors: getNewOwnerErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getNewOwnerVariables, + }); + + expect(getNewOwnerData?.getOwner).toEqual(AddressOne); + expect(getNewOwnerErrors).toBeUndefined(); + }); }); From 7296c7df3d2c718295f66b606a75bb3c7a5f2f4a Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 17 Aug 2021 20:04:33 +0200 Subject: [PATCH 18/53] feat: set text record implemented and tested --- packages/apis/ens/package.json | 3 +- packages/apis/ens/src/__tests__/e2e.spec.ts | 68 ++ packages/apis/ens/src/contracts/ENS.json | 585 ------------------ packages/apis/ens/src/contracts/ENS.sol | 32 - .../apis/ens/src/contracts/ENSRegistry.json | 274 -------- .../apis/ens/src/contracts/ENSRegistry.sol | 178 ------ .../apis/ens/src/contracts/FIFSRegistrar.ts | 4 +- packages/apis/ens/src/mutation/index.ts | 21 + packages/apis/ens/src/mutation/schema.graphql | 9 + packages/apis/ens/src/query/index.ts | 12 + packages/apis/ens/src/query/schema.graphql | 7 + 11 files changed, 120 insertions(+), 1073 deletions(-) delete mode 100644 packages/apis/ens/src/contracts/ENS.json delete mode 100644 packages/apis/ens/src/contracts/ENS.sol delete mode 100644 packages/apis/ens/src/contracts/ENSRegistry.json delete mode 100644 packages/apis/ens/src/contracts/ENSRegistry.sol diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index 0afc615391..3a95ba6c4c 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -1,5 +1,5 @@ { - "name": "ens-web3api", + "name": "@polywrap/ens-wrapper", "description": "ENS Web3API", "private": true, "version": "0.0.1-prealpha.30", @@ -20,7 +20,6 @@ "@web3api/ethereum-plugin-js": "0.0.1-prealpha.30", "@web3api/test-env-js": "0.0.1-prealpha.30", "@web3api/wasm-as": "0.0.1-prealpha.30", - "assemblyscript": "0.19.10", "ethers": "5.0.8", "jest": "27.0.6", "js-yaml": "3.14.0", diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index c2773d18ff..3651e8399e 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -6,6 +6,7 @@ import { import { Web3ApiClient } from "@web3api/client-js"; import path from "path"; import { providers } from "ethers"; + import { getPlugins } from "./utils"; jest.setTimeout(300000); @@ -673,4 +674,71 @@ describe("ENS Wrapper", () => { expect(getNewOwnerData?.getOwner).toEqual(AddressOne); expect(getNewOwnerErrors).toBeUndefined(); }); + + it("should set and get text record from subdomain", async () => { + const key = "snapshot"; + const value = "QmHash"; + + const setTextRecordVariables = { + subdomain, + resolver: resolverAddress, + key, + value, + network, + }; + + const { + data: setTextRecordData, + errors: setTextRecordErrors, + } = await client.query({ + uri: ensUri, + query: ` + mutation { + setTextRecord( + subdomain: $subdomain + resolverAddress: $resolver + key: $key + value: $value + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setTextRecordVariables, + }); + + expect(setTextRecordData?.setTextRecord).toBeDefined(); + expect(setTextRecordErrors).toBeUndefined(); + + const getTextRecordVariables = { + subdomain, + resolver: resolverAddress, + key, + network, + }; + + const { + data: getTextRecordData, + errors: getTextRecordErrors, + } = await client.query({ + uri: ensUri, + query: ` + query { + getTextRecord( + subdomain: $subdomain + resolverAddress: $resolver + key: $key + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getTextRecordVariables, + }); + + expect(getTextRecordData?.getTextRecord).toEqual(value); + expect(getTextRecordErrors).toBeUndefined(); + }); }); diff --git a/packages/apis/ens/src/contracts/ENS.json b/packages/apis/ens/src/contracts/ENS.json deleted file mode 100644 index 2176b5edb8..0000000000 --- a/packages/apis/ens/src/contracts/ENS.json +++ /dev/null @@ -1,585 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "contract ENS", "name": "_ens", "type": "address" } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "contentType", - "type": "uint256" - } - ], - "name": "ABIChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "a", - "type": "address" - } - ], - "name": "AddrChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "coinType", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "newAddress", - "type": "bytes" - } - ], - "name": "AddressChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isAuthorised", - "type": "bool" - } - ], - "name": "AuthorisationChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "hash", - "type": "bytes" - } - ], - "name": "ContenthashChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "name", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "resource", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "record", - "type": "bytes" - } - ], - "name": "DNSRecordChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "name", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "resource", - "type": "uint16" - } - ], - "name": "DNSRecordDeleted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - } - ], - "name": "DNSZoneCleared", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes4", - "name": "interfaceID", - "type": "bytes4" - }, - { - "indexed": false, - "internalType": "address", - "name": "implementer", - "type": "address" - } - ], - "name": "InterfaceChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "string", - "name": "name", - "type": "string" - } - ], - "name": "NameChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "x", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "y", - "type": "bytes32" - } - ], - "name": "PubkeyChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "string", - "name": "indexedKey", - "type": "string" - }, - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - } - ], - "name": "TextChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "uint256", "name": "contentTypes", "type": "uint256" } - ], - "name": "ABI", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "bytes", "name": "", "type": "bytes" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "addr", - "outputs": [ - { "internalType": "address payable", "name": "", "type": "address" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "uint256", "name": "coinType", "type": "uint256" } - ], - "name": "addr", - "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" }, - { "internalType": "address", "name": "", "type": "address" }, - { "internalType": "address", "name": "", "type": "address" } - ], - "name": "authorisations", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "clearDNSZone", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "contenthash", - "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes32", "name": "name", "type": "bytes32" }, - { "internalType": "uint16", "name": "resource", "type": "uint16" } - ], - "name": "dnsRecord", - "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes32", "name": "name", "type": "bytes32" } - ], - "name": "hasDNSRecords", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" } - ], - "name": "interfaceImplementer", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } - ], - "name": "multicall", - "outputs": [ - { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "pubkey", - "outputs": [ - { "internalType": "bytes32", "name": "x", "type": "bytes32" }, - { "internalType": "bytes32", "name": "y", "type": "bytes32" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "uint256", "name": "contentType", "type": "uint256" }, - { "internalType": "bytes", "name": "data", "type": "bytes" } - ], - "name": "setABI", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "uint256", "name": "coinType", "type": "uint256" }, - { "internalType": "bytes", "name": "a", "type": "bytes" } - ], - "name": "setAddr", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "address", "name": "a", "type": "address" } - ], - "name": "setAddr", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "bool", "name": "isAuthorised", "type": "bool" } - ], - "name": "setAuthorisation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes", "name": "hash", "type": "bytes" } - ], - "name": "setContenthash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes", "name": "data", "type": "bytes" } - ], - "name": "setDNSRecords", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }, - { "internalType": "address", "name": "implementer", "type": "address" } - ], - "name": "setInterface", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "string", "name": "name", "type": "string" } - ], - "name": "setName", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes32", "name": "x", "type": "bytes32" }, - { "internalType": "bytes32", "name": "y", "type": "bytes32" } - ], - "name": "setPubkey", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "string", "name": "key", "type": "string" }, - { "internalType": "string", "name": "value", "type": "string" } - ], - "name": "setText", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" } - ], - "name": "supportsInterface", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "string", "name": "key", "type": "string" } - ], - "name": "text", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "payable": false, - "stateMutability": "view", - "type": "function" - } -] diff --git a/packages/apis/ens/src/contracts/ENS.sol b/packages/apis/ens/src/contracts/ENS.sol deleted file mode 100644 index b3d0ec3aab..0000000000 --- a/packages/apis/ens/src/contracts/ENS.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.7.0; - -interface ENS { - - // Logged when the owner of a node assigns a new owner to a subnode. - event NewOwner(bytes32 indexed node, bytes32 indexed label, address owner); - - // Logged when the owner of a node transfers ownership to a new account. - event Transfer(bytes32 indexed node, address owner); - - // Logged when the resolver for a node changes. - event NewResolver(bytes32 indexed node, address resolver); - - // Logged when the TTL of a node changes - event NewTTL(bytes32 indexed node, uint64 ttl); - - // Logged when an operator is added or removed. - event ApprovalForAll(address indexed owner, address indexed operator, bool approved); - - function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) external virtual; - function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external virtual; - function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external virtual returns(bytes32); - function setResolver(bytes32 node, address resolver) external virtual; - function setOwner(bytes32 node, address owner) external virtual; - function setTTL(bytes32 node, uint64 ttl) external virtual; - function setApprovalForAll(address operator, bool approved) external virtual; - function owner(bytes32 node) external virtual view returns (address); - function resolver(bytes32 node) external virtual view returns (address); - function ttl(bytes32 node) external virtual view returns (uint64); - function recordExists(bytes32 node) external virtual view returns (bool); - function isApprovedForAll(address owner, address operator) external virtual view returns (bool); -} \ No newline at end of file diff --git a/packages/apis/ens/src/contracts/ENSRegistry.json b/packages/apis/ens/src/contracts/ENSRegistry.json deleted file mode 100644 index e7b04b5bd3..0000000000 --- a/packages/apis/ens/src/contracts/ENSRegistry.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "contract ENS", "name": "_old", "type": "address" } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "label", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "NewOwner", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "resolver", - "type": "address" - } - ], - "name": "NewResolver", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "ttl", - "type": "uint64" - } - ], - "name": "NewTTL", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "node", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "operator", "type": "address" } - ], - "name": "isApprovedForAll", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "old", - "outputs": [ - { "internalType": "contract ENS", "name": "", "type": "address" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "owner", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "recordExists", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "resolver", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "address", "name": "operator", "type": "address" }, - { "internalType": "bool", "name": "approved", "type": "bool" } - ], - "name": "setApprovalForAll", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "address", "name": "owner", "type": "address" } - ], - "name": "setOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "resolver", "type": "address" }, - { "internalType": "uint64", "name": "ttl", "type": "uint64" } - ], - "name": "setRecord", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "address", "name": "resolver", "type": "address" } - ], - "name": "setResolver", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes32", "name": "label", "type": "bytes32" }, - { "internalType": "address", "name": "owner", "type": "address" } - ], - "name": "setSubnodeOwner", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "bytes32", "name": "label", "type": "bytes32" }, - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "resolver", "type": "address" }, - { "internalType": "uint64", "name": "ttl", "type": "uint64" } - ], - "name": "setSubnodeRecord", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" }, - { "internalType": "uint64", "name": "ttl", "type": "uint64" } - ], - "name": "setTTL", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "internalType": "bytes32", "name": "node", "type": "bytes32" } - ], - "name": "ttl", - "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }], - "payable": false, - "stateMutability": "view", - "type": "function" - } -] diff --git a/packages/apis/ens/src/contracts/ENSRegistry.sol b/packages/apis/ens/src/contracts/ENSRegistry.sol deleted file mode 100644 index 85c0d18e49..0000000000 --- a/packages/apis/ens/src/contracts/ENSRegistry.sol +++ /dev/null @@ -1,178 +0,0 @@ -pragma solidity ^0.7.0; - -import "./ENS.sol"; - -/** - * The ENS registry contract. - */ -contract ENSRegistry is ENS { - - struct Record { - address owner; - address resolver; - uint64 ttl; - } - - mapping (bytes32 => Record) records; - mapping (address => mapping(address => bool)) operators; - - // Permits modifications only by the owner of the specified node. - modifier authorised(bytes32 node) { - address owner = records[node].owner; - require(owner == msg.sender || operators[owner][msg.sender]); - _; - } - - /** - * @dev Constructs a new ENS registrar. - */ - constructor() public { - records[0x0].owner = msg.sender; - } - - /** - * @dev Sets the record for a node. - * @param node The node to update. - * @param owner The address of the new owner. - * @param resolver The address of the resolver. - * @param ttl The TTL in seconds. - */ - function setRecord(bytes32 node, address owner, address resolver, uint64 ttl) external virtual override { - setOwner(node, owner); - _setResolverAndTTL(node, resolver, ttl); - } - - /** - * @dev Sets the record for a subnode. - * @param node The parent node. - * @param label The hash of the label specifying the subnode. - * @param owner The address of the new owner. - * @param resolver The address of the resolver. - * @param ttl The TTL in seconds. - */ - function setSubnodeRecord(bytes32 node, bytes32 label, address owner, address resolver, uint64 ttl) external virtual override { - bytes32 subnode = setSubnodeOwner(node, label, owner); - _setResolverAndTTL(subnode, resolver, ttl); - } - - /** - * @dev Transfers ownership of a node to a new address. May only be called by the current owner of the node. - * @param node The node to transfer ownership of. - * @param owner The address of the new owner. - */ - function setOwner(bytes32 node, address owner) public virtual override authorised(node) { - _setOwner(node, owner); - emit Transfer(node, owner); - } - - /** - * @dev Transfers ownership of a subnode keccak256(node, label) to a new address. May only be called by the owner of the parent node. - * @param node The parent node. - * @param label The hash of the label specifying the subnode. - * @param owner The address of the new owner. - */ - function setSubnodeOwner(bytes32 node, bytes32 label, address owner) public virtual override authorised(node) returns(bytes32) { - bytes32 subnode = keccak256(abi.encodePacked(node, label)); - _setOwner(subnode, owner); - emit NewOwner(node, label, owner); - return subnode; - } - - /** - * @dev Sets the resolver address for the specified node. - * @param node The node to update. - * @param resolver The address of the resolver. - */ - function setResolver(bytes32 node, address resolver) public virtual override authorised(node) { - emit NewResolver(node, resolver); - records[node].resolver = resolver; - } - - /** - * @dev Sets the TTL for the specified node. - * @param node The node to update. - * @param ttl The TTL in seconds. - */ - function setTTL(bytes32 node, uint64 ttl) public virtual override authorised(node) { - emit NewTTL(node, ttl); - records[node].ttl = ttl; - } - - /** - * @dev Enable or disable approval for a third party ("operator") to manage - * all of `msg.sender`'s ENS records. Emits the ApprovalForAll event. - * @param operator Address to add to the set of authorized operators. - * @param approved True if the operator is approved, false to revoke approval. - */ - function setApprovalForAll(address operator, bool approved) external virtual override { - operators[msg.sender][operator] = approved; - emit ApprovalForAll(msg.sender, operator, approved); - } - - /** - * @dev Returns the address that owns the specified node. - * @param node The specified node. - * @return address of the owner. - */ - function owner(bytes32 node) public virtual override view returns (address) { - address addr = records[node].owner; - if (addr == address(this)) { - return address(0x0); - } - - return addr; - } - - /** - * @dev Returns the address of the resolver for the specified node. - * @param node The specified node. - * @return address of the resolver. - */ - function resolver(bytes32 node) public virtual override view returns (address) { - return records[node].resolver; - } - - /** - * @dev Returns the TTL of a node, and any records associated with it. - * @param node The specified node. - * @return ttl of the node. - */ - function ttl(bytes32 node) public virtual override view returns (uint64) { - return records[node].ttl; - } - - /** - * @dev Returns whether a record has been imported to the registry. - * @param node The specified node. - * @return Bool if record exists - */ - function recordExists(bytes32 node) public virtual override view returns (bool) { - return records[node].owner != address(0x0); - } - - /** - * @dev Query if an address is an authorized operator for another address. - * @param owner The address that owns the records. - * @param operator The address that acts on behalf of the owner. - * @return True if `operator` is an approved operator for `owner`, false otherwise. - */ - function isApprovedForAll(address owner, address operator) external virtual override view returns (bool) { - return operators[owner][operator]; - } - - function _setOwner(bytes32 node, address owner) internal virtual { - records[node].owner = owner; - } - - function _setResolverAndTTL(bytes32 node, address resolver, uint64 ttl) internal { - if(resolver != records[node].resolver) { - records[node].resolver = resolver; - emit NewResolver(node, resolver); - } - - if(ttl != records[node].ttl) { - records[node].ttl = ttl; - emit NewTTL(node, ttl); - } - } -} \ No newline at end of file diff --git a/packages/apis/ens/src/contracts/FIFSRegistrar.ts b/packages/apis/ens/src/contracts/FIFSRegistrar.ts index 601c301cf8..77eb349adb 100644 --- a/packages/apis/ens/src/contracts/FIFSRegistrar.ts +++ b/packages/apis/ens/src/contracts/FIFSRegistrar.ts @@ -33,6 +33,6 @@ export const abi = `[ "stateMutability": "nonpayable", "type": "function" } -]` +]`; -export const bytecode = `0x608060405234801561001057600080fd5b506040516103883803806103888339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555050506102e2806100a66000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061007e565b005b8160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3600154846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d602081101561014d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806101c657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6101cf57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab592360015486866040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561026a57600080fd5b505af115801561027e573d6000803e3d6000fd5b505050506040513d602081101561029457600080fd5b8101908080519060200190929190505050505050505056fea264697066735822122068df005ced0968f1413cf7e64af5c92cf8f2940f6d95a51455e99cefa14673e064736f6c63430007060033` \ No newline at end of file +export const bytecode = `0x608060405234801561001057600080fd5b506040516103883803806103888339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060018190555050506102e2806100a66000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063d22057a914610030575b600080fd5b61007c6004803603604081101561004657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061007e565b005b8160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3600154846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561012357600080fd5b505afa158015610137573d6000803e3d6000fd5b505050506040513d602081101561014d57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806101c657503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6101cf57600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab592360015486866040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561026a57600080fd5b505af115801561027e573d6000803e3d6000fd5b505050506040513d602081101561029457600080fd5b8101908080519060200190929190505050505050505056fea264697066735822122068df005ced0968f1413cf7e64af5c92cf8f2940f6d95a51455e99cefa14673e064736f6c63430007060033`; diff --git a/packages/apis/ens/src/mutation/index.ts b/packages/apis/ens/src/mutation/index.ts index 8786033a88..c51c2114fd 100644 --- a/packages/apis/ens/src/mutation/index.ts +++ b/packages/apis/ens/src/mutation/index.ts @@ -17,6 +17,7 @@ import { Input_setRecord, Input_deployFIFSRegistrar, Input_registerSubnodeOwnerWithFIFSRegistrar, + Input_setTextRecord, Ethereum_TxResponse, TxOverrides, } from "./w3"; @@ -350,3 +351,23 @@ export function registerSubnodeOwnerWithFIFSRegistrar( return txHash; } + +export function setTextRecord(input: Input_setTextRecord): Ethereum_TxResponse { + const txOverrides: TxOverrides = + input.txOverrides === null + ? { gasLimit: null, gasPrice: null } + : input.txOverrides!; + const txHash = Ethereum_Mutation.callContractMethod({ + address: input.resolverAddress, + method: "function setText(bytes32 node, string key, string value)", + args: [namehash(input.subdomain), input.key, input.value], + connection: input.connection, + txOverrides: { + gasLimit: txOverrides.gasLimit, + gasPrice: txOverrides.gasPrice, + value: null, + }, + }); + + return txHash; +} diff --git a/packages/apis/ens/src/mutation/schema.graphql b/packages/apis/ens/src/mutation/schema.graphql index 35944d9df8..51d7386744 100644 --- a/packages/apis/ens/src/mutation/schema.graphql +++ b/packages/apis/ens/src/mutation/schema.graphql @@ -119,4 +119,13 @@ type Mutation { connection: Ethereum_Connection txOverrides: TxOverrides ): Ethereum_TxResponse! + + setTextRecord( + subdomain: String! + resolverAddress: String! + key: String! + value: String! + connection: Ethereum_Connection + txOverrides: TxOverrides + ): Ethereum_TxResponse! } diff --git a/packages/apis/ens/src/query/index.ts b/packages/apis/ens/src/query/index.ts index a144c34408..3e926f1455 100644 --- a/packages/apis/ens/src/query/index.ts +++ b/packages/apis/ens/src/query/index.ts @@ -11,6 +11,7 @@ import { Input_getNameFromAddress, Input_getContentHashFromDomain, Input_getAddressFromDomain, + Input_getTextRecord, } from "./w3"; export function getResolver(input: Input_getResolver): string { @@ -157,3 +158,14 @@ export function getNameFromReverseResolver( return name; } + +export function getTextRecord(input: Input_getTextRecord): string { + const value = Ethereum_Query.callContractView({ + address: input.resolverAddress, + method: "function text(bytes32 node, string value) external view returns (string)", + args: [namehash(input.subdomain), input.key], + connection: input.connection, + }); + + return value; +} diff --git a/packages/apis/ens/src/query/schema.graphql b/packages/apis/ens/src/query/schema.graphql index 84e582c9ab..029a9169cb 100644 --- a/packages/apis/ens/src/query/schema.graphql +++ b/packages/apis/ens/src/query/schema.graphql @@ -62,4 +62,11 @@ type Query { registryAddress: String! connection: Ethereum_Connection ): String! + + getTextRecord( + subdomain: String! + resolverAddress: String! + key: String! + connection: Ethereum_Connection + ): String! } From bb89cf09c6e3653c5e5dea4f9a1dbc5c104ca1e6 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Wed, 18 Aug 2021 19:25:33 +0200 Subject: [PATCH 19/53] feat: tests overall improved and started open domain functionality --- packages/apis/ens/src/__tests__/e2e.spec.ts | 419 ++++++++++-------- packages/apis/ens/src/__tests__/utils.ts | 25 +- packages/apis/ens/src/mutation/index.ts | 82 +++- packages/apis/ens/src/mutation/schema.graphql | 34 +- packages/apis/ens/src/query/index.ts | 2 +- packages/apis/ens/src/query/schema.graphql | 2 +- 6 files changed, 352 insertions(+), 212 deletions(-) diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index 3651e8399e..fd40cacf8f 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -11,21 +11,26 @@ import { getPlugins } from "./utils"; jest.setTimeout(300000); -const AddressOne = "0x0000000000000000000000000000000000000001"; - describe("ENS Wrapper", () => { - let client: Web3ApiClient; + // We will have two clients because we need two + // different signers in order to test ENS functions + let ownerClient: Web3ApiClient; + let anotherOwnerClient: Web3ApiClient; + let ensUri: string; let ethersProvider: providers.JsonRpcProvider; let ensAddress: string; let registrarAddress: string; let resolverAddress: string; let reverseRegistryAddress: string; + let owner: string; + let anotherOwner: string; + + const customTld: string = "doe.eth"; + const openSubdomain: string = "open." + customTld; + const customSubdomain: string = "john." + customTld; - const domain: string = "doe.eth"; - const subdomain: string = "john." + domain; - const anotherSubdomain: string = "bob." + domain; const network: string = "testnet"; beforeAll(async () => { @@ -37,65 +42,53 @@ describe("ENS Wrapper", () => { ipfs, ethereum, } = await initTestEnvironment(); - // get client - const plugins = getPlugins(ethereum, ipfs, ensRegistryAddress); - client = new Web3ApiClient({ plugins }); // deploy api const apiPath: string = path.resolve(__dirname + "/../../"); const api = await buildAndDeployApi(apiPath, ipfs, ensRegistryAddress); ensUri = `ens/testnet/${api.ensDomain}`; + // set up ethers provider ethersProvider = providers.getDefaultProvider( "http://localhost:8546" ) as providers.JsonRpcProvider; - owner = await ethersProvider.getSigner().getAddress(); + owner = await ethersProvider.getSigner(0).getAddress(); + anotherOwner = await ethersProvider.getSigner(1).getAddress(); ensAddress = ensRegistryAddress; registrarAddress = ensRegistrarAddress; resolverAddress = ensResolverAddress; reverseRegistryAddress = ensReverseAddress; + + // get client + const plugins = getPlugins(ethereum, ipfs, ensRegistryAddress); + ownerClient = new Web3ApiClient({ plugins }); + + const anotherOwnerRedirects = getPlugins( + ethereum, + ipfs, + ensRegistryAddress, + anotherOwner + ); + anotherOwnerClient = new Web3ApiClient({ plugins: anotherOwnerRedirects }); }); afterAll(async () => { await stopTestEnvironment(); }); - it("should deploy FIFS Registrar", async () => { - const { - data: fifsDeploymentData, - errors: fifsDeploymentErrors, - } = await client.query({ - uri: ensUri, - query: ` - mutation { - deployFIFSRegistrar( - registryAddress: $registryAddress - tld: $tld - connection: { - networkNameOrChainId: $network - } - ) - } - `, - variables: { - registryAddress: ensAddress, - tld: "eth", - network, - }, - }); - - expect(fifsDeploymentData?.deployFIFSRegistrar).toBeDefined(); - expect(fifsDeploymentErrors).toBeUndefined(); - + it("should register domain", async () => { const variables = { - domain, + domain: customTld, owner, registryAddress: ensAddress, registrarAddress: registrarAddress, network, }; - const { data: registerData, errors: registerErrors } = await client.query<{ + const { + data: registerData, + errors: registerErrors, + } = await ownerClient.query<{ registerDomain: string; }>({ uri: ensUri, @@ -119,7 +112,7 @@ describe("ENS Wrapper", () => { it("should set and get resolver", async () => { const setResolverVariables = { - domain, + domain: customTld, owner, registry: ensAddress, resolver: resolverAddress, @@ -128,7 +121,7 @@ describe("ENS Wrapper", () => { const { data: setResolverData, errors: setResolverErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -150,7 +143,7 @@ describe("ENS Wrapper", () => { expect(setResolverErrors).toBeUndefined(); const getResolverVariables = { - domain, + domain: customTld, registry: ensAddress, network, }; @@ -158,7 +151,7 @@ describe("ENS Wrapper", () => { const { data: getResolverData, errors: getResolverErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -178,7 +171,8 @@ describe("ENS Wrapper", () => { expect(getResolverErrors).toBeUndefined(); }); - it("should set owner to subdomain and fetch it", async () => { + it("should set owner of subdomain and fetch it", async () => { + const subdomain = "bob." + customTld; const setSubdomainOwnerVariables = { subdomain, owner, @@ -189,7 +183,7 @@ describe("ENS Wrapper", () => { const { data: setSubdomainOwnerData, errors: setSubdomainErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -215,7 +209,10 @@ describe("ENS Wrapper", () => { network, }; - const { data: getOwnerData, errors: getOwnerErrors } = await client.query({ + const { + data: getOwnerData, + errors: getOwnerErrors, + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -237,19 +234,19 @@ describe("ENS Wrapper", () => { it("should set subdomain owner, resolver and ttl", async () => { const setSubdomainRecordVariables = { - domain, - owner, + domain: customTld, + owner: anotherOwner, registry: ensAddress, resolver: resolverAddress, ttl: "0", - label: "bob", + label: "john", network, }; const { data: setSubdomainRecordData, errors: setSubdomainRecordErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -273,12 +270,15 @@ describe("ENS Wrapper", () => { expect(setSubdomainRecordErrors).toBeUndefined(); const getOwnerVariables = { - domain: anotherSubdomain, + domain: customSubdomain, registry: ensAddress, network, }; - const { data: getOwnerData, errors: getOwnerErrors } = await client.query({ + const { + data: getOwnerData, + errors: getOwnerErrors, + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -293,23 +293,111 @@ describe("ENS Wrapper", () => { `, variables: getOwnerVariables, }); - expect(getOwnerData?.getOwner).toEqual(owner); + expect(getOwnerData?.getOwner).toEqual(anotherOwner); expect(getOwnerErrors).toBeUndefined(); }); + it("should update and fetch owner", async () => { + const getOldOwnerVariables = { + domain: customSubdomain, + registry: ensAddress, + network, + }; + + const { + data: getOldOwnerData, + errors: getOldOwnerErrors, + } = await anotherOwnerClient.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getOldOwnerVariables, + }); + + expect(getOldOwnerData?.getOwner).toEqual(anotherOwner); + expect(getOldOwnerErrors).toBeUndefined(); + + const setOwnerVariables = { + domain: customSubdomain, + newOwner: owner, + registry: ensAddress, + network, + }; + + const { + data: setOwnerData, + errors: setOwnerErrors, + } = await anotherOwnerClient.query({ + uri: ensUri, + query: ` + mutation { + setOwner( + domain: $domain + newOwner: $newOwner + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: setOwnerVariables, + }); + + expect(setOwnerData?.setOwner).toBeDefined(); + expect(setOwnerErrors).toBeUndefined(); + + const getNewOwnerVariables = { + domain: customSubdomain, + registry: ensAddress, + network, + }; + + const { + data: getNewOwnerData, + errors: getNewOwnerErrors, + } = await ownerClient.query({ + uri: ensUri, + query: ` + query { + getOwner( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getNewOwnerVariables, + }); + + expect(getNewOwnerData?.getOwner).toEqual(owner); + expect(getNewOwnerErrors).toBeUndefined(); + }); + it("should set content hash and fetch it", async () => { const cid = "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C".toLowerCase(); const setContentHashVariables = { - domain: subdomain, + domain: customSubdomain, cid, resolver: resolverAddress, - network: "testnet", + network, }; const { data: setContentHashData, errors: setContentHashErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -330,7 +418,7 @@ describe("ENS Wrapper", () => { expect(setContentHashErrors).toBeUndefined(); const getContentHashVariables = { - domain: subdomain, + domain: customSubdomain, resolver: resolverAddress, network, }; @@ -338,7 +426,7 @@ describe("ENS Wrapper", () => { const { data: getContentHashData, errors: getContentHashErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -357,32 +445,8 @@ describe("ENS Wrapper", () => { expect(getContentHashData?.getContentHash).toEqual(cid); expect(getContentHashErrors).toBeUndefined(); - await client.query({ - uri: ensUri, - query: ` - mutation { - setResolver( - domain: $domain - resolverAddress: $resolver - registryAddress: $registry - owner: $owner - connection: { - networkNameOrChainId: $network - } - ) - } - `, - variables: { - domain: subdomain, - resolver: resolverAddress, - registry: ensAddress, - owner, - network, - }, - }); - const getContentHashFromDomainVariables = { - domain: subdomain, + domain: customSubdomain, registry: ensAddress, network, }; @@ -390,7 +454,7 @@ describe("ENS Wrapper", () => { const { data: getContentHashFromDomainData, errors: getContentHashFromDomainErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -412,8 +476,8 @@ describe("ENS Wrapper", () => { it("should set address and fetch it", async () => { const setAddressVariables = { - domain: anotherSubdomain, - address: AddressOne, + domain: customTld, + address: anotherOwner, resolver: resolverAddress, network, }; @@ -421,7 +485,7 @@ describe("ENS Wrapper", () => { const { data: setAddressData, errors: setAddressErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -442,7 +506,7 @@ describe("ENS Wrapper", () => { expect(setAddressErrors).toBeUndefined(); const getAddressVariables = { - domain: anotherSubdomain, + domain: customTld, resolver: resolverAddress, network, }; @@ -450,7 +514,7 @@ describe("ENS Wrapper", () => { const { data: getAddressData, errors: getAddressErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -466,11 +530,11 @@ describe("ENS Wrapper", () => { variables: getAddressVariables, }); - expect(getAddressData?.getAddress).toEqual(AddressOne); + expect(getAddressData?.getAddress).toEqual(anotherOwner); expect(getAddressErrors).toBeUndefined(); const getAddressFromDomainVariables = { - domain: anotherSubdomain, + domain: customTld, registry: ensAddress, network, }; @@ -478,7 +542,7 @@ describe("ENS Wrapper", () => { const { data: getAddressFromDomainData, errors: getAddressFromDomainErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -494,13 +558,15 @@ describe("ENS Wrapper", () => { variables: getAddressFromDomainVariables, }); - expect(getAddressFromDomainData?.getAddressFromDomain).toEqual(AddressOne); + expect(getAddressFromDomainData?.getAddressFromDomain).toEqual( + anotherOwner + ); expect(getAddressFromDomainErrors).toBeUndefined(); }); it("should set reverse registry", async () => { const serReverseRegistryVariables = { - domain: subdomain, + domain: customTld, owner, reverseRegistry: reverseRegistryAddress, network, @@ -509,7 +575,7 @@ describe("ENS Wrapper", () => { const { data: reverseRegistryData, errors: reverseRegistryErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` mutation { @@ -540,7 +606,7 @@ describe("ENS Wrapper", () => { const { data: getNameFromAddressData, errors: getNameFromAddressErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -556,7 +622,7 @@ describe("ENS Wrapper", () => { variables: getNameFromAddressVariables, }); - expect(getNameFromAddressData?.getNameFromAddress).toEqual(subdomain); + expect(getNameFromAddressData?.getNameFromAddress).toEqual(customTld); expect(getNameFromAddressErrors).toBeUndefined(); const getNameFromReverseResolverVariables = { @@ -568,7 +634,7 @@ describe("ENS Wrapper", () => { const { data: getNameFromReverseResolverData, errors: getNameFromReverseResolverErrors, - } = await client.query({ + } = await ownerClient.query({ uri: ensUri, query: ` query { @@ -585,160 +651,143 @@ describe("ENS Wrapper", () => { }); expect(getNameFromReverseResolverData?.getNameFromReverseResolver).toEqual( - subdomain + customTld ); expect(getNameFromReverseResolverErrors).toBeUndefined(); }); - it("should update and fetch owner", async () => { - const getOldOwnerVariables = { - domain, - registry: ensAddress, - network, - }; - - const { - data: getOldOwnerData, - errors: getOldOwnerErrors, - } = await client.query({ - uri: ensUri, - query: ` - query { - getOwner( - domain: $domain - registryAddress: $registry - connection: { - networkNameOrChainId: $network - } - ) - } - `, - variables: getOldOwnerVariables, - }); - - expect(getOldOwnerData?.getOwner).toEqual(owner); - expect(getOldOwnerErrors).toBeUndefined(); + it("should set and get text record from subdomain", async () => { + const key = "snapshot"; + const value = "QmHash"; - const setOwnerVariables = { - domain, - newOwner: AddressOne, - registry: ensAddress, + const setTextRecordVariables = { + domain: customTld, + resolver: resolverAddress, + key, + value, network, }; - const { data: setOwnerData, errors: setOwnerErrors } = await client.query({ + const { + data: setTextRecordData, + errors: setTextRecordErrors, + } = await ownerClient.query({ uri: ensUri, query: ` mutation { - setOwner( + setTextRecord( domain: $domain - newOwner: $newOwner - registryAddress: $registry + resolverAddress: $resolver + key: $key + value: $value connection: { networkNameOrChainId: $network } ) } `, - variables: setOwnerVariables, + variables: setTextRecordVariables, }); - expect(setOwnerData?.setOwner).toBeDefined(); - expect(setOwnerErrors).toBeUndefined(); + expect(setTextRecordData?.setTextRecord).toBeDefined(); + expect(setTextRecordErrors).toBeUndefined(); - const getNewOwnerVariables = { - domain, - registry: ensAddress, + const getTextRecordVariables = { + domain: customTld, + resolver: resolverAddress, + key, network, }; const { - data: getNewOwnerData, - errors: getNewOwnerErrors, - } = await client.query({ + data: getTextRecordData, + errors: getTextRecordErrors, + } = await ownerClient.query({ uri: ensUri, query: ` query { - getOwner( + getTextRecord( domain: $domain - registryAddress: $registry + resolverAddress: $resolver + key: $key connection: { networkNameOrChainId: $network } ) } `, - variables: getNewOwnerVariables, + variables: getTextRecordVariables, }); - expect(getNewOwnerData?.getOwner).toEqual(AddressOne); - expect(getNewOwnerErrors).toBeUndefined(); + expect(getTextRecordData?.getTextRecord).toEqual(value); + expect(getTextRecordErrors).toBeUndefined(); }); - it("should set and get text record from subdomain", async () => { - const key = "snapshot"; - const value = "QmHash"; - - const setTextRecordVariables = { - subdomain, + it.skip("should configure open domain", async () => { + const configureOpenDomainVariables = { + registry: ensAddress, resolver: resolverAddress, - key, - value, + tld: openSubdomain, + owner, network, }; const { - data: setTextRecordData, - errors: setTextRecordErrors, - } = await client.query({ + data: configureOpenDomainData, + errors: configureOpenDomainErrors, + } = await ownerClient.query<{ + configureOpenDomain: { + fifsRegistrarAddress: string; + setOwnerTxReceipt: any; + }; + }>({ uri: ensUri, query: ` mutation { - setTextRecord( - subdomain: $subdomain + configureOpenDomain( + tld: $tld, + owner: $owner, + registryAddress: $registry resolverAddress: $resolver - key: $key - value: $value connection: { networkNameOrChainId: $network } ) } `, - variables: setTextRecordVariables, + variables: configureOpenDomainVariables, }); - expect(setTextRecordData?.setTextRecord).toBeDefined(); - expect(setTextRecordErrors).toBeUndefined(); - - const getTextRecordVariables = { - subdomain, - resolver: resolverAddress, - key, - network, - }; + console.log({ configureOpenDomainErrors }); + expect(configureOpenDomainData?.configureOpenDomain).toBeDefined(); + expect(configureOpenDomainErrors).toBeUndefined(); - const { - data: getTextRecordData, - errors: getTextRecordErrors, - } = await client.query({ + const { data: getOwnerData } = await ownerClient.query({ uri: ensUri, query: ` query { - getTextRecord( - subdomain: $subdomain - resolverAddress: $resolver - key: $key + getOwner( + domain: $tld, + registryAddress: $registry connection: { networkNameOrChainId: $network } ) } `, - variables: getTextRecordVariables, + variables: { + tld: openSubdomain, + registry: ensAddress, + network, + }, }); - expect(getTextRecordData?.getTextRecord).toEqual(value); - expect(getTextRecordErrors).toBeUndefined(); + expect(getOwnerData?.getOwner).toEqual( + configureOpenDomainData?.configureOpenDomain.fifsRegistrarAddress + ); }); + + // it("should create subdomain in open domain", async () => { + // const createSubdomainInOpenDomainVariables = {}; + // }); }); diff --git a/packages/apis/ens/src/__tests__/utils.ts b/packages/apis/ens/src/__tests__/utils.ts index 05932e435b..8304a6e534 100644 --- a/packages/apis/ens/src/__tests__/utils.ts +++ b/packages/apis/ens/src/__tests__/utils.ts @@ -2,32 +2,12 @@ import { PluginRegistration } from "@web3api/client-js"; import { ethereumPlugin } from "@web3api/ethereum-plugin-js"; import { ipfsPlugin } from "@web3api/ipfs-plugin-js"; import { ensPlugin } from "@web3api/ens-plugin-js"; -import axios from "axios"; - -interface TestEnvironment { - ipfs: string; - ethereum: string; - ensAddress: string; - plugins: PluginRegistration[]; -} - -export async function getProviders(): Promise { - const { - data: { ipfs, ethereum }, - } = await axios.get("http://localhost:4040/providers"); - const { data } = await axios.get("http://localhost:4040/deploy-ens"); - const plugins: PluginRegistration[] = getPlugins( - ethereum, - ipfs, - data.ensAddress - ); - return { ipfs, ethereum, ensAddress: data.ensAddress, plugins }; -} export function getPlugins( ethereum: string, ipfs: string, - ensAddress: string + ensAddress: string, + signer?: string ): PluginRegistration[] { return [ { @@ -36,6 +16,7 @@ export function getPlugins( networks: { testnet: { provider: ethereum, + signer, }, }, defaultNetwork: "testnet", diff --git a/packages/apis/ens/src/mutation/index.ts b/packages/apis/ens/src/mutation/index.ts index c51c2114fd..c58df2064a 100644 --- a/packages/apis/ens/src/mutation/index.ts +++ b/packages/apis/ens/src/mutation/index.ts @@ -18,7 +18,11 @@ import { Input_deployFIFSRegistrar, Input_registerSubnodeOwnerWithFIFSRegistrar, Input_setTextRecord, + Input_configureOpenDomain, + Input_createSubdomainInOpenDomain, Ethereum_TxResponse, + ConfigureOpenDomainResponse, + CreateSubdomainInOpenDomainResponse, TxOverrides, } from "./w3"; @@ -329,7 +333,6 @@ export function deployFIFSRegistrar(input: Input_deployFIFSRegistrar): string { return address; } -//TODO: needs testing here with a recipe. Was tested in the Web3Hub export function registerSubnodeOwnerWithFIFSRegistrar( input: Input_registerSubnodeOwnerWithFIFSRegistrar ): Ethereum_TxResponse { @@ -360,7 +363,7 @@ export function setTextRecord(input: Input_setTextRecord): Ethereum_TxResponse { const txHash = Ethereum_Mutation.callContractMethod({ address: input.resolverAddress, method: "function setText(bytes32 node, string key, string value)", - args: [namehash(input.subdomain), input.key, input.value], + args: [namehash(input.domain), input.key, input.value], connection: input.connection, txOverrides: { gasLimit: txOverrides.gasLimit, @@ -371,3 +374,78 @@ export function setTextRecord(input: Input_setTextRecord): Ethereum_TxResponse { return txHash; } + +export function configureOpenDomain( + input: Input_configureOpenDomain +): ConfigureOpenDomainResponse { + const txOverrides: TxOverrides = + input.txOverrides === null + ? { gasLimit: null, gasPrice: null } + : input.txOverrides!; + + const fifsRegistrarAddress = deployFIFSRegistrar({ + registryAddress: input.registryAddress, + tld: input.tld, + connection: input.connection, + txOverrides, + }); + + const registerOpenDomainTxReceipt = registerDomain({ + registrarAddress: fifsRegistrarAddress, + registryAddress: input.registryAddress, + domain: input.tld, + owner: input.owner, + connection: input.connection, + txOverrides, + }); + + const setResolverTxReceipt = setResolver({ + domain: input.tld, + resolverAddress: input.resolverAddress, + registryAddress: input.registryAddress, + connection: input.connection, + txOverrides, + }); + + const setOwnerTxReceipt = setOwner({ + domain: input.tld, + newOwner: fifsRegistrarAddress, + registryAddress: input.registryAddress, + connection: input.connection, + txOverrides, + }); + + return { + fifsRegistrarAddress, + registerOpenDomainTxReceipt, + setResolverTxReceipt, + setOwnerTxReceipt, + }; +} + +export function createSubdomainInOpenDomain( + input: Input_createSubdomainInOpenDomain +): CreateSubdomainInOpenDomainResponse { + const txOverrides: TxOverrides = + input.txOverrides === null + ? { gasLimit: null, gasPrice: null } + : input.txOverrides!; + + const registerSubdomainTxReceipt = registerSubnodeOwnerWithFIFSRegistrar({ + label: input.label, + owner: input.owner, + fifsRegistrarAddress: input.fifsRegistrarAddress, + connection: input.connection, + txOverrides, + }); + + const setResolverTxReceipt = setResolver({ + domain: input.label + input.domain, + registryAddress: input.registryAddress, + resolverAddress: input.resolverAddress, + connection: input.connection, + txOverrides, + }); + + return { setResolverTxReceipt, registerSubdomainTxReceipt }; +} diff --git a/packages/apis/ens/src/mutation/schema.graphql b/packages/apis/ens/src/mutation/schema.graphql index 51d7386744..a88fc896a1 100644 --- a/packages/apis/ens/src/mutation/schema.graphql +++ b/packages/apis/ens/src/mutation/schema.graphql @@ -3,6 +3,18 @@ #import { Query } into SHA3 from "w3://ens/sha3.web3api.eth" #import { TxOverrides } from "../common/schema.graphql" +type ConfigureOpenDomainResponse { + fifsRegistrarAddress: String! + registerOpenDomainTxReceipt: Ethereum_TxResponse! + setResolverTxReceipt: Ethereum_TxResponse! + setOwnerTxReceipt: Ethereum_TxResponse! +} + +type CreateSubdomainInOpenDomainResponse { + registerSubdomainTxReceipt: Ethereum_TxResponse! + setResolverTxReceipt: Ethereum_TxResponse! +} + type Mutation { setResolver( domain: String! @@ -121,11 +133,31 @@ type Mutation { ): Ethereum_TxResponse! setTextRecord( - subdomain: String! + domain: String! resolverAddress: String! key: String! value: String! connection: Ethereum_Connection txOverrides: TxOverrides ): Ethereum_TxResponse! + + configureOpenDomain( + tld: String! + owner: String! + registryAddress: String! + resolverAddress: String! + connection: Ethereum_Connection + txOverrides: TxOverrides + ): ConfigureOpenDomainResponse! + + createSubdomainInOpenDomain( + label: String! + domain: String! + owner: String! + fifsRegistrarAddress: String! + registryAddress: String! + resolverAddress: String! + connection: Ethereum_Connection + txOverrides: TxOverrides + ): CreateSubdomainInOpenDomainResponse! } diff --git a/packages/apis/ens/src/query/index.ts b/packages/apis/ens/src/query/index.ts index 3e926f1455..e70cb89b38 100644 --- a/packages/apis/ens/src/query/index.ts +++ b/packages/apis/ens/src/query/index.ts @@ -163,7 +163,7 @@ export function getTextRecord(input: Input_getTextRecord): string { const value = Ethereum_Query.callContractView({ address: input.resolverAddress, method: "function text(bytes32 node, string value) external view returns (string)", - args: [namehash(input.subdomain), input.key], + args: [namehash(input.domain), input.key], connection: input.connection, }); diff --git a/packages/apis/ens/src/query/schema.graphql b/packages/apis/ens/src/query/schema.graphql index 029a9169cb..77e4ffebd0 100644 --- a/packages/apis/ens/src/query/schema.graphql +++ b/packages/apis/ens/src/query/schema.graphql @@ -64,7 +64,7 @@ type Query { ): String! getTextRecord( - subdomain: String! + domain: String! resolverAddress: String! key: String! connection: Ethereum_Connection From f31e70f6d9aedecb00cc84d6ec0dec279bdcb7a4 Mon Sep 17 00:00:00 2001 From: namesty Date: Thu, 19 Aug 2021 05:44:09 +0200 Subject: [PATCH 20/53] Added API test cases for JSON type (wasm-as npm package needs changing) --- CHANGELOG.md | 228 ++++-- packages/apis/console/package.json | 2 +- .../cli/src/__tests__/project/package.json | 2 +- .../src/__tests__/Web3ApiClient.spec.ts | 38 +- .../src/__tests__/integration/package.json | 2 +- .../__tests__/integration/src/query/index.ts | 64 +- .../bind/src/bindings/wasm-as/functions.ts | 2 +- .../wasm-as/templates/entry-ts.mustache | 2 +- .../imported/object-type/index-ts.mustache | 5 +- .../object-type/serialization-ts.mustache | 5 +- .../imported/query-type/index-ts.mustache | 5 +- .../query-type/serialization-ts.mustache | 5 +- .../templates/object-type/index-ts.mustache | 5 +- .../object-type/serialization-ts.mustache | 5 +- .../query-type/serialization-ts.mustache | 5 +- .../templates/api/assemblyscript/package.json | 2 +- .../cases/apis/bigint-type/package.json | 4 +- .../cases/apis/bigint-type/query/index.ts | 6 +- .../cases/apis/bytes-type/package.json | 4 +- .../cases/apis/enum-types/package.json | 4 +- .../implementations/test-api/package.json | 4 +- .../cases/apis/invalid-types/package.json | 4 +- .../cases/apis/json-type/package.json | 4 +- .../cases/apis/json-type/query/index.ts | 30 +- .../cases/apis/json-type/query/schema.graphql | 2 - .../cases/apis/large-types/package.json | 4 +- .../cases/apis/number-types/package.json | 4 +- .../cases/apis/object-types/package.json | 4 +- .../cases/apis/simple-storage/package.json | 4 +- .../mutation/Mutation/serialization.ts | 245 ++++-- .../sanity/output/wasm-as/mutation/entry.ts | 18 +- .../output/wasm-as/query/AnotherType/index.ts | 9 +- .../query/AnotherType/serialization.ts | 30 +- .../output/wasm-as/query/CustomType/index.ts | 9 +- .../wasm-as/query/CustomType/serialization.ts | 750 ++++++++++++------ .../wasm-as/query/Query/serialization.ts | 243 ++++-- .../bind/sanity/output/wasm-as/query/entry.ts | 18 +- .../TestImport_AnotherObject/index.ts | 10 +- .../TestImport_AnotherObject/serialization.ts | 41 +- .../query/imported/TestImport_Object/index.ts | 10 +- .../TestImport_Object/serialization.ts | 314 +++++--- .../query/imported/TestImport_Query/index.ts | 13 +- .../TestImport_Query/serialization.ts | 157 +++- packages/wasm/as/assembly/JSON.ts | 2 +- packages/wasm/as/package.json | 6 +- yarn.lock | 25 +- 46 files changed, 1503 insertions(+), 852 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c47850b84b..dde3655798 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,185 +1,251 @@ # Web3API 0.0.1-prealpha.30 + ## Bugs -* `@web3api/ethereum-plugin-js`: Fix ethers.js inconsistencies. + +- `@web3api/ethereum-plugin-js`: Fix ethers.js inconsistencies. # Web3API 0.0.1-prealpha.29 + ## Feature -* Web3API Interfaces are now fully supported in the tool-chain. -* GraphQL schema comments are now retained, and will show up in the build folder. -* `@web3api/parse`: Reference types definitions are now differentiated from the root definitions the reference. + +- Web3API Interfaces are now fully supported in the tool-chain. +- GraphQL schema comments are now retained, and will show up in the build folder. +- `@web3api/parse`: Reference types definitions are now differentiated from the root definitions the reference. ## Bugs -* `@web3api/cli`: Fix MacOS specific issue w/ PATH not being retained. -* The `config` property in `web3api.build.yaml` is now optional. + +- `@web3api/cli`: Fix MacOS specific issue w/ PATH not being retained. +- The `config` property in `web3api.build.yaml` is now optional. # Web3API 0.0.1-prealpha.28 + ## Bugs -* Fixed API template project + +- Fixed API template project # Web3API 0.0.1-prealpha.27 + ## Bugs -* Fixed API template project + +- Fixed API template project # Web3API 0.0.1-prealpha.26 + ## Feature -* `@web3api/uniswapV2-api`: Completed the Uniswap V2 Web3API implementation. -* `@web3api/ethereum-plugin-js`: Upgraded the Ethereum plugin, added lots of new functionality. -* `@web3api/cli`: Implemented a "reproducible build pipeline", where Web3APIs are now built in an isolated docker container. These builds can be fully configurable by developers. This also paves the way for implementing Web3APIs in any Wasm compatible language. Rust support on the way! -* `@web3api/react`: Added the ability to set query `variables` within the `execute` function returned by the `useWeb3ApiQuery` hook. -* `@web3api/sha3-plugin-js`: A SHA3 plugin has been implemented, and added to the client as a "default plugin". -* `@web3api/uts46-plugin-js`: A UTS46 plugin has been implemented, and added to the client as a "default plugin". -* CI: Windows CI has been implemented using appveyor. + +- `@web3api/uniswapV2-api`: Completed the Uniswap V2 Web3API implementation. +- `@web3api/ethereum-plugin-js`: Upgraded the Ethereum plugin, added lots of new functionality. +- `@web3api/cli`: Implemented a "reproducible build pipeline", where Web3APIs are now built in an isolated docker container. These builds can be fully configurable by developers. This also paves the way for implementing Web3APIs in any Wasm compatible language. Rust support on the way! +- `@web3api/react`: Added the ability to set query `variables` within the `execute` function returned by the `useWeb3ApiQuery` hook. +- `@web3api/sha3-plugin-js`: A SHA3 plugin has been implemented, and added to the client as a "default plugin". +- `@web3api/uts46-plugin-js`: A UTS46 plugin has been implemented, and added to the client as a "default plugin". +- CI: Windows CI has been implemented using appveyor. ## Bugs -* `@web3api/client-js`: Fixed threading issue causing the "unknown wake status" error. -* Fixed Windows specific errors. + +- `@web3api/client-js`: Fixed threading issue causing the "unknown wake status" error. +- Fixed Windows specific errors. # Web3API 0.0.1-prealpha.25 + ## Feature -* `@web3api/client-js`: Added the `WEB3API_THREAD_PATH` env variable, allowing integrators to customize where the `thread.js` worker thread module is imported from. -* `@web3api/wasm-as`: Improved error logging w/ better error messages and a "context stack" showing exactly what properties of the MsgPack blob the serialization / deserialization is failing at. + +- `@web3api/client-js`: Added the `WEB3API_THREAD_PATH` env variable, allowing integrators to customize where the `thread.js` worker thread module is imported from. +- `@namestys/wasm-as`: Improved error logging w/ better error messages and a "context stack" showing exactly what properties of the MsgPack blob the serialization / deserialization is failing at. # Web3API 0.0.1-prealpha.24 + ## Bugs -* `@web3api/wasm-as`: Moved `as-bigint` from `devDependencies` to `dependencies`. Fixes [issue #347](https://github.com/Web3-API/monorepo/issues/347) + +- `@namestys/wasm-as`: Moved `as-bigint` from `devDependencies` to `dependencies`. Fixes [issue #347](https://github.com/Web3-API/monorepo/issues/347) # Web3API 0.0.1-prealpha.23 + ## Feature -* `@web3api/os-js`: This package contains OS agnostic code for doing things like writing files w/ consistent line endings. -* Windows Support: The toolchain now builds and runs properly on the Windows operating system. -* `BigInt` Schema Type: The `BigInt` type is now available for use as a base type for Web3API GraphQL schemas. -* `@web3api/react`: The `useWeb3ApiClient` hook was added, allowing users to easily get a reference to the Web3ApiClient used by the Web3ApiProvider. + +- `@web3api/os-js`: This package contains OS agnostic code for doing things like writing files w/ consistent line endings. +- Windows Support: The toolchain now builds and runs properly on the Windows operating system. +- `BigInt` Schema Type: The `BigInt` type is now available for use as a base type for Web3API GraphQL schemas. +- `@web3api/react`: The `useWeb3ApiClient` hook was added, allowing users to easily get a reference to the Web3ApiClient used by the Web3ApiProvider. # Web3API 0.0.1-prealpha.22 + ## Feature -* `@web3api/tracing-js`: The `tracing-js` package uses the [OpenTelemetry Standard](https://opentelemetry.io/) for logging trace events. This enables things like: - * Benchmark Timings - * Input Argument + Output Result Logging - * In-Depth Exception Tracing -* `@web3api/core-js`: All functions are now traceable. -* `@web3api/client-js`: All functions are now traceable. + +- `@web3api/tracing-js`: The `tracing-js` package uses the [OpenTelemetry Standard](https://opentelemetry.io/) for logging trace events. This enables things like: + - Benchmark Timings + - Input Argument + Output Result Logging + - In-Depth Exception Tracing +- `@web3api/core-js`: All functions are now traceable. +- `@web3api/client-js`: All functions are now traceable. # Web3API 0.0.1-prealpha.21 + ## Feature -* Sharing code & types between `query` and `mutation` modules is now possible. + +- Sharing code & types between `query` and `mutation` modules is now possible. ## Bugs -* Common types found in both `query` and `mutation` schemas are properly consolidated. If types have the same name, but a different structure, and error is thrown. + +- Common types found in both `query` and `mutation` schemas are properly consolidated. If types have the same name, but a different structure, and error is thrown. # Web3API 0.0.1-prealpha.20 + ## Bugs -* Fix the `w3 create app react ...` template project's styling to be responsive. + +- Fix the `w3 create app react ...` template project's styling to be responsive. # Web3API 0.0.1-prealpha.19 + ## Features -* `@web3api/ipfs-plugin-js`: Added options for request timeouts, provider overrides, and fallback providers. Additionally a new method has been added, `resolve`, which allows the caller to try and resolve a given IFPS CID to ensure the document exists. + +- `@web3api/ipfs-plugin-js`: Added options for request timeouts, provider overrides, and fallback providers. Additionally a new method has been added, `resolve`, which allows the caller to try and resolve a given IFPS CID to ensure the document exists. # Web3API 0.0.1-prealpha.18 + ## Features -* Updated the `app/react` template project to use the latest "Hello World" Web3API published at `ens/helloworld.web3api.eth`. + +- Updated the `app/react` template project to use the latest "Hello World" Web3API published at `ens/helloworld.web3api.eth`. # Web3API 0.0.1-prealpha.17 + ## Bugs -* `@web3api/ethereum-plugin-js`: Network configurations must be nested within a property in order to allow for the `defaultNetwork` property to be set w/o causing a typing error (for not being of the `ConnectionConfig` type). + +- `@web3api/ethereum-plugin-js`: Network configurations must be nested within a property in order to allow for the `defaultNetwork` property to be set w/o causing a typing error (for not being of the `ConnectionConfig` type). # Web3API 0.0.1-prealpha.16 + ## Bugs -* `@web3api/test-env`: Expose the IPFS node's swarm port (4001). + +- `@web3api/test-env`: Expose the IPFS node's swarm port (4001). # Web3API 0.0.1-prealpha.15 + ## Bugs -* Fix `extractPluginConfigs.ts` output. + +- Fix `extractPluginConfigs.ts` output. # Web3API 0.0.1-prealpha.14 + ## Features -* Network Specific ENS Lookup - * `@web3api/ethereum-plugin-js`: The EthereumPlugin can now be constructed with multiple network connections (mainnet, rinkeby, testnet, etc). - * All Query & Mutation methods now accept an optional `connection` property which can be used to configure a specific network to be used for the action. - * `@web3api/ens-plugin-js`: The EnsPlugin can now handle URIs that address specific networks. For example: `w3://ens/testnet/myweb3api.eth`. It will request the `testnet` connection to be used when querying the Ethereum Web3API. + +- Network Specific ENS Lookup + - `@web3api/ethereum-plugin-js`: The EthereumPlugin can now be constructed with multiple network connections (mainnet, rinkeby, testnet, etc). + - All Query & Mutation methods now accept an optional `connection` property which can be used to configure a specific network to be used for the action. + - `@web3api/ens-plugin-js`: The EnsPlugin can now handle URIs that address specific networks. For example: `w3://ens/testnet/myweb3api.eth`. It will request the `testnet` connection to be used when querying the Ethereum Web3API. # Web3API 0.0.1-prealpha.13 + ## Features -* Improved template projects that are used with the `w3 create ...` CLI command. + +- Improved template projects that are used with the `w3 create ...` CLI command. # Web3API 0.0.1-prealpha.12 + ## Bug Fixes -* Added schemas to plugin manifest modules, removing the need for `import_redirects`. -* Fixed the IpfsPlugin's `addFile` method. -* Improved the api/assemblyscript template project. + +- Added schemas to plugin manifest modules, removing the need for `import_redirects`. +- Fixed the IpfsPlugin's `addFile` method. +- Improved the api/assemblyscript template project. # Web3API 0.0.1-prealpha.11 + ## Bug Fixes -* `@web3api/cli`: Include the internationalization JSON files in the published package. + +- `@web3api/cli`: Include the internationalization JSON files in the published package. # Web3API 0.0.1-prealpha.10 + ## Bug Fixes -* `@web3api/ens-plugin-js`: Fix the schema. + +- `@web3api/ens-plugin-js`: Fix the schema. # Web3API 0.0.1-prealpha.9 + ## Features -* `@web3api/cli`: CLI Internalized Text Support - * Currently English is implemented, and Spanish support is slated to be added next. -* `@web3api/schema-parse`: GraphQL Infinite Cycle Detection - * Bad object relationships within the Web3API's GraphQL schema are now automatically detected, ensuring developers never create objects that can never be instantiated properly. -* `@web3api/templates`: Auto-Generate Smart Contract ABI & Bytecode Assemblyscript Module - * This auto-generated module is being used within the `deployContract` mutation. + +- `@web3api/cli`: CLI Internalized Text Support + - Currently English is implemented, and Spanish support is slated to be added next. +- `@web3api/schema-parse`: GraphQL Infinite Cycle Detection + - Bad object relationships within the Web3API's GraphQL schema are now automatically detected, ensuring developers never create objects that can never be instantiated properly. +- `@web3api/templates`: Auto-Generate Smart Contract ABI & Bytecode Assemblyscript Module + - This auto-generated module is being used within the `deployContract` mutation. ## Bug Fixes -* `@web3api/core-js`: The `resolve-uri` core algorithm had an "off by one" iteration bug, where it never retried the first `api-resolver` in the implementations array. -* `@web3api/ethereum-plugin-js`: When using a provider that lacks signing capabilities (ex: Infura RPC endpoint), the `getContract` function was trying to get a signer when one did not exist. -* `@web3api/ipfs-plugin-js`: Fixed this plugin's schema, as it was using unsupported syntax. + +- `@web3api/core-js`: The `resolve-uri` core algorithm had an "off by one" iteration bug, where it never retried the first `api-resolver` in the implementations array. +- `@web3api/ethereum-plugin-js`: When using a provider that lacks signing capabilities (ex: Infura RPC endpoint), the `getContract` function was trying to get a signer when one did not exist. +- `@web3api/ipfs-plugin-js`: Fixed this plugin's schema, as it was using unsupported syntax. ## Misc -* Upgrade node version to v14.16.0. -* Upgrade TypeScript version to v4.0.7. + +- Upgrade node version to v14.16.0. +- Upgrade TypeScript version to v4.0.7. # Web3API 0.0.1-prealpha.8 + ## Bug Fixes -* Fixed bug in `@web3api/react` package. + +- Fixed bug in `@web3api/react` package. ## Misc -* Removed documentation & demos from the monorepo. + +- Removed documentation & demos from the monorepo. # Web3API 0.0.1-prealpha.7 + ## Features -* Console Log Web3API - * Calls log on logger plugin at uri w3://w3/logger. Default logger logs to console, but can be overridden with redirect to custom logger web3api implementation. - * Log levels: Debug, Info, Warn, Error -* `createWeb3ApiClient(...)` helper for easily setting up a Web3API Client with all needed plugins (ex: ethereum, ipfs, etc) in one function call. - * Additional support for plugins can be added in the future, without bloating the `@web3api/client-js` package thanks to dynamic imports! -* When using the Web3ApiClient, specify Web3API URIs without having to create a new URI class (`new Uri("...")`). Simply provide a string instead. -* Improved plugin instantiation interface. + +- Console Log Web3API + - Calls log on logger plugin at uri w3://w3/logger. Default logger logs to console, but can be overridden with redirect to custom logger web3api implementation. + - Log levels: Debug, Info, Warn, Error +- `createWeb3ApiClient(...)` helper for easily setting up a Web3API Client with all needed plugins (ex: ethereum, ipfs, etc) in one function call. + - Additional support for plugins can be added in the future, without bloating the `@web3api/client-js` package thanks to dynamic imports! +- When using the Web3ApiClient, specify Web3API URIs without having to create a new URI class (`new Uri("...")`). Simply provide a string instead. +- Improved plugin instantiation interface. ## Bug Fixes -* Proper MsgPack numeric overflow assertions (closes: [#150](https://github.com/Web3-API/monorepo/issues/150)) -* Proper usage of [GraphQL Aliases](https://graphql.org/learn/queries/#aliases) when invoking multiple methods in one query. + +- Proper MsgPack numeric overflow assertions (closes: [#150](https://github.com/Web3-API/monorepo/issues/150)) +- Proper usage of [GraphQL Aliases](https://graphql.org/learn/queries/#aliases) when invoking multiple methods in one query. # Web3API 0.0.1-prealpha.6 + ## Features -* Web3API React Integration: `@web3api/react` - * Add the `Web3ApiProvider` HOC to the root of your application. - * Use the `useWeb3ApiQuery` hook to execute queries. -* Web3API CLI e2e tests. -* `@web3api/test-env-js` package for common testing logic. -* `@web3api/test-cases` for common test cases. + +- Web3API React Integration: `@web3api/react` + - Add the `Web3ApiProvider` HOC to the root of your application. + - Use the `useWeb3ApiQuery` hook to execute queries. +- Web3API CLI e2e tests. +- `@web3api/test-env-js` package for common testing logic. +- `@web3api/test-cases` for common test cases. ## Bug Fixes -* Remove unused `workerize-loader` package & logic. + +- Remove unused `workerize-loader` package & logic. # Web3API 0.0.1-prealpha.5 + ## Features -* `w3 build --watch` support, enabling the automatic rebuilding of Web3APIs whenever project files have changed. + +- `w3 build --watch` support, enabling the automatic rebuilding of Web3APIs whenever project files have changed. # Web3API 0.0.1-prealpha.4 + ## Features -* Enum Support + +- Enum Support ## Bug Fixes -* `w3 create ...` CLI Fix (closes: [#167](https://github.com/Web3-API/monorepo/issues/167)) + +- `w3 create ...` CLI Fix (closes: [#167](https://github.com/Web3-API/monorepo/issues/167)) # Web3API 0.0.1-prealpha.2 + ## Bug Fixes -* Fix typescript plugin template's package.json + +- Fix typescript plugin template's package.json # Web3API 0.0.1-prealpha.1 + Pre-Alpha Initial Release diff --git a/packages/apis/console/package.json b/packages/apis/console/package.json index 2077efb8db..eaf3bf509a 100644 --- a/packages/apis/console/package.json +++ b/packages/apis/console/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@web3api/cli": "0.0.1-prealpha.30", - "@web3api/wasm-as": "0.0.1-prealpha.30", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1", "js-yaml": "3.14.0" } diff --git a/packages/cli/src/__tests__/project/package.json b/packages/cli/src/__tests__/project/package.json index 54c5978dcc..e4a977d5bb 100644 --- a/packages/cli/src/__tests__/project/package.json +++ b/packages/cli/src/__tests__/project/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@web3api/ethereum-plugin-js": "0.0.1-prealpha.30", - "@web3api/wasm-as": "0.0.1-prealpha.30", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1", "ethers": "5.0.7", "js-yaml": "3.14.0" diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 35bf664926..601c827585 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -8,7 +8,6 @@ import { GetPathToTestApis } from "@web3api/test-cases"; import { Web3ApiClient } from "../Web3ApiClient"; import { getDefaultClientConfig } from "../default-client-config"; import { coreInterfaceUris } from "@web3api/core-js"; -import { JSON as ASJSON } from "@web3api/wasm-as"; jest.setTimeout(200000); @@ -845,28 +844,19 @@ describe("Web3ApiClient", () => { const client = await getClient(); const parseResponse = await client.query<{ - parse: string; + parse: any; }>({ uri: ensUri, query: `query { - parse(value: '{ "foo": "bar", "bar": "baz" }') - }`, - }); - - const parseResult = ASJSON.parse(`{ "foo": "bar", "bar": "baz" }`); - expect(parseResponse.parse).toEqual(parseResult); - - const stringifyResponse = await client.query<{ - stringify: string; - }>({ - uri: ensUri, - query: `query { - stringify(value: ${ASJSON.parse('{ "foo": "bar", "bar": "baz" }')}) + parse(value: $value) }`, + variables: { + value: `{ "foo": "bar", "bar": "baz" }`, + }, }); - const stringifyResult = `{ "foo": "bar", "bar": "baz" }`; - expect(stringifyResponse.stringify).toEqual(stringifyResult); + const parseResult = JSON.stringify({ foo: "bar", bar: "baz" }); + expect(parseResponse.data?.parse).toEqual(parseResult); const methodStringResponse = await client.query<{ methodString: string; @@ -877,8 +867,8 @@ describe("Web3ApiClient", () => { }`, }); - const methodStringResult = `{ "valueA": 5, "valueB": "foo", "valueC": true }`; - expect(methodStringResponse.methodString).toEqual(methodStringResult); + const methodStringResult = `{"valueA":5,"valueB":"foo","valueC":true}`; + expect(methodStringResponse.data?.methodString).toEqual(methodStringResult); const methodJSONResponse = await client.query<{ methodJSON: string; @@ -889,10 +879,12 @@ describe("Web3ApiClient", () => { }`, }); - const methodJSONResult = ASJSON.parse( - `{ "valueA": 5, "valueB": "foo", "valueC": true }` - ); - expect(methodJSONResponse.methodJSON).toEqual(methodJSONResult); + const methodJSONResult = JSON.stringify({ + valueA: 5, + valueB: "foo", + valueC: true, + }); + expect(methodJSONResponse.data?.methodJSON).toEqual(methodJSONResult); }); it("bytes-type", async () => { diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/package.json b/packages/js/plugins/ethereum/src/__tests__/integration/package.json index fb4299891c..80ccb49262 100644 --- a/packages/js/plugins/ethereum/src/__tests__/integration/package.json +++ b/packages/js/plugins/ethereum/src/__tests__/integration/package.json @@ -13,6 +13,6 @@ }, "devDependencies": { "@web3api/cli": "0.0.1-prealpha.30", - "@web3api/wasm-as": "0.0.1-prealpha.30" + "@namestys/wasm-as": "0.0.1-prealpha.61" } } diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts b/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts index feb5b235c7..d2a99c5b73 100644 --- a/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts +++ b/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts @@ -16,18 +16,16 @@ import { Input_toWei, Input_toEth, Input_awaitTransaction, - Input_waitForEvent + Input_waitForEvent, } from "./w3"; -import { BigInt } from "@web3api/wasm-as"; +import { BigInt } from "@namestys/wasm-as"; -export function callContractView( - input: Input_callContractView -): string { +export function callContractView(input: Input_callContractView): string { return Ethereum_Query.callContractView({ address: input.address, method: input.method, args: input.args, - connection: input.connection + connection: input.connection, }); } @@ -39,33 +37,27 @@ export function callContractStatic( method: input.method, args: input.args, connection: input.connection, - txOverrides: input.txOverrides + txOverrides: input.txOverrides, }); } -export function encodeParams( - input: Input_encodeParams -): string { +export function encodeParams(input: Input_encodeParams): string { return Ethereum_Query.encodeParams({ types: input.types, - values: input.values + values: input.values, }); } -export function getSignerAddress( - input: Input_getSignerAddress -): string { +export function getSignerAddress(input: Input_getSignerAddress): string { return Ethereum_Query.getSignerAddress({ - connection: input.connection + connection: input.connection, }); } -export function getSignerBalance( - input: Input_getSignerBalance -): BigInt { +export function getSignerBalance(input: Input_getSignerBalance): BigInt { return Ethereum_Query.getSignerBalance({ blockTag: input.blockTag, - connection: input.connection + connection: input.connection, }); } @@ -74,15 +66,13 @@ export function getSignerTransactionCount( ): BigInt { return Ethereum_Query.getSignerTransactionCount({ blockTag: input.blockTag, - connection: input.connection + connection: input.connection, }); } -export function getGasPrice( - input: Input_getGasPrice -): BigInt { +export function getGasPrice(input: Input_getGasPrice): BigInt { return Ethereum_Query.getGasPrice({ - connection: input.connection + connection: input.connection, }); } @@ -91,7 +81,7 @@ export function estimateTransactionGas( ): BigInt { return Ethereum_Query.estimateTransactionGas({ tx: input.tx, - connection: input.connection + connection: input.connection, }); } @@ -103,31 +93,25 @@ export function estimateContractCallGas( method: input.method, args: input.args, connection: input.connection, - txOverrides: input.txOverrides + txOverrides: input.txOverrides, }); } -export function checkAddress( - input: Input_checkAddress -): bool { +export function checkAddress(input: Input_checkAddress): bool { return Ethereum_Query.checkAddress({ - address: input.address + address: input.address, }); } -export function toWei( - input: Input_toWei -): BigInt { +export function toWei(input: Input_toWei): BigInt { return Ethereum_Query.toWei({ - eth: input.eth + eth: input.eth, }); } -export function toEth( - input: Input_toEth -): String { +export function toEth(input: Input_toEth): String { return Ethereum_Query.toEth({ - wei: input.wei + wei: input.wei, }); } @@ -138,7 +122,7 @@ export function awaitTransaction( txHash: input.txHash, confirmations: input.confirmations, timeout: input.timeout, - connection: input.connection + connection: input.connection, }); } @@ -150,6 +134,6 @@ export function waitForEvent( event: input.event, args: input.args, timeout: input.timeout, - connection: input.connection + connection: input.connection, }); } diff --git a/packages/schema/bind/src/bindings/wasm-as/functions.ts b/packages/schema/bind/src/bindings/wasm-as/functions.ts index 93006dd030..0e5113a46d 100644 --- a/packages/schema/bind/src/bindings/wasm-as/functions.ts +++ b/packages/schema/bind/src/bindings/wasm-as/functions.ts @@ -136,7 +136,7 @@ export const toWasm: MustacheFunction = () => { type = "BigInt"; break; case "JSON": - type = "JSON"; + type = "JSON.Obj"; break; default: if (type.includes("Enum_")) { diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/entry-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/entry-ts.mustache index 9a9daa5c24..6dd20083e8 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/entry-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/entry-ts.mustache @@ -2,7 +2,7 @@ import { w3_add_invoke, w3_invoke, w3_abort -} from "@web3api/wasm-as"; +} from "@namestys/wasm-as"; {{#queryTypes}} {{#methods.length}} import { diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/index-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/index-ts.mustache index cf1bf3aac4..1a93d2afa8 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/index-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/index-ts.mustache @@ -6,8 +6,9 @@ import { Read, Write, Nullable, - BigInt -} from "@web3api/wasm-as"; + BigInt, + JSON +} from "@namestys/wasm-as" import { serialize{{type}}, deserialize{{type}}, diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache index c51d687f60..bc60d12873 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache @@ -7,8 +7,9 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, + JSON +} from "@namestys/wasm-as"; import { {{type}} } from "./"; import * as Types from "../.."; diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/index-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/index-ts.mustache index f10c3d10fc..0d2379752e 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/index-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/index-ts.mustache @@ -5,8 +5,9 @@ export { {{type}} } from "../../common"; import { w3_subinvoke, Nullable, - BigInt -} from "@web3api/wasm-as"; + BigInt, + JSON +} from "@namestys/wasm-as"; {{#methods.length}} import { {{#methods}} diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache index 703fb3f717..b9691317b6 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache @@ -7,8 +7,9 @@ import { WriteEncoder, ReadDecoder, BigInt, - Context -} from "@web3api/wasm-as"; + Context, + JSON +} from "@namestys/wasm-as"; import * as Types from "../.."; {{#methods}} diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/index-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/index-ts.mustache index 0f4401a694..6203161617 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/index-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/index-ts.mustache @@ -6,8 +6,9 @@ import { Read, Write, Nullable, - BigInt -} from "@web3api/wasm-as"; + BigInt, + JSON +} from "@namestys/wasm-as"; import { serialize{{type}}, deserialize{{type}}, diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache index 3bd41e1aaf..4f1a069694 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache @@ -7,8 +7,9 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, + JSON +} from "@namestys/wasm-as"; import { {{type}} } from "./"; import * as Types from ".."; diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache index 069bb8e95f..5e0cb56e34 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache @@ -6,8 +6,9 @@ import { Write, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, + JSON +} from "@namestys/wasm-as"; import * as Types from ".."; {{#methods}} diff --git a/packages/templates/api/assemblyscript/package.json b/packages/templates/api/assemblyscript/package.json index 7ecc7128a0..190973ceeb 100644 --- a/packages/templates/api/assemblyscript/package.json +++ b/packages/templates/api/assemblyscript/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@web3api/cli": "0.0.1-prealpha.30", "@web3api/ethereum-plugin-js": "0.0.1-prealpha.30", - "@web3api/wasm-as": "0.0.1-prealpha.30", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1", "ethers": "5.0.7", "solc": "0.8.3" diff --git a/packages/test-cases/cases/apis/bigint-type/package.json b/packages/test-cases/cases/apis/bigint-type/package.json index 1aac86145a..b4c1370d48 100644 --- a/packages/test-cases/cases/apis/bigint-type/package.json +++ b/packages/test-cases/cases/apis/bigint-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-bigint-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/bigint-type/query/index.ts b/packages/test-cases/cases/apis/bigint-type/query/index.ts index 33fbf33d82..db412ce8ed 100644 --- a/packages/test-cases/cases/apis/bigint-type/query/index.ts +++ b/packages/test-cases/cases/apis/bigint-type/query/index.ts @@ -1,7 +1,5 @@ -import { - Input_method -} from "./w3"; -import { BigInt } from "@web3api/wasm-as"; +import { Input_method } from "./w3"; +import { BigInt } from "@namestys/wasm-as"; export function method(input: Input_method): BigInt { let result = input.arg1.mul(input.obj.prop1); diff --git a/packages/test-cases/cases/apis/bytes-type/package.json b/packages/test-cases/cases/apis/bytes-type/package.json index 46657c49b8..da7f0335dd 100644 --- a/packages/test-cases/cases/apis/bytes-type/package.json +++ b/packages/test-cases/cases/apis/bytes-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-bytes-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/enum-types/package.json b/packages/test-cases/cases/apis/enum-types/package.json index ed6b0f1f29..f4389c6b30 100644 --- a/packages/test-cases/cases/apis/enum-types/package.json +++ b/packages/test-cases/cases/apis/enum-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-enum-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/implementations/test-api/package.json b/packages/test-cases/cases/apis/implementations/test-api/package.json index dcb7920151..0efc32392e 100644 --- a/packages/test-cases/cases/apis/implementations/test-api/package.json +++ b/packages/test-cases/cases/apis/implementations/test-api/package.json @@ -2,7 +2,7 @@ "name": "test-case-implementation", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/invalid-types/package.json b/packages/test-cases/cases/apis/invalid-types/package.json index 0d63e92bda..c5d94618cb 100644 --- a/packages/test-cases/cases/apis/invalid-types/package.json +++ b/packages/test-cases/cases/apis/invalid-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-invalid-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/json-type/package.json b/packages/test-cases/cases/apis/json-type/package.json index 39e8b19be1..5266839170 100644 --- a/packages/test-cases/cases/apis/json-type/package.json +++ b/packages/test-cases/cases/apis/json-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-json-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/json-type/query/index.ts b/packages/test-cases/cases/apis/json-type/query/index.ts index d59aa1622d..f67672438b 100644 --- a/packages/test-cases/cases/apis/json-type/query/index.ts +++ b/packages/test-cases/cases/apis/json-type/query/index.ts @@ -1,28 +1,24 @@ -import { Input_stringify, Input_parse } from "./w3"; -import { JSON } from "@web3api/wasm-as"; +import { Input_parse, Input_methodString, Input_methodJSON } from "./w3"; +import { JSON as ASJSON } from "@namestys/wasm-as"; -export function stringify(input: Input_stringify): string { - return input.value.stringify(); -} - -export function parse(input: Input_parse): JSON.Obj { - return JSON.parse(input.value); +export function parse(input: Input_parse): ASJSON.Obj { + return ASJSON.parse(input.value); } export function methodString(input: Input_methodString): string { - const result = JSON.Value.Object(); - result.set("valueA", JSON.from(input.valueA)); - result.set("valueB", JSON.from(input.valueA)); - result.set("valueC", JSON.from(input.valueA)); + const result = ASJSON.Value.Object(); + result.set("valueA", ASJSON.from(input.valueA)); + result.set("valueB", ASJSON.from(input.valueB)); + result.set("valueC", ASJSON.from(input.valueC)); return result.stringify(); } -export function methodJSON(input: Input_methodJSON): JSON.Obj { - const result = JSON.Value.Object(); - result.set("valueA", JSON.from(input.valueA)); - result.set("valueB", JSON.from(input.valueA)); - result.set("valueC", JSON.from(input.valueA)); +export function methodJSON(input: Input_methodJSON): ASJSON.Obj { + const result = ASJSON.Value.Object(); + result.set("valueA", ASJSON.from(input.valueA)); + result.set("valueB", ASJSON.from(input.valueB)); + result.set("valueC", ASJSON.from(input.valueC)); return result; } diff --git a/packages/test-cases/cases/apis/json-type/query/schema.graphql b/packages/test-cases/cases/apis/json-type/query/schema.graphql index c5af091411..77a01bc92f 100644 --- a/packages/test-cases/cases/apis/json-type/query/schema.graphql +++ b/packages/test-cases/cases/apis/json-type/query/schema.graphql @@ -1,8 +1,6 @@ type Query { parse(value: String!): JSON! - stringify(value: JSON!): String! - methodString(valueA: Int!, valueB: String!, valueC: Boolean!): String! methodJSON(valueA: Int!, valueB: String!, valueC: Boolean!): JSON! diff --git a/packages/test-cases/cases/apis/large-types/package.json b/packages/test-cases/cases/apis/large-types/package.json index 36bba1803e..977366a952 100644 --- a/packages/test-cases/cases/apis/large-types/package.json +++ b/packages/test-cases/cases/apis/large-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-large-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/number-types/package.json b/packages/test-cases/cases/apis/number-types/package.json index e65c0a43d5..39ee847b9b 100644 --- a/packages/test-cases/cases/apis/number-types/package.json +++ b/packages/test-cases/cases/apis/number-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-number-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/object-types/package.json b/packages/test-cases/cases/apis/object-types/package.json index cfb55b2d34..6fa5e6b886 100644 --- a/packages/test-cases/cases/apis/object-types/package.json +++ b/packages/test-cases/cases/apis/object-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-object-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/apis/simple-storage/package.json b/packages/test-cases/cases/apis/simple-storage/package.json index dd56a33214..1ccb94c346 100644 --- a/packages/test-cases/cases/apis/simple-storage/package.json +++ b/packages/test-cases/cases/apis/simple-storage/package.json @@ -2,7 +2,7 @@ "name": "test-case-simple-storage", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.28", + "@namestys/wasm-as": "0.0.1-prealpha.61", "assemblyscript": "0.19.1" } -} \ No newline at end of file +} diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts index 4e14a5c58e..b0d7d16364 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts @@ -6,8 +6,8 @@ import { Write, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import * as Types from ".."; export class Input_mutationMethod { @@ -19,8 +19,12 @@ export class Input_mutationMethod { optEnumArray: Array> | null; } -export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutationMethod { - const context: Context = new Context("Deserializing query-type: mutationMethod"); +export function deserializemutationMethodArgs( + argsBuf: ArrayBuffer +): Input_mutationMethod { + const context: Context = new Context( + "Deserializing query-type: mutationMethod" + ); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -44,14 +48,16 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat _str = reader.readString(); _strSet = true; reader.context().pop(); - } - else if (field == "optStr") { - reader.context().push(field, "string | null", "type found, reading property"); + } else if (field == "optStr") { + reader + .context() + .push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } - else if (field == "en") { - reader.context().push(field, "Types.CustomEnum", "type found, reading property"); + } else if (field == "en") { + reader + .context() + .push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -62,9 +68,14 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat _en = value; _enSet = true; reader.context().pop(); - } - else if (field == "optEnum") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optEnum") { + reader + .context() + .push( + field, + "Nullable", + "type found, reading property" + ); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -72,9 +83,7 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue( - reader.readInt32() - ); + value = Nullable.fromValue(reader.readInt32()); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -82,55 +91,77 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat } _optEnum = value; reader.context().pop(); - } - else if (field == "enumArray") { - reader.context().push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); + } else if (field == "enumArray") { + reader + .context() + .push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray( + (reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); + } + return value; } - return value; - }); + ); _enumArraySet = true; reader.context().pop(); - } - else if (field == "optEnumArray") { - reader.context().push(field, "Array> | null", "type found, reading property"); - _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); + } else if (field == "optEnumArray") { + reader + .context() + .push( + field, + "Array> | null", + "type found, reading property" + ); + _optEnumArray = reader.readNullableArray( + (reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); + } else { + value = Nullable.fromValue(reader.readInt32()); + Types.sanitizeCustomEnumValue(value.value); + } } else { - value = Nullable.fromValue( - reader.readInt32() - ); - Types.sanitizeCustomEnumValue(value.value); + value = Nullable.fromNull(); } - } else { - value = Nullable.fromNull(); + return value; } - return value; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_strSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'str: String'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'str: String'") + ); } if (!_enSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'en: CustomEnum'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'en: CustomEnum'") + ); } if (!_enumArraySet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'enumArray: [CustomEnum]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required argument: 'enumArray: [CustomEnum]'" + ) + ); } return { @@ -139,16 +170,20 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray + optEnumArray: _optEnumArray, }; } export function serializemutationMethodResult(result: i32): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) query-type: mutationMethod"); + const sizerContext: Context = new Context( + "Serializing (sizing) query-type: mutationMethod" + ); const sizer = new WriteSizer(sizerContext); writemutationMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) query-type: mutationMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) query-type: mutationMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writemutationMethodResult(encoder, result); return buffer; @@ -167,8 +202,12 @@ export class Input_objectMethod { optObjectArray: Array | null; } -export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectMethod { - const context: Context = new Context("Deserializing query-type: objectMethod"); +export function deserializeobjectMethodArgs( + argsBuf: ArrayBuffer +): Input_objectMethod { + const context: Context = new Context( + "Deserializing query-type: objectMethod" + ); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -185,72 +224,114 @@ export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectM reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader.context().push(field, "Types.AnotherType", "type found, reading property"); + reader + .context() + .push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } - else if (field == "optObject") { - reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); + } else if (field == "optObject") { + reader + .context() + .push( + field, + "Types.AnotherType | null", + "type found, reading property" + ); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } - else if (field == "objectArray") { - reader.context().push(field, "Array", "type found, reading property"); - _objectArray = reader.readArray((reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - }); + } else if (field == "objectArray") { + reader + .context() + .push( + field, + "Array", + "type found, reading property" + ); + _objectArray = reader.readArray( + (reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + } + ); _objectArraySet = true; reader.context().pop(); - } - else if (field == "optObjectArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); + } else if (field == "optObjectArray") { + reader + .context() + .push( + field, + "Array | null", + "type found, reading property" + ); + _optObjectArray = reader.readNullableArray( + (reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); + } + return object; } - return object; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_object || !_objectSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'object: AnotherType'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'object: AnotherType'") + ); } if (!_objectArraySet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'objectArray: [AnotherType]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required argument: 'objectArray: [AnotherType]'" + ) + ); } return { object: _object, optObject: _optObject, objectArray: _objectArray, - optObjectArray: _optObjectArray + optObjectArray: _optObjectArray, }; } -export function serializeobjectMethodResult(result: Types.AnotherType | null): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) query-type: objectMethod"); +export function serializeobjectMethodResult( + result: Types.AnotherType | null +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) query-type: objectMethod" + ); const sizer = new WriteSizer(sizerContext); writeobjectMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) query-type: objectMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) query-type: objectMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeobjectMethodResult(encoder, result); return buffer; } -export function writeobjectMethodResult(writer: Write, result: Types.AnotherType | null): void { - writer.context().push("objectMethod", "Types.AnotherType | null", "writing property"); +export function writeobjectMethodResult( + writer: Write, + result: Types.AnotherType | null +): void { + writer + .context() + .push("objectMethod", "Types.AnotherType | null", "writing property"); if (result) { Types.AnotherType.write(writer, result as Types.AnotherType); } else { diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts index d9454af5b3..c15ce63ffc 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts @@ -1,12 +1,5 @@ -import { - w3_add_invoke, - w3_invoke, - w3_abort -} from "@web3api/wasm-as"; -import { - mutationMethodWrapped, - objectMethodWrapped -} from "./Mutation/wrapped"; +import { w3_add_invoke, w3_invoke, w3_abort } from "@namestys/wasm-as"; +import { mutationMethodWrapped, objectMethodWrapped } from "./Mutation/wrapped"; export function _w3_init(): void { w3_add_invoke("mutationMethod", mutationMethodWrapped); @@ -23,10 +16,5 @@ export function w3Abort( line: u32, column: u32 ): void { - w3_abort( - msg ? msg : "", - file ? file : "", - line, - column - ); + w3_abort(msg ? msg : "", file ? file : "", line, column); } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts index 88dcd04966..f7bc8cc09b 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts @@ -1,14 +1,9 @@ -import { - Read, - Write, - Nullable, - BigInt -} from "@web3api/wasm-as"; +import { Read, Write, Nullable, BigInt } from "@namestys/wasm-as"; import { serializeAnotherType, deserializeAnotherType, writeAnotherType, - readAnotherType + readAnotherType, } from "./serialization"; import * as Types from ".."; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts index d9f77e8a2d..80c8f179af 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts @@ -6,17 +6,21 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import { AnotherType } from "./"; import * as Types from ".."; export function serializeAnotherType(type: AnotherType): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) object-type: AnotherType"); + const sizerContext: Context = new Context( + "Serializing (sizing) object-type: AnotherType" + ); const sizer = new WriteSizer(sizerContext); writeAnotherType(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) object-type: AnotherType"); + const encoderContext: Context = new Context( + "Serializing (encoding) object-type: AnotherType" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeAnotherType(encoder, type); return buffer; @@ -28,7 +32,9 @@ export function writeAnotherType(writer: Write, type: AnotherType): void { writer.writeString("prop"); writer.writeNullableString(type.prop); writer.context().pop(); - writer.context().push("circular", "Types.CustomType | null", "writing property"); + writer + .context() + .push("circular", "Types.CustomType | null", "writing property"); writer.writeString("circular"); if (type.circular) { Types.CustomType.write(writer, type.circular as Types.CustomType); @@ -56,12 +62,15 @@ export function readAnotherType(reader: Read): AnotherType { reader.context().push(field, "unknown", "searching for property type"); if (field == "prop") { - reader.context().push(field, "string | null", "type found, reading property"); + reader + .context() + .push(field, "string | null", "type found, reading property"); _prop = reader.readNullableString(); reader.context().pop(); - } - else if (field == "circular") { - reader.context().push(field, "Types.CustomType | null", "type found, reading property"); + } else if (field == "circular") { + reader + .context() + .push(field, "Types.CustomType | null", "type found, reading property"); let object: Types.CustomType | null = null; if (!reader.isNextNil()) { object = Types.CustomType.read(reader); @@ -72,9 +81,8 @@ export function readAnotherType(reader: Read): AnotherType { reader.context().pop(); } - return { prop: _prop, - circular: _circular + circular: _circular, }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts index 56d81e9438..4819eb2897 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts @@ -1,14 +1,9 @@ -import { - Read, - Write, - Nullable, - BigInt -} from "@web3api/wasm-as"; +import { Read, Write, Nullable, BigInt } from "@namestys/wasm-as"; import { serializeCustomType, deserializeCustomType, writeCustomType, - readCustomType + readCustomType, } from "./serialization"; import * as Types from ".."; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts index 5d4c87a3dc..48e46c86d3 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts @@ -6,17 +6,21 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import { CustomType } from "./"; import * as Types from ".."; export function serializeCustomType(type: CustomType): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) object-type: CustomType"); + const sizerContext: Context = new Context( + "Serializing (sizing) object-type: CustomType" + ); const sizer = new WriteSizer(sizerContext); writeCustomType(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) object-type: CustomType"); + const encoderContext: Context = new Context( + "Serializing (encoding) object-type: CustomType" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeCustomType(encoder, type); return buffer; @@ -100,65 +104,125 @@ export function writeCustomType(writer: Write, type: CustomType): void { writer.context().pop(); writer.context().push("uOptArray", "Array | null", "writing property"); writer.writeString("uOptArray"); - writer.writeNullableArray(type.uOptArray, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); + writer.writeNullableArray( + type.uOptArray, + (writer: Write, item: u32): void => { + writer.writeUInt32(item); + } + ); writer.context().pop(); - writer.context().push("optUOptArray", "Array> | null", "writing property"); + writer + .context() + .push("optUOptArray", "Array> | null", "writing property"); writer.writeString("optUOptArray"); - writer.writeNullableArray(type.optUOptArray, (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - }); + writer.writeNullableArray( + type.optUOptArray, + (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + } + ); writer.context().pop(); - writer.context().push("optStrOptArray", "Array | null", "writing property"); + writer + .context() + .push("optStrOptArray", "Array | null", "writing property"); writer.writeString("optStrOptArray"); - writer.writeNullableArray(type.optStrOptArray, (writer: Write, item: string | null): void => { - writer.writeNullableString(item); - }); + writer.writeNullableArray( + type.optStrOptArray, + (writer: Write, item: string | null): void => { + writer.writeNullableString(item); + } + ); writer.context().pop(); writer.context().push("uArrayArray", "Array>", "writing property"); writer.writeString("uArrayArray"); - writer.writeArray(type.uArrayArray, (writer: Write, item: Array): void => { - writer.writeArray(item, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); - }); + writer.writeArray( + type.uArrayArray, + (writer: Write, item: Array): void => { + writer.writeArray(item, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); + } + ); writer.context().pop(); - writer.context().push("uOptArrayOptArray", "Array> | null>", "writing property"); + writer + .context() + .push( + "uOptArrayOptArray", + "Array> | null>", + "writing property" + ); writer.writeString("uOptArrayOptArray"); - writer.writeArray(type.uOptArrayOptArray, (writer: Write, item: Array> | null): void => { - writer.writeNullableArray(item, (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - }); - }); + writer.writeArray( + type.uOptArrayOptArray, + (writer: Write, item: Array> | null): void => { + writer.writeNullableArray( + item, + (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + } + ); + } + ); writer.context().pop(); - writer.context().push("uArrayOptArrayArray", "Array> | null>", "writing property"); + writer + .context() + .push( + "uArrayOptArrayArray", + "Array> | null>", + "writing property" + ); writer.writeString("uArrayOptArrayArray"); - writer.writeArray(type.uArrayOptArrayArray, (writer: Write, item: Array> | null): void => { - writer.writeNullableArray(item, (writer: Write, item: Array): void => { - writer.writeArray(item, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); - }); - }); + writer.writeArray( + type.uArrayOptArrayArray, + (writer: Write, item: Array> | null): void => { + writer.writeNullableArray( + item, + (writer: Write, item: Array): void => { + writer.writeArray(item, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); + } + ); + } + ); writer.context().pop(); - writer.context().push("crazyArray", "Array | null>> | null> | null", "writing property"); + writer + .context() + .push( + "crazyArray", + "Array | null>> | null> | null", + "writing property" + ); writer.writeString("crazyArray"); - writer.writeNullableArray(type.crazyArray, (writer: Write, item: Array | null>> | null): void => { - writer.writeNullableArray(item, (writer: Write, item: Array | null>): void => { - writer.writeArray(item, (writer: Write, item: Array | null): void => { - writer.writeNullableArray(item, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); - }); - }); - }); + writer.writeNullableArray( + type.crazyArray, + (writer: Write, item: Array | null>> | null): void => { + writer.writeNullableArray( + item, + (writer: Write, item: Array | null>): void => { + writer.writeArray( + item, + (writer: Write, item: Array | null): void => { + writer.writeNullableArray( + item, + (writer: Write, item: u32): void => { + writer.writeUInt32(item); + } + ); + } + ); + } + ); + } + ); writer.context().pop(); writer.context().push("object", "Types.AnotherType", "writing property"); writer.writeString("object"); Types.AnotherType.write(writer, type.object); writer.context().pop(); - writer.context().push("optObject", "Types.AnotherType | null", "writing property"); + writer + .context() + .push("optObject", "Types.AnotherType | null", "writing property"); writer.writeString("optObject"); if (type.optObject) { Types.AnotherType.write(writer, type.optObject as Types.AnotherType); @@ -166,41 +230,71 @@ export function writeCustomType(writer: Write, type: CustomType): void { writer.writeNil(); } writer.context().pop(); - writer.context().push("objectArray", "Array", "writing property"); + writer + .context() + .push("objectArray", "Array", "writing property"); writer.writeString("objectArray"); - writer.writeArray(type.objectArray, (writer: Write, item: Types.AnotherType): void => { - Types.AnotherType.write(writer, item); - }); - writer.context().pop(); - writer.context().push("optObjectArray", "Array | null", "writing property"); + writer.writeArray( + type.objectArray, + (writer: Write, item: Types.AnotherType): void => { + Types.AnotherType.write(writer, item); + } + ); + writer.context().pop(); + writer + .context() + .push( + "optObjectArray", + "Array | null", + "writing property" + ); writer.writeString("optObjectArray"); - writer.writeNullableArray(type.optObjectArray, (writer: Write, item: Types.AnotherType | null): void => { - if (item) { - Types.AnotherType.write(writer, item as Types.AnotherType); - } else { - writer.writeNil(); + writer.writeNullableArray( + type.optObjectArray, + (writer: Write, item: Types.AnotherType | null): void => { + if (item) { + Types.AnotherType.write(writer, item as Types.AnotherType); + } else { + writer.writeNil(); + } } - }); + ); writer.context().pop(); writer.context().push("en", "Types.CustomEnum", "writing property"); writer.writeString("en"); writer.writeInt32(type.en); writer.context().pop(); - writer.context().push("optEnum", "Nullable", "writing property"); + writer + .context() + .push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(type.optEnum); writer.context().pop(); - writer.context().push("enumArray", "Array", "writing property"); + writer + .context() + .push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray(type.enumArray, (writer: Write, item: Types.CustomEnum): void => { - writer.writeInt32(item); - }); - writer.context().pop(); - writer.context().push("optEnumArray", "Array> | null", "writing property"); + writer.writeArray( + type.enumArray, + (writer: Write, item: Types.CustomEnum): void => { + writer.writeInt32(item); + } + ); + writer.context().pop(); + writer + .context() + .push( + "optEnumArray", + "Array> | null", + "writing property" + ); writer.writeString("optEnumArray"); - writer.writeNullableArray(type.optEnumArray, (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - }); + writer.writeNullableArray( + type.optEnumArray, + (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + } + ); writer.context().pop(); } @@ -277,210 +371,283 @@ export function readCustomType(reader: Read): CustomType { _str = reader.readString(); _strSet = true; reader.context().pop(); - } - else if (field == "optStr") { - reader.context().push(field, "string | null", "type found, reading property"); + } else if (field == "optStr") { + reader + .context() + .push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } - else if (field == "u") { + } else if (field == "u") { reader.context().push(field, "u32", "type found, reading property"); _u = reader.readUInt32(); _uSet = true; reader.context().pop(); - } - else if (field == "optU") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optU") { + reader + .context() + .push(field, "Nullable", "type found, reading property"); _optU = reader.readNullableUInt32(); reader.context().pop(); - } - else if (field == "u8") { + } else if (field == "u8") { reader.context().push(field, "u8", "type found, reading property"); _u8 = reader.readUInt8(); _u8Set = true; reader.context().pop(); - } - else if (field == "u16") { + } else if (field == "u16") { reader.context().push(field, "u16", "type found, reading property"); _u16 = reader.readUInt16(); _u16Set = true; reader.context().pop(); - } - else if (field == "u32") { + } else if (field == "u32") { reader.context().push(field, "u32", "type found, reading property"); _u32 = reader.readUInt32(); _u32Set = true; reader.context().pop(); - } - else if (field == "i") { + } else if (field == "i") { reader.context().push(field, "i32", "type found, reading property"); _i = reader.readInt32(); _iSet = true; reader.context().pop(); - } - else if (field == "i8") { + } else if (field == "i8") { reader.context().push(field, "i8", "type found, reading property"); _i8 = reader.readInt8(); _i8Set = true; reader.context().pop(); - } - else if (field == "i16") { + } else if (field == "i16") { reader.context().push(field, "i16", "type found, reading property"); _i16 = reader.readInt16(); _i16Set = true; reader.context().pop(); - } - else if (field == "i32") { + } else if (field == "i32") { reader.context().push(field, "i32", "type found, reading property"); _i32 = reader.readInt32(); _i32Set = true; reader.context().pop(); - } - else if (field == "bigint") { + } else if (field == "bigint") { reader.context().push(field, "BigInt", "type found, reading property"); _bigint = reader.readBigInt(); _bigintSet = true; reader.context().pop(); - } - else if (field == "optBigint") { - reader.context().push(field, "BigInt | null", "type found, reading property"); + } else if (field == "optBigint") { + reader + .context() + .push(field, "BigInt | null", "type found, reading property"); _optBigint = reader.readNullableBigInt(); reader.context().pop(); - } - else if (field == "bytes") { - reader.context().push(field, "ArrayBuffer", "type found, reading property"); + } else if (field == "bytes") { + reader + .context() + .push(field, "ArrayBuffer", "type found, reading property"); _bytes = reader.readBytes(); _bytesSet = true; reader.context().pop(); - } - else if (field == "optBytes") { - reader.context().push(field, "ArrayBuffer | null", "type found, reading property"); + } else if (field == "optBytes") { + reader + .context() + .push(field, "ArrayBuffer | null", "type found, reading property"); _optBytes = reader.readNullableBytes(); reader.context().pop(); - } - else if (field == "boolean") { + } else if (field == "boolean") { reader.context().push(field, "bool", "type found, reading property"); _boolean = reader.readBool(); _booleanSet = true; reader.context().pop(); - } - else if (field == "optBoolean") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optBoolean") { + reader + .context() + .push(field, "Nullable", "type found, reading property"); _optBoolean = reader.readNullableBool(); reader.context().pop(); - } - else if (field == "uArray") { - reader.context().push(field, "Array", "type found, reading property"); - _uArray = reader.readArray((reader: Read): u32 => { - return reader.readUInt32(); - }); + } else if (field == "uArray") { + reader + .context() + .push(field, "Array", "type found, reading property"); + _uArray = reader.readArray( + (reader: Read): u32 => { + return reader.readUInt32(); + } + ); _uArraySet = true; reader.context().pop(); - } - else if (field == "uOptArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _uOptArray = reader.readNullableArray((reader: Read): u32 => { - return reader.readUInt32(); - }); - reader.context().pop(); - } - else if (field == "optUOptArray") { - reader.context().push(field, "Array> | null", "type found, reading property"); - _optUOptArray = reader.readNullableArray((reader: Read): Nullable => { - return reader.readNullableUInt32(); - }); - reader.context().pop(); - } - else if (field == "optStrOptArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _optStrOptArray = reader.readNullableArray((reader: Read): string | null => { + } else if (field == "uOptArray") { + reader + .context() + .push(field, "Array | null", "type found, reading property"); + _uOptArray = reader.readNullableArray( + (reader: Read): u32 => { + return reader.readUInt32(); + } + ); + reader.context().pop(); + } else if (field == "optUOptArray") { + reader + .context() + .push( + field, + "Array> | null", + "type found, reading property" + ); + _optUOptArray = reader.readNullableArray( + (reader: Read): Nullable => { + return reader.readNullableUInt32(); + } + ); + reader.context().pop(); + } else if (field == "optStrOptArray") { + reader + .context() + .push( + field, + "Array | null", + "type found, reading property" + ); + _optStrOptArray = reader.readNullableArray((reader: Read): + | string + | null => { return reader.readNullableString(); }); reader.context().pop(); - } - else if (field == "uArrayArray") { - reader.context().push(field, "Array>", "type found, reading property"); - _uArrayArray = reader.readArray((reader: Read): Array => { - return reader.readArray((reader: Read): u32 => { - return reader.readUInt32(); - }); - }); + } else if (field == "uArrayArray") { + reader + .context() + .push(field, "Array>", "type found, reading property"); + _uArrayArray = reader.readArray( + (reader: Read): Array => { + return reader.readArray( + (reader: Read): u32 => { + return reader.readUInt32(); + } + ); + } + ); _uArrayArraySet = true; reader.context().pop(); - } - else if (field == "uOptArrayOptArray") { - reader.context().push(field, "Array> | null>", "type found, reading property"); - _uOptArrayOptArray = reader.readArray((reader: Read): Array> | null => { - return reader.readNullableArray((reader: Read): Nullable => { - return reader.readNullableUInt32(); - }); + } else if (field == "uOptArrayOptArray") { + reader + .context() + .push( + field, + "Array> | null>", + "type found, reading property" + ); + _uOptArrayOptArray = reader.readArray((reader: Read): Array< + Nullable + > | null => { + return reader.readNullableArray( + (reader: Read): Nullable => { + return reader.readNullableUInt32(); + } + ); }); _uOptArrayOptArraySet = true; reader.context().pop(); - } - else if (field == "uArrayOptArrayArray") { - reader.context().push(field, "Array> | null>", "type found, reading property"); - _uArrayOptArrayArray = reader.readArray((reader: Read): Array> | null => { - return reader.readNullableArray((reader: Read): Array => { - return reader.readArray((reader: Read): u32 => { - return reader.readUInt32(); - }); - }); + } else if (field == "uArrayOptArrayArray") { + reader + .context() + .push( + field, + "Array> | null>", + "type found, reading property" + ); + _uArrayOptArrayArray = reader.readArray((reader: Read): Array< + Array + > | null => { + return reader.readNullableArray( + (reader: Read): Array => { + return reader.readArray( + (reader: Read): u32 => { + return reader.readUInt32(); + } + ); + } + ); }); _uArrayOptArrayArraySet = true; reader.context().pop(); - } - else if (field == "crazyArray") { - reader.context().push(field, "Array | null>> | null> | null", "type found, reading property"); - _crazyArray = reader.readNullableArray((reader: Read): Array | null>> | null => { - return reader.readNullableArray((reader: Read): Array | null> => { - return reader.readArray((reader: Read): Array | null => { - return reader.readNullableArray((reader: Read): u32 => { - return reader.readUInt32(); + } else if (field == "crazyArray") { + reader + .context() + .push( + field, + "Array | null>> | null> | null", + "type found, reading property" + ); + _crazyArray = reader.readNullableArray((reader: Read): Array< + Array | null> + > | null => { + return reader.readNullableArray( + (reader: Read): Array | null> => { + return reader.readArray((reader: Read): Array | null => { + return reader.readNullableArray( + (reader: Read): u32 => { + return reader.readUInt32(); + } + ); }); - }); - }); + } + ); }); reader.context().pop(); - } - else if (field == "object") { - reader.context().push(field, "Types.AnotherType", "type found, reading property"); + } else if (field == "object") { + reader + .context() + .push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } - else if (field == "optObject") { - reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); + } else if (field == "optObject") { + reader + .context() + .push( + field, + "Types.AnotherType | null", + "type found, reading property" + ); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } - else if (field == "objectArray") { - reader.context().push(field, "Array", "type found, reading property"); - _objectArray = reader.readArray((reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - }); + } else if (field == "objectArray") { + reader + .context() + .push( + field, + "Array", + "type found, reading property" + ); + _objectArray = reader.readArray( + (reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + } + ); _objectArraySet = true; reader.context().pop(); - } - else if (field == "optObjectArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); + } else if (field == "optObjectArray") { + reader + .context() + .push( + field, + "Array | null", + "type found, reading property" + ); + _optObjectArray = reader.readNullableArray( + (reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); + } + return object; } - return object; - }); + ); reader.context().pop(); - } - else if (field == "en") { - reader.context().push(field, "Types.CustomEnum", "type found, reading property"); + } else if (field == "en") { + reader + .context() + .push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -491,9 +658,14 @@ export function readCustomType(reader: Read): CustomType { _en = value; _enSet = true; reader.context().pop(); - } - else if (field == "optEnum") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optEnum") { + reader + .context() + .push( + field, + "Nullable", + "type found, reading property" + ); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -501,9 +673,7 @@ export function readCustomType(reader: Read): CustomType { Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue( - reader.readInt32() - ); + value = Nullable.fromValue(reader.readInt32()); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -511,106 +681,196 @@ export function readCustomType(reader: Read): CustomType { } _optEnum = value; reader.context().pop(); - } - else if (field == "enumArray") { - reader.context().push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); + } else if (field == "enumArray") { + reader + .context() + .push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray( + (reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); + } + return value; } - return value; - }); + ); _enumArraySet = true; reader.context().pop(); - } - else if (field == "optEnumArray") { - reader.context().push(field, "Array> | null", "type found, reading property"); - _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); + } else if (field == "optEnumArray") { + reader + .context() + .push( + field, + "Array> | null", + "type found, reading property" + ); + _optEnumArray = reader.readNullableArray( + (reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); + } else { + value = Nullable.fromValue(reader.readInt32()); + Types.sanitizeCustomEnumValue(value.value); + } } else { - value = Nullable.fromValue( - reader.readInt32() - ); - Types.sanitizeCustomEnumValue(value.value); + value = Nullable.fromNull(); } - } else { - value = Nullable.fromNull(); + return value; } - return value; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_strSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'str: String'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'str: String'") + ); } if (!_uSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'u: UInt'")); + throw new Error( + reader.context().printWithContext("Missing required property: 'u: UInt'") + ); } if (!_u8Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'u8: UInt8'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'u8: UInt8'") + ); } if (!_u16Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'u16: UInt16'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'u16: UInt16'") + ); } if (!_u32Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'u32: UInt32'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'u32: UInt32'") + ); } if (!_iSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'i: Int'")); + throw new Error( + reader.context().printWithContext("Missing required property: 'i: Int'") + ); } if (!_i8Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'i8: Int8'")); + throw new Error( + reader.context().printWithContext("Missing required property: 'i8: Int8'") + ); } if (!_i16Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'i16: Int16'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'i16: Int16'") + ); } if (!_i32Set) { - throw new Error(reader.context().printWithContext("Missing required property: 'i32: Int32'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'i32: Int32'") + ); } if (!_bigintSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'bigint: BigInt'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'bigint: BigInt'") + ); } if (!_bytesSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'bytes: Bytes'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'bytes: Bytes'") + ); } if (!_booleanSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'boolean: Boolean'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'boolean: Boolean'") + ); } if (!_uArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'uArray: [UInt]'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'uArray: [UInt]'") + ); } if (!_uArrayArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'uArrayArray: [[UInt]]'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'uArrayArray: [[UInt]]'") + ); } if (!_uOptArrayOptArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'uOptArrayOptArray: [[UInt32]]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'uOptArrayOptArray: [[UInt32]]'" + ) + ); } if (!_uArrayOptArrayArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'uArrayOptArrayArray: [[[UInt32]]]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'uArrayOptArrayArray: [[[UInt32]]]'" + ) + ); } if (!_object || !_objectSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'object: AnotherType'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'object: AnotherType'") + ); } if (!_objectArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'objectArray: [AnotherType]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'objectArray: [AnotherType]'" + ) + ); } if (!_enSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'en: CustomEnum'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'en: CustomEnum'") + ); } if (!_enumArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'enumArray: [CustomEnum]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'enumArray: [CustomEnum]'" + ) + ); } return { @@ -646,6 +906,6 @@ export function readCustomType(reader: Read): CustomType { en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray + optEnumArray: _optEnumArray, }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts index 24cd33fbbe..50311fe0e9 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts @@ -6,8 +6,8 @@ import { Write, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import * as Types from ".."; export class Input_queryMethod { @@ -19,8 +19,10 @@ export class Input_queryMethod { optEnumArray: Array> | null; } -export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMethod { - const context: Context = new Context("Deserializing query-type: queryMethod"); +export function deserializequeryMethodArgs( + argsBuf: ArrayBuffer +): Input_queryMethod { + const context: Context = new Context("Deserializing query-type: queryMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -44,14 +46,16 @@ export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMet _str = reader.readString(); _strSet = true; reader.context().pop(); - } - else if (field == "optStr") { - reader.context().push(field, "string | null", "type found, reading property"); + } else if (field == "optStr") { + reader + .context() + .push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } - else if (field == "en") { - reader.context().push(field, "Types.CustomEnum", "type found, reading property"); + } else if (field == "en") { + reader + .context() + .push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -62,9 +66,14 @@ export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMet _en = value; _enSet = true; reader.context().pop(); - } - else if (field == "optEnum") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optEnum") { + reader + .context() + .push( + field, + "Nullable", + "type found, reading property" + ); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -72,9 +81,7 @@ export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMet Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue( - reader.readInt32() - ); + value = Nullable.fromValue(reader.readInt32()); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -82,55 +89,77 @@ export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMet } _optEnum = value; reader.context().pop(); - } - else if (field == "enumArray") { - reader.context().push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); + } else if (field == "enumArray") { + reader + .context() + .push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray( + (reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); + } + return value; } - return value; - }); + ); _enumArraySet = true; reader.context().pop(); - } - else if (field == "optEnumArray") { - reader.context().push(field, "Array> | null", "type found, reading property"); - _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); + } else if (field == "optEnumArray") { + reader + .context() + .push( + field, + "Array> | null", + "type found, reading property" + ); + _optEnumArray = reader.readNullableArray( + (reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); + } else { + value = Nullable.fromValue(reader.readInt32()); + Types.sanitizeCustomEnumValue(value.value); + } } else { - value = Nullable.fromValue( - reader.readInt32() - ); - Types.sanitizeCustomEnumValue(value.value); + value = Nullable.fromNull(); } - } else { - value = Nullable.fromNull(); + return value; } - return value; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_strSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'str: String'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'str: String'") + ); } if (!_enSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'en: CustomEnum'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'en: CustomEnum'") + ); } if (!_enumArraySet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'enumArray: [CustomEnum]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required argument: 'enumArray: [CustomEnum]'" + ) + ); } return { @@ -139,16 +168,20 @@ export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMet en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray + optEnumArray: _optEnumArray, }; } export function serializequeryMethodResult(result: i32): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) query-type: queryMethod"); + const sizerContext: Context = new Context( + "Serializing (sizing) query-type: queryMethod" + ); const sizer = new WriteSizer(sizerContext); writequeryMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) query-type: queryMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) query-type: queryMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writequeryMethodResult(encoder, result); return buffer; @@ -167,8 +200,12 @@ export class Input_objectMethod { optObjectArray: Array | null; } -export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectMethod { - const context: Context = new Context("Deserializing query-type: objectMethod"); +export function deserializeobjectMethodArgs( + argsBuf: ArrayBuffer +): Input_objectMethod { + const context: Context = new Context( + "Deserializing query-type: objectMethod" + ); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -185,72 +222,114 @@ export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectM reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader.context().push(field, "Types.AnotherType", "type found, reading property"); + reader + .context() + .push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } - else if (field == "optObject") { - reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); + } else if (field == "optObject") { + reader + .context() + .push( + field, + "Types.AnotherType | null", + "type found, reading property" + ); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } - else if (field == "objectArray") { - reader.context().push(field, "Array", "type found, reading property"); - _objectArray = reader.readArray((reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - }); + } else if (field == "objectArray") { + reader + .context() + .push( + field, + "Array", + "type found, reading property" + ); + _objectArray = reader.readArray( + (reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + } + ); _objectArraySet = true; reader.context().pop(); - } - else if (field == "optObjectArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); + } else if (field == "optObjectArray") { + reader + .context() + .push( + field, + "Array | null", + "type found, reading property" + ); + _optObjectArray = reader.readNullableArray( + (reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); + } + return object; } - return object; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_object || !_objectSet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'object: AnotherType'")); + throw new Error( + reader + .context() + .printWithContext("Missing required argument: 'object: AnotherType'") + ); } if (!_objectArraySet) { - throw new Error(reader.context().printWithContext("Missing required argument: 'objectArray: [AnotherType]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required argument: 'objectArray: [AnotherType]'" + ) + ); } return { object: _object, optObject: _optObject, objectArray: _objectArray, - optObjectArray: _optObjectArray + optObjectArray: _optObjectArray, }; } -export function serializeobjectMethodResult(result: Types.AnotherType | null): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) query-type: objectMethod"); +export function serializeobjectMethodResult( + result: Types.AnotherType | null +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) query-type: objectMethod" + ); const sizer = new WriteSizer(sizerContext); writeobjectMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) query-type: objectMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) query-type: objectMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeobjectMethodResult(encoder, result); return buffer; } -export function writeobjectMethodResult(writer: Write, result: Types.AnotherType | null): void { - writer.context().push("objectMethod", "Types.AnotherType | null", "writing property"); +export function writeobjectMethodResult( + writer: Write, + result: Types.AnotherType | null +): void { + writer + .context() + .push("objectMethod", "Types.AnotherType | null", "writing property"); if (result) { Types.AnotherType.write(writer, result as Types.AnotherType); } else { diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts index 56bd1afd56..2ac73b2911 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts @@ -1,12 +1,5 @@ -import { - w3_add_invoke, - w3_invoke, - w3_abort -} from "@web3api/wasm-as"; -import { - queryMethodWrapped, - objectMethodWrapped -} from "./Query/wrapped"; +import { w3_add_invoke, w3_invoke, w3_abort } from "@namestys/wasm-as"; +import { queryMethodWrapped, objectMethodWrapped } from "./Query/wrapped"; export function _w3_init(): void { w3_add_invoke("queryMethod", queryMethodWrapped); @@ -23,10 +16,5 @@ export function w3Abort( line: u32, column: u32 ): void { - w3_abort( - msg ? msg : "", - file ? file : "", - line, - column - ); + w3_abort(msg ? msg : "", file ? file : "", line, column); } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts index 2242b47b9c..42b7427072 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts @@ -1,19 +1,13 @@ -import { - Read, - Write, - Nullable, - BigInt -} from "@web3api/wasm-as"; +import { Read, Write, Nullable, BigInt } from "@namestys/wasm-as"; import { serializeTestImport_AnotherObject, deserializeTestImport_AnotherObject, writeTestImport_AnotherObject, - readTestImport_AnotherObject + readTestImport_AnotherObject, } from "./serialization"; import * as Types from "../.."; export class TestImport_AnotherObject { - public static uri: string = "testimport.uri.eth"; prop: string; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts index 245cd9242c..805f54a869 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts @@ -6,23 +6,32 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import { TestImport_AnotherObject } from "./"; import * as Types from "../.."; -export function serializeTestImport_AnotherObject(type: TestImport_AnotherObject): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) imported object-type: TestImport_AnotherObject"); +export function serializeTestImport_AnotherObject( + type: TestImport_AnotherObject +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) imported object-type: TestImport_AnotherObject" + ); const sizer = new WriteSizer(sizerContext); writeTestImport_AnotherObject(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) import object-type: TestImport_AnotherObject"); + const encoderContext: Context = new Context( + "Serializing (encoding) import object-type: TestImport_AnotherObject" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeTestImport_AnotherObject(encoder, type); return buffer; } -export function writeTestImport_AnotherObject(writer: Write, type: TestImport_AnotherObject): void { +export function writeTestImport_AnotherObject( + writer: Write, + type: TestImport_AnotherObject +): void { writer.writeMapLength(1); writer.context().push("prop", "string", "writing property"); writer.writeString("prop"); @@ -30,13 +39,19 @@ export function writeTestImport_AnotherObject(writer: Write, type: TestImport_An writer.context().pop(); } -export function deserializeTestImport_AnotherObject(buffer: ArrayBuffer): TestImport_AnotherObject { - const context: Context = new Context("Deserializing imported object-type TestImport_AnotherObject"); +export function deserializeTestImport_AnotherObject( + buffer: ArrayBuffer +): TestImport_AnotherObject { + const context: Context = new Context( + "Deserializing imported object-type TestImport_AnotherObject" + ); const reader = new ReadDecoder(buffer, context); return readTestImport_AnotherObject(reader); } -export function readTestImport_AnotherObject(reader: Read): TestImport_AnotherObject { +export function readTestImport_AnotherObject( + reader: Read +): TestImport_AnotherObject { let numFields = reader.readMapLength(); let _prop: string = ""; @@ -57,10 +72,14 @@ export function readTestImport_AnotherObject(reader: Read): TestImport_AnotherOb } if (!_propSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'prop: String'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'prop: String'") + ); } return { - prop: _prop + prop: _prop, }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts index 4c304bc569..21f8d9d686 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts @@ -1,19 +1,13 @@ -import { - Read, - Write, - Nullable, - BigInt -} from "@web3api/wasm-as"; +import { Read, Write, Nullable, BigInt } from "@namestys/wasm-as"; import { serializeTestImport_Object, deserializeTestImport_Object, writeTestImport_Object, - readTestImport_Object + readTestImport_Object, } from "./serialization"; import * as Types from "../.."; export class TestImport_Object { - public static uri: string = "testimport.uri.eth"; object: Types.TestImport_AnotherObject; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts index a3eada2175..d6d913b087 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts @@ -6,76 +6,137 @@ import { WriteEncoder, Nullable, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import { TestImport_Object } from "./"; import * as Types from "../.."; -export function serializeTestImport_Object(type: TestImport_Object): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) imported object-type: TestImport_Object"); +export function serializeTestImport_Object( + type: TestImport_Object +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) imported object-type: TestImport_Object" + ); const sizer = new WriteSizer(sizerContext); writeTestImport_Object(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) import object-type: TestImport_Object"); + const encoderContext: Context = new Context( + "Serializing (encoding) import object-type: TestImport_Object" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeTestImport_Object(encoder, type); return buffer; } -export function writeTestImport_Object(writer: Write, type: TestImport_Object): void { +export function writeTestImport_Object( + writer: Write, + type: TestImport_Object +): void { writer.writeMapLength(8); - writer.context().push("object", "Types.TestImport_AnotherObject", "writing property"); + writer + .context() + .push("object", "Types.TestImport_AnotherObject", "writing property"); writer.writeString("object"); Types.TestImport_AnotherObject.write(writer, type.object); writer.context().pop(); - writer.context().push("optObject", "Types.TestImport_AnotherObject | null", "writing property"); + writer + .context() + .push( + "optObject", + "Types.TestImport_AnotherObject | null", + "writing property" + ); writer.writeString("optObject"); if (type.optObject) { - Types.TestImport_AnotherObject.write(writer, type.optObject as Types.TestImport_AnotherObject); + Types.TestImport_AnotherObject.write( + writer, + type.optObject as Types.TestImport_AnotherObject + ); } else { writer.writeNil(); } writer.context().pop(); - writer.context().push("objectArray", "Array", "writing property"); + writer + .context() + .push( + "objectArray", + "Array", + "writing property" + ); writer.writeString("objectArray"); - writer.writeArray(type.objectArray, (writer: Write, item: Types.TestImport_AnotherObject): void => { - Types.TestImport_AnotherObject.write(writer, item); - }); + writer.writeArray( + type.objectArray, + (writer: Write, item: Types.TestImport_AnotherObject): void => { + Types.TestImport_AnotherObject.write(writer, item); + } + ); writer.context().pop(); - writer.context().push("optObjectArray", "Array | null", "writing property"); + writer + .context() + .push( + "optObjectArray", + "Array | null", + "writing property" + ); writer.writeString("optObjectArray"); - writer.writeNullableArray(type.optObjectArray, (writer: Write, item: Types.TestImport_AnotherObject | null): void => { - if (item) { - Types.TestImport_AnotherObject.write(writer, item as Types.TestImport_AnotherObject); - } else { - writer.writeNil(); + writer.writeNullableArray( + type.optObjectArray, + (writer: Write, item: Types.TestImport_AnotherObject | null): void => { + if (item) { + Types.TestImport_AnotherObject.write( + writer, + item as Types.TestImport_AnotherObject + ); + } else { + writer.writeNil(); + } } - }); + ); writer.context().pop(); writer.context().push("en", "Types.TestImport_Enum", "writing property"); writer.writeString("en"); writer.writeInt32(type.en); writer.context().pop(); - writer.context().push("optEnum", "Nullable", "writing property"); + writer + .context() + .push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(type.optEnum); writer.context().pop(); - writer.context().push("enumArray", "Array", "writing property"); + writer + .context() + .push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray(type.enumArray, (writer: Write, item: Types.TestImport_Enum): void => { - writer.writeInt32(item); - }); + writer.writeArray( + type.enumArray, + (writer: Write, item: Types.TestImport_Enum): void => { + writer.writeInt32(item); + } + ); writer.context().pop(); - writer.context().push("optEnumArray", "Array> | null", "writing property"); + writer + .context() + .push( + "optEnumArray", + "Array> | null", + "writing property" + ); writer.writeString("optEnumArray"); - writer.writeNullableArray(type.optEnumArray, (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - }); + writer.writeNullableArray( + type.optEnumArray, + (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + } + ); writer.context().pop(); } -export function deserializeTestImport_Object(buffer: ArrayBuffer): TestImport_Object { - const context: Context = new Context("Deserializing imported object-type TestImport_Object"); +export function deserializeTestImport_Object( + buffer: ArrayBuffer +): TestImport_Object { + const context: Context = new Context( + "Deserializing imported object-type TestImport_Object" + ); const reader = new ReadDecoder(buffer, context); return readTestImport_Object(reader); } @@ -102,43 +163,69 @@ export function readTestImport_Object(reader: Read): TestImport_Object { reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader.context().push(field, "Types.TestImport_AnotherObject", "type found, reading property"); + reader + .context() + .push( + field, + "Types.TestImport_AnotherObject", + "type found, reading property" + ); const object = Types.TestImport_AnotherObject.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } - else if (field == "optObject") { - reader.context().push(field, "Types.TestImport_AnotherObject | null", "type found, reading property"); + } else if (field == "optObject") { + reader + .context() + .push( + field, + "Types.TestImport_AnotherObject | null", + "type found, reading property" + ); let object: Types.TestImport_AnotherObject | null = null; if (!reader.isNextNil()) { object = Types.TestImport_AnotherObject.read(reader); } _optObject = object; reader.context().pop(); - } - else if (field == "objectArray") { - reader.context().push(field, "Array", "type found, reading property"); - _objectArray = reader.readArray((reader: Read): Types.TestImport_AnotherObject => { - const object = Types.TestImport_AnotherObject.read(reader); - return object; - }); + } else if (field == "objectArray") { + reader + .context() + .push( + field, + "Array", + "type found, reading property" + ); + _objectArray = reader.readArray( + (reader: Read): Types.TestImport_AnotherObject => { + const object = Types.TestImport_AnotherObject.read(reader); + return object; + } + ); _objectArraySet = true; reader.context().pop(); - } - else if (field == "optObjectArray") { - reader.context().push(field, "Array | null", "type found, reading property"); - _optObjectArray = reader.readNullableArray((reader: Read): Types.TestImport_AnotherObject | null => { - let object: Types.TestImport_AnotherObject | null = null; - if (!reader.isNextNil()) { - object = Types.TestImport_AnotherObject.read(reader); + } else if (field == "optObjectArray") { + reader + .context() + .push( + field, + "Array | null", + "type found, reading property" + ); + _optObjectArray = reader.readNullableArray( + (reader: Read): Types.TestImport_AnotherObject | null => { + let object: Types.TestImport_AnotherObject | null = null; + if (!reader.isNextNil()) { + object = Types.TestImport_AnotherObject.read(reader); + } + return object; } - return object; - }); + ); reader.context().pop(); - } - else if (field == "en") { - reader.context().push(field, "Types.TestImport_Enum", "type found, reading property"); + } else if (field == "en") { + reader + .context() + .push(field, "Types.TestImport_Enum", "type found, reading property"); let value: Types.TestImport_Enum; if (reader.isNextString()) { value = Types.getTestImport_EnumValue(reader.readString()); @@ -149,9 +236,14 @@ export function readTestImport_Object(reader: Read): TestImport_Object { _en = value; _enSet = true; reader.context().pop(); - } - else if (field == "optEnum") { - reader.context().push(field, "Nullable", "type found, reading property"); + } else if (field == "optEnum") { + reader + .context() + .push( + field, + "Nullable", + "type found, reading property" + ); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -159,9 +251,7 @@ export function readTestImport_Object(reader: Read): TestImport_Object { Types.getTestImport_EnumValue(reader.readString()) ); } else { - value = Nullable.fromValue( - reader.readInt32() - ); + value = Nullable.fromValue(reader.readInt32()); Types.sanitizeTestImport_EnumValue(value.value); } } else { @@ -169,58 +259,92 @@ export function readTestImport_Object(reader: Read): TestImport_Object { } _optEnum = value; reader.context().pop(); - } - else if (field == "enumArray") { - reader.context().push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray((reader: Read): Types.TestImport_Enum => { - let value: Types.TestImport_Enum; - if (reader.isNextString()) { - value = Types.getTestImport_EnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeTestImport_EnumValue(value); + } else if (field == "enumArray") { + reader + .context() + .push( + field, + "Array", + "type found, reading property" + ); + _enumArray = reader.readArray( + (reader: Read): Types.TestImport_Enum => { + let value: Types.TestImport_Enum; + if (reader.isNextString()) { + value = Types.getTestImport_EnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeTestImport_EnumValue(value); + } + return value; } - return value; - }); + ); _enumArraySet = true; reader.context().pop(); - } - else if (field == "optEnumArray") { - reader.context().push(field, "Array> | null", "type found, reading property"); - _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getTestImport_EnumValue(reader.readString()) - ); + } else if (field == "optEnumArray") { + reader + .context() + .push( + field, + "Array> | null", + "type found, reading property" + ); + _optEnumArray = reader.readNullableArray( + (reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getTestImport_EnumValue(reader.readString()) + ); + } else { + value = Nullable.fromValue(reader.readInt32()); + Types.sanitizeTestImport_EnumValue(value.value); + } } else { - value = Nullable.fromValue( - reader.readInt32() - ); - Types.sanitizeTestImport_EnumValue(value.value); + value = Nullable.fromNull(); } - } else { - value = Nullable.fromNull(); + return value; } - return value; - }); + ); reader.context().pop(); } reader.context().pop(); } if (!_object || !_objectSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'object: TestImport_AnotherObject'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'object: TestImport_AnotherObject'" + ) + ); } if (!_objectArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'objectArray: [TestImport_AnotherObject]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'objectArray: [TestImport_AnotherObject]'" + ) + ); } if (!_enSet) { - throw new Error(reader.context().printWithContext("Missing required property: 'en: TestImport_Enum'")); + throw new Error( + reader + .context() + .printWithContext("Missing required property: 'en: TestImport_Enum'") + ); } if (!_enumArraySet) { - throw new Error(reader.context().printWithContext("Missing required property: 'enumArray: [TestImport_Enum]'")); + throw new Error( + reader + .context() + .printWithContext( + "Missing required property: 'enumArray: [TestImport_Enum]'" + ) + ); } return { @@ -231,6 +355,6 @@ export function readTestImport_Object(reader: Read): TestImport_Object { en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray + optEnumArray: _optEnumArray, }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts index 6bfb08f448..8ac3eb4729 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts @@ -1,23 +1,20 @@ -import { - w3_subinvoke, - Nullable, - BigInt -} from "@web3api/wasm-as"; +import { w3_subinvoke, Nullable, BigInt } from "@namestys/wasm-as"; import { serializeimportedMethodArgs, deserializeimportedMethodResult, Input_importedMethod, serializeanotherMethodArgs, deserializeanotherMethodResult, - Input_anotherMethod + Input_anotherMethod, } from "./serialization"; import * as Types from "../.."; export class TestImport_Query { - public static uri: string = "testimport.uri.eth"; - public static importedMethod(input: Input_importedMethod): Types.TestImport_Object | null { + public static importedMethod( + input: Input_importedMethod + ): Types.TestImport_Object | null { const args = serializeimportedMethodArgs(input); const result = w3_subinvoke( "testimport.uri.eth", diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts index 01c5bf9c41..1f5022a67d 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts @@ -5,8 +5,8 @@ import { WriteEncoder, ReadDecoder, BigInt, - Context -} from "@web3api/wasm-as"; + Context, +} from "@namestys/wasm-as"; import * as Types from "../.."; export class Input_importedMethod { @@ -25,12 +25,18 @@ export class Input_importedMethod { optEnumArray: Array> | null; } -export function serializeimportedMethodArgs(input: Input_importedMethod): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) imported query-type: importedMethod"); +export function serializeimportedMethodArgs( + input: Input_importedMethod +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) imported query-type: importedMethod" + ); const sizer = new WriteSizer(sizerContext); writeimportedMethodArgs(sizer, input); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) imported query-type: importedMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) imported query-type: importedMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeimportedMethodArgs(encoder, input); return buffer; @@ -57,74 +63,133 @@ export function writeimportedMethodArgs( writer.writeString("optU"); writer.writeNullableUInt32(input.optU); writer.context().pop(); - writer.context().push("uArrayArray", "Array> | null>", "writing property"); + writer + .context() + .push( + "uArrayArray", + "Array> | null>", + "writing property" + ); writer.writeString("uArrayArray"); - writer.writeArray(input.uArrayArray, (writer: Write, item: Array> | null): void => { - writer.writeNullableArray(item, (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - }); - }); + writer.writeArray( + input.uArrayArray, + (writer: Write, item: Array> | null): void => { + writer.writeNullableArray( + item, + (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + } + ); + } + ); writer.context().pop(); - writer.context().push("object", "Types.TestImport_Object", "writing property"); + writer + .context() + .push("object", "Types.TestImport_Object", "writing property"); writer.writeString("object"); Types.TestImport_Object.write(writer, input.object); writer.context().pop(); - writer.context().push("optObject", "Types.TestImport_Object | null", "writing property"); + writer + .context() + .push("optObject", "Types.TestImport_Object | null", "writing property"); writer.writeString("optObject"); if (input.optObject) { - Types.TestImport_Object.write(writer, input.optObject as Types.TestImport_Object); + Types.TestImport_Object.write( + writer, + input.optObject as Types.TestImport_Object + ); } else { writer.writeNil(); } writer.context().pop(); - writer.context().push("objectArray", "Array", "writing property"); + writer + .context() + .push("objectArray", "Array", "writing property"); writer.writeString("objectArray"); - writer.writeArray(input.objectArray, (writer: Write, item: Types.TestImport_Object): void => { - Types.TestImport_Object.write(writer, item); - }); + writer.writeArray( + input.objectArray, + (writer: Write, item: Types.TestImport_Object): void => { + Types.TestImport_Object.write(writer, item); + } + ); writer.context().pop(); - writer.context().push("optObjectArray", "Array | null", "writing property"); + writer + .context() + .push( + "optObjectArray", + "Array | null", + "writing property" + ); writer.writeString("optObjectArray"); - writer.writeNullableArray(input.optObjectArray, (writer: Write, item: Types.TestImport_Object | null): void => { - if (item) { - Types.TestImport_Object.write(writer, item as Types.TestImport_Object); - } else { - writer.writeNil(); + writer.writeNullableArray( + input.optObjectArray, + (writer: Write, item: Types.TestImport_Object | null): void => { + if (item) { + Types.TestImport_Object.write(writer, item as Types.TestImport_Object); + } else { + writer.writeNil(); + } } - }); + ); writer.context().pop(); writer.context().push("en", "Types.TestImport_Enum", "writing property"); writer.writeString("en"); writer.writeInt32(input.en); writer.context().pop(); - writer.context().push("optEnum", "Nullable", "writing property"); + writer + .context() + .push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(input.optEnum); writer.context().pop(); - writer.context().push("enumArray", "Array", "writing property"); + writer + .context() + .push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray(input.enumArray, (writer: Write, item: Types.TestImport_Enum): void => { - writer.writeInt32(item); - }); + writer.writeArray( + input.enumArray, + (writer: Write, item: Types.TestImport_Enum): void => { + writer.writeInt32(item); + } + ); writer.context().pop(); - writer.context().push("optEnumArray", "Array> | null", "writing property"); + writer + .context() + .push( + "optEnumArray", + "Array> | null", + "writing property" + ); writer.writeString("optEnumArray"); - writer.writeNullableArray(input.optEnumArray, (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - }); + writer.writeNullableArray( + input.optEnumArray, + (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + } + ); writer.context().pop(); } -export function deserializeimportedMethodResult(buffer: ArrayBuffer): Types.TestImport_Object | null { - const context: Context = new Context("Deserializing imported query-type: importedMethod"); +export function deserializeimportedMethodResult( + buffer: ArrayBuffer +): Types.TestImport_Object | null { + const context: Context = new Context( + "Deserializing imported query-type: importedMethod" + ); const reader = new ReadDecoder(buffer, context); - reader.context().push("importedMethod", "Types.TestImport_Object | null", "reading function output"); + reader + .context() + .push( + "importedMethod", + "Types.TestImport_Object | null", + "reading function output" + ); let object: Types.TestImport_Object | null = null; if (!reader.isNextNil()) { object = Types.TestImport_Object.read(reader); } - const res: Types.TestImport_Object | null = object; + const res: Types.TestImport_Object | null = object; reader.context().pop(); return res; @@ -134,12 +199,18 @@ export class Input_anotherMethod { arg: Array; } -export function serializeanotherMethodArgs(input: Input_anotherMethod): ArrayBuffer { - const sizerContext: Context = new Context("Serializing (sizing) imported query-type: anotherMethod"); +export function serializeanotherMethodArgs( + input: Input_anotherMethod +): ArrayBuffer { + const sizerContext: Context = new Context( + "Serializing (sizing) imported query-type: anotherMethod" + ); const sizer = new WriteSizer(sizerContext); writeanotherMethodArgs(sizer, input); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context("Serializing (encoding) imported query-type: anotherMethod"); + const encoderContext: Context = new Context( + "Serializing (encoding) imported query-type: anotherMethod" + ); const encoder = new WriteEncoder(buffer, encoderContext); writeanotherMethodArgs(encoder, input); return buffer; @@ -159,7 +230,9 @@ export function writeanotherMethodArgs( } export function deserializeanotherMethodResult(buffer: ArrayBuffer): i32 { - const context: Context = new Context("Deserializing imported query-type: anotherMethod"); + const context: Context = new Context( + "Deserializing imported query-type: anotherMethod" + ); const reader = new ReadDecoder(buffer, context); reader.context().push("anotherMethod", "i32", "reading function output"); diff --git a/packages/wasm/as/assembly/JSON.ts b/packages/wasm/as/assembly/JSON.ts index e1ffff65a8..2925c6b247 100644 --- a/packages/wasm/as/assembly/JSON.ts +++ b/packages/wasm/as/assembly/JSON.ts @@ -1 +1 @@ -export * from "assemblyscript-json"; +export * from "@web3api/assemblyscript-json"; diff --git a/packages/wasm/as/package.json b/packages/wasm/as/package.json index 152a4ad6ca..f66cb9fc6d 100644 --- a/packages/wasm/as/package.json +++ b/packages/wasm/as/package.json @@ -1,7 +1,7 @@ { - "name": "@web3api/wasm-as", + "name": "@namestys/wasm-as", "description": "Web3API Assemblyscript Runtime", - "version": "0.0.1-prealpha.30", + "version": "0.0.1-prealpha.62", "license": "MIT", "repository": { "type": "git", @@ -22,7 +22,7 @@ }, "dependencies": { "as-bigint": "0.2.4", - "assemblyscript-json": "1.1.0" + "@web3api/assemblyscript-json": "1.2.0" }, "devDependencies": { "@as-pect/cli": "6.2.4", diff --git a/yarn.lock b/yarn.lock index cf26e72ab1..79f71f631d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3122,6 +3122,14 @@ resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== +"@namestys/wasm-as@0.0.1-prealpha.61": + version "0.0.1-prealpha.61" + resolved "https://registry.yarnpkg.com/@namestys/wasm-as/-/wasm-as-0.0.1-prealpha.61.tgz#59295f4de8d14fb873c1563d9af4520556476da8" + integrity sha512-o6lXuDGJ+ivYfyHtSdLxSUMXuDV7amVwlNhV2q6qS8ZtIvSeg/0XbJsGbe4bzyBvZBu0C8SIBr1pBz9oWCzxCA== + dependencies: + "@web3api/assemblyscript-json" "1.2.0" + as-bigint "0.2.4" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -4080,6 +4088,18 @@ "@uniswap/lib" "1.1.1" "@uniswap/v2-core" "1.0.0" +"@web3api/assemblyscript-json@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" + integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== + +"@web3api/wasm-as@0.0.1-prealpha.30": + version "0.0.1-prealpha.30" + resolved "https://registry.yarnpkg.com/@web3api/wasm-as/-/wasm-as-0.0.1-prealpha.30.tgz#a089abfcb6ea614c67412ef2a58f1f073e06dd8d" + integrity sha512-thoyq2lJrf0zcXV3VbAhRhTgmZBFXcuIBueqqmcstelxYmsHOOj1TvmQXlxVakcExIpxQvjJ4zCl9qMcaiGdXg== + dependencies: + as-bigint "0.2.4" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -4969,11 +4989,6 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assemblyscript-json@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assemblyscript-json/-/assemblyscript-json-1.1.0.tgz#49d38bc21f1ac36f2887528a35de6cf7d59c17be" - integrity sha512-UbE8ts8csTWQgd5TnSPN7MRV9NveuHv1bVnKmDLoo/tzjqxkmsZb3lu59Uk8H7SGoqdkDSEE049alx/nHnSdFw== - assemblyscript@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.1.tgz#8d52332b7cef88e03d15b633e70c5febddd1f444" From 77de143918ca58ad02f9521f72d8aef8c60ed748 Mon Sep 17 00:00:00 2001 From: cbrzn Date: Thu, 19 Aug 2021 22:54:34 +0200 Subject: [PATCH 21/53] feat: register open subdomain and register a domain on open subdomain mutations implemented and tested --- packages/apis/ens/jest.config.js | 2 - packages/apis/ens/src/__tests__/e2e.spec.ts | 121 +++++++++++++++++- packages/apis/ens/src/mutation/index.ts | 66 +++++++--- packages/apis/ens/src/mutation/schema.graphql | 20 ++- .../plugins/sha3/src/__tests__/index.test.ts | 12 +- 5 files changed, 191 insertions(+), 30 deletions(-) diff --git a/packages/apis/ens/jest.config.js b/packages/apis/ens/jest.config.js index 7e2937cb70..001133417f 100644 --- a/packages/apis/ens/jest.config.js +++ b/packages/apis/ens/jest.config.js @@ -1,6 +1,4 @@ module.exports = { - collectCoverage: true, - collectCoverageFrom: ["**/src/*/index.ts"], preset: "ts-jest", testEnvironment: "node", testMatch: ["**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)"] diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index fd40cacf8f..d6a69c2fb4 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -23,6 +23,7 @@ describe("ENS Wrapper", () => { let registrarAddress: string; let resolverAddress: string; let reverseRegistryAddress: string; + let customFifsRegistrarAddress: string; let owner: string; let anotherOwner: string; @@ -723,10 +724,11 @@ describe("ENS Wrapper", () => { expect(getTextRecordErrors).toBeUndefined(); }); - it.skip("should configure open domain", async () => { + it("should configure open domain", async () => { const configureOpenDomainVariables = { registry: ensAddress, resolver: resolverAddress, + registrar: registrarAddress, tld: openSubdomain, owner, network, @@ -749,6 +751,7 @@ describe("ENS Wrapper", () => { owner: $owner, registryAddress: $registry resolverAddress: $resolver + registrarAddress: $registrar connection: { networkNameOrChainId: $network } @@ -758,7 +761,6 @@ describe("ENS Wrapper", () => { variables: configureOpenDomainVariables, }); - console.log({ configureOpenDomainErrors }); expect(configureOpenDomainData?.configureOpenDomain).toBeDefined(); expect(configureOpenDomainErrors).toBeUndefined(); @@ -785,9 +787,118 @@ describe("ENS Wrapper", () => { expect(getOwnerData?.getOwner).toEqual( configureOpenDomainData?.configureOpenDomain.fifsRegistrarAddress ); + + customFifsRegistrarAddress = configureOpenDomainData?.configureOpenDomain.fifsRegistrarAddress!; }); - // it("should create subdomain in open domain", async () => { - // const createSubdomainInOpenDomainVariables = {}; - // }); + it("should create subdomain in open domain", async () => { + const createSubdomainInOpenDomainVariables = { + label: "label", + domain: openSubdomain, + fifsRegistrarAddress: customFifsRegistrarAddress, + registry: ensAddress, + owner: anotherOwner, + resolver: resolverAddress, + network, + }; + + const { + data: createSubdomainInOpenDomainData, + errors: createSubdomainInOpenDomainErrors, + } = await anotherOwnerClient.query({ + uri: ensUri, + query: ` + mutation { + createSubdomainInOpenDomain( + label: $label, + domain: $domain, + owner: $owner, + fifsRegistrarAddress: $fifsRegistrarAddress, + registryAddress: $registry + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: createSubdomainInOpenDomainVariables, + }); + + expect( + createSubdomainInOpenDomainData?.createSubdomainInOpenDomain + ).toBeDefined(); + expect(createSubdomainInOpenDomainErrors).toBeUndefined(); + }); + + it("should create subdomain in open domain and set content hash", async () => { + const cid = "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C".toLowerCase(); + const createSubdomainInOpenDomainAndSetContentHashVariables = { + label: "label2", + cid, + domain: openSubdomain, + fifsRegistrarAddress: customFifsRegistrarAddress, + registry: ensAddress, + owner: anotherOwner, + resolver: resolverAddress, + network, + }; + + const { + data: createSubdomainInOpenDomainAndSetContentHashData, + errors: createSubdomainInOpenDomainAndSetContentHashErrors, + } = await anotherOwnerClient.query({ + uri: ensUri, + query: ` + mutation { + createSubdomainInOpenDomainAndSetContentHash( + cid: $cid, + label: $label, + domain: $domain, + owner: $owner, + fifsRegistrarAddress: $fifsRegistrarAddress, + registryAddress: $registry + resolverAddress: $resolver + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: createSubdomainInOpenDomainAndSetContentHashVariables, + }); + + expect( + createSubdomainInOpenDomainAndSetContentHashData?.createSubdomainInOpenDomainAndSetContentHash + ).toBeDefined(); + expect(createSubdomainInOpenDomainAndSetContentHashErrors).toBeUndefined(); + + const getContentHashFromDomainVariables = { + domain: "label2." + openSubdomain, + registry: ensAddress, + network, + }; + + const { + data: getContentHashFromDomainData, + errors: getContentHashFromDomainErrors, + } = await ownerClient.query({ + uri: ensUri, + query: ` + query { + getContentHashFromDomain( + domain: $domain + registryAddress: $registry + connection: { + networkNameOrChainId: $network + } + ) + } + `, + variables: getContentHashFromDomainVariables, + }); + + expect(getContentHashFromDomainData?.getContentHashFromDomain).toEqual(cid); + expect(getContentHashFromDomainErrors).toBeUndefined(); + }); }); diff --git a/packages/apis/ens/src/mutation/index.ts b/packages/apis/ens/src/mutation/index.ts index c58df2064a..55126b1c0f 100644 --- a/packages/apis/ens/src/mutation/index.ts +++ b/packages/apis/ens/src/mutation/index.ts @@ -20,9 +20,11 @@ import { Input_setTextRecord, Input_configureOpenDomain, Input_createSubdomainInOpenDomain, + Input_createSubdomainInOpenDomainAndSetContentHash, Ethereum_TxResponse, ConfigureOpenDomainResponse, CreateSubdomainInOpenDomainResponse, + CreateSubdomainInOpenDomainAndSetContentHashResponse, TxOverrides, } from "./w3"; @@ -390,8 +392,12 @@ export function configureOpenDomain( txOverrides, }); + const splitDomain = input.tld.split("."); + const tldLabel = splitDomain[0]; + const tld = splitDomain.slice(1, splitDomain.length).join("."); + const registerOpenDomainTxReceipt = registerDomain({ - registrarAddress: fifsRegistrarAddress, + registrarAddress: input.registrarAddress, registryAddress: input.registryAddress, domain: input.tld, owner: input.owner, @@ -399,18 +405,13 @@ export function configureOpenDomain( txOverrides, }); - const setResolverTxReceipt = setResolver({ - domain: input.tld, - resolverAddress: input.resolverAddress, - registryAddress: input.registryAddress, - connection: input.connection, - txOverrides, - }); - - const setOwnerTxReceipt = setOwner({ - domain: input.tld, - newOwner: fifsRegistrarAddress, + const setSubdomainRecordTxReceipt = setSubdomainRecord({ + domain: tld, + label: tldLabel, + owner: fifsRegistrarAddress, registryAddress: input.registryAddress, + resolverAddress: input.resolverAddress, + ttl: "0", connection: input.connection, txOverrides, }); @@ -418,8 +419,7 @@ export function configureOpenDomain( return { fifsRegistrarAddress, registerOpenDomainTxReceipt, - setResolverTxReceipt, - setOwnerTxReceipt, + setSubdomainRecordTxReceipt, }; } @@ -440,12 +440,46 @@ export function createSubdomainInOpenDomain( }); const setResolverTxReceipt = setResolver({ - domain: input.label + input.domain, + domain: input.label + "." + input.domain, registryAddress: input.registryAddress, resolverAddress: input.resolverAddress, connection: input.connection, txOverrides, }); - return { setResolverTxReceipt, registerSubdomainTxReceipt }; + return { registerSubdomainTxReceipt, setResolverTxReceipt }; +} + +export function createSubdomainInOpenDomainAndSetContentHash( + input: Input_createSubdomainInOpenDomainAndSetContentHash +): CreateSubdomainInOpenDomainAndSetContentHashResponse { + const txOverrides: TxOverrides = + input.txOverrides === null + ? { gasLimit: null, gasPrice: null } + : input.txOverrides!; + + const createSubdomainInOpenDomainTxReceipt = createSubdomainInOpenDomain({ + label: input.label, + domain: input.domain, + resolverAddress: input.resolverAddress, + registryAddress: input.registryAddress, + owner: input.owner, + fifsRegistrarAddress: input.fifsRegistrarAddress, + connection: input.connection, + txOverrides, + }); + + const setContentHashReceiptTx = setContentHash({ + domain: input.label + "." + input.domain, + cid: input.cid, + resolverAddress: input.resolverAddress, + connection: input.connection, + txOverrides, + }); + + return { + registerSubdomainTxReceipt: createSubdomainInOpenDomainTxReceipt.registerSubdomainTxReceipt, + setResolverTxReceipt: createSubdomainInOpenDomainTxReceipt.setResolverTxReceipt, + setContentHashReceiptTx, + }; } diff --git a/packages/apis/ens/src/mutation/schema.graphql b/packages/apis/ens/src/mutation/schema.graphql index a88fc896a1..098b78693a 100644 --- a/packages/apis/ens/src/mutation/schema.graphql +++ b/packages/apis/ens/src/mutation/schema.graphql @@ -6,8 +6,7 @@ type ConfigureOpenDomainResponse { fifsRegistrarAddress: String! registerOpenDomainTxReceipt: Ethereum_TxResponse! - setResolverTxReceipt: Ethereum_TxResponse! - setOwnerTxReceipt: Ethereum_TxResponse! + setSubdomainRecordTxReceipt: Ethereum_TxResponse! } type CreateSubdomainInOpenDomainResponse { @@ -15,6 +14,10 @@ type CreateSubdomainInOpenDomainResponse { setResolverTxReceipt: Ethereum_TxResponse! } +type CreateSubdomainInOpenDomainAndSetContentHashResponse implements CreateSubdomainInOpenDomainResponse { + setContentHashReceiptTx: Ethereum_TxResponse! +} + type Mutation { setResolver( domain: String! @@ -146,6 +149,7 @@ type Mutation { owner: String! registryAddress: String! resolverAddress: String! + registrarAddress: String! connection: Ethereum_Connection txOverrides: TxOverrides ): ConfigureOpenDomainResponse! @@ -160,4 +164,16 @@ type Mutation { connection: Ethereum_Connection txOverrides: TxOverrides ): CreateSubdomainInOpenDomainResponse! + + createSubdomainInOpenDomainAndSetContentHash( + label: String! + domain: String! + owner: String! + fifsRegistrarAddress: String! + registryAddress: String! + resolverAddress: String! + cid: String! + connection: Ethereum_Connection + txOverrides: TxOverrides + ): CreateSubdomainInOpenDomainAndSetContentHashResponse } diff --git a/packages/js/plugins/sha3/src/__tests__/index.test.ts b/packages/js/plugins/sha3/src/__tests__/index.test.ts index 972e916b7d..5040391f12 100644 --- a/packages/js/plugins/sha3/src/__tests__/index.test.ts +++ b/packages/js/plugins/sha3/src/__tests__/index.test.ts @@ -143,9 +143,11 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { it("keccak256 buffer matches", async () => { const encoder = new TextEncoder(); - const testMessageBuffer = encoder.encode(testMessage); - const expected = keccak256(testMessageBuffer) - const response = await client.query<{ buffer_keccak_256: string }>({ + const message = encoder.encode(testMessage); + const hexValues = keccak256(message).match(/[\da-f]{2}/gi) + const expected = new Uint8Array(hexValues!.map(h => parseInt(h, 16))); + + const response = await client.query<{ buffer_keccak_256: Uint8Array }>({ uri: "w3://ens/sha3.web3api.eth", query: ` query { @@ -153,13 +155,13 @@ describe("js-sha3 algorithms returned values match the plugin's", () => { } `, variables: { - message: testMessageBuffer + message: message.buffer } }) expect(response.data).toBeDefined() expect(response.errors).toBeUndefined() - expect(response.data?.buffer_keccak_256).toMatch(expected) + expect(response.data?.buffer_keccak_256.toString()).toMatch(expected.toString()) }) it("keccak224 matches", async () => { From 135bbac2e7fede0f9742ff1dfe4365b0142df5fe Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Mon, 23 Aug 2021 16:08:01 -0500 Subject: [PATCH 22/53] revert namehash changes --- packages/apis/ens/src/utils.ts | 37 ++++++++-------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index c26214e38f..a6b49e66dd 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -2,8 +2,10 @@ import { SHA3_Query } from "./mutation/w3/imported/SHA3_Query"; import { UTS46_Query } from "./mutation/w3/imported/UTS46_Query"; export function namehash(inputName: string): string { - let node = new Uint8Array(32); - node.fill(0); + let node = ""; + for (let i: number = 0; i < 32; i++) { + node += "00"; + } const name: string = normalize(inputName) @@ -11,35 +13,12 @@ export function namehash(inputName: string): string { const labels: string[] = name.split('.'); for(let i = labels.length - 1; i >= 0; i--) { - const labelSha = SHA3_Query.buffer_keccak_256({ - message: String.UTF8.encode(labels[i]) - }); - - - const combined = new Uint8Array(node.byteLength + labelSha.byteLength); - combined.set(node); - combined.set(Uint8Array.wrap(labelSha), node.byteLength); - node = Uint8Array.wrap( - SHA3_Query.buffer_keccak_256({ - message: combined.buffer - }) - ); - } - } - - let result = '0x'; - - for (let i = 0; i < node.byteLength; ++i) { - let hexStr = node[i].toString(16); - - if (hexStr.length === 1) { - hexStr = "0" + hexStr; + let labelSha = SHA3_Query.keccak_256({ message: labels[i] }) + node = SHA3_Query.buffer_keccak_256({ message: (node + labelSha) }) } - - result += hexStr; } - return result; + return "0x" + node; } export function normalize(name: string): string { @@ -50,4 +29,4 @@ export function normalize(name: string): string { export function keccak256 (value: string): string { return "0x" + SHA3_Query.keccak_256({ message: value }) -} \ No newline at end of file +} From 9cbe42226b45169d2464c55085a6faffb7867cff Mon Sep 17 00:00:00 2001 From: cbrzn Date: Mon, 23 Aug 2021 23:13:33 +0200 Subject: [PATCH 23/53] chore: update dependencies --- packages/apis/ens/package.json | 10 +- packages/apis/ens/web3api.build.yaml | 2 +- yarn.lock | 206 --------------------------- 3 files changed, 6 insertions(+), 212 deletions(-) diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index 3a95ba6c4c..c694d4ebe9 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -2,7 +2,7 @@ "name": "@polywrap/ens-wrapper", "description": "ENS Web3API", "private": true, - "version": "0.0.1-prealpha.30", + "version": "0.0.1-prealpha.35", "scripts": { "build": "npx w3 build", "test:env:up": "npx w3 test-env up", @@ -16,10 +16,10 @@ }, "devDependencies": { "@types/jest": "22.2.3", - "@web3api/cli": "0.0.1-prealpha.30", - "@web3api/ethereum-plugin-js": "0.0.1-prealpha.30", - "@web3api/test-env-js": "0.0.1-prealpha.30", - "@web3api/wasm-as": "0.0.1-prealpha.30", + "@web3api/cli": "0.0.1-prealpha.35", + "@web3api/ethereum-plugin-js": "0.0.1-prealpha.35", + "@web3api/test-env-js": "0.0.1-prealpha.35", + "@web3api/wasm-as": "0.0.1-prealpha.35", "ethers": "5.0.8", "jest": "27.0.6", "js-yaml": "3.14.0", diff --git a/packages/apis/ens/web3api.build.yaml b/packages/apis/ens/web3api.build.yaml index d89f6f4542..c5727d12ab 100644 --- a/packages/apis/ens/web3api.build.yaml +++ b/packages/apis/ens/web3api.build.yaml @@ -1,4 +1,4 @@ -format: 0.0.1-prealpha.2 +format: 0.0.1-prealpha.1 config: node_version: "14.16.0" include: diff --git a/yarn.lock b/yarn.lock index 0c1cc0a8ab..fdf1d07283 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4277,200 +4277,6 @@ "@uniswap/lib" "1.1.1" "@uniswap/v2-core" "1.0.0" -"@web3api/cli@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/cli/-/cli-0.0.1-prealpha.30.tgz#78acd3a0a5f0b488d5e48baf1529e368a351b671" - integrity sha512-fJhoKxLxV5Y27nI3J9R8iHZN9yXAEqX9lvIpc1LoLIAPHTTPIQOAQlr4PHT2dkA8guCsUkJ6ZpvMeTbymMIp1g== - dependencies: - "@formatjs/intl" "1.8.2" - "@web3api/client-js" "0.0.1-prealpha.30" - "@web3api/client-test-env" "0.0.1-prealpha.30" - "@web3api/core-js" "0.0.1-prealpha.30" - "@web3api/ens-plugin-js" "0.0.1-prealpha.30" - "@web3api/ethereum-plugin-js" "0.0.1-prealpha.30" - "@web3api/ipfs-plugin-js" "0.0.1-prealpha.30" - "@web3api/os-js" "0.0.1-prealpha.30" - "@web3api/schema-bind" "0.0.1-prealpha.30" - "@web3api/schema-compose" "0.0.1-prealpha.30" - "@web3api/schema-parse" "0.0.1-prealpha.30" - assemblyscript "0.19.1" - axios "0.19.2" - chalk "4.1.0" - chokidar "3.5.1" - copyfiles "2.4.1" - fs-extra "9.0.1" - gluegun "4.6.1" - graphql-tag "2.11.0" - ipfs-http-client "48.1.3" - js-yaml "3.14.0" - jsonschema "1.4.0" - mustache "4.0.1" - ora "4.0.0" - os-locale "5.0.0" - rimraf "3.0.2" - ws "7.3.1" - -"@web3api/client-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/client-js/-/client-js-0.0.1-prealpha.30.tgz#b60a999ccb447550693bd78716ba7cbac2ce17bb" - integrity sha512-coELa1uUFFv3ryTIgPJrDyR8b7bgpfzUpl7Al5wjtoQV6PUcr3jrxf/1ivbZ35lmlaOieJXVt/Ue0Pz7Xp4+SQ== - dependencies: - "@msgpack/msgpack" "2.3.0" - "@web3api/core-js" "0.0.1-prealpha.30" - "@web3api/ens-plugin-js" "0.0.1-prealpha.30" - "@web3api/ethereum-plugin-js" "0.0.1-prealpha.30" - "@web3api/ipfs-plugin-js" "0.0.1-prealpha.30" - "@web3api/logger-plugin-js" "0.0.1-prealpha.30" - "@web3api/schema-parse" "0.0.1-prealpha.30" - "@web3api/sha3-plugin-js" "0.0.1-prealpha.30" - "@web3api/tracing-js" "0.0.1-prealpha.30" - "@web3api/uts46-plugin-js" "0.0.1-prealpha.30" - graphql "15.5.0" - js-yaml "3.14.0" - web-worker "1.0.0" - -"@web3api/client-test-env@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/client-test-env/-/client-test-env-0.0.1-prealpha.30.tgz#2642ded4340cc10293f21a8a084a3a2f678f9e18" - integrity sha512-ECXkPOahYfKK4qnkqBsv9mDXW7cH4GP/Fq9y/IDAU5xonGHMV/aZy5CGdB3NIRLnhsDcpoV4/sjTyOqHqqVrvA== - dependencies: - axios "0.21.1" - dotenv "10.0.0" - -"@web3api/core-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/core-js/-/core-js-0.0.1-prealpha.30.tgz#33ad1c9351ab82d0cf56e3c744f07ae6648c884f" - integrity sha512-ikHCauBnTcc2Az4oZZGCCWUpSDfTnSZ6lDeJ126auRlIO//yUYDOby6elU1G0rctjG712ya+iV4lW+HhQttD/w== - dependencies: - "@web3api/manifest-schemas" "0.0.1-prealpha.30" - "@web3api/tracing-js" "0.0.1-prealpha.30" - graphql "15.5.0" - graphql-tag "2.10.4" - js-yaml "3.14.0" - jsonschema "1.4.0" - semver "7.3.4" - -"@web3api/ens-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/ens-plugin-js/-/ens-plugin-js-0.0.1-prealpha.30.tgz#75b846eb07cb75274bd331d96b36b203748d2142" - integrity sha512-C20jaRxGA6lKsu1Ypp3KPUwuHwt+CBK/kyZrw2zrrwFU+rcdaHzJipRQPCDarCwpQtvSzJ4MGArJTCIfl9ghvA== - dependencies: - "@ethersproject/address" "5.0.7" - "@web3api/core-js" "0.0.1-prealpha.30" - ethers "5.0.7" - -"@web3api/ethereum-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/ethereum-plugin-js/-/ethereum-plugin-js-0.0.1-prealpha.30.tgz#e1e65fe3d036f1178f140a98ffa9cc28ce3907b4" - integrity sha512-DxreVcE9NmRdwWwV30jYgwZqX5iaP3iqfYI/iit95n+SUhgQ0QgRYWp+CwPyG5+UMmJPWL2IZXR3obnQOMhIVw== - dependencies: - "@ethersproject/address" "5.0.7" - "@ethersproject/providers" "5.0.7" - "@web3api/core-js" "0.0.1-prealpha.30" - ethers "5.0.7" - -"@web3api/ipfs-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/ipfs-plugin-js/-/ipfs-plugin-js-0.0.1-prealpha.30.tgz#b2ee0f3409bcfb917079be55cc57b2a051949bc1" - integrity sha512-WQTok8/zlYC91IDdV4kCU/mAQXyrMjJDs3qoIrEleia6XZNcK7gsxJ0bVjqDPvHBqIfVmazBqN4MtJM/sVPXXw== - dependencies: - "@dorgjelli-test/ipfs-http-client-lite" "0.3.1" - "@web3api/core-js" "0.0.1-prealpha.30" - abort-controller "3.0.0" - cids "^1.1.4" - is-ipfs "1.0.3" - -"@web3api/logger-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/logger-plugin-js/-/logger-plugin-js-0.0.1-prealpha.30.tgz#25d0add55c47553f227e48c651b9779ac4728ea3" - integrity sha512-u9ChVzcqxIhhVwLri65jsFNqGBasq3Nn/hsp3++FOXwhc56rGS4Mt4SkGvb3HnjiHJLGTlIAATUozSV1uCREGA== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.30" - -"@web3api/manifest-schemas@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/manifest-schemas/-/manifest-schemas-0.0.1-prealpha.30.tgz#cbfae588fa6143d5ce0c2acb3f7cf129b1ea8b71" - integrity sha512-VrMnRwvfTGPbkVIr/bCCtYUkAn87/z/FDCdKvbBHG9yfcBMr0R6XcH9ag4XewnCpUdddiCyQkB1UdfaLCbjlHA== - -"@web3api/os-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/os-js/-/os-js-0.0.1-prealpha.30.tgz#ef12e42b99b32a1b47a396e0c1642eb45f6d0427" - integrity sha512-Tl+BFbLbBqlxz6FFJeUZX6V8D4tljgQw8ov260vJEZTwELiB6vTtaHNgUE8inxP5OY48RIHu/NGOdlyd03HNVQ== - -"@web3api/schema-bind@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/schema-bind/-/schema-bind-0.0.1-prealpha.30.tgz#22d1a21a18166ef3066eb63bdfecd74a0cbfd05f" - integrity sha512-gcl69sTZ08RRmalGplGzEqF/froi++BzWZ2wNsk57wGJmdragPIXgfdd/9F7AxCfey+0loelNDvXwmMhrXPloQ== - dependencies: - "@web3api/os-js" "0.0.1-prealpha.30" - "@web3api/schema-parse" "0.0.1-prealpha.30" - mustache "4.0.1" - -"@web3api/schema-compose@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/schema-compose/-/schema-compose-0.0.1-prealpha.30.tgz#c336794926a9616d217f98ba312f0b3a45f22c47" - integrity sha512-lo0bYic/zCKMUenJNG7xMLOU2JOZb5pDJIae4We8Ed1BlbVNmDINiS9e7sKHg86Xb6yHcknRzVUl/njmTclDsw== - dependencies: - "@web3api/schema-parse" "0.0.1-prealpha.30" - graphql "15.5.0" - mustache "4.0.1" - -"@web3api/schema-parse@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/schema-parse/-/schema-parse-0.0.1-prealpha.30.tgz#c79e951d4378ebaa872c09a70de7ed39e8f939f6" - integrity sha512-LLMpeAmrXETBzqpcFFyyT8jUu/GNwkNZm06n128kePkCIr9Wv/LXbSQgtr61aIPIRE0SbWBlYz3gXyt95OhaUw== - dependencies: - graphql "15.5.0" - graphql-schema-cycles "1.1.3" - -"@web3api/sha3-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/sha3-plugin-js/-/sha3-plugin-js-0.0.1-prealpha.30.tgz#8a6c759187bba00cc1e44299e0e79d330950b578" - integrity sha512-kXWGKtkvV1b5mfxehjy9JIp14h3shVH+mpQhHUOKQHsNYHd8ZFYjlOy7xXyHS5HiDlDRvZNEFYjbBuPQ68XO2Q== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.30" - js-sha3 "0.8.0" - -"@web3api/test-env-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/test-env-js/-/test-env-js-0.0.1-prealpha.30.tgz#9091b4b06d3354afadc9428d3e12f24e9449619f" - integrity sha512-9J8UG2rSP0VRlv5cTqZxAiFgA/ln3rj1G4+fjXaGF2x+QPNYrL46kwBYm2CaRiRbpAJ7pIvA/+SCyK1NfXV4iA== - dependencies: - axios "0.21.1" - spawn-command "0.0.2-1" - -"@web3api/tracing-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/tracing-js/-/tracing-js-0.0.1-prealpha.30.tgz#4d832baaa8baf9b9519b0f42baa27ce40467ddd5" - integrity sha512-bCeh2jTZop9xfnWh/LoQEyJjcxJo5xs3Xn2P0NlcmvbKhAulGJUe02FyZLwEWge2IORR/PZgRVBLQhxrOPDNXg== - dependencies: - "@opentelemetry/api" "0.20.0" - "@opentelemetry/context-zone" "0.20.0" - "@opentelemetry/core" "0.20.0" - "@opentelemetry/exporter-collector" "0.20.0" - "@opentelemetry/exporter-jaeger" "0.20.0" - "@opentelemetry/exporter-zipkin" "0.20.0" - "@opentelemetry/node" "0.20.0" - "@opentelemetry/propagator-b3" "0.20.0" - "@opentelemetry/tracing" "0.20.0" - "@opentelemetry/web" "0.20.0" - util-inspect "0.1.8" - -"@web3api/uts46-plugin-js@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/uts46-plugin-js/-/uts46-plugin-js-0.0.1-prealpha.30.tgz#a029cccac297482e95df542f5179af05b65c58c8" - integrity sha512-0UZ+uaLwHZN+eO6NCNwLGnmAZj0hR2GroZ8mZ+4uFpu55MnUw66v7guqrQKmQeB6qN2DYu8GF7UR5w8yRBAuYg== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.30" - idna-uts46-hx "3.4.0" - -"@web3api/wasm-as@0.0.1-prealpha.30": - version "0.0.1-prealpha.30" - resolved "https://registry.yarnpkg.com/@web3api/wasm-as/-/wasm-as-0.0.1-prealpha.30.tgz#a089abfcb6ea614c67412ef2a58f1f073e06dd8d" - integrity sha512-thoyq2lJrf0zcXV3VbAhRhTgmZBFXcuIBueqqmcstelxYmsHOOj1TvmQXlxVakcExIpxQvjJ4zCl9qMcaiGdXg== - dependencies: - as-bigint "0.2.4" - "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -18275,13 +18081,6 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - semver@7.3.5, semver@7.x, semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -20386,11 +20185,6 @@ web-encoding@^1.0.2, web-encoding@^1.0.6: optionalDependencies: "@zxing/text-encoding" "0.9.0" -web-worker@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.0.0.tgz#c7ced4e1eb6227636ada35056a9e5a477414e4d0" - integrity sha512-BzuMqeKVkKKwHV6tJuwePFcxYMxvC97D448mXTgh/CxXAB4sRtoV26gRPN+JDxsXRR7QZyioMV9O6NzQaASf7Q== - web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" From af4b88e3de29e0af715e19c5e195ab84e6d99cdf Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 24 Aug 2021 00:19:11 +0200 Subject: [PATCH 24/53] fix: ens wrapper builds again --- packages/apis/ens/src/__tests__/e2e.spec.ts | 4 +++- packages/apis/ens/src/utils.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index d6a69c2fb4..b0be15d2da 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -140,6 +140,7 @@ describe("ENS Wrapper", () => { variables: setResolverVariables, }); + console.log({ setResolverErrors }); expect(setResolverData?.setResolver).toBeDefined(); expect(setResolverErrors).toBeUndefined(); @@ -788,7 +789,8 @@ describe("ENS Wrapper", () => { configureOpenDomainData?.configureOpenDomain.fifsRegistrarAddress ); - customFifsRegistrarAddress = configureOpenDomainData?.configureOpenDomain.fifsRegistrarAddress!; + customFifsRegistrarAddress = configureOpenDomainData?.configureOpenDomain + .fifsRegistrarAddress!; }); it("should create subdomain in open domain", async () => { diff --git a/packages/apis/ens/src/utils.ts b/packages/apis/ens/src/utils.ts index a6b49e66dd..1353c44680 100644 --- a/packages/apis/ens/src/utils.ts +++ b/packages/apis/ens/src/utils.ts @@ -14,7 +14,7 @@ export function namehash(inputName: string): string { for(let i = labels.length - 1; i >= 0; i--) { let labelSha = SHA3_Query.keccak_256({ message: labels[i] }) - node = SHA3_Query.buffer_keccak_256({ message: (node + labelSha) }) + node = SHA3_Query.hex_keccak_256({ message: node + labelSha }) } } From 8fa743eaab1b7b2e4bfce8aa9e415da79b05d067 Mon Sep 17 00:00:00 2001 From: namesty Date: Sat, 4 Sep 2021 03:01:01 +0200 Subject: [PATCH 25/53] Linking packages, exclude test files from copying and updated manifest --- packages/cli/src/__tests__/e2e/build.spec.ts | 159 +++++++++++++----- .../web3api.build.linked-packages.yaml | 13 ++ .../project/web3api.linked-packages.yaml | 11 ++ packages/cli/src/lib/Compiler.ts | 50 +++++- .../wasm/assemblyscript/Dockerfile.mustache | 10 ++ .../formats/web3api.build/0.0.1-prealpha.2.ts | 4 + .../manifest/formats/web3api.build/index.ts | 10 +- .../manifest/formats/web3api.build/migrate.ts | 13 +- .../0.0.1-prealpha.1_to_0.0.1-prealpha.2.ts | 12 ++ .../formats/web3api.build/validate.ts | 2 + .../web3api.build/0.0.1-prealpha.2.json | 49 ++++++ 11 files changed, 283 insertions(+), 50 deletions(-) create mode 100644 packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml create mode 100644 packages/cli/src/__tests__/project/web3api.linked-packages.yaml create mode 100644 packages/js/core/src/manifest/formats/web3api.build/migrators/0.0.1-prealpha.1_to_0.0.1-prealpha.2.ts create mode 100644 packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json diff --git a/packages/cli/src/__tests__/e2e/build.spec.ts b/packages/cli/src/__tests__/e2e/build.spec.ts index 5eff45a6e8..87b54de099 100644 --- a/packages/cli/src/__tests__/e2e/build.spec.ts +++ b/packages/cli/src/__tests__/e2e/build.spec.ts @@ -20,10 +20,13 @@ describe("e2e tests for build command", () => { const projectRoot = path.resolve(__dirname, "../project/"); test("Should show help text", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "--help"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "--help"], + cwd: projectRoot, + }, + w3Cli + ); expect(code).toEqual(0); expect(error).toBe(""); @@ -31,10 +34,13 @@ describe("e2e tests for build command", () => { }); test("Should throw error for invalid params - outputDir", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "--output-dir"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "--output-dir"], + cwd: projectRoot, + }, + w3Cli + ); expect(code).toEqual(0); expect(error).toBe(""); @@ -44,10 +50,13 @@ ${HELP}`); }); test("Should throw error for invalid params - testEns", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "--test-ens"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "--test-ens"], + cwd: projectRoot, + }, + w3Cli + ); expect(code).toEqual(0); expect(error).toBe(""); @@ -57,10 +66,13 @@ ${HELP}`); }); test("Should throw error for invalid params - ipfs", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "--test-ens", "test.eth"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "--test-ens", "test.eth"], + cwd: projectRoot, + }, + w3Cli + ); expect(code).toEqual(0); expect(error).toBe(""); @@ -70,71 +82,126 @@ ${HELP}`); }); test("Should throw error for invalid web3api - invalid route", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "invalid-web3api-1.yaml"], - cwd: projectRoot - }, w3Cli); - - const schemaPath = path.normalize(`${projectRoot}/src/wrong/schema.graphql`); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "invalid-web3api-1.yaml"], + cwd: projectRoot, + }, + w3Cli + ); + + const schemaPath = path.normalize( + `${projectRoot}/src/wrong/schema.graphql` + ); expect(code).toEqual(1); expect(error).toBe(""); - expect(clearStyle(output)).toContain(`ENOENT: no such file or directory, open '${schemaPath}'`); + expect(clearStyle(output)).toContain( + `ENOENT: no such file or directory, open '${schemaPath}'` + ); }); test("Should throw error for invalid web3api - invalid field", async () => { - const { exitCode: code, stdout: output, stderr: error } = await runCLI({ - args: ["build", "invalid-web3api-2.yaml"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output, stderr: error } = await runCLI( + { + args: ["build", "invalid-web3api-2.yaml"], + cwd: projectRoot, + }, + w3Cli + ); expect(code).toEqual(1); expect(error).toBe(""); - expect(clearStyle(output)).toContain(`instance is not allowed to have the additional property \"wrong_mutation\"`); + expect(clearStyle(output)).toContain( + `instance is not allowed to have the additional property \"wrong_mutation\"` + ); }); test("Successfully build the project", async () => { - const { exitCode: code, stdout: output } = await runCLI({ - args: ["build", "-v"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output } = await runCLI( + { + args: ["build", "-v"], + cwd: projectRoot, + }, + w3Cli + ); const manifestPath = "build/web3api.yaml"; const sanitizedOutput = clearStyle(output); expect(code).toEqual(0); - expect(sanitizedOutput).toContain("Artifacts written to ./build from the image `build-env`"); - expect(sanitizedOutput).toContain("Manifest written to ./build/web3api.yaml"); + expect(sanitizedOutput).toContain( + "Artifacts written to ./build from the image `build-env`" + ); + expect(sanitizedOutput).toContain( + "Manifest written to ./build/web3api.yaml" + ); expect(sanitizedOutput).toContain(manifestPath); }); test("Successfully builds project w/ web3api.build.yaml but no dockerfile", async () => { - const { exitCode: code, stdout: output } = await runCLI({ - args: ["build", "web3api.no-docker.yaml", "-v"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output } = await runCLI( + { + args: ["build", "web3api.no-docker.yaml", "-v"], + cwd: projectRoot, + }, + w3Cli + ); + + const manifestPath = "build/web3api.yaml"; + const sanitizedOutput = clearStyle(output); + + expect(code).toEqual(0); + expect(sanitizedOutput).toContain( + "Artifacts written to ./build from the image `build-env`" + ); + expect(sanitizedOutput).toContain( + "Manifest written to ./build/web3api.yaml" + ); + expect(sanitizedOutput).toContain(manifestPath); + }); + + test("Successfully builds project w/ web3api.build.yaml and linked packages", async () => { + const { exitCode: code, stdout: output } = await runCLI( + { + args: ["build", "web3api.linked-packages.yaml", "-v"], + cwd: projectRoot, + }, + w3Cli + ); const manifestPath = "build/web3api.yaml"; const sanitizedOutput = clearStyle(output); expect(code).toEqual(0); - expect(sanitizedOutput).toContain("Artifacts written to ./build from the image `build-env`"); - expect(sanitizedOutput).toContain("Manifest written to ./build/web3api.yaml"); + expect(sanitizedOutput).toContain( + "Artifacts written to ./build from the image `build-env`" + ); + expect(sanitizedOutput).toContain( + "Manifest written to ./build/web3api.yaml" + ); expect(sanitizedOutput).toContain(manifestPath); }); test("Successfully builds project w/ dockerfile", async () => { - const { exitCode: code, stdout: output } = await runCLI({ - args: ["build", "web3api.docker.yaml", "-v"], - cwd: projectRoot - }, w3Cli); + const { exitCode: code, stdout: output } = await runCLI( + { + args: ["build", "web3api.docker.yaml", "-v"], + cwd: projectRoot, + }, + w3Cli + ); const manifestPath = "build/web3api.yaml"; const sanitizedOutput = clearStyle(output); expect(code).toEqual(0); - expect(sanitizedOutput).toContain("Artifacts written to ./build from the image `build-env`"); - expect(sanitizedOutput).toContain("Manifest written to ./build/web3api.yaml"); + expect(sanitizedOutput).toContain( + "Artifacts written to ./build from the image `build-env`" + ); + expect(sanitizedOutput).toContain( + "Manifest written to ./build/web3api.yaml" + ); expect(sanitizedOutput).toContain(manifestPath); }); }); diff --git a/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml b/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml new file mode 100644 index 0000000000..a1309cab94 --- /dev/null +++ b/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml @@ -0,0 +1,13 @@ +format: 0.0.1-prealpha.2 +docker: + name: build-env +config: + node_version: "14.16.0" + include: + - ./src + - ./package.json +linked-packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as + - name: "@web3api/ethereum-plugin-js" + path: ../../../../js/plugins/ethereum diff --git a/packages/cli/src/__tests__/project/web3api.linked-packages.yaml b/packages/cli/src/__tests__/project/web3api.linked-packages.yaml new file mode 100644 index 0000000000..4023010c0e --- /dev/null +++ b/packages/cli/src/__tests__/project/web3api.linked-packages.yaml @@ -0,0 +1,11 @@ +format: 0.0.1-prealpha.2 +repository: https://github.com +language: wasm/assemblyscript +build: ./web3api.build.linked-packages.yaml +modules: + mutation: + schema: ./src/mutation/schema.graphql + module: ./src/mutation/index.ts + query: + schema: ./src/query/schema.graphql + module: ./src/query/index.ts diff --git a/packages/cli/src/lib/Compiler.ts b/packages/cli/src/lib/Compiler.ts index 8be776e916..140e3e2029 100644 --- a/packages/cli/src/lib/Compiler.ts +++ b/packages/cli/src/lib/Compiler.ts @@ -287,7 +287,7 @@ export class Compiler { // Create the BuildManifest const buildManifest: BuildManifest = { - format: "0.0.1-prealpha.1", + format: "0.0.1-prealpha.2", __type: "BuildManifest", docker: { buildImageId: dockerImageId, @@ -325,6 +325,51 @@ export class Compiler { return `${path.dirname(absolute)}/w3`; } + private async _addLinkedPackagesToProjectConfig(): Promise { + const project = this._config.project; + const buildManifest = await project.getBuildManifest(); + const destinationDir = project.getCachePath("build/env/linked-packages"); + + const web3apiManifestPath = project.getWeb3ApiManifestPath(); + const root = path.dirname(web3apiManifestPath); + + if (buildManifest["linked-packages"]) { + buildManifest.config = { + ...buildManifest.config, + web3api_linked_packages: [], + }; + + fsExtra.ensureDirSync(destinationDir); + buildManifest["linked-packages"].map((linkedPackage) => { + fsExtra.copySync( + linkedPackage.path, + path.join(destinationDir, linkedPackage.name), + { + clobber: true, + filter: (src: string) => { + if (fs.lstatSync(src).isDirectory()) { + return true; + } + const isNotTestFile = /^(?!.*\.(test|spec)\.(js|ts)$).*\.*$/gm; + return isNotTestFile.test(src); + }, + } + ); + + (buildManifest.config?.web3api_linked_packages as { + dir: string; + name: string; + }[]).push({ + dir: path.relative( + root, + path.join(destinationDir, linkedPackage.name) + ), + name: linkedPackage.name, + }); + }); + } + } + private async _buildSourcesInDocker(): Promise { const { project, outputDir } = this._config; const buildManifestDir = await project.getBuildManifestDir(); @@ -338,12 +383,15 @@ export class Compiler { if (!buildManifest?.docker?.dockerfile) { // Make sure the default template is in the cached .w3/build/env folder await project.cacheDefaultBuildManifestFiles(); + dockerfile = generateDockerfile( project.getCachePath("build/env/Dockerfile.mustache"), buildManifest.config || {} ); } + await this._addLinkedPackagesToProjectConfig(); + // If the dockerfile path contains ".mustache", generate if (dockerfile.indexOf(".mustache") > -1) { dockerfile = generateDockerfile(dockerfile, buildManifest.config || {}); diff --git a/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache b/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache index 4a4b8ae925..880434c309 100644 --- a/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache +++ b/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache @@ -27,6 +27,16 @@ COPY {{.}} {{.}} COPY {{dir}} {{dir}} {{/web3api_modules}} +{{#web3api_modules}} +COPY {{dir}} {{dir}} +{{/web3api_modules}} + +{{#web3api_linked_packages}} +COPY {{dir}} ./linked-packages/{{name}} +RUN cd ./linked-packages/{{name}} && yarn link +RUN yarn link {{name}} +{{/web3api_linked_packages}} + {{#web3api_modules}} # Build the module at {{dir}} RUN ./node_modules/.bin/asc {{dir}}/w3/entry.ts \ diff --git a/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts b/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts index de59befad0..20d378f308 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts @@ -16,5 +16,9 @@ export interface BuildManifest { config?: { [k: string]: unknown; }; + "linked-packages"?: { + name: string; + path: string; + }[]; __type: "BuildManifest"; } diff --git a/packages/js/core/src/manifest/formats/web3api.build/index.ts b/packages/js/core/src/manifest/formats/web3api.build/index.ts index 1c65d69a8e..7b59719400 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/index.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/index.ts @@ -8,21 +8,27 @@ import { BuildManifest as BuildManifest0_0_1_prealpha_1 } from "./0.0.1-prealpha.1"; +import { + BuildManifest as BuildManifest0_0_1_prealpha_2 +} from "./0.0.1-prealpha.2"; export { BuildManifest0_0_1_prealpha_1, + BuildManifest0_0_1_prealpha_2, }; export enum BuildManifestFormats { "0.0.1-prealpha.1" = "0.0.1-prealpha.1", + "0.0.1-prealpha.2" = "0.0.1-prealpha.2", } export type AnyBuildManifest = | BuildManifest0_0_1_prealpha_1 + | BuildManifest0_0_1_prealpha_2 -export type BuildManifest = BuildManifest0_0_1_prealpha_1; +export type BuildManifest = BuildManifest0_0_1_prealpha_2; -export const latestBuildManifestFormat = BuildManifestFormats["0.0.1-prealpha.1"] +export const latestBuildManifestFormat = BuildManifestFormats["0.0.1-prealpha.2"] export { migrateBuildManifest } from "./migrate"; diff --git a/packages/js/core/src/manifest/formats/web3api.build/migrate.ts b/packages/js/core/src/manifest/formats/web3api.build/migrate.ts index 4ba65ad1d5..08d26e75be 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/migrate.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/migrate.ts @@ -11,6 +11,9 @@ import { latestBuildManifestFormat } from "."; +import { + migrate as migrate_0_0_1_prealpha_1_to_0_0_1_prealpha_2 +} from "./migrators/0.0.1-prealpha.1_to_0.0.1-prealpha.2"; import { Tracer } from "@web3api/tracing-js"; @@ -19,6 +22,7 @@ type Migrator = { }; export const migrators: Migrator = { + "0.0.1-prealpha.1": migrate_0_0_1_prealpha_1_to_0_0_1_prealpha_2, }; export const migrateBuildManifest = Tracer.traceFunc( @@ -34,6 +38,13 @@ export const migrateBuildManifest = Tracer.traceFunc( throw new Error(`Unrecognized BuildManifestFormat "${manifest.format}"`); } - throw new Error(`This should never happen, BuildManifest migrators is empty. from: ${from}, to: ${to}`); + const migrator = migrators[from]; + if (!migrator) { + throw new Error( + `Migrator from BuildManifestFormat "${from}" to "${to}" is not available` + ); + } + + return migrator(manifest); } ); diff --git a/packages/js/core/src/manifest/formats/web3api.build/migrators/0.0.1-prealpha.1_to_0.0.1-prealpha.2.ts b/packages/js/core/src/manifest/formats/web3api.build/migrators/0.0.1-prealpha.1_to_0.0.1-prealpha.2.ts new file mode 100644 index 0000000000..b8e2b4e656 --- /dev/null +++ b/packages/js/core/src/manifest/formats/web3api.build/migrators/0.0.1-prealpha.1_to_0.0.1-prealpha.2.ts @@ -0,0 +1,12 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +import { BuildManifest as OldManifest } from "../0.0.1-prealpha.1"; +import { BuildManifest as NewManifest } from "../0.0.1-prealpha.2"; + +export function migrate(old: OldManifest): NewManifest { + return { + ...old, + __type: "BuildManifest", + format: "0.0.1-prealpha.2", + }; +} diff --git a/packages/js/core/src/manifest/formats/web3api.build/validate.ts b/packages/js/core/src/manifest/formats/web3api.build/validate.ts index 107d3c731b..3e4d9962e8 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/validate.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/validate.ts @@ -11,6 +11,7 @@ import { import * as Validators from "../../validators"; import schema_0_0_1_prealpha_1 from "@web3api/manifest-schemas/formats/web3api.build/0.0.1-prealpha.1.json"; +import schema_0_0_1_prealpha_2 from "@web3api/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json"; import { Tracer } from "@web3api/tracing-js" import { @@ -26,6 +27,7 @@ type BuildManifestSchemas = { const schemas: BuildManifestSchemas = { "0.0.1-prealpha.1": schema_0_0_1_prealpha_1, + "0.0.1-prealpha.2": schema_0_0_1_prealpha_2, }; const validator = new Validator(); diff --git a/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json b/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json new file mode 100644 index 0000000000..a995d72bf4 --- /dev/null +++ b/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json @@ -0,0 +1,49 @@ +{ + "id": "BuildManifest", + "type": "object", + "additionalProperties": false, + "required": ["format"], + "properties": { + "format": { + "type": "string", + "const": "0.0.1-prealpha.2" + }, + "docker": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "format": "dockerImageName" + }, + "dockerfile": { + "type": "string", + "format": "dockerfileName" + }, + "buildImageId": { + "type": "string", + "format": "dockerImageId" + } + } + }, + "config": { + "type": "object" + }, + "linked-packages": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": ["name", "path"] + } + } + } +} From 0a29110534d2037eb3e8656b0e5d476a402a5ada Mon Sep 17 00:00:00 2001 From: cbrzn Date: Mon, 6 Sep 2021 15:43:40 +0200 Subject: [PATCH 26/53] chore: fix uts46 bug and added recipes to package metadata --- .../meta/queries/getAddressFromDomain.graphql | 9 ++++ .../ens/meta/recipes/deployFIFSRegistrar.json | 5 ++ .../apis/ens/meta/recipes/getAddress.json | 5 ++ .../meta/recipes/getAddressFromDomain.json | 5 ++ .../apis/ens/meta/recipes/getContentHash.json | 5 ++ .../ens/meta/recipes/getNameFromAddress.json | 5 ++ packages/apis/ens/meta/recipes/getOwner.json | 5 ++ .../apis/ens/meta/recipes/getResolver.json | 5 ++ packages/apis/ens/meta/recipes/register.json | 7 +++ .../ens/meta/recipes/reverseRegistrar.json | 6 +++ .../apis/ens/meta/recipes/setAddress.json | 6 +++ .../apis/ens/meta/recipes/setContentHash.json | 6 +++ packages/apis/ens/meta/recipes/setOwner.json | 6 +++ packages/apis/ens/meta/recipes/setRecord.json | 8 ++++ .../apis/ens/meta/recipes/setResolver.json | 6 +++ .../ens/meta/recipes/setSubdomainOwner.json | 6 +++ .../ens/meta/recipes/setSubdomainRecord.json | 9 ++++ packages/apis/ens/package.json | 8 ++-- packages/apis/ens/src/__tests__/e2e.spec.ts | 1 - packages/apis/ens/web3api.meta.yaml | 48 +++++++++++++++++++ .../plugins/uts46/src/__tests__/index.test.ts | 2 +- packages/js/plugins/uts46/src/resolvers.ts | 2 +- 22 files changed, 158 insertions(+), 7 deletions(-) create mode 100644 packages/apis/ens/meta/queries/getAddressFromDomain.graphql create mode 100644 packages/apis/ens/meta/recipes/deployFIFSRegistrar.json create mode 100644 packages/apis/ens/meta/recipes/getAddress.json create mode 100644 packages/apis/ens/meta/recipes/getAddressFromDomain.json create mode 100644 packages/apis/ens/meta/recipes/getContentHash.json create mode 100644 packages/apis/ens/meta/recipes/getNameFromAddress.json create mode 100644 packages/apis/ens/meta/recipes/getOwner.json create mode 100644 packages/apis/ens/meta/recipes/getResolver.json create mode 100644 packages/apis/ens/meta/recipes/register.json create mode 100644 packages/apis/ens/meta/recipes/reverseRegistrar.json create mode 100644 packages/apis/ens/meta/recipes/setAddress.json create mode 100644 packages/apis/ens/meta/recipes/setContentHash.json create mode 100644 packages/apis/ens/meta/recipes/setOwner.json create mode 100644 packages/apis/ens/meta/recipes/setRecord.json create mode 100644 packages/apis/ens/meta/recipes/setResolver.json create mode 100644 packages/apis/ens/meta/recipes/setSubdomainOwner.json create mode 100644 packages/apis/ens/meta/recipes/setSubdomainRecord.json diff --git a/packages/apis/ens/meta/queries/getAddressFromDomain.graphql b/packages/apis/ens/meta/queries/getAddressFromDomain.graphql new file mode 100644 index 0000000000..6e9bb6ef93 --- /dev/null +++ b/packages/apis/ens/meta/queries/getAddressFromDomain.graphql @@ -0,0 +1,9 @@ +query { + getAddressFromDomain( + domain: $domain + registryAddress: $registryAddress + connection: { + networkNameOrChainId: $network + } + ) +} diff --git a/packages/apis/ens/meta/recipes/deployFIFSRegistrar.json b/packages/apis/ens/meta/recipes/deployFIFSRegistrar.json new file mode 100644 index 0000000000..45c63806bf --- /dev/null +++ b/packages/apis/ens/meta/recipes/deployFIFSRegistrar.json @@ -0,0 +1,5 @@ +{ + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "tld": "coolTLD", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getAddress.json b/packages/apis/ens/meta/recipes/getAddress.json new file mode 100644 index 0000000000..448087eebb --- /dev/null +++ b/packages/apis/ens/meta/recipes/getAddress.json @@ -0,0 +1,5 @@ +{ + "domain": "web3api.eth", + "resolverAddress": "0x42D63ae25990889E35F215bC95884039Ba354115", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getAddressFromDomain.json b/packages/apis/ens/meta/recipes/getAddressFromDomain.json new file mode 100644 index 0000000000..89eb08c768 --- /dev/null +++ b/packages/apis/ens/meta/recipes/getAddressFromDomain.json @@ -0,0 +1,5 @@ +{ + "domain": "mydomain.eth", + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getContentHash.json b/packages/apis/ens/meta/recipes/getContentHash.json new file mode 100644 index 0000000000..63c2d4add8 --- /dev/null +++ b/packages/apis/ens/meta/recipes/getContentHash.json @@ -0,0 +1,5 @@ +{ + "domain": "realens.open.web3api.eth", + "resolverAddress": "0x42D63ae25990889E35F215bC95884039Ba354115", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getNameFromAddress.json b/packages/apis/ens/meta/recipes/getNameFromAddress.json new file mode 100644 index 0000000000..37b032e88d --- /dev/null +++ b/packages/apis/ens/meta/recipes/getNameFromAddress.json @@ -0,0 +1,5 @@ +{ + "address": "0x61FfE691821291D02E9Ba5D33098ADcee71a3a17", + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getOwner.json b/packages/apis/ens/meta/recipes/getOwner.json new file mode 100644 index 0000000000..7b7f28439e --- /dev/null +++ b/packages/apis/ens/meta/recipes/getOwner.json @@ -0,0 +1,5 @@ +{ + "domain": "open.web3api.eth", + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/getResolver.json b/packages/apis/ens/meta/recipes/getResolver.json new file mode 100644 index 0000000000..7b7f28439e --- /dev/null +++ b/packages/apis/ens/meta/recipes/getResolver.json @@ -0,0 +1,5 @@ +{ + "domain": "open.web3api.eth", + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/register.json b/packages/apis/ens/meta/recipes/register.json new file mode 100644 index 0000000000..ee0545cb28 --- /dev/null +++ b/packages/apis/ens/meta/recipes/register.json @@ -0,0 +1,7 @@ +{ + "domain": "test.yoyo.eth", + "registrarAddress": "0x0B2cE096F3b8e26B1497e81ca69a2b1Be28c7639", + "registryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e", + "owner": "0x61FfE691821291D02E9Ba5D33098ADcee71a3a17", + "network": "ropsten" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/reverseRegistrar.json b/packages/apis/ens/meta/recipes/reverseRegistrar.json new file mode 100644 index 0000000000..3a40bbbc6f --- /dev/null +++ b/packages/apis/ens/meta/recipes/reverseRegistrar.json @@ -0,0 +1,6 @@ +{ + "domain": "", + "reverseRegistryAddress": "", + "owner": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setAddress.json b/packages/apis/ens/meta/recipes/setAddress.json new file mode 100644 index 0000000000..5fdf8f1ac6 --- /dev/null +++ b/packages/apis/ens/meta/recipes/setAddress.json @@ -0,0 +1,6 @@ +{ + "domain": "", + "address": "", + "resolverAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setContentHash.json b/packages/apis/ens/meta/recipes/setContentHash.json new file mode 100644 index 0000000000..52075ddb4e --- /dev/null +++ b/packages/apis/ens/meta/recipes/setContentHash.json @@ -0,0 +1,6 @@ +{ + "domain": "", + "cid": "", + "resolverAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setOwner.json b/packages/apis/ens/meta/recipes/setOwner.json new file mode 100644 index 0000000000..0d030fa9b0 --- /dev/null +++ b/packages/apis/ens/meta/recipes/setOwner.json @@ -0,0 +1,6 @@ +{ + "domain": "", + "newOwner": "", + "registryAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setRecord.json b/packages/apis/ens/meta/recipes/setRecord.json new file mode 100644 index 0000000000..364474d219 --- /dev/null +++ b/packages/apis/ens/meta/recipes/setRecord.json @@ -0,0 +1,8 @@ +{ + "domain": "", + "owner": "", + "resolverAddress": "", + "ttl": "", + "registryAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setResolver.json b/packages/apis/ens/meta/recipes/setResolver.json new file mode 100644 index 0000000000..01dd2ec60c --- /dev/null +++ b/packages/apis/ens/meta/recipes/setResolver.json @@ -0,0 +1,6 @@ +{ + "domain": "", + "resolverAddress": "", + "registryAddress": "", + "network": "" +} \ No newline at end of file diff --git a/packages/apis/ens/meta/recipes/setSubdomainOwner.json b/packages/apis/ens/meta/recipes/setSubdomainOwner.json new file mode 100644 index 0000000000..de31f4cc77 --- /dev/null +++ b/packages/apis/ens/meta/recipes/setSubdomainOwner.json @@ -0,0 +1,6 @@ +{ + "subdomain": "", + "owner": "", + "registryAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/setSubdomainRecord.json b/packages/apis/ens/meta/recipes/setSubdomainRecord.json new file mode 100644 index 0000000000..9a4c01d7a1 --- /dev/null +++ b/packages/apis/ens/meta/recipes/setSubdomainRecord.json @@ -0,0 +1,9 @@ +{ + "domain": "", + "label": "", + "owner": "", + "resolverAddress": "", + "ttl": "", + "registryAddress": "", + "network": "" +} diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index c694d4ebe9..11163d0e75 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -16,10 +16,10 @@ }, "devDependencies": { "@types/jest": "22.2.3", - "@web3api/cli": "0.0.1-prealpha.35", - "@web3api/ethereum-plugin-js": "0.0.1-prealpha.35", - "@web3api/test-env-js": "0.0.1-prealpha.35", - "@web3api/wasm-as": "0.0.1-prealpha.35", + "@web3api/cli": "0.0.1-prealpha.39", + "@web3api/ethereum-plugin-js": "0.0.1-prealpha.39", + "@web3api/test-env-js": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.39", "ethers": "5.0.8", "jest": "27.0.6", "js-yaml": "3.14.0", diff --git a/packages/apis/ens/src/__tests__/e2e.spec.ts b/packages/apis/ens/src/__tests__/e2e.spec.ts index b0be15d2da..e055d798bf 100644 --- a/packages/apis/ens/src/__tests__/e2e.spec.ts +++ b/packages/apis/ens/src/__tests__/e2e.spec.ts @@ -140,7 +140,6 @@ describe("ENS Wrapper", () => { variables: setResolverVariables, }); - console.log({ setResolverErrors }); expect(setResolverData?.setResolver).toBeDefined(); expect(setResolverErrors).toBeUndefined(); diff --git a/packages/apis/ens/web3api.meta.yaml b/packages/apis/ens/web3api.meta.yaml index 937e01c8ab..d663183a35 100644 --- a/packages/apis/ens/web3api.meta.yaml +++ b/packages/apis/ens/web3api.meta.yaml @@ -3,7 +3,55 @@ subtext: Wrapper for ENS domains description: Protocol that allows you to attach your address to a human readable string icon: ./meta/imgs/logo.png queries: + - name: Deploy FIFS Registrar + query: ./meta/queries/deployFIFSRegistrar.graphql + recipe: ./meta/recipes/deployFIFSRegistrar.json + - name: Get address + query: ./meta/queries/getAddress.graphql + recipe: ./meta/recipes/getAddress.json + - name: Get address from domain + query: ./meta/queries/getAddressFromDomain.graphql + recipe: ./meta/recipes/getAddressFromDomain.json + - name: Get content hash + query: ./meta/queries/getContentHash.graphql + recipe: ./meta/recipes/getContentHash.json + - name: Get expiry times + query: ./meta/queries/getExpiryTimes.graphql + recipe: ./meta/recipes/getExpiryTimes.json + - name: Get owner + query: ./meta/queries/getOwner.graphql + recipe: ./meta/recipes/getOwner.json + - name: Get resolver + query: ./meta/queries/getResolver.graphql + recipe: ./meta/recipes/getResolver.json + - name: Register domain + query: ./meta/queries/register.graphql + recipe: ./meta/recipes/register.json + - name: Set reverse register + query: ./meta/queries/reverseRegistrer.graphql + recipe: ./meta/recipes/reverseRegistrer.json + - name: Set address + query: ./meta/queries/setAddress.graphql + recipe: ./meta/recipes/setAddress.json + - name: Set content hash + query: ./meta/queries/setContentHash.graphql + recipe: ./meta/recipes/setContentHash.json + - name: Set owner + query: ./meta/queries/setOwner.graphql + recipe: ./meta/recipes/setOwner.json + - name: Set record + query: ./meta/queries/setRecord.graphql + recipe: ./meta/recipes/setRecord.json + - name: Set subdomain owner + query: ./meta/queries/setSubdomainOwner.graphql + recipe: ./meta/recipes/setSubdomainOwner.json + - name: Set subdomain record + query: ./meta/queries/setSubdomainRecord.graphql + recipe: ./meta/recipes/setSubdomainRecord.json + - name: Set Resolver query: ./meta/queries/setResolver.graphql + - name: Get Resolver + query: ./meta/queries/getResolver.graphql - name: Get Resolver query: ./meta/queries/getResolver.graphql \ No newline at end of file diff --git a/packages/js/plugins/uts46/src/__tests__/index.test.ts b/packages/js/plugins/uts46/src/__tests__/index.test.ts index 92e29b6369..8b8489486b 100644 --- a/packages/js/plugins/uts46/src/__tests__/index.test.ts +++ b/packages/js/plugins/uts46/src/__tests__/index.test.ts @@ -1,6 +1,6 @@ import { Web3ApiClient } from "@web3api/client-js"; -import uts46 from "idna-uts46-hx"; import { uts46Plugin } from ".."; +const uts46 = require("idna-uts46-hx/uts46bundle.js"); const textToConvert = "xn-bb-eka.at"; diff --git a/packages/js/plugins/uts46/src/resolvers.ts b/packages/js/plugins/uts46/src/resolvers.ts index 314779d15a..59c229565c 100644 --- a/packages/js/plugins/uts46/src/resolvers.ts +++ b/packages/js/plugins/uts46/src/resolvers.ts @@ -1,5 +1,5 @@ import { Query } from "./w3"; -import uts46 from "idna-uts46-hx"; +const uts46 = require("idna-uts46-hx/uts46bundle.js"); export const query = (): Query.Module => ({ toAscii: (input: Query.Input_toAscii) => { From d6dec79b82bbc356b71b10cfb46803c22087f72f Mon Sep 17 00:00:00 2001 From: cbrzn Date: Tue, 7 Sep 2021 18:01:22 +0200 Subject: [PATCH 27/53] chore: configuring subdomain recipes added --- .../meta/queries/configureOpenDomain.graphql | 10 + .../createSubdomainInOpenDomain.graphql | 11 + ...omainInOpenDomainAndSetContentHash.graphql | 12 + .../ens/meta/recipes/configureOpenDomain.json | 8 + .../recipes/createSubdomainInOpenDomain.json | 9 + ...ubdomainInOpenDomainAndSetContentHash.json | 10 + packages/apis/ens/web3api.meta.yaml | 16 +- yarn.lock | 209 ++++++++++++++++++ 8 files changed, 278 insertions(+), 7 deletions(-) create mode 100644 packages/apis/ens/meta/queries/configureOpenDomain.graphql create mode 100644 packages/apis/ens/meta/queries/createSubdomainInOpenDomain.graphql create mode 100644 packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql create mode 100644 packages/apis/ens/meta/recipes/configureOpenDomain.json create mode 100644 packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json create mode 100644 packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json diff --git a/packages/apis/ens/meta/queries/configureOpenDomain.graphql b/packages/apis/ens/meta/queries/configureOpenDomain.graphql new file mode 100644 index 0000000000..2ea12a6336 --- /dev/null +++ b/packages/apis/ens/meta/queries/configureOpenDomain.graphql @@ -0,0 +1,10 @@ +mutation { + configureOpenDomain( + tld: $tld + owner: $owner + registrarAddress: $registrarAddress + registryAddress: $registryAddress + resolverAddress: $resolverAddress + connection: { networkNameOrChainId: $network } + ) +} diff --git a/packages/apis/ens/meta/queries/createSubdomainInOpenDomain.graphql b/packages/apis/ens/meta/queries/createSubdomainInOpenDomain.graphql new file mode 100644 index 0000000000..c315d47084 --- /dev/null +++ b/packages/apis/ens/meta/queries/createSubdomainInOpenDomain.graphql @@ -0,0 +1,11 @@ +mutation { + createSubdomainInOpenDomain( + label: $label + domain: $domain + owner: $owner + fifsRegistrarAddress: $fifsRegistrarAddress + registryAddress: $registryAddress + resolverAddress: $resolverAddress + connection: { networkNameOrChainId: $network } + ) +} diff --git a/packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql b/packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql new file mode 100644 index 0000000000..cea17ca0e6 --- /dev/null +++ b/packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql @@ -0,0 +1,12 @@ +mutation { + createSubdomainInOpenDomainAndSetContentHash( + label: $label + domain: $domain + owner: $owner + fifsRegistrarAddress: $fifsRegistrarAddress + registryAddress: $registryAddress + resolverAddress: $resolverAddress + cid: $cid + connection: { networkNameOrChainId: $network } + ) +} diff --git a/packages/apis/ens/meta/recipes/configureOpenDomain.json b/packages/apis/ens/meta/recipes/configureOpenDomain.json new file mode 100644 index 0000000000..7b477a431f --- /dev/null +++ b/packages/apis/ens/meta/recipes/configureOpenDomain.json @@ -0,0 +1,8 @@ +{ + "tld": "", + "owner": "", + "registrarAddress": "", + "registryAddress": "", + "resolverAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json b/packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json new file mode 100644 index 0000000000..c30f450234 --- /dev/null +++ b/packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json @@ -0,0 +1,9 @@ +{ + "label": "", + "domain": "", + "owner": "", + "fifsRegistrarAddress": "", + "registryAddress": "", + "resolverAddress": "", + "network": "" +} diff --git a/packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json b/packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json new file mode 100644 index 0000000000..482ad8ce35 --- /dev/null +++ b/packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json @@ -0,0 +1,10 @@ +{ + "label": "", + "domain": "", + "owner": "", + "fifsRegistrarAddress": "", + "registryAddress": "", + "resolverAddress": "", + "cid": "", + "network": "" +} diff --git a/packages/apis/ens/web3api.meta.yaml b/packages/apis/ens/web3api.meta.yaml index d663183a35..de57cd9b86 100644 --- a/packages/apis/ens/web3api.meta.yaml +++ b/packages/apis/ens/web3api.meta.yaml @@ -3,6 +3,15 @@ subtext: Wrapper for ENS domains description: Protocol that allows you to attach your address to a human readable string icon: ./meta/imgs/logo.png queries: + - name: Configure open domain + query: ./meta/queries/configureOpenDomain.graphql + recipe: ./meta/recipes/configureOpenDomain.json + - name: Create subdomain in open domain + query: ./meta/queries/createSubdomainInOpenDomain.graphql + recipe: ./meta/recipes/createSubdomainInOpenDomain.json + - name: Create subdomain in open domain and set content hash + query: ./meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql + recipe: ./meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json - name: Deploy FIFS Registrar query: ./meta/queries/deployFIFSRegistrar.graphql recipe: ./meta/recipes/deployFIFSRegistrar.json @@ -48,10 +57,3 @@ queries: - name: Set subdomain record query: ./meta/queries/setSubdomainRecord.graphql recipe: ./meta/recipes/setSubdomainRecord.json - - - name: Set Resolver - query: ./meta/queries/setResolver.graphql - - name: Get Resolver - query: ./meta/queries/getResolver.graphql - - name: Get Resolver - query: ./meta/queries/getResolver.graphql \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ee67e94ad8..1e526558c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4227,6 +4227,215 @@ "@uniswap/lib" "1.1.1" "@uniswap/v2-core" "1.0.0" +"@web3api/asyncify-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/asyncify-js/-/asyncify-js-0.0.1-prealpha.39.tgz#335945d490092448f7db4f7479bfecaa8532c4c1" + integrity sha512-eMXKH9z0kUhdeQzcwOYXnNyHcKqr+ZQxt+GJm0wMc4aiSkYvsJNael+TAiND035SEwHhGGJ+9IF5eDlkDlCqWQ== + +"@web3api/cli@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/cli/-/cli-0.0.1-prealpha.39.tgz#b27b86e6623b9a8c6dfc0130b6c5656f480f52d6" + integrity sha512-SO7x8kMCwjZE2NafKppeN7ykJW/OEAaD/anLDp1qWMNrViBHeBhYXo2BDRI9YjOEYJgfXxOdbNhfI8xfW8xWzQ== + dependencies: + "@formatjs/intl" "1.8.2" + "@web3api/asyncify-js" "0.0.1-prealpha.39" + "@web3api/client-js" "0.0.1-prealpha.39" + "@web3api/client-test-env" "0.0.1-prealpha.39" + "@web3api/core-js" "0.0.1-prealpha.39" + "@web3api/ens-plugin-js" "0.0.1-prealpha.39" + "@web3api/ethereum-plugin-js" "0.0.1-prealpha.39" + "@web3api/ipfs-plugin-js" "0.0.1-prealpha.39" + "@web3api/os-js" "0.0.1-prealpha.39" + "@web3api/schema-bind" "0.0.1-prealpha.39" + "@web3api/schema-compose" "0.0.1-prealpha.39" + "@web3api/schema-parse" "0.0.1-prealpha.39" + assemblyscript "0.19.1" + axios "0.19.2" + chalk "4.1.0" + chokidar "3.5.1" + copyfiles "2.4.1" + fs-extra "9.0.1" + gluegun "4.6.1" + graphql-tag "2.11.0" + ipfs-http-client "48.1.3" + js-yaml "3.14.0" + jsonschema "1.4.0" + mustache "4.0.1" + ora "4.0.0" + os-locale "5.0.0" + rimraf "3.0.2" + ws "7.3.1" + +"@web3api/client-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/client-js/-/client-js-0.0.1-prealpha.39.tgz#f7c8cc8c18e634c32a06d4b8e086d5b3bf6bb83a" + integrity sha512-AlE2p2++1as/jR/prTNsa7/tA7kXE6bSC2vesz5QkIG+Nf4ZmTXt+jF31TooUF78gp5T0p6VeDuWydVYf0DFww== + dependencies: + "@msgpack/msgpack" "2.3.0" + "@web3api/asyncify-js" "0.0.1-prealpha.39" + "@web3api/core-js" "0.0.1-prealpha.39" + "@web3api/ens-plugin-js" "0.0.1-prealpha.39" + "@web3api/ethereum-plugin-js" "0.0.1-prealpha.39" + "@web3api/http-plugin-js" "0.0.1-prealpha.39" + "@web3api/ipfs-plugin-js" "0.0.1-prealpha.39" + "@web3api/logger-plugin-js" "0.0.1-prealpha.39" + "@web3api/schema-parse" "0.0.1-prealpha.39" + "@web3api/sha3-plugin-js" "0.0.1-prealpha.39" + "@web3api/tracing-js" "0.0.1-prealpha.39" + "@web3api/uts46-plugin-js" "0.0.1-prealpha.39" + graphql "15.5.0" + js-yaml "3.14.0" + +"@web3api/client-test-env@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/client-test-env/-/client-test-env-0.0.1-prealpha.39.tgz#d1d09ff6ca0f72e77ab5dbf96800d727709d1415" + integrity sha512-FeOX05aeluUi8xG++u3rNc3XGtkv4Ha7VPQkPTjI4C4m46Onwg2EIkALUHXjGg7Gxmtn7AqDsBt6LOY9J6Vulg== + dependencies: + axios "0.21.1" + dotenv "10.0.0" + +"@web3api/core-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/core-js/-/core-js-0.0.1-prealpha.39.tgz#2a11224198ce7de2fc22aef771e790138634f3d2" + integrity sha512-7jRCQ3l64I+iMR32tv22cFy5HKnzmaRyhoCZuUbr9n6F273Na7ZSrqeRlH4l4ap0H3oXzwgmtiMQ3Di3kIDXQA== + dependencies: + "@web3api/manifest-schemas" "0.0.1-prealpha.39" + "@web3api/tracing-js" "0.0.1-prealpha.39" + graphql "15.5.0" + graphql-tag "2.10.4" + js-yaml "3.14.0" + jsonschema "1.4.0" + semver "7.3.5" + +"@web3api/ens-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/ens-plugin-js/-/ens-plugin-js-0.0.1-prealpha.39.tgz#8987897f716c18f6aa21873961a83442d26a41d5" + integrity sha512-yVrHsaxAUFWjcH31yK0jD15PJoMko3essNGTVopg9mRP+E1X7CwB3ArGlxBPV+1HDZLEAdWAhlvy5dt3Vrk9kg== + dependencies: + "@ethersproject/address" "5.0.7" + "@web3api/core-js" "0.0.1-prealpha.39" + ethers "5.0.7" + +"@web3api/ethereum-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/ethereum-plugin-js/-/ethereum-plugin-js-0.0.1-prealpha.39.tgz#ebe9ae13ad443b9c38be9f52f7a12424b6cdaf0b" + integrity sha512-ne00a+DAJMNRds/O23+3wdSUNKx5lrZfAx8rKrCZ0To3wEfsptuJzhWuLqZvbl+rUY4oBSg7Z3tMRPYgfuRepA== + dependencies: + "@ethersproject/address" "5.0.7" + "@ethersproject/providers" "5.0.7" + "@web3api/core-js" "0.0.1-prealpha.39" + ethers "5.0.7" + +"@web3api/http-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/http-plugin-js/-/http-plugin-js-0.0.1-prealpha.39.tgz#f32b56dde5bbe354f5a4a00052b4b95a642ad683" + integrity sha512-kA5rqPoCWYfZumJdZYUZUrHLq2Ysd1AkTgsdIM46NRdbuQX1Pn4yIxDFk+cA5KmEeDG1znIevITKe17trLeHmw== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.39" + axios "0.21.1" + +"@web3api/ipfs-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/ipfs-plugin-js/-/ipfs-plugin-js-0.0.1-prealpha.39.tgz#472d0c99c4b43fcf77aefc5b92c1c1b6a87d0487" + integrity sha512-JnT8LVEMA6f6qTvDeoDJgkp7MFlecjbgDE+Z6bgTxP9UG7U2JpssEZv7aPiTlj3oq6M9l3bmd7+hyq7+PjqPGg== + dependencies: + "@dorgjelli-test/ipfs-http-client-lite" "0.3.1" + "@web3api/core-js" "0.0.1-prealpha.39" + abort-controller "3.0.0" + cids "^1.1.4" + is-ipfs "1.0.3" + +"@web3api/logger-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/logger-plugin-js/-/logger-plugin-js-0.0.1-prealpha.39.tgz#d2f6727987543e108d45f1fcc6febbce5c1baf4e" + integrity sha512-ugD0NQu2OojyTwKE0fWwxhsQt2ZO/jpeAR+5+C70GSORFg2Oo+2Vkw2iinfaxAGfBO3wUUj40WiefiwVK9FGxA== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.39" + +"@web3api/manifest-schemas@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/manifest-schemas/-/manifest-schemas-0.0.1-prealpha.39.tgz#410ededb9e34a4264b19a32f55f32a35c9e42f32" + integrity sha512-Ka+ZpPKS00MZIMzbZHAS2/vqQP3SQuVW4ulq7U7N2N1TowWZ/Chu4HPoh+NbaXl7u+F/Dx2aUpp3z6vnVGFSrg== + +"@web3api/os-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/os-js/-/os-js-0.0.1-prealpha.39.tgz#4ea1db7e1b87d089f2071af0a31bbc3c894cc06f" + integrity sha512-gLrdY1tGPN2wJHP7NYO2gMBnDZMH6KkbuHpZGgp/yw37oREzTrvLxa+E2wreLWNUTaicPhp+RcWjhP5Dt8IpYA== + +"@web3api/schema-bind@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/schema-bind/-/schema-bind-0.0.1-prealpha.39.tgz#ad4350e4c1d5ae14e052c5d4d78e32762749b9db" + integrity sha512-ZKoiBrhMXgNvjBnpvhREH55ZJ11lSAED3DTPwViJ51/DTVw+rbqoZthy2z72d9lfpAYfHRwlJ7hKIC4SsRSJYQ== + dependencies: + "@web3api/os-js" "0.0.1-prealpha.39" + "@web3api/schema-parse" "0.0.1-prealpha.39" + mustache "4.0.1" + +"@web3api/schema-compose@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/schema-compose/-/schema-compose-0.0.1-prealpha.39.tgz#c14d5e7757d7dfaa59c40e276f9d768d05365826" + integrity sha512-dJWt5Uyib1CG1xESiZY9wusw1jF/6PFrOHKdNSXs/qYqKu6QIHAHP6yfTbLKR/W+xc/6RZJQu5Lk0ephnsq6iw== + dependencies: + "@web3api/schema-parse" "0.0.1-prealpha.39" + graphql "15.5.0" + mustache "4.0.1" + +"@web3api/schema-parse@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/schema-parse/-/schema-parse-0.0.1-prealpha.39.tgz#747abae8d34a42cbf4496acaf980f5ab451f0e87" + integrity sha512-kMWrq/FBEch3j+zIBQyhhEaDtdn/OowMqNteH4B74pRqRE4crzPutqtyp7g96FrWGoHuzJ1rU7V4SH/47YY0YQ== + dependencies: + graphql "15.5.0" + graphql-schema-cycles "1.1.3" + +"@web3api/sha3-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/sha3-plugin-js/-/sha3-plugin-js-0.0.1-prealpha.39.tgz#4aec1cc8358ea702019555d89d123866fe79773a" + integrity sha512-9xD9zWpSu4h+eV5wdAVocDWlxfzj3yXZju2BrncvA9INv2W7/dU2hRJ8DPyE+5vNPOV0axna7wfCDsyN1fIdmQ== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.39" + js-sha3 "0.8.0" + +"@web3api/test-env-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/test-env-js/-/test-env-js-0.0.1-prealpha.39.tgz#fb6ff69c5f1eec7a3873e6b95a35d079193b5abd" + integrity sha512-E/cS1+Z129hXhQYP49DxhFRRHqa15taZ3bQvu2U7SwE0PcqcIIiUybbmgWR5RLWusYnu9MhJiBweQ/Dc4PPr8g== + dependencies: + axios "0.21.1" + spawn-command "0.0.2-1" + +"@web3api/tracing-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/tracing-js/-/tracing-js-0.0.1-prealpha.39.tgz#5d8573ce90fa891a940860912f3a071878bfee60" + integrity sha512-AJf483cVB00eywR78XBwt6kXzf7VOb0EDRBSeq1tPcOK4u2grO7jJgSPeW2DrzrCHYwzym4VP3fYQkiTJMCBlw== + dependencies: + "@opentelemetry/api" "0.20.0" + "@opentelemetry/context-zone" "0.20.0" + "@opentelemetry/core" "0.20.0" + "@opentelemetry/exporter-collector" "0.20.0" + "@opentelemetry/exporter-jaeger" "0.20.0" + "@opentelemetry/exporter-zipkin" "0.20.0" + "@opentelemetry/node" "0.20.0" + "@opentelemetry/propagator-b3" "0.20.0" + "@opentelemetry/tracing" "0.20.0" + "@opentelemetry/web" "0.20.0" + util-inspect "0.1.8" + +"@web3api/uts46-plugin-js@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/uts46-plugin-js/-/uts46-plugin-js-0.0.1-prealpha.39.tgz#5c025b6001b4759023c3c23adfa178edc3285bb3" + integrity sha512-Dz7KquBaVUPXeDjrI3ECi8jyS5i1RH+fGbmkjXz6kykqU9S0Dra4DFafoht6oc8q1ZNxZlgXu0LLEG8OiIuy5g== + dependencies: + "@web3api/core-js" "0.0.1-prealpha.39" + idna-uts46-hx "3.4.0" + +"@web3api/wasm-as@0.0.1-prealpha.39": + version "0.0.1-prealpha.39" + resolved "https://registry.yarnpkg.com/@web3api/wasm-as/-/wasm-as-0.0.1-prealpha.39.tgz#2092c7d25776051fe16b60e1c604fef12f262785" + integrity sha512-6Btwq5E54M3xFxOhwqJ3s+x1uuvJOwBdVjTUxTJTHyQ5DlY2FLhOXpHejOU7/5fhHwP4PpS2bxyHMKY2c1+d8w== + dependencies: + as-bigint "0.2.4" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" From eadbf94f365e5b8c1a5256489e9ce76b62f1872b Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Tue, 7 Sep 2021 21:50:23 -0500 Subject: [PATCH 28/53] minor changes --- packages/cli/package.json | 4 +- .../cli/src/__tests__/project/package.json | 6 +- .../web3api.build.linked-packages.yaml | 4 +- packages/cli/src/lib/Compiler.ts | 67 +++---------------- .../wasm/assemblyscript/Dockerfile.mustache | 17 +++-- packages/cli/src/lib/project/Project.ts | 5 +- .../cli/src/lib/project/Web3ApiProject.ts | 59 +++++++++++++++- .../src/__tests__/Web3ApiClient.spec.ts | 2 +- .../formats/web3api.build/0.0.1-prealpha.2.ts | 3 +- .../formats/web3api.build/validate.ts | 1 + packages/js/core/src/manifest/validators.ts | 15 +++++ .../web3api.build/0.0.1-prealpha.2.json | 6 +- .../cases/apis/asyncify/package.json | 2 +- .../cases/apis/asyncify/web3api.build.yaml | 6 ++ .../cases/apis/asyncify/web3api.yaml | 23 +++---- .../cases/apis/bigint-type/package.json | 2 +- .../cases/apis/bigint-type/web3api.build.yaml | 6 ++ .../cases/apis/bigint-type/web3api.yaml | 14 ++-- .../cases/apis/bytes-type/package.json | 2 +- .../cases/apis/bytes-type/web3api.build.yaml | 6 ++ .../cases/apis/bytes-type/web3api.yaml | 14 ++-- .../cases/apis/enum-types/package.json | 2 +- .../cases/apis/enum-types/web3api.build.yaml | 6 ++ .../cases/apis/enum-types/web3api.yaml | 14 ++-- .../implementations/test-api/package.json | 2 +- .../test-api/web3api.build.yaml | 6 ++ .../implementations/test-api/web3api.yaml | 23 +++---- .../cases/apis/invalid-types/package.json | 2 +- .../apis/invalid-types/web3api.build.yaml | 6 ++ .../cases/apis/invalid-types/web3api.yaml | 14 ++-- .../cases/apis/large-types/package.json | 2 +- .../cases/apis/large-types/web3api.build.yaml | 6 ++ .../cases/apis/large-types/web3api.yaml | 14 ++-- .../cases/apis/number-types/package.json | 2 +- .../apis/number-types/web3api.build.yaml | 6 ++ .../cases/apis/number-types/web3api.yaml | 14 ++-- .../cases/apis/object-types/package.json | 2 +- .../apis/object-types/web3api.build.yaml | 6 ++ .../cases/apis/object-types/web3api.yaml | 14 ++-- .../cases/apis/simple-storage/package.json | 2 +- .../apis/simple-storage/web3api.build.yaml | 5 +- yarn.lock | 17 +++++ 42 files changed, 270 insertions(+), 159 deletions(-) create mode 100644 packages/test-cases/cases/apis/asyncify/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/bigint-type/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/bytes-type/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/enum-types/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/implementations/test-api/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/invalid-types/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/large-types/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/number-types/web3api.build.yaml create mode 100644 packages/test-cases/cases/apis/object-types/web3api.build.yaml diff --git a/packages/cli/package.json b/packages/cli/package.json index bc0da7a839..a9d58b2d5b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -51,13 +51,15 @@ "mustache": "4.0.1", "ora": "4.0.0", "os-locale": "5.0.0", + "regex-parser": "2.2.11", "rimraf": "3.0.2", "ws": "7.3.1" }, "devDependencies": { "@types/copyfiles": "2.4.0", + "@types/fs-extra": "9.0.12", "@types/jest": "26.0.8", - "@types/node": "12.7.11", + "@types/node": "12.12.26", "@types/rimraf": "3.0.0", "@web3api/test-env-js": "0.0.1-prealpha.40", "cross-env": "7.0.3", diff --git a/packages/cli/src/__tests__/project/package.json b/packages/cli/src/__tests__/project/package.json index 798c688320..80f06fb525 100644 --- a/packages/cli/src/__tests__/project/package.json +++ b/packages/cli/src/__tests__/project/package.json @@ -9,9 +9,11 @@ "test:env:up": "w3 test-env up && yarn contracts:deploy", "test:env:down": "w3 test-env down" }, - "devDependencies": { - "@web3api/ethereum-plugin-js": "0.0.1-prealpha.40", + "dependencies": { "@web3api/wasm-as": "0.0.1-prealpha.40", + "@web3api/ethereum-plugin-js": "0.0.1-prealpha.40" + }, + "devDependencies": { "assemblyscript": "0.19.1", "ethers": "5.0.7", "js-yaml": "3.14.0" diff --git a/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml b/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml index a1309cab94..c9f58efb43 100644 --- a/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml +++ b/packages/cli/src/__tests__/project/web3api.build.linked-packages.yaml @@ -6,8 +6,10 @@ config: include: - ./src - ./package.json -linked-packages: +linked_packages: - name: "@web3api/wasm-as" path: ../../../../wasm/as + filter: /\.(test|spec)\.(js|ts)$/gm - name: "@web3api/ethereum-plugin-js" path: ../../../../js/plugins/ethereum + filter: /\.(test|spec)\.(js|ts)$/gm diff --git a/packages/cli/src/lib/Compiler.ts b/packages/cli/src/lib/Compiler.ts index d45f6b1a12..62084e7b93 100644 --- a/packages/cli/src/lib/Compiler.ts +++ b/packages/cli/src/lib/Compiler.ts @@ -29,9 +29,7 @@ import { writeFileSync } from "@web3api/os-js"; import * as gluegun from "gluegun"; import fs from "fs"; import path from "path"; - -// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports -const fsExtra = require("fs-extra"); +import rimraf from "rimraf"; type ModulesToBuild = Record; @@ -95,7 +93,7 @@ export class Compiler { const state = await this._getCompilerState(); // Init & clean output directory - this._cleanDir(this._config.outputDir); + this._resetDir(this._config.outputDir); await this._outputComposedSchema(state); @@ -215,11 +213,11 @@ export class Compiler { // Clean the code generation if (queryDirectory) { - this._cleanDir(queryDirectory); + this._resetDir(queryDirectory); } if (mutationDirectory) { - this._cleanDir(mutationDirectory); + this._resetDir(mutationDirectory); } // Generate the bindings @@ -334,51 +332,6 @@ export class Compiler { return `${path.dirname(absolute)}/w3`; } - private async _addLinkedPackagesToProjectConfig(): Promise { - const project = this._config.project; - const buildManifest = await project.getBuildManifest(); - const destinationDir = project.getCachePath("build/env/linked-packages"); - - const web3apiManifestPath = project.getWeb3ApiManifestPath(); - const root = path.dirname(web3apiManifestPath); - - if (buildManifest["linked-packages"]) { - buildManifest.config = { - ...buildManifest.config, - web3api_linked_packages: [], - }; - - fsExtra.ensureDirSync(destinationDir); - buildManifest["linked-packages"].map((linkedPackage) => { - fsExtra.copySync( - linkedPackage.path, - path.join(destinationDir, linkedPackage.name), - { - clobber: true, - filter: (src: string) => { - if (fs.lstatSync(src).isDirectory()) { - return true; - } - const isNotTestFile = /^(?!.*\.(test|spec)\.(js|ts)$).*\.*$/gm; - return isNotTestFile.test(src); - }, - } - ); - - (buildManifest.config?.web3api_linked_packages as { - dir: string; - name: string; - }[]).push({ - dir: path.relative( - root, - path.join(destinationDir, linkedPackage.name) - ), - name: linkedPackage.name, - }); - }); - } - } - private async _buildSourcesInDocker(): Promise { const { project, outputDir } = this._config; const buildManifestDir = await project.getBuildManifestDir(); @@ -388,6 +341,8 @@ export class Compiler { ? path.join(buildManifestDir, buildManifest?.docker?.dockerfile) : path.join(buildManifestDir, "Dockerfile"); + await project.cacheBuildManifestLinkedPackages(); + // If the dockerfile path isn't provided, generate it if (!buildManifest?.docker?.dockerfile) { // Make sure the default template is in the cached .w3/build/env folder @@ -399,8 +354,6 @@ export class Compiler { ); } - await this._addLinkedPackagesToProjectConfig(); - // If the dockerfile path contains ".mustache", generate if (dockerfile.indexOf(".mustache") > -1) { dockerfile = generateDockerfile(dockerfile, buildManifest.config || {}); @@ -423,12 +376,12 @@ export class Compiler { return dockerImageId; } - private _cleanDir(dir: string) { - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); + private _resetDir(dir: string) { + if (fs.existsSync(dir)) { + rimraf.sync(dir); } - fsExtra.emptyDirSync(dir); + fs.mkdirSync(dir, { recursive: true }); } private async _outputComposedSchema(state: CompilerState): Promise { diff --git a/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache b/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache index 880434c309..d8061d0ce3 100644 --- a/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache +++ b/packages/cli/src/lib/build-envs/wasm/assemblyscript/Dockerfile.mustache @@ -7,11 +7,22 @@ RUN apk --no-cache --virtual build-dependencies add \ make \ g++ +{{#web3api_linked_packages.length}} +WORKDIR /linked-packages +{{/web3api_linked_packages.length}} + +{{#web3api_linked_packages}} +COPY {{dir}} ./{{name}} +{{/web3api_linked_packages}} + WORKDIR /project # Install deps in its own step, making rebuilds faster # when just the Web3API schema & implementation files change COPY package.json . +{{#web3api_linked_packages}} +RUN npx json -I -f package.json -e "this.dependencies['{{name}}']='../linked-packages/{{name}}'" +{{/web3api_linked_packages}} RUN yarn # Copy all manifest files @@ -31,12 +42,6 @@ COPY {{dir}} {{dir}} COPY {{dir}} {{dir}} {{/web3api_modules}} -{{#web3api_linked_packages}} -COPY {{dir}} ./linked-packages/{{name}} -RUN cd ./linked-packages/{{name}} && yarn link -RUN yarn link {{name}} -{{/web3api_linked_packages}} - {{#web3api_modules}} # Build the module at {{dir}} RUN ./node_modules/.bin/asc {{dir}}/w3/entry.ts \ diff --git a/packages/cli/src/lib/project/Project.ts b/packages/cli/src/lib/project/Project.ts index 82e8d6e8d0..d1c0e792fe 100644 --- a/packages/cli/src/lib/project/Project.ts +++ b/packages/cli/src/lib/project/Project.ts @@ -42,7 +42,8 @@ export abstract class Project { public async copyFilesIntoCache( destSubfolder: string, - sourceFolder: string + sourceFolder: string, + options: copyfiles.Options = {} ): Promise { const dest = this.getCachePath(destSubfolder); @@ -51,7 +52,7 @@ export abstract class Project { } await new Promise((resolve, reject) => { - copyfiles([sourceFolder, dest], { up: true }, (error) => { + copyfiles([sourceFolder, dest], options, (error) => { if (error) { reject(error); } else { diff --git a/packages/cli/src/lib/project/Web3ApiProject.ts b/packages/cli/src/lib/project/Web3ApiProject.ts index c421515a2f..a5e7e08096 100644 --- a/packages/cli/src/lib/project/Web3ApiProject.ts +++ b/packages/cli/src/lib/project/Web3ApiProject.ts @@ -12,8 +12,10 @@ import { intlMsg } from "../intl"; import { Web3ApiManifest, BuildManifest, MetaManifest } from "@web3api/core-js"; import { TargetLanguage } from "@web3api/schema-bind"; import { normalizePath } from "@web3api/os-js"; +import regexParser from "regex-parser"; import path from "path"; import fs from "fs"; +import fsExtra from "fs-extra"; export interface Web3ApiProjectConfig extends ProjectConfig { web3apiManifestPath: string; @@ -209,6 +211,9 @@ export class Web3ApiProject extends Project { this.quiet ); + const root = this.getRootDir(); + const cacheDir = this.getCachePath(this.getLinkedPackagesCacheSubPath()); + // Add default env variables const defaultConfig = { web3api_modules: (await this.getWeb3ApiModules()).map( @@ -224,6 +229,12 @@ export class Web3ApiProject extends Project { return normalizePath(path); } ), + web3api_linked_packages: this._buildManifest.linked_packages?.map( + (linkedPackage: { name: string }) => ({ + dir: path.relative(root, path.join(cacheDir, linkedPackage.name)), + name: linkedPackage.name, + }) + ), }; if (!this._buildManifest.config) { @@ -262,11 +273,57 @@ export class Web3ApiProject extends Project { this.removeCacheDir("build/env"); await this.copyFilesIntoCache( "build/env/", - `${__dirname}/../build-envs/${language}/*` + `${__dirname}/../build-envs/${language}/*`, + { up: true } ); this._defaultBuildManifestCached = true; } + public async cacheBuildManifestLinkedPackages(): Promise { + const buildManifest = await this.getBuildManifest(); + + if (buildManifest.linked_packages) { + const rootDir = this.getRootDir(); + const cacheSubPath = this.getCachePath( + this.getLinkedPackagesCacheSubPath() + ); + + buildManifest.linked_packages.map( + (linkedPackage: { path: string; name: string; filter?: string }) => { + const sourceDir = path.join(rootDir, linkedPackage.path); + const destinationDir = path.join(cacheSubPath, linkedPackage.name); + + // Update the cache + this.removeCacheDir(destinationDir); + fsExtra.copySync(sourceDir, destinationDir, { + overwrite: true, + dereference: true, + recursive: true, + filter: (src: string) => { + if (fs.lstatSync(src).isSymbolicLink()) { + return false; + } + + if (linkedPackage.filter) { + const regexFilter = regexParser(linkedPackage.filter); + const result = regexFilter.test(src); + if (result) { + return false; + } + } + + return true; + }, + }); + } + ); + } + } + + public getLinkedPackagesCacheSubPath(): string { + return "build/linked-packages"; + } + /// Web3API Meta Manifest (web3api.build.yaml) public async getMetaManifestPath(): Promise { diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index eafce943a8..83559bd3cf 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -1778,8 +1778,8 @@ type Logger_Query @imported( ### Imported Objects START ### enum Logger_LogLevel @imported( - namespace: "Logger", uri: "ens/logger.core.web3api.eth", + namespace: "Logger", nativeType: "LogLevel" ) { DEBUG diff --git a/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts b/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts index 20d378f308..ffa766832a 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/0.0.1-prealpha.2.ts @@ -16,9 +16,10 @@ export interface BuildManifest { config?: { [k: string]: unknown; }; - "linked-packages"?: { + linked_packages?: { name: string; path: string; + filter?: string; }[]; __type: "BuildManifest"; } diff --git a/packages/js/core/src/manifest/formats/web3api.build/validate.ts b/packages/js/core/src/manifest/formats/web3api.build/validate.ts index 3e4d9962e8..2df52d5c0f 100644 --- a/packages/js/core/src/manifest/formats/web3api.build/validate.ts +++ b/packages/js/core/src/manifest/formats/web3api.build/validate.ts @@ -35,6 +35,7 @@ const validator = new Validator(); Validator.prototype.customFormats.dockerImageName = Validators.dockerImageName; Validator.prototype.customFormats.dockerfileName = Validators.dockerfileName; Validator.prototype.customFormats.dockerImageId = Validators.dockerImageId; +Validator.prototype.customFormats.regexString = Validators.regexString; export const validateBuildManifest = Tracer.traceFunc( "core: validateBuildManifest", diff --git a/packages/js/core/src/manifest/validators.ts b/packages/js/core/src/manifest/validators.ts index 2c987a19df..3c3de4163a 100644 --- a/packages/js/core/src/manifest/validators.ts +++ b/packages/js/core/src/manifest/validators.ts @@ -86,3 +86,18 @@ export function yamlFile(filePath: unknown): boolean { !!filePath.match(/(\.yaml)$/)?.length ); } + +export function regexString(regex: unknown): boolean { + if (typeof regex !== "string") { + return false; + } + + let isValid = true; + try { + new RegExp(regex); + } catch (e) { + isValid = false; + } + + return isValid; +} diff --git a/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json b/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json index a995d72bf4..621b652c3f 100644 --- a/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json +++ b/packages/manifest-schemas/formats/web3api.build/0.0.1-prealpha.2.json @@ -29,7 +29,7 @@ "config": { "type": "object" }, - "linked-packages": { + "linked_packages": { "type": "array", "items": { "type": "object", @@ -40,6 +40,10 @@ }, "path": { "type": "string" + }, + "filter": { + "type": "string", + "format": "regexString" } }, "required": ["name", "path"] diff --git a/packages/test-cases/cases/apis/asyncify/package.json b/packages/test-cases/cases/apis/asyncify/package.json index 8fe6b0326d..ea62e9471e 100644 --- a/packages/test-cases/cases/apis/asyncify/package.json +++ b/packages/test-cases/cases/apis/asyncify/package.json @@ -2,7 +2,7 @@ "name": "test-case-asyncify", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/asyncify/web3api.build.yaml b/packages/test-cases/cases/apis/asyncify/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/asyncify/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/asyncify/web3api.yaml b/packages/test-cases/cases/apis/asyncify/web3api.yaml index df25e85f69..9b0a84358d 100644 --- a/packages/test-cases/cases/apis/asyncify/web3api.yaml +++ b/packages/test-cases/cases/apis/asyncify/web3api.yaml @@ -1,13 +1,10 @@ -format: 0.0.1-prealpha.1 -mutation: - schema: - file: ./mutation/schema.graphql - module: - language: wasm/assemblyscript - file: ./mutation/index.ts -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts + mutation: + schema: ./mutation/schema.graphql + module: ./mutation/index.ts diff --git a/packages/test-cases/cases/apis/bigint-type/package.json b/packages/test-cases/cases/apis/bigint-type/package.json index d7e744fb23..1adcf2d819 100644 --- a/packages/test-cases/cases/apis/bigint-type/package.json +++ b/packages/test-cases/cases/apis/bigint-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-bigint-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/bigint-type/web3api.build.yaml b/packages/test-cases/cases/apis/bigint-type/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/bigint-type/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/bigint-type/web3api.yaml b/packages/test-cases/cases/apis/bigint-type/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/bigint-type/web3api.yaml +++ b/packages/test-cases/cases/apis/bigint-type/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/bytes-type/package.json b/packages/test-cases/cases/apis/bytes-type/package.json index 400f7b5f2c..f154cb8e00 100644 --- a/packages/test-cases/cases/apis/bytes-type/package.json +++ b/packages/test-cases/cases/apis/bytes-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-bytes-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/bytes-type/web3api.build.yaml b/packages/test-cases/cases/apis/bytes-type/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/bytes-type/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/bytes-type/web3api.yaml b/packages/test-cases/cases/apis/bytes-type/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/bytes-type/web3api.yaml +++ b/packages/test-cases/cases/apis/bytes-type/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/enum-types/package.json b/packages/test-cases/cases/apis/enum-types/package.json index be26d728d0..b114ed30e5 100644 --- a/packages/test-cases/cases/apis/enum-types/package.json +++ b/packages/test-cases/cases/apis/enum-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-enum-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/enum-types/web3api.build.yaml b/packages/test-cases/cases/apis/enum-types/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/enum-types/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/enum-types/web3api.yaml b/packages/test-cases/cases/apis/enum-types/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/enum-types/web3api.yaml +++ b/packages/test-cases/cases/apis/enum-types/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/implementations/test-api/package.json b/packages/test-cases/cases/apis/implementations/test-api/package.json index 914593b302..eabb6f1a83 100644 --- a/packages/test-cases/cases/apis/implementations/test-api/package.json +++ b/packages/test-cases/cases/apis/implementations/test-api/package.json @@ -2,7 +2,7 @@ "name": "test-case-implementation", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/implementations/test-api/web3api.build.yaml b/packages/test-cases/cases/apis/implementations/test-api/web3api.build.yaml new file mode 100644 index 0000000000..ecef0619bf --- /dev/null +++ b/packages/test-cases/cases/apis/implementations/test-api/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../../wasm/as diff --git a/packages/test-cases/cases/apis/implementations/test-api/web3api.yaml b/packages/test-cases/cases/apis/implementations/test-api/web3api.yaml index 991899e89d..b08bee98d5 100644 --- a/packages/test-cases/cases/apis/implementations/test-api/web3api.yaml +++ b/packages/test-cases/cases/apis/implementations/test-api/web3api.yaml @@ -1,16 +1,13 @@ -format: 0.0.1-prealpha.1 -mutation: - schema: - file: ./mutation/schema.graphql - module: - language: wasm/assemblyscript - file: ./mutation/index.ts -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts + mutation: + schema: ./mutation/schema.graphql + module: ./mutation/index.ts import_redirects: - uri: w3://ens/interface.eth schema: ../test-interface/build/schema.graphql \ No newline at end of file diff --git a/packages/test-cases/cases/apis/invalid-types/package.json b/packages/test-cases/cases/apis/invalid-types/package.json index e55a23c46c..ec8b2293c4 100644 --- a/packages/test-cases/cases/apis/invalid-types/package.json +++ b/packages/test-cases/cases/apis/invalid-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-invalid-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/invalid-types/web3api.build.yaml b/packages/test-cases/cases/apis/invalid-types/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/invalid-types/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/invalid-types/web3api.yaml b/packages/test-cases/cases/apis/invalid-types/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/invalid-types/web3api.yaml +++ b/packages/test-cases/cases/apis/invalid-types/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/large-types/package.json b/packages/test-cases/cases/apis/large-types/package.json index 839be412a4..0e2d65337e 100644 --- a/packages/test-cases/cases/apis/large-types/package.json +++ b/packages/test-cases/cases/apis/large-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-large-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/large-types/web3api.build.yaml b/packages/test-cases/cases/apis/large-types/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/large-types/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/large-types/web3api.yaml b/packages/test-cases/cases/apis/large-types/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/large-types/web3api.yaml +++ b/packages/test-cases/cases/apis/large-types/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/number-types/package.json b/packages/test-cases/cases/apis/number-types/package.json index f20f25845c..fcf049405f 100644 --- a/packages/test-cases/cases/apis/number-types/package.json +++ b/packages/test-cases/cases/apis/number-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-number-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/number-types/web3api.build.yaml b/packages/test-cases/cases/apis/number-types/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/number-types/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/number-types/web3api.yaml b/packages/test-cases/cases/apis/number-types/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/number-types/web3api.yaml +++ b/packages/test-cases/cases/apis/number-types/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/object-types/package.json b/packages/test-cases/cases/apis/object-types/package.json index 479233c309..d176eeb999 100644 --- a/packages/test-cases/cases/apis/object-types/package.json +++ b/packages/test-cases/cases/apis/object-types/package.json @@ -2,7 +2,7 @@ "name": "test-case-object-types", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/object-types/web3api.build.yaml b/packages/test-cases/cases/apis/object-types/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/object-types/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/object-types/web3api.yaml b/packages/test-cases/cases/apis/object-types/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/object-types/web3api.yaml +++ b/packages/test-cases/cases/apis/object-types/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/test-cases/cases/apis/simple-storage/package.json b/packages/test-cases/cases/apis/simple-storage/package.json index ba7af4c8e4..e9ed9f130a 100644 --- a/packages/test-cases/cases/apis/simple-storage/package.json +++ b/packages/test-cases/cases/apis/simple-storage/package.json @@ -2,7 +2,7 @@ "name": "test-case-simple-storage", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } \ No newline at end of file diff --git a/packages/test-cases/cases/apis/simple-storage/web3api.build.yaml b/packages/test-cases/cases/apis/simple-storage/web3api.build.yaml index e6479581e6..98c2aa3fcd 100644 --- a/packages/test-cases/cases/apis/simple-storage/web3api.build.yaml +++ b/packages/test-cases/cases/apis/simple-storage/web3api.build.yaml @@ -1,6 +1,9 @@ -format: 0.0.1-prealpha.1 +format: 0.0.1-prealpha.2 config: node_version: "14.16.0" include: - ./query - ./mutation +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/yarn.lock b/yarn.lock index 78c1a317af..4ac0f65927 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3603,6 +3603,13 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/fs-extra@9.0.12": + version "9.0.12" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.12.tgz#9b8f27973df8a7a3920e8461517ebf8a7d4fdfaf" + integrity sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw== + dependencies: + "@types/node" "*" + "@types/glob@*", "@types/glob@^7.1.1": version "7.1.4" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" @@ -3703,6 +3710,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61" integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw== +"@types/node@12.12.26": + version "12.12.26" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.26.tgz#213e153babac0ed169d44a6d919501e68f59dea9" + integrity sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA== + "@types/node@12.6.9": version "12.6.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.9.tgz#ffeee23afdc19ab16e979338e7b536fdebbbaeaf" @@ -16727,6 +16739,11 @@ regex-parser@2.2.10: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regex-parser@2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" From db5881e026ba587e59fe3dc0c21d6d87dc84ba08 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Tue, 7 Sep 2021 22:02:24 -0500 Subject: [PATCH 29/53] fix build --- packages/js/os/package.json | 2 +- packages/templates/app/react/package.json | 2 +- yarn.lock | 5 ----- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/js/os/package.json b/packages/js/os/package.json index bd34db8f7d..6f7b5f66d3 100644 --- a/packages/js/os/package.json +++ b/packages/js/os/package.json @@ -16,7 +16,7 @@ "lint": "eslint --color --ext .ts src/" }, "devDependencies": { - "@types/node": "12.7.11", + "@types/node": "12.12.26", "rimraf": "3.0.2", "typescript": "4.0.7" }, diff --git a/packages/templates/app/react/package.json b/packages/templates/app/react/package.json index 822cdf93a7..2193506287 100644 --- a/packages/templates/app/react/package.json +++ b/packages/templates/app/react/package.json @@ -22,7 +22,7 @@ "typescript": "4.0.7" }, "devDependencies": { - "@types/node": "12.7.11", + "@types/node": "12.12.26", "@types/react": "16.9.0", "@types/react-dom": "16.9.0", "@types/react-lottie": "1.2.5" diff --git a/yarn.lock b/yarn.lock index 4ac0f65927..efe48dd033 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3720,11 +3720,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.9.tgz#ffeee23afdc19ab16e979338e7b536fdebbbaeaf" integrity sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw== -"@types/node@12.7.11": - version "12.7.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.11.tgz#be879b52031cfb5d295b047f5462d8ef1a716446" - integrity sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw== - "@types/node@^12.12.6": version "12.20.19" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.19.tgz#538e61fc220f77ae4a4663c3d8c3cb391365c209" From dbe86a0eba873fb5541659771ea66d0922d307ff Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:35:57 -0500 Subject: [PATCH 30/53] fixing test-cases --- .../plugin/expected-schema/schema.graphql | 1 + .../__tests__/plugin/expected-types/schema.ts | 1 + packages/cli/src/__tests__/project/sample.ts | 3 + .../src/__tests__/Web3ApiClient.spec.ts | 1 + .../bind/src/bindings/plugin-ts/functions.ts | 3 + .../plugin-ts/templates/mutation-ts.mustache | 1 + .../plugin-ts/templates/query-ts.mustache | 1 + .../plugin-ts/templates/types-ts.mustache | 1 + .../bind/src/bindings/wasm-as/functions.ts | 4 +- .../object-type/serialization-ts.mustache | 4 +- .../query-type/serialization-ts.mustache | 4 +- .../object-type/serialization-ts.mustache | 4 +- .../query-type/serialization-ts.mustache | 4 +- .../testimport.uri.eth/schema.graphql | 1 + .../bind/sanity/imports-local/common.graphql | 2 + .../bind/sanity/output/plugin-ts/mutation.ts | 1 + .../bind/sanity/output/plugin-ts/query.ts | 1 + .../bind/sanity/output/plugin-ts/schema.ts | 3 + .../bind/sanity/output/plugin-ts/types.ts | 3 + .../mutation/Mutation/serialization.ts | 146 +++++------------- .../local-imports/output/mutation.graphql | 1 + .../local-imports/output/query.graphql | 1 + .../local-imports/output/schema.graphql | 1 + .../imports-ext/interface.eth/schema.graphql | 1 + .../just.mutation.eth/schema.graphql | 1 + .../imports-ext/test.eth/schema.graphql | 1 + .../compose/sanity/output/mutation.graphql | 1 + .../cases/compose/sanity/output/query.graphql | 1 + .../compose/sanity/output/schema.graphql | 1 + .../cases/parse/sanity/input.graphql | 3 + .../test-cases/cases/parse/sanity/output.ts | 4 +- 31 files changed, 85 insertions(+), 120 deletions(-) diff --git a/packages/cli/src/__tests__/plugin/expected-schema/schema.graphql b/packages/cli/src/__tests__/plugin/expected-schema/schema.graphql index de2a79ac23..1d2bb0be45 100644 --- a/packages/cli/src/__tests__/plugin/expected-schema/schema.graphql +++ b/packages/cli/src/__tests__/plugin/expected-schema/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/cli/src/__tests__/plugin/expected-types/schema.ts b/packages/cli/src/__tests__/plugin/expected-types/schema.ts index 4803945623..f9e20a1316 100644 --- a/packages/cli/src/__tests__/plugin/expected-types/schema.ts +++ b/packages/cli/src/__tests__/plugin/expected-types/schema.ts @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/cli/src/__tests__/project/sample.ts b/packages/cli/src/__tests__/project/sample.ts index 6db1122d96..6b8b638941 100644 --- a/packages/cli/src/__tests__/project/sample.ts +++ b/packages/cli/src/__tests__/project/sample.ts @@ -11,6 +11,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! @@ -239,6 +240,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! @@ -463,6 +465,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 68986fffd4..d37054b5da 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -1766,6 +1766,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/schema/bind/src/bindings/plugin-ts/functions.ts b/packages/schema/bind/src/bindings/plugin-ts/functions.ts index 1f6ae267ae..f06810e5f7 100644 --- a/packages/schema/bind/src/bindings/plugin-ts/functions.ts +++ b/packages/schema/bind/src/bindings/plugin-ts/functions.ts @@ -29,6 +29,9 @@ export const toTypescript: MustacheFunction = () => { case "Bytes": case "BigInt": break; + case "JSON": + type = "Json"; + break; default: if (type.includes("Enum_")) { type = `Types.${type.replace("Enum_", "")}`; diff --git a/packages/schema/bind/src/bindings/plugin-ts/templates/mutation-ts.mustache b/packages/schema/bind/src/bindings/plugin-ts/templates/mutation-ts.mustache index 0cb6b45fb2..12a9b299a0 100644 --- a/packages/schema/bind/src/bindings/plugin-ts/templates/mutation-ts.mustache +++ b/packages/schema/bind/src/bindings/plugin-ts/templates/mutation-ts.mustache @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/schema/bind/src/bindings/plugin-ts/templates/query-ts.mustache b/packages/schema/bind/src/bindings/plugin-ts/templates/query-ts.mustache index 0cb6b45fb2..12a9b299a0 100644 --- a/packages/schema/bind/src/bindings/plugin-ts/templates/query-ts.mustache +++ b/packages/schema/bind/src/bindings/plugin-ts/templates/query-ts.mustache @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache b/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache index e59ad3c74a..9264405866 100644 --- a/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache @@ -16,6 +16,7 @@ export type Int16 = number; export type Int32 = number; export type Bytes = Uint8Array; export type BigInt = string; +export type Json = unknown; export type String = string; export type Boolean = boolean; diff --git a/packages/schema/bind/src/bindings/wasm-as/functions.ts b/packages/schema/bind/src/bindings/wasm-as/functions.ts index f016a2b9e5..19113018e6 100644 --- a/packages/schema/bind/src/bindings/wasm-as/functions.ts +++ b/packages/schema/bind/src/bindings/wasm-as/functions.ts @@ -69,7 +69,7 @@ export const toWasmInit: MustacheFunction = () => { case "BigInt": return `BigInt.fromUInt16(0)`; case "JSON": - return `JSON.Value.Object()`; + return `JSON.Value.Null()`; default: if (type.includes("Enum_")) { return "0"; @@ -132,7 +132,7 @@ export const toWasm: MustacheFunction = () => { type = "BigInt"; break; case "JSON": - type = "JSON.Obj"; + type = "JSON.Value"; break; default: if (type.includes("Enum_")) { diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache index d97dd24547..42ddb4ed6a 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/object-type/serialization-ts.mustache @@ -7,8 +7,8 @@ import { WriteEncoder, Nullable, BigInt, - Context, - JSON + JSON, + Context } from "@web3api/wasm-as"; import { {{type}} } from "./"; import * as Types from "../.."; diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache index f6195205cc..1d8d2f5166 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/imported/query-type/serialization-ts.mustache @@ -7,8 +7,8 @@ import { WriteEncoder, ReadDecoder, BigInt, - Context, - JSON + JSON, + Context } from "@web3api/wasm-as"; import * as Types from "../.."; diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache index db3cc45191..e06f059b7b 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/object-type/serialization-ts.mustache @@ -7,8 +7,8 @@ import { WriteEncoder, Nullable, BigInt, - Context, - JSON + JSON, + Context } from "@web3api/wasm-as"; import { {{type}} } from "./"; import * as Types from ".."; diff --git a/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache b/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache index 142bbbfee9..9828b2868e 100644 --- a/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache +++ b/packages/schema/bind/src/bindings/wasm-as/templates/query-type/serialization-ts.mustache @@ -6,8 +6,8 @@ import { Write, Nullable, BigInt, - Context, - JSON + JSON, + Context } from "@web3api/wasm-as"; import * as Types from ".."; {{#methods}} diff --git a/packages/test-cases/cases/bind/sanity/imports-ext/testimport.uri.eth/schema.graphql b/packages/test-cases/cases/bind/sanity/imports-ext/testimport.uri.eth/schema.graphql index 30d0071cf3..bfe17f7315 100644 --- a/packages/test-cases/cases/bind/sanity/imports-ext/testimport.uri.eth/schema.graphql +++ b/packages/test-cases/cases/bind/sanity/imports-ext/testimport.uri.eth/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/bind/sanity/imports-local/common.graphql b/packages/test-cases/cases/bind/sanity/imports-local/common.graphql index ab34509103..793a1684be 100644 --- a/packages/test-cases/cases/bind/sanity/imports-local/common.graphql +++ b/packages/test-cases/cases/bind/sanity/imports-local/common.graphql @@ -12,6 +12,8 @@ type CustomType { i32: Int32! bigint: BigInt! optBigint: BigInt + json: JSON! + optJson: JSON bytes: Bytes! optBytes: Bytes boolean: Boolean! diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/mutation.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/mutation.ts index 7e6876db14..16a77d656a 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/mutation.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/mutation.ts @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/query.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/query.ts index 7eacf3393c..49da4b3e6a 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/query.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/query.ts @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/schema.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/schema.ts index 0011f6d561..dd712a13f4 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/schema.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/schema.ts @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! @@ -86,6 +87,8 @@ type CustomType { i32: Int32! bigint: BigInt! optBigint: BigInt + json: JSON! + optJson: JSON bytes: Bytes! optBytes: Bytes boolean: Boolean! diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts index 51d08912d9..f9d06bd3e5 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts @@ -16,6 +16,7 @@ export type Int16 = number; export type Int32 = number; export type Bytes = Uint8Array; export type BigInt = string; +export type Json = unknown; export type String = string; export type Boolean = boolean; @@ -33,6 +34,8 @@ export interface CustomType { i32: Int32; bigint: BigInt; optBigint?: BigInt | null; + json: Json; + optJson?: Json | null; bytes: Bytes; optBytes?: Bytes | null; boolean: Boolean; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts index 854c4892e1..a0c3325502 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts @@ -19,12 +19,8 @@ export class Input_mutationMethod { optEnumArray: Array> | null; } -export function deserializemutationMethodArgs( - argsBuf: ArrayBuffer -): Input_mutationMethod { - const context: Context = new Context( - "Deserializing query-type: mutationMethod" - ); +export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutationMethod { + const context: Context = new Context("Deserializing query-type: mutationMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -48,16 +44,14 @@ export function deserializemutationMethodArgs( _str = reader.readString(); _strSet = true; reader.context().pop(); - } else if (field == "optStr") { - reader - .context() - .push(field, "string | null", "type found, reading property"); + } + else if (field == "optStr") { + reader.context().push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } else if (field == "en") { - reader - .context() - .push(field, "Types.CustomEnum", "type found, reading property"); + } + else if (field == "en") { + reader.context().push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -68,14 +62,9 @@ export function deserializemutationMethodArgs( _en = value; _enSet = true; reader.context().pop(); - } else if (field == "optEnum") { - reader - .context() - .push( - field, - "Nullable", - "type found, reading property" - ); + } + else if (field == "optEnum") { + reader.context().push(field, "Nullable", "type found, reading property"); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -91,10 +80,9 @@ export function deserializemutationMethodArgs( } _optEnum = value; reader.context().pop(); - } else if (field == "enumArray") { - reader - .context() - .push(field, "Array", "type found, reading property"); + } + else if (field == "enumArray") { + reader.context().push(field, "Array", "type found, reading property"); _enumArray = reader.readArray( (reader: Read): Types.CustomEnum => { let value: Types.CustomEnum; @@ -109,14 +97,9 @@ export function deserializemutationMethodArgs( ); _enumArraySet = true; reader.context().pop(); - } else if (field == "optEnumArray") { - reader - .context() - .push( - field, - "Array> | null", - "type found, reading property" - ); + } + else if (field == "optEnumArray") { + reader.context().push(field, "Array> | null", "type found, reading property"); _optEnumArray = reader.readNullableArray( (reader: Read): Nullable => { let value: Nullable; @@ -141,27 +124,13 @@ export function deserializemutationMethodArgs( } if (!_strSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'str: String'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'str: String'")); } if (!_enSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'en: CustomEnum'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'en: CustomEnum'")); } if (!_enumArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required argument: 'enumArray: [CustomEnum]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'enumArray: [CustomEnum]'")); } return { @@ -175,15 +144,11 @@ export function deserializemutationMethodArgs( } export function serializemutationMethodResult(result: i32): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) query-type: mutationMethod" - ); + const sizerContext: Context = new Context("Serializing (sizing) query-type: mutationMethod"); const sizer = new WriteSizer(sizerContext); writemutationMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) query-type: mutationMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) query-type: mutationMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writemutationMethodResult(encoder, result); return buffer; @@ -205,9 +170,7 @@ export class Input_objectMethod { export function deserializeobjectMethodArgs( argsBuf: ArrayBuffer ): Input_objectMethod { - const context: Context = new Context( - "Deserializing query-type: objectMethod" - ); + const context: Context = new Context("Deserializing query-type: objectMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -224,35 +187,23 @@ export function deserializeobjectMethodArgs( reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader - .context() - .push(field, "Types.AnotherType", "type found, reading property"); + reader.context().push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } else if (field == "optObject") { - reader - .context() - .push( - field, - "Types.AnotherType | null", - "type found, reading property" - ); + } + else if (field == "optObject") { + reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } else if (field == "objectArray") { - reader - .context() - .push( - field, - "Array", - "type found, reading property" - ); + } + else if (field == "objectArray") { + reader.context().push(field, "Array", "type found, reading property"); _objectArray = reader.readArray( (reader: Read): Types.AnotherType => { const object = Types.AnotherType.read(reader); @@ -261,14 +212,9 @@ export function deserializeobjectMethodArgs( ); _objectArraySet = true; reader.context().pop(); - } else if (field == "optObjectArray") { - reader - .context() - .push( - field, - "Array | null", - "type found, reading property" - ); + } + else if (field == "optObjectArray") { + reader.context().push(field, "Array | null", "type found, reading property"); _optObjectArray = reader.readNullableArray( (reader: Read): Types.AnotherType | null => { let object: Types.AnotherType | null = null; @@ -284,20 +230,10 @@ export function deserializeobjectMethodArgs( } if (!_object || !_objectSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'object: AnotherType'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'object: AnotherType'")); } if (!_objectArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required argument: 'objectArray: [AnotherType]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'objectArray: [AnotherType]'")); } return { @@ -311,15 +247,11 @@ export function deserializeobjectMethodArgs( export function serializeobjectMethodResult( result: Types.AnotherType | null ): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) query-type: objectMethod" - ); + const sizerContext: Context = new Context("Serializing (sizing) query-type: objectMethod"); const sizer = new WriteSizer(sizerContext); writeobjectMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) query-type: objectMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) query-type: objectMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writeobjectMethodResult(encoder, result); return buffer; @@ -329,9 +261,7 @@ export function writeobjectMethodResult( writer: Write, result: Types.AnotherType | null ): void { - writer - .context() - .push("objectMethod", "Types.AnotherType | null", "writing property"); + writer.context().push("objectMethod", "Types.AnotherType | null", "writing property"); if (result) { Types.AnotherType.write(writer, result as Types.AnotherType); } else { diff --git a/packages/test-cases/cases/compose/local-imports/output/mutation.graphql b/packages/test-cases/cases/compose/local-imports/output/mutation.graphql index b8a9d0dff6..abaab21d41 100644 --- a/packages/test-cases/cases/compose/local-imports/output/mutation.graphql +++ b/packages/test-cases/cases/compose/local-imports/output/mutation.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/local-imports/output/query.graphql b/packages/test-cases/cases/compose/local-imports/output/query.graphql index 8112034a0a..e798645727 100644 --- a/packages/test-cases/cases/compose/local-imports/output/query.graphql +++ b/packages/test-cases/cases/compose/local-imports/output/query.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/local-imports/output/schema.graphql b/packages/test-cases/cases/compose/local-imports/output/schema.graphql index bcb2caf6c2..fd7ad33c12 100644 --- a/packages/test-cases/cases/compose/local-imports/output/schema.graphql +++ b/packages/test-cases/cases/compose/local-imports/output/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/imports-ext/interface.eth/schema.graphql b/packages/test-cases/cases/compose/sanity/imports-ext/interface.eth/schema.graphql index 0d019cab21..2ee1bc2619 100644 --- a/packages/test-cases/cases/compose/sanity/imports-ext/interface.eth/schema.graphql +++ b/packages/test-cases/cases/compose/sanity/imports-ext/interface.eth/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/imports-ext/just.mutation.eth/schema.graphql b/packages/test-cases/cases/compose/sanity/imports-ext/just.mutation.eth/schema.graphql index 402329a147..94cb45db86 100644 --- a/packages/test-cases/cases/compose/sanity/imports-ext/just.mutation.eth/schema.graphql +++ b/packages/test-cases/cases/compose/sanity/imports-ext/just.mutation.eth/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/imports-ext/test.eth/schema.graphql b/packages/test-cases/cases/compose/sanity/imports-ext/test.eth/schema.graphql index 0911435a8b..5f02a24474 100644 --- a/packages/test-cases/cases/compose/sanity/imports-ext/test.eth/schema.graphql +++ b/packages/test-cases/cases/compose/sanity/imports-ext/test.eth/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/output/mutation.graphql b/packages/test-cases/cases/compose/sanity/output/mutation.graphql index daa77c93f0..a8f8993289 100644 --- a/packages/test-cases/cases/compose/sanity/output/mutation.graphql +++ b/packages/test-cases/cases/compose/sanity/output/mutation.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/output/query.graphql b/packages/test-cases/cases/compose/sanity/output/query.graphql index 0ae5eb58ed..aaecf3b22b 100644 --- a/packages/test-cases/cases/compose/sanity/output/query.graphql +++ b/packages/test-cases/cases/compose/sanity/output/query.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/compose/sanity/output/schema.graphql b/packages/test-cases/cases/compose/sanity/output/schema.graphql index 832557448f..4b277779e3 100644 --- a/packages/test-cases/cases/compose/sanity/output/schema.graphql +++ b/packages/test-cases/cases/compose/sanity/output/schema.graphql @@ -9,6 +9,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! diff --git a/packages/test-cases/cases/parse/sanity/input.graphql b/packages/test-cases/cases/parse/sanity/input.graphql index 46d108d839..f7da802b5b 100644 --- a/packages/test-cases/cases/parse/sanity/input.graphql +++ b/packages/test-cases/cases/parse/sanity/input.graphql @@ -8,6 +8,7 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt +scalar JSON directive @imported( uri: String! @@ -51,6 +52,8 @@ optStr comment i32: Int32! bigint: BigInt! optBigint: BigInt + json: JSON! + optJson: JSON bytes: Bytes! uArray: [UInt!]! uOptArray: [UInt!] diff --git a/packages/test-cases/cases/parse/sanity/output.ts b/packages/test-cases/cases/parse/sanity/output.ts index be70cb2396..366e8f1713 100644 --- a/packages/test-cases/cases/parse/sanity/output.ts +++ b/packages/test-cases/cases/parse/sanity/output.ts @@ -36,8 +36,8 @@ export const output: TypeInfo = { createScalarPropertyDefinition({ name: "i32", type: "Int32", required: true }), createScalarPropertyDefinition({ name: "bigint", type: "BigInt", required: true }), createScalarPropertyDefinition({ name: "optBigint", type: "BigInt", required: false }), - createScalarPropertyDefinition({ name: "JSON", type: "JSON", required: true }), - createScalarPropertyDefinition({ name: "optJSON", type: "JSON", required: false }), + createScalarPropertyDefinition({ name: "json", type: "JSON", required: true }), + createScalarPropertyDefinition({ name: "optJson", type: "JSON", required: false }), createScalarPropertyDefinition({ name: "bytes", type: "Bytes", required: true }), createArrayPropertyDefinition({ name: "uArray", From a2b6e7fc6fc4de2a853570a90cbc1a8ec1101e48 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:38:53 -0500 Subject: [PATCH 31/53] reverge CHANGELOG formatting --- CHANGELOG.md | 66 ---------------------------------------------------- 1 file changed, 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f876051287..19ef58ce1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,40 +61,29 @@ * `@web3api/ethereum-plugin-js`: Properly support smart contract methods with structures as arguments. # Web3API 0.0.1-prealpha.30 - ## Bugs - - `@web3api/ethereum-plugin-js`: Fix ethers.js inconsistencies. # Web3API 0.0.1-prealpha.29 - ## Feature - - Web3API Interfaces are now fully supported in the tool-chain. - GraphQL schema comments are now retained, and will show up in the build folder. - `@web3api/parse`: Reference types definitions are now differentiated from the root definitions the reference. ## Bugs - - `@web3api/cli`: Fix MacOS specific issue w/ PATH not being retained. - The `config` property in `web3api.build.yaml` is now optional. # Web3API 0.0.1-prealpha.28 - ## Bugs - - Fixed API template project # Web3API 0.0.1-prealpha.27 - ## Bugs - - Fixed API template project # Web3API 0.0.1-prealpha.26 - ## Feature - - `@web3api/uniswapV2-api`: Completed the Uniswap V2 Web3API implementation. - `@web3api/ethereum-plugin-js`: Upgraded the Ethereum plugin, added lots of new functionality. - `@web3api/cli`: Implemented a "reproducible build pipeline", where Web3APIs are now built in an isolated docker container. These builds can be fully configurable by developers. This also paves the way for implementing Web3APIs in any Wasm compatible language. Rust support on the way! @@ -104,36 +93,27 @@ - CI: Windows CI has been implemented using appveyor. ## Bugs - - `@web3api/client-js`: Fixed threading issue causing the "unknown wake status" error. - Fixed Windows specific errors. # Web3API 0.0.1-prealpha.25 - ## Feature - - `@web3api/client-js`: Added the `WEB3API_THREAD_PATH` env variable, allowing integrators to customize where the `thread.js` worker thread module is imported from. - `@web3api/wasm-as`: Improved error logging w/ better error messages and a "context stack" showing exactly what properties of the MsgPack blob the serialization / deserialization is failing at. # Web3API 0.0.1-prealpha.24 - ## Bugs - - `@web3api/wasm-as`: Moved `as-bigint` from `devDependencies` to `dependencies`. Fixes [issue #347](https://github.com/Web3-API/monorepo/issues/347) # Web3API 0.0.1-prealpha.23 - ## Feature - - `@web3api/os-js`: This package contains OS agnostic code for doing things like writing files w/ consistent line endings. - Windows Support: The toolchain now builds and runs properly on the Windows operating system. - `BigInt` Schema Type: The `BigInt` type is now available for use as a base type for Web3API GraphQL schemas. - `@web3api/react`: The `useWeb3ApiClient` hook was added, allowing users to easily get a reference to the Web3ApiClient used by the Web3ApiProvider. # Web3API 0.0.1-prealpha.22 - ## Feature - - `@web3api/tracing-js`: The `tracing-js` package uses the [OpenTelemetry Standard](https://opentelemetry.io/) for logging trace events. This enables things like: - Benchmark Timings - Input Argument + Output Result Logging @@ -142,90 +122,63 @@ - `@web3api/client-js`: All functions are now traceable. # Web3API 0.0.1-prealpha.21 - ## Feature - - Sharing code & types between `query` and `mutation` modules is now possible. ## Bugs - - Common types found in both `query` and `mutation` schemas are properly consolidated. If types have the same name, but a different structure, and error is thrown. # Web3API 0.0.1-prealpha.20 - ## Bugs - - Fix the `w3 create app react ...` template project's styling to be responsive. # Web3API 0.0.1-prealpha.19 - ## Features - - `@web3api/ipfs-plugin-js`: Added options for request timeouts, provider overrides, and fallback providers. Additionally a new method has been added, `resolve`, which allows the caller to try and resolve a given IFPS CID to ensure the document exists. # Web3API 0.0.1-prealpha.18 - ## Features - - Updated the `app/react` template project to use the latest "Hello World" Web3API published at `ens/helloworld.web3api.eth`. # Web3API 0.0.1-prealpha.17 - ## Bugs - - `@web3api/ethereum-plugin-js`: Network configurations must be nested within a property in order to allow for the `defaultNetwork` property to be set w/o causing a typing error (for not being of the `ConnectionConfig` type). # Web3API 0.0.1-prealpha.16 - ## Bugs - - `@web3api/test-env`: Expose the IPFS node's swarm port (4001). # Web3API 0.0.1-prealpha.15 - ## Bugs - - Fix `extractPluginConfigs.ts` output. # Web3API 0.0.1-prealpha.14 - ## Features - - Network Specific ENS Lookup - `@web3api/ethereum-plugin-js`: The EthereumPlugin can now be constructed with multiple network connections (mainnet, rinkeby, testnet, etc). - All Query & Mutation methods now accept an optional `connection` property which can be used to configure a specific network to be used for the action. - `@web3api/ens-plugin-js`: The EnsPlugin can now handle URIs that address specific networks. For example: `w3://ens/testnet/myweb3api.eth`. It will request the `testnet` connection to be used when querying the Ethereum Web3API. # Web3API 0.0.1-prealpha.13 - ## Features - - Improved template projects that are used with the `w3 create ...` CLI command. # Web3API 0.0.1-prealpha.12 - ## Bug Fixes - - Added schemas to plugin manifest modules, removing the need for `import_redirects`. - Fixed the IpfsPlugin's `addFile` method. - Improved the api/assemblyscript template project. # Web3API 0.0.1-prealpha.11 - ## Bug Fixes - - `@web3api/cli`: Include the internationalization JSON files in the published package. # Web3API 0.0.1-prealpha.10 - ## Bug Fixes - - `@web3api/ens-plugin-js`: Fix the schema. # Web3API 0.0.1-prealpha.9 - ## Features - - `@web3api/cli`: CLI Internalized Text Support - Currently English is implemented, and Spanish support is slated to be added next. - `@web3api/schema-parse`: GraphQL Infinite Cycle Detection @@ -234,30 +187,23 @@ - This auto-generated module is being used within the `deployContract` mutation. ## Bug Fixes - - `@web3api/core-js`: The `resolve-uri` core algorithm had an "off by one" iteration bug, where it never retried the first `api-resolver` in the implementations array. - `@web3api/ethereum-plugin-js`: When using a provider that lacks signing capabilities (ex: Infura RPC endpoint), the `getContract` function was trying to get a signer when one did not exist. - `@web3api/ipfs-plugin-js`: Fixed this plugin's schema, as it was using unsupported syntax. ## Misc - - Upgrade node version to v14.16.0. - Upgrade TypeScript version to v4.0.7. # Web3API 0.0.1-prealpha.8 - ## Bug Fixes - - Fixed bug in `@web3api/react` package. ## Misc - - Removed documentation & demos from the monorepo. # Web3API 0.0.1-prealpha.7 - ## Features - - Console Log Web3API - Calls log on logger plugin at uri w3://w3/logger. Default logger logs to console, but can be overridden with redirect to custom logger web3api implementation. - Log levels: Debug, Info, Warn, Error @@ -267,14 +213,11 @@ - Improved plugin instantiation interface. ## Bug Fixes - - Proper MsgPack numeric overflow assertions (closes: [#150](https://github.com/Web3-API/monorepo/issues/150)) - Proper usage of [GraphQL Aliases](https://graphql.org/learn/queries/#aliases) when invoking multiple methods in one query. # Web3API 0.0.1-prealpha.6 - ## Features - - Web3API React Integration: `@web3api/react` - Add the `Web3ApiProvider` HOC to the root of your application. - Use the `useWeb3ApiQuery` hook to execute queries. @@ -283,31 +226,22 @@ - `@web3api/test-cases` for common test cases. ## Bug Fixes - - Remove unused `workerize-loader` package & logic. # Web3API 0.0.1-prealpha.5 - ## Features - - `w3 build --watch` support, enabling the automatic rebuilding of Web3APIs whenever project files have changed. # Web3API 0.0.1-prealpha.4 - ## Features - - Enum Support ## Bug Fixes - - `w3 create ...` CLI Fix (closes: [#167](https://github.com/Web3-API/monorepo/issues/167)) # Web3API 0.0.1-prealpha.2 - ## Bug Fixes - - Fix typescript plugin template's package.json # Web3API 0.0.1-prealpha.1 - Pre-Alpha Initial Release From 2021a6ff50e8ed959b59fff49776e578793f36ef Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:39:58 -0500 Subject: [PATCH 32/53] revert CHANGELOG.md formatting --- CHANGELOG.md | 162 +++++++++++++++++++++++++-------------------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19ef58ce1e..9580bf04a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,186 +62,186 @@ # Web3API 0.0.1-prealpha.30 ## Bugs -- `@web3api/ethereum-plugin-js`: Fix ethers.js inconsistencies. +* `@web3api/ethereum-plugin-js`: Fix ethers.js inconsistencies. # Web3API 0.0.1-prealpha.29 ## Feature -- Web3API Interfaces are now fully supported in the tool-chain. -- GraphQL schema comments are now retained, and will show up in the build folder. -- `@web3api/parse`: Reference types definitions are now differentiated from the root definitions the reference. +* Web3API Interfaces are now fully supported in the tool-chain. +* GraphQL schema comments are now retained, and will show up in the build folder. +* `@web3api/parse`: Reference types definitions are now differentiated from the root definitions the reference. ## Bugs -- `@web3api/cli`: Fix MacOS specific issue w/ PATH not being retained. -- The `config` property in `web3api.build.yaml` is now optional. +* `@web3api/cli`: Fix MacOS specific issue w/ PATH not being retained. +* The `config` property in `web3api.build.yaml` is now optional. # Web3API 0.0.1-prealpha.28 ## Bugs -- Fixed API template project +* Fixed API template project # Web3API 0.0.1-prealpha.27 ## Bugs -- Fixed API template project +* Fixed API template project # Web3API 0.0.1-prealpha.26 ## Feature -- `@web3api/uniswapV2-api`: Completed the Uniswap V2 Web3API implementation. -- `@web3api/ethereum-plugin-js`: Upgraded the Ethereum plugin, added lots of new functionality. -- `@web3api/cli`: Implemented a "reproducible build pipeline", where Web3APIs are now built in an isolated docker container. These builds can be fully configurable by developers. This also paves the way for implementing Web3APIs in any Wasm compatible language. Rust support on the way! -- `@web3api/react`: Added the ability to set query `variables` within the `execute` function returned by the `useWeb3ApiQuery` hook. -- `@web3api/sha3-plugin-js`: A SHA3 plugin has been implemented, and added to the client as a "default plugin". -- `@web3api/uts46-plugin-js`: A UTS46 plugin has been implemented, and added to the client as a "default plugin". -- CI: Windows CI has been implemented using appveyor. +* `@web3api/uniswapV2-api`: Completed the Uniswap V2 Web3API implementation. +* `@web3api/ethereum-plugin-js`: Upgraded the Ethereum plugin, added lots of new functionality. +* `@web3api/cli`: Implemented a "reproducible build pipeline", where Web3APIs are now built in an isolated docker container. These builds can be fully configurable by developers. This also paves the way for implementing Web3APIs in any Wasm compatible language. Rust support on the way! +* `@web3api/react`: Added the ability to set query `variables` within the `execute` function returned by the `useWeb3ApiQuery` hook. +* `@web3api/sha3-plugin-js`: A SHA3 plugin has been implemented, and added to the client as a "default plugin". +* `@web3api/uts46-plugin-js`: A UTS46 plugin has been implemented, and added to the client as a "default plugin". +* CI: Windows CI has been implemented using appveyor. ## Bugs -- `@web3api/client-js`: Fixed threading issue causing the "unknown wake status" error. -- Fixed Windows specific errors. +* `@web3api/client-js`: Fixed threading issue causing the "unknown wake status" error. +* Fixed Windows specific errors. # Web3API 0.0.1-prealpha.25 ## Feature -- `@web3api/client-js`: Added the `WEB3API_THREAD_PATH` env variable, allowing integrators to customize where the `thread.js` worker thread module is imported from. -- `@web3api/wasm-as`: Improved error logging w/ better error messages and a "context stack" showing exactly what properties of the MsgPack blob the serialization / deserialization is failing at. +* `@web3api/client-js`: Added the `WEB3API_THREAD_PATH` env variable, allowing integrators to customize where the `thread.js` worker thread module is imported from. +* `@web3api/wasm-as`: Improved error logging w/ better error messages and a "context stack" showing exactly what properties of the MsgPack blob the serialization / deserialization is failing at. # Web3API 0.0.1-prealpha.24 ## Bugs -- `@web3api/wasm-as`: Moved `as-bigint` from `devDependencies` to `dependencies`. Fixes [issue #347](https://github.com/Web3-API/monorepo/issues/347) +* `@web3api/wasm-as`: Moved `as-bigint` from `devDependencies` to `dependencies`. Fixes [issue #347](https://github.com/Web3-API/monorepo/issues/347) # Web3API 0.0.1-prealpha.23 ## Feature -- `@web3api/os-js`: This package contains OS agnostic code for doing things like writing files w/ consistent line endings. -- Windows Support: The toolchain now builds and runs properly on the Windows operating system. -- `BigInt` Schema Type: The `BigInt` type is now available for use as a base type for Web3API GraphQL schemas. -- `@web3api/react`: The `useWeb3ApiClient` hook was added, allowing users to easily get a reference to the Web3ApiClient used by the Web3ApiProvider. +* `@web3api/os-js`: This package contains OS agnostic code for doing things like writing files w/ consistent line endings. +* Windows Support: The toolchain now builds and runs properly on the Windows operating system. +* `BigInt` Schema Type: The `BigInt` type is now available for use as a base type for Web3API GraphQL schemas. +* `@web3api/react`: The `useWeb3ApiClient` hook was added, allowing users to easily get a reference to the Web3ApiClient used by the Web3ApiProvider. # Web3API 0.0.1-prealpha.22 ## Feature -- `@web3api/tracing-js`: The `tracing-js` package uses the [OpenTelemetry Standard](https://opentelemetry.io/) for logging trace events. This enables things like: - - Benchmark Timings - - Input Argument + Output Result Logging - - In-Depth Exception Tracing -- `@web3api/core-js`: All functions are now traceable. -- `@web3api/client-js`: All functions are now traceable. +* `@web3api/tracing-js`: The `tracing-js` package uses the [OpenTelemetry Standard](https://opentelemetry.io/) for logging trace events. This enables things like: + * Benchmark Timings + * Input Argument + Output Result Logging + * In-Depth Exception Tracing +* `@web3api/core-js`: All functions are now traceable. +* `@web3api/client-js`: All functions are now traceable. # Web3API 0.0.1-prealpha.21 ## Feature -- Sharing code & types between `query` and `mutation` modules is now possible. +* Sharing code & types between `query` and `mutation` modules is now possible. ## Bugs -- Common types found in both `query` and `mutation` schemas are properly consolidated. If types have the same name, but a different structure, and error is thrown. +* Common types found in both `query` and `mutation` schemas are properly consolidated. If types have the same name, but a different structure, and error is thrown. # Web3API 0.0.1-prealpha.20 ## Bugs -- Fix the `w3 create app react ...` template project's styling to be responsive. +* Fix the `w3 create app react ...` template project's styling to be responsive. # Web3API 0.0.1-prealpha.19 ## Features -- `@web3api/ipfs-plugin-js`: Added options for request timeouts, provider overrides, and fallback providers. Additionally a new method has been added, `resolve`, which allows the caller to try and resolve a given IFPS CID to ensure the document exists. +* `@web3api/ipfs-plugin-js`: Added options for request timeouts, provider overrides, and fallback providers. Additionally a new method has been added, `resolve`, which allows the caller to try and resolve a given IFPS CID to ensure the document exists. # Web3API 0.0.1-prealpha.18 ## Features -- Updated the `app/react` template project to use the latest "Hello World" Web3API published at `ens/helloworld.web3api.eth`. +* Updated the `app/react` template project to use the latest "Hello World" Web3API published at `ens/helloworld.web3api.eth`. # Web3API 0.0.1-prealpha.17 ## Bugs -- `@web3api/ethereum-plugin-js`: Network configurations must be nested within a property in order to allow for the `defaultNetwork` property to be set w/o causing a typing error (for not being of the `ConnectionConfig` type). +* `@web3api/ethereum-plugin-js`: Network configurations must be nested within a property in order to allow for the `defaultNetwork` property to be set w/o causing a typing error (for not being of the `ConnectionConfig` type). # Web3API 0.0.1-prealpha.16 ## Bugs -- `@web3api/test-env`: Expose the IPFS node's swarm port (4001). +* `@web3api/test-env`: Expose the IPFS node's swarm port (4001). # Web3API 0.0.1-prealpha.15 ## Bugs -- Fix `extractPluginConfigs.ts` output. +* Fix `extractPluginConfigs.ts` output. # Web3API 0.0.1-prealpha.14 ## Features -- Network Specific ENS Lookup - - `@web3api/ethereum-plugin-js`: The EthereumPlugin can now be constructed with multiple network connections (mainnet, rinkeby, testnet, etc). - - All Query & Mutation methods now accept an optional `connection` property which can be used to configure a specific network to be used for the action. - - `@web3api/ens-plugin-js`: The EnsPlugin can now handle URIs that address specific networks. For example: `w3://ens/testnet/myweb3api.eth`. It will request the `testnet` connection to be used when querying the Ethereum Web3API. +* Network Specific ENS Lookup + * `@web3api/ethereum-plugin-js`: The EthereumPlugin can now be constructed with multiple network connections (mainnet, rinkeby, testnet, etc). + * All Query & Mutation methods now accept an optional `connection` property which can be used to configure a specific network to be used for the action. + * `@web3api/ens-plugin-js`: The EnsPlugin can now handle URIs that address specific networks. For example: `w3://ens/testnet/myweb3api.eth`. It will request the `testnet` connection to be used when querying the Ethereum Web3API. # Web3API 0.0.1-prealpha.13 ## Features -- Improved template projects that are used with the `w3 create ...` CLI command. +* Improved template projects that are used with the `w3 create ...` CLI command. # Web3API 0.0.1-prealpha.12 ## Bug Fixes -- Added schemas to plugin manifest modules, removing the need for `import_redirects`. -- Fixed the IpfsPlugin's `addFile` method. -- Improved the api/assemblyscript template project. +* Added schemas to plugin manifest modules, removing the need for `import_redirects`. +* Fixed the IpfsPlugin's `addFile` method. +* Improved the api/assemblyscript template project. # Web3API 0.0.1-prealpha.11 ## Bug Fixes -- `@web3api/cli`: Include the internationalization JSON files in the published package. +* `@web3api/cli`: Include the internationalization JSON files in the published package. # Web3API 0.0.1-prealpha.10 ## Bug Fixes -- `@web3api/ens-plugin-js`: Fix the schema. +* `@web3api/ens-plugin-js`: Fix the schema. # Web3API 0.0.1-prealpha.9 ## Features -- `@web3api/cli`: CLI Internalized Text Support - - Currently English is implemented, and Spanish support is slated to be added next. -- `@web3api/schema-parse`: GraphQL Infinite Cycle Detection - - Bad object relationships within the Web3API's GraphQL schema are now automatically detected, ensuring developers never create objects that can never be instantiated properly. -- `@web3api/templates`: Auto-Generate Smart Contract ABI & Bytecode Assemblyscript Module - - This auto-generated module is being used within the `deployContract` mutation. +* `@web3api/cli`: CLI Internalized Text Support + * Currently English is implemented, and Spanish support is slated to be added next. +* `@web3api/schema-parse`: GraphQL Infinite Cycle Detection + * Bad object relationships within the Web3API's GraphQL schema are now automatically detected, ensuring developers never create objects that can never be instantiated properly. +* `@web3api/templates`: Auto-Generate Smart Contract ABI & Bytecode Assemblyscript Module + * This auto-generated module is being used within the `deployContract` mutation. ## Bug Fixes -- `@web3api/core-js`: The `resolve-uri` core algorithm had an "off by one" iteration bug, where it never retried the first `api-resolver` in the implementations array. -- `@web3api/ethereum-plugin-js`: When using a provider that lacks signing capabilities (ex: Infura RPC endpoint), the `getContract` function was trying to get a signer when one did not exist. -- `@web3api/ipfs-plugin-js`: Fixed this plugin's schema, as it was using unsupported syntax. +* `@web3api/core-js`: The `resolve-uri` core algorithm had an "off by one" iteration bug, where it never retried the first `api-resolver` in the implementations array. +* `@web3api/ethereum-plugin-js`: When using a provider that lacks signing capabilities (ex: Infura RPC endpoint), the `getContract` function was trying to get a signer when one did not exist. +* `@web3api/ipfs-plugin-js`: Fixed this plugin's schema, as it was using unsupported syntax. ## Misc -- Upgrade node version to v14.16.0. -- Upgrade TypeScript version to v4.0.7. +* Upgrade node version to v14.16.0. +* Upgrade TypeScript version to v4.0.7. # Web3API 0.0.1-prealpha.8 ## Bug Fixes -- Fixed bug in `@web3api/react` package. +* Fixed bug in `@web3api/react` package. ## Misc -- Removed documentation & demos from the monorepo. +* Removed documentation & demos from the monorepo. # Web3API 0.0.1-prealpha.7 ## Features -- Console Log Web3API - - Calls log on logger plugin at uri w3://w3/logger. Default logger logs to console, but can be overridden with redirect to custom logger web3api implementation. - - Log levels: Debug, Info, Warn, Error -- `createWeb3ApiClient(...)` helper for easily setting up a Web3API Client with all needed plugins (ex: ethereum, ipfs, etc) in one function call. - - Additional support for plugins can be added in the future, without bloating the `@web3api/client-js` package thanks to dynamic imports! -- When using the Web3ApiClient, specify Web3API URIs without having to create a new URI class (`new Uri("...")`). Simply provide a string instead. -- Improved plugin instantiation interface. +* Console Log Web3API + * Calls log on logger plugin at uri w3://w3/logger. Default logger logs to console, but can be overridden with redirect to custom logger web3api implementation. + * Log levels: Debug, Info, Warn, Error +* `createWeb3ApiClient(...)` helper for easily setting up a Web3API Client with all needed plugins (ex: ethereum, ipfs, etc) in one function call. + * Additional support for plugins can be added in the future, without bloating the `@web3api/client-js` package thanks to dynamic imports! +* When using the Web3ApiClient, specify Web3API URIs without having to create a new URI class (`new Uri("...")`). Simply provide a string instead. +* Improved plugin instantiation interface. ## Bug Fixes -- Proper MsgPack numeric overflow assertions (closes: [#150](https://github.com/Web3-API/monorepo/issues/150)) -- Proper usage of [GraphQL Aliases](https://graphql.org/learn/queries/#aliases) when invoking multiple methods in one query. +* Proper MsgPack numeric overflow assertions (closes: [#150](https://github.com/Web3-API/monorepo/issues/150)) +* Proper usage of [GraphQL Aliases](https://graphql.org/learn/queries/#aliases) when invoking multiple methods in one query. # Web3API 0.0.1-prealpha.6 ## Features -- Web3API React Integration: `@web3api/react` - - Add the `Web3ApiProvider` HOC to the root of your application. - - Use the `useWeb3ApiQuery` hook to execute queries. -- Web3API CLI e2e tests. -- `@web3api/test-env-js` package for common testing logic. -- `@web3api/test-cases` for common test cases. +* Web3API React Integration: `@web3api/react` + * Add the `Web3ApiProvider` HOC to the root of your application. + * Use the `useWeb3ApiQuery` hook to execute queries. +* Web3API CLI e2e tests. +* `@web3api/test-env-js` package for common testing logic. +* `@web3api/test-cases` for common test cases. ## Bug Fixes -- Remove unused `workerize-loader` package & logic. +* Remove unused `workerize-loader` package & logic. # Web3API 0.0.1-prealpha.5 ## Features -- `w3 build --watch` support, enabling the automatic rebuilding of Web3APIs whenever project files have changed. +* `w3 build --watch` support, enabling the automatic rebuilding of Web3APIs whenever project files have changed. # Web3API 0.0.1-prealpha.4 ## Features -- Enum Support +* Enum Support ## Bug Fixes -- `w3 create ...` CLI Fix (closes: [#167](https://github.com/Web3-API/monorepo/issues/167)) +* `w3 create ...` CLI Fix (closes: [#167](https://github.com/Web3-API/monorepo/issues/167)) # Web3API 0.0.1-prealpha.2 ## Bug Fixes -- Fix typescript plugin template's package.json +* Fix typescript plugin template's package.json # Web3API 0.0.1-prealpha.1 Pre-Alpha Initial Release From 07d0d1c005e4ab55a899194bd2de4f74cdfdd5a5 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:48:26 -0500 Subject: [PATCH 33/53] revert some Web3ApiClient.spec.ts styling --- .../src/__tests__/Web3ApiClient.spec.ts | 48 ++++++++++++++----- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index d37054b5da..246646f0d2 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -86,7 +86,9 @@ describe("Web3ApiClient", () => { }, { interface: coreInterfaceUris.logger, - implementations: [new Uri("w3://ens/js-logger.web3api.eth")], + implementations: [ + new Uri("w3://ens/js-logger.web3api.eth") + ], }, ]); }); @@ -178,7 +180,10 @@ describe("Web3ApiClient", () => { const implementations = client.getImplementations(interfaceUri); - expect(implementations).toEqual([implementation1Uri, implementation2Uri]); + expect(implementations).toEqual([ + implementation1Uri, + implementation2Uri + ]); }); it("get all implementations of interface", async () => { @@ -221,15 +226,23 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interface1Uri, - implementations: [implementation1Uri, implementation2Uri], + implementations: [ + implementation1Uri, + implementation2Uri + ], }, { interface: interface2Uri, - implementations: [implementation3Uri], + implementations: [ + implementation3Uri + ], }, { interface: interface3Uri, - implementations: [implementation3Uri, implementation4Uri], + implementations: [ + implementation3Uri, + implementation4Uri + ], }, ], }); @@ -293,15 +306,21 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interface1Uri, - implementations: [implementationUri], + implementations: [ + implementationUri + ], }, { interface: interface2Uri, - implementations: [implementationUri], + implementations: [ + implementationUri + ], }, { interface: interface3Uri, - implementations: [implementationUri], + implementations: [ + implementationUri + ], }, ], }); @@ -335,7 +354,9 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interfaceUri, - implementations: [implementationUri], + implementations: [ + implementationUri + ], }, ], }); @@ -368,7 +389,9 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interfaceUri, - implementations: [implementation2Uri], + implementations: [ + implementation2Uri + ], }, ], }); @@ -405,7 +428,10 @@ describe("Web3ApiClient", () => { interfaces: [ { interface: interfaceUri, - implementations: [implementation1Uri, implementation2Uri], + implementations: [ + implementation1Uri, + implementation2Uri + ], }, ], }); From 3f61eda01809cab9d847b3021dbb97df604a3e07 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:51:34 -0500 Subject: [PATCH 34/53] revert ethereum integration test formatting --- .../__tests__/integration/src/query/index.ts | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts b/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts index afb6386952..feb5b235c7 100644 --- a/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts +++ b/packages/js/plugins/ethereum/src/__tests__/integration/src/query/index.ts @@ -16,16 +16,18 @@ import { Input_toWei, Input_toEth, Input_awaitTransaction, - Input_waitForEvent, + Input_waitForEvent } from "./w3"; import { BigInt } from "@web3api/wasm-as"; -export function callContractView(input: Input_callContractView): string { +export function callContractView( + input: Input_callContractView +): string { return Ethereum_Query.callContractView({ address: input.address, method: input.method, args: input.args, - connection: input.connection, + connection: input.connection }); } @@ -37,27 +39,33 @@ export function callContractStatic( method: input.method, args: input.args, connection: input.connection, - txOverrides: input.txOverrides, + txOverrides: input.txOverrides }); } -export function encodeParams(input: Input_encodeParams): string { +export function encodeParams( + input: Input_encodeParams +): string { return Ethereum_Query.encodeParams({ types: input.types, - values: input.values, + values: input.values }); } -export function getSignerAddress(input: Input_getSignerAddress): string { +export function getSignerAddress( + input: Input_getSignerAddress +): string { return Ethereum_Query.getSignerAddress({ - connection: input.connection, + connection: input.connection }); } -export function getSignerBalance(input: Input_getSignerBalance): BigInt { +export function getSignerBalance( + input: Input_getSignerBalance +): BigInt { return Ethereum_Query.getSignerBalance({ blockTag: input.blockTag, - connection: input.connection, + connection: input.connection }); } @@ -66,13 +74,15 @@ export function getSignerTransactionCount( ): BigInt { return Ethereum_Query.getSignerTransactionCount({ blockTag: input.blockTag, - connection: input.connection, + connection: input.connection }); } -export function getGasPrice(input: Input_getGasPrice): BigInt { +export function getGasPrice( + input: Input_getGasPrice +): BigInt { return Ethereum_Query.getGasPrice({ - connection: input.connection, + connection: input.connection }); } @@ -81,7 +91,7 @@ export function estimateTransactionGas( ): BigInt { return Ethereum_Query.estimateTransactionGas({ tx: input.tx, - connection: input.connection, + connection: input.connection }); } @@ -93,25 +103,31 @@ export function estimateContractCallGas( method: input.method, args: input.args, connection: input.connection, - txOverrides: input.txOverrides, + txOverrides: input.txOverrides }); } -export function checkAddress(input: Input_checkAddress): bool { +export function checkAddress( + input: Input_checkAddress +): bool { return Ethereum_Query.checkAddress({ - address: input.address, + address: input.address }); } -export function toWei(input: Input_toWei): BigInt { +export function toWei( + input: Input_toWei +): BigInt { return Ethereum_Query.toWei({ - eth: input.eth, + eth: input.eth }); } -export function toEth(input: Input_toEth): String { +export function toEth( + input: Input_toEth +): String { return Ethereum_Query.toEth({ - wei: input.wei, + wei: input.wei }); } @@ -122,7 +138,7 @@ export function awaitTransaction( txHash: input.txHash, confirmations: input.confirmations, timeout: input.timeout, - connection: input.connection, + connection: input.connection }); } @@ -134,6 +150,6 @@ export function waitForEvent( event: input.event, args: input.args, timeout: input.timeout, - connection: input.connection, + connection: input.connection }); } From e3395900afebe9390309441d88b9a605626d2d09 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 15:57:23 -0500 Subject: [PATCH 35/53] revert formatting --- packages/test-cases/cases/apis/bigint-type/package.json | 2 +- packages/test-cases/cases/apis/bigint-type/query/index.ts | 4 +++- packages/test-cases/cases/apis/bytes-type/package.json | 2 +- packages/test-cases/cases/apis/enum-types/package.json | 2 +- .../cases/apis/implementations/test-api/package.json | 2 +- packages/test-cases/cases/apis/invalid-types/package.json | 2 +- packages/test-cases/cases/apis/large-types/package.json | 2 +- packages/test-cases/cases/apis/number-types/package.json | 2 +- packages/test-cases/cases/apis/object-types/package.json | 2 +- packages/test-cases/cases/apis/simple-storage/package.json | 2 +- 10 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/test-cases/cases/apis/bigint-type/package.json b/packages/test-cases/cases/apis/bigint-type/package.json index f43459324a..1adcf2d819 100644 --- a/packages/test-cases/cases/apis/bigint-type/package.json +++ b/packages/test-cases/cases/apis/bigint-type/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/bigint-type/query/index.ts b/packages/test-cases/cases/apis/bigint-type/query/index.ts index 40d154110d..33fbf33d82 100644 --- a/packages/test-cases/cases/apis/bigint-type/query/index.ts +++ b/packages/test-cases/cases/apis/bigint-type/query/index.ts @@ -1,4 +1,6 @@ -import { Input_method } from "./w3"; +import { + Input_method +} from "./w3"; import { BigInt } from "@web3api/wasm-as"; export function method(input: Input_method): BigInt { diff --git a/packages/test-cases/cases/apis/bytes-type/package.json b/packages/test-cases/cases/apis/bytes-type/package.json index 16d66dbf1a..f154cb8e00 100644 --- a/packages/test-cases/cases/apis/bytes-type/package.json +++ b/packages/test-cases/cases/apis/bytes-type/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/enum-types/package.json b/packages/test-cases/cases/apis/enum-types/package.json index bd5b1559b3..b114ed30e5 100644 --- a/packages/test-cases/cases/apis/enum-types/package.json +++ b/packages/test-cases/cases/apis/enum-types/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/implementations/test-api/package.json b/packages/test-cases/cases/apis/implementations/test-api/package.json index 9255742bb5..eabb6f1a83 100644 --- a/packages/test-cases/cases/apis/implementations/test-api/package.json +++ b/packages/test-cases/cases/apis/implementations/test-api/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/invalid-types/package.json b/packages/test-cases/cases/apis/invalid-types/package.json index 650f88268e..ec8b2293c4 100644 --- a/packages/test-cases/cases/apis/invalid-types/package.json +++ b/packages/test-cases/cases/apis/invalid-types/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/large-types/package.json b/packages/test-cases/cases/apis/large-types/package.json index 00304fc5ed..0e2d65337e 100644 --- a/packages/test-cases/cases/apis/large-types/package.json +++ b/packages/test-cases/cases/apis/large-types/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/number-types/package.json b/packages/test-cases/cases/apis/number-types/package.json index 97b944cabe..fcf049405f 100644 --- a/packages/test-cases/cases/apis/number-types/package.json +++ b/packages/test-cases/cases/apis/number-types/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/object-types/package.json b/packages/test-cases/cases/apis/object-types/package.json index 5f74e0bd36..d176eeb999 100644 --- a/packages/test-cases/cases/apis/object-types/package.json +++ b/packages/test-cases/cases/apis/object-types/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file diff --git a/packages/test-cases/cases/apis/simple-storage/package.json b/packages/test-cases/cases/apis/simple-storage/package.json index 00240c07ba..e9ed9f130a 100644 --- a/packages/test-cases/cases/apis/simple-storage/package.json +++ b/packages/test-cases/cases/apis/simple-storage/package.json @@ -5,4 +5,4 @@ "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } -} +} \ No newline at end of file From a3f68fe0e2bfec281e2aa531983782423c0c3d6f Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 16:04:40 -0500 Subject: [PATCH 36/53] update json-type test-case --- .../cases/apis/json-type/package.json | 2 +- .../cases/apis/json-type/query/index.ts | 31 +++++++++---------- .../cases/apis/json-type/query/schema.graphql | 14 +++++++-- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/packages/test-cases/cases/apis/json-type/package.json b/packages/test-cases/cases/apis/json-type/package.json index 023c141295..5519579f58 100644 --- a/packages/test-cases/cases/apis/json-type/package.json +++ b/packages/test-cases/cases/apis/json-type/package.json @@ -2,7 +2,7 @@ "name": "test-case-json-type", "private": true, "dependencies": { - "@web3api/wasm-as": "0.0.1-prealpha.61", + "@web3api/wasm-as": "0.0.1-prealpha.40", "assemblyscript": "0.19.1" } } diff --git a/packages/test-cases/cases/apis/json-type/query/index.ts b/packages/test-cases/cases/apis/json-type/query/index.ts index b84ef9c100..0cb9b5401c 100644 --- a/packages/test-cases/cases/apis/json-type/query/index.ts +++ b/packages/test-cases/cases/apis/json-type/query/index.ts @@ -1,24 +1,23 @@ -import { Input_parse, Input_methodString, Input_methodJSON } from "./w3"; -import { JSON as ASJSON } from "@web3api/wasm-as"; +import { + Input_parse, + Input_methodString, + Input_methodJSON +} from "./w3"; +import { JSON } from "@web3api/wasm-as"; -export function parse(input: Input_parse): ASJSON.Obj { - return ASJSON.parse(input.value); +export function parse(input: Input_parse): JSON.Value { + return JSON.parse(input.value); } -export function methodString(input: Input_methodString): string { - const result = ASJSON.Value.Object(); - result.set("valueA", ASJSON.from(input.valueA)); - result.set("valueB", ASJSON.from(input.valueB)); - result.set("valueC", ASJSON.from(input.valueC)); - - return result.stringify(); +export function stringify(input: Input_methodString): string { + return input.value.stringify(); } -export function methodJSON(input: Input_methodJSON): ASJSON.Obj { - const result = ASJSON.Value.Object(); - result.set("valueA", ASJSON.from(input.valueA)); - result.set("valueB", ASJSON.from(input.valueB)); - result.set("valueC", ASJSON.from(input.valueC)); +export function methodJSON(input: Input_methodJSON): JSON.Value { + const result = JSON.Value.Object(); + result.set("valueA", JSON.from(input.valueA)); + result.set("valueB", JSON.from(input.valueB)); + result.set("valueC", JSON.from(input.valueC)); return result; } diff --git a/packages/test-cases/cases/apis/json-type/query/schema.graphql b/packages/test-cases/cases/apis/json-type/query/schema.graphql index 77a01bc92f..2d608285b8 100644 --- a/packages/test-cases/cases/apis/json-type/query/schema.graphql +++ b/packages/test-cases/cases/apis/json-type/query/schema.graphql @@ -1,7 +1,15 @@ type Query { - parse(value: String!): JSON! + parse( + value: String! + ): JSON! - methodString(valueA: Int!, valueB: String!, valueC: Boolean!): String! + stringify( + value: JSON! + ): String! - methodJSON(valueA: Int!, valueB: String!, valueC: Boolean!): JSON! + methodJSON( + valueA: Int! + valueB: String! + valueC: Boolean! + ): JSON! } From 63df554405fb26c1d366e5384f31cbad5e035405 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 19:40:59 -0500 Subject: [PATCH 37/53] update json-type test-case --- .../src/__tests__/Web3ApiClient.spec.ts | 53 +++++++++++++++---- .../cases/apis/json-type/query/index.ts | 19 +++++-- .../cases/apis/json-type/query/schema.graphql | 11 +++- .../cases/apis/json-type/web3api.build.yaml | 6 +++ .../cases/apis/json-type/web3api.yaml | 14 ++--- .../as/assembly/__tests__/msgpack.spec.ts | 4 +- packages/wasm/as/assembly/msgpack/Read.ts | 4 +- .../wasm/as/assembly/msgpack/ReadDecoder.ts | 6 +-- packages/wasm/as/assembly/msgpack/Write.ts | 4 +- .../wasm/as/assembly/msgpack/WriteEncoder.ts | 4 +- .../wasm/as/assembly/msgpack/WriteSizer.ts | 4 +- 11 files changed, 94 insertions(+), 35 deletions(-) create mode 100644 packages/test-cases/cases/apis/json-type/web3api.build.yaml diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 246646f0d2..9fd21b044c 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -1119,44 +1119,75 @@ describe("Web3ApiClient", () => { }); it("JSON-type", async () => { + type Json = string; + const api = await buildAndDeployApi( `${GetPathToTestApis()}/json-type`, ipfsProvider, ensAddress ); const ensUri = `ens/testnet/${api.ensDomain}`; - const client = await getClient(); + const value = { foo: "bar", bar: "baz" }; const parseResponse = await client.query<{ - parse: any; + parse: Json; }>({ uri: ensUri, query: `query { parse(value: $value) }`, variables: { - value: `{ "foo": "bar", "bar": "baz" }`, + value: JSON.stringify(value), }, }); - const parseResult = JSON.stringify({ foo: "bar", bar: "baz" }); - expect(parseResponse.data?.parse).toEqual(parseResult); + expect(parseResponse.data?.parse).toEqual(JSON.stringify(value)); - const methodStringResponse = await client.query<{ - methodString: string; + const values = [ + JSON.stringify({ bar: "foo" }), + JSON.stringify({ baz: "fuz" }) + ] + const stringifyResponse = await client.query<{ + stringify: Json; }>({ uri: ensUri, query: `query { - methodString(valueA: 5, valueB: "foo", valueC: true) + stringify( + values: $values + ) }`, + variables: { + values, + }, }); - const methodStringResult = `{"valueA":5,"valueB":"foo","valueC":true}`; - expect(methodStringResponse.data?.methodString).toEqual(methodStringResult); + expect(stringifyResponse.data?.stringify).toEqual(values.join("")); + + const object = { + jsonA: JSON.stringify({ foo: "bar" }), + jsonB: JSON.stringify({ fuz: "baz" }), + }; + const stringifyObjectResponse = await client.query<{ + stringifyObject: string; + }>({ + uri: ensUri, + query: `query { + stringifyObject( + object: $object + ) + }`, + variables: { + object, + }, + }); + + expect(stringifyObjectResponse.data?.stringifyObject).toEqual( + object.jsonA + object.jsonB + ); const methodJSONResponse = await client.query<{ - methodJSON: string; + methodJSON: Json; }>({ uri: ensUri, query: `query { diff --git a/packages/test-cases/cases/apis/json-type/query/index.ts b/packages/test-cases/cases/apis/json-type/query/index.ts index 0cb9b5401c..b593503d11 100644 --- a/packages/test-cases/cases/apis/json-type/query/index.ts +++ b/packages/test-cases/cases/apis/json-type/query/index.ts @@ -1,6 +1,7 @@ import { Input_parse, - Input_methodString, + Input_stringify, + Input_stringifyObject, Input_methodJSON } from "./w3"; import { JSON } from "@web3api/wasm-as"; @@ -9,8 +10,20 @@ export function parse(input: Input_parse): JSON.Value { return JSON.parse(input.value); } -export function stringify(input: Input_methodString): string { - return input.value.stringify(); +export function stringify(input: Input_stringify): string { + let str = ""; + for (let i = 0; i < input.values.length; ++i) { + const value = input.values[i]; + str += value.stringify(); + } + return str; +} + +export function stringifyObject(input: Input_stringifyObject): string { + let str = ""; + str += input.object.jsonA.stringify(); + str += input.object.jsonB.stringify(); + return str; } export function methodJSON(input: Input_methodJSON): JSON.Value { diff --git a/packages/test-cases/cases/apis/json-type/query/schema.graphql b/packages/test-cases/cases/apis/json-type/query/schema.graphql index 2d608285b8..610fd4b38c 100644 --- a/packages/test-cases/cases/apis/json-type/query/schema.graphql +++ b/packages/test-cases/cases/apis/json-type/query/schema.graphql @@ -4,7 +4,11 @@ type Query { ): JSON! stringify( - value: JSON! + values: [JSON!]! + ): String! + + stringifyObject( + object: Object! ): String! methodJSON( @@ -13,3 +17,8 @@ type Query { valueC: Boolean! ): JSON! } + +type Object { + jsonA: JSON! + jsonB: JSON! +} diff --git a/packages/test-cases/cases/apis/json-type/web3api.build.yaml b/packages/test-cases/cases/apis/json-type/web3api.build.yaml new file mode 100644 index 0000000000..fe651edf99 --- /dev/null +++ b/packages/test-cases/cases/apis/json-type/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/test-cases/cases/apis/json-type/web3api.yaml b/packages/test-cases/cases/apis/json-type/web3api.yaml index cee38aa338..042e2cb548 100644 --- a/packages/test-cases/cases/apis/json-type/web3api.yaml +++ b/packages/test-cases/cases/apis/json-type/web3api.yaml @@ -1,7 +1,7 @@ -format: 0.0.1-prealpha.1 -query: - schema: - file: ./query/schema.graphql - module: - language: wasm/assemblyscript - file: ./query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./query/schema.graphql + module: ./query/index.ts diff --git a/packages/wasm/as/assembly/__tests__/msgpack.spec.ts b/packages/wasm/as/assembly/__tests__/msgpack.spec.ts index ded22a8714..a5d0e7fefb 100644 --- a/packages/wasm/as/assembly/__tests__/msgpack.spec.ts +++ b/packages/wasm/as/assembly/__tests__/msgpack.spec.ts @@ -24,7 +24,7 @@ class Sanity { float32: f32; float64: f64; str: string = ""; - json: JSON.Obj = JSON.Value.Object(); + json: JSON.Value = JSON.Value.Object(); largeStr: string = ""; bytes: ArrayBuffer = new ArrayBuffer(1); largeBytes: ArrayBuffer = new ArrayBuffer(1); @@ -50,7 +50,7 @@ class Sanity { this.float32 = 3.40282344818115234375; this.float64 = 3124124512.598273468017578125; this.str = "Hello, world!"; - this.json = JSON.parse(`{"foo": "bar", "bar": "baz"}`); + this.json = JSON.parse(`{"foo": "bar", "bar": "baz"}`); this.largeStr = new Array(10).join("web3api "); this.bytes = new ArrayBuffer(12); this.largeBytes = largeBytes; diff --git a/packages/wasm/as/assembly/msgpack/Read.ts b/packages/wasm/as/assembly/msgpack/Read.ts index 35416f66c2..dd100ec762 100644 --- a/packages/wasm/as/assembly/msgpack/Read.ts +++ b/packages/wasm/as/assembly/msgpack/Read.ts @@ -18,7 +18,7 @@ export abstract class Read { abstract readBytesLength(): u32; abstract readBytes(): ArrayBuffer; abstract readBigInt(): BigInt; - abstract readJSON(): JSON.Obj; + abstract readJSON(): JSON.Value; abstract readArrayLength(): u32; abstract readArray(fn: (reader: Read) => T): Array; abstract readMapLength(): u32; @@ -39,7 +39,7 @@ export abstract class Read { abstract readNullableString(): string | null; abstract readNullableBytes(): ArrayBuffer | null; abstract readNullableBigInt(): BigInt | null; - abstract readNullableJSON(): JSON.Obj | null; + abstract readNullableJSON(): JSON.Value | null; abstract readNullableArray(fn: (decoder: Read) => T): Array | null; abstract readNullableMap( key_fn: (reader: Read) => K, diff --git a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts index 989f87a375..314169f6a1 100644 --- a/packages/wasm/as/assembly/msgpack/ReadDecoder.ts +++ b/packages/wasm/as/assembly/msgpack/ReadDecoder.ts @@ -210,9 +210,9 @@ export class ReadDecoder extends Read { return BigInt.fromString(str); } - readJSON(): JSON.Obj { + readJSON(): JSON.Value { const str = this.readString(); - return JSON.parse(str); + return JSON.parse(str); } readArrayLength(): u32 { @@ -373,7 +373,7 @@ export class ReadDecoder extends Read { return this.readBigInt(); } - readNullableJSON(): JSON.Obj | null { + readNullableJSON(): JSON.Value | null { if (this.isNextNil()) { return null; } diff --git a/packages/wasm/as/assembly/msgpack/Write.ts b/packages/wasm/as/assembly/msgpack/Write.ts index 439003d21c..24cc9fcd74 100644 --- a/packages/wasm/as/assembly/msgpack/Write.ts +++ b/packages/wasm/as/assembly/msgpack/Write.ts @@ -19,7 +19,7 @@ export abstract class Write { abstract writeBytesLength(length: u32): void; abstract writeBytes(value: ArrayBuffer): void; abstract writeBigInt(value: BigInt): void; - abstract writeJSON(value: JSON.Obj): void; + abstract writeJSON(value: JSON.Value): void; abstract writeArrayLength(length: u32): void; abstract writeArray( a: Array, @@ -44,7 +44,7 @@ export abstract class Write { abstract writeNullableString(value: string | null): void; abstract writeNullableBytes(value: ArrayBuffer | null): void; abstract writeNullableBigInt(value: BigInt | null): void; - abstract writeNullableJSON(value: JSON.Obj | null): void; + abstract writeNullableJSON(value: JSON.Value | null): void; abstract writeNullableArray( a: Array | null, fn: (writer: Write, item: T) => void diff --git a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts index 99bc2568bf..f7cf947475 100644 --- a/packages/wasm/as/assembly/msgpack/WriteEncoder.ts +++ b/packages/wasm/as/assembly/msgpack/WriteEncoder.ts @@ -134,7 +134,7 @@ export class WriteEncoder extends Write { this.writeString(str); } - writeJSON(value: JSON.Obj): void { + writeJSON(value: JSON.Value): void { const str = value.stringify(); this.writeString(str); } @@ -293,7 +293,7 @@ export class WriteEncoder extends Write { this.writeBigInt(value); } - writeNullableJSON(value: JSON.Obj | null): void { + writeNullableJSON(value: JSON.Value | null): void { if (value === null) { this.writeNil(); return; diff --git a/packages/wasm/as/assembly/msgpack/WriteSizer.ts b/packages/wasm/as/assembly/msgpack/WriteSizer.ts index 2cd8a8b870..84df514ef8 100644 --- a/packages/wasm/as/assembly/msgpack/WriteSizer.ts +++ b/packages/wasm/as/assembly/msgpack/WriteSizer.ts @@ -115,7 +115,7 @@ export class WriteSizer extends Write { this.writeString(str); } - writeJSON(value: JSON.Obj): void { + writeJSON(value: JSON.Value): void { const str = value.stringify(); this.writeString(str); } @@ -270,7 +270,7 @@ export class WriteSizer extends Write { this.writeBigInt(value); } - writeNullableJSON(value: JSON.Obj | null): void { + writeNullableJSON(value: JSON.Value | null): void { if (value === null) { this.writeNil(); return; From feba0c4504d09428e2dd9cf2579cb7ccd1055c04 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 20:14:42 -0500 Subject: [PATCH 38/53] revert bind test-case styling changes --- .../mutation/Mutation/serialization.ts | 102 ++- .../sanity/output/wasm-as/mutation/entry.ts | 7 +- .../imported/TestImport_Mutation/index.ts | 3 +- .../TestImport_Mutation/serialization.ts | 1 + .../output/wasm-as/query/AnotherType/index.ts | 10 +- .../query/AnotherType/serialization.ts | 29 +- .../output/wasm-as/query/CustomType/index.ts | 12 +- .../wasm-as/query/CustomType/serialization.ts | 778 ++++++------------ .../wasm-as/query/Query/serialization.ts | 242 ++---- .../bind/sanity/output/wasm-as/query/entry.ts | 7 +- .../TestImport_AnotherObject/index.ts | 11 +- .../TestImport_AnotherObject/serialization.ts | 40 +- .../query/imported/TestImport_Object/index.ts | 11 +- .../TestImport_Object/serialization.ts | 313 +++---- .../query/imported/TestImport_Query/index.ts | 14 +- .../TestImport_Query/serialization.ts | 156 +--- 16 files changed, 620 insertions(+), 1116 deletions(-) diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts index a0c3325502..06e6e89f56 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/Mutation/serialization.ts @@ -6,7 +6,8 @@ import { Write, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import * as Types from ".."; @@ -20,7 +21,7 @@ export class Input_mutationMethod { } export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutationMethod { - const context: Context = new Context("Deserializing query-type: mutationMethod"); + const context: Context = new Context("Deserializing query-type: mutationMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -72,7 +73,9 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue(reader.readInt32()); + value = Nullable.fromValue( + reader.readInt32() + ); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -83,41 +86,39 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat } else if (field == "enumArray") { reader.context().push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray( - (reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); - } - return value; + _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); } - ); + return value; + }); _enumArraySet = true; reader.context().pop(); } else if (field == "optEnumArray") { reader.context().push(field, "Array> | null", "type found, reading property"); - _optEnumArray = reader.readNullableArray( - (reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); - } else { - value = Nullable.fromValue(reader.readInt32()); - Types.sanitizeCustomEnumValue(value.value); - } + _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); } else { - value = Nullable.fromNull(); + value = Nullable.fromValue( + reader.readInt32() + ); + Types.sanitizeCustomEnumValue(value.value); } - return value; + } else { + value = Nullable.fromNull(); } - ); + return value; + }); reader.context().pop(); } reader.context().pop(); @@ -139,7 +140,7 @@ export function deserializemutationMethodArgs(argsBuf: ArrayBuffer): Input_mutat en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray, + optEnumArray: _optEnumArray }; } @@ -167,10 +168,8 @@ export class Input_objectMethod { optObjectArray: Array | null; } -export function deserializeobjectMethodArgs( - argsBuf: ArrayBuffer -): Input_objectMethod { - const context: Context = new Context("Deserializing query-type: objectMethod"); +export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectMethod { + const context: Context = new Context("Deserializing query-type: objectMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -204,26 +203,22 @@ export function deserializeobjectMethodArgs( } else if (field == "objectArray") { reader.context().push(field, "Array", "type found, reading property"); - _objectArray = reader.readArray( - (reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - } - ); + _objectArray = reader.readArray((reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + }); _objectArraySet = true; reader.context().pop(); } else if (field == "optObjectArray") { reader.context().push(field, "Array | null", "type found, reading property"); - _optObjectArray = reader.readNullableArray( - (reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); - } - return object; + _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); } - ); + return object; + }); reader.context().pop(); } reader.context().pop(); @@ -240,13 +235,11 @@ export function deserializeobjectMethodArgs( object: _object, optObject: _optObject, objectArray: _objectArray, - optObjectArray: _optObjectArray, + optObjectArray: _optObjectArray }; } -export function serializeobjectMethodResult( - result: Types.AnotherType | null -): ArrayBuffer { +export function serializeobjectMethodResult(result: Types.AnotherType | null): ArrayBuffer { const sizerContext: Context = new Context("Serializing (sizing) query-type: objectMethod"); const sizer = new WriteSizer(sizerContext); writeobjectMethodResult(sizer, result); @@ -257,10 +250,7 @@ export function serializeobjectMethodResult( return buffer; } -export function writeobjectMethodResult( - writer: Write, - result: Types.AnotherType | null -): void { +export function writeobjectMethodResult(writer: Write, result: Types.AnotherType | null): void { writer.context().push("objectMethod", "Types.AnotherType | null", "writing property"); if (result) { Types.AnotherType.write(writer, result as Types.AnotherType); diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts index 8f952743be..901eb56fa9 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/entry.ts @@ -32,5 +32,10 @@ export function w3Abort( line: u32, column: u32 ): void { - w3_abort(msg ? msg : "", file ? file : "", line, column); + w3_abort( + msg ? msg : "", + file ? file : "", + line, + column + ); } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/index.ts index 8c3465225b..b55eb2caa5 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/index.ts @@ -1,7 +1,8 @@ import { w3_subinvoke, Nullable, - BigInt + BigInt, + JSON } from "@web3api/wasm-as"; import { serializeimportedMethodArgs, diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/serialization.ts index 6a7831453f..95d086c78c 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/mutation/imported/TestImport_Mutation/serialization.ts @@ -5,6 +5,7 @@ import { WriteEncoder, ReadDecoder, BigInt, + JSON, Context } from "@web3api/wasm-as"; import * as Types from "../.."; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts index 266a209484..5e884c9e20 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/index.ts @@ -1,9 +1,15 @@ -import { Read, Write, Nullable, BigInt } from "@web3api/wasm-as"; +import { + Read, + Write, + Nullable, + BigInt, + JSON +} from "@web3api/wasm-as"; import { serializeAnotherType, deserializeAnotherType, writeAnotherType, - readAnotherType, + readAnotherType } from "./serialization"; import * as Types from ".."; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts index 2894b86984..a74d05adbb 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/AnotherType/serialization.ts @@ -6,21 +6,18 @@ import { WriteEncoder, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import { AnotherType } from "./"; import * as Types from ".."; export function serializeAnotherType(type: AnotherType): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) object-type: AnotherType" - ); + const sizerContext: Context = new Context("Serializing (sizing) object-type: AnotherType"); const sizer = new WriteSizer(sizerContext); writeAnotherType(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) object-type: AnotherType" - ); + const encoderContext: Context = new Context("Serializing (encoding) object-type: AnotherType"); const encoder = new WriteEncoder(buffer, encoderContext); writeAnotherType(encoder, type); return buffer; @@ -32,9 +29,7 @@ export function writeAnotherType(writer: Write, type: AnotherType): void { writer.writeString("prop"); writer.writeNullableString(type.prop); writer.context().pop(); - writer - .context() - .push("circular", "Types.CustomType | null", "writing property"); + writer.context().push("circular", "Types.CustomType | null", "writing property"); writer.writeString("circular"); if (type.circular) { Types.CustomType.write(writer, type.circular as Types.CustomType); @@ -62,15 +57,12 @@ export function readAnotherType(reader: Read): AnotherType { reader.context().push(field, "unknown", "searching for property type"); if (field == "prop") { - reader - .context() - .push(field, "string | null", "type found, reading property"); + reader.context().push(field, "string | null", "type found, reading property"); _prop = reader.readNullableString(); reader.context().pop(); - } else if (field == "circular") { - reader - .context() - .push(field, "Types.CustomType | null", "type found, reading property"); + } + else if (field == "circular") { + reader.context().push(field, "Types.CustomType | null", "type found, reading property"); let object: Types.CustomType | null = null; if (!reader.isNextNil()) { object = Types.CustomType.read(reader); @@ -81,8 +73,9 @@ export function readAnotherType(reader: Read): AnotherType { reader.context().pop(); } + return { prop: _prop, - circular: _circular, + circular: _circular }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts index fe03d485c3..86bea439cd 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/index.ts @@ -1,9 +1,15 @@ -import { Read, Write, Nullable, BigInt } from "@web3api/wasm-as"; +import { + Read, + Write, + Nullable, + BigInt, + JSON +} from "@web3api/wasm-as"; import { serializeCustomType, deserializeCustomType, writeCustomType, - readCustomType, + readCustomType } from "./serialization"; import * as Types from ".."; @@ -21,6 +27,8 @@ export class CustomType { i32: i32; bigint: BigInt; optBigint: BigInt | null; + json: JSON.Value; + optJson: JSON.Value | null; bytes: ArrayBuffer; optBytes: ArrayBuffer | null; boolean: bool; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts index a5ef48b60e..09182be56a 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/CustomType/serialization.ts @@ -6,28 +6,25 @@ import { WriteEncoder, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import { CustomType } from "./"; import * as Types from ".."; export function serializeCustomType(type: CustomType): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) object-type: CustomType" - ); + const sizerContext: Context = new Context("Serializing (sizing) object-type: CustomType"); const sizer = new WriteSizer(sizerContext); writeCustomType(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) object-type: CustomType" - ); + const encoderContext: Context = new Context("Serializing (encoding) object-type: CustomType"); const encoder = new WriteEncoder(buffer, encoderContext); writeCustomType(encoder, type); return buffer; } export function writeCustomType(writer: Write, type: CustomType): void { - writer.writeMapLength(33); + writer.writeMapLength(35); writer.context().push("str", "string", "writing property"); writer.writeString("str"); writer.writeString(type.str); @@ -80,6 +77,14 @@ export function writeCustomType(writer: Write, type: CustomType): void { writer.writeString("optBigint"); writer.writeNullableBigInt(type.optBigint); writer.context().pop(); + writer.context().push("json", "JSON.Value", "writing property"); + writer.writeString("json"); + writer.writeJSON(type.json); + writer.context().pop(); + writer.context().push("optJson", "JSON.Value | null", "writing property"); + writer.writeString("optJson"); + writer.writeNullableJSON(type.optJson); + writer.context().pop(); writer.context().push("bytes", "ArrayBuffer", "writing property"); writer.writeString("bytes"); writer.writeBytes(type.bytes); @@ -104,125 +109,65 @@ export function writeCustomType(writer: Write, type: CustomType): void { writer.context().pop(); writer.context().push("uOptArray", "Array | null", "writing property"); writer.writeString("uOptArray"); - writer.writeNullableArray( - type.uOptArray, - (writer: Write, item: u32): void => { - writer.writeUInt32(item); - } - ); + writer.writeNullableArray(type.uOptArray, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); writer.context().pop(); - writer - .context() - .push("optUOptArray", "Array> | null", "writing property"); + writer.context().push("optUOptArray", "Array> | null", "writing property"); writer.writeString("optUOptArray"); - writer.writeNullableArray( - type.optUOptArray, - (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - } - ); + writer.writeNullableArray(type.optUOptArray, (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + }); writer.context().pop(); - writer - .context() - .push("optStrOptArray", "Array | null", "writing property"); + writer.context().push("optStrOptArray", "Array | null", "writing property"); writer.writeString("optStrOptArray"); - writer.writeNullableArray( - type.optStrOptArray, - (writer: Write, item: string | null): void => { - writer.writeNullableString(item); - } - ); + writer.writeNullableArray(type.optStrOptArray, (writer: Write, item: string | null): void => { + writer.writeNullableString(item); + }); writer.context().pop(); writer.context().push("uArrayArray", "Array>", "writing property"); writer.writeString("uArrayArray"); - writer.writeArray( - type.uArrayArray, - (writer: Write, item: Array): void => { - writer.writeArray(item, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); - } - ); + writer.writeArray(type.uArrayArray, (writer: Write, item: Array): void => { + writer.writeArray(item, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); + }); writer.context().pop(); - writer - .context() - .push( - "uOptArrayOptArray", - "Array> | null>", - "writing property" - ); + writer.context().push("uOptArrayOptArray", "Array> | null>", "writing property"); writer.writeString("uOptArrayOptArray"); - writer.writeArray( - type.uOptArrayOptArray, - (writer: Write, item: Array> | null): void => { - writer.writeNullableArray( - item, - (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - } - ); - } - ); + writer.writeArray(type.uOptArrayOptArray, (writer: Write, item: Array> | null): void => { + writer.writeNullableArray(item, (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + }); + }); writer.context().pop(); - writer - .context() - .push( - "uArrayOptArrayArray", - "Array> | null>", - "writing property" - ); + writer.context().push("uArrayOptArrayArray", "Array> | null>", "writing property"); writer.writeString("uArrayOptArrayArray"); - writer.writeArray( - type.uArrayOptArrayArray, - (writer: Write, item: Array> | null): void => { - writer.writeNullableArray( - item, - (writer: Write, item: Array): void => { - writer.writeArray(item, (writer: Write, item: u32): void => { - writer.writeUInt32(item); - }); - } - ); - } - ); + writer.writeArray(type.uArrayOptArrayArray, (writer: Write, item: Array> | null): void => { + writer.writeNullableArray(item, (writer: Write, item: Array): void => { + writer.writeArray(item, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); + }); + }); writer.context().pop(); - writer - .context() - .push( - "crazyArray", - "Array | null>> | null> | null", - "writing property" - ); + writer.context().push("crazyArray", "Array | null>> | null> | null", "writing property"); writer.writeString("crazyArray"); - writer.writeNullableArray( - type.crazyArray, - (writer: Write, item: Array | null>> | null): void => { - writer.writeNullableArray( - item, - (writer: Write, item: Array | null>): void => { - writer.writeArray( - item, - (writer: Write, item: Array | null): void => { - writer.writeNullableArray( - item, - (writer: Write, item: u32): void => { - writer.writeUInt32(item); - } - ); - } - ); - } - ); - } - ); + writer.writeNullableArray(type.crazyArray, (writer: Write, item: Array | null>> | null): void => { + writer.writeNullableArray(item, (writer: Write, item: Array | null>): void => { + writer.writeArray(item, (writer: Write, item: Array | null): void => { + writer.writeNullableArray(item, (writer: Write, item: u32): void => { + writer.writeUInt32(item); + }); + }); + }); + }); writer.context().pop(); writer.context().push("object", "Types.AnotherType", "writing property"); writer.writeString("object"); Types.AnotherType.write(writer, type.object); writer.context().pop(); - writer - .context() - .push("optObject", "Types.AnotherType | null", "writing property"); + writer.context().push("optObject", "Types.AnotherType | null", "writing property"); writer.writeString("optObject"); if (type.optObject) { Types.AnotherType.write(writer, type.optObject as Types.AnotherType); @@ -230,71 +175,41 @@ export function writeCustomType(writer: Write, type: CustomType): void { writer.writeNil(); } writer.context().pop(); - writer - .context() - .push("objectArray", "Array", "writing property"); + writer.context().push("objectArray", "Array", "writing property"); writer.writeString("objectArray"); - writer.writeArray( - type.objectArray, - (writer: Write, item: Types.AnotherType): void => { - Types.AnotherType.write(writer, item); - } - ); - writer.context().pop(); - writer - .context() - .push( - "optObjectArray", - "Array | null", - "writing property" - ); + writer.writeArray(type.objectArray, (writer: Write, item: Types.AnotherType): void => { + Types.AnotherType.write(writer, item); + }); + writer.context().pop(); + writer.context().push("optObjectArray", "Array | null", "writing property"); writer.writeString("optObjectArray"); - writer.writeNullableArray( - type.optObjectArray, - (writer: Write, item: Types.AnotherType | null): void => { - if (item) { - Types.AnotherType.write(writer, item as Types.AnotherType); - } else { - writer.writeNil(); - } + writer.writeNullableArray(type.optObjectArray, (writer: Write, item: Types.AnotherType | null): void => { + if (item) { + Types.AnotherType.write(writer, item as Types.AnotherType); + } else { + writer.writeNil(); } - ); + }); writer.context().pop(); writer.context().push("en", "Types.CustomEnum", "writing property"); writer.writeString("en"); writer.writeInt32(type.en); writer.context().pop(); - writer - .context() - .push("optEnum", "Nullable", "writing property"); + writer.context().push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(type.optEnum); writer.context().pop(); - writer - .context() - .push("enumArray", "Array", "writing property"); + writer.context().push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray( - type.enumArray, - (writer: Write, item: Types.CustomEnum): void => { - writer.writeInt32(item); - } - ); - writer.context().pop(); - writer - .context() - .push( - "optEnumArray", - "Array> | null", - "writing property" - ); + writer.writeArray(type.enumArray, (writer: Write, item: Types.CustomEnum): void => { + writer.writeInt32(item); + }); + writer.context().pop(); + writer.context().push("optEnumArray", "Array> | null", "writing property"); writer.writeString("optEnumArray"); - writer.writeNullableArray( - type.optEnumArray, - (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - } - ); + writer.writeNullableArray(type.optEnumArray, (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + }); writer.context().pop(); } @@ -330,6 +245,9 @@ export function readCustomType(reader: Read): CustomType { let _bigint: BigInt = BigInt.fromUInt16(0); let _bigintSet: bool = false; let _optBigint: BigInt | null = null; + let _json: JSON.Value = JSON.Value.Null(); + let _jsonSet: bool = false; + let _optJson: JSON.Value | null = null; let _bytes: ArrayBuffer = new ArrayBuffer(0); let _bytesSet: bool = false; let _optBytes: ArrayBuffer | null = null; @@ -371,283 +289,221 @@ export function readCustomType(reader: Read): CustomType { _str = reader.readString(); _strSet = true; reader.context().pop(); - } else if (field == "optStr") { - reader - .context() - .push(field, "string | null", "type found, reading property"); + } + else if (field == "optStr") { + reader.context().push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } else if (field == "u") { + } + else if (field == "u") { reader.context().push(field, "u32", "type found, reading property"); _u = reader.readUInt32(); _uSet = true; reader.context().pop(); - } else if (field == "optU") { - reader - .context() - .push(field, "Nullable", "type found, reading property"); + } + else if (field == "optU") { + reader.context().push(field, "Nullable", "type found, reading property"); _optU = reader.readNullableUInt32(); reader.context().pop(); - } else if (field == "u8") { + } + else if (field == "u8") { reader.context().push(field, "u8", "type found, reading property"); _u8 = reader.readUInt8(); _u8Set = true; reader.context().pop(); - } else if (field == "u16") { + } + else if (field == "u16") { reader.context().push(field, "u16", "type found, reading property"); _u16 = reader.readUInt16(); _u16Set = true; reader.context().pop(); - } else if (field == "u32") { + } + else if (field == "u32") { reader.context().push(field, "u32", "type found, reading property"); _u32 = reader.readUInt32(); _u32Set = true; reader.context().pop(); - } else if (field == "i") { + } + else if (field == "i") { reader.context().push(field, "i32", "type found, reading property"); _i = reader.readInt32(); _iSet = true; reader.context().pop(); - } else if (field == "i8") { + } + else if (field == "i8") { reader.context().push(field, "i8", "type found, reading property"); _i8 = reader.readInt8(); _i8Set = true; reader.context().pop(); - } else if (field == "i16") { + } + else if (field == "i16") { reader.context().push(field, "i16", "type found, reading property"); _i16 = reader.readInt16(); _i16Set = true; reader.context().pop(); - } else if (field == "i32") { + } + else if (field == "i32") { reader.context().push(field, "i32", "type found, reading property"); _i32 = reader.readInt32(); _i32Set = true; reader.context().pop(); - } else if (field == "bigint") { + } + else if (field == "bigint") { reader.context().push(field, "BigInt", "type found, reading property"); _bigint = reader.readBigInt(); _bigintSet = true; reader.context().pop(); - } else if (field == "optBigint") { - reader - .context() - .push(field, "BigInt | null", "type found, reading property"); + } + else if (field == "optBigint") { + reader.context().push(field, "BigInt | null", "type found, reading property"); _optBigint = reader.readNullableBigInt(); reader.context().pop(); - } else if (field == "bytes") { - reader - .context() - .push(field, "ArrayBuffer", "type found, reading property"); + } + else if (field == "json") { + reader.context().push(field, "JSON.Value", "type found, reading property"); + _json = reader.readJSON(); + _jsonSet = true; + reader.context().pop(); + } + else if (field == "optJson") { + reader.context().push(field, "JSON.Value | null", "type found, reading property"); + _optJson = reader.readNullableJSON(); + reader.context().pop(); + } + else if (field == "bytes") { + reader.context().push(field, "ArrayBuffer", "type found, reading property"); _bytes = reader.readBytes(); _bytesSet = true; reader.context().pop(); - } else if (field == "optBytes") { - reader - .context() - .push(field, "ArrayBuffer | null", "type found, reading property"); + } + else if (field == "optBytes") { + reader.context().push(field, "ArrayBuffer | null", "type found, reading property"); _optBytes = reader.readNullableBytes(); reader.context().pop(); - } else if (field == "boolean") { + } + else if (field == "boolean") { reader.context().push(field, "bool", "type found, reading property"); _boolean = reader.readBool(); _booleanSet = true; reader.context().pop(); - } else if (field == "optBoolean") { - reader - .context() - .push(field, "Nullable", "type found, reading property"); + } + else if (field == "optBoolean") { + reader.context().push(field, "Nullable", "type found, reading property"); _optBoolean = reader.readNullableBool(); reader.context().pop(); - } else if (field == "uArray") { - reader - .context() - .push(field, "Array", "type found, reading property"); - _uArray = reader.readArray( - (reader: Read): u32 => { - return reader.readUInt32(); - } - ); + } + else if (field == "uArray") { + reader.context().push(field, "Array", "type found, reading property"); + _uArray = reader.readArray((reader: Read): u32 => { + return reader.readUInt32(); + }); _uArraySet = true; reader.context().pop(); - } else if (field == "uOptArray") { - reader - .context() - .push(field, "Array | null", "type found, reading property"); - _uOptArray = reader.readNullableArray( - (reader: Read): u32 => { - return reader.readUInt32(); - } - ); - reader.context().pop(); - } else if (field == "optUOptArray") { - reader - .context() - .push( - field, - "Array> | null", - "type found, reading property" - ); - _optUOptArray = reader.readNullableArray( - (reader: Read): Nullable => { - return reader.readNullableUInt32(); - } - ); - reader.context().pop(); - } else if (field == "optStrOptArray") { - reader - .context() - .push( - field, - "Array | null", - "type found, reading property" - ); - _optStrOptArray = reader.readNullableArray((reader: Read): - | string - | null => { + } + else if (field == "uOptArray") { + reader.context().push(field, "Array | null", "type found, reading property"); + _uOptArray = reader.readNullableArray((reader: Read): u32 => { + return reader.readUInt32(); + }); + reader.context().pop(); + } + else if (field == "optUOptArray") { + reader.context().push(field, "Array> | null", "type found, reading property"); + _optUOptArray = reader.readNullableArray((reader: Read): Nullable => { + return reader.readNullableUInt32(); + }); + reader.context().pop(); + } + else if (field == "optStrOptArray") { + reader.context().push(field, "Array | null", "type found, reading property"); + _optStrOptArray = reader.readNullableArray((reader: Read): string | null => { return reader.readNullableString(); }); reader.context().pop(); - } else if (field == "uArrayArray") { - reader - .context() - .push(field, "Array>", "type found, reading property"); - _uArrayArray = reader.readArray( - (reader: Read): Array => { - return reader.readArray( - (reader: Read): u32 => { - return reader.readUInt32(); - } - ); - } - ); + } + else if (field == "uArrayArray") { + reader.context().push(field, "Array>", "type found, reading property"); + _uArrayArray = reader.readArray((reader: Read): Array => { + return reader.readArray((reader: Read): u32 => { + return reader.readUInt32(); + }); + }); _uArrayArraySet = true; reader.context().pop(); - } else if (field == "uOptArrayOptArray") { - reader - .context() - .push( - field, - "Array> | null>", - "type found, reading property" - ); - _uOptArrayOptArray = reader.readArray((reader: Read): Array< - Nullable - > | null => { - return reader.readNullableArray( - (reader: Read): Nullable => { - return reader.readNullableUInt32(); - } - ); + } + else if (field == "uOptArrayOptArray") { + reader.context().push(field, "Array> | null>", "type found, reading property"); + _uOptArrayOptArray = reader.readArray((reader: Read): Array> | null => { + return reader.readNullableArray((reader: Read): Nullable => { + return reader.readNullableUInt32(); + }); }); _uOptArrayOptArraySet = true; reader.context().pop(); - } else if (field == "uArrayOptArrayArray") { - reader - .context() - .push( - field, - "Array> | null>", - "type found, reading property" - ); - _uArrayOptArrayArray = reader.readArray((reader: Read): Array< - Array - > | null => { - return reader.readNullableArray( - (reader: Read): Array => { - return reader.readArray( - (reader: Read): u32 => { - return reader.readUInt32(); - } - ); - } - ); + } + else if (field == "uArrayOptArrayArray") { + reader.context().push(field, "Array> | null>", "type found, reading property"); + _uArrayOptArrayArray = reader.readArray((reader: Read): Array> | null => { + return reader.readNullableArray((reader: Read): Array => { + return reader.readArray((reader: Read): u32 => { + return reader.readUInt32(); + }); + }); }); _uArrayOptArrayArraySet = true; reader.context().pop(); - } else if (field == "crazyArray") { - reader - .context() - .push( - field, - "Array | null>> | null> | null", - "type found, reading property" - ); - _crazyArray = reader.readNullableArray((reader: Read): Array< - Array | null> - > | null => { - return reader.readNullableArray( - (reader: Read): Array | null> => { - return reader.readArray((reader: Read): Array | null => { - return reader.readNullableArray( - (reader: Read): u32 => { - return reader.readUInt32(); - } - ); + } + else if (field == "crazyArray") { + reader.context().push(field, "Array | null>> | null> | null", "type found, reading property"); + _crazyArray = reader.readNullableArray((reader: Read): Array | null>> | null => { + return reader.readNullableArray((reader: Read): Array | null> => { + return reader.readArray((reader: Read): Array | null => { + return reader.readNullableArray((reader: Read): u32 => { + return reader.readUInt32(); }); - } - ); + }); + }); }); reader.context().pop(); - } else if (field == "object") { - reader - .context() - .push(field, "Types.AnotherType", "type found, reading property"); + } + else if (field == "object") { + reader.context().push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } else if (field == "optObject") { - reader - .context() - .push( - field, - "Types.AnotherType | null", - "type found, reading property" - ); + } + else if (field == "optObject") { + reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } else if (field == "objectArray") { - reader - .context() - .push( - field, - "Array", - "type found, reading property" - ); - _objectArray = reader.readArray( - (reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - } - ); + } + else if (field == "objectArray") { + reader.context().push(field, "Array", "type found, reading property"); + _objectArray = reader.readArray((reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + }); _objectArraySet = true; reader.context().pop(); - } else if (field == "optObjectArray") { - reader - .context() - .push( - field, - "Array | null", - "type found, reading property" - ); - _optObjectArray = reader.readNullableArray( - (reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); - } - return object; + } + else if (field == "optObjectArray") { + reader.context().push(field, "Array | null", "type found, reading property"); + _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); } - ); + return object; + }); reader.context().pop(); - } else if (field == "en") { - reader - .context() - .push(field, "Types.CustomEnum", "type found, reading property"); + } + else if (field == "en") { + reader.context().push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -658,14 +514,9 @@ export function readCustomType(reader: Read): CustomType { _en = value; _enSet = true; reader.context().pop(); - } else if (field == "optEnum") { - reader - .context() - .push( - field, - "Nullable", - "type found, reading property" - ); + } + else if (field == "optEnum") { + reader.context().push(field, "Nullable", "type found, reading property"); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -673,7 +524,9 @@ export function readCustomType(reader: Read): CustomType { Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue(reader.readInt32()); + value = Nullable.fromValue( + reader.readInt32() + ); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -681,196 +534,109 @@ export function readCustomType(reader: Read): CustomType { } _optEnum = value; reader.context().pop(); - } else if (field == "enumArray") { - reader - .context() - .push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray( - (reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); - } - return value; + } + else if (field == "enumArray") { + reader.context().push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); } - ); + return value; + }); _enumArraySet = true; reader.context().pop(); - } else if (field == "optEnumArray") { - reader - .context() - .push( - field, - "Array> | null", - "type found, reading property" - ); - _optEnumArray = reader.readNullableArray( - (reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); - } else { - value = Nullable.fromValue(reader.readInt32()); - Types.sanitizeCustomEnumValue(value.value); - } + } + else if (field == "optEnumArray") { + reader.context().push(field, "Array> | null", "type found, reading property"); + _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); } else { - value = Nullable.fromNull(); + value = Nullable.fromValue( + reader.readInt32() + ); + Types.sanitizeCustomEnumValue(value.value); } - return value; + } else { + value = Nullable.fromNull(); } - ); + return value; + }); reader.context().pop(); } reader.context().pop(); } if (!_strSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'str: String'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'str: String'")); } if (!_uSet) { - throw new Error( - reader.context().printWithContext("Missing required property: 'u: UInt'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'u: UInt'")); } if (!_u8Set) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'u8: UInt8'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'u8: UInt8'")); } if (!_u16Set) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'u16: UInt16'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'u16: UInt16'")); } if (!_u32Set) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'u32: UInt32'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'u32: UInt32'")); } if (!_iSet) { - throw new Error( - reader.context().printWithContext("Missing required property: 'i: Int'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'i: Int'")); } if (!_i8Set) { - throw new Error( - reader.context().printWithContext("Missing required property: 'i8: Int8'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'i8: Int8'")); } if (!_i16Set) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'i16: Int16'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'i16: Int16'")); } if (!_i32Set) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'i32: Int32'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'i32: Int32'")); } if (!_bigintSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'bigint: BigInt'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'bigint: BigInt'")); + } + if (!_jsonSet) { + throw new Error(reader.context().printWithContext("Missing required property: 'json: JSON'")); } if (!_bytesSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'bytes: Bytes'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'bytes: Bytes'")); } if (!_booleanSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'boolean: Boolean'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'boolean: Boolean'")); } if (!_uArraySet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'uArray: [UInt]'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'uArray: [UInt]'")); } if (!_uArrayArraySet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'uArrayArray: [[UInt]]'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'uArrayArray: [[UInt]]'")); } if (!_uOptArrayOptArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'uOptArrayOptArray: [[UInt32]]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'uOptArrayOptArray: [[UInt32]]'")); } if (!_uArrayOptArrayArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'uArrayOptArrayArray: [[[UInt32]]]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'uArrayOptArrayArray: [[[UInt32]]]'")); } if (!_object || !_objectSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'object: AnotherType'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'object: AnotherType'")); } if (!_objectArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'objectArray: [AnotherType]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'objectArray: [AnotherType]'")); } if (!_enSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'en: CustomEnum'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'en: CustomEnum'")); } if (!_enumArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'enumArray: [CustomEnum]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'enumArray: [CustomEnum]'")); } return { @@ -887,6 +653,8 @@ export function readCustomType(reader: Read): CustomType { i32: _i32, bigint: _bigint, optBigint: _optBigint, + json: _json, + optJson: _optJson, bytes: _bytes, optBytes: _optBytes, boolean: _boolean, @@ -906,6 +674,6 @@ export function readCustomType(reader: Read): CustomType { en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray, + optEnumArray: _optEnumArray }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts index 4d569f0c07..908f7878ba 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/Query/serialization.ts @@ -6,7 +6,8 @@ import { Write, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import * as Types from ".."; @@ -19,10 +20,8 @@ export class Input_queryMethod { optEnumArray: Array> | null; } -export function deserializequeryMethodArgs( - argsBuf: ArrayBuffer -): Input_queryMethod { - const context: Context = new Context("Deserializing query-type: queryMethod"); +export function deserializequeryMethodArgs(argsBuf: ArrayBuffer): Input_queryMethod { + const context: Context = new Context("Deserializing query-type: queryMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -46,16 +45,14 @@ export function deserializequeryMethodArgs( _str = reader.readString(); _strSet = true; reader.context().pop(); - } else if (field == "optStr") { - reader - .context() - .push(field, "string | null", "type found, reading property"); + } + else if (field == "optStr") { + reader.context().push(field, "string | null", "type found, reading property"); _optStr = reader.readNullableString(); reader.context().pop(); - } else if (field == "en") { - reader - .context() - .push(field, "Types.CustomEnum", "type found, reading property"); + } + else if (field == "en") { + reader.context().push(field, "Types.CustomEnum", "type found, reading property"); let value: Types.CustomEnum; if (reader.isNextString()) { value = Types.getCustomEnumValue(reader.readString()); @@ -66,14 +63,9 @@ export function deserializequeryMethodArgs( _en = value; _enSet = true; reader.context().pop(); - } else if (field == "optEnum") { - reader - .context() - .push( - field, - "Nullable", - "type found, reading property" - ); + } + else if (field == "optEnum") { + reader.context().push(field, "Nullable", "type found, reading property"); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -81,7 +73,9 @@ export function deserializequeryMethodArgs( Types.getCustomEnumValue(reader.readString()) ); } else { - value = Nullable.fromValue(reader.readInt32()); + value = Nullable.fromValue( + reader.readInt32() + ); Types.sanitizeCustomEnumValue(value.value); } } else { @@ -89,77 +83,55 @@ export function deserializequeryMethodArgs( } _optEnum = value; reader.context().pop(); - } else if (field == "enumArray") { - reader - .context() - .push(field, "Array", "type found, reading property"); - _enumArray = reader.readArray( - (reader: Read): Types.CustomEnum => { - let value: Types.CustomEnum; - if (reader.isNextString()) { - value = Types.getCustomEnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeCustomEnumValue(value); - } - return value; + } + else if (field == "enumArray") { + reader.context().push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray((reader: Read): Types.CustomEnum => { + let value: Types.CustomEnum; + if (reader.isNextString()) { + value = Types.getCustomEnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeCustomEnumValue(value); } - ); + return value; + }); _enumArraySet = true; reader.context().pop(); - } else if (field == "optEnumArray") { - reader - .context() - .push( - field, - "Array> | null", - "type found, reading property" - ); - _optEnumArray = reader.readNullableArray( - (reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getCustomEnumValue(reader.readString()) - ); - } else { - value = Nullable.fromValue(reader.readInt32()); - Types.sanitizeCustomEnumValue(value.value); - } + } + else if (field == "optEnumArray") { + reader.context().push(field, "Array> | null", "type found, reading property"); + _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getCustomEnumValue(reader.readString()) + ); } else { - value = Nullable.fromNull(); + value = Nullable.fromValue( + reader.readInt32() + ); + Types.sanitizeCustomEnumValue(value.value); } - return value; + } else { + value = Nullable.fromNull(); } - ); + return value; + }); reader.context().pop(); } reader.context().pop(); } if (!_strSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'str: String'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'str: String'")); } if (!_enSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'en: CustomEnum'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'en: CustomEnum'")); } if (!_enumArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required argument: 'enumArray: [CustomEnum]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'enumArray: [CustomEnum]'")); } return { @@ -168,20 +140,16 @@ export function deserializequeryMethodArgs( en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray, + optEnumArray: _optEnumArray }; } export function serializequeryMethodResult(result: i32): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) query-type: queryMethod" - ); + const sizerContext: Context = new Context("Serializing (sizing) query-type: queryMethod"); const sizer = new WriteSizer(sizerContext); writequeryMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) query-type: queryMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) query-type: queryMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writequeryMethodResult(encoder, result); return buffer; @@ -200,12 +168,8 @@ export class Input_objectMethod { optObjectArray: Array | null; } -export function deserializeobjectMethodArgs( - argsBuf: ArrayBuffer -): Input_objectMethod { - const context: Context = new Context( - "Deserializing query-type: objectMethod" - ); +export function deserializeobjectMethodArgs(argsBuf: ArrayBuffer): Input_objectMethod { + const context: Context = new Context("Deserializing query-type: objectMethod"); const reader = new ReadDecoder(argsBuf, context); let numFields = reader.readMapLength(); @@ -222,114 +186,72 @@ export function deserializeobjectMethodArgs( reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader - .context() - .push(field, "Types.AnotherType", "type found, reading property"); + reader.context().push(field, "Types.AnotherType", "type found, reading property"); const object = Types.AnotherType.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } else if (field == "optObject") { - reader - .context() - .push( - field, - "Types.AnotherType | null", - "type found, reading property" - ); + } + else if (field == "optObject") { + reader.context().push(field, "Types.AnotherType | null", "type found, reading property"); let object: Types.AnotherType | null = null; if (!reader.isNextNil()) { object = Types.AnotherType.read(reader); } _optObject = object; reader.context().pop(); - } else if (field == "objectArray") { - reader - .context() - .push( - field, - "Array", - "type found, reading property" - ); - _objectArray = reader.readArray( - (reader: Read): Types.AnotherType => { - const object = Types.AnotherType.read(reader); - return object; - } - ); + } + else if (field == "objectArray") { + reader.context().push(field, "Array", "type found, reading property"); + _objectArray = reader.readArray((reader: Read): Types.AnotherType => { + const object = Types.AnotherType.read(reader); + return object; + }); _objectArraySet = true; reader.context().pop(); - } else if (field == "optObjectArray") { - reader - .context() - .push( - field, - "Array | null", - "type found, reading property" - ); - _optObjectArray = reader.readNullableArray( - (reader: Read): Types.AnotherType | null => { - let object: Types.AnotherType | null = null; - if (!reader.isNextNil()) { - object = Types.AnotherType.read(reader); - } - return object; + } + else if (field == "optObjectArray") { + reader.context().push(field, "Array | null", "type found, reading property"); + _optObjectArray = reader.readNullableArray((reader: Read): Types.AnotherType | null => { + let object: Types.AnotherType | null = null; + if (!reader.isNextNil()) { + object = Types.AnotherType.read(reader); } - ); + return object; + }); reader.context().pop(); } reader.context().pop(); } if (!_object || !_objectSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required argument: 'object: AnotherType'") - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'object: AnotherType'")); } if (!_objectArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required argument: 'objectArray: [AnotherType]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required argument: 'objectArray: [AnotherType]'")); } return { object: _object, optObject: _optObject, objectArray: _objectArray, - optObjectArray: _optObjectArray, + optObjectArray: _optObjectArray }; } -export function serializeobjectMethodResult( - result: Types.AnotherType | null -): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) query-type: objectMethod" - ); +export function serializeobjectMethodResult(result: Types.AnotherType | null): ArrayBuffer { + const sizerContext: Context = new Context("Serializing (sizing) query-type: objectMethod"); const sizer = new WriteSizer(sizerContext); writeobjectMethodResult(sizer, result); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) query-type: objectMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) query-type: objectMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writeobjectMethodResult(encoder, result); return buffer; } -export function writeobjectMethodResult( - writer: Write, - result: Types.AnotherType | null -): void { - writer - .context() - .push("objectMethod", "Types.AnotherType | null", "writing property"); +export function writeobjectMethodResult(writer: Write, result: Types.AnotherType | null): void { + writer.context().push("objectMethod", "Types.AnotherType | null", "writing property"); if (result) { Types.AnotherType.write(writer, result as Types.AnotherType); } else { diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts index c0e7d76770..bd4b76b54d 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/entry.ts @@ -32,5 +32,10 @@ export function w3Abort( line: u32, column: u32 ): void { - w3_abort(msg ? msg : "", file ? file : "", line, column); + w3_abort( + msg ? msg : "", + file ? file : "", + line, + column + ); } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts index 99009d6a17..ad2244e754 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/index.ts @@ -1,13 +1,20 @@ -import { Read, Write, Nullable, BigInt } from "@web3api/wasm-as"; +import { + Read, + Write, + Nullable, + BigInt, + JSON +} from "@web3api/wasm-as" import { serializeTestImport_AnotherObject, deserializeTestImport_AnotherObject, writeTestImport_AnotherObject, - readTestImport_AnotherObject, + readTestImport_AnotherObject } from "./serialization"; import * as Types from "../.."; export class TestImport_AnotherObject { + public static uri: string = "testimport.uri.eth"; prop: string; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts index 7cfef41025..6ba982606a 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_AnotherObject/serialization.ts @@ -6,32 +6,24 @@ import { WriteEncoder, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import { TestImport_AnotherObject } from "./"; import * as Types from "../.."; -export function serializeTestImport_AnotherObject( - type: TestImport_AnotherObject -): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) imported object-type: TestImport_AnotherObject" - ); +export function serializeTestImport_AnotherObject(type: TestImport_AnotherObject): ArrayBuffer { + const sizerContext: Context = new Context("Serializing (sizing) imported object-type: TestImport_AnotherObject"); const sizer = new WriteSizer(sizerContext); writeTestImport_AnotherObject(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) import object-type: TestImport_AnotherObject" - ); + const encoderContext: Context = new Context("Serializing (encoding) import object-type: TestImport_AnotherObject"); const encoder = new WriteEncoder(buffer, encoderContext); writeTestImport_AnotherObject(encoder, type); return buffer; } -export function writeTestImport_AnotherObject( - writer: Write, - type: TestImport_AnotherObject -): void { +export function writeTestImport_AnotherObject(writer: Write, type: TestImport_AnotherObject): void { writer.writeMapLength(1); writer.context().push("prop", "string", "writing property"); writer.writeString("prop"); @@ -39,19 +31,13 @@ export function writeTestImport_AnotherObject( writer.context().pop(); } -export function deserializeTestImport_AnotherObject( - buffer: ArrayBuffer -): TestImport_AnotherObject { - const context: Context = new Context( - "Deserializing imported object-type TestImport_AnotherObject" - ); +export function deserializeTestImport_AnotherObject(buffer: ArrayBuffer): TestImport_AnotherObject { + const context: Context = new Context("Deserializing imported object-type TestImport_AnotherObject"); const reader = new ReadDecoder(buffer, context); return readTestImport_AnotherObject(reader); } -export function readTestImport_AnotherObject( - reader: Read -): TestImport_AnotherObject { +export function readTestImport_AnotherObject(reader: Read): TestImport_AnotherObject { let numFields = reader.readMapLength(); let _prop: string = ""; @@ -72,14 +58,10 @@ export function readTestImport_AnotherObject( } if (!_propSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'prop: String'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'prop: String'")); } return { - prop: _prop, + prop: _prop }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts index 78ceee0a59..016badbb62 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/index.ts @@ -1,13 +1,20 @@ -import { Read, Write, Nullable, BigInt } from "@web3api/wasm-as"; +import { + Read, + Write, + Nullable, + BigInt, + JSON +} from "@web3api/wasm-as" import { serializeTestImport_Object, deserializeTestImport_Object, writeTestImport_Object, - readTestImport_Object, + readTestImport_Object } from "./serialization"; import * as Types from "../.."; export class TestImport_Object { + public static uri: string = "testimport.uri.eth"; object: Types.TestImport_AnotherObject; diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts index cc399ccb12..ce7a8f3ac0 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Object/serialization.ts @@ -6,137 +6,77 @@ import { WriteEncoder, Nullable, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import { TestImport_Object } from "./"; import * as Types from "../.."; -export function serializeTestImport_Object( - type: TestImport_Object -): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) imported object-type: TestImport_Object" - ); +export function serializeTestImport_Object(type: TestImport_Object): ArrayBuffer { + const sizerContext: Context = new Context("Serializing (sizing) imported object-type: TestImport_Object"); const sizer = new WriteSizer(sizerContext); writeTestImport_Object(sizer, type); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) import object-type: TestImport_Object" - ); + const encoderContext: Context = new Context("Serializing (encoding) import object-type: TestImport_Object"); const encoder = new WriteEncoder(buffer, encoderContext); writeTestImport_Object(encoder, type); return buffer; } -export function writeTestImport_Object( - writer: Write, - type: TestImport_Object -): void { +export function writeTestImport_Object(writer: Write, type: TestImport_Object): void { writer.writeMapLength(8); - writer - .context() - .push("object", "Types.TestImport_AnotherObject", "writing property"); + writer.context().push("object", "Types.TestImport_AnotherObject", "writing property"); writer.writeString("object"); Types.TestImport_AnotherObject.write(writer, type.object); writer.context().pop(); - writer - .context() - .push( - "optObject", - "Types.TestImport_AnotherObject | null", - "writing property" - ); + writer.context().push("optObject", "Types.TestImport_AnotherObject | null", "writing property"); writer.writeString("optObject"); if (type.optObject) { - Types.TestImport_AnotherObject.write( - writer, - type.optObject as Types.TestImport_AnotherObject - ); + Types.TestImport_AnotherObject.write(writer, type.optObject as Types.TestImport_AnotherObject); } else { writer.writeNil(); } writer.context().pop(); - writer - .context() - .push( - "objectArray", - "Array", - "writing property" - ); + writer.context().push("objectArray", "Array", "writing property"); writer.writeString("objectArray"); - writer.writeArray( - type.objectArray, - (writer: Write, item: Types.TestImport_AnotherObject): void => { - Types.TestImport_AnotherObject.write(writer, item); - } - ); + writer.writeArray(type.objectArray, (writer: Write, item: Types.TestImport_AnotherObject): void => { + Types.TestImport_AnotherObject.write(writer, item); + }); writer.context().pop(); - writer - .context() - .push( - "optObjectArray", - "Array | null", - "writing property" - ); + writer.context().push("optObjectArray", "Array | null", "writing property"); writer.writeString("optObjectArray"); - writer.writeNullableArray( - type.optObjectArray, - (writer: Write, item: Types.TestImport_AnotherObject | null): void => { - if (item) { - Types.TestImport_AnotherObject.write( - writer, - item as Types.TestImport_AnotherObject - ); - } else { - writer.writeNil(); - } + writer.writeNullableArray(type.optObjectArray, (writer: Write, item: Types.TestImport_AnotherObject | null): void => { + if (item) { + Types.TestImport_AnotherObject.write(writer, item as Types.TestImport_AnotherObject); + } else { + writer.writeNil(); } - ); + }); writer.context().pop(); writer.context().push("en", "Types.TestImport_Enum", "writing property"); writer.writeString("en"); writer.writeInt32(type.en); writer.context().pop(); - writer - .context() - .push("optEnum", "Nullable", "writing property"); + writer.context().push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(type.optEnum); writer.context().pop(); - writer - .context() - .push("enumArray", "Array", "writing property"); + writer.context().push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray( - type.enumArray, - (writer: Write, item: Types.TestImport_Enum): void => { - writer.writeInt32(item); - } - ); + writer.writeArray(type.enumArray, (writer: Write, item: Types.TestImport_Enum): void => { + writer.writeInt32(item); + }); writer.context().pop(); - writer - .context() - .push( - "optEnumArray", - "Array> | null", - "writing property" - ); + writer.context().push("optEnumArray", "Array> | null", "writing property"); writer.writeString("optEnumArray"); - writer.writeNullableArray( - type.optEnumArray, - (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - } - ); + writer.writeNullableArray(type.optEnumArray, (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + }); writer.context().pop(); } -export function deserializeTestImport_Object( - buffer: ArrayBuffer -): TestImport_Object { - const context: Context = new Context( - "Deserializing imported object-type TestImport_Object" - ); +export function deserializeTestImport_Object(buffer: ArrayBuffer): TestImport_Object { + const context: Context = new Context("Deserializing imported object-type TestImport_Object"); const reader = new ReadDecoder(buffer, context); return readTestImport_Object(reader); } @@ -163,69 +103,43 @@ export function readTestImport_Object(reader: Read): TestImport_Object { reader.context().push(field, "unknown", "searching for property type"); if (field == "object") { - reader - .context() - .push( - field, - "Types.TestImport_AnotherObject", - "type found, reading property" - ); + reader.context().push(field, "Types.TestImport_AnotherObject", "type found, reading property"); const object = Types.TestImport_AnotherObject.read(reader); _object = object; _objectSet = true; reader.context().pop(); - } else if (field == "optObject") { - reader - .context() - .push( - field, - "Types.TestImport_AnotherObject | null", - "type found, reading property" - ); + } + else if (field == "optObject") { + reader.context().push(field, "Types.TestImport_AnotherObject | null", "type found, reading property"); let object: Types.TestImport_AnotherObject | null = null; if (!reader.isNextNil()) { object = Types.TestImport_AnotherObject.read(reader); } _optObject = object; reader.context().pop(); - } else if (field == "objectArray") { - reader - .context() - .push( - field, - "Array", - "type found, reading property" - ); - _objectArray = reader.readArray( - (reader: Read): Types.TestImport_AnotherObject => { - const object = Types.TestImport_AnotherObject.read(reader); - return object; - } - ); + } + else if (field == "objectArray") { + reader.context().push(field, "Array", "type found, reading property"); + _objectArray = reader.readArray((reader: Read): Types.TestImport_AnotherObject => { + const object = Types.TestImport_AnotherObject.read(reader); + return object; + }); _objectArraySet = true; reader.context().pop(); - } else if (field == "optObjectArray") { - reader - .context() - .push( - field, - "Array | null", - "type found, reading property" - ); - _optObjectArray = reader.readNullableArray( - (reader: Read): Types.TestImport_AnotherObject | null => { - let object: Types.TestImport_AnotherObject | null = null; - if (!reader.isNextNil()) { - object = Types.TestImport_AnotherObject.read(reader); - } - return object; + } + else if (field == "optObjectArray") { + reader.context().push(field, "Array | null", "type found, reading property"); + _optObjectArray = reader.readNullableArray((reader: Read): Types.TestImport_AnotherObject | null => { + let object: Types.TestImport_AnotherObject | null = null; + if (!reader.isNextNil()) { + object = Types.TestImport_AnotherObject.read(reader); } - ); + return object; + }); reader.context().pop(); - } else if (field == "en") { - reader - .context() - .push(field, "Types.TestImport_Enum", "type found, reading property"); + } + else if (field == "en") { + reader.context().push(field, "Types.TestImport_Enum", "type found, reading property"); let value: Types.TestImport_Enum; if (reader.isNextString()) { value = Types.getTestImport_EnumValue(reader.readString()); @@ -236,14 +150,9 @@ export function readTestImport_Object(reader: Read): TestImport_Object { _en = value; _enSet = true; reader.context().pop(); - } else if (field == "optEnum") { - reader - .context() - .push( - field, - "Nullable", - "type found, reading property" - ); + } + else if (field == "optEnum") { + reader.context().push(field, "Nullable", "type found, reading property"); let value: Nullable; if (!reader.isNextNil()) { if (reader.isNextString()) { @@ -251,7 +160,9 @@ export function readTestImport_Object(reader: Read): TestImport_Object { Types.getTestImport_EnumValue(reader.readString()) ); } else { - value = Nullable.fromValue(reader.readInt32()); + value = Nullable.fromValue( + reader.readInt32() + ); Types.sanitizeTestImport_EnumValue(value.value); } } else { @@ -259,92 +170,58 @@ export function readTestImport_Object(reader: Read): TestImport_Object { } _optEnum = value; reader.context().pop(); - } else if (field == "enumArray") { - reader - .context() - .push( - field, - "Array", - "type found, reading property" - ); - _enumArray = reader.readArray( - (reader: Read): Types.TestImport_Enum => { - let value: Types.TestImport_Enum; - if (reader.isNextString()) { - value = Types.getTestImport_EnumValue(reader.readString()); - } else { - value = reader.readInt32(); - Types.sanitizeTestImport_EnumValue(value); - } - return value; + } + else if (field == "enumArray") { + reader.context().push(field, "Array", "type found, reading property"); + _enumArray = reader.readArray((reader: Read): Types.TestImport_Enum => { + let value: Types.TestImport_Enum; + if (reader.isNextString()) { + value = Types.getTestImport_EnumValue(reader.readString()); + } else { + value = reader.readInt32(); + Types.sanitizeTestImport_EnumValue(value); } - ); + return value; + }); _enumArraySet = true; reader.context().pop(); - } else if (field == "optEnumArray") { - reader - .context() - .push( - field, - "Array> | null", - "type found, reading property" - ); - _optEnumArray = reader.readNullableArray( - (reader: Read): Nullable => { - let value: Nullable; - if (!reader.isNextNil()) { - if (reader.isNextString()) { - value = Nullable.fromValue( - Types.getTestImport_EnumValue(reader.readString()) - ); - } else { - value = Nullable.fromValue(reader.readInt32()); - Types.sanitizeTestImport_EnumValue(value.value); - } + } + else if (field == "optEnumArray") { + reader.context().push(field, "Array> | null", "type found, reading property"); + _optEnumArray = reader.readNullableArray((reader: Read): Nullable => { + let value: Nullable; + if (!reader.isNextNil()) { + if (reader.isNextString()) { + value = Nullable.fromValue( + Types.getTestImport_EnumValue(reader.readString()) + ); } else { - value = Nullable.fromNull(); + value = Nullable.fromValue( + reader.readInt32() + ); + Types.sanitizeTestImport_EnumValue(value.value); } - return value; + } else { + value = Nullable.fromNull(); } - ); + return value; + }); reader.context().pop(); } reader.context().pop(); } if (!_object || !_objectSet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'object: TestImport_AnotherObject'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'object: TestImport_AnotherObject'")); } if (!_objectArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'objectArray: [TestImport_AnotherObject]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'objectArray: [TestImport_AnotherObject]'")); } if (!_enSet) { - throw new Error( - reader - .context() - .printWithContext("Missing required property: 'en: TestImport_Enum'") - ); + throw new Error(reader.context().printWithContext("Missing required property: 'en: TestImport_Enum'")); } if (!_enumArraySet) { - throw new Error( - reader - .context() - .printWithContext( - "Missing required property: 'enumArray: [TestImport_Enum]'" - ) - ); + throw new Error(reader.context().printWithContext("Missing required property: 'enumArray: [TestImport_Enum]'")); } return { @@ -355,6 +232,6 @@ export function readTestImport_Object(reader: Read): TestImport_Object { en: _en, optEnum: _optEnum, enumArray: _enumArray, - optEnumArray: _optEnumArray, + optEnumArray: _optEnumArray }; } diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts index 0533d9a583..c23c367a60 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/index.ts @@ -1,20 +1,24 @@ -import { w3_subinvoke, Nullable, BigInt } from "@web3api/wasm-as"; +import { + w3_subinvoke, + Nullable, + BigInt, + JSON +} from "@web3api/wasm-as"; import { serializeimportedMethodArgs, deserializeimportedMethodResult, Input_importedMethod, serializeanotherMethodArgs, deserializeanotherMethodResult, - Input_anotherMethod, + Input_anotherMethod } from "./serialization"; import * as Types from "../.."; export class TestImport_Query { + public static uri: string = "testimport.uri.eth"; - public static importedMethod( - input: Input_importedMethod - ): Types.TestImport_Object | null { + public static importedMethod(input: Input_importedMethod): Types.TestImport_Object | null { const args = serializeimportedMethodArgs(input); const result = w3_subinvoke( "testimport.uri.eth", diff --git a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts index 37020a570f..71106cb486 100644 --- a/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts +++ b/packages/test-cases/cases/bind/sanity/output/wasm-as/query/imported/TestImport_Query/serialization.ts @@ -5,7 +5,8 @@ import { WriteEncoder, ReadDecoder, BigInt, - Context, + JSON, + Context } from "@web3api/wasm-as"; import * as Types from "../.."; @@ -25,18 +26,12 @@ export class Input_importedMethod { optEnumArray: Array> | null; } -export function serializeimportedMethodArgs( - input: Input_importedMethod -): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) imported query-type: importedMethod" - ); +export function serializeimportedMethodArgs(input: Input_importedMethod): ArrayBuffer { + const sizerContext: Context = new Context("Serializing (sizing) imported query-type: importedMethod"); const sizer = new WriteSizer(sizerContext); writeimportedMethodArgs(sizer, input); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) imported query-type: importedMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) imported query-type: importedMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writeimportedMethodArgs(encoder, input); return buffer; @@ -63,133 +58,74 @@ export function writeimportedMethodArgs( writer.writeString("optU"); writer.writeNullableUInt32(input.optU); writer.context().pop(); - writer - .context() - .push( - "uArrayArray", - "Array> | null>", - "writing property" - ); + writer.context().push("uArrayArray", "Array> | null>", "writing property"); writer.writeString("uArrayArray"); - writer.writeArray( - input.uArrayArray, - (writer: Write, item: Array> | null): void => { - writer.writeNullableArray( - item, - (writer: Write, item: Nullable): void => { - writer.writeNullableUInt32(item); - } - ); - } - ); + writer.writeArray(input.uArrayArray, (writer: Write, item: Array> | null): void => { + writer.writeNullableArray(item, (writer: Write, item: Nullable): void => { + writer.writeNullableUInt32(item); + }); + }); writer.context().pop(); - writer - .context() - .push("object", "Types.TestImport_Object", "writing property"); + writer.context().push("object", "Types.TestImport_Object", "writing property"); writer.writeString("object"); Types.TestImport_Object.write(writer, input.object); writer.context().pop(); - writer - .context() - .push("optObject", "Types.TestImport_Object | null", "writing property"); + writer.context().push("optObject", "Types.TestImport_Object | null", "writing property"); writer.writeString("optObject"); if (input.optObject) { - Types.TestImport_Object.write( - writer, - input.optObject as Types.TestImport_Object - ); + Types.TestImport_Object.write(writer, input.optObject as Types.TestImport_Object); } else { writer.writeNil(); } writer.context().pop(); - writer - .context() - .push("objectArray", "Array", "writing property"); + writer.context().push("objectArray", "Array", "writing property"); writer.writeString("objectArray"); - writer.writeArray( - input.objectArray, - (writer: Write, item: Types.TestImport_Object): void => { - Types.TestImport_Object.write(writer, item); - } - ); + writer.writeArray(input.objectArray, (writer: Write, item: Types.TestImport_Object): void => { + Types.TestImport_Object.write(writer, item); + }); writer.context().pop(); - writer - .context() - .push( - "optObjectArray", - "Array | null", - "writing property" - ); + writer.context().push("optObjectArray", "Array | null", "writing property"); writer.writeString("optObjectArray"); - writer.writeNullableArray( - input.optObjectArray, - (writer: Write, item: Types.TestImport_Object | null): void => { - if (item) { - Types.TestImport_Object.write(writer, item as Types.TestImport_Object); - } else { - writer.writeNil(); - } + writer.writeNullableArray(input.optObjectArray, (writer: Write, item: Types.TestImport_Object | null): void => { + if (item) { + Types.TestImport_Object.write(writer, item as Types.TestImport_Object); + } else { + writer.writeNil(); } - ); + }); writer.context().pop(); writer.context().push("en", "Types.TestImport_Enum", "writing property"); writer.writeString("en"); writer.writeInt32(input.en); writer.context().pop(); - writer - .context() - .push("optEnum", "Nullable", "writing property"); + writer.context().push("optEnum", "Nullable", "writing property"); writer.writeString("optEnum"); writer.writeNullableInt32(input.optEnum); writer.context().pop(); - writer - .context() - .push("enumArray", "Array", "writing property"); + writer.context().push("enumArray", "Array", "writing property"); writer.writeString("enumArray"); - writer.writeArray( - input.enumArray, - (writer: Write, item: Types.TestImport_Enum): void => { - writer.writeInt32(item); - } - ); + writer.writeArray(input.enumArray, (writer: Write, item: Types.TestImport_Enum): void => { + writer.writeInt32(item); + }); writer.context().pop(); - writer - .context() - .push( - "optEnumArray", - "Array> | null", - "writing property" - ); + writer.context().push("optEnumArray", "Array> | null", "writing property"); writer.writeString("optEnumArray"); - writer.writeNullableArray( - input.optEnumArray, - (writer: Write, item: Nullable): void => { - writer.writeNullableInt32(item); - } - ); + writer.writeNullableArray(input.optEnumArray, (writer: Write, item: Nullable): void => { + writer.writeNullableInt32(item); + }); writer.context().pop(); } -export function deserializeimportedMethodResult( - buffer: ArrayBuffer -): Types.TestImport_Object | null { - const context: Context = new Context( - "Deserializing imported query-type: importedMethod" - ); +export function deserializeimportedMethodResult(buffer: ArrayBuffer): Types.TestImport_Object | null { + const context: Context = new Context("Deserializing imported query-type: importedMethod"); const reader = new ReadDecoder(buffer, context); - reader - .context() - .push( - "importedMethod", - "Types.TestImport_Object | null", - "reading function output" - ); + reader.context().push("importedMethod", "Types.TestImport_Object | null", "reading function output"); let object: Types.TestImport_Object | null = null; if (!reader.isNextNil()) { object = Types.TestImport_Object.read(reader); } - const res: Types.TestImport_Object | null = object; + const res: Types.TestImport_Object | null = object; reader.context().pop(); return res; @@ -199,18 +135,12 @@ export class Input_anotherMethod { arg: Array; } -export function serializeanotherMethodArgs( - input: Input_anotherMethod -): ArrayBuffer { - const sizerContext: Context = new Context( - "Serializing (sizing) imported query-type: anotherMethod" - ); +export function serializeanotherMethodArgs(input: Input_anotherMethod): ArrayBuffer { + const sizerContext: Context = new Context("Serializing (sizing) imported query-type: anotherMethod"); const sizer = new WriteSizer(sizerContext); writeanotherMethodArgs(sizer, input); const buffer = new ArrayBuffer(sizer.length); - const encoderContext: Context = new Context( - "Serializing (encoding) imported query-type: anotherMethod" - ); + const encoderContext: Context = new Context("Serializing (encoding) imported query-type: anotherMethod"); const encoder = new WriteEncoder(buffer, encoderContext); writeanotherMethodArgs(encoder, input); return buffer; @@ -230,9 +160,7 @@ export function writeanotherMethodArgs( } export function deserializeanotherMethodResult(buffer: ArrayBuffer): i32 { - const context: Context = new Context( - "Deserializing imported query-type: anotherMethod" - ); + const context: Context = new Context("Deserializing imported query-type: anotherMethod"); const reader = new ReadDecoder(buffer, context); reader.context().push("anotherMethod", "i32", "reading function output"); From 2885c304920bdf95b6c0de89ed9a3db7c61c00c2 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 21:10:07 -0500 Subject: [PATCH 39/53] fix ethereum plugin tests --- packages/js/plugins/ethereum/jest.config.js | 9 +++++++ .../src/__tests__/integration/package.json | 6 +++-- .../__tests__/integration/web3api.build.yaml | 6 +++++ .../src/__tests__/integration/web3api.yaml | 25 ++++++++----------- packages/js/plugins/ethereum/tsconfig.json | 4 ++- 5 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 packages/js/plugins/ethereum/src/__tests__/integration/web3api.build.yaml diff --git a/packages/js/plugins/ethereum/jest.config.js b/packages/js/plugins/ethereum/jest.config.js index 1ed528c8ac..4f1fe2128f 100644 --- a/packages/js/plugins/ethereum/jest.config.js +++ b/packages/js/plugins/ethereum/jest.config.js @@ -8,5 +8,14 @@ module.exports = { "transform": { "^.+\\.(ts|tsx)$": "ts-jest" }, + modulePathIgnorePatterns: [ + "/src/__tests__/integration" + ], + testPathIgnorePatterns: [ + "/src/__tests__/integration" + ], + transformIgnorePatterns: [ + "/src/__tests__/integration" + ], testEnvironment: 'node' } diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/package.json b/packages/js/plugins/ethereum/src/__tests__/integration/package.json index eca874a8fc..6f74205a76 100644 --- a/packages/js/plugins/ethereum/src/__tests__/integration/package.json +++ b/packages/js/plugins/ethereum/src/__tests__/integration/package.json @@ -11,8 +11,10 @@ "deploy": "yarn deploy:web3api", "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens simplestorage.eth" }, - "devDependencies": { - "@web3api/cli": "0.0.1-prealpha.40", + "dependencies": { "@web3api/wasm-as": "0.0.1-prealpha.40" + }, + "devDependencies": { + "@web3api/cli": "0.0.1-prealpha.40" } } diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/web3api.build.yaml b/packages/js/plugins/ethereum/src/__tests__/integration/web3api.build.yaml new file mode 100644 index 0000000000..2cf967618b --- /dev/null +++ b/packages/js/plugins/ethereum/src/__tests__/integration/web3api.build.yaml @@ -0,0 +1,6 @@ +format: 0.0.1-prealpha.2 +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../../../wasm/as diff --git a/packages/js/plugins/ethereum/src/__tests__/integration/web3api.yaml b/packages/js/plugins/ethereum/src/__tests__/integration/web3api.yaml index d62a5fa5a0..630932aff7 100644 --- a/packages/js/plugins/ethereum/src/__tests__/integration/web3api.yaml +++ b/packages/js/plugins/ethereum/src/__tests__/integration/web3api.yaml @@ -1,15 +1,10 @@ -description: SimpleStorage Web3API Example -repository: https://github.com/web3-api/monorepo -format: 0.0.1-prealpha.1 -mutation: - schema: - file: ./src/mutation/schema.graphql - module: - language: wasm/assemblyscript - file: ./src/mutation/index.ts -query: - schema: - file: ./src/query/schema.graphql - module: - language: wasm/assemblyscript - file: ./src/query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + query: + schema: ./src/query/schema.graphql + module: ./src/query/index.ts + mutation: + schema: ./src/mutation/schema.graphql + module: ./src/mutation/index.ts diff --git a/packages/js/plugins/ethereum/tsconfig.json b/packages/js/plugins/ethereum/tsconfig.json index 85d516ce30..4a5f4564af 100644 --- a/packages/js/plugins/ethereum/tsconfig.json +++ b/packages/js/plugins/ethereum/tsconfig.json @@ -6,5 +6,7 @@ "include": [ "./src/**/*.ts" ], - "exclude": [] + "exclude": [ + "./**/.w3/**/*.ts" + ] } From cc6b550dd699f2f94508e1b0c77a15a34402f3b7 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 21:10:54 -0500 Subject: [PATCH 40/53] update bind README --- packages/schema/bind/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/schema/bind/README.md b/packages/schema/bind/README.md index 2c3bc0a136..ad7a60c227 100644 --- a/packages/schema/bind/README.md +++ b/packages/schema/bind/README.md @@ -24,6 +24,7 @@ MessagePack encoded data is sent between module boundaries. Decoding of the mess | Boolean | bool | true or false stored as 1 byte. | | Bytes | bin 8/16/32 | array of 8-bit unsigned integer. | | BigInt | fixstr or str 8/16/32 | UTF-8 string. | +| JSON | fixstr or str 8/16/32 | UTF-8 string. | | [Type] | fixarray or array 16/32 | Array of elements. | | type CustomObject {
  prop: Type
} | fixmap or map 16/32 | sdf | From 74ba6d5d0e6f2a3d7f1aa27553e8d35bcb5fe973 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 21:37:21 -0500 Subject: [PATCH 41/53] fix cli tests --- packages/cli/jest.config.js | 9 +++++++ packages/cli/src/__tests__/project/Dockerfile | 5 ++++ .../src/__tests__/project/web3api-meta.yaml | 1 + .../project/web3api.build.docker.yaml | 5 +++- .../project/web3api.build.no-docker.yaml | 5 +++- .../src/__tests__/project/web3api.build.yaml | 8 ++++++ .../cli/src/__tests__/project/web3api.yaml | 25 ++++++++----------- 7 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 packages/cli/src/__tests__/project/web3api.build.yaml diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js index 94d7b322e0..792e2dff0e 100644 --- a/packages/cli/jest.config.js +++ b/packages/cli/jest.config.js @@ -8,5 +8,14 @@ module.exports = { diagnostics: false }, }, + modulePathIgnorePatterns: [ + "/src/__tests__/project" + ], + testPathIgnorePatterns: [ + "/src/__tests__/project" + ], + transformIgnorePatterns: [ + "/src/__tests__/project" + ], setupFilesAfterEnv: ["./jest.setup.js"], }; diff --git a/packages/cli/src/__tests__/project/Dockerfile b/packages/cli/src/__tests__/project/Dockerfile index 7d9e562c63..00b931f31a 100644 --- a/packages/cli/src/__tests__/project/Dockerfile +++ b/packages/cli/src/__tests__/project/Dockerfile @@ -7,11 +7,16 @@ RUN apk --no-cache --virtual build-dependencies add \ make \ g++ +WORKDIR /linked-packages + +COPY .w3/build/linked-packages/@web3api/wasm-as ./@web3api/wasm-as + WORKDIR /project # Install deps in its own step, making rebuilds faster # when just the Web3API schema & implementation files change COPY package.json . +RUN npx json -I -f package.json -e "this.dependencies['@web3api/wasm-as']='../linked-packages/@web3api/wasm-as'" RUN yarn # Copy all manifest files diff --git a/packages/cli/src/__tests__/project/web3api-meta.yaml b/packages/cli/src/__tests__/project/web3api-meta.yaml index 3ef8cbc94a..e98d1ea015 100644 --- a/packages/cli/src/__tests__/project/web3api-meta.yaml +++ b/packages/cli/src/__tests__/project/web3api-meta.yaml @@ -1,6 +1,7 @@ format: 0.0.1-prealpha.5 language: wasm/assemblyscript meta: ./web3api.meta.yaml +build: ./web3api.build.yaml modules: mutation: schema: ./src/mutation/schema.graphql diff --git a/packages/cli/src/__tests__/project/web3api.build.docker.yaml b/packages/cli/src/__tests__/project/web3api.build.docker.yaml index f15b12c4c1..262638db10 100644 --- a/packages/cli/src/__tests__/project/web3api.build.docker.yaml +++ b/packages/cli/src/__tests__/project/web3api.build.docker.yaml @@ -1,4 +1,4 @@ -format: 0.0.1-prealpha.1 +format: 0.0.1-prealpha.2 docker: name: build-env dockerfile: ./Dockerfile @@ -7,3 +7,6 @@ config: include: - ./src - ./package.json +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/cli/src/__tests__/project/web3api.build.no-docker.yaml b/packages/cli/src/__tests__/project/web3api.build.no-docker.yaml index 42845d3bc1..94a2eeab14 100644 --- a/packages/cli/src/__tests__/project/web3api.build.no-docker.yaml +++ b/packages/cli/src/__tests__/project/web3api.build.no-docker.yaml @@ -1,4 +1,4 @@ -format: 0.0.1-prealpha.1 +format: 0.0.1-prealpha.2 docker: name: build-env config: @@ -6,3 +6,6 @@ config: include: - ./src - ./package.json +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/cli/src/__tests__/project/web3api.build.yaml b/packages/cli/src/__tests__/project/web3api.build.yaml new file mode 100644 index 0000000000..da64a0e04d --- /dev/null +++ b/packages/cli/src/__tests__/project/web3api.build.yaml @@ -0,0 +1,8 @@ +format: 0.0.1-prealpha.2 +docker: + name: build-env +config: + node_version: "14.16.0" +linked_packages: + - name: "@web3api/wasm-as" + path: ../../../../wasm/as diff --git a/packages/cli/src/__tests__/project/web3api.yaml b/packages/cli/src/__tests__/project/web3api.yaml index 05996fffd1..e9bb7c5820 100644 --- a/packages/cli/src/__tests__/project/web3api.yaml +++ b/packages/cli/src/__tests__/project/web3api.yaml @@ -1,15 +1,10 @@ -format: 0.0.1-prealpha.1 -description: Test Manifest -repository: https://github.com -mutation: - schema: - file: ./src/mutation/schema.graphql - module: - language: wasm/assemblyscript - file: ./src/mutation/index.ts -query: - schema: - file: ./src/query/schema.graphql - module: - language: wasm/assemblyscript - file: ./src/query/index.ts +format: 0.0.1-prealpha.5 +build: ./web3api.build.yaml +language: wasm/assemblyscript +modules: + mutation: + schema: ./src/mutation/schema.graphql + module: ./src/mutation/index.ts + query: + schema: ./src/query/schema.graphql + module: ./src/query/index.ts From 2d9152e1ee05672c279a18fca7153a9daf9f2593 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 22:00:59 -0500 Subject: [PATCH 42/53] fix cli tests --- packages/cli/jest.config.js | 6 +++--- packages/cli/src/__tests__/e2e/query.spec.ts | 2 +- .../cli/src/__tests__/plugin/expected-types/mutation.ts | 1 + packages/cli/src/__tests__/plugin/expected-types/query.ts | 1 + packages/cli/src/__tests__/plugin/expected-types/types.ts | 1 + .../bind/src/bindings/plugin-ts/templates/types-ts.mustache | 2 +- .../test-cases/cases/bind/sanity/output/plugin-ts/types.ts | 2 +- 7 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js index 792e2dff0e..485bf61f18 100644 --- a/packages/cli/jest.config.js +++ b/packages/cli/jest.config.js @@ -9,13 +9,13 @@ module.exports = { }, }, modulePathIgnorePatterns: [ - "/src/__tests__/project" + "/src/__tests__/project/.w3" ], testPathIgnorePatterns: [ - "/src/__tests__/project" + "/src/__tests__/project/.w3" ], transformIgnorePatterns: [ - "/src/__tests__/project" + "/src/__tests__/project/.w3" ], setupFilesAfterEnv: ["./jest.setup.js"], }; diff --git a/packages/cli/src/__tests__/e2e/query.spec.ts b/packages/cli/src/__tests__/e2e/query.spec.ts index a3aa861835..8e14e19207 100644 --- a/packages/cli/src/__tests__/e2e/query.spec.ts +++ b/packages/cli/src/__tests__/e2e/query.spec.ts @@ -103,5 +103,5 @@ mutation { args: ["test-env", "down"], cwd: projectRoot }, w3Cli); - }, 240000); + }, 360000); }); diff --git a/packages/cli/src/__tests__/plugin/expected-types/mutation.ts b/packages/cli/src/__tests__/plugin/expected-types/mutation.ts index 03a1e55d18..a7c209718d 100644 --- a/packages/cli/src/__tests__/plugin/expected-types/mutation.ts +++ b/packages/cli/src/__tests__/plugin/expected-types/mutation.ts @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/cli/src/__tests__/plugin/expected-types/query.ts b/packages/cli/src/__tests__/plugin/expected-types/query.ts index 4694c2d51d..8811ccf303 100644 --- a/packages/cli/src/__tests__/plugin/expected-types/query.ts +++ b/packages/cli/src/__tests__/plugin/expected-types/query.ts @@ -10,6 +10,7 @@ import { Int32, Bytes, BigInt, + Json, String, Boolean } from "./types"; diff --git a/packages/cli/src/__tests__/plugin/expected-types/types.ts b/packages/cli/src/__tests__/plugin/expected-types/types.ts index c728a32b10..5cd92a587a 100644 --- a/packages/cli/src/__tests__/plugin/expected-types/types.ts +++ b/packages/cli/src/__tests__/plugin/expected-types/types.ts @@ -16,6 +16,7 @@ export type Int16 = number; export type Int32 = number; export type Bytes = Uint8Array; export type BigInt = string; +export type Json = string; export type String = string; export type Boolean = boolean; diff --git a/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache b/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache index 9264405866..1513c1f82b 100644 --- a/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache +++ b/packages/schema/bind/src/bindings/plugin-ts/templates/types-ts.mustache @@ -16,7 +16,7 @@ export type Int16 = number; export type Int32 = number; export type Bytes = Uint8Array; export type BigInt = string; -export type Json = unknown; +export type Json = string; export type String = string; export type Boolean = boolean; diff --git a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts index f9d06bd3e5..8e8315251b 100644 --- a/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts +++ b/packages/test-cases/cases/bind/sanity/output/plugin-ts/types.ts @@ -16,7 +16,7 @@ export type Int16 = number; export type Int32 = number; export type Bytes = Uint8Array; export type BigInt = string; -export type Json = unknown; +export type Json = string; export type String = string; export type Boolean = boolean; From 92c92b0ae55d32763c947110f3b40caadc9fc0df Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 22:43:08 -0500 Subject: [PATCH 43/53] increase timeout --- packages/cli/src/__tests__/e2e/query.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/__tests__/e2e/query.spec.ts b/packages/cli/src/__tests__/e2e/query.spec.ts index 8e14e19207..ed9ab17877 100644 --- a/packages/cli/src/__tests__/e2e/query.spec.ts +++ b/packages/cli/src/__tests__/e2e/query.spec.ts @@ -103,5 +103,5 @@ mutation { args: ["test-env", "down"], cwd: projectRoot }, w3Cli); - }, 360000); + }, 480000); }); From ffee1fd21264fa959d2f91244cb800c1b3a06a83 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 22:48:49 -0500 Subject: [PATCH 44/53] incrase timeout --- .github/workflows/js-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/js-ci.yaml b/.github/workflows/js-ci.yaml index 28c464b585..5a0683efa3 100644 --- a/.github/workflows/js-ci.yaml +++ b/.github/workflows/js-ci.yaml @@ -6,7 +6,7 @@ jobs: JS-CI-Linux: name: JS-CI-Linux runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 40 steps: - name: Checkout repository uses: actions/checkout@v2 From 043b2865115bbd813d58360dfc41d34d77682bb6 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Wed, 8 Sep 2021 23:51:54 -0500 Subject: [PATCH 45/53] increase timeout --- .github/workflows/js-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/js-ci.yaml b/.github/workflows/js-ci.yaml index 5a0683efa3..cd5f279db2 100644 --- a/.github/workflows/js-ci.yaml +++ b/.github/workflows/js-ci.yaml @@ -6,7 +6,7 @@ jobs: JS-CI-Linux: name: JS-CI-Linux runs-on: ubuntu-latest - timeout-minutes: 40 + timeout-minutes: 60 steps: - name: Checkout repository uses: actions/checkout@v2 From 388c76f2ea70ab11b231122ef349a0f2e4358669 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 12:26:36 -0500 Subject: [PATCH 46/53] fix client tests --- packages/js/client/src/__tests__/Web3ApiClient.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts index 9fd21b044c..20bd803175 100644 --- a/packages/js/client/src/__tests__/Web3ApiClient.spec.ts +++ b/packages/js/client/src/__tests__/Web3ApiClient.spec.ts @@ -1823,7 +1823,6 @@ scalar Int16 scalar Int32 scalar Bytes scalar BigInt -scalar JSON directive @imported( uri: String! From c0f38370879b442947ba21b8d946a4e0aa804b10 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 18:29:55 -0500 Subject: [PATCH 47/53] remove redirects + fix meta manifest --- .../apis/ens/meta/recipes/getExpiryTimes.json | 0 ...rseRegistrar.json => reverseRegister.json} | 0 packages/apis/ens/package.json | 12 +- packages/apis/ens/recipes/configure-fifs.json | 1 - packages/apis/ens/recipes/constants.json | 8 +- .../ens/recipes/create-fifs-subdomain.json | 1 - packages/apis/ens/redirects.js | 13 -- packages/apis/ens/web3api.build.yaml | 6 +- packages/apis/ens/web3api.meta.yaml | 39 ++-- packages/apis/ens/web3api.yaml | 8 +- yarn.lock | 209 ------------------ 11 files changed, 38 insertions(+), 259 deletions(-) create mode 100644 packages/apis/ens/meta/recipes/getExpiryTimes.json rename packages/apis/ens/meta/recipes/{reverseRegistrar.json => reverseRegister.json} (100%) delete mode 100644 packages/apis/ens/recipes/configure-fifs.json delete mode 100644 packages/apis/ens/recipes/create-fifs-subdomain.json delete mode 100644 packages/apis/ens/redirects.js diff --git a/packages/apis/ens/meta/recipes/getExpiryTimes.json b/packages/apis/ens/meta/recipes/getExpiryTimes.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/apis/ens/meta/recipes/reverseRegistrar.json b/packages/apis/ens/meta/recipes/reverseRegister.json similarity index 100% rename from packages/apis/ens/meta/recipes/reverseRegistrar.json rename to packages/apis/ens/meta/recipes/reverseRegister.json diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index 11163d0e75..6b377069a0 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -12,14 +12,16 @@ "deploy:contract": "node ./deploy-contracts.js", "test": "yarn test:e2e && yarn test:recipe", "test:e2e": "jest --passWithNoTests --runInBand --verbose", - "test:recipe": "npx w3 query ./recipes/e2e.json --redirects ./redirects.js" + "test:recipe": "npx w3 query ./recipes/e2e.json" + }, + "dependencies": { + "@web3api/wasm-as": "0.0.1-prealpha.40" }, "devDependencies": { "@types/jest": "22.2.3", - "@web3api/cli": "0.0.1-prealpha.39", - "@web3api/ethereum-plugin-js": "0.0.1-prealpha.39", - "@web3api/test-env-js": "0.0.1-prealpha.39", - "@web3api/wasm-as": "0.0.1-prealpha.39", + "@web3api/cli": "0.0.1-prealpha.40", + "@web3api/ethereum-plugin-js": "0.0.1-prealpha.40", + "@web3api/test-env-js": "0.0.1-prealpha.40", "ethers": "5.0.8", "jest": "27.0.6", "js-yaml": "3.14.0", diff --git a/packages/apis/ens/recipes/configure-fifs.json b/packages/apis/ens/recipes/configure-fifs.json deleted file mode 100644 index 30404ce4c5..0000000000 --- a/packages/apis/ens/recipes/configure-fifs.json +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index 54756b3381..880fd49485 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xFcCeD5E997E7fb1D0594518D3eD57245bB8ed17E", - "Registrar": "0xc0b3B62DD0400E4baa721DdEc9B8A384147b23fF", - "Resolver": "0x4339316e04CFfB5961D1c41fEF8E44bfA2A7fBd1", - "Reverse": "0x47a2Db5D68751EeAdFBC44851E84AcDB4F7299Cc", + "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", + "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", + "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", + "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/recipes/create-fifs-subdomain.json b/packages/apis/ens/recipes/create-fifs-subdomain.json deleted file mode 100644 index 30404ce4c5..0000000000 --- a/packages/apis/ens/recipes/create-fifs-subdomain.json +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/packages/apis/ens/redirects.js b/packages/apis/ens/redirects.js deleted file mode 100644 index 082e1c8c05..0000000000 --- a/packages/apis/ens/redirects.js +++ /dev/null @@ -1,13 +0,0 @@ -var uts46 = require(__dirname + "/../../../node_modules/@web3api/uts46-plugin-js"); -var sha3 = require(__dirname + "/../../../node_modules/@web3api/sha3-plugin-js"); - -module.exports.redirects = [ - { - from: "ens/uts46.web3api.eth", - to: uts46.plugin() - }, - { - from: "ens/sha3.web3api.eth", - to: sha3.plugin() - } -]; diff --git a/packages/apis/ens/web3api.build.yaml b/packages/apis/ens/web3api.build.yaml index c5727d12ab..3b2cdd7732 100644 --- a/packages/apis/ens/web3api.build.yaml +++ b/packages/apis/ens/web3api.build.yaml @@ -1,4 +1,4 @@ -format: 0.0.1-prealpha.1 +format: 0.0.1-prealpha.2 config: node_version: "14.16.0" include: @@ -8,3 +8,7 @@ config: - src/common - src/contracts - src/utils.ts +linked_packages: + - name: "@web3api/wasm-as" + path: ../../wasm/as + filter: /\.(test|spec)\.(js|ts)$/gm diff --git a/packages/apis/ens/web3api.meta.yaml b/packages/apis/ens/web3api.meta.yaml index de57cd9b86..3606650098 100644 --- a/packages/apis/ens/web3api.meta.yaml +++ b/packages/apis/ens/web3api.meta.yaml @@ -1,3 +1,4 @@ +format: 0.0.1-prealpha.1 name: ENS Domains subtext: Wrapper for ENS domains description: Protocol that allows you to attach your address to a human readable string @@ -5,55 +6,55 @@ icon: ./meta/imgs/logo.png queries: - name: Configure open domain query: ./meta/queries/configureOpenDomain.graphql - recipe: ./meta/recipes/configureOpenDomain.json + vars: ./meta/recipes/configureOpenDomain.json - name: Create subdomain in open domain query: ./meta/queries/createSubdomainInOpenDomain.graphql - recipe: ./meta/recipes/createSubdomainInOpenDomain.json + vars: ./meta/recipes/createSubdomainInOpenDomain.json - name: Create subdomain in open domain and set content hash query: ./meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql - recipe: ./meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json + vars: ./meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json - name: Deploy FIFS Registrar query: ./meta/queries/deployFIFSRegistrar.graphql - recipe: ./meta/recipes/deployFIFSRegistrar.json + vars: ./meta/recipes/deployFIFSRegistrar.json - name: Get address query: ./meta/queries/getAddress.graphql - recipe: ./meta/recipes/getAddress.json + vars: ./meta/recipes/getAddress.json - name: Get address from domain query: ./meta/queries/getAddressFromDomain.graphql - recipe: ./meta/recipes/getAddressFromDomain.json + vars: ./meta/recipes/getAddressFromDomain.json - name: Get content hash query: ./meta/queries/getContentHash.graphql - recipe: ./meta/recipes/getContentHash.json + vars: ./meta/recipes/getContentHash.json - name: Get expiry times query: ./meta/queries/getExpiryTimes.graphql - recipe: ./meta/recipes/getExpiryTimes.json + vars: ./meta/recipes/getExpiryTimes.json - name: Get owner query: ./meta/queries/getOwner.graphql - recipe: ./meta/recipes/getOwner.json + vars: ./meta/recipes/getOwner.json - name: Get resolver query: ./meta/queries/getResolver.graphql - recipe: ./meta/recipes/getResolver.json + vars: ./meta/recipes/getResolver.json - name: Register domain query: ./meta/queries/register.graphql - recipe: ./meta/recipes/register.json + vars: ./meta/recipes/register.json - name: Set reverse register - query: ./meta/queries/reverseRegistrer.graphql - recipe: ./meta/recipes/reverseRegistrer.json + query: ./meta/queries/reverseRegister.graphql + vars: ./meta/recipes/reverseRegister.json - name: Set address query: ./meta/queries/setAddress.graphql - recipe: ./meta/recipes/setAddress.json + vars: ./meta/recipes/setAddress.json - name: Set content hash query: ./meta/queries/setContentHash.graphql - recipe: ./meta/recipes/setContentHash.json + vars: ./meta/recipes/setContentHash.json - name: Set owner query: ./meta/queries/setOwner.graphql - recipe: ./meta/recipes/setOwner.json + vars: ./meta/recipes/setOwner.json - name: Set record query: ./meta/queries/setRecord.graphql - recipe: ./meta/recipes/setRecord.json + vars: ./meta/recipes/setRecord.json - name: Set subdomain owner query: ./meta/queries/setSubdomainOwner.graphql - recipe: ./meta/recipes/setSubdomainOwner.json + vars: ./meta/recipes/setSubdomainOwner.json - name: Set subdomain record query: ./meta/queries/setSubdomainRecord.graphql - recipe: ./meta/recipes/setSubdomainRecord.json + vars: ./meta/recipes/setSubdomainRecord.json diff --git a/packages/apis/ens/web3api.yaml b/packages/apis/ens/web3api.yaml index d2fda63b92..c284baee52 100644 --- a/packages/apis/ens/web3api.yaml +++ b/packages/apis/ens/web3api.yaml @@ -1,6 +1,7 @@ -format: 0.0.1-prealpha.2 +format: 0.0.1-prealpha.5 language: wasm/assemblyscript build: ./web3api.build.yaml +meta: ./web3api.meta.yaml modules: mutation: schema: ./src/mutation/schema.graphql @@ -8,8 +9,3 @@ modules: query: schema: ./src/query/schema.graphql module: ./src/query/index.ts -import_redirects: - - uri: w3://ens/sha3.web3api.eth - schema: ../../../node_modules/@web3api/sha3-plugin-js/schema.graphql - - uri: w3://ens/uts46.web3api.eth - schema: ../../../node_modules/@web3api/uts46-plugin-js/schema.graphql \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 058fc9105b..93dbc76aec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4280,215 +4280,6 @@ resolved "https://registry.yarnpkg.com/@web3api/assemblyscript-json/-/assemblyscript-json-1.2.0.tgz#f01f11f12a66cd1a319d43f12e476307d1ad3da8" integrity sha512-x+wchJpH1giJzXj3dYs8vh2SKMXepeqVXiaFV/YCtXg4X/KaUnxi0kp5JugbEAyEJurEScH1YuV6IvGhGui/fw== -"@web3api/asyncify-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/asyncify-js/-/asyncify-js-0.0.1-prealpha.39.tgz#335945d490092448f7db4f7479bfecaa8532c4c1" - integrity sha512-eMXKH9z0kUhdeQzcwOYXnNyHcKqr+ZQxt+GJm0wMc4aiSkYvsJNael+TAiND035SEwHhGGJ+9IF5eDlkDlCqWQ== - -"@web3api/cli@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/cli/-/cli-0.0.1-prealpha.39.tgz#b27b86e6623b9a8c6dfc0130b6c5656f480f52d6" - integrity sha512-SO7x8kMCwjZE2NafKppeN7ykJW/OEAaD/anLDp1qWMNrViBHeBhYXo2BDRI9YjOEYJgfXxOdbNhfI8xfW8xWzQ== - dependencies: - "@formatjs/intl" "1.8.2" - "@web3api/asyncify-js" "0.0.1-prealpha.39" - "@web3api/client-js" "0.0.1-prealpha.39" - "@web3api/client-test-env" "0.0.1-prealpha.39" - "@web3api/core-js" "0.0.1-prealpha.39" - "@web3api/ens-plugin-js" "0.0.1-prealpha.39" - "@web3api/ethereum-plugin-js" "0.0.1-prealpha.39" - "@web3api/ipfs-plugin-js" "0.0.1-prealpha.39" - "@web3api/os-js" "0.0.1-prealpha.39" - "@web3api/schema-bind" "0.0.1-prealpha.39" - "@web3api/schema-compose" "0.0.1-prealpha.39" - "@web3api/schema-parse" "0.0.1-prealpha.39" - assemblyscript "0.19.1" - axios "0.19.2" - chalk "4.1.0" - chokidar "3.5.1" - copyfiles "2.4.1" - fs-extra "9.0.1" - gluegun "4.6.1" - graphql-tag "2.11.0" - ipfs-http-client "48.1.3" - js-yaml "3.14.0" - jsonschema "1.4.0" - mustache "4.0.1" - ora "4.0.0" - os-locale "5.0.0" - rimraf "3.0.2" - ws "7.3.1" - -"@web3api/client-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/client-js/-/client-js-0.0.1-prealpha.39.tgz#f7c8cc8c18e634c32a06d4b8e086d5b3bf6bb83a" - integrity sha512-AlE2p2++1as/jR/prTNsa7/tA7kXE6bSC2vesz5QkIG+Nf4ZmTXt+jF31TooUF78gp5T0p6VeDuWydVYf0DFww== - dependencies: - "@msgpack/msgpack" "2.3.0" - "@web3api/asyncify-js" "0.0.1-prealpha.39" - "@web3api/core-js" "0.0.1-prealpha.39" - "@web3api/ens-plugin-js" "0.0.1-prealpha.39" - "@web3api/ethereum-plugin-js" "0.0.1-prealpha.39" - "@web3api/http-plugin-js" "0.0.1-prealpha.39" - "@web3api/ipfs-plugin-js" "0.0.1-prealpha.39" - "@web3api/logger-plugin-js" "0.0.1-prealpha.39" - "@web3api/schema-parse" "0.0.1-prealpha.39" - "@web3api/sha3-plugin-js" "0.0.1-prealpha.39" - "@web3api/tracing-js" "0.0.1-prealpha.39" - "@web3api/uts46-plugin-js" "0.0.1-prealpha.39" - graphql "15.5.0" - js-yaml "3.14.0" - -"@web3api/client-test-env@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/client-test-env/-/client-test-env-0.0.1-prealpha.39.tgz#d1d09ff6ca0f72e77ab5dbf96800d727709d1415" - integrity sha512-FeOX05aeluUi8xG++u3rNc3XGtkv4Ha7VPQkPTjI4C4m46Onwg2EIkALUHXjGg7Gxmtn7AqDsBt6LOY9J6Vulg== - dependencies: - axios "0.21.1" - dotenv "10.0.0" - -"@web3api/core-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/core-js/-/core-js-0.0.1-prealpha.39.tgz#2a11224198ce7de2fc22aef771e790138634f3d2" - integrity sha512-7jRCQ3l64I+iMR32tv22cFy5HKnzmaRyhoCZuUbr9n6F273Na7ZSrqeRlH4l4ap0H3oXzwgmtiMQ3Di3kIDXQA== - dependencies: - "@web3api/manifest-schemas" "0.0.1-prealpha.39" - "@web3api/tracing-js" "0.0.1-prealpha.39" - graphql "15.5.0" - graphql-tag "2.10.4" - js-yaml "3.14.0" - jsonschema "1.4.0" - semver "7.3.5" - -"@web3api/ens-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/ens-plugin-js/-/ens-plugin-js-0.0.1-prealpha.39.tgz#8987897f716c18f6aa21873961a83442d26a41d5" - integrity sha512-yVrHsaxAUFWjcH31yK0jD15PJoMko3essNGTVopg9mRP+E1X7CwB3ArGlxBPV+1HDZLEAdWAhlvy5dt3Vrk9kg== - dependencies: - "@ethersproject/address" "5.0.7" - "@web3api/core-js" "0.0.1-prealpha.39" - ethers "5.0.7" - -"@web3api/ethereum-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/ethereum-plugin-js/-/ethereum-plugin-js-0.0.1-prealpha.39.tgz#ebe9ae13ad443b9c38be9f52f7a12424b6cdaf0b" - integrity sha512-ne00a+DAJMNRds/O23+3wdSUNKx5lrZfAx8rKrCZ0To3wEfsptuJzhWuLqZvbl+rUY4oBSg7Z3tMRPYgfuRepA== - dependencies: - "@ethersproject/address" "5.0.7" - "@ethersproject/providers" "5.0.7" - "@web3api/core-js" "0.0.1-prealpha.39" - ethers "5.0.7" - -"@web3api/http-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/http-plugin-js/-/http-plugin-js-0.0.1-prealpha.39.tgz#f32b56dde5bbe354f5a4a00052b4b95a642ad683" - integrity sha512-kA5rqPoCWYfZumJdZYUZUrHLq2Ysd1AkTgsdIM46NRdbuQX1Pn4yIxDFk+cA5KmEeDG1znIevITKe17trLeHmw== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.39" - axios "0.21.1" - -"@web3api/ipfs-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/ipfs-plugin-js/-/ipfs-plugin-js-0.0.1-prealpha.39.tgz#472d0c99c4b43fcf77aefc5b92c1c1b6a87d0487" - integrity sha512-JnT8LVEMA6f6qTvDeoDJgkp7MFlecjbgDE+Z6bgTxP9UG7U2JpssEZv7aPiTlj3oq6M9l3bmd7+hyq7+PjqPGg== - dependencies: - "@dorgjelli-test/ipfs-http-client-lite" "0.3.1" - "@web3api/core-js" "0.0.1-prealpha.39" - abort-controller "3.0.0" - cids "^1.1.4" - is-ipfs "1.0.3" - -"@web3api/logger-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/logger-plugin-js/-/logger-plugin-js-0.0.1-prealpha.39.tgz#d2f6727987543e108d45f1fcc6febbce5c1baf4e" - integrity sha512-ugD0NQu2OojyTwKE0fWwxhsQt2ZO/jpeAR+5+C70GSORFg2Oo+2Vkw2iinfaxAGfBO3wUUj40WiefiwVK9FGxA== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.39" - -"@web3api/manifest-schemas@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/manifest-schemas/-/manifest-schemas-0.0.1-prealpha.39.tgz#410ededb9e34a4264b19a32f55f32a35c9e42f32" - integrity sha512-Ka+ZpPKS00MZIMzbZHAS2/vqQP3SQuVW4ulq7U7N2N1TowWZ/Chu4HPoh+NbaXl7u+F/Dx2aUpp3z6vnVGFSrg== - -"@web3api/os-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/os-js/-/os-js-0.0.1-prealpha.39.tgz#4ea1db7e1b87d089f2071af0a31bbc3c894cc06f" - integrity sha512-gLrdY1tGPN2wJHP7NYO2gMBnDZMH6KkbuHpZGgp/yw37oREzTrvLxa+E2wreLWNUTaicPhp+RcWjhP5Dt8IpYA== - -"@web3api/schema-bind@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/schema-bind/-/schema-bind-0.0.1-prealpha.39.tgz#ad4350e4c1d5ae14e052c5d4d78e32762749b9db" - integrity sha512-ZKoiBrhMXgNvjBnpvhREH55ZJ11lSAED3DTPwViJ51/DTVw+rbqoZthy2z72d9lfpAYfHRwlJ7hKIC4SsRSJYQ== - dependencies: - "@web3api/os-js" "0.0.1-prealpha.39" - "@web3api/schema-parse" "0.0.1-prealpha.39" - mustache "4.0.1" - -"@web3api/schema-compose@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/schema-compose/-/schema-compose-0.0.1-prealpha.39.tgz#c14d5e7757d7dfaa59c40e276f9d768d05365826" - integrity sha512-dJWt5Uyib1CG1xESiZY9wusw1jF/6PFrOHKdNSXs/qYqKu6QIHAHP6yfTbLKR/W+xc/6RZJQu5Lk0ephnsq6iw== - dependencies: - "@web3api/schema-parse" "0.0.1-prealpha.39" - graphql "15.5.0" - mustache "4.0.1" - -"@web3api/schema-parse@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/schema-parse/-/schema-parse-0.0.1-prealpha.39.tgz#747abae8d34a42cbf4496acaf980f5ab451f0e87" - integrity sha512-kMWrq/FBEch3j+zIBQyhhEaDtdn/OowMqNteH4B74pRqRE4crzPutqtyp7g96FrWGoHuzJ1rU7V4SH/47YY0YQ== - dependencies: - graphql "15.5.0" - graphql-schema-cycles "1.1.3" - -"@web3api/sha3-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/sha3-plugin-js/-/sha3-plugin-js-0.0.1-prealpha.39.tgz#4aec1cc8358ea702019555d89d123866fe79773a" - integrity sha512-9xD9zWpSu4h+eV5wdAVocDWlxfzj3yXZju2BrncvA9INv2W7/dU2hRJ8DPyE+5vNPOV0axna7wfCDsyN1fIdmQ== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.39" - js-sha3 "0.8.0" - -"@web3api/test-env-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/test-env-js/-/test-env-js-0.0.1-prealpha.39.tgz#fb6ff69c5f1eec7a3873e6b95a35d079193b5abd" - integrity sha512-E/cS1+Z129hXhQYP49DxhFRRHqa15taZ3bQvu2U7SwE0PcqcIIiUybbmgWR5RLWusYnu9MhJiBweQ/Dc4PPr8g== - dependencies: - axios "0.21.1" - spawn-command "0.0.2-1" - -"@web3api/tracing-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/tracing-js/-/tracing-js-0.0.1-prealpha.39.tgz#5d8573ce90fa891a940860912f3a071878bfee60" - integrity sha512-AJf483cVB00eywR78XBwt6kXzf7VOb0EDRBSeq1tPcOK4u2grO7jJgSPeW2DrzrCHYwzym4VP3fYQkiTJMCBlw== - dependencies: - "@opentelemetry/api" "0.20.0" - "@opentelemetry/context-zone" "0.20.0" - "@opentelemetry/core" "0.20.0" - "@opentelemetry/exporter-collector" "0.20.0" - "@opentelemetry/exporter-jaeger" "0.20.0" - "@opentelemetry/exporter-zipkin" "0.20.0" - "@opentelemetry/node" "0.20.0" - "@opentelemetry/propagator-b3" "0.20.0" - "@opentelemetry/tracing" "0.20.0" - "@opentelemetry/web" "0.20.0" - util-inspect "0.1.8" - -"@web3api/uts46-plugin-js@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/uts46-plugin-js/-/uts46-plugin-js-0.0.1-prealpha.39.tgz#5c025b6001b4759023c3c23adfa178edc3285bb3" - integrity sha512-Dz7KquBaVUPXeDjrI3ECi8jyS5i1RH+fGbmkjXz6kykqU9S0Dra4DFafoht6oc8q1ZNxZlgXu0LLEG8OiIuy5g== - dependencies: - "@web3api/core-js" "0.0.1-prealpha.39" - idna-uts46-hx "3.4.0" - -"@web3api/wasm-as@0.0.1-prealpha.39": - version "0.0.1-prealpha.39" - resolved "https://registry.yarnpkg.com/@web3api/wasm-as/-/wasm-as-0.0.1-prealpha.39.tgz#2092c7d25776051fe16b60e1c604fef12f262785" - integrity sha512-6Btwq5E54M3xFxOhwqJ3s+x1uuvJOwBdVjTUxTJTHyQ5DlY2FLhOXpHejOU7/5fhHwP4PpS2bxyHMKY2c1+d8w== - dependencies: - as-bigint "0.2.4" - "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" From 15fec2dca42a3e0e2654f01909bcea679c0b5b64 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 18:51:50 -0500 Subject: [PATCH 48/53] move variables --- packages/apis/ens/README.md | 2 +- .../configureOpenDomain.json | 0 .../createSubdomainInOpenDomain.json | 0 ...ubdomainInOpenDomainAndSetContentHash.json | 0 .../deployFIFSRegistrar.json | 0 .../meta/{recipes => queries}/getAddress.json | 0 .../getAddressFromDomain.json | 0 .../{recipes => queries}/getContentHash.json | 0 .../{recipes => queries}/getExpiryTimes.json | 0 .../getNameFromAddress.json | 0 .../meta/{recipes => queries}/getOwner.json | 0 .../{recipes => queries}/getResolver.json | 0 ...egister.graphql => registerDomain.graphql} | 0 .../registerDomain.json} | 0 .../{recipes => queries}/reverseRegister.json | 0 .../meta/{recipes => queries}/setAddress.json | 0 .../{recipes => queries}/setContentHash.json | 0 .../meta/{recipes => queries}/setOwner.json | 0 .../meta/{recipes => queries}/setRecord.json | 0 .../{recipes => queries}/setResolver.json | 0 .../setSubdomainOwner.json | 0 .../setSubdomainRecord.json | 0 packages/apis/ens/package.json | 6 +-- .../apis/ens/{script => scripts}/configure.ts | 0 .../ens/{script => scripts}/create-domain.ts | 0 .../ens/{ => scripts}/deploy-contracts.js | 0 packages/apis/ens/web3api.meta.yaml | 38 +++++++++---------- 27 files changed, 23 insertions(+), 23 deletions(-) rename packages/apis/ens/meta/{recipes => queries}/configureOpenDomain.json (100%) rename packages/apis/ens/meta/{recipes => queries}/createSubdomainInOpenDomain.json (100%) rename packages/apis/ens/meta/{recipes => queries}/createSubdomainInOpenDomainAndSetContentHash.json (100%) rename packages/apis/ens/meta/{recipes => queries}/deployFIFSRegistrar.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getAddress.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getAddressFromDomain.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getContentHash.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getExpiryTimes.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getNameFromAddress.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getOwner.json (100%) rename packages/apis/ens/meta/{recipes => queries}/getResolver.json (100%) rename packages/apis/ens/meta/queries/{register.graphql => registerDomain.graphql} (100%) rename packages/apis/ens/meta/{recipes/register.json => queries/registerDomain.json} (100%) rename packages/apis/ens/meta/{recipes => queries}/reverseRegister.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setAddress.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setContentHash.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setOwner.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setRecord.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setResolver.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setSubdomainOwner.json (100%) rename packages/apis/ens/meta/{recipes => queries}/setSubdomainRecord.json (100%) rename packages/apis/ens/{script => scripts}/configure.ts (100%) rename packages/apis/ens/{script => scripts}/create-domain.ts (100%) rename packages/apis/ens/{ => scripts}/deploy-contracts.js (100%) diff --git a/packages/apis/ens/README.md b/packages/apis/ens/README.md index 1a12e37b19..761f85e843 100644 --- a/packages/apis/ens/README.md +++ b/packages/apis/ens/README.md @@ -9,7 +9,7 @@ npx w3 test-env up ## 2. Build & Deploy SimpleStorage Contract ``` -node ./deploy-contracts.js +node ./scripts/deploy-contracts.js ``` This will output the deployed ENS contract addresses. diff --git a/packages/apis/ens/meta/recipes/configureOpenDomain.json b/packages/apis/ens/meta/queries/configureOpenDomain.json similarity index 100% rename from packages/apis/ens/meta/recipes/configureOpenDomain.json rename to packages/apis/ens/meta/queries/configureOpenDomain.json diff --git a/packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json b/packages/apis/ens/meta/queries/createSubdomainInOpenDomain.json similarity index 100% rename from packages/apis/ens/meta/recipes/createSubdomainInOpenDomain.json rename to packages/apis/ens/meta/queries/createSubdomainInOpenDomain.json diff --git a/packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json b/packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.json similarity index 100% rename from packages/apis/ens/meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json rename to packages/apis/ens/meta/queries/createSubdomainInOpenDomainAndSetContentHash.json diff --git a/packages/apis/ens/meta/recipes/deployFIFSRegistrar.json b/packages/apis/ens/meta/queries/deployFIFSRegistrar.json similarity index 100% rename from packages/apis/ens/meta/recipes/deployFIFSRegistrar.json rename to packages/apis/ens/meta/queries/deployFIFSRegistrar.json diff --git a/packages/apis/ens/meta/recipes/getAddress.json b/packages/apis/ens/meta/queries/getAddress.json similarity index 100% rename from packages/apis/ens/meta/recipes/getAddress.json rename to packages/apis/ens/meta/queries/getAddress.json diff --git a/packages/apis/ens/meta/recipes/getAddressFromDomain.json b/packages/apis/ens/meta/queries/getAddressFromDomain.json similarity index 100% rename from packages/apis/ens/meta/recipes/getAddressFromDomain.json rename to packages/apis/ens/meta/queries/getAddressFromDomain.json diff --git a/packages/apis/ens/meta/recipes/getContentHash.json b/packages/apis/ens/meta/queries/getContentHash.json similarity index 100% rename from packages/apis/ens/meta/recipes/getContentHash.json rename to packages/apis/ens/meta/queries/getContentHash.json diff --git a/packages/apis/ens/meta/recipes/getExpiryTimes.json b/packages/apis/ens/meta/queries/getExpiryTimes.json similarity index 100% rename from packages/apis/ens/meta/recipes/getExpiryTimes.json rename to packages/apis/ens/meta/queries/getExpiryTimes.json diff --git a/packages/apis/ens/meta/recipes/getNameFromAddress.json b/packages/apis/ens/meta/queries/getNameFromAddress.json similarity index 100% rename from packages/apis/ens/meta/recipes/getNameFromAddress.json rename to packages/apis/ens/meta/queries/getNameFromAddress.json diff --git a/packages/apis/ens/meta/recipes/getOwner.json b/packages/apis/ens/meta/queries/getOwner.json similarity index 100% rename from packages/apis/ens/meta/recipes/getOwner.json rename to packages/apis/ens/meta/queries/getOwner.json diff --git a/packages/apis/ens/meta/recipes/getResolver.json b/packages/apis/ens/meta/queries/getResolver.json similarity index 100% rename from packages/apis/ens/meta/recipes/getResolver.json rename to packages/apis/ens/meta/queries/getResolver.json diff --git a/packages/apis/ens/meta/queries/register.graphql b/packages/apis/ens/meta/queries/registerDomain.graphql similarity index 100% rename from packages/apis/ens/meta/queries/register.graphql rename to packages/apis/ens/meta/queries/registerDomain.graphql diff --git a/packages/apis/ens/meta/recipes/register.json b/packages/apis/ens/meta/queries/registerDomain.json similarity index 100% rename from packages/apis/ens/meta/recipes/register.json rename to packages/apis/ens/meta/queries/registerDomain.json diff --git a/packages/apis/ens/meta/recipes/reverseRegister.json b/packages/apis/ens/meta/queries/reverseRegister.json similarity index 100% rename from packages/apis/ens/meta/recipes/reverseRegister.json rename to packages/apis/ens/meta/queries/reverseRegister.json diff --git a/packages/apis/ens/meta/recipes/setAddress.json b/packages/apis/ens/meta/queries/setAddress.json similarity index 100% rename from packages/apis/ens/meta/recipes/setAddress.json rename to packages/apis/ens/meta/queries/setAddress.json diff --git a/packages/apis/ens/meta/recipes/setContentHash.json b/packages/apis/ens/meta/queries/setContentHash.json similarity index 100% rename from packages/apis/ens/meta/recipes/setContentHash.json rename to packages/apis/ens/meta/queries/setContentHash.json diff --git a/packages/apis/ens/meta/recipes/setOwner.json b/packages/apis/ens/meta/queries/setOwner.json similarity index 100% rename from packages/apis/ens/meta/recipes/setOwner.json rename to packages/apis/ens/meta/queries/setOwner.json diff --git a/packages/apis/ens/meta/recipes/setRecord.json b/packages/apis/ens/meta/queries/setRecord.json similarity index 100% rename from packages/apis/ens/meta/recipes/setRecord.json rename to packages/apis/ens/meta/queries/setRecord.json diff --git a/packages/apis/ens/meta/recipes/setResolver.json b/packages/apis/ens/meta/queries/setResolver.json similarity index 100% rename from packages/apis/ens/meta/recipes/setResolver.json rename to packages/apis/ens/meta/queries/setResolver.json diff --git a/packages/apis/ens/meta/recipes/setSubdomainOwner.json b/packages/apis/ens/meta/queries/setSubdomainOwner.json similarity index 100% rename from packages/apis/ens/meta/recipes/setSubdomainOwner.json rename to packages/apis/ens/meta/queries/setSubdomainOwner.json diff --git a/packages/apis/ens/meta/recipes/setSubdomainRecord.json b/packages/apis/ens/meta/queries/setSubdomainRecord.json similarity index 100% rename from packages/apis/ens/meta/recipes/setSubdomainRecord.json rename to packages/apis/ens/meta/queries/setSubdomainRecord.json diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index 6b377069a0..1a9d6f6320 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -1,15 +1,15 @@ { - "name": "@polywrap/ens-wrapper", + "name": "@web3api/ens-api", "description": "ENS Web3API", "private": true, - "version": "0.0.1-prealpha.35", + "version": "0.0.1-prealpha.40", "scripts": { "build": "npx w3 build", "test:env:up": "npx w3 test-env up", "test:env:down": "npx w3 test-env down", "deploy": "yarn deploy:contract && yarn deploy:web3api", "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens ens.eth", - "deploy:contract": "node ./deploy-contracts.js", + "deploy:contract": "node ./scripts/deploy-contracts.js", "test": "yarn test:e2e && yarn test:recipe", "test:e2e": "jest --passWithNoTests --runInBand --verbose", "test:recipe": "npx w3 query ./recipes/e2e.json" diff --git a/packages/apis/ens/script/configure.ts b/packages/apis/ens/scripts/configure.ts similarity index 100% rename from packages/apis/ens/script/configure.ts rename to packages/apis/ens/scripts/configure.ts diff --git a/packages/apis/ens/script/create-domain.ts b/packages/apis/ens/scripts/create-domain.ts similarity index 100% rename from packages/apis/ens/script/create-domain.ts rename to packages/apis/ens/scripts/create-domain.ts diff --git a/packages/apis/ens/deploy-contracts.js b/packages/apis/ens/scripts/deploy-contracts.js similarity index 100% rename from packages/apis/ens/deploy-contracts.js rename to packages/apis/ens/scripts/deploy-contracts.js diff --git a/packages/apis/ens/web3api.meta.yaml b/packages/apis/ens/web3api.meta.yaml index 3606650098..97160155a3 100644 --- a/packages/apis/ens/web3api.meta.yaml +++ b/packages/apis/ens/web3api.meta.yaml @@ -6,55 +6,55 @@ icon: ./meta/imgs/logo.png queries: - name: Configure open domain query: ./meta/queries/configureOpenDomain.graphql - vars: ./meta/recipes/configureOpenDomain.json + vars: ./meta/queries/configureOpenDomain.json - name: Create subdomain in open domain query: ./meta/queries/createSubdomainInOpenDomain.graphql - vars: ./meta/recipes/createSubdomainInOpenDomain.json + vars: ./meta/queries/createSubdomainInOpenDomain.json - name: Create subdomain in open domain and set content hash query: ./meta/queries/createSubdomainInOpenDomainAndSetContentHash.graphql - vars: ./meta/recipes/createSubdomainInOpenDomainAndSetContentHash.json + vars: ./meta/queries/createSubdomainInOpenDomainAndSetContentHash.json - name: Deploy FIFS Registrar query: ./meta/queries/deployFIFSRegistrar.graphql - vars: ./meta/recipes/deployFIFSRegistrar.json + vars: ./meta/queries/deployFIFSRegistrar.json - name: Get address query: ./meta/queries/getAddress.graphql - vars: ./meta/recipes/getAddress.json + vars: ./meta/queries/getAddress.json - name: Get address from domain query: ./meta/queries/getAddressFromDomain.graphql - vars: ./meta/recipes/getAddressFromDomain.json + vars: ./meta/queries/getAddressFromDomain.json - name: Get content hash query: ./meta/queries/getContentHash.graphql - vars: ./meta/recipes/getContentHash.json + vars: ./meta/queries/getContentHash.json - name: Get expiry times query: ./meta/queries/getExpiryTimes.graphql - vars: ./meta/recipes/getExpiryTimes.json + vars: ./meta/queries/getExpiryTimes.json - name: Get owner query: ./meta/queries/getOwner.graphql - vars: ./meta/recipes/getOwner.json + vars: ./meta/queries/getOwner.json - name: Get resolver query: ./meta/queries/getResolver.graphql - vars: ./meta/recipes/getResolver.json + vars: ./meta/queries/getResolver.json - name: Register domain - query: ./meta/queries/register.graphql - vars: ./meta/recipes/register.json + query: ./meta/queries/registerDomain.graphql + vars: ./meta/queries/registerDomain.json - name: Set reverse register query: ./meta/queries/reverseRegister.graphql - vars: ./meta/recipes/reverseRegister.json + vars: ./meta/queries/reverseRegister.json - name: Set address query: ./meta/queries/setAddress.graphql - vars: ./meta/recipes/setAddress.json + vars: ./meta/queries/setAddress.json - name: Set content hash query: ./meta/queries/setContentHash.graphql - vars: ./meta/recipes/setContentHash.json + vars: ./meta/queries/setContentHash.json - name: Set owner query: ./meta/queries/setOwner.graphql - vars: ./meta/recipes/setOwner.json + vars: ./meta/queries/setOwner.json - name: Set record query: ./meta/queries/setRecord.graphql - vars: ./meta/recipes/setRecord.json + vars: ./meta/queries/setRecord.json - name: Set subdomain owner query: ./meta/queries/setSubdomainOwner.graphql - vars: ./meta/recipes/setSubdomainOwner.json + vars: ./meta/queries/setSubdomainOwner.json - name: Set subdomain record query: ./meta/queries/setSubdomainRecord.graphql - vars: ./meta/recipes/setSubdomainRecord.json + vars: ./meta/queries/setSubdomainRecord.json From 3f13c0479c89bb4d595ccea5bb039e190cf1de63 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 18:59:17 -0500 Subject: [PATCH 49/53] use meta/queries in recipe --- .../apis/ens/meta/queries/getExpiryTimes.json | 5 +++++ packages/apis/ens/recipes/constants.json | 8 ++++---- packages/apis/ens/recipes/e2e.json | 20 +++++++++---------- .../mutations/deployFIFSRegistrar.graphql | 9 --------- .../ens/recipes/mutations/register.graphql | 11 ---------- .../recipes/mutations/reverseRegister.graphql | 10 ---------- .../ens/recipes/mutations/setAddress.graphql | 10 ---------- .../recipes/mutations/setContentHash.graphql | 10 ---------- .../ens/recipes/mutations/setOwner.graphql | 10 ---------- .../ens/recipes/mutations/setRecord.graphql | 12 ----------- .../ens/recipes/mutations/setResolver.graphql | 10 ---------- .../mutations/setSubdomainOwner.graphql | 10 ---------- .../mutations/setSubdomainRecord.graphql | 13 ------------ .../ens/recipes/queries/getAddress.graphql | 9 --------- .../recipes/queries/getContentHash.graphql | 9 --------- .../recipes/queries/getExpiryTimes.graphql | 9 --------- .../queries/getNameFromAddress.graphql | 9 --------- .../apis/ens/recipes/queries/getOwner.graphql | 9 --------- .../ens/recipes/queries/getResolver.graphql | 9 --------- packages/apis/ens/scripts/deploy-contracts.js | 4 ++-- 20 files changed, 21 insertions(+), 175 deletions(-) delete mode 100644 packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql delete mode 100644 packages/apis/ens/recipes/mutations/register.graphql delete mode 100644 packages/apis/ens/recipes/mutations/reverseRegister.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setAddress.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setContentHash.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setOwner.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setRecord.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setResolver.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql delete mode 100644 packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql delete mode 100644 packages/apis/ens/recipes/queries/getAddress.graphql delete mode 100644 packages/apis/ens/recipes/queries/getContentHash.graphql delete mode 100644 packages/apis/ens/recipes/queries/getExpiryTimes.graphql delete mode 100644 packages/apis/ens/recipes/queries/getNameFromAddress.graphql delete mode 100644 packages/apis/ens/recipes/queries/getOwner.graphql delete mode 100644 packages/apis/ens/recipes/queries/getResolver.graphql diff --git a/packages/apis/ens/meta/queries/getExpiryTimes.json b/packages/apis/ens/meta/queries/getExpiryTimes.json index e69de29bb2..ddb9a86282 100644 --- a/packages/apis/ens/meta/queries/getExpiryTimes.json +++ b/packages/apis/ens/meta/queries/getExpiryTimes.json @@ -0,0 +1,5 @@ +{ + "domain": "", + "registrarAddress": "", + "network": "" +} diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index 880fd49485..e8ebe99afa 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", - "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", - "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", - "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", + "Registry": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6", + "Registrar": "0x4bf749ec68270027C5910220CEAB30Cc284c7BA2", + "Resolver": "0xFC628dd79137395F3C9744e33b1c5DE554D94882", + "Reverse": "0x7C728214be9A0049e6a86f2137ec61030D0AA964", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/recipes/e2e.json b/packages/apis/ens/recipes/e2e.json index e4f0a35e1a..320cc4e3a0 100644 --- a/packages/apis/ens/recipes/e2e.json +++ b/packages/apis/ens/recipes/e2e.json @@ -4,7 +4,7 @@ "constants": "./constants.json" }, { - "query": "./mutations/deployFIFSRegistrar.graphql", + "query": "../meta/queries/deployFIFSRegistrar.graphql", "variables": { "registryAddress": "$Registry", "tld": "$Tld", @@ -12,7 +12,7 @@ } }, { - "query": "./mutations/register.graphql", + "query": "../meta/queries/registerDomain.graphql", "variables": { "domain": "$Domain", "registrarAddress": "$Registrar", @@ -22,7 +22,7 @@ } }, { - "query": "./mutations/setResolver.graphql", + "query": "../meta/queries/setResolver.graphql", "variables": { "domain": "$Domain", "resolverAddress": "$Resolver", @@ -32,7 +32,7 @@ } }, { - "query": "./mutations/setSubdomainRecord.graphql", + "query": "../meta/queries/setSubdomainRecord.graphql", "variables": { "domain": "$Domain", "label": "$Label", @@ -44,7 +44,7 @@ } }, { - "query": "./mutations/setAddress.graphql", + "query": "../meta/queries/setAddress.graphql", "variables": { "domain": "$Domain", "address": "$Signer", @@ -53,7 +53,7 @@ } }, { - "query": "./mutations/setContentHash.graphql", + "query": "../meta/queries/setContentHash.graphql", "variables": { "domain": "$Domain", "cid": "$CID", @@ -62,7 +62,7 @@ } }, { - "query": "./mutations/reverseRegister.graphql", + "query": "../meta/queries/reverseRegister.graphql", "variables": { "domain": "$Domain", "reverseRegistryAddress": "$Reverse", @@ -71,7 +71,7 @@ } }, { - "query": "./mutations/setSubdomainOwner.graphql", + "query": "../meta/queries/setSubdomainOwner.graphql", "variables": { "subdomain": "$Subdomain", "owner": "$Signer", @@ -80,7 +80,7 @@ } }, { - "query": "./mutations/setResolver.graphql", + "query": "../meta/queries/setResolver.graphql", "variables": { "domain": "$Subdomain", "resolverAddress": "$Resolver", @@ -98,7 +98,7 @@ } }, { - "query": "./mutations/setOwner.graphql", + "query": "../meta/queries/setOwner.graphql", "variables": { "domain": "$Domain", "registryAddress": "$Registry", diff --git a/packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql b/packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql deleted file mode 100644 index cf5ddb4953..0000000000 --- a/packages/apis/ens/recipes/mutations/deployFIFSRegistrar.graphql +++ /dev/null @@ -1,9 +0,0 @@ -mutation { - deployFIFSRegistrar( - registryAddress: $registryAddress - tld: $tld - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/register.graphql b/packages/apis/ens/recipes/mutations/register.graphql deleted file mode 100644 index 41eb8837bc..0000000000 --- a/packages/apis/ens/recipes/mutations/register.graphql +++ /dev/null @@ -1,11 +0,0 @@ -mutation { - registerDomain( - domain: $domain - registrarAddress: $registrarAddress - registryAddress: $registryAddress - owner: $owner - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/reverseRegister.graphql b/packages/apis/ens/recipes/mutations/reverseRegister.graphql deleted file mode 100644 index ca3edb2c21..0000000000 --- a/packages/apis/ens/recipes/mutations/reverseRegister.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - reverseRegisterDomain( - domain: $domain - reverseRegistryAddress: $reverseRegistryAddress - owner: $owner - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setAddress.graphql b/packages/apis/ens/recipes/mutations/setAddress.graphql deleted file mode 100644 index 4f50e952b0..0000000000 --- a/packages/apis/ens/recipes/mutations/setAddress.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - setAddress( - domain: $domain - address: $address - resolverAddress: $resolverAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setContentHash.graphql b/packages/apis/ens/recipes/mutations/setContentHash.graphql deleted file mode 100644 index 9f7222580e..0000000000 --- a/packages/apis/ens/recipes/mutations/setContentHash.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - setContentHash( - domain: $domain - cid: $cid - resolverAddress: $resolverAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setOwner.graphql b/packages/apis/ens/recipes/mutations/setOwner.graphql deleted file mode 100644 index ec6a3fa3e6..0000000000 --- a/packages/apis/ens/recipes/mutations/setOwner.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - setOwner( - domain: $domain - newOwner: $newOwner - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/mutations/setRecord.graphql b/packages/apis/ens/recipes/mutations/setRecord.graphql deleted file mode 100644 index 20daefe42d..0000000000 --- a/packages/apis/ens/recipes/mutations/setRecord.graphql +++ /dev/null @@ -1,12 +0,0 @@ -mutation { - setRecord( - domain: $domain - owner: $owner - resolverAddress: $resolverAddress - ttl: $ttl - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setResolver.graphql b/packages/apis/ens/recipes/mutations/setResolver.graphql deleted file mode 100644 index b67ca42663..0000000000 --- a/packages/apis/ens/recipes/mutations/setResolver.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - setResolver( - domain: $domain - resolverAddress: $resolverAddress - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql b/packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql deleted file mode 100644 index 224daa01e6..0000000000 --- a/packages/apis/ens/recipes/mutations/setSubdomainOwner.graphql +++ /dev/null @@ -1,10 +0,0 @@ -mutation { - setSubdomainOwner( - subdomain: $subdomain - owner: $owner - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql b/packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql deleted file mode 100644 index ee4a7ef359..0000000000 --- a/packages/apis/ens/recipes/mutations/setSubdomainRecord.graphql +++ /dev/null @@ -1,13 +0,0 @@ -mutation { - setSubdomainRecord( - domain: $domain - label: $label - owner: $owner - resolverAddress: $resolverAddress - ttl: $ttl - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} \ No newline at end of file diff --git a/packages/apis/ens/recipes/queries/getAddress.graphql b/packages/apis/ens/recipes/queries/getAddress.graphql deleted file mode 100644 index e9cfd6e9de..0000000000 --- a/packages/apis/ens/recipes/queries/getAddress.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getAddress( - domain: $domain - resolverAddress: $resolverAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/queries/getContentHash.graphql b/packages/apis/ens/recipes/queries/getContentHash.graphql deleted file mode 100644 index a0bfc35a55..0000000000 --- a/packages/apis/ens/recipes/queries/getContentHash.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getContentHash( - domain: $domain - resolverAddress: $resolverAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/queries/getExpiryTimes.graphql b/packages/apis/ens/recipes/queries/getExpiryTimes.graphql deleted file mode 100644 index f393a71ddb..0000000000 --- a/packages/apis/ens/recipes/queries/getExpiryTimes.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getExpiryTimes( - domain: $domain - registrarAddress: $registrarAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/queries/getNameFromAddress.graphql b/packages/apis/ens/recipes/queries/getNameFromAddress.graphql deleted file mode 100644 index 5a00ef475e..0000000000 --- a/packages/apis/ens/recipes/queries/getNameFromAddress.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getNameFromAddress( - address: $address - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/queries/getOwner.graphql b/packages/apis/ens/recipes/queries/getOwner.graphql deleted file mode 100644 index f2ae7c81ef..0000000000 --- a/packages/apis/ens/recipes/queries/getOwner.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getOwner( - domain: $domain - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/recipes/queries/getResolver.graphql b/packages/apis/ens/recipes/queries/getResolver.graphql deleted file mode 100644 index 7bd03033c8..0000000000 --- a/packages/apis/ens/recipes/queries/getResolver.graphql +++ /dev/null @@ -1,9 +0,0 @@ -query { - getResolver( - domain: $domain - registryAddress: $registryAddress - connection: { - networkNameOrChainId: $network - } - ) -} diff --git a/packages/apis/ens/scripts/deploy-contracts.js b/packages/apis/ens/scripts/deploy-contracts.js index c11f3f9c16..290e3fda5a 100644 --- a/packages/apis/ens/scripts/deploy-contracts.js +++ b/packages/apis/ens/scripts/deploy-contracts.js @@ -5,14 +5,14 @@ async function main() { const { data } = await axios.get("http://localhost:4040/deploy-ens"); // Store the address in our recipes' constants file - const constants = require(`${__dirname}/recipes/constants.json`); + const constants = require(`${__dirname}/../recipes/constants.json`); constants.Registry = data.ensAddress; constants.Registrar = data.registrarAddress; constants.Resolver = data.resolverAddress; constants.Reverse = data.reverseAddress; fs.writeFileSync( - `${__dirname}/recipes/constants.json`, + `${__dirname}/../recipes/constants.json`, JSON.stringify(constants, null, 2) ); From 496447597753fd19bcfa2914ab2e550b025a52ea Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 19:32:18 -0500 Subject: [PATCH 50/53] fixing test script --- packages/apis/ens/package.json | 2 +- packages/apis/ens/recipes/constants.json | 8 ++++---- packages/apis/ens/recipes/e2e.json | 16 ++++++++-------- .../apis/ens/scripts/{ => fifs}/configure.ts | 0 .../apis/ens/scripts/{ => fifs}/create-domain.ts | 0 5 files changed, 13 insertions(+), 13 deletions(-) rename packages/apis/ens/scripts/{ => fifs}/configure.ts (100%) rename packages/apis/ens/scripts/{ => fifs}/create-domain.ts (100%) diff --git a/packages/apis/ens/package.json b/packages/apis/ens/package.json index 1a9d6f6320..a161a7cd2a 100644 --- a/packages/apis/ens/package.json +++ b/packages/apis/ens/package.json @@ -10,7 +10,7 @@ "deploy": "yarn deploy:contract && yarn deploy:web3api", "deploy:web3api": "npx w3 build --ipfs http://localhost:5001 --test-ens ens.eth", "deploy:contract": "node ./scripts/deploy-contracts.js", - "test": "yarn test:e2e && yarn test:recipe", + "test": "yarn test:e2e && yarn test:env:up && yarn deploy && yarn test:recipe && yarn test:env:down", "test:e2e": "jest --passWithNoTests --runInBand --verbose", "test:recipe": "npx w3 query ./recipes/e2e.json" }, diff --git a/packages/apis/ens/recipes/constants.json b/packages/apis/ens/recipes/constants.json index e8ebe99afa..880fd49485 100644 --- a/packages/apis/ens/recipes/constants.json +++ b/packages/apis/ens/recipes/constants.json @@ -1,8 +1,8 @@ { - "Registry": "0xb09bCc172050fBd4562da8b229Cf3E45Dc3045A6", - "Registrar": "0x4bf749ec68270027C5910220CEAB30Cc284c7BA2", - "Resolver": "0xFC628dd79137395F3C9744e33b1c5DE554D94882", - "Reverse": "0x7C728214be9A0049e6a86f2137ec61030D0AA964", + "Registry": "0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab", + "Registrar": "0xD833215cBcc3f914bD1C9ece3EE7BF8B14f841bb", + "Resolver": "0x5b1869D9A4C187F2EAa108f3062412ecf0526b24", + "Reverse": "0xe982E462b094850F12AF94d21D470e21bE9D0E9C", "Signer": "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1", "CID": "0x64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C", "Domain": "web3api.eth", diff --git a/packages/apis/ens/recipes/e2e.json b/packages/apis/ens/recipes/e2e.json index 320cc4e3a0..6e6c8a84d2 100644 --- a/packages/apis/ens/recipes/e2e.json +++ b/packages/apis/ens/recipes/e2e.json @@ -90,7 +90,7 @@ } }, { - "query": "./queries/getOwner.graphql", + "query": "../meta/queries/getOwner.graphql", "variables": { "registryAddress": "$Registry", "domain": "$Domain", @@ -107,7 +107,7 @@ } }, { - "query": "./queries/getOwner.graphql", + "query": "../meta/queries/getOwner.graphql", "variables": { "registryAddress": "$Registry", "domain": "$Domain", @@ -115,7 +115,7 @@ } }, { - "query": "./queries/getOwner.graphql", + "query": "../meta/queries/getOwner.graphql", "variables": { "registryAddress": "$Registry", "domain": "$Subdomain", @@ -123,7 +123,7 @@ } }, { - "query": "./queries/getResolver.graphql", + "query": "../meta/queries/getResolver.graphql", "variables": { "registryAddress": "$Registry", "domain": "$Domain", @@ -131,7 +131,7 @@ } }, { - "query": "./queries/getResolver.graphql", + "query": "../meta/queries/getResolver.graphql", "variables": { "registryAddress": "$Registry", "domain": "$Subdomain", @@ -139,7 +139,7 @@ } }, { - "query": "./queries/getAddress.graphql", + "query": "../meta/queries/getAddress.graphql", "variables": { "resolverAddress": "$Resolver", "domain": "$Domain", @@ -147,7 +147,7 @@ } }, { - "query": "./queries/getContentHash.graphql", + "query": "../meta/queries/getContentHash.graphql", "variables": { "resolverAddress": "$Resolver", "domain": "$Domain", @@ -155,7 +155,7 @@ } }, { - "query": "./queries/getNameFromAddress.graphql", + "query": "../meta/queries/getNameFromAddress.graphql", "variables": { "address": "$Signer", "registryAddress": "$Registry", diff --git a/packages/apis/ens/scripts/configure.ts b/packages/apis/ens/scripts/fifs/configure.ts similarity index 100% rename from packages/apis/ens/scripts/configure.ts rename to packages/apis/ens/scripts/fifs/configure.ts diff --git a/packages/apis/ens/scripts/create-domain.ts b/packages/apis/ens/scripts/fifs/create-domain.ts similarity index 100% rename from packages/apis/ens/scripts/create-domain.ts rename to packages/apis/ens/scripts/fifs/create-domain.ts From 9cb7e76230d599020208775717ee984bba8cc152 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Thu, 9 Sep 2021 19:36:14 -0500 Subject: [PATCH 51/53] TODO readme --- packages/apis/ens/README.md | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/packages/apis/ens/README.md b/packages/apis/ens/README.md index 761f85e843..30404ce4c5 100644 --- a/packages/apis/ens/README.md +++ b/packages/apis/ens/README.md @@ -1,35 +1 @@ -# How To Run - -## 1. Setup Test Env - -``` -npx w3 test-env up -``` - -## 2. Build & Deploy SimpleStorage Contract - -``` -node ./scripts/deploy-contracts.js -``` - -This will output the deployed ENS contract addresses. - -## 3. Fill constants JSON - -Fill the corresponding contract addresses in the `constants.json file` with the addresses from the previous step. - -Verify that the `Signer` value matches the signer used for transactions. Currently, Ganache's default: `0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1` - -The `Domain` and `CID` values can be changed freely. - -## 4. Build & Deploy The Web3API - -``` -npx w3 build --ipfs http://localhost:5001 --graph ens,http://localhost:8020 --test-ens ens.eth -``` - -## 5. Test The Web3API Using Query/Mutation Recipes - -``` -npx w3 query ./recipes/e2e.json --test-ens -``` +TODO \ No newline at end of file From 58adbf68918b2b1372063b17dc71d38821c04660 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Tue, 14 Sep 2021 05:04:51 -0400 Subject: [PATCH 52/53] fix import methods w/o arguments --- .../compose/src/templates/schema.mustache.ts | 52 +++---- .../compose/sanity/output/mutation.graphql | 96 ++++++------ .../cases/compose/sanity/output/query.graphql | 72 ++++----- .../compose/sanity/output/schema.graphql | 138 +++++++++--------- 4 files changed, 179 insertions(+), 179 deletions(-) diff --git a/packages/schema/compose/src/templates/schema.mustache.ts b/packages/schema/compose/src/templates/schema.mustache.ts index bcb6263b5c..688437ec0e 100644 --- a/packages/schema/compose/src/templates/schema.mustache.ts +++ b/packages/schema/compose/src/templates/schema.mustache.ts @@ -13,16 +13,16 @@ type {{type}}{{#interfaces.length}} implements{{#interfaces}} {{type}}{{^last}} ] ){{/imports.length}} { {{#methods}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} + """ + {{comment}} + """ + {{/comment}} {{name}}{{#arguments.length}}( {{#arguments}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} + """ + {{comment}} + """ + {{/comment}} {{name}}: {{toGraphQLType}} {{/arguments}} ){{/arguments.length}}: {{#return}}{{toGraphQLType}}{{/return}} @@ -40,10 +40,10 @@ type {{type}}{{#interfaces.length}} implements{{#interfaces}} {{type}}{{^last}} {{/comment}} type {{type}}{{#interfaces.length}} implements{{#interfaces}} {{type}}{{^last}} &{{/last}}{{/interfaces}}{{/interfaces.length}} { {{#properties}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} + """ + {{comment}} + """ + {{/comment}} {{name}}: {{toGraphQLType}} {{/properties}} } @@ -74,19 +74,19 @@ type {{type}}{{#interfaces.length}} implements{{#interfaces}} {{type}}{{^last}} nativeType: "{{nativeType}}" ) { {{#methods}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} - {{name}}( + """ + {{comment}} + """ + {{/comment}} + {{name}}{{#arguments.length}}( {{#arguments}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} + """ + {{comment}} + """ + {{/comment}} {{name}}: {{toGraphQLType}} {{/arguments}} - ): {{#return}}{{toGraphQLType}}{{/return}} + ){{/arguments.length}}: {{#return}}{{toGraphQLType}}{{/return}} {{^last}} {{/last}} @@ -109,10 +109,10 @@ type {{type}}{{#interfaces.length}} implements{{#interfaces}} {{type}}{{^last}} nativeType: "{{nativeType}}" ) { {{#properties}}{{#comment}} -""" -{{comment}} -""" -{{/comment}} + """ + {{comment}} + """ + {{/comment}} {{name}}: {{toGraphQLType}} {{/properties}} } diff --git a/packages/test-cases/cases/compose/sanity/output/mutation.graphql b/packages/test-cases/cases/compose/sanity/output/mutation.graphql index a8f8993289..5eb266e44b 100644 --- a/packages/test-cases/cases/compose/sanity/output/mutation.graphql +++ b/packages/test-cases/cases/compose/sanity/output/mutation.graphql @@ -44,26 +44,26 @@ type Mutation implements Interface_Mutation @imports( "Interface_Mutation" ] ) { -""" -method1 comment -""" + """ + method1 comment + """ method1( -""" -str comment -""" + """ + str comment + """ str: String! -""" -optStr comment -""" + """ + optStr comment + """ optStr: String u: UInt! -""" -uArrayArray comment -""" + """ + uArrayArray comment + """ uArrayArray: [[UInt]]! -""" -implObject comment -""" + """ + implObject comment + """ implObject: LocalImplementationObject! ): String! @@ -81,13 +81,13 @@ CustomMutationType multi-line comment line 2 """ type CustomMutationType { -""" -str comment -""" + """ + str comment + """ str: String! -""" -optStr comment -""" + """ + optStr comment + """ optStr: String u: UInt! optU: UInt @@ -98,14 +98,14 @@ optStr comment uArray: [UInt!]! uOptArray: [UInt!] optStrOptArray: [String] -""" -crazyArray comment -""" + """ + crazyArray comment + """ crazyArray: [[[[UInt32!]]!]] commonType: CommonType! -""" -customType comment -""" + """ + customType comment + """ customType: Namespace_CustomType! } @@ -117,9 +117,9 @@ type AnotherMutationType { ImplementationObject comment """ type ImplementationObject implements Interface_InterfaceObject1 & Interface_InterfaceObject2 { -""" -anotherProp comment -""" + """ + anotherProp comment + """ anotherProp: String str: String! uint8: UInt8! @@ -142,9 +142,9 @@ CommonType comment type CommonType { prop: UInt8! nestedObject: NestedType! -""" -objectArray comment -""" + """ + objectArray comment + """ objectArray: [[ArrayObject]]! } @@ -180,13 +180,13 @@ type Namespace_Query @imported( uArrayArray: [[UInt]]! ): String! -""" -method2 comment -""" + """ + method2 comment + """ method2( -""" -arg comment -""" + """ + arg comment + """ arg: [String!]! ): [Int32!]! } @@ -322,9 +322,9 @@ type Namespace_CustomType @imported( enum: Namespace_CustomEnum! optEnum: Namespace_CustomEnum importedEnum: Namespace_Imported_Enum! -""" -optImportedEnum comment -""" + """ + optImportedEnum comment + """ optImportedEnum: Namespace_Imported_Enum } @@ -337,9 +337,9 @@ type Interface_InterfaceObject1 @imported( nativeType: "InterfaceObject1" ) { str: String! -""" -InterfaceObject1_uint8 comment -""" + """ + InterfaceObject1_uint8 comment + """ uint8: UInt8! } @@ -374,9 +374,9 @@ type Interface_NestedInterfaceObject @imported( namespace: "Interface", nativeType: "NestedInterfaceObject" ) { -""" -object comment -""" + """ + object comment + """ object: Interface_Object } diff --git a/packages/test-cases/cases/compose/sanity/output/query.graphql b/packages/test-cases/cases/compose/sanity/output/query.graphql index aaecf3b22b..9876ab8179 100644 --- a/packages/test-cases/cases/compose/sanity/output/query.graphql +++ b/packages/test-cases/cases/compose/sanity/output/query.graphql @@ -43,22 +43,22 @@ type Query implements Interface_Query @imports( "Interface_NestedInterfaceObject" ] ) { -""" -method1 comment -""" + """ + method1 comment + """ method1( str: String! optStr: String u: UInt! -""" -uArrayArray comment -""" + """ + uArrayArray comment + """ uArrayArray: [[UInt]]! ): String! -""" -method2 comment -""" + """ + method2 comment + """ method2( arg: [String!]! ): [Int32!]! @@ -85,9 +85,9 @@ type CustomQueryType { optStrOptArray: [String] crazyArray: [[[[UInt32!]]!]] commonType: CommonType! -""" -customType comment -""" + """ + customType comment + """ customType: Namespace_CustomType! } @@ -101,9 +101,9 @@ CommonType comment type CommonType { prop: UInt8! nestedObject: NestedType! -""" -objectArray comment -""" + """ + objectArray comment + """ objectArray: [[ArrayObject]]! } @@ -139,13 +139,13 @@ type Namespace_Query @imported( uArrayArray: [[UInt]]! ): String! -""" -method2 comment -""" + """ + method2 comment + """ method2( -""" -arg comment -""" + """ + arg comment + """ arg: [String!]! ): [Int32!]! } @@ -158,13 +158,13 @@ type Interface_Query @imported( namespace: "Interface", nativeType: "Query" ) { -""" -abstractQueryMethod comment -""" + """ + abstractQueryMethod comment + """ abstractQueryMethod( -""" -arg comment -""" + """ + arg comment + """ arg: Interface_QueryInterfaceArgument! ): Interface_InterfaceObject2! } @@ -211,9 +211,9 @@ type Namespace_CustomType @imported( enum: Namespace_CustomEnum! optEnum: Namespace_CustomEnum importedEnum: Namespace_Imported_Enum! -""" -optImportedEnum comment -""" + """ + optImportedEnum comment + """ optImportedEnum: Namespace_Imported_Enum } @@ -261,9 +261,9 @@ type Interface_QueryInterfaceArgument implements Interface_NestedQueryInterfaceA nativeType: "QueryInterfaceArgument" ) { str: String! -""" -uint8 comment -""" + """ + uint8 comment + """ uint8: UInt8! } @@ -309,9 +309,9 @@ type Interface_NestedInterfaceObject @imported( namespace: "Interface", nativeType: "NestedInterfaceObject" ) { -""" -object comment -""" + """ + object comment + """ object: Interface_Object } diff --git a/packages/test-cases/cases/compose/sanity/output/schema.graphql b/packages/test-cases/cases/compose/sanity/output/schema.graphql index 4b277779e3..67352e8e15 100644 --- a/packages/test-cases/cases/compose/sanity/output/schema.graphql +++ b/packages/test-cases/cases/compose/sanity/output/schema.graphql @@ -43,22 +43,22 @@ type Query implements Interface_Query @imports( "Interface_NestedInterfaceObject" ] ) { -""" -method1 comment -""" + """ + method1 comment + """ method1( str: String! optStr: String u: UInt! -""" -uArrayArray comment -""" + """ + uArrayArray comment + """ uArrayArray: [[UInt]]! ): String! -""" -method2 comment -""" + """ + method2 comment + """ method2( arg: [String!]! ): [Int32!]! @@ -90,26 +90,26 @@ type Mutation implements Interface_Mutation @imports( "Interface_Mutation" ] ) { -""" -method1 comment -""" + """ + method1 comment + """ method1( -""" -str comment -""" + """ + str comment + """ str: String! -""" -optStr comment -""" + """ + optStr comment + """ optStr: String u: UInt! -""" -uArrayArray comment -""" + """ + uArrayArray comment + """ uArrayArray: [[UInt]]! -""" -implObject comment -""" + """ + implObject comment + """ implObject: LocalImplementationObject! ): String! @@ -139,9 +139,9 @@ type CustomQueryType { optStrOptArray: [String] crazyArray: [[[[UInt32!]]!]] commonType: CommonType! -""" -customType comment -""" + """ + customType comment + """ customType: Namespace_CustomType! } @@ -155,9 +155,9 @@ CommonType comment type CommonType { prop: UInt8! nestedObject: NestedType! -""" -objectArray comment -""" + """ + objectArray comment + """ objectArray: [[ArrayObject]]! } @@ -180,13 +180,13 @@ CustomMutationType multi-line comment line 2 """ type CustomMutationType { -""" -str comment -""" + """ + str comment + """ str: String! -""" -optStr comment -""" + """ + optStr comment + """ optStr: String u: UInt! optU: UInt @@ -197,14 +197,14 @@ optStr comment uArray: [UInt!]! uOptArray: [UInt!] optStrOptArray: [String] -""" -crazyArray comment -""" + """ + crazyArray comment + """ crazyArray: [[[[UInt32!]]!]] commonType: CommonType! -""" -customType comment -""" + """ + customType comment + """ customType: Namespace_CustomType! } @@ -216,9 +216,9 @@ type AnotherMutationType { ImplementationObject comment """ type ImplementationObject implements Interface_InterfaceObject1 & Interface_InterfaceObject2 { -""" -anotherProp comment -""" + """ + anotherProp comment + """ anotherProp: String str: String! uint8: UInt8! @@ -253,13 +253,13 @@ type Namespace_Query @imported( uArrayArray: [[UInt]]! ): String! -""" -method2 comment -""" + """ + method2 comment + """ method2( -""" -arg comment -""" + """ + arg comment + """ arg: [String!]! ): [Int32!]! } @@ -272,13 +272,13 @@ type Interface_Query @imported( namespace: "Interface", nativeType: "Query" ) { -""" -abstractQueryMethod comment -""" + """ + abstractQueryMethod comment + """ abstractQueryMethod( -""" -arg comment -""" + """ + arg comment + """ arg: Interface_QueryInterfaceArgument! ): Interface_InterfaceObject2! } @@ -379,9 +379,9 @@ type Namespace_CustomType @imported( enum: Namespace_CustomEnum! optEnum: Namespace_CustomEnum importedEnum: Namespace_Imported_Enum! -""" -optImportedEnum comment -""" + """ + optImportedEnum comment + """ optImportedEnum: Namespace_Imported_Enum } @@ -429,9 +429,9 @@ type Interface_QueryInterfaceArgument implements Interface_NestedQueryInterfaceA nativeType: "QueryInterfaceArgument" ) { str: String! -""" -uint8 comment -""" + """ + uint8 comment + """ uint8: UInt8! } @@ -477,9 +477,9 @@ type Interface_NestedInterfaceObject @imported( namespace: "Interface", nativeType: "NestedInterfaceObject" ) { -""" -object comment -""" + """ + object comment + """ object: Interface_Object } @@ -492,9 +492,9 @@ type Interface_InterfaceObject1 @imported( nativeType: "InterfaceObject1" ) { str: String! -""" -InterfaceObject1_uint8 comment -""" + """ + InterfaceObject1_uint8 comment + """ uint8: UInt8! } From fae3ce98effe63bf240c3eb4baf6fd250d321145 Mon Sep 17 00:00:00 2001 From: dOrgJelli Date: Tue, 14 Sep 2021 05:17:18 -0400 Subject: [PATCH 53/53] prep 0.0.1-prealpha.41 --- CHANGELOG.md | 9 +++++++++ VERSION | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9580bf04a0..1aabb16d04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# Web3API 0.0.1-prealpha.41 +## Features +* `@web3api/schema-parse`: Added support for `JSON` as a base type. +* `@web3api/ens-api`: Merged in an initial version of the ENS Wasm based Web3Api. +* `web3api.build.yaml`: Added support for the `linked_packages` property, allowing you to link local packages into the dockerized build-env. + +## Bugs +* `@web3api/schema-compose`: Fixed an invalid GraphQL bug that occured when an imported query method did not have any arguments. + # Web3API 0.0.1-prealpha.40 ## Features * `@web3api/client-js`: Added `getManifest(...)`, `getFile(...)`, and `getSchema(...)` methods to the client, simply provide a URI. diff --git a/VERSION b/VERSION index 25b33a0f0b..68d7ce7c4a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.1-prealpha.40 \ No newline at end of file +0.0.1-prealpha.41 \ No newline at end of file