@dcl/content-validator 4.3.0 → 4.3.1-4304792003.commit-3da518e

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.
Files changed (141) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -5
  4. package/dist/index.js.map +1 -1
  5. package/dist/types.d.ts +9 -3
  6. package/dist/types.d.ts.map +1 -1
  7. package/dist/types.js.map +1 -1
  8. package/dist/validations/ADR45.d.ts +2 -2
  9. package/dist/validations/ADR45.d.ts.map +1 -1
  10. package/dist/validations/ADR45.js +3 -3
  11. package/dist/validations/ADR45.js.map +1 -1
  12. package/dist/validations/content.d.ts +6 -10
  13. package/dist/validations/content.d.ts.map +1 -1
  14. package/dist/validations/content.js +29 -24
  15. package/dist/validations/content.js.map +1 -1
  16. package/dist/validations/entity-structure.d.ts +2 -2
  17. package/dist/validations/entity-structure.d.ts.map +1 -1
  18. package/dist/validations/entity-structure.js +3 -3
  19. package/dist/validations/entity-structure.js.map +1 -1
  20. package/dist/validations/index.d.ts +2 -21
  21. package/dist/validations/index.d.ts.map +1 -1
  22. package/dist/validations/index.js +20 -18
  23. package/dist/validations/index.js.map +1 -1
  24. package/dist/validations/ipfs-hashing.d.ts +1 -2
  25. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  26. package/dist/validations/ipfs-hashing.js +2 -2
  27. package/dist/validations/ipfs-hashing.js.map +1 -1
  28. package/dist/validations/items/emotes.d.ts +4 -4
  29. package/dist/validations/items/emotes.d.ts.map +1 -1
  30. package/dist/validations/items/emotes.js +6 -6
  31. package/dist/validations/items/emotes.js.map +1 -1
  32. package/dist/validations/items/items.d.ts +4 -4
  33. package/dist/validations/items/items.d.ts.map +1 -1
  34. package/dist/validations/items/items.js +67 -52
  35. package/dist/validations/items/items.js.map +1 -1
  36. package/dist/validations/items/wearables.d.ts +3 -3
  37. package/dist/validations/items/wearables.d.ts.map +1 -1
  38. package/dist/validations/items/wearables.js +4 -4
  39. package/dist/validations/items/wearables.js.map +1 -1
  40. package/dist/validations/metadata-schema.d.ts +10 -1
  41. package/dist/validations/metadata-schema.d.ts.map +1 -1
  42. package/dist/validations/metadata-schema.js +9 -6
  43. package/dist/validations/metadata-schema.js.map +1 -1
  44. package/dist/validations/profile.d.ts +7 -10
  45. package/dist/validations/profile.d.ts.map +1 -1
  46. package/dist/validations/profile.js +57 -37
  47. package/dist/validations/profile.js.map +1 -1
  48. package/dist/validations/scene.d.ts +2 -2
  49. package/dist/validations/scene.d.ts.map +1 -1
  50. package/dist/validations/scene.js +8 -7
  51. package/dist/validations/scene.js.map +1 -1
  52. package/dist/validations/signature.d.ts +2 -2
  53. package/dist/validations/signature.d.ts.map +1 -1
  54. package/dist/validations/signature.js +8 -6
  55. package/dist/validations/signature.js.map +1 -1
  56. package/dist/validations/size.d.ts +2 -2
  57. package/dist/validations/size.d.ts.map +1 -1
  58. package/dist/validations/size.js +31 -29
  59. package/dist/validations/size.js.map +1 -1
  60. package/dist/validations/subgraph-access-checker/access.d.ts +7 -0
  61. package/dist/validations/subgraph-access-checker/access.d.ts.map +1 -0
  62. package/dist/validations/subgraph-access-checker/access.js +48 -0
  63. package/dist/validations/subgraph-access-checker/access.js.map +1 -0
  64. package/dist/validations/subgraph-access-checker/emotes.d.ts +3 -0
  65. package/dist/validations/subgraph-access-checker/emotes.d.ts.map +1 -0
  66. package/dist/validations/subgraph-access-checker/emotes.js +9 -0
  67. package/dist/validations/subgraph-access-checker/emotes.js.map +1 -0
  68. package/dist/validations/subgraph-access-checker/items/collection-asset.d.ts.map +1 -0
  69. package/dist/validations/subgraph-access-checker/items/collection-asset.js.map +1 -0
  70. package/dist/validations/{access-checker → subgraph-access-checker}/items/items.d.ts +2 -2
  71. package/dist/validations/subgraph-access-checker/items/items.d.ts.map +1 -0
  72. package/dist/validations/{access-checker → subgraph-access-checker}/items/items.js +26 -24
  73. package/dist/validations/subgraph-access-checker/items/items.js.map +1 -0
  74. package/dist/validations/subgraph-access-checker/items/off-chain-asset.d.ts.map +1 -0
  75. package/dist/validations/subgraph-access-checker/items/off-chain-asset.js.map +1 -0
  76. package/dist/validations/subgraph-access-checker/items/third-party-asset.d.ts.map +1 -0
  77. package/dist/validations/subgraph-access-checker/items/third-party-asset.js.map +1 -0
  78. package/dist/validations/subgraph-access-checker/profiles.d.ts +6 -0
  79. package/dist/validations/subgraph-access-checker/profiles.d.ts.map +1 -0
  80. package/dist/validations/subgraph-access-checker/profiles.js +105 -0
  81. package/dist/validations/subgraph-access-checker/profiles.js.map +1 -0
  82. package/dist/validations/subgraph-access-checker/scenes.d.ts +7 -0
  83. package/dist/validations/subgraph-access-checker/scenes.d.ts.map +1 -0
  84. package/dist/validations/subgraph-access-checker/scenes.js +262 -0
  85. package/dist/validations/subgraph-access-checker/scenes.js.map +1 -0
  86. package/dist/validations/subgraph-access-checker/stores.d.ts +7 -0
  87. package/dist/validations/subgraph-access-checker/stores.d.ts.map +1 -0
  88. package/dist/validations/subgraph-access-checker/stores.js +35 -0
  89. package/dist/validations/subgraph-access-checker/stores.js.map +1 -0
  90. package/dist/validations/subgraph-access-checker/the-graph-client.d.ts +10 -0
  91. package/dist/validations/subgraph-access-checker/the-graph-client.d.ts.map +1 -0
  92. package/dist/validations/subgraph-access-checker/the-graph-client.js.map +1 -0
  93. package/dist/validations/subgraph-access-checker/wearables.d.ts +3 -0
  94. package/dist/validations/subgraph-access-checker/wearables.d.ts.map +1 -0
  95. package/dist/validations/{access-checker → subgraph-access-checker}/wearables.js +4 -4
  96. package/dist/validations/subgraph-access-checker/wearables.js.map +1 -0
  97. package/dist/validations/validations.d.ts.map +1 -1
  98. package/dist/validations/validations.js +4 -4
  99. package/dist/validations/validations.js.map +1 -1
  100. package/package.json +5 -3
  101. package/dist/the-graph-client/the-graph-client.d.ts +0 -10
  102. package/dist/the-graph-client/the-graph-client.d.ts.map +0 -1
  103. package/dist/the-graph-client/the-graph-client.js.map +0 -1
  104. package/dist/validations/access-checker/access.d.ts +0 -7
  105. package/dist/validations/access-checker/access.d.ts.map +0 -1
  106. package/dist/validations/access-checker/access.js +0 -42
  107. package/dist/validations/access-checker/access.js.map +0 -1
  108. package/dist/validations/access-checker/emotes.d.ts +0 -3
  109. package/dist/validations/access-checker/emotes.d.ts.map +0 -1
  110. package/dist/validations/access-checker/emotes.js +0 -12
  111. package/dist/validations/access-checker/emotes.js.map +0 -1
  112. package/dist/validations/access-checker/items/collection-asset.d.ts.map +0 -1
  113. package/dist/validations/access-checker/items/collection-asset.js.map +0 -1
  114. package/dist/validations/access-checker/items/items.d.ts.map +0 -1
  115. package/dist/validations/access-checker/items/items.js.map +0 -1
  116. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +0 -1
  117. package/dist/validations/access-checker/items/off-chain-asset.js.map +0 -1
  118. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +0 -1
  119. package/dist/validations/access-checker/items/third-party-asset.js.map +0 -1
  120. package/dist/validations/access-checker/profiles.d.ts +0 -7
  121. package/dist/validations/access-checker/profiles.d.ts.map +0 -1
  122. package/dist/validations/access-checker/profiles.js +0 -114
  123. package/dist/validations/access-checker/profiles.js.map +0 -1
  124. package/dist/validations/access-checker/scenes.d.ts +0 -7
  125. package/dist/validations/access-checker/scenes.d.ts.map +0 -1
  126. package/dist/validations/access-checker/scenes.js +0 -261
  127. package/dist/validations/access-checker/scenes.js.map +0 -1
  128. package/dist/validations/access-checker/stores.d.ts +0 -7
  129. package/dist/validations/access-checker/stores.d.ts.map +0 -1
  130. package/dist/validations/access-checker/stores.js +0 -33
  131. package/dist/validations/access-checker/stores.js.map +0 -1
  132. package/dist/validations/access-checker/wearables.d.ts +0 -3
  133. package/dist/validations/access-checker/wearables.d.ts.map +0 -1
  134. package/dist/validations/access-checker/wearables.js.map +0 -1
  135. /package/dist/validations/{access-checker → subgraph-access-checker}/items/collection-asset.d.ts +0 -0
  136. /package/dist/validations/{access-checker → subgraph-access-checker}/items/collection-asset.js +0 -0
  137. /package/dist/validations/{access-checker → subgraph-access-checker}/items/off-chain-asset.d.ts +0 -0
  138. /package/dist/validations/{access-checker → subgraph-access-checker}/items/off-chain-asset.js +0 -0
  139. /package/dist/validations/{access-checker → subgraph-access-checker}/items/third-party-asset.d.ts +0 -0
  140. /package/dist/validations/{access-checker → subgraph-access-checker}/items/third-party-asset.js +0 -0
  141. /package/dist/{the-graph-client → validations/subgraph-access-checker}/the-graph-client.js +0 -0
