Skip to content

Commit dc353d0

Browse files
committed
refactor: updated MetaEvidence validation strategy
Now we allow multiple versions of dynamicScriptURI and evidenceDisplayInterfaceURI to co-exist.
1 parent fc6ed4d commit dc353d0

File tree

4 files changed

+83
-60
lines changed

4 files changed

+83
-60
lines changed

netlify.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
IPFS_GATEWAY_ADDRESS='https://ipfs.kleros.io'
88
AVAILABLE_LANGUAGE_GROUP_PAIRS='["en|fr","en|es","en|pt","de|en","en|ru","en|tr","en|zh"]'
99
USER_SETTINGS_API_BASE_URLS='{"1":"https://iioeu1ljqf.execute-api.us-east-2.amazonaws.com/mainnet","77":"https://xa1qxy0wp6.execute-api.us-east-2.amazonaws.com/sokol"}'
10-
LINGUO_CONTRACT_ADDRESSES='{"1":{"de|en":["0x54f1f7b58c1Dc646a6c639C5d909B62652129b33","0x950f5AB863075C685227EfEDb41Ef167Be0099ad"],"en|es":["0x460f688f655610de5e3d92beb7892fa200b9060d","0xD8F8019c025C2Ba6745543D9a3C338DE1b98C103"],"en|fr":["0xFEe86325d5C96AE9E20EaBe7B157813c67bBccFA","0xf1A9589880DbF393F32A5b2d5a0054Fa10385074"],"en|ja":["0x5Cd1ff55282db11e526Fe13fA0F7C014f74acF11","0xc3162705Af0e10108FF837E450A14669b2711129"],"en|ko":["0xf8D4c1436ACA89A5DEEf36F06f662bAdfEb5AE63","0xFE721DD8Ac8e47A4228A6147A25C65136f213EaA"],"en|pt":["0x48032Ad54DB49d8E0d4f135A687b98E5731961f9","0x1c839fd542563182BFD0C337c8AaD1Be412F0fd2"],"en|ru":["0x0Bc3B51673dCdF3b45c628066761dA7331E8fBA2","0x464c84c41f3C25Ba5a75B006D8B20600A8777306"],"en|tr":["0xa3E4348BDDc32AfcedC5e088e0E21FD6154A0180","0x44863f5b7AAb7ceE181C0d84E244540125eF7AF7"],"en|zh":["0xaB0D90943A58b1A64c0171Ee8e743d9998Be6AC3","0xD67C12734dC12240a6324Db63ccd426964B71Fe7"]},"42":{"de|en":["0x8A4290298D65717a3BaEd546e4Ef9Eb2fe0b187D","0x5Af02E0E04c2042345E15Ed6dc7CC0c220f2C2Fa"],"en|es":["0x082aA0BeBE8C32042F77d123B6a657Fe907D8C33","0x6eb2D062E808a67828d27aD3926912C9309E5417"],"en|fr":["0x963Df99387a2b350264B5847ff9AbFF674e7BdFA","0x152c7F0948Fd0B2741a934aA7bfceB41cd4b5bFD"],"en|ja":["0x8B819D13d90Fcf9F0a235fe85d860E3C9763D470","0x033B08AAC5A3a2E7C306dd5Ee360904eC8d45DF6"],"en|ko":["0xe026cA59Bc31960D3060390D8667ceBc5D42B46d","0x499aD7D07f6EF0bD17656559312D0DdCBA0e79Ce"],"en|pt":["0xaD9Dec9c66cEbAa7e8624a528f65A3FA1Df8027d","0xb9534aB9b71e26949F9bdF9C05897Ee4619d144F"],"en|ru":["0xF4E6294201Ef99f1E83586Ef5AC8bCBaA4DB45CF","0x243a0431DE8d0B6D9837B53d3A10088b53B52918"],"en|tr":["0x10Dde936662A674F35ab36641017342B75Bb1D58","0xB93b8c9FD90724C036Ac56c5D3306333A67cFbFB"],"en|zh":["0xffb2BB47F4CD36426134706A849590471622519C","0xBc19B6fBAEEC0a2b50f3AD6F53b670ac03Bd1C6F"]},"77":{"de|en":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|es":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|fr":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|ja":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|ko":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|pt":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|ru":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|tr":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"],"en|zh":["0x5EC045788659159e2E2A725361DF4Dc271edB7dB"]}}'
10+
LINGUO_CONTRACT_ADDRESSES='{"1":{"de|en":["0x54f1f7b58c1Dc646a6c639C5d909B62652129b33","0x950f5AB863075C685227EfEDb41Ef167Be0099ad"],"en|es":["0x460f688f655610de5e3d92beb7892fa200b9060d","0xD8F8019c025C2Ba6745543D9a3C338DE1b98C103"],"en|fr":["0xFEe86325d5C96AE9E20EaBe7B157813c67bBccFA","0xf1A9589880DbF393F32A5b2d5a0054Fa10385074"],"en|ja":["0x5Cd1ff55282db11e526Fe13fA0F7C014f74acF11","0xc3162705Af0e10108FF837E450A14669b2711129"],"en|ko":["0xf8D4c1436ACA89A5DEEf36F06f662bAdfEb5AE63","0xFE721DD8Ac8e47A4228A6147A25C65136f213EaA"],"en|pt":["0x48032Ad54DB49d8E0d4f135A687b98E5731961f9","0x1c839fd542563182BFD0C337c8AaD1Be412F0fd2"],"en|ru":["0x0Bc3B51673dCdF3b45c628066761dA7331E8fBA2","0x464c84c41f3C25Ba5a75B006D8B20600A8777306"],"en|tr":["0xa3E4348BDDc32AfcedC5e088e0E21FD6154A0180","0x44863f5b7AAb7ceE181C0d84E244540125eF7AF7"],"en|zh":["0xaB0D90943A58b1A64c0171Ee8e743d9998Be6AC3","0xD67C12734dC12240a6324Db63ccd426964B71Fe7"]},"42":{"de|en":["0x8A4290298D65717a3BaEd546e4Ef9Eb2fe0b187D","0x5Af02E0E04c2042345E15Ed6dc7CC0c220f2C2Fa"],"en|es":["0x082aA0BeBE8C32042F77d123B6a657Fe907D8C33","0x6eb2D062E808a67828d27aD3926912C9309E5417"],"en|fr":["0x963Df99387a2b350264B5847ff9AbFF674e7BdFA","0x152c7F0948Fd0B2741a934aA7bfceB41cd4b5bFD"],"en|ja":["0x8B819D13d90Fcf9F0a235fe85d860E3C9763D470","0x033B08AAC5A3a2E7C306dd5Ee360904eC8d45DF6"],"en|ko":["0xe026cA59Bc31960D3060390D8667ceBc5D42B46d","0x499aD7D07f6EF0bD17656559312D0DdCBA0e79Ce"],"en|pt":["0xaD9Dec9c66cEbAa7e8624a528f65A3FA1Df8027d","0xb9534aB9b71e26949F9bdF9C05897Ee4619d144F"],"en|ru":["0xF4E6294201Ef99f1E83586Ef5AC8bCBaA4DB45CF","0x243a0431DE8d0B6D9837B53d3A10088b53B52918"],"en|tr":["0x10Dde936662A674F35ab36641017342B75Bb1D58","0xB93b8c9FD90724C036Ac56c5D3306333A67cFbFB"],"en|zh":["0xffb2BB47F4CD36426134706A849590471622519C","0xBc19B6fBAEEC0a2b50f3AD6F53b670ac03Bd1C6F"]},"77":{"de|en":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|es":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|fr":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ja":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ko":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|pt":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|ru":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|tr":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"],"en|zh":["0x598fdd74b56F949cF84904D03B8774cb4F0e679C"]}}'
1111

