Skip to content

Commit 6e1e103

Browse files
committed
release-v1.2.4
1 parent 55e6338 commit 6e1e103

13 files changed

+118
-78
lines changed

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# CHANGELOG
22

3+
4+
## v1.2.4
5+
6+
* Introduced Story NFT with various enhancements:
7+
- Added permission handling in registerPILTermsAndAttach
8+
- Enabled URI changes post deployment
9+
- Added upgrade scripts
10+
- Implemented ERC-7572 contract-level metadata support
11+
- Resolved reentrancy vulnerability
12+
* Added royalty claiming for group IPs
13+
* Updated tests and added new deployment
14+
15+
**Full Changelog**: [v1.2.3...v1.2.4](https://github.com/storyprotocol/protocol-periphery-v1/compare/v1.2.3...v1.2.4)
16+
317
## v1.2.3
418

519
* Refactored SPG into "workflow" contracts and introduced `RoyaltyWorkflows` for IP Revenue Claiming

README.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@ Batch calling functions is supported both natively and through the `Multicall3`
3636

3737
### Deployed Contracts
3838

39-
[![Version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fstoryprotocol%2Fprotocol-periphery-v1%2Fmain%2Fpackage.json&query=%24.version&label=PoC%20Periphery)](https://github.com/storyprotocol/protocol-periphery-v1/releases) contracts are deployed on Story's Iliad Testnet at the following addresses:
39+
[![Version](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fstoryprotocol%2Fprotocol-periphery-v1%2Fmain%2Fpackage.json&query=%24.version&label=PoC%20Periphery)](https://github.com/storyprotocol/protocol-periphery-v1/releases) contracts are deployed on Story Testnet at the following addresses:
4040

4141
```json
4242
{
43-
"DerivativeWorkflows": "0xC022C70DA8c23Ae8e36B3de9039Ed24E4E42a127",
44-
"GroupingWorkflows": "0x426fF4F7E9Debe565F5Fe6F53334Ad3982295E20",
45-
"LicenseAttachmentWorkflows": "0x1B95144b62B4566501482e928aa435Dd205fE71B",
46-
"RegistrationWorkflows": "0xF403fcCAAE6C503D0CC1D25904A0B2cCd5B96C6F",
47-
"RoyaltyWorkflows": "0xc757921ee0f7c8E935d44BFBDc2602786e0eda6C",
48-
"SPGNFTBeacon": "0x02324ca8f369abB445F50c4cE79e956e49AC75d8",
49-
"SPGNFTImpl": "0xC8E4376Da033cE244027B03f9b94dc0d7005D67E"
43+
"DerivativeWorkflows": "0xE0e1d222E024bF14B1e0A4b48fC6e6B6F8ebaEB3",
44+
"GroupingWorkflows": "0xfAa9CCd49DCDfB9a950CBF036cD6082e623a6bcC",
45+
"LicenseAttachmentWorkflows": "0xC7A40c41Cbe44C6B326447081877d69F98127C59",
46+
"RegistrationWorkflows": "0x8D8E0d24E7B6420d3209EfA185Fa451c95D8316A",
47+
"RoyaltyWorkflows": "0x19E435b1C0857375F9423C8ba508203054CE1d9F",
48+
"SPGNFTBeacon": "0xD753c698aE69194C851d60BF759d537DE7477696",
49+
"SPGNFTImpl": "0xA12e66a4429c9B7f38893c9b00E80646e0e76446"
5050
}
5151
```
5252

deploy-out/deployment-1516.json

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"main": {
3+
"DerivativeWorkflows": "0xE0e1d222E024bF14B1e0A4b48fC6e6B6F8ebaEB3",
4+
"GroupingWorkflows": "0xfAa9CCd49DCDfB9a950CBF036cD6082e623a6bcC",
5+
"LicenseAttachmentWorkflows": "0xC7A40c41Cbe44C6B326447081877d69F98127C59",
6+
"RegistrationWorkflows": "0x8D8E0d24E7B6420d3209EfA185Fa451c95D8316A",
7+
"RoyaltyWorkflows": "0x19E435b1C0857375F9423C8ba508203054CE1d9F",
8+
"SPGNFTBeacon": "0xD753c698aE69194C851d60BF759d537DE7477696",
9+
"SPGNFTImpl": "0xA12e66a4429c9B7f38893c9b00E80646e0e76446"
10+
}
11+
}

docs/WORKFLOWS.md

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
- Registers a group IP → Attaches the given license terms to the group IP
4242
- `registerGroupAndAttachLicenseAndAddIps`:
4343
- Registers a group IP → Attaches the given license terms to the group IP → Adds existing IPs to the group IP
44+
- `collectRoyaltiesAndClaimReward`:
45+
- Collects revenue tokens to the group's reward pool → Distributes the rewards to each given member IP's royalty vault
4446

4547
### [Royalty Workflows](../contracts/interfaces/workflows/IRoyaltyWorkflows.sol)
4648

package.json

+45-45
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
{
2-
"name": "@story-protocol/protocol-periphery",
3-
"version": "v1.2.3",
4-
"description": "Story Proof-of-Creativity protocol periphery smart contracts",
5-
"main": "",
6-
"directories": {
7-
"lib": "lib",
8-
"test": "test"
9-
},
10-
"scripts": {
11-
"lint": "npm run lint:js && npm run lint:sol",
12-
"lint:fix": "npm run lint:js:fix && npm run lint:sol:fix",
13-
"lint:js": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --check && eslint --ignore-path .gitignore .",
14-
"lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint --ignore-path .gitignore . --fix",
15-
"lint:sol": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --check && solhint '{contracts,test}/**/*.sol'",
16-
"lint:sol:fix": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --write",
17-
"solhint": "solhint '{contracts,test}/**/*.sol'",
18-
"test": "npx hardhat test",
19-
"prepare": "husky install"
20-
},
21-
"author": "StoryProtocol",
22-
"license": "MIT",
23-
"devDependencies": {
24-
"chai": "^5.0.3",
25-
"dotenv": "^16.4.1",
26-
"eslint": "^8.56.0",
27-
"eslint-plugin-prettier": "^5.1.3",
28-
"ethers": "^6.10.0",
29-
"husky": "^9.0.11",
30-
"mocha": "^10.2.0",
31-
"prettier": "^3.0.0",
32-
"prettier-plugin-solidity": "^1.1.3",
33-
"solhint": "^4.1.1",
34-
"solhint-plugin-prettier": "^0.1.0",
35-
"solidity-coverage": "^0.8.6",
36-
"ts-node": "^10.9.2",
37-
"typechain": "^8.3.2"
38-
},
39-
"dependencies": {
40-
"@openzeppelin/contracts": "5.0.1",
41-
"@openzeppelin/contracts-upgradeable": "5.0.1",
42-
"@story-protocol/create3-deployer": "github:storyprotocol/create3-deployer#main",
43-
"@story-protocol/protocol-core": "github:storyprotocol/protocol-core-v1#main",
44-
"erc6551": "^0.3.1",
45-
"solady": "^0.0.192"
46-
}
2+
"name": "@story-protocol/protocol-periphery",
3+
"version": "v1.2.4",
4+
"description": "Story Proof-of-Creativity protocol periphery smart contracts",
5+
"main": "",
6+
"directories": {
7+
"lib": "lib",
8+
"test": "test"
9+
},
10+
"scripts": {
11+
"lint": "npm run lint:js && npm run lint:sol",
12+
"lint:fix": "npm run lint:js:fix && npm run lint:sol:fix",
13+
"lint:js": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --check && eslint --ignore-path .gitignore .",
14+
"lint:js:fix": "prettier --log-level warn --ignore-path .gitignore '**/*.{js,ts}' --write && eslint --ignore-path .gitignore . --fix",
15+
"lint:sol": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --check && solhint '{contracts,test}/**/*.sol'",
16+
"lint:sol:fix": "prettier --log-level warn --ignore-path .gitignore '{contracts,test}/**/*.sol' --write",
17+
"solhint": "solhint '{contracts,test}/**/*.sol'",
18+
"test": "npx hardhat test",
19+
"prepare": "husky install"
20+
},
21+
"author": "StoryProtocol",
22+
"license": "MIT",
23+
"devDependencies": {
24+
"chai": "^5.0.3",
25+
"dotenv": "^16.4.1",
26+
"eslint": "^8.56.0",
27+
"eslint-plugin-prettier": "^5.1.3",
28+
"ethers": "^6.10.0",
29+
"husky": "^9.0.11",
30+
"mocha": "^10.2.0",
31+
"prettier": "^3.0.0",
32+
"prettier-plugin-solidity": "^1.1.3",
33+
"solhint": "^4.1.1",
34+
"solhint-plugin-prettier": "^0.1.0",
35+
"solidity-coverage": "^0.8.6",
36+
"ts-node": "^10.9.2",
37+
"typechain": "^8.3.2"
38+
},
39+
"dependencies": {
40+
"@openzeppelin/contracts": "5.0.1",
41+
"@openzeppelin/contracts-upgradeable": "5.0.1",
42+
"@story-protocol/create3-deployer": "github:storyprotocol/create3-deployer#main",
43+
"@story-protocol/protocol-core": "github:storyprotocol/protocol-core-v1#v1.2.3",
44+
"erc6551": "^0.3.1",
45+
"solady": "^0.0.192"
46+
}
4747
}

script/deployment/Main.s.sol

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DeployHelper } from "../utils/DeployHelper.sol";
77

88
contract Main is DeployHelper {
99
address internal CREATE3_DEPLOYER = 0x384a891dFDE8180b054f04D66379f16B7a678Ad6;
10-
uint256 private constant CREATE3_DEFAULT_SEED = 12;
10+
uint256 private constant CREATE3_DEFAULT_SEED = 8;
1111

1212
constructor() DeployHelper(CREATE3_DEPLOYER){}
1313

@@ -17,7 +17,7 @@ contract Main is DeployHelper {
1717
/// --verify --verifier=$VERIFIER_NAME --verifier-url=$VERIFIER_URL
1818
///
1919
/// For detailed examples, see the documentation in `../../docs/DEPLOY_UPGRADE.md`.
20-
function run() public virtual override {
20+
function run() public virtual {
2121
_run(CREATE3_DEFAULT_SEED);
2222
}
2323

script/deployment/StoryNFT.s.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ contract StoryNFT is DeployHelper {
1010
uint256 private constant CREATE3_DEFAULT_SEED = 1234567890;
1111
constructor() DeployHelper(CREATE3_DEPLOYER) {}
1212

13-
function run() public override {
13+
function run() public {
1414
create3SaltSeed = CREATE3_DEFAULT_SEED;
1515
writeDeploys = true;
1616

script/utils/BroadcastManager.s.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ contract BroadcastManager is Script {
1414
deployer = vm.envAddress("MAINNET_DEPLOYER_ADDRESS");
1515
multisig = vm.envAddress("MAINNET_MULTISIG_ADDRESS");
1616
vm.startBroadcast(deployerPrivateKey);
17-
} else if (block.chainid == 1513 || block.chainid == 11155111) {
17+
} else if (block.chainid == 1513 || block.chainid == 1516 || block.chainid == 11155111) {
1818
deployerPrivateKey = vm.envUint("TESTNET_PRIVATEKEY");
1919
deployer = vm.envAddress("TESTNET_DEPLOYER_ADDRESS");
2020
multisig = vm.envAddress("TESTNET_MULTISIG_ADDRESS");

script/utils/DeployHelper.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ contract DeployHelper is
141141
writeDeploys = writeDeploys_;
142142

143143
// This will run OZ storage layout check for all contracts. Requires --ffi flag.
144-
if (runStorageLayoutCheck) super.run();
144+
if (runStorageLayoutCheck) _validate(); // StorageLayoutChecker.s.sol
145145

146146
if (isTest) {
147147
// local test deployment

script/utils/StoryProtocolCoreAddressManager.sol

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ contract StoryProtocolCoreAddressManager is Script {
2121
address internal groupNFTAddr;
2222
address internal royaltyPolicyLAPAddr;
2323
address internal royaltyPolicyLRPAddr;
24+
address internal evenSplitGroupPoolAddr;
2425

2526
function _readStoryProtocolCoreAddresses() internal {
2627
string memory root = vm.projectRoot();
@@ -49,5 +50,6 @@ contract StoryProtocolCoreAddressManager is Script {
4950
groupNFTAddr = json.readAddress(".main.GroupNFT");
5051
royaltyPolicyLAPAddr = json.readAddress(".main.RoyaltyPolicyLAP");
5152
royaltyPolicyLRPAddr = json.readAddress(".main.RoyaltyPolicyLRP");
53+
evenSplitGroupPoolAddr = json.readAddress(".main.EvenSplitGroupPool");
5254
}
5355
}

test/integration/BaseIntegration.t.sol

+3-4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { ILicensingModule } from "@storyprotocol/core/interfaces/modules/licensi
2121
import { IPILicenseTemplate } from "@storyprotocol/core/interfaces/modules/licensing/IPILicenseTemplate.sol";
2222
import { IRoyaltyModule } from "@storyprotocol/core/interfaces/modules/royalty/IRoyaltyModule.sol";
2323
import { MetaTx } from "@storyprotocol/core/lib/MetaTx.sol";
24+
import { MockIPGraph } from "@storyprotocol/test/mocks/MockIPGraph.sol";
2425

2526
// contracts
2627
import { DerivativeWorkflows } from "../../contracts/workflows/DerivativeWorkflows.sol";
@@ -57,10 +58,7 @@ contract BaseIntegration is Test, Script, StoryProtocolCoreAddressManager, Story
5758
RoyaltyWorkflows internal royaltyWorkflows;
5859

5960
/// @dev Story USD
60-
SUSD internal StoryUSD = SUSD(0x91f6F05B08c16769d3c85867548615d270C42fC7);
61-
62-
/// @dev Even split group reward pool
63-
address internal groupRewardPool = 0xA1dB7AB14900Cd9eF9A7eBA931A206250F403a14;
61+
SUSD internal StoryUSD = SUSD(0x6058bB8A2a51a8e63Bd18cE897D08616331C25a7);
6462

6563
/// @dev Test data
6664
string internal testCollectionName;
@@ -79,6 +77,7 @@ contract BaseIntegration is Test, Script, StoryProtocolCoreAddressManager, Story
7977
}
8078

8179
function run() public virtual {
80+
vm.etch(address(0x0101), address(new MockIPGraph()).code);
8281
_setUp();
8382
}
8483

test/integration/workflows/GroupingIntegration.t.sol

+3-3
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ contract GroupingIntegration is BaseIntegration {
153153
logTest("test_GroupingIntegration_registerGroupAndAttachLicense")
154154
{
155155
address newGroupId = groupingWorkflows.registerGroupAndAttachLicense({
156-
groupPool: groupRewardPool,
156+
groupPool: evenSplitGroupPoolAddr,
157157
licenseTemplate: testLicenseTemplate,
158158
licenseTermsId: testLicenseTermsId
159159
});
@@ -172,7 +172,7 @@ contract GroupingIntegration is BaseIntegration {
172172
logTest("test_GroupingIntegration_registerGroupAndAttachLicenseAndAddIps")
173173
{
174174
address newGroupId = groupingWorkflows.registerGroupAndAttachLicenseAndAddIps({
175-
groupPool: groupRewardPool,
175+
groupPool: evenSplitGroupPoolAddr,
176176
ipIds: ipIds,
177177
licenseTemplate: testLicenseTemplate,
178178
licenseTermsId: testLicenseTermsId
@@ -348,7 +348,7 @@ contract GroupingIntegration is BaseIntegration {
348348

349349
// setup a group
350350
{
351-
groupId = groupingModule.registerGroup(groupRewardPool);
351+
groupId = groupingModule.registerGroup(evenSplitGroupPoolAddr);
352352
LicensingHelper.attachLicenseTerms(
353353
groupId,
354354
licensingModuleAddr,

yarn.lock

+25-13
Original file line numberDiff line numberDiff line change
@@ -439,9 +439,9 @@
439439
version "0.0.0"
440440
resolved "https://codeload.github.com/storyprotocol/create3-deployer/tar.gz/094147bda866490dd1c3e8261bb3dfee65e7af54"
441441

442-
"@story-protocol/protocol-core@github:storyprotocol/protocol-core-v1#main":
442+
"@story-protocol/protocol-core@github:storyprotocol/protocol-core-v1#v1.2.3":
443443
version "1.1.0"
444-
resolved "https://codeload.github.com/storyprotocol/protocol-core-v1/tar.gz/71d9dd0b3df59f6cf19cb18244946dec52bc6502"
444+
resolved "https://codeload.github.com/storyprotocol/protocol-core-v1/tar.gz/58f023cb4a5ee81617bc8a02a3d2087e125e5a36"
445445
dependencies:
446446
"@openzeppelin/contracts" "5.0.2"
447447
"@openzeppelin/contracts-upgradeable" "5.0.2"
@@ -494,7 +494,14 @@
494494
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
495495
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
496496

497-
"@types/node@*", "@types/node@22.7.5":
497+
"@types/node@*":
498+
version "22.7.7"
499+
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.7.tgz#6cd9541c3dccb4f7e8b141b491443f4a1570e307"
500+
integrity sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==
501+
dependencies:
502+
undici-types "~6.19.2"
503+
504+
"@types/node@22.7.5":
498505
version "22.7.5"
499506
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b"
500507
integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==
@@ -534,9 +541,9 @@ acorn-walk@^8.1.1:
534541
acorn "^8.11.0"
535542

536543
acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0:
537-
version "8.12.1"
538-
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
539-
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
544+
version "8.13.0"
545+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3"
546+
integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==
540547

541548
aes-js@4.0.0-beta.5:
542549
version "4.0.0-beta.5"
@@ -1205,9 +1212,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
12051212
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
12061213

12071214
fast-uri@^3.0.1:
1208-
version "3.0.2"
1209-
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024"
1210-
integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==
1215+
version "3.0.3"
1216+
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241"
1217+
integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==
12111218

12121219
fastq@^1.6.0:
12131220
version "1.17.1"
@@ -2037,9 +2044,9 @@ pathval@^2.0.0:
20372044
integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
20382045

20392046
picocolors@^1.0.0:
2040-
version "1.1.0"
2041-
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
2042-
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
2047+
version "1.1.1"
2048+
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
2049+
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
20432050

20442051
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
20452052
version "2.3.1"
@@ -2527,11 +2534,16 @@ ts-node@^10.9.2:
25272534
v8-compile-cache-lib "^3.0.1"
25282535
yn "3.1.1"
25292536

2530-
tslib@2.7.0, tslib@^2.6.2:
2537+
tslib@2.7.0:
25312538
version "2.7.0"
25322539
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
25332540
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
25342541

2542+
tslib@^2.6.2:
2543+
version "2.8.0"
2544+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b"
2545+
integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==
2546+
25352547
type-check@^0.4.0, type-check@~0.4.0:
25362548
version "0.4.0"
25372549
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"

0 commit comments

Comments
 (0)