@@ -1,8 +1,8 @@
1
- import { ContentValidatorComponents, DeploymentToValidate } from '../types';
1
+ import { ContentValidatorComponents, ValidateFn } from '../types';
2
2
  /** Validate that the full request size is within limits
3
3
  *
4
4
  * ADR 45: After given TIMESTAMP will also include previous deployments in the validation
5
5
  * @public
6
6
  */
7
- export declare function size(components: ContentValidatorComponents, deployment: DeploymentToValidate): Promise<import("../types").ValidationResponse>;
7
+ export declare function createSizeValidateFn(components: ContentValidatorComponents): ValidateFn;
8
8
  //# sourceMappingURL=size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAwB,MAAM,UAAU,CAAA;AAIjG;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,oBAAoB,kDA2BlG"}
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,UAAU,CAAA;AAIjB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CA6BvF"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.size = void 0;
3
+ exports.createSizeValidateFn = void 0;
4
4
  const _1 = require(".");
5
5
  const types_1 = require("../types");
6
6
  const ADR51_1 = require("./ADR51");
@@ -10,33 +10,35 @@ const timestamps_1 = require("./timestamps");
10
10
  * ADR 45: After given TIMESTAMP will also include previous deployments in the validation
11
11
  * @public
12
12
  */
13
- async function size(components, deployment) {
14
- const { entity } = deployment;
15
- if (entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
16
- return types_1.OK;
17
- const maxSizeInMB = ADR51_1.entityParameters[entity.type].maxSizeInMB;
18
- let errors = [];
19
- if (!maxSizeInMB) {
20
- return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
21
- }
22
- const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
23
- let totalSize = 0;
24
- if (entity.timestamp > timestamps_1.ADR_45_TIMESTAMP) {
25
- const result = await (0, _1.calculateDeploymentSize)(deployment, components.externalCalls);
26
- if (typeof result === 'string')
27
- return (0, types_1.validationFailed)(result);
28
- totalSize = result;
29
- }
30
- else {
31
- totalSize = Array.from(deployment.files.values()).reduce((acc, file) => acc + file.byteLength, 0);
32
- }
33
- const sizePerPointer = totalSize / entity.pointers.length;
34
- if (sizePerPointer > maxSizeInBytes) {
35
- errors = [
36
- `The deployment is too big. The maximum allowed size per pointer is ${maxSizeInMB} MB for ${entity.type}. You can upload up to ${entity.pointers.length * maxSizeInBytes} bytes but you tried to upload ${totalSize}.`
37
- ];
38
- }
39
- return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
13
+ function createSizeValidateFn(components) {
14
+ return async function validateFn(deployment) {
15
+ const { entity } = deployment;
16
+ if (entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
17
+ return types_1.OK;
18
+ const maxSizeInMB = ADR51_1.entityParameters[entity.type].maxSizeInMB;
19
+ let errors = [];
20
+ if (!maxSizeInMB) {
21
+ return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
22
+ }
23
+ const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
24
+ let totalSize = 0;
25
+ if (entity.timestamp > timestamps_1.ADR_45_TIMESTAMP) {
26
+ const result = await (0, _1.calculateDeploymentSize)(deployment, components.externalCalls);
27
+ if (typeof result === 'string')
28
+ return (0, types_1.validationFailed)(result);
29
+ totalSize = result;
30
+ }
31
+ else {
32
+ totalSize = Array.from(deployment.files.values()).reduce((acc, file) => acc + file.byteLength, 0);
33
+ }
34
+ const sizePerPointer = totalSize / entity.pointers.length;
35
+ if (sizePerPointer > maxSizeInBytes) {
36
+ errors = [
37
+ `The deployment is too big. The maximum allowed size per pointer is ${maxSizeInMB} MB for ${entity.type}. You can upload up to ${entity.pointers.length * maxSizeInBytes} bytes but you tried to upload ${totalSize}.`
38
+ ];
39
+ }
40
+ return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
41
+ };
40
42
  }
41
- exports.size = size;
43
+ exports.createSizeValidateFn = createSizeValidateFn;
42
44
  //# sourceMappingURL=size.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,wBAA2C;AAC3C,oCAAiG;AACjG,mCAA0C;AAC1C,6CAAmF;AAEnF;;;;GAIG;AACI,KAAK,UAAU,IAAI,CAAC,UAAsC,EAAE,UAAgC;IACjG,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,+CAAkC;QAAE,OAAO,UAAE,CAAA;IAErE,MAAM,WAAW,GAAG,wBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAA;IAC7D,IAAI,MAAM,GAAa,EAAE,CAAA;IACzB,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAA,wBAAgB,EAAC,QAAQ,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAA;KACpE;IACD,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;IAChD,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,MAAM,CAAC,SAAS,GAAG,6BAAgB,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;QAClF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAA;QAC/D,SAAS,GAAG,MAAM,CAAA;KACnB;SAAM;QACL,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;KAClG;IACD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;IACzD,IAAI,cAAc,GAAG,cAAc,EAAE;QACnC,MAAM,GAAG;YACP,sEAAsE,WAAW,WAC/E,MAAM,CAAC,IACT,0BAA0B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,kCAAkC,SAAS,GAAG;SAChH,CAAA;KACF;IACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;AAC7D,CAAC;AA3BD,oBA2BC"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,wBAA2C;AAC3C,oCAOiB;AACjB,mCAA0C;AAC1C,6CAAmF;AAEnF;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,UAAsC;IACzE,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,+CAAkC;YAAE,OAAO,UAAE,CAAA;QAErE,MAAM,WAAW,GAAG,wBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAA;QAC7D,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAA,wBAAgB,EAAC,QAAQ,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAA;SACpE;QACD,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;QAChD,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,MAAM,CAAC,SAAS,GAAG,6BAAgB,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;YAClF,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAA;YAC/D,SAAS,GAAG,MAAM,CAAA;SACnB;aAAM;YACL,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;SAClG;QACD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;QACzD,IAAI,cAAc,GAAG,cAAc,EAAE;YACnC,MAAM,GAAG;gBACP,sEAAsE,WAAW,WAC/E,MAAM,CAAC,IACT,0BAA0B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,kCAAkC,SAAS,GAAG;aAChH,CAAA;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AA7BD,oDA6BC"}
@@ -0,0 +1,7 @@
1
+ import { AccessCheckerComponent, SubgraphAccessCheckerComponents } from '../../types';
2
+ /**
3
+ * Validate that the pointers are valid, and that the Ethereum address has write access to them
4
+ * @public
5
+ */
6
+ export declare function createSubgraphAccessCheckerComponent(components: SubgraphAccessCheckerComponents): Promise<AccessCheckerComponent>;
7
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/access.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EAGtB,+BAA+B,EAIhC,MAAM,aAAa,CAAA;AAcpB;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,UAAU,EAAE,+BAA+B,GAC1C,OAAO,CAAC,sBAAsB,CAAC,CAwCjC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSubgraphAccessCheckerComponent = void 0;
4
+ const schemas_1 = require("@dcl/schemas");
5
+ const types_1 = require("../../types");
6
+ const timestamps_1 = require("../timestamps");
7
+ const emotes_1 = require("./emotes");
8
+ const profiles_1 = require("./profiles");
9
+ const scenes_1 = require("./scenes");
10
+ const stores_1 = require("./stores");
11
+ const wearables_1 = require("./wearables");
12
+ /**
13
+ * Validate that the pointers are valid, and that the Ethereum address has write access to them
14
+ * @public
15
+ */
16
+ async function createSubgraphAccessCheckerComponent(components) {
17
+ const { config, externalCalls } = components;
18
+ if ((await config.getString('IGNORE_BLOCKCHAIN_ACCESS_CHECKS')) === 'true') {
19
+ return { checkAccess: (_deployment) => Promise.resolve(types_1.OK) };
20
+ }
21
+ const accessCheckers = {
22
+ [schemas_1.EntityType.PROFILE]: (0, profiles_1.createProfileValidateFn)(components),
23
+ [schemas_1.EntityType.SCENE]: (0, scenes_1.createSceneValidateFn)(components),
24
+ [schemas_1.EntityType.WEARABLE]: (0, wearables_1.createWearableValidateFn)(components),
25
+ [schemas_1.EntityType.STORE]: (0, stores_1.createStoreValidateFn)(components),
26
+ [schemas_1.EntityType.EMOTE]: (0, emotes_1.createEmoteValidateFn)(components)
27
+ };
28
+ async function checkAccess(deployment) {
29
+ const deployedBeforeDCLLaunch = deployment.entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP;
30
+ const address = externalCalls.ownerAddress(deployment.auditInfo);
31
+ const isDefaultScene = deployment.entity.type === schemas_1.EntityType.SCENE &&
32
+ deployment.entity.pointers.some((p) => p.toLowerCase().startsWith('default'));
33
+ // Default scenes were removed from the Content Servers after https://github.com/decentraland/catalyst/issues/878
34
+ if (isDefaultScene) {
35
+ return (0, types_1.validationFailed)(`Scene pointers should only contain two integers separated by a comma, for example (10,10) or (120,-45).`);
36
+ }
37
+ // Legacy entities still need to be synchronized
38
+ if (deployedBeforeDCLLaunch && externalCalls.isAddressOwnedByDecentraland(address)) {
39
+ return types_1.OK;
40
+ }
41
+ return accessCheckers[deployment.entity.type](deployment);
42
+ }
43
+ return {
44
+ checkAccess
45
+ };
46
+ }
47
+ exports.createSubgraphAccessCheckerComponent = createSubgraphAccessCheckerComponent;
48
+ //# sourceMappingURL=access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/access.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,uCAQoB;AACpB,8CAAkE;AAElE,qCAAgD;AAChD,yCAKmB;AACnB,qCAAgD;AAChD,qCAAgD;AAChD,2CAAsD;AAEtD;;;GAGG;AACI,KAAK,UAAU,oCAAoC,CACxD,UAA2C;IAE3C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IAE5C,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,KAAK,MAAM,EAAE;QAC1E,OAAO,EAAE,WAAW,EAAE,CAAC,WAAiC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAE,CAAC,EAAE,CAAA;KACnF;IAED,MAAM,cAAc,GAAmC;QACrD,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,oCAAwB,EAAC,UAAU,CAAC;QAC3D,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;KACtD,CAAA;IAED,KAAK,UAAU,WAAW,CAAC,UAAgC;QACzD,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,+CAAkC,CAAA;QACjG,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEhE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,KAAK;YAC3C,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;QAE/E,iHAAiH;QACjH,IAAI,cAAc,EAAE;YAClB,OAAO,IAAA,wBAAgB,EACrB,yGAAyG,CAC1G,CAAA;SACF;QACD,gDAAgD;QAChD,IAAI,uBAAuB,IAAI,aAAa,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE;YAClF,OAAO,UAAE,CAAA;SACV;QAED,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AA1CD,oFA0CC"}
@@ -0,0 +1,3 @@
1
+ import { SubgraphAccessCheckerComponents, ValidateFn } from '../../types';
2
+ export declare function createEmoteValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'logs' | 'theGraphClient'>): ValidateFn;
3
+ //# sourceMappingURL=emotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.d.ts","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/emotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGzE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,gBAAgB,CAAC,GAC7F,UAAU,CAEZ"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEmoteValidateFn = void 0;
4
+ const items_1 = require("./items/items");
5
+ function createEmoteValidateFn(components) {
6
+ return (0, items_1.createItemValidateFn)(components, ['blockchain-collection-v2-asset', 'blockchain-collection-third-party']);
7
+ }
8
+ exports.createEmoteValidateFn = createEmoteValidateFn;
9
+ //# sourceMappingURL=emotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.js","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/emotes.ts"],"names":[],"mappings":";;;AACA,yCAAoD;AAEpD,SAAgB,qBAAqB,CACnC,UAA8F;IAE9F,OAAO,IAAA,4BAAoB,EAAC,UAAU,EAAE,CAAC,gCAAgC,EAAE,mCAAmC,CAAC,CAAC,CAAA;AAClH,CAAC;AAJD,sDAIC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/collection-asset.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAoBzC,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,eAqD9C,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-asset.js","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/collection-asset.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { BlockchainCollectionThirdParty, BlockchainCollectionV1Asset, BlockchainCollectionV2Asset, OffChainAsset } from '@dcl/urn-resolver';
2
2
  import { DeploymentToValidate } from '../../..';
3
- import { ContentValidatorComponents, ValidationResponse } from '../../../types';
3
+ import { ContentValidatorComponents, SubgraphAccessCheckerComponents, ValidateFn, ValidationResponse } from '../../../types';
4
4
  export declare type UrnType = 'off-chain' | 'blockchain-collection-v1-asset' | 'blockchain-collection-v2-asset' | 'blockchain-collection-third-party';
5
5
  export declare type SupportedAsset = BlockchainCollectionV1Asset | BlockchainCollectionV2Asset | OffChainAsset | BlockchainCollectionThirdParty;
6
6
  export declare type AssetValidation = {
7
7
  validateAsset(components: Pick<ContentValidatorComponents, 'externalCalls'>, asset: SupportedAsset, deployment: DeploymentToValidate): ValidationResponse | Promise<ValidationResponse>;
8
8
  canValidate(asset: SupportedAsset): boolean;
9
9
  };
10
- export declare function itemsValidation(components: Pick<ContentValidatorComponents, 'externalCalls' | 'logs' | 'theGraphClient'>, deployment: DeploymentToValidate, validUrnTypesForItem: UrnType[]): Promise<ValidationResponse>;
10
+ export declare function createItemValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'logs' | 'theGraphClient'>, validUrnTypesForItem: UrnType[]): ValidateFn;
11
11
  //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,UAAU,EAEV,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AAKvB,oBAAY,OAAO,GACf,WAAW,GACX,gCAAgC,GAChC,gCAAgC,GAChC,mCAAmC,CAAA;AAEvC,oBAAY,cAAc,GACtB,2BAA2B,GAC3B,2BAA2B,GAC3B,aAAa,GACb,8BAA8B,CAAA;AAElC,oBAAY,eAAe,GAAG;IAC5B,aAAa,CACX,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EAC7D,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,oBAAoB,GAC/B,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACnD,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAA;CAC5C,CAAA;AAsCD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,gBAAgB,CAAC,EAC9F,oBAAoB,EAAE,OAAO,EAAE,GAC9B,UAAU,CAkCZ"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.itemsValidation = void 0;
3
+ exports.createItemValidateFn = void 0;
4
4
  const urn_resolver_1 = require("@dcl/urn-resolver");
5
5
  const types_1 = require("../../../types");
6
6
  const collection_asset_1 = require("./collection-asset");
@@ -39,29 +39,31 @@ async function parseUrnNoFail(urn) {
39
39
  catch { }
40
40
  return null;
41
41
  }
42
- async function itemsValidation(components, deployment, validUrnTypesForItem) {
43
- const { pointers } = deployment.entity;
44
- const resolvedPointers = [];
45
- // deduplicate pointer resolution
46
- for (const pointer of pointers) {
47
- const parsed = await parseUrnNoFail(pointer);
48
- if (!parsed)
49
- return (0, types_1.validationFailed)(`Item pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{id}). Invalid pointer: (${pointer})`);
50
- if (!alreadySeen(resolvedPointers, parsed))
51
- resolvedPointers.push(parsed);
52
- }
53
- if (resolvedPointers.length > 1)
54
- return (0, types_1.validationFailed)(`Only one pointer is allowed when you create an item. Received: ${pointers}`);
55
- const parsedAsset = resolvedPointers[0];
56
- if (!validUrnTypesForItem.includes(parsedAsset.type)) {
57
- return (0, types_1.validationFailed)(`For the entity type: ${deployment.entity.type}, the asset with urn type: ${parsedAsset.type} is invalid. Valid urn types for this entity: ${validUrnTypesForItem}`);
58
- }
59
- for (const validation of assetValidations) {
60
- if (validation.canValidate(parsedAsset)) {
61
- return validation.validateAsset(components, parsedAsset, deployment);
42
+ function createItemValidateFn(components, validUrnTypesForItem) {
43
+ return async function validateFn(deployment) {
44
+ const { pointers } = deployment.entity;
45
+ const resolvedPointers = [];
46
+ // deduplicate pointer resolution
47
+ for (const pointer of pointers) {
48
+ const parsed = await parseUrnNoFail(pointer);
49
+ if (!parsed)
50
+ return (0, types_1.validationFailed)(`Item pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{id}). Invalid pointer: (${pointer})`);
51
+ if (!alreadySeen(resolvedPointers, parsed))
52
+ resolvedPointers.push(parsed);
62
53
  }
63
- }
64
- throw new Error('This should never happen. There is no validations for the asset.');
54
+ if (resolvedPointers.length > 1)
55
+ return (0, types_1.validationFailed)(`Only one pointer is allowed when you create an item. Received: ${pointers}`);
56
+ const parsedAsset = resolvedPointers[0];
57
+ if (!validUrnTypesForItem.includes(parsedAsset.type)) {
58
+ return (0, types_1.validationFailed)(`For the entity type: ${deployment.entity.type}, the asset with urn type: ${parsedAsset.type} is invalid. Valid urn types for this entity: ${validUrnTypesForItem}`);
59
+ }
60
+ for (const validation of assetValidations) {
61
+ if (validation.canValidate(parsedAsset)) {
62
+ return validation.validateAsset(components, parsedAsset, deployment);
63
+ }
64
+ }
65
+ throw new Error('This should never happen. There is no validations for the asset.');
66
+ };
65
67
  }
66
- exports.itemsValidation = itemsValidation;
68
+ exports.createItemValidateFn = createItemValidateFn;
67
69
  //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"off-chain-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/off-chain-asset.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,uBAAuB,EAAE,eAgBrC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"off-chain-asset.js","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/off-chain-asset.ts"],"names":[],"mappings":";;;AACA,gCAAmD;AACnD,0CAA6E;AAGhE,QAAA,uBAAuB,GAAoB;IACtD,aAAa,CACX,UAA6D,EAC7D,KAAoB,EACpB,UAAgC;QAEhC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAC9E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,4BAA4B,CAAC,UAAU,CAAC;YACpE,OAAO,IAAA,wBAAgB,EACrB,6BAA6B,UAAU,kDAAkD,KAAK,CAAC,GAAG,GAAG,CACtG,CAAA;QACH,OAAO,MAAE,CAAA;IACX,CAAC;IACD,WAAW,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAA;IACnC,CAAC;CACF,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/third-party-asset.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAiHzC,eAAO,MAAM,yBAAyB,EAAE,eAiBvC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-asset.js","sourceRoot":"","sources":["../../../../src/validations/subgraph-access-checker/items/third-party-asset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { SubgraphAccessCheckerComponents, ValidateFn } from '../../types';
2
+ export declare function createPointerValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'externalCalls'>): ValidateFn;
3
+ export declare function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
4
+ export declare function createItemOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
5
+ export declare function createProfileValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'theGraphClient' | 'externalCalls'>): ValidateFn;
6
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,+BAA+B,EAC/B,UAAU,EAGX,MAAM,aAAa,CAAA;AAKpB,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,CAAC,GACjE,UAAU,CAsBZ;AAED,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,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProfileValidateFn = exports.createItemOwnershipValidateFn = exports.createNamesOwnershipValidateFn = exports.createPointerValidateFn = void 0;
4
+ const schemas_1 = require("@dcl/schemas");
5
+ const urn_resolver_1 = require("@dcl/urn-resolver");
6
+ const types_1 = require("../../types");
7
+ const profile_1 = require("../profile");
8
+ const timestamps_1 = require("../timestamps");
9
+ const validations_1 = require("../validations");
10
+ function createPointerValidateFn(components) {
11
+ return async function validateFn(deployment) {
12
+ const pointers = deployment.entity.pointers;
13
+ const ethAddress = components.externalCalls.ownerAddress(deployment.auditInfo);
14
+ if (pointers.length !== 1)
15
+ return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Profile. Received: ${pointers}`);
16
+ const pointer = pointers[0].toLowerCase();
17
+ if (pointer.startsWith('default')) {
18
+ if (!components.externalCalls.isAddressOwnedByDecentraland(ethAddress))
19
+ return (0, types_1.validationFailed)(`Only Decentraland can add or modify default profiles`);
20
+ }
21
+ else if (!schemas_1.EthAddress.validate(pointer)) {
22
+ return (0, types_1.validationFailed)(`The given pointer is not a valid ethereum address.`);
23
+ }
24
+ else if (pointer !== ethAddress.toLowerCase()) {
25
+ return (0, types_1.validationFailed)(`You can only alter your own profile. The pointer address and the signer address are different (pointer:${pointer} signer: ${ethAddress.toLowerCase()}).`);
26
+ }
27
+ return types_1.OK;
28
+ };
29
+ }
30
+ exports.createPointerValidateFn = createPointerValidateFn;
31
+ function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }) {
32
+ async function validateFn(deployment) {
33
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
34
+ const names = deployment.entity.metadata.avatars
35
+ .filter((avatar) => avatar.hasClaimedName)
36
+ .map((avatar) => avatar.name)
37
+ .filter((name) => name && name.trim().length > 0);
38
+ const namesCheckResult = await theGraphClient.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
39
+ if (!namesCheckResult.result)
40
+ return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
41
+ return types_1.OK;
42
+ }
43
+ return (0, validations_1.validateAfterADR75)(validateFn);
44
+ }
45
+ exports.createNamesOwnershipValidateFn = createNamesOwnershipValidateFn;
46
+ function createItemOwnershipValidateFn({ externalCalls, theGraphClient }) {
47
+ async function sanitizeUrn(urn) {
48
+ if (!urn.startsWith('dcl://')) {
49
+ return urn;
50
+ }
51
+ const parsed = await (0, urn_resolver_1.parseUrn)(urn);
52
+ return parsed?.uri?.toString();
53
+ }
54
+ async function allOnChainWearableUrns(entity) {
55
+ const allWearablesInProfilePromises = [];
56
+ for (const avatar of entity.metadata.avatars) {
57
+ for (const wearableId of avatar.avatar.wearables) {
58
+ const isBaseAvatar = wearableId.includes('base-avatars');
59
+ if (!isBaseAvatar && !(0, profile_1.isOldEmote)(wearableId)) {
60
+ allWearablesInProfilePromises.push(sanitizeUrn(wearableId));
61
+ }
62
+ }
63
+ }
64
+ return (await Promise.all(allWearablesInProfilePromises)).filter((wearableId) => !!wearableId);
65
+ }
66
+ async function allEmoteUrns(entity) {
67
+ const allEmotesInProfilePromises = [];
68
+ const allAvatars = entity.metadata?.avatars ?? [];
69
+ for (const avatar of allAvatars) {
70
+ const allEmotes = avatar.avatar.emotes ?? [];
71
+ for (const { urn } of allEmotes) {
72
+ if (!(0, profile_1.isOldEmote)(urn)) {
73
+ allEmotesInProfilePromises.push(sanitizeUrn(urn));
74
+ }
75
+ }
76
+ }
77
+ return (await Promise.all(allEmotesInProfilePromises)).filter((wearableId) => !!wearableId);
78
+ }
79
+ return async function validateFn(deployment) {
80
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
81
+ const depoymentTimestamp = deployment.entity.timestamp;
82
+ const itemUrns = [];
83
+ if (depoymentTimestamp >= timestamps_1.ADR_75_TIMESTAMP) {
84
+ for (const urn of await allOnChainWearableUrns(deployment.entity)) {
85
+ itemUrns.push(urn);
86
+ }
87
+ }
88
+ if (depoymentTimestamp >= timestamps_1.ADR_74_TIMESTAMP) {
89
+ for (const urn of await allEmoteUrns(deployment.entity)) {
90
+ itemUrns.push(urn);
91
+ }
92
+ }
93
+ const itemsOwnershipResult = await theGraphClient.ownsItemsAtTimestamp(ethAddress, itemUrns, deployment.entity.timestamp);
94
+ if (!itemsOwnershipResult.result) {
95
+ return (0, types_1.validationFailed)(`The following items (${itemsOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
96
+ }
97
+ return types_1.OK;
98
+ };
99
+ }
100
+ exports.createItemOwnershipValidateFn = createItemOwnershipValidateFn;
101
+ function createProfileValidateFn(components) {
102
+ return (0, validations_1.validateAll)(createPointerValidateFn(components), createNamesOwnershipValidateFn(components), createItemOwnershipValidateFn(components));
103
+ }
104
+ exports.createProfileValidateFn = createProfileValidateFn;
105
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/validations/subgraph-access-checker/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/subgraph-access-checker/scenes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAGpB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAgCpB;;;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"}