1212
[context.production.environment]
1313
DEFAULT_CHAIN_ID='1'

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"connected-react-router": "^6.8.0",
5656
"core-js": "^3.0.0",
5757
"dayjs": "^1.8.22",
58-
"deep-equal": "^2.0.4",
58+
"deep-equal": "^2.0.5",
5959
"deepmerge": "^4.2.2",
6060
"did-resolver": "^2.1.2",
6161
"history": "^4.10.1",

src/features/linguo/api/createContractApi.js

Lines changed: 44 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ const { toBN } = Web3.utils;
1919

2020
export default async function createContractApi({ web3, archon, linguo, arbitrator }) {
2121
const chainId = await web3.eth.getChainId();
22-
const firstRelevantBlock = firstRelevantBlockByChainId[chainId] ?? 0;
23-
const evidenceDisplayInterfaceURI = evidenceDisplayURIByChainId[chainId] ?? evidenceDisplayURIByChainId[1];
24-
const dynamicScriptURI = dynamicScriptURIByChainId[chainId] ?? dynamicScriptURIByChainId[1];
22+
const firstRelevantBlock = chainIdToFirstRelevantBlock[chainId] ?? 0;
23+
const evidenceDisplayInterfaceURI =
24+
chainIdToCurrentEvidenceDisplayInterfaceURI[chainId] ?? chainIdToCurrentEvidenceDisplayInterfaceURI[1];
25+
const dynamicScriptURI = chainIdToCurrentDynamicScriptURI[chainId] ?? chainIdToCurrentDynamicScriptURI[1];
2526

2627
const metadataStore = localforage.createInstance({
2728
name: `task-metadata@eip155:${chainId}`,
@@ -41,7 +42,6 @@ export default async function createContractApi({ web3, archon, linguo, arbitrat
4142
const tx = linguo.methods.createTask(deadline, minPrice, metaEvidence).send({
4243
from,
4344
gas,
44-
4545
value: maxPrice,
4646
});
4747

@@ -501,7 +501,6 @@ export default async function createContractApi({ web3, archon, linguo, arbitrat
501501
};
502502
}
503503
}
504-
505504
async function _getPastEvents(contract, eventName, { filter, fromBlock = 0, toBlock = 'latest' } = {}) {
506505
return promiseRetry(
507506
() =>
@@ -725,15 +724,23 @@ export default async function createContractApi({ web3, archon, linguo, arbitrat
725724
[account]: 'Requester',
726725
},
727726
metadata: {
727+
...metadata,
728728
/**
729729
* v1:
730730
* - Removed `text` field
731731
* - Added `wordCount` field
732732
* - `originalTextFile` is mandatory
733733
*/
734-
__v: 1,
735-
...metadata,
734+
__v: '1',
736735
},
736+
arbitrableChainID: chainId,
737+
/**
738+
* v1.0.0:
739+
* - Removed `text` field
740+
* - Added `wordCount` field
741+
* - `originalTextFile` is mandatory
742+
*/
743+
_v: '1.0.0',
737744
});
738745

739746
const { path } = await ipfs.publish('linguo-meta-evidence.json', JSON.stringify(metaEvidence));
@@ -755,28 +762,15 @@ export default async function createContractApi({ web3, archon, linguo, arbitrat
755762
}
756763

757764
function _validateMetaEvidence(metaEvidence) {
758-
const onlyRelevantFields = pick([
759-
'title',
760-
'description',
761-
'rulingOptions',
762-
'category',
763-
'question',
764-
'fileURI',
765-
'evidenceDisplayInterfaceURI',
766-
'dynamicScriptURI',
767-
]);
768-
769-
const currentTemplate = {
770-
...onlyRelevantFields(metaEvidenceTemplate),
771-
evidenceDisplayInterfaceURI,
772-
dynamicScriptURI,
773-
};
765+
const onlyStaticFields = pick(['title', 'description', 'rulingOptions', 'category', 'question', 'fileURI']);
774766

775-
const templatesToCompare = [currentTemplate];
767+
const areStaticFieldsValid = deepEqual(onlyStaticFields(metaEvidence), onlyStaticFields(metaEvidenceTemplate));
768+
const isDynamicScriptValid =
769+
chainIdToValidDynamicScriptURIs[chainId]?.includes(metaEvidence.dynamicScriptURI) ?? false;
770+
const isEvidenceDisplayInterfaceValid =
771+
chainIdToValidEvidenceDisplayInterfaceURIs[chainId]?.includes(metaEvidence.evidenceDisplayInterfaceURI) ?? false;
776772

777-
const metaEvidenceToCompare = onlyRelevantFields(metaEvidence);
778-
779-
const isValid = !!templatesToCompare.some(template => deepEqual(metaEvidenceToCompare, template));
773+
const isValid = areStaticFieldsValid && isDynamicScriptValid && isEvidenceDisplayInterfaceValid;
780774

781775
if (!isValid) {
782776
throw new Error('This translation task is not valid.');
@@ -843,22 +837,40 @@ export default async function createContractApi({ web3, archon, linguo, arbitrat
843837
}
844838

845839
// TODO: Add xDAI params
846-
const firstRelevantBlockByChainId = {
840+
const chainIdToFirstRelevantBlock = {
847841
1: 11237802,
848842
42: 0,
849843
77: 22580202,
850844
};
851845

852-
const evidenceDisplayURIByChainId = {
846+
const chainIdToCurrentEvidenceDisplayInterfaceURI = {
853847
1: '/ipfs/QmXGDMfcxjfQi5SFwpBSb73pPjoZq2N8c6eWCgxx8pVqj7/index.html',
854848
42: '/ipfs/QmYbtF7K6qCfSYfu2k6nYnVRY8HY97rEAF6mgBWtDgfovw/index.html',
855-
77: '/ipfs/Qmf7zuZAkc3Dms4QXXuQkuJDamB4Hm2ASG24Yy4A6EY2gs/linguo-evidence-display/index.html',
849+
77: '/ipfs/Qmb5n6PgbshktJqGpwMAxP1moXEPaqq7ZvRufeXXhSPXxW/linguo-evidence-display/index.html',
856850
};
857851

858-
const dynamicScriptURIByChainId = {
852+
/**
853+
* Keeps track of historical values for evidenceDisplayInterfaceURI
854+
*/
855+
const chainIdToValidEvidenceDisplayInterfaceURIs = {
856+
1: [chainIdToCurrentEvidenceDisplayInterfaceURI[1]],
857+
42: [chainIdToCurrentEvidenceDisplayInterfaceURI[42]],
858+
77: [chainIdToCurrentEvidenceDisplayInterfaceURI[77]],
859+
};
860+
861+
const chainIdToCurrentDynamicScriptURI = {
859862
1: '/ipfs/QmchWC6L3dT23wwQiJJLWCeS1EDnDYrLcYat93C4Lm4P4E/linguo-dynamic-script.js',
860863
42: '/ipfs/QmZFcqdsR76jyHyLsBefc4SBuegj2boBDr2skxGauM5DNf/linguo-dynamic-script.js',
861-
77: '/ipfs/QmXERKZXNmvX3nvHg8SGceG5bpkbjGyxYEcKP6W5m4NrHk/linguo-script.js',
864+
77: '/ipfs/QmPAHCRtSU844fdjNoEws8AgTpzzwsYwMF2wydtpvXAcoZ/linguo-script.js',
865+
};
866+
867+
/**
868+
* Keeps track of historical values for evidenceDisplayInterfaceURI
869+
*/
870+
const chainIdToValidDynamicScriptURIs = {
871+
1: [chainIdToCurrentDynamicScriptURI[1]],
872+
42: [chainIdToCurrentDynamicScriptURI[42]],
873+
77: [chainIdToCurrentDynamicScriptURI[77]],
862874
};
863875

864876
const getFileTypeFromPath = path => (path ?? '').split('.').slice(-1)?.[0];

yarn.lock

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7642,20 +7642,21 @@ dedent@^0.7.0:
76427642
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
76437643
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
76447644

7645-
deep-equal@^2.0.4:
7646-
version "2.0.4"
7647-
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.4.tgz#6b0b407a074666033169df3acaf128e1c6f3eab6"
7648-
integrity sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w==
7645+
deep-equal@^2.0.5:
7646+
version "2.0.5"
7647+
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9"
7648+
integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==
76497649
dependencies:
7650-
es-abstract "^1.18.0-next.1"
7651-
es-get-iterator "^1.1.0"
7650+
call-bind "^1.0.0"
7651+
es-get-iterator "^1.1.1"
7652+
get-intrinsic "^1.0.1"
76527653
is-arguments "^1.0.4"
76537654
is-date-object "^1.0.2"
76547655
is-regex "^1.1.1"
76557656
isarray "^2.0.5"
7656-
object-is "^1.1.3"
7657+
object-is "^1.1.4"
76577658
object-keys "^1.1.1"
7658-
object.assign "^4.1.1"
7659+
object.assign "^4.1.2"
76597660
regexp.prototype.flags "^1.3.0"
76607661
side-channel "^1.0.3"
76617662
which-boxed-primitive "^1.0.1"
@@ -8363,17 +8364,17 @@ es-abstract@^1.18.2:
83638364
string.prototype.trimstart "^1.0.4"
83648365
unbox-primitive "^1.0.1"
83658366

8366-
es-get-iterator@^1.1.0:
8367-
version "1.1.1"
8368-
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9"
8369-
integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==
8367+
es-get-iterator@^1.1.1:
8368+
version "1.1.2"
8369+
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7"
8370+
integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==
83708371
dependencies:
8371-
call-bind "^1.0.0"
8372-
get-intrinsic "^1.0.1"
8372+
call-bind "^1.0.2"
8373+
get-intrinsic "^1.1.0"
83738374
has-symbols "^1.0.1"
8374-
is-arguments "^1.0.4"
8375-
is-map "^2.0.1"
8376-
is-set "^2.0.1"
8375+
is-arguments "^1.1.0"
8376+
is-map "^2.0.2"
8377+
is-set "^2.0.2"
83778378
is-string "^1.0.5"
83788379
isarray "^2.0.5"
83798380

@@ -11780,6 +11781,14 @@ is-arguments@^1.0.4:
1178011781
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
1178111782
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
1178211783

11784+
is-arguments@^1.1.0:
11785+
version "1.1.1"
11786+
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
11787+
integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
11788+
dependencies:
11789+
call-bind "^1.0.2"
11790+
has-tostringtag "^1.0.0"
11791+
1178311792
is-arrayish@^0.2.1:
1178411793
version "0.2.1"
1178511794
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -12081,6 +12090,11 @@ is-map@^2.0.1:
1208112090
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1"
1208212091
integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==
1208312092

12093+
is-map@^2.0.2:
12094+
version "2.0.2"
12095+
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
12096+
integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
12097+
1208412098
is-negative-zero@^2.0.0:
1208512099
version "2.0.0"
1208612100
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
@@ -12228,6 +12242,11 @@ is-set@^2.0.1:
1222812242
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43"
1222912243
integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==
1223012244

12245+
is-set@^2.0.2:
12246+
version "2.0.2"
12247+
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
12248+
integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
12249+
1223112250
is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
1223212251
version "1.1.0"
1223312252
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -15272,22 +15291,14 @@ object-inspect@~1.4.0:
1527215291
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4"
1527315292
integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==
1527415293

15275-
object-is@^1.0.1:
15294+
object-is@^1.0.1, object-is@^1.1.4:
1527615295
version "1.1.5"
1527715296
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
1527815297
integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
1527915298
dependencies:
1528015299
call-bind "^1.0.2"
1528115300
define-properties "^1.1.3"
1528215301

15283-
object-is@^1.1.3:
15284-
version "1.1.3"
15285-
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81"
15286-
integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==
15287-
dependencies:
15288-
define-properties "^1.1.3"
15289-
es-abstract "^1.18.0-next.1"
15290-
1529115302
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1:
1529215303
version "1.1.1"
1529315304
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"

0 commit comments

Comments
 (0)