@dcl/content-validator 1.0.1-20220125145032.commit-8d453f0 → 1.0.1

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.
@@ -172,18 +172,22 @@
172
172
  {
173
173
  "kind": "Variable",
174
174
  "canonicalReference": "@dcl/content-validator!ADR_45_TIMESTAMP:var",
175
- "docComment": "/**\n * @public\n */\n",
175
+ "docComment": "/**\n * 1648771200000 = April 1st 2022 UTC\n *\n * @public\n */\n",
176
176
  "excerptTokens": [
177
177
  {
178
178
  "kind": "Content",
179
- "text": "ADR_45_TIMESTAMP = 1648954800000"
179
+ "text": "ADR_45_TIMESTAMP: "
180
+ },
181
+ {
182
+ "kind": "Content",
183
+ "text": "number"
180
184
  }
181
185
  ],
182
186
  "releaseTag": "Public",
183
187
  "name": "ADR_45_TIMESTAMP",
184
188
  "variableTypeTokenRange": {
185
- "startIndex": 0,
186
- "endIndex": 0
189
+ "startIndex": 1,
190
+ "endIndex": 2
187
191
  }
188
192
  },
189
193
  {
@@ -321,6 +325,40 @@
321
325
  "endIndex": 5
322
326
  }
323
327
  },
328
+ {
329
+ "kind": "TypeAlias",
330
+ "canonicalReference": "@dcl/content-validator!ContentValidatorComponents:type",
331
+ "docComment": "/**\n * Components that can be used to validate deployments.\n *\n * @public\n */\n",
332
+ "excerptTokens": [
333
+ {
334
+ "kind": "Content",
335
+ "text": "export declare type ContentValidatorComponents = "
336
+ },
337
+ {
338
+ "kind": "Content",
339
+ "text": "{\n logs: "
340
+ },
341
+ {
342
+ "kind": "Reference",
343
+ "text": "ILoggerComponent",
344
+ "canonicalReference": "@well-known-components/interfaces!ILoggerComponent:type"
345
+ },
346
+ {
347
+ "kind": "Content",
348
+ "text": ";\n}"
349
+ },
350
+ {
351
+ "kind": "Content",
352
+ "text": ";"
353
+ }
354
+ ],
355
+ "releaseTag": "Public",
356
+ "name": "ContentValidatorComponents",
357
+ "typeTokenRange": {
358
+ "startIndex": 1,
359
+ "endIndex": 4
360
+ }
361
+ },
324
362
  {
325
363
  "kind": "Variable",
326
364
  "canonicalReference": "@dcl/content-validator!createValidator:var",
@@ -341,7 +379,25 @@
341
379
  },
342
380
  {
343
381
  "kind": "Content",
344
- "text": ") => "
382
+ "text": ", components?: "
383
+ },
384
+ {
385
+ "kind": "Reference",
386
+ "text": "Pick",
387
+ "canonicalReference": "!Pick:type"
388
+ },
389
+ {
390
+ "kind": "Content",
391
+ "text": "<"
392
+ },
393
+ {
394
+ "kind": "Reference",
395
+ "text": "ContentValidatorComponents",
396
+ "canonicalReference": "@dcl/content-validator!ContentValidatorComponents:type"
397
+ },
398
+ {
399
+ "kind": "Content",
400
+ "text": ", \"logs\"> | undefined) => "
345
401
  },
346
402
  {
347
403
  "kind": "Reference",
@@ -353,7 +409,7 @@
353
409
  "name": "createValidator",
354
410
  "variableTypeTokenRange": {
355
411
  "startIndex": 1,
356
- "endIndex": 5
412
+ "endIndex": 9
357
413
  }
358
414
  },
359
415
  {
@@ -898,6 +954,15 @@
898
954
  "text": "ValidationArgs",
899
955
  "canonicalReference": "@dcl/content-validator!ValidationArgs:type"
900
956
  },
957
+ {
958
+ "kind": "Content",
959
+ "text": ", logs?: "
960
+ },
961
+ {
962
+ "kind": "Reference",
963
+ "text": "ILoggerComponent.ILogger",
964
+ "canonicalReference": "@well-known-components/interfaces!ILoggerComponent.ILogger:type"
965
+ },
901
966
  {
902
967
  "kind": "Content",
903
968
  "text": ") => "
@@ -938,7 +1003,7 @@
938
1003
  "name": "Validation",
939
1004
  "typeTokenRange": {
940
1005
  "startIndex": 1,
941
- "endIndex": 10
1006
+ "endIndex": 12
942
1007
  }
943
1008
  },
