@dcl/content-validator 4.0.21 → 4.0.22-20221227190540.commit-91581f6
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/content-validator.api.json +52 -18
- package/dist/the-graph-client/the-graph-client.d.ts +4 -0
- package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
- package/dist/the-graph-client/the-graph-client.js +37 -53
- package/dist/the-graph-client/the-graph-client.js.map +1 -1
- package/dist/types.d.ts +11 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -1
- package/dist/validations/access-checker/items/collection-asset.js +5 -6
- package/dist/validations/access-checker/items/collection-asset.js.map +1 -1
- package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -1
- package/dist/validations/access-checker/items/third-party-asset.js +1 -1
- package/dist/validations/access-checker/items/third-party-asset.js.map +1 -1
- package/dist/validations/access-checker/scenes.d.ts.map +1 -1
- package/dist/validations/access-checker/scenes.js +29 -227
- package/dist/validations/access-checker/scenes.js.map +1 -1
- package/package.json +8 -3
|
@@ -243,6 +243,40 @@
|
|
|
243
243
|
"endIndex": 8
|
|
244
244
|
}
|
|
245
245
|
},
|
|
246
|
+
{
|
|
247
|
+
"kind": "TypeAlias",
|
|
248
|
+
"canonicalReference": "@dcl/content-validator!Checker:type",
|
|
249
|
+
"docComment": "/**\n * @public\n */\n",
|
|
250
|
+
"excerptTokens": [
|
|
251
|
+
{
|
|
252
|
+
"kind": "Content",
|
|
253
|
+
"text": "export declare type Checker = "
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"kind": "Content",
|
|
257
|
+
"text": "{\n checkLAND(ethAddress: string, parcels: [number, number][], block: number): "
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"kind": "Reference",
|
|
261
|
+
"text": "Promise",
|
|
262
|
+
"canonicalReference": "!Promise:interface"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"kind": "Content",
|
|
266
|
+
"text": "<boolean[]>;\n}"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"kind": "Content",
|
|
270
|
+
"text": ";"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"releaseTag": "Public",
|
|
274
|
+
"name": "Checker",
|
|
275
|
+
"typeTokenRange": {
|
|
276
|
+
"startIndex": 1,
|
|
277
|
+
"endIndex": 4
|
|
278
|
+
}
|
|
279
|
+
},
|
|
246
280
|
{
|
|
247
281
|
"kind": "TypeAlias",
|
|
248
282
|
"canonicalReference": "@dcl/content-validator!ConditionalValidation:type",
|
|
@@ -943,16 +977,16 @@
|
|
|
943
977
|
},
|
|
944
978
|
{
|
|
945
979
|
"kind": "Content",
|
|
946
|
-
"text": "{\n L1: {\n
|
|
980
|
+
"text": "{\n L1: {\n checker: "
|
|
947
981
|
},
|
|
948
982
|
{
|
|
949
983
|
"kind": "Reference",
|
|
950
|
-
"text": "
|
|
951
|
-
"canonicalReference": "@
|
|
984
|
+
"text": "Checker",
|
|
985
|
+
"canonicalReference": "@dcl/content-validator!Checker:type"
|
|
952
986
|
},
|
|
953
987
|
{
|
|
954
988
|
"kind": "Content",
|
|
955
|
-
"text": ";\n
|
|
989
|
+
"text": ";\n collections: "
|
|
956
990
|
},
|
|
957
991
|
{
|
|
958
992
|
"kind": "Reference",
|
|
@@ -961,7 +995,7 @@
|
|
|
961
995
|
},
|
|
962
996
|
{
|
|
963
997
|
"kind": "Content",
|
|
964
|
-
"text": ";\n
|
|
998
|
+
"text": ";\n ensOwner: "
|
|
965
999
|
},
|
|
966
1000
|
{
|
|
967
1001
|
"kind": "Reference",
|
|
@@ -970,7 +1004,7 @@
|
|
|
970
1004
|
},
|
|
971
1005
|
{
|
|
972
1006
|
"kind": "Content",
|
|
973
|
-
"text": ";\n
|
|
1007
|
+
"text": ";\n };\n L2: {\n collections: "
|
|
974
1008
|
},
|
|
975
1009
|
{
|
|
976
1010
|
"kind": "Reference",
|
|
@@ -979,7 +1013,7 @@
|
|
|
979
1013
|
},
|
|
980
1014
|
{
|
|
981
1015
|
"kind": "Content",
|
|
982
|
-
"text": ";\n
|
|
1016
|
+
"text": ";\n thirdPartyRegistry: "
|
|
983
1017
|
},
|
|
984
1018
|
{
|
|
985
1019
|
"kind": "Reference",
|
|
@@ -988,25 +1022,25 @@
|
|
|
988
1022
|
},
|
|
989
1023
|
{
|
|
990
1024
|
"kind": "Content",
|
|
991
|
-
"text": ";\n
|
|
1025
|
+
"text": ";\n };\n l1BlockSearch: "
|
|
992
1026
|
},
|
|
993
1027
|
{
|
|
994
1028
|
"kind": "Reference",
|
|
995
|
-
"text": "
|
|
996
|
-
"canonicalReference": "@
|
|
1029
|
+
"text": "BlockSearch",
|
|
1030
|
+
"canonicalReference": "@dcl/block-indexer!BlockSearch:type"
|
|
997
1031
|
},
|
|
998
1032
|
{
|
|
999
1033
|
"kind": "Content",
|
|
1000
|
-
"text": ";\n
|
|
1034
|
+
"text": ";\n l2BlockSearch: "
|
|
1001
1035
|
},
|
|
1002
1036
|
{
|
|
1003
1037
|
"kind": "Reference",
|
|
1004
|
-
"text": "
|
|
1005
|
-
"canonicalReference": "@
|
|
1038
|
+
"text": "BlockSearch",
|
|
1039
|
+
"canonicalReference": "@dcl/block-indexer!BlockSearch:type"
|
|
1006
1040
|
},
|
|
1007
1041
|
{
|
|
1008
1042
|
"kind": "Content",
|
|
1009
|
-
"text": ";\n
|
|
1043
|
+
"text": ";\n}"
|
|
1010
1044
|
},
|
|
1011
1045
|
{
|
|
1012
1046
|
"kind": "Content",
|
|
@@ -1085,16 +1119,16 @@
|
|
|
1085
1119
|
},
|
|
1086
1120
|
{
|
|
1087
1121
|
"kind": "Content",
|
|
1088
|
-
"text": ">;\n findBlocksForTimestamp: (
|
|
1122
|
+
"text": ">;\n findBlocksForTimestamp: (timestamp: number, blockSearch: "
|
|
1089
1123
|
},
|
|
1090
1124
|
{
|
|
1091
1125
|
"kind": "Reference",
|
|
1092
|
-
"text": "
|
|
1093
|
-
"canonicalReference": "@
|
|
1126
|
+
"text": "BlockSearch",
|
|
1127
|
+
"canonicalReference": "@dcl/block-indexer!BlockSearch:type"
|
|
1094
1128
|
},
|
|
1095
1129
|
{
|
|
1096
1130
|
"kind": "Content",
|
|
1097
|
-
"text": "
|
|
1131
|
+
"text": ") => "
|
|
1098
1132
|
},
|
|
1099
1133
|
{
|
|
1100
1134
|
"kind": "Reference",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"the-graph-client.d.ts","sourceRoot":"","sources":["../../src/the-graph-client/the-graph-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,0BAA0B,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"the-graph-client.d.ts","sourceRoot":"","sources":["../../src/the-graph-client/the-graph-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,0BAA0B,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGvF,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM;;;EAYlD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,eACnB,KAAK,0BAA0B,EAAE,MAAM,GAAG,WAAW,CAAC,KACjE,cAoNF,CAAA"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTheGraphClient = void 0;
|
|
3
|
+
exports.createTheGraphClient = exports.timestampBounds = void 0;
|
|
4
4
|
const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
5
|
+
function timestampBounds(timestampMs) {
|
|
6
|
+
/*
|
|
7
|
+
* This mimics original behavior of looking up to 8 seconds after the entity timestamp
|
|
8
|
+
* and up to 5 minutes and 7 seconds before
|
|
9
|
+
*/
|
|
10
|
+
const timestampSec = Math.ceil(timestampMs / 1000) + 8;
|
|
11
|
+
const timestamp5MinAgo = Math.max(timestampSec - 60 * 5 - 7, 0);
|
|
12
|
+
return {
|
|
13
|
+
upper: timestampSec,
|
|
14
|
+
lower: timestamp5MinAgo
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.timestampBounds = timestampBounds;
|
|
5
18
|
/**
|
|
6
19
|
* @public
|
|
7
20
|
*/
|
|
@@ -13,7 +26,7 @@ const createTheGraphClient = (components) => {
|
|
|
13
26
|
if (namesToCheck.length === 0) {
|
|
14
27
|
return permissionOk();
|
|
15
28
|
}
|
|
16
|
-
const blocks = await findBlocksForTimestamp(components.subGraphs.
|
|
29
|
+
const blocks = await findBlocksForTimestamp(timestamp, components.subGraphs.l1BlockSearch);
|
|
17
30
|
const hasPermissionOnBlock = async (blockNumber) => {
|
|
18
31
|
if (!blockNumber) {
|
|
19
32
|
return permissionError();
|
|
@@ -78,8 +91,8 @@ const createTheGraphClient = (components) => {
|
|
|
78
91
|
return permissionOk();
|
|
79
92
|
}
|
|
80
93
|
const { ethereum, matic } = await splitItemsByNetwork(urnsToCheck);
|
|
81
|
-
const ethereumItemsOwnersPromise = ownsItemsAtTimestampInBlockchain(ethAddress, ethereum, timestamp, components.subGraphs.L1.
|
|
82
|
-
const maticItemsOwnersPromise = ownsItemsAtTimestampInBlockchain(ethAddress, matic, timestamp, components.subGraphs.L2.
|
|
94
|
+
const ethereumItemsOwnersPromise = ownsItemsAtTimestampInBlockchain(ethAddress, ethereum, timestamp, components.subGraphs.L1.collections, components.subGraphs.l1BlockSearch);
|
|
95
|
+
const maticItemsOwnersPromise = ownsItemsAtTimestampInBlockchain(ethAddress, matic, timestamp, components.subGraphs.L2.collections, components.subGraphs.l2BlockSearch);
|
|
83
96
|
const [ethereumItemsOwnership, maticItemsOwnership] = await Promise.all([
|
|
84
97
|
ethereumItemsOwnersPromise,
|
|
85
98
|
maticItemsOwnersPromise
|
|
@@ -90,11 +103,11 @@ const createTheGraphClient = (components) => {
|
|
|
90
103
|
return permissionError([...(ethereumItemsOwnership.failing ?? []), ...(maticItemsOwnership.failing ?? [])]);
|
|
91
104
|
}
|
|
92
105
|
};
|
|
93
|
-
const ownsItemsAtTimestampInBlockchain = async (ethAddress, urnsToCheck, timestamp,
|
|
106
|
+
const ownsItemsAtTimestampInBlockchain = async (ethAddress, urnsToCheck, timestamp, collectionsSubgraph, blockSearch) => {
|
|
94
107
|
if (urnsToCheck.length === 0) {
|
|
95
108
|
return permissionOk();
|
|
96
109
|
}
|
|
97
|
-
const blocks = await findBlocksForTimestamp(
|
|
110
|
+
const blocks = await findBlocksForTimestamp(timestamp, blockSearch);
|
|
98
111
|
const hasPermissionOnBlock = async (blockNumber) => {
|
|
99
112
|
if (!blockNumber) {
|
|
100
113
|
return permissionError();
|
|
@@ -132,35 +145,25 @@ const createTheGraphClient = (components) => {
|
|
|
132
145
|
const response = await query.subgraph.query(query.query, variables);
|
|
133
146
|
return query.mapper(response);
|
|
134
147
|
};
|
|
135
|
-
const findBlocksForTimestamp = async (
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
148
|
+
const findBlocksForTimestamp = async (timestamp, blockSearch) => {
|
|
149
|
+
const { lower, upper } = timestampBounds(timestamp);
|
|
150
|
+
const result = await Promise.all([
|
|
151
|
+
blockSearch.findBlockForTimestamp(upper),
|
|
152
|
+
blockSearch.findBlockForTimestamp(lower)
|
|
153
|
+
]);
|
|
154
|
+
const blockNumberAtDeployment = result[0];
|
|
155
|
+
let blockNumberFiveMinBeforeDeployment = result[1];
|
|
156
|
+
if (blockNumberFiveMinBeforeDeployment && blockNumberFiveMinBeforeDeployment.timestamp < lower) {
|
|
157
|
+
// Mimic the way TheGraph was calculating this
|
|
158
|
+
blockNumberFiveMinBeforeDeployment = {
|
|
159
|
+
...blockNumberFiveMinBeforeDeployment,
|
|
160
|
+
block: blockNumberFiveMinBeforeDeployment.block + 1
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
blockNumberAtDeployment: blockNumberAtDeployment?.block,
|
|
165
|
+
blockNumberFiveMinBeforeDeployment: blockNumberFiveMinBeforeDeployment?.block
|
|
153
166
|
};
|
|
154
|
-
/*
|
|
155
|
-
* This mimics original behavior of looking up to 8 seconds after the entity timestamp
|
|
156
|
-
* and up to 5 minutes and 7 seconds before
|
|
157
|
-
*/
|
|
158
|
-
const timestampSec = Math.ceil(timestamp / 1000) + 8;
|
|
159
|
-
const timestamp5MinAgo = timestampSec - 60 * 5 - 7;
|
|
160
|
-
return await runQuery(query, {
|
|
161
|
-
timestamp: timestampSec,
|
|
162
|
-
timestamp5Min: timestamp5MinAgo
|
|
163
|
-
});
|
|
164
167
|
};
|
|
165
168
|
return {
|
|
166
169
|
ownsNamesAtTimestamp,
|
|
@@ -169,25 +172,6 @@ const createTheGraphClient = (components) => {
|
|
|
169
172
|
};
|
|
170
173
|
};
|
|
171
174
|
exports.createTheGraphClient = createTheGraphClient;
|
|
172
|
-
const QUERY_BLOCKS_FOR_TIMESTAMP = `
|
|
173
|
-
query getBlockForTimestampRange($timestamp: Int!, $timestamp5Min: Int!) {
|
|
174
|
-
min: blocks(
|
|
175
|
-
where: {timestamp_gte: $timestamp5Min, timestamp_lte: $timestamp}
|
|
176
|
-
first: 1
|
|
177
|
-
orderBy: timestamp
|
|
178
|
-
orderDirection: desc
|
|
179
|
-
) {
|
|
180
|
-
number
|
|
181
|
-
}
|
|
182
|
-
max: blocks(
|
|
183
|
-
where: {timestamp_gte: $timestamp5Min, timestamp_lte: $timestamp}
|
|
184
|
-
first: 1
|
|
185
|
-
orderBy: timestamp
|
|
186
|
-
orderDirection: asc
|
|
187
|
-
) {
|
|
188
|
-
number
|
|
189
|
-
}
|
|
190
|
-
}`;
|
|
191
175
|
const QUERY_NAMES_FOR_ADDRESS_AT_BLOCK = `
|
|
192
176
|
query getNftNamesForBlock($block: Int!, $ethAddress: String!, $nameList: [String!]) {
|
|
193
177
|
names: nfts(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"the-graph-client.js","sourceRoot":"","sources":["../../src/the-graph-client/the-graph-client.ts"],"names":[],"mappings":";;;AACA,oDAA4C;
|
|
1
|
+
{"version":3,"file":"the-graph-client.js","sourceRoot":"","sources":["../../src/the-graph-client/the-graph-client.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { AuthChain, Entity, EthAddress } from '@dcl/schemas';
|
|
|
2
2
|
import { IConfigComponent, ILoggerComponent } from '@well-known-components/interfaces';
|
|
3
3
|
import { ISubgraphComponent, Variables } from '@well-known-components/thegraph-component';
|
|
4
4
|
import { PermissionResult } from './the-graph-client/the-graph-client';
|
|
5
|
+
import { BlockSearch } from '@dcl/block-indexer';
|
|
5
6
|
/**
|
|
6
7
|
* @public
|
|
7
8
|
*/
|
|
@@ -94,22 +95,28 @@ export declare const validationFailed: (...error: string[]) => ValidationRespons
|
|
|
94
95
|
* @public
|
|
95
96
|
*/
|
|
96
97
|
export declare const fromErrors: (...errors: Errors) => ValidationResponse;
|
|
98
|
+
/**
|
|
99
|
+
* @public
|
|
100
|
+
*/
|
|
101
|
+
export declare type Checker = {
|
|
102
|
+
checkLAND(ethAddress: string, parcels: [number, number][], block: number): Promise<boolean[]>;
|
|
103
|
+
};
|
|
97
104
|
/**
|
|
98
105
|
* A list with all sub-graphs used for validations.
|
|
99
106
|
* @public
|
|
100
107
|
*/
|
|
101
108
|
export declare type SubGraphs = {
|
|
102
109
|
L1: {
|
|
103
|
-
|
|
104
|
-
blocks: ISubgraphComponent;
|
|
110
|
+
checker: Checker;
|
|
105
111
|
collections: ISubgraphComponent;
|
|
106
112
|
ensOwner: ISubgraphComponent;
|
|
107
113
|
};
|
|
108
114
|
L2: {
|
|
109
|
-
blocks: ISubgraphComponent;
|
|
110
115
|
collections: ISubgraphComponent;
|
|
111
116
|
thirdPartyRegistry: ISubgraphComponent;
|
|
112
117
|
};
|
|
118
|
+
l1BlockSearch: BlockSearch;
|
|
119
|
+
l2BlockSearch: BlockSearch;
|
|
113
120
|
};
|
|
114
121
|
/**
|
|
115
122
|
* @public
|
|
@@ -117,7 +124,7 @@ export declare type SubGraphs = {
|
|
|
117
124
|
export declare type TheGraphClient = {
|
|
118
125
|
ownsNamesAtTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
|
|
119
126
|
ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
|
|
120
|
-
findBlocksForTimestamp: (
|
|
127
|
+
findBlocksForTimestamp: (timestamp: number, blockSearch: BlockSearch) => Promise<BlockInformation>;
|
|
121
128
|
};
|
|
122
129
|
/**
|
|
123
130
|
* @public
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuGA;;GAEG;AACU,QAAA,EAAE,GAAuB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AAElD;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAe,EAAsB,EAAE,CAAC,CAAC;IAC3E,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AAHW,QAAA,gBAAgB,oBAG3B;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,GAAG,MAAc,EAAsB,EAAE,CAAC,CAAC;IACpE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;CAC/C,CAAC,CAAA;AAHW,QAAA,UAAU,cAGrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"collection-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAqBzC,aAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,cAAc,EAAE,CAAA;CACxB,CAAA;AAsID,eAAO,MAAM,gCAAgC,EAAE,eAmD9C,CAAA"}
|
|
@@ -86,10 +86,10 @@ async function hasPermission(components, subgraph, collection, itemId, block, en
|
|
|
86
86
|
return false;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
async function checkCollectionAccess(components,
|
|
89
|
+
async function checkCollectionAccess(components, collectionsSubgraph, collection, itemId, entity, logger, blockSearch) {
|
|
90
90
|
const { timestamp } = entity;
|
|
91
91
|
try {
|
|
92
|
-
const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(
|
|
92
|
+
const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(timestamp, blockSearch);
|
|
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.
|
|
@@ -99,7 +99,7 @@ async function checkCollectionAccess(components, blocksSubgraph, collectionsSubg
|
|
|
99
99
|
(await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
|
|
100
100
|
}
|
|
101
101
|
catch (error) {
|
|
102
|
-
logger.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}
|
|
102
|
+
logger.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}). Error: ${error}`);
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
@@ -115,12 +115,11 @@ exports.v1andV2collectionAssetValidation = {
|
|
|
115
115
|
const isL2 = L2_NETWORKS.includes(network);
|
|
116
116
|
if (!isL1 && !isL2)
|
|
117
117
|
return (0, types_1.validationFailed)(`Found an unknown network on the urn '${network}'`);
|
|
118
|
-
const blocksSubgraphUrl = isL1 ? subGraphs.L1.blocks : subGraphs.L2.blocks;
|
|
119
118
|
const collectionsSubgraphUrl = isL1 ? subGraphs.L1.collections : subGraphs.L2.collections;
|
|
120
|
-
const hasAccess = await checkCollectionAccess(components,
|
|
119
|
+
const hasAccess = await checkCollectionAccess(components, collectionsSubgraphUrl, collection, asset.id, {
|
|
121
120
|
...deployment.entity,
|
|
122
121
|
ethAddress
|
|
123
|
-
}, logger);
|
|
122
|
+
}, logger, isL1 ? components.subGraphs.l1BlockSearch : components.subGraphs.l2BlockSearch);
|
|
124
123
|
if (!hasAccess) {
|
|
125
124
|
if (isL2)
|
|
126
125
|
return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following item: (${asset.contractAddress}, ${asset.id})`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":";;;AAAA,0CAA6C;AAK7C,0CAMuB;
|
|
1
|
+
{"version":3,"file":"collection-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"third-party-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"third-party-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAoHzC,eAAO,MAAM,yBAAyB,EAAE,eAiBvC,CAAA"}
|
|
@@ -59,7 +59,7 @@ async function verifyMerkleProofedEntity(components, urn, deployment, logger) {
|
|
|
59
59
|
return false;
|
|
60
60
|
}
|
|
61
61
|
const thirdPartyId = getThirdPartyId(urn);
|
|
62
|
-
const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(
|
|
62
|
+
const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(deployment.entity.timestamp, components.subGraphs.l2BlockSearch);
|
|
63
63
|
const merkleRoots = [];
|
|
64
64
|
const hasPermissionOnBlock = async (blockNumber) => {
|
|
65
65
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"third-party-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":";;;AAAA,8DAAoD;AACpD,0CAA4C;AAC5C,0CAAyE;AAGzE,0CAAuG;AAGvG,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA,CAAC,mCAAmC;KAClF;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,GAAmC;IAC1D,OAAO,oBAAoB,GAAG,CAAC,OAAO,2BAA2B,GAAG,CAAC,cAAc,EAAE,CAAA;AACvF,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,QAA6B,EAC7B,UAAkB,EAClB,MAAgC;IAEhC,IAAI,CAAC,qBAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC/C,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACxC,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;KACb;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;IACxC,MAAM,gBAAgB,GAAG,IAAA,uBAAa,EAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IAClF,sGAAsG;IACtG,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,KAAK,gBAAgB,EAAE;QACxD,MAAM,CAAC,KAAK,CAAC,uFAAuF,EAAE;YACpG,gBAAgB;YAChB,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,UAAU;SAC5C,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;KACb;IAED,mDAAmD;IACnD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3E,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IAClD,OAAO,IAAA,+BAAW,EAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAA;AACnG,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,UAA2E,EAC3E,KAAa,EACb,YAAoB;IAEpB,MAAM,KAAK,GAAG;;;;;IAKZ,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAElE,KAAK,EAAE;QACR,EAAE,EAAE,YAAY;QAChB,KAAK;KACN,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,OAAM;IAClE,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;AACrC,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,UAA8F,EAC9F,GAAmC,EACnC,UAAgC,EAChC,MAAgC;IAEhC,yJAAyJ;IACzJ,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAA2B,CAAA;IAC9D,IAAI,CAAC,IAAA,sBAAY,EAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC7C,iEAAiE;QACjE,OAAO,KAAK,CAAA;KACb;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,EAAE,uBAAuB,EAAE,kCAAkC,EAAE,GACnE,MAAM,UAAU,CAAC,cAAc,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"third-party-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,UAAU,EAAE,MAAM,aAAa,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAyDpB,CAAA"}
|
|
@@ -6,256 +6,58 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.scenes = void 0;
|
|
7
7
|
const ms_1 = __importDefault(require("ms"));
|
|
8
8
|
const types_1 = require("../../types");
|
|
9
|
+
const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
|
|
9
10
|
/**
|
|
10
11
|
* Checks if the given address has access to the given parcel at the given timestamp.
|
|
11
12
|
* @public
|
|
12
13
|
*/
|
|
13
14
|
exports.scenes = {
|
|
14
|
-
validate: async ({ externalCalls,
|
|
15
|
-
const logger = logs.getLogger('scenes access validator');
|
|
16
|
-
const getAuthorizations = async (owner, operator, timestamp) => {
|
|
17
|
-
const query = `
|
|
18
|
-
query GetAuthorizations($owner: String!, $operator: String!, $timestamp: Int!) {
|
|
19
|
-
authorizations(
|
|
20
|
-
where: {
|
|
21
|
-
owner: $owner,
|
|
22
|
-
operator: $operator,
|
|
23
|
-
createdAt_lte: $timestamp
|
|
24
|
-
},
|
|
25
|
-
orderBy: timestamp,
|
|
26
|
-
orderDirection: desc
|
|
27
|
-
) {
|
|
28
|
-
type
|
|
29
|
-
isApproved
|
|
30
|
-
}
|
|
31
|
-
}`;
|
|
32
|
-
const variables = {
|
|
33
|
-
owner,
|
|
34
|
-
operator,
|
|
35
|
-
timestamp: Math.floor(timestamp / 1000) // js(ms) -> UNIX(s)
|
|
36
|
-
};
|
|
37
|
-
try {
|
|
38
|
-
return (await subGraphs.L1.landManager.query(query, variables)).authorizations;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
logger.error(`Error fetching authorizations for ${owner}`);
|
|
42
|
-
throw error;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const getEstate = async (estateId, timestamp) => {
|
|
46
|
-
/**
|
|
47
|
-
* You can use `owner`, `operator` and `updateOperator` to check the current value for that estate.
|
|
48
|
-
* Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
|
|
49
|
-
* For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
|
|
50
|
-
*/
|
|
51
|
-
const query = `
|
|
52
|
-
query GetEstate($estateId: String!, $timestamp: Int!) {
|
|
53
|
-
estates(where:{ id: $estateId }) {
|
|
54
|
-
id
|
|
55
|
-
owners(
|
|
56
|
-
where: { createdAt_lte: $timestamp },
|
|
57
|
-
orderBy: timestamp,
|
|
58
|
-
orderDirection: desc,
|
|
59
|
-
first: 1
|
|
60
|
-
) {
|
|
61
|
-
address
|
|
62
|
-
}
|
|
63
|
-
operators(
|
|
64
|
-
where: { createdAt_lte: $timestamp },
|
|
65
|
-
orderBy: timestamp,
|
|
66
|
-
orderDirection: desc,
|
|
67
|
-
first: 1
|
|
68
|
-
) {
|
|
69
|
-
address
|
|
70
|
-
}
|
|
71
|
-
updateOperators(
|
|
72
|
-
where: { createdAt_lte: $timestamp },
|
|
73
|
-
orderBy: timestamp,
|
|
74
|
-
orderDirection: desc,
|
|
75
|
-
first: 1
|
|
76
|
-
) {
|
|
77
|
-
address
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}`;
|
|
81
|
-
const variables = {
|
|
82
|
-
estateId,
|
|
83
|
-
timestamp: Math.floor(timestamp / 1000) // UNIX
|
|
84
|
-
};
|
|
85
|
-
try {
|
|
86
|
-
return (await subGraphs.L1.landManager.query(query, variables)).estates[0];
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
logger.error(`Error fetching estate (${estateId})`);
|
|
90
|
-
throw error;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
const getParcel = async (x, y, timestamp) => {
|
|
94
|
-
/**
|
|
95
|
-
* You can use `owner`, `operator` and `updateOperator` to check the current value for that parcel.
|
|
96
|
-
* Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
|
|
97
|
-
* For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
|
|
98
|
-
*/
|
|
99
|
-
const query = `
|
|
100
|
-
query GetParcel($x: Int!, $y: Int!, $timestamp: Int!) {
|
|
101
|
-
parcels(where:{ x: $x, y: $y }) {
|
|
102
|
-
estates(
|
|
103
|
-
where: { createdAt_lte: $timestamp },
|
|
104
|
-
orderBy: createdAt,
|
|
105
|
-
orderDirection: desc,
|
|
106
|
-
first: 1
|
|
107
|
-
) {
|
|
108
|
-
estateId
|
|
109
|
-
}
|
|
110
|
-
owners(
|
|
111
|
-
where: { createdAt_lte: $timestamp },
|
|
112
|
-
orderBy: timestamp,
|
|
113
|
-
orderDirection: desc,
|
|
114
|
-
first: 1
|
|
115
|
-
) {
|
|
116
|
-
address
|
|
117
|
-
}
|
|
118
|
-
operators(
|
|
119
|
-
where: { createdAt_lte: $timestamp },
|
|
120
|
-
orderBy: timestamp,
|
|
121
|
-
orderDirection: desc,
|
|
122
|
-
first: 1
|
|
123
|
-
) {
|
|
124
|
-
address
|
|
125
|
-
}
|
|
126
|
-
updateOperators(
|
|
127
|
-
where: { createdAt_lte: $timestamp },
|
|
128
|
-
orderBy: timestamp,
|
|
129
|
-
orderDirection: desc,
|
|
130
|
-
first: 1
|
|
131
|
-
) {
|
|
132
|
-
address
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}`;
|
|
136
|
-
const variables = {
|
|
137
|
-
x,
|
|
138
|
-
y,
|
|
139
|
-
timestamp: Math.floor(timestamp / 1000) // UNIX
|
|
140
|
-
};
|
|
141
|
-
try {
|
|
142
|
-
const r = await subGraphs.L1.landManager.query(query, variables);
|
|
143
|
-
if (r.parcels && r.parcels.length)
|
|
144
|
-
return r.parcels[0];
|
|
145
|
-
logger.error(`Error fetching parcel (${x}, ${y}, ${timestamp}): ${JSON.stringify(r)}`);
|
|
146
|
-
throw new Error(`Error fetching parcel (${x}, ${y}), ${timestamp}`);
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
logger.error(`Error fetching parcel (${x}, ${y}, ${timestamp})`);
|
|
150
|
-
throw error;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
const hasAccessThroughAuthorizations = async (owner, ethAddress, timestamp) => {
|
|
154
|
-
/* You also get access if you received:
|
|
155
|
-
* - an authorization with isApproved and type Operator, ApprovalForAll or UpdateManager
|
|
156
|
-
* at that time
|
|
157
|
-
*/
|
|
158
|
-
const authorizations = await getAuthorizations(owner.toLowerCase(), ethAddress.toLowerCase(), timestamp);
|
|
159
|
-
const firstOperatorAuthorization = authorizations.find((authorization) => authorization.type === 'Operator');
|
|
160
|
-
const firstApprovalForAllAuthorization = authorizations.find((authorization) => authorization.type === 'ApprovalForAll');
|
|
161
|
-
const firstUpdateManagerAuthorization = authorizations.find((authorization) => authorization.type === 'UpdateManager');
|
|
162
|
-
if (firstOperatorAuthorization?.isApproved ||
|
|
163
|
-
firstApprovalForAllAuthorization?.isApproved ||
|
|
164
|
-
firstUpdateManagerAuthorization?.isApproved) {
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
return false;
|
|
168
|
-
};
|
|
169
|
-
const hasAccessThroughFirstLevelAuthorities = async (target, ethAddress) => {
|
|
170
|
-
const firstLevelAuthorities = [...target.owners, ...target.operators, ...target.updateOperators]
|
|
171
|
-
.filter((addressSnapshot) => addressSnapshot.address)
|
|
172
|
-
.map((addressSnapshot) => addressSnapshot.address.toLowerCase());
|
|
173
|
-
return firstLevelAuthorities.includes(ethAddress.toLowerCase());
|
|
174
|
-
};
|
|
175
|
-
const isEstateUpdateAuthorized = async (estateId, timestamp, ethAddress) => {
|
|
176
|
-
const estate = await getEstate(estateId.toString(), timestamp);
|
|
177
|
-
if (estate) {
|
|
178
|
-
return ((await hasAccessThroughFirstLevelAuthorities(estate, ethAddress)) ||
|
|
179
|
-
(await hasAccessThroughAuthorizations(estate.owners[0].address, ethAddress, timestamp)));
|
|
180
|
-
}
|
|
181
|
-
throw new Error(`Couldn\'t find the state ${estateId}`);
|
|
182
|
-
};
|
|
183
|
-
const isParcelUpdateAuthorized = async (x, y, timestamp, ethAddress, _externalCalls) => {
|
|
184
|
-
/* You get direct access if you were the:
|
|
185
|
-
* - owner
|
|
186
|
-
* - operator
|
|
187
|
-
* - update operator
|
|
188
|
-
* at that time
|
|
189
|
-
*/
|
|
190
|
-
const parcel = await getParcel(x, y, timestamp);
|
|
191
|
-
if (parcel) {
|
|
192
|
-
const belongsToEstate = parcel.estates != undefined && parcel.estates.length > 0 && parcel.estates[0].estateId != undefined;
|
|
193
|
-
return ((await hasAccessThroughFirstLevelAuthorities(parcel, ethAddress)) ||
|
|
194
|
-
(await hasAccessThroughAuthorizations(parcel.owners[0].address, ethAddress, timestamp)) ||
|
|
195
|
-
(belongsToEstate && (await isEstateUpdateAuthorized(parcel.estates[0].estateId, timestamp, ethAddress))));
|
|
196
|
-
}
|
|
197
|
-
throw new Error(`Parcel(${x},${y},${timestamp}) not found`);
|
|
198
|
-
};
|
|
199
|
-
const checkParcelAccess = async (x, y, timestamp, ethAddress, externalCalls) => {
|
|
200
|
-
try {
|
|
201
|
-
return await retry(() => isParcelUpdateAuthorized(x, y, timestamp, ethAddress, externalCalls), 5, '0.1s');
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
logger.error(`Error checking parcel access (${x}, ${y}, ${timestamp}, ${ethAddress}).`);
|
|
205
|
-
throw error;
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
|
|
15
|
+
validate: async ({ externalCalls, subGraphs, logs }, deployment) => {
|
|
209
16
|
const { entity } = deployment;
|
|
210
17
|
const { pointers, timestamp } = entity;
|
|
18
|
+
const logger = logs.getLogger('scenes-validator');
|
|
19
|
+
let block;
|
|
20
|
+
try {
|
|
21
|
+
// 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)
|
|
22
|
+
const blockInfo = await subGraphs.l1BlockSearch.findBlockForTimestamp(timestamp - SCENE_LOOKBACK_TIME);
|
|
23
|
+
if (blockInfo === undefined) {
|
|
24
|
+
return (0, types_1.fromErrors)('Deployment timestamp is invalid, no matching block found');
|
|
25
|
+
}
|
|
26
|
+
block = blockInfo.block;
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
return (0, types_1.fromErrors)(`Deployment timestamp is invalid, no matching block found: ${err}`);
|
|
30
|
+
}
|
|
211
31
|
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
212
32
|
const errors = [];
|
|
213
33
|
const lowerCasePointers = pointers.map((pointer) => pointer.toLowerCase());
|
|
34
|
+
const batch = [];
|
|
214
35
|
for (const pointer of lowerCasePointers) {
|
|
215
36
|
const pointerParts = pointer.split(',');
|
|
216
37
|
if (pointerParts.length === 2) {
|
|
217
38
|
const x = parseInt(pointerParts[0], 10);
|
|
218
39
|
const y = parseInt(pointerParts[1], 10);
|
|
219
|
-
|
|
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
|
-
}
|
|
40
|
+
batch.push([x, y]);
|
|
230
41
|
}
|
|
231
42
|
else {
|
|
232
43
|
errors.push(`Scene pointers should only contain two integers separated by a comma, for example (10,10) or (120,-45). Invalid pointer: ${pointer}`);
|
|
233
44
|
}
|
|
234
45
|
}
|
|
235
|
-
return (0, types_1.fromErrors)(...errors);
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
/** @internal */
|
|
239
|
-
async function retry(execution, attempts, waitTime = '1s', failedAttemptCallback) {
|
|
240
|
-
while (attempts > 0) {
|
|
241
46
|
try {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
if (attempts > 0) {
|
|
249
|
-
if (failedAttemptCallback) {
|
|
250
|
-
failedAttemptCallback(attempts);
|
|
47
|
+
const access = await subGraphs.L1.checker.checkLAND(ethAddress, batch, block);
|
|
48
|
+
for (let i = 0; i < batch.length; i++) {
|
|
49
|
+
const [x, y] = batch[i];
|
|
50
|
+
const hasAccess = access[i];
|
|
51
|
+
if (!hasAccess) {
|
|
52
|
+
errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y})`);
|
|
251
53
|
}
|
|
252
|
-
await new Promise((res) => setTimeout(res, (0, ms_1.default)(waitTime)));
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
throw error;
|
|
256
54
|
}
|
|
257
55
|
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
logger.error(err);
|
|
58
|
+
return (0, types_1.fromErrors)(`Cannot validate deployment`);
|
|
59
|
+
}
|
|
60
|
+
return (0, types_1.fromErrors)(...errors);
|
|
258
61
|
}
|
|
259
|
-
|
|
260
|
-
}
|
|
62
|
+
};
|
|
261
63
|
//# sourceMappingURL=scenes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,uCAAoD;AAEpD,MAAM,mBAAmB,GAAG,IAAA,YAAE,EAAC,IAAI,CAAC,CAAA;AAEpC;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE;QACjE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAEjD,IAAI,KAAa,CAAA;QACjB,IAAI;YACF,8IAA8I;YAC9I,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,GAAG,mBAAmB,CAAC,CAAA;YACtG,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,OAAO,IAAA,kBAAU,EAAC,0DAA0D,CAAC,CAAA;aAC9E;YAED,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;SACxB;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,IAAA,kBAAU,EAAC,6DAA6D,GAAG,EAAE,CAAC,CAAA;SACtF;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEnE,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAE1E,MAAM,KAAK,GAAuB,EAAE,CAAA;QAEpC,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE;YACvC,MAAM,YAAY,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,MAAM,CAAC,GAAW,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC/C,MAAM,CAAC,GAAW,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAE/C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;aACnB;iBAAM;gBACL,MAAM,CAAC,IAAI,CACT,4HAA4H,OAAO,EAAE,CACtI,CAAA;aACF;SACF;QAED,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACvB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC3B,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;iBAClG;aACF;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,OAAO,IAAA,kBAAU,EAAC,4BAA4B,CAAC,CAAA;SAChD;QAED,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/content-validator",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.22-20221227190540.commit-91581f6",
|
|
4
4
|
"description": "Catalyst content validations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"api-extractor": "yarn clean-api-extractor && api-extractor run --local --verbose --diagnostics --typescript-compiler-folder ./node_modules/typescript",
|
|
10
10
|
"api-extractor-ci": "yarn clean-api-extractor && api-extractor run --typescript-compiler-folder ./node_modules/typescript",
|
|
11
11
|
"build": "tsc -p tsconfig.json",
|
|
12
|
+
"build:watch": "tsc -p tsconfig.json --watch",
|
|
12
13
|
"lint:check": "eslint '**/*.{js,ts}'",
|
|
13
14
|
"lint:fix": "eslint '**/*.{js,ts}' --fix",
|
|
14
15
|
"test": "jest --runInBand --detectOpenHandles --colors --coverage",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"@typescript-eslint/eslint-plugin": "5.21.0",
|
|
41
42
|
"@typescript-eslint/parser": "5.21.0",
|
|
42
43
|
"@well-known-components/env-config-provider": "^1.1.1",
|
|
44
|
+
"@well-known-components/http-server": "^1.1.6",
|
|
43
45
|
"eslint": "8.14.0",
|
|
44
46
|
"eslint-config-prettier": "8.5.0",
|
|
45
47
|
"eslint-plugin-prettier": "4.0.0",
|
|
@@ -49,11 +51,14 @@
|
|
|
49
51
|
"typescript": "^4.7.3"
|
|
50
52
|
},
|
|
51
53
|
"dependencies": {
|
|
54
|
+
"@dcl/block-indexer": "^1.0.0-20221223191317.commit-2d753e7",
|
|
52
55
|
"@dcl/content-hash-tree": "^1.1.3",
|
|
53
56
|
"@dcl/hashing": "1.1.2",
|
|
54
57
|
"@dcl/schemas": "^5.4.2",
|
|
55
58
|
"@dcl/urn-resolver": "2.0.3",
|
|
56
|
-
"@well-known-components/interfaces": "1.1.3",
|
|
59
|
+
"@well-known-components/interfaces": "^1.1.3",
|
|
60
|
+
"@well-known-components/logger": "^3.0.0",
|
|
61
|
+
"@well-known-components/metrics": "^2.0.1",
|
|
57
62
|
"@well-known-components/thegraph-component": "^1.2.0",
|
|
58
63
|
"ms": "2.1.3",
|
|
59
64
|
"sharp": "^0.30.6"
|
|
@@ -61,5 +66,5 @@
|
|
|
61
66
|
"files": [
|
|
62
67
|
"dist"
|
|
63
68
|
],
|
|
64
|
-
"commit": "
|
|
69
|
+
"commit": "91581f61ac7968388e43da7cc97903166667bb4a"
|
|
65
70
|
}
|