@dcl/content-validator 4.3.0 → 4.3.1-4346672765.commit-51a4f9f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -12
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +60 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/ADR45.d.ts +2 -2
- package/dist/validations/ADR45.d.ts.map +1 -1
- package/dist/validations/ADR45.js +3 -3
- package/dist/validations/ADR45.js.map +1 -1
- package/dist/validations/access/common/items.d.ts +10 -0
- package/dist/validations/access/common/items.d.ts.map +1 -0
- package/dist/validations/access/common/items.js +94 -0
- package/dist/validations/access/common/items.js.map +1 -0
- package/dist/validations/access/common/profiles.d.ts +3 -0
- package/dist/validations/access/common/profiles.d.ts.map +1 -0
- package/dist/validations/access/common/profiles.js +28 -0
- package/dist/validations/access/common/profiles.js.map +1 -0
- package/dist/validations/access/common/stores.d.ts +7 -0
- package/dist/validations/access/common/stores.d.ts.map +1 -0
- package/dist/validations/access/common/stores.js +35 -0
- package/dist/validations/access/common/stores.js.map +1 -0
- package/dist/validations/access/index.d.ts +8 -0
- package/dist/validations/access/index.d.ts.map +1 -0
- package/dist/validations/access/index.js +30 -0
- package/dist/validations/access/index.js.map +1 -0
- package/dist/validations/access/on-chain/client.d.ts +14 -0
- package/dist/validations/access/on-chain/client.d.ts.map +1 -0
- package/dist/validations/access/on-chain/client.js +177 -0
- package/dist/validations/access/on-chain/client.js.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.js +66 -0
- package/dist/validations/access/on-chain/collection-asset.js.map +1 -0
- package/dist/validations/access/on-chain/index.d.ts +4 -0
- package/dist/validations/access/on-chain/index.d.ts.map +1 -0
- package/dist/validations/access/on-chain/index.js +23 -0
- package/dist/validations/access/on-chain/index.js.map +1 -0
- package/dist/validations/access/on-chain/profiles.d.ts +5 -0
- package/dist/validations/access/on-chain/profiles.d.ts.map +1 -0
- package/dist/validations/access/on-chain/profiles.js +84 -0
- package/dist/validations/access/on-chain/profiles.js.map +1 -0
- package/dist/validations/access/on-chain/scenes.d.ts +7 -0
- package/dist/validations/access/on-chain/scenes.d.ts.map +1 -0
- package/dist/validations/access/on-chain/scenes.js +53 -0
- package/dist/validations/access/on-chain/scenes.js.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.js +53 -0
- package/dist/validations/access/on-chain/third-party-asset.js.map +1 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts +15 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts.map +1 -0
- package/dist/validations/{access-checker/items → access/subgraph}/collection-asset.js +10 -13
- package/dist/validations/access/subgraph/collection-asset.js.map +1 -0
- package/dist/validations/access/subgraph/index.d.ts +4 -0
- package/dist/validations/access/subgraph/index.d.ts.map +1 -0
- package/dist/validations/access/subgraph/index.js +23 -0
- package/dist/validations/access/subgraph/index.js.map +1 -0
- package/dist/validations/access/subgraph/profiles.d.ts +5 -0
- package/dist/validations/access/subgraph/profiles.d.ts.map +1 -0
- package/dist/validations/access/subgraph/profiles.js +84 -0
- package/dist/validations/access/subgraph/profiles.js.map +1 -0
- package/dist/validations/access/subgraph/scenes.d.ts +7 -0
- package/dist/validations/access/subgraph/scenes.d.ts.map +1 -0
- package/dist/validations/access/subgraph/scenes.js +262 -0
- package/dist/validations/access/subgraph/scenes.js.map +1 -0
- package/dist/validations/access/subgraph/the-graph-client.d.ts +10 -0
- package/dist/validations/access/subgraph/the-graph-client.d.ts.map +1 -0
- package/dist/validations/access/subgraph/the-graph-client.js.map +1 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts +3 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts.map +1 -0
- package/dist/validations/{access-checker/items → access/subgraph}/third-party-asset.js +6 -8
- package/dist/validations/access/subgraph/third-party-asset.js.map +1 -0
- package/dist/validations/content.d.ts +6 -10
- package/dist/validations/content.d.ts.map +1 -1
- package/dist/validations/content.js +29 -24
- package/dist/validations/content.js.map +1 -1
- package/dist/validations/entity-structure.d.ts +2 -2
- package/dist/validations/entity-structure.d.ts.map +1 -1
- package/dist/validations/entity-structure.js +3 -3
- package/dist/validations/entity-structure.js.map +1 -1
- package/dist/validations/index.d.ts +2 -18
- package/dist/validations/index.d.ts.map +1 -1
- package/dist/validations/index.js +20 -15
- package/dist/validations/index.js.map +1 -1
- package/dist/validations/ipfs-hashing.d.ts +1 -2
- package/dist/validations/ipfs-hashing.d.ts.map +1 -1
- package/dist/validations/ipfs-hashing.js +2 -2
- package/dist/validations/ipfs-hashing.js.map +1 -1
- package/dist/validations/items/emotes.d.ts +4 -4
- package/dist/validations/items/emotes.d.ts.map +1 -1
- package/dist/validations/items/emotes.js +6 -6
- package/dist/validations/items/emotes.js.map +1 -1
- package/dist/validations/items/items.d.ts +4 -4
- package/dist/validations/items/items.d.ts.map +1 -1
- package/dist/validations/items/items.js +67 -52
- package/dist/validations/items/items.js.map +1 -1
- package/dist/validations/items/wearables.d.ts +3 -3
- package/dist/validations/items/wearables.d.ts.map +1 -1
- package/dist/validations/items/wearables.js +4 -4
- package/dist/validations/items/wearables.js.map +1 -1
- package/dist/validations/metadata-schema.d.ts +10 -1
- package/dist/validations/metadata-schema.d.ts.map +1 -1
- package/dist/validations/metadata-schema.js +9 -6
- package/dist/validations/metadata-schema.js.map +1 -1
- package/dist/validations/profile.d.ts +7 -10
- package/dist/validations/profile.d.ts.map +1 -1
- package/dist/validations/profile.js +57 -37
- package/dist/validations/profile.js.map +1 -1
- package/dist/validations/scene.d.ts +2 -2
- package/dist/validations/scene.d.ts.map +1 -1
- package/dist/validations/scene.js +8 -7
- package/dist/validations/scene.js.map +1 -1
- package/dist/validations/signature.d.ts +2 -2
- package/dist/validations/signature.d.ts.map +1 -1
- package/dist/validations/signature.js +8 -6
- package/dist/validations/signature.js.map +1 -1
- package/dist/validations/size.d.ts +2 -2
- package/dist/validations/size.d.ts.map +1 -1
- package/dist/validations/size.js +31 -29
- package/dist/validations/size.js.map +1 -1
- package/dist/validations/validations.d.ts.map +1 -1
- package/dist/validations/validations.js +6 -5
- package/dist/validations/validations.js.map +1 -1
- package/package.json +7 -4
- package/dist/the-graph-client/the-graph-client.d.ts +0 -10
- package/dist/the-graph-client/the-graph-client.d.ts.map +0 -1
- package/dist/the-graph-client/the-graph-client.js.map +0 -1
- package/dist/validations/access-checker/access.d.ts +0 -7
- package/dist/validations/access-checker/access.d.ts.map +0 -1
- package/dist/validations/access-checker/access.js +0 -42
- package/dist/validations/access-checker/access.js.map +0 -1
- package/dist/validations/access-checker/emotes.d.ts +0 -3
- package/dist/validations/access-checker/emotes.d.ts.map +0 -1
- package/dist/validations/access-checker/emotes.js +0 -12
- package/dist/validations/access-checker/emotes.js.map +0 -1
- package/dist/validations/access-checker/items/collection-asset.d.ts +0 -15
- package/dist/validations/access-checker/items/collection-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/collection-asset.js.map +0 -1
- package/dist/validations/access-checker/items/items.d.ts +0 -11
- package/dist/validations/access-checker/items/items.d.ts.map +0 -1
- package/dist/validations/access-checker/items/items.js +0 -67
- package/dist/validations/access-checker/items/items.js.map +0 -1
- package/dist/validations/access-checker/items/off-chain-asset.d.ts +0 -3
- package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/off-chain-asset.js +0 -17
- package/dist/validations/access-checker/items/off-chain-asset.js.map +0 -1
- package/dist/validations/access-checker/items/third-party-asset.d.ts +0 -3
- package/dist/validations/access-checker/items/third-party-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/third-party-asset.js.map +0 -1
- package/dist/validations/access-checker/profiles.d.ts +0 -7
- package/dist/validations/access-checker/profiles.d.ts.map +0 -1
- package/dist/validations/access-checker/profiles.js +0 -114
- package/dist/validations/access-checker/profiles.js.map +0 -1
- package/dist/validations/access-checker/scenes.d.ts +0 -7
- package/dist/validations/access-checker/scenes.d.ts.map +0 -1
- package/dist/validations/access-checker/scenes.js +0 -261
- package/dist/validations/access-checker/scenes.js.map +0 -1
- package/dist/validations/access-checker/stores.d.ts +0 -7
- package/dist/validations/access-checker/stores.d.ts.map +0 -1
- package/dist/validations/access-checker/stores.js +0 -33
- package/dist/validations/access-checker/stores.js.map +0 -1
- package/dist/validations/access-checker/wearables.d.ts +0 -3
- package/dist/validations/access-checker/wearables.d.ts.map +0 -1
- package/dist/validations/access-checker/wearables.js +0 -14
- package/dist/validations/access-checker/wearables.js.map +0 -1
- /package/dist/{the-graph-client → validations/access/subgraph}/the-graph-client.js +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createV1andV2collectionAssetValidateFn = void 0;
|
|
4
4
|
const hashing_1 = require("@dcl/hashing");
|
|
5
5
|
const types_1 = require("../../../types");
|
|
6
6
|
const L1_NETWORKS = ['mainnet', 'kovan', 'rinkeby', 'goerli'];
|
|
7
7
|
const L2_NETWORKS = ['matic', 'mumbai'];
|
|
8
|
-
async function getCollectionItems(
|
|
8
|
+
async function getCollectionItems(subgraph, collection, itemId, block) {
|
|
9
9
|
const query = `
|
|
10
10
|
query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
|
|
11
11
|
collections(where:{ id: $collection }, block: { number: $block }) {
|
|
@@ -40,10 +40,10 @@ async function getCollectionItems(components, subgraph, collection, itemId, bloc
|
|
|
40
40
|
committee: result.accounts.map(({ id }) => id.toLowerCase())
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
async function hasPermission(
|
|
43
|
+
async function hasPermission(subgraph, collection, itemId, block, entity, logger) {
|
|
44
44
|
try {
|
|
45
45
|
const { content, metadata } = entity;
|
|
46
|
-
const permissions = await getCollectionItems(
|
|
46
|
+
const permissions = await getCollectionItems(subgraph, collection, itemId, block);
|
|
47
47
|
const ethAddressLowercase = entity.ethAddress.toLowerCase();
|
|
48
48
|
if (!!permissions.contentHash) {
|
|
49
49
|
const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
|
|
@@ -93,8 +93,7 @@ async function checkCollectionAccess(components, blocksSubgraph, collectionsSubg
|
|
|
93
93
|
// It could happen that the subgraph hasn't synced yet, so someone who just lost access still managed to make a deployment. The problem would be that when other catalysts perform
|
|
94
94
|
// the same check, the subgraph might have synced and the deployment is no longer valid. So, in order to prevent inconsistencies between catalysts, we will allow all deployments that
|
|
95
95
|
// have access now, or had access 5 minutes ago.
|
|
96
|
-
const hasPermissionOnBlock = async (blockNumber) => !!blockNumber &&
|
|
97
|
-
(await hasPermission(components, collectionsSubgraph, collection, itemId, blockNumber, entity, logger));
|
|
96
|
+
const hasPermissionOnBlock = async (blockNumber) => !!blockNumber && (await hasPermission(collectionsSubgraph, collection, itemId, blockNumber, entity, logger));
|
|
98
97
|
return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
|
|
99
98
|
(await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
|
|
100
99
|
}
|
|
@@ -103,8 +102,8 @@ async function checkCollectionAccess(components, blocksSubgraph, collectionsSubg
|
|
|
103
102
|
return false;
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
|
-
|
|
107
|
-
async
|
|
105
|
+
function createV1andV2collectionAssetValidateFn(components) {
|
|
106
|
+
return async function validateFn(asset, deployment) {
|
|
108
107
|
const { externalCalls, subGraphs, logs } = components;
|
|
109
108
|
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
110
109
|
const logger = logs.getLogger('collection asset access validation');
|
|
@@ -131,9 +130,7 @@ exports.v1andV2collectionAssetValidation = {
|
|
|
131
130
|
}
|
|
132
131
|
}
|
|
133
132
|
return types_1.OK;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
};
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
exports.createV1andV2collectionAssetValidateFn = createV1andV2collectionAssetValidateFn;
|
|
139
136
|
//# sourceMappingURL=collection-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection-asset.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/collection-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EntityType } from '@dcl/schemas';
|
|
2
|
+
import { SubgraphAccessCheckerComponents, ValidateFn } from '../../../types';
|
|
3
|
+
export declare function createSubgraphAccessCheckValidateFns(components: SubgraphAccessCheckerComponents): Record<EntityType, ValidateFn>;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQ5E,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,+BAA+B,GAC1C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAchC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSubgraphAccessCheckValidateFns = void 0;
|
|
4
|
+
const schemas_1 = require("@dcl/schemas");
|
|
5
|
+
const items_1 = require("../common/items");
|
|
6
|
+
const stores_1 = require("../common/stores");
|
|
7
|
+
const collection_asset_1 = require("./collection-asset");
|
|
8
|
+
const profiles_1 = require("./profiles");
|
|
9
|
+
const scenes_1 = require("./scenes");
|
|
10
|
+
const third_party_asset_1 = require("./third-party-asset");
|
|
11
|
+
function createSubgraphAccessCheckValidateFns(components) {
|
|
12
|
+
const v1andV2collectionAssetValidateFn = (0, collection_asset_1.createV1andV2collectionAssetValidateFn)(components);
|
|
13
|
+
const thirdPartyAssetValidateFn = (0, third_party_asset_1.createThirdPartyAssetValidateFn)(components);
|
|
14
|
+
return {
|
|
15
|
+
[schemas_1.EntityType.PROFILE]: (0, profiles_1.createProfileValidateFn)(components),
|
|
16
|
+
[schemas_1.EntityType.SCENE]: (0, scenes_1.createSceneValidateFn)(components),
|
|
17
|
+
[schemas_1.EntityType.WEARABLE]: (0, items_1.createWearableValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn),
|
|
18
|
+
[schemas_1.EntityType.STORE]: (0, stores_1.createStoreValidateFn)(components),
|
|
19
|
+
[schemas_1.EntityType.EMOTE]: (0, items_1.createEmoteValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.createSubgraphAccessCheckValidateFns = createSubgraphAccessCheckValidateFns;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,2CAAiF;AACjF,6CAAwD;AACxD,yDAA2E;AAC3E,yCAAoD;AACpD,qCAAgD;AAChD,2DAAqE;AAErE,SAAgB,oCAAoC,CAClD,UAA2C;IAE3C,MAAM,gCAAgC,GAAG,IAAA,yDAAsC,EAAC,UAAU,CAAC,CAAA;IAC3F,MAAM,yBAAyB,GAAG,IAAA,mDAA+B,EAAC,UAAU,CAAC,CAAA;IAC7E,OAAO;QACL,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,kCAAuB,EAAC,UAAU,CAAC;QACzD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,IAAA,gCAAwB,EAC7C,UAAU,EACV,gCAAgC,EAChC,yBAAyB,CAC1B;QACD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,gCAAgC,EAAE,yBAAyB,CAAC;KACnH,CAAA;AACH,CAAC;AAhBD,oFAgBC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SubgraphAccessCheckerComponents, ValidateFn } from '../../../types';
|
|
2
|
+
export declare function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
|
|
3
|
+
export declare function createItemOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
|
|
4
|
+
export declare function createProfileValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'theGraphClient' | 'externalCalls'>): ValidateFn;
|
|
5
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,+BAA+B,EAC/B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAMvB,wBAAgB,8BAA8B,CAAC,EAC7C,aAAa,EACb,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAAG,UAAU,CAkBxF;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,aAAa,EACb,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAAG,UAAU,CAmExF;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,gBAAgB,GAAG,eAAe,CAAC,cAOtF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createProfileValidateFn = exports.createItemOwnershipValidateFn = exports.createNamesOwnershipValidateFn = void 0;
|
|
4
|
+
const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
5
|
+
const types_1 = require("../../../types");
|
|
6
|
+
const profile_1 = require("../../profile");
|
|
7
|
+
const timestamps_1 = require("../../timestamps");
|
|
8
|
+
const validations_1 = require("../../validations");
|
|
9
|
+
const profiles_1 = require("../common/profiles");
|
|
10
|
+
function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }) {
|
|
11
|
+
async function validateFn(deployment) {
|
|
12
|
+
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
13
|
+
const names = deployment.entity.metadata.avatars
|
|
14
|
+
.filter((avatar) => avatar.hasClaimedName)
|
|
15
|
+
.map((avatar) => avatar.name)
|
|
16
|
+
.filter((name) => name && name.trim().length > 0);
|
|
17
|
+
const namesCheckResult = await theGraphClient.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
|
|
18
|
+
if (!namesCheckResult.result)
|
|
19
|
+
return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
|
|
20
|
+
return types_1.OK;
|
|
21
|
+
}
|
|
22
|
+
return (0, validations_1.validateAfterADR75)(validateFn);
|
|
23
|
+
}
|
|
24
|
+
exports.createNamesOwnershipValidateFn = createNamesOwnershipValidateFn;
|
|
25
|
+
function createItemOwnershipValidateFn({ externalCalls, theGraphClient }) {
|
|
26
|
+
async function sanitizeUrn(urn) {
|
|
27
|
+
if (!urn.startsWith('dcl://')) {
|
|
28
|
+
return urn;
|
|
29
|
+
}
|
|
30
|
+
const parsed = await (0, urn_resolver_1.parseUrn)(urn);
|
|
31
|
+
return parsed?.uri?.toString();
|
|
32
|
+
}
|
|
33
|
+
async function allOnChainWearableUrns(entity) {
|
|
34
|
+
const allWearablesInProfilePromises = [];
|
|
35
|
+
for (const avatar of entity.metadata.avatars) {
|
|
36
|
+
for (const wearableId of avatar.avatar.wearables) {
|
|
37
|
+
const isBaseAvatar = wearableId.includes('base-avatars');
|
|
38
|
+
if (!isBaseAvatar && !(0, profile_1.isOldEmote)(wearableId)) {
|
|
39
|
+
allWearablesInProfilePromises.push(sanitizeUrn(wearableId));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return (await Promise.all(allWearablesInProfilePromises)).filter((wearableId) => !!wearableId);
|
|
44
|
+
}
|
|
45
|
+
async function allEmoteUrns(entity) {
|
|
46
|
+
const allEmotesInProfilePromises = [];
|
|
47
|
+
const allAvatars = entity.metadata?.avatars ?? [];
|
|
48
|
+
for (const avatar of allAvatars) {
|
|
49
|
+
const allEmotes = avatar.avatar.emotes ?? [];
|
|
50
|
+
for (const { urn } of allEmotes) {
|
|
51
|
+
if (!(0, profile_1.isOldEmote)(urn)) {
|
|
52
|
+
allEmotesInProfilePromises.push(sanitizeUrn(urn));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return (await Promise.all(allEmotesInProfilePromises)).filter((wearableId) => !!wearableId);
|
|
57
|
+
}
|
|
58
|
+
return async function validateFn(deployment) {
|
|
59
|
+
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
60
|
+
const depoymentTimestamp = deployment.entity.timestamp;
|
|
61
|
+
const itemUrns = [];
|
|
62
|
+
if (depoymentTimestamp >= timestamps_1.ADR_75_TIMESTAMP) {
|
|
63
|
+
for (const urn of await allOnChainWearableUrns(deployment.entity)) {
|
|
64
|
+
itemUrns.push(urn);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (depoymentTimestamp >= timestamps_1.ADR_74_TIMESTAMP) {
|
|
68
|
+
for (const urn of await allEmoteUrns(deployment.entity)) {
|
|
69
|
+
itemUrns.push(urn);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const itemsOwnershipResult = await theGraphClient.ownsItemsAtTimestamp(ethAddress, itemUrns, deployment.entity.timestamp);
|
|
73
|
+
if (!itemsOwnershipResult.result) {
|
|
74
|
+
return (0, types_1.validationFailed)(`The following items (${itemsOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
|
|
75
|
+
}
|
|
76
|
+
return types_1.OK;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.createItemOwnershipValidateFn = createItemOwnershipValidateFn;
|
|
80
|
+
function createProfileValidateFn(components) {
|
|
81
|
+
return (0, validations_1.validateAll)((0, profiles_1.createPointerValidateFn)(components), createNamesOwnershipValidateFn(components), createItemOwnershipValidateFn(components));
|
|
82
|
+
}
|
|
83
|
+
exports.createProfileValidateFn = createProfileValidateFn;
|
|
84
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DeploymentToValidate, SubgraphAccessCheckerComponents, ValidationResponse } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the given address has access to the given parcel at the given timestamp.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSceneValidateFn({ externalCalls, subGraphs, logs }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'logs' | 'subGraphs'>): (deployment: DeploymentToValidate) => Promise<ValidationResponse>;
|
|
7
|
+
//# sourceMappingURL=scenes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAGpB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AAgCvB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,SAAS,EACT,IAAI,EACL,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC,gBAKjC,oBAAoB,KAAG,QAAQ,kBAAkB,CAAC,CAkShG"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createSceneValidateFn = void 0;
|
|
7
|
+
const ms_1 = __importDefault(require("ms"));
|
|
8
|
+
const types_1 = require("../../../types");
|
|
9
|
+
/**
|
|
10
|
+
* Checks if the given address has access to the given parcel at the given timestamp.
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
function createSceneValidateFn({ externalCalls, subGraphs, logs }) {
|
|
14
|
+
const logger = logs.getLogger('scenes access validator');
|
|
15
|
+
const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
|
|
16
|
+
return async function validateFn(deployment) {
|
|
17
|
+
const getAuthorizations = async (owner, operator, timestamp) => {
|
|
18
|
+
const query = `
|
|
19
|
+
query GetAuthorizations($owner: String!, $operator: String!, $timestamp: Int!) {
|
|
20
|
+
authorizations(
|
|
21
|
+
where: {
|
|
22
|
+
owner: $owner,
|
|
23
|
+
operator: $operator,
|
|
24
|
+
createdAt_lte: $timestamp
|
|
25
|
+
},
|
|
26
|
+
orderBy: timestamp,
|
|
27
|
+
orderDirection: desc
|
|
28
|
+
) {
|
|
29
|
+
type
|
|
30
|
+
isApproved
|
|
31
|
+
}
|
|
32
|
+
}`;
|
|
33
|
+
const variables = {
|
|
34
|
+
owner,
|
|
35
|
+
operator,
|
|
36
|
+
timestamp: Math.floor(timestamp / 1000) // js(ms) -> UNIX(s)
|
|
37
|
+
};
|
|
38
|
+
try {
|
|
39
|
+
return (await subGraphs.L1.landManager.query(query, variables)).authorizations;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.error(`Error fetching authorizations for ${owner}`);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const getEstate = async (estateId, timestamp) => {
|
|
47
|
+
/**
|
|
48
|
+
* You can use `owner`, `operator` and `updateOperator` to check the current value for that estate.
|
|
49
|
+
* Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
|
|
50
|
+
* For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
|
|
51
|
+
*/
|
|
52
|
+
const query = `
|
|
53
|
+
query GetEstate($estateId: String!, $timestamp: Int!) {
|
|
54
|
+
estates(where:{ id: $estateId }) {
|
|
55
|
+
id
|
|
56
|
+
owners(
|
|
57
|
+
where: { createdAt_lte: $timestamp },
|
|
58
|
+
orderBy: timestamp,
|
|
59
|
+
orderDirection: desc,
|
|
60
|
+
first: 1
|
|
61
|
+
) {
|
|
62
|
+
address
|
|
63
|
+
}
|
|
64
|
+
operators(
|
|
65
|
+
where: { createdAt_lte: $timestamp },
|
|
66
|
+
orderBy: timestamp,
|
|
67
|
+
orderDirection: desc,
|
|
68
|
+
first: 1
|
|
69
|
+
) {
|
|
70
|
+
address
|
|
71
|
+
}
|
|
72
|
+
updateOperators(
|
|
73
|
+
where: { createdAt_lte: $timestamp },
|
|
74
|
+
orderBy: timestamp,
|
|
75
|
+
orderDirection: desc,
|
|
76
|
+
first: 1
|
|
77
|
+
) {
|
|
78
|
+
address
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}`;
|
|
82
|
+
const variables = {
|
|
83
|
+
estateId,
|
|
84
|
+
timestamp: Math.floor(timestamp / 1000) // UNIX
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
return (await subGraphs.L1.landManager.query(query, variables)).estates[0];
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
logger.error(`Error fetching estate (${estateId})`);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const getParcel = async (x, y, timestamp) => {
|
|
95
|
+
/**
|
|
96
|
+
* You can use `owner`, `operator` and `updateOperator` to check the current value for that parcel.
|
|
97
|
+
* Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
|
|
98
|
+
* For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
|
|
99
|
+
*/
|
|
100
|
+
const query = `
|
|
101
|
+
query GetParcel($x: Int!, $y: Int!, $timestamp: Int!) {
|
|
102
|
+
parcels(where:{ x: $x, y: $y }) {
|
|
103
|
+
estates(
|
|
104
|
+
where: { createdAt_lte: $timestamp },
|
|
105
|
+
orderBy: createdAt,
|
|
106
|
+
orderDirection: desc,
|
|
107
|
+
first: 1
|
|
108
|
+
) {
|
|
109
|
+
estateId
|
|
110
|
+
}
|
|
111
|
+
owners(
|
|
112
|
+
where: { createdAt_lte: $timestamp },
|
|
113
|
+
orderBy: timestamp,
|
|
114
|
+
orderDirection: desc,
|
|
115
|
+
first: 1
|
|
116
|
+
) {
|
|
117
|
+
address
|
|
118
|
+
}
|
|
119
|
+
operators(
|
|
120
|
+
where: { createdAt_lte: $timestamp },
|
|
121
|
+
orderBy: timestamp,
|
|
122
|
+
orderDirection: desc,
|
|
123
|
+
first: 1
|
|
124
|
+
) {
|
|
125
|
+
address
|
|
126
|
+
}
|
|
127
|
+
updateOperators(
|
|
128
|
+
where: { createdAt_lte: $timestamp },
|
|
129
|
+
orderBy: timestamp,
|
|
130
|
+
orderDirection: desc,
|
|
131
|
+
first: 1
|
|
132
|
+
) {
|
|
133
|
+
address
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}`;
|
|
137
|
+
const variables = {
|
|
138
|
+
x,
|
|
139
|
+
y,
|
|
140
|
+
timestamp: Math.floor(timestamp / 1000) // UNIX
|
|
141
|
+
};
|
|
142
|
+
try {
|
|
143
|
+
const r = await subGraphs.L1.landManager.query(query, variables);
|
|
144
|
+
if (r.parcels && r.parcels.length)
|
|
145
|
+
return r.parcels[0];
|
|
146
|
+
logger.error(`Error fetching parcel (${x}, ${y}, ${timestamp}): ${JSON.stringify(r)}`);
|
|
147
|
+
throw new Error(`Error fetching parcel (${x}, ${y}), ${timestamp}`);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
logger.error(`Error fetching parcel (${x}, ${y}, ${timestamp})`);
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const hasAccessThroughAuthorizations = async (owner, ethAddress, timestamp) => {
|
|
155
|
+
/* You also get access if you received:
|
|
156
|
+
* - an authorization with isApproved and type Operator, ApprovalForAll or UpdateManager
|
|
157
|
+
* at that time
|
|
158
|
+
*/
|
|
159
|
+
const authorizations = await getAuthorizations(owner.toLowerCase(), ethAddress.toLowerCase(), timestamp);
|
|
160
|
+
const firstOperatorAuthorization = authorizations.find((authorization) => authorization.type === 'Operator');
|
|
161
|
+
const firstApprovalForAllAuthorization = authorizations.find((authorization) => authorization.type === 'ApprovalForAll');
|
|
162
|
+
const firstUpdateManagerAuthorization = authorizations.find((authorization) => authorization.type === 'UpdateManager');
|
|
163
|
+
if (firstOperatorAuthorization?.isApproved ||
|
|
164
|
+
firstApprovalForAllAuthorization?.isApproved ||
|
|
165
|
+
firstUpdateManagerAuthorization?.isApproved) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
};
|
|
170
|
+
const hasAccessThroughFirstLevelAuthorities = async (target, ethAddress) => {
|
|
171
|
+
const firstLevelAuthorities = [...target.owners, ...target.operators, ...target.updateOperators]
|
|
172
|
+
.filter((addressSnapshot) => addressSnapshot.address)
|
|
173
|
+
.map((addressSnapshot) => addressSnapshot.address.toLowerCase());
|
|
174
|
+
return firstLevelAuthorities.includes(ethAddress.toLowerCase());
|
|
175
|
+
};
|
|
176
|
+
const isEstateUpdateAuthorized = async (estateId, timestamp, ethAddress) => {
|
|
177
|
+
const estate = await getEstate(estateId.toString(), timestamp);
|
|
178
|
+
if (estate) {
|
|
179
|
+
return ((await hasAccessThroughFirstLevelAuthorities(estate, ethAddress)) ||
|
|
180
|
+
(await hasAccessThroughAuthorizations(estate.owners[0].address, ethAddress, timestamp)));
|
|
181
|
+
}
|
|
182
|
+
throw new Error(`Couldn\'t find the state ${estateId}`);
|
|
183
|
+
};
|
|
184
|
+
const isParcelUpdateAuthorized = async (x, y, timestamp, ethAddress, _externalCalls) => {
|
|
185
|
+
/* You get direct access if you were the:
|
|
186
|
+
* - owner
|
|
187
|
+
* - operator
|
|
188
|
+
* - update operator
|
|
189
|
+
* at that time
|
|
190
|
+
*/
|
|
191
|
+
const parcel = await getParcel(x, y, timestamp);
|
|
192
|
+
if (parcel) {
|
|
193
|
+
const belongsToEstate = parcel.estates != undefined && parcel.estates.length > 0 && parcel.estates[0].estateId != undefined;
|
|
194
|
+
return ((await hasAccessThroughFirstLevelAuthorities(parcel, ethAddress)) ||
|
|
195
|
+
(await hasAccessThroughAuthorizations(parcel.owners[0].address, ethAddress, timestamp)) ||
|
|
196
|
+
(belongsToEstate && (await isEstateUpdateAuthorized(parcel.estates[0].estateId, timestamp, ethAddress))));
|
|
197
|
+
}
|
|
198
|
+
throw new Error(`Parcel(${x},${y},${timestamp}) not found`);
|
|
199
|
+
};
|
|
200
|
+
const checkParcelAccess = async (x, y, timestamp, ethAddress, externalCalls) => {
|
|
201
|
+
try {
|
|
202
|
+
return await retry(() => isParcelUpdateAuthorized(x, y, timestamp, ethAddress, externalCalls), 5, '0.1s');
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
logger.error(`Error checking parcel access (${x}, ${y}, ${timestamp}, ${ethAddress}).`);
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
const { entity } = deployment;
|
|
210
|
+
const { pointers, timestamp } = entity;
|
|
211
|
+
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
212
|
+
const errors = [];
|
|
213
|
+
const lowerCasePointers = pointers.map((pointer) => pointer.toLowerCase());
|
|
214
|
+
for (const pointer of lowerCasePointers) {
|
|
215
|
+
const pointerParts = pointer.split(',');
|
|
216
|
+
if (pointerParts.length === 2) {
|
|
217
|
+
const x = parseInt(pointerParts[0], 10);
|
|
218
|
+
const y = parseInt(pointerParts[1], 10);
|
|
219
|
+
try {
|
|
220
|
+
// Check that the address has access (we check both the present and the 5 min into the past to avoid synchronization issues in the blockchain)
|
|
221
|
+
const hasAccess = (await checkParcelAccess(x, y, timestamp, ethAddress, externalCalls)) ||
|
|
222
|
+
(await checkParcelAccess(x, y, timestamp - SCENE_LOOKBACK_TIME, ethAddress, externalCalls));
|
|
223
|
+
if (!hasAccess) {
|
|
224
|
+
errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y})`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y}). ${e}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
errors.push(`Scene pointers should only contain two integers separated by a comma, for example (10,10) or (120,-45). Invalid pointer: ${pointer}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return (0, types_1.fromErrors)(...errors);
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
exports.createSceneValidateFn = createSceneValidateFn;
|
|
239
|
+
/** @internal */
|
|
240
|
+
async function retry(execution, attempts, waitTime = '1s', failedAttemptCallback) {
|
|
241
|
+
while (attempts > 0) {
|
|
242
|
+
try {
|
|
243
|
+
return await execution();
|
|
244
|
+
// ^^^^^ never remove this "await" keyword, otherwise this function won't
|
|
245
|
+
// catch the exception and perform the retries
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
attempts--;
|
|
249
|
+
if (attempts > 0) {
|
|
250
|
+
if (failedAttemptCallback) {
|
|
251
|
+
failedAttemptCallback(attempts);
|
|
252
|
+
}
|
|
253
|
+
await new Promise((res) => setTimeout(res, (0, ms_1.default)(waitTime)));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
throw new Error('Please specify more than one attempt for the retry function');
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=scenes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SubgraphAccessCheckerComponents, TheGraphClient } from '../../../types';
|
|
2
|
+
export declare type PermissionResult = {
|
|
3
|
+
result: boolean;
|
|
4
|
+
failing?: string[];
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare const createTheGraphClient: (components: Pick<SubgraphAccessCheckerComponents, 'logs' | 'subGraphs'>) => TheGraphClient;
|
|
10
|
+
//# sourceMappingURL=the-graph-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"the-graph-client.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/the-graph-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,+BAA+B,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAElG,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,eACnB,KAAK,+BAA+B,EAAE,MAAM,GAAG,WAAW,CAAC,KACtE,cAoOF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"the-graph-client.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/the-graph-client.ts"],"names":[],"mappings":";;;AACA,oDAA4C;AAS5C;;GAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,UAAuE,EACvD,EAAE;IAClB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEvC,MAAM,oBAAoB,GAAG,KAAK,EAChC,UAAsB,EACtB,YAAsB,EACtB,SAAiB,EACU,EAAE;QAC7B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,YAAY,EAAE,CAAA;SACtB;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEtF,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAA+B,EAA6B,EAAE;YAChG,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,eAAe,EAAE,CAAA;aACzB;YAED,MAAM,yBAAyB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;gBAC9D,MAAM,KAAK,GAAsD;oBAC/D,WAAW,EAAE,2BAA2B;oBACxC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ;oBAC1C,KAAK,EAAE,gCAAgC;oBACvC,MAAM,EAAE,CAAC,QAAuC,EAAe,EAAE,CAC/D,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;iBAClD,CAAA;gBACD,OAAO,QAAQ,CAAC,KAAK,EAAE;oBACrB,KAAK,EAAE,WAAW;oBAClB,UAAU;oBACV,QAAQ,EAAE,YAAY;iBACvB,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAA;gBAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;gBACrE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;aACxE;YAAC,MAAM;gBACN,MAAM,CAAC,KAAK,CAAC,2CAA2C,UAAU,aAAa,WAAW,EAAE,CAAC,CAAA;gBAC7F,OAAO,eAAe,EAAE,CAAA;aACzB;QACH,CAAC,CAAA;QAED,MAAM,yBAAyB,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAC5F,IAAI,yBAAyB,CAAC,MAAM,EAAE;YACpC,OAAO,yBAAyB,CAAA;SACjC;QAED,OAAO,MAAM,oBAAoB,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAA;IAC9E,CAAC,CAAA;IAOD,MAAM,mBAAmB,GAAG,KAAK,EAAE,WAAqB,EAA0B,EAAE;QAClF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,GAAG,CAAC,CAAA;YAClC,IACE,MAAM;gBACN,SAAS,IAAI,MAAM;gBACnB,CAAC,gCAAgC,EAAE,gCAAgC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAC1F;gBACA,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBACxC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBACnB;qBAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBAChB;aACF;SACF;QACD,OAAO;YACL,QAAQ;YACR,KAAK;SACN,CAAA;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,GAAqB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,CAAC,OAAkB,EAAoB,EAAE,CAAC,CAAC;QACjE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAChC,UAAsB,EACtB,WAAqB,EACrB,SAAiB,EACU,EAAE;QAC7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,OAAO,YAAY,EAAE,CAAA;SACtB;QAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;QAClE,MAAM,0BAA0B,GAAG,gCAAgC,CACjE,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAC9B,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CACpC,CAAA;QACD,MAAM,uBAAuB,GAAG,gCAAgC,CAC9D,UAAU,EACV,KAAK,EACL,SAAS,EACT,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAC9B,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CACpC,CAAA;QAED,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtE,0BAA0B;YAC1B,uBAAuB;SACxB,CAAC,CAAA;QAEF,IAAI,sBAAsB,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM;YAAE,OAAO,YAAY,EAAE,CAAA;aACjF;YACH,OAAO,eAAe,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;SAC5G;IACH,CAAC,CAAA;IAED,MAAM,gCAAgC,GAAG,KAAK,EAC5C,UAAsB,EACtB,WAAqB,EACrB,SAAiB,EACjB,cAAkC,EAClC,mBAAuC,EACZ,EAAE;QAC7B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,OAAO,YAAY,EAAE,CAAA;SACtB;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAEtE,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAA+B,EAA6B,EAAE;YAChG,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO,eAAe,EAAE,CAAA;aACzB;YAED,MAAM,yBAAyB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;gBAC9D,MAAM,KAAK,GAAqD;oBAC9D,WAAW,EAAE,2BAA2B;oBACxC,QAAQ,EAAE,mBAAmB;oBAC7B,KAAK,EAAE,gCAAgC;oBACvC,MAAM,EAAE,CAAC,QAAsC,EAAe,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC/G,CAAA;gBACD,OAAO,QAAQ,CAAC,KAAK,EAAE;oBACrB,KAAK,EAAE,WAAW;oBAClB,UAAU;oBACV,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAA;gBAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;gBACpE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;aACxE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,2CAA2C,UAAU,aAAa,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAA;gBAChH,OAAO,eAAe,EAAE,CAAA;aACzB;QACH,CAAC,CAAA;QAED,MAAM,yBAAyB,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAC5F,IAAI,yBAAyB,CAAC,MAAM,EAAE;YACpC,OAAO,yBAAyB,CAAA;SACjC;QAED,OAAO,MAAM,oBAAoB,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EACpB,KAAqC,EACrC,SAA8B,EACT,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAc,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAChF,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,sBAAsB,GAAG,KAAK,EAAE,QAA4B,EAAE,SAAiB,EAA6B,EAAE;QAClH,MAAM,KAAK,GAMP;YACF,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACnB,MAAM,uBAAuB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;gBACvD,MAAM,kCAAkC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;gBAClE,IAAI,uBAAuB,KAAK,SAAS,IAAI,kCAAkC,KAAK,SAAS,EAAE;oBAC7F,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;iBACpE;gBAED,OAAO;oBACL,uBAAuB,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS;oBAClG,kCAAkC,EAAE,CAAC,CAAC,kCAAkC;wBACtE,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;wBAC9C,CAAC,CAAC,SAAS;iBACd,CAAA;YACH,CAAC;SACF,CAAA;QAED;;;WAGG;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,gBAAgB,GAAG,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAElD,OAAO,MAAM,QAAQ,CAAC,KAAK,EAAE;YAC3B,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,gBAAgB;SAChC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO;QACL,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;KACvB,CAAA;AACH,CAAC,CAAA;AAtOY,QAAA,oBAAoB,wBAsOhC;AAED,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;EAkBjC,CAAA;AAEF,MAAM,gCAAgC,GAAG;;;;;;;;;EASvC,CAAA;AAEF,MAAM,gCAAgC,GAAG;;;;;;;;;EASvC,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SubgraphAccessCheckerComponents, ThirdPartyAssetValidateFn } from '../../../types';
|
|
2
|
+
export declare function createThirdPartyAssetValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'logs' | 'theGraphClient' | 'subGraphs'>): ThirdPartyAssetValidateFn;
|
|
3
|
+
//# sourceMappingURL=third-party-asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"third-party-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/third-party-asset.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,+BAA+B,EAC/B,yBAAyB,EAE1B,MAAM,gBAAgB,CAAA;AAiHvB,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAC3G,yBAAyB,CAU3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createThirdPartyAssetValidateFn = void 0;
|
|
4
4
|
const content_hash_tree_1 = require("@dcl/content-hash-tree");
|
|
5
5
|
const hashing_1 = require("@dcl/hashing");
|
|
6
6
|
const schemas_1 = require("@dcl/schemas");
|
|
@@ -90,8 +90,8 @@ async function verifyMerkleProofedEntity(components, urn, deployment, logger) {
|
|
|
90
90
|
}
|
|
91
91
|
return validMerkleProofedEntity;
|
|
92
92
|
}
|
|
93
|
-
|
|
94
|
-
async
|
|
93
|
+
function createThirdPartyAssetValidateFn(components) {
|
|
94
|
+
return async function validateFn(asset, deployment) {
|
|
95
95
|
const logger = components.logs.getLogger('collection asset access validation');
|
|
96
96
|
// Third Party wearables are validated doing merkle tree based verification proof
|
|
97
97
|
const verified = await verifyMerkleProofedEntity(components, asset, deployment, logger);
|
|
@@ -99,9 +99,7 @@ exports.thirdPartyAssetValidation = {
|
|
|
99
99
|
return (0, types_1.validationFailed)(`Couldn't verify merkle proofed entity`);
|
|
100
100
|
}
|
|
101
101
|
return types_1.OK;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
};
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
exports.createThirdPartyAssetValidateFn = createThirdPartyAssetValidateFn;
|
|
107
105
|
//# sourceMappingURL=third-party-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"third-party-asset.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/third-party-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { ContentValidatorComponents, DeploymentToValidate, ValidateFn } from '../types';
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
|
|
7
|
-
* Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
export declare const content: ValidateFn;
|
|
1
|
+
import { ContentValidatorComponents, DeploymentToValidate, ValidateFn, ValidationResponse } from '../types';
|
|
2
|
+
export declare function createAllHashesWereUploadedOrStoredValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
|
|
3
|
+
export declare function allHashesInUploadedFilesAreReportedInTheEntityValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
4
|
+
export declare const allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45ValidateFn: ValidateFn;
|
|
5
|
+
export declare const allMandatoryContentFilesArePresentValidateFn: ValidateFn;
|
|
6
|
+
export declare function createContentValidateFn(components: ContentValidatorComponents): ValidateFn;
|
|
11
7
|
//# sourceMappingURL=content.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAc,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAYvH,wBAAgB,6CAA6C,CAAC,EAC5D,aAAa,EACd,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAAG,UAAU,CAkBhE;AAED,wBAAsB,wDAAwD,CAAC,UAAU,EAAE,oBAAoB,+BAW9G;AAED,eAAO,MAAM,uEAAuE,YAgBnF,CAAA;AAED,eAAO,MAAM,4CAA4C,YAevD,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAW1F"}
|