944
1009
  {
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { ExternalCalls, Validator } from './types';
1
+ import { ContentValidatorComponents, ExternalCalls, Validator } from './types';
2
2
  export * from './types';
3
3
  export * from './validations';
4
4
  /**
5
5
  * Creates a validator instance with given external calls.
6
6
  * @public
7
7
  */
8
- export declare const createValidator: (externalCalls: ExternalCalls) => Validator;
8
+ export declare const createValidator: (externalCalls: ExternalCalls, components?: Pick<ContentValidatorComponents, "logs"> | undefined) => Validator;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAM,SAAS,EAAE,MAAM,SAAS,CAAA;AAGtD,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,kBAAmB,aAAa,KAAG,SAQ7D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAM,SAAS,EAAE,MAAM,SAAS,CAAA;AAGlF,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,kBACX,aAAa,wEAE3B,SAYD,CAAA"}
package/dist/index.js CHANGED
@@ -19,12 +19,15 @@ __exportStar(require("./validations"), exports);
19
19
  * Creates a validator instance with given external calls.
20
20
  * @public
21
21
  */
22
- const createValidator = (externalCalls) => ({
22
+ const createValidator = (externalCalls, components) => ({
23
23
  validate: async (deployment) => {
24
+ const logs = components?.logs.getLogger('ContentValidator');
24
25
  for (const validation of validations_1.validations) {
25
- const result = await validation.validate({ deployment, externalCalls });
26
- if (!result.ok)
26
+ const result = await validation.validate({ deployment, externalCalls }, logs);
27
+ if (!result.ok) {
28
+ logs?.debug(`Validation failed:\n${result.errors?.join('\n')}`);
27
29
  return result;
30
+ }
28
31
  }
29
32
  return types_1.OK;
30
33
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mCAAsD;AACtD,+CAA2C;AAE3C,0CAAuB;AACvB,gDAA6B;AAE7B;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,aAA4B,EAAa,EAAE,CAAC,CAAC;IAC3E,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QAC7B,KAAK,MAAM,UAAU,IAAI,yBAAW,EAAE;YACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAA;YACvE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAA;SAC9B;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AARW,QAAA,eAAe,mBAQ1B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mCAAkF;AAClF,+CAA2C;AAE3C,0CAAuB;AACvB,gDAA6B;AAE7B;;;GAGG;AACI,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,UAAqD,EAC1C,EAAE,CAAC,CAAC;IACf,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAC3D,KAAK,MAAM,UAAU,IAAI,yBAAW,EAAE;YACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAA;YAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;gBACd,IAAI,EAAE,KAAK,CAAC,uBAAuB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC/D,OAAO,MAAM,CAAA;aACd;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AAfW,QAAA,eAAe,mBAe1B"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ILoggerComponent } from '@well-known-components/interfaces';
1
2
  import { AuditInfo, ContentFileHash, Entity, EntityId, Fetcher } from 'dcl-catalyst-commons';
2
3
  /**
3
4
  * @public
@@ -77,7 +78,7 @@ export declare type ValidationResponse = {
77
78
  * @public
78
79
  */
79
80
  export declare type Validation = {
80
- validate: (args: ValidationArgs) => ValidationResponse | Promise<ValidationResponse>;
81
+ validate: (args: ValidationArgs, logs?: ILoggerComponent.ILogger) => ValidationResponse | Promise<ValidationResponse>;
81
82
  };
82
83
  /**
83
84
  * @public
@@ -102,4 +103,11 @@ export declare const conditionalValidation: (condition: ConditionalValidation) =
102
103
  * @public
103
104
  */
104
105
  export declare const fromErrors: (...errors: Errors) => ValidationResponse;
106
+ /**
107
+ * Components that can be used to validate deployments.
108
+ * @public
109
+ */
110
+ export declare type ContentValidatorComponents = {
111
+ logs: ILoggerComponent;
112
+ };
105
113
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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":";;;AAqGA;;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,qBAAqB,GAAG,CAAC,SAAgC,EAAc,EAAE,CAAC,CAAC;IACtF,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YACtC,OAAO,IAAA,wBAAgB,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;SACjD;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AAPW,QAAA,qBAAqB,yBAOhC;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
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAsGA;;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,qBAAqB,GAAG,CAAC,SAAgC,EAAc,EAAE,CAAC,CAAC;IACtF,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YACtC,OAAO,IAAA,wBAAgB,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;SACjD;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AAPW,QAAA,qBAAqB,yBAOhC;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":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAA;AAoTnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAwCpB,CAAA"}
1
+ {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,UAAU,EAAE,MAAM,aAAa,CAAA;AA+BnE;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAiTpB,CAAA"}
@@ -7,8 +7,14 @@ exports.scenes = void 0;
7
7
  const dcl_catalyst_commons_1 = require("dcl-catalyst-commons");
8
8
  const ms_1 = __importDefault(require("ms"));
9
9
  const types_1 = require("../../types");
10
- const getAuthorizations = async (owner, operator, timestamp, externalCalls) => {
11
- const query = `
10
+ /**
11
+ * Checks if the given address has access to the given parcel at the given timestamp.
12
+ * @public
13
+ */
14
+ exports.scenes = {
15
+ validate: async ({ deployment, externalCalls }, logs) => {
16
+ const getAuthorizations = async (owner, operator, timestamp) => {
17
+ const query = `
12
18
  query GetAuthorizations($owner: String!, $operator: String!, $timestamp: Int!) {
13
19
  authorizations(
14
20
  where: {
@@ -23,26 +29,26 @@ const getAuthorizations = async (owner, operator, timestamp, externalCalls) => {
23
29
  isApproved
24
30
  }
25
31
  }`;
26
- const variables = {
27
- owner,
28
- operator,
29
- timestamp: Math.floor(timestamp / 1000), // js(ms) -> UNIX(s)
30
- };
31
- try {
32
- return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).authorizations;
33
- }
34
- catch (error) {
35
- // this.LOGGER.error(`Error fetching authorizations for ${owner}`, error)
36
- throw error;
37
- }
38
- };
39
- const getEstate = async (estateId, timestamp, externalCalls) => {
40
- /**
41
- * You can use `owner`, `operator` and `updateOperator` to check the current value for that estate.
42
- * Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
43
- * For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
44
- */
45
- const query = `
32
+ const variables = {
33
+ owner,
34
+ operator,
35
+ timestamp: Math.floor(timestamp / 1000), // js(ms) -> UNIX(s)
36
+ };
37
+ try {
38
+ return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).authorizations;
39
+ }
40
+ catch (error) {
41
+ logs?.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 = `
46
52
  query GetEstate($estateId: String!, $timestamp: Int!) {
47
53
  estates(where:{ id: $estateId }) {
48
54
  id
@@ -72,25 +78,25 @@ const getEstate = async (estateId, timestamp, externalCalls) => {
72
78
  }
73
79
  }
74
80
  }`;
75
- const variables = {
76
- estateId,
77
- timestamp: Math.floor(timestamp / 1000), // UNIX
78
- };
79
- try {
80
- return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).estates[0];
81
- }
82
- catch (error) {
83
- // this.LOGGER.error(`Error fetching estate (${estateId})`, error)
84
- throw error;
85
- }
86
- };
87
- const getParcel = async (x, y, timestamp, externalCalls) => {
88
- /**
89
- * You can use `owner`, `operator` and `updateOperator` to check the current value for that parcel.
90
- * Keep in mind that each association (owners, operators, etc) is capped to a thousand (1000) results.
91
- * For more information, you can use the query explorer at https://thegraph.com/explorer/subgraph/decentraland/land-manager
92
- */
93
- const query = `
81
+ const variables = {
82
+ estateId,
83
+ timestamp: Math.floor(timestamp / 1000), // UNIX
84
+ };
85
+ try {
86
+ return (await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables)).estates[0];
87
+ }
88
+ catch (error) {
89
+ logs?.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 = `
94
100
  query GetParcel($x: Int!, $y: Int!, $timestamp: Int!) {
95
101
  parcels(where:{ x: $x, y: $y }) {
96
102
  estates(
@@ -127,86 +133,79 @@ const getParcel = async (x, y, timestamp, externalCalls) => {
127
133
  }
128
134
  }
129
135
  }`;
130
- const variables = {
131
- x,
132
- y,
133
- timestamp: Math.floor(timestamp / 1000), // UNIX
134
- };
135
- try {
136
- const r = await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables);
137
- if (r.parcels && r.parcels.length)
138
- return r.parcels[0];
139
- // this.LOGGER.error(`Error fetching parcel (${x}, ${y}, ${timestamp}): ${JSON.stringify(r)}`)
140
- throw new Error(`Error fetching parcel (${x}, ${y}), ${timestamp}`);
141
- }
142
- catch (error) {
143
- // this.LOGGER.error(`Error fetching parcel (${x}, ${y}, ${timestamp})`, error)
144
- throw error;
145
- }
146
- };
147
- const hasAccessThroughAuthorizations = async (owner, ethAddress, timestamp, externalCalls) => {
148
- /* You also get access if you received:
149
- * - an authorization with isApproved and type Operator, ApprovalForAll or UpdateManager
150
- * at that time
151
- */
152
- const authorizations = await getAuthorizations(owner.toLowerCase(), ethAddress.toLowerCase(), timestamp, externalCalls);
153
- const firstOperatorAuthorization = authorizations.find((authorization) => authorization.type === 'Operator');
154
- const firstApprovalForAllAuthorization = authorizations.find((authorization) => authorization.type === 'ApprovalForAll');
155
- const firstUpdateManagerAuthorization = authorizations.find((authorization) => authorization.type === 'UpdateManager');
156
- if (firstOperatorAuthorization?.isApproved ||
157
- firstApprovalForAllAuthorization?.isApproved ||
158
- firstUpdateManagerAuthorization?.isApproved) {
159
- return true;
160
- }
161
- return false;
162
- };
163
- const hasAccessThroughFirstLevelAuthorities = async (target, ethAddress) => {
164
- const firstLevelAuthorities = [...target.owners, ...target.operators, ...target.updateOperators]
165
- .filter((addressSnapshot) => addressSnapshot.address)
166
- .map((addressSnapshot) => addressSnapshot.address.toLowerCase());
167
- return firstLevelAuthorities.includes(ethAddress.toLowerCase());
168
- };
169
- const isEstateUpdateAuthorized = async (estateId, timestamp, ethAddress, externalCalls) => {
170
- const estate = await getEstate(estateId.toString(), timestamp, externalCalls);
171
- if (estate) {
172
- return ((await hasAccessThroughFirstLevelAuthorities(estate, ethAddress)) ||
173
- (await hasAccessThroughAuthorizations(estate.owners[0].address, ethAddress, timestamp, externalCalls)));
174
- }
175
- throw new Error(`Couldn\'t find the state ${estateId}`);
176
- };
177
- const isParcelUpdateAuthorized = async (x, y, timestamp, ethAddress, externalCalls) => {
178
- /* You get direct access if you were the:
179
- * - owner
180
- * - operator
181
- * - update operator
182
- * at that time
183
- */
184
- const parcel = await getParcel(x, y, timestamp, externalCalls);
185
- if (parcel) {
186
- const belongsToEstate = parcel.estates != undefined && parcel.estates.length > 0 && parcel.estates[0].estateId != undefined;
187
- return ((await hasAccessThroughFirstLevelAuthorities(parcel, ethAddress)) ||
188
- (await hasAccessThroughAuthorizations(parcel.owners[0].address, ethAddress, timestamp, externalCalls)) ||
189
- (belongsToEstate &&
190
- (await isEstateUpdateAuthorized(parcel.estates[0].estateId, timestamp, ethAddress, externalCalls))));
191
- }
192
- throw new Error(`Parcel(${x},${y},${timestamp}) not found`);
193
- };
194
- const checkParcelAccess = async (x, y, timestamp, ethAddress, externalCalls) => {
195
- try {
196
- return await (0, dcl_catalyst_commons_1.retry)(() => isParcelUpdateAuthorized(x, y, timestamp, ethAddress, externalCalls), 5, '0.1s');
197
- }
198
- catch (error) {
199
- // this.LOGGER.error(`Error checking parcel access (${x}, ${y}, ${timestamp}, ${ethAddress}).`, error)
200
- throw error;
201
- }
202
- };
203
- const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
204
- /**
205
- * Checks if the given address has access to the given parcel at the given timestamp.
206
- * @public
207
- */
208
- exports.scenes = {
209
- validate: async ({ deployment, externalCalls }) => {
136
+ const variables = {
137
+ x,
138
+ y,
139
+ timestamp: Math.floor(timestamp / 1000), // UNIX
140
+ };
141
+ try {
142
+ const r = await externalCalls.queryGraph(externalCalls.subgraphs.L1.landManager, query, variables);
143
+ if (r.parcels && r.parcels.length)
144
+ return r.parcels[0];
145
+ logs?.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
+ logs?.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 (0, dcl_catalyst_commons_1.retry)(() => isParcelUpdateAuthorized(x, y, timestamp, ethAddress, externalCalls), 5, '0.1s');
202
+ }
203
+ catch (error) {
204
+ logs?.error(`Error checking parcel access (${x}, ${y}, ${timestamp}, ${ethAddress}).`);
205
+ throw error;
206
+ }
207
+ };
208
+ const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
210
209
  const { entity } = deployment;
211
210
  const { pointers, timestamp } = entity;
212
211
  const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
@@ -1 +1 @@
1
- {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/scenes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"AAKA,OAAO,EAAM,UAAU,EAAE,MAAM,aAAa,CAAA;AA0B5C,oBAAY,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,sBAAsB,EAAE,CAAA;CAChC,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AA4OD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,UAyEvB,CAAA"}
1
+ {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"AAKA,OAAO,EAAM,UAAU,EAAE,MAAM,aAAa,CAAA;AA0B5C,oBAAY,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,sBAAsB,EAAE,CAAA;CAChC,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AA8BD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,UA2QvB,CAAA"}
@@ -40,162 +40,159 @@ const parseUrnNoFail = async (urn) => {
40
40
  catch { }
41
41
  return null;
42
42
  };
43
- const hasPermission = async (subgraphUrl, collection, itemId, block, entity, externalCalls) => {
44
- try {
45
- const { content, metadata } = entity;
46
- const permissions = await getCollectionItems(subgraphUrl, collection, itemId, block, externalCalls);
47
- const ethAddressLowercase = entity.ethAddress.toLowerCase();
48
- if (!!permissions.contentHash) {
49
- const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
50
- const calculateHashes = () => {
51
- // Compare both by key and hash
52
- const compare = (a, b) => {
53
- if (a.hash > b.hash)
54
- return 1;
55
- else if (a.hash < b.hash)
56
- return -1;
57
- else
58
- return a.key > b.key ? 1 : -1;
59
- };
60
- const contentAsJson = (content ?? []).map(({ file, hash }) => ({ key: file, hash })).sort(compare);
61
- const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
62
- return Promise.all([dcl_catalyst_commons_1.Hashing.calculateBufferHash(buffer), dcl_catalyst_commons_1.Hashing.calculateIPFSHash(buffer)]);
63
- };
64
- return deployedByCommittee && (await calculateHashes()).includes(permissions.contentHash);
65
- }
66
- else {
67
- const addressHasAccess = (permissions.collectionCreator && permissions.collectionCreator === ethAddressLowercase) ||
68
- (permissions.collectionManagers && permissions.collectionManagers.includes(ethAddressLowercase)) ||
69
- (permissions.itemManagers && permissions.itemManagers.includes(ethAddressLowercase));
70
- // Deployments to the content server are made after the collection is completed, so that the committee can then approve it.
71
- // That's why isCompleted must be true, but isApproved must be false. After the committee approves the wearable, there can't be any more changes
72
- const isCollectionValid = !permissions.isApproved && permissions.isCompleted;
73
- return addressHasAccess && isCollectionValid;
74
- }
75
- }
76
- catch (error) {
77
- // this.LOGGER.error(`Error checking permission for (${collection}-${itemId}) at block ${block}`, error)
78
- return false;
79
- }
80
- };
81
- const getCollectionItems = async (subgraphUrl, collection, itemId, block, externalCalls) => {
82
- const query = `
83
- query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
84
- collections(where:{ id: $collection }, block: { number: $block }) {
85
- creator
86
- managers
87
- isApproved
88
- isCompleted
89
- items(where:{ id: $itemId }) {
90
- managers
91
- contentHash
92
- }
93
- }
94
-
95
- accounts(where:{ isCommitteeMember: true }, block: { number: $block }) {
96
- id
97
- }
98
- }`;
99
- const result = await externalCalls.queryGraph(subgraphUrl, query, {
100
- collection,
101
- itemId: `${collection}-${itemId}`,
102
- block,
103
- });
104
- const collectionResult = result.collections[0];
105
- const itemResult = collectionResult?.items[0];
106
- return {
107
- collectionCreator: collectionResult?.creator,
108
- collectionManagers: collectionResult?.managers,
109
- isApproved: collectionResult?.isApproved,
110
- isCompleted: collectionResult?.isCompleted,
111
- itemManagers: itemResult?.managers,
112
- contentHash: itemResult?.contentHash,
113
- committee: result.accounts.map(({ id }) => id.toLowerCase()),
114
- };
115
- };
116
- const getWindowFromTimestamp = (timestamp) => {
117
- const windowMin = timestamp - Math.floor(ACCESS_WINDOW_IN_SECONDS / 2);
118
- const windowMax = timestamp + Math.ceil(ACCESS_WINDOW_IN_SECONDS / 2);
119
- return {
120
- max: windowMax,
121
- min: windowMin,
122
- };
123
- };
124
- const findBlocksForTimestamp = async (blocksSubgraphUrl, timestamp, externalCalls) => {
125
- const query = `
126
- query getBlockForTimestamp($timestamp: Int!, $timestampMin: Int!, $timestampMax: Int!, $timestamp5Min: Int!, $timestamp5MinMax: Int!, $timestamp5MinMin: Int!) {
127
- before: blocks(where: { timestamp_lte: $timestamp, timestamp_gte: $timestampMin }, first: 1, orderBy: timestamp, orderDirection: desc) {
128
- number
129
- }
130
- after: blocks(where: { timestamp_gte: $timestamp, timestamp_lte: $timestampMax }, first: 1, orderBy: timestamp, orderDirection: asc) {
131
- number
132
- }
133
- fiveMinBefore: blocks(where: { timestamp_lte: $timestamp5Min, timestamp_gte: $timestamp5MinMin, }, first: 1, orderBy: timestamp, orderDirection: desc) {
134
- number
135
- }
136
- fiveMinAfter: blocks(where: { timestamp_gte: $timestamp5Min, timestamp_lte: $timestamp5MinMax }, first: 1, orderBy: timestamp, orderDirection: asc) {
137
- number
138
- }
139
- }
140
- `;
141
- try {
142
- const timestampSec = Math.ceil(timestamp / 1000);
143
- const timestamp5MinAgo = timestampSec - 60 * 5;
144
- const window = getWindowFromTimestamp(timestampSec);
145
- const window5MinAgo = getWindowFromTimestamp(timestamp5MinAgo);
146
- const result = await externalCalls.queryGraph(blocksSubgraphUrl, query, {
147
- timestamp: timestampSec,
148
- timestampMax: window.max,
149
- timestampMin: window.min,
150
- timestamp5Min: timestamp5MinAgo,
151
- timestamp5MinMax: window5MinAgo.max,
152
- timestamp5MinMin: window5MinAgo.min,
153
- });
154
- // To get the deployment's block number, we check the one immediately after the entity's timestamp. Since it could not exist, we default to the one immediately before.
155
- const blockNumberAtDeployment = result.after[0]?.number ?? result.before[0]?.number;
156
- const blockNumberFiveMinBeforeDeployment = result.fiveMinAfter[0]?.number ?? result.fiveMinBefore[0]?.number;
157
- if (blockNumberAtDeployment === undefined && blockNumberFiveMinBeforeDeployment === undefined) {
158
- throw new Error(`Failed to find blocks for the specific timestamp`);
159
- }
160
- return {
161
- blockNumberAtDeployment: !!blockNumberAtDeployment ? parseInt(blockNumberAtDeployment) : undefined,
162
- blockNumberFiveMinBeforeDeployment: !!blockNumberFiveMinBeforeDeployment
163
- ? parseInt(blockNumberFiveMinBeforeDeployment)
164
- : undefined,
165
- };
166
- }
167
- catch (error) {
168
- // this.LOGGER.error(`Error fetching the block number for timestamp`, { timestamp, error: error.message })
169
- throw error;
170
- }
171
- };
172
- const checkCollectionAccess = async (blocksSubgraphUrl, collectionsSubgraphUrl, collection, itemId, entity, externalCalls) => {
173
- const { timestamp } = entity;
174
- try {
175
- const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await findBlocksForTimestamp(blocksSubgraphUrl, timestamp, externalCalls);
176
- // 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
177
- // 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
178
- // have access now, or had access 5 minutes ago.
179
- const hasPermissionOnBlock = async (blockNumber) => !!blockNumber &&
180
- (await hasPermission(collectionsSubgraphUrl, collection, itemId, blockNumber, entity, externalCalls));
181
- return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
182
- (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
183
- }
184
- catch (error) {
185
- // this.LOGGER.error(
186
- // `Error checking wearable access (${collection}, ${itemId}, ${accessParams.ethAddress}, ${timestamp}, ${blocksSubgraphUrl}).`,
187
- // error
188
- // )
189
- return false;
190
- }
191
- };
192
43
  /**
193
44
  * Given the pointers (URNs), determine which layer should be used to check the access.
194
45
  * Checks if the ethereum address has access to the collection.
195
46
  * @public
196
47
  */
197
48
  exports.wearables = {
198
- validate: async ({ deployment, externalCalls }) => {
49
+ validate: async ({ deployment, externalCalls }, logs) => {
50
+ const hasPermission = async (subgraphUrl, collection, itemId, block, entity) => {
51
+ try {
52
+ const { content, metadata } = entity;
53
+ const permissions = await getCollectionItems(subgraphUrl, collection, itemId, block);
54
+ const ethAddressLowercase = entity.ethAddress.toLowerCase();
55
+ if (!!permissions.contentHash) {
56
+ const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
57
+ const calculateHashes = () => {
58
+ // Compare both by key and hash
59
+ const compare = (a, b) => {
60
+ if (a.hash > b.hash)
61
+ return 1;
62
+ else if (a.hash < b.hash)
63
+ return -1;
64
+ else
65
+ return a.key > b.key ? 1 : -1;
66
+ };
67
+ const contentAsJson = (content ?? []).map(({ file, hash }) => ({ key: file, hash })).sort(compare);
68
+ const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
69
+ return Promise.all([dcl_catalyst_commons_1.Hashing.calculateBufferHash(buffer), dcl_catalyst_commons_1.Hashing.calculateIPFSHash(buffer)]);
70
+ };
71
+ return deployedByCommittee && (await calculateHashes()).includes(permissions.contentHash);
72
+ }
73
+ else {
74
+ const addressHasAccess = (permissions.collectionCreator && permissions.collectionCreator === ethAddressLowercase) ||
75
+ (permissions.collectionManagers && permissions.collectionManagers.includes(ethAddressLowercase)) ||
76
+ (permissions.itemManagers && permissions.itemManagers.includes(ethAddressLowercase));
77
+ // Deployments to the content server are made after the collection is completed, so that the committee can then approve it.
78
+ // That's why isCompleted must be true, but isApproved must be false. After the committee approves the wearable, there can't be any more changes
79
+ const isCollectionValid = !permissions.isApproved && permissions.isCompleted;
80
+ return addressHasAccess && isCollectionValid;
81
+ }
82
+ }
83
+ catch (error) {
84
+ logs?.error(`Error checking permission for (${collection}-${itemId}) at block ${block}`);
85
+ return false;
86
+ }
87
+ };
88
+ const getCollectionItems = async (subgraphUrl, collection, itemId, block) => {
89
+ const query = `
90
+ query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
91
+ collections(where:{ id: $collection }, block: { number: $block }) {
92
+ creator
93
+ managers
94
+ isApproved
95
+ isCompleted
96
+ items(where:{ id: $itemId }) {
97
+ managers
98
+ contentHash
99
+ }
100
+ }
101
+
102
+ accounts(where:{ isCommitteeMember: true }, block: { number: $block }) {
103
+ id
104
+ }
105
+ }`;
106
+ const result = await externalCalls.queryGraph(subgraphUrl, query, {
107
+ collection,
108
+ itemId: `${collection}-${itemId}`,
109
+ block,
110
+ });
111
+ const collectionResult = result.collections[0];
112
+ const itemResult = collectionResult?.items[0];
113
+ return {
114
+ collectionCreator: collectionResult?.creator,
115
+ collectionManagers: collectionResult?.managers,
116
+ isApproved: collectionResult?.isApproved,
117
+ isCompleted: collectionResult?.isCompleted,
118
+ itemManagers: itemResult?.managers,
119
+ contentHash: itemResult?.contentHash,
120
+ committee: result.accounts.map(({ id }) => id.toLowerCase()),
121
+ };
122
+ };
123
+ const getWindowFromTimestamp = (timestamp) => {
124
+ const windowMin = timestamp - Math.floor(ACCESS_WINDOW_IN_SECONDS / 2);
125
+ const windowMax = timestamp + Math.ceil(ACCESS_WINDOW_IN_SECONDS / 2);
126
+ return {
127
+ max: windowMax,
128
+ min: windowMin,
129
+ };
130
+ };
131
+ const findBlocksForTimestamp = async (blocksSubgraphUrl, timestamp) => {
132
+ const query = `
133
+ query getBlockForTimestamp($timestamp: Int!, $timestampMin: Int!, $timestampMax: Int!, $timestamp5Min: Int!, $timestamp5MinMax: Int!, $timestamp5MinMin: Int!) {
134
+ before: blocks(where: { timestamp_lte: $timestamp, timestamp_gte: $timestampMin }, first: 1, orderBy: timestamp, orderDirection: desc) {
135
+ number
136
+ }
137
+ after: blocks(where: { timestamp_gte: $timestamp, timestamp_lte: $timestampMax }, first: 1, orderBy: timestamp, orderDirection: asc) {
138
+ number
139
+ }
140
+ fiveMinBefore: blocks(where: { timestamp_lte: $timestamp5Min, timestamp_gte: $timestamp5MinMin, }, first: 1, orderBy: timestamp, orderDirection: desc) {
141
+ number
142
+ }
143
+ fiveMinAfter: blocks(where: { timestamp_gte: $timestamp5Min, timestamp_lte: $timestamp5MinMax }, first: 1, orderBy: timestamp, orderDirection: asc) {
144
+ number
145
+ }
146
+ }
147
+ `;
148
+ try {
149
+ const timestampSec = Math.ceil(timestamp / 1000);
150
+ const timestamp5MinAgo = timestampSec - 60 * 5;
151
+ const window = getWindowFromTimestamp(timestampSec);
152
+ const window5MinAgo = getWindowFromTimestamp(timestamp5MinAgo);
153
+ const result = await externalCalls.queryGraph(blocksSubgraphUrl, query, {
154
+ timestamp: timestampSec,
155
+ timestampMax: window.max,
156
+ timestampMin: window.min,
157
+ timestamp5Min: timestamp5MinAgo,
158
+ timestamp5MinMax: window5MinAgo.max,
159
+ timestamp5MinMin: window5MinAgo.min,
160
+ });
161
+ // To get the deployment's block number, we check the one immediately after the entity's timestamp. Since it could not exist, we default to the one immediately before.
162
+ const blockNumberAtDeployment = result.after[0]?.number ?? result.before[0]?.number;
163
+ const blockNumberFiveMinBeforeDeployment = result.fiveMinAfter[0]?.number ?? result.fiveMinBefore[0]?.number;
164
+ if (blockNumberAtDeployment === undefined && blockNumberFiveMinBeforeDeployment === undefined) {
165
+ throw new Error(`Failed to find blocks for the specific timestamp`);
166
+ }
167
+ return {
168
+ blockNumberAtDeployment: !!blockNumberAtDeployment ? parseInt(blockNumberAtDeployment) : undefined,
169
+ blockNumberFiveMinBeforeDeployment: !!blockNumberFiveMinBeforeDeployment
170
+ ? parseInt(blockNumberFiveMinBeforeDeployment)
171
+ : undefined,
172
+ };
173
+ }
174
+ catch (e) {
175
+ const error = e?.message;
176
+ logs?.error(`Error fetching the block number for timestamp`, { timestamp, error });
177
+ throw error;
178
+ }
179
+ };
180
+ const checkCollectionAccess = async (blocksSubgraphUrl, collectionsSubgraphUrl, collection, itemId, entity) => {
181
+ const { timestamp } = entity;
182
+ try {
183
+ const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await findBlocksForTimestamp(blocksSubgraphUrl, timestamp);
184
+ // 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
185
+ // 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
186
+ // have access now, or had access 5 minutes ago.
187
+ const hasPermissionOnBlock = async (blockNumber) => !!blockNumber && (await hasPermission(collectionsSubgraphUrl, collection, itemId, blockNumber, entity));
188
+ return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
189
+ (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
190
+ }
191
+ catch (error) {
192
+ logs?.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}, ${blocksSubgraphUrl}).`);
193
+ return false;
194
+ }
195
+ };
199
196
  const { pointers } = deployment.entity;
200
197
  const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
201
198
  const resolvedPointers = [];
@@ -229,7 +226,10 @@ exports.wearables = {
229
226
  const collectionsSubgraphUrl = isL1
230
227
  ? externalCalls.subgraphs.L1.collections
231
228
  : externalCalls.subgraphs.L2.collections;
232
- const hasAccess = await checkCollectionAccess(blocksSubgraphUrl, collectionsSubgraphUrl, collection, parsed.id, { ...deployment.entity, ethAddress }, externalCalls);
229
+ const hasAccess = await checkCollectionAccess(blocksSubgraphUrl, collectionsSubgraphUrl, collection, parsed.id, {
230
+ ...deployment.entity,
231
+ ethAddress,
232
+ });
233
233
  if (!hasAccess) {
234
234
  if (isL2)
235
235
  return (0, __1.validationFailed)(`The provided Eth Address does not have access to the following wearable: (${parsed.contractAddress}, ${parsed.id})`);
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,10 @@ import { DeploymentToValidate, ExternalCalls, Validation, ValidationArgs, Valida
4
4
  */
5
5
  export declare const validateInRow: (validationArgs: ValidationArgs, ...validations: Validation[]) => Promise<ValidationResponse>;
6
6
  /**
7
+ * 1648771200000 = April 1st 2022 UTC
7
8
  * @public
8
9
  */
9
- export declare const ADR_45_TIMESTAMP = 1648954800000;
10
+ export declare const ADR_45_TIMESTAMP: number;
10
11
  /**
11
12
  * DCL Launch Day
12
13
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUlH;;GAEG;AACH,eAAO,MAAM,aAAa,mBACR,cAAc,kBACd,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uEAAwD,CAAA;AAExF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+CAAoD,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,WAAW,2GAA6D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUlH;;GAEG;AACH,eAAO,MAAM,aAAa,mBACR,cAAc,kBACd,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwF,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uEAAwD,CAAA;AAExF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+CAAoD,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,WAAW,2GAA6D,CAAA"}
@@ -22,11 +22,12 @@ const validateInRow = async (validationArgs, ...validations) => {
22
22
  return types_1.OK;
23
23
  };
24
24
  exports.validateInRow = validateInRow;
25
- // todo: review/define date for entities v4 (for the time being, it is set for test purposes)
25
+ // Note: using env variable ADR_45_TIMESTAMP for test purposes
26
26
  /**
27
+ * 1648771200000 = April 1st 2022 UTC
27
28
  * @public
28
29
  */
29
- exports.ADR_45_TIMESTAMP = 1648954800000;
30
+ exports.ADR_45_TIMESTAMP = process.env.ADR_45_TIMESTAMP ? parseInt(process.env.ADR_45_TIMESTAMP) : 1648771200000;
30
31
  /**
31
32
  * DCL Launch Day
32
33
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AAErC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED,6FAA6F;AAC7F;;GAEG;AACU,QAAA,gBAAgB,GAAG,aAAa,CAAA;AAE7C;;;GAGG;AACU,QAAA,kCAAkC,GAAG,aAAa,CAAA;AAE/D;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,WAAW;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzE,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,mBAAQ,EAAE,iBAAO,CAAU,CAAA;AAExF;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAU,CAAA;AAErF;;;GAGG;AACU,QAAA,WAAW,GAAG,CAAC,GAAG,4BAAoB,EAAE,GAAG,2BAAmB,CAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AAErC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED,8DAA8D;AAC9D;;;GAGG;AACU,QAAA,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;AAErH;;;GAGG;AACU,QAAA,kCAAkC,GAAG,aAAa,CAAA;AAE/D;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,WAAW;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzE,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,mBAAQ,EAAE,iBAAO,CAAU,CAAA;AAExF;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAU,CAAA;AAErF;;;GAGG;AACU,QAAA,WAAW,GAAG,CAAC,GAAG,4BAAoB,EAAE,GAAG,2BAAmB,CAAU,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl/content-validator",
3
- "version": "1.0.1-20220125145032.commit-8d453f0",
3
+ "version": "1.0.1",
4
4
  "description": "Catalyst content validations",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -36,6 +36,7 @@
36
36
  "@dcl/schemas": "^3.1.1",
37
37
  "@dcl/urn-resolver": "^1.3.0",
38
38
  "@ethersproject/address": "^5.5.0",
39
+ "@well-known-components/interfaces": "1.1.1",
39
40
  "dcl-catalyst-commons": "7.2.2",
40
41
  "ms": "^2.1.3",
41
42
  "sharp": "^0.29.3"
@@ -43,5 +44,5 @@
43
44
  "files": [
44
45
  "dist"
45
46
  ],
46
- "commit": "8d453f06fae162ef14dde5e3e53e7b004bab41ad"
47
+ "commit": "4877aca738e26de54bf7f85ef45cc4249b69eb30"
47
48
  }